余冠华 雷焕宇
【摘 要】在核电厂DCS系统中,要求控制器冗余并且在切换过程中没有扰动。本文讨论了控制器切换扰动的测试方法,并通过测试数据进行了分析,找到了控制器切换过程中造成扰动的原因。在产品进行了改进后,进行了回归测试,验证了改进后的产品消除了控制器冗余切换的扰动。
【关键词】控制器冗余;控制器无扰切换;数据抓包分析;上下行数据
一、引言
集散控制系统(DCS)因为其控制集中,危险分散的特点,与核电厂的控制策略非常吻合,因此在核仪控领域得到广泛的应用。伴随着核电自主化的战略目标,国内核仪控企业都在努力研发自主DCS产品。其中DCS控制器的无扰切换指标,在所有核电厂的技术规格书中都会有硬性要求必须满足,所以该指标也是研发DCS产品过程中投入较大的一项产品需求。
在控制站中,控制器通常成对配置,一主一备。两个控制器同时参与数据的采集和运算,但只有主控制器进行输出。上行数据发送给监控网络,再由通信服务器发送给上位机进行监视和控制;下行数据通过总线发送给输出板卡,将信号送至现场执行设备。当满足控制器切换条件时,如主控制器故障、主控制器关键进程错误等,则主备控制器切换,备控制器变成主控制器。业内普遍认为,控制器冗余无扰切换要求在切换时,对上行数据和下行数据的扰动不超过一个周期。
本文讨论在DCS产品研发过程中控制器无扰切换的测试方法,并对测试实例分析,由此改进产品,并通过回归测试来验证改进后的指标。
二、测试方法
上行数据切换扰动测试方法:在模拟量输入通道用信号发生器加载三角波信号,在上位机可以观察波形。在通信服务器抓数据包,观察控制器发送至通信服务器数据。当控制器发生切换时,通过上位机的实时趋势和历史趋势可以观察到是否有扰动发生,通过抓数据包可以确定由不同的控制器发送数据从而确定切换发生的时间,同时可以观察到扰动发生的具体细节。
下行数据切换扰动测试方法:对控制器进行组态,让其一直下发三角波信号,并在对应的模拟量输出通道串联一个250欧电阻,在电阻两端并联一个示波器,可以看到控制器输出的三角波信号波形。当控制器发生切换时,通过示波器可以观察到是否有扰动发生。
基于以上的测试方法搭建测试环境,确认控制器没有发生切换时上下行数据发送正常。通过拔出主控制器来模拟故障导致控制器切换,并记录切换瞬间的波形和数据包。
三、测试实例及分析
选取一个控制站搭建测试环境,并拔出主控制器造成主备切换。测试结果如下:
(1)上行数据切换扰动
在上位机观察实时趋势和历史趋势,发现实时趋势正常,但历史趋势有扰动。通过查询历史数据,发现在切换过程中有一个数据包丢失了。
通过网络数据抓包,发现控制器发送给通信服务器的切换时间仅为0.070879s,小于控制器100ms计算周期,也小于400ms周期發送数据给通信服务器的时间,但是还是发生了历史数据丢失。通过对测试抓包数据分析,我们发现了如下图的情况。
红框中是试验中的一次切换过程,3RRI401MD是通过控制器发送给通信服务器的值,通过在通信服务器抓取解析后的数据发现的现象,2018-1-31,10:30:48.362为切换前的最后一个数据440.271088,2018-1-31,10:30:48.468为切换后发送的第一次数据,间隔约0.1s,但是发送的数据是切换前的2个数据包,这两个数据是没有被存到历史服务器中的,真正被历史服务器存储的数据是2018-1-31,10:30:48.766的数据428.216824,在红框中用红细线圈的地方可以发现,在这个数据之后又发送了440.271088和428.216824,由于这两个数据的时间戳和之前是一样的,所以历史库并不会再次存储这些数据。下一次有效的数据2018-1-31,10:30:49.422的数据402.571968。
通过数据分析可以发现,控制器切换过程中丢失的历史数据,实际上控制器是发送给通信服务器了的,甚至还重复发送,但并没有存入历史库。在分析控制器和通信服务器的软件代码后,我们发现了问题原因:
控制器为避免切换时丢数据包,当切换完成,备控制器变为主控制器后,先发送一个重发包,以保证无扰切换。但是在测试中发现了不止一个重发包,通过抓包发现二层服务器下发了重发命令。但是在第一次重发包接收后,没有及时清除定时器,导致继续重发数据包,占用了正常数据发送的时间,从而导致了历史数据无法正常存入历史库。
(2)下行数据切换扰动
在示波器观察下行数据波形。主备控制器切换的过程中,下行数据切换时间为0.16s,用示波器记录的波形如下:
图中X1对应的时间为切换的时刻,X2对应的时间为切换后的时刻,X2-X1=0.16s。由于控制器的逻辑扫描周期为0.1s,所以此次切换的时间为0.06s~0.16s,扰动小于一个扫描周期的时间,说明控制器下行信号可以实现冗余无扰切换。
通过以上的测试我们可以发现,控制器冗余切换过程,对于上行数据是有扰的,对于下行数据是无扰的。
四、改进及回归测试
通过上述的测试和分析结果,我们定位了控制器冗余切换时上行数据扰动原因,以此为依据修改了产品。具体修改方案为:当通信服务检查到切换并收到重发包后,清除定时器;控制器端修改原来备控制器包序号策略,备控制器包序号由原来不计数,修改为每组一包后加1。这样就避免了重发数据包挤占正常数据发送的时间。
回归测试结果如下:
以控制器192.168.1.105切换到192.168.1.5为例,开始192.168.1.105这个IP所在的控制器作为主控制器,通过在一层工程师站抓包,分析数据发现如下情况,切换前最后一次发送给通信服务器的时间为
两组数据时间差为0.205213s,即此次控制器上行数据切换所用的时间为0.205213s,控制器将数据发送给通讯服务器,通过对通讯服务器内存变化抓取数据,发现如下情况
上述数据是在主通讯服务器内存中抓取的数据值的变化情况,可以看出加粗部分的时间差为0.207s,与一层工程师站计算的切换时间相吻合,两组数据与前后数据的间隔分别约为400ms,与正常情况下上行数据包的发包周期相吻合。从发送数据看没有重发和不正常值,说明控制器发送至通信服务器的数据包正常。
下面通过历史服务器的数据库和历史趋势进一步说明。下图历史库数据,选中部分是切换前后的数据,从数据上可以对比切换前后的数据,切换前2018-04-08 19.22.23.367的值为11.81104,切换后2018-04-08 19.22.23.571的值为5.50288,与通讯服务器中抓取到的数据值是一一吻合的。下图上位机历史趋势,是观察点3RCP003MI的历史趋势,红线对应的时间切换前后的时间,从图中可以看出历史趋势是连续平滑的。
加粗部分的为切换前后的两次数据,可以看出上位机的值与通讯服务器的值完全一致,并未发生丢失,切换前后的数据与完全一致,数据间隔时间约为400ms,符合上行数据包的周期时间间隔。
通过回归测试可以发现,控制器冗余切换时,实时数据和历史数据都没有丢失,可以认为产品在经过改进后,切换时上行数据没有扰动。
五、结论
本文讨论了DCS控制器冗余的测试方法,以及对发现问题的改进和回归测试。需要特别指出的是,导致控制器切换的条件不止一种,测试要考虑覆盖率的问题,每种切换条件都应该尽量测试到。本文讨论的是其中比较有代表性的切换条件,其他切换条件的测试在方法上是大同小异的。从测试的结果来看,本文的测试方法是有效的,对问题的定位是准确的,修改方案也是合理的。
参考文献:
[1] 核电厂非安全级平台研制平台需求规格书,CNCS,2016
(作者单位:中核控制系统工程有限公司)