一、簡介
S7Comm(S7 Communication)是西門子專有的協議,是西門子S7通訊協議簇裡的一種。
S7通訊協議是西門子S7系列PLC內部整合的一種通訊協議,是S7系列PLC的精髓所在。 它是一種執行在傳輸層之上的(會話層/表示層/應用層)、經過特殊最佳化的通訊協議,其資訊傳輸可以基於MPI網路、PROFIBUS網路或者乙太網
S7在TCP連線上後還需要進行兩次握手
S7協議的TCP/IP實現依賴於面向塊的ISO傳輸服務。S7協議被封裝在TPKT和ISO-COTP協議中,這使得PDU(協議資料單元)能夠透過TCP傳送。
可以下載Wireshark抓包工具進行抓包看詳細的傳送報文格式
二、第一次握手
當PDU型別為0x0E(CR Connect Request連線請求)的時候報文格式為
TPKT協議結構
COTP連線包的結構
第一次握手傳送返回位元組格式
支援的PUD型別
引數程式碼TPDU-Size
三、第二次握手
當PDU型別為0xF0(DT Data,資料傳輸)的時候報文格式為
COTP功能包的格式
S7Comm協議結構
第二次握手傳送返回位元組格式
ROSCTR型別
四、資料讀取/寫入報文格式
S7協議的地址(偏移量)是按照位來運算的,因此需要地址值乘以8。 地址的三個位元組範圍為0x000000~0x08FFFF
比如M30000,實際地址就是30000*8=240000,然後轉化為3個位元組。 240000=0x03A980,對應三個位元組【03 A9
80】 比如DB21234.40000 其中DB號21234為0x52F2,DB編號對應兩個位元組【52 F2】
偏移量(地址)40000乘以8就是320000,也就是0x04E200,對應三個位元組【04 E2 00】
功能碼
區域型別
SyntaxID型別
PLC區域型別塊
1 Merker: [M]任意標記變數或標誌暫存器駐留在這裡。
2
3 Data Block: [DB] DB區域是儲存裝置不同功能所需資料的最常見位置,這些資料塊編號為地址的一部分。
4
5 Input: [I]數字和模擬輸入模組值,對映到儲存器。
6
7 Output: [Q]類似的儲存器對映輸出。
8
9 Counter: PLC程式使用的不同計數器的[C]值。
10
11 Timer: PLC程式使用的不同定時器的[T]值。
西門子不通區域地址型別以及範圍