CANopen协议介绍

1.CANopen协议简介

从OSI 网络模型的角度来看,CAN总线只定义了OSI网络模型的第一层(物理层) 和第二层(数据链路层),而在实际设计中,这两层完全由硬件实现,设计人员无需再为此开发相关软件或固件。

同时,CAN只定义物理层和数据链路层,没有规定应用层,本身并不完整,因此需要一个高层协议来定义CAN报文中的11/29位标识符和8字节数据的使用。而且,基于CAN总线的工业自动化应用中,越来越需要一个开放的、标准化的高层协议:这个协议支持各种CAN厂商设备的互用性、互换性,能够实现在CAN网络中提供标准的、统一的系统通讯模式,提供设备功能描述方式,执行网络管理功能。

CANopen协议是CAN-in-Automation(CiA)
定义的标准之一,并且在发布后不久就获得了广泛的承认。尤其是在欧洲, CANopen 协议被认为是在基于CAN
的工业系统中占领导地位的标准。大多数重要的设备类型,例如数字和模拟的输入输出模块、驱动设备、操作设备、控制器、可编程控制器或编码器,都在称为“设备描述”的协议中进行描述;“设备描述”定义了不同类型的标准设备及其相应的功能。依靠CANopen协议的支持,可以对不同厂商的设备通过总线进行配置。

在OSI 模型中, CAN标准、CANopen协议之间的关系如图 1-1所示。

图1-1  CAN标准、CANopen协议在OSI网络模型中的位置框图

CANopen和CAN报文的关系如图 1-2所示。

图1-2  CANopen和CAN报文的关系如所示。

CAN 报文由7个不同的位域组成,而CANopen就是规定其中的仲裁域(11 位标识符) 和数据域(8 字节数据) 的使用情况。

2.CANopen设备结构

CANopen是一个基于CAN串行总线系统和CAL(CAN应用层)的高层协议。
CANopen的核心概念是设备对象字典(OD:
ObjectDictionary),CANopen通讯通过对象字典(OD)能够访问驱动器的所有参数。CANopen设备结构如图 2-1所示。

图2-1  CANopen设备结构

2.1  CANopen对象字典

CANopen对象字典(Object Dictionary,OD)是CANopen协议最为核心的概念。所谓的“对象字典”,就是一个有序的对象组;每个对象采用一个16位的索引值来寻址。为了访问数据结构中的元素,同时定义了一个8位的子索引,对象字典的结构如表 2-1所示。

表2-1  对象字典结构

CANopen网络中每个节点都有一个对象字典。对象字典包含了描述这个设备和它的网络行为的所有参数。

CANopen对象字典中的项由一系列子协议来描述。子协议描述对象字典中每个对象的功能、名字、索引、子索引、数据类型、读/写属性,以及这个对象是否必需等,从而保证不同厂商的同类型设备兼容。

CANopen协议的核心描述子协议是DS301,包括CANopen协议应用层及通信结构描述,其他子协议都是对DS301协议描述文本的补充与扩展。

CANopen协议包含许多子协议,其主要划分为以下3类:

    1.  通信子协议

通信子协议(Communication Profile)描述对象字典的主要形式,以及对象字典中的通信对象和参数。这个子协议适用于所有的CANopen设备,其索引值范围为0x1000~0x1FFF。

    2.  制造商自定义子协议

对于在设备子协议中未定义的特殊功能,制造商可以在制造商自定义子协议(Manufacturer-specific
Profile)中根据需求定义对象字典项。因此,这个区域对不同厂商来说,相同的对象字典项的定义不一定相同,其索引值范围为0x2000~0x5FFF。

    3.  设备子协议

设备子协议(Device Profile)为各种不同类型设备定义对象字典中的对象,其索引值范围为0x6000~0x9FFF。

2.2  CANopen通信

在CANopen协议中主要定义网络管理对象(NMT)、服务数据对象(SDO)、过程数据对象(PDO)、预定义报文或特殊功能对象4种对象。

2.2.1  网络管理对象

网络管理对象负责层管理、网络管理和ID分配服务,例如,初始化、配置和网络管理。网络管理中,同一个网络中只允许有一个主节点、一个或多个从节点,并遵循主/从模式。

2.2.2  服务数据对象

