返回首页
中文
站内搜索

无须扬鞭自奋蹄 ——析自动化技术开发组编程事

发布日期:2018-06-27 点击次数:33 字体显示:【大】  【中】  【小】 

为应对当前国内发电项目市场提出的新挑战和海外发电项目的预期需求,自动化室于2016年初成立技术开发组,着力研究电厂自动化检测和控制前沿技术,并承接发电及其它自主运营项目的编程调试。经过两年的发展,逐渐形成了项目现场编程调试、电厂先进调节控制系统研发、自动化设计工作标准化三大块主要业务。

   

越基础越重要

万丈高楼平地起,自动化技术开发组被赋予了多项任务,但核心还是要把基础打牢。为此小组成立初期,傅晓主任工程师亲自带队小组前往和利时、东汽和孚润德等公司学习DCSDEH编程及现场液压系统故障分析,随后到各个项目部接受现场考验。值得庆贺的是:两年内小组成员顺利完成了扬州恒润高温超高压煤气发电65MW机组、新余高温超高压煤气发电93MW机组等大大小小近十个项目,积累了丰富的经验。并在此基础上,形成了小组自身的编程体系。

经历过现场的同事都知道,项目的设计和产品的选购需考虑周详,保护措施一定要到位,否则会隐患无穷。然而重要设备本身的硬保护都是独立的,要方便实现系统牵一发而动全身的功效,还要看那关键的几行代码。而且当现场出现各类故障时,业主的第一反应都是程序逻辑有没有问题?所以看似静坐现场的程序员,其内心也是忐忑的。

这就需要程序员不仅有深厚的编程功底,还要熟悉现场的工艺,在逻辑讨论中仔细推敲每一条语句的可行性,在编程过程中反复思索可能遗漏的方面,在调试环节中积极参与逻辑的测试。而这也是自主编程特有的。因为如果是厂家编程,他只需完成业主、总包、联调、监理四家讨论签订的逻辑即可,后面发生逻辑缺失引发的事故时,他也完全没有责任。而自主编程,关系到我们环保人自己能否给机组提供良好完善的保障环境,关乎到我们都市环保的声誉,所以即便讨论中有遗漏,后期的纠正和完善也会更主动、及时和便捷。

就以锅炉大联锁中送引风机间的逻辑为例进行讨论。某项目敲定逻辑说明如下:

A.引风机停运,联锁停对应的送风机。

B.两台送风机运行,第一台送风机停运:联锁停对应的引风机,第二台送风机停运,则不联停对应的引风机。

按字面意思,我们可以罗列下表:

 

1 

仅完成字面上程序的编写,程序很简单,逻辑也合理。但实际编译验证过程中,会遇到如下实际问题:

A.风机正常运行在变频状态,跳闸情况下如何迅速捕捉到跳闸信号。

B.在第一次单送引风机联锁跳闸后,经过人工调整频率或设备维修后,可能不成对启动跳闸的送引风机而是只启动其中的一台,产生两引风机一送风机启动或一引风机两送风机启动情况。此时如果有二次风机跳闸时该如何联锁。

C.在极端情况下,两台送风机同时跳闸,系统如何判断是否只停了一台引风机。

D.一些项目业主要求风机跳闸时,先变频切工频,切换失败后再锅炉大联锁,这样是否合理,风险大不大。

E.单送引风机跳闸引发的降负荷联锁问题。

设备的运作都是按部就班的,联锁的触发必然有其诱因。如风机运行中轴温、轴振等重要参数的异常触发了设备的跳闸。但偶尔也会遇到无法捕捉到的异常事件促使设备的跳闸,如干扰信号等。故对于逻辑联锁的实施必须找一个可靠的载体。理论上在变频运行下,以异常跳闸风机变频器的运行信号下降沿为联锁触发条件为好。因为故障的终极表现就是对应设备的停止运行。

但实际过程中,如问题A所示,现场选型的变频器频率下降到0时,停止信号才会出现,那对于越大的风机,变频器的安全启动和停止时间越长,8万以上的机组要90秒甚至更长,如果一个信号延时90秒后才被触发,那肯定要出大事故,故加入高压柜运行信号(瞬间能触发)作为判断。即变频和高压柜任意一个关闭反馈信号到来时触发联锁。如果在工频的情况下,那直接联锁跳高压柜。故得到图1逻辑:

 

1 变频器跳闸时跳闸信号的捕捉

 

正确的逻辑判断需要判断环境的支持。许多程序逻辑的判断往往建立在常规环境,比如在送引风机全部正常运行情况下发生故障该如何处理。当它忽略了如问题BD的运行环境,可能最终的逻辑判断在某些情况下会发生失准。另外程序判断也存在死区时间,如问题C中两台送风机同时被关断,可能瞬间程序相互判断为送风机单关(如图2所示),导致对应两台引风机都联锁跳闸。故加入合理的延时判断可有效避过死区时间。

 

 

2 死区时间内的逻辑误判

 

