S7-1200 MODBUS TCP通信多請求處理
S7-1200 MODBUS TCP通信多請求處理
單獨的客戶機(jī)連接需要遵循的規(guī)則:
1.每個“MB_CLIENT”連接需要使用一個不同的背景數(shù)據(jù)塊;
2.每個“MB_CLIENT”連接必須指定一個服務(wù)器IP地址;
3.每個“MB_CLIENT”連接必須指定一個唯一的連接ID;
4.是否需要唯一的IP端口號取決于服務(wù)器組態(tài);
連接ID和背景數(shù)據(jù)塊組合成對,對每個連接來說,組合對都是唯一的。
對于多請求處理,有兩種方法:
方法一:如果TCP連接充裕,可以建立多個不同的連接發(fā)送請求,即每個請求使用一個獨立的連接,調(diào)用獨立的“MB_CLIENT”功能塊,具體操作參考“Modbus TCP”部分。
通過不同的連接發(fā)送多個請求,“MB_CLIENT”功能塊多次調(diào)用,但是需要使用不同的背景數(shù)據(jù)塊,不同的ID號和不同的端口號。
方法二:通過公共的連接發(fā)送多個請求。
通過公共的連接發(fā)送多個請求,“MB_CLIENT”功能塊多次調(diào)用,但是需要使用相同的背景數(shù)據(jù)塊,連接ID號,IP地址和端口號。
在任意時間,只能有一個MB_CLIENT請求處于激活狀態(tài),在一個請求完成執(zhí)行后,下一個請求再開始執(zhí)行,輪循處理。
方法二特例:MODBUS TCP客戶端訪問網(wǎng)關(guān)后的多個MODBUS RTU從站
方法二輪循處理的操作
一.軟硬件要求
MB_Client/Server指令的使用要求:軟件 V11 SP1及以上版本,CPU固件版本V1.02及以上版本。
二.測試條件
硬件:CPU 1214C(DC/DC/DC) V4.4 ,電腦(ModSim32 調(diào)試軟件);
軟件:TIA PORTAL STEP 7 V16
實驗:S7-1200作Modbus TCP客戶機(jī),用FC03功能對調(diào)試軟件先后進(jìn)行讀取40001開始的2個字以及40003開始的2個字。
三.組態(tài)配置
1.S7-1200的IP地址192.168.1.218,將系統(tǒng)存儲器字節(jié)設(shè)置為MB1,如圖1所示,圖2所示。

圖1 IP地址設(shè)置

圖2 系統(tǒng)存儲器字節(jié)設(shè)置
2.ModSim32 調(diào)試軟件設(shè)置
服務(wù)器采用ModSim32 軟件測試,首先將測試電腦的IP地址設(shè)置成192.168.1.216,如圖3所示,打開ModSim32 軟件,在設(shè)置功能碼FC03、起始地址、長度、設(shè)備ID等,如圖4所示。

圖3 電腦的IP地址

圖4 ModSim32 調(diào)試軟件的從站設(shè)置
在“Connection”中選擇“Modbus/TCP Svr”,設(shè)置本地服務(wù)器端口號為502,如圖5所示。?

圖5 連接設(shè)置?
四.編程
1.新建數(shù)據(jù)塊
如圖6所示,新建DB,添加變量類型為TCON_IP_V4,設(shè)置InterfaceId,ID,ActiveEstablished,RemoteAddress,RemotePort等參數(shù),具體含義參見鏈接。

圖6 設(shè)置連接變量
如圖7所示,在DB中建立結(jié)構(gòu)數(shù)組,用于輪詢控制位以及數(shù)據(jù),其中元素0用于第一次讀取,元素1用于第二次讀取。Init用于初始標(biāo)志位。

圖7 輪詢數(shù)據(jù)
2.編寫輪循功能
1)如圖8所示,用“FirstScan”在第一次掃描中將初始標(biāo)志位置位。

圖8 初始化標(biāo)志位
2)如圖9所示,程序段2中,第二步的完成位或者錯誤位去置位第一步的使能位復(fù)位第二步的使能位,同時復(fù)位第二步的完成位、錯誤位、觸發(fā)的沿變量。
程序段3中,一般情況下是EN通過第一步的使能位使能,REQ通過使能位的上升沿觸發(fā),設(shè)置模式、讀取數(shù)據(jù)地址、長度、存儲地址、連接數(shù)據(jù)、完成、錯誤位等。此外需要考慮第一次觸發(fā)輪詢,可以使用手動觸發(fā),在這里使用初始化標(biāo)志位實現(xiàn)指令的第一次使能,去進(jìn)行CPU和調(diào)試軟件的TCP連接,使用Connected標(biāo)志位觸發(fā)第一次的REQ觸發(fā)。


圖9 請求1觸發(fā)
如圖10所示,程序段4中,第一步的完成位或者錯誤位去置位第二步的使能位復(fù)位第一步的使能位,同時復(fù)位第一步的完成位、錯誤位、觸發(fā)的沿變量,最后復(fù)位初始化標(biāo)志位,確保第一個MB_CLIENT不會一直接通。
程序段5中,EN通過第二步的使能位使能,REQ通過使能位的上升沿觸發(fā),設(shè)置模式、讀取數(shù)據(jù)地址、長度、存儲地址、連接數(shù)據(jù)、完成、錯誤位等。


圖10 請求2觸發(fā)
五.通訊測試
通訊結(jié)果如圖11 所示。

圖11 測試結(jié)果
注意:
1.如果需要更多的讀寫任務(wù)可以按照例子自行添加。2.ModSim32 是做 Modbus RTU從站以及Modbus TCP服務(wù)器的測試軟件,是第三方軟件,可以從網(wǎng)絡(luò)上下載。