导图社区 CANOpen学习笔记
CANOpen学习笔记,知识内容有过程数据对象(PDO)、服务数据对象(SDO)、网络管理对象(NMT)、对象字典等。
编辑于2022-04-12 15:15:30CANOpen模型
通信对象
过程数据对象(PDO)
描述
PDO 属于过程数据,即单向传输,无需接收节点回应CAN 报文来确认
“生产消费”模型
特点
数据长度被限制为 1~8 字节。最多只要 1 帧就可以把一条信息或者一个变量传递结束
CAN-ID
PDO 分为 TPDO(发送 PDO)和(接收 RPDO), 发送和接收是以 CANopen 从站节点为参考
TPDO和 RPDO 分别有 4 个数据对象, 每种数据对象就是 1 条 CAN 报文封装
PDO 的传输形式
同步传输
描述:同步传输就是通过同步报文让所有节点能在同一时刻进行上传数据或者执行下达的应用指令
作用:可以有效避免异步传输导致的应用逻辑混乱和总线负载不平衡的问题
异步传输
主要由特定事件触发
PDO 的通信参数题
目录
注释
Number of entries 参数条目数量
即本索引中有几条参数
COB-ID
即这个 PDO 发出或者接收的对应 CAN 帧 ID
发送类型
即这个 PDO 发送或者接收的传输形式,通常使用循环同步和异步制造商特定事件较多
Inhibit time 生产禁止约束时间(1/10ms)
约束 PDO 发送的最小间隔,避免导致总线负载剧烈增加,比如数字量输入过快,导致状态改变发送的 TPDO 频繁发送,总线负载加大,所以需要一个约束时间来进行“滤波”,这个时间单位为 0.1ms;
Event timer 事件定时器触发的时间(单位 ms)
定时发送的 PDO,它的定时时间,如果这个时间为 0,则这个 PDO 为事件改变发送
SYNC start value 同步起始值
同步传输的 PDO,收到诺干个同步包后,才进行发送,这个同步起始值就是同步包数量。比如设置为 2,即收到 2 个同步包后才进行发送
PDO 的映射参数
RPDO
通讯参数 1400h to 15FFh, 映射参数 1600h to 17FFh, 数据存放为 2000h 之后厂商自定义区域
TPDO
通讯参数 1800h to 19FFh, 映射参数 1A00h to 1BFFh, 数据存放为 2000h 之后厂商自定义区域
服务数据对象 (SDO)
描述
SDO 属于服务数据,有指定被接收节点的地址(Node-ID),并且需要指定的接收节点回应 CAN 报文来确认已经接收, 如果超时没有确认,则发送节点将会重新发送原报文
“服务器客户端”的通信模型
用来传输实时数据,数据从一个创建者传到一个或多个接收者。数据传送限制在 1 到 8 个字节
通常 CANopen 从节点作为 SDO 服务器, CANopen 主节点作为客户端(称为 CS 通讯)
CAN-ID
发起通讯的“问”SDO 的 CAN 帧 ID 就是 600h +node-ID
被问的节点“答” SDO 的 CAN 帧 ID 就是 580h+node-ID
通讯原则
发送方(客户端) 发送 CAN-ID 为 600h+Node-ID 的报文, Node-ID 为接收方(服务器) 的节点地址, 数据长度均为 8 字节
接收方(服务器) 成功接收后, 回应 CAN-ID 为 580h+Node-ID 的报文 Node-ID是接收方(服务器) 的节点地址, 数据长度均为 8 字节
快速 SDO 协议 Expedited SDO protocol
模型
CS 命令符
网络管理对象(NMT)
NMT 节点状态
初始化(Initializing)
节点上电后对功能部件包括 CAN 控制器进行初始化
应用层复位(Application Reset)
节点中的应用程序复位(开始),比如开关量输出、模拟量输出的初始值
通讯复位(Communication reset)
节点中的CANopen通讯复位(开始),从这个时刻起,此节点就可以进行CANopen通讯了
预操作状态(Pre-operational)
节点的CANopen通讯处于操作就绪状态,
此时此节点不能进行PDO通信,而可以进行SDO进行参数配置和NMT网络管理的操作
操作状态(operational)
节点收到NMT主机发来的启动命令后, CANopen通讯被激活
PDO通信启动后, 按照对象字典里面规定的规则进行传输,同样SDO也可以对节点进行数据传输和参数修改
停止状态(Stopped)
节点收到NMT主机发来的停止命令后,节点的PDO通信被停止,但SDO和NMT网络管理依然可以对节点进行操作
状态转换关系
NMT 节点状态切换命令
CANID 均为 000h,具备最高的 CAN 优先级。数据为 2 个字节
第 1 个字节代表 命令类型
01h为启动命令(让节点进入操作状态);
02h为停止命令(让节点进入停止状态);
80h为进入预操作状态(让节点进入预操作状态);
81h为复位节点应用层(让节点的应用恢复初始状态,比如列车门都恢复打开状态);
82h为复位节点通讯(让节点的 CAN 和 CANopen 通讯重新初始化,一般用于总线收到干扰,导致节点总线错误被动,或者总线关闭时)
第二个字节代表 被控制的节点 Node-ID
如果要对整个网络所有节点同时进行控制,则这个数值为 0 即可
逻辑图
NMT 节点上线报文
描述
任何一个 CANopen 从站上线后,为了提示主站它已经加入网络(便于热插拔),或者避免与其他从站 Node-ID 冲突。这个从站必须发出节点上线报文(boot-up)
格式
700h+Node-ID, 数据为 1 个字节 0
逻辑图
NMT 节点状态与心跳报文
描述
为了监控 CANopen 节点是否在线与目前的节点状态。 CANopen 应用中通常都要求在线上电的从站定时发送状态报文(心跳报文),以便于主站确认从站是否故障、是否脱离网络
格式
700h+Node-ID,数据为 1 个字节,代表节点目前的状态
04h为停止状态, 05h为操作状态, 7Fh为预操作状态
逻辑图
检查
发送
从站按其对象字典中 1017h 中填写的心跳生产时间(ms)进行心跳报文的发送
接受
主站(NMT 主站)则会按其 1016h 中填写的心跳消费时间进行检查
结果
假设超过诺干次心跳消费时间没有收到从站的心跳报文,则认为从站已经离线或者损坏
NMT 节点守护
由于远程帧在 CAN 发展中逐渐被淘汰,而节点守护由于需要更多的主站开销与增加网络负载, CiA 协会已经不建议使用,被心跳报文所取代
CANopen 主站设备
功能
支持 PDO、 SDO 发送与接收;
支持 NMT 网络管理;
支持 PDO 通信类型并能够支持监控每一个 PDO 目标;
LSS 层设置功能:从站波特率设置、从站节点编号设置;
支持从站管理功能:类型与名称读取、对象字典读写;
紧急报文发送功能;
扩展 CANopen 标准指示灯功能
特殊协议
同步对象 (SYNC)
描述
该报文对象主要实现整个网络的同步传输
一般选用 80h作为同步报文的 CAN-ID
约束条件
同步窗口时间
索引 1007h约束了同步帧发送后, 从节点发送 PDO 的时效, 即在这个时间内发送的 PDO 才有效, 超过时间的 PDO 将被丢弃
通讯循环周期
索引 1006h规定了同步帧的循环周期
紧急报文 (EMCY)
设备内部通信故障或者应用故障错误时发送的报文。
CAN-ID存储在 1014h的索引中, 一般会定义为 080h +node-ID, 数据包含 8 个字节
EEC: 紧急时间错误代码
时间戳协议(TS)
时间戳协议采用广播方式, 无需节点应答
CAN-ID 为 100h, 数据长度为 6, 数据为当前时刻与 1984 年 1 月 1 日 0 时的时间差
对象字典OD Object dictionary
最核心
描述
对象字典是设备规范中最重要的部分。它是一组参数和变量的有序集合,包含了设备描述及设备网络状态的所有参数
CANopen 协议采用了带有 16 位索引或 8 位子索引的对象字典
主索引表
通讯对象子协议区
通用通讯对象
通用通讯对象十分重要, NMT 主站(CANopen 主站) 在启动时, 通常都全部或者部分读取所有从站中通用通讯对象中的索引, 所以所有的通用通讯对象都必须在CANopen 从站中实现
索引表
制造商特定子协议
通常是存放所应用子协议的应用数据
制造商特定子协议
为各种行业不同类型的标准设备定义对象字典中的对象
应用对象
应用这一块包含CANOpen协议上层的内容,可以简单理解封装的一些供用户读写操作的函数
应用层关系
CANOpen
主题
主题
主题