电厂的编程虽然经历了多年的发展,但逻辑的完善仍然还需要更多现场经验的积累。如问题D中风机变切工在系统运行过程中是否可能产生不稳定因素,问题E中当单边送引风机跳闸时,各调节阀自动调节负荷到多少合适。这些还需要我们去探索。这也是技术开发组优势所在,借助于电厂工艺长期的熏陶,对逻辑的思索和拓展会有更好的传承性。

 

编程容易,编好程序不易

现场经常会有人跟我们交流,说“这编程很简单呀,就这么用线连一连就搞定了”。这个话对也不对。

对,因为和利时、科远等DCS厂家根据国内电厂、化工等大型工程开发出了有针对性的数据库,把基础常用功能进行模块打包处理,编程人员在二次开发中能够节约不少时间,而且经过优化的编程系统,增强了易读性,所以只要有些编程基础的人都能快速理解程序的含义,也能做些基础的参数修改工作,所以给人入门易的假象。

不对,因为看似简单的编程,初学者却经常无从下手。古代的雕版印刷,工匠刻完一版字,其他人都能借来刷上墨,自己印上一页书,但如何雕版却往往被人忽略。DCS厂家将自由的语句封装入一个小小的黑匣中,并配上简易的注释,把它们包装成人们需要的马达、阀门、流量计等,如雕版般供人随意使用,但这却桎梏了许多人的想象。初学者经常会用固化的块去生搬硬套需要的逻辑,结果就是程序很浅,经不起事故的推敲。

编程的核心是强大的逻辑计算能力,我们要去模仿机器的想法。AlphaGo之所以能赢过人类的棋王,不是因为它能模拟人的思维方式,而是它每走一步都把所有可能的结果都计算了一遍,选出胜率最大的那种步法。所以人类思维表达逻辑中寥寥的几笔字,可能要几十上百条语句才能让机器完美实现。熟练的编程者会按机器的逻辑通盘考虑后,如活字印刷术般重组可以利用的程序块和灵活的语句,并进行程序校验。

在电厂中,锅炉和汽机的精密性要求使得其控制极其重要。但在公司现有电厂DCS编程情况下,安全要求较低的化水才是最挑战编程能力的。不夸张的讲,可用“得化水而得精髓”来形容。因为相较于锅炉汽机的纯逻辑判断,化水还需要融入程控,即一键启停程序。

一键启停程序的难点在哪?主要可归类为以下几点:

A.设备硬件要求高,程控中的设备是靠一系列联锁的控制和反馈信号来持续运行的。对于循环步骤频繁的(如超滤)系统,一旦一个信号不正常,就会引起程控的卡壳。故编程中必须做好应急准备,随时随地可以急停成套运行设备。

B.自动运行程控与逻辑程序间的冲突。比如两台超滤提升泵,逻辑要求一备一用,一台跳闸,另一台马上启动。那在自动运行下,电脑又如何判断什么时候是正常停泵,不需要备用启动,什么时候是非正常跳闸,需要启备用?这就要额外加入区间判断条件,设定泵的正常运行区间,只有在这个区间内联锁才起作用。

C.如何剔除本循环运行过程中已经损坏的设备,让它在下一循环中不再参加联锁。

以超滤系统为例,某项目化水为三台提升泵与两套超滤系统的配合使用。要求任意两台提升泵分别配合两套超滤系统,另一台提升泵为备用。简易(演示)流程图如图3所示:

 

3 超滤简易(演示)流程图1

 

如果按这个步骤直接编程是很繁琐的,而且容易把自己绕晕。经过归类总结,可以把泵的选择单独提取出来做成调用程序,那流程图就能简化为我们人的正常思维方式(如图4),并根据主线写出主程序:

 

 

4 超滤简易(演示)流程图2

 

而对于选择程序,则需要以机器的逻辑方式去考虑,主要完成两个任务:设备的选择和故障下备用的切换。如表2,列出程序块的输入和输出信号以及信号的处理方案。在此基础上再进行程序的编写。

2 泵的选择逻辑框架

 

该程序块最终可通过输入输出端子的连接方式来适配三台以内主泵的选择和是否需要备用泵的选择。另外,如果以后有更多台泵参与选择,通过该思路来扩展该程序块,能在解决问题的同时,不影响主程序的运行。这就提升了程序的通用性和移植能力,嵌套的结构也增加程序的易读性。

D.额外的逻辑保护程序。

比如反渗透系统供水路上有提升泵、高压泵、进水阀、出水阀。如果在工作过程中该路上提升泵或阀门异常关闭,而高压泵继续工作时,容易引起憋管,此时系统本身会通过旁路的爆破膜来泄压。虽然保证了系统的安全,但是要对设备进行更换配件,增加了成本和麻烦,也耽误了设备工作时间。故通过逻辑来增加保护,在水路上其他设备异常时及时关闭高压泵,可以更大限度减小损失。

