服务热线:0755-83035861 / 83035836 / 83679983

您的位置: 首页 > 技术交流 > 技术支持 > 嵌入式开发 >

技术交流


技术支持 资料下载 常见问题
基于ARM的嵌入式监测系统设计

ARM具备体积小、接口丰富、高度集成性和扩展性强等优点,加之随着Linux在服务器领域和桌面系统获得的成功,Linux 以其良好的移植性能、优秀的网络功能、对各种文件系统完备的支持、具有软件代码小、高度自动化、响应速度快、特别适合于要求实时和多任务的体系等特点[1]在嵌入式系统中获得了越来越广泛的应用。这使得基于ARM的嵌入式监测系统具有成本低、功耗低、实时性能好及智能程度高等优点,在工业监测与控制领域具有较为广阔的应用前景[2]。本文设计了基于ARM的嵌入式监测系统。
  1系统总体设计
  一个嵌入式监测系统,其基本目的控制硬件设备采集信号,并对信号进行一定的分析,其过程是获取设备的运行状态的模拟量信号,并且能够将这些模拟量转化为数字量输出。在此基础上,设计了基于ARM嵌入式监测系统。ARM微处理器的上选择基于ARM920T内核的S3C2410A芯片。

 

  图1系统结构框图

  整个系统监测方案如图1所示,整个采集过程是由ARM微处理器控制的,ARM监测系统主要由以下三部分组成:
  (1)信号采集:传感器采集反映设备运行状态的现场信号。被采集的模拟信号通过传感器拾取,再经过滤波、放大信号调理,然后模拟信号则经过A/D(模/数)转换器转换成计算机可识别数字量,通过ARM微处理器控制放大器的增益和滤波器的截止频率。
  (2)人机界面:采用图形界面控制数据采集,并在界面上进行数据分析,将数据处理结果在显示屏上以良好直观的界面动态显示,便于现场工作人员判断故障。
  (3)数据传输:数据传输是将数据上传至上位机(计算机),以进行进一步的分析处理。
  2系统硬件结构
  振动传感器传来的振动信号在进入后端处理系统之前也需要对信号进行一定的调理,以满足后端信号处理的要求,为了简化设计,节省设计时间,信号的前端信号调理模块使用设计好的模块,包括恒流源、传感检测、信号放大、低通滤波,程控放大器放大倍数的设定通过S3C2410A设定。图2显示了系统硬件框图。

  图2 系统硬件框图

  2.1程控抗混叠低通滤波器设计
  传感器采集的的模拟信号中往往混有一些其它信号如噪声信号,因此在A/D转换之前对信号进行滤波是很有必要的,同时选择合适的滤波器还可以起到抗混叠的功能。本系统设计采用MAX263低通滤波器,MAX263是有源开关电容滤波器,其中心频率,Q值和工作模式可通过引脚编程设置,其硬件连接电路如图3.

 

  图3 低通滤波电路

  选择滤波器工作模式1,将M0,M1设置低电平,Q值设置为1,查表得NQ=64,则Q6~Q0引脚值为100000。MAX263的引脚与S3C2410芯片直接相连以实现程控滤波器,F0~F4分别连接GPB5~GPB9。在ARM上即可控制对应引脚实现对MAX263截止频率的设定。
  2.2 A/D转换电路
  A/D转换器作用是把一个模拟信号转换为数字信号。风电机组的状态信号是一个连续的值。利用传感器可以检测到一个连续的电压值,但在ARM和计算机上不能够直接处理模拟信号数据。A/D转换器就是把传感器检测到的电压模拟信号转换为系统可识别的数字信号的器件。根据系统的条件及精度的要求下,采用12位的A/D转换器已经能够满足本系统的要求。在经过A/D的转换后。就把连续的模拟信号转变成了不连续的离散的数值,以便于数据分析。A/D转换芯片采用TI公司的TLC2543。TLC2543是12位开关电容逐次逼近模数转换器,其电路连接如图4。

  图4 TLC2543与S3C2410的连接图

  数据采集时,首先向AD转换器发送要采集的通道号,AD转换器读取对应通道的数据,并将数据传递给S3C2410A,实现数据的采集,其流程如图5。

  图5 A/D采集流程图

  嵌入式监测系统的ARM端应用程序软件的核心是人机交互用户图形界面,它是用户和系统交互的窗口。
  本文将Qt/Embedded应用于以ARM+Linux为平台的嵌入式监测系统人机界面的开发。构建Qt /Embedded交叉编译环境需要构建3个QT开发环境[3]。其中一个QT/X11是环境;一个是QT/Embedded(x86)环境;最后一个才是QT/Embedded(ARM)交叉编译环境,在QT/Embedded(x86)环境下调试通过的程序需要在此环境下重新编译后才能移植到目标机上运行。
  QtDesigner是Qt/Embedded下的集成开发工具,它支持信号和槽机制,使部件间能够进行有效的通信,省略了许多重复性的工作,可以大大缩减程序的开发周期[4]。在命令行下,根据设计器保存的界面文件(.ui文件)使用uic命令生成.h头文件和.cpp源文件。
  uic -o mainfile.h mainfile.ui
  uic –o mainfile.cpp –impl mainfile.h mainfile.ui
  根据实际需要修改头文件和源文件,使其实现具体功能,各种初始数值和配置都在相应类的构造函数中初始化,如实现界面类之间的调用关系等。下图6为使用QtDesigner设计的风电机组监测系统主界面图。
 

  图6 监测系统主界面

  4数据传输
  ARM与上位机的数据的实时传输采用基于TCP/IP的socket网络传输[5]。本文设计的通讯系统的软件在结构上采用客户端/服务器模式,它具有编程简单、容易控制、使用方便灵活等特点。
  服务器端与客户端程序设计流程如图7
 

  图7 Socket网络传输数据流程图

  1 打开Socket 描述符、建立绑定
  sockfd=socket(AF_INET,SOCK_STREAM, 0); //建立Socket
  bind(sockfd, (struct sockaddr *)&my_addr,sizeof(struct sockaddr); //绑定端口
  2 建立连接
  connect(sockfd,(struct sockaddr *)&remote_addr,sizeof(struct sockaddr) ;
  //发起连接
  在服务器程序中, 当Socket 与某一端口绑定以后, 就需要*该端口
  listen(sockfd,8); //*连接
  当客户请求与服务器*的端口连接时, 该连接请求等待服务器接收它。随后服务器程序调用accept( ) 函数为该请求建立一个连接。
  3 数据的发送和接收
  send(sockfd, buff ,1024,0); //向服务器发送数据
  recv(client_fd,buff,1024,0); //接收服务器发送的数据
  4 关闭Socket
  结束语
  本文介绍了一种采用ARM的设计实现适用于振动信号采集及分析的设备监测系统,使用S3C2410作为主控芯片,设计了低通滤波电路和A/D电路,并采用人机控制界面,采用Socket网络编程实时将采集信号传输到计算机,传输数据不易丢失,不失真,起到了良好的设备状态监测作用。