CANOpen协议的嵌入式简化分析及功能介绍

  CANopen是一种架构在控制局域网路(Controller Area Network, CAN)上的高层通讯协定,包括通讯子协定及设备子协定常在嵌入式系统中使用,也是工业控制常用到的一种现场总线。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。

  本说明是CAN上层协议CANOpen协议的嵌入式简化,较原始CANOpen版本简单易用,且更适应嵌入式模块通讯的需要,高级职称 计算机模块并且兼容CANOpen协议。

  说明:一般终端主节点是指上位机,如上位用于网络管理和监控的PC机,从节点是指被管理的各模块。

  如果节点ID是0表示命令会被广播至所有从节点,从节点必须执行相应的命令。

  过程数据对象用于在节点之间传送过程数据,如I/O模块I/O状态读取和设定,模拟量采集和模拟量输出等等,本协议考虑从机硬件限制最多支持4组PDO,每组包含一个RPDO和一个TPDO,现已I/O模块为例进行说明:

  设I/O模块有24输入,24输出,24输入通过TPDO传给监控终端或其他节点,24输出通过RPDO由控制节点对其进行设定,采用发送和接收PDO1组,即标识符TPDO:0x180+NODE_ID,RPDO:0x200+NODE_ID,用3个字节就可以表示24个I/O量,因此发送和接收PDO可以表示如下(假设NODE_ID=1):

  如果是8通道的模拟量采集模块则需要两个TPDO来传送采集的数据,不需要RPDO,因为每个通道产生一个16位数据,一共是16字节,每个TPDO只能够传送8字节。两个TPDO标识符分别为:0x180+NODE_ID,0x280+NODE_ID。

  服务数据对象用于读写节点的对象字典,现 只实现SDO下载和上传的全速模式,不支持正常模式也不支持块下载和上传,因为数据量不大,实现的功能足够用,SDO全速下载和上传采用应答式服务,由监控终端向节点发送服务请求,由节点返回应答。

  错误控制用于了解总线上各节点的状态,本文只实现心跳协议,由各节点向监控终端定期发送心跳报文,报告本节点的状态,报文如下:

  节点在启动之后发出BOOTUP心跳,然后按固定频率发出脉动消息帧,监控终端接收该报文用以检测该节点状态.

  相关推荐:《嵌入式技术 基础课程》之逆向-X86汇编《嵌入式技术基础视频课程》之ARM汇编《嵌入式技术 基础视频课程》之 8051汇编(基础部分)

  声明:本文由入驻电子说专栏的作者撰写或者网上转载,观点仅代表作者本人,不代表电子发烧友网立场。如有侵权或者其他问题,请联系举报。侵权投诉

  宜鼎推CANopen 通讯协议,为CAN bus嵌入式设备提供全面应用解决方案

本文由泰州市功放模块有限公司发布于使用说明,转载请注明出处:CANOpen协议的嵌入式简化分析及功能介绍

相关阅读