E.人与机的权衡。优秀的厂家或程序员希望设备的全自动化,而自动化则增加了人的惰性。一位朋友曾跟我讲到他在电厂的工作,那是ABB系统编写的燃气轮机。整个项目被封装,一键启机,厂家不允许业主私自改动程序或任何维修处理,所以一旦故障停机,他所需做的就是重启,重启,再重启。

但自动化与人之间真的仅是零和游戏吗?不!好的自动化系统和优秀的维护人员才是系统长久运行的保证。程序员需要考虑提供维护人员接受能力以内的合理易懂的方式。一方面是做好培训和操作手册,另一方面,必须规整好程序和注释,提升维护人员对程序的解读能力,从而保证维护人员在设备异常时能及时通过程序找出问题,而不是太过依赖于厂家。

一键启停运行的稳定性衡量了编程人员的逻辑思维能力和程序的优劣。但优秀的系统远不止上文提及的一键启停那么简单,现在仅仅是基础,更高级的控制系统还等待着我们去发展。

 

一面科技,一面艺术

中国这几十年取得了巨大的成就,赞叹之余却又有些让人迷茫。有位叫Firth的国外建筑师感慨中国随处可见密集林立的高楼:“这些建筑没有人性,这根本不能称之为一个社会。”当建筑的目的仅仅是为了让足够多的人搬进来,从而获取更丰厚的利润,那这种建筑理念只会让人们离人性越来越远,让居住在这里的人感知力变弱,甚至麻木不仁。

我们信服这个理念,同样放眼到工业,不能提及工厂就让人感觉脏兮兮,灰蒙蒙,千篇一律,毫无生机。设计师们应该赋予它们色彩和感情,不要让劳动者认为这只是赚钱糊口的场所。正如我们的产业园,对比周边方正拥挤的楼群,这边奇特宽松的建筑,碧汪的清池,葱郁的果园让人可以感受到浓浓的环保气息,享受田园般的生活,体会匠人的精神和情怀。

在实现现场编程逻辑的情况下,我们带上满满的诚意,努力使我们手上的设计也变成一件件工艺品。美好的外观往往更能提升产品的科技感,也能让业主认可设计人员的工作态度,增强对我们的信任度。

 

5 界面对比

厂家永远是我们的老师

 

我们有优质的高学历编程团队,良好的工艺基础,强大的逻辑思维能力。但还需要重要的一点——谦虚。

“厂家永远是我们的老师。”张建涛主任在一次小组项目编程启动会上这样说过:“自动化室现有的优势不是开发了哪个系统,不是汇聚了多少牛逼的专家。而是有强大的资源整合能力和积极学习的斗志。”

相比于DCS厂家,我们有劣势,我们永远无法获得第一手的系统更新资源,无法一次学尽程序中讨巧的小功能。每个项目或多或少会遇到一些棘手的问题,回想现场工作,常常有越深入越无知的感慨。什么硕士博士、高级工程师头衔统统放下,谁能点拨我们都是我们的老师。翻翻手机上十几个DCS厂家的电话,数百个通话记录,想想我们自己逐渐丰富完善的系统,由衷要对他们的不吝赐教道声“谢谢”!

 

多一事,多一份责任

自主编程可能对于公司的开拓仅仅是块小小的业务,然而对于自动化室,对于自动化技术开发组,却多了份责任和荣耀。

在大力倡导工业化4.0和互联网+的今天,谁优先拥抱她们,谁就抓住了先机。我们的脚步不算早,但也不算晚。

我们可以不编程,但不能不会编程。技术掌握在自己手中能以不变应万变。而且自主编程只是基础,是通往新方向的大门。通过扎实的编程服务,我们有机会有平台更深入地研究电厂燃烧优化系统,全厂一键启机,停机不停炉等各种技术方案,从而达到自动化室差异化竞争的目标。

当然,心急吃不了热豆腐。我们要去拓展我们的视野,必先巩固我们的既有成果。在倡导安全为核心的工程环境下,任何一个细小的失误都可能是致命的,这警醒着我们要时刻保持一份细致和责任心。

 

我想做一个安安静静的程序员

 在现场,程序员与周边热火朝天工作的人群形成鲜明反差。我们静静地坐在那里,时而疯狂敲击代码,时而入定冥思,不问周边的嘈杂,忘却时间的流逝。作为机组运作前的最后一道操作流程,检验施工硬件的试金石,我们必须将工作赶在前面,即便持续到深夜。每当调试人员问及我们这个能不能试,那个能不能调,我们都镇定自若地回复:“随便试,早就写好了。”

骏马自知前程远,无须扬鞭自奋蹄。

这句大马联钢业主夸赞大马项目部的话,强烈刺激着我。这不也正是努力拼搏的技术开发组,努力拼搏的自动化室,努力拼搏的环保人的写照吗!当然用“骏马”自夸未免有些骄傲,但怀抱着“自奋蹄”的心,奔走在漫漫大道上,姑且就当自勉了。