型号: PXF2973
介绍了CAN总线的高层通信协议CANopen协议,并且将CANopen通信协议应用于ARM控制平台与电机驱动器之间的通信中。设计了s3c2410外扩CAN通信模块,构建了s3c2410对多电机驱动器分布式控制CAN网络,配置了CANopen主从节点,分析了控制电机CANopen通信流程,实现了s3c2410与电机驱动器之间的CANopen通信,达到了对电机速度控制方式。
CANopen协议;s3c2410;多电机驱动器
Abstract: The paper presented CANopen protocol, the high layer protocol of CAN-bus, and the application of CANopen protocol in the communication betweenARM-control platform and motor drives. Thepaper designed s3c2410 external module ofCAN-communication, structured CAN-net for the s3c241’s distributed control to motor drives, Configured master-slave node, analyzed the control motor CANopen communication process, realized communication between s3c2410 and motor drives with CANopen protocol, and the speed
control method of motor. Key words: CANopen protocol ; s3c2410 ; Motor drives
中图分类号:TP27 文献标识码:A
CAN全称为Controller Area Network,即控制器局域网,是国际上应用最广泛的现场总线之一,相比于串行接口RS232和串行总线RS485,它能有效地支持分布式控制和实时控制,因其具有极高总线利用率、传输距离可达10km、传输速率高达1Mbit/s、具有完善的错误检测机制、采用多重访问冲突仲裁机制的帧传输方式等优点,而在汽车工业、船舶运输、机械控制等领域得到广泛应用。
CAN本身不是一个完整的协议,在CAN标准协议CAN2.0以及国际标准ISO1898中只定义了物理层和数据链层底层协议,要进行高效通信还需要进一步开发高层协议。CANopen是一种基于CAN总线的高层协议,是由CiA协会针对CAN协议的不完整性而定义出的一个更高层次的协议——应用层协议。它主要提供设备间的互操作性,标准化、统一的系统通信模式,设备的描述方式和网络功能,以及网络节点功能的任意扩展,在工业控制中拥有良好的前景 [1]。
本文在月球样车移动平台上,针对其主控制器ARM芯片没有内部CAN控制器的缺陷,设计了外扩CAN模块的实现方案,组建了多驱动器CAN控制网络,阐述了CANopen协议在ARM控制多电机驱动器系统中的通信机制,实现了CANopen协议在电机控制中的应用。
收稿日期:2010 -12-04
作者简介:张捍东(1963-),男,教授,博士,主要研究方向为电力电子与运动控制、机器人路径规划及相关技术、工程优化技术与应用。
*基金项目:国家自然科学基金重点资助项目(70431003);国家自然科学基金创新群体资助项目(60521003);国家自然科学基金资助项目 (50407017);国家科技支撑计划资助项目 (2006BAH02A09);安徽省教育厅自然科学基金资助项目 (2006KJ019A,2007KJ052A)。
文章编号:1001-9227(2011)02-0040-04
CANopen协议作为一种高层协议,是由CAN-in-Auto-mation(CiA)定义并维护的协议之一,它使用了CAL(CANApplication Layer)通信与服务协议子集,定义了基于CAN的分布式工业自动化系统的应用标准以及CAN应用层通信标准。
CANopen协议集的“通信子集”规定了基本的通信机制及其特性。大多数重要的设备类型,例如数字和模拟的输入输出模块、驱动设备、操作设备、运动控制器,可编程控制器或编码器,都在称为“设备子集”的协议中进行描述[2]。
基于CANopen协议的设备模型通常由通信部分、对象字典和应用程序组成,如图1所示。
图1 基于CANopen协议的设备模型组成图
在CANopen通信协议中共定义了4类通信对象,分别为:管理对象(NMT:Network Management)、服务数据对象
(SDO:Service Data Object)、过程数据对象(PDO:Process Data Object)和特殊功能对象。其中NMT用来传递主节点对整个网络系统的管理信息,SDO用来对对象字典《自动化与仪器仪表》2011年第2期(总第154期)
进行读写或者进行大量数据的传输,PDO用来传递过程数据信息,特殊功能对象包括同步对象(SYNC)、应急事件对象(Emergency)、事件基准对象(Time-Stamp)等。
CANopen标准最核心的部分是通过对象字典(ObjectDictionary)对设备功能进行描述,对象字典是一个有序的对象组,每个对象采用一个16位的索引值来寻址,为了允许访问数据结构中的单个元素,同时定义了一个8位的子索引。这样一个16位的索引和一个8位的子索引唯一确定了对象字典的入口。通过对象字典的入口可以对设备使用的数据类型、通信对象和应用对象进行访问。
应用程序是连接CANopen从站和主站的桥梁,主要是对对象字典的访问。主站可通过SDO对从站设备进行配置,或者是通过PDO与从站进行高速数据交换,实现实时控制 [3]。
CANopen协议在ARM控制多电机驱动器间的应用与设计
目前,在移动机器人的研究中,多采用两级分布式控制系统结构,由一个功能强大的CPU作为上位机,完成整个系统的管理及运算规划等;下位机由多CPU组成,每一个CPU控制一个关节运动或模块功能。
本文研究所基于的移动机器人样车平台由4组结构相同的轮腿和转向架、车体支架和转向支架构成,要实现对这种多关节复杂机构的系统管理、运动规划、动力学建模等功能,要求上位机的CPU具有足够存储空间和较高的工作主频,拥有较高的数据运算能力,从而可以保证控制平台能稳定准确快速地协调各控制关节。三星公司的S3C2410具有工作频率203MHz、支持NAND Flash、内置外部存储器控制器(SDRAM控制和芯片选择逻辑)、应用广泛、功能强大、能构建嵌入式操作系统完成各程序模块的管理等优点,所以本文采用S3C2410作为月球样车的主控制平台。本文通过CAN总线实现样车控制平台与多电机驱动器通信,控制电机运行,系统框图如图2所示。
图2 系统框图
处于主机地位的S3C2410外扩CAN控制器通过高速收发器与CAN网络相连,多电机驱动器是基于DSP的集成模块,采用标准的CANopen协议通信接口,直接连入CAN网作为从机按照CANopen通信协议接受来自主机的控制信号。驱动器CANopen接口遵从CANopen通信标准DS301和行业规范标准DSP402运动和驱动控制单元协议标准。
芯片S3C2410是一种高集成度,高性价比的嵌入式处理芯片,但是由于内部没有集成CAN控制器,所以在工业控制CAN总线应用中需要扩展CAN接口。本文采用带高速SPI接口的独立CAN控制器MCP2510来给S3C2410扩展CAN接口。硬件电路管脚连接如图3所示。
图3 CAN模块硬件电路图
本文采用的基于二级半转机构的月球样车,要求电机驱动能够精确控制并且能提供足够的功率,德国冯哈伯集团生产的微型电机及驱动器具有制造工艺精湛、体积小、控制精度高、功效高等优点而被广泛应用于航空航天等高端领域。
本文样车移动系统一共采用8组该集团3863H024C直流有刷电机及其运动控制器MCDC3006C组成关节运动系统和转向系统。MCDC3006C的端口框图如图4所示,左侧V1到V8端口为电源侧,+24V与GND端口接入24V直流稳压电源,为驱动器及电机提供电源,驱动器通过接口CAN_H、CAN_L连入CAN总线;右侧M1到M8为电机侧,Mot+、Mot-接电机正负极端,ChA、ChB为编码器的反馈信息通道。
本移动系统四个电机用于驱动车体关节系统和四个电机用于车体转向系统,每个电机都有一个驱动器MCDC3006C控制,8个驱动器与样车ARM平台组成CAN总线网络,驱动器在CAN网络中处于从机地位,驱动器通过CAN_H与CAN_L端口连接入总线网络,并且在CANopen通信参数设置中依次标号为节点1到节点8,1到4节点用于驱动关节系统,5到8节点用于转向系统。
CAN总线作为一个双线总线系统,CAN上的所有节点
41
CANopen协议及在ARM控制多电机驱动器系统中的应用与设计张捍东,等
是并行连接的,总线终端必须外加一个120Ω的电阻跨接在CAN_H与CAN_L之间。除此之外,所有节点还应共地。如图5所示 [5]。
图4 电机驱动器端口图
图5 CAN总线网络
S3C2410与驱动器组网连接后,系统上电启动后,CANopen上所有节点都将处于一种预操作状态。在预操作状态下,可以进行NMT功能,如表1所示可以打开远程节点设备
[6]。
表1 NMT功能表
图6 CANopen通信流程图
CAN总线信号由高速收发器TJA1050使用差分电压传送,两条信号线被称为CAN_H和CAN_L,静态时均是2.5V左右,此时状态表示为逻辑1也可以叫做“隐性”。用CAN_H比CAN_L高表示逻辑0,称为“显性”。此时,通常电压值为CAN_H=3.5V和CAN_L=1.5V。当“显性”位和“隐性”位同时发送的时候,最后总线数值将为“显性”。在实验室条件下,通过示波器对CAN_H与CAN_L接口信号采集,测得静态时端口是2.59V,通信状态下,CAN_H为3.45V,CAN_L为1.55V左右。同时,电机3863H024C最高转速设定为4000rpm,在本文控制平台上,通过CANopen通信机制控制电机由静止到转速为2000rpm的小实验,以测试本文中CANopen通信机制的成功实现,并由监控软件Motion Manger测得实时电机转速如图7所示。
在此状态下,除NMT功能之外,要设置对象字典中的参数,只能采用SDO通讯,PDO无法在预操作状态下通讯,要进一步操作,需让系统进入到操作状态。该分布式多电机控制系统主要采用CANopen协议的SDO和PDO两种数据传输机制。SDO允许从对象字典中读写参数,读写访问通过16位索引和8位子索引执行,此时驱动器实际作为服务器使用,例如针对客户端(PC或ARM)请求而提供数据(上传)、从客户端获取数据(下载)。PDO是指通过CAN报文帧传输的实时数据,最长8字节,用以控制和监测设备状态。PDO内容由现场设备指定并负责发送和接收,例如包含控制数据RxPDO(接收)和包含监测数据TxPDO(发送)。
主站通过CANopen控制电机的流程图如图6所示,首先通电进行初始化,波特率进行自动匹配,设备进入预操作状态;将8个驱动器添加为网络节点,通过NMT报文启动节点,进入设备操作状态。其后,通过SDO报文读写对象字典对从站设备进行参数修改;在操作状态,通过PDO通信机制实时进行控制,主从站采用PDO报文的同步周期方式,实现指令和运行信息的双向读取。控制结束时停止从站节点,CANopen结束 [7]。
图7 实测电机转速
CAN总线不仅在工业控制领域应用越来越广泛,在机器人控制平台设计中也得到了很好的应用,可以实现各个功能模块器件的高速稳定通信,达到实时控制效果。本文在所述的硬件平台s3c2410下,组建了ARM控制多驱动器的CAN网络;通过加载CAN驱动模块、CANopen协议的编程,实现了主站ARM控制器对从站驱动器的CANopen通信,并通过对电机实现速度模式下的控制验证了主从站之间CANopen通信的成功。
《自动化与仪器仪表》2011年第2期(总第154期)
参考文献 [4] 王继国,孙新亚.CAN控制器芯片MCP2510在远程监测系统中的
[3]CANopen Device Profile for Drives and Motion Control[Z]. [7] 刘涛,王宗义.基于CAN总线的多电机协调运动控制系统研究CiA,1998,8.[J].机床与液压,2010,卷(2):87-92.
(上接第37页)
4 实验结果
实验方法是,前5秒钟不加入控制器,而是通过驱动器施加一个激励信号让梁自由振动起来,模拟梁受外界扰动产生振动。从第5秒钟开始,撤除激励,同时加入PD控制器[5]。
实验结果如图6所示,图中上半部分是传感器采集的悬臂梁振动波形,下半部分是施加在驱动器上的控制信号
(前5秒是正弦激励信号,让梁自由起振;5秒以后是PD控制器的输出信号)。从图中看出,从第5秒施加控制信号,第11秒梁被基本抑制到停止振动。调节时间大约为6秒。传感器采集的振动波形(经过了放大电路,所以纵坐标刻度与图2不一样)与图2所示的自由振动的波形相比可知,PD控制器对悬臂梁的振动抑制作用是非常有效的。
图6 加入PD控制器后的振动抑制过程
实验的控制效果比图5所示的仿真控制效果要稍差些,是因为仿真中把悬臂梁看作理想的二阶系统。实际上悬臂梁与二阶系统还是有些差异,另外还有很多非线性因素的影响。但是,仿真和实验都证明了设计的控制器是非常有效的。所以完全可以借助仿真的方法来设计PD控制器。
把悬臂梁看作二阶系统,用实验的方法辨识其参数,建立其数学模型,然后设计PD控制器,对扰动产生的振动进行抑制。仿真和实验结果证明了这种方法的正确性。
43