logo资料库

CANopen协议分析.pdf

第1页 / 共25页
第2页 / 共25页
第3页 / 共25页
第4页 / 共25页
第5页 / 共25页
第6页 / 共25页
第7页 / 共25页
第8页 / 共25页
资料共25页,剩余部分请下载后查看
根据 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)
分享到:
收藏