CANopen协议在高空作业车控制系统中的应用

2011-02-19 07:49赵晓光
制造业自动化 2011年3期
关键词:高空作业字典通讯

王 硕,李 恩,赵晓光

WANG Shuo,LI En,ZHAO Xiao-guang

(中国科学院 自动化研究所,北京 100190)

0 引言

20世纪80年代中期,由Bosch公司研发出的CAN总线,即控制器局域网(Controller Area Network)[1],由于其自身具有典型的总线型结构、稳定可靠、实时性、抗干扰性强、传输距离远等特点,在汽车行业领域,占有着非常重要的主导地位。然而,由于CAN总线本身只定义了ISO/OSI模型中的第一层物理层和第二层数据链路层,在实际使用中,用户还需要自己定义应用层的协议,而由此造成了不同厂商的CAN设备间无法正常通信。为了以CAN 总线为基础构成完整的工业控制现场总线系统,制定相应的应用层协议,解决设备互连和兼容问题就显得尤为重要。

CANopen协议即是这样的一个CAN应用层协议。近年来,作为CAN高层协议的标准之一,CANopen协议由于其公共、开放、通用且易于开发的特性,在发布后不久就获得了广泛的承认,在工程机械领域中得到了广泛应用,在高空作业车领域亦是如此。一方面,将CANopen应用于高空作业车控制系统,解决了不同厂商生产的传感器、控制器等模块间的兼容问题。其次,CANopen提高了通信的标准化,开放化程度,使得通讯的可靠性、实时性进一步增强。再次,由于国外该领域中CANopen使用已经相当普遍,国内相关产品研究相对较少,本文希望通过该系统设计,给高空作业车控制系统的国产化提供些参考。

1 CANopen协议原理及其核心内容

CANopen协议于20世纪90年代末,由CiA组织(CAN-in-Automation)在CAL(CAN Application Layer)的基础上发展而来,一经推出便在欧洲得到了广泛的认可与应用[1,2]。经过对CANopen协议规范文本的多次修改,使得CANopen协议的稳定性、实时性、抗干扰性都得到了进一步的提高。并且CiA在各个行业不断推出设备子协议,使CANopen协议在各个行业得到更快的发展与推广。目前CANopen协议已经在运动控制、车辆工业、电机驱动、工程机械、船舶海运等行业得到广泛的应用[3]。尤其是在欧洲,CANopen协议被认为是在基于CAN的工业系统中占领导地位的标准。正是CANopen协议的出现,实现了应用层结构上的统一,进一步完善了CAN总线的网络系统,使其更加规范化,更具有竞争力。

1.1 对象字典

对象字典(OD:Object Dictionary),是CANopen协议中的核心概念,在其他的现场总线如Profibus中也有类似的描述。在CANopen协议中,它是一个有序的对象组[4],作为设备规范中的重要组成部分,其包括了对设备属性参数和通讯参数的全部描述。CANopen协议中定义了对象字典的通用结构,其中规定了各种对象参数在对象字典中的位置区域,在建立设备对象字典时,应注意查询对应的位置关系及相应子协议。每个CANopen子节点都有各自相对应的对象字典,其中的每个对象采用唯一的16位索引值和8位的子索引来寻址。除此之外,对象字典还定义了对象参数的功能、数据类型、相应对象值等,提供给CANopen主节点访问。

1.2 CANopen的通讯

根据CANopen协议,总线上数据传输都是通过发送某一特定类的通信对象完成的,它共定义了4种通信对象:管理报文、服务数据对象SDO(Service Data Object)、过程数据对象PDO(Process Data Object),以及预定义报文或称特殊功能对象[5,6]。其中管理报文用来传递主节点对整个网络系统的管理信息。SDO用来提供对设备对象字典的访问,其传送必须由主动访问对象字典的客户端启动,对象字典被访问的设备即服务端响应。SDO不支持广播模式,客户端发送访问请求后,需要服务端返回正确的应答,是建立在两个设备间的一种点对点通讯。由于CAN总线的每帧数据最多传输8字节,对于多于8字节的数据,需要组成一个块(Block)进行传输,在SDO中叫做节(Segment)。每个设备的缺省设置包含一个SDO,也可以支持多个SDO。PDO则用于传递过程实时数据信息,每个PDO 对应于CAN总线唯一的标识符,可周期性发送,无需应答信息并使用所有的八个字节的数据域来传输数据信息。相比于SDO,PDO只能被一个节点发送,但可有多个节点接收。而特殊功能对象则包括同步对象(SYNC)、紧急对象(Emergency)、时间基准(Time Stamp)等特定对象。

