郭万森,杨春霞,王 婧,吕海涛
(北京中水科水电科技开发有限公司,北京 100038)
在水电站计算机监控系统的人机界面上,运行人员下发命令的界面称之为“控制界面”,该界面上包括控制命令和设备状态显示,属于关键性人机界面,关系到实际设备的控制运行。如何才能更好地设计并集成该类界面,一直是集成工程师关注的重点。对于传统的控制界面,只能下发一个设备的一个命令类型,如果想要下发其他设备的命令或者下发其他命令类型,需要多次打开多个控制界面,大大地降低了运行效率。基于iP9000智能一体化平台的JavaScript脚本控制方式,可以满足多样化、复杂的控制界面需求。其界面采用Qt(跨平台图形用户界面集成开发工具)制作的UI(可视化设计的窗体定义文件),可以根据实际运行需求,把某一子系统设备(例如:高压油系统)的控制命令全部集成到一个控制界面,运行人员只需打开一个控制界面,就可以完成对该子系统的控制,同时还可以实现闭锁条件的判断和显示,告知运行人员哪些控制命令满足条件可以下发,哪些控制命令不满足条件不可下发,并显示出哪些条件不满足,提高效率的同时也满足了交互友好性。
无论是传统控制方式,还是JavaScript脚本方式,下发命令是其最基本的功能,但是传统的控制方式局限于设备对象,即人机界面上的图元连接哪个对象(例如:1号高压油泵),只能下发该对象的命令(启动/停止/故障复归),而JavaScript脚本方式突破了这种局限性,以高压油系统为例,假如该系统有3台油泵,分别为:1号、2号高压油泵互备冗余,3号高压油泵是备用泵。主要控制命令如表1所示。
表1 高压油系统控制命令
由表1可见,高压油系统共有27个命令,其中相同标号命令属于同一种类型。如果采用传统控制方式,需要在人机界面至少建立11个命令按钮(右上标数字相同的为一组命令,即一个命令按钮),运行人员若要完成以上操作,就需要经历非常繁琐操作过程。如果采用JavaScript脚本方式,我们可以将这些命令分为两大类:系统命令(7~11)、单泵命令(1和4,2和5,3和6),其中单泵命令可以关联到人机界面的每个泵图元上,系统命令链接到系统命令按钮即可,实现了不同命令类型按要求组合,同一命令界面能够完成多种命令下发功能,极大地简化了人机界面,更方便运行人员操作。
为了更好地提高人机界面友好交互性,还可以增加如下功能:
(1)状态灯:下发命令后,反馈结果以“灰/绿”状态灯显示在控制界面上,例如下发1号高压油泵启动命令,灰色灯表示没有运行,绿色灯表示已经运行,同时需要不断刷新获取实时状态;
(2)命令按钮关联闭锁状态:闭锁条件不满足情况下,将命令按钮变灰并不可点击,防止误操作,同样需要不断刷新获取闭锁状态,一旦闭锁满足,立即将命令按钮可执行;
(3)闭锁显示:如果闭锁条件不满足,需要向运行人员具体显示出哪些条件不满足,需要单独增加一个显示按钮,而不是点击命令按钮后显示,二者是区分开的;
(4)全局闭锁:例如LCU的远方/现地把手,只有在“远方”状态下,操作员站才能下令,这样的闭锁针对该LCU所有控制命令,可以用该条件闭锁控制界面的控制命令区,而不是具体的控制命令。
界面的绘制工具采用Qt 5.6.2(或更高版本),其丰富的控件及属性参数极大地方便了集成工作,仍以上述“高压油系统”为例绘制控制界面,需要绘制两种控制界面:系统控制(图1所示)、单泵控制(图2所示),主要内容如下:
图1 系统控制界面示例
(1)界面划分:标题区、控制命令区、操作权限区;
(2)整体背景:采用QDialog,默认颜色;
(3)状态灯:采用QLable,填充图片方式(灰、绿、红),一般绘制两个大小一样并叠加在一起;
(4)命令按钮:采用QpushButton,默认颜色或填充图片方式;
(5)闭锁显示按钮:采用QpushButton,填充图片方式(点击,如图3所示);
图3 闭锁条件显示界面示例
(6)单元组:采用QGroupBox,默认颜色,标题为分区名称。
图2 单泵控制界面示例
iP9000智能一体化平台支持丰富的系统交互函数,可以满足读取实时数据、查询闭锁状态、发送遥调/遥控命令、产生事件、语音告警等,编写JavaScript脚本时可以调用这些函数。基本函数如表2所示。
表2 iP9000智能一体化平台支持的JavaScript基本函数列表
脚本文件的格式为“xxx.qs”,其中xxx需要遵循一定的命名规则,例如“电厂缩写+机组编号+设备缩写或编号”。以“高压油系统”为例,系统控制与单泵控制的区别是状态灯数量和命令数量、种类,基本逻辑一致,脚本逻辑结构如图4所示。
图4 高压油系统控制脚本逻辑结构图
控制界面与脚本完成后,需要集成到iP9000平台上运行并测试,控制界面文件格式为“*.ui”,脚本文件的格式为“*.qs”,需要将这两种文件放置在“homeemsh9000uifscript”目录下。平台提供了人机界面集成工具“IPM”。启动IPM,打开“高压油系统”界面,在适当位置放置一个热点按钮,用来调用系统控制的脚本,3个泵的图元直接调用相应的单泵控制脚本,无论是热点按钮,还是泵图元,均可在其属性内选择控制类型为“调用脚本”,在“脚本名称”栏内填写相应的脚本文件名,保存后完成人机界面的集成,如图5所示。
图5 JavaScript脚本集成到人机界面示例
人机界面运行工具是平台提供的“OIX”。启动OIX后,打开“高压油系统”实时界面,分别点击“系统控制”命令按钮和“单泵控制”图元,系统自动调用相应的控制界面,测试内容如下:
(1)检查标题区内容是否正确;
(2)所有状态灯与现场实际情况核对;
(3)逐一满足闭锁状态,检查命令按钮使能;
(4)逐一打开闭锁界面,检查逻辑正确性;
(5)逐一切换操作权限,检查控制命令区使能;
(6)在闭锁状态和权限满足情况下,下发控制命令,检查确认窗口的命令描述正确性,同时检查事件一览表和现场实际设备动作情况。
上述测试内容准确无误后,即可投入运行使用。JavaScript脚本控制方式具有可复制性,所有机组相同设备可调用一个控制界面,减少了集成工作量。
JavaScript控制脚本方式相比于传统控制方式的优势,在于控制界面的集成度更高,同一控制界面能够完成不同类型命令的下发,极大简化操作步骤。同时JavaScript脚本控制方式可复制性更好,针对相同属性的命令对象,只需改变命令节点,就可满足复杂环境中命令下发需求,符合工业控制中按对象编程的要求。目前此项技术在三峡巴西项目伊利亚电站和朱比亚电站计算机监控系统中广泛应用,得到业主充分认可。