APP下载

柬埔寨达岱电厂监控系统动态调试思路与应用

2018-03-31赵文胜王靖欧

设备管理与维修 2018年1期
关键词:调试调节程序

赵文胜,王靖欧

(柬埔寨达岱水电有限公司,柬埔寨王国金边 12152)

0 引言

柬埔寨达岱电厂,位于柬埔寨西部的国公省境内,是由中国重型机械有限公司以 BOT(Build-Operate-Transfer,建设——经营——转让)方式,在柬投资建设的大型电厂,电站安装3台单机容量为82 MW的竖轴混流式水轮发电机组,总装机容量246 MW,年均发电量8.49亿kW·h,在柬埔寨电网具有重要地位(高峰时期占柬埔寨全国电网发电容量近1/3)。达岱电厂于2014年8月完成了3台机组的安装调试并投入运行。在随后的机组运行中,出现了多次控制故障及偶发性的负荷调节异常现象,对电网的安全运行造成了不良影响。在查找故障原因的过程中,应用了动态调试环节中较为典型的测试方法,这些方法成为解决问题的关键。

1 系统概述

柬埔寨达岱电厂监控系统采用的是许继集团有限公司的CBZ8000综合自动化系统,采用面向对象的分层分布式设计思想,全厂实时数据库和历史数据库分布在厂站计算机中,各单元数据库分布在各LCU(Logical Control Unit,逻辑控制单元)中,系统各功能分布在系统的各个节点上,每个节点严格执行指定的任务,并通过系统网络与其他节点进行通信。该设备采用的是施耐德昆腾系列PLC,编程主要采用Ladder Diagram(梯形图)语言和Structured Tex(t结构化文本)编写而成。

2 采取思路

在计算机监控系统中,控制是逻辑的应用,而调节是算法的输出。程序在投运前的静态调试,主要通过开发人员的逻辑思维来分析源程序代码和排错。但程序是客观事物的反映,客观事物本来就互相关联、互相纠缠,代码之间的大量迭代无法避免。这些已经完成了试运行,但毫无征兆出现的严重故障,只能通过动态调试的方式来消除。

2.1 调节故障

电站投运后,机组运行中在监控系统给定有功调节操作时,会偶发持续减有功指令。例如,设定有功增加时,监控系统却出现减有功脉冲,使有功调节方向错误;或者在减有功时,负荷已经达到给定值,但减脉冲仍然保持,造成负荷继续下降,甚至将有功减到零。在异常出现的时间段内,在上位机重新进行设值和手动增加有功,均无法干预到负荷的异常调节。排除监控系统外部因素和硬件故障后,判断应为程序逻辑故障造成。根据动态调试定位进行分类,应着重从算法上介入。

2.2 控制故障

在某种特定条件下执行控制流程时,上位机发分步开机令去执行开机检查操作,但指令下达后,程序就会处于一种完全不受控状况,流程自动执行每一步开机的操作指令,直到完成机组的开机并网。在故障出现的时间段,强制开机令退出和补发停机令,同样无法中断流程执行,这样的控制故障更多考虑逻辑方面的跳转。

3 应用情况

动态调试需要让系统在真实的环境中执行,对系统行为进行分析。利用IDE(Integrated Development Environment)集成开发环境配置的调试工具,或者自己编写的子程序跟踪软件的运行,来协助解决程序中的错误。在动态调试中,最重要的技术是采用白盒测试法(White-Box Testing),白盒测试是一种被广泛使用的逻辑测试方法,通过程序内部逻辑驱动,来进行路径和分支测试。达岱电厂的负荷调节异常情况的处理,就分别采用这两种测试方法进行。

3.1 路径测试

(1)达岱电厂的调节故障的偶发性,主要就是由于贯穿在程序内部的逻辑,存在着不确定性和无穷性,因此不能穷举所有的逻辑路径。此时可先利用思维导图(Mind Manager)软件,以发散思维的方式,从程序的动作出口入手,倒推故障出现的各种可能性及关键参数。将故障原因集中到程序中的几个重要中间变量上,相当于定位至路径的交叉路口(Intersection),同时在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。由于故障的出现无规律可循,梯形图LD语言也无法记录执行过程,只能通过长期跟踪,可以利用施耐德Unity Pro软件中的Trending tool功能,不间断地对控制程序中的几个相关变量进行录波监视,分别获得了故障前后的变量记录及动作图形。

