根据 DS301 的内容进行介绍
1 、
CAN 总线
ETIJ
,
署
提
萃
,
毕
蜡
"道
吾
川
职
N明
匾
毯
4
M罔
半
黯
摇
11
位
玉
草
抖
出
相Z
〈
υ
N
U拍
电
咄
M
n
咄
罪
0..64
时
段
阳
蜡
割
CAN 标准报文
数据1~3i
7 田15
骂
割
U
U
U
部
M
m
-
写
u
n
组
川←-
世V育
提
U刊
罪
E
E
Z
钊
哥
1 0-7 位
6-0 位
功能码
节点 E
8 字节数据
字节 4--字节 7
闯 2-2
C剑~open 的标识符和数据在 CAN 帧中的位置
标准帧
11 位标识符
扩展帧
29 位中的高 11 位
29 位中的低 1 8 位
图2-1 标准帧和扩展帧之间的映射
2、 CANopen 应用层协议
CANopen 协议不针对某种特别的应用对象,具有较高的配置灵活性 , 高数
据传输能力 , 较低的实现复杂度。同时 , CANopen 完全基于 CAN 标准报文格
式 , 而无需扩展报文的支持 , 最多支持 127 个节点 , 并且协议开源。
一个标准的CANopen 节 点(下图) ,在数据链路层之上, 添加了应用层。
该应用层一般由软件实现 , 和控制算法共同运行在实时处理单元内。
工
Z
〈
U
PDO
传输控制
SDO
传输控制
NMT
传输控制
控制逻辑
模
u忡
棋
友
起
'
怯
喜
剧割
一个标准的 CANopen 节点
CANopen 应用层协议细化了 CAN 总线协议中关于标识符的定义。定义标准报
文的 11 比特标识符中高4 比特为功能码 , 后7 比特为节点号 , 重命名为通讯对
象标识符 ( COB-ID) 。功能码将所有的报文分为7个优先级 , 按照优先级从高至
低依次为 :
网络命令报文 (NMT)
同步报文 ( SYNC )
紧急报文( 卧在ERGENCY )
时间戳 ( T酌ffi )
过程数据对象 ( PDO )
服务数据对象。DO )
节点状态报文 (NMT Err Control)
7 位的节点号则表明CANopen 网络最多可支持 127个节点共存 ( 0 号节点为主
站)。
下表给 出了各报文的COB-ID 范围。
报文类型
NMT
SYNC
EMERGENCY
TTh在E
PDOl (发送)
PDOl (接收)
PD02(发送)
PD02(接收)
PD03 (发送)
PD03(接收)
PD04(发送)
PD04(接收)
SDO(发送)
SDO(接收)
NMTEπor COl1trol
功能码
COB-ID 范围 (HfX)
~
0000
000 1
000 1
0010
0011
0100
0101
0110
011 1
1000
1001
1010
1011
1100
1110
OOOh
080h
08 1h气OFPh
10011
181h- 1FFh
201h- 27Fh
2 81 b~2FFh
301h- 37Fh
381b-3FFh
401h、47Fh
481h- 4FFh
501 b- 57F11
581h- 5FFh
601h- 67Fh
701h- 77Fh
为最高优先级报文 , 由 CANopen 主站发出 , 用以更改从节点
定期由 CANopen 主站发出 , 所有的同步PDO 根据SYNC报文发
NMT 命令
的运行状态。
SYNC报文
送。
EMERGENCY报文由出现紧急状态的从节点发出 , 任何具备紧急事件监控与处
理能力的节点会接收并处理紧急报文。
TTh在E 报文由 CANopen 主站发出,用 于 同步所有从站的内部时钟。
PDO
和接收PDO , 用 于过程数据的传递。
SDO
分为发送SDO 和接收SDO , 用 于读写对象字典。
MT Error Control报文由从节点发出 , 用以监测从节点的运行状态 。
分为4 对发送和接收PDO , 每一个节点默认拥有4对发送PDO
状态机
CANopen 的每一个节点都维护了一个状态机。该状态机的状态决定了该节点当
前支持的通讯方式 以及节点行为。
初始化肘 , 节点将 自动设置 自身 参数和CANopen 对象字典,发出节点启动报文,
并不接收任何网络报文。
初始化完成后 , 自动进入预运行状态。在该状态 , 节点等待主站的网络命令 , 接
收主站的配置请求 , 因此可以接收和发送除了 PDO 以外的所有报文。
运行状态为节点的正常工作状态 , 接收并发送所有通讯报文。
停止状态为一种临时状态 , 只能接收主站的网络命令 , 以恢复运行或者重新启动。
(10)
(9>
(3)
运行
(8)
CANopen 节点状态转换图
(0)
(1)
(2)(5)
(3)(6)
(4)(7)
(8)(9)(1 0)
(1 1)(12)(13)
设备 上 电
设备初始化完成
收到启动节点命令
收到进入预运行命令
收到停止节点命令
收到意启节点命令
收到常 j臼通讯命令
CANopen 节点状态转换条件
3 、 Oevice Model
Communication
Object
Dictionary
Application
(
飞
Comm.
obj障ct
飞
J
Bus system
Process
Figure 3: Device Model
Communication 提供通信对象和传输经过底层的数据的适当功能;
。同ect Dictionary 对此设备上的应用程序对象, 通信对象和状态机的行为有影响的所有数据
项的集合。
Application 由在处理环境方面的设备功能组成。
设备应用在数据条目中的完整描述在对象字典中 叫设备子文件 Cdevice profile)
4 、 00
每个节点维护一个对象字典 C Object Dictionary, OD ) 。该对象字典保存了
节点信息 、 通讯参数和所有的过程数据 , 是CANopen 节点的核心数据结构。上
层应用程序也主要通过读写对象字典和CANopen 应用层进行交互。
CANopen 对象字典为两级数组结构 , 通过索引C1 6b i ts) 和子索寻 I C8b i t s)
来编址。设备子文件中最重要的就是对象字典的描述 , 对象字典在 slave 节点中
一般是在设备初始化写好的不会修改 , 而在 master 节点中可以在运行过程中动
态修改 ,不修改的 OD 一般存在 ROM 中 , 而修改的存在阳M 中。
索引
OOOOh
保留
对象
0001h- 00 lFh 基本 的数据类 型
002 0hι003 Fh 复杂的数据类型
004 0h - 005Fh 生产商 相 关数据类型
0060h~007Fh 设备描述的基本的数据类型
0080h - 009Fh 设备描述的复杂数据类型
OOAOh - OFFFh
f呆: 留
1000h -- lFFFh 通讯参数
2 000h- 5FFFh 制造商的特殊设备描述文件
6000h - 9 FFFh 标准设备描述文件
A OOOh - B FFFh 标准接口描述文件
COOOh~FFFFh
f呆留
由 于它是 由 16bits 的位索引,所以最多有 65536 个 entries.
根据节点所支持的通讯方式 , 每一个节点都必须实现 lO00h-lFFFh 当中的一个
必要子集, 同 时实现6000h 以上部分的数据 区 。 数据区大小由节点的功能 自 行决
定。 1000h 以 下部分所有的节点都不需实现 。
对象字典作为在CAN总线上连接application和通信的媒介 , 其允许来 自 application数据在
CAN 网络上进行交换 。 CANopen定义了可以进入对象字典的服务和通信对象。每一个入口
通过索引和子索引来编址。在一个主索引里 中的子索引入口的类型和属性可能会变化。
lnd,白:
S lIb-in de.'f Typ e
0x2000
。
2
3
UINT8
UINT32
...
A l1ribllle
const
read-write
...
Tab!e 12:
Stmcture 01 ([J1 Object DictioJJ{/1)' eJJtly
5 、 PDO
数据处理对象(PDO) 特别适合快速的数据处理传输 。 通信模块针对这些数据
处理对象定义了一个PDO producer 和一个或多个PDO consumers 。
PDO.Consumer l
PDO.Consumer2
PDO.Consumer3
POO-Consumer4
Figllre 2:
COllllllll11icariol1l11odel f o1" PDOs
PDO的传输是由事件触发的 , 这样的事件可以是代表一个PDO变量的变化 : 可
以是时间的过期或者是接收到一个特定的消息。
过程数据直接在一个CAN消息中传输而不需要协议头文件。一个PDO的长度是在0
到8个字节之间。
PDOs包含在其映射参数和通信参数中。 TPDOs 和RPDOs 的最大的数可 以被定义为
5120
一个简单的C州open设备一般支持4个PDOs 。实际当中,对一个具体的CANopen
设备而言 , 其PDOs 的个数 由应用 层或设备profile来决定的。
3. 1PDO的结构一 映射参数
在对象词典中一个PDO 由临近的条目构成。所谓的映射参数定义了这些条目的
连接。一个映射参数通过索引、分索引和位数定义数据源。
例如 :
1l1de.Y Sub-illdex Objecl D创a
D escrip tioll
OxlAOO 。
4
NUlllber of lllapped entries
Ox20000310 The ent1.y at index Ox2000, sub-illdex 3, with
a lellgth of 16 bit, is lllapped to bytes 0 alld 1
within the CAN message.
Ox20000 108 The entry at illdex Ox2000、 sub-index 1, with
a length of 8 bit, is lllapped to byte 2 within
the CAN lllessage.
...
2
...
Table 1:
E XGJJlp lefor JJlapping pαγαmetersfoγ t!Jefirst TPDO
一个C州消息最多有8个字节。这意味着 当使用一个PDO时,在一个PDO 中发送
8个字典的对象条目。
Object Dictionary
iE削 1: UNSIG陆D8 Varl
ih町 2: UNSIGNED8 Var2
|h町 3: UNSIGNED16 Vaβ
••••••
|Entry6: RE址川ar6
PDO 1
Genernting 也e Mapping paramet臼骂
j\1appi咆 olObject DictioJl(l1y e川'ies i1110 a PDO
Fig/( l'e 3:
3 . 2PDO的结构一通信参数
为了传输一个PDO ,通信参数定义了传输的性质和CAN标识符 (CAN identifier) 。
Index Sub-index Object Data
Desc口rψtion
1800h 。
Number on entries
COB-ID
CAN identifier for the PDO
Transmission Type
Inhibit Time
transmissioll type of t11e PDO
m血Ímum inhibit time for a TPDO
reserved
reserved
2
3
4
Event Time
m8ximum tÍme benveen two TPDOs
COllll/llillicatioll paral/leler 101' tltefirst TPDO
5
Table 4:
PDO通信参数是在对象词典的条目
(RPDOs:
如果允许 , 映射参数在数据服务对象帮助下可 以通过CAN修改。
i ndex Ox1400 - Ox15FF, TPDOs: Ox1800-0x19FF)