王梦月,李鸣谦,万 欣
(1.中国核电工程有限公司,北京 100080;2.华北电力大学控制与计算机工程学院,北京 102200)
电站需要监视的参数多达上万点,报警信号之间的潜在关联复杂,固定阈值报警的限值范围难以覆盖所有情况,机组在正常运行和故障运行中的特征难以被分辨,运行人员判断难度大[1]。尤其是在大范围异常工况时,几十甚至上百个报警同时出现,即使熟练的进行人员也难以及时、准确地识别报警的扰动源。目前,核电站全厂分布式控制系统(distributed control system,DCS)的报警功能只是将参数的超限信息罗列出来,缺乏主动分析诊断的能力,通常仍需由运行人员按照运行规程或报警卡,根据报警、参数偏差、安全动作等信息作综合分析后,才能确认故障原因并采取相应措施。其工作量大、难度高、实时性差,存在由于运行人员操作不当或操作不及时而导致设备损坏,甚至引发事故产生与扩大的风险。因此,亟需引入先进的预警和诊断技术,为运行人员提供更加快速、完备的故障处理判据。
现代工业的过程控制中广泛应用的智能预警和诊断技术,可以实现对生产过程中关键对象的状态变化进行连续监测。当故障或事故发生时,该技术可以自动报警并判断发生何种故障,快速定位扰动源,使运行人员能够及时、准确地采取合理、有效的措施,从而排除故障或避免事故。
对于不同行业、不同对象、不同故障类型,由于特性和判据不尽相同,预警和诊断的方法也不同。设备级的故障诊断研究成果包括基于神经网络、深度学习等技术的传感器故障诊断[2]、机械设备故障诊断[3-4]等。系统级的故障诊断理论和方法研究成果包括基于深度学习、故障树等技术的控制系统故障诊断[5]、事故预测及故障诊断方法[1]、决策支持系统[6]等。其中,针对核电站相关的故障诊断技术还在探索阶段,尚未成熟应用。
本文对核电站故障预警和诊断的具体功能需求展开分析,结合核电站监控对象的特征以及不同智能算法的特点和应用场景,提出了适用于核电站的智能故障预警与诊断方案。
根据不同的故障诊断判据和人员及人工智能认知方式划分,本文将针对以下三种情况对核电站的故障预警和诊断进行功能需求分析。
①依靠报警快速判断的故障。对于丧失电源、丧失热阱、丧失压缩空气、放射性屏障破裂等事故,通常可以通过某一个或某几个报警信号直接判断该事故是否发生。当报警触发时,仍需要运行人员根据报警卡逐项排查才能确定事故原因。对于此类事故,需要利用人工智能技术辅助运行人员快速、准确地进行故障诊断。
②仪表通道故障。通常可以根据同一参数冗余测点之间的数值关系判断仪表是否故障,并用冗余仪表的测量值代替故障仪表的测量值。但受经济性和安装布置等因素限制,并不是所有参数都具备设置冗余测点的条件。对于冗余程度不足的测点,需要利用人工智能技术为其构建冗余测量模型,以实现仪表通道故障预警。
③需综合分析判断的故障。在核电站紧急停堆或安注信号触发后,机组的热工水力模型会产生较大波动,相关参数的变化规律复杂且互相关联。此时,无法直接通过报警信号判断事故,需要结合由事故所引起的多个参数的变化量及其变化趋势,经运行人员综合分析后,才能对事故作出判断。如蒸汽管道/给水管道破裂、蒸汽发生器传热管破裂、一回路冷却剂丧失、丧失全部给水等。对于此类事故,需要利用人工智能技术为其建立故障预警模型,从而实现故障预警功能。
核电站智能故障预警和诊断总体方案涉及的核心算法主要有卷积神经网络(convolutional neural network,CNN)、堆叠自编码(stacked auto-encoder,SAE)网络、故障树分析(fault tree analysis,FTA)等。核电站智能故障预警和诊断总体方案如图1所示。
图1 总体方案Fig.1 General scheme
故障预警是指依靠报警信号和其他参数综合分析,在事故发生不明显、影响范围小、程度轻的初期发出故障警报,以避免事故的发生。核电站物理对象往往是非线性、强耦合、随机性极强的,因此基于模型的预警技术在实际应用中受到限制。随着计算机技术和智能仪表的发展和应用,核电站生产过程中的重要参数能够以更高的采样频率、更高的精度被获取。大量存储的历史运行数据中蕴含了系统不同状态下的特性,因此可采用基于数据驱动的预警技术。
在基于数据驱动的预警技术中,浅层的机器学习算法,如支持向量机、K近邻算法以及反向传播神经网络在小样本数据、单一工况的故障预警实践中有较好的表现[2-3]。然而,在面对大数据样本、噪声信号覆盖力强、变工况等复杂情况时,浅层网络的特征提取能力不足,预警的精度难以达到较高水平[4]。深度学习算法在这方面则更具优势,如CNN和SAE网络。CNN在二维图像识别领域体现出优秀的自学习能力和特征提取能力,有应用于故障预警的潜力。CNN在船舶微小故障研究[4]、电机轴承振动信号故障诊断[7]中已有较好应用。SAE网络作为一种无监督学习算法,对数据的要求更低。现场数据往往是无标签的。SAE网络能充分挖掘这些数据的深度特征,在缺乏故障样本的预警方面体现出明显优势[8]。SAE网络自学习输入数据的特征,使输出尽可能接近输入,也就是SAE网络能够提取输入信息中的本质特征。在缺乏故障数据的情况下,使用SAE网络模型学习正常特征也是一种预警思路。因此,本文选用CNN和SAE网络进行故障预警,对于难以用智能算法建模的故障采用结合趋势分析的阈值预警的方法。对于仪表通道故障,本文采用冗余值比较算法实现故障预警,在冗余度不足的情况下优先采用SAE网络构建冗余测量模型。
故障诊断技术[5,9]包括基于解析模型、基于信号处理与基于人工智能三类。基于解析模型的方法(如基于观测器、基于滤波器、等价空间和集员估计等)与故障预警所面临的困境相似,其建模精度难以满足需求。基于信号处理的方法(如小波分析和经验模态分解等)具有易于实现、动态实时性好的优点,但对潜在的故障诊断准确性不高。此外,在数据量巨大的情况下,基于信号处理的方法工作量大、诊断效率不高。基于人工智能的方法可分为基于知识、神经网络、定型模型和数据挖掘。其中,基于知识和神经网络是人工智能故障诊断技术的重要分支。其基本思路分别是:将待诊断领域长期的实践经验和大量故障信息转化为计算机适用的规则知识库,模仿专家的推理方式设置推理规则,结合实时数据与生成的规则知识库进行分析和推理,推算出故障的原因、程度和位置等;使用历史数据训练分类器,通过对比实际值与分类结果之间的差异特性检测故障。由于核电站安全程度高、故障数据样本不充足,若使用神经网络可能会面临数据分布不平衡的问题,导致模型性能难以得到保证。基于知识的诊断方法更加稳定、可靠,可以将核电站已有的诊断规程、专家经验等转化为计算机能识别的语言,建立智能化、自动化的故障诊断知识库。因此,本文选用基于知识的FTA[6]来实现故障诊断。
针对前文所述“需综合分析判断的故障”,本研究方案设计基于SAE网络的故障预警、基于CNN的故障预警、结合趋势分析的阈值预警三个功能模块。基于SAE网络的故障预警模块应用于缺少故障数据的对象。基于CNN的故障预警模块应用于故障数据充足的对象。结合趋势分析的阈值预警用于参数的阈值预警。针对前文所述“仪表通道故障”,本研究方案设计仪表通道故障预警模块。
3.1.1 基于SAE网络的故障预警模块
①确定用于SAE网络建模的输入/输出变量。
核电站各系统一般都具备明确的物理结构,可以根据各系统的输入/输出关系,确定对预警参数有明显影响的相关变量。其中,某些预警变量的影响因子较多,还可能包含一些冗余量,由其产生的大量历史数据会增加神经网络模型训练负担,影响模型精度。因此,本研究方案采用神经网络灵敏性分析法对输入数据进行筛选,选择有代表性的典型类型数据用于SAE网络的模型训练。
②历史数据采集及预处理。
仿真机模拟运行各个工况,获得全面覆盖各工况的正常运行数据,保证数据采集过程具有足够的遍历性。对所采集的数据进行离群点剔除、空值位置判断和缺失值填补(样条插值法)等数据预处理操作。
③SAE网络模型训练。
采集到的样本被分为训练集和测试集,以提升模型的泛化性。其中,训练集的样本用于训练,根据系统输入/输出变量个数以及系统复杂度,调整深度神经网络模型的隐藏层层数、节点数、权重、学习率、训练代数等参数,通过前向传播和反向传播进行反复训练以优化网络参数,直至SAE网络训练模型收敛。测试集的输入变量被送入训练好的模型中,以比较模型预测值与测试集中的输出值。当误差满足要求,则完成训练;否则,重复模型训练过程。
④预警模型测试。
训练完成后得到的SAE网络预警模型,学习到的是各个工况下相关变量在正常运行状态下的特性。将仿真机中相关变量的实时值作为模型的输入,并由模型输出该变量的预测值,对预测值与实际值进行相似度分析。若输入模型的变量处于正常状态,则模型预测值与实际值相似度较高,在可信区间内。若输入模型的变量处于故障状态,由于模型并未学到故障特性,模型预测值与实际值相似度较低。当相似度不属于可信区间时,模型发出故障预警。
3.1.2 基于CNN的故障预警模块
①确定用于CNN建模的输入/输出变量。
针对不同的系统,在建立故障预警模型前需要根据实际情况确定模型的输入变量。本研究方案主要借助专家经验及相关性理论,选择有代表性的典型参数作为故障预警模型的输入变量。
②历史数据采集及预处理。
历史数据采集及预处理流程同3.1.1节。
③CNN模型训练。
本文基于仿真机模拟机组运行过程产生的正常工况和故障工况数据,依据故障敏感性选取相关参数作为故障预警模型的输入,采用端到端的一维CNN[7]构建故障预警模型。该模型能够将数据预处理、特征提取和故障识别三大功能整合到一个模型中,支持多传感器、多通道的输入数据。
采集到的数据被划分为训练集和测试集,以提高模型的泛化性。其中,训练集的样本用于训练网络模型,根据系统输入/输出变量的个数及系统复杂度,调整CNN模型的卷积核尺寸、数目、权值、学习率、丢弃率、训练代数等参数来训练模型,直至模型收敛。将测试集数据输入到训练好的模型中,直到模型收敛时完成训练;否则,重复模型训练过程。
④预警模型测试。
CNN预警模型训练完成后,将输入变量实时值输入模型,预警模型判断系统的实时状态,直接输出预警结果。
3.1.3 结合趋势分析的阈值预警模块
仿真机模拟运行各个工况,采集各工况下的运行数据,历史数据采集及预处理流程同3.1.1节。根据不同类型的报警阈值,如正常值、上限值、下限值,结合趋势分析结果,如上升、下降、持平或周期变化,判断当前参数是否有越过报警阈值的趋势,并输出预警结果。
3.1.4 仪表通道故障预警模块
冗余程度不同的测点采用不同的方法进行故障预警。对于单一仪表的测点,本研究方案采用SAE网络建模的方法计算出预测值,将预测值与实际值进行相似度分析。对于双冗余测点,本研究方案采用SAE网络建模构造第三个冗余仪表值,再进行冗余值比较。对于多冗余测点,本研究方案直接通过冗余值比较完成故障预警。
①基于冗余值比较的仪表通道故障预警。
对于含有三个及以上仪表的多冗余测点,由仿真机模拟各个工况运行,采集多冗余仪表的检测数据,采用冗余值比较算法对比各仪表的信号周期与信号幅值。当某一仪表所测得的信号与其他仪表所测得信号在周期或幅值上的差异超过报警阈值时,预警模型发出报警,以实现仪表通道的故障预警。
②基于SAE网络的仪表通道故障预警。
对于单一仪表的参数X,结合工艺流程和专家知识,筛选出A、B、…、N这几个与X相关性强的参数作为输入,按照3.1.1节所介绍的方法建立SAE网络预警模型并进行训练。将仿真机中的实时数据送入SAE网络预警模型,将模型输出的预测值与实际值进行相似度分析。当相似度不属于可信区间时,预警模型发出报警信号,实现仪表通道的故障预警。
对于双冗余的仪表,通过人为构建第三个冗余仪表进行冗余值比较,完成仪表通道的故障预警。构建冗余仪表的方式与处理单一仪表测点的方法类似,对于参数X,结合工艺流程和专家知识,筛选出A、B、…、N这几个与X1、X2相关性强的参数作为输入,建立SAE预警模型。模型训练好之后,能计算出参数X1、X2的预测值X与X1、X2构成冗余,并进行冗余值比较。当三者之中的任一数值在周期或幅值上的差异超过报警阈值时则发出报警,实现仪表通道的故障预警。
针对前文所述的依靠报警快速判断的故障,本研究方案设计故障诊断模块。将核电站的报警逻辑、操作规程、运行经验等信息进行筛选分析后形成专家知识库,将其中的专家知识用程序语言描述,梳理相关逻辑关系并转换为故障树模型。故障诊断模块采用树搜索的方法,根据触发的故障历史数据,按照故障树模式逐层搜索故障原因,确定故障根源[10],并显示故障处理方法,从而辅助决策。
本文根据核电站故障预警和诊断的功能需求,针对不同的应用场景,设计了基于SAE网络的故障预警模块、基于CNN的故障预警模块、结合趋势分析的阈值预警模块、仪表通道故障预警模块和故障诊断模块这五个功能模块,并提出了各功能模块的详细设计方案。本方案为核电站智能故障预警和诊断系统的开发提供技术支持,将推进核电行业的智能化发展。后续将按照本文提出的方案,基于核电站仿真平台完成系统开发并投入测试,进一步对本方案进行验证和完善。