zhengf1989
級別: 略有小成
![]() |
最近一直在研究通訊,突然感覺(jué)懂了一點(diǎn),寫(xiě)寫(xiě)自己對于modbus 通訊的體會(huì ): 1. 經(jīng)常聽(tīng)說(shuō)的485,232,422,是指的是物理端口,modbus是通訊協(xié)議,也就是通訊的規則,就好象社會(huì )上有很多潛規則,服從這些規則才能混下去。 2. modbus通訊分為主站和很多編了號的從站,例如主站對從站說(shuō),3號從站你家的第三個(gè)房間里住著(zhù)誰(shuí)?話(huà)音剛落,1號,2號,4號從站心里想:反正沒(méi)有喊我,不關(guān)我的事,就通通裝 死,3號從站聽(tīng)到后,回答說(shuō),我家的第三個(gè)房間里住著(zhù)一條狗,這樣一個(gè)通訊過(guò)程就完成了,跟主站讀取從站某個(gè)寄存器的內容很類(lèi)似。如果是廣播命令,就是每個(gè)從站都要聽(tīng)著(zhù),不需要作出回答。 3. 通訊主要是通過(guò) 報文發(fā)送出去執行的。 地址+功能碼。。。。。。西門(mén)子plc中有通訊庫,三菱臺達plc有通訊的方便指令,我通過(guò)串口調試工具測試,最終還是發(fā)出來(lái)標準的 報文,只是方便大家使用的。通訊的具體地址要看每種設備原件的廠(chǎng)家是怎樣定義的,會(huì )應用就可以了。 4. crc校驗就是為了防止在通訊過(guò)程中會(huì )出現數據的丟失或者出錯。就好象在生活中,甲對乙說(shuō):我還你5個(gè)硬幣你數一數,乙收到錢(qián)后數了一下硬幣,只有四個(gè),乙就說(shuō)你給的不對。 如果有能力用plc自己寫(xiě)個(gè)自由口通訊的塊,或者單片機開(kāi)發(fā)個(gè)通訊那就是大神了。 |
---|---|
|
zhangqi_1234
級別: 略有小成
![]() |
你的理解正確、形象。MODBUS通信程序不是你想像得那樣復雜。PLC的梯形圖程序,單片機的C語(yǔ)言程序、上位機的C#或VB程序等等都能實(shí)現。我個(gè)人認為,最簡(jiǎn)單的MODUBS程序是使用西門(mén)子的庫,根本不用考慮CRC校驗碼,以及報文的排列順序。最復雜的MODBUS程序是用C#或VB編寫(xiě)的程序(不考慮別人編寫(xiě)好的現成的方法)。另外,MODBUS-TCP的通信速率優(yōu)于MODBUS-RTU。MODBUS-ASCII通信用得很少,可以不考慮。 |
---|---|
|
zhengf1989
級別: 略有小成
![]() |
現在網(wǎng)上有很多的串口調試工具,CRC計算器,調試起來(lái)方便多了?丛骷氖褂檬謨,找modbus通訊地址很關(guān)鍵。 |
---|---|
|
tingfenghu
級別: 工控俠客
![]() ![]() |
單片機采用查詢(xún)或者中斷方式, PLC就更加簡(jiǎn)單, ASCII轉換成ASCII再發(fā)送,校驗加起來(lái)丟棄高位就可以。 CRC也沒(méi)有多復雜,無(wú)非就邏輯運算加移位。 單片機資源比較緊張時(shí), 有人用普通端口模擬串口使用。 |
|
---|---|---|
|
受不了了
級別: 家園?
![]() |
單片機寫(xiě)MODBUS-RTU其實(shí)很簡(jiǎn)單的,現在的工具這么多,隨便找個(gè)觸摸屏,設置到MODBUS-RTU模式,用電腦去抓通訊數據,看別人怎么寫(xiě)的,依葫蘆畫(huà)瓢照著(zhù)標準協(xié)議很容易寫(xiě)出來(lái),不說(shuō)半天,兩三天應該很容易搞定的。我七八年前寫(xiě)的通訊部分,一直就沒(méi)修改過(guò),常見(jiàn)品牌的觸摸屏連上去,比絕大部分PLC反應快太多了 |
---|---|
|