淺談PLC通信中的TCPIP的連接和斷開
在PLC通信中,TCP/IP是大家普遍選擇的協議,因為它是開放的以太網協議,不僅僅在西門子內部的設備之間可以使用,也可以在與第三方的設備之間進行廣泛的通信。其中原因還包含TCP/IP是面向連接的,可靠的通信服務協議。
對于面向連接,表示通信是需要建立連接的,那么必然會對應斷開連接,早期的300/400PLC我們會在NetPro中進行組態TCP的連接,這屬于靜態鏈接,不能通過程序斷開TCP/IP的連接。而對于新的PN CPU,例如S7-1500CPU,則可以使用T_CON和T_DISCON分別來動態的建立和斷開連接,實現靈活的TCP通信。
使用T_CON建立連接就是TCP通信的3次握手,通過Wireshark抓包是可以看見三次握手的過程,但這是大家看到的外在表象,實際上通過T_CON是先建立了TCP的通信資源,然后通過該通信資源與對方建立三次握手的連接。下圖的wireshark中的1507,1509,以及1510是TCP的3次握手過程,在這三次握手中,通信雙方協商了Widow Size和MSS的大小,即滑動窗口和TCP的Zui大分節長度。PLC中的TCP/IP的三次握手與標準的TCP/IP協議的三次握手形式相同。
使用T_DISCON程序功能塊是用于斷開連接的,然而與標準的TCP/IP通信的4次揮手是不同的,本質上是報文中的標志字段標志位不同,標準的TCP/IP的4次揮手字段標志位使用FIN,即Finish用來結束此連接,但是資源沒有釋放。而PLC中TCP的斷開連接,并不是真的用于斷開連接,而是釋放通信資源,真正的邏輯是因為釋放資源,所以連接斷開。所以這和標準的TCP的4次揮手完全不同,而是使用字段標志位RST,即Reset來釋放連接資源。通過Wireshark抓包來觀察斷開連接的過程。上圖中的1797,是客戶端使用T_DISCON的斷開連接的過程,客戶端通知服務器已釋放該TCP的通信資源,連接斷開。
下圖中的2012,是服務器端使用T_DISCON的斷開連接的過程,通知客戶端已釋放該TCP的通信資源,連接斷開。2089,2197表示客戶端嘗試繼續與服務器建立連接,然而服務器通知客戶端,2198通信資源釋放,連接斷開。
那么為什么斷開連接,PLC不能參考標準TCP的4次揮手呢?我想原因有兩點,第一點是資源釋放,有利于靈活的編程,例如,PLC A與其中一臺PLC B斷開連接,資源釋放,利用釋放的資源,與PLC C建立連接進行通信;第二點就是標準的4次揮手期間,數據仍然是可以交互的,對于工業環境來說,數據安全是有要求的,所以使用釋放資源的方式,防止連接斷開繼續有數據交互,避免不必要的編程錯誤。
- 怎樣讀出西門子SMC卡中的程序 2024-11-22
- 西門子PROFINET故障診斷-煙廠 2024-11-22
- 西門子PROFINET故障診斷-汽車廠 2024-11-22
- 西門子博途V16添加新硬件遇到的問題 2024-11-22
- 西門子PLC接地總原則及S7-300 CPU的接地方法 2024-11-22
- 西門子S7-300 CPU的接地方法總則 2024-11-22
- 西門子交換機的工作原理 2024-11-22
- 西門子S7-200 SMART多泵輪換功能庫 2024-11-22
- 西門子S7-200 SMART在水肥一體機中的應用 2024-11-22
- 西門子S7-200 SMART基本控制庫之輸出范圍限制 2024-11-22
- 西門子S7-200 SMART基本控制庫之多路復用器 2024-11-22
- 西門子S7-200 SMART基本控制庫之IO調整功能 2024-11-22
- 西門子S7-200 SMART基本控制庫之量程轉換 2024-11-22
- 西門子S7-200 SMART基本控制庫之數字量信號 2024-11-22
- 西門子S7-200 SMART基本控制庫之三位執行器 2024-11-22
聯系方式
- 電 話:13510737515
- 聯系人:董海波
- 手 機:13185520415
- 微 信:13185520415