隨著技術(shù)的發(fā)展,很多傳感器與檢測儀表都不在是以前單一的電壓或者電流信號(hào)了,基本上都帶有了Modbus的通訊功能,這樣一來可以減少模塊的通道數(shù)量,也方便接線。但是走還是有一定的限制的,一個(gè)Modbus網(wǎng)絡(luò)里,只有一個(gè)主站和最多31個(gè)從站,在配置的時(shí)候需要注意滿足條件。下面給大家介紹一下S7-200CPU走M(jìn)odbus通訊時(shí)的數(shù)據(jù)地址對(duì)應(yīng)問題。
Modbus地址實(shí)際上分為兩種情況。下面以S7-200(OYES 214-1AD23)為例來說明:
第一種情況:PLC作Modbus主站,Modbus地址和PLC手冊(cè)里的地址一致,例如作主站的
S7-200的MBUS_MSG指令用于向Modbus從站發(fā)送請(qǐng)求消息,和處理從站返回的響應(yīng)消息。要讀取從站(另一臺(tái)S7-200)的I0.0開始的地址區(qū)時(shí),它的輸入?yún)?shù)Addr(Modbus地址)為10001。S7-200從站保持寄存器的V區(qū)起始地址為VB200時(shí),要讀取從站VW200開始的V存儲(chǔ)區(qū)時(shí),保持寄存器的地址是40001。
第二種情況:PLC作從站,PLC不用管什么Modbus地址,等著主站來讀寫它的地址區(qū)就是了。主站的組態(tài)軟件的編程人員需要編寫實(shí)現(xiàn)Modbus通信的程序,首先需要確定Modbus RTU的報(bào)文結(jié)構(gòu)。他們一般不熟悉PLC,因此PLC的編程人員往往需要和上位機(jī)軟件的編程人員一起來討論Modbus的報(bào)文結(jié)構(gòu)。最容易出問題的就是報(bào)文里Modbus地址與PLC存儲(chǔ)區(qū)地址的對(duì)應(yīng)關(guān)系。
S7 PLC手冊(cè)給出的Modbus地址與Modicon公司和GE公司PLC使用的地址相同,是基于1的地址,即同類元件的首地址為1。而西門子PLC采用的是基于0的地址,即同類元件的首地址為0。Modbus報(bào)文中西門子PLC的Modbus地址也采用基于0的地址。PLC系統(tǒng)手冊(cè)中的Modbus地址的最高位用來表示地址區(qū)的類型,例如I0.0的Modbus地址為10001。因?yàn)榈刂穮^(qū)類型的信息已經(jīng)包含在報(bào)文的功能碼中了,報(bào)文中S7-200的I0.0的Modbus地址不是10001,而是0。報(bào)文中其他地址區(qū)的Modbus地址也應(yīng)按相同的原則處理。例如當(dāng)S7-200從站保持寄存器的V區(qū)起始地址為VB200時(shí),VW200對(duì)應(yīng)的保持寄存器在報(bào)文中的Modbus地址為0,而不是40001。
下圖為功能碼的定義:
想了解更多關(guān)于Modbus的通訊資料,請(qǐng)關(guān)注微信公眾號(hào)奧越信科技,里面有MODBUS庫文件和通訊示例,讓你快速學(xué)習(xí)。