西門子S7以太網通訊協議


S7以太網協議屬於TCP/IP協議族的一種,下圖為S7以太網協議在ISO-OSI參考模型中的位置。

 

通過WireShark抓包,可以看出S7以太網協議的模型:

 

 

ISO-OSI參考模型、TCP/IP模型及S7以太網協議模型對比

ISO-OSI參考模型

TCP/IP模型

S7以太網協議模型

7-應用層

4-應用層

6-S7  Communication

6-表示層

5-  COTP(TSAP)

RFC1006

5-會話層

4-TPKT

4-傳輸層

3-傳輸層

3-TCP(102端口)

3-網絡層

2-網絡互連層

2-IP

2-數據鏈路層

1-網絡接口層

1-工業以太網

1-物理層

第5層(相對於ISO-OSI參考模型):TPKT(ISO Transport Service ontop of the TCP/ ISO傳輸服務通過TCP),介於TCP和COTP協議之間。這是一個傳輸服務協議,主要用來在COTP和TCP之間建立橋梁,包含了上層協議數據包的長度。

 

第6層(相對於ISO-OSI參考模型):COTP(Connection OrientedTransport Protocol/面向連接的傳輸協議),比較TCP與COTP兩種協議,因為它們都是用於通過網絡可靠地傳輸用戶數據,基於數據流的與基於數據包的:COTP將數據包從一個用戶傳輸到另一個用戶,所以接收者將獲得與發送者傳輸完全相同的數據邊界。TCP將連續的數據流傳輸到接收器,因此TCP上的協議通常必須自己添加這樣的邊界(如TPKT協議)。

為了復用客戶端和服務端之間的幾個會話,COTP使用了TSAP(傳輸服務訪問點),TSAP為2個字節,通常使用一個有意義的字符串。TSAP的第2個字節由機架號+插槽號組成,插槽號在0-4Bit機架號在5-7Bit。這些TSAP在連接建立階段被匹配,並且在數據傳輸時由2字節(目標/源)參考代替。

下圖示例為SIMATIC NET OPC與S7-200 SMART PLC 通過S7以太網協議通訊的COTP TSAP設置值

通過WireShark抓包,COTP的連接報文如下:

 

為什么要使用RFC 1006 協議擴展

RFCs(Request for Comments) 是一些技術類文檔, 內容包括針對-例如以太網結構,協議的設計,email 報文頭設計等等進行了詳細的描述。 RFC 1006 中的“ISO Transport Service on top of theTCP(TPKT)”(ISO傳輸服務通過TCP)是TCP協議的一種擴展。這意味着除了TCP數據,在通訊雙方之間還可以提供特殊的傳輸服務(ISO服務)。

當數據使用TCP協議進行傳輸時,傳輸工作聚焦在數據流上。因此沒有關於數據長度或者數據起始以及終止的信息。這對於發送方沒有問題,因為它知道所要發送的字節數。但對於接收方來講,它無法知道該信息什么時候開始,什么時候結束,以及下一條信息什么時候被發送。
在許多自動化應用中,必須要關注工作信息。信息塊通過一個連接由發送方發出,其完整性由接收方進行確認。為了進行這樣的確認,RFC1006規定了在數據前面必須要加上報文頭。RFC1006因此提供了這樣一種應用,及根據TCP協議建立數據流,但面向消息進行傳輸。

第7層(相對於ISO-OSI參考模型)S7 Communication應用協議(協議ID=0x32),包含三部分:1-Header;2-Parameter;3-Data。根據功能(S7Comm.Parameter.Function )不同,S7 Communication協議的結構會有所不同。例如,請求數據報文只包含前兩部分。

應答數據報文為3部分包括數據Data 段

S7Communication應用協議中Parameter.Function的取值對應的功能如下表:

下圖為S7以太網通訊客戶端從建立TCP連接到讀取到服務端數據的整個過程

1.握手

當客戶端192.168.1.101與服務端192.168.1.200通過Socket建立連接時,會進行“三次握手”,這是標准的TCP連接方式,這個過程會由Socket自動完成;

2.通訊請求

在“握手”之后,並不能馬上進行數據交換,還需要“通訊請求”過程。

這個過程包含兩次報文交換:

  • 客戶端發送COTP報文給服務端,在COTP報文中包含“連接請求”和“Destination TSAP”,以明確CPU的機架號和槽號;服務端應答COTP報文,包含“連接確認”;這樣服務端就清楚了客戶端需要和哪個CPU來進行數據通訊;

  • 客戶端發送S7 Communicaton報文給服務端,在S7Communicaton報文中包含“通訊請求”; 服務端反饋S7 Communicaton報文。

  • 交換數據

通訊應用就在這個過程內完成,可以組織報文來實現需要的功能。這個過程內的報文是S7 communicaton,具體實現時,需要對S7協議中的第5、6、7層進行編程。

注意,如果不進行“第2步-通訊請求”而直接發送交換數據報文,則服務端會將連接斷開。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM