一說到Modbus通信大家肯定第一時間會想到Modbus RTU通信就是串口485通信,那么不知Modbus通信還有以太網TCP通信功能,Modbus TCP比Modbus RTU方便的多,以太網通訊肯定要比串口方便的多,好,話不對說,下面就為大家來解析Modbus TCP通信。
一、準備工具
1. 一臺ST40 CPU
2. 一臺ST20 CPU
3. 一臺交換機
4. 若干網線
5. 一臺電腦(筆記本、臺式都可以)
二、硬件配置
第一步:(用交換機把ST40與ST20PLC相連接)
三、組態Modbus TCP客戶端
第一步:(在桌面打開STEP 7-MicroWIN SMART編程軟件)
第二步:(在左側項目樹庫指令從庫文件夾下找到Modbus TCP客戶端指令 MBUS_CLIENT,把它拖拽出來到程序段中)
第三步:(配置MBUS_CLIENT指令)
MBUS_CLIENT客戶端指令各引腳填寫如下:
概念:EN:使能端,給EN使能來接通MBUS_CLIENT客戶端指令。
填寫:使用SM0.0一直為1接通。
概念:Req:Req 參數允許程序向服務器發送 Modbus 請求。
填寫:使用SM0.0一直為1接通,一直向服務器發送請求。
概念:Connect:Connect 參數允許程序連接到 Modbus 服務器設備或斷開與此設備的連接。
填寫:使用SM0.0一直為1接通,一直允許連接。
概念:IPAddr1—IPAddr4是服務器IP地址,對方PLC通信的IP地址
填寫:IPAddr1:192 IPAddr2:168 IPAddr3:0 IPAddr4:20 IPAddr1—IPAddr4:192.168.0.20。
概念:IP_Port:客戶端嘗試連接、且隨后使用 Modbus TCP 進行通信的服務器的端口號,默認值:502
填寫:這里填寫默認值502即可。
概念:RW:分配請求類型(讀取或寫入),其中 0 = 讀取,1 = 寫入
填寫:0讀取,如果是寫就填寫1,這里呢?只讀所以填寫0。
概念:Addr:Modbus 起始地址:分配要通過 MBUS_CLIENT 進行訪問的數據的起始地址。
填寫:這里填寫40001寄存器起始地址,不知道的可以參考Modbus 功能表參數。
概念:Count:要進行讀寫的參數數據長度,就是數據地址個數。
填寫:4個,讀四個地址。
概念:DataPtr:數據寄存器地址指針,指向本地用于讀/寫操作的數據地址區域的首地址。
填寫:&VB10,地址前面一定要加指針符號(&),否則無效哦!
概念:Done:完成位,程序塊指令執行完畢會輸出完成位,這里的完成位還可以使用它做輪詢哦!
填寫:只能填寫位地址,這里填寫V0.3。
概念:Error:錯誤位,當程序塊或通信出錯錯誤時,Error會輸出錯誤代碼,可以根據這個錯誤代碼來查找具體的錯誤信息,以便解除故障。
填寫:只能填寫位地址,這里填寫MB2。
MBUS_CLIENT客戶端指令各引腳填寫數據類型如下:
四、組態Modbus TCP服務器
第一步:(在桌面打開STEP 7-MicroWIN SMART編程軟件)
第二步:(在左側項目樹庫指令從庫文件夾下找Modbus TCP服務器指令MBUS_SERVER,把它拖拽出來到程序段中)
第三步:(配置MBUS_SERVER指令)
MBUS_SERVER服務器指令各引腳填寫如下:
概念:EN:使能端,給EN使能來接通MBUS_SERVER服務器指令。
填寫:使用SM0.0一直為1來接通它。
概念:Connect:1:服務器接受來自客戶端的請求;=0:服務器可以斷開已經建立的連接
填寫:使用SM0.0一直為1。
概念:IP_Port:服務器本地端口號
填寫:這里和客戶端一致,填寫502。
概念:MaxIQ:對應數字量輸入/輸出點對應Modbus 地址參數,可設置范圍:0-256,0表示禁用對輸入和輸出的所有讀取和寫入,建議將 MaxIQ 值設置為 256。
填寫:256建議范圍。
概念:MaxAI:對應模擬量輸入參數對應Modbus 地址參數,可設置范圍:0-56,0表示禁用對模擬量輸入的讀取,對于 CPU CR40 和 CR60,為 0
對于所有其它 CPU 型號,為56。
填寫:56所以型號都可以。
概念:MaxHold:用于 Modbus 地址V 存儲器中的字保持寄存器數,例如,如果要允許 Modbus 客戶端訪問 2000 字節的 V 存儲器,則將 MaxHold 的值設置為 1000 字(保持寄存器)。
填寫:這里只需要訪問4個字節就可以,所以填寫4。
概念:HoldStart:指向 V 存儲器中保持寄存器起始位置的指針,簡單理解是服務器寫入到客戶端的地址。
填寫:&VB0地址前面一定要加指針符號(&),否則無效哦!
概念:Done:完成位,程序塊指令執行完畢會輸出完成位,這里的完成位還可以使用它做輪詢哦!
填寫:只能填寫位地址,這里填寫M2.0。
概念:Error:錯誤位,當程序塊或通信出錯錯誤時,Error會輸出錯誤代碼,可以根據這個錯誤代碼來查找具體的錯誤信息,以便解除故障。
填寫:只能填寫位地址,這里填寫MB9。
MBUS_SERVER客戶端指令各引腳填寫數據類型如下:
五、下載程序
第一步:(下載ST40客戶端)
第二步:(下載ST20服務器)
六、監視并讀取數據
第一步:(同時監視ST40客戶端與ST20服務器)
第二步:(服務器寫數據,客戶端讀取數據)
ST40 (客戶端)讀ST20(服務器)數據
ST40(VW10)= ST20(VW0) ST40(VW12)= ST20(VW2)
ST40(VW14)= ST20(VW4) ST40(VW16)= ST20(VW6)
ST20寫 :VW0 VW2 VW4 VW6寫四個地址,分別為:VW0:(4) VW2:(6) VW4:(12) VW6:(48)。
ST40讀:VW10 VW12 VW14 VW16讀四個地址,分別為:VW10:(4) VW12:(6)VW14:(12) VW16:(48)
那么此時此刻兩臺S7-200SMART PLC Modbus TCP(客戶端、服務器)互相通信就已經完成了,不知各位大佬學會了木有!
以上知識點大家都理解并且掌握了嘛?如果你還百思不得其解的?可以在上述文章找答案!