从CANopen到CANopen FD的技术升级

2019年11月21日,在SPS 2019庆祝30周年展会上,CiA组织通过两个网桥连接的网络展示了从经典CANopen到CANopen FD的移植 。那么CANopen FD的出现带来哪些变化?这里重点介绍一下CANopen FD的特性 。
自1991年颁布了CAN 2.0技术规范起,CiA便一直致力于CAN协议的推广,其中包括CAN底层(CAN数据链路层、CAN物理层)设计及CAN的应用层(CANopen) 。CANopen协议在CiA 301中明确规定其PDO、SDO、NMT网络管理等协议的规范,并使用经典CAN数据链路层,而在SPS展会中CiA展示了CiA 1301中指定的CANopen FD协议 。相比CANopen使用经典CAN数据链路层,数据段提供8字节有效负载,CANopen FD是基于CAN FD,数据段有效负载提升到64字节,解决了某些应用中出现数据段不够用的问题 。
一、CANopen协议升级到CANopen FD的相同之处
1.   NMT网络管理协议
网络管理系统(NMT)负责启动网络和监控设备 。工程师将CANopen FD网络管理系统设计成一种主/从系统 。在CANopen FD网络中只允许存在一个活动的NMT主机,所有CANopen FD设备都具有NMT从机功能,并且由NMT主机来启动、监控、重启,同时分配给唯一的节点ID 。
为了方便管理设备,所有设备都内置一个内部状态机,状态之间的转变由内部事件或者主机外部触发 。
NMT从站状态机由初始化状态,预操作状态,操作状态和停止状态组成,其状态转换方式如图1所示  。
图  1  NMT网络管理示意图
控制设备状态的NMT指令,通过具有最高优先级的CAN标识符来发送 。CANopen FD设备一旦接收到控制设备状态的NMT指令,则必须进行转换 。如图2所示,NMT协议映射到具有两个字节数据长度的单个CAN FD数据帧 。第一个字节确定要发出去的指令,即指令说明符;第二个字节指定CANopen FD设备的节点ID 。
图 2  NMT协议示意图
2.   错误控制协议
在CANopen FD网络中通过错误控制协议(如图3启动协议、如图4心跳协议)可以监视CANopen FD设备是否仍在网络中,并且处于预期的NMT FSA状态,同时也可以检测到新加入网络的CANopen FD设备 。所有的CANopen FD设备都是基于相同的CAN FD信息,并具有CANopen FD设备的CAN-ID700H+节点ID 。
注意:CANopen FD不支持CAN远程框架,因此不支持CANopen节点/生命防护 。
图  3  启动协议示意图
图  4  心跳协议示意图
3.   紧急通讯对象协议(EMCY)
当CANopen FD设备内部发生错误时,会由紧急错误生产者发送EMCY,从而触发中断报警 。每次发生错误事件只会发送一次EMCY,并且以广播的方式发送给所有支持EMCY功能的设备上,进而针对错误进行调整 。没有新错误发生时,将不再发送EMCY报文如图5所示 。
图  5  紧急通讯对象协议EMCY示意图
4.   SYNC同步协议
与CANopen相同,CANopen FD设备中,SYNC同步协议是由生产者定期发送,用于网络同步 。所有CANopenFD设备都可以作为SYNC的生产者 。通常情况下,SYNC协议用作总线负载管理 。SYNC报文提供1字节的SYNC计数器值 。每次发送SYNC,对应计数器就会加1 。同时,SYNC的传输周期是可以配置的,计数器初值为1,最大值可在数据对象同步计数器溢出寄存器(1019H)进行配置,如图6所示 。




图  6  SYNC同步协议示意图
5.   时间戳协议
时间戳协议可以使CANopen FD系统调整到唯一的网络时间 。由CANopen FD主站设备发出,用于同步所有从站的内部时钟 。时间戳被映射到一个6字节长度的CAN单帧 。如图7所示,默认情况下,该CAN帧具有标识符100h 。这六字节长度的数据提供“时间“”信息,该信息是以午夜之后的毫秒数和自1984年1月1日以来的天数 。
图  7  时间戳协议示意图
二、CANopen到CANopen FD的改变之处
     1.   USDO协议 
USDO用于CANopen FD系统中的配置和诊断任务 。但是,过程数据也可以通过USDO服务进行传输 。USDO具有以下特性: 

  • USDO服务可以在单个或多个USDO服务器之间确认通信;
  • USDO客户端可以访问CANopen FD设备中所有的对象字典条目;
  •  USDO可以提供USDO服务器对象字典中一个或几个子索引的读写访问权限;
  • USDO具有路由功能,可以实现CANopen FD网络边界上的数据传输; 
  • USDO客户端和USDO服务器可以连接到不同的CAN物理层;
  • USDO客户端和USDO服务器之间可以传输任意长度的数据内容 。
