基于CAN的多通道数据采集系统的设计
在一定的非线性关系。电子元器件自身生产工艺、外界环境、支撑数据采集系统的电路、参考电压及工作电源的不稳定等都是导致实际物理量y与微处理器获得的数字量x之间存在非线性关系的重要因素。为了获得较真实的数据必须对系统进行校正。 系统的校正分为硬件校正和软件校正,硬件校正是在设计电路时完成的,主要包括选用高可靠性的电子元器件、减少电路设计时的电磁干扰、选用高质量稳压电源等。如在放大电路中选用高精度小温漂电阻,A/D芯片的工作电源及参考电压上加滤波电容,运算放大器的电源尽量采用双电源供电减小其零点漂移等,这些都是减小其非线性关系的方法,但这些方法只是在硬件上减小了其非线性关系但并不能使其消除。单凭硬件校正是无法满足系统对误差的要求,所以必须在软件上对采集得到的数据进行校正。 考虑整个动态测试系统是一个实时的动态测试过程,如果数据的实时性达不到要求会影响整个测试过程,甚至使整项测试失败,所以在选择校正算法时要考虑其复杂性及计算量的大小,有些算法精度较高但其计算量大,实现起来比较复杂,并不适合本系统应用,如BP人工神经网络和函数逼近算法等。为此必须寻找一种既满足系统误差要求、计算量又小的方法对其进行校正。 设实际物理量y”与微处理器获得的数字量戈之差为δ,即8=y-x,x与δ间的关系曲线(虚拟曲线)如图3所示。xi与xi+1为通过高精度万用表实际标定的点,其对应的误差分别为δi和δi+1,Xa为介于xi与Xi+1之间的某次采样值,该点对应的实际误差为δa,在满足系统误差要求的条件下如何通过简便的方法获得δa的近似值δ”是该系统进行非线性误差标定的初衷。如图3所示,以标定的相邻两点做回归直线来代替该区间上的曲线是最简单的方法,在该曲线连续的条件 图3数字量与其对应误差关系曲线 进行系统标定及校准的步骤如下: ①根据实际信号范围,将待采集信号的电压范围分成N段后计算出应该标定的点; ②采用高精度低波纹的稳压源和精密电位器调出标定点电压的近似值后接入调理电路输入端; ③用高精度万用表测量标定点的实际值,同时取A/D转换100次数据的平均值代表该点A/D的采样值; ④将A/D采样换算值和真实值与A/D采样换算值之差分别填写到相应的表格中; 4 CAN总线通信设计 4.1 系统中CAN总线结构 数据采集系统是整个动态测试系统中的一个分系统,同时动态测试系统中还有其他分系统,各个系统之间要进行实时通信。所以在选择系统间传输总线的时候要考虑各系统的组网、数据传输速率以及总线的抗干扰性等问题。USB是一种高速的数据传输方式,但其组网困难、通信协议复杂,使得其在工业控制当中应用并不成熟。 CAN总线是一种支持分布式控制和实时控制的串行通信网络,它适用于工业控制、汽车电子等方面,具有通信速率高、抗干扰性强、接口灵活、性价比高等优点,是应用最成功的现场总线之一。对于本系统选用CAN总线建立通信网络无疑是较好的选择。 IPC2292中自带CAN控制器,为了增强CAN总线的抗干扰性,在数据采集系统节点上增加一个CTM1050T高速CAN隔离收发器,该芯片具有DC2500V的隔离功能及ESD保护作用,硬件连接如图4所示。 CAN控制器在硬件上实现了CAN物理层和数据链路层的大部分功能,用户只需对CAN控制器进行正确初始化,并对总线上的数据进行收发操作即可实现不同节点间的通信;CAN总线支持多主节点,节点之间通过总线仲裁的方式获得总线的控制权,其完善的处理机制保证了其在恶劣环境下数据传输的可靠性。 图4 IPC2292组网详细接线 4.2 CAN通信软件设计 要实现CAN的正常通信则必须按照其通信协议严格规范设计程序。完成传输层有关功能,包括帧控制、总线仲裁、消息过滤、出错警告及故障隔离等。需要完成以下几个方面: ①CAN控制器初始化。CAN控制器的初始化主要包括设置波特率寄存器、错误警告寄存器、中断寄存器等,只有正确配置好这些寄存器,CAN控制器才能工作在正常的状态下。要使CAN控制器对接收到的报文具有全局验收过滤的功能,还必须对验收过滤器进行设置,建立标识符LUT表格填写到相应的RAM中。值得注意的是,在完成这些配置之前应先将控制器进行软件复位,并对CAN控制器进行硬件使能、对CAN的引脚进行正确配置。CAN的初始化是在主程序中完成,其流程如图5所示 图5 CAN初始化流程 ②发送报文。在完成CAN控制器的初始化之后就可以进行报文发送,本系统为每个信号通道分配一个标识符,A/D采集得到的数据通过误差标定后被写入到事先分配好的内存缓冲区中,同时查看控制器的3个发送邮箱
数据采集CAN总线非线性误差标 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)