基于CLIPS的数控机床故障诊断专家系统研究*

2015-11-24 08:36何彦虎钱振华朱建伟问朋朋
机械制造 2015年9期
关键词:人机界面数控机床语句

□ 何彦虎 □ 钱振华 □ 朱建伟 □ 问朋朋

湖州职业技术学院机电分院 浙江湖州 313000

基于CLIPS的数控机床故障诊断专家系统研究*

□ 何彦虎 □ 钱振华 □ 朱建伟 □ 问朋朋

湖州职业技术学院机电分院 浙江湖州 313000

针对数控机床的故障诊断,提出了基于专家系统的智能故障诊断方法,阐述了其实现的基本原理、专家系统的基本组成和开发步骤。对目前CLIPS与高级语言VC++的混合编程进行了优化,并对混合编程的方法进行了介绍。叙述了CLIPS与VC++基于文本平台交互的基本原理与实现方法,该方法弥补了传统的基于VC++开发环境的不足,大大提高了开发速度与质量。最后,对基于FAT的数控机床故障分析进行说明,并对开发过程进行了介绍,以实例形式说明了专家系统开发的过程,对其它基于CLIPS的专家系统开发具有参考价值。

推理 故障诊断 专家系统 CLIPS

数控机床是制造业最常用的设备,它集机、电、液于一体,复杂性高,维修难度大,对维修人员的要求极高,即使一个经验丰富的维修师,有时也需要比较长的时间去维修,因此智能化的维修方法近年来得到广泛的研究和应用。智能化维修理论主要有:基于模糊集的维修方法,基于神经网络的维修方法,还有比较常用的基于专家系统的维修方法。专家系统可以将专家的维修思想用智能化语言实现,维修的时候,只需要查询专家系统,便可以得到比较满意的维修方法,更重要的是专家系统可以不断地再学习和完善。目前已经有较多的专家系统得到成功应用,其编程一般采用智能化设计语言完成。CLIPS是继Prolog之后被广泛使用的人工智能语言,它是用C语言实现的,继承了Prolog语言的优点,并进行了改进,因效率高,可移植性强而得到广泛的应用[5]。CLIPS是产生式专家系统开发工具,结构简洁,采用模块化编程,与C、VB、Pascal等语言的兼容性强。VC++不擅长逻辑推理,但在人机界面及数据库操控方面优势明显,而CLIPS在逻辑推理方面功能强大。因此,二者的混合编程能产生良好的效果。文献[1]采用Define Function函数实现二者的交互,文献[2]采用故障树的方法分析故障,文献[3]采用了实体的故障分析方法,在交互模式上采用了函数指针方式,文献[4]采用了基于VC++环境的交互方式。

1 CLIPS基本组成

CLIPS的优点在于良好的可移植性和高效模式匹配算法,其构成的专家系统包括:规则(Defrule)、事实(Deffacts)、推理(Agenda),如图2所示。

事实由关系名(Relation Name)及槽值(Slot)组成,表示已知的信息。事实一般先用自定义模板定义事实结构,形式如下:

在推理时,CLIPS会把所有的事实添加到存储器中,并提供了添加事实库指令 (Assert)、删除事实(Retract)指令等多个关于事实的操作指令。

规则是推理的相关知识,其格式如下:

CLIPS的推理循环可分为4个阶段:①模式匹配,按照算法扫描知识库中所有规则,把规则的前件与当前事实相匹配;②冲突消解,当多条规则同时被匹配时,根据预先确定的冲突消解策略,确定触发规则;③激活规则,调用匹配所触发规则的所有事实;④动作,CLIPS推理机重复上述循环,不断地扫描规则的模式,并把匹配成功的规则激活,放入议程(Agenda)之中。

2 专家系统结构设计

依据专家系统原理,故障诊断专家系统主要组成有:事实库、推理机、知识库、解释机构及人机界面等部分,系统的总体结构如图1所示。

领域专家把相关的知识输入到专家系统中,即以规则表示的知识表示出来,则专家系统的推理过程可以模拟专家的推理过程,进而满足用户的需求。数据库也称“黑板”,主要用来存储相关领域的事实、数据等信息。推理机是实现专家系统推理的一组程序,是根据数据库的内容,按照某种推理策略,运用知识库的知识完成推理,是专家系统的主要任务,推理方法有正向推理和反向推理,策略常用广度优先和深度优先策略。

