基于嵌入式Linux的数据采集系统的设计

基于嵌入式Linux的数据采集系统的设计


2024年5月5日发(作者:)

基于嵌入式Linux的

数据采集系统的设计

张红燕

  

樊东红

  

谢祥徐

  

贺州学院物理与电子信息系  542800

摘  要

基于嵌入式Linux的数据采集系统是分布式的

控制系统,在现场完成数据采集、数据处

理、数据存储、数据发送等多种任务。该

系统具有一定的自检测、自校正能力, 具有

良好的可靠性、稳定性和抗干扰性等特点。

关键词

嵌入式系统; 数据采集

2 系统设计

数据采集系统的采集任务在现场完

成。采集系统设计为分布式的控制系统,系

统上位机与现场检测下位机之间的通信基

于串口。正常运行时,现场下位检测控制器

完成数据采集、数据处理、数据存储、数

据发送等多种任务。系统具有一定的自检

测、自校正能力,能将异常情况传给PC机,

以便维护。为了适应各种不同情况对焊缝

自动检测的要求,整个检测系统采用模块化

结构设计,可应用不同的模块组合成不同的

应用系统。数据采集系统的基本组成如图

1所示。

2.1 系统的硬件

整个数据采集系统的硬件有传感器、

A/D转器、微型工控机、PC机。

微型工控机实现系统的数据采集、

传输和存储微型工控机是基于嵌入式

Intel386SXCPU的微型计算机,其主板采用

了扩展技术,使其具有4MDRAM,外扩了

32MBdiskonchip。具有16位数总线,总线

时钟为8MHz,提供15个中断号。有看门

狗定时器及实时时钟,增强了系统的抗干扰

能力。主板有一个高速RS2232口,一个高

速RS2232/RS24口(跳线选择),还有一个并

行通信口及IDE接口,根据数据传送的速度

要求选择通信方式。这些为系统的设计提

供了良好的硬件平台。

2.2 系统的软件

软件的设计是在操作系统上实现的,嵌

入式操作系统是整个系统的核心。针对

本系统的特点,软件平台采用多任务嵌入式

操作系统Linux来实现,改变了传统的在类

似硬件平台下采用MS2DOS单用户、单

嵌入式系统是以应用为中心,以计

算机技术为基础,软硬件可裁减,适合应

用系统对功能、可靠性、成本、体积和功

耗要求的专用计算机系统。在焊接自动化

及智能化等控制过程中,焊缝的快速检测

和实施跟踪是实现焊接过程质量控制的关

键。因此,设计一个能够在现场完成数据

采集、数据处理、数据存储、数据发送等

多种任务的系统非常必要。在软件方面采

用Linux作为嵌入式操作系统

[1]

,改变了

汇编语言单任务循环控制的监控方式,克

服了系统安全性差的特点。

1 嵌入式Linux的特点

嵌入式Linux

[1]

是一种由裁剪过的内核

(kernel)和根据需要定制的系统模块组成的

小型操作系统。其特点有:内核微小,最多几

百kB;支持X86等30多种8bit~64bit的

MPU和MCU,支持ROM等多种存储器;

具有多任务、多进程的特征,具有一定的实

时性;通信网络支持完整,支持TCP/IP等

常见协议,且可自行开发协议;具有图形用

户接口(GUI)支持;具有网络、数据库和多

媒体支持功能,能够实现数据的网络通信和

实时处理;源代码免费开放,并具有可裁剪

性,能根据需求特定设计;Linux主机上的

程序可移植到嵌入式Linux系统上;具有

强大的技术支持背景。

图1  数据采集系统的组成

任务操作系统难以完成较为复杂的分布式

多任务应用的缺点。在数据采集系统中,

Linux系统可以同时处理多个传感器发送

来的较为复杂的控制任务,从而提高系统的

整体响应速度及并发处理能力。构成嵌

入式Linux系统

[2]

至少需要下面3个基本元

