杨 阳
(北京机电工程研究所,北京 100074)
基于微处理器的多点电流信号采集及优化设计
杨阳
(北京机电工程研究所,北京100074)
自动化设备的广泛应用是工业现代化的重要标志之一,随着应用环境的逐步复杂和应用需求的不断提升,实现可靠的多测点信号采集具有重要意义;针对自动化设备多点信号采集的实际需求,设计了基于CAN总线(CANopen协议)的分布式控制系统;使用ATmega16单片机实现了多测点的4~20 m A电流信号采集的软硬件设计,并根据工作应用的实际需求,从软件与硬件两方面提出了更加具体的优化方法以提升系统性能;最后,利用搭建的实验平台,进行整体系统的精度实验,并完成相应的数据处理与分析;实验证明该系统能够进行可靠稳定的多测点数据采集,具有一定的应用参考价值。
多测点;电流信号采集;CAN通信;优化设计
随着科学技术的不断进步,工业自动化程度的不断提升,越来越多的自动化设备与自动化生产线逐步代替人类手工作业,极大的提升了生产效率。在此过程中,各类仪器仪表代替人类自身感知,实现生产过程中的认知与监测。同时,由于应用环境的复杂性不断增加,单一系统内使用的仪器仪表的种类与数量呈现快速增长的趋势,致力于研究性能可靠的多测点信号采集的自动化系统具有重要的现实意义[1]。
本文展开了基于微处理器的多点电流信号采集及优化设计研究。搭建实验平台,分别从软件、硬件两方面对系统整体性能进行优化,最终通过实验验证其功能。
由于一般测试环境涉及到对多测点信号采集及远程传输,本文选定了现场总线控制系统及CAN现场总线,由此得到了基于CAN总线的多点测量系统结构,该结构如图1所示。该系统由主控计算机、CAN总线接口卡以及挂接在CAN现场总线上的若干控制器等现场设备组成。其中主控计算机和CAN总线接口卡之间采用PCI总线连接,每个节点的控制系统也通过CAN接口电路连接到CAN总线。
图1 系统结构模型
基于CAN总线,该测量系统采用CANopen作为整个系统的通信协议。CANopen为基于CAN的高层协议,是最初由BOSCH公司提出的一种串行数据通信总线。其具有可靠性高、抗干扰性强、开发简单、造价低廉及其短帧传输和无破坏仲裁技术等特点,应用极为广泛。CANopen是一个基于CAL的子协议,采用面向对象的思想设计,具有很好的模块化特性和很高的适应性,通过扩展可以适用于大量的应用领域[2]。
1.1系统硬件组成
1.1.1工业控制机
主控计算机不仅要求运算速度快,以满足机器人运动控制的实时性,而且由于工作环境复杂恶劣,要求其具有较强的抗干扰能力,其次作为主控设备,需要具有高稳定性和可靠性。因此本文选择研华工控机IPC作为主控计算机。其具有严密的防电磁辐射屏蔽,选材上采用工业级零组件确保机器长时间无故障和稳定运行,支持冗余电源,能在主电源故障的同时切换到备用电源,提高了系统安全性。具体参数为:处理器为Intel奔腾4,主频2.8 GHz,内存DDR 1 GB,Intel845GV芯片组,板载高性能VGA控制器;通用14槽无源底板4个PCI插槽、8个ISA插槽、带PFC(功率因数补偿)电源的高效300WATX,并支持单PS/2电源或冗余电源(通过更换电源托架);带有两个高CFM风扇的先进冷却系统能够提供充足的气流来冷却系统的主要部件。此外,前端接线的USB和PS/2键盘I/O接口可以连接各种外部设备,以便进行数据传输、备份和输入。
1.1.2CAN主站通信卡
PCI-50XX系列工业级CAN接口卡是符合工业级温度范围(-25℃~+85℃)、兼容PCI2.2规范的PCI-CAN通讯接口卡。支持32位33 MHz PCI局部总线,采用了通用PCI连接器,能让PC方便地连接到CAN总线上。本文选择了PCI-5010-P工业级CAN接口卡提供1路CAN通道,支持CANopen协议,在应用中更显方便和灵活。同时,其支持1 Mbps的高传输速率,且集成2 500 V DC电气隔离保护,保护计算机避免地环流的影响,增强系统在恶劣环境中使用的可靠性。
1.1.3CAN从站通信卡
XGate-COP10是一款CANopen从站协议转换模块,内部集成了CANopen从站协议栈,遵循CiA DS301 V4.02进行设计,其集成的功能包括了网络管理(NMT)、服务数据(SDO)、过程数据(PDO)、错误管理等功能。同时也遵循了DS303-3指示灯以及DS305层设置(LSS)等相关协议,使模块功能更强大。所有的功能均通过Ci A的一致性测试软件的测试,保证了与其它CANopen设备的良好的兼容性。
1.1.4ATmega16L单片机
为了实现模拟电流信号的数据采集与转换,本文使用了AVR单片机进行设计。考虑到功能需求与设计成本,本文使用ATmega16L单片机进行硬件开发,其具有16 K字节的系统内可编程Flash(具有同时读写的能力,即RWW),512字节EEPROM,1 K字节SRAM,32个通用I/O口线,32个通用工作寄存器,用于边界扫描的JTAG接口,支持片内调试与编程,为许多嵌入式控制应用提供了灵活而低成本的解决方案。本文利用其内部的10位精度AD转换器对电流信号进行采集,转化为数字量后通过RS232串口协议将数据发送至XGate-COP10从站通信卡,转换为CANopen协议格式后与工控机进行通信。数据传输过程如图2所示。
1.1.5传感器
根据不同的工业现场,传感器的类型也是多种多样。本文基于实验需要,使用泰仪电子4~20 m A数字式程控校正器,其可以产生定量电流信号。误差为±0.025%±5μA,用以对系统电流信号进行标定与验证。
1.2系统软件组成
图2 数据传输过程
根据多测点电流信号采集系统的总体设计方案,软件设计编写主要分为上位机远程实时测量系统控制面板,用以显示不同测量点传感器所监测到的数据。下位机部分为基于AT-mega16L的嵌入式软件编程,主要实现的功能是对4~20 m A的模拟电流信号进行数据的采集与转化。最后便是针对于上位机与下位机通讯协议的设计与使用。
本文采用研华工控机提供Windows操作平台,使用Microsoft Visual Studio C++建立MFC程序,用以显示不同采集点传感器的数据显示,本文设计的控制面板可以对多达58点的电流传感器信号进行采集与显示,同时可以对电流测量的范围进行设置,若测量值超限可以进行报警显示。为了方便人员操作,预先设置了不同种类的测量方案,如奇数点测量、偶数点测量、自定义测量等。
下位机部分使用ICCAVR软件编程环境对程序进行编写,AVRStudio对程序进行下载。程序设计流程如图3所示。首先,上位机发出的指令通过CAN通信系统传输到下位机。接到指令后XGATE-COP10芯片的标志位Preflag置低,说明此时下位机收到上位机所接受指令。将Preflag与单片机外部中断引脚相连,并且设置单片机外部中断为下降沿触发,此时程序进入单片机的外部中断Int0中。关闭Int0中断使能,将Preflag的标志位置0,同时开启串口的接受使能,对来自于上位机的指令进行数据读取。本文使用的7字节的数据协议,例如:0x7e,0x11,0x02,0x11,0x00,0x01,0x7d。其中0x7e为起始标志位,中间五位为自定义数据位,0x7d为CRC数据校验位,用于验证数据接收的正确性。当count等于7的时候,串口接受中断使能关闭,对接收到的数据进行CRC校验,通过校验的数据根据自定义协议进行下一步操作,若未通过校验则清空数组重新开启Int0外部中断使能,等待接受新的数据。
下位机处理器除了实现与上位机的通信功能,还具备对模拟信号进行数字化处理过程。ATmega16L单片机使用ADC通过逐次逼近的方法将输入的模拟电压转换成一个10位的数字量。下位机处理器通过软件编程将10位数字量转化为4~20 m A数字量,精度为0.1 m A。协议中设定将整数部分与小数部分分开传输占用7字节协议的两个字节。例如:0x7e,0x11,0x02,0x11,0x04,0x01,0x79,表示现在所读取到的电流信号为4.1 m A。
上位机与下位机的通讯使用CANopen协议,其核心部分是对象字典(Object Dictionary),通过对象字典对设备功能进行描述。CANopen对象字典是一个有序的对象组,每个对象采用一个16位的索引来寻址,其范围在0x1000~0x9FFF之间。为了允许访问数据结构中的单个元素,定义了一个8 bit的子索引[3]。
图3 下位机程序结构
在CANopen协议中主要定义了管理报文对象NMT(Network Management)、服务数据对象SDO(Service Data Object)、过程数据对象PDO(Process Data Object)、预定义报文或特殊功能对象等4种对象。其中通过NMT服务,可以对节点进行初始化、运行、监控、复位和停止。SDO主要用于主节点对从节点的参数配置,PDO用来传输实时数据。以上位机通过CANopen协议给末端拧紧装置发送数据为例,其程序流程如下:首先上位机通过CANopen协议将0x32(示例数据)传送给XGate-COP10的RPDO1,此时,0x32保存在XGate-COP10的数据缓冲区#0号位置。同时,MCU通过串口实时地先后向XGate-COP10发送0x7e,0x11,0x02,0x11,0x00,0x01,0x7d。XGate-COP10接到命令后便通过串口回应MCU,先后发送0x7e,0x11,0x09,0x11,0x00,0x32,0x XX(校验码)。其中,0x32就是所需数据。
系统搭建完成后,本文采用了不同的方法对系统的性能进行优化,保证其稳定性,提高精确度。下面分别从硬件、软件两方面进行描述。
2.1硬件优化
设计预处理电路,提高AD利用率:
常用的4~20 m A电流信号采集电路为通过250Ω高精度采样电阻将其转换为1~5 V电压信号,ATmega16L单片机的输入电压端进行信号的输入,而后再进行模拟信号的数字化。此种方案虽然简单易行,但是存在一定的不足。首先,AT-mega16单片机内置10位精度的ADC,管脚输入的电压范围为0~5 V。如果电压信号输入量程为1~5 V,则AD的利用率下降。其次,采样过程中噪声问题无法解决,无法排除由于外部噪声所带来的干扰降低采样的精度。为了提高单片机AD利用率,同时提高系统抗干扰的特性,本文使用RCV420芯片进行电流信号采集的预处理电路设计。该电路由精密运算放大器、电阻网络和10 V的基准电源网络组成。其应用电路如图4所示。
图4 RCV420应用电路
2.2软件优化
1)数字滤波的选择:
单片机对模拟信号进行采样时,电源噪声,电磁干扰,外部噪声等都会对其进行叠加干扰,所以使用单片机进行数据采样时都会进行数据采集滤波,常用的滤波方法有以下4种:(1)限幅滤波:两次采样之差小于最大偏差值则有效,反之使用前一数值代替本次数值(2)中值滤波:连续取奇数次数值,取中间值为采样数值(3)加权平均滤波:连续多次采样后乘以不同的加权系数,以加权平均值为当前数值(4)滑动平均滤波:连续采样多个数值作为队列,将新数值作为队尾,去掉队首后取平均数值作为当前值[4]。考虑到本文所述工作现场工况,采用10 ms的采样频率,对连续N个数值进行均值化处理,实验结果证明采用滑动平均滤波可以得到更好的测量效果。
int filter()
{
int count;
int filter_sum=0;
value_buf[N]=mega16_ad();
for(count=0;count<N;count++)
value_buf[count]=value_buf[count+1];
filter_sum+=filter_buf[count];
return(int)(filter_sum/N);
}
2)看门狗设置:
看门狗是指在系统设计中通过软件或硬件方式在一定的周期内监控系统的运行状况。如果在规定时间内没有收到来自系统的触发信号,则系统会强制复位,以保证系统在受到干扰时仍然能够维持正常的工作状态。本文中为了防止系统因为错误进入死循环,并且保证系统在非工作状态下自动挂起以减少片内资源浪费,在程序当中增加了看门狗功能。
信号校正器输入电流/ m A上位机显示电流/ m A 修正值+ 0 . 1最终偏差值4 . 0 3 . 9 4 . 0 0 . 0 4 . 5 4 . 4 4 . 5 0 . 0 5 . 0 4 . 9 5 . 0 0 . 0 5 . 5 5 . 5 5 . 6 0 . 1 6 . 0 5 . 9 6 . 0 0 . 0 6 . 5 6 . 4 6 . 5 0 . 0 7 . 0 6 . 9 7 . 0 0 . 0 7 . 5 7 . 5 7 . 6 0 . 1 8 . 0 7 . 9 8 . 0 0 . 0 8 . 5 8 . 4 8 . 5 0 . 0 9 . 0 8 . 9 9 . 0 0 . 0 9 . 5 9 . 4 9 . 5 0 . 0 1 0 . 0 9 . 9 1 0 . 0 0 . 0 1 0 . 5 1 0 . 4 1 0 . 5 0 . 0 1 1 . 0 1 0 . 9 1 1 . 0 0 . 0 1 1 . 5 1 1 . 4 1 1 . 5 0 . 0 1 2 . 0 1 1 . 9 1 2 . 0 0 . 0 1 2 . 5 1 2 . 5 1 2 . 6 0 . 1 1 3 . 0 1 2 . 9 1 3 . 0 0 . 0 1 3 . 5 1 3 . 4 1 3 . 5 0 . 0 1 4 . 0 1 3 . 9 1 4 . 0 0 . 0 1 4 . 5 1 4 . 4 1 4 . 5 0 . 0 1 5 . 0 1 4 . 9 1 5 . 0 0 . 0 1 5 . 5 1 5 . 4 1 5 . 5 0 . 0 1 6 . 0 1 5 . 9 1 6 . 0 0 . 0 1 6 . 5 1 6 . 4 1 6 . 5 0 . 0 1 7 . 0 1 7 . 0 1 7 . 1 0 . 1 1 7 . 0 1 7 . 0 1 7 . 1 0 . 1 1 7 . 5 1 7 . 4 1 7 . 5 0 . 0 1 8 . 0 1 7 . 9 1 8 . 0 0 . 0 1 8 . 5 1 8 . 4 1 8 . 5 0 . 0 1 9 . 0 1 8 . 9 1 9 . 0 0 . 0 1 9 . 5 1 9 . 4 1 9 . 5 0 . 0 2 0 . 0 1 9 . 9 2 0 . 0 0 . 0
本节主要是在已经构建的多点电流信号测量系统平台上,对整体系统的功能进行验证。根据分布式控制系统特点,多测点电流信号采集系统只需将单一信号电路复用,更改下位机的节点号即可。所以本实验使用一路电流信号采集进行功能验证。实验过程:使用电流信号校正器产生标准4~20 m A电流,通过下位机MCU处理器进行采集与转化,在上位机的控制面板显示实时的采集数据。实验通过单个测试点电流信号采集对多测点进行评估。具体实验步骤如下:使用信号发生器对4~20 m A电流信号以步长为0.5 m A进行实验测试,对比电流信号发生器与上位机MFC控制面板显示数值差异,并通过软件编程对数据进行修正。
实验数据处理:由实验数据可以看出,上位机显示电流与信号校正器的输入电流具有0.1 m A的偏差,在单片机软件中进行补偿后得到修正值,通过比较修正值与电流实际输出值可以看出电流显示的精确度具有明显的提高。同时在实验过程中发现数字滤波中调整采样频率可以有效地提高数据的稳定性,配合数字滤波的算法可以消除上位机测量数值的跳动,从而实现稳定的数据采集。
本文针对需要多点模拟电流信号采集工作环境对系统的需求,设计了基于CAN总线(CANopen协议)的分布式控制系统结构。根据控制系统总体构架,进行了控制系统的软硬件设计。并在此基础之上提出了优化系统功能的措施。最后,利用搭建的实验平台,对系统的电流信号采集与数据显示进行了实验,最终验证了方案的可行性。
[1]胡秀芳,张艾,陈岩.4~20 m A压力变送器的电路设计[J].中国仪器仪表,2002,17(5):17-18.
[2]荣杰,饶和昌.基于CANopen协议的救援机器人调试系统[J].电子技术应用,2011(7):54-56.
[3]周立功,黄晓清,严寒亮.现场总线CANopen设计与应用[M].北京:北京航空航天大学出版社,2011.
[4]刘琪芳.单片机测控系统的数字滤波算法研究[J].机械工程与自动化,2011(3):165-166.
Design and Optimization of Multipoint Current Signal Acquisition System Based on Microprocessor
Yang Yang
(Beijing Institute of Mechanical&Electrical Engineering,Beijing100074,China)
The extensive using of automatic equipment is one of the most important symbol for industrial modernization.With gradual complex of environment and increasing improvement of demand,it is significant to realize reliable multi-point measurement.Considering the actual demand of engineering,the distributed control system based on CAN bus(CANopen protocol)was designed.In terms of the architecture for the control system,the hardware and software for this system were designed and implemented based on ATmega16.Considering the practical application,more methods are proposed to optimize the performance of system.Finally,based on the prototype,the system accuracy experiment was conducted,and the data was processed and analyzed.The experiment prove the system could realize the reliable measurement,it has a certain reference value.
multipoint;current signal acquisition;CAN communication;optimization design
1671-4598(2016)05-0223-03
10.16526/j.cnki.11-4762/tp.2016.05.063
TP3
A
2015-11-16;
2015-12-22。
杨阳(1988-),男,硕士,主要从事智能机器人,嵌入式开发方向的研究。