从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展示了CiA1301中指定的CANopen FD协议。相比CANopen使用经典CAN数据链路层,数据段提供8字节有效负载,CANopen FD是基于CAN FD,数据段有效负载提升到64字节,解决了某些应用中出现数据段不够用的问题。
一、NMT网络管理协议
网络管理系统(NMT)负责启动网络和监控设备。工程师将CANopen FD网络管理系统设计成一种主/从系统。在CANopen FD网络中只允许存在一个活动的NMT主机,所有CANopen FD设备都具有NMT从机功能,并且由NMT主机来启动、监控、重启,同时分配给唯一的节点ID。
为了方便管理设备,所有设备都内置一个内部状态机,状态之间的转变由内部事件或者主机外部触发。
NMT从站状态机由初始化状态,预操作状态,操作状态和停止状态组成,其状态转换方式如图1所示。
控制设备状态的NMT指令,通过具有最高优先级的CAN标识符来发送。CANopen FD设备一旦接收到控制设备状态的NMT指令,则必须进行转换。如图2所示,NMT协议映射到具有两个字节数据长度的单个CAN FD数据帧。第一个字节确定要发出去的指令,即指令说明符;第二个字节指定CANopen FD设备的节点ID。
在CANopen FD网络中通过错误控制协议(如图3启动协议、如图4心跳协议)可以监视CANopen FD设备是否仍在网络中,并且处于预期的NMT FSA状态,同时也可以检测到新加入网络的CANopen FD设备。所有的CANopen FD设备都是基于相同的CAN FD信息,并具有CANopen FD设备的CAN-ID700H+节点ID。
注意:CANopen FD不支持CAN远程框架,因此不支持CANopen节点/生命防护。
三、紧急通讯对象协议(EMCY)
当CANopen FD设备内部发生错误时,会由紧急错误生产者发送EMCY,从而触发中断报警。每次发生错误事件只会发送一次EMCY,并且以广播的方式发送给任何支持EMCY功能的设备上,进而针对错误进行调整。没有新错误发生时,将不再发送EMCY报文如图5所示。
四、SYNC同步协议
与CANopen相同,CANopen FD设备中,SYNC同步协议是由生产者定期发送,用于网络同步。所有CANopenFD设备都可以作为SYNC的生产者。通常情况下,SYNC协议用作总线负载管理。SYNC报文提供1字节的SYNC计数器值。每次发送SYNC,对应计数器就会加1。同时,SYNC的传输周期是可以配置的,计数器初值为1,最大值可在数据对象同步计数器溢出寄存器(1019H)进行配置,如图6所示。
五、时间戳协议
时间戳协议可以使CANopen FD系统调整到唯一的网络时间。由CANopen FD主站设备发出,用于同步所有从站的内部时钟。时间戳被映射到一个6字节长度的CAN单帧。如图7所示,默认情况下,该CAN帧具有标识符100h。这六字节长度的数据提供“时间“”信息,该信息是以午夜之后的毫秒数和自1984年1月1日以来的天数。
CANopen到CANopen FD的改变之处
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协议传输。
对于较长的数据对象,如类型为域的数据,超过了7字节,加速USDO传输方式效率并不是很高。类似于CANopen协议,CANopen FD协议中为了提高USDO传输的效率,引入一种扩展USDO传输方式,即块传输。这种USDO传输方式效率更高、速度更快。这种块传输的基本原理就是将数据划分为几个单一的包,在连续的请求或者应答中逐块传输这些包。如图10所示,是USDO块传输方式。
USDO客户端告知USDO服务器目标索引和子索引以及预期的数据类型和长度。USDO服务器确认其请求后,给出其可以处理的最大块的大小(连续块消息的数量)。USDO客户端就会发出第一块的各个分段,知道服务器确认接收结束。
过程数据对象(PDO)在CANopen FD中用于广播高优先级控制和状态信息。一个PDO由一个CAN数据帧组成,并可以通信多达64个字节的数据。但是,CAN FD数据帧的数据长度从8字节之后呈非线性规律。因此,当PDO生产者使用填充字节将PDO填充到下一个支持的CAN FD帧长度时,PDO的消费者可能会收到比预期更多的数据。如图11所示。
现如今,工业物联网在逐步发展崛起,慢慢走向成熟。嵌入式也在向云应运程序中集成发展,大数据时代需要更多的数据来进行更准确更安全的算法分析。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之间任意可编程。满足工业级要求,支持在线固件升级等。
USBCANFD系列CAN FD接口卡
在CANopen FD设备的使用过程中,经常会通过抓取底层的CAN FD报文来进行数据分析或者排除故障等。如图13所示是广州致远电子有限公司开发的高性能CANFD接口卡,集成1-2路CANFD接口,每个接口具备独立的2500VDC电气隔离保护电路,使接口卡避免由于地环流的损坏,增强系统在恶劣环境中使用的可靠性。PC通过USB2.0端口连接USBCANFD接口卡,从而能与CAN(FD)网络进行数据收发,构成CAN(FD)-bus控制节点。