范治政,刘永春,郭志庭
(四川理工学院 自动化与电子信息学院 四川省院士(专家)工作站,自贡 643000)
在工业生产、电气设备监测过程中常常要求对各种信号进行同步记录,以便分析信号之间的关系,作出相应的预测与控制[1]。数据采集与分析对于提高工业生产、优化生产线、及时发现设备故障等都有重要的意义。以NI公司为代表生产的数据采集卡过于昂贵,在数据采集过程中,对那些不要求超高速采集和处理的控制系统,这类采集卡显得过于浪费资源。采用Ardunio和LabVIEW快速构建低成本、多功能的USB采集卡,可适用于这些场合。Ardunio是国外比较流行的电子开源平台,开发者为不同型号的Ardunio编写有bootloader,以便于管理和引导程序。编程者只需要掌握C/C++就可以快速地进行开发,以及做出属于自己的库文件。在数据采集和控制系统中,采用VC、Delphi、VB等面向对象开发平台开发上位机监控软件存在开发周期长、测试效率低等问题[2]。而使用LabVIEW开发周期短、界面控件丰富、内置丰富的信号处理VI、可以大大地提高效率。
系统总体结构如图1所示。数据采集系统核心部分由上位机监控软件和下位机Ardunio控制器组成。上位机监控软件通过USB总线向Ardunio发送数据采集指令,下位机收到指令开始采集数据。传感器采集到模拟信号经过信号调理电路,送到A/D转换器转换为数字量,数字信号经光电耦合隔离电路送到控制器I/O口采集。采集数据通过CH340T芯片缓冲区送到USB通道中,由上位机监控软件进行分析处理。根据数据分析处理结果,可以调节Ardunio的2路PWM占空比和6路数字输出,对设备进行控制。
图1 系统总体结构图Fig.1 System overall structure
Ardunio是一款便捷的开源电子平台控制器,包含有各种型号的Ardunio硬件和IDE开发环境。Ardunio主要是基于Atmel公司的微处理器进行高度封装,开发者不用了解底层硬件就可以控制处理器,现阶段已有32位微处理器支持Ardunio。Ardunio主控电路如图2所示。
Ardunio选用第三代uno板,在原版的基础上重新设计电路图,以适应采集卡的需要。电路设计预留出了5 V和3.3 V接口,可直接为各种数字式传感器提供电源。保留原版的ICSP接口,用于升级bootloader。第三代 Ardunio控制器总共有 6路PWM,系统只使用2路。6路模拟输入管脚用于采集多通道模拟数据。14路I/O口(包含6路PWM),6路用于数字输入检测,6路用于数字量输出。片内资源丰富:32 K Flash、2 K SRAM、1 K E2PROM。Ardunio管脚编号固定,同一类板卡,不同型号之间的程序可以相互使用,这是Ardunio板的巨大优势。
图2 系统主控电路图Fig.2 System main control circuit diagram
采用CH340T芯片作为转换接口。使用之前需要安装驱动程序,从官方网站下载驱动安装之后可进行数据传输。CH340T芯片是全速USB接口,兼容USBV2.0,全双工串口,内置缓冲区,支持通讯率50 b/s~2 Mb/s。外加电平转换器件可提供 RS232、RS485、RS422等接口,采用5 V或3.3 V供电。USB转串口电路图如图3所示。
图3 USB接口转换电路Fig.3 USB interface conversion circuit
RXD和TXD管脚分别与主控器RXD、TXD管脚相连接。UD-和UD+与USB接口的D-和D+连接,在电源和地之间加有0.1 μF耦合电容。12 MHz晶振和电容构成芯片运行的时钟。USB接口端分别接上16 kΩ匹配电阻,防止高速信号出现反射现象[3-4]。
下位机程序主要包括初始化控制器管脚、设置波特率、发送数据子程序、接收命令子程序、数据转化程序等。为增强程序的可读性和调试方便,把相关程序做成头文件。由于Ardunio的头文件均采用了C++编写,需要严格遵守类和继承有关的要求以及Ardunio库文件的格式。系统中用到的几个头文件 :#inclue
图4 下位机流程图Fig.4 Flow chart of lower machine
Ardunio上电或者复位后会初始化内部寄存器和分配I/O引脚,等待上位机发送指令。上位机将指令转换为十六进制数据发到下位机,指令中包含2个字节校验码。下位机通过校验码,校验发送指令是否正确。加入校验码进行通讯可以屏蔽掉一些电平干扰,防止下位机进行误操作,损坏设备。校验码正确后,下位机判别指令功能执行相应程序。如接收到模拟采集数据指令,下位机将模拟数值以ASCLL码格式通过USB接口发送到上位机。当收到PWM更新指令时,根据上位机发送的占空比,下位机改写PWM函数中参数值,输出更新PWM。
实验过程中采用了LabVIEW 2013开发上位机监控软件。下位机中选用了CH340T芯片进行USB转串口通讯。LabVIEW中串口通讯接口主要是采用的VISA节点,VISA是高层API调用。VISA函数集中包含有与串口配置VI。调用串口节点配置VI,配置串口节点的波特率、数据位数等相关参数就可以和下位机进行数据交换。上位机监控软件流程如图5所示。
图5 上位机流程图Fig.5 Flow chart of host computer
数据分析处理的流程为通过VISA中的串口写入和串口读取VI,上位机能够向串口发送命令、读取数据。从串口中读取数据后,要立即释放串口,使串口持续读取下位机数据。读取数据中分为模拟数据和数字量。读取模拟数据易受到各种电磁干扰,让模拟数据通过滤波器后再进行处理。LabVIEW作为自动化专业的测试测量软件,提供诸如Bessel、Elliptic、Buterworth等I2R滤波器[5]。根据采集的模拟信号种类,将数据送入对应滤波器,进行滤波。滤波完成再将数据送到波形和数值显示控件中,进行显示。同时将采集的数据生成报表文件,供以后查询。数据分析部分主要是利用Matlab和LabVIEW混合编程实现。在LabVIEW中可以通过ActiveX技术实现和Matlab交换数据[6]。这种交换方式只能满足一般要求,实时性存在一定的问题。现有的高级版本中主要通过Matlab脚本和MathScript实现[7]。由于MathScript的实时性能较好,系统设计时优先选用。以数字输入检测为例阐述数据采集处理过程:当数字采集通道1被选中,同时采集按键发生值改变。上位机向下位机发送采集数字通道1指令。写入指令后,等待串口缓冲区获取数据,然后读出数据,与常量0做比较,结果送入布尔显示控件。根据数据分析结果,上位机向VISA写VI中送入指令代码,改变下位机中的开关量输出、PWM占空比。校验指令和控制指令一起写入Buffer缓冲区,通过转换芯片以16进制方式发送到下位机。一次控制结束后,立即释放串口资源。
实验过程中,在采集卡周围放置3个通电运行的直流电机,以测试系统抗干扰能力。分别采用实验室的信号发生器、心率采集器、压力传感器、温度传感器测试采集数据能力。以温度采集为例,实验中采用LM35温度传感器。LM35温度传感器输出模拟电压,片内有温度补偿电路,当前环境每上升1℃,输出电压增加10 mV。温度模拟电压数据由模拟通道0采集,采集转换数据时,只保留了温度整数位数,小数部分未保留。转化温度在温度实验选项卡显示。实验效果如图6和图7所示。
图6 模拟数据采集Fig.6 Analog data acquisition
图7 温度实验效果图Fig.7 Experimental result of the temperature
文中采用了Ardunio做为采集数据主控器,结合LabVIEW虚拟仪器开发了数据采集系统。借用虚拟仪器强大的信号处理和仪器控制功能,完成对采集数据的分析和外部设备控制。采用开源Ardunio和LabVIEW联合开发,降低了开发成本,缩短开发周期。通过一系列的实验表明,系统运行良好,能够达到预期要求。
[1]邢磊,郑萍.多通道高速数据采集系统的设计与实现[J].仪表技术与传感器,2012(11):116-118,148.
[2]吴桂清,朱院娟,郭斯羽,等.基于LabVIEW的旋转机械振动在线监测系统设计[J].传感器与微系统,2012,31(6):104-107.
[3]周青云,王建勋.基于USB接口与LabVIEW的数据采集系统设计[J].实验室研究与探索,2011,30(8):238-240.
[4]张亮,李杰,张天佑.USB接口芯片CH376在专用控制系统中的应用[J].兵工自动化,2014,33(3):51-53.
[5]吕东阳,王显军.基于LabVIEW的电机转台数据采集及监控系统[J].测控技术,2014,33(4):75-78.
[6]李贵娥,麻红昭,沈家旗,等.电涡流检测技术及影响因素分析[J].传感技术学报,2009,22(11):141-145.
[7]陈树学,刘萱.LabVIEW宝典[M].北京:电子工业出版社,2011.