机械工程学院机械设计及理论研究所
目录
第一章 PDO 应用实例分析 ...........................................................................................................1
一、目的..................................................................................................................... 1
二、手段..................................................................................................................... 1
三、分析..................................................................................................................... 1
四、过程..................................................................................................................... 2
4.1 对象字典的编写........................................................................................................ 2
4.1.1 各节点 ID 分配表定义 .................................................................................... 3
4.1.2 对节点 1 进行对象字典编写 .......................................................................... 3
4.1.3 对节点 2 进行对象字典编写 .......................................................................... 4
4.1.4 对节点 3 进行对象字典编写 .......................................................................... 6
4.2 节点 1 发送数据至节点 2、节点 3.......................................................................... 7
4.2.1 节点 1 发送数据至总线.................................................................................. 7
4.2.2 节点 2、节点 3 从总线接收数据.................................................................. 8
4.3 节点 2 发送数据至节点 3....................................................................................... 9
4.3.1 节点 2 发送数据至总线................................................................................ 9
4.3.2 节点 3 从总线接收数据............................................................................... 10
第二章 SDO 应用实例分析 ...........................................................................................................1
一、目的 ............................................................................................................................................1
二、手段 ............................................................................................................................................1
三、分析 ............................................................................................................................................1
四、过程 ............................................................................................................................................2
4.1 对象字典的编写..................................................................................................2
4.1.1 各节点 ID 分配 ....................................................................................................... 2
4.1.2 对节点 1 进行对象字典编写 ................................................................................. 2
4.1.3 对节点 2 进行对象字典编写 ................................................................................. 2
4.1.4 对节点 3 进行对象字典编写 ................................................................................. 3
4.2 节点 1 读取节点 2 数据.................................................................................... 4
4.2.1 节点 1 发送请求读取命令至节点 2......................................................................4
4.2.2 节点 2 响应节点 1 读取命令 ................................................................................ 4
4.3 节点 1 写入数据至节点 3................................................................................ 6
4.3.1 节点 1 发送数据至节点 3.................................................................................. 6
4.3.2 节点 3 响应节点 1 写入数据命令 ......................................................................7
附录一................................................................................................................................................8
CANopen 工作流分析
Date: 2011-5-20
V1.0
Copyright By Tongji University
i
机械工程学院机械设计及理论研究所
第一章 PDO 应用实例分析
一、目的
本应用实例的目的如图 1-1 所示,实现节点 1 的数据(A、B)传送到节点 2、
节点 3,同时实现节点 2 传输数据(C、D)至节点 3 。
图 1-1 数据传输目的
二、手段
使用 PDO 进行数据传送。
三、分析
CANopen 工作流分析
Date: 2011-5-20
V1.0
1
机械工程学院机械设计及理论研究所
图 1-2 SDO 客户/服务器通讯模式[1]
PDO 通信是基于生产者/消费者(Producer/Consumer)模型,主要用于
传输实时数据。产生数据的节点将带有自己节点号的数据放到总线上,需要该
数据的节点,可以配置为接收该 PDO[3]。
四、过程
4.1.对象字典的编写
对象字典的结构和条目对于所有设备是共同的,本例中采用索引定位,子
索引确定对象的思想构建对象字典,方法是使用结构体定义子索引,子索引结
构体的成员变量包含对象的属性(读写权限,数据类型,数据长度等)和指向
对象的指针,定义索引时包含指向子索引的指针和子索引数目,对象字典各项
在代码中采取如图 1-3 所示的方式来组织构建,这样可以方便地通过索引和子
索引找到对应的项,对象定义为指针的形式可以通过主站的 SDO 报文进行读写,
实现对对象字典的灵活配置,同时这种方式实现通讯层与应用层共享数据变量
的特点。对象字典的条目格式如图 1-3 所示:
索引 对象(符号名)
名称
属性
类型
强制/可选
CANopen 工作流分析
Date: 2011-5-20
图 1-3 对象字典模块结构图
V1.0
2
机械工程学院机械设计及理论研究所
4.1.1 各节点 ID 分配表定义
表 1-1 各节点 ID 分配表
节点
节点 1 节点 2、 节点 3 主节点
NODE-ID
0x01
0x02
0x03
0x04
4.1.2 对节点 1 进行对象字典编写
节点 1 发送数据至节点 2、节点 3,故需定义 TPDO,我们在此处定义为
TPDO1。节点 1 的应用数据区、TPDO1 的通讯参数和映射参数在对象字典中的
定义分别如表 1-2、1-3 和 1-4 所示。
表 1-2 节点 1 的应用数据区在对象字典中的定义
索引
子索引
名称
入口数目
A
B
类型
U8
U16
U8
值
02h
2DFFh
C3h
权限
rw
rw
rw
7100h
1800h
00h
01h
02h
—
00h
01h
02h
03h
04h
05h
表 1-3 节点 1 的 TPDO1 通讯参数在对象字典中的定义
TPDO
入口数目
发送 PDO 标识符
传输类型
禁止时间
Reserved
event timer
数据类型
U8
U32
U8
U16
——
U16
值
05h
180h+NodeID
FFh
00h
——
0x0000h
权限
ro
rw
rw
rw
rw
rw
节点 1 的 TPDO1 的 COB-ID 定义为 181h(1801H ?)。
1A00h
表 1-4 节点 1 的 TPDO1 的映射参数在对象字典中的定义
—
值
TPDO1
数据类型
00h
01h
02h
PDO 映射数目
A
B
U8
U16
U8
02h
7100 01 10h
7100 02 08h
CANopen 工作流分析
Date: 2011-5-20
V1.0
3
权限
rw
rw
rw
机械工程学院机械设计及理论研究所
其中 7100 01 10h 映射数据对象字典中索引为 7100h,子索引为 01h,长度
为 16 位的数据。
4.1.3 对节点 2 进行对象字典编写
节点 2 接收来自节点 1 的数据(A、B),故需定义 RPDO1;此外节点 2 将
数据传(C、D)送给节点 3,故需要定义 TPDO2。节点 2 的应用数据在对象字
典中的定义如表 1-5 所示。
索引
子索引
名称
类型
表 1-5 节点 2 的应用数据在对象字典中的定义
7200h
7300h
00h
01h
02h
00h
01h
02h
入口数目
A
B
入口数目
C
D
U8
U16
U8
U8
U16
U8
值
02h
--
--
02h
F3CCh
D5h
权限
rw
rw
rw
rw
rw
rw
此时索引为 7200h,子索引为 01h,02h 条目中起初并没有实际值,这两个
条目分别用来接收节点 1 的数据 A、B。接受数据后,子索引为 01h 的条目的值
为 2DFFh,子索引为 02h 的条目为 C3h。索引为 7300h,子索引为 01h,02h 条
目中为数据 C、D 的索引。
1400h
—
表 1-6 节点 2 的 RPDO1 通讯参数在对象字典中的定义
值
数据类型
RPDO1
00h
01h
02h
03h
04h
05h
入口数目
接收 PDO 标识符
传输类型
禁止时间
Reserved
event timer
U8
U32
U8
U16
——
U16
05h
180h+NodeID
FFh
0
——
0x0000h
CANopen 工作流分析
Date: 2011-5-20
V1.0
4
权限
ro
rw
rw
rw
rw
rw
节点 2 定义 RPDO1 的 COB-ID 为 181h,对应节点 1 的 TPDO 的 COB-ID,
实现节点 1 与节点 2 之间的数据传输。
机械工程学院机械设计及理论研究所
1600h
表 1-7 节点 2 的 RPDO1 映射参数在对象字典中的定义
—
值
数据类型
RPDO
00h
01h
02h
PDO 映射数目
A
B
U8
U16
U8
02h
7200 01 10h
7200 02 08h
权限
rw
rw
rw
其中 7200 01 10h 表示映射到对象字典中索引为 7200h,子索引为 01h,长
度为 16 位的数据。
因为节点 2 发送数据至节点 3,故需在对象字典中定义 TPDO,在此定义为
TPDO2,其通讯参数和映射参数定义如表 1-8 和 1-9 所示。
表 1-8 节点 2 中 TPDO2 通讯参数在对象字典中的定义
1800 —
TPDO2
00h
入口数目
01h 发送 PDO 标识符
02h
03h
04h
05h
传输类型
禁止时间
Reserved
event timer
数据类型
U8
U32
U8
U16
——
U16
值
05h
280h+NodeID
FFh
00h
——
0x0000h
节点 2 的 TPDO2 的 COB-ID 为 282h。
1A00
—
表 1-9 节点 2 中 TPDO2 映射参数在对象字典中的定义
值
数据类型
TPDO1
00h
01h
PDO 映射数目
C
U8
U16
02h
7300 01 10h
CANopen 工作流分析
Date: 2011-5-20
V1.0
5
权限
ro
rw
rw
rw
rw
rw
权限
rw
rw
02h
D
U8
7300 02 08h
rw
机械工程学院机械设计及理论研究所
其中 7300 01 10h 表示映射到对象字典中索引为 7300h,子索引为 01h,长
度为 16 位的数据
4.1.4 对节点 3 进行对象字典编写
节点 3 分别接受节点 1、节点 2 的数据,需在节点 3 的对象字典中定义
RPDO1、RPDO2,其中 RPDO1 的 COB-ID 需与节点 1 的 TPDO1 的 COB-ID 一
致,RPDO2 的 COB-ID 需与节点 2 的 TPDO2 的 COB-ID 一致。
索引
子索引
名称
类型
表 1-10 节点 3 的应用数据在对象字典中的定义
7100h
7200h
00h
01h
02h
00h
01h
02h
入口数目
A
B
入口数目
C
D
U8
U16
U8
U8
U16
U8
值
02h
--
--
02h
--
--
权限
rw
rw
rw
rw
rw
rw
其中名称为 A、B、C、D 的条目起初并没有实际值,接受节点 1 和节点 2
的数据后,这些条目才具有相应的值。
1400h
—
表 1-11 节点 3 的 RPDO1 的通讯参数在对象字典中的定义
值
数据类型
RPDO1
00h
入口数目
01h 接收 PDO 标识符
02h
03h
04h
传输类型
禁止时间
Reserved
U8
U32
U8
U16
——
05h
180h+Nod
eID
FFh
0
——
CANopen 工作流分析
Date: 2011-5-20
V1.0
6
权限
ro
rw
rw
rw
rw
机械工程学院机械设计及理论研究所
05h
event timer
U16
0x0000h
rw
其中 RPDO1 的 COB-ID 为 181h,与节点 1 的 TPDO1 的 COB-ID 一致,实
现节点 1 与节点 3 之间的数据传输。
1600h
1401h
表 4-11 节点 3 的 RPDO1 的映射参数在对象字典中的定义
值
数据类型
RPDO1
—
00h
01h
02h
PDO 映射数目
A
B
U8
U32
U32
02h
7100 01 10h
7100 02 08h
表 4-12 节点 3 的 RPDO2 的通讯参数在对象字典中的定义
值
05h
RPDO2
入口数目
数据类型
—
00h
01h 接收 PDO 标识符
02h
03h
04h
05h
禁止时间
Reserved
event timer
传输类型
U8
U32
U8
U16
——
U16
280h+NodeID
FFh
0
——
0x0000h
权限
rw
rw
rw
权限
ro
rw
rw
rw
rw
rw
权限
rw
rw
rw
其中 RPDO2 的 COB-ID 为 282h,与节点 2 的 TPDO2 的 COB-ID 一致,实
现节点 2 与节点 3 之间的数据传输。
1601h
—
表 4-13 节点 3 的 RPDO2 的映射参数在对象字典中的定义
值
数据类型
RPDO2
00h
01h
02h
PDO 映射数目
C
D
U8
U32
U32
02h
7200 01 10h
7200 02 08h
4.2 节点 1 发送数据至节点 2、节点 3
4.2.1 节点 1 发送数据至总线
节点 1 的 TPDO1 报文组装如图 1-4 所示:
CANopen 工作流分析
Date: 2011-5-20
V1.0
7