叶佩鑫,党丽君,黄素林
(中国核动力研究设计院 核反应堆系统设计技术重点实验室,成都 610213)
核电站仪控系统是核电站的“中枢神经”,在确保核电站安全、稳定运行方面起着至关重要的作用[1]。其中,反应堆保护系统用于实时监测反应堆工艺系统的保护参数,当参数超过安全阈值时,自动触发紧急停堆信号及相关的专用安全设施,以保证反应堆的安全[2]。在核电厂正常运行时,不会触发反应堆保护系统。因此,对于保护系统是否具备可用性,在出现严重工况时是否能够及时动作,需要依靠定期试验来验证。根据核法规要求,定期试验必须按照试验大纲所规定的项目、周期以及验收标准来执行,只有当试验结果通过,才说明系统功能是可靠的,若试验结果不通过则必须对系统和设备的可用性进行评估。
图1 NASPIC平台基本架构图Fig.1 Basic architecture diagram of NASPIC platform
随着工业技术的发展,核电站仪控系统经历了全模拟、数字加模拟、数字化控制3 个发展阶段。如今安全级数字化控制系统(DCS,Digital Control System)正在全面替换传统的模拟系统。虽然现在的安全级数字化控制系统都具备自诊断功能,可以实时监视控制系统是否出现故障,但是仍然存在一些故障不在自诊断的检测范围,因此自诊断功能不能完全替代定期试验[3]。
定期试验通常采用分段交迭的方法分为过程仪表和核仪表试验(T1 试验)、保护逻辑通道试验(T2 试验)以及输出电路及驱动器试验(T3 试验)[4]。对于反应堆保护系统来说,是否采用数字化控制系统来实现,对T3 试验影响不大,应主要考虑T1 和T2 试验如何设计。T2 定期试验内容包括保护通道逻辑和专设安全逻辑的验证,其目的是通过检查保护系统逻辑处理的正确性及信号传输通道是否正常,及时发现系统中存在的隐形故障[2]。这里重点针对T2试验,讨论基于核电厂数字化安全级仪控系统(NASPIC 平台)的定期试验工具软件的设计与实现。
NASPIC 平台,是中国核动力研究设计院根据核电厂法规、标准以及核电厂安全控制保护系统的系统要求,基于微处理器和网络通信等技术,开发的一个通用的设备平台[5]。平台主要包含现场控制站、传输站、网关站、安全显示站(SVDU)和工程师站。现场控制站由一系列核心基础板卡组成,主要用于数据采集和处理、逻辑运算、信号输出及通信等功能。传输站负责现场控制站、网关站、SVDU 站及工程师站的数据传输;网关站用于安全级系统向非安系统的通信隔离,是与外部非安侧设备交互的接口;安全显示站用于各种安全相关参数的显示,并能够通过操作界面上的图形按钮向安全系统发出控制指令;工程师站提供组态工具,用于安全级DCS 系统自身参数和工程应用数据的配置和管理,满足工程设计、系统调试、运营维护等各阶段的功能要求,而定期试验软件就是在工程师站软件的基础上开发的,作为工程师站的一个工具软件而存在。
定期试验软件适用于T2 试验,主要功能应包括组态和执行试验两项,组态功能要实现对试验用例及试验条件的快速创建、编辑和导入,执行试验时,根据试验用例来调节各测试信号值的大小及符合逻辑的不同组合,使保护系统输出不同的结果,并与预期结果相比较,以判断逻辑符合功能的正确性[6]。将以上需求经过进一步细化后,最终得出定期试验软件的实际需求如下:
1)试验项目管理
工程应用人员新建试验项目,内容包含试验类型、试验项目、选择站点等信息,在导航栏以树形结构的形式呈现。
2)试验站点管理
在试验项目下,能够添加试验站点,站点应包括站号、站点类型、站点名称等信息,对于已添加的站点,能够进行修改和删除。
3)试验条件和用例管理
每项试验用例拥有一套试验条件,试验条件归属于试验用例节点,对试验条件和用例应有生成模板、导入、导出功能。
4)加入试验
在没有进行试验时,选择某个试验站点,可以将该试验站点下对应的试验用例加入到计划试验列表中,也可以从中删除,计划试验列表中只能最多同时添加一个站点。
5)试验执行
选中计划试验列表中的试验用例进行试验,可单选和多选,试验执行流程应包括建立站点通讯、试验允许条件判断、参数验证、试验初始化、试验用例执行及试验数据恢复,用户可选择单步执行和连续执行两种方式,若选择单步执行则提供“下一步”按钮,每次点击只执行一条件用例;若选择连续执行,则软件自动连续执行选中的全部用例。
6)辅助功能
软件应包含一些辅助功能,包括生成试验报告、试验报表及日志查询功能。试验报告要求试验结束后自动生成,也可以手动选择试验用例进行生成,试验报告的内容应包含试验类型、试验项目、试验站点和试验用例执行情况,试验报表生成方式与试验报告类似,内容是对已经完成的试验项目以报表形式进行统计。
图2 定期试验功能模块设计图Fig.2 The design diagram of the periodic test function module
定期试验软件通过工程师站与现场控制站之间的维护网络进行数据传输,使用数据强制协议将试验用例数据下发到控制站中实现对变量的强制,再通过维护网络回读控制站中的监视数据来进行结果比对。
下行的强制数据和上行的监视数据的通信接口都应采用非阻塞的方式实现,以避免软件界面因为通信等待而卡顿。由于软件是基于Qt 平台进行开发的,因而能够很好地利用其信号槽机制来实现非阻塞,在收到上行的监视数据之后,首先经过数据解析,转换为软件内部可以识别的数据结构,再通过发送信号的方式将监视数据发出,在定期试验软件内部对该信号进行绑定以接收该信号。这样,软件就能够以非阻塞的形式接收监视数据,同时不影响界面刷新,实现流畅无卡顿的试验执行过程,下行的数据接口也同样利用信号槽方式进行实现。
根据软件的需求,将定期试验软件设计为六大功能模块以及20 余项功能,详情如图2 所示。
2.3.1 试验项目树结构
试验项目管理模块主要依赖于界面左侧的试验项目树,树结构分为四层,按照不同层级由外而内依次为试验项目、试验站点、试验分组、试验用例四级。
树中各个节点除了用于显示外,还要存储各个节点所具有的一些固有属性(例如:试验项目含有试验项目名、试验类型、试验说明信息,试验站点含有站号、站名、站类型、CPU 类型等),所以要求试验节点本身具备数据存储能力,能够保存其固有属性,因此在实现时利用C++继承的特性,创建了一个子类继承Qt 中的QTreeWidgetItem 树节点类,并在子类中创建若干成员变量用于存储节点属性,然后使用这个自定义子类来创建节点,使得创建的每个节点既具有树节点的特性又能够存储数据。
图3 试验项目树结构示例Fig.3 An example of the test project tree structure
图4 试验项目树节点继承关系类图Fig.4 A class diagram of the node inheritance relationship of the test project tree
图5 JSON与XML格式对比Fig.5 Comparison of JSON and XML formats
2.3.2 试验项目数据的存储和加载
1)数据存储
在设计试验项目数据的存储方案时,考虑到其中关键的试验用例数据在导入后,不会频繁修改,因而整个试验项目的修改频率也不高,基于试验项目数据的这种特性,同时分析了数据库和文件形式存储的优劣。
数据库的优势在于数据结构化、高共享性、冗余度低、易扩充、数据高独立性,由DBMS 统一管理和控制,其事务机制也保证了能够支持回滚操作,然而这些特性对于试验项目数据来说,显得庞大臃肿;同时,数据库的备份也较为麻烦。文件存储方式优势在于访问轻便快捷,文件的备份转移很方便,并且性能相较数据库来说更好,然而安全性相较数据库来说更差,但通过对文件进行加密可以很好地弥补这个缺点。经过上述对比,选择加密文件形式作为试验项目数据存储方案。
关于数据的存储格式,由图5 对比可见,存储相同内容,JSON 格式具有比XML 格式更加简单的语法格式。同时,JSON 所使用的字符比XML 更少,可以大大节约存储空间,XML 格式的层次结构虽然比JSON 要清晰,可读性更强,但正是因为如此,反而降低了其安全性,而JSON格式在不知道层次结构时,解析更加困难,变相的提高了其安全性。同时,由于数据中有试验用例表和试验条件表存在,将表格转化为JSON 格式更加简单,只需将表格按行拆分后进行写入即可,而要用XML 格式存储表格显然十分困难,因此选用JSON 作为保存文件的数据存储格式。
图6 试验管理右键菜单Fig.6 Right-click menu of test management
2)数据加载
试验项目数据在加载时,要经过3 个关键步骤,读取试验项目数据文件,通过解密操作将数据解密,最后按照JSON 数据格式对文件中数据进行解析,最后再将JSON 格式数据转换为试验项目树节点数据进行显示。
2.3.3 试验项目管理
试验项目管理包含试验项目的新建、修改、查看、删除以及项目记忆功能,有菜单栏和鼠标右键菜单两种方式作为该功能的入口。试验项目记忆功能要求软件能够记忆当前打开的试验项目的状态,并在每次启动软件的时候自动加载试验项目,要实现关闭软件后对一些关键信息的存储,需要使用配置文件,在其中增加一个字段,用于记录当前定期试验内所包含的试验项目名称,并在每次启动软件时自动读取配置文件中的该字段,根据记录的试验项目来选择试验项目数据文件进行加载。
2.3.4 试验站点管理
试验站点管理包含添加站点、删除站点和查看站点功能,同样有菜单栏和鼠标右键菜单两种方式作为该功能的入口。
图7 站点管理右键菜单Fig.7 Site management right-click menu
由于T2 试验主要是针对保护系统中停堆和专设的逻辑算法进行验证,而这些算法逻辑只在RPC 站或TU 站当中存在,由于在一个实际工程中,不同类型的站点数量众多,因而对于添加站点功能,在让用户选择要加入的站点时,应当自动过滤掉GW 站和SVDU 站,防止用户因误操作导致的错误。
2.3.5 试验条件和用例管理
试验条件和用例管理包含对试验条件和用例的模板生成、导入导出、删除和显示,以及对导入数据的增加、删除和修改。对于用例模板的生成、导入导出和删除功能,设计了菜单栏和鼠标右键菜单两种方式作为该功能的入口,对于导入数据的增加、删除和修改功能,设计了右键弹出菜单的方式显示,而试验用例和条件的显示功能,则设计了工作区用于显示试验用例和条件数据,并通过鼠标左键点击试验用例节点的方式触发。
从工程需求来看,对同一站点设计的若干项试验用例,其所需的试验条件可能是不同的,因此从软件上,将试验用例和条件设计为一一对应的关系,每项试验用例对应一套试验条件,在实现时,将试验条件依附到试验用例节点上,即每个试验用例节点除了包含试验用例的数据之外,还需要包含其对应的试验条件数据,在工作区显示时,将试验条件和用例分为不同的表格,并通过顶端的tab 页进行切换。
图8 试验用例数据管理右键菜单Fig.8 Right-click menu of test case data management
2.3.6 试验执行流程设计
试验执行分为“单步”和“连续”两种执行模式,在用户点击“启动试验”按钮后,弹出提示框供用户进行选择,若选择单步执行,则按照如图9 单步执行的流程进行。
若选择连续执行,则按照如图10 连续执行的流程进行。
在实验执行流程的实现过程中,发现所有涉及数据下发的过程,包括试验初始化设置、试验用例执行、取消试验和试验数据恢复,除了下发的数据不同之外,实际的发送数据过程都是一样的,使用的是同一个强制接口,因此可以将上述这些流程封装为同一个函数,通过传入不同的强制类型参数进行区分,在函数内部对不同的部分区别处理即可,这样封装以后,在所有这些下发数据的流程处,都只需要调用同一个的函数,参入不同的参数即可,从而降低了代码冗余程度。
由于试验执行的流程中包含多处关键判断节点,在编码实现时,必须保证这些判断的逻辑和功能的正确性,任何一个判断的错误都可能导致试验执行流程的顺序混乱、数据错乱及结果不正确,而这样的试验结果一旦被当做正确的结果进行处理,将可能无法真实反映系统存在的缺陷。因此,需要严格控制试验过程中各个逻辑判断节点的正确性,为实现这一目标,在软件中定义了试验执行过程标志位及其他众多表示试验执行过程状态的标志位,在试验执行时,执行不同过程则设置不同标志位的状态好坏,在执行到判断节点时,通过一个或多个标志位好坏的组合,来判断应该进入哪一条分支流程。对于每个标志位都需要跟踪其状态变化,确保其状态在试验执行的各个阶段被正确的设置,确保没有遗漏。例如,要在启动软件时对每个标志位设置初始化状态,在试验结束或因异常情况中止时,对每个标志位状态进行重置等。
图9 单步执行流程图Fig.9 Single-step execution flow chart
2.3.7 人机界面
人机界面的设计风格,总体与工程师站软件保持一致,将界面划分为菜单栏、试验项目树区域、工作区、状态栏和日志区5 个区域。菜单栏在界面最顶部,包含试验项目管理、试验条件和用例管理、试验管理、辅助工具和帮助这五类功能,每一类中添加了其主要功能的按钮,方便用户进行快捷操作。试验项目树区域在界面左侧,用于显示试验项目的完整结构,各个节点用不同层级的图标配合节点的名称来表示,除显示用途外,还提供鼠标右键菜单供用户对试验项目进行各项操作,内容涵盖了除执行试验外的大部分的功能。工作区在界面中间靠右侧位置,用于显示试验用例和条件数据的具体内容,当点击试验项目树上的试验用例节点时,工作区就自动切换显示该节点对应的试验用例和条件数据。状态栏在界面最底部,主要用于显示当前通信状态,设置为一个状态灯,状态灯分为绿、红和灰3 种颜色,分别对应通信正常、通信异常和未连接3种状态。
图10 连续执行流程图Fig.10 Continuous execution flow chart
图11 定期试验软件界面Fig.11 Periodic test software interface
通过对NASPIC 平台的定期试验软件需求的深入分析,设计了“生成模板+导入”的形式实现了对试验用例的快速批量生成,选用了文件作为主要的数据存储格式,符合试验数据的特性,提高了软件运行效率;使用多个状态标志位来标识试验执行状态,确保了试验结果的正确性;通过对函数和类的合理封装,降低了代码冗余度;对人机界面进行设计,使其风格上与工程师站软件界面保持一致,让用户使用时更加习惯;对于重要功能设计多种形式的入口,提高了软件的便利性。该NASPIC 平台的定期试验软件的设计满足核安全级DCS 系统的高可靠性的要求,可为核安全级DCS 系统定期试验软件设计提供参考。