CANOpen学习笔记(一)

资源:

canopen官方介绍
canopen开源代码下载

介绍 :

学习CANopen协议主要需要了解五大部分:对象字典,PDO, SDO, NMT,特殊协议。同时需要了解COB-ID的概念:在SDO和PDO中COB-ID前四位代表功能码,后7位是node-ID.

功能码例如:600h表示问,580h表示答


  • 对象字典

对象字典是一个描述了节点所有参数的有序列表,每个对象都有个索引每个索引内具体的参数,最大用 32 位的变量来表示。对象字典主要数据分布如下:

通讯对象子协议区制造商特定子协议区标准化设备子协议区
1000h to 1FFFh2000h to 5FFFh6000h to 9FFFh
通讯对象子协议区:
通用通讯对象SDO 参数对象安全对象PDO 参数对象SDO 管理对象配置管理对象程序控制对象网络管理主机对象
1000h to 1029h1200h to 12FFh1300h to 13FFh1400h to 1BFFh1F00h to 1F11h1F20h to 1F27h1F50h to 1F54h1F80h to 1F89h
制造商特定子协议:

各个厂商不尽相同,例如:

RPDO通信参数RPDO映射参数TPDO通信参数TPDO映射参数
1400h to 15FFh1600h to 17FFh1800h to 19FFh1A00h to 1BFFh

1.NMT节点状态
NMT全称Network management,节点上电后后又6种状态,其中有5个分别为状态NMT可以控制分别为应用层复位、通讯复位、预操作状态、操作状态、停止状态,不能控制初始化状态

2: boot-up message
3
4
5
6
8
7
9,10,11
9,10,11
9,10,11
12,13,14
12,13,14
12,13,14
1:初始化
应用层复位
通讯复位
预操作状态
停止状态
操作状态
对象字典索引范围2000h to FFFFh已经复位
对象字典索引范围1000h to 1FFFh已经复位
初始化应用层复位通讯复位预操作状态操作状态停止状态
节点上电,can控制器初始化应用程序复位(开始)开始通讯禁止PDO,可配置NMT,SDO收到主机启动命令后通讯激活通讯停止,但可以SDO,NMT
123,64,75,89,10,1112,13,1415
上电自动切换到预操作状态网络管理切换到操作状态网络管理切换到预操作状态网络管理切换到停止状态网络管理切换到应用层复位状态网络管理切换到通讯复位状态掉电或者硬件复位

2.NMT节点上线报文
从站上线必须发出的节点上线报文(boot-up), 数据为 1 个字节 0

3.NMT节点状态与心跳报文
从站按一定的星跳生产时间向主机发送心跳报文,以便主站确认从站是否故障。心跳报文格式:CANID与节点上线报文相同为 700h+Node-ID,数据为 1 个字节,代表节点目前的状态, 04h为停止状态, 05h为操作状态, 7Fh为预操作状态

4.NMT节点守护
除了心跳报文还可以通过轮询模式监视从站状态。该模式逐渐被淘汰所以不详述

5.NMT节点状态切换命令
状态切换命令报文的CANID为000h,最高优先级
第一字节:

01h02h80h81h82h
启动停止进入预操作复位节点应用层复位节点通讯

第二字节:
第二字节为node-ID,若为0则是控制所有节点


PDO是属于过程数据,是单向的,是为了提高通信效率而规定的。数据长度不超过8字节。PDO也分为RPDO,TPDO

1.PDO的传输形式

  • 同步传输
    1.循环传输
    同步传输就是通过同步报文让所有节点能在同一时刻进行上传数据或者执行下达的应用指令,循环同步则是主机周期性发送同步报文,所有从机同时上传数据。
    2.非循环传输
    非循环同步是由远程帧出发或者协议规定的对象特定时间预出发传送。

  • 异步传输
    1.内部事件触发
    定时传输或者数据改变出发传输
    2.远程请求
    通过发送与 PDO 的 COB-ID 相同的远程帧来触发 PDO的发送

2.PDO的通信参数
通信参数存放在对象字典中。图片来源于《canopen轻松入门》

  • nhibit time 生产禁止约束时间(1/10ms):约束 PDO 发送的最小间隔,避免导致总线负载剧烈增加,比如数字量输入过快,导致状态改变发送的 TPDO 频繁发送,总线负载加大,所以需要一个约束时间来进行“滤波”,这个时间单位为 0.1ms;
  • Event timer 事件定时器触发的时间(单位 ms):定时发送的 PDO,它的定时时间,如果这个时间为 0,则这个 PDO 为事件改变发送。
  • SYNC start value 同步起始值:同步传输的 PDO,收到诺干个同步包后,才进行发送,这个同步起始值就是同步包数量。比如设置为 2,即收到 2 个同步包后才进行发送
    图片来源于《canopen轻松入门》

3.PDO的映射参数
映射参数代表PDO通信想要读写的对象字典的索引和子索引,字节数。


SDO不同于PDO,他是服务确认类型,每个消息都会有一个应答。传输数据长度不限。

1.SDO通信原则

CAN-ID+数据
CAN-ID+数据
客户端
服务器端

发送报文CAN-ID:600h + 接受Node-ID,回应报文CAN-ID:580h + 接受Node-ID,数据长度均为8字节,不存在的补0.

2.快速SDO协议
快速SDO读写的值不能超过32位,命令中有索引,子索引,和数据。

图片来源于《canopen轻松入门》
图片来源于《canopen轻松入门》

3.普通 SDO 协议
当传输数据超过32位时,需要普通SDO分帧传输。

下载协议,图片来源于《canopen轻松入门》
图片来源于《canopen轻松入门》

上传协议,图片来源于《canopen轻松入门》
图片来源于《canopen轻松入门》


为了方便 CANopen 主站对从站管理。在 CANopen 协议中,已经为特殊的功能预定义了 COB-ID,其主要有以下几种特殊报文。

1.同步协议
同步报文由NMT主机发出以实现整个网络的同步传输(例如触发PDO传输),同步报文的CAN-ID为80h,数据为0字节

相关参数设定:

1007h同步窗口时间同步帧发送后PDO响应的有效时间
1006h通讯循环周期同步帧的循环周期

2.时间戳协议
为实现时间同步,NMT主机发送时间戳。CAN-ID是100h,数据六个字节,表示当前时刻与1984年1月1日时的时间差

3.紧急报文协议
从机向主机发送内部错误代码, CAN-ID存储在 1014h的索引中, 一般会定义为 080h +node-ID, 数据包含 8 个字节

骗阅览量链接:

快速学习can总线(一)

快速学习can总线(二)

CANOpen学习笔记(一)

CANOpen学习笔记(二)

CANOpen源码剖析

  • 11
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值