(2)故障时刻出现在机组增加负荷设定至72 MW,当负荷接近72 MW设定值时,突然出现减速令,值班人员手动将设值复归,1F(1#发电机)负荷稳定在65 MW,,但手动重新设值82 MW后,再次出现减速令,此次即使将设值复归,减速令仍持续输出,直至将1F负荷减至10 MW,后自动减负荷情况消失。

(3)Trending tool功能可以记录下预置参数的每一条记录,20:57:03机组实发有功33 MW,上位机设定负荷72 MW,之前调节都正常,实发值逐渐接近设定值,在死区附近波动时,20:57:43用于减有功调节时间计算的%MW1268参数,产生一个负值,即-130。

(4)机组调节脉冲式通过程序中INT_TO_TIME功能块,将数值转换为毫秒(ms),正常情况下,减有功环节内%MW1268都应该是正值,例如,等于500时,输出的脉冲值就应该是500 ms。如果%MW1268计算出负值,理论上应该处于增有功的控制环节内,这个值要被闭锁,不应进入减有功流程。分析原因是实发有功在设定有功附近波动时,由于程序没有跟上PLC的扫描进度,将负值赋到了减有功流程,从而产生了错误的跳转。INT类型中负数用二进制原码换算的范围是(-32768~0),因此计算出的减有功的输出脉冲时间(32768-130=32638),为32 s 638 ms。也就是说要持续进行32 s的减有功指令,并且一直被保持。这就是为什么负荷持续下降的核心问题。

(5)根据找到的故障原因,有针对性的对相关程序进行了修改,增加了增减有功是否为负值判据,若为负值,不进行时间换算,等待下一个扫描周期再换算。增加了功率调节自保持回路的相关复位条件。在增有功和减有功的输出,TON功能块之前,增加有功可调(%M1225)条件,有功不可调则输出取消。程序修改调试完成后,经过近1年实际运行检验,未再出现过异常情况。

3.2 分支测试

(1)分支测试是通过针对特定条件设计测试方法,对软件的逻辑路径进行覆盖,跟踪程序在路上如何的执行。监控系统流程控制主要采用的是结构化文本ST语言,大部分的逻辑路径分支采用CASE语句。这样在静态调试时,可以很方便的设置断点,当执行到特定语句或改变特定变量的值时,程序停止执行,以便分析程序此时的状态。但在动态调试时,只能利用程序语言提供的调试功能,分析程序的动态行为,针对发生的控制故障,编写调试程序来实时检查主存和寄存器,记录流程在各分支上执行的跳转。

(2)与路径测试(可以利用Trending tool功能记录若干变量的相互关联)不同,分支测试更多的是针对同一变量的在线跟踪,可以定义数组,通过编写程序将流程的执行写到数组中去。并设置软件开关,随时观察变量在分支程序中的执行步骤。优点是,可以与PLC的扫描周期同步,从寄存器中精确读取变量在每个扫描周期的变动情况。

(3)对变量的初始赋值,可以通过变量表,也可以通过赋值语句。通过分支测试,发现当程序重新编译下载时,部分寄存器处于被清空的初始态,变量还未被赋值。这部分变量的初始态通常是0值,而首次赋值与变量所处语句的位置有很密切的关系。负责程序跳转的变量数组,是在主程序最后一行进行的赋值,而各子程序段的判断条件,都没有考虑到对0值进行限制。在初始扫描周期完成后,还未执行赋值的故障变量数组,就在缺少限制的子程序循环中,一旦击发条件满足,就可导致流程的不受控执行。

4 问题思考

在IEC 6-1131/3标准中,定义了5种标准编程语言,监控系统的控制软件通常会融合多种程序语言进行编写,优点是在功能上能进行互补和直观,可发挥程序语言各自的优势。对于整体程序的动态调试,除了依靠软件自身进行语句覆盖 SC(Statement Coverage)编译检查外,如果有可能,针对故障问题的测试方法,可以采用判定条件覆盖CDC(Condition/Decision Coverage),即设计足够多的测试用例,使判定中每个条件的所有可能至少出现一次,并且每个判定本身的判定结果也至少出现一次。但是无论采取哪种测试方法,目的是发现程序存在的问题,而不是证明程序没有问题。

5 结语

对于监控系统方面的故障,难点在于故障原因难于定位,而一旦找到故障原因,问题自然迎刃而解。合理运用动态调试中的经典方法,对负荷调节异常、控制环节故障这类的偶发性故障确实起到了重要作用。随着技术及软件的发展,特别是IEC 61850规约的引入,对系统与设备之间的控制环节也提出了更高的要求,监控系统正在朝着网络化、互联网的方向发展,系统间的信息传输将呈现多层次、多局部交错互联的形态,并由此实现信息的沟通、汇集和共享。基于系统层面的动态调试将会越来越深入,掌握传统的调试思路及方法,多采用逆向思维去分析问题,将对系统的稳定和故障排除起到决定性作用。

猜你喜欢

调试调节程序
方便调节的课桌
2016年奔驰E260L主驾驶座椅不能调节
试论我国未决羁押程序的立法完善
基于航拍无人机的设计与调试
FOCAS功能在机床调试中的开发与应用
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
无线通信中频线路窄带临界调试法及其应用
可调节、可替换的takumi钢笔
调压柜的调试与试运行探讨