TCP協(xié)議通訊
TCP是一個(gè)因特網(wǎng)核心協(xié)議。在通過(guò)以太網(wǎng)通信的主機(jī)上運(yùn)行的應(yīng)用程序之間,TCP 提供了可靠、有序并能夠進(jìn)行錯(cuò)誤校驗(yàn)的消息發(fā)送功能。TCP 能保證接收和發(fā)送的所有字節(jié)內(nèi)容和順序完全相同。TCP 協(xié)議在主動(dòng)設(shè)備(發(fā)起連接的設(shè)備)和被動(dòng)設(shè)備(接受連接的設(shè)備)之間創(chuàng)建連接。一旦連接建立,任一方均可發(fā)起數(shù)據(jù)傳送。
TCP協(xié)議是一種"流"協(xié)議。這意味著消息中不存在結(jié)束標(biāo)志。所有接收到的消息均被認(rèn)為是數(shù)據(jù)流的一部分。
S7 200 SMART與之間的TCP通訊可以通過(guò)兩邊調(diào)用OUC(開(kāi)放式用戶通訊)指令庫(kù)中的TCP_CONNECT、TCP_SEND、TCP_RECV、DISCONNECT指令來(lái)實(shí)現(xiàn)。
圖1.開(kāi)放式用戶通訊庫(kù)
開(kāi)放式用戶通信庫(kù)需要使用 50 個(gè)字節(jié)的 V 存儲(chǔ)器。
開(kāi)放式的用戶通訊連接資源包括8個(gè)主動(dòng)連接和8個(gè)被動(dòng)連接。
只可從主程序或中斷例程中調(diào)用庫(kù)函數(shù),但不可同時(shí)從這兩個(gè)程序中調(diào)用。
所需條件:
1、軟件版本:STEP 7-Micro/WIN SMART V2.2
2、SMART CPU固件版本:V2.2
3、通訊硬件:TP電纜(以太網(wǎng)電纜)
所完成的通訊任務(wù):
將作為客戶端的PLC(IP地址為192.168.0.101)中VB0-VB3的數(shù)據(jù)傳送到作為服務(wù)器端的PLC(IP地址為192.168.0.102)的VB2000-VB2003中。
S7-200 SMART 客戶端編程
1、設(shè)置本機(jī)IP地址
在客戶端設(shè)置IP地址為192.168.0.101
圖2.設(shè)置IP地址
2、建立TCP連接
調(diào)用TCP_CONNECT指令建立TCP連接。設(shè)置連接伙伴地址為192.168.0.102,遠(yuǎn)端端口為2001,本地端口為5000,連接標(biāo)識(shí)ID為1。利用SM0.0使能Active,設(shè)置為主動(dòng)連接。
圖3.調(diào)用TCP_CONNECT指令
指令的參數(shù)
輸入?yún)?shù):
EN :使能輸入
Req:沿觸發(fā)
Active :TURE=主動(dòng)連接(客戶端)
FALSE=被動(dòng)連接(服務(wù)器)
ConnID:連接ID為連接標(biāo)識(shí)符,可能范圍為0-65534。
IPaddr1 ... IPaddr4:IP 地址的四個(gè)八位字節(jié)。IPaddr1 是 IP 地址的最高有效字節(jié),IPaddr4 是 IP 地址的最低有效字節(jié)。
RemPort:遠(yuǎn)程設(shè)備上的端口號(hào)。遠(yuǎn)程端口號(hào)范圍為 1 到 49151。對(duì)于被動(dòng)連接,可使用零。
LocPort :本地設(shè)備端口號(hào)。范圍為1-49151,但是存在一些限制。
本地端口號(hào)的規(guī)則如下:
有效端口號(hào)范圍為 1 到 49151。
不能使用端口號(hào) 20、21、25、80、102、135、161、162、443以及34962至34964。這些端口具有特定用途。
建議采用的端口號(hào)范圍為 2000 到 5000。
對(duì)于被動(dòng)連接,本地端口號(hào)必須唯一(不重復(fù))。
輸出參數(shù):
Done:當(dāng)連接操作完成且沒(méi)有錯(cuò)誤時(shí),指令置位 Done 輸出。
Busy:當(dāng)連接操作正在進(jìn)行時(shí),指令置位 Busy 輸出。
Error:當(dāng)連接操作完成但發(fā)生錯(cuò)誤時(shí),指令置位 Error 輸出。
Status:如果指令置位 Error 輸出,Status 輸出會(huì)顯示錯(cuò)誤代碼。具體錯(cuò)誤代碼對(duì)應(yīng)詳見(jiàn)手冊(cè)。如果指令置位 Busy 或 Done 輸出,Status 為零(無(wú)錯(cuò)誤)。
3、調(diào)用發(fā)送數(shù)據(jù)指令TCP_SEND
調(diào)用TCP_SEND指令發(fā)送以VB0為起始,數(shù)據(jù)長(zhǎng)度為DataLen長(zhǎng)度的數(shù)據(jù)發(fā)送到連接ID為1指定的遠(yuǎn)程設(shè)備。
利用1HZ的時(shí)鐘上升沿觸發(fā)發(fā)送請(qǐng)求。
圖4.調(diào)用TCP_SEND指令
指令的參數(shù)
輸入?yún)?shù):
EN :使能輸入
Req:沿觸發(fā)
ConnID:連接 ID (ConnID) 是此發(fā)送操作的連接ID號(hào)。
DataLen :DataLen 是要發(fā)送的字節(jié)數(shù)(1 到 1024)。
DataPtr:DataPtr 是指向待發(fā)送數(shù)據(jù)的指針。
輸出參數(shù):
Done:當(dāng)連接操作完成且沒(méi)有錯(cuò)誤時(shí),指令置位 Done 輸出。
Busy:當(dāng)連接操作正在進(jìn)行時(shí),指令置位 Busy 輸出。
Error:當(dāng)連接操作完成但發(fā)生錯(cuò)誤時(shí),指令置位 Error 輸出。
Status:如果指令置位 Error 輸出,Status 輸出會(huì)顯示錯(cuò)誤代碼。具體錯(cuò)誤代碼對(duì)應(yīng)詳見(jiàn)手冊(cè)。如果指令置位 Busy 或 Done 輸出,Status 為零(無(wú)錯(cuò)誤)。
4、終止通訊連接
用戶可通過(guò)DISCONNECT指令終止指定ID的連接。
圖5.調(diào)用DISCONNECT指令
參數(shù)說(shuō)明:
輸入?yún)?shù):
EN :使能
Req:沿觸發(fā)指令。
輸出參數(shù):
Done:當(dāng)連接操作完成且沒(méi)有錯(cuò)誤時(shí),指令置位 Done 輸出。
Busy:當(dāng)連接操作正在進(jìn)行時(shí),指令置位 Busy 輸出。
Error:當(dāng)連接操作完成但發(fā)生錯(cuò)誤時(shí),指令置位 Error 輸出。
Status:如果指令置位 Error 輸出,Status 輸出會(huì)顯示錯(cuò)誤代碼。具體錯(cuò)誤代碼對(duì)應(yīng)詳見(jiàn)手冊(cè)。如果指令置位 Busy 或 Done 輸出,Status 為零(無(wú)錯(cuò)誤)。
5、分配庫(kù)存儲(chǔ)區(qū)
開(kāi)放式用戶通信庫(kù)需要使用 50 個(gè)字節(jié)的 V 存儲(chǔ)器,用戶需手動(dòng)分配 。在指令樹(shù)的程序中,以鼠標(biāo)右鍵單擊程序塊,在彈出的快捷菜單中選擇庫(kù)存儲(chǔ)器。如圖所示:
圖6.庫(kù)存儲(chǔ)器
在彈出的選項(xiàng)卡中設(shè)置庫(kù)指令數(shù)據(jù)區(qū):
圖7.分配地址
S7-200 SMART 服務(wù)器端編程
1、設(shè)置本機(jī)IP地址
設(shè)置IP地址為192.168.0.102
圖8.設(shè)置本機(jī)IP地址
2、建立TCP連接
調(diào)用TCP_CONNECT指令建立TCP連接。設(shè)置連接伙伴地址為192.168.0.101,遠(yuǎn)端端口為5000,本地端口為2001,連接標(biāo)識(shí)ID為1。利用SM0.0常閉點(diǎn)使能Active,設(shè)置為被動(dòng)連接。
圖9.調(diào)用TCP_CONNECT指令
3、接收數(shù)據(jù)
調(diào)用TCP_RECV指令接收指定ID連接的的數(shù)據(jù)。接收的緩沖區(qū)長(zhǎng)度為MaxLen,數(shù)據(jù)接收緩沖區(qū)以VB2000為起始。
圖11.調(diào)用TCP_RECV指令
監(jiān)控結(jié)果
其中客戶端的VW1000是發(fā)送的數(shù)據(jù)長(zhǎng)度,服務(wù)器端的vw1000是接收的數(shù)據(jù)長(zhǎng)度。
圖12.監(jiān)控結(jié)果
審核編輯:郭婷
-
以太網(wǎng)
+關(guān)注
關(guān)注
40文章
5343瀏覽量
170814 -
TCP
+關(guān)注
關(guān)注
8文章
1347瀏覽量
78934
原文標(biāo)題:S7-200 SMART之間TCP通信例程
文章出處:【微信號(hào):gh_a8b121171b08,微信公眾號(hào):機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論