canopen 简单提要
can总线
can特点:多主控制、高达1M通讯速度、通讯校验、 错误检测处理及恢复等,can总线通讯接口规定了CAN协议的物理层和数据链路层功能。
canopen协议
canopen协议属于应用层协议,是由一系列子协议组成,分为通讯子协议和设备子协议,通讯子协议例如CIA 301子协议对canopen网络的架构进行了规范 ,针对某些特定的对象字典中的数据对象规定了相应的功能。设备子协议目前在电机控制中主要使用CIA 402设备子协议,CIA 402子协议定义了电机控制相关的数据对象,状态机制,控制模式等
cia 301子协议简单提要
CIA 301 定义的范围索引范围1000H ~ 1FFFH,其中在DS 301文档中有详细介绍,在电机控制中使用较多的参数有以下(简单摘出部分参数,具体参数可以参考 DS 301 ):
索引 | 子索引 | 名称 | 说明 | 类型 | 属性 |
---|---|---|---|---|---|
1000 | 0 | 设备类型 | 支持CIA301协议 | u32 | RO |
1001 | 0 | 错误状态 | u8 | RO | |
1003 | 0 - x | 错误字段 | 最近几次错误 | ARRAY | RO |
1005 | 0 | 同步报文 COB-ID 标识符 | u32 | RW | |
1008 | 0 | 设备名称 | Vis-string | RO | |
1009 | 0 | 硬件版本 | Vis-string | RO | |
100A | 0 | 软件版本 | Vis-string | RO | |
1010 | 0 | 保存参数 | 子索引数目 | u8 | RO |
1-x | 保存通讯参数、自定义参数、设备参数,全部参数 | u32 | RW | ||
1011 | 0 | 恢复出厂设置 | 子索引数目 | u8 | RO |
1-x | 恢复通讯参数、自定义参数、设备参数,全部参数 | u32 | RW | ||
1014 | 0 | EMNC紧急报文COB-ID标识符 | u32 | RW | |
1017 | 0 | 生产者心跳时间间隔(ms) | u16 | RW | |
1018 | 0 | 制造商信息 | 子索引 | u8 | RO |
1 | 供应商id | u32 | RO | ||
2 | 供应商产品号 | u32 | RO | ||
1200 | 0 | 服务器端SDO1信息 | 子索引 | u8 | RO |
1 | COB-ID(从接收) | 600h + Node_ID | u32 | RO | |
2 | COB-ID(从发送) | 581h + Node_ID | u32 | RO | |
1400 | 0 | RPDO1参数 | 子索引 | u8 | RO |
1 | COB-ID(RPDO1) | 200h + Node_ID | u32 | RO | |
2 | 传输类型 | *具体可以看ds301详细介绍(P106) | u32 | RW | |
3 | 抑制时间 | not used for RPDO | u32 | RW | |
4 | 保留 | u32 | RO | ||
5 | 事件定时器 | not used for RPDO | u32 | RW | |
1401 | 0 | RPDO2参数 | 子索引 | u8 | RO |
1 | COB-ID(RPDO2) | 300h + Node_ID | u32 | RO | |
2 | 传输类型 | *具体可以看ds301详细介绍(P106) | u32 | RW | |
3 | 抑制时间 | not used for RPDO | u32 | RW | |
4 | 保留 | u32 | RO | ||
5 | 事件定时器 | not used for RPDO | u32 | RW | |
1402 | 0 | RPDO3参数 | 子索引 | u8 | RO |
1 | COB-ID(RPDO3) | 400h + Node_ID | u32 | RO | |
2 | 传输类型 | *具体可以看ds301详细介绍(P106) | u32 | RW | |
3 | 抑制时间 | not used for RPDO | u32 | RW | |
4 | 保留 | u32 | RO | ||
5 | 事件定时器 | not used for RPDO | u32 | RW | |
1403 | 0 | RPDO4参数 | 子索引 | u8 | RO |
1 | COB-ID(RPDO4) | 500h + Node_ID | u32 | RO | |
2 | 传输类型 | *具体可以看ds301详细介绍(P106) | u32 | RW | |
3 | 抑制时间 | not used for RPDO | u32 | RW | |
4 | 保留 | u32 | RO | ||
5 | 事件定时器 | not used for RPDO | u32 | RW | |
1404-15FF | X | RPDOX参数 | DISABLE | -- | -- |
1600 | 0 | RPDO1映射 | 子索引 | u8 | RO |
1 | RPDO1-映射1 | 一般是60400010,控制字 | u32 | RW | |
2 | RPDO1-映射2 | 一般是607a0020,目标位置 | u32 | RW | |
3 | RPDO1-映射3 | 一般是60600008,控制模式,有时可以不需要 | u32 | RW | |
4-8 | RPDO1-映射4 | 注意单个rpdo总字节不要超过8byte | u32 | RW | |
1601-17ff | X | RPDOX映射 | 最多使用到1603,其他的disable | -- | -- |
1800 | 0 | TPDO1参数 | 子索引 | u8 | RO |
1 | COB-ID(TPDO1) | 180 + Node_ID | u32 | RW | |
2 | 传输类型 | *具体可以看ds301详细介绍(P106) | u32 | RW | |
3 | 抑制时间 | u32 | RW | ||
4 | 保留 | u32 | RO | ||
5 | 事件定时器 | u32 | RW | ||
1801-19FF | X | TPDOX参数 | 最多使用到1803,其他的disable,注意COB-ID号要跟着180x的‘x’ 变为 180 + x00 | -- | -- |
1A00 | 0 | TPDO1映射 | 子索引 | u8 | RO |
1 | TPDO1-映射1 | 一般是60410010,控制字 | u32 | RW | |
2 | TPDO1-映射2 | 一般是60640020,目标位置 | u32 | RW | |
3 | TPDO1-映射3 | 一般是60610008,控制模式,有时可以不需要 | u32 | RW | |
4-8 | TPDO1-映射4-8 | 注意单个Tpdo总字节不要超过8byte | u32 | RW | |
1A01-1Bff | X | TPDOX映射 | 最多使用到1A03,其他的disable | -- | -- |
cia 301对象参数简单解释
- 报文格式(以一帧SDO数据为例)
601 | 2B | 40 | 60 | 00 | 00 | 00 | 00 | 00 |
---|---|---|---|---|---|---|---|---|
COB-ID | Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 |
对象 | 功能码 | COB-ID |
---|---|---|
NMT | 0000 | 0H |
SYNC | 0001 | 80H |
TIME STAMP | 0010 | 100H |
EMGY | 0001 | 81H-FFH |
PDO1(tx) | 0011 | 181H - 1FFH |
PDO1(rx) | 0100 | 201H - 27FH |
PDO2(tx) | 0101 | 281H - 2FFH |
PDO2(rx) | 0110 | 301H - 37FH |
PDO3(tx) | 0111 | 381H - 3FFH |
PDO3(rx) | 1000 | 401H - 47FH |
PDO4(tx) | 1001 | 481H - 4FFH |
PDO4(rx) | 1010 | 401H - 47FH |
SDO(tx) | 1011 | 581H - 5FFH |
SDO(rx) | 1100 | 601H - 67FH |
Heart Beat | 1110 | 701H - 77FH |
-
服务数据对象(SDO)
SDO报文主要是访问设备对象字典,处理实时性不高的数据,SDO 通讯方式基于客户端/服务器模型,发送的报文会收到接收者的应答,访问者为客户端,被访问的设备为服务器,传输类型分为三种快速SOD传输,分段SDO传输,块传输。
根据SDO upload协议,根据访问的对象字典数据类型,分为SDO upload expedited(小于4个字节)和SDO upload normal(大于4个字节,一般访问string或者文件传输可能用到) 两种;
可以参考: 《CANopen原理–SDO(upload)》 -
过程数据对象(PDO)
PDO报文主要用于处理实时性要求较高的数据,通讯方式基于生产者/消费者模型,数据从一个设备产生者发送到另一个或者多个设备,无需确认是否收到。数据传输范围1-8个字节。可以通过PDO的通讯参数(例如:1400)和映射参数(例如:1600)的配置完成接收或者发送. -
网络管理对象(NMT)
NMT 基于主从结构,主站可以通过NMT报文对从站进行状态切换控制。canopen从设备有 初始化状态,启动状态,预运行状态和运行状态。从设备上电时进入初始化状态,初始化结束进入启动状态,并上传启动报文,之后进入预运行状态。 -
同步对象(SYNC)
同步对象为网络提供基准时钟用来同步can网络中的设备,SYNC同样属于生产者/消费者模型,网络中所有设备都可以接收SYNC,SYNC的COB-ID为80H,在上述表格中ID较小,具有很高的优先级,所以该报文尽可能的小,一般不带数据。 -
紧急对象(EMCY)
紧急报文一般上传设备自身的内部故障,属于生产者/消费者模型,网络中的设备都可以消费该报文。紧急报文数据为8字节,其中字节0和1,为错误码,字节2 为错误寄存器,存放在1001h单元中,字节3-7,可以由厂家自定义的错误类型。
CIA 402 设备控制协议简单提要
CIA 402协议中定义了运动控制相关的一些对象参数,状态机,和一些运行模式;
CIA 402对象字典中的部分参数
CIA 402中规定了一系列完整的电机控制参数,这里简单提取了部分常用的参数(不包含探针功能)
索引 | 子索引 | 名称 | 说明 | 类型 | 属性 |
---|---|---|---|---|---|
603f | 0 | 故障码 | 用于显示当前电机控制相关故障 | u16 | RO |
6040 | 0 | 控制字 | 通过控制字的切换可以切换电机控制的状态机 | u16 | RW |
6041 | 0 | 状态字 | 显示当前的状态机以及电机运行的状态 | u16 | RO |
6060 | 0 | 控制模式 | 可以控制电机进行回原点,目标速度,目标位置,同步速度,同步位置,同步力矩等模式 | u8 | RW |
6061 | 0 | 模式显示 | 当前的运行模式 | u8 | RO |
6062 | 0 | 命令位置 | 命令位置模式需要用到,单位Pulse | i32 | RW |
6064 | 0 | 当前的运行位置 | 一般单位是pulse | i32 | RO |
606C | 0 | 当前的运行速度 | 单位可以是r/min或者pulse/s 或者其他速度单位 | i32 | RO |
607A | 0 | 目标位置 | 同步位置模式需要用到目标位置 | i32 | RW |
6081 | 0 | 目标位置下的最大速度 | 注意是位置模式下 | u32 | RW |
6083 | 0 | 加速度 | 有些厂家认为该加速度为加速时间单位ms;有些则认为是加速度单位pulse/s^2,都可以 | u32 | RW |
6084 | 0 | 减速度 | 有些厂家认为该减速度为减速时间单位ms;有些则认为是加速度单位pulse/s^2,都可以 | u32 | RW |
60FF | 0 | 最大速度(速度模式) | 单位pulse/s 或者 r/min都可以 | i32 | RW |
6098 | 0 | 回原点模式 | 原点加限位,原点...回原点模式 | u8 | RW |
6099 | 0 | 子索引 | 回原点速度 | u8 | RW |
1 | 回原点速度(高速) | 单位pulse/s 或者 r/min都可以 | u32 | RW | |
2 | 回原点查询速度(低速) | 单位pulse/s 或者 r/min都可以 | u32 | RW | |
609A | 0 | 回原点加减速度 | 有些厂家认为该减速度为减速时间单位ms;有些则认为是加速度单位pulse/s^2,都可以 | u32 | RW |
607C | 0 | 回原点补偿值 | 单位pulse | I32 | RW |
60FD | 0 | 输入端子状态 | 有些厂家认为该减速度为减速时间单位ms;有些则认为是加速度单位pulse/s^2,都可以 | u8 | RW |
对象字典参数简述(可以参考cia 402官方手册)
- 6040控制字参数(官方手册P49)
bit 15 | bit 14 | bit 13 | bit 12 | bit 11 | bit 10 | bit 9 | bit 8 | bit 7 | bit 6 | bit 5 | bit 4 | bit 3 | bit 2 | bit 1 | bit 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
厂家自定义 | 保留 | 停止 | 复位错误 | 特殊运行模式 | 使能 | 急停 | 上电 | 开机 |
-
6041状态字(官方手册P50)
bit 15 bit 14 bit 13 bit 12 bit 11 bit 10 bit 9 bit 8 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 厂家自定义 特殊的运行模式 内部限制行为 目标到达 远程参数 厂家自定义 报警 开机去使能 急停 上电使能 故障 运行使能 开机 准备开机
状态字会根据系统的当前状态进行状态机切换。
- 6060 运行模式
-1 - - 128 9-127 8 7 6 5 4 3 2 1 0 厂家自定义运行模式 保留 同步位置模式* 插入位置模式 回原点模式 保留 力矩模式 速度模式 同步速度模式 位置模式 保留
CIA 402 状态机
状态说明
状态名 | 说明 |
---|---|
Not Ready to Switch on | 设备电源接通,已经初始化完毕,自检ok |
Switch on Disabled | CANopen通讯开始,可以利用SDO通讯服务对设备进行参数设置 |
Ready to Switch on | 准备阶段,可以继续设置参数 |
Switched on | 设备已经准备好,输出级电压在切换下个状态前接通,还不能执行电机运行 |
Operation Enable | 电机使能,可以按照运行模式执行动作 |
Quick Stop Active | 急停 |
Fault Reaction Active | 报警发生,电机停机,但是此时电机仍然使能 |
Fault | 错误发生 |
这篇博客暂时先写到cia 402状态机