发电厂控制器设备映射区驱动级调度操作系统设计与实现
2022-05-18张强,高升,郭荣,汪勇
张 强, 高 升, 郭 荣, 汪 勇
(上海发电设备成套设计研究院有限责任公司,上海 200240)
随着全球电力市场的发展,电厂需要更高的可靠性、灵活性和可维护性以及更低的度电成本,电厂智慧化、实现高等级具有自主认知的智能化系统是应对市场挑战的重要关注方向。
现代计算机操作系统是所有智能化系统实现的基础,是高端装备领域的关键“卡脖子”技术,作为电厂分散控制系统底层最基础的计算机软件,具有快速可靠吞吐能力的智能操作系统极其重要,是整个智慧能源产业链和创新链的“中枢”,采用操作系统理念进行电厂智慧化项目的设计、部署与实施,支撑发电领域的数字化转型升级,蕴含巨大的商业价值。
Chmiel等[1]提出了具有 Cortex M3 内核的 MCS-51、AVR 和 ARM 等典型微控制器开发的可编程逻辑控制器的架构方案,嵌入式操作系统调度 CPU 运行建立了符合 IEC-61131-3 标准建议的指令列表(IL) 语言开发控制环境。Patel 等[2]针对物联网异构智能设备和传感器的连接,考虑内存、计算和能量方面的约束环境,对不同的操作系统进行深入选型分析,从开发人员的角度分析和讨论了编程语言和应用领域的关键偏好水平,以提供进一步的研究方向。Wang等[3]采用龙芯3A3000处理器搭建开放式运动控制器。龙芯系列处理器是中国科学院计算技术研究所研制的国产通用处理器,其采用MIPS指令系统,控制器的通信模块采用EtherCAT实时以太网,具有效率高、拓扑灵活、刷新周期短等特点,为我国基于国产CPU龙芯的开放式运动控制器自主创新提供了典型案例。
当前针对电厂分散控制系统(DCS)的研究,一方面侧重上述底层实时计算机操作系统如何调度核心板卡上的CPU、存储器、内外部IO和总线等电子器件,以满足工业现场的高可靠性、安全性、响应能力和智能化的要求;另一方面的研究则扩展到了以分散控制系统控制器为依托的智慧电厂技术路线、框架、架构、概念与特征等[4],也有提出智慧能源及其操作系统的理念,智慧电厂或智慧能源的顶层设计逐渐完善[5-6],但以控制器设备映射区驱动级智能调度为操作对象的研究还较少,而是按照设定顺序进行设备启停、备用,造成电厂数字化项目的智慧化程度提升有限。欧美地区许多业主和设计院对控制环境下通过调度设备映射驱动级来进行现场设备控制的要求已成体系化、模式化,而我国发电厂的大多数智能化项目仅在III区部署实施,尚未形成有效控制闭环,对设备调度算法上升为操作系统理论和实践的研究更是鲜有报道。
笔者不针对控制器内部直接调度嵌入式计算机硬件的Linux-RT、Vxworks等实时操作系统,而是以IEC61131-3标准控制系统组态环境上层映射区内现场设备驱动级作为可调度资源,采用进程调度、队列循环等算法构造电厂设备映射区驱动级智能调度操作系统,并在海外2个控制要求较苛刻的项目现场进行了组态实施,取得了不错的应用效果。
1 系统与模型
计算机是一个复杂系统,由一个或多个处理器、内存、磁盘、键盘、鼠标、显示器、打印机、网络接口以及各种其他I/O设备组成[7-8]。计算机操作系统可以管理这些部件并加以优化使用。在概念上,一台计算机可以抽象为图1(a)中的模型,CPU、内存、以及I/O设备都由一条总线连接起来并通过总线与其他设备通信,操作系统实现了资源优化调度。
(a) 计算机概念模型
电厂系统由多个DCS控制器、锅炉、汽轮机、发电机、阀门、泵和风机等复杂设备组成。为了管理这些设备,从概念上来说,电厂或能源场站的一些管道或资源共享场景也可以抽象为图1(b)的模型,沿用计算机操作系统相关手段和方案进行如下自动化操作:
(1) 互斥模型操作系统。如果设备间对资源的占用处于互斥状态,可以采用操作系统进程调度的概念实现并列设备多任务的高度自动化调度。
(2) 非互斥模型操作系统。如果设备之间的关系是非互斥且互为备用,共享管道资源,可以通过操作系统循环队列算法模型,实现电厂设备资源的优化调度,充分挖掘和利用设备集群的备用潜力,有助于提高发电厂智慧化和状态检修水平。
1.1 状态进程调度模型
现代操作系统的核心概念是进程,操作系统的基本功能是创建、管理和终止进程,也就是说操作系统的所有工作都围绕进程展开。当进程处于活跃状态时,操作系统必须设法使每个进程都分配到处理器执行实践,并协调进程活动,管理有冲突的请求,给进程分配系统资源。
要执行进程管理功能,操作系统必须维护每个进程的描述,包括执行进程的地址空间和一个进程控制块。进程控制块含有操作系统管理进程需要的全部信息,包括进程的当前状态、分配给进程的资源、优先级和其他相关数据。
在整个生命周期内,进程总是在以下5种状态之间转换:
(1) 运行态,表示进程正在执行,如果计算机有一个处理器,那么一次最多只有一个进程处于该状态。
(2) 就绪态,表示进程做好了准备,只要有机会就开始执行。
(3) 阻塞/等待态,进程在某些事件发生前不能执行,如I/O操作完成。
(4) 新建态,表示刚刚创建的进程。
(5) 退出态,表示操作系统从可执行进程组释放出的进程。
1.2 双向循环队列模型
为了方便进程的调度,操作系统把所有可运行的进程(包括就绪态和运行态的进程)组织成一个可运行进程队列,操作系统通过当前游标指针来区别就绪态和运行态。例如当操作系统内核要寻找一个在处理器上运行的新进程时,必须只考虑处于可运行状态的进程,需要引入可运行状态进程的双向循环链表结构,也就是操作系统的运行队列表,从双向循环链表中任意一个点开始,都可以访问其前驱结点和后继结点,方便了队列元素的增加、删除等操作。
2 操作系统设计
为了证明计算机操作系统进程、队列等调度算法在电厂智能化项目的可行性和适用性,笔者分别选取了电厂循环流化床(CFB)锅炉飞灰岛和原水站作为典型设备映射区调度操作系统实时自动控制的应用场景,区别于嵌入式计算机硬件上运行的实时操作系统,该映射区调度操作系统的运行环境如图2所示。
图2 设备映射区驱动级操作系统与实时操作系统的区别与联系
2.1 互斥设备驱动级操作系统设计
以电厂CFB锅炉飞灰岛仓泵组作为调度对象,开发互斥设备驱动级操作系统。CFB锅炉运行过程中会产生大量飞灰,其飞灰含碳量高是最常见的问题,目前大多数CFB锅炉的飞灰含碳量在10%~20%,少数CFB锅炉高达30%以上,这极大地降低了CFB锅炉的燃烧效率[9-10]。
2.1.1 CFB锅炉飞灰岛配置
飞灰输送系统由仓泵、飞灰仓、再循环灰仓、飞灰流切换阀门及其管道构成,如图3所示。
11、21、31、41—各仓泵进料阀;12、22、32、42—各仓泵排气阀;13、23、33、43—各仓泵加压阀;14、24、34、44—各仓泵出料阀;51—电除尘1号电场助吹阀;52—电除尘2号、3号、4号电场仓泵所共用的助吹阀;61、62—管道切换阀。
飞灰输送系统主要是将电除尘捕获的飞灰通过仓泵输送至外界飞灰仓,或者通过仓泵输送至再循环灰仓返回锅炉继续燃烧:电除尘1号电场仓泵既可以将1号电场捕获的飞灰(70%)排放至飞灰仓,又可以输送到再循环灰仓,飞灰流向由切换阀61、62来实现,飞灰返回锅炉继续燃烧使飞灰中未燃尽成分继续燃烧,提高了锅炉燃烧效率,有利于节能减排;电除尘2号~4号电场仓泵分别负责将对应电场捕获的飞灰排放至外界飞灰仓。
2.1.2 互斥设备驱动级操作系统方案
为了实现对CFB锅炉飞灰输送系统的全程自动控制,如图4所示,采用操作层、调度层、任务层和I/O层4层体系架构,构建CFB锅炉飞灰岛多模式多任务互斥设备驱动级操作系统。
图4 系统设计框图
操作层主要是对用户操作的响应。根据管道复用情况,系统在该层提供“1/3”和“0/4” 2种输送模式,前者模式(61关闭且62打开,“1/3”)下1号电场仓泵负责将部分未燃尽飞灰送回再循环飞灰仓进入锅炉再次燃烧,另外3台仓泵复用一条管道将飞灰输送到外界飞灰仓;后者模式(61打开且62关闭,“0/4”)下4台仓泵复用一条管道将飞灰输送到外部飞灰仓。用户可以在2种模式之间任意选择和切换,具体的调度和控制由下面的层来完成。
调度层采用多模式多任务的调度方法,实现了仓泵的优化调度以及飞灰流模式间的无扰动切换。本内核可以分为任务调度和模式调度两部分。在管道空闲的时刻,基于不同飞灰输送模式,任务调度从缓冲队列中调出最长等待时间的任务,考虑到计算机计时精度的影响,若队列中最长等待任务有多个(任务启动时,所有等待时间均为0时刻),就会导致抢占发生死锁,为了解除死锁,对最长等待任务根据任务量大小分配静态优先权,任务量重的先被赋予管道许可证进行飞灰输送,该输送完成后再调入下一个符合上述条件的任务进行输送。为了响应来自操作层的模式切换命令,该层提供模式调度:首先将任务调度休眠,然后等待所有仓泵都交出管道占用的时刻,对仓泵模式进行切换,这样就保证了切换的无扰动,切换完成后唤醒任务调度。
任务层主要是依照调度层发送的调度许可执行任务,按照图5(a)所示操作系统状态进程模型进行任务调度,实现仓泵从装料到输送的整个工艺过程。单台仓泵启动时,任务即被创建,可以将其划分为输送态(C)、装料态(Z)和就绪态(R)3种状态,单台仓泵退出时,任务经过调度进入退出态,飞灰岛仓泵状态调度模型状态转换如图5(b)所示。
(a) 计算机操作系统状态调度模型
I/O层是最底层的资源,主要负责将上层指令输出到现场设备,并负责将现场压力及其料位信号采集到控制系统,供上层调用。
2.2 非互斥设备驱动级操作系统设计
以电厂原水站泵组作为调度对象,开发非互斥设备驱动级操作系统。
2.2.1 电厂原水站工艺
电厂原水站系统由多台水泵构成,配置图如图6所示,水泵之间是非互斥关系,可以并列多台水泵运行,维持原水池的水位以满足电厂用水需求。
图6 电厂原水站系统配置图
传统的泵组控制系统中,仅设置水位、其他水泵故障停运等条件连锁设备启停,容易因部分水泵工作时间过长,磨损折旧较快,导致故障率较高。同时,一部分水泵长期停运,其寿命也会大大降低。
2.2.2 非互斥设备驱动级操作系统设计方案
针对电厂原水站泵组运行机制,提出一种多通道变时长时间片轮转调度的运行队列算法,构造非互斥设备映射区驱动级调度操作系统,主要通过冗余的DCS控制器、I/O卡件,人机操作单元、超声波水位计及其相对应的变送器等仪控部件对泵组设备进行有效调度控制[11]。
非互斥设备的队列跳转方案设计步骤如下:
步骤1,控制器对采集的3个水位测量值进行容错逻辑判断。
步骤2,当前取水位测量通道有效量程的固定区间[H1,HN],按照水泵的台数(取N)离散成H1,H2,…,HN共N个控制点。依据当前水位测量值确定投运水泵需求台数ZN。
步骤3,水泵运行/停运时间比较。对比水泵运行时间的实时累计情况,得到运行水泵中运行时间最长的水泵K,对比水泵停运时间的实时累计情况,得到停运水泵中停运时间最长的水泵J,(若2台水泵停运/运行时间相同且最大,选择序号小的泵)。
步骤4,统计当前水泵运行台数ZR,水泵偏差台数Δ=ZN-ZR,其中ZN为当前水位的投运水泵需求台数。若Δ=0,则执行步骤5;若Δ>0,则选择停运时间最长的水泵J投入运行,水泵J停运时间清零,运行时间开始累计,返回步骤1;若Δ<0,则运行时间最长的水泵K停止运行,水泵K运行时间清零,停运时间开始累计,返回步骤1。
步骤5,如图7所示,如果运行泵在达到操作员设定的运行时间后自动停运,返回步骤1进行周期刷新;如果运行泵故障跳闸,返回步骤1进行周期刷新,同步退出运行和停运队列进行设备检修,检修完成并经过操作员确认,重新进入停运队列。
图7 非互斥设备的队列跳转方案设计
3 操作系统建立
本操作系统算法能够适配所有满足IEC61131-3标准控制环境且以固定周期扫描方式运行的可编程控制器设备,不同的是国内一些自主研发的控制器底层模块偏简单,算法实现的工作量较大,而国外一些控制器厂商采用更开放的算法策略,底层模块功能丰富,技术更新较快,更能适应工业现场智能化程度不断提升的要求,因此在操作系统的实现上更为简化便捷。
笔者采用国产OC4000控制系统构建了飞灰岛互斥设备多模式多任务操作系统,并基于美国艾默生OVATION控制平台,采用队列算法实现了泵组非互斥设备操作系统。
3.1 互斥设备多模式多任务操作系统
系统操作层主要借助上位计算机来实现系统的人机交互;I/O层主要使用输入、输出板卡来实现系统与就地设备的信号传递与处理;系统调度层和任务层均在控制器内实现,关键是多模式多任务调度。
3.1.1 任务调度主要实现步骤
根据图8的系统设计图,任务调度层主要有以下实现步骤:
图8 系统设计框图
步骤1,系统就绪。通过I/O层读取仓泵的压力/料位信息,并作初始化判断,系统只有在气源压力合适的情况下才能进行下面的任务创建。
步骤2,系统初始化,ri=ci=zi=wi=0(i=1,2,3,4)。其中ri、ci、zi分别表示第i台仓泵的就绪态、输送态和装料态,如果仓泵处于相应的状态,则该布尔量为1,否则为0;wi表示任务在缓冲池的等待时间。
步骤3,任务创建。通过操作层响应用户指令信息,用户启动一台仓泵相当于在系统中创建了一个任务。
步骤4,任务缓冲队列等待输送。任务创建或装料完成便进入就绪态,wi记录了任务在缓冲池的等待时间。若系统处于1/3调度模式,则电除尘1号电场仓泵不需要任何等待,所以被清除出等待队列。系统缓冲池等待向量可表示为W=((1-k)w1w2w3w4),若系统处于1/3调度模式,则k=1;若系统处于0/4调度模式,则k=0。
步骤6,最大值向量计算。M=F(W),其中M=(m1,m2,m3,m4),F记作wi是否为W最大值的标记函数,若wi是W的最大值,则mi标记为1,否则为0。
步骤7,死锁判断。考虑到计算机的计时精度,W向量中有可能出现2个最大值,这时就会发生资源抢占并产生死锁。若(M∧B)(M∧B)T=1,则说明没有发生死锁,给向量赋值为N=M;若(M∧B)(M∧B)T>1,则说明发生死锁,然后进入死锁解除程序,根据任务的静态优先权判断静态优先权高的优先获得资源:
N=N1+N2
(1)
其中,
N1=F(M×Pr)
N2=F(M×Pr-(pr10 0 0))
pr1>pr2>pr3>pr4
步骤8,判断系统是否被休眠并进行许可证向量输出。判断系统休眠信号s的状态,s=1为休眠指令,而s=0为唤醒指令,根据休眠指令得到最终的管道许可证向量P:
(2)
(3)
任务调度系统通过该向量的赋值操作向符合条件的任务颁发许可,若pi=1则i电场仓泵满足条件获得许可。获得许可的任务立刻进入输送状态,与此同时任务调度系统在发送完许可证之后,立刻返回步骤4循环执行。
3.1.2 模式调度实现步骤
根据图4系统,模式调度层主要实现步骤如下:
步骤1,接收来自操作层的模式调度指令。
步骤2,向任务调度步骤8发送休眠指令s=1。
步骤3,若所有仓泵都不在输送状态,则通过切换阀门61、62进行模式切换。
步骤4,模式切换完成后,向任务调度步骤8发送唤醒指令s=0结束模式调度。
3.1.3 仓泵任务实现步骤
在接收到操作层的仓泵投入指令后,系统就为该仓泵创建了一个任务,该任务被划分为就绪态、输送态和装料态3种状态,3种状态循环转化实现了任务的整个执行过程。
过程1,任务创建或装料完成进入就绪态,获取任务调度步骤8的调度许可后,就进入输送态。
过程2,输送态可以细分为4个子步骤:(1)加压阀将仓泵加到一定压力;(2)开助吹阀;(3)开出料阀;(4)压力降至阈值之下,关出料阀结束输送态。
过程3,若输送态结束,检测是否有来自操作层的退出指令,若有退出指令存在(Qi=1),则结束任务并复位退出指令,否则(Qi=0)进入装料态,装料完毕返回重新执行过程1。装料态也可以细分为2个子步骤:(1)开排气阀,延时开进料阀;(2)关进料阀,延时关排气阀。
3.1.4 实施效果
基于上述实现思路,如图9所示,通过在国产分散控制系统平台上实施工程组态,基于IEC61131-3标准控制环境,直接操作现场设备映射区的仓泵驱动级,实现了多模式多任务无扰切换的操作系统调度的微内核和人机交互界面。
图9 飞灰岛操作系统人机交互界面
用户在切换输送方式(ONLINE BUMPLESS SWITCH)时,实现了0/4调度模式和1/3调度模式的无扰动切换,不会造成切换过程中产生管道紊流进而导致管道堵塞,在任意输送方式下实现飞灰仓泵并发任务的流水线执行,有效避免了由于同时占用管道输灰造成的管道堵塞,延长了有效输送距离。用户只要在操作层发出指令即可,调度层自动响应用户需求,用户不用等待,系统自动完成此无扰切换操作。为了防止音叉料位计失效,造成物料无法及时输送的风险,设置强制的最大物料给定时间(MAX FEED TIME SET),仓泵装料超过这个时间后,自动关闭进料阀,进入就绪态,等待管道调度空闲再进行输送。
另外,用户只要将仓泵启动,投入再循环灰仓料位联锁,整个飞灰输送系统的仓泵调度完全由这个操作系统掌控,即完全实现整个飞灰输送的全程自动,减少了操作人员的监盘工作量,提高了飞灰岛的自动化水平。
3.2 非互斥设备双队列循环操作系统
电厂水泵这类非互斥运行设备数量非常庞大,常用的备用联锁方案需要运行人员手动操作,无法实现无人值守。对于这类通用设备,采用笔者所构建的非互斥设备双队列模型操作系统进行设备级的控制调度,大大减轻了运行人员的操作强度。
3.2.1 系统实现举例
某电厂原水站系统如图6所示,潜水泵的数量为10台,原水池高度为6 m。若此时3个水位测量值分别为5.082 m、5.085 m和5.088 m,运行队列的3台水泵分别是1.1、1.2和1.3,其余水泵均在停运队列。10台水泵的停运时间统计向量TJ、运行时间统计向量TK以及操作员对每台水泵的运行时间设定向量TS(单位h)分别为:TJ=[0,0,0,4,5,6,7,8,9,10],TK=[1,2,3,0,0,0,0,0,0,0],TS=[5,5,5,6,6,6,6,6,6,6],采用双队列循环算法对该非互斥设备进行控制的实现。
步骤1,对进入控制器的3个水位测量值5.082 m,5.085 m,5.088 m进行综合判断,有一个值5.085 m自检品质坏,则H取另外2个自检品质好的值的平均数5.085 m。
步骤2,依据当前水位测量值得到投运水泵需求台数ZN。取水位测量通道有效量程的固定区间[H1,HN],按照水泵的台数离散成10个离散点,如果水位测量值H
步骤3,利用控制器固定的周期扫描对水泵运行时间进行实时累计统计,排序比较,依次压入运行队列,得到运行时间最长的水泵为1.3泵;同理,对水泵停运时间进行实时累计统计,排序比较,依次压入停运队列中,得到停运时间最长的水泵为1.10泵。
步骤4,统计当前水泵运行台数ZR,水泵偏差台数Δ=4-3。Δ>0,则选择停运水泵中停运时间最长的水泵1.10投入运行,1.10泵停运时间清零,运行时间开始累计,返回步骤1重新计算Δ。
步骤5,若运行水泵1.3在达到操作员设定的5 h运行时间后自动停运,返回步骤1重新计算Δ;若运行泵故障跳闸,也返回步骤1重新计算Δ,并安排维修,完成后重新进入队列。
3.2.2 系统效果
通过定周期扫描的逻辑控制算法块,直接操作现场水泵在控制器映射区的驱动级,构建了非互斥设备双队列循环操作系统。图10为操作系统人机交互界面,界面右侧是水位控制面板。
图10 电厂原水站泵组队列循环操作系统人机交互界面
项目实施后,操作员根据实际情况对各台水泵的运行时间进行多样化设定,优化了泵组调度,降低了水泵的事故率,延长了水泵使用寿命,实现了基于运行/停运时间统计调度的离散水位高可靠性控制和状态检修。当水泵出现故障停运时,能够自动轮换到下一台停运时间最长的水泵,具备泵组级保护联锁功能,充分调度系统水泵的余度潜力,具备可靠的故障应对能力。
4 结 论
(1) 借鉴现代计算机操作系统的多任务进程、运行队列等先进调度理念,采用IEC61131-3标准语言和工具,在控制器映射区驱动级层面开发了适用于电厂飞灰岛和原水站的互斥和非互斥模型操作系统,取得了不错的应用效果,满足业主严苛的无人值守需求。
(2) CFB锅炉飞灰岛的互斥仓泵组在多模式多任务切换的操作系统调度下,以流水线形式复用管道进行输送,并进行无扰模式切换,利用飞灰在循环中提高锅炉效率的同时,确保了锅炉的连续运行。
(3) 电厂非互斥水泵组在双队列循环操作系统调度下,根据每个水泵的运行和停运小时数统计以及可运行时间的设定,进行循环调度和故障联动,自动触发检修推荐事件,在充分挖掘水泵备用余度实现状态检修的同时,还保证了泵组的长期可靠运行。
(4) 虽然作为整个智慧能源场站的一部分,但是电厂全局性操作系统的实现和应用还有一定距离,因此在电厂数字化智能化转型过程中,在进行顶层设计的同时,还应关注底层逻辑控制与先进操作系统理念相结合带来的算法形态跃迁,不断提升能源场站的智能化等级。