01 相關使用說明:
(1) Modbus TCP 客戶端通過 PROFINET 連接進行通信。
通過“MB_CLIENT”指令,可以在客戶端和服務器之間建立連接、發送 Modbus 請求、接收響應並控制 Modbus TCP 客戶端的連接終端。
通過“MB_SERVER”指令將處理 Modbus TCP 客戶端的連接請求、接收並處理 Modbus 請求併發送響應。
(2) S7-1200 固件版本 V4.0 支持“MB_CLIENT”指令和最高 V3.1 版本的庫。S7-1200 固件版本 V4.1 及更高版本和 S7-1500,支持“MB_CLIENT”指令與“MB_SERVER”指令的所有庫版本。
使用該指令時,無需其它任何硬件模塊。
(3) 使用各客戶端連接時,請記住以下規則:
▀ 每個“MB_CLIENT”連接都必須使用唯一的背景數據塊。
▀ 對於每個“MB_CLIENT”連接,必須指定唯一的服務器 IP 地址。
02 MB_CLIENT指令中
MB_MODE、MB_DATA_ADDR和MB_DATA_LEN三個參數組合定義了當前Modbus消息中所用的功能代碼,如表
03 準備工作
(1) S7-1200作為服務器的話,端口號必須是502,作為客戶端端口號是0;
(2) 硬件標識符一般是64 (16#40)
04 編程
(1)客戶端
CONNECT 引腳的指針類型
先創建一個新的全局數據塊DB, 雙擊打開新生成的DB塊,定義變量名稱為“aa",數據類型為“TCON_IP_v4”(可以將 TCON_IP_v4 拷貝到該對話框中),然後點擊“回車”按鍵。該數據類型結構創建完畢( ID號的意義不大在這裡,可以不考慮數值問題,主要是通過IP地址通訊)
注意: MB_DATA_PTR指定的數據緩衝區可以為DB塊或M存儲區地址中。DB塊可以為優化的數據塊,也可以為標準的數據塊結構。若為優化的數據塊結構,編程時需要以符號尋址的方式填寫該引腳;若為標準的數據塊結構(可以右鍵單擊DB塊,“屬性”中將“優化的塊訪問”前面的勾去掉,需要以絕對地址的方式填寫該引腳,這樣便於寫P#格式。)
(2)服務器端
CONNECT 引腳的指針類型
先創建一個新的全局數據塊DB, 雙擊打開新生成的DB塊,定義變量名稱為“aa",數據類型為“TCON_IP_v4”(可以將 TCON_IP_v4 拷貝到該對話框中),然後點擊“回車”按鍵。該數據類型結構創建完畢( ID號的意義不大在這裡,可以不考慮數值問題,主要是通過IP地址通訊)
05 編程注意事項:
(1)MODBUS-TCP通訊需要用分時控制各MB_CLIENT功能塊,在同一時間只能有一個MB_CLIENT功能塊的DISCONNET處於OFF(即:建立連接),不然會出現通訊不正常。
(2)不同的MB_CLIENT功能塊寄存器地址範圍注意不要一樣(40001-49999),特別是讀寫時一定不能一樣,容易造成數據混亂,因為讀寫的40001-49999的寄存器地址是同一個區域。
(3)“MB_SERVER”功能塊在服務器側一般只調用1次。所有客戶端的讀寫數據全部包含在裡面,所以要注意分別。
(4)在修改過CONNECT 引腳的指針參數或端口參數後一般需要PLC重新啟動才有效。
06 實際案列程序:
(1)客戶端程序
(2)服務器端程序
(3)參數狀態說明
↓↓↓領取學習資料
閱讀更多 技成PLC課堂 的文章