预定义CAN ID
对象 | 规范 | CAN ID |
---|---|---|
NMT 网络管理命令 | CiA301 | 000h |
Sync 同步报文 | CiA301 | 080h |
Emergency 紧急报文 | CiA301 | 081h to 0FFh(080h +node-ID) |
Time stamp 时间戳报文 | CiA301 | 100h |
对象字典索引和描述
Index range 索引范围 | Description 描述 |
---|---|
1000h ~ 1FFFh | Communication profile area 通讯对象子协议区 |
2000h ~ 5FFFh | Manufacturer-specific profile area 制造商特定子协议区 |
6000h ~ 9FFFh | Standardized profile area 标准化设备子协议区 |
A000h ~ AFFFh | Network variables 网络变量(符合 IEC61131-3) |
通用通讯对象
NMT节点状态
预操作状态(Pre-operational):节点的CANopen通讯处于操作就绪状态,此时此节点不能进行PDO通信,而可以进行SDO进行参数配置和NMT网络管理的操作;
操作状态(operational):节点收到NMT主机发来的启动命令后,CANopen通讯被激活,PDO通信启动后,按照对象字典里面规定的规则进行传输,同样SDO也可以对节点进行数据传输和参数修改;
停止状态(Stopped):节点收到NMT主机发来的停止命令后,节点的PDO通信被停止,但SDO和NMT网络管理依然可以对节点进行操作;
心跳报文和节点状态 :CANID 与节点上线报文相同为700h+Node-ID,数据为 1 个字节,代表节点目前的状态,04h为停止状态,05h为操作状态,7Fh为预操作状态。
NMT节点状态切换命令
CANID 均为 000h,具备最高的 CAN 优先级。数据为 2 个字节
第 1 个字节代表命令类型
01h 为启动命令(让节点进入操作状态);
02h 为停止命令(让节点进入停止状态);
80h 为进入预操作状态(让节点进入预操作状态);
81h 为复位节点应用层(让节点的应用恢复初始状态,比如列车门都恢复打开状态);
82h 为复位节点通讯(让节点的 CAN 和 CANopen 通讯重新初始化,一般用于总线收到干扰,导致节点总线错误被动,或者总线关闭时)。
第2个字节代表被控制的节点 Node-ID:
如果要对整个网络所有节点同时进行控制,则这个数值为 0 即可。
PDO 通讯
PDO 通信参数,定义了该设备所使用的 COB-ID、传输类型、定时周期等。
RPDO 通讯参数位于对象字典索引的 1400h to 15FFh,映射参数 1600h to 17FFh
TPDO 通讯参数位于对象字典索引的 1800h to 19FFh,映射参数 1A00h to 1BFF
数据存放在 2000h 之后的自定义区域
SDO 通讯
发送方(客户端)发送 CAN-ID 为 600h+Node-ID 的报文,其中 Node-ID 为接收方(服务器)的节点地址,数据长度均为 8 字节;
接收方(服务器)成功接收后,回应 CAN-ID 为 580h+Node-ID 的报文。这里的 Node-ID依然是接收方(服务器)的节点地址,数据长度均为 8 字节。