全范围模拟机虚拟DCS通信故障的分析与处理
2020-08-31韦雄徐田玉刘海云
韦雄 徐田玉 刘海云
摘要:某核电模拟机项目从建设到投运一直存在过程仿真平台与虚拟安全级DCS平台开始建立网络通信连接时频繁失败,需要重复多次连接才能成功的问题。为此,通过抓包分析、模型侧DCS任务源码分析以及安全级平台软件底层程序逆向分析,最终妥善解决了此问题。同时,对模拟机虚拟DCS通信模式的设计提出了新的见解。
关键词:模拟机;MELCO;虚拟DCS;通信;配置
0 引言
近年来,在国家安全、高效发展核电政策的积极引领和支持下,发展核能成为我国未来实现能源可持续发展的必然选择。核电站运行人员必须经过严格的筛选、培训,并具备一定的资质和能力后才能上岗,这样才能保证核电的安全性。核电站全范围模拟机是核电站操纵员培训和考试的必要设备,是核电工程建设的重要设备之一。全范围模拟机一般由模拟核电站控制室的前台监控和显示设备、后台电厂设备状态和运行参数仿真计算过程模型、后台电厂数字化控制系统仿真模型、教学控制系统以及计算机群等部件组成,能够连续、实时地模拟电站的运行,包括模拟正常运行的稳态/瞬态工况、异常工况和事故工况等,所以也被称为“虚拟核电站”。模拟机通过对参考电站动态仿真模型的连续、实时、迭代数值计算,将核电站各种运行工况下的设备状态和运行参数显示在模拟的控制室各种显示或指示设备上,同時,通过故障模拟和从模拟控制设备上接受人工操作信号,模拟机可以预测核电站在人工干预和设备状态变化情况下的核电站运行瞬态工况和事故工况的各种运行参数,从而为人们提供了一种与实际核电站控制室相类似的模拟环境,满足核电站操作人员的培训和考试需求,也可以用于应急演习、设计验证以及运行分析等。
1 存在的问题
某全范围模拟机的后台计算机系统由电站过程仿真(某仿真平台)以及DCS仪控仿真组成,其中某仿真平台主要完成过程模型的仿真(包括工艺流程、电气网络等),而DCS仪控仿真基于仿真度的考虑,多采用虚拟仿真或实物仿真的方式。该全范围模拟机的DCS仪控仿真采用虚拟仿真方式,由虚拟非安全级DCS(广利核)和虚拟安全级DCS(三菱)组成,完成对工艺系统逻辑控制的仿真。仪控仿真平台与过程仿真平台之间通过网络通信进行数据交换来模拟电站现场工艺设备与仪控系统的线缆连接。该核电模拟机项目从建设到投运一直存在着以下问题:在过程仿真平台与虚拟安全级DCS平台开始建立网络通信连接时频繁失败,需要重复多次连接才会成功。
2 原因分析及处理
过程模型服务器通过调用安全级和非安全级DCS提供的API接口来完成与两者之间的连接和数据传输。实际的实现过程中,为完成过程模型服务器与虚拟DCS之间的通信,共设计了3个组件:FSS_xxxx.exe(安全级DCS),yyyyGW.exe(非安全级DCS),DCS.exe(过程模型侧),其中DCS.exe通过调用(safetycom.dll/nosafetycom.dll)API函数完成与安全级FSS_xxxx.exe和非安全级yyyyGW.exe的通信。全范围模拟机的通信进程如图1所示。
这3个组件分别运行在过程模型服务器、非安DCS L1服务器以及安全级DCS L1服务器上,并配置有同一网段IP,过程模型服务器为10.0.0.Z,非安DCS L1服务器为10.0.0.Y,安全级DCS L1服务器为10.0.0.X。在模拟机启动过程中,先由非安DCS、安全级DCS启动,准备好各自仿真程序,然后由过程模型服务器仿真平台侧启动DCS通信任务,以此建立与非安DCS、安全级DCS的通信。过程模型服务器的通信设计如图2所示。过程模型服务器的DCS通信任务DCS.exe,一方面作为TCP client,连接非安DCS的yyyyGW的5AAA端口,另一方面建立TCP SERVER,在端口6BBB监听,等待安全级网关的连接。非安DCS服务器的通信设计如图3所示。非安DCS启动完成后,由yyyyGW.exe网关程序建立一个TCP SERVER,在端口5AAA监听。安全级服务器的通信设计如图4所示。安全级服务器的FSS_xxxx.exe作为TCP CLIENT连接模型服务器的6BBB端口。
在实际模拟机使用过程中,当非安DCS和安全级DCS仿真程序均已启动成功后,在过程模型服务器上启动DCS通信任务与非安DCS、安全级DCS建立通信连接时,总是有较大概率出现报错“Send all DCS task:Can not connect to MELCO DCS!”,与安全级DCS建立连接失败,向供货商反馈一直没得到妥善解决,答复意见是模型仿真平台DCS通信任务里与安全级DCS通信部分是由三菱公司设计的,是个黑匣子,该通信组件仅提供如图5所示的API接口。为什么安全级FSS_xxxx.exe有时会没连上模型仿真平台的6BBB端口呢?我们对FSS_xxxx.exe的通信进行了抓包,如图6所示。
经过计时分析统计,在安全级DCS启动完成后,就不断向模型仿真平台服务器的6BBB端口发包请求,每次发3个包,1 min发15次(共45个包),也就是大约每4 s发1次。通过逆向分析三菱的FSS_xxxx.exe程序,如图7所示,发现程序设计的也是循环每隔3 s就向过程模型服务器发送1次连接请求,加上网络延时时间,3K服务器收到数据包也就在4 s左右,与抓包分析结果一致。
通过查看模型服务器的DCS通信任务源代码,加载任务时调用的TASKINIT()(运行时调用TASKMAIN(),卸载任务调用TASKDONE())相关代码如下:
从上面可以看出,模型仿真平台启动与DCS的通信任务时,在6BBB端口监听,时长为m_uConnectionTimeout,如果收到安全级DCS的发包,就能正常建立连接,如果没收到,就会连接失败报错,其中SafetyCommOpen()是melco提供的safetycomm.dll的接口函数。
m_uConnectionTimeout默认为2 s,通过在安全级服务器抓包可知,这个时间小于发包时间间隔4 s,一旦是在这个间隔中3K服务器加载DCS任务都会导致连接失败。通过上面的分析,修改配置文件DCS.INI里ConnectionTimeout_ms = 5000即可解决问题。
3 结语
从整个模拟机的通信设置来看,最初设计的过程模型3K仿真平台与MECLO虚拟DCS通信的机制不合适,整个模拟机的控制,包括加载、运行、停止、冻结等操作都是由过程模型仿真平台的教控台发出,这样安全级DCS在启动完成后,不知道过程模型仿真平台何时加载通信任务开始建立通信连接,只能被动地不停地向过程模型服务器发包请求直到被接受,因此,最佳的通信设计模式应该是在建立DCS通信时,由安全级DCS建立一个TCP SERVER,监听等待过程模型仿真服务器发起连接建立通信渠道。核电站的仪控系统近年来均由传统的模拟硬盘台向数字仪控的DCS发展,基于仿真度和安全性考虑,基本都采用独立虚拟DCS方式对其进行仿真,因此,不可避免地需要设计与过程模型仿真间的通信,通信模式的设计应该考虑虚拟DCS通信网关采用TCP SERVER方式,而模型教控台侧通信程序采用TCP CLIENT方式为宜。
收稿日期:2020-07-06
作者简介:韦雄(1978—),男,湖北黄冈人,工程师,研究方向:核电站模拟机运维。