wenliang
擡頭白雲悠悠,前竟一片黯愁……
級別: 家園常客
精華主題: 0
發(fā)帖數量: 716 個
工控威望: 910 點
下載積分: 43033 分
在線時間: 548(小時)
注冊時間: 2014-04-04
最后登錄: 2024-12-19
查看wenliang的 主題 / 回貼
樓主  發(fā)表于: 2021-12-01 08:49
請問各位大師三菱MODBUS通訊,現(xiàn)在問題是PC發(fā)送一條數據給PLC,當PLC收到數據時M8123動作、而且馬上回復PC已經收到指令,但是現(xiàn)連機訊運行時偶而會出現(xiàn)PC發(fā)送數據給PLC、而PLC收到后并沒有回復PC,現(xiàn)在用串口軟件來測試也是一樣的情況,PC輪詢指令間隔時間160MS,輪詢N多條指令后就會出現(xiàn)PLC少回復的情況,另外也問過三菱客戶了,說是把D8129超時改成1也沒有用,不知道各位大師有什么高見,煩請多多指點一下,在此謝過了。!


  
[ 此帖被wenliang在2021-12-01 09:32重新編輯 ]
wenliang
擡頭白雲悠悠,前竟一片黯愁……
級別: 家園?
精華主題: 0
發(fā)帖數量: 716 個
工控威望: 910 點
下載積分: 43033 分
在線時間: 548(小時)
注冊時間: 2014-04-04
最后登錄: 2024-12-19
查看wenliang的 主題 / 回貼
1樓  發(fā)表于: 2021-12-01 09:32
請問如圖所示,PLC發(fā)送14個字符時間為17.5MS,那么接收PC14個字符是不是按同理17.5MS計算,可是為什輪詢間隔都設成160MS了為什么PLC還是會偶而沒有回復呢?另外PC做了一個判斷、當收不到PLC的回復時PC就不在輪詢了停在當前狀態(tài)。   
zmrs163
級別: 家園常客
精華主題: 0
發(fā)帖數量: 375 個
工控威望: 523 點
下載積分: 1470 分
在線時間: 325(小時)
注冊時間: 2017-06-12
最后登錄: 2024-12-20
查看zmrs163的 主題 / 回貼
2樓  發(fā)表于: 2021-12-01 10:52
既然PLC收到了沒發(fā)送,那可能和你的程序有關
wenliang
擡頭白雲悠悠,前竟一片黯愁……
級別: 家園?
精華主題: 0
發(fā)帖數量: 716 個
工控威望: 910 點
下載積分: 43033 分
在線時間: 548(小時)
注冊時間: 2014-04-04
最后登錄: 2024-12-19
查看wenliang的 主題 / 回貼
3樓  發(fā)表于: 2021-12-01 12:02
程序上面看不出什么問題,當M8123接收到指令時,立馬就啟動M8122回復PC,上面圖片上有程序就是接收和發(fā)送的,然后就是一直往復接收發(fā)送,沒有理由程序還有什么其他延時不回復的情況。
wenliang
擡頭白雲悠悠,前竟一片黯愁……
級別: 家園?
精華主題: 0
發(fā)帖數量: 716 個
工控威望: 910 點
下載積分: 43033 分
在線時間: 548(小時)
注冊時間: 2014-04-04
最后登錄: 2024-12-19
查看wenliang的 主題 / 回貼
4樓  發(fā)表于: 2021-12-01 15:01
早上又問了三菱客服,說讓降低頻率發(fā)送報文,還是沒有找到問題所在     
zmrs163
級別: 家園?
精華主題: 0
發(fā)帖數量: 375 個
工控威望: 523 點
下載積分: 1470 分
在線時間: 325(小時)
注冊時間: 2017-06-12
最后登錄: 2024-12-20
查看zmrs163的 主題 / 回貼
5樓  發(fā)表于: 2021-12-01 17:06
圖片:
兩線制還是四線制,我寫了個腳本沒設置延時,PLC和PC都是收到就發(fā)。300多秒收發(fā)了10000多次沒出現(xiàn)你的情況
wenliang
擡頭白雲悠悠,前竟一片黯愁……
級別: 家園?
精華主題: 0
發(fā)帖數量: 716 個
工控威望: 910 點
下載積分: 43033 分
在線時間: 548(小時)
注冊時間: 2014-04-04
最后登錄: 2024-12-19
查看wenliang的 主題 / 回貼
6樓  發(fā)表于: 2021-12-01 19:20
引用
引用第5樓zmrs163于2021-12-01 17:06發(fā)表的  :
兩線制還是四線制,我寫了個腳本沒設置延時,PLC和PC都是收到就發(fā)。300多秒收發(fā)了10000多次沒出現(xiàn)你的情況

是二線制通訊的,我就是用串口調試助手160MS循環(huán)測試都會偶爾會少發(fā)幾條指令,PLC也是沒有設置任何延時,收到數據就會馬上回復,所以沒有找到問題所在,不知道大師你們的程序是如何收發(fā)數據的呢,另外我現(xiàn)在收發(fā)都是14個字符沒有關系吧?下圖是通訊設置和數據收發(fā)程式,還大師請多多指點,在此謝過了!


  
[ 此帖被wenliang在2021-12-01 19:27重新編輯 ]
jacking
級別: 正式會員
精華主題: 0
發(fā)帖數量: 10 個
工控威望: 75 點
下載積分: 711 分
在線時間: 19(小時)
注冊時間: 2021-11-25
最后登錄: 2024-11-26
查看jacking的 主題 / 回貼
7樓  發(fā)表于: 2021-12-02 11:24
你有沒有觀察你在收時會不會發(fā),兩線半雙工不能同時收發(fā),觀察下M7會不會偶然間誤觸發(fā)導致的沒有收到。
wenliang
擡頭白雲悠悠,前竟一片黯愁……
級別: 家園?
精華主題: 0
發(fā)帖數量: 716 個
工控威望: 910 點
下載積分: 43033 分
在線時間: 548(小時)
注冊時間: 2014-04-04
最后登錄: 2024-12-19
查看wenliang的 主題 / 回貼
8樓  發(fā)表于: 2021-12-02 11:56
引用
引用第7樓jacking于2021-12-02 11:24發(fā)表的  :
你有沒有觀察你在收時會不會發(fā),兩線半雙工不能同時收發(fā),觀察下M7會不會偶然間誤觸發(fā)導致的沒有收到。

