电子发烧友网报道(文/吴子鹏)CANopen是一种架构在控制局域网络CAN上的高层通信协议,包括通信子协议及设备子协议,常在嵌入式系统中使用,也是工业控制常用到的一种现场总线。
在CAN的基础上,CANopen定义了应用层的通信规则,因此特别适用于需要标准化设备配置和网络管理的嵌入式网络。
CANopen协议简介
1994年发布的国际标准ISO 11898-2定义了CAN总线的物理层和数据链路层,CANopen在此基础上构建了更上层的协议,随后在工业自动化、汽车电子等领域得到了广泛应用。
CANopen实现了OSI模型中的网络层以上(包括网络层)的协定,包括寻址方案、数个小的通讯子协定及由设备子协定所定义的应用层。因此,CANopen和CAN属于两种不同的通信协议,CAN是底层通信协议,CANopen则属于CANBUS,也就是CAN总线的一种高层协议,提供了设备配置、网络管理、数据传输协议等更高层次的功能。
CAN和CANopen功能层的差异感受是最直观的,CANopen提供的高级通信功能包括网络管理(NMT)、服务数据对象(SDO)传输、过程数据对象(PDO)传输等,适用于工业自动化、医疗设备、船舶等复杂系统中需要多设备协调的应用。
发展至今,CANopen已经定了非常多的高级协议,最重要的是CiA DS(Device Specification)和DS301/DS302标准。其中,DS301定义了CANopen协议的基本特性,而DS302定义了CANopen设备的特定要求。
另外,CANopen也引入了一些关键的技术细节。比如,对象字典(Object Dictionary)是CANopen里面的关键组件,CANopen、设备都需要具备对象字典,用来设定设备组态及进行非即时的通讯。对象字典中每一个对象对应于一个16bit索引和8bit子索引(部分对象没有子索引,或者认为子索引为0),其属性包括是否可读以及是否可写,对象字典的长度可以是8bit、16bit和32bit。另外,对象字典不仅包含了设备的配置参数,还包含了设备的实时数据和错误历史记录等。
再比如过程数据对象(PDO),用于快速访问对象字典,其作用和SDO类似,只是实现方法不同。SDO在每次发送报文时,都需要指定需要读写的对象字典的索引和子索引,以灵活地对任意对象字典进行访问,同时SDO应答报文保证了数据传输的准确性。
另外,CANopen的技术细节还包括SDO报文需要应答、NMT网络服务、SDO通信等。
CANopen解决方案
在工业自动化领域,CANopen主要用于工业机器人和自动化生产线的设备通信和控制。目前,CANopen的软硬件方案可选项非常多。
首先看一下虹科HK的SYS TEC CANopen Chip F40 - CANopen芯片,是一款即插即用,高性价比的单板计算机内含最新预先编程的CANopen固件。CANopen Chip F40提供简单和高性价比的DIP40连接器形成接口,可接入目标外设并且能把CANopen芯片转换成通用的通讯接口。工程师可以基于CANopen芯片F40实现CANopen从站设备,依据CANopen设备子协议401和CANopen通讯子协议301 V4.02。两个LED指示设备状态,依据303-3 V1.0。
再看一下西威迪的CANopen绝对值工业编码器SAS/M58。采用了高精确的磁式感应技术,支持单圈或多圈编码器,通过CANopen总线进行通信,最高传输速率可达1MHz。此外,该编码器还支持额外增加增量信号TTL或HTL输出,使得信号输出更加丰富。在分辨率方面,单圈分辨率最高可达21位,多圈圈数高达14位,具有超强的抗冲击和抗振动能力,防护等级高达IP68。同时,该编码器还具备反短接和短路保护功能,有效降低了安装错误对编码器的影响。特别需要指出的是,SAS/M58是百分百国产化的。
然后看一下广成科技CANOPEN定制网关GCAN-IO 系列产品是工业现场总线 IO 模块,该模块是标准的从站设备,其使用CANopen或Modbus协议与主站设备通信,用户可使用CANopen或Modbus主站设备控制GCAN-IO模块的数字/模拟量输出状态,还可以使用主站实时读取该模块的数字/模拟量输入状态。
当然,只有硬件还不够,要想用好CANopen,还需要软件的配合。在实践中,将使用适当的软件工具配置/管理复杂的CANopen网络。目前,网络上有非常多的免费的CANopen软件工具,同时虹科HK等公司也会专门提供开发工具和软件包。
结语
CANopen在CAN的基础上定义了更高级的功能,包括网络管理(NMT)、服务数据对象(SDO)传输、过程数据对象(PDO)传输等,也引入了SDO报文需要应答、NMT网络服务、SDO通信等技术细节,因而非常适用于标准化嵌入式网络。