基于CAN总线的数据通信采集系统
CAN(Controller Area Network)即控制器局域网,主要用于各种设备检测及控制的一种现场总线。20 世纪80 年代初,德国BOSCH 公司为解决现代汽车中众多的控制与测试仪器之间的数据交换, 开发了一种串行数据通信协议,即CAN 总线。
1.1 系统硬件设计:
由于TI公司的TMS320F2812 型DSP在军事上已有应用, 且根据各种性能的比较, 本系统采用TMS320F2812 型DSP 作为导航计算机,进行下位机的数据发送,其中eCAN 模块是TMS320F2812 DSP 片上的增强型CAN 控制器, 其性能较之已有的DSP 内嵌CAN 控制器有较大的提高, 数据传输更加灵活方便,数据量更大,可靠性更高,功能更加完备。
上位机采用工控机, 其中由AD
信息采集系统的信息通信利用CAN 总线完成, 其CAN总线接口电路如图2 所示, 其中独特之处是在收发器PCA82C250 的输出引脚CANH 和CANL 之间并联一个终端电阻R 为120 Ω,解决了远近端阻抗不匹配的影响。
如图1 所示,由TMS320F2812 DSP 的eCAN 模块发送陀螺组合数据及温度值等, 上位机的PCI/cPCI-7841 型CAN 总线接口卡进行数据接收,从而完成整个信息采集及监测过程。
1.2 系统软件设计:
系统软件主要完成基于CAN 总线的数据通信, 并在接收数据之后按要求对采集的导航数据进行处理,转换成实际所需数据类型,对陀螺组合的状态进行监测。
本系统CAN 总线通信报文格式采用CAN2.0B 扩展模式,通信数据格式主要是对CAN 总线协议中的(仲裁场ArbitrationField)和(数据场Data Field)进行定义,要求数据传输速率为500 Kb/s。协议帧格式如图3 所示。
系统的接收软件设计流程图如图4 所示。
在使用CAN 接口卡之前首先要对卡进行波特率、传输报文格式等参数的初始化。
1) 初始化CAN 总线的传输报文格式为提供29 位地址的CAN2.0B 扩展模式;2) 初始化CAN 总线的波特率为500 Kb/s。
利用PCI/cPCI -7841CAN 接口卡的CanOpen-Driver () 函数打开CAN 端口, 用CanConfigPort () 函数进行初始化,用CanSendMsg()函数发送数据包,用Can-RcvMsg()函数接收数据包,用CanCloseDriver () 函数关闭端口[3]。创建接收线程,接收数据之后按要求对数据进行处理。应用MFC 制作通信界面。注意,线程函数只能是静态成员函数,或者是在类外面声明的一个函数。
初始化程序如下:
系统软件界面如图5 所示。
2 实验结果:
经过实验验证,该信息采集系统采集的数据经过通信后不变,确保了信息采集的可靠、准确。
3 结束语:
由于基于CAN 总线的数据通信具有突出的可靠性、实时性和灵活性,同时由于TMS320F2812 DSP 的eCAN 模块使数据传输更加灵活方便,数据量更大,可靠性更高,功能更加完备,用该DSP 进行下位机的数据发送,PCI/cPCI CAN 接口卡进行数据接收,从而完成信息采集,并对采集的数据进行相应处理,对陀螺组合的状态进行监测,这对卫星等的导航有着重要意义。
暂无评论