素:引导程序、Linux微内核和初始化

进程。如果要让它有更多的功能,还可加

上文件系统、GUI和设计精简的应用程

序,并将其放在diskonchip中启动。

2.2.1 内核的裁减编译与启动

微型计算机的存储空间较小,而标准

Linux是面向PC的,需要对Linux内核进

行裁减。对一些可独立加上或卸下的功

能块,可在编译内核时仅保留嵌入式系统所

需的功能支持模块,删除不需要的功能。

为了满足一定的实时性要求,需屏蔽内核的

虚拟内存管理机制来增强Linux的实时

性。系统中微机主板属于X86体系结构,

兼容一般桌面PC的Linuxi386版本。这

样,我们可以直接使用X86体系的编译器对

Linux核心源代码直接进行编译及裁剪,并

避免了对Linux核心源代码中涉及CPU的

部分模块以及内存管理模式模块的修改。

增加了文件系统和GUI。根据系统需要,

文件系统应包括:基本文件系统结构、基

本应用程序、基本配置文件、基本设备/

dev/hd*和/dev/tty*、基本程序运行所

需的函数库。GUI是软件可视化设计不可

缺少的,也为将来的现场检修维护提供可视

化的界面。编写Linux的引导代码,将

diskonchip作为系统的启动设备,引导代码

放在diskonchip上。系统加电后,由引导

代码进行基本的硬件初始化,然后把内核经

映像装入内存运行。

2.2.2 设备驱动程序

系统需要对I/O口、串口编写设

备驱动程序。设备驱动程序是操作系

统内核与硬件之间的接口,属于内核的一

部分,主要功能应包含:对设备初始化或

释放、把数据从内核传送到硬件及从

-145-

信息科技

中国科技信息2007年第18期    CHINA SCIENCE AND TECHNOLOGY INFORMATION Sep.2007

硬件读取数据、读取应用程序传送给设

备的数据和回送应用程序请求的数据、

监测和处理设备出现的异常。

设备驱动程序的实质就是中断处理。

Linux中断处理程序分为上半部和下半

部。上半部即一般的中断服务程序,由硬

件中断触发,一般运行在关中断的方式下,应

当尽可能短小,处理尽可能快;下半部运

行在开中断和任务串行化的环境下,处理需

较长时间的任务。驱动程序上半部在处

理完实时性很强的任务后,用queue_task函

数将下半部处理函数挂入立即队列,并用

mark_bh函数来激活立即队列,下半部就可

以最优先地被执行。

用户进程是通过设备文件与硬件打交

道,对设备文件的操作方式是系统调用,由

file_operations结构实现系统调用。这个结

构的每一个成员的名字都对应着一个系统

调用。用户进程对设备文件进行操作时,系

统调用通过设备文件的主设备号找到相应

的设备驱动程序,然后读取这个数据结构相

应的函数指针,接着把控制权交给该函数。

这就是Linux设备驱动程序工作的基本原

理。编写设备驱动程序的主要工作就是编

写子函数,并填充file_operations的各个域。

设备驱动程序以模块方式加入内核,在

init_mod2ule模块中,当检查设备存在后,用

request_irq函数为设备申请系统中空闲的

中断,用kmalloc为设备驱动程序申请输入

输出缓存队列,如果申请成功,用

regis2ter_chrdev函数将设备驱动程序注册

到系统中,加载完成。在clearup_module

模块中,先用free_irq函数释放申请到的中

断,然后用kfree函数释放申请到的内存空

间,最后用unregister_chrdev函数释放注册

的设备驱动程序。

2.2.3 应用程序设计

在基于嵌入式Linux系统的微机中,应

用程序的主要模块有数据采集模块、数

据处理模块、数据通信模块和数据诊断

模块。应用程序流程图见图2。数据采集

模块是通过对I/O口操作实现的。利用

inb、inb_p、outb、outb_p等4个函数

编写读取和写入程序。inb_p、outb_p

