西门子6ES7222-1HD22-0XA0供应现货
本文分析了现有构件化嵌入式操作系统所用调度算法存在的缺点,提出抢占阈值调度算法是更为合适的算法。通过仿真实验比较抢占阈值调度算法、非抢占式调度算法和FIFO(First-In-First-Out)调度算法的性能,证明了上述结论。通过分析现有嵌入式系统构件模型的特点,提出了一种构件模型以及将构件映射成任务的方式,还提出了一种设计方法。整个方案能tigao构件化嵌入式操作系统的性能。
关键词:构件化嵌入式操作系统; 抢占阈值调度; FIFO调度; 构件模型
1 前言
如何将构件技术成功地应用到嵌入式操作系统开发中得到越来越多的重视。现有的工作大部分着重于从结构的角度分解系统成若干构件,并重用构件。实际嵌入式实时系统的处理器资源和内存资源是有限的,系统还有实时性需求。当前成熟的实时调度算法都是基于任务模型分析系统的可调度性。在嵌入式实时系统中应用构件技术时,还需要研究如何从时间(运行)的角度将构件映射成任务,以及为底层构件化嵌入式实时操作系统选择合适的调度算法。
本文分析了现有构件化嵌入式操作系统的特点,着重分析了TinyOS[1]的调度内核。通过仿真实验比较了抢占阈值(简称PT)调度算法[2]、非抢占式(简称NP)调度算法和FIFO调度方式的性能,证明了当任务之间无共享资源时,抢占阈值调度算法适合作为构件化嵌入式操作系统的实时调度算法。之后,本文论述了嵌入式实时系统对构件模型的需求,提出了一种构件模型。通过分析比较现有的映射方式,提出了一个将构件映射成任务的方式和一种设计方法。
2 适合构件化嵌入式操作系统的调度算法
定义单处理器静态优先级实时系统的任务模型,定义G={t1,t2,…,tn}为一个包含n个相互独立的周期性或者偶发性(sporadic)任务的集合,集合中的任务用ti=(Ti,Ci,Di)(i=1,2,…n)表示,其中,Ti表示ti的周期(对于偶发性任务就是小到达间隔),Ci表示ti的坏情况执行时间,Di表示ti的相对截止期。我们假定大的数值表示高的优先级,对于集合G,小的优先级是1,大的优先级是n。周期任务的一次执行,称作任务的一个实例。任务实例从进入系统到结束执行所用的时间称作实例的响应时间(responsetime)。在一个系统的整个运行过程中,任务的坏情况响应时间等于其所有实例中大的响应时间。
2.1 TinyOS存在的问题
当前的构件化嵌入式操作系统主要有TinyOS和Echidna[5]两种。TinyOS是为无线传感器网络(WirelessSensorNetwork,简称WSN)开发的构件化嵌入式操作系统,适用于内存资源和处理能力有限,电池供电的嵌入式系统。其内核支持两级调度,任务按照FIFO的方式执行,目的是减少对内存的使用量,但造成系统实时性差。Echidna与TinyOS一样使用FIFO的方式调度任务,存在相同的缺点。
V.Subramonian等人在文献[6]中研究了FIFO调度方式对TinyOS系统性能的影响。在使用TinyOS的系统中,当需要处理的数据量较大时,如果超过其计算能力,则会出现过载(overload)现象。处理过载的较好方式一般是保证关键任务的执行,放弃非关键任务。而FIFO调度方式不能做到这一点,因为这种方式无法区分关键任务和非关键任务。下面通过分析TinyOS对通信数据包的处理来说明其缺点。
发送数据包由应用层产生并传递给底层发送构件,当成功发送后,后者会触发一个任务实例来通知应用层发送完毕。应用层在收到这一事件之前将一直等待,不能继续发送数据。即,只有通知任务实例得到执行,应用层才能继续发送数据。如果TinyOS当前需要处理的数据量较大,有较多的任务实例需要执行,则通知任务实例会排在FIFO队列的后,等到前面的任务实例执行完才得以执行。这样就延缓了发送数据的过程,降低了通信数据包的吞吐量。在极端情况下,其它任务实例会将整个FIFO队列占满,通知任务实例到达时会被调度内核放弃,造成应用层发送数据的终止。从无线信道接收数据时同样会出现这种情况。
文献[6]中提出了一种改进措施,给任务分配优先级,将调度内核升级为优先级驱动的非抢占式调度。这样与FIFO调度方式相比,能tigao任务集合的可调度性,但仍会出现任务集合不可调度的情况。
2.2 抢占阈值调度算法适合构件化嵌入式操作系统
利用抢占阈值进行任务调度时,不但给集合G中的任务ti分配任务优先级piÎ[1,2,…,n],还分配抢占阈值gi,并且pi£gi,即,giÎ[pi,…,n]。这样就实现了一个双优先级系统。其中的pi用于抢占其它的任务,而gi是任务运行中的有效优先级。如果当前正在运行的任务是ti,那么对于就绪任务tj,必须有pj>gi,tj才能抢占ti。对于周期任务ti,每次开始执行后,其优先级将从pitisheng为gi,执行完后,优先级再从gi下降为pi。
当任务的抢占阈值等于其任务优先级时,就是抢占式调度;当任务的抢占阈值是系统高优先级时,就是非抢占式调度。抢占调度和非抢占调度是使用抢占阈值调度模型的两个特例。实际中,抢占阈值调度能利用抢占式调度和非抢占式调度的优点,通过调节任务抢占阈值,减少不必要的任务抢占,tigao整个任务集合的可调度性。能运行抢占和非抢占式调度算法都不能调度的任务集合[2]。在文献[3]描述的仿真环境下,抢占阈值调度算法与抢占式调度算法相比,处理器利用率tigao15%-20%。抢占阈值调度模型中,任务集合被分割成数目很少的非抢占组(Non-PreemptiveGroup,简称NPG)。组内任务之间是非抢占的,能共享一个栈空间,减少了任务集合对内存资源的消耗。在文献[4]的仿真环境下,当任务大周期为100时,平均100个任务被分割成14.3个NPG。
在构件化嵌入式操作系统的应用环境中,希望能在tigao任务集合可调度性的使用尽可能少的内存资源。根据这一要求,本文提出了在实时调度内核中使用抢占阈值调度算法。为了说明该算法较其它调度算法更适于构件化嵌入式操作系统,提出了如下的指标,以比较各种算法的性能:非抢占式调度中,所有任务共享一个线程栈空间,节省了内存资源。对于抢占阈值调度,如果任务集合生成一个非抢占组,则会使用与非抢占式调度相同的内存资源。为此,在每个测试点,针对相同一组随机产生的任务集合,比较抢占阈值调度生成一个非抢占组的次数除以整个产生的任务集合个数(用NAT表示)得到的百分率,与非抢占式调度以及FIFO调度方式下可调度任务集合个数除以NAT得到的百分率,称作单线程比率(OneThread Rate,简称OTR)。来说明不同算法在保证任务集合可调度的前提下,只使用一个线程的能力。
使用随机产生的任务集合。生成任务时,任务个数totalTasks从2开始,以2为步长递增到50;任务集合的大周期maxPeriod取为1000。任务个数和大周期的取值构成一个测试点。在每个测试点,任务集合按如下规则产生:(1)在[1,maxPeriod]之间均匀、随机地选择任务周期Ti。(2)在[0.1/totoalTasks,2.0/totalTask]之间均匀、随机地选择任务利用率Ui,任务执行时间Ci=Ui*Ti。用任务个数来调整取值,以免产生过多的不可调度任务集合。(3)任务截至期Di=Ti。
在每个测试点,从100次独立仿真实验中获得各调度算法的性能指标值,以进行性能比较。
图1给出了针对相同一组任务集合,抢占阈值、非抢占式和FIFO等3种调度算法下产生的单线程比率。可以看出,FIFO调度方式的性能差。在大部分测试点,抢占阈值调度下产生的使用一个线程的任务集合个数等于非抢占调度下生成的可调度任务集合个数。只在少数几个测试点,前者产生的OTR值略低于后者。在此指标下,抢占阈值调度具有与非抢占式调度接近的性能。但抢占阈值调度能tigao任务集合的可调度性。抢占阈值调度能在tigao任务集合可调度性的使用较少的内存资源。与其它两种调度算法相比,更适合作为构件化嵌入式操作系统的实时调度算法
[NextPage]
图1比较3种算法得到的OTR值
3 构件模型和映射成任务的方式
一般基于构件的软件开发中,使用已生成并被证明是可靠的构件来”建造”整个系统软件。这需要一个定义构件的方法,即,构件模型。研究和实践证明,构件模型必须有信息隐藏的能力和明确定义的接口。前者使构件能在不同的系统中替换和重用,而后者是构件与环境交互的通道。外界只能通过接口访问构件,这也是对信息隐藏的辅助支持。对于实时系统来说,构架模型还应包含时间属性,例如:构件执行时间、终截止期和周期等,从而能在构造完系统后,进行可调度性分析。通常的实时软件开发中,任务是构造系统的基本单元,模型还应定义将构件映射成任务的方式。与桌面/企业级应用不同,开发嵌入式系统适合用源代码级构件。因为:(1)开发者可以访问构件源码(不是修改构件),通过”白盒”测试来发现错误。而使用二进制代码构件进行”黑盒”测试,将减弱开发者对系统行为的控制能力。(2)嵌入式系统是在资源有限的节点上运行复杂可靠的控制应用,不需动态配置,只需在一组静态配置的模式间切换。为了更好地支持系统的可分析性、可测试性和减少内存消耗,应该在运行前(编译时)配置构件的行为和相互之间的连接。这也需要使用源代码级构件。
因为管道和过滤模型[7]适于控制应用,而大部分嵌入式系统是控制系统。我们基于管道和过滤模型为构件化嵌入式操作系统的应用层定义一种实时构件模型。该构件模型是源代码级的,每个构件包括:(1)名称,作为构件的身份标识。(2)一组输入和输出端口,前者用于接收数据,后者用于产生数据,端口不会缓存数据,构件之间通过端口通信。(3)一组构件属性,存储构件的元数据信息,包括构件所用内存大小、执行时间、终截至期、释放时间和周期等。(4)一个行为体,实现构件功能,
[NextPage]
被输入端口数据(事件)触发,根据当前操作模式处理数据,并产生触发下一构件的输出数据(事件)。通信数据在构件之间传递,由底层调度内核通过对行为体的逻辑调用来引导。
当前存在将多个构件映射成一个任务[8]和将一个构件映射成多个任务[9]的方式,我们考虑这些映射方式的目的都是希望能在简化结构分析和减少运行时系统开销之间获得一个适当的折中。将一个构件映射成一个任务能简化结构分析,但可能造成系统运行时任务较多,如果底层实时操作系统采用抢占式调度算法,则会增加任务之间相互抢占的次数,从而增加现场切换等系统开销,降低处理器的利用率,影响任务集合的可调度性。还会增加对系统内存的消耗。我们提出了一种设计方法:构件是被动的,不包含自己的线程,装配时才将构件分配到线程,每个构件映射成一个任务,这使系统结构清晰,并能简化分析过程;而系统运行时出现的上述问题,通过为底层构件化嵌入式实时操作系统选择合适的调度模型来解决,例如选择非抢占式调度算法能减少内存消耗,而选择抢占阈值调度算法既能tigao任务集合的可调度性,又能减少对系统内存的使用。
映射完成后,构件属性就成为任务的属性。执行期间,系统保证输入端口上的数据不会改变,以避免数据的不一致。对于相互连接的构件,利用编译程序创建系统任务,以完成构件之间的数据通信,并根据互连构件的特性指定这些任务的释放时间、周期、执行时间和终截止期等参数。图2给出了构件模型的示例图。图2的右侧表示了任务(构件)执行体包含的程序结构。
图2 构件模型示例图
4
嵌入式系统开发使用构件技术时,不但要从结构的角度将系统分解成若干构件;还要从运行的角度将构件映射成任务,为底层内核选择适当的实时调度算法,根据算法给任务分配优先级,并判定任务集合的可调度性。当前对后者研究较少。针对这一问题,本文通过比较3种调度算法,得出抢占阈值调度更适合构件化嵌入式操作系统的结论。仿真实验证明了这一观点。根据已有工程实践,提出一种适合于嵌入式实时系统的软件构件模型以及将构件映射成任务的方式。本文论述的模型和算法构成了一个较完整的方案,对构件化嵌入式实时系统的开发有一定参考价值。
安全、可靠且高效率的快速联网冗余能力,确保工业系统的持续及安全。 |
在工业自动化的领域中,每个工业设备的连接在整个工业系统中都扮演着非常重要的角色。不像一般办公室应用一样,当其中的以太网络设备连接失败时,仅可能表示PC在数分钟内无法传递资讯;但在工业应用中,联机中断却可能造成重大的经济损失。在选择工业以太网设备以满足工业应用的需求时,为了确保整体工业系统运作的流畅性,应该记住以下几个要点:
工业应用中的设备必需具备高可靠度
联机中断后需要快速的恢复功能及安全保障,确保设备持续的运作
当工业以太网设备运用于自动化系统时,其大多作为连接设备,而非计算机主机。但由于整个自动化系统结合多项设备,为了防止非授权的存取,拥有某些系统授权使用的数据存取是相当必要的。
[NextPage] 动态状况报警功能,来得知工业设备状态,防止系统受损
[NextPage] 高效管理功能让您轻松掌握工业以太网
工业以太网设备除了需要具备坚固耐用的设计,使其可运作于严苛的工业环境中,还必须具备许多有用的管理及监控功能,如:自行恢复系统、隔离非授权者进入系统、触发事件的自动E-mail报警等。额外的功能还包括:可传送"Ping"指令查看网络区段的问题、可替连接设备设定IP地址、执行端口镜像以监视真实端口的运作等。 |
美国Standish集团每年进行一次基于13000 个工程项目的调查。调查报告显示按时并符合预算地完成自控工程是很困难的。根据2003年度报告,只有不到20%的项目能够按时完成,超过40%的项目超过预算。在完成的项目中,只有一半的项目符合初的设计说明。
通过对自控软件设计开发过程的分析,我们发现开发的每一个阶段都需要使用不同的工具,却没有一个产品能够应对涵盖整个开发流程。这一不能令人满意的事实正是我们产品所要提供的核心所在。
为什么只有20%的自控工程能够按时完成的一个主要原因是不可能在现场实际安装之前进行代码测试。负责自控系统设计的ControlBuild产品开发人员已经在这个领域工作了多年。之前他们使用 Spex 和Maxsim产品在自控系统设计和仿真领域取得了卓越的成就并赢得了国际声誉。这两个产品能够让用户在购买系统设备之前就进行系统的定义和校验,并对其可运转部分进行仿真。
ControlBuild产品是工控软件设计领域里个全流程解决方案。在已有出色的设计和仿真特性的基础上,集成了代码生成功能,可以直接为市场上标准的自动化系统以及开放的 IEC61131 生成代码。ControlBuild 也可以为工业控制器生成C代码。
ControlBuild设计人员把重点放到了应用模型的建模过程上,以便于能够在一个组件程序库中管理和集成所有组件。这种能力充分地利用了开发工作的成果,显著地tigao了设计的复用性,极大地降低了从一个应用到一个应用的开发成本。
目前,实现对机动车排放污染进行有效控制已成为我国环境保护一项刻不容缓的任务,需要在生产中对汽车尾气污染物进行检测。本文就一种符合EU-2标准,基于嵌入式bbbbbbsCE操作系统和组态王6.0组态软件的集工况模拟、样气采集、样气分析于一体的汽车尾气污染物智能检测系统进行介绍。
一、系统综述
整个系统由中央控制单元、底盘测功机、尾气取样单元、分析仪器单元以及相关辅助设备组成。底盘测功机模拟汽车的工况,尾气取样系统对样气进行jingque的定量采集,后由分析仪器单元对样气中的污染物浓度加以定量检测,中央控制单元实现对整个系统的自动控制。其中中央控制单元采用嵌入式系统作为核心控制单元,系统操作站为运行bbbbbbsCE嵌入式操作系统和组态王6.0嵌入版组态软件的工控机,负责发布命令给作为现场控制及命令执行元件的PLC。工控机与远程上位PC之间采用TCP/IP协议进行通讯。
精简的bbbbbbsCE嵌入式操作系统使运行于该操作系统上的嵌入版组态王6.0组态软件的执行效率很高,完全可以满足设备现场运行的需要。
1. 工作原理
系统总体示意图如图1所示。打开引擎的汽车在底盘测功机上模拟各种行驶工况,其尾气排放的污染物在鼓风机作用下经环境空气滤清器后进入尾气取样系统采样器,进行定容稀释取样(CVS)。分析仪器分别从背景气袋中、稀释排气气袋取样气进行分析,测量得出污染物的体积浓度。汽车尾气中污染物的排放值由以下公式进行计算:
mi=1/S*V*di*ci/106 (i for HC、NOx、CO)
式中:mi一排出的污染物的质量;S一行使距离;V一温度为273K,大气压力为101.33KPa的基准条件下稀释排气总容积,单位:m3;di—各种污染物在温度273K,大气压力101.33KPa时的密度;dCO=1.25kg/m3;dHC=0.619kg/m3;dNO2=2.05kg/m3(排气中NOx的浓度用NO2当量表示);ci —稀释排气中污染物的容积浓度,10-6。
2. 控制系统的工作过程
工控机通过CVS系统和分析单元的传感器获取测量数据,通过数据采集模块转换为符合RS-485规范的数字信号,传送给触摸屏,触摸屏将测量数据通过TCP/IP协议传送给PC机(上位机),完成数据处理工作。触摸屏根据采集信号的数值判断目前的工作状态,将控制指令发送给分析单元和CVS系统的PLC。分析单元的PLC主要完成对分析仪器进行一系列气路切换、量程转换的操作,CVS系统PLC主要对CVS进行流程控制,实现自动清洗、采样等一系列功能。控制指令经PLC处理后,转换为直接的继电器开闭信号,实现打开和关闭CVS系统电磁阀、取样泵的任务。配电箱还为风机提供了380V动力电的开关,可手动控制风机的启动与停止。控制系统结构框图如图2所示。
二、系统硬件组成
为了确保系统的准确性和可靠性,本文选用了工控领域中稳定可靠的bbbbbbsCE嵌入式操作系统作为工控机的控制核心。数据采集模块、PLC、继电器等元件性能稳定,采集和控制精度高,响应速度快。
1. 工控机
作为操作站的工控机基于嵌入式操作系统bbbbbbsCE和嵌入式组态软件组态王6.0(128点)开发的客户端应用程序。bbbbbbsCE嵌入式系统的优越性在于其设备管理简单高效,支持不同类别的设备,支持即插即用的管理模式和设备节能控制;处理系统的输入输出具有实时响应能力。
组态王嵌入版6.0提供了基于嵌入式操作系统的开发平台,由于组态王嵌入版6.0的稳定性较高,占用系统资源较小,组态软件本身提供大量通用设备的驱动程序,开发周期短,故选用组态王嵌入版6.0作为开发工具。
硬件选用的是ADVANTECH-研华TPC064触摸屏(嵌入式一体化工控机),其主要系统参数如下:
液晶显示器尺寸:5.7"TFT;CPU主频:ARM9266MHz;内存:64M;CF卡:64M。
触摸屏对外数据传输接口主要有四个RS232接口、两个RS485接口、一个USB接口,1个10/100M网络接口。
采用工控机的方式,可多串口输入,处理速度快、效率高,触摸屏有良好的人机对话界面,操作简便、直观,满足了检测设备实时操作和实时显示的功能。
2. PLC
本文选用SIMATICS7-200系列PLC,主模块与工控机通过RS-232串口通讯,用step7-Microwin实现软件编程。PLC作为一种专门用于工业生产过程控制的现场设备,具有可靠性高、适应性强、通讯和编程方便、结构模块化的特点。
PLC执行操作站发出的指令并进行报警处理等简单的运算。整个系统中PLC控制的硬件开关量共有24个,其中分析仪器单元有5个三通电磁阀和一个取样泵,CVS单元有7个两通电磁阀、8个三通电磁阀和三个泵。
3. 传感器与数据采集模块
系统中分析仪器单元测量浓度值经后面板的输出端子以模拟量输出,CVS单元的liuliang计量单元测量数据由传感器以模拟量输出,具体的传感器包括:
标准长径喷嘴liuliang计:BYW-S-80,4 m3/min~8 m3/min,喷管直径80mm,用于主流道恒定liuliang测量;
数字压力变送器:BYD-8,标准长径喷嘴liuliang计前端压力测量,输出信号4 mA~20mA DC,24V;
电容式压差变送器:1151DP3E22M183,标准长径喷嘴liuliang计前端、后端压力差测量,输出信号4-20mADC,24V;
防爆型数字温度变送器:BWD-8,标准长径喷嘴liuliang计后端温度测量,输出信号4 mA ~20mADC,24V,量程0~50℃;
压力变送器:CS20FUCIIIERC3Lm(3)A,用于控制样气取样袋压力并保护之,输出信号4 mA~20mA DC,供电范围15 V ~28VDC。
数据采集模块:研华16通道A/D PCL-818数据采集卡。
4. 通讯模块
系统通讯方式分为两种:串口通讯和TCP/IP协议通讯。PLC和数据采集模块与工控机之间为串口通讯;工控机与PC机之间采用TCP/IP协议进行通讯。硬件参数如下:工控机网卡:1个10/100M网络接口;PC机网卡-TP-bbbb,100M。
三、系统软件设计
本嵌入式控制系统的编程分为两部分,一是PLC软件编程,实现对工作单元的现场控制;二是操作站触摸屏的编程,触摸屏根据传感器获取的测量数据判断目前的工作状态,将控制指令发送给各单元的PLC,生成交互式的人机对话界面。
1. PLC编程
(1) 控制流程描述
分析仪器单元的PLC负责气路和量程切换的操作,CVS单元的PLC主要对CVS系统进行流程控制,实现自动清洗、自动采样等一系列功能控制。以CVS系统为例,PLC控制CVS单元排气过程,将气囊中的废气排空;控制清洗过程,进行管路清洗;后控制自动采样,将背景气体和稀释气体分别抽到两个气囊,为分析仪器的气体分析做好准备。上述过程主要包含对泵、阀开关和定时延时的控制。控制过程如图3所示。
(2)控制程序
整个控制程序我们采用程序代码编程,它较之梯形图、功能模块灵活、方便,结构紧凑。主程序模块为:
LD SM0.1 //初始化,调用子程序0
CALL SBR_0
S M2.0,4 //设置程序执行标志位
LD M0.1 //启用等待程序
A M2.0 //M2.0设为1
LPS
LD M8.1 //有复位请求
ALD
CALL SBR_I//调用子程序1
//SBR_0:
LD SM0.0
….. //初始化泵阀状态
CRET
,,SBR_I:
LD SM0.0
LD M3.0
….. //控制CVS工作流程
CRET
2. 触摸屏控制程序设计
系统中操作站我们采用触摸屏实现交互式人机对话。包括5个主要界面:系统主界面、CVS界面、分析仪器界面、报表和历史数据查询打印界面、手动界面。设计以按钮形式简便、直观地来控制PLC运行,有显示操作状态和数据、故障报警以及报表查询等功能。
四、结束语
整个系统完全满足汽车生产厂家现场监测汽车尾气污染物含量的要求。通过简单直观的人机对话界面实现复杂的操作,克服以往监测系统可靠性低、故障率高、操作复效率低等缺点,从而有效地tigao了我国汽车生产厂家生产管理水平。