▲图2 专家系统结构

3 CLIPS与VC++交互的关键技术

目前CLIPS版本仍是基于命令模式,人机界面主要由VC++完成,这就要求二者之间进行交互。CLIPS与VC++的交互模式基本有两种:基于VC++环境和基于CLIPS环境两种:前者的基本思路是,CLIPS只实现推理功能,其它功能如读(Read)、写(Printout)、人机界面等功能全部由VC++实现,CLIPS类似一个函数,被高级语言调用,实现其推理功能,这种方式目前使用最多,这种方式的最大不足是CLIPS的许多功能由VC++完成,即没有利用好CLIPS的强大功能,也增加了VC++开发的工作量,另外,调试必须在VC++环境下,速度较慢,而且也得不到CLIPS的调试信息;后者的基本思路是,由VC++实现其人机界面功能,其它的功能由CLIPS实现,调试在CLIPS环境下,特别适合程序的调试,因为调试时系统会提供大量的调试信息,速度快,比较方便,而且与VC++的版本关系不大,方便移植,但是必须要解决一个难题,就是如何改进CLIPS编程,以便让VC++识别。这种交互的基本组成构架如图3所示,笔者采用后者完成。

▲图3 CLIPS与VC++交互示意图

这种交互的要求是在CLIPS环境下调试的程序不改变或很少改变后便能被VC++识别和执行,要实现这个要求,关键是解决Printout和Read语句的处理。

3.1 CLIPS与VC++交互环境的构建

要实现二者的交互,首先需要一个clips.dll的动态库文件和包装类文件CLIPWrap,二者在Clips的网站上可以下载。为了让VC++可以调用CLIPS中的类,需要把clipwarp文件夹中的dynclips.h和dyaload.h两个头文件添加到VC++的include文件夹下,并把clips.dll和Clips.lib、rsvarcol.cpp和Rsvarcol.h放到VC++的工程目录下,以便让VC++搜索到,这样,工作环境就建立了起来,VC++可以调用clips的所有函数了。

3.2 用printout语句实现交互的方向控制

在Clips下,(printout f“”)表示将信息显示到终端设备上 (默认是显示器),如要求在VC++的edit编辑框中显示信息,则使用下述语句:

3.3 read语句

因为在CLIPS环境下read语句默认的是从显示终端上获取数据,而VC++在执行这条语句时,并不是从显示器终端上获取数据,所以不处理就使用将会造成死机或不能用。许多开发者不得不将该语句转换成相同功能的高级语言来实现,使程序结构变差。利用下面的语句将会很好地解决这个问题,CLIPS从InFile. txt文件中读数,而VC++向该文件中写数,InFile.txt是数据交换的缓冲区。

4 故障诊断专家系统的CLIPS实现

数控机床由机床本体、伺服系统、主轴伺服系统、检测系统、CNC系统、液压润滑等组成,是典型的机电一体化产品,其故障类型多,维修复杂。要实现专家系统的故障诊断,首先要建立故障的分析方法,目前最常用的是故障树分析法 (FTA),FTA是20世纪60年代发展起来的大型复杂系统的分析方法,故障树能比较直观地表达故障,可靠性和安全性好。实现故障推理,一般要进行规则库和事实库的定义和编程、定义故障树、初步调试、人机界面的编程、联调等过程。

4.1 知识表示

专家系统的知识表示方法很多,为了便于推理,笔者采用了如下定义方法:

(deftemplate N (slot Fnum)(slot name)(slot type)(slot question)(slot yesN)(slot noN)(slot answer)(slot CF)(slot weight)(slot threshold));Fnum是故障编号,name为故障结点名,yesN表示可信度为1的结点。cf为可信度,weight为权重,threshold为阈值,当故障比较模糊的时候会用可信度表示。

4.2 事实定义

事实定义可以用deffact定义。

(N(fnum 1)(name root)(type decision)(question "跳过断路器接入电源,工作是否正常?")(yesN node1)(noN node2)(answer nil)(CF 0.7)(weight 0.2)(threshold nil))。

4.3 VC++侧编程

