面向国际市场的装置开发运维软件设计与实现
南京南瑞继保电气有限公司的研究人员陈宏君、张磊、徐睿、曾凯、刘坤,在2019年第3期《电气技术》上撰文,分析了面向国际市场的用户软件现状与问题,介绍了新一代控制保护平台PCS-S系列装置配套软件设计理念与关键实现技术。
软件以驱动包文件衔接装置研发、工程实施、用户运维等过程,支持驱动包在线升级更新。以“所见即所得”的设计理念,通过分布式配置和集中式浏览编辑,解决数据一致性和同步等难题。通过MOT选型、可配置脚本、可视化主接线、图形化跳闸矩阵等手段提升装置可配置能力。
软件通过模块化元件内嵌IEC 61850模型、图形化配置过程层数据模型等方式实现IEC 61850多版本自动建模。支持以装置能力描述文件为输入源,进行数字化回路配置,实现智能变电站装置配置、调试、集成和运维一体设计。基于本文设计的PCS-Studio软件已经在多个工程实施中应用,满足用户可配置、易维护的需求。
保护测控装置已经实现了平台化、可视化、可配置和调试的功能,一些厂家的产品已经销售到国际市场,与国内的大客户定制化、标准化模式相比,国际市场区域分散、用户需求存在较大差异,装置软硬件平台、应用程序配置、用户运维软件等需要提升灵活性、可配置能力。
对过程控制系统(process control system, PCS)系列装置配套PCS- Explorer软件,在国内外工程实施进行调研总结,在获得用户的认可同时,亦存在如下不足:
①部分应用配置复杂度较高,即使深入阅读说明书,也存在理解和操作上的困难,例如针对主变高、中、低压侧的模拟量分配和保护功能连接关系的配置,需要提供50余页专项说明;
②限制于工具软件所能提供的功能,部分应用的灵活可配置能力有待提升,例如国外不同地区的间隔的接线方式非常灵活,往往超出预设的组合范围,一些特殊接线只能二次变更开发;
③IEC 61850采用全自动化建模方式,用户无法自主设置实例号,导致后续工程维护升级时新增/删除信号带来逻辑节点实例号的变化,加大了维护工作量;
④装置配置调试和变电站集成需要通过2个软件分步完成,缺少一体化设计交互能力。
针对上述反馈,结合新一代控制保护平台PCS-S系列装置的推广需求,新开发了配套的面向国际市场的装置开发运维软件PCS-Studio,本文介绍了该软件的设计理念和关键技术。
1 软件设计理念
软件需注重用户体验,实现所见即所得。按照支撑产品全生命周期的要求进行设计,从装置订货、研发调试、工程实施、运行维护等环节,提供装置选型、应用开发、插件选配、用户配置、整站集成、状态浏览、波形分析等功能模块。
1.1 概念定义
元件是完成特定功能逻辑、面向对象封装的一组数据和对数据进行处理的过程,处理完后输出的数据供其他元件使用。元件包含输入、输出、参数、逻辑节点、人机配置等内容。
驱动包是一个自定义格式的文件,把硬盘目录下整个装置的编程、配置、建模相关文件打包压缩形成*.dev。其包括装置的元件库、可视化页面、定值、事件录波、装置选型、液晶主画面等装置配置的源素材文件,还包括通过分析源素材文件形成的装置运行接口文件、ICD(装置能力描述文件)等。
研发人员通过PCS-Studio软件开发装置驱动包,将驱动包下载到装置运行。工程人员和用户可从装置中装上驱动包、或者从驱动包安装库中选择驱动包新建离线配置,进行本地化配置,形成新的驱动包。
1.2 配置调试集成一体化设计
如图1所示,PCS-Studio采用一体化设计,以变电站为单位创建工程,支持单装置配置调试、跨装置集成功能。
图1 配置调试集成一体化设计
软件提供的功能包括:
- ①工程管理,创建、打开、关闭、删除、导入、导出工程;
- ②装置选型:基于定货号进行MOT选型、系统配置选型、功能投退;③硬件配置:增加、删除、投退IO插件;
- ④应用程序配置:应用程序新增删除加元件、用户逻辑编程;
- ⑤信号连线:AI、BI、BO、LED拉线配置;
- ⑥定值设置:定值分组整定、导入导出、下载上装和比较;
- ⑦人机配置:信号分组、事件、录波、用户级菜单配置、LCD主画面绘制;
- ⑧IEC 61850配置:创建和配置逻辑设备、逻辑节点、数据集、报告块;支持Ed1.0/Ed2.0可选建模;
- ⑨通信管理:IEC 103、DNP、MODBUS等通信规约配置;
- ⑩驱动包管理和维护:驱动包库入库、升级、比较、导入用户配置;在线调试维护:虚拟液晶调试、IEC 61850调试、可视化页面调试;权限管理:用户角色划分、离线在线操作权限管理;变电站集成配置:通信子网配置、网络光口配置、发送接收数据传输配置、导入导出变电站配置文件。
上述功能覆盖了从单装置研发到现场运行调试的相关过程。软件的用户包括装置研发人员、生产制造人员、技术支持人员、产品代理人员、购买装置的用户。
以技术支持用户为例,其典型的操作流程如图2所示:
- ①用户打开软件,新建工程、层次目录,从离线驱动包库中挑选驱动包或在线连接装置获取驱动包的方式新建装置;
- ②进行装置MOT选型、系统功能配置和保护测控功能投退;
- ③进行可视化页面配置(包括逻辑编程、用户级HMI图形化配置、IEC 61850过程层图形化配置);
- ④进行定值整定、LCD主画面编辑、通信数据集、点表配置。
对于智能变电站的装置,还可进行过程层变电站事件(generic object oriented substation event, GOOSE)、模拟量采样(sampled value, SV)的发送接收端子配置,形成单装置ICD文件。之后在资源管理器导入其他装置的ICD文件,将其他装置的GOOSE-SV发送数据集对应的发送端子选择拖入到ICD的Inputs节点内,并选择外装置的FCDA和本装置的接收虚端子DAI关联,通过ExtRef存储对应关系。
装置是以回路实例配置(configured circuit description, CCD)文件作为数字化传输的接口,配置软件根据ICD文件中的发送数据集和Inputs接收端子信息,形成该配置文件,通过1个软件,即完成了装置间的数据传输配置。完成相关离线配置后,将驱动包下载到装置进行在线调试。
1.3 以驱动包为核心衔接全流程设计
面向国内外市场,要求保护测控装置具备灵活的可配置能力和快速集成能力。基于传统的定制化编程方式,已经很难适应不同国家和地区用户需求。需提供可配置方法,支持用户二次开发,满足现场需求,而面向用户的可配置,要求风险可靠,避免用户进行程序编译等复杂度高的操作。
另外随着研发分工的细化,装置程序的研发也需分步实现,模块研发人员侧重于单个功能模块的设计,以提高模块的研发质量和运行效率,装置集成研发人员基于可复用的模块库,搭建装置功能,并设计开放给用户的配置接口,以提高装置集成速度。本软件以驱动包为核心,实现不同用户分权限、分步骤开发,如图3所示。
图2 用户操作流程设计
图3 以驱动包为核心的分步开发过程
- 1)通过符号库编辑软件进行模块研发,将装置功能进行模块化设计,形成符号库。
- 2)通过研发版配置软件进行装置功能集成研发,从模块库中挑选必需的功能模块,以图形化配置组合的方式搭建顶层功能,将各模块二进制目标文件和系统程序库链接为可执行程序;设计面向用户可配置数据,将模块库、可执行程序、配置页面数据、用户可配置数据打包为标准驱动包。
- 3)用户通过用户版配置软件进行二次开发,用户基于标准驱动包进行用户级配置,形成新的驱动包下载到装置运行调试。
用户版软件仅显示用户可见的模块、页面、定值、配置选项等数据,用户版本的逻辑编程数据处理采用动态注册技术,是免编译的。
1.4 提升装置可配置能力设计
在PCS-Explorer软件中,装置运行的主体功能使用图形化元件搭建,在保留该软件部分核心功能前提下,PCS-Studio新增了主接线功能、图形化跳闸矩阵功能,进一步提升母差保护装置、主变保护装置的可配置能力,降低上述应用的配置复杂度,并对IEC 61850建模配置进行了新的设计,提升用户自主配置修改方便性。
1)主接线配置
母差保护采用面向间隔对象的方法来形成差动构成图,该方法针对不同母差主接线情况下,只需要修改母差配置,不需要修改母差程序。之前的标准母差保护支持的主接线形式固定(通过MOT提供11种可选接线方式),无法满足一些较特殊的主接线方式,由研发人员进行二次开发实现。故需要通过绘制母差主接线图实现自动形成母差配置的功能。其主接线实现步骤如下:
- (1)软件提供符合IEC标准的电力系统图元,例如母线、互感器、刀闸、开关等。
- (2)装置研发人员基于基本图元创建复合图元,例如单母、双母、母联、分段等间隔对象,填写脚本。
- (3)用户基于基本图元和复合图元进行主接线绘制;并将各间隔符号和图形化页面的元件关联。
- (4)软件解析主接线图,执行脚本,生成实例化元件拓扑信息、参数设置信息。
在进行变压器保护配置前,需要了解原理图、用户习惯,由于变压器主变接线方式和高中低压侧的分支数可变,所以对应的模拟量拉线、命名、HMI配置都有可能要修改,由于其灵活的可配置模式,对工程人员和用户来说,需要深刻理解掌握变压器保护的配置思路,专业门槛高,存在一定难度,也需要通过图形化的方式,以直观地进行模拟量和功能配置。其主接线配置实现步骤如下:
- (1)主变使用可视化主接线进行模拟量拉线配置。用户在该界面中新建保护对象,并定义变压器各侧有多少个分支。
- (2)用户在该界面,按照现场的实际情况安装三相电流CT,零序电流CT,三相电压PT(可带零序电压采集),模拟量用CT和PT实例化对应C3P元件和U3P元件,可直接关联采样通道。
- (3)用户可以对这些安装的互感器进行命名,这些命名将替换装置内部的相关定值。模拟量直接连线给预定义的功能对象,并设置描述。
- (4)用户再将需要配置的保护元件添加到图形中来,并和这些CT、PT建立连接关系。
- 以主变保护为例,其主接线示意图如图4所示。
图4 主变保护主接线示意图
2)跳闸矩阵
主变三侧保护多,跳闸开关多,每个保护跳的开关不一样,如果都用继电器就需要定义很多压板。之前是通过定值整定或者通过搭建繁杂的逻辑页面实现,存在不直观、不易汇总的问题。跳闸矩阵先将要跳的每个开关的继电器固定,对每个保护要跳开关编码,用点击圆圈方式直接起动要跳开关继电器。
通过对各种保护跳闸进行统一需求分析,设计了通用的跳闸矩阵符号,其在数据建模是个通用的元件,包括输入、输出、参数、逻辑节点模型,在图形上进行特殊处理,根据输入个数,动态调整显示行数,固定32个输出和定值,采用围棋模式的按比特位进行整定,支持修改关联变量描述,其他页面可使用跳闸矩阵的输出变量。
3)IEC 61850建模
目前国际市场存在IEC 61850Ed1、Ed2两个版本建模的需求,需支持可选切换导出符合Ed1、Ed2标准的模型,为此构建了支持2个版本的SCL数据模型,通过传入形参数,动态形成对应版本的属性和子节点。针对单装置的IEC 61850建模,采用三类图形化符号实现。
(1)应用元件内嵌逻辑节点模型。例如零序过流保护元件采用类型为PDOC的逻辑节点关联,在符号库元件制作阶段,可导入2个版本的数据模板,将逻辑节点作为元件的成员模型,进行元件变量和逻辑节点的数据属性映射配置、数据集配置,元件实例化时逻辑节点也同步实例化,完成装置主体功能建模。
(2)提供通用逻辑节点图形化符号建模,例如MMXU、GGIO,进行用户级自定义模拟量、开关量符号建模,这类符号可以关联跨元件的变量。
(3)提供PTRC、TCTR、TVTR等过程层GOOSE、SV的数据发送接收符号,采用图形化方式进行发送压板控制、接收逻辑编程,通过分析上述符号的拓扑关系,进行过程层虚端子建模。
通过元件关联逻辑节点和图形化符号,实现IEC 61850的自动化、图形化建模,用户不用关心底层SCL语法,降低了配置建模复杂度,支持用户基于研发人员预配置的数据集,进行用户级数据集的创建,筛选装置侧上送给后台的信号。同时提供集中式浏览界面,汇总各个页面的逻辑节点模型,支持用户集中修改实例化、前缀等内容,驱动包升级时保留用户设置的属性。
1.5 可靠性设计
在提升软件可靠性方面,通过组件化的设计,提升系统的稳定性、可选升级能力;通过基于用户角色的权限管理(role-based access control, RBAC)进行用户操作控制;通过内置校验规则进行防误校验,实现用户操作的日志记录,用户驱动包下载前的配置合规检查。
1)基于组件的软件工程理念
软件系统比较庞大复杂,同时用户对软件的发布、升级的可靠性、运行过程的稳定性的要求越来越高,对软件的设计和开发带来挑战,需要有合适的软件工程方法来指导软件设计开发过程。基于组件软件工程是一种基于复用方法来定义、实现和组合松散耦合的独立组件,使之成为一个系统。组件是比对象更高层次的抽象,其接口的实现细节对其他组件是隐藏的。开发可靠易维护的软件设计原则如下:
- (1)组件是独立的,组件之间不影响彼此的操作。组件实现的改变可以不影响系统其他部分。
- (2)组件之间通过预先定义的接口进行交互,当接口保持不变或兼容的情况下,组件可以替换为另一个有更多功能的组件。
- (3)组件的基础支撑层提供一些可用的标准服务,减少了需要新开发的代码量,提升了模块复用程度。
组件具有标准化、独立性、可组合性、可部署性、文档化等特征。基于组件复用的软件开发过程包括:系统需求概览定义、识别候选组件、根据发现的组件修改需求、体系结构设计、识别候选组件、组合组件并构建系统。本文的PCS-Studio软件采用了组件化设计理念。
2)权限管理
按照IEEE 1686规范进行角色权限设计。预设置7种用户角色,分别为“查看”、“控制”、“定值”、“测试”、“配置”、“调试”和“管理”。工具默认提供一个管理员账户,默认具有所有权限。用户第一次配置时使用admin账户进行登录,登录以后需要立即修改默认的用户名和密码。
管理员可以进行权限配置:①设置哪些权限不需要校验密码;②设置免密码操作的超时时间;③之后再创建角色,给角色分配权限,并且创建用户,将用户添加到角色组中。配置完成后相关设置信息保存到权限文件中,再下载到装置最终生效。图5是PCS-Studio的虚拟液晶调试子进程和装置通信时的权限校验过程。
图5 虚拟液晶调试软件登录过程
3)防误校验
软件在防误操作设计方面,在编辑过程中进行即时校验,例如定值设置超范围提示、IO插件不允许逻辑编程的控制、部分元件实例个数的控制、部分元件仅能在指定插件的范围内使用、连接线两端输出-输入变量类型不匹配提示等多项细节的提示,减少用户配置过程中的误操作。
软件梳理总结了装置侧系统软件相关配置检查规则,在驱动包形成处理过程中,进行逐条检测,并按照错误/告警/提示的级别进行展示,仅当零错误的配置才形成可下载的驱动包。此外客户端软件与装置之间的调试下载通信进行完整性校验机制,采用了MD5对敏感数据保护进行保护,通信报文采用加密处理,避免非法会话与攻击。
2 软件实现关键技术
2.1 可扩展脚本技术
在MOT选型、系统配置、可视化主接线等场景,配置选项的修改,需要即时生效。例如投入退出插件、显示隐藏页面、修改内部参数等。QT库的QObject类和派生类有property属性和c++slot接口,可以在python解释引擎中注册相关实体对象,在脚本中调用注册对象的API接口,界面上点击保存或失去焦点时自动执行相关脚本,实现数据联动修改功能。图6是可视化主接线中双CT母联符号内置的脚本示例。
图6 配置脚本
在图6中,Bay表示当前符号注册名,Graph表示主接线画面注册名,GetSymbolByName等是软件预先定义的接口函数,装置应用开发人员可调用软件提供的API函数,编写应用层逻辑,实现工具软件和不同应用逻辑之间解耦。
2.2 数据刷新同步技术
由于模块化元件支持该元件内变量菜单分组配置功能,在可视化页面组件和LCD菜单组件均可进行菜单分组配置,因此采用一次读取驱动包内容到共享内存、多处视图编辑浏览、即时刷新同步的策略实现数据一致性。
软件需实现离线HMI菜单配置和可视化页面配置的同步生效。将配置相关的数据源主体存储在可视化页面文件中,集中分组配置的菜单文件按顺序存储变量的ID。首次点击装置节点时,需一次读取菜单分组、定值、录波和可视化页面信息,确保需同步的数据在内存中。
以新建元件为例,从符号库中选择元件块释放到页面,则从变量库中获取默认实例名、默认的逻辑节点实例名,构建符号、变量的ID。读取符号内分组引用表的配置,汇总各个菜单引用表的变量ID,根据层次菜单英文名,查找离线HMI配置的数据(包括菜单、录波、事件、定值),将相关变量ID顺次添加到对应的离线分组内存数据中。
2.3 组件化集成技术
PCS-Studio软件采用组件加载和子进程调用的集成模式,设计了主进程-子进程-子组件的分层架构,分主框架、顶层界面组件层、数据模型层、公共服务驱动层,支持功能灵活扩展。
基于组件的开发设计要点包括:①实现对组件的管理,宿主程序可以搜索、加载、卸载组件和维护组件的状态。将这些功能放到组件配置树(组件容器)模块实现;②接口的设计和识别,接口是不同组件之间、宿主程序与组件之间的通信基础。宿主程序只有识别接口,才能加载组件;③资源的互斥和同步,多个组件的并行运行可能对申请资源产生竞争。
组件系统的功能由组件实现,设计了基础数据basedata.dll、基础界面basegui.dll、抽象组件basepackage.dll、消息总线msgbus.dll作为底层驱动公共服务模块,数据模块和应用能够组件继承自上述基础模块,组件之间通过消息总线交互数据,各应用层组件如图7所示,包括工程管理组件、图形化配置组件、全局配置组件等。
2.4 主界面框架设计技术
软件主框架的顶层窗体QWidget由区域1、区域2、区域3组成,3个区域使用QVBoxLayout竖式对齐。其中区域1为主标题窗体,显示软件名字和当前打开的工程名称。区域2包括菜单栏、工具栏。区域3为QMainWindow,由QSpliter和状态栏组成。
使用QSpliter作为中心窗体,依次竖式管理左侧工具栏、左侧停靠窗体、中间界面容器、右侧停靠窗体、右侧工具栏。中间界面容器分两个子区域,包括QWorkSpace工作空间、底部停靠窗体,使用横式排列。QWorkSpace用于管理各中子界面。整个软件的配色使用QSS的层次样式表设计,通过分层主界面框架,实现新型自定义软件界面风格。
图7 组件集成架构
图8 PCS-Studio主界面框架
结论
PCS-Studio软件采用模块化设计思想,通过可视化的方式配置调试PCS-S系列装置。以变电站为单位管理PCS-S系列装置,能有效管理全站的装置配置方案。使用驱动包和MOT创建装置,基于标准模板,可快速构建配置。提供功能丰富的离线配置和在线调试。支持跨装置的GOOSE-SV数据传输配置功能。软件在功能完善性、界面友好性、操作易用性、运行稳定性等方面有了较大改进提升,促进了PCS-S系列装置的市场推广。