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