王成卉,曾连荪
(上海海事大学 信息工程学院,上海 200135)
CAN(Controller Area Network)即控制器局域网,主要用于各种设备检测及控制的一种现场总线。20世纪80年代初,德国BOSCH公司为解决现代汽车中众多的控制与测试仪器之间的数据交换,开发了一种串行数据通信协议,即CAN总线。
CAN总线是一种有效支持分布式控制或实时控制的串行通信网络,它为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。CAN属于工业现场总线的范畴,与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性,通信速率可达1 Mb/s。目前,CAN总线不仅应用于汽车领域,而且应用于自动控制、航空航天、机械工业、农用机械、机器人、数控机床、医疗器械及传感器等领域。
由于CAN被越来越多不同领域采用和推广,导致要求各种应用领域通信报文的标准化。为此,1991年9月PHILIPS SEMICONDUCTORS制定并发布了CAN技术规范(VERSION 2.0)。该技术规范包括A和B两部分。2.0A给出在CAN技术规范1.2中定义的CAN报文格式,能提供11位地址;而2.0B给出了标准的和扩展的2种报文格式,能提供29位地址。此后,1993年11月ISO正式颁布了道路交通运载工具——数字信息交换——高速通信控制器局部网 (CAN)国际标准(ISO11898),为控制器局部网标准化、规范化推广铺平了道路[1]。
根据某型卫星信息采集系统的导航数据的通信需求,且为保证信息采集的实时可靠,文中应用CAN总线完成整个信息采集系统设计。
由于卫星的运行环境复杂,采集的陀螺组合数据等会有相应的误差,因此需要对导航数据的采集进行遥测,对导航计算机的总线状态进行监测。本系统根据某型卫星的通信需要,利用CAN总线完成整个信息采集及实时监测。信息采集系统的框图如图1所示。
由于TI公司的TMS320F2812型DSP在军事上已有应用,且根据各种性能的比较,本系统采用TMS320F2812型DSP作为导航计算机,进行下位机的数据发送,其中eCAN模块是TMS320F2812 DSP片上的增强型CAN控制器,其性能较之已有的DSP内嵌CAN控制器有较大的提高,数据传输更加灵活方便,数据量更大,可靠性更高,功能更加完备[2]。
图1 信息采集系统框图Fig.1 Block diagram of information acquisition system
上位机采用工控机,其中由ADLINK的PCI/cPCI-7841 CAN总线接口卡进行数据接收。该卡可同时操作两个独立的CAN网络,可编程传输速率可高达1 Mb/s,通过直接内存映射能够快速访问CAN控制器,PCI总线即插即用,其总线控制器为SJA1000,电气接口为82C250。
信息采集系统的信息通信利用CAN总线完成,其CAN总线接口电路如图2所示,其中独特之处是在收发器PCA82C250的输出引脚CANH和CANL之间并联一个终端电阻R为120 Ω,解决了远近端阻抗不匹配的影响。
图2 CAN总线接口电路图Fig.2 Interface circuit of CAN bus
如图1所示,由TMS320F2812 DSP的eCAN模块发送陀螺组合数据及温度值等,上位机的PCI/cPCI-7841型CAN总线接口卡进行数据接收,从而完成整个信息采集及监测过程。
系统软件主要完成基于CAN总线的数据通信,并在接收数据之后按要求对采集的导航数据进行处理,转换成实际所需数据类型,对陀螺组合的状态进行监测。
本系统CAN总线通信报文格式采用CAN2.0B扩展模式,通信数据格式主要是对CAN总线协议中的(仲裁场Arbitration Field)和(数据场 Data Field)进行定义,要求数据传输速率为500 Kb/s。协议帧格式如图3所示。
图3 帧协议组成Fig.3 Frame protocol components
系统的接收软件设计流程图如图4所示。
在使用CAN接口卡之前首先要对卡进行波特率、传输报文格式等参数的初始化。
1)初始化CAN总线的传输报文格式为提供29位地址的CAN2.0B扩展模式;
2)初始化CAN总线的波特率为500 Kb/s。
利用PCI/cPCI-7841 CAN接口卡的CanOpen-Driver()函数打开CAN端口,用 CanConfigPort()函数进行初始化,用CanSendMsg()函数发送数据包,用Can-RcvMsg()函数接收数据包,用 CanCloseDriver()函 数 关闭端口[3]。创建接收线程,接收数据之后按要求对数据进行处理。应用MFC制作通信界面。注意,线程函数只能是静态成员函数,或者是在类外面声明的一个函数。
图4 接收软件程序流程图Fig.4 Flow chart of receiving software program
初始化程序如下:
系统软件界面如图5所示。
图5 系统软件界面Fig.5 Interface of system software
经过实验验证,该信息采集系统采集的数据经过通信后不变,确保了信息采集的可靠、准确。
由于基于CAN总线的数据通信具有突出的可靠性、实时性和灵活性,同时由于TMS320F2812 DSP的eCAN模块使数据传输更加灵活方便,数据量更大,可靠性更高,功能更加完备,用该DSP进行下位机的数据发送,PCI/cPCI CAN接口卡进行数据接收,从而完成信息采集,并对采集的数据进行相应处理,对陀螺组合的状态进行监测,这对卫星等的导航有着重要意义。
[1]李正军.现场总线与应用技术[M].北京:机械工业出版社,2005:88-89.
[2]苏奎峰,吕 强,耿庆锋,等.TMS320F2812原理与开发[M].北京:电子工业出版社,2005.
[3]PCI-7841/cPCI-7841/PM-7841 dual-port isolated CAN interface card user's manual[M].ADLink Technology Inc,2006.
[4]陈佳佳,曾岳南,罗彬.基于 TMS320F2812 DSP的 CAN总线通信系统设计[J].工业控制计算机,2007,20(5):14-15.CHEN Jia-jia,ZENG Yue-nan,LUO Bin.Communicated system design based on TMS320F2812 DSP with CANBus[J].Industrial Control Computer,2007,20(5):14-15.
[5]胡静怡.基于TMS320F2812的CAN总线的温度检测节点设计[J].仪器仪表与检测技术,2009,28(4):74-76.HU Jing-yi.CAN bus temperature detection node based on TMS320F2812[J].Instrumentation and Measurment,2009,28(4):74-76.
[6]王雁平,张永春.基于CAN总线的现场总线仪表设计[J].常州工学院学报,2009,22(1/2):27-30.WANG Yan-ping,ZHANG Yong-chun.The design of field bus based on CAN-bus[J].Journal of Changzhou Institute of Technology,2009,22(1/2):27-30.
[7]余韵律,王 建,王启慧.基于SAE J1939协议的发动机总线数据模拟器开发[J].电子设计工程,2010,18(4):48-50.YU Yun-lv,WANG Jian,WANG Qi-hui.Development of engine bus data simulator based on SAE J1939 protocol[J].Electronic Design Engineering,2010,18(4):48-50.
[8]陈光磊,王冰峰.基于CAN总线的电梯召唤显示板设计[J].电子设计工程,2010,18(7):178-181.CHEN Guang-lei,WANG Bing-feng.Design of elevetor display system based on CAN bus [J].Electronic Design Engineering,2010,18(7):178-181.