首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
工业控制
» 基于多线程的环境监控系统下位机的设计
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
基于多线程的环境监控系统下位机的设计
发短消息
加为好友
porereading
当前离线
UID
863084
帖子
7183
精华
0
积分
3592
阅读权限
90
在线时间
209 小时
注册时间
2011-11-30
最后登录
2019-8-28
论坛元老
UID
863084
1
#
打印
字体大小:
t
T
porereading
发表于 2014-10-19 10:09
|
只看该作者
基于多线程的环境监控系统下位机的设计
国民经济
,
环境保护
,
监控系统
,
多线程
,
工业
为提高环境监控系统的稳定性,节约系统资源,提出了一种由下位机、传输网络和上位机组成的环境监控系统的设计方案,详细介绍了该系统中下位机的硬件及软件设计。该下位机硬件以ARM9处理器S3C2410为核心,软件采用多线程应用程序同时处理多个任务,并采用信号量和互斥量实现线程间的同步。实际应用表明,该系统运行稳定,提高了系统效率。
0引言
随着国民经济及工业技术的发展,环境保护越来越受到重视。现在市场上已经出现了多种环境监控系统,但性能不稳定。现场监控终端大多采用工控机或单片机,前者抗干扰性能好,但成本较高;后者处理能力低,人机界面不友好,不利于现场人员的监控管理。针对上述问题,笔者设计了一种基于多线程的环境监控系统。该系统采用多线程技术有效地实现了监控过程中数据的采集与存储、实时数据显示、下位机(监控终端)与上位机(监控中心)的通信、实时报警等功能。本文重点介绍该系统下位机的设计。
1系统总体结构
基于多线程的环境监控系统由现场监控终端(下位机)、传输网络、监控中心(上位机)3个部分组成,其结构如图1所示。
图1基于多线程的环境监控系统结构
下位机是一个基于A RM9的嵌入式系统,用于定时采集、处理、存储被监测的特征数据。经过下位机处理后的数据,按照相关协议,经GPRS模块发送给上位机。上位机由一台PC机担任,负责接收多个下位机发送的数据,并对这些数据进行分析、处理和显示。环保部门可通过上位机监控其辖区内的污染排放状况。上位机基于VB. NET开发。
2下位机硬件设计
下位机的硬件核心部分由S3C2410、NandFLASH和SDRAM组成,如图2所示。S3C2410是三星公司生产的一款基于ARM920T内核的32位RISC嵌入式微处理器,带有独立的16 KB指令Cache和16 KB数据Cache、LCD控制器、RAM控制器、N and FLASH控制器、并行I/ O口、8路10位ADC,其运行频率可达203 MHz.8位64 MB的Nand FLASH选用的芯片为K9F1208, 64 MB的SDRAM由2片HY57V561620组成。下位机通过以太网控制器CS8900A扩展了一个网口,数据既可以通过无线传输,也可以通过有线传输;通过I/ O接口扩展了8个DI口(数字量输入)、4个AI口(模拟量输入)、4个DO口(数字量输出),下位机通过这些接口与被监控设备通信。
图2下位机硬件组成
3下位机的需求与结构设计
下位机定时采集、处理现场数据,并存储在数据库中,把实时数据发送给上位机,并响应上位机发送的控制命令。因此,下位机需要同时处理多个任务,这些任务并发执行。若使用单线程来完成这些任务,则需要使用多个定时器来触发,而过多的定时器会导致系统不稳定。Window s是抢先式多任务的操作系统,启动了一个应用程序就等于启动了一个进程。一个进程通常拥有一个线程,在系统资源管理中,每一个线程被分配一定的时间片。采用多线程的设计方法可以使程序拥有多个线程,这样程序就能同时处理更多的任务。因此,若使用多个进程来协作完成,能避免上述缺点且系统比较稳定,但系统对进程的频繁调度会占用过多资源,程序的可读性也不好。
笔者采用一种并行的、多线程方案能够很好地处理多个任务,并充分节约系统资源。该方案中,下位机有5个线程:GU I线程、复位线程、数据采集与存储线程、网络通信线程、决策线程。其中GU I线程为主线程,负责界面处理、系统数据的初始化以及创建子线程等任务;复位线程、数据采集与存储线程、网络通信线程是后台的工作线程,通过优先级调度、线程同步等机制保证能可靠执行现场数据采集、存储、发送、显示等任务。复位线程在启动后循环地对看门狗操作,不作为任务处理线程。任务线程之间的关系如图3所示。
图3任务线程之间的关系
4多线程技术在系统中的应用
4. 1线程的创建
Linux环境下,使用pthread_cr eate()函数创建一个新线程,默认情况下主线程会等待被创建的子线程执行结束,得到子线程的返回结果然后再继续往后执行。实时监控程序的子线程都是循环执行的,不需要运行结束后归并到主线程中,需设置其属性为PT HREAD _ CREATE _DETACHED.根据子线程的重要性进行优先级设置,确保重要线程优先执行。子线程的优先级从高到低依次为复位线程、数据采集与存储线程、决策线程、网络通信线程。
线程的创建、设置伪代码如下:
void * thr ead_wat chdog(void * arg); / /复位线程函数
void * thr ead_collect ion(void * arg); / /数据采集与存储线程函数
void * thr ead_communi cat ion(void * arg); / /网络通信线程函数
void * thr ead_decis e(void * arg); / /决策线程函数
int dat a[ 12] ; / /数据缓冲区,用于存放线程间共享的数据函数
main()
{
/ /初始化工作
……
pthread_t wat chd og; / /线程号
pthread_t collect ion;
pthread_t commun ication;
pthread_t deci se;
pthread_at t r_init(); / /初始化线程属性
pthread_at t r_setdetach st at e(); / /不对线程进行重新归并
pthread_at t r_set s ched param(); / /设置线程的优先级
sem_init(); / /对相关信号量进行初始化
pth read_creat e(); / /创建新线程
/ /启动GUI程序
……
}
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议