Enthip/IP_ CIP報文格式
測試Demo在文章末尾
注冊請求幀:
0x65 0x00 注冊請求命令 2byte
0x04,0x00 header長度2byte < 封裝頭>
0x00,0x00,0x00,0x00 會話句柄 4byte()
0x00,0x00,0x00,0x00 狀態默認0 4byte
0x00, 0x00, 0x00,0x00,0x00,0x00,0x00,0x00 發送方描述 默認0 8byte
0x00,0x00,0x00,0x00選項默認0 4byte
0x01,0x00 協議版本
0x00,0x00 選項標記
注冊請求幀發送實例:
65 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
注冊應答幀:
0x65,0x00,命令 2byte
0x04,0x00, CommandSpecificData的長度 2byte
0x6B,0x01,0x01,0x00,會話句柄 4byte 由PLC生成
0x00,0x00,0x00,0x00,狀態默認0 4byte 狀態字段
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,發送方描述默認0 8byte
0x00,0x00,0x00,0x00,選項默認0 4byte
0x01,0x00,協議版本 2byte
0x00,0x00,選項標記 2byte
注冊請求幀接收實例:
65 00 04 00 71 01 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
(提取會話句柄或者會話ID 71 01 0E 00)
狀態字段
************讀取信息報文幀 EtherNet/ip *************************
PLC標簽:TAG1
讀取報文:
6F 00 28 00 70 01 27 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 00 00 00 00 B2 00 18 00 52 02 20 06 24 01 0A F0 0A 00 4C 03 91 04 54 41 47 31 01 00 01 00 01 00
下面是解析:
6F 00 命令碼
28 00 后面報文長度 指:( 00 00 00 00 01 00 02 00 00 00 00 00 B2 00 18 00 52 02 20 06 24 01 0A F0 0A 00 4C 03 91 04 54 41 47 31 01 00 01 00 01 00
)
70 01 27 00 會話句柄
00 00 00 00 狀態,初始值 0 狀態好
00 00 00 00 00 00 00 00 發送方描述
00 00 00 00 選項默認
以上是封裝頭Header(6F 00 28 00 70 01 27 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00)
以下是特別命令數據:
00 00 00 00:接口句柄 00 00 00 00 代表CIP
01 00 超時
02 00項數
00 00 空地址項
00 00 空地址項長度
B2 00 未連接項 默認
18 00 CIP報文包的長度(52 02 20 06 24 01 0A F0 0A 00 4C 03 91 04 54 41 47 31 01 00 01 00 01 00)
52命令
02請求路徑長度
20 06 24 01默認請求路徑
0A F0 0A 00默認超時
4C服務標識
03 CIP長度多少字(91 04 54 41 47 31)
91固定
04PLC標簽長度 多少個字節
01 00讀取長度
01 00 01 00 槽號
返回報文幀解析
6F 00 18 00 71 01 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 封裝頭
00 00 00 00 01 00 02 00 00 00 00 00 B2 00 08 00 CC 00 00 00 C1 00 00 00 特定命令數據
6F 00 命令
18 00 長度 (總長度 -封裝頭長度 )
71 01 14 00 會話句柄(會話ID)
00 00 00 00 會話狀態
00 00 00 00 00 00 00 00 發送方描述 固定
00 00 00 00 選項 默認
命令特定數據
00 00 00 00 接口句柄 ,00000000 指CIP
01 00 超時
02 00 項數 默認2
00 00 連接的地址項
00 00 連接地址項長度
B2 00 未連接數據項
08 00 連接長度
CC 服務標識
00 填充字節
00 00 狀態
C1 00 數據類型 BOOL (0x00C3(195) 為整型,0x00CA(202)為實型, 0x00C1(193)為布爾型,long 型為0x00C4,BYTE為0x00C2 )
00 00 數據值
網絡調試助手發送數據歷史記錄
[2019-12-03 15:33:31.560]# SEND HEX> 注冊會話 PC=>PLC
65 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
[2019-12-03 15:33:31.564]# RECV HEX> 返回會話句柄 PLC=>PC
65 00 04 00 70 01 0D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
[2019-12-03 15:34:08.745]# SEND HEX> PC=>PLC讀取
6F 00 28 00 70 01 0D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 00 00 00 00 B2 00 18 00 52 02 20 06 24 01 0A F0 0A 00 4C 03 91 04 54 41 47 31 01 00 01 00 01 00
[2019-12-03 15:34:08.751]# RECV HEX> plc=>PC返回
6F 00 18 00 70 01 0D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 00 00 00 00 B2 00 08 00 CC 00 00 00 C1 00 00 00
注釋:C1 00 _BOOL 00 00_數據,true的情況下=01 00
寫單個標簽
在寫單個標簽之前 ,需要注冊會話,獲取會話句柄 ,之后進行寫入命令
下面是寫入單標簽完整報文幀 :
6f 00 2c 00 71 01 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 00 00 00 00 b2 00 1c 00 52 02 20 06 24 01 0a f0 0e 00 4d 03 91 04 54 41 47 31 c1 00 01 00 00 00 01 00 01 00
解析:
=>Header封裝頭:6f 00 2c 00 71 01 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
命令特定數據:
00 00 00 00 01 00 02 00 00 00 00 00 b2 00 1c 00 52 02 20 06 24 01 0a f0 0e 00 4d 03 91 04 54 41 47 31 c1 00 01 00 00 00 01 00 01 00
6F 00 :命令碼
2C 00 :長度(去除header后報文長度 字節為單位)
71 01 14 00 :會話句柄
00 00 00 00 :會話狀態
00 00 00 00 00 00 00 00 :發送方描述 固定
00 00 00 00 :選項 默認
00 00 00 00 :接口句柄 ( 00 00 00 00 指CIP)
01 00 :超時
02 00 項數 默認2
00 00 空地址項 默認
00 00 空地址項長度 默認
B2 00 未連接數據項 默認
1C 00:數據長度 指后面數據長度 (字節)
52 請求服務代碼
02 請求路徑長度
20 06 24 01 請求路徑 默認
0A F0 超時默認 245760ms
OE 00:長度 (從服務標識開始 到 寫入的值 結束 )
4D :服務標識
03 :長度(91 04 54 41 47 31 )
91:固定
04:標簽長度
54 41 47 31 :TAG1(標簽名)
C1 00:數據類型 bool0x00C3(195) 為整型,0x00CA(202)為實型,0x00C1(193)為布爾型,long 型為0x00C4,BYTE為0x00C2
01 00:寫入數量
00 00 :寫入的值 false:0 TRUE:任意非0數
01 00 01 00 PLC槽號
返回報文:
6f 00 14 00 71 01 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 01 00 02 00 00 00 00 00 b2 00 04 00 cd 00 00 00
解析:
71 01 14 00:會話句柄
B2 00:未連接數據項 默認
CD:服務標識(寫)固定
00:填充字節
0000:狀態、 成功
單標簽寫入,調試軟件調試記錄:
[2019-12-03 17:08:09.346]# SEND HEX> 注冊會話
65 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
[2019-12-03 17:08:09.353]# RECV HEX> 返回會話句柄
65 00 04 00 70 01 21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
[2019-12-03 17:08:42.352]# SEND HEX> 標簽TAG1 寫入0
6F 00 2C 00 70 01 21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 00 00 00 00 B2 00 1C 00 52 02 20 06 24 01 0A F0 0E 00 4D 03 91 04 54 41 47 31 C1 00 01 00 00 00 01 00 01 00
[2019-12-03 17:08:42.357]# RECV HEX> 寫0結果返回
6F 00 14 00 70 01 21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 00 00 00 00 B2 00 04 00 CD 00 00 00
[2019-12-03 17:08:55.840]# SEND HEX> 寫1
6F 00 2C 00 70 01 21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 00 00 00 00 B2 00 1C 00 52 02 20 06 24 01 0A F0 0E 00 4D 03 91 04 54 41 47 31 C1 00 01 00 FF FF 01 00 01 00
[2019-12-03 17:08:55.845]# RECV HEX> 寫1結果
6F 00 14 00 70 01 21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 00 00 00 00 B2 00 04 00 CD 00 00 00
[2019-12-03 17:09:11.630]# SEND HEX>寫1
6F 00 2C 00 70 01 21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 00 00 00 00 B2 00 1C 00 52 02 20 06 24 01 0A F0 0E 00 4D 03 91 04 54 41 47 31 C1 00 01 00 01 00 01 00 01 00
[2019-12-03 17:09:11.639]# RECV HEX> 寫1結果
6F 00 14 00 70 01 21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 00 00 00 00 B2 00 04 00 CD 00 00 00
多標簽讀取
參考單標簽的 報文幀
讀取TAG1 和TAG2
54 41 47 31 TAG1
54 41 47 32 TAG2
[2019-12-03 17:55:55.741]# SEND HEX>
6F 00 3E 00 70 01 27 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 00 00 00 00 B2 00 2E 00 52 02 20 06 24 01 0A F0 20 00 0A 02 20 02 24 01 02 00 06 00 10 00 4C 03 91 04 54 41 47 31 01 00 4C 03 91 04 54 41 47 32 01 00 01 00 01 00
[2019-12-03 17:55:55.847]# RECV HEX>
6F 00 2A 00 70 01 27 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 00 00 00 00 B2 00 1A 00 8A 00 00 00 02 00 06 00 0E 00 CC 00 00 00 C1 00 01 00 CC 00 00 00 C1 00 01 00
注銷會話
注銷會話報文是沒有返回值的
[2019-12-05 12:27:18.253]# SEND HEX> 注冊會話
65 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
[2019-12-05 12:27:18.256]# RECV HEX> 返回會話句柄
65 00 04 00 71 01 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
[2019-12-05 12:27:42.889]# SEND HEX> 注銷會話
66 00 00 00 71 01 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
66 00 :命令
00 00 :長度
71 01 04 00:要注銷的會話句柄
00 00 00 00 狀態 默認0
00 00 00 00 00 00 00 00:發送內容 默認0
00 00 00 00: 選項 默認0
水平有限 ,有錯誤之處 ,多多包涵,意見或建議,請留言!
測試Demo
鏈接:https://pan.baidu.com/s/1_niradiIAOPXUNV-k-PS9w
提取碼:9mc6