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