基于CAN总线的信息采集系统设计
摘要:为解决某型卫星信息采集系统中陀螺组合数据等的实时通讯问题,提出了利用CAN总线实现整个信息采集系统设计。与一般信息采集系统相比,该系统下位机采用TMS320F2812型DSP,利用其eCAN模块作为数据发送模块,上位机采用工控机,其中ADLINK PCI/cPCI-7841 CAN总线接口卡作为数据接收模块,并在工控机中实时处理接收到的数据,更可靠地完成了信息采集及实时监测。实验结果表明,该系统信息采集实时性强、准确稳定。
关键词:CAN总线;PCI/cPCI7841;TMS320F2812 DSP;信息采集;监测
CAN(Controller Area Network)即控制器局域网,主要用于各种设备检测及控制的一种现场总线。20世纪80年代初,德国BOSCH公司为解决现代汽车中众多的控制与测试仪器之间的数据交换,开发了一种串行数据通信协议,即CAN总线。
CAN总线是一种有效支持分布式控制或实时控制的串行通信网络,它为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。CAN属 于工业现场总线的范畴,与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性,通信速率可达1 Mb/s。目前,CAN总线不仅应用于汽车领域,而且应用于自动控制、航空航天、机械工业、农用机械、机器人、数控机床、医疗器械
及传感器等领域。
由于CAN被越来越多不同领域采用和推广,导致要求各种应用领域通信报文的标准化。为此,1991年9月PHILIPSSEMICONDUCTORS制定 并发布了CAN技术规范(VERSION 2.0)。该技术规范包括A和B两部分。2.0A给出在CAN技术规范1.2中定义的CAN报文格式,能提供ll位地址:而2.0B给出了标准的和扩展的 2种报文格式,能提供29位地址。此后,1993年11月ISO正式颁布了道路交通运载工具——数字信息交换——高速通信控制器局部网(CAN)国际标准 (ISO11898),为控制器局部网标准化、规范化推广铺平了道路。
根据某型卫星信息采集系统的导航数据的通信需求,且为保证信息采集的实时可靠,文中应用CAN总线完成整个信息采集系统设计。
1 信息采集系统设计
由于卫星的运行环境复杂,采集的陀螺组合数据等会有相应的误差,因此需要对导航数据的采集进行遥测,对导航计算机的总线状态进行监测。本系统根据某型卫星的通信需要,利用CAN总线完成整个信息采集及实时监测。信息采集系统的框图如图l所示。
1.1 系统硬件设计
由于11公司的TMS320F2812型DSP在军事上已有应用,且根据各种性能的比较,本系统采用TMS320F2812型DSP作为导航计算机,进行下位机的数据发送,其中eCAN模块是TMS320F2812 DSP片上的增强型CAN控制器,其性能较之已有的DSP内嵌CAN控制器有较大的提高,数据传输更加灵活方便,数据量更大,可靠性更高,功能更加完备。
上位机采用工控机,其中由ADLINK的PCI/cPCI-784lCAN总线接口卡进行数据接收。该卡可同时操作两个独立的CAN网络,可编程传输速率可高达l Mb/s,通过直接内存映射能够快速访问CAN控制器,PCI总线即插即用,其总线控制器为SJAl000,电气接口为82C250。
信息采集系统的信息通信利用CAN总线完成,其CAN总线接口电路如图2所示,其中独特之处是在收发器PCA82C250的输出引脚CANH和CANL之间并联一个终端电阻R为120 Ω,解决了远近端阻抗不匹配的影响。
如图1所示,由TMS320F2812 DSP的eCAN模块发送陀螺组合数据及温度值等,上位机的PCI/cPCI-784l型CAN总线接口卡进行数据接收,从而完成整个信息采集及监测过程。
1.2 系统软件设计
系统软件主要完成基于CAN总线的数据通信,并在接收数据之后按要求对采集的导航数据进行处理,转换成实际所需数据类型,对陀螺组合的状态进行监测。
本系统CAN总线通信报文格式采用CAN2.0B扩展模式,通信数据格式主要是对CAN总线协议中的(仲裁场Arbitration Field)和(数据场Da-ta Field)进行定义,要求数据传输速率为500 Kb/s。协议帧格式如图3所示。
系统的接收软件设计流程图如图4所示。
在使用CAN接口卡之前首先要对卡进行波特率、传输报文格式等参数的初始化。
1)初始化CAN总线的传输报文格式为提供29位地址的CAN2.0B扩展模式;
2)初始化CAN总线的波特率为500 Kb/s。
利用PCI/ePCI-7841CAN接口卡的CanOpenDriver()函数打开CAN端口,用CanConfigPort()函数进行初始化,用 CanSendMsg()函数发送数据包,用CanRcvMsg()函数接收数据包,用CanCloseDriver()函数关闭端口翻。创建接收线程, 接收数据之后按要求对数据进行处理。应用MFC制作通信界面。注意,线程函数只能是静态成员函数,或者是在类外面声明的一个函数。
初始化程序如下:
系统软件界面如图5所示。
- Labview基本常见问题解答(连载四)(05-10)
- CAN总线系统测试技术(05-11)
- 基于CAN总线的GaAs光电阴极制备测控系统(07-27)
- 基于LabVIEW的智能开关综合保护装置的数据获取与处理(03-09)
- 基于双层CAN总线的声纳数据通信系统设计(01-23)
- CAN总线网络测试研究(02-10)