从CAN到CANOpen——准入门大全(三)

本文详细解读CANopen协议中的COB-ID功能码、节点ID组合,重点介绍PDO(过程数据对象)的tx/rx结构及参数,以及对象字典的作用和其复杂的数据结构。对象字典作为通信约定的关键,确保节点间报文解析与发送的一致性。
摘要由CSDN通过智能技术生成

第二部分、CANopen协议:

第五节、关于COB-ID:

CANopen是在基础CAN协议的基础上,仅仅对应用层做了约定而来。

CANopen里的通信对象ID叫COB-ID,仍然利用了标准帧的11位ID,只是约定高4位(7~10位)为功能码;低7位(0~6位)为节点ID(支持最多127个节点)。

功能码和节点ID组合的结果,如下图所示

第二列是功能码,第三列就是功能码和节点ID组合的结果。第三列注意的是,蓝色部分的节点ID都是从1开始。以PDO1(tx)为例,功能码0011,加上第一个节点ID:000,0001(切记,不能从0开始),组合后就是001,1000,0001,也就是16进制的181或者10进制的385。同理,PDO1(tx)最大值是0x1FF。

         上图绿色部分是广播的通讯对象,蓝色部分是点对点通讯对象。并且,从上往下优先级依次降低(由仲裁机制实现),比如SDO的优先级就比PDO低。

第六节、关于PDO:

         PDO分tx和rx两种,分别叫TPDO和RPDO。TPDO由生产者提供,不需要应答。每个节点最多只能支持4对TPDO/RPDO。以节点1为例,TPDO的COB-ID分别是0x181、0x281、0x381和0x481;RPDO的COB-ID分别是0x201、0x301、0x401、0x501。

每个TPDO或RPDO,都各自需要两套参数,分别叫通讯参数和映射参数:其中通讯参数用来设置各种总线参数,比如使用哪个COB-ID,传输类型,禁用时间和定时时间等;映射参数用来组成(TPDO)或解析(RPDO)报文中的数据域部分。所有这些参数,都放在对象字典中,收发双发拿着同一份字典,就能彼此识别对方的报文内容了。

第七节、关于对象字典:

         对象字典是一个大杂烩,里面存储着收发各方共同的通信约定。有了这份字典,总线上的各个节点,就能组织发送报文或者解析接收报文了。对象字典名字里的对象,应该是从面向对象引申来的概念,指有一定数据结构的变量。所以对象字典,理解成变量字典也行。

         对象字典的内容分配大致如下表所示,全球统一,但具体细节可以自由发挥。下图左侧的索引,是字典条目的索引号,和COB-ID没有任何关系。并且对象字典的索引实际上分为16位的主索引和8位的子索引,下表只列出了主索引。

上表中的0x1000~0x1FFF索引区,又可以细分为如下表所示的子区域。

第一行的0x1000~0x1029区域,属于已经约定好的区域,定义如下面两张图:

重点关注0x1400~0x1BFF区域,即PDO的参数对象区。

如前所述,一个节点支持4对TPDO/RPDO,每个PDO都有两套参数(通讯参数和映射参数),每套参数(不是每个参数)占用一个主索引号。所以一个节点就要占用16个主索引号来存放参数,128个节点就要占用2048个(0x800)主索引号,索引号在字典中的编号从0x1400开始,到0x1BFF结束。

实际上在字典中,通信参数放一块,映射参数放一块,分布如下图所示:

上图是PDO参数的主索引分布。但实际上的参数是成套出现的,一套参数里包含若干子参数,子参数要靠子索引来查询。下图是通信参数子索引定义:

下图是映射参数子索引定义:

映射参数最多可以映射64个对象(数据结构变量),子索引从0x01到0x40。

下图是一个具体的根据映射参数构成TPDO的例子(节点1的TPDO1):

首先生产者从[1800,01](逗号前表示主索引,逗号后表示子索引,后同)中得到COB-ID。然后从[1A00,01]中获取第一个对象。[1A00,01]中的值为0x20000108,那么第一个对象为[2000,01],对应值为A,在PDO中占0x8位。接着是第二个对象[2003,03],对应值为G,在PDO中占0x10位(16位)。最后是对象[2003,01],对应值E,在PDO中占0x8位。这样A、G、E(顺序不能颠倒)就组成了一个32位的TPDO的数据域了。

(补充建议,本篇是重中之重,对象字典的部分反复阅读三遍是起码的,阅读五六遍才能理解也不奇怪,坚持!)

canopen协议中文翻译版,帮助理解canopen。CANopen是一种架构在控制局域网路(Controller Area Network, CAN)上的高层通讯协定,包括通讯子协定及设备子协定常在嵌入式系统中使用,也是工业控制常用到的一种现场总线。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 的仲裁机制会使 COB-ID 最小的讯息继续传送,不用等待或重传。COB-ID 的前 4 个位元是 CANopen功能,因此数值小的功能表示对应的功能重要,允许的延迟时间较短。 以下是一个标的 CANopen 页框: 功能 节点 ID RTR 资料长度 资料 长度 4 位元 7 位元 1 位元 4 位元 0-8 字节 在 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:消费者需送出请求讯息,生产者才会送出数据。 CANopen参考模型: CANopen参考模型 CANopen设备 CANopen 实现了OSI模型中的网络层以上(包括网络层)的协定。CANopen包括寻址方案、数个小的通讯子协定及由设备子协定所定义的应用层。 CANopen 支援网络管理、设备监控及节点间的通讯,其中包括一个简易的传输层,可处理资料的分段传送及其组合。一般而言数据链结层及物理层会用CAN来实作。除了 CANopen 外,也有其他的通讯协定(如EtherCAT)实作 CANopen 的设备子协定。 CANopen由非营利组织CiA(CAN in Automaion)进行标的起草及审核工作,基本的 CANopen 设备及通讯子协定定义在 CAN in Automation (CiA) draft standard 301中。针对个别设备的子协定以 CiA 301 为基础再进行扩充。如针对 I/O 模组的 CiA401 及针对运动控制的 CiA402。物理层非常稳定;2. 数据链路层可靠,因为相比其他所有总线,只有CAN可以做到达到汉明间距(Hamming Distanz)为6,能够检测报文里多达5个随机引入的位错误及15位突发性错误。3. 灵活,兼容性高;4. 可互操作性高;5. 价格低 (对于设备生产商来说);6. CAN产品尺寸小,节省空间;7.支持冗余备用 CANopen 设备都需要具备对象字典,用来设定设备组态及进行非即时的通讯。对象字典的entry 定义如下: 索引 (Index):对象 16 位元的位址。 对象名称 (Object name):一个代表对象的 symbolic type,可以是阵列、纪录或只是一个变量。 名称 (Name):描述此 entry 的字串。 形态 (Type):变量的资料形态。 属性 (Attribute):提供此 entry 是否可读/可写的资料,有下列四种:可读/写、只读、唯写、只读常数。 必须 (Mandatory)/可选 (Optional)字段定义属于特定设备规范下的设备,是否必须实现某些对象。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值