西门子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步-通訊請求”而直接發送交換數據報文,則服務端會將連接斷開。
轉載于:https://www.cnblogs.com/wllgo/p/11512150.html
總結
以上是生活随笔為你收集整理的西门子S7以太网通讯协议的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DK云网关与普通DTU之间的区别
- 下一篇: Bootstrap4默认样式不对胃口?教