马上注册,享受更多特权
您需要 登录 才可以下载或查看,没有帐号?立即注册 ![](source/plugin/zhanmishu_wechat/template/static/img/wechat_login.png)
x
本帖最后由 C3143 于 2020-2-9 19:38 编辑
2.2.1 CiA301协议简介
CAN(Controller Area Network)现场总线仅仅定义了第1层、第2层(见ISO11898标准); 实际设计 中, 这两层完全由硬件实现, 设计人员无需再为此开发相关软件(Software)或固件(Firmware)。同时, CAN只定义物理层和数据链路层, 没有规定应用层, 本身并不完整, 需要一个高层协议来定义CAN报文中的11/29 位标识符、8字节数据的使用。
CANopen是一种架构在CAN上的高层通讯协定,CiA301协议规定了基本的CANopen通讯子协定和设备子协定。
CiA301定义了 CANopen 应用层。包括数据类型、编码规则、对象字典以及CANopen 通信服务协议。此外, 还定义了CANopen 网络管理服务协议。
CiA301协议规定了 CANopen 通信协议, 例如物理层、通信对象标识符预定义连接集、应急对象 (Emergency)、时间戳和同步通信对象。
2.2.2 对象字典的概念
CANopen 对象字典(OD: Object Dictionary)是 CANopen 协议最为核心的概念。所谓的对象字典就是一个有序的对象组,描述了对应 CANopen 节点的所有参数,包括通讯数据的存放位置也列入其索引,这个表变成可以传递形式就叫做EDS。
每个对象采用一个16位的索引值来寻址,这个索引值通常被称为索引,其范围在0x0000到 到 0xFFFF 之间。为了避免数据大量时无索引可分配,所以在某些索引下也定义了一个 8位的索引值,这个索引值通常被称为子索引,其范围是0x00到0xFF之间。每个索引内具体的参数,最大用32位的变量来表示,即 Unsigned32 ,四个字节。
CANopen 对象字典中的项由一系列子协议来描述。子协议为对象字典中的每个对象都描述了它的功能、名字、索引、子索引、数据类型,以及这个对象是否必需、读写属性等等,这样可保证不同厂商的同类型设备兼容。
CANopen 协议的核心描述子协议是 DS301,其包括了 CANopen 协议应用层及通信结构描述,其它的协议子协议都是对 DS301 协议描述文本的补充与扩展。在不同的应用行业都会起草一份 CANopen 设备子协议,子协议编号一般是 DS4xx 。
1 对象字典的概述
![](data/attachment/album/202002/08/142049gwbbqjiazwwwa5gz.png)
2 通讯对象子协议区
通讯对象子协议区(Communication profile area)定义了所有和通信有关的对象参数,其中索引范围 1000 h to 1029 h 为通用通讯 对象,所有 CANopen节点都必须具备这些索引,否则将无法加入 CANopen 网络。
![](data/attachment/album/202002/08/142138jtwj2j0w1101i8hd.png)
3 通用通讯对象
由于通用通讯对象十分重要,NMT主站(CANopen主站)在启动时,通常都全部或者部分读取 所有从站中 通用通讯对象中的索引,所以所有的通用通讯对象都必须在CANopen从站中实现,使用者也必须熟知这些索引地址与其含义。
![](data/attachment/album/202002/08/150737ogtcao1prrp1p1gp.png)
![](data/attachment/album/202002/08/150753g9h3toootxoz8gog.png)
4 制造商特定子协议
对象字典索引2000 h to 5FFF h 为制造商特定子协议,通常是存放所应用子协议的应用数据。而上文所描述的通讯对象子协议区(Communication profile area)是存放这些应用数据的通信参数。对于在设备子协议中未定义的特殊功能,制造商也可以在此区域根据需求定义对象字典对象。因此这个区域对于不同的厂商来说,相同的对象字典项其定义不一定相同。
5 标准化设备子协议
标准化设备子协议,为各种行业不同类型的标准设备定义对象字典中的对象。目前已有十几种为不同类型的设备定义的子协议,例如 DS401、DS402、DS406 等,其索引值范围为 0x6000~0x9FFF。同样,这个区域对于不同的标准化设备子协议来说,相同的对象字典项其定义不一定相同。
2.2.3 PDO与SDO的区别
PDO:过程数据对象(Process Data Object),过程数据的发送,实时、速度快,提供对设备应用对象的直接访问通道,它用来传输实时短帧数据,具有较高的优先权。PDO 传输的数据必须少于或等于 8 个字节,在应用层上不包含传输控制信息,报文利用率极高。
SDO:服务数据对象(Service Data Obiect),服务数据的发送接收,实时性要求不高,SDO一般用来配置和获得节点的配置参数(即主要用于从站的配置),其优先级只比心跳(Heartbeat)高。
区别:
1 数据长度:PDO的数据长度为1-8个字节,SDO的数据长度均为8个字节。
2 通讯模型:PDO为生产者-消费者通讯模型,单向传输,无需接收节点回应CAN报文来确认。SDO为客户端-服务器通讯模型,需一问一答。
3 对象字典的使用:SDO使用对象字典的Index和SubIndex来访问CAN节点的对象字典,可以读或者写。而PDO则不使用Index和SubIndex,它是两个CANopen节点间约定好传输的数据内容对应哪些对象字典索引,收到数据后就直接读写相应的对象字典索引里的值。
4 作用时间:SDO主要用于从站的配置,PDO主要用于过程数据的发送。
5 实时性:SDO实时性要求不高,PDO实时性高速度快。
2.2.4 PDO种类与区别
TPDO:以CANopen从站节点自身为参考,TPDO用来传输数据,支持TPDO的节点都是PDO数据的生产者。
RPDO:以CANopen从站节点自身为参考,RPDO用来接收PDO数据,支持RPDO的节点是PDO数据的消费者。
|