基于Matlab的计算机数据采集系统

时间:2020-09-04 12:15:59 硕士毕业论文 我要投稿

有关基于Matlab的计算机数据采集系统

  数据采集卡结构将数据采集卡设计成外置式结构,模拟信号经/D转换成数字信号后通过串行口传至较远距离之外的计算机。本研究采用RS一232形式接口。数据采集卡框,主要包括TI公司生产的一片/D 转换芯片TLC2543及单片机AT89C51。

  是带串行控制和11个输入端的12位模数转换芯片,内置采样保持器,最长转换时间不超过,内置S/H 及多路选择开关,单5 V供电,O~模拟输入,需外接参考电压输入。单片机振荡频率选用22.118 4 MHz,这样AT89C51与PC通信波特率可精确地达到115 200 bps,确保高速采集的数据能实时传送给计算机[3]。

  模拟信号输入用TLC2274高速低噪声运放缓冲,它的输出是满幅度的(即rail—to—rail),采用单供电时,可产生O~5 V 输出,用在这里是很合适的。电压源芯片AD586产生+5 V精密基准电压作为TLC2543参考电压。采集设置由PC传送,采得的数据经过串行口实时传送给计算机。

  系统软件设计系统软件包括两部分,即采集卡上的单片机程序与PC机上用Matlab语言编写的M 程序。单片机程序按要求(来自PC 串I=I)采集数据并将数据回送至PC,M 程序控制采集卡及接收采集数据,并完成数据处理、分析、存盘等任务。

  单片机程序设计为保证采样频率准确,采用定时中断启动采集。

  采集在中断服务程序中完成,每次采集循环均按指定的通道数对模拟通道1~11(最少1个通道,最多个通道)进行采集,之后将采得的数据传送至。主程序完成初始化设置与PC机握手,接收控制参数,之后等待中断。接收的参数有两个,即通道数与表示采样频率的定时常数。显然,这两个参数之积大致为一定值。这样可以通过灵活设置采样参数,充分发挥采集卡性能。

  数据采集与传输在中断服务程序中完成。首先,完成一个循环的采集与传输,即按要求采集相应的通道,并传送2×通道数个字节。之后,检查是否收到结束信号(检查RI标志位),若收到,则中断服务程序结束并返回至主程序开始处,即相当于程序重新开始,等待下一次采集命令;否则,中断服务程序正常结束,返回主程序,等待下一次中断。

  正常工作时单片机向PC串口高速传送数据而无需接收来自PC的指令或数据,只要PC程序程序)设置较大容量串口通信接收缓存,则单片机只管定时向PC传送数据,而不必担心PC接收会漏收数据。握手信号及控制信号等必须与PC机交互传送的数据,采用了PC机发送一单片机应答一PC机发送下一字节的方式,确保单片机准确接收。

  程序设计采用Matlab编写的驱动程序类似于下编写基于对话框的应用程序。利用Matlab的工具可方便地设计出符合要求的GUI。编程就是合理编写相应的控件回调函数,对GUI中控件的回调函数(eP Callback)编程。

  为该采集系统设计的GUI共使用6个通用控件,即一个编辑框、4个按钮及一个图框。编辑框用来指示当前设置及状态,4个按钮分别对应采集系统的4个基本任务,即数据采集(toggle button)、数据分析、数据载入(eP数据文件打开)、数据存盘,其中后3个按钮均为radio button型式。下面以“数据采集”对应的回调函数为例加以说明。

  “数据采集”回调函数button—GatherData—是整个驱动程序的`核心,在按下该按钮后开始执行。该按钮设置为toggle button即自锁式按钮,用来完成采集器启停控制与状态指示两个功能。

  图2是该回调函数程序流程框图。首先检查该按钮的status属性,判断用户是启动采集还是结束采集。如是启动采集(eP按钮由弹开状态至压下状态),则握手成功后即发送控制命令,包括通道数与代表采样频率的时间常数,之后采集卡立即开始采集,机则开始接收采集。由图可见,数据接收部分实际上是一个循环程序,直至接收缓存中只有单个字节#OH时表示单片机已停发数据,此时退出上述循环,之后进行数据处理工作。数据处理包括数据重组与合成:重组是指将接收的数据组合成按通道排列的数据;合成是将两字节表示的12位二进制数转换成实际电压值,最后将结果存放于名为的矩阵中,其中 为每通道采样点数, 为通道序号。value矩阵实际列数为通道数加1,其中第1列为采集时间(根据采样频率求得),从第2列开始为各通道数据。将value设置为global属性,这样在工作区即可直接存取该矩阵。只要在命令窗口中声明global value,程序结束后可直接对进行分析、绘图等操作,无需先将value从函数空间装至工作区空间,使用方便。只要PC机内存足够,使用者可采集任意时间长的数据。

  由于利用同一按钮的两种状态表示启动与结束采集,因此就出现了所谓回调函数中断问题。如果不能对回调函数进行中断,则在回调函数结束前系统无法对再次按下按钮作出响应,从而导致无法结束采集的局面。Matlab共设计了drawnow、figure、 pause、waitfor与getframe共5条指令用于回调函数中断(详见Matlab帮助),图2的框图中接收循环段插入drawnow指令。Matlab执行此指令时会自动检查是否有按钮按下,若有则中断当前执行中的回调函数程序而调用相应按钮对应的回调函数(在这里二者均为button_GatherData-Callback),之后返回至下一句执行;否则直接转至下一句(即执行。figure(gcf)保证GUI处于当前窗口,随时准备接收用户输入。这样,就利用了Matlab内部回调函数中断机制,正确地响应了用户输入。

  使用一种名为handles的结构来保存数据。利用handles可以解决同一GUI中不同回调函数之间或者同一回调函数不同执行次数之间的通信问题。

  “数据分析”回调函数button—PlotData—根据需要将所得数据(handles结构中)实现绘图、计算等功能,例如数据滤波、频谱分析、标度转换、二维绘图甚至三维绘图等。“数据存盘”回调函数button—SaveData—Callback将采得数据结构中)存为文本格式的数据文件,以方便在各种编辑软件中打开。该文件包括文件头与正文两部分,文件头主要是一些统计结果及说明,包括所用通道数、采样频率、每通道总样点数、数据采集日期与时间等;正文部分即为正式数据部分,按列排列,总列数为通道数加1,其中第1列为时间,总行数(正文)为每通道样点数。

  应用设计的基于Matlab的数据采集系统充分利用了Matlab方便的串口控制、强大的计算能力及编程方便等特点,在土槽应用中,取得了良好的效果。

  采集系统在土槽测试装置中采用磁粉离合器垂直加载系统的应用结果。启用2通道,采样频率每通道),将采集的数据用Matlab绘制成二维图形,横坐标为时间,纵坐标为电压,分别记录数字控制器输入电压(来自应变仪)与调整输出电压控制器输出)。控制器控制目标是维持其输入电压稳定(等于2倍设定值),数字控制器采样频率为,即每秒对输出更新100次。由图可见,系统在数字控制器输出(图3a中上半部分曲线)作用控制下目标值曲线基本上为一条水平线,说明反馈控制效果良好。用Matlab图形自带的图形缩放功能可以方便地查看信号细节,图中明显可见数字控制器具有的“阶梯”式输出波形。

  结论采用与计算机串口连接的外置式采集卡,利用Matlab语言编写驱动程序的计算机数据采集系统具有优良的性价比。系统基本性能总结如下:模拟通道数11,模拟输入电压0~5 V,分辨率12位,采样频率(每通道)与采样通道数有关(二者乘积基本不变),8通道时每通道可达450 Hz,2通道时可达以上,记录长度(采集时间长度)由用户决定,理论上最大长度仅取决于系统内存容量,完全满足一般测试系统的需要。

  最大采样频率主要由A/D转换时间与数据传输时间决定。上述指标是在将每次采集的12位二进制数据用两个字节(16位)发送至计算机的情况下测得的结果。可以简单地省去冗余位发送(例如两次采集结果即24位用3字节发送)以提高采集频率,还可以通过在采集卡上加上缓存提高采集频率。

【有关基于Matlab的计算机数据采集系统】相关文章:

1.基于GPRSCDMA无线网络的远程数据采集系统设计

2.基于XML的果园环境数据采集和数据表示

3.基于声卡的数据采集及波形发生器设计

4.基于数据挖掘的成绩分析系统

5.浅谈电梯智能数据采集系统研究论文

6.数据挖掘理论在数据采集中的运用

7.同步电机试验自动控制与数据采集系统的设计

8.基于云计算的电力信息系统数据安全技术探讨