首先要完成初始化工作,调用类OnInitDialog()实现,主要完成初始化、加载知识库等动作,关键语句如下所示:

推理是专家系统按照知识库的规则,从事实库中提取事实,完成推理,关键的语句是:

加载事实是加载事实库,即将事实文件打开,主要语句是:

4.4 调试

调试工作一般是在CLIPS环境下进行,由此系统运行速度很快,而且错误提示清楚,提高了开发速度,调试界面如图4所示。

▲图4 调试界面

4.5 建立数控机床故障诊断树

故障树由顶事件、中间事件、底事件组成,中间事件是顶事件的故障现象,底事件是中间事件的故障发生原因。为说明专家系统的构建,现从一个实例进行说明故障树的CLIPS表示方法,如图5所示。

▲图5 推理关系示意图

各节点代表的含义:

A:过电流报警(用故障代号fnum表示)。

B:先关断电源,十分钟

后合闸,断路器是否跳闸。

C:请检查速度控制板二极管模块Ds是否短路。

E:模块损坏更换新模块。

F:无故障,可以继续工作。

D:请检查DS部件连接的电容是否短路,测试正反向电阻。

I:该电容损坏,请更换新电容。

H:跳过断路器接入电源,工作是否正常。

K:空气断路器故障,更换新的断路器。

M:故障原因是伺服单元不良。

以伺服过电流报警为例进行推理过程说明,伺服过电流故障的原因主要有:过载、功率模块损坏、电容失效、伺服单元故障等,推理开始要求选择故障现象,如图6所示。然后专家系统会向用户询问若干问题,如“先关断电源,十分钟后合闸,断路器是否跳闸?”,用户根据提示选择是或否,如图7所示。最后推导出下一个问题或结论,如图8所示。

▲图6 故障选择界面

▲图7 故障推理界面

▲图8 推理结论画面

5 结束语

阐述了基于文本平台的CLIPS与VC++的交互技术,弥补了传统的基于VC++环境开发方法的不足,解决了开发过程中遇到的混合编程调试难问题,基于FAT的故障诊断分析方法,对数控机床专家系统开发具有较好的适应性,对其它基于CLIPS的专家系统的开发具有重要的参考价值。

[1]邓海平,何玉林,杜静.CLIPS嵌入VC++技术的实现与应用[J].计算机工程与应用,2005(15):88-91.

[2]罗天洪,杨彩霞,孙冬梅.基于故障树的汽车起重机液压故障诊断专家系统[J].机械科学与技术,2013(4):32.

[3]宁志强,陶元芳,杨家威.基于CLI PS轿机起升机构设计型专家系统[J].中国工程机械学报,2013(5):425-430.

[4]宁志强,陶元芳,刘晓莲.CLI PS数值应用与VC++的交互[J].计算机技术与发展,2013(4):226-229.

[5]沈大伟,侣庄诚,王学雷.基于CUPS的故障诊断专家系统开发[J].化工自动化及仪表,2012,39(4):43-44.

[6]燕继明,石荣波.数控机床维修专家系统中的知识表示[J].机床与液压,2013,41(3):155-158.

[7]张治杰.测控装备故障诊断专家系统的设计与实现[J].舰船电子工程,2012(6):22-24.

[8]温国谊,查光东,张翔.基于CLIPS的某型飞机故障诊断专家系统的设计与实现 [J].中南大学学报 (自然科学版)2013,44(7):157-160.

[9]刘治国,蔡增杰,穆志韬,等.基于CLIPS的飞机液压系统故障诊断专家系统构建研究[J].海军航空工程学院学报,2011,26(1):46-48.

(编辑 丁 罡)

TP182

A

1000-4998(2015)09-0062-04

*浙江省教育厅科研资助项目(编号:Y201327877)

2015年3月

猜你喜欢
人机界面数控机床语句
重点:语句衔接
数控机床的节能应用
高档数控机床数据采集应用
数控机床电气系统的故障诊断与维修
PLC在数控机床中应用
CBTC系统车载人机界面的设计与实现
基于PLC与人机界面的经编机电子横移控制系统研究
CTCS-3级列控车载人机界面的系统设计与实现
达人机界面DOP-B10VS511
如何搞定语句衔接题