目录
1 引言
2 协议架构与标准化体系
2.1 OSI模型中的层次定位
2.2 CiA 301:核心通信规范
2.3 CiA 4xx:设备配置文件体系
3 核心通信机制
3.1 对象字典:CANopen的数据模型核心
3.2 PDO:过程数据的实时交换
3.3 SDO:参数配置与诊断通道
3.4 NMT:网络状态管理
4 设备描述与互操作性体系
5 CANopen FD:面向更高带宽需求的代际扩展
6 CANopen Safety:功能安全通信扩展
7 应用场景与架构定位
8 结语
摘要:CANopen是由CiA(CAN in Automation)协会制定并维护的基于CAN总线的高层协议与设备规范体系,自20世纪90年代发布以来,已成为工业自动化、运动控制、医疗设备及轨道交通等领域最广泛部署的嵌入式网络协议之一。CANopen的核心设计在于以“对象字典”为中心的数据模型,通过PDO(过程数据对象)实现时间关键数据的实时交换,通过SDO(服务数据对象)实现对设备参数的配置与诊断,并通过NMT(网络管理)状态机实现对网络节点的统一管控。本文从协议分层架构、核心通信机制、设备描述体系、代际演进及安全扩展五个维度,对CANopen进行系统性技术分析。首先,梳理CANopen在OSI模型中的层次定位及其与CiA 301、CiA 4xx设备配置文件的关系。其次,深入剖析对象字典的寻址机制、PDO的事件驱动与同步传输模式、SDO的分段传输机制以及NMT状态机的状态转换逻辑。在此基础上,讨论CANopen FD(CiA 1301)对经典CANopen的能力扩展,以及CANopen Safety(CiA 304)的功能安全通信机制。最后,结合工业4.0与嵌入式网络的发展趋势,分析CANopen的应用定位与演进方向。
关键词:CANopen;对象字典;过程数据对象;服务数据对象;网络管理;CiA 301;CANopen FD;功能安全
1 引言
CAN总线解决了物理层与数据链路层的可靠通信问题,但并未规定应用层的数据语义与设备互操作规则。不同厂商的CAN节点即便物理连接互通,其数据格式、参数配置方式和状态管理逻辑可能完全不同,这成为CAN在分布式控制系统中大规模部署的核心障碍。为填补这一空白,CiA协会于1995年发布了CANopen规范(CiA 301),在CAN数据链路层之上定义了一套完整的应用层协议与设备描述框架。
CANopen最初面向工业自动化中的电机与运动控制应用,但其设计理念——以对象字典统一描述设备功能、以PDO/SDO区分实时与非实时数据、以NMT实现网络级状态管控——使其迅速扩展至医疗设备、楼宇自动化、轨道交通、船舶电子等广泛领域。CANopen于2002年被采纳为欧洲标准EN 50325-4,其设备配置文件体系(CiA 4xx系列)为不同类型设备的互操作性提供了标准化基础。
本文旨在对CANopen协议进行系统性的技术分析,涵盖其协议架构、核心通信对象、设备描述体系、代际演进与安全扩展。与偏重实现指南的工程文献不同,本文着重阐释各核心机制的设计逻辑与工程含义,揭示CANopen如何在CAN的实时通信能力之上构建一套可互操作、可扩展的嵌入式网络体系。
2 协议架构与标准化体系
2.1 OSI模型中的层次定位
CANopen实现了OSI模型中的网络层及以上各层。其下层协议通常为经典CAN(CAN CC),物理层与数据链路层由ISO 11898-2和ISO 11898-1定义。CANopen自身规范了网络层(寻址与路由)、传输层(分段与重组)、会话层(连接管理)和表示层(数据编码),应用层则由设备配置文件进一步细化。
这种“CAN负责可靠传输,CANopen负责数据语义”的分工,使CANopen能够在不修改CAN硬件的前提下,为嵌入式设备提供标准化的通信接口。值得注意的是,CANopen的应用层与设备配置文件并不绑定于CAN物理层:CANopen over EtherCAT和CANopen over Powerlink等实现表明,CANopen的设备描述体系可以运行于其他数据链路层之上。
2.2 CiA 301:核心通信规范
CiA 301(CANopen Application Layer and Communication Profile)是整个CANopen体系中最基础的规范,所有CANopen设备必须实现该标准。CiA 301定义了对象字典、PDO、SDO、NMT、SYNC、TIME和EMCY等核心概念。它规定了四种通信对象类型:网络管理对象、服务数据对象、过程数据对象以及预定义消息(同步对象、时间戳对象和紧急对象)。
2.3 CiA 4xx:设备配置文件体系
在CiA 301之上,CiA定义了一系列设备配置文件,为特定类型的设备标准化功能行为与对象字典内容。主要的通用设备配置文件包括:
CiA 401:通用I/O模块,规定数字/模拟输入输出的对象映射与行为。
CiA 402:驱动与运动控制,标准化伺服驱动器、变频器和步进电机的功能行为,已在IEC 61800-7-201/301中采纳。
CiA 406:编码器设备,定义位置、速度等参数的标准化对象。
设备配置文件的存在意味着:来自不同厂商的、符合同一配置文件的CANopen设备,在功能行为层面具有可替换性,控制器无需为每个设备编写专属的配置逻辑。
3 核心通信机制
3.1 对象字典:CANopen的数据模型核心
对象字典是CANopen协议最核心的抽象。它是一个有序的参数与数据集合,以16位索引和8位子索引进行寻址,所有设备的配置参数和过程参数均存储于其中。对象字典位于通信接口与应用程序之间,应用线程通过对象字典接口函数读写应用对象,通信对象则通过对象字典获取需要发送的数据或将接收到的数据写入。
对象字典的索引空间被划分为若干功能区域:0x0000至0x0FFF为数据类型定义,0x1000至0x1FFF为通信对象(PDO、SDO、NMT等参数),0x2000至0x5FFF为厂商自定义对象,0x6000至0x9FFF为标准设备配置文件对象。这一分区设计使得设备功能的描述具有可预测性:控制器可以通过索引范围判断一个对象的语义类别。
每个CANopen设备必须以电子数据表(EDS)文件的形式提供其对象字典的描述。EDS文件定义了设备支持的所有对象及其数据类型、访问权限和默认值,配置工具依据EDS文件自动生成设备配置界面。
3.2 PDO:过程数据的实时交换
过程数据对象用于传输时间关键的过程数据,如传感器读数、控制指令和状态反馈。PDO采用生产者-消费者模型,一个PDO报文可以被一个或多个消费节点同时接收。
PDO的核心特性是预定义映射:一个PDO报文中可以包含最多8字节的过程数据,这些数据在对象字典中的位置通过PDO映射参数预先配置。发送PDO(TPDO)由生产者节点发出,接收PDO(RPDO)由消费者节点接收。PDO的传输可以通过同步信号触发(同步PDO),也可以由事件触发(事件驱动PDO),传输类型参数(对象0x1800/0x1400的子索引2)决定了PDO的触发方式。
PDO的设计逻辑是“以配置换效率”:通过离线配置映射关系,运行时的PDO传输无需携带对象索引信息,一个CAN帧(8字节数据段)即可承载多个过程变量的值,实现了极高的有效载荷效率。这是CANopen能够在1Mbps的CAN总线上实现毫秒级控制周期的关键。
3.3 SDO:参数配置与诊断通道
服务数据对象用于访问对象字典中的任意条目,采用客户端-服务器模型。SDO客户端发起请求,SDO服务器响应。读取操作称为“上传”(upload),写入操作称为“下载”(download),这一命名以服务器为视角。
SDO支持两种传输模式:快速传输用于不超过4字节的数据,在单次SDO请求-响应事务中完成;分段传输用于超过4字节的数据,通过多次请求-响应事务将数据分段传输。每个SDO请求都必须被应答,即便设备无法提供相关数据或请求有误,也必须返回一个包含中止码的否定响应。
SDO的通信开销远高于PDO——每次传输需要两个CAN帧(请求与响应),且携带索引和子索引信息。这决定了SDO的定位是配置与诊断通道,而非实时数据通道。在设备初始化阶段,SDO用于写入PDO映射、通信参数和其他配置数据;在运行阶段,SDO用于读取设备状态、修改参数和故障诊断。
3.4 NMT:网络状态管理
网络管理是CANopen中每个设备必须实现的机制,以状态机形式运行。NMT状态机定义了四个状态:
初始化:设备上电或复位后进入此状态,完成对象字典和通信接口的初始化。初始化完成后,设备自动进入预运行状态并发送“Boot-up”消息。
预运行:SDO通信和NMT通信可用,但PDO通信被禁用。此状态用于通过SDO配置设备。
运行:正常总线操作模式,PDO通信启用,设备执行其应用功能。
停止:除NMT和心跳/节点守护外,所有通信被禁用。
NMT主节点通过发送NMT命令(COB-ID为0x000,数据字段第一字节为命令码)来触发从节点的状态转换。NMT命令可以定向发送给单个节点,也可以广播给所有节点。这一集中式状态管控机制,使CANopen网络在启动、配置和维护阶段具有明确的、可预测的行为序列。
4 设备描述与互操作性体系
CANopen互操作性的实现依赖于三层描述体系的协同:
第一层为对象字典的标准化结构。CiA 301规定了通信对象区域的固定索引(如0x1000为设备类型,0x1008为设备名称,0x1018为身份对象),使任何CANopen设备的基本信息都可以被统一访问。
第二层为设备配置文件的对象标准化。CiA 4xx系列为特定设备类型定义了功能对象的索引与语义。以CiA 402驱动与运动控制配置文件为例,它定义了控制字(0x6040)、状态字(0x6041)、操作模式(0x6060)、目标位置(0x607A)等标准对象,使不同厂商的伺服驱动器在功能层面具有可替换性。
第三层为EDS/DCF文件的机器可读描述。EDS文件以标准化格式描述设备对象字典,配置工具可以自动解析并生成配置参数。设备配置文件(DCF)在EDS基础上增加了节点ID和波特率等网络配置信息。
5 CANopen FD:面向更高带宽需求的代际扩展
经典CANopen受限于经典CAN的8字节数据载荷和1Mbps速率,在某些应用中面临带宽瓶颈。CiA于2017年发布了CANopen FD(CiA 1301),基于CAN FD数据链路层,将PDO和SDO的数据载荷扩展至64字节,数据段速率提升至5Mbps(受收发器限制)。
CANopen FD的主要增强包括:扩展PDO长度使单个PDO可以承载更复杂的过程数据结构,减少了PDO映射的碎片化;通用服务数据对象取代了传统SDO,支持任意大小的数据在单播或广播模式下传输,传输方式可根据数据大小自动选择快速、分段或批量模式;扩展EMCY提供更详细的错误信息和时间戳,增强了诊断能力。
值得注意的是,CANopen FD保持了与经典CANopen在设备架构和NMT服务上的兼容性,使现有CANopen用户可以平滑迁移。
6 CANopen Safety:功能安全通信扩展
CANopen Safety(CiA 304,欧洲标准EN 50325-5)为基于CANopen的安全相关通信提供了标准化框架,适用于IEC/EN 61508定义的SIL 2和SIL 3应用。
CANopen Safety的核心机制是安全相关数据对象,它在标准PDO的基础上增加了冗余传输和交叉校验。安全数据在发送前被复制并取反,接收端对两份数据进行一致性校验,以检测传输错误。SRDO的通信参数独立于标准PDO,由安全配置工具单独配置。CiA 402-4进一步将安全参数和SRDO集成到驱动与运动控制配置文件中,为安全驱动器提供了完整的标准化基础。
7 应用场景与架构定位
CANopen的典型应用领域包括:
工业电机与运动控制:CANopen是伺服驱动器和步进电机控制器的主流通信协议之一。CiA 402配置文件定义了驱动器的完整状态机(从“未就绪”到“运行使能”的转换序列)和标准控制/状态接口,使多轴运动控制系统中的驱动器可以统一编程和调试。基于CANopen over EtherCAT的六轴工业机器人控制系统表明,CANopen的设备描述体系可以在更高性能的数据链路层上复用。
I/O模块与分布式控制:CiA 401定义了通用I/O模块的对象字典,使远程I/O站可以通过PDO高效传输数字/模拟量,通过SDO进行参数配置。CANopen的即插即用互操作性支持工业4.0中设备层的快速集成。
医疗设备:CANopen的低延迟确定性通信和功能安全扩展使其适用于手术台、输液泵等对实时性和可靠性有严格要求的医疗设备。
轨道交通与船舶:CANopen的EMCY紧急对象和节点监控机制适用于需要对网络状态进行集中管理的场景,CiA还定义了面向海事电子的应用框架(CiA 307)。
在工业以太网日益普及的背景下,CANopen的定位正在从“主干网络协议”转向“设备级协议”。EtherCAT、POWERLINK等工业以太网协议中集成的CANopen设备配置文件,使CANopen的对象字典和设备模型可以在更高性能的骨干网络下继续发挥作用。
8 结语
CANopen在CAN总线提供的可靠数据链路之上,构建了一套以对象字典为数据模型核心、以PDO/SDO为双通道通信机制、以NMT为状态管控框架、以CiA 4xx为设备互操作性基础的完整应用层协议体系。其设计逻辑可以概括为“以配置的复杂性换取运行的简洁性”:通过离线配置PDO映射和对象字典,运行时通信无需携带元数据,在有限的CAN带宽下实现了高效的过程数据交换。
CANopen FD的推出解决了经典CANopen在带宽和数据载荷方面的局限,CANopen Safety为功能安全应用提供了标准化的通信扩展,而CANopen设备配置文件向EtherCAT等以太网协议的移植则表明其设备模型具有超越特定数据链路层的生命力。随着工业4.0和嵌入式系统对互操作性与安全性要求的持续提升,CANopen作为“设备级标准化语言”的角色将继续演进。