CANopen协议分析与实现
由于其高可靠性和实时性的特点 ,CAN总线能够满足系统高性能的要求 ,已经深入到各个行业 ,例如专业车辆、工业控制、医辽器械、海事应用等。CAN的标准协议 CAN2.0协议和国际标准 ISO11898是设计 CAN应用系统的基本依据 ,但它们只是定义了物理层和数据链路层 ,没有对应用层进一步规范 ,本身并不完善 ,需要一个更开放的、标准化的高层协议来定义 CAN报文中的标识符和字节数据。在此背景下 ,由 CiA(CANin Automation)组织监督开发了CANopen高层协议。在 2002年,已经形成欧洲标准 EN50325-4。 CANopen的最大优点之一就是实现较为简单。CANopen协议是基于 CAN串行总线系统和应用层 CAL的高层协议 ,也是一种针对于行业的标准化的协议。CANopen协议为分布式控制及嵌入式系统的应用提供了必要的实现方法 ,主要提供 :(1)不同 CAN设备间的互操作性、互换性。(2)标准化、统一的系统通讯模式。(3)设备描述方式和网络功能。(4)网络节点功能的任意扩展。CANopen协议以通讯规范 CiA DS-301为基础 ,规定了一系列的设备规范 ,如 CiA DSP-401,CiA DSP-404等,从而提供了配置通讯参数和数据的方王俊波 :博士研究生本工作得到国家自然科学基金重点项目 (60334010),国家自然科学基金项目 (60474047)高等学校博士学科点专项基金项目 (20030561013)以及广东省自然科学基金项目 (31406)的资助 法,规定了设备间的通讯及特定设备间的特定行为 (如数字 I/O、模拟 I/O、RS485通讯等 ),并定义了标准化的应用对象、基本功能以及网络功能。CANopen协议采用对象字典 (OD)、电子数据文档 (EDS)等一系列概念来描述设备和协议的相关信息 ,还规定了服务数据对象 (SDO)、过程数据对象 PDO、网络管理等多种通讯机制。在本文中 ,主要是对对象字典、服务数据对象 (SDO)、过程数据对象 (PDO)进行了简要的分析。1对象字典 (OD)对象字典是设备规范中最重要的部分。实际上 ,它是一组参数和变量的有序集合 ,包含了设备描述及设备网络状态的所有参数 ,也就是说 ,通过网络可以采用有序的预定义的方式来访问的一组对象。CANopen协议采用了带有 16位索引和 8位子索引的对象字典 ,对象字典的结构如表 1所示。一个主节点或配置工具能够访问从节点的对象字典中的所有值。表 1对象字典结构对象字典的实现是整个 CANopen协议的关键。所
以,在使用对象字典来建立对象的描述时 ,要能够正确描述所建立的对象含义。例如 ,一个节点的两个模拟通道的对象字典的描述 ,如表 2所示。对于这样的描述 ,可以通过建立包含所有对象信息的库文件来实现,以类似于 C语言的方式来实现。
表 2对象字典的描述
用于实现上述对象字典的 C语言结构 :
typedefstruct {
UNSIGNED8Entries_Number;
UNSIGNED32 An_Input1;
UNSIGNED32 An_Input2;
}Analog_Input;
2服务数据对象 (SDO)SDO用于建立客户 /服务器关系 ,客户设备具有读写访问 ,且一个 CANopen设备必须至少实现一个服务器的 SDO,基于 CAL的通讯报文规范来访问设备的对象字典。
通过 SDO服务 ,可以访问对象字典的条目 ,这些条目可能包含有任意长度的数据和数据类型。所以 SDO服务可以用于在服务器和客户间互相传送多个数据集合。SDO的传送机制有三种 :(1)分段传送 :大于 4个字节的数据 ,如果设备支持大于 4个字节传送时,则此项是必需的。(2)加速传送 :数据长度小于或等于 4个字节 ,此项是必需的。(3)分块传送 :用于较长数据的传送 ,此项是可选的。
为了进行标准的分段 /加速传送 ,SDO定义了 6个确认服务(SDO下载 ,SDO上传 ,启动 SDO上传 ,启动 SDO下载 ,下载 SDO段和上传 SDO段)和一个非确认服务 (中止 SDO传送 )。
对于启动 SDO下载协议。由客户向服务器发出请求,我们可以看看是如何来访问 CANopen设备中的对象字典的。启动 SDO下载协议与对象字典的关系 ,如图 1所示。注意 :对象字典中的文本描述或数据类型是不能够被传送的。
图 1启动 SDO下载协议与对象字典的关系一个节点向其它节点发送 SDO时,所使用报文 CAN-ID为600h+Node-ID。
例如 ,将值 0x31FF写入节点 0x01的索引为 0x6012,子索引为 2的对象字典中 ,对应的字节赋值 ,如图 2所示。根据 SDO协议 ,连接对象报文的标识符 (COB-ID)为 600h+01h=601h。Byte0为 2B,表示客户向服务器发出下载请求 ,采用加速传送方式 ,并且显示字节长度。Byte1和 2表示索引和子索引分别为6012h和 2h。Byte3为 02h,表示传送的数据为 2个字节。Byte4和 5表示传送数据值为 0x31FF。
图 2对应的字节赋值3过程数据对象 (PDO)3.1PDO概述PDO主要提供了对设备内的应用对象的直接访问,用于实现优先级较高的数据实时传送 ,例如 :一个 CANopen设备可以直接读取另一个 CANopen设备的实时过程数据信息。但是 ,传送的数据长度必须小于或等于 8个字节。PDO对应于设备对象字典中的条目 ,并且为应用对象提供访问接口。数据类型和应用对象的映射是由设备字典中的相应的缺省 PDO映射结构来确定的。PDO可以用于数据的发送和接收 ,分为 TPDOs (Transmit-PDOs)和 RPDOs(Recive-PDOs)。支持 TPDOs的设备称为 PDO的生产者 ,能够接收 PDO的设备称为PDO的消费者。PDO的生产者和消费者必须知道 PDO报文所含信息的含义 ,报文的每个字节的含义都是通过 PDO映射消息来预定义的。PDOs必须由 PDO通讯参数和映射参数来描述。3.2 PDO发送类型及映射对于 PDO的发送来说 ,既要考虑系统的实时性的要求 ,又要考虑总线带宽的有效使用 ,所有选择通讯类型也是十分重要的。PDO的传送类型有多种 :一个 PDO的传送类型参数规定了传送模式和触发模式。传送模式分为同步传送和异步传送。值得注意的是 :同步对象的产生可以是周期性的 ,也可以非周期性的。报文的触发模式有 :事件驱动、定时器驱动和远程请求。一个报文可以通过节点内部的定时器以固定的时间间隔来发送 ,也可以由主节点发送同步对象或远程帧来启动从节点的发送。通过写访问与 PDO相关的映射结构 ,可以将数据映射到 PDO报文的不同的字节。多个变量可以映射到一个 TPDO。设备规范定义了映射的缺省对象字典条目 ,可以方便不同设备间的互用性。3.3实例例如 ,一个 CANopen节点 (Node_ID为 0x01)具有两路模拟输入 ,必须满足 PDO链接和映射机制。PDO映射参数、节点的对象字典、PDO通讯参数及 TPDO的数据格式如表 3、4、5和 6所示。
在对象字典的索引 1A00h中,存储了两个对象 ,它们是数据变量 An_Input1和 An_Input2,数据长度都为 8位。它们对应于对象字典中的索引为 6000h,子索引 01h和 02,所以 PDO映射参数结构中的 1st TPDO映射项为 6000108和 6000208。
表 5反映了 PDO的通讯参数。对于通讯参数索引为 1800h,子索引为 2,所表示的就是传送类型 ,值 255表示 PDO的COB-ID为181h(十进制为 385)的对象可以采用周期性或非周期性的同步的传送方式。对于 TPDO而言 ,可以设定事件定时器 ,利用事件驱动传送。定时事件由 TPDO的索引 1800,子索引 5来设置。当节点检测到输入通道的测量值发生变化时 ,就产生触发 PDO传送的事件。在本例中 ,采用定时 150ms发送一次 TPDO的事件。 通过对映射结构中的参数进行写访问 ,可以配置 TPDO报文的数据格式,但是在一般情况下 ,可以采用由设备规范定义的缺省数据格式。如表 6所示 , 4网络管理 (NMT)
网络管理是基于主从结构的概念 ,一个 CANopen网络中只有个主节点 ,其它为从节点。它可以用于控制和管理网络设备 ,包括参数配置、ID分配、节点状态控制、错误控制等。
NMT服务可以实现网络节点状态的转换 ,网络节点状态结构框图 ,如图 3所示。
在完成初始化(Initialisation)后,节点可以直接进入预操作(Pre-Operational)状态 ,此时就可以通过 SDO对节点的进行设置参数和配置信息。但是不能进行用于实时数据传送的 PDO服务。然后 ,就可以切换到操作 (Operational)状态。在预操作和操作状态可以使节点进入初始化和停止状态(Stopped),在任何情况下,都可以对节点进行初始化 ,体现了 CANopen系统的灵活特性。
图 3网络节点状态结构框图在网络管理机制中 ,其中一个重要的特性就是 Heartbeat协议。一个节点可以产生周期性的报文称为 Heartbeat报文。不需要主节点发送远程帧 ,从节点就可以向主节点或其它节点报告自己的状态。Heartbeat生产者和消费者的关系可以由对象字典来配置建立。一个生产者可以周期性地发送 heartbeat报文。
图 4Heartbeat协议值得注意的是 :根据 CANopen的错误控制协议 ,在初始化之后 ,从节点会发出一个 Boot-Up报文 ,向主节点说明已经进行预操作状态。例如 :Node-ID为 0x01的节点在初始化会向主节点发送一个 Boot-Up报文 ,对象连接标识符 COB-ID为 0x700h+Node-ID= 0x701h,数据字节 Byte0为 0。由 Heartbeat协议可知 ,该报文也是一个节点发出的第一个 Heartbeat报文。另外 ,有关网络管理机制的其它协议 ,如模块控制协议、Node Guarding协议等 ,不再详细分析和介绍。5结束语CANopen协议的应用在国外已经深入到各个领域,而且正在进一步完善和发展 ,特别是在嵌入式系统、工业机械装置等方面的应用已经体现了其优异的特性 ,将对我国测控自动化、计算机测量等都将产生重要影响。本文具有参考价值和实用性 ,(转 158页)算控制量 δ,最后将计算结果通过双口 RAM送到脉冲发生器。由于 DSP的运算速度很快 ,所以完全可以在 500μs的周期内实现采样、读取数据及实现各种复杂的控制算法并查表计算出 STATCOM逆变器输出电压与系统电压间的相位差 δ,实际的程序编制运行中已经证明了这一点。图 3是主控制器主程序流程图和定时器中断服务程序流程图。82-946file:///C:\Users\Cao\AppData\Local\Temp\msohtmlclip1\01\clip_image002.jpg4控制算法仿真结果本次仿真软件用 MATLAB6.1PSB(电源系统模块 )控制工具箱 ,将含有采用电流间接控制方法的 STATCOM接入一个单机无穷大系统 ,假设系统其中的一条线路在 0.3秒发生瞬时两相对地短路 ,在 0.45秒切除故障线路 ,记录发电机机端电压、功角的动态仿真特性曲线,无 STATCOM的系统和装有 STATCOM的系统的仿真结果对比分别如图 4、图 5所示。
a.无 STATCOM时 b.有 STATCOM时图 4机端电压仿真曲线a.无 STATCOM时 b.有 STATCOM时图 5功角仿真曲线 从图 4、图 5可以看出,在系统发生两相短路瞬间,系统很快失去同步 ,投入 STATCOM后,发现在故障发生过程中 ,发电机机端电压、功角曲线发生波动 ,但很快趋于稳定,说明了采用电流间接控制算法的 STATCOM在维持系统电压稳定和提高电力系统的暂态稳定极限上发挥了很大的作用。
学习了
页:
[1]