如图8所示,是USDO已确认的单播、广播通信 。


图  8  USDO单播、广播通信
USDO协议“目的地地址”确定USDO是以点对点连接还是以多路或广播方式进行通信 。命令说明符决定USDO传输的类型 。会话ID用作交易编号,使客户端能够区分对同一USDO服务器的USDO访问 。与传统的CANopen SDO中一样,索引和子索引标识在USDO服务器的对象字典中访问的数据元素 。除了经典的SDO,USDO还按大小和数据类型描述要传输的数据,这使数据接收者能够执行一致性检查 。如图9所示,为加速USDO协议传输 。
图  9  加速USDO协议传输
对于较长的数据对象,如类型为域的数据,超过了7字节,加速USDO传输方式效率并不是很高 。类似于CANopen协议,CANopen FD协议中为了提高USDO传输的效率,引入一种扩展USDO传输方式:即块传输 。这种USDO传输方式效率更高、速度更快 。这种块传输的基本原理就是将数据划分为几个单一的包,在连续的请求或者应答中逐块传输这些包 。如图10所示,是USDO块传输方式 。
图 10  USDO块传输方式
USDO客户端告知USDO服务器目标索引和子索引以及预期的数据类型和长度 。USDO服务器确认其请求后,给出其可以处理的最大块的大小(连续块消息的数量) 。USDO客户端就会发出第一块的各个分段,知道服务器确认接收结束 。
     2.   PDO协议 

过程数据对象(PDO)在CANopen FD中用于广播高优先级控制和状态信息 。一个PDO由一个CAN数据帧组成,并可以通信多达64个字节的数据 。但是,CAN FD数据帧的数据长度从8字节之后呈非线性规律 。因此,当PDO生产者使用填充字节将PDO填充到下一个支持的CAN FD帧长度时,PDO的消费者可能会收到比预期更多的数据 。如图11所示 。 

图  11  PDO协议示意图
三、CANopen FD与嵌入式网络、工业物联网
现如今,工业物联网在逐步发展崛起,慢慢走向成熟 。嵌入式也在向云应运程序中集成发展,大数据时代需要更多的数据来进行更准确更安全的算法分析 。CANopen FD底层基于CAN FD提供了长达64字节的有效负载,能够更好的满足大数据时代的安全性能要求 。
CANopen FD能够更好的满足未来工业互联网的发展需求,其中重要的原因还是归功于新的USDO协议的出现 。由于USDO特性灵活,CANopen FD/IOT网关可以轻松的访问网络中的任何数据,并且通过路由功能可以进行远程网络CANopen FD设备连接和访问 。
CANopen FD减轻了开发人员处理CAN硬件特定细节的负担,例如位时序和验收过滤 。CANopen FD提供了标准化的通信对象COB,用来配置及网络管理数据 。
四、CANFDSM-100——串口转CANFD转换模块
在实际应用中,工程师经常会使用串口来收发数据或进行调试 。这样,对于CANopen FD设备的问题,我们会需要实现串口转CANFD,帮助我们更好的实现数据的传输和转换 。如图12所示, 是广州致远电子研发 的一款串口转 CAN(FD)模块CANFDSM-100,内置微处理器 。该模块支持透明转换、透明带标识符转换、格式转换、Modbus转换四种模式 。同时,该模块集成1路CANFD接口和1路UART接口 。在CAN通讯方面,可以在40Kbps~1Mbps之间任意可编程;在CANFD通讯方面,可以在1Mbps~5Mbps之间任意可编程 。满足工业级要求,支持在线固件升级等 。
图 12  CANFDSM-100示意图
五、USBCANFD系列CAN FD接口卡
在CANopen FD设备的使用过程中,经常会通过抓取底层的CAN FD报文来进行数据分析或者故障排除等 。如图13所示是广州致远电子有限公司开发的高性能CANFD接口卡,集成1-2路CANFD接口,每个接口具备独立的2500VDC电气隔离保护电路,使接口卡避免由于地环流的损坏,增强系统在恶劣环境中使用的可靠性 。PC通过USB2.0端口连接USBCANFD接口卡,从而能与CAN(FD)网络进行数据收发,构成CAN(FD)-bus控制节点 。
【从CANopen到CANopen FD的技术升级】 图 13  USBCANFD-200U接口卡示意图

    推荐阅读