1 引言
PLC作为一种成熟稳定可靠的控制器,目前已经在工业控制中得到了越来越广泛的应用。PLC系统的设计直接影响着工业控制系统的安全可靠运行。一个完善的PLC系统除了能够正常运行,满足工业控制的要求,还必须能在系统出现故障时及时进行故障诊断和故障处理。故障自诊断功能是工业控制系统的智能化的一个重要标志,对于工业控制具有较高的意义和实用价值。
故障诊断一般有两种途径:故障树方法和专家系统方法。故障树方法利用系统的故障逻辑结构进行逻辑推理,由错误的输出找到可能的输入错误。这种方法比较适用于系统结构相对简单,各部分耦合少的情况。专家系统方法通过建立系统故障的知识库与推理机,计算机借助现场的数据利用知识库和推理机进行深入的逻辑推理,找出故障原因。这种方法适用于系统结构复杂,各部分耦合强的大型工业系统。
本文根据故障树推理与专家经验规则推理相结合的方法,以某火电厂输煤控制系统的设计为例,介绍了一种利用PLC和上位计算机进行故障诊断的PLC系统设计。
2 系统设计
故障诊断系统建立在基于PLC和上位计算机组成的控制系统上。PLC在故障诊断系统中的功能主要是完成输煤系统设备故障信号检测、预处理,转化存储并传输给上位计算机。上位计算机由于具有强大的科学计算功能,利用专家知识和专家库,完成从故障特征到故障原因的识别工作。并通过人机界面,给出故障定位,报告和解释故障诊断结果,并为操作员给出相应的排除故障的建议。
3 PLC程序设计
在进行故障诊断设计时,首先必须对整个系统可能会发生的故障进行分析,得到系统的故障层次结构,利用这种层次结构进行故障诊断部分的设计。以火电厂输煤控制系统的故障结构为例。为了描述简单,这里作了一定的简化。图1为系统的故障层次结构。
图1 系统故障层次结构
系统故障结构的层次性为故障诊断提供了一个合理的层次模型。在进行系统的PLC梯形图程序设计时,应充分考虑到故障结构的层次,合理安排逻辑流程。在引入故障输入点时应注意:必须将系统所有可能引起故障的检测点引入PLC,以便系统能及时进行故障处理;应在系统允许的条件下尽可能多的将最底层的故障输入信息引入PLC的程序中,以便得到更多的故障检测信息为系统的故障自诊断提供服务。
(1) 故障点的记录
为了得到系统的故障情况实现系统的故障自诊断,PLC必须将所有故障检测点的状态反映给内部寄存器,图2是用来记录故障点的部分程序。
IR4.02是输入的IO节点,表示A侧皮带信号,当输煤系统使用A侧皮带正常运行时4.02的值为1,当4.02变为0时,说明A侧皮带信号出了故障,此时利用上升沿微分指令记录这次的信号跳变。这样这次事故就记录在IR31.00中。程序设计中将IR31作为记录底层故障信息的寄存器,由于内部寄存器IR有16位,所以能够记录16种不同的故障原因。如果有更多的故障需要记录,可以设置多个寄存器字。需要说明的是,有时引起故障的原因可能不止一个,往往一个故障会引起另一些故障的发生,因此还有关键的一点是程序要能记录最先发生的故障。这也需要通过PLC编程实现,程序只对最开始发生的故障敏感。
图2 记录故障的部分PLC程序
(2) 多次故障事件的记录
由于系统实际长时间的运行中,可能会出现多次故障,为了检修和维护方便,还需要PLC能够将多次故障事件记录下来。OMRON C200H型PLC的数据存储区(DM区)可以间接寻址,利用这一点,可以在DM区划出一定的区域,用来记录每次故障事件,包括故障类型和事件发生的时间(日期,小时,分钟,秒)。这一段DM区域可以循环记录,实际使用中记录了最后50次故障的情况,这些记录是系统运行的重要资料,方便了运行人员了解设备情况,对其进行检修和维护。
[NextPage]
(3) 模拟量故障的诊断
对于模拟量信号例如犁煤车,给煤车电机电流的故障诊断,首先利用模拟量模块,接收来自电流变送器的模拟信号,将其转换为数字信号,然后与整定值或系统允许的极限值比较,若在允许范围之内则表明对应的设备处于正常运行状态,如果实际值接近或达到极限值,则为不正常状态。判断故障发生与否的极限值根据实际系统相应的参数变化范围确定。
(4) 各种故障信息的串行通信
上位机通过串行通讯及时读取PLC的内部寄存器区的各种故障信息。利用PLC的RS232通信接口,可与上位计算机进行Host bbbb方式串行通信。通信时,上位计算机首先向PLC发出一帧命令帧,包括操作命令、寄存器类型、起始地址与要读取的寄存区数目等。PLC收到命令帧后会做出响应,如果没有错误则向上位计算机发出响应帧,响应帧中包含了上位机需要查询的寄存器值。
上位计算机通过读取数据寄存区的值来获取当前PLC的工作状况,同时上位计算机对PLC的控制也可通过对该区的写操作来完成。具体的通信实现可以参考相关资料,这里不作详细论述。
4 借鉴专家系统故障诊断方法的实现
系统故障结构的层次性为故障诊断提供了一个清晰的层次模型,可以利用基于模型的故障树法。但是在进行比较详尽的故障诊断以及系统故障存在耦合时,仅仅使用故障树法是不够的,必须借鉴专家系统的方法。
(1) 面向对象的“知识对象”, 大大提高了故障诊断的推理效率
在传统的专家系统中,知识被组织成知识库的形式,推理机进行推理时,要从知识库表示的所有空间中搜索所需的知识。这种方法有搜索空间大,推理效率低的缺点。“知识对象”的概念可以解决这一问题。“知识对象”是一个逻辑概念,它利用面向对象的方法,将知识源和黑板都表达为对象,在知识对象的内部封装了专家系统和推理机、解释器。当相应的知识对象被激活后,就在对象内部进行推理,大大提高了推理效率。根据系统的实际情况和故障推理的过程,在这里知识对象被具体化为故障节点。故障节点是进行诊断推理的基本单位,诊断信息在故障节点间层层传递,故障节点内部利用这些信息进行推理并最终确定故障原因。
图3为系统部分故障节点的层次结构。图3可以看出,故障节点在结构上以虚线为分界线分为两个部分。上一部分层次清晰,在这一部分可以采用基于故障模型的故障树方法;下一部分由于结构复杂,耦合性较强,构造模型困难,可采用专家系统的推导方法。
图3 故障节点层次图
故障节点呈网状分布,1个节点可能有1个或多个父节点,也可能有1个或多个子节点。子节点和父节点之间的关系由故障层次和子节点故障层次来表示。如节点1的子节点故障层次为1,而节点2和节点3的故障层次为1,则节点2和节点3是节点1的子节点。故障层次和子节点故障层次不仅指明了故障节点结构上的层次,而且也隐含了推理规则。
(2) 对象类型与推理节点
对象类型表示该故障节点在故障推理中的作用,它可分为3类:根节点,叶节点,推理节点。根节点的故障由它的子节点产生,应到其子节点中去继续推理。叶节点是底层故障。叶节点没有子节点。推理节点是故障诊断规则最为集中的节点,检测节点可以视为推理节点的子节点,它为推理节点的推理过程提供相关的信息。我们在推理节点并不是判断该节点是否存在故障,而是利用推理节点封装的规则库与推理机,结合检测节点提供的信息进行故障推理,找出故障原因。
(3) 故障节点的检测方式
地址段是节点的位置(本系统中是PLC中的寄存器)。数据段根据用户的需要可以为一个或几个,数据段中数据的定义与节点的性质有关。检测方式表明在该节点系统进行何种操作。主程序根据故障节点的检测方式选取相应的处理函数。该函数是检测手段与推理规则的结合,故可称之为检测/推理函数。一方面它可以检测故障节点本身的状态,另一方面使用推理机制进一步推断故障原因。性质类似的节点使用相同的检测/推理函数,利用地址段和数据段中的值加以区别。
(4) 各节点的注释段要有相应帮助信息
各节点的注释段不仅能记录故障的原因和维修方法,还可以记录其他的帮助信息。有时因系统的检测手段不完备,或规则不完全,推导过程要进行人机对话。这时候如果节点的注释段中有相应帮助信息,可以给用户以提示或指导用户进行操作,使推理能顺利进行。
本系统的故障诊断通过在上位计算机上用VC6.0开发的应用程序实现,集成在上位机监控系统中。在运行中给操作人员提示,指导用户进行操作,了解设备状态,判断故障发生原因,并可给出相应的维修建议。用户也可以对故障诊断进行指导和修正。
5 结束语
按以上故障诊断原理构造的故障诊断系统在火电厂输煤PLC控制系统中得到了应用。从实际运行来看,故障诊断系统能准确而迅速地判断出故障的原因,方便运行人员维护和检修,大大地提高了控制系统的稳定性和智能化水平。这种设计对类似的工业控制系统提供了一定的参考。