基于人机共融的包装机故障诊断系统的设计与实现
2022-07-09张明琰方世杰
张明琰,宋 震,方世杰
(1.河南中烟黄金叶生产制造中心,郑州 450000; 2.杭州首域万物互联科技有限公司,杭州 311199)
0 引言
常见的设备故障报警方法没有故障诊断的功能:当传感器测到某物理量的值出现过大偏差时,系统会显示报警编号。用户必须对照手册,自行诊断导致故障的原因。随着工业4.0和物联网时代的来临,这种基于经验和手册的设备维修方式仅对于简单的设备有效,但不能满足对复杂设备的要求。本文以烟草行业的ZB45型卷包机为研究对象,基于故障树和贝叶斯推理网络,旨在提出一种具有不断自我学习能力的人机共融的新型故障诊断系统。
本文研究方法的关键思想是要结合人的因素,进行人机共融(Human Machine Integration)[1]的故障诊断,并在三方面尝试创新的技术方案。首先,采用自然语言处理的方法,通过历史工单和维修手册,自动生成故障诊断用的贝叶斯网络和故障搜索用的知识图谱。对数千种故障的复杂系统而言,这样不但可以大大节省人力,也可以减少人为错误的可能,并且可以快速处理新工单,融入知识库。其次,基于贝叶斯网络,实现自学习功能。当工人确定故障源后,可以点击“故障确认”按钮,通知算法正确的结果。这样,算法可以不断改进诊断精度。最后,在故障处理中引入“人本传感器”的新概念,让工人点击界面上的标签,输入工人所观察到的现象。有效克服传感器数量远远小于故障数量的问题。让用户作为传感器,帮助算法尽量唯一地确定故障源,加速排错过程。本文提出的人机共融的诊断系统,不但可以在人为工单数据中挖掘信息,还可以通过在日常操作中学习工人经验,同时借助人本传感器提高诊断效率。通过人机紧密合作,实现了在工业4.0场景下,新型故障诊断系统的范式。
1 ZB45型包装机故障诊断研究现状
1.1 ZB45型包装机及其故障诊断的必要性
烟草行业的ZB45型包装机是用于烟支卷接和包装的设备,具有结构复杂、设备贵重、小故障停机次数多、连锁质量波动大、次生浪费较多的特点。其内部有约10 000个零部件,约2 000种故障,约1 500个OPC故障报警代码(OPC代码)。故障和OPC代码之间是多对多的对应关系。有约1 300种可导致停机的故障没有对应的OPC故障报警代码。ZB45包装机在高速生产运行过程中,包装机极易因各类原因产生短时高频停机,根据对生产环境的统计,单班停机次数平均约为45次,会造成严重的生产效率损失。同时,包装机的频繁启停会使多个关键工序存在加热、升温等不断调整的状态,使包装工艺的质量稳定性变差。同时包装机在每次重启后设备都需自动剔出固定数量的烟支,造成原、辅料浪费,产生巨大的成本损失。
1.2 传统故障诊断方法存在的问题
包装机产生故障的成因很多,往往会在任意时刻、任意部位产生不同类型的故障。以ZB45包装机的铝箔纸系统为例,可能产生的故障就有数十种,仅其中“铝箔纸撕不开”这一种故障,又会有多种因素与其相关。由此可见,对包装机的准确故障诊断难度极大。
在现阶段,包装机故障主要依靠维修人员的经验,对故障进行经验性的诊断,主要技术手段是以手工查找纸版手册和维修记录为主,故障诊断存在耗时长、具有主观性的问题,极大依赖于人员经验,技术传承性较差,往往会导致大量故障停机时间。特别是对于一个OPC代码对应多个可能故障的情况。而维修手册只记录各种故障可以导致的现象,并且手册有几千页之多。不但查找困难,而且很多故障诊断的经验没有书面记录。有经验的工人要根据故障代码,结合自己的观察,及历史故障频次来判断最有可能的故障。而这种被高频“依赖”的经验常常没有书面记录,动辄需要五年、十年的经验积累。
随着制造业信息化进程的推进,卷包机数据采集系统实现了从ZB45包装机提取大量实时运行数据,包括运行参数、故障统计、台时产量、物料消耗等信息,同时也建立了基于EAM系统相关的设备故障维修记录。但是两个系统独立运行,系统与系统间缺乏有效的关联策略来实现数据和信息的融合,需要对获取的数据进行更深层次的处理和分析,从各系统数据进行关联挖掘,以得出有效、可固化传承的故障诊断及设备维护类知识,并应用到生产过程中。
1.3 相关技术背景
1.3.1 常见的故障诊断方法
传统的复杂设备故障的诊断主要包括如下方法:
1)故障树:通过故障树的方法[2-3]建立从传感器可测的故障现象到故障的自动推理引擎。这种方法也常被称做专家系统。如图1所示的故障树,不同的故障可以通过逻辑“与”、“或”、“非”的方式关联,共同决定下一级故障发生与否。故障树方法可以用于系统可靠性分析,及单一故障情况下的故障诊断。
图1 故障树部分展示
2)贝叶斯网络:另一类方法是通过如贝叶斯网络[2,4]的统计学方法,对多个故障及其故障概率进行自动推理。这类方法需要用户构建以故障和现象为节点的有向无环图 (DAG,directed acyclic graph),并输入条件概率表 (CPT, conditional probability table) 和先验概率以表征不同节点之间的连接关系。如果有足够历史数据,条件概率表和先验概率都可以从数据中得出。这种方法比故障树的表现力更强。故障树可以转换为贝叶斯网络的形式[2],但反之则不一定成立。贝叶斯网络的方法可用于大型生产制造系统[4]、楼宇空调[5]的故障诊断及故障冗余控制系统[6]。基本的朴素贝叶斯网络假定故障之间独立出现,即故障出现的概率不会相互影响,同时,故障出现的概率不随时间而变化。动态贝叶斯网络扩展了朴素贝叶斯网络的时间域上的表现力,从而允许出现时变的概率分布。
3)观测器:如果要通过观测模拟量来分析故障情况,可以采用观测器的方法,并通过在线传感器数据估计系统内部状态。例如:卡尔曼滤波器(Kalman filter)或粒子群滤波器(particle filter)是常见的基于模型的系统状态观测器。对于只有模型结构,但不了解参数的系统,还可以采用在线模式识别的方法,例如在线ARIMA或N4SID的算法等[7]。
4)数字孪生:近年来,数字孪生(digital twin)[8-10]的概念得到研究者和工业界的重视,并从3D模型延展到在线监测应用。对于大型的工业控制系统,如石化企业的分布控制系统(DCS, distributed control system)[10]及暖通空调系统[11],想要手动建立系统的动力学模型是非常困难的。对这类应用,通过组合子系统的数字孪生而构建全系统的动力学模型是个更好的方案。文献[12]提出了采用在线数字孪生的方法,对暖通空调设备进行在线故障监督和诊断。
1.3.2 自然语言处理技术和知识图谱
近年来,以深度学习为基础的自然语言处理得到了广泛的工业应用。对设备故障诊断而言,设备维修工单记录和维修手册是故障诊断系统建模和分析的重要数据来源,其描述形式基本上是自然语言。然而,直接通过阅读自然语言,手工建模的方法成本高,时间长。利用自然语言处理技术是提高故障诊断系统建模的有效手段。早期的应用主要以针对关键词的统计为主[13]。美国海军采用了自然语言处理的方法对V-22鱼鹰飞机的维护资料进行了系统的分析整理[14]。通过基于Python的NLTK自然语言处理工具包[15]进行分词, 该方法识别了维修记录中的自然语言记号,并对核心词进行了统计学分析。在此基础上,可以对历史上相似的故障维护工单进行聚类,并通过统计方法分析改进维修的手段。针对烟草机械维护的自然语言处理应用还很少见。文献[16]讨论了烟草机械维护数据库的自然语言处理方法,采用常规的TF-IDF及TextRank模型进行数据建模,然后通过权重矩阵比较实际故障记录与故障数据库中已有故障记录的相似程度,由此进行对同类故障记录的模糊查找,但是其本身并不直接用于故障诊断。当涉及到具体行业知识时,这种模糊查找方法效果不太理想。
知识图谱[17]是一种描述实体之间语义关系的有向图结构。传统的知识图谱一般存于图数据库中,如Neo4J, Dgraph等。近年来,随着人工智能和深度学习的兴起, 出现了神经网络和知识图谱相结合的流派。例如,DeepWalk[18]可以通过深度学习来学习网络的结构。通过深度图卷积网络(DGCN, deep graph convolution network)学习轴承的振动信号,文献[19]提出了一种可以进行故障原因诊断的学习系统。 开源软件Deep Graph Library (DGL)[20],可以把多种网络结构的数据向量化,并嵌入到神经网络中。 利用已有的知识图谱构建技术。我们通过维护手册和工单数据构建知识图谱,并由此生成贝叶斯网络模型,用于故障诊断。
2 人机共融的故障诊断系统
2.1 人机共融的新型交互方式
人机共融被认为是工业4.0时代的重要场景之一[1]。关于工业机器人的人机共融[21]及离散生产线的人机共融[22]已经有一些成功经验。但对于故障诊断系统的人机共融方式还未见相关报道。我们以ZB45卷包机为实验对象,提出一种故障诊断系统,旨在提高故障诊断效率、降低故障停机时间,并对故障的原因、部位与维护策略进行全面分析,进而实现增效、稳质和降本的效果。其核心思想是通过人机共融的有机合作引导工人监督系统不断学习,解决现有故障建模中缺乏文字描述经验的难点。本系统人机共融的特点主要体现在:1)建立基于贝叶斯网络的可扩展故障诊断架构,可以利用OPC代码、用户标签选择、传感器信号等多模态信息,进行自动故障诊断推理;2)通过人机共融的有机合作,向用户提供标签,并接收反馈;学习用户潜在经验,不断提高诊断精度;3)通过自然语言处理的方法,分析历史工单数据,自动构建推理用的贝叶斯网络,减少手工建模时间。
系统的整体维护工作流程如图 2所示,其中,机械设备的传感器采集信号处理后产生各类报警信号,并利用相关事件检测算法,触发事件后传送给贝叶斯网络。事件监测算法可以看作与内置的OPC代码报警相同,都是触发事件的布尔量。而维修人员产生历史工单,经过自然语言处理模块进行分析,以生成故障知识图谱,并用于初始化贝叶斯网络。工单的信息经过自然语言处理,生成初选标签,经凸优化过滤后,产生足够的精选标签,供维修人员选择。标签中一般包括维修人员可以看到或听到的各种现象。作为对传感器信号的有效补充,标签可以看成另一种“人工”的传感器。它们也可以触发贝叶斯网络的事件。
图2 人机共融的卷包机故障诊断系统流程图
下面将依次介绍诊断系统中核心的贝叶斯网络推理运算、知识图谱应用和标签选择的凸优化算法,然后给出诊断系统的整体界面功能。
2.2 故障树建模
目前在ZB45包装机应用中积累了维修工人师傅的大量维修记录,但是记录存在标准不一、记录不全、故障重复等问题。在维修工人师傅经验的帮助下,从数十万的维修数据中,清洗整理出1 751条完整的故障维修记录,并将故障现象和机器位置相关联,形成故障树,同时对每个故障所对应的故障编码进行对应,通过这种关联,实现对故障的推送。故障树具体结构参见图1,故障树与故障编码的关联如图3所示。
图3 故障树与故障编码关联
2.3 基于贝叶斯网络的推理运算
因为OPC代码和故障之间是复杂的多对多关系,难以用简单的逻辑表达,所以本文采用贝叶斯网络进行自动推理。首先,通过图3说明其推理的机理。贝叶斯网络的概念在图4(a)和(b)中显示。其中,贝叶斯网络图4 (a)表示了故障和故障现象的因果关系;而图4(b)是条件概率表 (CPT, conditional probability table)。CPT表是对贝叶斯网络图中箭头的定量注释。如,从事件A到事件C的箭头第一行表示当故障A、B出现的概率为0%时,现象C不出现的概率为100%,而C出现的概率显然为0%。贝叶斯网络图中的每个节点是个事件,如故障或现象。图中箭头表示从原因到结果的相关关系。本文中,故障是指不能通过传感器数据直接判断的源头故障,而现象是指可以通过传感器数据直接测量的现象。对诊断系统而言,主要注意的是多个故障导致一个现象的网络,对这类网络的诊断显然需要一定经验。如图4 (a)所示,如果只知道C发生了,显然无法唯一地确定究竟是故障A,还是故障B发生了。但是算法可以利用贝叶斯定理分别估计两种故障发生的概率。
图4 贝叶斯网络
假定故障A和故障B都可能引入事件C。其中事件是可检测的,而故障是不能直接测量的。当事件C发生后,我们可以根据贝叶斯公式估计A出现故障的概率如公式(1):
(1)
其中:P(A),P(B)是故障的先验概率,可以通过统计历史上A和B发生的频率计算;P(C|A),P(C|B)分别是A或B发生时C发生的条件概率。如果根据行业知识,当A发生时C一定出现,则P(C|A)为100%。当缺少行业知识,或者希望通过大数据提高故障诊断的准确性时,可以从维护日志(工单)数据中生成CPT表,进而计算条件概率。统计一段时间内各事件发生的次数后,则条件概率P(C|A)可以计算如公式(2):
(2)
其中:NAC是一段时间内事件A、C同时发生的次数,而NA是事件A发生的次数。类似的,可以计算CPT表内其它条件概率,如P(C|B)可以计算如公式(3):
(3)
而NBC是事件B,C同时发生的次数,而NB是事件B发生的次数。先验概率P(A),P(B)的计算方法分别为公式(4)、公式(5):
(4)
(5)
其中:NA,NB,N分别为事件A, B和所有事件发生的次数。
上述的贝叶斯网络有数千个节点,手动构建网络工作量大。我们引入知识图谱来自动构建大型贝叶斯网络。知识图谱的构建需要获知实体和实体之间的关系,即所谓的三元组信息。获取三元组有两种方式:1)从设备维修手册中获取结构化的三元组关系;2)从工单记录数据库中描述故障原因的句子中提取三元组。第二种方法要用到自然语言处理中的依存句法分析。首先对句子做分词和词性标注,然后分析词与词之前的关系得到句法分析树,然后遍历句法分析树,得到可能的三元组。综上,可以从数据中得到了若干三元组,比如:(故障,发生,现象)、(部位,属于,部位)等,其中,“故障”、“现象”等名词作为实体,“发生”、“属于”等动词属于关系。实体作为拓扑图中的节点,而关系作为拓扑图中的有向边,构建了一张有向图,即我们的知识图谱。之后,通过Python程序构建知识图谱。部分知识图谱呈现于图4(c)。
知识图谱中有关故障和现象的三元组可以构建贝叶斯网络的结构。其它的三元组可以用于模糊搜索类功能。我们采用pyArgum[23]实现贝叶斯网络的构建和推理。软件包pyArgum的后端是由C++实现,速度快。而其丰富的可视化功能可以很好地解释推理的过程,利于开发调试。
2.4 基于凸优化的标签选择算法
根据图2的流程图,为了提高诊断效率,采用中文分词工具“结巴分词”[24],对如图4(d)中的维修记录进行自然语言分析。图中observation和OPC string两列分别表示维修开展前工人经常观察到的现象及维修结束后工人对故障的总结。Observation一列中可以由分词方法生成初选标签。结巴分词主要是基于统计方法来实现分词,如隐马尔科夫模型(HMM, hidden markov model)。利用结巴分词的用户词库功能,我们建立了领域特有词库和停用词库,用于识别行业专业词汇及可忽略的词汇。经过分词,针对每个OPC代码得到如表 1所示的初选标签。表中每行对应一个故障源,每一行的标签组合都不同,意味着用户只要在图 7中选择足够的标签,就可以唯一的确定故障源。但是如果有太多的标签,会影响用户的工作效率。因为故障总量数以千记,显示需要自动化的算法。标签选择算法的目标是“尽量减少图中总标签个数”,同时“保持每行有独立的标签组合”。表 1是标签选择之后的效果。这些工单都对应同一OPC代码的9个不同故障。其中每行工单描述了一个不同的故障现象。初选标签是由自然语言处理选择的。而精选标签是通过基于凸优化的标签选择算法,在初选标签组中选择的。在初选标签组中共有37个独特标签,而精选标签组共有11个独特标签。
表1 标签选择例子
下面对标签选择算法进行数据建模。首先,需要用一个数学指标表示“保持每行有独立的标签组合”的思想。在此先通过比较简单的例子说明其建模过程,再拓展概念。假设有3个标签,X1,X2,X3,记X1=1为选择此标签,而X1=0为不选此标签。显然,所有标签选择的组合是如图 5中单位立方体的每个顶点。顶点A的角度坐标为X1=0,X2=1,X3=0即[0,1,0]。说明当标签数Nt=3时,最多可以表达8个独立的故障源,记为Nf=2Nt=8。引入向量ai为第i个故障对应的标签组合, 矩阵A=[a1,a2,…]。于是每个ai对应图中一个顶点。如故障1对应a1=[1,0,0]T,即点C。故障2,3分别对应A和H。对应单位立方体的体积:
图5 标签选择算法的物理意义
当然,这样定义的局限性在于A1只能是方阵。为了解决这一问题,我们尝试引入统计学理论的费舍尔信息矩阵 (FIM, fisher information matrix)[25-26]M。 当M为A1A1T,费舍尔信息可理解为立方体体积的平方:|detM|=|detA1A1T|=1。当有两个故障的标签重复时,例如:
这时|detM|=|detA2A2T|= 0,表明M可以表征标签出现重复。这样,可以分析任意多个故障组合。例如,当M为所有顶点时,|detM|=|detAAT|=32。
下面,针对标签选择的应用,重新定义M如下。
定义 1 (标签选择信息矩阵):
(6)
其中:ai是第i个故障的标签选择列向量;A=[a1,a2,…];Pi是个布尔量代表第i个标签组合是否被选中。
为了保证线性变化后优化解不受影响,在最优实验设计时一般用D-最优(D-Optimality)做为目标函数,记做ψ(M)=-logdet(M),这样,可以基于以前的传感器选择算法,采用以下的凸优化算法[25]求解:
pi∈[0,1]
pi∈R
(7)
2.5 人机共融视域下的故障诊断及设备维护专家系统实现
基于上述原理,本文开发了完整的人机共融故障诊断及设备维护专家系统。首先,用户可以通过图 6的首页大屏浏览车间情况。全车间的数据以图文并茂的方式分别在左、中、右三列展示出来。其中左列显示各线路设备运行情况,中列显示设备作业效率,右列展示故障历史数据。当设备出现新的故障时,右下角推送信息可以提醒用户注意。当用户在左侧导航选择一个正常工作状态的设备时,可以看到如图6的设备页大屏。在中间即时地显示了历史故障记录、OPC代码、故障说明、故障时间、排查时间、停机时间、有效作业时间等信息。
图6 可视化大屏
当某设备出现OPC报警时,用户可以点击左侧导航条上相应的设备图标,并进入如图7所示的自动诊断页面。右侧显示了推荐的诊断结果,包括置信度、故障信息、维护方法、“故障确认”按钮。一个OPC代码可能对应多个故障。为了减少右侧诊断结果的数量,中间栏下方显示了故障标签。标签是通过算法在维修记录中里抽取的关键词。其中很多是用户可以直接观察到的现象。用户可以通过选择合适的标签,帮助系统更精准的诊断。当用户经过检修,确认正在发生的故障后,可以点击相应的“故障确认”按钮以通知系统。系统可以学习各故障出现的概率。这样可以帮助系统未来再推荐更准确的诊断结果。因为传感器数量有限,有时设备停机后没有OPC代码。这时,用户需要通过如图 7的手动诊断界面来定位故障。工人可以通过图7(a)的下拉菜单选择故障位置,之后用中间的标签缩小推荐范围,其过程和自动选择类似。
图7 诊断界面
3 诊断系统的生产成效
通过对比系统部署前后月份的万箱故障数据,如表2和表3所示。从中可以看到,系统部署后一个月的故障次数为46次,万箱故障次数为46/69 296.4*10 000=6.63,而部署前一个月的故障次数是64,万箱故障次数为64/66 232.2*10 000=9.64,同比万箱故障次数下降31.2%。
表2 系统部署后一个月的万箱故障数据
表3 系统部署前一个月的万箱故障数据
通过分析该时间段内发生频次最多的前20个故障数据,得到部署后的故障维修时间平均降低了22.22%。故障统计汇总数据如表4所示。
表4 系统使用前与使用后故障处理情况对照表(频次前20)
故障诊断系统的性能指标中,故障辨识的精确性是指对故障的大小机器事变特性估计的准确程度。我们通过统计故障确认位置在系统推荐的前三故障位比例,作为系统的故障辨识精确率,如式(8)所示。表5是OPC编号为10136的CH输入阻塞故障确认位置的详细数据。
(8)
如表5所示的故障辨识精确度为14÷15=93.33%。 表6列出了总共10个故障代码及其对应的辨识精确度统计情况。
表5 故障位置确认情况样例(CH输入阻塞故障)
表6 10个故障代码的精确度统计结果
4 结束语
面向复杂设备的故障诊断问题,本文以ZB45包装机故障诊断为考察目标,提出了一种实现人机共融的故障诊断系统。系统整合了自然语言处理技术、知识图谱技术和贝叶斯网络理论,主要创新点如下:1)通过对历史工单的自然语言处理,自动生成知识图谱和贝叶斯网络;2)针对故障代码 (OPC 代码)少于故障源的问题,鼓励用户通过选择标签的方式来提高诊断精度。同时,利用用户反馈,提高贝叶斯网络诊断精度;3)结合自然语言处理和凸优化的方法,提供少而精的标签。通过对历史工单的自然语言处理,进行标签初选。随后采用凸优化算法选择恰好足够的标签给用户选择。通过系统实际运行测试,证明该系统能有效降低设备的万箱故障次数,有效减少故障维修时间,提高了设备故障诊断效率。