DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 768|回复: 0
打印 上一主题 下一主题

[接口电路] 基于CAN 总线的信息采集系统设计

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-16 17:28:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

                    ????? 摘要:为解决某型卫星信息采集系统中陀螺组合数据等的实时通讯问题,提出了利用CAN 总线实现整个信息采集系统设计。与一般信息采集系统相比,该系统下位机采用TMS320F2812 型DSP,利用其eCAN 模块作为数据发送模块,上位机采用工控机,其中ADLINK PCI/cPCI-7841 CAN 总线接口卡作为数据接收模块,并在工控机中实时处理接收到的数据,更可靠地完成了信息采集及实时监测。实验结果表明,该系统信息采集实时性强、准确稳定。
  CAN(Controller Area Network)即控制器局域网,主要用于各种设备检测及控制的一种现场总线。20 世纪80 年代初,德国BOSCH 公司为解决现代汽车中众多的控制与测试仪器之间的数据交换, 开发了一种串行数据通信协议,即CAN 总线。
  CAN 总线是一种有效支持分布式控制或实时控制的串行通信网络, 它为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。CAN 属于工业现场总线的范畴, 与一般的通信总线相比,CAN 总线的数据通信具有突出的可靠性、实时性和灵活性,通信速率可达1 Mb/s。
  目前,CAN 总线不仅应用于汽车领域,而且应用于自动控制、航空航天、机械工业、农用机械、机器人、数控机床、医疗器械及传感器等领域。
  由于CAN 被越来越多不同领域采用和推广, 导致要求各种应用领域通信报文的标准化。为此,1991 年9 月PHILIPSSEMICONDUCTORS 制定并发布了CAN 技术规范(VERSION2.0)。该技术规范包括A 和B 两部分。2.0A 给出在CAN 技术规范1.2 中定义的CAN 报文格式,能提供11 位地址;而2.0B给出了标准的和扩展的2 种报文格式,能提供29位地址。此后,1993 年11 月ISO 正式颁布了道路交通运载工具———数字信息交换———高速通信控制器局部网(CAN)国际标准(ISO11898),为控制器局部网标准化、规范化推广铺平了道路。
  根据某型卫星信息采集系统的导航数据的通信需求,且为保证信息采集的实时可靠, 文中应用CAN 总线完成整个信息采集系统设计。
  1 信息采集系统设计:
  由于卫星的运行环境复杂,采集的陀螺组合数据等会有相应的误差,因此需要对导航数据的采集进行遥测,对导航计算机的总线状态进行监测。本系统根据某型卫星的通信需要,利用CAN 总线完成整个信息采集及实时监测。信息采集系统的框图如图1 所示。



  如图1 所示,由TMS320F2812 DSP 的eCAN 模块发送陀螺组合数据及温度值等, 上位机的PCI/cPCI-7841 型CAN 总线接口卡进行数据接收,从而完成整个信息采集及监测过程。
  1.2 系统软件设计:
  系统软件主要完成基于CAN 总线的数据通信, 并在接收数据之后按要求对采集的导航数据进行处理,转换成实际所需数据类型,对陀螺组合的状态进行监测。
  本系统CAN 总线通信报文格式采用CAN2.0B 扩展模式,通信数据格式主要是对CAN 总线协议中的(仲裁场ArbitrationField)和(数据场Data Field)进行定义,要求数据传输速率为500 Kb/s。协议帧格式如图3 所示。



  在使用CAN 接口卡之前首先要对卡进行波特率、传输报文格式等参数的初始化。
  1) 初始化CAN 总线的传输报文格式为提供29 位地址的CAN2.0B 扩展模式;2) 初始化CAN 总线的波特率为500 Kb/s。
  利用PCI/cPCI -7841CAN 接口卡的CanOpen-Driver () 函数打开CAN 端口, 用CanConfigPort () 函数进行初始化,用CanSendMsg()函数发送数据包,用Can-RcvMsg()函数接收数据包,用CanCloseDriver () 函数关闭端口[3]。创建接收线程,接收数据之后按要求对数据进行处理。应用MFC 制作通信界面。注意,线程函数只能是静态成员函数,或者是在类外面声明的一个函数。
  初始化程序如下:
  PORT_STRUCT setPort;long handle[2];HANDLE rcvEvent0;HANDLE rcvEvent1;setPort.mode = 1; // 0 : 11-bit ; 1 : 29-bit CAN networksetPort.accCode = 0; // Only ID = accCode can pass thefiltersetPort.accMask = 0x7FF; // Don't care bitsetPort.baudrate = 2; // 0:125 Kb/s; 1:250 Kb/s; 2:500 Kb/s;3:1 Mb/s//open porthandle[0] = CanOpenDriver(0, 0);handle[1] = CanOpenDriver(0, 1);CanConfigPort(handle[0], &setPort);CanConfigPort(handle[1], &setPort);//get the receive event handleCanGetReceiveEvent(handle[0], &rcvEvent0);CanGetReceiveEvent(handle[1], &rcvEvent1);系统软件界面如图5 所示。



  2 实验结果:
  经过实验验证,该信息采集系统采集的数据经过通信后不变,确保了信息采集的可靠、准确。
  3 结束语:
  由于基于CAN 总线的数据通信具有突出的可靠性、实时性和灵活性,同时由于TMS320F2812 DSP 的eCAN 模块使数据传输更加灵活方便,数据量更大,可靠性更高,功能更加完备,用该DSP 进行下位机的数据发送,PCI/cPCI CAN 接口卡进行数据接收,从而完成信息采集,并对采集的数据进行相应处理,对陀螺组合的状态进行监测,这对卫星等的导航有着重要意义。
            
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-6-12 08:11 , 耗时 0.088552 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表