技术频道

MATLAB串口通信在数据采集中的应用

摘 要:文章在介绍MATLAB串口通信技术的基础上,以ANALOG公司的ADμC812作为数据采集系统的微处理器,通过计算机的RS-232串口将数据采集系统与计算机组成为一个具有极强数据处理能力的系统。利用MATLAB6.X自带的通信类(SERIAL)和GUI编程技术,方便地开发出通信与数据采集软件,通过人机界面能够完成对数据采集系统的控制与通信,而且系统软硬件的实现方法比较简单,具有一定的实用性。

关键词:MATLAB、串口通信、数据采集、快速处理

  MATLAB具有超强的数据处理能力,被广泛的应用于信号处理、自动控制等领域,而且它的图形用户界面编程技术(GUIDE)简单易学,即使非专业人员也能编制出界面友好、功能强大的应用程序。对于一般的微转换器,实现数据的采集过程较为简单,但要对采集的结果进行快速的实时处理就比较困难,因为绝大多数MCU只提供简单的8位无符号数的四则运算指令系统,对于有符号数的乘方、开方等运算软件实现起来比较困难。本文介绍利用MATLAB的串口通信技术实现数据采集系统与PC机的通信,使采集系统的数据获得快速、准确的处理,而且实现方法简单,有一定的实用性。

一. MATLAB串口通信技术

  对于WINDOWS系统而言,硬件系统的驱动程序有着十分严格的规范,可以用C或汇编语言进行开发,而MATLAB本身是一个跨平台的软件,并不具备直接访问硬件的能力。即使安装了驱动程序并能正常工作的硬件设备,MATLAB也没有统一的形式对其进行访问。对于系统的串口,在MATLAB6.X中以类(SERIAL)的形式提供了支持。当用指令建立了一个串口对象(句柄)以后,对串口的硬件操作可以文件操作的软件形式来完成,方法比较简单。常用的串口操作命令及其含义如下表(1)所示,这些命令既可在MATLAB命令窗口实现,也可以M文件的形式出现,使用起来十分方便。

  表1 MATLAB串口操作命令表

二. 数据采集系统与PC机通信的硬件电路

  为了简化系统的硬件设计,数据采集系统的微转换器选用AD公司的全集成芯片ADuC812,该芯片包含有12位高性能的自校准8通道ADC,两个12位的DAC,与8051兼容的内核使用户无须学习新的指令系统。片内8K闪速/电摖除程序存储器使数据采集系统具有在线下载编程能力,利用AD公司提供的免费SERIAL WINDOW DOWNLOAD就可以将HEX文件下载到ADuC812内,对于不同的应用场所可以方便的修改系统的参数,既不需要昂贵的编程器,也不需打开机壳插拨芯片,只需将一条电缆连接到计算机的COM1或COM2即可。另外该转换器还支持看门狗定时器、电源监视器及ADC的DMA等功能,可编程的I/O口具有三种类型的串口UART、SPI、I2C,价格也比较便宜,是一种理想的转换器。系统的硬件组成如下图(1)所示。


图1 ADUC812与PC机串口通信的硬件电路图

  其中ADM202及P3.0\P3.1构成了与计算机通信的RS232接口,它有两个功能,一是实现计算机与数据采集系统的数据通信。另一功能是与JP1配合使用,完成将程序从计算机下载到ADuC812片内的闪速/电摖除程序存储器中。当下载程序时,需将单片机系统的电源关掉,用屏蔽帽屏蔽JP1,单片机系统再上电,ADuC812进入程序下载状态,运行SERIAL WINDOW DOWNLOAD可以将HEX文件下载到芯片内。ADM812组成了系统的复位电路。

三. 应用程序的软件流程图

  PC机与单片机的串口通信技术可以说已经比较成熟,但在工程实际中应用较多的是VC、VB通信控件,一般人员开发具有一定的困难。本文的PC机应用程序是运用MATLAB的类(SERIAL)和M语言开发,辅以MATLAB的GUIDE工具箱,程序开发相对简单。单片机的程序应用MCS—51汇编,只需在程序的第一行加$MOD812标识符即可。整个传输过程是:由单片机发送握手信号,PC机接到握手信号后发应答信号,并准备接收信号,单片机接收到应答信号后准备发送数据,并说明通信过程挂钩成功,总的测量次数和键值作为第0组发送,发送完毕累加校验和,发现传输错误时重发,程序的流程图如图2所示


图2 单片机与微机的通信流程图

  MATLAB的SERIAL类核心是用JAVA语言编写的,与VC等高级语言相比存在许多不足,如不能以中断的方式访问该串口类,但是对一般的应用要求该类还是可以满足要求的,同时由于该类的使用方法极其简单,故而也有一定的实用性。

参考文献:

  [1] 先锋工作室.单片机程序设计实例[M].清华大学出版社. 2003.1

  [2] 何英,何强.MATLAB扩展编程[M].清华大学出版社.2003

  [3] 李刚.[M].ADuC8XX使用指南。北京航空航天大学出版社.

  [4] 仲兆楠.基于ADuC812的一种仪表开发平台[J].电测与仪表.2001.11

  [5] 赵云鹏.实现WORD与MATLAB互相调用的方法[J]计算机时代.2003.11

文章版权归西部工控xbgk所有,未经许可不得转载。