CANopen的相关学习
Posted shinedaisiki
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CANopen的相关学习相关的知识,希望对你有一定的参考价值。
CANopen是一种架构在控制局域网路(Controller Area Network, CAN)上的高层通讯协定,包括通讯子协定及设备子协定常在嵌入式系统中使用,也是工业控制常用到的一种现场总线。
由于CAN总线只定义了物理层和数据链路层,并没有定义应用层,因此需要CANopen通信协议来统一度量,把各种设备标准化。CANopen 实现了OSI模型中的网络层以上(包括网络层)的协定。
标准的 CANopen 页框:
CANopen 将 CANbus 的 11 位元 ID 称为通讯对象 ID (COB-ID)。分为 4 位元的功能码及 7 位元的 CANopen 节点 ID。
7 位元的 ID 共有 128 种不同的组合,其中 ID 0 不使用,因此一个 CANopen 网络上最多允许 127 台设备。
应用CANopen时,需要传递的配置信息和应用信息都放在过程数据对象PDO(Process data object)和服务数据对象SDO(Service data object)
过程数据对象(PDO)服务
PDO分为TPDO和RPDO
PDO属于过程数据,单向传输,无需接收节点回应CAN报文来确认,属于“生产消费”模型
一个节点分别有 4 个 TPDO 及 4 个 RPDO 。
PDO的触发方式:
- 事件触发Event:
- 远程请求或轮询RTR:
- 同步传输SYNC:
- if(同步传输&&事件触发):
服务数据对象SDO
服务数据对象用于读写节点的对象字典,现只实现SDO下载和上传的全速模式,不支持正常模式也不支持块下载和上传,因为数据量不大,实现的功能足够用,SDO全速下载和上传采用应答式服务,由监控终端向节点发送服务请求,由节点返回应答。
SDO属于服务数据,“服务器客户端”模型,轮询式
SDO传送机制:
加速传送(Expedited transfer):最多传输4字节数据
分段传送(Segmented transfer):传输数据长度大于4字节
块传送(Block transfer):当传送数据长度大于4字节时,多个分段只由一个确认报文应答以增加总线吞吐量
对象字典OD
CANopen 设备都需要具备对象字典(Obiect Dictionary),用来设定设备组态及进行非即时的通讯。
是一个有序的对象组,每个对象采用一个16位的索引值来寻址,为了允许访问数据结构中的单个元素,同时定义了一个8位的子索引。
以上是关于CANopen的相关学习的主要内容,如果未能解决你的问题,请参考以下文章
canOpen学习九之canOpen应用实现主机自动发送同步帧