APP下载

基于广播模式的数据实时采集与处理系统

2016-10-25李松涛陶斌

软件工程 2016年8期
关键词:监测系统数据采集

李松涛 陶斌

摘 要:在环境监测中,相对于传统的设计方法,使用嵌入式实时操作系统(RTOS)可以更有效地实现模块和通信管理。通过消息邮箱,数据实时采集与处理系统实现了传感器数据在不同任务之间的广播发送,对接收任务设置不同的优先级,可以调整其接收数据的顺序。在实际开发中,使用基于ARM核的STM32F103VE微控制器实现了温湿度数据的实时采集和广播发送,测试结果表明,任务的切换顺序取决于优先级,不同接收任务之间的时间延迟在10ms之内,满足了数据处理系统的实时性和可靠性的要求。

关键词:RTOS;消息邮箱;数据采集;监测系统

中图分类号:TP368.1 文献标识码:A

Abstract:Compared with traditional design methods, the embedded real-time operating system (RTOS) can more effectively achieve the module management and the communication management in environment monitoring.With the message mailbox and real-time data acquisition and processing system,the sensor data can be broadcasted and transmitted among different tasks.By setting different priorities to the receiving task,the order of data reception can be adjusted.In practical development,the STM32F103VE microcontroller based on ARM core is used to implement the acquisition and the broadcast transmission of the humidity data.The test results show that task switching sequence is determined by the priority and time delay among different receiving tasks is within 10ms,which meets the requirements of the data processing system with real-time and reliability.

Keywords:RTOS;the message mailbox;data acquisition;the monitoring system

1 引言(Introduction)

在环境监测的数据处理系统中,对来自传感器的数据需要进行不同的处理,例如要对这些数据进行显示、存储、检测是否超过设定值,同时,系统还要通过通信接口与上位机通信。在通常的嵌入式数据采集系统中,一般是通过查询方式或中断方式获取来自传感器的数据,然后再调用不同的功能函数对数据进行处理。查询方式需要消耗时间查询传感器状态,所有数据处理过程串行执行,而数据的存储和通信过程比较耗时,有时会因为硬件异常而中断程序的执行,程序的执行时间无法保证。中断方式虽然可以满足系统实时性的要求,但是在复杂系统中,由于需要处理的实时事件较多,有限的中断无法满足系统的要求;大量的使用中断进程,也不利于程序的模块化设计,程序的可读性和易维护性下降。在嵌入式系统设计中采用实时操作系统(RTOS)可以将系统功能分解成多个不同的任务,各个任务独立运行,实现了系统的模块化设计[1,2]。任务的调度由RTOS负责,同时也满足了系统可靠性和实时性的要求[3]。

本文使用消息邮箱将传感器采集到数据以广播的方式向数据处理任务发送,数据处理任务作为接收者可以并发接收来自传感器的数据,在保证实时性的同时,也实现了任务模块之间的松耦合。

2 环境监测系统任务划分(Task division of

environmental monitoring system)

在基于μC/OS-II的嵌入式系统中,将环境监测系统中环境因子的数据采集和处理功能分配在不同的任务中,任务之间由RTOS进行调度,各个任务有不同的优先级,任务按照优先级的高低分时使用CPU。在μC/OS-II中,可以将任务分成64个不同的优先级[4],且任务优先级各不相同。其中空闲任务和统计任务是系统保留的优先级,用户不可用。其他的优先级根据实现的功能进行设置。环境监测系统中任务及优先级分配如表1所示。

数据采集任务使用单通道ADC采集传感器数据,数据以DMA方式保存在存储器中,采集数据的周期在任务中设置。虽然系统对实时性的要求不是很高,但是考虑到采集任务需要向其他任务提供数据源,因此将该任务设置为最高优先级。监测及报警任务负责对数据上下限范围的监测,对敏感数据的声光报警,因此将其优先级设置为仅次于数据采集任务。对于串口通信任务和LCD显示任务,相对于前两个任务,实时性和重要性不高,可以将它们设置为较低的优先级。任务模式根据各个任务在数据处理中的不同作用,分为数据广播者和数据接收者。数据采集任务是数据广播者,其他任务是数据接收者。

3 广播模式及实现(Broadcast mode and

implementation)

3.1 任务间数据广播

μC/OS-II中实现数据的广播通信有两种方法,一种是利用信号量来实现。由于信号量只能标识事件的发生,所以在使用信号量实现时,需要使用两种不同类型的信号量方式:计数信号量表示事件的发生;互斥信号量用来保护临界资源。在大型系统中,需要设置多个信号量,程序流程复杂。另外一种是使用消息邮箱方式[5]。μC/OS-II提供的通用消息处理函数只能一次发送一个消息,数据读取后自动清空消息邮箱,无法实现消息的广播。通过对消息邮箱函数的扩展,实现了数据采集任务向多个接收任务广播数据。基于消息邮箱的广播方式具有编程简单,结构清晰的特点。

基于消息邮箱的广播模式实现过程如图1所示。数据采集任务的采样周期设置为5s,数据采集任务SensorTask获取数据后,向其他三个任务LCDTask、COMTask和ALARMTask通过消息邮箱广播发送数据,这时需要实现多个任务之间的同步。当SensorTask获得来自ADC的数据后,要将此数据以消息的方式通知所有数据接收任务,SensorTask以OSMboxPostOpt()广播数据。其他任务在同步点调用OSMboxPend()等待来自SensorTask的消息,获取数据后,LCDTask、COMTask和ALARMTask中处于就绪状态的任务就可以根据优先级的高低切换上下文获取系统资源,执行相应的操作。

