lightroad
級別: 探索解密
|
使用RS指令與第三方支持MODBUS的數字量模塊通訊,讀取對方數字量輸入點。使用串口軟件監控收發數據正常,但監控FX2N和對方通訊,數據不堪入目,不但返回的輸入點跳動,命令的第一、二字(即從站地址和功能碼)也在不同的數據間跳動。 程序為不停地讀取從站,M8122或M8123復位后延時10MS~100MS來觸發M8122。從站通訊口為A,B兩個端子。想不明白,難道同一時刻,發送和接收均在執行,但是程序已作了 M8122和M8123的延時。 求大家指點! |
---|---|
|
夢雨天涯
微信hui530527 &
級別: 網絡英雄
|
先監控的發出去的內容是否正確,你對了,別人才能回你正確的 |
|
---|---|---|
|
夢雨天涯
微信hui530527 &
級別: 網絡英雄
|
那你就要確定你的M8122是不是一直發送,或者M8123是否接收到就立馬復位 |
|
---|---|---|
|
lightroad
級別: 探索解密
|
圖片:
圖片:
M8122不是一直為1。否則數據不會更新,我的是通訊正常,功能也能實現,數據可以更新,就是接收數據跳動。 |
---|---|
|
二手工控電器
且行且珍惜
級別: 工控俠客
|
看此程序的書寫方式就知道問題所在,一旦通訊出錯就找不到原因所在。建議樓主做個簡單的通訊測試程序,比如:用外部按鈕控制,每按一次按鈕讀取一次數據,看看是否也存在同樣的問題。 |
|
---|---|---|
|
lightroad
級別: 探索解密
|
圖片:
圖片:
圖片:
寫了一段簡短的程序,依舊如此,能夠返回實際的開關量,但是數據跳動。 發送指令:0B 02 00 10 00 08 78 A3。 0B地址,02讀開關量輸入,0010開關量輸入第一個地址,0008讀8個開關量。 正確的返回指令:0B 02 01 ** AA BB。**代表返回的實際輸入,AA,BB代表校驗碼。 還有一個問題,返回數據依次向高字節移動一個字。如圖三,返回數據地址理論應為D7060,實際返回在D7061中,其他依次。 |
---|---|
|
二手工控電器
且行且珍惜
級別: 工控俠客
|
無語! |
|
---|---|---|
|
anlyl2014
大吉大利
級別: 網絡英雄
|
這是舊話重提的了,RS指令的K8是發送8個數,后面K6是指接收個數6個,問題出在接收個數不足,FX2N前的所有型號都有返回碼,也就是說,發送K8,接收為K8+接收的個數;FX3U后的型號就沒有此問題,解決方法是:接收的K?要足夠大,例如RS D7000 K8 D7010 K30 可參考我發的例子 |
|
---|---|---|
|