
其實很早就想寫寫關于Modbus的開發歷程,但牽扯項目較多,不同語言版
本較多,頭緒繁雜,一時不知從何寫起。最近的醫療項目的通信部分,重新調整
為Modbus協議,并且內容幾乎涵蓋了Modbus的方方面面(Rtu/Tcp,Slave/Client
相關開發),所以更堅定了寫Modbus信心,今天忙里偷閑,以時間為序,以項
目為綱,把Modbus相關開發經歷一一道來。
一、焦爐四大車通信系統(2002~2005)
硬件平臺:西門子PLC200
操作系統:Win2000/XP
1、主PLC與PC機的通信
最早主PLC與PC機通信,采用自定義的協議,主PLC中做了一個類似木
馬的程序來響應PC機下發的讀寫V變量區的指令。這樣就完成了PLC的讀寫
操作。
后來西門子PLC的開發軟件進行了升級,提供了ModbusRtuSlave庫,這
樣只要上位機實現ModbusRtuClient就可以直接讀寫PLC變量區了,之后用VB
開發了Modbus相應的組件,這樣很長一段內,該系統PC與主PLC就采用了
Modbus的通信。
前兩年開發組態軟件,所以西門子PPI協議順禮成章也就知道了,當然PC
與西門子采用PPI協議是最棒的,因為PLC中不需要寫一行代碼,也無需占用
程序和變量空間。所以之后Modbus被放棄了,轉而采用了PPI通信協議。
2、主PLC與從PLC的通信(無線電臺通信)
剛開始主PLC與從PLC采用自定義協議,最早在首鋼做實驗的時候,只有
四個從站,并且個數是唯一確定的,所以自定義協議用的很好,效率也很高;但
是項目推廣后,在其它現場有7個從站的,也有8個,9個的,不確定,并且從
站要分組,此外通信傳遞內容也更多了,不光位置信息、推焦電流、推焦、平煤
信號、連鎖信號都要傳遞,最后選擇了Modbus協議。
但是使用Modbus有幾個問題,第一西門子提供的ModbusSlave不支持廣播
命令,第二只提供了ModbusSlave程序,從PLC沒有什么問題,但是主PLC卻
沒有ModbusClient程序。
對第一個問題,沒有辦法,不支持就算了,只要一個個來寫。(注:后來的
某一天,西門子MicroWIN開發環境突然出bug了,竟然川軍的功效與作用 看到了部分的西門子
ModbusSlave源碼,我在此基礎上實現了可支持廣播的ModbusSlave代碼)。
對第二個問題,只好老老實實的用西門子PLC語句表命令開發Modbus
Client,只要實現3號和16號命令就可以了,還好,ModbusClient本身協議不
難,難在PLC的運行機制和PC程序不同,PLC是大循環掃描的,等待數據返
回時,不能直接等待,否則運行看門狗會超時,總之克服重重困難,終于開發出
穩定可靠的ModbusClient程序,直到現在,現場的PLC通信仍采用該方式。
附記:有人會問,為什么沒有采用PPI協議,PLC本身就支持主和從協議啊?
但太讓人遺憾的是,PPI協議通信節奏太快,目前還沒有無線電臺(普通工業用)
可以正常實現PPI協議通信。
該焦爐四大機車相關介紹,可以參見我以前寫的文章:
/tech/example/detail_?id=4055
相關專利
/C10B/2003/
我開發的Modbus控件介紹
/yefanqiu/archive/2005中國夢是什么意思 /11/20/
我開發的PPI控件介紹
/yefanqiu/archive/2005/11/18/
二、ABPLC擴展模塊ProSoftMVI56通信模塊(2005年11月)
在做濟鋼四車項目的時候,由于PLC采用的是ABRsLogix5000系列的
PLC,上面的端口不支持自由口編程,無法讀取我們定位標尺的數據,所以購買
了與其合作的ProSoft公司專門生產第三方模塊。ProSoft生產的模塊有很多
種,由于沒有經驗,很不幸,我們選擇的是MVI56的模塊,而這個模塊卻是全
部自由編程,不含有任何默認協議。
該模塊典型的就是一個嵌入式系統,相當一個帶三個串口的386的電腦,
操作系統為小型的DOS系統(TINYDOS),用C++為其開發程序。
在開發完我們的紅外定位標尺的讀取程序后,順便也開發一個ModbusRtu
Client的程序,這樣AB的PLC可以直接和Modbus的設備進行通信了。
/yefanqiu/archive/2005/11/20/
三、隧道廣告影像系統(2004~2006)
隧道廣告影像系統的通信系統,采用12個通信子站(NetBoxII),剛開始
并沒有任何Modbus協議,直到有一天,客戶提出要控制節目播放的次序、次數
和播放時間,最后決定在地鐵隧道里,添加一個西門子PLC200系統,由于設備
早已安裝完成,不可能為PLC布一個五六百米的通信線路,只好利用原通信線
路,而最上層的通信為TCP,二年級好句摘抄 NetBoxII下一層才是485總線,所以NetBoxII當
仁不讓的成了通信橋的設備。
但是,問題來了,上位機PC如何通過TCP與基于485的PLC進行通信?
最后,決定西門子PLC中安裝ModbusRtuSlave程序,實現一個標準Modbus
設備,NetBoxII實現ModbusTcp到ModbusRtu的協議轉換。也就是說,在
NetBoxII中實現ModbusTcpSlave和ModbusRtuClient代碼。
這樣用BC3.0,DOS平臺下實現了ModbusTcp/Rtu協議轉換功能,實現了
上位機PC與PLC的通信的要求。
隧道廣告的相關介紹,可以參見我以前寫的文章:
/yefanqiu/archive/2006/08/16/
四、嵌入式組態系統(2006年1月~至今)
開發組態系統,自然而然的要實現各種通信協議的驅動,所以Modbus協議
的開發不在話下。
分別用EVC和VC實現了ModbusRtu/AscII/Tcp的Client通信協議驅動。
嵌入式組態系統的相關介紹,可以參見我以前寫的文章:
/yefanqiu/archive/2006/11/29/
/yefanqiu/archive/2006/11/19/
/yefanqiu/archive/2006/10/24/
五、LED影像系統(2006年12月~至今)
目前關于通信這塊代碼還沒有做,不過已決定用C#開發ModbusRtuClient
程序和單片機開發的硬件設備進行通信(單片機中實現ModbusRtuSlave,這部
分有專門的硬件工程師實現),通過Modbus的通信實現LED大屏各種參數的
配置。
LED系統相關介紹
/yefanqiu/archive/2007/05/28/
六、醫療系統(2007年6月~至今)
目前這部分正在做,除紅外通信板的ModbusRtuSlave用匯編實現外,其它
的都用C#語言實現。
七、ModbusRtu通信協議(3,16號命令)
1、讀取保持寄存器(單個和多個,以字為最小單位)
發送命令幀:
設備地址功能碼地址H地址L數據量H數據量LCRCHCRCL
Addr03HHoldStartDataNumCRC高位CRC低位
幀長度:8個字巴金的《家》 節
設備地址:1~247
功能碼:3H
數據地址:0~65535具體范圍與相關設備有關
數量:1~65535(2的16次)具體范圍與相關設備有關
校驗碼:CRC16校驗
返回命令幀:
設備地址功能碼數據量數據1數據NCRCHCRCL
Addr13H返回數據的字節數NData(1~N)CRC高位CRC低位
幀長度:5+N個字節
設備地址:1~24充實的近義詞 7
功能碼:3H
數據量:實際的讀取數據數量
數據:返回數據的意義
a=HoldStart
n=Data小米3路由器 Num-1
VWa(VB
a)
VWa(VB
a+1)
…VWa+n(VB
a+n)
VWa+n(VBa+n+1)
Data(1)Data(2)…Data(N-1)Data(N)
校驗碼:CRC16校驗
命令有誤:
1)沒有任何返回
2)返回異議幀
設備地址功能碼錯普法手抄報內容 誤信息CRCHCRCL
Addr183H一個字節的錯誤信息CRC高位CRC低位
2、設置保持寄存器(多個,以字為最小單位)
發送命令幀:
設備
地址
功能
碼
地址H地址L
數據量
H
數據量
L
數據字
節數
具體
數據
CRCHCRCL
Addr010HHoldStartDataNumbytN1~bytNCRC高位CRC低位
幀長度:9+bytN個字節
設備地址:1~247
功能碼:10H
數據地址:0~65535具體范圍與相關設備有關
數量:1~122具體范圍與相關設備有關
字節數:設置的字節個數bytN=DataNum2
數據:具體的字節數據
校驗碼:CRC16校驗
返回命令幀:
設備地址功能碼地址H地址L數據量H數據量LCRCHCRCL
Addr110HHoldStartDataNumCRC高位CRC低位
幀長度:8個字節
設備地址:1~247
功能碼:10H
數據地址:0~65535具體范圍與相關設備有關
數量:1~122具體范圍與相關設備有關
校驗碼:CRC16校驗
命令有誤:
1)沒有任何返回
2)返回異議幀
地址功能碼錯誤信息CR韓信是怎么死的 CHCRCL
Addr190H一個字節的錯誤信息CRC高位CRC低位
八、一點總結
編寫通信相關的程序,其實協議和開發語言并不重要,重要的是對通信雙方
的通信設備的特點,性能要有充分了解,這樣才能開發出可靠,高效的通信程序。
本文發布于:2023-03-20 19:04:07,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/1679310247152287.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:netbox.doc
本文 PDF 下載地址:netbox.pdf
| 留言與評論(共有 0 條評論) |