3.2 任务内部的状态转换

μC/OS-II以任务的形式管理程序的执行,内核为创建的任务分配栈空间,并根据任务的优先级进行任务的调度,将就绪任务列表中优先级最高的任务置为运行态。数据采集任务和数据接收任务的状态转换如图2(a)和图2(b)所示,分别是数据采集任务SensorTask和数据接收任务(以LCDTask为例)的状态转换图。数据采集任务SensorTask有最高的优先级,最先获得CPU的使用权,启动ADC转换模块采集数据并将采集到的数据通过广播的形式发送,然后调用延时函数进入等待状态,让出CPU的使用权,其他低优先级任务获得运行机会。延时时间到后,通过时钟中断进入就绪态,由于SensorTask在所有处于就绪态的任务中具有最高的优先级,一旦就绪就可以通过上下文切换立即进入到运行态,开始进行下一个周期的数据采集和发送。数据接收任务LCDTask创建后进入就绪态,其中优先级最高的任务在数据采集任务延时期间可以进入运行态,时间延时或等待消息事件都会使数据接收任务进入等待状态。当获得广播消息后,数据接收任务就可以进入就绪态,优先级最高的任务首先获得CPU的使用权,进入到执行状态,任务执行结束后延时开始下一个周期的循环。

4 系统性能分析(System performance analysis)

4.1 系统硬件实现

系统采用的控制芯片为STM32F103VE,其上运行经过移植的μC/OS-II 2.86 RTOS。STM32F103VE采用32位的Cortex-M3 ARM内核,工作频率72MHz, 具有低成本、低功耗等特点[6,7]。温湿度传感器采用DHT11[8],通过PD12端口与控制器相连,如图3所示。

4.2 系统性能测试分析

(1)系统任务之间的切换

不同任务之间切换如图4所示。大部分时间里,CPU运行具有最低优先级的空闲任务IdleTask,在每一次数据采集点,SensorTask获取CPU资源,开始执行任务,由于该任务具有最高优先级,可以无中断的运行结束。其他任务根据优先级的不同相续获取CPU资源,执行各自的功能。由于一个数据采集周期远远大于各个任务的执行时间,因此在系统中不存在任务的中断。

(2)任务广播延迟

理论上来讲,在广播方式下,各个接收任务应该同时接收到消息,但由于接收任务有不同的优先级,优先级高的任务首先进入运行态。数据采集任务发送数据与接收任务接收数据的延时时间主要有两部分组成:当前处于运行态的任务执行任务的时间和任务切换时间。不同任务的数据延迟时间统计如图5所示。

5 结论(Conclusion)

基于广播模式的数据实时采集与处理系统,将功能分解到任务,使软件结构清晰,实现了各个功能模块的松耦合,提高了系统实时性和灵活性,实际测试结果表明,不同任务之间的时间延迟在10ms之内,满足了数据处理系统实时性的要求。

参考文献(References)

[1] E Barakat,N Sinno,C Keyrouz.A Remote Monitoring System for Voltage, Current,Power and Temperature Measurements[J].Physics Procedia, 2014,55:421-428.

[2] M Rockwood,et al.Using a Real-time Operating System for Multitasking in Remote Patient Monitoring[J].IEEE International Symposium on Medical Measurements & Applications,2014:1-5.

[3] J M Fontana,M Farooq,E Sazonov.Automatic Ingestion Monitor:A Novel Wearable Device for Monitoring of Ingestive Behavior[J].IEEE Transactions on Biomedical Engineering,2014,61(6):1772-1779.

[4] Jean J.Labrosse.嵌入式实时操作系统μC/OS-II[M].北京:北京航空航天大学出版社,2003.

[5] 刘林真.消息邮箱机制在烟花仓库温湿度监控系统中的应用[J].福州大学学报:自然科学版,2015(5):622-626.

[6] 贾鹏辉,等.基于STM32F103VCT6的振弦式传感器数据采集系统[J].仪表技术与传感器,2015(2):67-70.

[7] 王晨辉,吴悦,杨凯.基于STM32的多通道数据采集系统设计[J].电子技术应用,2016,42(1):51-53.

[8] 麦军,邓巧茵,万智萍.基于CC2530的ZigBee无线组网温度监测系统的设计[J].电子设计工程,2015,23(22):117-121.

作者简介:

李松涛(1971-),男,硕士,讲师.研究领域:嵌入式系统.

陶 斌(1979-),男,硕士,讲师.研究领域:计算机网络.

猜你喜欢

监测系统数据采集
室内有害气体监测系统设计研究
基于数据融合的掘进机截齿磨损状态监测
基于AVR单片机的SPI接口设计与实现
行波故障指示器在500kV线路故障诊断中的研究与应用
CS5463在植栽用电子镇流器老化监控系统中的应用
大数据时代高校数据管理的思考
基于开源系统的综合业务数据采集系统的开发研究
GIS设备局部放电监测系统的研究
无线环境监测系统的设计与开发