Siemens 西門子 S7協議及報文格式詳解

一杯清酒邀明月發表於2024-04-22

一、簡介
  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]值。

西門子不通區域地址型別以及範圍

相關文章