前記
本文主要以C#作為程式設計語言,結合目前市場上常用的5種通信庫,分别與台達DVP-32 PLC、西門子S7-1200PLC、S7-1500PLC進行通信研究,并對研究的結論進行分享。
通信庫簡介
一、EasyModbus
簡介:EasyModbus支援Modbus TCP, Modbus UDP及Modbus RTU,開源協定為MIT。
二、SharpModbus
簡介:SharpModbus是一個開源的Modbus工具,支援ModbusTCP與ModbusRTU,開源協定為MIT。
三、NModbus4
簡介:NModbus4是一個開源的Modbus通信庫,開源協定為MIT。
四、HslCommunication
簡介:HslCommunication是一個商業通信庫,涵蓋各種不同裝置的通信。
五、xktComm
簡介:xktComm是一個商業通信庫,涵蓋西門子、歐姆龍、三菱、基恩士等PLC,也支援Modbus及OPC通信。
通信開發
- 針對各種庫建立了一個枚舉類型:
針對每個庫建立一個通信對象:
針對各個庫實作連接配接方法:
針對各個庫實作斷開連接配接方法
針對各個庫實作一個讀取變量的方法:
功能開發
- 由于每個庫實作的功能都一樣,是以開發了一個控件,将相關接口預留出來,後續直接調用即可。
- 控件提供了啟動(Start)、停止(Stop)事件,提供了Modbus庫類型,可以選擇設定,也可以通過屬性對通信結果和耗時時間進行指派。
- 使用也非常簡單,直接拖到界面上,設定好庫類型,綁定上Start和Stop事件即可。
- 測試的核心代碼如下:
連接配接台達PLC,測試結果如下:
采用MThings作為伺服器,測試結果如下:
連接配接西門子1200PLC,測試結果如下:
連接配接西門子1500PLC,測試結果如下:
整體總結
通過以上測試發現,ModbusTCP通信周期與ModbusTCP伺服器(PLC硬體)緊密關聯,台達PLC可以達到3ms,西門子1500PLC也在3ms左右,而西門子1200PLC在11ms左右,ModbusTCP通信可以達到毫秒級。
可能有的小夥伴會感到疑惑,為什麼SharpModbus連接配接台達PLC那麼慢,連接配接其他PLC都正常呢?
寫在最後
近幾年, 随着越來越多的裝置開始加入IIoT 網絡(Industrial Internet of Things,工業物聯網簡稱IIoT),IT與OT之間的界限将逐漸消失,直到成為一個或相同的系統為止。
是以,越來越多的電氣工程師開始轉型上位機開發。因為在已有電氣技能的基礎上,如果掌握了上位機開發技能,薪資達到20K,甚至30K,都會變得更容易。
為了便于大家更好地學習這個項目,我将通過免費直播課的方式示範整個項目的部署及開發,通過完整的項目分析及編寫,即使你是零基礎,也能帶你實作項目功能。想要學習的童鞋,趕緊掃描下方二維碼,加微信,進入班級群。
PS:名額有限,先到先得,僅限當天。
如果掃碼無法添加,可以添加備用微信:xiketang777