返回首页

嵌入式数据采集与检测

时间:2012-03-16 09:29来源:未知 作者:汪静 点击:
嵌入式数据采集与监测平台主要完成数据采集、数据处理与分析、网络通信等功能,对外提供数据采集接口、网络通信接口和人机交互接口。同时,该平台也集成了嵌入式Web服务器和嵌
  

         嵌入式数据采集与监测平台主要完成数据采集、数据处理与分析、网络通信等功能,对外提供数据采集接口、网络通信接口和人机交互接口。同时,该平台也集成了嵌入式Web服务器和嵌入式实时数据库。

        嵌入式数据采集与监测平台的设计与开发主要基于PowerPC的CAN总线通信系统、ARM的Modbus协议通信系统、ARM的InterBus现场总线通信系统、ARM的远程I/0数据采集系统、嵌入式MCU的通信协议转换器、Zigbee技术的无线远程监测系统。而广泛应用于电厂和输配电系统的是PowerPC的CAN总线通信系统和ARM的远程I/O数据采集系统。

       一、基于PowerPC的CAN总线通信系统设计与开发

     基于PowerPC的嵌入式系统硬件平台设计

     基于PowerPC和CAN总线的嵌入式数据采集监测系统在硬件方面选择以飞思卡尔MPC8248处理器为核心的开发板构建硬件平台。

    (1)MF~C8248嵌入式处理器简介

     MPC8248是基于飞思卡尔PowerQUICCⅡ技术的高端双核芯片。一个处理器是嵌入的G2_LE内核,另一个是专门的RISC的通信处理模块CPM。MPC8248的功能结构框图见图1。



     (2)基于EP8248E开发板的系统硬件平台架构

     为了缩短开发周期并提高开发效率,选用基于MPC8248的嵌入式开发板EP8248E作为基本硬件平台。这样可以节省大量的硬件开发工作。

      除了基于MPC8248的嵌入式开发板EP8248E基本硬件平台,该系统的数据采集要求可以支持多种通信方式。但开发板没有某些通信方式的硬件支持,这就需要我们通过设计来实现。一般来说,有两种方式:一种是在开发板中直接扩展硬件接口设备,由开发板中的微处理器直接控制;另一种是独立设计接口板,使之与主开发板连接,由接口板上微处理器来实现通信转发。



       图2为基于PowerPC的硬件接口结构图。由于PowerPC处理器上需要加载嵌入式Linux操作系统,且考虑应用程序较大,需要扩展程序存储器和FIash来存储程序及数据。EElDROM用来存储用户的组态配置信息。通过扩展以太网接口、RS-232/485、(CAN总线通信接口,将各类监测数据采集到PowerPC处理器。并进行响应的分析处理后通过以太网远程传输到上位DAS、DCS等系统进行进一步的分析处理与存储等。

     基于PowerPC的嵌入式系统软件设计

      作为嵌入式系统极为重要的组成部分,嵌入式操作系统通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。

    (1)嵌入式Linux操作系统及其移植
 
      嵌入式Linux操作系统最大的特点是源代码公开并且遵循GPL协议,人们可以任意修改以满足自己的应用,并且查错也很容易。选择Linux不仅因为其经济性,同时,PowetPC是Linux较早支持的芯片之一。Linux在嵌入式PowetPC芯片上已经有了许多成功的应用案例。

      嵌入式Linux操作系统的移植包括Bootloader的移植、Linux内核裁剪移植以及根文件系统配置等。一般来说,嵌入式Linux系统的大小可以控制在3MB以内,而系统硬件平台EP8248E有8MB的Flash和16MB的SDRAM,有足够的存储空间来满足嵌入式Linux系统的应用要求。在EP8248E系统中,对于嵌入式Linux系统,采用的是通过内核源代码重新配置和裁减的方法,删除不用的功能和操作,减小系统体积,并移植到EP8248开发板所带的Flash中去。

       为了使Linux更加灵活,保证内核的独立性,Linux内核已经不再包括Bootloader代码。在MPC8248开发板的Support CD中附有支持嵌入式PowerPC的Bootloader程序。它具有众多强大的功能,支持TFTP、NFS等多种协议,可以从网络引导Linux,并且包含了测试硬件等多种功能。

       Linux内核是可配置的,它既可以配置为大型服务器服务的内核,也可以配置为嵌入式环境下运行的精简内核,这也是Linux的精妙之处。

      在嵌入式系统中,没有桌面系统和服务器系统中常见的许多设备,如:IDE、SCCS、硬盘、光驱、键盘、鼠标等。在配置内核时,应该注意去除这些设备选项。通常用户的再发板都不在Linux内核支持的范围内,所以要修改Linux内核使它适合自己的开发板。如果以相近的开发板为蓝本,修改口核源码以适合EP8248E的移植,需要做很多工作。在EP8248E BSP,安装文件夹下有-linuxp-pc_2_4_devel文件夹,它是针对嵌入式PowerPC开发的Linux内核,包括对多种PowerPC开发板的支持。这就意味着我们不再需要修改Linux内核代码,就可以直接配置Linux 内核。

       一个Linux系统除了内核外,还必须有一个根文件系统Rootfs,里面包括Linux的第一个进程lnit,用户交互的SheⅡ以及其他文件系统、网络系统的工具等等。经过前面的工作,我们成功地将嵌入式Linux移植到开发板EP8248E上了。Linux加载运行之后,将启动Linux SheⅡ.

用户通过它可以和Linux进行交互。

      (2)嵌入式软件功能模块设计

        嵌入式Linux操作系统之上的应用层软件设计遵循模块化设计。图3为系统软件模块结构图,主要分为通信驱动层、数据处理层和网络接口层三个层次。通信驱动层主要实现各种工业通信协议,如Modbus、CAN、TCP/IP等。数据处理层是整个软件开发的核心,包括数据采集模块、数据过滤模块、数据存储模块、数据处理模块、组态模块和嵌入式Web服务器等。其中,嵌入式Web服务器可实现将Java Applet通信控件植入Web网页,在用户访问Web服务器首页时,这个控件会通过HTTP协议自动下载到客户端并与Socket服务器模块进行连接,从而实现现场与远程客户端的数据交互。报警模块在Web网页实现报警功能,提示工作人员各设备运行状态变化,防止事故的发生。Web定制模块对Web服务器进行一些功能定制,如用户登录验证功能、用户权限设置功能等,从而使系统更安全、稳定。网络接口层主要实现嵌入式PowerPC系统通过TCP/IP协议与上位DCS、DAS等监控系统的数据传输.



       二、基于ARM的远程I/O数据采集系统设计以及开发系统结构设计

       基于嵌入式ARM的远程I/O数据采集系统硬件平台采用32位ARM嵌入式微处理器LPC2132,软件平台采用源码公开、可移植、可裁剪、可固化的多任务实时操作系统μC/0S—Il内核。实时操作系统RTOS的使用使得应用程序的设计和扩展变得很容易,不需要大的改动就可以增加新的功能。通过将应用程序分割成若干独立任务,RTOS大大简化了应用程序的设计过程。

       系统配备电源、键盘、复位、LCD显示、ADC、RS485、以太网、JTAG、12C、E2PROM等外围设备。A/D接口电路和嵌入式系统电路分别采用独立模块,利于系统维护、升级。系统自带设置按键和128×64 LCD液晶显示,便于现场调试和参数修改。同时,也可以采用Modbus/RTU或Modbus/TCP通信协议,通过RS485或以太网通信方式将采集数据传送到上位DAS、DCS等系统,由上位系统做统一处理后,用于设备参数监测及作为设备控制的依据。系统具有双网冗余远程通信功能,以提高通信网络的抗干扰能力和可靠性。

      系统软件设计与实现

     (1)系统软件功能设计

      采集系统的软件平台采用源码公开、可移植、可裁剪、可固化的抢占式实时多任务操作系统μC/OS—Ⅱ。实时操作系统RTOS中最关键的部分是实时多任务内核——μC/OS—Ⅱ实时多任务内核。其基本功能包括任务管理、资源管理、系统管理、定时器管理、存储器管理、时间管理、消息管理、队列管理等。这些管理功能是通过内核服务函数形式交给用户调用的,也就是RTOS的APi函数。

       μC/OS—Ⅱ实时操作系统内核简化了应用系统的设计,使整个系统结构简洁,使复杂的应用程序层次化。整个系统设计由操作系统和一系列用户应用任务构成,使应用程序更容易设计与维护。系统主函数是首先执行的一个函数,主要实现系统硬件和操作系统的初始化。硬件初始化包括中断、键盘、显示等;操作系统初始化包括任务控制块和事件控制块的初始化,而且在启动多任务调度之前,必须创建至少一个任务。在此系统中创建了一个启动任务,主要负责时钟的初始化和启动,中断的启动,通信任务模十央的初始化、启动以及任务的划分等。要完成系统实时多任务的各种功能,必须对任务进行划分。

       系统应用程序根据各个任务的重要性和实时性,把程序分成六个具有不同优先级的任务,它们是系统监控任务、A/D数据采样任务、接收队列监视任务、数据发送任务、键盘输入任务、LCD显示任务。其中A/D数据采样任务实时性要求最高,LCD显示任务实时性要求最低。各个任务具有不同的优先级,通过调用系统挂起函数或延时函数,可以启动具有更高优先级的任务。在设计中,通过对延时参数的设置,系统每隔一定的时钟节拍,就启动接收队列监视任务,定期扫描环形缓冲区。一旦发现读指针与写指针不相等时,就将环形缓冲区中新接收到的数据存入丁EMPBUF中,同时发送信号量SerldSem。数据发送任务接收到信号量,启动运行,完成数据发送功能。

      (2)A/D转换程序设计与实现

      应用程序A/D转换是数据采集系统的重要组成部分。在μC/OS—Ⅱ实时操作系统内核下,A/D驱动程序的实现过程主要取决于A/D转换器的转换时间、模拟值的转换频率、输入通道数等。典型的A/D转换电路由模拟多路复用器(MUX)、放大器和模数转换器(ADC)三部分组成。图4所示为应用程序调用驱动程序图。驱动程序通过MUX选择要读取的模拟通道①,延时几微妙以便使信号通过MUX传递,并使之稳定下来。接着,ADC被触发开始转换②。然后驱动程序在一个软件循环中等待③,直到完成转换。在循环等待时,驱动程序检测ADC的状态信号。如果等待时间超过设定的软件定时值,则结束等待循环。如果在循环等待中,检测到ADC发出转换结束的信号时,驱动程序读取ADC转换的结果④,并将结果返回到应用程序⑤。





       (3)串口通信程序设计

        由于串行设备存在外设处理速度和CPU速度不匹配的问题,所以需要一个缓冲区。LPC2132芯片的异步串口带有16字节接收和发送FIFO。在实际应用中,需要从内存中开辟两个缓冲区,分别为接收缓冲区和发送缓冲区。

       串口的操作模式如下:用户任务想写,但缓冲区满时,在信号量上睡眠,让CPU运行别的任务,待ISR从缓冲区读走数据后唤醒此睡眠任务;同样,用户任务想读,但缓冲区空时,也可以在信号量上睡眠,待外部设备有数据来了再唤醒。由于μC/OS—Ⅱ的信号量提供了超时等待机制,串口当然也具有超时读写能力。

      图5所示为带缓冲区和信号量的串口接收示意图。数据接收信号量初始化为O,表示在环形缓冲区中无数据。接收中断到来后,ISR从UART的接收缓冲器中读入接收的字节②,放入接收缓冲区③,然后通过接收信号量唤醒用户任务端的读操作④、①。在整个过程中,可以查询记录缓冲区中当前字节数的变量值,此变量表明接收缓冲区是否已满。缓冲区的大小应合理设置,降低数据丢失的可能性,又要避免存储空间的浪费。

     系统通信采用Modbus RTU协议,每一个数据字节包括:一个起始位、8位数据位、偶校验位、一个停止位,并采用CRC循环冗余码校验方式。

------分隔线----------------------------

  • 李老师
  • 李老师
  • 胡老师
  • 胡老师
合作伙伴
  • 武汉工程大学合作培训机构

  • 国家信息技术紧缺人才培养工程(NITE)

  • ARM公司全球授权培训中心

  • 国内首家Symbian授权培训

  • 微软全球嵌入式合作伙伴

  • Altera全球合作培训机构

在线客服
  • 客服热线:
    139-8620-3604
    159-2752-9536



  • 官方微信
  •  咨询微信二维码