您好, 歡迎來到化工儀器網(wǎng),! 登錄| 免費(fèi)注冊| 產(chǎn)品展廳| 收藏商鋪|
關(guān)于電子吊秤Modbus 通信在modbus poll上調(diào)試收不到數(shù)據(jù)的問題
問:程序編號了,,編譯也沒問題,實(shí)現(xiàn)了03功能碼,,串口波特率等設(shè)置也都沒問題,,可在modbus poll上調(diào)試時(shí)一直通訊超時(shí),Timeout err,到底哪里出問題了 急急急,!程序在下面,,還有調(diào)試問題的截圖!求解決,!
答:請仔細(xì)查看一下modbus協(xié)議,,上位機(jī)會隔一定時(shí)間向下位機(jī)發(fā)送查詢碼,下位機(jī)要及時(shí)回答,,通知上位機(jī)通信正常,。如果你的單片機(jī)程序中沒有寫應(yīng)答上位查詢碼的程序,上位機(jī)就會中斷通信的,,就提示通信超時(shí)的,。看你的通信數(shù)據(jù),,只有上位機(jī)發(fā)送數(shù)據(jù),,卻沒有下位返回的數(shù)據(jù)。所以,,一是查下位機(jī)有無應(yīng)答查詢碼,,二是查詢下位機(jī)接收到控制命令后,解析命令是否正確,,是否有返回碼,。上位機(jī)發(fā)正常命回令,下位都應(yīng)該有返回碼的,??梢韵扔么谡{(diào)試助手測試下位機(jī)的收/發(fā)代碼過答程。
單片機(jī)做為從站或主站,,其功能的實(shí)現(xiàn)程序是有區(qū)別的,。做主站時(shí),,由單片機(jī)發(fā)起通信請求,ModBus Slave根據(jù)請求做出應(yīng)答(事務(wù)處理并返回幀),。所以,,單片機(jī)要按照ModBus 協(xié)議組織數(shù)據(jù)幀,然后“發(fā)送---等待,、接收返回幀---錯(cuò)誤處理或新的請求”,。若只是簡單的試驗(yàn),其后2字節(jié)CRC校驗(yàn)碼可用其他CRC程序內(nèi)計(jì)算出再添加到幀后,;若是作為正常主機(jī),,則須由單片機(jī)計(jì)算CRC碼并組織數(shù)據(jù)幀(通俗容說法:數(shù)據(jù)打包)。
**************************************************************************************************
問2:
剛接觸485,,我做的設(shè)備用modscan32調(diào)試連接不上
因?yàn)椴捎玫氖?/span>ttl串口,,所以不考慮硬件連接問題,是可靠的
通信協(xié)議這樣定制的
按道理來說,,就這幾個(gè)字節(jié),,而且順序已經(jīng)按照Modbus rtu格式排列好了,為甚么調(diào)試軟件認(rèn)為沒數(shù)據(jù)收到呢,?
解決不了了,,感覺就剩一窗戶紙了,求大神指條明路
答2:
設(shè)備地址是否正確(決定是否能被設(shè)備識別)
起始地址是否正確(設(shè)備地址其實(shí)是設(shè)備內(nèi)部的存儲單元,,這個(gè)存儲單元必須存在)
CRC是否正確
modbus保持寄存器每個(gè)寄存器都是雙字節(jié)的,,你返回的是單字節(jié)的,所以校驗(yàn)就通不過了
發(fā)送:
[10] 從站地址
[03] 03功能碼
[00][00] 起始地址
[00][02] 寄存器數(shù)量
[c7][4a] CRC校驗(yàn)
接收
[10] 從站地址
[03] 03功能碼
[04] 返回的寄存器字節(jié)數(shù),,每個(gè)寄存器2字節(jié),,讀兩個(gè)寄存器,所以四個(gè)字節(jié)
[00][00] 寄存器1
[00][00] 寄存器2
[fb][32] CRC校驗(yàn)碼
請輸入賬號
請輸入密碼
請輸驗(yàn)證碼
以上信息由企業(yè)自行提供,,信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性由相關(guān)企業(yè)負(fù)責(zé),,化工儀器網(wǎng)對此不承擔(dān)任何保證責(zé)任,。
溫馨提示:為規(guī)避購買風(fēng)險(xiǎn),,建議您在購買產(chǎn)品前務(wù)必確認(rèn)供應(yīng)商資質(zhì)及產(chǎn)品質(zhì)量,。