基于MATLAB和研华板卡的数据采集系统
2012-11-02邓红涛李江全田敏
邓红涛,李江全,田敏
(石河子大学信息科学与技术学院,石河子832003)
近年来,数据采集技术被人们越来越广泛的应用于现代工业生产和科学研究领域,但大多数据采集开发系统只提供C语言等开发环境,而在对采集的数据进行处理时,MATLAB因其拥有丰富的内部函数和强大的图形处理能力被广泛应用于实时信号测量和图像处理领域中[1]。
为了使数据采集和处理开发环境统一化,本系统设计利用MATLAB和研华数据采集卡实现数据采集功能,利用数据采集(DAQ)工具箱提供一个测试和测量环境,使开发人员可以完全使用 MATLAB环境来开发、模拟和获取分析测量数据,更容易将实验测量、数据分析和可视化的应用结合在一起,简化了系统的同时又提高了系统的稳定性。
1 MATLAB数据采集系统的设计
1.1 系统的组成
本系统在MATLAB环境下利用研华板卡进行数据采集,系统框图如图1所示。
图1 系统框图Fig.1 Block diagram of system
系统需配置Matlab测量套件、数据采集板卡(即DAQ板卡)、连接电缆和端子板。构建数据采集系统时使用PCL-10168电缆和PCI-1710HG板卡与ADAM-3968接线端子板连接,使PCL-10168的68个针脚和ADAM-3968的68个接线端子对应;将板卡插入计算机PCI插槽中[2]。
数据采集卡是本系统硬件核心部分,考虑到采样频率、输入精度等技术指标,选用研华PCI-1710板卡数据采集卡。PCI-1710是12位多功能数据采集卡,具有独特的电路设计和完善的数据采集与控制功能,内部结构主要有单端、差分模拟输入通道、模拟输出通道和触发源连接三部分[3]。
利用研华数据采集卡能迅速、方便地构成一个数据采集系统,从而大大节省系统设计和研制时间,同时可以充分利用PC机的软硬件资源,使开发者集中大量精力对数据处理理论和方法进行研究设计。
1.2 MATLAB数据采集原理
MATLAB在数据采集领域推出了DAQ(data acquisition)工具箱,把与数据采集硬件设备相关的驱动函数封装在一起,并提供了基本的接口函数操作硬件设备,以适应越来越多的标准或非标准的测试装备使用计算机来构建数据采集与分析系统[4]。
在MATLAB中提供的数据采集工具箱中,具有一整套命令和函数,调用该工具箱可以控制采集卡,完成数据采集功能,使整个数据采集程序简单易懂。
在使用DAQ板卡时,DAQ工具箱提供了专门的适配器,将DAQ工具箱对应到每个驱动程序。安装相应板卡的驱动程序后,在适配器列表中将显示相应的适配器名[5]。
1.3 MATLAB数据采集步骤
数据采集系统整体软件流程包括创建接口对象、配置测量通道、配置属性、开始测量、采集数据、停止测量并删除对象[6]。在每个流程中,DAQ工具箱存在简单的函数完成相应的功能。
1)创建接口对象。函数“analoginput”为DAQ板卡创建一个接口对象,使用命令ai=analoginput(‘advantech’,0)完成设置。这样,变量“ai”就有了一个对应于研华DAQ板卡的新模拟量输入、输出对象。
2)配置测量通道。函数“addchannel”可用来配置有效通道。如果使用通道0,输入命令ichan=addchannel(ai,0)。函数“addchannel”的第1个参数为AI Object,第2个参数为Channel Number。此时主语将会创建一个对象(称作通道对象)。
3)配置属性。完成创建AI Object和Channel Object后,需要配置这些对象以执行正确的操作,即要配置对象和编辑与该对象有关的属性。利用命令 get(ai)、get(ichan)配置属性[7]。
4)开始测量。配置完属性并开始测量后,就可以获得所需的测量数据。使用函数“start”启动测量。
5)数据发送与保存。数据采集用AI Object作为参数输入命令[data,time]=getdata(ai,500),将获取的测量数据发送到MATLAB的工作区。它有一个缓冲区,用来临时保存DAQ板卡采集的数据。
6)停止测量并删除对象。函数“stop”用于停止测量,使用AI Object作为参数输入命令stop(ai);测量完成后,可以通过函数“delete”删除AI对象,使用命令delete(ai)。
2 系统测试的结果与分析
经过仿真测试,利用MATLAB中DAQ工具箱和研华板卡设计的数据采集系统[8],实现了对模拟信号和数字信号的输入、输出,并利用MATLAB设计图像用户界面。测试结果表明:该系统操作简单、稳定性高具有一定的实用性和先进性。
下面分别介绍系统采集模拟信号、数字信号输入和输出测试的结果。
2.1 模拟信号输入
设计模拟信号输入电路,通过电位器产生一个模拟变化电压(范围是0~5V),送入板卡模拟量输入0通道(管脚68),同时在电位器电压输出端接一信号指示灯,用以显示电压变化情况[9]。
当测量电压小于或大于设定下限电压值(0.5 V)或上限电压值(3.5V)时,程序画面中相应指示灯由绿色变为红色。
程序运行结果如图2所示。
2.2 模拟信号输出
将板卡模拟量输出(范围0~10V)0通道(管脚58)接示波器显示电压变化波形,接发光二极管来显示电压大小变化(范围为0~10V)。单击“垂直滚动条”的上下箭头,生成一间断变化的数值(0~10),在程序画面中产生一个随之变化的曲线,同时,线路中发光二极管亮度随之变化,在示波器中显示程序画面中相同波形。
程序运行结果如图3所示。
图2 模拟信号输入Fig.2 The input of analog signal
图3 模拟信号输出Fig.3 The output of analog signal
2.3 数字信号输入[10]
由电气开关和光电接近开关分别控制2个继电器,继电器的常开开关分别接板卡数字量输入0通道(管脚56)和1通道(管脚22)。打开/关闭“电气开关”,线路中DI指示灯1亮/灭,程序画面中信号指示灯亮/灭(颜色改变);用任何反光物体遮挡/离开“光电接近开关”,线路中DI指示灯2亮/灭,程序画面中开关计数器文本中的数字从1开始累加。
程序运行结果如图4所示。
2.4 数字信号输出[10]
板卡数字量输出1通道(管脚13)接三极管基极,当计算机输出控制信号置13脚为高电平时,三极管导通,继电器常开开关KR闭合,指示灯亮;当置13脚为低电平时,三极管截止,继电器常开开关KR打开,指示灯灭。
单击“打开指示灯”按钮,程序画面中指示灯颜色变为红色,打开次数加1;同时,线路中DO指示灯亮;单击“关闭指示灯”按钮,程序画面中指示灯颜色变为绿色,关闭次数加1;同时,线路中DO指示灯灭。
程序运行结果如图5所示。
图4 数字信号输入Fig.4 The input of digital signal
图5 数字信号输出Fig.5 The output of digital signal
3 结语
本文介绍了在MATLAB环境下利用华板卡设计数据采集系统,该系统实现了数据采集和数据处理在相同开发环境下的运行,具有安装方便、开发快捷、编程简单[11]等优点,在生产、生活及科研教学中都具有一定的实用性和先进性。
[1]王世香.精通MATLAB接口与编程[M].北京:电子工业出版社,2007:11-12.
[2]朱可.基于研华板卡的高速采集程序[J].中国科技财富,2009(14):96-97.
[3]杨艳华,张晓海,穆兴隆.基于PLC棉种脱绒加工酸控系统的设计[J].石河子大学学报:自然科学版,2011,29(2):131-133.
[4]刘卫国,陈昭平,张颖.MATLAB程序设计与应用[M].北京:高等教育出版社,2006:77-78.
[5]于锋,侯永海.基于PCI-1714的高速数据采集系统方案设计[J].微计算机信息,2005:60-62.
[6]田敏,李江全.案例解说 MATLAB典型控制应用[M].北京:电子工业出版社,2010:103-105.
[7]PCI-1710Series 10/16bit Multifunction User's Manual.研华(中国)公司,2005.
[8]黄忠霖,周向明.控制系统MATLAB计算及仿真实训[M].北京:国防工业出版社,2007:124-127.
[9]张因,邢彦梅,何巧.基于MATLAB数据采集系统的设计与实现[J].电声技术,2010,34(9):39-41.
[10]刘阳,马蓉,曹卫彬,等.基于ISO11783的拖拉机导航系统CAN节点设计[J].石河子大学学报:自然科学版,2011,29(5):641-644.
[11]王战军,沈明.基于 Matlab GUI的串口通信编程实现[J].现代电子技术,2010,33(9):46-48.