与inb、outb的区别在于前者在存取I/O

时有等待(pause),可适应慢速的I/O设备。

为了防止存取I/O时发生冲突,Linux提供

对端口使用情况的控制。在使用端口之

前,可以检查需要的I/O是否正在被使用,如

果没有,便把端口标记为正在使用,使用完后

再释放。系统提供check_region、

request_region、release_region几个函数完

成这些工作。

数据处理模块实现数据的均值与极值

计算,以文件的方式存储数据。历史数据

对焊缝数据采集系统很重要,可上传到服务

器以便预报系统根据设置的模型进行预测,

还可不断修正数据诊断模块所需的模型。

数据诊断模块实现实时分析诊断,根据

已设置的模型,在系统工作期间对系统数据

进行测试分析。诊断程序设置为嵌入式系

统中中断级别最低的中断服务程序,在不影

响系统工作的前提下实现实时诊断,并上传

给上位机,以便跟踪诊断校准,保证系统的可

靠性。

数据通信模块主要任务是通过串口与

上位PC机实现数据传输。在Linux系统中,

串口是用做字符设备处理的。使用文件操

作函数对串口进行处理,利用open函数打

开串口,利用termios结构设定串口通信参

数。

#defineNCCS19

structtermios{

 tcflag_tc_iflag; //inputmodeflags

 tcflag_tc_oflag; //

outputmodeflags

 tcflag_tc_cflag; //

controlmodeflags

 tcflag_tc_lflag; //localmodeflags

 cc_tc_line; //linediscipline

 cc_tc_cc[NCCS]; //

controlcharacters};

其中:c_iflag为控制输入处理;

c_oflag为控制输出处理;c_cflag为控制

波特率、数据位、停止位、校验位等;

c_lflag用来侦测字符是否回应,并将信号送

到程序;c_cc为控制字符定义和超时设定;

在程序结束时,用close函数关闭端口.

2.2.4 系统执行

经过以上步骤,在嵌入式Linux系统上

实现数据采集系统已基本构成。系统执行

流程见图3。

3 结束语

基于嵌入式Linux的数据采集系统具

有数据检测的实时性、检测精度高、自动

化程度高、具有良好的可靠性、稳定性和

抗干扰性等特点。

参考文献

[1]郑锐,黄佩伟.基于ARM-Linux的智能

传感器中央控制器,电子技术.2006年12

月,p43-46

[2]许焰 等.基于CAN总线的数据采集和控

制系统,机电工程.2007年2月,第24

卷,第2期,p59-61

作者简介

张红燕,女,1978年生,山东临清人,硕士

研究生,助理工程师,主要研究方向:嵌入

式系统的应用,粒子滤波在移动通信中的应

用等。

樊东红,女,1964年生,广西来宾人,研究生学

历,高级实验师,主要研究方向:数值计算和模

拟,电子设计等。

谢祥徐 男,1974年生,广西岑溪人,讲师,

主要研究方向:嵌入式系统的应用。

上接第144页

信息化服务将让社会充分享受医疗卫生提

供的智能化服务。作为医疗领域数据库

应用的首选,后关系数据库Caché将为

我国医疗卫生信息化提供数据库方面的良

好支持,而后关系数据库技术也必将大

范围地应用和推广。

参考文献

[1] 陈培正,孔令人,石义芳,于芳.后关系型

数据库在HIS中的应用. 医疗设备信息.

2005,20(11),P30-32

[2] 王继中.从Caché看后关系型数据库.

中国计算机用户.2004,(48),P63

[3] 易昜,冯昌琪.四川省数字医疗及公共

卫生信息服务研究.中国卫生事业管理.

2006,(10),P634-635

[4] 方睿,韩斌.后关系型数据库Caché的

应用研究.武汉大学学报.2005,51(12),

P183-186

图2  应用程序流程图图3  系统执行流程图

-146-


发布者:admin,转转请注明出处:http://www.yc00.com/web/1714849142a2527171.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信