CANopen协议
CANopen协议(精选7篇)
CANopen协议 第1篇
CANopen是一种架构在控制局域网路 (Control Area Network, CAN) 上的高层通讯协议, 包括通讯子协定及设备子协议, 常在嵌入式系统中使用, 也是工业控制常用到的一种现场总线。CANopen是开放的、标准化的高层协议:这个协议支持各种CAN厂商设备的互用性、互换性, 能够实现在CAN网络中提供标准的、统一的系统通讯模式, 提供设备功能描述方式, 执行网络管理功能。
应用层 (Application Layer) :为网络中每一个有效设备都能够提供一组有用的服务与协议。
通讯描述 (Communication Profile) :提供配置设备、通讯数据的含义, 定义数据通讯方式。
设备描述 (Device Proflile) :为设备 (类) 增加符合规范的行为。
CANopen主要应用在汽车、工业控制、自动化仪表等领域, 目前由CIA负责管理和维护。
1 CANopen通讯模式
CANopen网络中的通讯是通过消息机制来实现的, CANopen通讯模型定义了4种报文 (通讯对象) 。
1.1 过程数据对象PDO (Process Data Object)
用来传输实时数据, 数据从一个生产者传到一个或多个消费者。数据传送限制在1到8个字节 (例如, 一个PDO可以传输最多64个数字I/O值, 或者4个16位的AD值) 。
PDO通讯没有协议规定。PDO数据内容只由它的CAN ID定义, 假定生产者和消费者知道这个PDO的数据内容。
每个PDO在对象字典中用2个对象描述:
(1) PDO通讯参数:包含哪个COB-ID将被PDO使用, 传输类型, 禁止时间和定时器周期。
(2) PDO映射参数:包含一个对象字典中对象的列表, 这些对象映射到PDO里, 包括它们的数据长度 (in bits) 。生产者和消费者必须知道这个映射, 以解释PDO内容。
PDO消息的内容是预定义的 (或者在网络启动时配置的) :映射应用对象到PDO中是在设备对象字典中描述的。如果设备 (生产者和消费者) 支持可变PDO映射, 那么使用SDO报文可以配置PDO映射参数。
可以有多种传送方式: (1) 同步 (通过接收SYNC对象实现同步) ; (2) 非周期:由远程帧预触发传送, 或者由设备子协议中规定的对象特定事件预触发传送。
周期:传送在每1到240个SYNC消息后触发。
异步: (1) 由远程帧触发传送; (2) 由设备子协议中规定的对象特定事件触发传送。
表1给出来了由传输类型定义的不同PDO传输模式, 传输类型为PDO通讯参数对象的一部分, 由8位无符号整数定义。
1.2 管理报文
层管理, 网络管理和ID分配服务, 如初始化, 配置和网络管理 (包括节点保护) 。
服务和协议符合CAL中的LMT、NMT和DBT服务部分。这些服务都是基于主从通讯模式:在CAN网络中, 只能有一个LMT, NMT或DBT主节点以及一个或多个从节点。
1.3 服务数据对象SDO (Service Data Object)
通过使用索引和子索引 (在CAN报文的前几个字节) , SDO使客户机能够访问设备 (服务器) 对象字典中的项 (对象) 。
SDO通过CAL中多元域的CMS对象来实现, 允许传送任何长度的数据 (当数据超过4个字节时分拆成几个报文) 。
协议是确认服务类型:为每个消息生成一个应答 (一个SDO需要两个ID) 。SDO请求和应答报文总是包含8个字节 (没有意义的数据长度在第一个字节中表示, 第一个字节携带协议信息) 。SDO通讯有较多的协议规定。
1.4 预定义报文或者特殊功能对象同步 (SYNC)
(1) 在网络范围内同步, 尤其在驱动应用中:在整个网络范围内当前输入值准同时保存, 随后传送 (如果需要) , 根据前一个SYNC后接收到的报文更新输出值。
(1) 主从模式:SYNC主节点定时发送SYNC对象, SYNC从节点收到后同步执行任务; (2) 在SYNC报文传送后, 在给定的时间窗口内传送一个同步PDO; (3) 用CAL中基本变量类型的CMS对象实现; (4) CANopen建议用一个最高优先级的COB-ID以保证同步信号正常传送。SYNC报文可以不传送数据以使报文尽可能短。
(2) 时间标记对象 (Time Stamp) : (1) 为应用设备提供公共的时间帧参考; (2) 用CAL中存储事件类型的CMS对象实现。
(3) 紧急事件 (Emergency) : (1) 设备内部错误触发; (2) 用CAL中存储事件类型的CMS对象实现。
(4) 节点/寿命保护 (Node/Life Guarding) : (1) 主从通讯模式; (2) NMT主节点监控节点状态:称作节点保护 (Node Guarding) ; (3) 节点也可以 (可选择) 监控NMT主节点的状态:称作寿命保护 (Life Guarding) 。当NMT从节点接收到NMT主节点发送的第一个Node Guard报文后启动寿命保护; (4) 检测设备的网络接口错误, 而不是设备自身的错误:通过应急指示报告; (5) 根据NMT节点保护协议实现:NMT主节点发送远程请求到一个特定节点, 节点给出应答, 应答报文中包含了这个节点的状态。
(5) Boot-UP: (1) 主从通讯模式; (2) NMT从节点通过发送这个报文, 向NMT主节点说明该节点已经由初始化状态进入预操作状态。
一个CANopen设备必须支持一定数量的网络管理服务 (管理报文, Administrative Messages) , 需要至少一个SDO。每个生产或消费过程数据的设备需要至少一个PDO。所有其它的通讯对象是可选的。一个CANopen设备中CAN通讯接口、对象字典和应用程序之间的联系如图2所示。
2 CANopen高层协议应用
CANopen协议中设备子协议中包括电梯控制系统应用协议。在CANopen协议电梯控制系统应用协议中详细的规定了电梯控制系统CAN网络的物理参数、节点ID分配、电梯虚拟设备定义、对象目录以及系统错误处理。
通过CANopen协议在电梯控制系统上的应用, 可以为任何电梯应用提供标准的、即插即用的电梯控制系统。符合CANopen电梯控制系统应用协议规范的电梯控制系统可以实现最大254层楼, 最多8台电梯并联的应用。
3 结束语
基于CAN总线的CANopen网络通讯具有以下特点: (1) 使用对象字典 (Object Dictionary, OD) 对设备功能进行标准化的描述; (2) 使用ASCII文档:电子数据文档 (EDS) 和设备配置文件 (DCF) 对设备及其配置进行标准化的描述; (3) CANopen网络的数据交换和系统管理基于CAL中CMS服务; (4) 系统boot-up和节点保护 (Node Guarding) 的标准基于CAL中NMT服务; (5) 定义了整个系统的同步操作; (6) 定义了节点特定的应急报文。
在Ci A的努力推广下CAN技术在汽车电子控制系统、电梯控制系统、安全监控系统、医疗仪器、纺织机械、船舶运输等方面均得到了广泛的应用。因此, 研究CANopen协议具有广泛的实际意义和应用需求。
参考文献
[1]CAN in Antomtion.Device Profile for I/O Modules[M].CiA Draft Standard Proposal DSP401, Version1.4, 2002.
[2]CAN in Antomtion.Device Profiles Drives and Motion Control[M].CiA Draft Standard Proposal DSP402, Version1.0, 2002.
[3]CANopen application profile for lift control systems[M].CiA DSP417.
CANopen协议 第2篇
CAN即控制器局域网,是一种多主总线,被公认为最有前途的现场总线之一[1]。CAN协议一个最大特点是废除了传统的站地址编码,取而代之的是对通信数据块进行编码[2]。CANopen是CAN网络的一种应用层协议,是开放的、标准化的高层协议,是目前应用最广泛的嵌入式网络。CANopen建立在CAN的数据链路层之上,除了对应层规范( DS 301) 进行定义外,CANopen还专门为不同的接口设备应用子协议定义了行规( DSP4) ,其中Ci A 402是针对驱动装置和运动控制装置的设备规范。本文正是针对CANopen在伺服上的运用展开的。
1 CANopen协议简析
CANopen协议包括对象字典( Object Dictionary,OD) 、通信模型和设备模型三大部分,设备对象字典是中心概念[3]253。
1. 1设备模型
CANopen设备如图1所示,可以视作为一个抽象设备,一边接CAN总线,另一边接应用设备的I/O数据端口。应用部分设备制造商已经提供了相关设备规范。为了访问CANopen设备的对象字典,必须实现CANopen协议栈的相关功能[3]260。
1. 2对象字典
每个设备都拥有一个对象字典,对象字典提供了完全访问应用程序的途径,提供了设备使用的所有数据类型、通信参数、应用数据和参数配置。对象字典中常用索引: 1000 - 1FFF,对应的对象为通讯子协议区域( 如设备类型,错误寄存器,支持的PDO数量) ; 索引: 6000 - 9FFF,对应的对象为标准设备子协议区域( 例如“DSP - 402运动控制装置的设备规范”中的控制字、速度、位置等) 。
1. 3 CANopen通讯模型
CANopen通讯模型定义了4种通讯对象: 管理消息、服务数据对象、过程数据对象、预定义的消息或者特殊功能对象[4]。值得注意的是对象字典中对象的访问是使用对象字典索引和子索引,通讯对象或者消息的访问是通过COB - ID。COB - ID本质上还是标识符( CAN - ID) ,它只是被规划了特殊的含义。
1. 3. 1服务数据对象( Service Data Object,SDO)
SDO用来访问一个设备的对象字典。访问者被称作客户( client) ,被访问且提供所请求的设备称作服务器( Server) 。SDO是以Server的角度去理解的,从服务器上获得数据叫做上传,往服务器上写数据叫做下载。SDO主要用于一些实时性要求不高的数据,一般用来配置和获得节点的参数。
1. 3. 2过程数据对象( Process Data Object,PDO)
PDO用来传输实时数据,每个PDO在对象字典中用PDO通讯参数和PDO映射参数这2个对象描述。
通俗的讲,PDO只是一个载体,它里面装载什么对象是可以配置的,这些都是由PDO映射来完成。PDO映射用来把指定的对象字典装进PDO,或者从接收的PDO中将数据放到配置的对象中。
PDO分为TPDO和RPDO,但都是针对从站来说的。TPDO: 主站←从站; RPDO: 主站→从站。
1. 3. 3管理消息( Network Management,NMT)
管理消息包括Boot - up消息,Heartbeat协议以及NMT[3]254。
CANopen状态机定义了初始化状态,就绪状态,运行状态和停止状态。上电后每个CANopen节点处于初始化状态,然后自动转入就绪状态,并发出Boot-up消息通知NMT主节点已经到就绪状态。在就绪状态SDO传输是允许的。主节点发送NMT消息启动从节点后,从节点就可以传输和发送PDO了。在停止状态,除了NMT消息外不允许传输和接收其他消息。
2 CANopen协议在伺服控制中的实现
实验平台由上位机,USBCAN - 2A,Accelnet伺服驱动器,伺服电机构成,如图2所示。
上位机和CAN卡构成CANopen主站,负责整个网路的监控和管理,监控伺服系统的运行状态,并将上位机运动规划之后的运动参数发送给伺服。伺服系统构成从站,从站主要是执行主站发来的数据信息,并将必要的运动参数返回给主站进行相关的运动决策。
2. 1实现方法
主站开发环境选用VC6. 0,主要实现两部分内容: 1) 实现CAN的数据通信; 2 ) 实现CANopen数据帧的解析。前者的实现主要是调用USBCAN - 2A的接口函数库,先打开CAN设备,然后对设备进行初始化,之后启动CAN卡,最后进行数据发送和接收,函数调用流程如图3所示。
后者的实现主要是对CAN数据帧的解析,这里的数据帧主要就是CANopen通讯模型定义的4种通讯对象。
对象字典中每个对象采用一个16位的索引值来寻址,为了允许访问数据结构中的单个元素,同时定义了一个8位的子索引[3]253。对象字典可用SDO直接进行读写,也可以配置到PDO映射中进行读写。
图4为SDO的使用方法。以上传和下载伺服控制器中参数目标速度为例,对象字典索引为60FF,子索引为00,大小为4字节,值为0x3E8。对应的SDO操作信息如图4所示。
返回的SDO命令字为80时为错误,具体的错误内容可参见SDO错误码。加速传送机制,最多传送4字节数据。大于4字节接着的数据都运用分段传送结构为SDO命令字+ 最多7字节数据[5],多个分段只由1个确认报文应答以增加总线吞吐量。
图5为Copley伺服驱动器PDO配置方法。通讯参数和映射内容为预定义,可以用SDO进行读取验证,配置RPDO映射与TPDO类似,以TPDO2,Node - ID等于2为例,配置TPDO步骤如图5所示。
实际运用当中,PDO传输类型常用的是:
( 1) 同步传输: 在收到一个或者多个SYNC消息后触发PDO发送[6]。
( 2) 定时发送: 有别于SYNC,它是节点本身定时发送,通过设置通讯参数eventtime来实现。但是,并不是所有设备都支持这项服务。
( 3) 事件触发: 当节点的某个时间发生触发的一次数据发送,该方式是实时性最好的一种传输方式。
2. 2实现过程
实验中以伺服的两种位置模式为例,验证CANopen协议在伺服上的运用。上位机以SDO方式发送运动参数,启动远程节点,配置控制字来启动停止,控制界面在运动过程中定周期地发送SDO查询实时位置,速度和电流等。若使用PDO方式,必须先启动远程节点,并设置相关通讯参数。伺服调试的控制界面如图6所示。
离散位置模式经过计算设定的参数是: 梯形模式,目标位置: 36 000 Counts,配置最大速度: 3 000 r / min,最大加速度: 1 000 r / s2,最大减速度: 500 r/s2。通过实验发现数据传输正确,伺服有较好的响应。实验数据如图7所示,图中1表示目标位置,2表示配置的速度曲线,3表示实时速度曲线,4线表示实时位置。
为观测伺服对CANopen协议的动态响应,又实验了连续位置模式,通过计算设定的参数是: 梯形模式,起始最大加速度:1 000 r / s2。最大速度: 3 000 r/min。第二段最大加速度为333. 33 r / s2。最大速度: 4 000 r/min。最大减速度: 1 333. 33 r/s2。最终位置124 633 Counts。实验结果如图8所示,曲线颜色分配同上。 通过实验发现数据传送无误,伺服能按照计算的模式进行运动。 最终位置由于上位机定时器的不精确有少量的偏差。
3结束语
CANopen面向对象的设计思想,协议公开透明,便于理解和开发的优点,在多轴运动控制上是一种高效的数据传输方法。
本文利用CANopen协议实现了由上位机和USBCAN - 2A组成的主站与从站数字伺服之间的数据通讯,通过实例验证了CANopen协议在伺服控制上的可行性和较高的可靠性。同时,通过具体的实验和系统调试为基于CANopen协议多电机运动控制的实现奠定了理论和实践基础。
摘要:结合实际运用对CAN总线应用层协议CANopen进行了介绍;对CANopen相关参数配置进行了分析;对CANopen主从站节点的功能与设置进行了研究。以数字伺服为从站,上位机和USBCAN卡为主站。通过调用USBCAN接口卡中的函数库,实现了上位机与数字伺服之间的通信,并在实际运用中实现了基于CANopen协议的数字伺服控制。结果表明CANopen很大地增强了CAN网络的可配置性,在运动控制上的可行性和较高的可靠性。
CANopen协议 第3篇
CAN总线是20 世纪80 年代初德国Bosch公司为解决现代汽车中众多控制单元、测试仪器之间的实时数据交换而开发的一种串行通信协议。它的非破坏性总线仲裁技术、短帧数据结构以及灵活的通信方式使CAN总线具有很高的可靠性和抗干扰能力, 满足了汽车对总线的实时性和可靠性的要求[1]。然而CAN总线本身仅定义了物理层和数据链路层, 要想实现真正意义上的实际应用和达到各个厂家的产品能很好的兼容的目的, 必须要有更高层的应用层来支持。CANopen是一种基于CAN的高层协议, 具有较高的配置灵活性, 高的数据传输能力和较低的实现复杂度[2]。因此研究CANopen协议在汽车通信网络中的应用具有很高的使用价值。本文针对汽车中央仪表、车门、空调、车灯等车身部件间相互通信问题, 设计了一种CANopen通信协议, 并通过搭建实验平台来验证其可行性。
2 CANopen协议设备模型
CANopen协议是一种基于CAN总线的高层协议,主要针对行业标准化开发, 其采用对象字典(OD)、电子数据文档(EDS)等一系列概念来描述设备和协议的相关信息[2]。CANopen设备模型由通讯接口、对象字典以及应用部分组成, 其设备模型如图1 所示。通讯接口部分规定了网络管理报文(NMT)、服务数据对象(SDO)、过程数据对象(PDO)以及特殊功能对象等4种通讯机制。对象字典是一个有序的对象组, 其中每个对象采用一个16 位主索引和8 位子索引来寻址, 包含了描述设备和它的网络行为的所有参数。应用层部分由用户根据实际应用要求自行编写[3]。
3 CANopen通信对象的设计
3.1 网络管理NMT设计
3.1.1 NMT模块控制
NMT服务为主从结构, 一个CANopen网络系统中只有一个主节点, 其余的都为从节点。只有NMT主节点才能发送NMT模块控制报文, 所有从节点必须支持NMT模块控制服务。NMT服务可以实现网络节点状态的转换。通过对车身的控制结构分析可知, 设置中央仪表节点为主节点,4 个车门节点、空调节点以及车灯节点为从节点。一个CANopen网络系统要想实现正常的通信必须定义每个节点标识符Node_ID, 本文的各节点Node_ID分配为: 中央仪表:0x01, 左前门:0x07,右前门:0x08,左后门:0x09,右后门:0x0a,空调:0x0b,车灯:0x0c。
3.1.2 NMT节点保护
CANopen协议规定了2 种节点保护机制: 节点保护机制(Node Guarding)和心跳报文机制(Heartbeat),一个节点不能同时支持两种节点保护机制。在本系统中采用心跳报文机制, 其原理为: 从节点周期性的向主节点或其他节点发送类似心跳的报文, 来报告自己的状态。在本系统中设置心跳报文的发送周期为2000ms。
3.2 服务数据对象SDO的设计
服务数据对象SDO通讯模式为客户/ 服务器型,由于实时性不高一般用来对网络上的设备进行参数配置。客户端SDO每次请求命令都需要发送索引和子索引来对通信对象的对象字典进行读取或写入操作。本文中令中央仪表节点为客户端, 其余从节点为服务器。中央仪表节点通过发送SDO来对从节点的对象字典进行读写操作。下面以中央仪表节点与车灯从节点进行SDO通信为例进行说明: 中央仪表节点根据要求生成相应的SDO请求报文, 并将其发送到CAN总线上。SDO请求报文由COB-ID和数据两部分组成, 其COB-ID由600h+Node_ID构成,Node_ID为车灯节点的Node_ID即0x0c, 数据为SDO的请求任务。车灯从节点接收到SDO请求报文后, 解析报文完成请求任务, 并返回给请求方一个SDO响应报文, 此处请求方为中央仪表节点,响应报文也由COB-ID和数据两部分组成, 其COBID由580h+Node_ID构成,Node_ID为车灯节点的Node_ID, 即0x0c, 数据为请求任务的执行情况。SDO通信报文演示如图2 所示。
3.3 过程数据对象PDO的设计
过程数据对象PDO主要用于实现优先级较高的数据的实时传送, 通讯模式是生产/ 消费型, 传送的数据长度为1-8 字节, 优先级较高, 传输效率比较快[4]。PDO分为两种, 一种是用来发送报文的TPDO, 一种是用来接收报文的RPDO。
本文中, 中央仪表主节点设计6 个TPDO用来向四个车门、空调以及车灯从节点发送控制报文,6 个RPDO用来接收上述节点发送来的状态信息报文;4 个车门节点、空调节点以及车灯节点分别设计1 个TPDO用来向中央仪表节点发送状态信息报文和一个RPDO用来接收中央仪表发送来的控制报文。图3 为左前门通信节点发送TPDO1 报文的示意图, 图4 为中央仪表节点接收RPDO1 报文的示意图。
3.4 特殊功能对象的设计
特殊功能对象包括: 时间标记对象(Time Stamp)、同步(SYNC)、紧急事件(Emergency)以及节点/ 寿命保护(Node/Life guarding)。时间标记对象为应用设备提供公共的时间帧参考; 同步用来在网络范围内同步, 为主从模式, 同步主节点定时发送同步对象, 同步从节点收到后同步执行任务; 紧急事件用来传送紧急错误等应急信息; 节点/ 寿命保护用来监控节点状态。本系统的特殊功能对象都采用缺省设置。
4 实验平台搭建
要实际验证本文所设计的CANopen通信协议的可行性, 必须要有合适的实验平台, 包括硬件平台和软件平台。
4.1 硬件平台
经过成本、功能和可靠性多方面分析, 将STM32F103RBT6 主控器及其外围电路组成的最小系统作为实现CANopen通信协议的硬件平台。STM32F103RBT6为ST公司推出的基于Cortex-M3 内核的32 位ARM微控制器, 最高72MHz工作频率,128KB Flash,20KB SRAM, 支持CAN接口(2.0B主动), 并提供丰富的底层驱动函数库, 方便用户的开发[5]。
4.2 软件平台
考虑到实验平台的实时性, 本文中软件平台基于嵌入式操作系统 µC/OS-II开发[6], 利用嵌入式操作系统任务调度管理功能, 大大增加了整个实验平台的实时性和可靠性。整个软件平台采用模块化设计原则, 利用分层结构实现CANopen通信功能, 包含底层驱动层、µC/OS-II操作系统层以及CANopen通信协议应用层。
在 µC/OS-II嵌入式操作系统中建立3 个主任务:App Task Start()、App Task User IF() 和App Task_CANopen()。App Task Start() 任务实现实验平台初始化以及其他任务的创建工作, 任务完成后将自己挂起;App Task User IF() 任务主要实现人机交互系统界面的创建;App Task_CANopen() 任务主要实现CANopen协议通信的工作, 其软件流程如图5 所示。
4.3 CANPro协议分析平台
CANPro协议分析平台是周立功公司开发的用来安装、开发、测试、维护、管理CAN-Bus网络的专业分析工具, 通用性好, 功能强大。能够分析基于CAN-Bus网络的高层协议, 比如i CAN、Device Net和CANopen等。在本文中, 利用CANPro协议分析平台来实时直观地监测和分析总线上传递的各种CANopen报文。
5 实验测试
在本实验测试中, 为了更为直观的展示总线中各种CANopen报文的传输过程, 本实验采用周立功公司的CANPro协议分析平台来观察报文数据的传输。下面以左前门从节点PDO传送为例进行测试分析。
系统刚启动时, 左前门从节点进入准备状态, 第一个发送的Heartbeat报文为Boot-up报文, 帧ID为0x700+Node_ID即0x707, 数据为0x00。 然后自动进入预操作(Pre-operational)状态, 帧ID为0x700+Node_ID即0x707, 数据为0x7F, 每隔2s钟发送一个Heartbeat报文报告自己的工作状态, 并等待主节点发送NMT模块控制报文进入操作(Operational)状态。当主节点发送NMT启动命令后, 左前门从节点马上进入操作(Operational)状态, 并且每500ms发送一个PDO报文用来传送TPDO1 映射参数对应对象字典中的数据, 帧ID为0x180+Node_ID即0x187, 数据分别为左前窗开关状态、左前门开关状态、左前门锁开关状态以及左前门后视镜折叠状态, 实验监测数据如图6 所示。
实验测试结果表明, 本文所设计的汽车车身CANopen通信协议能够很好的应用于汽车车身各部件间通信, 正确实现逻辑控制, 通信对象设计合理, 总线运行情况良好。
6 结束语
本文设计了一种适合汽车车身部件间通信的CANopen通信协议, 其中包括NMT、PDO、SDO的定义以及相应对象字典的设计。通过搭建实验测试平台来验证本设计的可行性, 并利用CANPro协议分析平台来实时观测分析总线传输报文。本文所设计的通信协议具有可操作性和实用性, 对CANopen协议在汽车车身通信领域的推广具有一定参考价值。
摘要:本文设计了一种适合汽车车身通信的CANopen协议,用于包括汽车中央仪表、车门、车灯以及空调系统等车身部件之间通信。通过搭建实验平台对所设计的CANopen通信协议进行了实验测试,并利用CANPro协议分析平台对总线中的报文进行实时监测和分析。通过试验,测试系统工作稳定,所设计CANopen通信协议能满足要求。
关键词:汽车车身,CANopen,通信协议,对象字典,SDO,PDO
参考文献
[1]童卫东.CAN总线技术在汽车中的应用研究[D].南京:东南大学,2005
[2]王俊波,胥布工.CANopen协议分析与实现[J].微计算机信息,2006,22(6-2):104~106
[3]孟永强,李鸿强,陈弘等.纯电动车车身控制CANopen协议设计[J].计算机工程,2012,38(7):236~239
[4]赵灿,王晓年,朱劲等.基于CANopen协议的高效PDO传输从站设计[J].计算机与现代化,2013,12:114~118
[5]孙书鹰,陈志佳,寇超.新一代嵌入式微处理器STM32F103开发与应用[J].微计算机应用,2010,31(12):59~63
CANopen协议 第4篇
在传统的数字式交流伺服驱动器中, 多采用手动方式来设定驱动器的参数以及观测实时状态, 位置或速度指令则通过脉冲输入或模拟接口进行给定, 参数设定繁琐, 效率低, 操作性差;系统难以实时观测多个状态量, 也没有统一接口对参数和指令进行操作。现场总线网络技术的发展为解决这些问题提供了良好的契机。
CAN-bus是德国Bosch公司开发的一种串行通信网络, 属于现场总线的范畴[1], 基本协议只有物理层和数据链路层协议[2], 需要一个高层协议来定义CAN报文中的标识符和8字节数据的使用。CANopen是一个基于CAL (CAN应用层) 的子协议, 具有很好的模块化特性和很高的适应性, 通过扩展可以适用于大量的应用领域[3]。CANopen实时伺服驱动和运动控制子协议CiA DSP402是专门针对运动控制装置的协议规范, 该协议定义了统一的驱动器功能特性, 便于不同厂商的设备进行互换。
在运动控制系统中实现CANopenDS 402协议的方式主要有两种方案:一是硬件嵌入式实现, 通过扩充协议专用的通信卡来实现。其优点是不需要对现有的程序进行修改, 只需在扩展卡上实现协议, 但是需要专用的微控制器实现协议, 增加了硬件开销。文献[4]所述系统即采用了这种方式。二是软件植入式的实现, 直接利用运动控制系统板上的处理器编程实现协议优点是硬件开销小, 但需要修改系统原有程序, 并且会增加软件运行时间开销。本文主要研究以软件植入的方式在TITMS320F2812数字信号处理器构成的伺服系统中实现CANopenDS 402协议的方法。
1 CANopen协议实现分析
CANopen协议所规定的通信模型特点可以简单地由下面几点概括:
(1) 以COB-ID对CAN报文进行分类;不同类型的CAN报文在应用中有不同的功能;
(2) 对象字典定义;CANopen设备中的所有变量统一采用对象字典的方式进行管理;
(3) 可以根据实际应用, 将对象字典进行模块划分, 并定义标准的运行模式, 实现多种控制功能。
因此软件植入协议的实现方案可以围绕这三个方面进行分析。
1.1 CAN报文分类
CANopen协议将标准CAN报文按照COB-ID分为四类报文[5]:过程数据对象PDO, 服务数据对象SDO, 网络管理对象NMT, 预定义报文或者特殊功能对象。并且规定CAN报文中的11位COB-ID高4位作为功能码来区分不同类型的报文, 低7位作为网络节点编号。TMS320F2812DSP的eCAN模块对CAN报文采用邮箱管理方式, 每个CAN邮箱均支持29/11位的COB-ID的自由配置, 支持8字节的标准CAN报文收发, 对eCAN模块屏蔽寄存器编程可以指定邮箱只处理特定COB-ID的CAN报文, 实现报文的分类
1.2 对象字典 (ObjectDictionary)
CANopen协议的核心是对象字典, CANopenDS 402协议规定了字典中的标准对象, 对设备的操作均通过访问对象字典实现。对象字典通过索引-子索引的方式进行访问。而一般的伺服驱动器具有自身的参数结构, 因此系统可能并不包含协议所定义的标准对象, 需要在原有的参数结构的基础上加入标准对象对应的字典项;同时, 原有的系统参数结构可能并非按照协议规定的“索引-子索引”的数据结构进行定义, 必须对系统原有的参数结构进行适当的改造, 在不影响系统原有功能的基础上, 使其与协议兼容。
1.3 运动控制设备专用子协议CANopenDS 402协议
CANopen运动控制子协议CANopenDS 402协议主要使用了对象字典中的标准化设备规范区域 (索引号0x60000x9FFF) , 该索引范围定义了标准的运行模式以及设备的状态机切换, 如图1所示:
一般的伺服驱动器有自定义的运行状态管理流程以及方法, 并且定义了自己的运行模式, 因此在植入CANopen协议软件模块时, 需要考虑三个方面的问题:一, 如何在原有的系统中通过通信方式实现协议状态机, 且不影响原有系统的状态切换;二:如何在原有系统中增加协议定义的标准运行模式, 并且能和原有的运行模式兼容;三, 协议定义的标准运行模式如何跟原有系统的控制流程结构无缝接口。
2 CANopenDS 402协议软件植入实现
2.1 报文分类以及通信功能的实现
本文采用的伺服驱动器以TMS320F2812DSP作为主控制器, 其eCAN模块具有32个CAN邮箱, 数量足以实现协议规定的4类标准报文对象和邮箱的绑定。以实际应用中对于RPDO 1对象的绑定为例:RPDO 1对象采用协议默认的11位COB-ID值是0x200+NodeID, 其中NodeID为节点在网络中的编号, 将RP-DO 1绑定在11号邮箱, 只需将11号邮箱的ID寄存器设定为COB-ID值, 由于实际中eCAN模块采用的是扩展的29位ID, 需要将其左移18位。
四类不同类型报文的功能实现完全按照协议规定:NMT报文负责节点网络管理;SDO报文负责对象字典的读写操作;PDO报文负责对象字典中与运动控制相关的指令和状态的映射支持同步和异步两种传输方式;特殊报文对象在本设计中主要包含同步报文服务。
虽然协议中有自定义PDO映射的可选功能, 但是设计中从实用性出发, 采用了固定的PDO映射, 4组PDO对象按照预定义的方式对字典进行映射。
对于同步报文的处理, 由于所设计的伺服驱动器为CANopen从节点, 只需响应同步报文而无需产生同步报文, 因此可以利用处理器的CAN邮箱绑定接收同步报文, 再在相应邮箱的接收中断中写入同步处理函数即可实现从节点同步。
上述四类报文都只对由协议定义的对象字典进行操作, 因此通信协议的实现可以独立于原系统进行设计, 要将通信协议程序模块植入原有驱动器, 只要在原有程序的多级背景循环中选择适当位置调用通信函数。实际设计中选择在周期为1ms的循环中进行通信处理。其流程如图2所示:
2.2 对象字典与原驱动器的接口
实际设计中对象字典采用了以下数据结构:每一个对象都被定义为8字节线性数据结构, 从低字节开始依次为2字节的索引, 1字节的子索引, 1字节的读写权, 4字节的数据内容, 低字节在前, 长度少于4字节则高位以0填充。
在设计字典与原驱动器参数的接口方式时, 需要考虑以下两方面:一是协议规定所有伺服驱动器参数都能统一索引;另一方面对伺服驱动器的参变量分类:第一类是伺服驱动器的控制参数, 如各控制环节PID控制参数、滤波器参数等。其特点是在运行过程中不需要经常改动。第二类是伺服驱动器运行过程中的指令和状态量, 如电机的转速指令和转速反馈, 电流指令和电流反馈等。其特点是在运行过程中会经常改变。这两类参变量对实时性和灵活性的要求存在差异性, 要实现字典的统一索引, 则这两类不同特点的变量不能采用同样方式与字典接口。
实际设计中, 伺服驱动器的控制参数被定义到对象字典的厂商自定义区 (索引号0x2000-0x5FFF) , 为了防止全局控制参数产生二义性, 对象字典并未加入对控制参数的实体项, 只是加入了参数索引号, 即索引值0x2002定义为全局参数索引, 而子索引号直接采用伺服驱动器原有的参数编号。程序通过字典对控制参数量的访问则采用了程序区分的方式, 在字典访问程序中增加分支处理, 当判定索引号为驱动器控制参数时, 直接对原驱动器程序定义的参数变量数据结构进行操作;对于伺服驱动器运行过程中的指令和状态变量, 定义了中间数据结构进行接口, 对象字典的操作只访问中间数据结构, 而原程序通过访问中间数据结构来处理通信给定的指令量和状态量, 实现了通信协议模块的独立性。
2.3 应用子协议的实现
应用层子协议CANopenDS 402协议定义了设备状态机和标准运动控制模式, 如轨迹位置模式、轨迹速度模式、回零模式等[6]。如何利用伺服驱动器已有的三闭环控制结构, 实现状态机标准运行模式, 是实现应用层协议所规定的运动控制模式要解决的问题。
状态机的实现, 只需在原程序背景循环中加入状态机函数, 根据对象字典的控制字和状态字进行相应切换即可实现;而标准运行模式的实现, 则需要利用伺服驱动器原有的控制功能。驱动器原有的程序采用了结构化编程, 将运动控制的位置环、速度环和电流环设计成了独立的子模块进行调用, 每个模块都定义一个数据结构便于接口。要实现协议标准运行模式, 可以采用类似的方式, 对每种运行模式, 定义一个数据结构存放该模式所需的指令和状态与原有控制软件接口, 并在伺服驱动器主控程序中加入运行模式选择, 对不同的模式进行分支处理, 即可在兼容系统原有功能的基础上, 实现CANopenDS 402协议定义的运行模式。以轨迹位置模式为例, 其实现流程如图3所示:
3 CANopenDS 402协议实现及实验结果
下面以PC机为主站, 伺服驱动器为从站, 通过主站发送命令, 让从站运行在协议标准的轨迹位置模式下, 来验证CANopen协议实现的软件植入方法。
CANopenDS 402的轨迹位置模式支持多种可选的轨迹规划算法, 其中梯形轨迹规划作为常用的运行模式, 需要对系统给定三个运动参数:位置给定、最大速度以及加速度。CANopenDS402协议对象字典包含了以上的运动参数, 它们在字典中的索引为:位置给定 (索引号0x607A) , 轨迹速度即梯形轨迹最大速度 (索引号0x6081) , 轨迹加速度 (索引号0x6083) 。实际设计中对以上运动参数采用了PDO映射的方式, 以保证位置指令, 速度指令和加速度指令传输的效率。
主站利用PC机和PCI接口卡扩展出CAN总线接口, 主控软件使用VC++编程。利用主控软件对设备进行初始化配置后, 让设备进入运行状态, 并选择轨迹位置运行模式, 然后对从站依次发送PDO 3, PDO 2和PDO 1来指定位置轨迹运行模式中的加速度和减速度, 最大速度和位置指令, 并且发送最后一个PDO数据时将控制字中的命令执行位设置为则伺服驱动器立刻执行上位机所给定的轨迹规划命令。实际中使用的PDO映射表如图4所示:
伺服驱动器在接收到位置指令, 速度指令以及加速度指令后, 每个位置环周期都调用轨迹规划函数, 计算出位置环的位置给定增量值。实验中, 编码器分辨率为10000pulse, 系统的位置环周期为T=300μs。位置指令为Pref=0x1000pulse, 格式为32位整数;匀速段的速度指令给定为Vref=0xA0000pulse/T, 其中低16位表示小数部分, 则实际速度给定换算后为加速度给定为a=0x1000pulse/T 2, 低16位表示小数部分。对轨迹规划过程中驱动器速度指令和速度反馈采样, 通过CAN总线回送采样数据到PC机, 实验结果如图5所示 (速度反馈量化误差为20r/min) :
从实验结果可以看到, 伺服电机可以按照梯形规律进行加减速。验证了软件植入CANopenDS 402应用层协议的正确性。该方法可以扩展系统的应用, 完成分布式网络化控制。
4 结论
本文采用了以软件植入的方式实现了CANopenDS 402协议, 实验结果表明, 植入的CANopenDS 402协议软件模块能够很好的与原系统软件兼容, 实现方法简单易行, 可以方便地扩展系统的控制功能。
参考文献
[1]王黎明, 等.CAN现场总线系统的设计与应用[M].北京:电子工业出版社, 2008.
[2]史久根, 等.CAN现场总线系统设计技术[M].北京:国防工业出版社, 2004.
[3]饶运涛, 等.现场总线CAN原理与应用技术[M].第2版.北京:北京航空航天大学出版社, 2007.
[4]李博, 李晓汀, 郇极.CANopen运动控制协议驱动程序设计[J].组合机床与自动化加工技术, 2007, 4:52~55.
[5]CAN in Automation.CiA Draft Standard301V4.02[Z].13February2002.
CANopen协议 第5篇
本期文章将介绍如何利用XGate-COP10模块设计一款基于CANopen从站协议的多功能传感器模块。
1 XGate-COP10简介
XGate-COP10是一款CANopen从站协议转换模块, 内部集成了CANopen从站协议栈, 遵循CiA DS301 V4.02进行设计, 其内部集成了网络管理 (NMT) 、服务数据 (SDO) 、过程数据 (PDO) 、错误管理等功能。同时也遵循了DS303-3指示灯以及DS305层设置 (LSS) 等相关协议, 使模块功能更强大。所有的功能均通过CiA的一致性测试软件的测试, 保证了与其他CANopen设备良好的兼容性。
XGate-COP10为DIP24封装, 拥有较小的占位面积 (6 cm2) , 使其更容易集成到设备中。其硬件设计也非常简单, 设计简图如图1所示。
2 传感器模块硬件设计
通过本文的介绍, 读者可以清楚地了解怎样利用XGate-COP10设计一款具有CANopen从站通信能力的传感器设备。
本文所设计的传感器系统包含了4路温度和8路霍尔传感器信号。温度传感器使用线性度较好的模拟温度传感器, 并采用12 bit的模拟数字转换芯片 (A/D) 对信号进行采集。霍尔传感器可用于检测磁性物质的位置状态, 当具有磁性的物体靠近霍尔传感器时, 霍尔传感器会输出一个低电平 (0) , 否则就输出高电平 (1) 。
硬件设计分为传感器采集部分和XGate-COP10连接部分, 传感器设计框图如图2所示。
本设计中使用了ARM7处理器 (LPC2132) , 其运行速度快, 最高可达72 MHz, 并且拥有64 KB的Flash程序存储空间以及16 KB的RAM空间, 可满足大部分场合的应用需求。模拟数字转换选用12 bit精度的转换芯片, 完成对温度传感器输出信号的采集, 并以数字信号的方式提供给处理器。霍尔传感器的输出信号为逻辑电平 (0, 1) , 由于其驱动能力较弱, 因此在其输出端增加一个I/O驱动器来增强其驱动能力, 通常使用总线驱动芯片74HC245或74HC244。
XGate-COP10与CPU连接框图如图3所示。XGateCOP10提供一路串口与CPU进行连接, 该串口负责CPU与XGate-COP10全部的数据交换和传输控制命令, 同时LPC2132的I/O端口连接XGate-COP10的复位引脚, 可灵活地对XGate-COP10进行复位操作。XGate-COP10提供了节点地址和波特率设置输入I/O, 因此使用DIP拨码开关来设置XGate-OCP10的节点地址和波特率。XGate-COP10同时还提供了Run和Err指示灯接口, 用以指示当前XGateCOP10 (CANopen从站) 的工作状态, 并遵循DS303-3指示灯标准。
3 XGate-COP10资源分配
XGate-COP10的数据交换区和PDO映射可根据实际应用进行重新分配。
3.1 数据缓存区分配
XGate-COP10拥有96 B的输入和96 B的输出数据缓存区, 使用者可以使用这些数据作为实时数据或配置参数的缓存。对于本应用系统来说主要有温度、霍尔感器数据以及温度报警上下限值需要进行交换, 其资源分配如表1所示。
本系统设计的温度范围为0~100℃, 温度数据的采集采用12 bit的A/D转换器, 因此每一路的温度需要使用2 B来存放;配置温度的上限及下限报警参数需要占用XGateCOP10的输出数据缓存区#0 (0x2100 01) ~#7 (0x2100 08) , 每个通道占用2 B, 分别存储上限 (1 B) 和下限 (1 B) 温度报警值;霍尔传感器的输出为开关状态, 因此每一路霍尔传感器占用1 bit, 8路的霍尔传感器占用XGate-COP10输入缓冲区#8 (0x2000 09) 。
3.2 PDO数据映射配置
XGate-COP10最多可提供12路的TPDO和12路的RP-DO, 最多可映射96 B的TPDO和96 B的RPDO实时数据。本系统的温度及霍尔传感器数据需要实时传输, 因此需要占用两个TPDO传输通道, 温度的报警配置信息占用一个RPDO通道进行传输, 该配置信息也可以通过SDO进行配置, 其映射关系如表2所示。
4 系统软件设计
图4所示为该系统的软件操作流程图, 处理器与XGate-COP10进行的主要操作就是与XGate-COP10的数据交换区 (Input或Output) 进行数据交换, 这些数据交换区 (数据缓存) 的数据会以标准的CANopen协议与其他CANopen设备进行数据交换。因此对于其他CANopen设备来说本系统是一个标准的CANopen从站设备, 并能向CANopen主站或其他CANopen从站设备提供温度及霍尔传感器数据。
本文实现了一款具有CANopen通信能力的温度及霍尔传感器系统, 并能与标准的CANopen主站或CANopen从站进行通信。XGate-COP10的出现, 使开发者不用再为开发CANopen协议栈而苦恼, CANopen产品短期上市也不再是梦想。
广州致远电子有限公司提供各种接口的CANopen接口卡、CANopen终端设备 (包括数据采集、电机控制等) 、CAN-open分析仪、网关及网桥、OPC服务器以及基于CANopen协议的整套组网方案及应用开发。
地址:广州市天河区车陂路黄洲工业区3栋2楼
技术支持: (020) 22644381
销售电话: (020) 28872342 28872450
电子邮箱:CANopen@embedcontrol.com
CANopen协议 第6篇
本期文章将介绍如何利用XGate-COP10协议转换模块快速设计一款基于CANopen从站协议接口的变频器设备。
1 XGate-COP10简介
XGate-COP10是一款CANopen从站协议转换模块, 内部集成了CANopen从站协议栈, 遵循CiA DS301 V4.02进行设计, 其内部集成了网络管理 (NMT) 、服务数据 (SDO) 、过程数据 (PDO) 、错误管理等功能。同时也遵循了DS303-3指示灯以及DS305层设置 (LSS) 等相关协议, 使模块功能更强大。所有的功能均通过CiA的一致性测试软件的测试, 保证了与其他CANopen设备良好的兼容性。
XGate-COP10为DIP24封装, 拥有较小的占位面积 (6 cm2) , 使其更容易被集成到设备中。其硬件设计也非常简单, 其外观图如图1所示。
2 变频器简介
2.1 变频器原理
变频器是利用电力半导体器件的通断作用将工频电源变换为另一频率的电能控制装置。现在使用的变频器主要采用交直交方式 (VVVF变频或矢量控制变频) , 先把工频交流电源通过整流器转换成直流电源, 然后再把直流电源转换成频率、电压均可控制的交流电源以供给电动机。变频器的电路一般由整流、中间直流环节、逆变和控制4个部分组成。整流部分为三相桥式不可控整流器, 逆变部分为IGBT三相桥式逆变器, 且输出为PWM波形, 中间直流环节为滤波、直流储能和缓冲无功功率。
2.2 变频器用途
变频器主要用于交流电动机 (异步电机或同步电机) 转速的调节, 是公认的交流电动机最理想、最有前途的调速方案。除了具有卓越的调速性能之外, 变频器还有显著的节能作用, 是企业技术改造和产品更新换代的理想调速装置。自上世纪80年代被引进中国以来, 变频器作为节能应用与速度工艺控制中越来越重要的自动化设备, 得到了快速发展和广泛的应用。
3 变频器的控制器与XGate-COP10连接
随着电子技术的飞速发展, 工业控制系统经历了分离式控制系统、集散式控制系统 (DCS) 以及当今正流行的现场总线控制系统 (FCS) 等阶段。现场总线系统也被称为控制系统的第5代系统, 其优越的特性以较低的成本使其以更快的速度占领着市场, 在发达国家特别是欧洲等地现场总线已经在自动化控制系统中占有绝对的优势。变频器作为一个典型的运动控制设备, 其在自动化控制系统中也有着非常重要的作用。由于现场总线的兴起与盛行, 变频器也同样具有现场总线的通信接口, 并且在整个控制系统中都使用现场总线进行组网, 而使用最为广泛的总线协议为基于CAN总线的CANopen协议。
现阶段国内生产的变频器设备绝大部分不具有现场总线接口 (CANopen) , 有些设备虽然在性能及价格上都优于国外的同类产品, 但是都无法替代之, 归根结底就是在设备的通信方式上未跟上国外的步伐。以下提供一种在现有变频器控制部分不变的情况下使变频器快速地实现先进的CANopen从站通信的设计方案。
图2所示为变频器与XGate-COP10连接示意图, 其中变频器控制部分可以采用现有的成熟电路或者设备, 与XGate-COP10连接是通过串口进行连接, 某些情况下还需要把XGate-COP10中断信号输出引脚连接到变频器的中断输入引脚, 以便及时地处理RPDO数据, 因此对于控制器来说只需要多留一路串口和一路中断输入引脚即可。对于XGate-COP10来说, 由于其内部未集成有CAN收发器, 因此推荐使用带隔离的CAN收发器模块CTM8251;XGateCOP10采用的是标准的CANopen协议, 所以这里的XGateCOP10使用外接DIP开关来设置设备的节点地址和波特率, 以及外接LED指示灯来指示当前的CANopen状态。
4 变频器参数在XGate-COP10中资源分配
XGate-COP10共有96 B的输入和96 B的输出存储区供用户使用, 这些存储区可以用于变频器实时数据或参数与其他CANopen设备进行数据交换, 这样就方便CANopen主站设备或其他设备对变频器的控制或通信, 本文将介绍变频器的基本参数与其他CANopen设备之间的通信。
4.1 资源分配
表1所示为变频器相关参数在XGate-COP10存储区的分配情况, 用户只需要把数据写入XGate-COP10数据输入存储区, XGate-COP10就会按照CANopen协议的定义对数据进行解析处理, 同样来自CANopen网络的控制信息也会经过解析之后存放于数据输出区, 用户只需要读出即可。
4.2 实时数据传送配置
XGate-COP10中最多支持12个RPDO和12个TPDO数据的发送, 并且PDO数据可映射到数据存储区的任意数据区, 其数据映射示例如表2和表3所示。
4.3 变频器故障代码发送
当变频器出现故障时, 可以通过XGate-COP10把故障代码发送到CANopen网络中, 以便通知其他设备。XGate-COP10提供5 B长度的故障代码数据区给变频器使用。表4所示为变频器故障代码在CANopen紧急代码中的位置, 当XGate-COP10接收到用户传递的故障代码就会启动发送紧急代码到CANopen网络中, 从而保证在CANopen网络中的其他设备及时获取到变频器的故障状态。
5 变频器对XGate-COP10操作
XGate-COP10提供了一个串口与变频器控制器进行连接, 因此对变频器的控制器来说只需要编写串口相关的软件代码即可, 对于串口的通信协议已经由广州致远电子有限公司提供协议源码。其操作示意如图3所示, 只需要几条命令就可以完成数据的交换。
经过以上步骤, 就可以快速地实现对变频器添加CANopen通信接口, 轻松地实现对现有的变频器设备的升级, 并能与国外同等设备进行竞争。相信在XGate-COP10的帮助下, 能使你获得更大的成功。
CANopen协议 第7篇
关键词:控制器局域网络,CANopen协议,现场总线,电机控制
0 前 言
CAN总线是一种所有效支持分布式控制或实时控制的串行通讯网络[1],在汽车、机械制造等自动化领域得到了广泛应用。目前,CAN总线在国内的应用普遍停留在比较低的层次上,即简单地应用CAN控制器、CAN总线收发器完成CAN Bus的一些简单应用,并且大都是自定义的一些简单的应用层协议,没有和国际标准的CAN高层协议接轨。CANopen协议是一种流行于欧洲的CAN高层协议,由CiA(CAN in Automation)组织开发和维护,可免费获得。该协议精练、透明、便于理解,降低了驱动程序开发难度,在工业控制中有良好的应用前景。
本研究主要介绍CANopen协议及在电机系统控制中的应用。
1 CANopen协议通讯机理
CAN协议只包括物理层和数据链路层两个底层协议,而CANopen协议在其基础上规定了应用层协议,其通讯模型,如图1所示[2]。
在CANopen的应用层,设备间通过相互交换通讯对象进行通讯,良好的分层和面向对象的设计使得通讯模型较为清晰。
CANopen设备分为3部分,如图2所示。通讯接口提供总线上的数据收发服务,定义了4类标准的通信接口:SDO(服务数据对象)、PDO(过程数据对象)、NMT(系统管理命令)和特殊对象,来实现通信管理、网络管理和紧急情况处理等功能[3]。SDO和PDO是CANopen的基本传输机制,PDO对小型数据进行高速传输,SDO对对象字典进行访问,主要用于在设备配置过程中传递参数或大数据块。NMT用于对设备状态进行管理、控制、及时发现设备故障。特殊对象用于同步、应急指示和时间标记对象。
对象字典是CANopen标准最核心的部分。以一个索引和子索引唯一确定对象字典的入口,通过对象字典的入口可以对设备的“应用对象”进行基本的网络访问,设备的“应用对象”可以是输入/输出、设备参数、设备功能和网络变量等。
应用程序是连接CANopen设备和上位机的桥梁,以对对象字典的访问为手段。上位机可利用SDO对CANopen设备进行配置;或者利用PDO与CANopen设备可进行高速的数据交换,实现实时控制。
CANopen协议采用面向对象的思想设计,具有模块化特性和很高的适应性。CANopen不仅定义了应用层和通信子协议,而且为可编程系统、不同接口、应用子协议定义了大量的行规,遵循这些行规开发出的CANopen设备将能够实现不同公司产品间的相互操作,大大降低了系统通讯的开发难度。
2 多电机系统CANopen通讯的设计与实现
本研究在实际的混合动力试验平台系统中,采用CANopen协议实现了多电机系统的协调控制[4,5,6]。试验平台系统结构图,如图3所示。
平台系统中,有两套额定功率40 kW的永磁同步电机系统,在混合动力运行中作为电动机或发电机运行,实现对柴油机输出功率的调节作用,90 kW感应电机起模拟行驶负载作用。各电机的驱动器与上位机、柴油机ECU和两台能量回馈器之间的通讯采用CAN接口。系统运行时,上位机对各电机驱动器发送控制指令,同时采集必要的电机运行参数。为保证数据传输的可靠性和控制的实时性,同时确保子系统间通讯的简便以及符合今后的车辆应用要求,系统实现上采用CANopen通讯协议。
2.1 通讯参数设计
系统中3台电机驱动器以及2台能量回馈器作为CANopen网络内的不同节点与上位机进行实时通讯。以电机驱动器的控制为例,电机控制指令的传输和运行数据的读取均以PDO方式完成,上位机作为主站给各个电机驱动器从站发送力矩或速度指令,同时各个驱动器从站将电机的实际速度、力矩和电流回送上位机进行实时控制并保存数据。
本试验台电机的指令和响应数据均取为2字节16位字长,每台电机节点在每个采样点上控制所需数据量小于40字节;能量回馈器的回馈电流数据也在40字节之内。因此,对于5节点的控制总数据传输量每周期小于200字节。考虑到试验台系统无需作长距离的数据传输,在选择CAN通讯最大1 Mbps波特率的条件下,可得到电机控制最小的采样周期为:
柴油机系统响应时间在百毫秒级,车辆控制一般采样周期约几十毫秒,考虑到系统程序等其他功能的时间消耗,对于本平台系统的多节点控制采用10 ms的采样周期,充分满足了混合动力试验台的控制要求。
上位机和从站驱动器的数据交换由PDO映射决定,如图4所示。
每个PDO映射都包含几个子索引,其中子索引0表示提供的数据接口数目。从子索引1开始即为映射的数据对象,每个子索引包含4个字节,前2个字节表示数据对象的索引值,第3个字节表示数据对象的子索引值,上述索引和子索引值对应于驱动器中的数据地址(如力矩指令值、电机速度等),最后一个字节表示数据对象的长度。以(1)中映射为例,索引2F13h和子索引01h确定了驱动器中力矩指令的地址,10h表示该力矩指令为2字节字长。
2.2 实施通讯程序设计
电机控制的通讯程序设计流程,如图5所示,首先进行主站CANopen接口配置,选择波特率,完成CANopen板卡的初始化,将3台电机驱动器和2台能量回馈器添加为网络的节点。其后,通过SDO报文读/写对象字典的方式对从站设备进行参数修改,检验主从站设备是否运行正常。接收到NMT报文后,系统进入操作状态,开始实时控制,主从站采用PDO报文的同步周期方式,实现指令和运行信息的双向读取,同时通过数据保存功能可将电机和能量回馈器的运行数据保存到文本中,用于系统分析。根据如图5所示的流程编程实现的系统CANopen总线调试界面,如图6所示。
3多电机系统基于CANopen通讯的控制试验
以永磁同步电机1(节点1)为例,上位机对其以PDO方式分别发送力矩和速度指令,同时接收电机响应数据。力矩和速度指令和响应数据,如图7所示。
如图7所示,无论是力矩还是速度控制,CANopen通讯均能正确地传送和接收数据,通讯过程中没有突跳野值的出现。根据PDO映射参数,速度和力矩指令及响应均采用16位字长。相应力矩数据分辨率为0.015 Nm,速度数据分辨率为0.1 rmin-1,大大高于系统控制要求。
给节点1发送幅值为10 Nm的1 Hz的正弦力矩指令,电机驱动器在0.5 s内实际接收到的力矩指令由,如图8所示,该控制区间内通讯采样50次,与10 ms通讯周期设置相符,验证了通讯的实时性。
上位机在每个通讯周期内对永磁同步电机1(节点1)、永磁同步电机2(节点2)和感应电机(节点3)分别发送梯形指令、0.1 Hz正弦指令和1 Hz正弦指令并接收相应的电机响应数据。上位机所接收的3节点的实际响应曲线,如图9所示,响应与规划指令曲线相一致,通讯可靠。
在多节点的控制试验中,基于CANopen协议的电机控制数据传输正确,采样周期得到保证。基于CANopen协议的多电机控制应用方案的可行性和可靠性得到实际验证。
4 结束语
CANopen协议以其免费公开、透明简单和程序开发容易的特点在工业自动化领域应用广泛,成为目前欧洲最流行的CAN高层协议之一。本研究在介绍该协议的基础上,提供了基于CANopen协议的多电机控制系统的设计与实现方案,通过具体试验验证了CANopen协议在多电机控制上的可行性。该实现方案也适用于工业自动化中其他多节点的随动或过程控制系统。
参考文献
[1]邬宽明.CAN总线原理和应用系统设计[M].北京:北京航空航天大学出版社,1996.
[2]BOTERENBROOD H.CANopen high-level protocol forCAN-bus[M].NIKHFF Internal Documentation,2000.
[3]吕京建,张宏韬.CAN总线的浅析CANopen协议[J].电子产品世界,2002(9A):26-27.
[4]何光宇,胡正,秦霆镐,等.针对工业控制的CANopen系统[J].微计算机信息,2003,19(12):5-6.
[5]任玮蒙,陶维青.基于CAN总线的高层协议CANopen[J].自动化技术与应用,2007,26(4):128-130.
CANopen协议
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。