1.3 CANopen设备模型

图1 CANopen设备模型

如果将遵循CANopen协议的设备抽象化,可以得到如图1所示的一个CANopen设备模型:其一端连接CAN总线并贯穿其中,通过CAN总线上传输的各通讯对象完成数据通讯的任务。而每个设备都有唯一的一个对象字典,它是承载各种设备参数的载体,是连接应用数据、参数配置与总线通讯的桥梁。最后,设备的最终目标,即应用部分接口的末端则连接着相应的设备的I/O接口,通过此部分输入采集的数据,输出控制命令,完成设备的应用目标。

2 高空作业车控制系统的组成

智能高空作业车经过长时间的发展,在可靠性、安全性、舒适性、操作性等方面都有较大提高,为了防止事故、各国生产的高空作业车都注意配备完善、可靠的安全装置,在整车的控制系统方面投入了大量人力物力[5]。文中所设计的控制系统为了实现在不同机型上的软硬件复制与拼装,利用了模块化的思想,对控制系统分模块设计,使得各模块具有相对的独立性。这样用户在使用时可根据具体车型的需求进行控制系统的集成。智能高空作业车控制系统的系统结构如图2所示。

图2 高空作业车控制系统结构

根据系统设计要求,系统中控制方式为嵌入式闭环控制,采用专门为工程机械设计的专用控制器。通讯方面,每个模块备有两路CAN通道,作为CANopen协议的物理层。从图中可以看出各模块都包含具有一定控制能力的处理器,其中I/O信号扩展模块主要负责对传感器采集来的臂架的幅角、臂长和方位等物理量电信号进行监控。而负责采集数据的传感器的输出信号有总线型信号(CANopen协议格式)和模拟量信号,总线型信号可直接将它们通过CAN总线送给主控制器模块;模拟量信号经过模数转换后,亦通过CAN总线送给主控制器。由主控制器模块负责分析处理,并通知功率扩展模块和信号扩展模块,由它们分别输出相应PWM(脉宽调制波)信号、数字量输出信号,给出相应提示和声光报警。最终控制相应比例阀、开关阀做出响应,驱动整车液压机械臂的运动,实现自动收车、自动展车、智能避障、防自损等高空作业车的智能运动。

在电路保护方面,为了防止控制对象端(高空作业车)采集的信号突变或发生强干扰,破坏主控模块内部电路,设计时在信号输入端与控制电路间采用了保险丝和光耦隔离元件等,使得信号采集端具有短接保护、过载保护等功能,并与控制端完全隔离,消除互相间存在的共模干扰。在信号输出端,为了防止输出短路和过流过热,造成机械臂液压阀被非正常驱动,甚至现场事故的发生,电路中使用了Infenion的BTS650P、BTS721L1智能电源开关。另一方面,电路中预留了相应冗余的I/O端口,并将主控制器与扩展存储器独立出来,利用接插件与主控板相连,这样设计大大方便了控制系统的维修和升级,也降低了相应成本。

3 高空作业车控制系统中的CANopen协议应用

3.1 CANopen协议在系统中的实现

如上所述,在CANopen中每一个设备都有一个相对应的对象字典,用于定义对象属性,如设备属性参数和通讯参数等。所以,完成对象字典的设计是CANopen应用中的重要一环。本文为某型号高空作业车设计了控制系统,该系统共有11个节点,以主从方式工作,1个主节点和10个从节点。主控制器模块对应主节点,10个从节点分别由4个长度角度传感器,2个信号扩展模块,超声测距传感器、总线手柄、显示模块、功率扩展模块各1个组成。

