02.29 S7-1200 做 Modbus Tcp Server (服務器)

Modbus TCP是標準的網絡通信協議,通過CPU上PN接口進行TCP/IP通信,不需要額外的通信硬件模塊,Modbus TCP使用開放式用戶通信連接作為Modbus通信路徑,所支持的混合客戶機和服務器連接數最大為CPU所允許的最大開放式用戶通信連接數8個。

軟件 STEP7 V11 SP1版本開始,S7-1200CPU 從Firmware V1.0.2開始,不再需要安裝Modbus TCP的庫文件,可以直接調用Modbus TCP的庫指令“MB_CLIENT”和“MB_SERVER”使用實現Modbus TCP通信功能,如圖1.所示。

S7-1200 做 Modbus Tcp Server (服務器)

圖1. Modbus TCP的庫指令

“MB_SERVER”指令將處理Modbus TCP客戶機的連接請求、接收Modbus功能的請求併發送響應。

1.調用MB_SERVER通信指令,進入 “Program blocks” > “OB1” 主程序中調用,設置連接ID、IP端口等參數,如下圖10.所示。

S7-1200 做 Modbus Tcp Server (服務器)

圖10.調用MB_SERVER通信指令

功能塊參數意義如下表5.

S7-1200 做 Modbus Tcp Server (服務器)

表5. 功能塊“MB_SERVER”參數

2.MB_DATA_PTR數據塊的新建

通過“Program blocks”>“Add new block”,選擇“Data block”創建 DB 塊,選擇“標準與S7- 300/400兼容” ,點擊“OK”鍵,定義數據區為100個字的數組,如圖11.所示。

S7-1200 做 Modbus Tcp Server (服務器)


S7-1200 做 Modbus Tcp Server (服務器)

圖11.新建MB_DATA_PTR數據塊


3.Modbus地址的對應關係

“MB_SERVER”指令允許到達的Modbus功能(FC01、FC02、FC04、FC05、FC15)直接讀取和寫入訪問S7-1200CPU的過程映像輸入/輸出區(數據類型:BOOL和WORD),通過Modbus功能代碼(FC03、FC06和FC16)將到達的Modbus消息寫入Modbus保持寄存器或從寄存器中讀取(可通過MB_SERVER指令的參數“MB_HOLD_REG”指定保持寄存器),保持寄存器的大小(MB_HOLD_REG參數)必須大於1個字節,詳細參考表6.。

S7-1200 做 Modbus Tcp Server (服務器)

表6.Modbus地址的對應關係

4.客戶機端 Modscan32 軟件設置

注意:客戶機採用Modscan32軟件測試,Modscan32 做 Modbus TCP Client 測試軟件,是第三方軟件,可以從 internet 網絡上下載。

將測試電腦的IP地址設置成192.168.0.210,打開Modscan32 軟件,在Modscan32的“Setup->Data Definition”中設置功能碼、起始地址、長度等,如圖12.所示。


S7-1200 做 Modbus Tcp Server (服務器)

圖12.設置“Data Definition”參數

在“Connection->connect...”中打開連接屬性對話框,選擇“Remote modbus TCP Server”,設置服務器的IP地址,端口號,如圖13.所示。

S7-1200 做 Modbus Tcp Server (服務器)


S7-1200 做 Modbus Tcp Server (服務器)

圖13.設置連接屬性

注意:用Modsscan32做客戶機不需要考慮Device ID和服務器一致的情況,服務器自動響應客戶機的Device ID。

5.通訊測試

S7-1200作服務器,客戶機Modscan32用FC03功能碼讀取服務器的兩個字,設置客戶機和服務器的功能、起始地址、端口等參數相對應,具體設置如圖13.和14.所示,

S7-1200 做 Modbus Tcp Server (服務器)

圖14.S7-1200作服務器

通訊結果如下圖15.所示,Modscan32從服務器讀到數據10,20到客戶機的DB4.DBW0和DB4.DBW2區域。

S7-1200 做 Modbus Tcp Server (服務器)

圖15.FC03通訊結果

用功能FC15向服務器的Q0.0~Q0.7寫8位數據,設置連接參數,Modscan32設置結果如下圖16.所示。

S7-1200 做 Modbus Tcp Server (服務器)

圖16.使用FC15通訊,設置Modscan32

測試結果,服務器側直接對應過程映像輸出區,00001~00008對應Q0.0~Q0.7,如下圖17.所示。


S7-1200 做 Modbus Tcp Server (服務器)

圖17. 使用FC15通訊測試結果

6.HR_Start_Offset背景參數

HR_Start_Offset是類型為字,用於指定Modbus保持寄存器的起始地址,存儲在MB_SERVER背景數據塊中,默認值是0,可以通過編程將值寫入HR_Start_Offset。以上面FC03功能讀2個字為例,將HR_Start_Offset的偏移量設置成2,其他參數不修改,HR_Start_Offset偏移前後地址對應關係如下表7,編程調用和結果如圖18.和19.所示。

S7-1200 做 Modbus Tcp Server (服務器)

表7. HR_Start_Offset偏移前後地址對應關係

編程調用如下圖18.所示

S7-1200 做 Modbus Tcp Server (服務器)

圖18.HR_Start_Offset的偏移量設置

通訊結果如下圖19.所示

S7-1200 做 Modbus Tcp Server (服務器)

圖19. 通訊結果

7.MB_SERVER參數STATUS的查詢參考下面列表8.

S7-1200 做 Modbus Tcp Server (服務器)

表8.MB_SERVER參數STATUS

除了上面列出的錯誤外,也可以從底層傳輸通信指令(TCON、TDISCON、TSEND和TRCV)返回錯誤,參考相應指令的錯誤代碼。

說明:Modbus Slave做 Modbus TCP server 測試軟件,Modscan32 做 Modbus TCP Client 測試軟件,兩者都是第三方軟件,可以從 internet 網絡上下載。


分享到:


相關文章: