上海本熙測控設(shè)備科技有限公司
中級會員 | 第9年

13601825240

關(guān)于電子吊秤Modbus 通信調(diào)試收不到數(shù)據(jù)的問題

時間:2020/6/3閱讀:2390
分享:

關(guān)于電子吊秤Modbus 通信在modbus poll上調(diào)試收不到數(shù)據(jù)的問題

問:程序編號了,編譯也沒問題,實現(xiàn)了03功能碼,串口波特率等設(shè)置也都沒問題,可在modbus poll上調(diào)試時一直通訊超時,Timeout err,到底哪里出問題了 急急急!程序在下面,還有調(diào)試問題的截圖!求解決!

 

 

 

 

 

 

答:請仔細(xì)查看一下modbus協(xié)議,上位機(jī)會隔一定時間向下位機(jī)發(fā)送查詢碼,下位機(jī)要及時回答,通知上位機(jī)通信正常。如果你的單片機(jī)程序中沒有寫應(yīng)答上位查詢碼的程序,上位機(jī)就會中斷通信的,就提示通信超時的??茨愕耐ㄐ艛?shù)據(jù),只有上位機(jī)發(fā)送數(shù)據(jù),卻沒有下位返回的數(shù)據(jù)。所以,一是查下位機(jī)有無應(yīng)答查詢碼,二是查詢下位機(jī)接收到控制命令后,解析命令是否正確,是否有返回碼。上位機(jī)發(fā)正常命回令,下位都應(yīng)該有返回碼的??梢韵扔么谡{(diào)試助手測試下位機(jī)的收/發(fā)代碼過答程。

 

單片機(jī)做為從站或主站,其功能的實現(xiàn)程序是有區(qū)別的。做主站時,由單片機(jī)發(fā)起通信請求,ModBus Slave根據(jù)請求做出應(yīng)答(事務(wù)處理并返回幀)。所以,單片機(jī)要按照ModBus 協(xié)議組織數(shù)據(jù)幀,然后“發(fā)送---等待、接收返回幀---錯誤處理或新的請求”。若只是簡單的試驗,其后2字節(jié)CRC校驗碼可用其他CRC程序內(nèi)計算出再添加到幀后;若是作為正常主機(jī),則須由單片機(jī)計算CRC碼并組織數(shù)據(jù)幀(通俗容說法:數(shù)據(jù)打包)。

 

**************************************************************************************************

2

剛接觸485,我做的設(shè)備用modscan32調(diào)試連接不上
因為采用的是ttl串口,所以不考慮硬件連接問題,是可靠的

MODBUS RTU電子吊秤

 

MODBUS RTU電子吊秤

通信協(xié)議這樣定制的
MODBUS RTU電子吊秤


按道理來說,就這幾個字節(jié),而且順序已經(jīng)按照Modbus rtu格式排列好了,為甚么調(diào)試軟件認(rèn)為沒數(shù)據(jù)收到呢?
MODBUS RTU電子吊秤
解決不了了,感覺就剩一窗戶紙了,求大神指條明路

 

2

設(shè)備地址是否正確(決定是否能被設(shè)備識別)

起始地址是否正確(設(shè)備地址其實是設(shè)備內(nèi)部的存儲單元,這個存儲單元必須存在)

CRC是否正確

modbus保持寄存器每個寄存器都是雙字節(jié)的,你返回的是單字節(jié)的,所以校驗就通不過了
發(fā)送:
[10]   從站地址
[03]  03功能碼
[00][00] 起始地址
[00][02] 寄存器數(shù)量
[c7][4a] CRC校驗

接收
[10]   從站地址
[03]  03功能碼
[04]  返回的寄存器字節(jié)數(shù),每個寄存器2字節(jié),讀兩個寄存器,所以四個字節(jié)
[00][00] 寄存器1
[00][00] 寄存器2
[fb][32] CRC校驗碼

會員登錄

×

請輸入賬號

請輸入密碼

=

請輸驗證碼

收藏該商鋪

X
該信息已收藏!
標(biāo)簽:
保存成功

(空格分隔,最多3個,單個標(biāo)簽最多10個字符)

常用:

提示

X
您的留言已提交成功!我們將在第一時間回復(fù)您~
撥打電話
在線留言