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.所示。
“MB_SERVER”指令將處理Modbus TCP客戶機的連接請求、接收Modbus功能的請求併發送響應。
1.調用MB_SERVER通信指令,進入 “Program blocks” > “OB1” 主程序中調用,設置連接ID、IP端口等參數,如下圖10.所示。
功能塊參數意義如下表5.
2.MB_DATA_PTR數據塊的新建
通過“Program blocks”>“Add new block”,選擇“Data block”創建 DB 塊,選擇“標準與S7- 300/400兼容” ,點擊“OK”鍵,定義數據區為100個字的數組,如圖11.所示。
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.。
4.客戶機端 Modscan32 軟件設置
注意:客戶機採用Modscan32軟件測試,Modscan32 做 Modbus TCP Client 測試軟件,是第三方軟件,可以從 internet 網絡上下載。
將測試電腦的IP地址設置成192.168.0.210,打開Modscan32 軟件,在Modscan32的“Setup->Data Definition”中設置功能碼、起始地址、長度等,如圖12.所示。
在“Connection->connect...”中打開連接屬性對話框,選擇“Remote modbus TCP Server”,設置服務器的IP地址,端口號,如圖13.所示。
注意:用Modsscan32做客戶機不需要考慮Device ID和服務器一致的情況,服務器自動響應客戶機的Device ID。
5.通訊測試
S7-1200作服務器,客戶機Modscan32用FC03功能碼讀取服務器的兩個字,設置客戶機和服務器的功能、起始地址、端口等參數相對應,具體設置如圖13.和14.所示,
通訊結果如下圖15.所示,Modscan32從服務器讀到數據10,20到客戶機的DB4.DBW0和DB4.DBW2區域。
用功能FC15向服務器的Q0.0~Q0.7寫8位數據,設置連接參數,Modscan32設置結果如下圖16.所示。
測試結果,服務器側直接對應過程映像輸出區,00001~00008對應Q0.0~Q0.7,如下圖17.所示。
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.所示。
編程調用如下圖18.所示
通訊結果如下圖19.所示
7.MB_SERVER參數STATUS的查詢參考下面列表8.
除了上面列出的錯誤外,也可以從底層傳輸通信指令(TCON、TDISCON、TSEND和TRCV)返回錯誤,參考相應指令的錯誤代碼。
說明:Modbus Slave做 Modbus TCP server 測試軟件,Modscan32 做 Modbus TCP Client 測試軟件,兩者都是第三方軟件,可以從 internet 網絡上下載。
閱讀更多 小云說工控 的文章