10通信端口感叹号_S71200 技术篇——MODBUS TCP通信
一、S7-1200 Modbus TCP 通信指令塊
圖1. Modbus TCP V4.0 版本指令塊
二、S7-1200?Modbus TCP 實(shí)驗(yàn)環(huán)境
下面以兩臺(tái)S7-1200之間進(jìn)行 Modbus TCP 通信為例,詳細(xì)闡述客戶端與服務(wù)器側(cè)如何編程及通信的過程。
表1. Modbus TCP?通信雙方的基本配置
CPU類型 | IP地址 | 端口號(hào) | 硬件標(biāo)識(shí)符 | |
客戶端 | CPU 1212C | 192.168.0.6 | 0 | 64 |
服務(wù)器 | CPU 1215C | 192.168.0.4 | 502 | 64 |
硬件標(biāo)識(shí)符是在“設(shè)備組態(tài)”中,雙擊 PROFINET 接口,然后在“屬性”中的“硬件標(biāo)識(shí)符”中查看。
圖2. S7-1200設(shè)備的PROFINET接口硬件標(biāo)識(shí)符
三、S7-1200?Modbus TCP 客戶端編程
S7-1200 客戶端側(cè)需要調(diào)用MB_CLIENT指令塊,該指令塊主要完成客戶機(jī)和服務(wù)器的TCP連接、發(fā)送命令消息、接收響應(yīng)以及控制服務(wù)器斷開的工作任務(wù)。
(1)將MB_CLIENT 指令塊在“ 程序塊 -> OB1 ”中的程序段里調(diào)用,調(diào)用時(shí)會(huì)自動(dòng)生成背景DB ,點(diǎn)擊確定即可。
圖3. Modbus TCP 客戶端側(cè)指令塊
該功能塊各個(gè)引腳定義如下:
表2. MB_CLIENT?各引腳定義說明
REQ | 與服務(wù)器之間的通信請(qǐng)求,上升沿有效。 |
DISCONNECT | 通過該參數(shù),可以控制與 Modbus TCP服務(wù)器建立和終止連接。0(默認(rèn)):建立連接;1:斷開連接。 |
MB_MODE | 選擇 Modbus 請(qǐng)求模式(讀取、寫入或診斷)。0:讀;1:寫。 |
MB_DATA_ADDR | 由“MB_CLIENT”指令所訪問數(shù)據(jù)的起始地址。 |
MB_DATA_LEN | 數(shù)據(jù)長度:數(shù)據(jù)訪問的位或字的個(gè)數(shù)。 |
MB_DATA_PTR | 指向 Modbus 數(shù)據(jù)寄存器的指針。 |
CONNECT | 指向連接描述結(jié)構(gòu)的指針。TCON_IP_v4(S7-1200) |
DONE | 最后一個(gè)作業(yè)成功完成,立即將輸出參數(shù) DONE 置位為“1”。 |
BUSY | 作業(yè)狀態(tài)位:0:無正在處理的“MB_CLIENT”作業(yè);1:“MB_CLIENT”作業(yè)正在處理。 |
ERROR | 錯(cuò)誤位:0:無錯(cuò)誤;1:出現(xiàn)錯(cuò)誤,錯(cuò)誤原因查看STATUS。 |
STATUS | 指令的詳細(xì)狀態(tài)信息。 |
(2)CONNECT 引腳的指針類型
第一步,先創(chuàng)建一個(gè)新的全局?jǐn)?shù)據(jù)塊 DB2:
圖4. 創(chuàng)建全局?jǐn)?shù)據(jù)塊
第二步,雙擊打開新生成的DB塊,定義變量名稱為“aa",數(shù)據(jù)類型為“TCON_IP_v4”(可以將 TCON_IP_v4 拷貝到該對(duì)話框中),然后點(diǎn)擊“回車”按鍵。該數(shù)據(jù)類型結(jié)構(gòu)創(chuàng)建完畢。如圖5所示:
圖5. 創(chuàng)建 MB_CLIENT 中的TCP連接結(jié)構(gòu)的數(shù)據(jù)類型
各個(gè)引腳定義說明如下:
表3. TCON_IP_v4 數(shù)據(jù)結(jié)構(gòu)的引腳定義
InterfaceId | 硬件標(biāo)識(shí)符。 |
ID | 連接ID,取值范圍1~4095 |
Connection Type | 連接類型。TCP連接默認(rèn)為:16#0B |
ActiveEstablished | 建立連接。主動(dòng)為1(客戶端),被動(dòng)為0(服務(wù)器)。 |
ADDR | 服務(wù)器側(cè)的IP地址 |
RemotePort | 遠(yuǎn)程端口號(hào) |
LocalPort | 本地端口號(hào) |
本文遠(yuǎn)程服務(wù)器的IP地址為192.168.0.4,遠(yuǎn)程端口號(hào)設(shè)為502。所以客戶端側(cè)該數(shù)據(jù)結(jié)構(gòu)的各項(xiàng)值為:
圖6. MB_CLIENT 側(cè) CONNECT 引腳數(shù)據(jù)定義
注意:?CONNECT引腳的填寫需要用符號(hào)尋址的方式。
(3)創(chuàng)建 MB_DATA_PTR 數(shù)據(jù)緩沖區(qū)
第一步,創(chuàng)建一個(gè)全局?jǐn)?shù)據(jù)塊 DB3,創(chuàng)建方法可以參考上面的圖3,數(shù)據(jù)塊的名稱如圖7所示:
圖7. 生成的兩個(gè)DB塊名稱
第二步,建議一個(gè)數(shù)組的數(shù)據(jù)類型,以便通信中存放數(shù)據(jù),請(qǐng)參考圖8所示:
圖8. MB_DATA_PTR 數(shù)據(jù)緩沖區(qū)結(jié)構(gòu)
注意: MB_DATA_PTR指定的數(shù)據(jù)緩沖區(qū)可以為DB塊或M存儲(chǔ)區(qū)地址中。DB塊可以為優(yōu)化的數(shù)據(jù)塊,也可以為標(biāo)準(zhǔn)的數(shù)據(jù)塊結(jié)構(gòu)。若為優(yōu)化的數(shù)據(jù)塊結(jié)構(gòu),編程時(shí)需要以符號(hào)尋址的方式填寫該引腳;若為標(biāo)準(zhǔn)的數(shù)據(jù)塊結(jié)構(gòu)(可以右鍵單擊DB塊,“屬性”中將“優(yōu)化的塊訪問”前面的勾去掉,如下圖9所示),需要以絕對(duì)地址的方式填寫該引腳。本文以標(biāo)準(zhǔn)的數(shù)據(jù)塊(默認(rèn))為例進(jìn)行編程。
圖9. 修改 DB 塊屬性為標(biāo)準(zhǔn)的塊結(jié)構(gòu)
(4)客戶端側(cè)完成指令塊編程
調(diào)用 MB_CLIENT 指令塊,實(shí)現(xiàn)從 Modbus TCP 通信服務(wù)器中讀取2個(gè)保持寄存器的值,如圖10所示:
圖10. MB_CLIENT 指令塊編程
(5)將整個(gè)項(xiàng)目下載到S7-1200
待Modbus TCP 服務(wù)器側(cè)準(zhǔn)備就緒,給MB_CLIENT指令塊的REQ引腳一個(gè)上升沿,將讀取到的數(shù)據(jù)放入 MB_DATA_PTR引腳指定的DB 塊中。具體的實(shí)驗(yàn)結(jié)果可以查看S7-1200 服務(wù)器側(cè)編程。
四、S7-1200?Modbus TCP?服務(wù)器編程
“MB_SERVER”指令將處理 Modbus TCP 客戶端的連接請(qǐng)求、接收并處理 Modbus 請(qǐng)求并發(fā)送響應(yīng)。
(1)在“ 程序塊-> OB 1"中調(diào)用“MB_SERVER”指令塊,然后會(huì)生成相應(yīng)的背景DB塊,點(diǎn)擊確定,如圖11所示。
圖11. 調(diào)用MB_SERVER指令塊
該功能塊的各個(gè)引腳定義如下:
表4. MB_SERVER 各個(gè)引腳定義說明
DISCONNET | 為0代表被動(dòng)建立與客戶端的通信連接;為1代表終止連接。 |
MB_HOLD_REG | 指向 Modbus 保持寄存器的指針。 |
CONNECT | 指向連接描述結(jié)構(gòu)的指針。TCON_IP_v4(S7-1200) |
NDR | 為0代表無數(shù)據(jù);為1代表從 Modbus 客戶端寫入新的數(shù)據(jù)。 |
DR | 為0代表無讀取的數(shù)據(jù);為1代表從 Modbus 客戶端讀取的數(shù)據(jù) |
ERROR | 錯(cuò)誤位:0:無錯(cuò)誤;1:出現(xiàn)錯(cuò)誤,錯(cuò)誤原因查看STATUS。 |
STATUS | 指令的詳細(xì)狀態(tài)信息。 |
(2)?CONNECT 引腳的指針類型
第一步,先創(chuàng)建一個(gè)新的全局?jǐn)?shù)據(jù)塊 DB2,如圖12所示:
圖12. 創(chuàng)建全局?jǐn)?shù)據(jù)塊
第二步,雙擊打開新生成的 DB2 數(shù)據(jù)塊,定義變量名稱為“ss",數(shù)據(jù)類型為“TCON_IP_v4”(可以將 TCON_IP_v4 拷貝到該對(duì)話框中),然后點(diǎn)擊“回車”按鍵。該數(shù)據(jù)類型結(jié)構(gòu)創(chuàng)建完畢。如圖13所示:
圖13. 創(chuàng)建 MB_SERVER 中的 TCP 連接結(jié)構(gòu)的數(shù)據(jù)類型
各個(gè)引腳定義說明如下:
表5. TCON_IP_v4 數(shù)據(jù)結(jié)構(gòu)的引腳定義
InterfaceId | 硬件標(biāo)識(shí)符。(設(shè)備組態(tài)中查詢) |
ID | 連接ID,取值范圍1~4095 |
Connection Type | 連接類型。TCP連接默認(rèn)為:16#0B |
ActiveEstablished | 建立連接。主動(dòng)為1(客戶端),被動(dòng)為0(服務(wù)器)。 |
ADDR | 服務(wù)器側(cè)的IP地址 |
RemotePort | 遠(yuǎn)程端口號(hào) |
LocalPort | 本地端口號(hào) |
客戶端側(cè)的IP地址為192.168.0.6,端口號(hào)為0,所以 MB_SERVER 服務(wù)器側(cè)該數(shù)據(jù)結(jié)構(gòu)的各項(xiàng)值如圖14所示。
圖14. MB_SERVER 服務(wù)器側(cè)的 CONNECT 數(shù)據(jù)結(jié)構(gòu)定義
(3)S7-1200 服務(wù)器側(cè) MB_SERVER 編程
調(diào)用MB_SERVER指令塊,實(shí)現(xiàn)被客戶端讀取2個(gè)保持寄存器的值,如圖15所示。
圖15. MB_SERVER 服務(wù)器側(cè)編程
注意:MB_HOLD_REG 指定的數(shù)據(jù)緩沖區(qū)可以設(shè)為 DB 塊或 M 存儲(chǔ)區(qū)地址。DB 塊可以為優(yōu)化的數(shù)據(jù)塊,也可以為標(biāo)準(zhǔn)的數(shù)據(jù)塊結(jié)構(gòu)。
五、S7-1200?Modbus TCP?通信調(diào)試
S7-1200 MODBUS TCP 服務(wù)器側(cè)準(zhǔn)備數(shù)據(jù),用于客戶端讀訪問,如圖16所示。
圖16. 服務(wù)器側(cè)監(jiān)控表
S7-1200 MODBUS TCP 客戶端側(cè),給 MB_CLIENT 指令塊中 REQ 引腳一個(gè)上升沿,監(jiān)控?cái)?shù)據(jù)讀取成功。如圖17所示。
圖17. 客戶端側(cè)監(jiān)控表
如果您需要SMART編程軟件以及SMART LINE觸摸屏軟件,或有其他技術(shù)問題,可聯(lián)系微信號(hào):13840121680。(加微信號(hào)請(qǐng)備注公司+姓名)。
總結(jié)
以上是生活随笔為你收集整理的10通信端口感叹号_S71200 技术篇——MODBUS TCP通信的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: switch日版有中文吗_任天堂swit
- 下一篇: easyexcel模板循环模板怎么循环_