CANopen通讯协议介绍

总述
canopen是一种架构在控制局域网路(control area network, can)上的高层通讯协定,包括通讯子协定及设备子协定常在嵌入式系统中使用,也是工业控制常用到的一种现场总线。
canopen 实作了osi模型中的网络层以上(包括网络层)的协定。canopen 标准包括寻址方案、数个小的通讯子协定及由设备子协定所定义的应用层。 canopen 支援网络管理、设备监控及节点间的通讯,其中包括一个简易的传输层,可处理资料的分段传送及其组合。一般而言资料链结层及实体层会用can来实作。除了 canopen 外,也有其他的通讯协定(如ethercat)实作 canopen 的设备子协定。
基本的 canopen 设备及通讯子协定定义在 can in automation (cia) draft standard 301. 中。针对个别设备的子协定以 cia 301 为基础再进行扩充。如针对 i/o 模组的 cia401 及针对运动控制的 cia402。
设备模型
以下是所有 canopen 设备都要具备的功能:
通讯单元 处理和网络上其他模组通讯所需要的通讯协定。 设备的启动及重置由状态机 (state machine)控制。状态机需包括以下的几个状态:initialization, pre-operational, operational 及 stopped。当接收到网络管理 (nmt) 通讯对象,状态机会转换到对应的状态。 对象字典 (object dictionary) 是一个有 16 位元索引 (index) 的变量阵列。每个变量可以(但非必须)有 8 位元的子索引 (subindex)。变量可用来调整设备的组态,也可以对应设备量测的资料或设备的输出。 当状态机设定为 operational 之后,设备的应用 (application) 部份就会实现设备预期的机能。此部份可以由对象字典中的变量调整其设定,而资料由通讯层传收或接收。
对象字典
canopen 设备都需要具备对象字典,用来设定设备组态及进行非即时的通讯。对象字典的entry 定义如下:
索引 (index):对象 16 位元的位址。 对象名称 (object name):一个代表对象的 symbolic type,可以是阵列、纪录或只是一个变量。 名称 (name):描述此 entry 的字串。 形态 (type):变量的资料形态。 属性 (attribute):提供此 entry 是否可读/可写的资料,有下列四种:可读/写、只读、唯写、只读常数。 必须 (mandatory)/可选 (optional)字段定义属于特定设备规范下的设备,是否必须实现某些对象。 在 canopen 标准中定义了对象字典中的基本资料型态,包括逻辑值、整数及浮点数。也定义了复合对象:如阵列、记录及字串。复合对象用一个 8 位元的数值作为其子索引(subindex)。记录或阵列中子索引 0 的位置记录此数据结构的元素个数,资料型态为 unsigned8。
通讯
通讯对象
canopen 的物理层 canbus 每次传送的资料量不大,其中包括 11 位元的 id、远端传输请求(rtr)位元及大小不超过8位元的资料。canopen 将 canbus 11 位元的 id 分为 4 位元的功能码及 7 位元的 canopen 节点 id。7 位元的 id 共有 128 种不同的组合,其中 id 0 不使用,因此一个 canopen 网络上最多允许 127 台设备。canbus 在 can 2.0 b 规格中允许 29 位元的 id,因此若配合 can 2.0 b 使用,canopen 网络上可以超过127 台设备,不过在实际运用中,大多数的 canopen 网络上设备数量均低于此数值。
canopen 将 canbus 的 11 位元 id 称为通讯对象 id (cob-id)。当传输资料出现碰撞时,canbus 的仲裁机制会使 cos-id 最小的讯息继续传送,不用等待或重传。cob-id 的前 4 个位元是 canopen 的功能码,因此数值小的功能码表示对应的功能重要,允许的延迟时间较短。
 在 canopen 标准中,部份 cob-id 被保留作网络管理及 sdo 通讯用。而在设备初始化后,有些功能码和 cob-id 会对映到标准的功能,不过后续仍可以规划为其他用途。
通讯模型
canopen 设备间的通讯可分为以下三种通讯模型。
在 master/slave 模型中,一个 canopen 设备为 master,负责传送或接收其他设备(称为 slave)的资料。nmt 协定就使用了 master/slave 模型。 主从(client/server)模型定义在 sdo 协定中,sdo client 将对象字典的索引及子索引传送给 sdo server,因此会产生一个或数个需求资料(对象字典中,索引及子索引对应的内容)的 sdo 封包。 生产者/消费者(producer/consumer)模型 用在 heartbeat and node guarding 协定。由一个生产者送出资料给消息者,同一个生产者的资料可能给一个以上的消息者。又可分为二种: push-model:生产者会自动送出资料给消费者。 pull-model:消费者需送出请求讯息,生产者才会送出资料。

传统的buck电路是电感电流控制吗?
华为荣耀magic的黑科技八曲面屏 居然使用的是三星的次等屏?
近十年全球半导体金额超1亿美元的并购案
应用于幼儿园管理的手机远程监控系统应用方案
超声波点焊机安装方法及注意事项
CANopen通讯协议介绍
tda2822m单声道电路图原理详解
苹果13什么时候上市什么配置
静态时序分析基础知识
科隆新能源提升研发实力,为我国绿色低碳发展贡献力量
Molex ML-XTTM密封连接系统为商用车市场 提供市场领先的密封件技术
壁挂式温湿度变送器的技术参数
全国各省市智能化建设中 安防行业均是深度参与者与核心受益者
VR过早进入瓶颈期?市场的可持续性面临挑战
奥松8英寸MEMS晶圆厂落地珠海
平台和大数据是物流业未来发展方向吗
极致产品定义,江波龙江波龙FORESEE 车规级UFS显现卓越的生态构建
瓦克总裁预估:多晶硅价格下滑趋势不可避免
USB Type-C和USB 3.1两者如何区分
基于DPI-C接口的UVM验证平台设计与实现介绍