Modbus、KepServer、西門子PLC通信
昨天在現場實現了工業數據的通信,簡單寫一下。
1.按照國際慣例,先介紹一下
ModBus通信協議感覺是物理層面的,幾個終端串聯在一起,通過設定每個終端不同的ID號,來訪問。具體硬件實現還未研究。
本系統采用ModBus RTU模式通信,使用的是和校驗,低位在前。
有關ModBus的介紹,這篇文章很好:極客學院WiKi
KepServer是一個提供OPC服務的服務軟件,其提供一個OPC服務,可以被外部程序調用,經行client數據寫入。
OPC (OLE for Process Control) 用於過程控制的OLE,
OLE是 object linking and embedding (對象鏈接與嵌入)的縮寫。
OPC采用客戶端/服務器的結構,作為中心數據源的OPC服務器負責向各種客戶端提供來自現場設備的數據。
西門子PLC,我的理解就是微型計算機,只是可以在更苛刻的環境下使用。
2.如何實現
數據通過ModBus與計算機通信,使用USB轉R232再轉R485硬件實現。這個要提前準備好驅動,我用的是宇泰的UT-8801款USB轉串口,驅動下載地址。
ModBus有兩根線通信,測量兩線電壓應該在0.11V左右
然後通過ModBus協議讀取設備的數據。
通過自己寫的軟件將數據傳入KepServer中,教程:用C#開發OPC客戶端
軟件通過發送ModBus指令得到數據,通過綁定的OPC服務,根據在KepServer中建立的地址,將得到的數據寫入到KepServer中。
KepServer通過網線與PLC相連,使用PLC的IP地址,和默認端口號102 通信。
在KepServer建立的點名就是上面軟件的訪問地址,而這些點名的地址是PLC中DB塊的地址。(以後補圖)
這樣KepServer就可以將數據寫入到PLC中,PLC使用WinCC建立界面就可以實時看到數據和數據歷史曲線了。
3.小錯誤
電腦無法識別COM口,驅動沒有裝好,下次試新的電腦,一定要帶一份驅動。
ModBus線不知道正負,可以使用萬用表測電壓檢測。
ModBus數據無法讀到,原理是設備的ID有重復的。
OPC軟件寫入失敗,註意各種錯誤提示,並網上搜索,特別是各個操作系統的時間格式。
(後續補圖)
Modbus、KepServer、西門子PLC通信