西门子6GK7243-1EX01-0XE0原装代理
安全、可靠且高效率的快速联网冗余能力,确保工业系统的持续及安全。在工业自动化的领域中,每个工业设备的连接在整个工业系统中都扮演着非常重要的角色。不像一般办公室应用一样,当其中的以太网络设备连接失败时,仅可能表示PC在数分钟内无法传递资讯;但在工业应用中,联机中断却可能造成重大的经济损失。在选择工业以太网设备以满足工业应用的需求时,为了确保整体工业系统运作的流畅性,应该记住以下几个要点:
工业应用中的设备必需具备高可靠度
联机中断后需要快速的恢复功能及安全保障,确保设备的持续运作
意外状况报警功能,得知工业设备状态,防止系统受损
高效的管理功能让您轻松掌握工业以太网
工业应用中的设备必需具备高可靠度
事实上,将以太网产品应用于高标准的工业环境已成为一个新的发展趋势。为了达成工业应用中要求的可靠度,使用者的工业以太网产品至少必需具备以下几个特点:
冗余电源输入,防止单一电源失误
环状拓扑结构,提供冗余路径
内建高品质及高可靠性的零件,确保较长的平均无故障时间 (MTBF)
可应用于超标准的温度状态,如 -40°C~75°C
坚固耐用的外壳,使之远离有害物质
遵守工业规范 (CE、FCC、UL等),通过撞击、跌落及震荡等严格测试
联机中断后需要快速的恢复功能及安全保障,确保设备持续的运作
上面列举的特点,仅仅可满足工业应用中的基本需求;当考虑到工业数据传输问题时,可靠性不仅指拥有坚固的外壳及良好的耐温能力,还包含联机中断后的恢复功能。在办公室环境中,3分钟的联机失败可能仅造成些轻微的不便;但在工业环境中,同样3分钟的联机失败,将可能造成庞大的经济损失。自行恢复网络将可提供持续的网络联机:
自我恢复网络系统,以避免随时发生的联机中断
当设备在交换机的接口进行改变时,可快速进行线路切换,使网络设备保持联机
当工业以太网设备运用于自动化系统时,其大多作为连接设备,而非计算机主机。但由于整个自动化系统结合多项设备,为了防止非授权的存取,拥有某些系统授权使用的数据存取是相当必要的。
针对设备的使用群体进行隔离,以防止非授权的存取
[NextPage]
动态状况报警功能,来得知工业设备状态,防止系统受损
工业以太网联网设备具有提供系统维护者实时警告讯息的职责。当控制工程师离开控制房时,他们同样需要在意外事件发生的被及时告知设备的状态;警告讯息必须根据事件的触发而主动传送。基于这些需求,工业联网设备必须具备以下的要求:
意外事件发生时立即发送警报 ( 如:通过E-mail)
提供讯号输出(如:数字输出、继电器输出)提醒现场工程人员
[NextPage]
高效管理功能让您轻松掌握工业以太网
通过传送"Ping"指令来确认网络区段的完整性
从远程分析现场网络状态
分配连接设备的IP地址
设立镜像端口,以提供更佳的线上资料监控
简单的网络管理协议 (SNMP) 轻松支持网络分析
[NextPage]
OPC服务器让您轻松整合自动化系统
工业以太网设备除了需要具备坚固耐用的设计,使其可运作于严苛的工业环境中,还必须具备许多有用的管理及监控功能,如:自行恢复系统、隔离非授权者进入系统、触发事件的自动E-mail报警等。额外的功能还包括:可传送"Ping"指令查看网络区段的问题、可替连接设备设定IP地址、执行端口镜像以监视真实端口的运作等。
本文分析了现有构件化嵌入式操作系统所用调度算法存在的缺点,提出抢占阈值调度算法是更为合适的算法。通过仿真实验比较抢占阈值调度算法、非抢占式调度算法和FIFO(First-In-First-Out)调度算法的性能,证明了上述结论。通过分析现有嵌入式系统构件模型的特点,提出了一种构件模型以及将构件映射成任务的方式,还提出了一种设计方法。整个方案能提高构件化嵌入式操作系统的性能。
关键词:构件化嵌入式操作系统; 抢占阈值调度; 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调度方式相比,能提高任务集合的可调度性,但仍会出现任务集合不可调度的情况。
2.2 抢占阈值调度算法适合构件化嵌入式操作系统
利用抢占阈值进行任务调度时,不但给集合G中的任务ti分配任务优先级piÎ[1,2,…,n],还分配抢占阈值gi,并且pi£gi,即,giÎ[pi,…,n]。这样就实现了一个双优先级系统。其中的pi用于抢占其它的任务,而gi是任务运行中的有效优先级。如果当前正在运行的任务是ti,那么对于就绪任务tj,必须有pj>gi,tj才能抢占ti。对于周期任务ti,每次开始执行后,其优先级将从pi提升为gi,执行完后,优先级再从gi下降为pi。
当任务的抢占阈值等于其任务优先级时,就是抢占式调度;当任务的抢占阈值是系统高优先级时,就是非抢占式调度。抢占调度和非抢占调度是使用抢占阈值调度模型的两个特例。实际中,抢占阈值调度能利用抢占式调度和非抢占式调度的优点,通过调节任务抢占阈值,减少不必要的任务抢占,提高整个任务集合的可调度性。能运行抢占和非抢占式调度算法都不能调度的任务集合[2]。在文献[3]描述的仿真环境下,抢占阈值调度算法与抢占式调度算法相比,处理器利用率提高15%-20%。抢占阈值调度模型中,任务集合被分割成数目很少的非抢占组(Non-PreemptiveGroup,简称NPG)。组内任务之间是非抢占的,能共享一个栈空间,减少了任务集合对内存资源的消耗。在文献[4]的仿真环境下,当任务大周期为100时,平均100个任务被分割成14.3个NPG。
在构件化嵌入式操作系统的应用环境中,希望能在提高任务集合可调度性的使用尽可能少的内存资源。根据这一要求,本文提出了在实时调度内核中使用抢占阈值调度算法。为了说明该算法较其它调度算法更适于构件化嵌入式操作系统,提出了如下的指标,以比较各种算法的性能:非抢占式调度中,所有任务共享一个线程栈空间,节省了内存资源。对于抢占阈值调度,如果任务集合生成一个非抢占组,则会使用与非抢占式调度相同的内存资源。为此,在每个测试点,针对相同一组随机产生的任务集合,比较抢占阈值调度生成一个非抢占组的次数除以整个产生的任务集合个数(用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值略低于后者。在此指标下,抢占阈值调度具有与非抢占式调度接近的性能。但抢占阈值调度能提高任务集合的可调度性。抢占阈值调度能在提高任务集合可调度性的使用较少的内存资源。与其它两种调度算法相比,更适合作为构件化嵌入式操作系统的实时调度算法
[NextPage]
图1比较3种算法得到的OTR值
3 构件模型和映射成任务的方式
一般基于构件的软件开发中,使用已生成并被证明是可靠的构件来”建造”整个系统软件。这需要一个定义构件的方法,即,构件模型。研究和实践证明,构件模型必须有信息隐藏的能力和明确定义的接口。前者使构件能在不同的系统中替换和重用,而后者是构件与环境交互的通道。外界只能通过接口访问构件,这也是对信息隐藏的辅助支持。对于实时系统来说,构架模型还应包含时间属性,例如:构件执行时间、终截止期和周期等,从而能在构造完系统后,进行可调度性分析。通常的实时软件开发中,任务是构造系统的基本单元,模型还应定义将构件映射成任务的方式。与桌面/企业级应用不同,开发嵌入式系统适合用源代码级构件。因为:(1)开发者可以访问构件源码(不是修改构件),通过”白盒”测试来发现错误。而使用二进制代码构件进行”黑盒”测试,将减弱开发者对系统行为的控制能力。(2)嵌入式系统是在资源有限的节点上运行复杂可靠的控制应用,不需动态配置,只需在一组静态配置的模式间切换。为了更好地支持系统的可分析性、可测试性和减少内存消耗,应该在运行前(编译时)配置构件的行为和相互之间的连接。这也需要使用源代码级构件。
因为管道和过滤模型[7]适于控制应用,而大部分嵌入式系统是控制系统。我们基于管道和过滤模型为构件化嵌入式操作系统的应用层定义一种实时构件模型。该构件模型是源代码级的,每个构件包括:(1)名称,作为构件的身份标识。(2)一组输入和输出端口,前者用于接收数据,后者用于产生数据,端口不会缓存数据,构件之间通过端口通信。(3)一组构件属性,存储构件的元数据信息,包括构件所用内存大小、执行时间、终截至期、释放时间和周期等。(4)一个行为体,实现构件功能,
[NextPage]
被输入端口数据(事件)触发,根据当前操作模式处理数据,并产生触发下一构件的输出数据(事件)。通信数据在构件之间传递,由底层调度内核通过对行为体的逻辑调用来引导。
当前存在将多个构件映射成一个任务[8]和将一个构件映射成多个任务[9]的方式,我们考虑这些映射方式的目的都是希望能在简化结构分析和减少运行时系统开销之间获得一个适当的折中。将一个构件映射成一个任务能简化结构分析,但可能造成系统运行时任务较多,如果底层实时操作系统采用抢占式调度算法,则会增加任务之间相互抢占的次数,从而增加现场切换等系统开销,降低处理器的利用率,影响任务集合的可调度性。还会增加对系统内存的消耗。我们提出了一种设计方法:构件是被动的,不包含自己的线程,装配时才将构件分配到线程,每个构件映射成一个任务,这使系统结构清晰,并能简化分析过程;而系统运行时出现的上述问题,通过为底层构件化嵌入式实时操作系统选择合适的调度模型来解决,例如选择非抢占式调度算法能减少内存消耗,而选择抢占阈值调度算法既能提高任务集合的可调度性,又能减少对系统内存的使用。
映射完成后,构件属性就成为任务的属性。执行期间,系统保证输入端口上的数据不会改变,以避免数据的不一致。对于相互连接的构件,利用编译程序创建系统任务,以完成构件之间的数据通信,并根据互连构件的特性指定这些任务的释放时间、周期、执行时间和终截止期等参数。图2给出了构件模型的示例图。图2的右侧表示了任务(构件)执行体包含的程序结构。
图2 构件模型示例图
4
嵌入式系统开发使用构件技术时,不但要从结构的角度将系统分解成若干构件;还要从运行的角度将构件映射成任务,为底层内核选择适当的实时调度算法,根据算法给任务分配优先级,并判定任务集合的可调度性。当前对后者研究较少。针对这一问题,本文通过比较3种调度算法,得出抢占阈值调度更适合构件化嵌入式操作系统的结论。仿真实验证明了这一观点。根据已有工程实践,提出一种适合于嵌入式实时系统的软件构件模型以及将构件映射成任务的方式。本文论述的模型和算法构成了一个较完整的方案,对构件化嵌入式实时系统的开发有一定参考价值。
矿井提升机是煤炭生产过程中大型关键设备,素有“矿山咽喉”之称。新版煤炭安全规程提出了提升机双线控制的要求。现阶段提升机的电控系统大都采用可编程序控制器(PLC)作为控制系统的核心。由于PLC功能完备、组合灵活、编程方便,稳定可靠,受到广泛欢迎并得以普遍应用。但在实际应用中单依靠PLC的人机对话方式显得较为单一,只利用拨码开关或手持编程器进行工艺参数及数据的设定,很难完成工控流程的实时控制和显示,给操作者带来不便。为解决这一矛盾,我们选用当今世界流行的先进人机对话设备—触摸屏作为新型的人机对话接口。实践证明,利用这种典型的人机界面,不仅可以替代传统的控制面板和键盘操作,它与PLC结合可以方便地修改控制参数及实时显示数据,并能以动画及曲线的方式描绘自动控制过程,拓展了PLC的功能应用。
本文以无锡光洋(KOYO)公司的GC系列触摸屏在PLC双线控制系统中的应用,对触摸屏的人机对话方式进行讨论。
2、系统的工作过程及硬件构成
本系统选用无锡光洋(KOYO)公司的产品,主控选用SM-24R型PLC,用TRK-J1000型旋转编码器发出的脉冲信号作为主控输入,以GC-53LC2型触摸屏实现人机交互界面。系统框图如图1所示。
图1 系统框图
图2 触摸屏与PLC的接线图
安装于提升机滚筒轴端的TRD-J1000型旋转编码器将提升容器的行程转化为脉冲信号送入PLC的高速计数模块,PLC对脉冲处理后,用于实时监测提升容器在井筒中的行程及速度,并根据需要对提升容器进行行程控制和速度保护。用专用电缆把PLC和GC连接起来(连接图如图2),GC就可以实时地显示提升容器在井筒中的运行情况,包括运行速度和行程,也可以显示提升容器的速度曲线图。
3、触摸屏界面设计
GC触摸屏的界面编辑软件SCREEN CREATOR 5,提供了多种部品、控件和图形库文件,可组态出各种显示和控制功能,实现系统操作状态、当前过程值及故障的可视化。利用人机界面操作被监控系统,对PLC中的实时数据进行显示、记录,也可以设计动态画面来模拟控制过程,从而满足监控要求。软件还可以为操作人员设定操作密码,对一些重要参数的修改设定访问权限,从而保证系统和生产的安全。触摸屏界面的设计包括创建画面和信息,并将它们与PLC程序相连。
具体可概括为以下三个步骤:
(1)界面的整体规划
在充分了解工控过程的基础上,对本系统的触摸屏界面作一个整体规划。界面图如图3所示。①在主画面(也是系统的默认画面)上进行总界面设计,通过触摸按钮可分别切换到运行画面和调试画面;②根据不同需要,运行画面的设计可以以动画的形式监控提升容器(本系统中是罐笼),也可以以曲线的形式显示提升容器的速度,在这两个画面下提升容器的速度和提升容器在井筒中的位置都以数字的形式实时地显示出来;③现场要求调试时有两种情况,模拟运行调试和故障低速调试。模拟运行调试用来检测各保护点的位置是否合理,而故障低速调试是在系统出现故障时低速运行来检查并排除故障,或是某些特殊情况(如运送炸药等),本身就需要低速运行;④本系统中的各保护点(如上、下减速点,上、下过卷值等)需要在实践中不断地修改,在调试画面中增加了参数设置画面。而这些参数又关系到一线的生产、生命安全问题,不能随便更改,我们在进入参数修改画面时设置了密码画面,只有输入正确的密码后才能修改参数,增加了系统的安全可靠性。
图3 触摸屏画面切换示意图
(2)设定变量
变量在触摸屏的部品、控件(输入/输出区域、指示灯等)与PLC的相应I/O接点及存储单元之间建立联系,实现触摸屏敏感部件对PLC的控制及参数的输入、PLC当前过程值及报警信号向触摸屏的输出。设置后的部分变量如表1:
表1 变量设定表
(3)具体画面的制作及显示
① 数据的设定和显示
在参数需要实时修改的情况下,传统上都是借助手持编程器来将数据写到PLC的寄存器中,给操作人员带来一定的不便。利用触摸屏,直接触摸要修改的数据可以弹出一个小数字键盘,这样就可以方便地修改数据并保存到PLC的寄存器中。其界面如图4A所示,当触摸“上过卷值”时,会弹出如图4B中所示的小数字键盘,用数字键盘可以很方便地修改上过卷值。
图4 修改数据界面图
本系统中提升容器的速度值和位置需要实时显示。传统上用数码管显示,不但不直观,还易使操作者产生视疲劳。而利用触摸屏,只要把相应的PLC数据寄存器号写入“显示部品”的属性框中,触摸屏就可以按扫描周期实时显示,效果柔和,降低了视疲劳,辅以动画直观显示,大大降低了工人的劳动强度。
② 报警及故障画面的显示
提升机控制系统中,在提升容器减速时要提醒操作者,而超速时要报警以便操作者及时限速。类似于这种需要提醒或报警的情况很多,这就要求控制系统尽可能多地指出故障或报警点,我们将能够预想到的大量的故障和报警画面储存在报警菜单中。若遇到提升机异常,触摸屏能迅速地调出与之对应的故障内容并显示在触摸屏上,便于维修人员发现故障类型,及时排除故障。
图5 报警界面图
报警画面如图5所示,从速度图显示画面上弹出的报警窗口中可以看出,报警产生的原因是提升机(即绞车)速度超限。操作者可根据提示来排除故障。
4、K-basic编程功能
GC系列触摸屏的画面编辑软件SCREEN CREATOR 5提供了K-basic程序语言。当你用手指触摸屏幕的时候,你希望某部品显示数值、字符、或使某个开关动作时,你需要使用K-basic语言编制程序。SCREENCREATOR5软件自带了一个部品库,把常用的部品如开关、指示灯、数据显示器、按钮等放到部品库里。我们选用部品库里的部品是不需要自己编写K-basic程序的,SCREENCREATOR 5软件自带了它们的K-basic控制程序,我们只需设置这些部品的属性就可以使用它们了。可是,对于现场所需要的一些特殊部品(如本系统中的提升容器—罐笼),部品库里往往是没有的,这时我们就得制作这些部品,并用K-basic语言编制它们的控制程序,以实现现场控制的要求。使用K-basic语言可以方便地编写动画显示的控制程序。以下是本系统中的一个动画画面(图6)以及用K-basic语言编制的部分控制程序。
图6 罐笼显示图
declare BcdBinConvert%(mode%,data%)
init
local type%,id@,data%
static now_data%
static timeid@
flag%=0
cyclic [局号]~[寄存器号]
cyclic [局号]~[连接设备名称]
end init
conf
end conf
evnt
bbbbb type%,id@,data%
now_data% = BcdBinConvert%([BIN:1,signedBIN:2,BCD:3],data%)
if type%=16 and id@=[局号]~[寄存器号] and now_data%=0then
open .yx00.,0
close .yx01.
close .yx02.
close .yx03.
close .yx04.
close .yx05.
close .yx06.
else if type%=16 and id@=[局号]~[寄存器号] and now_data%=1then
open .yx01.,0
timeid@ = opentim()
settim timeid@,1,0
starttim timeid@
close .yx00.
close .yx02.
close .yx03.
close .yx04.
close .yx05.
close .yx06.
stoptim timeid@
closetim timeid@
else if type%=16 and id@=[局号]~[寄存器号] and now_data%=2then
open .yx02.,0
timeid@ = opentim()
settim timeid@,1,0
starttim timeid@
close .yx00.
close .yx01.
close .yx03.
close .yx04.
close .yx05.
close .yx06.
stoptim timeid@
closetim timeid@
end if
end evnt
5、结束语
触摸屏在可编程序控制器(PLC)控制系统中的应用,不但简化了现场操作,提高了控制程序和人机交互界面的灵活性。通过屏幕完成功能操作,改变程序就可以进行触摸键的添加及功能扩展,克服了以往加一个开关就要破坏整个控制面板格局的窘境,使控制变得更加灵活。设计者可以各显其能,充分利用触摸屏的软件资源,自由设计动画界面以更贴实际地模拟现场操作。使之真正成为现代化矿井提升系统中的一个亮点。该控制系统已成功应用于新汶矿业集团孙村煤矿的立井提升系统中,得到了现场操作者的认可和好评。