關(guān)于電子吊秤Modbus 通信在modbus poll上調試收不到數據的問(wèn)題
問(wèn):程序編號了,編譯也沒(méi)問(wèn)題,實(shí)現了03功能碼,串口波特率等設置也都沒(méi)問(wèn)題,可在modbus poll上調試時(shí)一直通訊超時(shí),Timeout err,到底哪里出問(wèn)題了 急急急!程序在下面,還有調試問(wèn)題的截圖!求解決!
答:請仔細查看一下modbus協(xié)議,上位機會(huì )隔一定時(shí)間向下位機發(fā)送查詢(xún)碼,下位機要及時(shí)回答,通知上位機通信正常。如果你的單片機程序中沒(méi)有寫(xiě)應答上位查詢(xún)碼的程序,上位機就會(huì )中斷通信的,就提示通信超時(shí)的??茨愕耐ㄐ艛祿?,只有上位機發(fā)送數據,卻沒(méi)有下位返回的數據。所以,一是查下位機有無(wú)應答查詢(xún)碼,二是查詢(xún)下位機接收到控制命令后,解析命令是否正確,是否有返回碼。上位機發(fā)正常命回令,下位都應該有返回碼的??梢韵扔么谡{試助手測試下位機的收/發(fā)代碼過(guò)答程。
單片機做為從站或主站,其功能的實(shí)現程序是有區別的。做主站時(shí),由單片機發(fā)起通信請求,ModBus Slave根據請求做出應答(事務(wù)處理并返回幀)。所以,單片機要按照ModBus 協(xié)議組織數據幀,然后“發(fā)送---等待、接收返回幀---錯誤處理或新的請求”。若只是簡(jiǎn)單的試驗,其后2字節CRC校驗碼可用其他CRC程序內計算出再添加到幀后;若是作為正常主機,則須由單片機計算CRC碼并組織數據幀(通俗容說(shuō)法:數據打包)。
**************************************************************************************************
問(wèn)2:
剛接觸485,我做的設備用modscan32調試連接不上
因為采用的是ttl串口,所以不考慮硬件連接問(wèn)題,是可靠的
通信協(xié)議這樣定制的
按道理來(lái)說(shuō),就這幾個(gè)字節,而且順序已經(jīng)按照Modbus rtu格式排列好了,為甚么調試軟件認為沒(méi)數據收到呢?
解決不了了,感覺(jué)就剩一窗戶(hù)紙了,求大神指條明路
答2:
設備地址是否正確(決定是否能被設備識別)
起始地址是否正確(設備地址其實(shí)是設備內部的存儲單元,這個(gè)存儲單元必須存在)
CRC是否正確
modbus保持寄存器每個(gè)寄存器都是雙字節的,你返回的是單字節的,所以校驗就通不過(guò)了
發(fā)送:
[10] 從站地址
[03] 03功能碼
[00][00] 起始地址
[00][02] 寄存器數量
[c7][4a] CRC校驗
接收
[10] 從站地址
[03] 03功能碼
[04] 返回的寄存器字節數,每個(gè)寄存器2字節,讀兩個(gè)寄存器,所以四個(gè)字節
[00][00] 寄存器1
[00][00] 寄存器2
[fb][32] CRC校驗碼
掃一掃 微信咨詢(xún)
©2024 上海本熙測控設備科技有限公司 版權所有 備案號:滬ICP備15023781號-3 技術(shù)支持:化工儀器網(wǎng) sitemap.xml 總訪(fǎng)問(wèn)量:260718 管理登陸
電話(huà)
微信掃一掃