西門子Modbus通訊地址問題分析
發布日期:
2022-12-08

Modbus地址實際上分為(wei) 兩(liang) 種情況即PLC作Modbus主站,Modbus地址和PLC手冊(ce) 裏的地址一與(yu) PLC作從(cong) 站,PLC不用管什麽(me) Modbus地址。

Modbus地址實際上分為(wei) 兩(liang) 種情況。下麵以西門子S7-200/S7-200SMART/和S7-1200為(wei) 例來說明:

第一種情況:西門子PLC作Modbus主站,Modbus地址和PLC手冊(ce) 裏的地址一致,例如作主站的S7-200的MBUS_MSG指令用於(yu) 向Modbus從(cong) 站發送請求消息,和處理從(cong) 站返回的響應消息。要讀取從(cong) 站(另一台S7-200)的I0.0開始的地址區時,它的輸入參數Addr(Modbus地址)為(wei) 10001。S7-200從(cong) 站保持寄存器的V區起始地址為(wei) VB200時,要讀取從(cong) 站VW200開始的V存儲(chu) 區時,保持寄存器的地址是40001。

第二種情況:PLC作從(cong) 站,PLC不用管什麽(me) Modbus地址,等著主站來讀寫(xie) 它的地址區就是了。

主站的計算機軟件(例如DCS或組態軟件)的編程人員需要編寫(xie) 實現Modbus通信的程序,首先需要確定ModbusRTU的報文結構。他們(men) 一般不熟悉PLC,因此PLC的編程人員往往需要和上位機軟件的編程人員一起來討論Modbus的報文結構。

更容易出問題的就是報文裏Modbus地址與(yu) PLC存儲(chu) 區地址的對應關(guan) 係。曾經有工作人員做過的一個(ge) 係統的上位機是專(zhuan) 用的組態軟件,通過分析GEPLC手冊(ce) 給出的CRC的循環異或計算實例每一步的中間數據,編寫(xie) 出了CRC計算的C語言程序。通過實驗驗證了Modbus報文結構和CRC的計算的可行性。

S7PLC手冊(ce) 給出的Modbus地址與(yu) Modicon公司和GE公司PLC使用的地址相同,是基於(yu) 1的地址,即同類元件的首地址為(wei) 1。而西門子PLC采用的是基於(yu) 0的地址,即同類元件的首地址為(wei) 0。Modbus報文中西門子PLC的Modbus地址也采用基於(yu) 0的地址。

PLC係統手冊(ce) 中的Modbus地址的更高位用來表示地址區的類型,例如I0.0的Modbus地址為(wei) 10001。因為(wei) 地址區類型的信息已經包含在報文的功能碼中了,報文中S7-200的I0.0的Modbus地址不是10001,而是0。報文中其他地址區的Modbus地址也應按相同的原則處理。例如當S7-200從(cong) 站保持寄存器的V區起始地址為(wei) VB200時,VW200對應的保持寄存器在報文中的Modbus地址為(wei) 0,而不是40001。

聲明:部分內(nei) 容來源於(yu) 網絡,如侵權請後台留言聯係刪除。