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)blog

过程数据对象(PDO)服务索引

PDO分为TPDO和RPDO事件

 

PDO属于过程数据,单向传输,无需接收节点回应CAN报文来确认,属于“生产消费”模型资源

一个节点分别有 4 个 TPDO 及 4 个 RPDO 。同步

 

PDO的触发方式:

  • 事件触发Event:
当数据变化时,马上发送出去,不须要等待主机轮训才发送,因此实时性好,并且避免重复数据占用大量总线占用资源,就像数据压缩了同样。事件驱动类型的RPDO可当即处理收到的数据。
  • 远程请求或轮询RTR:
此方式就像485通讯同样,主控主动远程请求或者轮询,子设备才发送PDO。由于市面上有一些不支持远程帧的CAN控制器,不建议使用。
  • 同步传输SYNC:
CAN总线上有一个设备做为SYNC信号的生产者,其余设备做为消费者。生产者和消费者都又SYNC计数功能,消费者计数到必定时(1~240),自动发送PDO。
  • if(同步传输&&事件触发):
顾名思义,不只知足定时还知足事件触发,才发送PDO。

 

 

服务数据对象SDO

服务数据对象用于读写节点的对象字典,现只实现SDO下载和上传的全速模式,不支持正常模式也不支持块下载和上传,由于数据量不大,实现的功能足够用,SDO全速下载和上传采用应答式服务,由监控终端向节点发送服务请求,由节点返回应答。

SDO属于服务数据,“服务器客户端”模型,轮询式

SDO传送机制:

        加速传送(Expedited transfer):最多传输4字节数据

        分段传送(Segmented transfer):传输数据长度大于4字节

        块传送(Block transfer):当传送数据长度大于4字节时,多个分段只由一个确认报文应答以增长总线吞吐量

 

 

对象字典OD

CANopen 设备都须要具有对象字典(Obiect Dictionary),用来设定设备组态及进行非即时的通信。

是一个有序的对象组,每一个对象采用一个16位的索引值来寻址,为了容许访问数据结构中的单个元素,同时定义了一个8位的子索引。

三个子协议:

通讯子协议描述对象字典的主要形式,以及对象字典中的通讯对象和参数。适用于全部的CANopen设备,索引值范围为0x1000~0x1FFF

制造商自定义子协议根据需求定义对象字典项,索引值范围为0x2000~0x5FFF

设备子协议为各类不一样类型的设备定义对象字典中的对象,其索引值范围为0x6000~0x9FFFF

相关文章
相关标签/搜索