EtherNet/IP---3报文解析

目录

1、下面是EtherNet/IP首部中封装的CIP帧字段:

2、示例


1、下面是EtherNet/IP首部中封装的CIP帧字段:

  • Command

两字节整数,对应一个CIP命令。CPI标准要求,设备必须能接收无法识别的命令字段,并处理这种异常。

  • Length

两字节整数,代表数据包中数据部分的长度。对于没有数据部分的请求报文,该字段为0。

  • Session Handle

会话句柄(session handle)由目标设备生成,并返回给会话的发起者。该句柄将用于后续与目标设备的通信。

  • Status

Status字段存储了目标设备执行命令返回的状态码。状态码“0”代表命令执行成功。所有的请求报文中,状态码被置为“0”。其它的状态码还包括:

- 0x0001无效或不受支持的命令

- 0x0002目标设备资源不足,无法处理命令

- 0x0003数据格式不正确或数据不正确

- 0x0065接收到无效的数据长度

  • Sender Context

命令的发送者生成这六字节值,接收方将原封不动的返回该值。

  • Options

该值必须始终为0,如果不为零,数据包将被丢弃。

  • Command-specific data

该字段根据接收/发送的命令进行修改。

如果请求发送方是工程师站,大多数会话中执行的第一条命令是“List Identity”命令。如下所示的数据包,命令字段是0x63,代表“List Identity”命令,上下文是“0x00006a0ebe64”。这个命令与Modbus功能码43非常相似,可以查询设备信息,如供应商、产品、序列号、产品代码、设备类型和版本号等。

2、示例

EtherNet/IP通常通过TCP/UDP端口44818运行。此外,EtherNet/IP还有另一个端口 TCP/UDP端口2222。使用这个端口的原因是 EtherNet/IP实现了隐式和显示两种消息传递方式。显式消息被称为客户端/服务器消息,而隐式消息通常被称为I/O消息。

TCP建立连接:

报文为四层

建立EIP会话:

多了一层封装层,注册EIP

CIP未连接信息的收发:

多了一层CIP协议层和CIP连接管理层 ,send RR data即Request/Response类型数据

使用连接管理器对象的ForwardOpen Request服务建立连接。ForwardOpen Request包含所有连接参数,包括传输类、生产触发器、定时信息、电子密钥和连接ID。当发出ForwardClose Request服务请求或任一连接端点超时时,将进行连接清理。

上面使用的都是TCP协议的44818端口

下面使用UDP协议的2222端口进行IO数据的收发

CIP IO数据的收发:

O->T:实例号为0x97=151,0x96=150,0x64=100(LED)

T->O:LED

O->T:实例号为0x97=151,0xee=238,0x65=101(SW)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值