DeviceNet应用解析

本文是关于DeviceNet协议的个人理解和整理,包括显式连接的建立、I/O信息传输、分段传输的详细解析,以及预定义主从连接的规则。DeviceNet是一个基于CAN网络的工业通讯协议,采用生产者-消费者模型,同时也支持主从模式。连接建立前需进行MAC ID的唯一性检测,显式信息传输和I/O信息基于显式连接,超长数据需通过分段传输完成。预定义主从连接简化了设备间的通讯配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       本文主要作为本人的知识整理以及笔记,包括对DeviceNet的一些个人理解,后续若发现错误欢迎指出。

        想要熟悉概念最好还是需要去看官方协议文档。DeviceNet最难的地方莫过于你看了协议之后,并不一定能理解它的报文,同时因为DeviceNet使用对象模型的方式,导致每个厂家有自己的设备对象表,而这个表是属于商业机密。因此,本文所用的例子仅仅为个人根据实际报文编造的数据,不涉及任何商业设备。 

        卷I: DeviceNet协议卷I

        卷II: DeviceNet协议卷II

        有关设备对象以及EDS说明需要参考卷II;

一、参考实例

        某设备的启动报文:

序号 CAN标识符(hex) 长度 数据
0 407 7         00  33  03  38  30  30  30
1 407 7 00  33  03  38  30  30  30
2 780 4 2a  4b  02  34
76a 6 00  cb  02  03  0a  00
3 700 8 2a  4b  03  00  01  00  02  00
6ea 3

00  cb  02

4 700 7 2a  0e  01  00  01  00  01
6ea 4 00  8e  33  03
5 700 7 2a  0e  01  00  01  00  02
6ea 4 00  8e  00  00
6 700 7 2a  0e  01  00  01  00  03
6ea 4 00  8e  01  00
7 700 8 aa  00  10  05  00  02  00  09
6ea 2 80  c0  00
8 700 3 aa  81  4b  00
6ea 3 80  c1  00
6ea 4 00  90  4c  00
9 700 7 2a  0e  05  00  02  00  07
6ea 4 00  8e  09  00
10 700 7 2a  0e  05  00  02  00  08
6ea 4 00  8e  05  00
11 780 4 2a  4c  0a  00
76a 2 00  cc

       某设备具有以下对象类(仅列举例子中所可能使用的项):

ID Object (Class1 0x01) 仅支持01h,05h,0Eh,10h服务
类属性
属性ID 访问权限 名称 数据类型 默认值
0x01 只读 类版本号 UINT 1
0x02 只读 最大实例数 UINT 1
0x03 只读 实例值 UINT 1
实例属性
属性ID 访问权限 名称 数据类型 默认值
0x01 只读 Vendor ID UINT 819
0x02 只读 DeviceType UINT 0x0C
0x03 只读 ProductCode UINT 0x01

DeviceNet Object(Class ID 0x03) 仅支持0Eh,10h,4Bh,4Ch服务
类属性
属性ID 访问权限 名称 数据类型 默认值
0x01 只读 前版本 UINT 1
实例属性
属性ID 访问权限 名称 数据类型 默认值
0x01 读/写 MAC ID USINT 63
0x02 读/写

Baud Rate

USINT 2
0x03 只读

Bus Off Interrupt

BOOL 0
0x04 读/写 Bus-Off Counter USINT 0
0x05 只读 Allocation Information

STRUCT of

BYTE/USINT

0~255
波特率 0 = 125K        1 = 250K        2 = 500K 

Connection Object(Class ID 0x05) 仅支持05h,0Eh,10h服务
实例(该类没有类属性)
实例ID 描述
0x01 Explicit Message Connection for pre-defined connection set
0x02 I/O Poll Connection
0x03 I/O Strobe Connection
0x04 I/O COS/CYC Connection
0x0A~0x0D Explicit Message Servers
0x14~0x15 Explicit Message Clients
实例属性
属性ID 访问权限 名称 数据类型 默认值
0x09 读/写 Expected Packet Rate UINT 定义连接定时器

        后续所有解析的数据,均来自于该设备的启动通信报文,如果涉及到其他例子,会单独举例。

二、DeviceNet连接

        DeviceNet是一个基于连接的网络系统,它主要以 ”生产者——消费者“ 的通信模型为主,同时它也支持 ”主——从“ 模型,以及点对点的模式。

        对于DeviceNet而言CANID非常重要,DeviceNet对于CANID进行了区域定义,用来区分网络中的设备以及设备中对应的模块,通常来说DevcieNet的CAN标识符由设备的 MAC ID 以及 设备组 ID组成,DeviceNet把标识符区分成了4组:

位(bit) ID范围 类别
10 9 8 7 6 5 4 3 2 1 0
0 组1信息ID 源 MAC ID 0x000 ~ 0x3FF 信息组1
1 0 源/目的 MAC ID 组2信息ID 0x400 ~ 0x5FF 信息组2
1 1 组3信息ID 源 MAC ID

0x600 ~ 0x7BF

信息组3
1 1 1 1 1 组4信息ID

0x7C0 ~ 0x7EF

信息组4
1 1 1 1 1 1 1 x x x x 0x7F0 ~ 0x7FF 无效ID

                                           (该表非常重要,解析报文时需要经常用到)

        由于DeviceNet只支持标准帧,因此第11位常为0。通常把本地对外发送请求的设备ID,称为源MAC ID,把接收请求的设备ID称为目的 MAC ID。由于CAN定义的仲裁关系,这里可以发现优先级排列为:信息组1 > 信息组2 > 信息组3 > 信息组4。

结合CAN的仲裁关系以及每组的标识符特征,通常的ID安排可以参考下表:

类别 作用
信息组1 建立 I/O 连接
信息组2 建立预定义主/从连接,重名 MAC ID 检测
信息组3 建立显式连接
信息组4 建立离线连接组连接

        除了建立离线连接组连接,其他的连接方式都需要在执行连接之前执行信息组2的重名MAC ID检测,确保在网络中MAC ID是唯一的。

2.1 显式连接(I/O信息 和 显式信息)

        首先需要清楚的是,I/O信息传输与显式信息传输都是基于显式连接,他们是显式连接下不同的数据传输方式,也就是说明,他们都需要先建立显式连接之后才可以使用,显式连接建立后可以随意使用其中一种数据传输方式。

2.1.1 显式信息连接请求和响应(实例第2组数据)

        显式信息传输格式为:信息头 + 信息体。如果该显式信息数据超过8个字节,则需要进行分段传输,分段传输的格式为:信息头 + 分段协议 + 信息体分段,分段传输的详情会在后续分段传输的章节详细说明,而信息头的格式是统一的。

信息头格式
7 6 5 4 3 2 1 0
字节
0 Frag XID MAC ID

        Frag:0表示该数据不需要分段,该帧包含完整的数据,1表示该数据不完整,下一个字节包含分段协议;

        XID:该位通常会忽略,不包含实际逻辑意义;

        MAC ID:根据CAN标识符的MAC ID来决定,如果CAN标识符已经定义源MAC ID,则该位为目的MAC ID,如果CAN标识符的MAC ID定义为目的MAC ID,则该部分为源MAC ID,以上情况仅会出现在信息组2数据,通常该位都为目的MAC ID。

        显式信息连接请求对应实例中第2组指令。

显式 连接请求格式
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值