基于CANopen协议的车载平台数据通讯系统
扫描二维码
随时随地手机看文章
引言
在现代战争中,随着武器装备系统的机动化、自动化和信息化程度的不断提高,军用车辆上的车载设备也不断增多,其中很多设备如车载雷达、车载光学瞄准设备、车载武器设备等,都需要一个稳定的水平平台作为基座,以保证武器系统的瞄准、跟踪和精确打击。
同时,随着网络技术的不断发展,车辆系统中的网络化程度也越来越高,这就要求一个车载装置能和其它的设备进行互连,从而有利于形成整车监控系统。目前,在车辆中大多数设备都通过CAN总线进行连接,但是其应用层协议的不统一给不同厂商之间的设备互连带来了困难。
CANopen 是基于CAN(Controller Area Network)总线的应用层协议,它最初由从事工业控制的CiA (CAN in Automation)会员开发。由于CANopen是一种公共、开放、通用的协议,而且精练透明、容易开发,因此在发布后不久就获得了广泛的承认。如今已经被接受为CAN高层协议的标准之一。尤其在欧洲,CANopen协议被认为是在基于CAN的工业系统中占领导地位的标准,已经应用于多种领域,如越野车、海上电子设备、医疗设备甚至于还可应用于公共汽车和铁路,且针对行业应用,实现比较简洁。
一方面,将CANopen应用于车载平台装置,可使它很方便地挂接到总线上,这样不仅解决了设备间的互连问题,同时也提高了信息传输的可靠性、实时性及装置的标准化、开放化程度。另一方面,在国外CANopen的应用已经非常广泛,而在国内有关CANopen的文章还很少,希望借此文章给从事CAN总线技术开发的人员提供一些有用的信息,使我国的CAN总线应用早日与国际接轨。
一、CANopen协议设计的实质和核心内容
CAN 处于OSI网络模型中物理层和数据链路层,而CANopen是基于CAN的应用层,因为现场总线通常只包括一个网段,因此不需要第3层(传输层)和第4层 (网络层),也不需要第5层(会话层)、第6层(描述层)的作用。正是因为有了CANopen这样应用层协议的存在,从而使CAN总线成为了一个更加完善的网络系统。
1.1 CANopen协议设计的实质--面向对象
CANopen 协议在设计的时候,对总线上传输的数据进行了分类,即每一个传输数据都是某一特定类的对象,从而实现了面向对象的程序设计。在CANopen中每一类传输对象都有其规范化的格式,从而实现了应用层结构上的统一。这样无论从规范化角度,还是从模块化程序设计角度讲,CANopen协议都是一个设计比较完善的协议。
在CANopen 协议的数据传输中共定义了4类对象(通讯模式),分别为管理对象(NMT)、服务数据对象(SDO)、过程数据对象(PDO)和特殊功能对象。其中NMT 用来传递主节点对整个网络系统的管理信息,SDO用来传递网络系统中的配置信息,PDO用来传递过程数据信息(例如电压的变化值),特殊功能对象包括同步对象(SYNC)、紧急对象(Emergency)、时间基准(Time-Stamp)等。各类对象传输时的帧格式在参考文献中有详细的规定,在这里就不详细介绍了。在实际的工程中用户只要根据需要,按照类的规定把要传输的数据映射到相应的对象中就可以了。
1.2 CANopen协议中的核心内容--对象字典(Object Dictionary)
为了对各类对象进行规范化和方便的管理,在CANopen协议中定义了对象字典的概念。它是一个有序的对象组,其中定义了一个设备的所有信息,在 CANopen网络系统中每一个设备都要有一个唯一的对象字典,每个设备的对象字典具有结构相同、内容不同的特点。通过对对象字典中的对象定义一个唯一的 16位主索引和8位子索引,就可以方便地访问对象字典中的对象。CANopen协议中定义了通用的对象字典结构,其中规定了各种数据在对象字典中的位置区域。在我们建立设备对象字典的时候,主要工作应集中在定义通讯子协议区域(1000~1FFF)和制造商特定子协议区域(2000~5FFF)部分。
在整个CANopen协议中对象字典起到了连接DLL模块(通讯接口)和应用程序的作用。我们要想把一个应用程序中的数据(如I/O的输入值)送到CAN总线上,我们首先要确定这个数据属于对象字典中的哪一类对象(例如I/O口的输入值应为过程数据对象),然后用DLL模块访问对象字典中相应的对象并把其按照相应的帧格式发送到CAN总线上去,从而完成了数据的传输。
二、车载平台数据通讯系统的实现
2.1 数据通讯系统的组成
在我们的调平系统中,平台采用4点支撑,由4个1KW、24V的直流电机和减速器、T型丝杠相连接,以控制平台中4个支点的上升或下降。主控制器、4个电机控制器和USB-to-CAN通过CAN总线相连,水平传感器和手操器通过RS232接口和主控制器相连,其结构如图1所示。
其中主控制、电机控制器和手操器为我们自行开发的嵌入式设备,电机控制器可以实现准确的电机位置控制,手操器可以提供手动调平功能。水平传感器为Crossbow Technology公司生产的CXTD02型,它可以由RS232口送出精确的平台X、Y轴角度密位信息;USB-to-CAN设备为德国IXXAT公司生产的USB-to-CAN compact,其中包含了SJA1000 CAN控制器可完成消息的收发,并可以将CAN信号转换成USB信号传递给上位机,上位机通过运行IXXAT公司的监视软件(miniMON)可以在线观察总线上传输的数据。
2.2 系统中CAN硬件接口设计
在主控制器和电机控制器中微处理器采用FUJITSU公司的MB90F543芯片,其本身带有内嵌CAN控制器,因此只需加一个CAN总线驱动器,就可方便地实现主控制器和4个电机控制器之间的通信。本系统中选用了PCA82C250收发控制器,该芯片提供对总线的差动发送能力和对CAN控制器的差动接收能力,PCA82C250是标准的CAN收发器,实验显示,只要总线的每米电容小于120pf条件下,就满足CAN总线传送距离的标准。CAN总线驱动电路图略。为了加强总线的抗干扰能力,总线的通信介质采用带屏蔽线的双绞线。
2.3 对象字典的建立
在网络系统中每一个设备都要有一个唯一的对象字典,其中定义了各种对象的属性(如ID、发送方式等)。在我们的系统中共有5个节点,它们以主从方式工作(1 个主节点和4个从节点),主控制器对应主节点,4个电机控制器对应4个从节点。为了系统扩展的方便,我们设4个从节点的节点号分别为10、11、12、 13,在各个节点对象字典中的对象ID都采用预定义连接集中规定的11位ID,它由4位功能代码和7位节点号组成。
下面以主节点对象字典的建立为例说明对象字典的建立方法。首先要分析主节点在网络中的作用,从而确定对象字典中要包含哪一类对象及其个数,然后定义对象的属性。在我们的系统中主节点要支持从节点的访问,因此需要一个SDO;主节点要向4个从节点发送位置信息,因此要有4个Tx-PDO和4个Rx-PDO,其中每个PDO又由Tx(Rx)PDO Parameter和Tx(Rx)-PDO mapping两部分组成;当系统中发生紧急情况的时候主节点要发送紧急信息,因此要有1个应急指示紧急对象(Emergency Object);向从节点发送的位置信息保存在制造商特定子协议区域(2000~5FFF)中;另外主节点要完成各个从节点的管理工作,因此还要有NMT 管理模块。SDO、PDO的属性设置如表1、2所示,由于4对PDO的属性除了映射值不用以外,其他属性基本相同,因此只给出了向(从)节点号为10的从节点发送(接收)PDO的设置。
表一
对象