S7-1200 MODBUS TCP 通信多請求處理
單獨的客戶機連接需要遵循的規則:
1. 每個“MB_CLIENT”連接需要使用一個不同的背景數據塊;
2. 每個“MB_CLIENT”連接必須指定一個服務器 IP 地址;
3. 每個“MB_CLIENT”連接必須指定一個唯一的連接 ID;
4. 是否需要唯一的 IP 端口號取決于服務器組態;
連接 ID 和背景數據塊組合成對,對每個連接來說,組合對都是唯一的。
對于多請求處理,有兩種方法:
方法一:如果 TCP 連接充裕,可以建立多個不同的連接發送請求,即每個請求使用一個獨立的連接,調用獨立的“MB_CLIENT”功能塊,具體操作參考“Modbus TCP”部分,鏈接。
通過不同的連接發送多個請求,“MB_CLIENT”功能塊多次調用,但是需要使用不同的背景數據塊,不同的 ID 號和不同的端口號。
方法二:通過公共的連接發送多個請求
這個方法適合 CPU 訪問一個 Modbus TCP 服務器,但是有多個作業的情況,例如有讀也有寫,或者讀多個區域等。
通過公共的連接發送多個請求,“MB_CLIENT”功能塊多次調用,但是需要使用相同的背景數據塊,連接 ID 號,IP 地址和端口號,根據需要修改模式、地址、長度、指針等。
在任意時間,只能有一個 MB_CLIENT 請求處于激活狀態,在一個請求完成執行后,下一個請求再開始執行,輪循處理。
方法二特例:MODBUS TCP 客戶端訪問網關后的多個 MODBUS RTU 從站
這個方法適合 CPU 通過 Modbus TCP 轉 Modbus RTU 網關,訪問網關后多個 Modbus RTU 從站數據。CPU 僅僅和網關建立一個 Modbus TCP 連接,就可以訪問多個站的數據。
通過公共的連接發送多個請求,“MB_CLIENT”功能塊多次調用,但是需要使用相同的背景數據塊,連接 ID 號,IP 地址和端口號。參數“ MB_Unit_ID ” 使用不同的值,根據需要修改模式、地址、長度、指針等。
在任意時間,只能有一個 MB_CLIENT 請求處于激活狀態,在一個請求完成執行后,下一個請求再開始執行,輪循處理。
方法二輪循處理的操作
一.軟硬件要求
MB_Client 指令的使用要求:軟件 V11 SP1 及以上版本,CPU 固件版本 V1.02 及以上版本。
二.測試條件
硬件:CPU 1214C(DC/DC/DC) V4.5 ,電腦(ModSim32 調試軟件);
軟件:TIA PORTAL STEP 7 V17
實驗:S7-1200 作 Modbus TCP 客戶機,用功能碼 3 對調試軟件先進行讀取地址 40001 開始的 2 個字,然后用功能碼 16 對地址 40003 開始的 2 個字進行寫入。
三.組態配置
1. S7-1200 的 IP 地址192.168.1.42,如圖 1 所示。
圖 1. IP 地址設置
2. ModSim32 調試軟件設置
服務器采用 ModSim32 軟件測試,首先將測試電腦的 IP 地址設置成192.168.1.201,如圖 2 所示。
圖 2. 電腦的 IP 地址
打開 ModSim32 軟件,然后通過 “File”>"New",新建設置 03 地址區、起始地址 40001、長度 4、設備 ID 255 等,如圖 3 所示。
圖 3. ModSim32 調試軟件的從站設置
在“Connection”中選擇“Modbus/TCP Svr”,設置本地服務器端口號為 502,如圖 4 所示。
圖 4. 連接設置
四.編程
1. 新建 FB
如圖 5 所示,新建 FB,命名為 Comm,在靜態變量中增加參數。
圖 5. 設置 FB 參數
參數含義參見表 1:
表 1. FB 接口參數含義
參數 | 含義 |
---|---|
statStep | 步驟號 |
instClient | MB_CLIENT 多重背景 |
statReq | MB_CLIENT 的實參,程序中會在需要時修改其值 |
statMode | |
statAddr | |
statLen | |
statPtr | |
statConn | 連接參數,具體含義參見鏈接文檔 |
statRead | 讀取到的數據 |
statWrite | 待寫入的數據 |
2. 編寫輪循功能
如圖 6 所示,例子中使用 SCL 的 CASE OF 方式編寫輪詢程序,SCL 的 CASE OF 指令編寫順控可以參考鏈接:文檔。
思路如下:
步驟 0:等待連接建立,當連接建立則跳轉到步驟 1。
步驟 1:設置讀取參數,觸發讀取,當讀取正常后,將讀取到的數據存入指定數據區,然后跳轉到步驟 2,如果故障則跳轉到步驟 100。
步驟 2:設置寫入參數,將待寫入數據送入指定區域,觸發寫入,當寫入正常后,跳轉到步驟 1,如果故障則跳轉到步驟 100。
步驟 100:當故障消失,則跳轉到步驟 0。
如果有更多的讀寫需要,可以建立更多的步驟。
以下程序的源文件壓縮包鏈接:源文件。將壓縮包下載解壓縮后,得到文件“Comm.scl”,然后在 TIA Portal 項目中導入即可使用,導入源文件方式參見鏈接:文檔。
以下例程僅供參考。讀者如欲采納,風險自擔。
圖 6. 例子程序
3. 在主程序中調用該 FB,如圖 7 所示。
圖 7. 調用程序
五.通訊測試
對 FB 背景數據塊與 Modsim32 軟件進行監視,如圖 8 所示。
圖 8. 測試結果
注意:
如果需要更多的讀寫任務可以按照例子自行添加。
ModSim32 是做 Modbus RTU 從站以及 Modbus TCP 服務器的測試軟件,是第三方軟件,可以從網絡上下載。
方法二特例輪循處理的操作
一.軟硬件要求
MB_Client 指令的使用要求:軟件 V11 SP1 及以上版本,CPU 固件版本 V1.02 及以上版本。
二.測試條件
硬件:CPU 1214C(DC/DC/DC) V4.5 ,電腦(ModSim32 調試軟件);
軟件:TIA PORTAL STEP 7 V17
實驗:S7-1200 作 Modbus TCP 客戶機,用功能碼 3 對調試軟件先后進行讀取 ID 為 1 的 40001 開始的 2 個字以及 ID 為 2 的 40003 開始的 2 個字。
該實驗仿真讀取 Modbus TCP 轉 Modbus RTU 網關后的多個 Modbus RTU 從站數據的功能。
三.組態配置
1. CPU 硬件組態參考圖 1 的設置。
2. 電腦 IP 地址設置參考圖 2 的設置。
3. ModSim32通過 “File”>"New",新建 2 個文件,設置 03 地址區、起始地址 40001、長度 2、設備 ID 分別是 1 和 2,如圖 9 所示。然后參考圖 4 進行連接設置。
圖 9. ModSim32 的設置
四.編程
1. 新建 FB
如圖 10 所示,新建 FB,命名為 CommUnitId,在靜態變量中增加參數。
圖 10. 設置 FB 參數
參數含義參見表 2:
表 2. FB 接口參數含義
參數 | 含義 |
---|---|
statStep | 步驟號 |
instClient | MB_CLIENT 多重背景 |
statReq | MB_CLIENT 的實參,程序中會在需要時修改其值 |
statMode | |
statAddr | |
statLen | |
statPtr | |
statConn | 連接參數,具體含義參見鏈接文檔 |
statRead1 | 1 號站讀取到的數據 |
statRead2 | 2 號站讀取到的數據 |
2. 編寫輪循功能
如圖 11 所示,例子中使用 SCL 的 CASE OF 方式編寫輪詢程序,SCL 的 CASE OF 指令編寫順控可以參考鏈接:文檔。
思路如下:
步驟 0:等待連接建立,當連接建立則跳轉到步驟 1。
步驟 1:設置讀取參數,設置 MB_Unit_ID = 1,觸發讀取,當讀取正常后,將讀取到的數據存入指定數據區,然后跳轉到步驟 2,如果故障同樣跳轉到步驟 2,如果連接中斷則跳轉到步驟 0。
步驟 2:設置讀取參數,設置 MB_Unit_ID = 2,觸發讀取,當讀取正常后,將讀取到的數據存入指定數據區,然后跳轉到步驟 1,如果故障同樣跳轉到步驟 1,如果連接中斷則跳轉到步驟 0。
如果有更多的讀寫需要,可以建立更多的步驟。
以下程序的源文件壓縮包鏈接:源文件。將壓縮包下載解壓縮后,得到文件“CommUnitId.scl”,然后在 TIA Portal 項目中導入即可使用,導入源文件方式參見鏈接:文檔。
以下例程僅供參考。讀者如欲采納,風險自擔。
圖 11. 例子程序
3. 在主程序中調用該 FB,如圖 12 所示。
圖 12. 調用程序
五.通訊測試
通訊結果如圖 13 所示。
圖 13. 測試結果
審核編輯:湯梓紅
-
通信
+關注
關注
18文章
6036瀏覽量
136082 -
MODBUS
+關注
關注
28文章
1810瀏覽量
77063 -
TCP
+關注
關注
8文章
1362瀏覽量
79112 -
RTU
+關注
關注
0文章
414瀏覽量
28691 -
S7-1200
+關注
關注
11文章
331瀏覽量
17998
原文標題:S7-1200 MODBUS TCP 通信多請求處理
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論