公司動態(tài)
西門子PLC Modbus地址問題分析原因
閱讀:1237 發(fā)布時間:2014-8-11西門子PLC Modbus地址問題分析原因
Modbus地址實(shí)際上分為兩種情況即PLC作Modbus主站,Modbus地址和PLC手冊里的地址一與PLC作從站,PLC不用管什么Modbus地址。
Modbus地址實(shí)際上分為兩種情況。下面以西門子S7-200/S7-200SMART/和s7-1200為例來說明:
*種情況:PLC作Modbus主站,Modbus地址和PLC手冊里的地址一致,,例如作主站的S7-200的MBUS_MSG指令用于向Modbus從站發(fā)送請求消息,和處理從站返回的響應(yīng)消息,。要讀取從站(另一臺S7-200)的I0.0開始的地址區(qū)時,,它的輸入?yún)?shù)Addr(Modbus地址)為10001。S7-200從站保持寄存器的V區(qū)起始地址為VB200時,,要讀取從站VW200開始的V存儲區(qū)時,,保持寄存器的地址是40001。
第二種情況:PLC作從站,,PLC不用管什么Modbus地址,,等著主站來讀寫它的地址區(qū)就是了。
主站的計算機(jī)軟件(例如DCS或組態(tài)軟件)的編程人員需要編寫實(shí)現(xiàn)Modbus通信的程序,,首先需要確定ModbusRTU的報文結(jié)構(gòu),。他們一般不熟悉PLC,因此PLC的編程人員往往需要和上位機(jī)軟件的編程人員一起來討論Modbus的報文結(jié)構(gòu),。
zui容易出問題的就是報文里Modbus地址與PLC存儲區(qū)地址的對應(yīng)關(guān)系,。曾經(jīng)有工作人員做過的一個系統(tǒng)的上位機(jī)是的組態(tài)軟件,通過分析GEPLC手冊給出的CRC的循環(huán)異或計算實(shí)例每一步的中間數(shù)據(jù),,編寫出了CRC計算的C語言程序,。通過實(shí)驗(yàn)驗(yàn)證了Modbus報文結(jié)構(gòu)和CRC的計算的可行性。
S7PLC手冊給出的Modbus地址與Modicon公司和GE公司PLC使用的地址相同,,是基于1的地址,,即同類元件的首地址為1。而西門子PLC采用的是基于0的地址,,即同類元件的首地址為0,。Modbus報文中西門子PLC的Modbus地址也采用基于0的地址,。
PLC系統(tǒng)手冊中的Modbus地址的zui高位用來表示地址區(qū)的類型,,例如I0.0的Modbus地址為10001。因?yàn)榈刂穮^(qū)類型的信息已經(jīng)包含在報文的功能碼中了,,報文中S7-200的I0.0的Modbus地址不是10001,,而是0。報文中其他地址區(qū)的Modbus地址也應(yīng)按相同的原則處理,。例如當(dāng)S7-200從站保持寄存器的V區(qū)起始地址為VB200時,,VW200對應(yīng)的保持寄存器在報文中的Modbus地址為0,而不是40001。