服务数据对象主要用于主节点对从节点的参数配置。服务确认是SDO最大的特点,为每个消息都生成一个应答,以确保数据传输的准确性。在一个CANopen系统中,通常CANopen从节点作为SDO服务器,CANopen主节点作为客户端。客户端通过索引和子索引能够访问数据服务器上的对象字典,所以CANopen主节点可以访问从节点的任意对象字典项的参数,并且SDO可以传输任何长度的数据(当数据长度超过4字节时,拆分成多个报文来传输)。

2.2.3  过程数据对象

过程数据对象用来传输实时数据,其传输模型为生产者-消费者模型,数据长度被限制为1~8字节。

PDO通信对象具有如下特点:

    1.     PDO通信没有协议规定,PDO数据内容由它的COB-ID定义。

    2.     每个PDO在对象字典中用2个对象描述,分别是PDO通信参数和映射参数。

1)  PDO通信参数:定义该设备所使用的COB-ID、传输类型、定时周期。

2) 
PDO映射参数:包含一个对象字典中的对象列表,这些对象映射到相应的PDO,其中包括数据的长度。对于生产者和消费者,只有知道这个映射参数,才能够正确地解释PDO的内容。PDO内容是预定义的,如果PDO支持可变PDO映射,那么可以通过SDO进行配置。

    3.     PDO具有2种传输方式:同步传输和异步传输。

1)  同步传输:通过接收同步对象实现同步,按触发方式又可分为非周期传输和周期传输。非周期传输由远程帧预触发,或者由设备子协议中规定的对象特定事件预触发。周期传输则通过接收同步对象来实现,可以设置1~240个同步对象触发。

2)  异步传输:由特定事件触发。按触发方式又可分为2种:一种通过发送与PDO的COB-ID相同的远程帧来触发;另一种由设备子协议中规定的对象特定事件来触发(如定时传输、数据变化传输等)。

2.2.4    预定义报文或特殊功能对象

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

    1.  同步报文(Sync)

主要实现整个网络的同步传输,每个节点都以该同步报文作为PDO触发参数,因此该同步报文的COB-ID具有比较高的优先级以及最短的传输时间。

    2.  时间标识报文(Time Stamp)

为每个节点提供公共的时间参考。

    3.  紧急事件报文(Emergency)

当设备内部发生错误时触发该对象,即发送设备内部错误码。

    4.  节点/寿命保护报文(Node/Life Guarding)

主节点可通过节点保护方式获取从节点的状态,从节点可通过寿命保护方式获取主节点的状态。

    5.  启动报文(Boot up)

从节点初始化完成后向网络中发送该对象,并进入预操作状态。

2.3  CANopen预定义连接集

为了减小简单网络的组态工作量,CANopen定义了强制性的缺省标识符(CAN-ID)分配表。这些标识符在预操作状态下可用,通过动态分配可以修改它们。CANopen设备必须向它所支持的通讯对象提供相应的标识符。

CAN-ID分配表是基于11位CAN-ID的标准帧格式,划分为4位功能码和7位节点号,如图 2-2所示。

图2-2  预定义连接集ID

Node-ID由系统集成商定义,每个CANopen设备都需要分配一个节点号,节点号的范围是1~127(0不允许被使用)。

预定义连接集定义了4个接收PDO,4个发送PDO,1个SDO(占用2个CAN-ID),1个紧急对象和1个节点错误控制。支持无需确认的NMT模块控制服务、同步和时间标识对象报文。缺省ID分配表如表 2-2所示。

表2-2 CANopen预定义主/从连接集CAN标识符分配表

注意:

1)  PDO/SDO 发送/接收是由(slave)CAN节点方观察的。

2)  NMT 错误控制包括节点保护(NodeGuarding),心跳报文(Heartbeat)和Boot-up协议。

3.参考资料

《CANopen:high-level protocol for CAN-bus》

《项目驱动—CAN-bus现场总线基础教程》

时间: 2024-11-09 08:56:17

CANopen协议介绍的相关文章

CAN协议与CANOpen协议

这里详细介绍了CAN协议中数据通信帧每位的含义,有图片,值得一看:https://www.cnblogs.com/pejoicen/p/3986587.html 这里介绍了CanOpen协议,https://blog.csdn.net/plc_jianghao/article/details/77824241 先看上面链接,再看下面应该差不多明白了. 原文地址:https://www.cnblogs.com/kanite/p/9224482.html

LDAP协议介绍