这里我们以高空作业车控制系统中显示模块为例,说明设备对象字典的建立过程。如前所述,CANopen协议中定义了对象字典的通用结构,其中通讯子协议和制造商子协议部分是我们主要需要设计的部分,它们代表的索引值区间分别是0x1000至0x1FFF和0x2000至0x5FFF。对于通讯子协议部分,除了软硬件版本号等固定对象参数外,需要根据显示模块的功能确定所需通讯对象的种类和数量,并据此分配相应的对象空间。在该系统中显示模块作为从节点,主要支持主节点的访问,配合系统参数设置,因此需要一个SDO。其次,显示模块需要从其他从节点处获得相应传感器数据信息用于显示,并发送显示器按键信息给主节点。由于每个PDO最多传输8字节数据,根据数字量信号和总线信号传输的需要,这里配置了1个发送PDO和4个接收PDO。具体的对象字典如表1所示。

表1 显示模块的对象字典

除了对象字典的设置,在CANopen协议应用中,其网络初始化boot-up过程是网络正常运行的前提,该过程过后,系统方可正常通讯。具体到本文所设计的高空作业车控制系统,首先要将控制模块主节点和所有从节点分别上电,初始化物理层CAN芯片并使各节点自动从初始化(Initialising)状态进入预操作(Pre-Operational)状态;其次,主节点根据电子数据文档文件(EDS:Electronic Data Sheet)中的描述,向从节点发送SDO,访问并修改从节点的对象字典中的对象设置;最后由主节点向从节点发送NMT 指令,使从节点进入运行(Operational)状态,至此主节点和从节点即可以通过PDO和SDO的发送与接收进行正常通讯和数据交换了。

3.2 软件控制流程

软件设计的主要目的在于通过设置相应参数,在保证正常通讯的同时,响应控制命令并根据接收到的传感器的信息,完成指定操作和处理相关故障并报警。以某型号高空作业车控制系统的主节点即主控制模块的软件程序为例,如前文所述在节点上电之后,主节点确认收到从节点发送的Boot-up报文,并在确认从节点进入预操作状态后,向从节点发送SDO,访问并修改从节点的对象字典,对从节点进行预设置并使从节点进入操作状态。在这之后主节点进入主循环体,当主节点收到SDO时,对其对象字典参数进行在线修改。与此同时,通过接收从节点的心跳报文,监控各节点的通讯状况。如果发现通讯故障,则停止高空作业车控制端的一切输出,停止高空作业车的一切机械臂动作,并使用声光报警通告操作人员,以便对故障原因进行检查直至故障排除。对于通讯而言主循环中的另一个重要意义便是实时的获取各模块、传感器监测到的高空作业车的实时状态,并获取手柄的控制信息,提供给下面的控制功能代码段,并通过控制代码判断动作指令、提供限位报警,并最终驱动机械臂运动,实现高空作业车的智能运动控制。

图3 高空作业车主控制模块软件流程(通讯部分)

4 结束语

基于CANopen的模块化控制系统设计在高空作业车领域具有较好的实用性和应用前景。本文的研究工作正是源于这样的应用背景,通过对CANopen协议的分析,并将其应用于高空作业车控制系统设计中,经现场调试,通讯可靠性、实时性达到控制要求,并解决了兼容性问题,为进一步产业化生产奠定了基础。

[1]Mahammed Farsi,Karl Ratcliff.CANopen:The Open Communications Solution[C].ISIE'1997.

[2]Mahammed Farsi,Karl Ratcliff.Controlling with CANopen [J].Industry Control Networks,1998.

[3]Gh.,V.Horga,M.,M.Albu,G.Chiriac.Implementingthe CANopen Protocol for the Distributed Control of a Hybrid Electric Vehicle[J].ELECTROMOTION 2009.

[4]郇极,杨斌,魏继光.一种开放式的现场总线协议CANopen [J].制造业自动化,2002,24,10.

[5]孟诏.基于CANopen协议的CAN总线控制系统研究[D].北京:北京工业大学,2008.

[6]M.Farsi,K.Ratcliff,Manuel Barbosa,An introduction to CAN-open[J].Computer &Control Engineering Journal,August 1999,161-168.

[7]CANopen Communication Profile for Industry System Based on CAL,CiA Draft Standard 301 October,1996.

猜你喜欢
高空作业字典通讯
《茶叶通讯》简介
《茶叶通讯》简介
通讯报道
字典的由来
自由落体工具和安全气囊系统,专为高空作业者设计
一款剪叉式高空作业平台的设计研究
捷尔杰携多款创新产品亮相2018美国租赁展
大头熊的字典
通讯简史
正版字典