基于纯模拟仿真的核级仪控系统定期试验脚本辅助设计软件的设计与实现
2019-12-28张旭黄鹏彭韬刘全东张子鹏李晓龙李俊
张旭,黄鹏,彭韬,刘全东,张子鹏,李晓龙,李俊
(中国核动力研究设计院核反应堆系统设计技术重点实验室,成都610213)
1 背景
核电厂安全级DCS 实现事故工况下紧急停堆和启动专设安全设施的重要功能,正常运行时是“不动”的,因此无法直接判断系统是否存在故障。通过系统的自诊断功能能够覆盖系统的绝大部分故障,部分未能覆盖的可通过定期试验完成,即定期试验是为探测安全级DCS 的故障和检查其可运行性,按计划的间隔时间所进行的试验。其中T2 试验是验证逻辑功能的正确性,一般基于编写的脚本逐步进行,通过给定输入值的组合,观察输出值是否符合预期,以此来验证逻辑功能的正确性,T2 脚本示例如表1 所示。T2 脚本设计与执行过程如图1 所示。
纯模拟(Simulation)仿真技术是指,采用不同于原系统的另一套开发环境下的建模技术来复现参考机组的系统或子系统[1]。纯模拟仿真技术中可采用翻译模拟(Translation)的方式,利用翻译软件实现工程应用文件在不同平台中的映射转移。利用翻译软件实现工程应用文件的跨平台,可辅助进行测试脚本输出预期值的计算。
表1 T2 脚本示例
2 脚本辅助设计软件设计
2.1 软件需求分析
定期试验脚本由多列测试步骤组成的,每一步包含输入值、输出预期值与输出实测值。输出预期值在测试之前填写,是输入值经过算法运算的理论结果。输出实测值由上位机带动下位机进行计算,并与输出预期值比较,生成定期试验结果。
工程师站(Maintenance Station,MTS)的算法组态信息包含仪控系统应实现的算法,通常以算法块连接的形式展现。定期试验脚本辅助设计软件(Script Assisting Design Software,SAD)应能够通过读取工程师站的算法组态信息,结合预设的定期试验设计原则,考查设计人员设定的输出点,列出影响该输出点的输入点集合。设计人员通过分析算法逻辑,设计上述输入点的数值集合,形成测试步骤。由SAD 计算脚本输出预期值,完成脚本设计。
2.2 软件功能设计
针对2.1 小节所述软件需求,设计基于SAD 的脚本辅助设计流程。设计人员在工程应用软件中选择待考察的系统与待考察输出点。SAD 软件解析MTS 编辑的工程应用软件,分析算法块连线关系,汇总与待考察输出点相关的输入点信息。
SAD 将影响输出点的所有算法逻辑映射到Simulink 软件平台,形成Simulink 算法文件。SAD 的核心计算模块基于Simulink 软件实现。Simulink 是Math-Works 公司MATLAB 软件的子软件,实现控制系统的仿真功能,广泛应用于科学研究、工程设计等工作中,可靠性与行业认可度高。由设计人员根据SAD 提取出的输入点集合与影响该输出点的算法设计脚本的步骤与输入值。再返回SAD 软件,将设计人员设定的输入值逐步代入Simulink 软件,计算输出预期值,写入脚本文件,完成脚本的设计过程。基于SAD 的脚本辅助设计流程图如图2 所示。
2.3 SAD软件设计与实现
为实现2.2 小节所述的软件功能设计,SAD 的架构分为4 个模块,包括输入读取模块、逻辑分析模块、映射算法模块、计算与结果导出模块。
(1)输入读取模块
不同平台工程师站绘制的工程应用软件的格式不同。输入读取模块实现工程应用软件组态文件格式向SAD 定义的数据格式的转换。从各种工程师站绘制的不同格式的组态文件中,将信息抽离出来,并存入SAD自定义格式的“图(Graph)”结构中。
图2 基于SAD的脚本辅助设计流程
从工程应用软件组态文件中可以解析出控制站数量、每个控制站每种卡件的数量、变量在板卡中的分配信息,每页组态图的算法块连接关系等。组态图中的算法块称为节点。节点包括三种:接口图符、算法块、变量(中间变量、输入输出变量、参数变量)。
Graph 结构是节点和连接关系两种信息的集合。节点记录了组态文件中每个节点的信息,连接关系记录了节点之间的连接关系。这两种数据信息实现了将组态文件信息的重构。
以C#语言实现SAD 为例,定义结构体Item、Line分别表示一个算法块和一条连接线,于是与考察输出点相关的一套算法逻辑的相关信息可用两个链表记录,即:
public static List
public static List
输入读取模块是对items、Lines 的填充。对于二进制格式存储的源文件,可采用特定结构体解析的方式读取其内容,对于不需要解析的源文件格式,可直接提取其内容,并填充items、Lines。
在系统架构设计层面,输入读取模块实现了核心部分与被读取文件的实质性分离,即无论源文件是何种格式,都可通过只修改将输入读取模块实现软件的迁移,增强通用性。
(2)逻辑分析模块
逻辑分析模块对输入读取模块得到的运算结果进行分析,对每个输出变量进行分析,从该输出变量出发,按照组态逻辑图的连接关系,逐层递归寻找与输出变量相关的算法块。与输出变量相关的算法块形成树状(Tree)结构的数据结构,Tree 结构从某个输出点开始追溯,记录影响它的每个输入点及其影响方式,即记录每条逻辑链路经过的算法块。当算法逻辑在组态文件中出现跨页情况时,由逻辑分析模块将页间逻辑连接起来。当出现环形或两条线路汇合的情况时,交汇处的算法块分别记录在两条支线上,并在映射算法模块中予以合并。
该模块具体功能由以下函数实现:
publicvoidGetTree(string Start_Point);
publicList
publicvoidGet_Tree_After_Vertex(TreeNode_NewcurrNode,Vertex Start_Vertex);
publicList
图3 逻辑分析模块执行过程
在查找相连图符时,应注意只查询由一个图符的输出端口连向另一图符的输入端口连线,避免出现死循环的情况。
(3)映射算法模块
为了在Simulink 平台上重构组态逻辑算法,需在Simulink 平台先预先建立合适的算法库、建立映射规则、完成算法块和连接关系的映射。映射算法模块实质上起到了仿真技术中翻译软件的作用。
Simulink 的算法库应包含工程应用软件中可能用到的所有算法块,按照一一对应的映射规则将算法块映射到Simulink 平台。算法块可使用Simulink 平台自带的算法块进行封装,也可用S 函数的形式实现每种可能出现的算法块,并集成在Simulink 中新建的算法库Library。
SAD 驱动Simulink 进行自动画图,即自动地在Simulink 中复现组态逻辑。映射过程包括两步,首先是在逻辑分析模块提取的树状结构中按层级逐层将算法块映射到Simulink 平台,然后按照工程应用软件的连接关系自动地将算法块在Simulink 平台重新连接。
另外,Simulink 软件的变量没有“质量位”的概念,所以对于工程应用软件中变量包含质量位的情况(值与质量位组合),SAD 需要用两个变量来表示,算法库中该算法块的端口也应增加。
图4 基于Simulink平台的算法映射过程
图5 Simulink平台算法库
(4)计算与结果导出模块
基于映射到Simulink 平台的组态算法以及输入值的组合,可进行仿真,计算出对应的输出值。计算与结果导出模块实现将计算结果导出的某种文件格式的功能。该模块相对于内核部分是独立的,即对于不同的导出格式或样式的脚本文件,只需要修改该模块即可,保证了内核部分的通用性。
基于Microsoft Excel 编写的测试脚本可通过引用Microsoft Excel 14.0 Object Library 库文件进行读写操作。C#语言的实现形式为:
usingMicrosoft.Office.Interop.Excel;
SAD 与Simulink、Excel 三种之间的联合交互关系如图6 所示。
图6 SAD与Simulink、Excel交互关系图
3 实例分析
以中国核动力研究设计院研制的核安全级仪控系统NASPIC 平台为例进行实例分析。NASPIC 平台的工程师站软件为NASPES,脚本文件采用Excel 编写。
以某简单逻辑为例。4 个数字量输入信号经过4取2 表决判断后,取反,形成输出值,驱动具体设备的开关。
图7 组态示例
SAD 运行读取NASPES 的工程应用软件,形成的Simulink 平台模型如图8。
图8 Simulink平台上自动生成的模型
由于该模型仅用于做算法仿真计算,不作为用户观察分析使用,因而在图符的坐标大小与坐标摆放中,仅使用最简单的不重叠原则即可。
整理后的该图如图9 所示。
图9 整理后的Simulink平台上的模型
对于非简单树状结构,本文所述的SAD 处理流程仍具有良好的仿真效果。
为便于观察,本文这里使用不考虑质量位模式,并将仿真结果使用Simulink 平台的Display 模块直接显示仿真结果。
图10 一种非简单树状结构情况
当四个DI 值分为给定1、1、0、1 时,自动生成下图,计算结果为0,正确。
图11 仿真结果验证1
当四个DI 分别给0、1、0、0 时,自动生成下图,计算结果为1,正确。
图12 仿真结果验证2
按照完整的流程,以某设备驱动的定期试验脚本为例。截取形成部分脚本如表2。
4 结语
本文所述采用纯模拟仿真的技术路线可在其他需要脱离实体下位机进行组态逻辑运算功能的情况下得到更广泛的应用。该方法根据定期试验具体需求进行适当仿真,相较于虚拟实物(Emulation)[1-3]等仿真技术路线,该方法具有简单快捷的优势,对仿真运行环境要求低,实现仅需MATLAB 软件即可。
本文设计的脚本辅助设计方法中,仍有一个关键步骤需要人工参与,即脚本的中每一步的输入值确定的过程。由于该步骤情况过多,同时过于依赖人的思考,以至于不同的设计人员设计的脚本也不尽相同,因而难以抽象出较为确定的逻辑语言。而由于以往的核安全级仪控系统工程项目数量过小,积累的经过验证正确的脚本数量远远不足以采用大数据的思想智能化的解决该问题。一个较为理想的解决方法是采用对开关量枚举、对模拟量读取阈值的办法。该方法具有可行性,但会导致脚本过长。故本文采用半自动方法设计整套体系,将影响考察系统的输入点采集与仿真计算两个步骤自动化,节约工程设计人员的时间降低错误率。
表2 脚本结果