LDAP协议基础概念 1. 从用途上阐述LDAP,它是一个存储静态相关信息的服务,适合"一次记录多次读取".经常使用LDAP服务存储的信息: 公司的物理设备信息(如打印机,它的IP地址.存放位置.厂商.购买时间等)  公开的员工信息(地址.电话.电子邮件-)  合同和账号信息(客户信息.产品交付日期.投标信息.项目信息-)  凭证信息(认证凭证.许可证凭证-) 2. 从数据结构上阐述LDAP,它是一个树型结构,能有效明白的描写叙述一个组织结构特性的相关信息.在这个树型结构上的每一

流媒体协议介绍

RTP 参考文档 RFC3550/RFC3551 Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议.RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式.RTP协议常用于流媒体系统(配合RTCP协议),视频会议和一键通(Push to Talk)系统(配合H.323或SIP),使它成为IP电话产业的技术基础.RTP协议和RTP控制协议RTCP一起使用,而且它是建立在UDP协议上的. RTP 本身并没有提供按时发送机制或其它

(笔记)CanOpen协议【CanFestival】移植方法 支持VC、QT、STM32

转自http://bbs.21ic.com/icview-878522-1-1.html 前段时间学习了CanOpen协议,到网上下载的CanFestival3-10源码,移植到VC.QT.STM32等平台,由于网上的资源较少,走了不少弯路,移植好使用过程中才逐渐暴露出各种问题,比如OD字符串传输.心跳时间不准确等等,现在已经解决了遇到的所有问题,移植出来的工程能够完好支持CanOpen协议,花了点时间,整理出一个简单易用的移植方法说明,也写了一些比较实用的调试工具,本来还想整理SDO.PDO.

数字证书常见格式与协议介绍

引:http://blog.csdn.net/anxuegang/article/details/6157927 证书主要的文件类型和协议有: PEM.DER.PFX.JKS.KDB.CER.KEY.CSR.CRT.CRL .OCSP.SCEP等. PEM – Openssl使用 PEM(Privacy Enhanced Mail)格式来存放各种信息,它是 openssl 默认采用的信息存放方式.Openssl 中的 PEM 文件一般包含如下信息: 内容类型:表明本文件存放的是什么信息内容,它的

【转】(笔记)CanOpen协议【CanFestival】移植方法

一.背景 CAN组网就必须得要应用层协议,原因就在于 * 便于网络管理与控制 * 确认数据的收发 * 发送大于8个字节的数据块(CAN每帧数据传输大小为8字节) * 为不同节点分配不同的报文标识符 * 定义帧报文的内容及含义(这在我看来是最主要的原因) * 网络的监控,节点故障的诊断与标识 CAN上层协议有许多,用大家都公认的,便于产品的兼容,因此,CANOpen成为备选项. CANOpen有个开源协议栈[CANFestival],同时有一位大神已经做了移植并记录,在此就厚着脸皮转载过来以做备份

JSON-RPC轻量级远程调用协议介绍及使用

JSON-RPC轻量级远程调用协议介绍及使用 目录 技术简介    1 一.JSON-RPC协议描述    1 二.JSON-RPC调用简单示例    1 2.1.服务器端Java调用示例    1 2.2.Java客户端调用示例    2 2.3.PHP客户端调用示例    2 2.3.JavaScript客户端调用示例    2 2.4.直接GET请求进行调用    2 三.JSON-RPC总结    3 参考文档    3 技术简介 json-rpc是基于json的跨语言远程调用协议,比x

常用音频协议介绍&&有关音频编码的知识与技术参数

(转载)常用音频协议介绍 会议电视常用音频协议介绍及对比白皮书 一.数字化音频原理:声音其实是一种能量波,因此也有频率和振幅的特征,频率对应于时间轴线,振幅对应于电平轴线.通常人耳可以听到的频率在20Hz到20KHz的声波称为为可听声,低于20Hz的成为次声,高于20KHz的为超声,多媒体技术中只研究可听声部分. 可听声中,话音信号的频段在80Hz到3400Hz之间,音乐信号的频段在20Hz-20kHz之间,语音(话音)和音乐是多媒体技术重点处理的对象. 由于模拟声音在时间上是连续的,麦克风采集

各种开源协议介绍 BSD、Apache Licence、GPL V2 、GPL V3 、LGPL、MIT

现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种(http://www.opensource.org/licenses /alphabetical).我们在常见的开源协议如BSD, GPL, LGPL,MIT等都是OSI批准的协议.如果要开源自己的代码,最好也是选择这些被批准的开源协议. 这里我们来看四种最常用的开源协议及它们的适用范围,供那些准备开源或者使用开源产品的开发人员/厂家参考. BSD开源协议(original BSD li