型号: PXF3001
摘要 :在对 CAN2.0协议和 CANopen协议研究分析的基础上 ,构建了基于 CANopen协议的数据结构 ,应用该数据结构实现了国内的基于 CAN2.0协议的USB-CAN适配器和国外的基于 CAN open协议的控制器间的通讯控制。并通过构建的实验平台和基于该数据结构编制的软件测试了二者的通讯性能。关键词 : CAN总线 ; CANopen协议 ;主节点 ;通讯测试中图分类号 : TP271文献标识码 :B
CAN总线由于具有实时性和可靠性高 ,组网成本低等优点,近年来 ,在汽车工业、楼宇自动化、工厂自动化、机器人控制等领域得到大量应用。国内大多数的 CAN总线应用系统仍然是基于 CAN2.0协议开发的 ,一些研究机构从国外引进了一些基于 CANopen协议的产品 ,这些产品在和上位机相连组成网络控制系统时 ,需要一块上位机和 CAN总线相连的适配器。但是,国外的基于 CANopen协议的产品往往仅提供动态链接库支持某些知名大公司的 CAN适配器。这样不仅增加了经济成本 ,而且不利于国内 CAN网络产品的发展。在应用过程中 ,笔者选用了国外的基于 CANopen协议的控制器和国内某公司生产的价格较便宜的 USB-CAN适配器 ,由于该控制器仅提供动态链接库支持德国 IXXAT公司的 CAN适配器。这样就只能遵循 CANopen协议从底层实现通讯和控制。
CiA (CAN in Automation)组织在 1995年发布了完整版 CANopen协议 ,不久它就得到了广泛应用 ,成为了全欧洲最重要的嵌入式网络标准。 CANopen协议是基于 CAN串行总线系统和应用层 CAL的高层协议 ,以通讯规范 DS-301为基础 ,还为可编程系统、不同器件、接口等设备定义了大量的行规 (DSP-4××)。
CANopen协议对象字典是 CANopen设备的重要组成部分,定义了设备参数、各个通讯参数 ,描述了设备的全部应用对象。通过对对象字典的访问可以得到各节点的状态 ,确定网络的通信模式 ,选择相应的网络管理。对象字典是一个预先确定的,可通过网络访问的有序的对象组 ,每个对象采用一个 16位
邓遵义 :助教硕士基金项目 :河南省科技攻关项目 :中央空调风道清洁机器人系统研究 (0624260024)颁发部门 :河南省科技厅 的索引值来寻址 ,为了允许访问数据结构中的单个元素 ,同时定义了一个 8位的子索引。
CANopen协议规定有 4类通讯对象 ,分别是服务数据对象 (SDO)、过程数据对象 (PDO)、网络管理 (NMT)和特殊功能对象。SDO通过访问对象字典 ,对通讯和控制参数进行配置 ;PDO用于传输实时数据 ;NMT用于网络中的主节点对从节点的监控和管理 ;特殊功能对象包括同步对象 (SYNC)、时间标识对象 (Time Stamp)、紧急对象 (Emergency),用于配合以上 3类对象进行通讯和网络管理。
2.1服务数据对象 (SD0)
SDO必需的传送有机制有两种 :(1)分段传送 :如果数据大于 4个字节 ,就必须采用分段的方式传输 ,发送 SDO的第一个报文后 ,其余的每个段中都包含7个字节的数据。 (2)加速传送 :如果传输的数据小于或等于 4个字节 ,可以采用加速传送方式 ,数据可以在开始的一个报文里直接完成。两种传送机制的 SDO报文的数据帧格式如图 1和图 2所示 :
2.2过程数据对象 (PDO)
PDO报文有发送 -PDO和接收 -PDO两种形式 ,分别用于读取和写入实时控制参数 ,PDO报文传输的数据不能大于 8个字节。用接收 -PDO向从节点写数据和通过远程帧用发送 -PDO从从节点读数据时 ,报文格式如图 3和图 4所示 :
嵌入式网络技术应用
在组建的 CAN网络中 ,USB-CAN适配器和 PC机一起作为主节点 ,基于 CANopen协议的控制器作为从节点。为了从底层实现主从节点间的通讯 ,在对CAN2.0协议和 CANopen协议的各类通讯对象深入研究分析的基础上 ,构建出了直接适用于 CANopen协议的通讯对象的数据结构 ,包括 SDO数据结构、PDO数据结构、NMT数据结构和紧急对象数据结构。SDO和 NMT数据结构如下所示 ,其它的数据结构因篇幅所限 ,不再一一赘述。新构建的数据结构可用于所有的基于 CAN2.0的 CAN适配器和遵循 CANopen协议的产品间的通讯。
typedefstruct _VCI_SDO_OBJ { UINTCOB-ID; USHORTIndex; BYTE SubIndex; BYTE SDOCommandSpecifier; BYTE Data[4]; BYTE Reserved[3];
}VCI_SDO_OBJ,*PVCI_SDO_OBJ;参数说明 : COB-ID通讯对象标识 ; Index对象字典中数据对象的索引 ; SubIndex对象字典中数据对象的子索引 ;SDOCommandSpecifier SDO命令字 ,代表该帧是发送帧 ,
还是接收帧 ;是正常分段发送 ,还是加速发送 ;以及发送数据的
长度。 Data报文发送的数据 ; Reserved系统保留 ;
typedefstruct_VCI_NMT_OBJ { UINTCOB-ID; BYTE NMTCommandSpecifier; BYTE Data[1]; BYTE Reserved[3]; }VCI_PDO_OBJ,*PVCI_ NMT_OBJ; 参数说明 : COB-ID通讯对象标识 ,NMT报文 COB-ID=0。 NMTCommandSpecifier NMT命令字 ,代表 NMT服务类型。 Data[1]报文发送的数据 ,代表节点号。Reserved系统保留 ;
4.1测试实验平台
为了测试新构建的基于 CANopen协议的数据结构能否实现基于 CAN2.0的 CAN适配器和遵循 CANopen协议设备间的通讯功能 ,建立了一个由 PC机、USB-CAN适配器和基于 CANopen协议的国外某公司的控制器组成的测试实验系统 ,如图 7所示 :
4.2测试软件实现
在 Visual C++6.0环境下 ,利用新构建的基于 CANopen协议的数据结构和 USB-CAN适配器自带的动态链接库函数来完成通讯测试软件编制。软件设计采用模块化设计 ,由初始化模块、通讯模块、错误处理和通讯数据显示模块组成。初始化模块包括对 USB-CAN适配器的验收码、屏蔽码、滤波方式、定时周期等参数进行初始化 ,程序流程如图 8所示 ;通讯模块实现通讯报文的发送和接收 ;错误处理模块对通讯过程中出现的错误进行处理 ;通讯数据显示模块把总线上发送和接收的数据显示出来。
4.3通讯实验
对 CAN主节点和基于 CANopen协议的控制器间的通讯测试实验主要包括如下内容 :
*依据控制器的对象字典 ,通过发送和接收 SDO报文 ,测
试 SDO报文。测试内容包括 CAN主节点通过 SDO报文访问控 (下转第 55页)
嵌入式系统应用
VMC向外设传送的指令由一个地址字节、一些可选的数据字节与一个校验和字节构成。发送指令后 ,外设应答 VMC的通信块可以由一个数据块和一个字节组成 ,或者一个应答字节 ,或者一个无应答字节。如果外设应答数据块的话 ,VMC将通过一个应答字节、无应答字节或重发字节应答外设传回的数据。
控制模块由以下四个部分组成 :
通过对 CAN总线主节点和控制器间的通讯测试 ,证明构建的基于 CANopen协议的数据结构能够成功地完成国内的基于 CAN2.0协议的 USB-CAN适配器和国外的基于 CAN open协议的控制器间的通讯 ,并且通讯效果稳定可靠。