數據收發(fā)速度太快不太容易觀察,現(xiàn)在用串口助手測試監(jiān)控收發(fā)能看到有發(fā)送給PLC、而PLC沒有回復(見下圖),我明白半雙工不能同時收發(fā)的,另外M7我在使用列表里面查過了沒有在其他地方使用,現(xiàn)在情況是上位機發(fā)送的比回復的多,也就是說PLC少回復了,正常接收要和發(fā)送的一樣多才對
[ 此帖被wenliang在2021-12-02 12:05重新編輯 ]
zmrs163
級別: 家園?
精華主題: 0
發(fā)帖數量: 375 個
工控威望: 523 點
下載積分: 1470 分
在線時間: 325(小時)
注冊時間: 2017-06-12
最后登錄: 2024-12-20
查看zmrs163的 主題 / 回貼
9樓  發(fā)表于: 2021-12-02 14:07
我用兩線制也嘗試收發(fā)了幾萬次也沒有出現(xiàn)你的現(xiàn)象,注意到你每次發(fā)送的報文都是一樣的,建議可以PC每次發(fā)送不同的報文,然后PLC接收后返回此報文,這樣可以判斷PLC是否有接收到此報文。
另外我做了測試,按照你程序的寫法,只要接收到數據就必然會發(fā)送,與掃描時間無關,那么就有可能是PLC沒收到或者是PC沒收到,可以按照上述方法排查一下。
gxtmdb82164
級別: 論壇先鋒
精華主題: 0
發(fā)帖數量: 770 個
工控威望: 1148 點
下載積分: 399 分
在線時間: 604(小時)
注冊時間: 2019-09-22
最后登錄: 2024-12-20
查看gxtmdb82164的 主題 / 回貼
10樓  發(fā)表于: 2021-12-02 16:46
本身modbus是應該有重試機制的,一問一答保證每次都會有回應,如果沒收到就重來一次.

LZ可以試試看PC對PC發(fā)送和PLC對PLC發(fā)送,一端固定不變就是你現(xiàn)在的PC程序和PLC程序,另一端寫一個最簡單的收發(fā)程序,這樣跑一段時間來看一下結果如何.

最后提醒一個點是這樣的,兩線串口這種半雙工的通信程序,要給數據傳輸完成留時間,換言之并不是收到了馬上就發(fā)送硬件可能還還沒準備好,或者對方的buffer還沒清空,這個是底層硬件和底層系統(tǒng)軟件的機制決定的,在PLC這樣的環(huán)境中,至少延遲一個周期是非常有用的方法.

或者還有一個辦法,把波特率提高,我就喜歡用高波特率,信號傳輸的時間越短出幺蛾子的概率反而越低,反正有重試,錯了再發(fā)~
wenliang
擡頭白雲悠悠,前竟一片黯愁……
級別: 家園?
精華主題: 0
發(fā)帖數量: 716 個
工控威望: 910 點
下載積分: 43033 分
在線時間: 548(小時)
注冊時間: 2014-04-04
最后登錄: 2024-12-19
查看wenliang的 主題 / 回貼
11樓  發(fā)表于: 2021-12-02 20:04
引用
引用第10樓gxtmdb82164于2021-12-02 16:46發(fā)表的  :
本身modbus是應該有重試機制的,一問一答保證每次都會有回應,如果沒收到就重來一次.

LZ可以試試看PC對PC發(fā)送和PLC對PLC發(fā)送,一端固定不變就是你現(xiàn)在的PC程序和PLC程序,另一端寫一個最簡單的收發(fā)程序,這樣跑一段時間來看一下結果如何.

最后提醒一個點是這樣的,兩線串口這種半雙工的通信程序,要給數據傳輸完成留時間,換言之并不是收到了馬上就發(fā)送硬件可能還還沒準備好,或者對方的buffer還沒清空,這個是底層硬件和底層系統(tǒng)軟件的機制決定的,在PLC這樣的環(huán)境中,至少延遲一個周期是非常有用的方法.
.......

您好 大師!我現(xiàn)在遇到的問題是PC發(fā)送數據線PLC,當PLC收到上位機的數時會馬上回復PC說已經收到數據了,但現(xiàn)在會出現(xiàn)偶爾PLC沒有回復PC收到數據,這樣就導致PC上位機軟件無法繼續(xù)運行,我換了其他的電腦過來測試也是出現(xiàn)一樣的問題,我直接用串口助手來跟PLC對發(fā)指令也是會少收到PLC回復,另外上位機軟件工程師說他的軟件不能重發(fā)數據、因為正常程序都是他發(fā)送一條數據PLC就要回復一條數據,就類似心跳包一樣,現(xiàn)在都已經沒有心跳了,所以后面的程序不能執(zhí)行下去了,上位機軟件是每條指令都有間隔160MS延時的、他說這個時間也不能太長了,所以始終沒有找到問題所在?