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