一种在plc中嵌入非致命故障诊断的方法

文档序号:6327570阅读:157来源:国知局
专利名称:一种在plc中嵌入非致命故障诊断的方法
技术领域
本发明涉及可编程逻辑控制器(PLC)技术领域,特别地,涉及一种在PLC中嵌入非致命故障诊断的方法。
背景技术
传统的PLC大多采用单任务的时钟扫描来执行逻辑运算和顺序控制,这直接导致了 PLC的控制速度依赖于程序大小。然而在工业控制中,对机器运行非致命的机器故障数量很多,若用梯形图实现对这些故障的诊断,无疑会使梯形图变得非常庞大,故障诊断也将占用CPU太长时间,从而影响PLC的控制效率。

发明内容
本发明旨在提供一种在PLC中嵌入非致命故障诊断的方法,以提高PLC的控制效率。本发明的目的是通过以下技术方案来实现的
一种在PLC中并行执行逻辑控制任务与非致命故障诊断任务的方法,包括以下步骤
(1)创建控制任务和诊断任务并分配优先级,控制任务分配高优先级,诊断任务分配低优先级;
(2)将控制任务和诊断任务压入就绪任务队列中;
(3)执行控制任务,执行过程中若定时器中断产生,则控制任务转换为中断服务态,然后进入步骤(6);
(4)当控制任务完成后挂起控制任务;
(5)执行诊断任务,诊断执行过程中若定时器中断产生,则诊断任务转换为中断服务态,然后进入步骤(6);
(6)检测控制周期是否到达,若控制周期到达则将控制任务压入就绪队伍列表中,进入步骤(7),若控制周期未到达,则检测控制任务是否完成,若控制任务未完成则将控制任务压入就绪队伍列表中,进入步骤(7),若控制任务已完成则将诊断任务压入就绪队伍列表中,进入步骤(7);
(7)任务调度,选择就绪任务队列中优先级高的任务运行,若就绪任务队列中有控制任务,则返回步骤(3),若就绪任务队列中只有诊断任务,则返回步骤(5)。相比于现有技术,本发明的有益效果在于所涉及的在PLC中嵌入非致命故障诊断的方法克服现有技术中单任务PLC控制效率低的缺点,将非致命故障诊断程序单独作为一个任务,采用优先级抢占式调度算法对控制任务和诊断任务进行调度,提高了 PLC的控制效率。


图1是在PLC中嵌入非致命故障诊断方法的任务状态3图2是在PLC中嵌入非致命故障诊断方法的优先级抢占式调度示例图; 图3是在PLC中嵌入非致命故障诊断方法的示范性实施例框图。
具体实施例方式下面结合附图及实施例对本发明做进一步说明。本发明所公开的在PLC中嵌入非致命故障诊断的方法在于克服现有技术中单任务PLC控制效率低的缺点,以提高PLC的控制效率。首先,将PLC中的任务分为逻辑控制任务和非致命故障诊断任务两部分。逻辑控制任务处理的是梯形图控制算法程序,主要实现对机器运行的控制功能,由于相比于非致命故障诊断,逻辑控制更为重要,所以将其定义为优先级较高的任务。非致命故障诊断任务处理的是利用机器数据量进行针对非致命故障的诊断过程,因这些故障都是非致命的,实时响应要求较低,所以将其定义为优先级较低的任务。系统采用优先级抢占式调度算法对这两个任务进行调度。结合图1所示,本发明所公开的方法如下所述,
(1)创建控制任务和诊断任务并分配优先级(S10),控制任务分配高优先级,诊断任务分配低优先级。(2)将控制任务和诊断任务压入就绪任务队列中,任务进入就绪状态(Sll)。(3)执行控制任务,控制任务进入运行状态(S12),执行过程中若定时器中断产生, 则控制任务转换为中断服务态(S13 ),然后进入步骤(6 )。(4)当控制任务完成后挂起控制任务,控制任务进入挂起状态(S14);
(5)执行诊断任务,诊断任务进入运行状态(S15),执行过程中若定时器中断产生,则诊断任务转换为中断服务态(S13),然后进入步骤(6)。(6)检测控制周期是否到达,若控制周期到达则将控制任务压入就绪队伍列表中, 控制任务进入就绪状态(S11),进入步骤(7),若控制周期未到达,则检测控制任务是否完成,若控制任务未完成则将控制任务压入就绪队伍列表中,控制任务进入就绪状态(S11), 进入步骤(7),若控制任务已完成则将诊断任务压入就绪队伍列表中,诊断任务进入就绪状态(S11),进入步骤(7)。(7)对就绪任务队列中的任务进行调度,选择就绪任务队列中优先级高的任务运行,若就绪任务队列中有控制任务,则返回步骤(3),若就绪任务队列中只有诊断任务,则返回步骤(5)。图2是该方法的优先级抢占式调度示例图,在一个控制周期内,系统先执行控制任务,当控制任务完成且下一控制周期未开始时,转而执行对非致命故障的诊断任务,一旦下一控制周期开始时,控制任务抢占CPU,诊断任务被中断,内核就切换诊断任务的现场到控制任务的现场,控制任务再次执行。系统就这样周而复始地调度控制任务和诊断任务。图3是一个示范性实施例框图,描述了在PLC中控制任务和诊断任务各自的工作以及基于公共数据区的交互,该公共数据区是内存中由PLC逻辑数据映射的一块连续存储区域,按数据类型进行区域化分为比特区、字节区、单字区、双字区和浮点区。其中,控制任务执行梯形图控制算法,实现的具体功能为对机器进行逻辑运算和顺序控制;向公共数据区内写入对非致命故障诊断有用的数据量,即诊断任务中数据库中的诊断数据。诊断任务中包含数据库、故障库以及算法库。数据库中的诊断数据包括开关量、模拟量、计数量三类基本数据以及时序数据、多维数据两类复杂数据,其中时序数据主要是具有一定规律的模拟量间隔采样数据,这些数据随时间变化呈现一定的规律;多维数据主要是由多个瞬态的模拟量组成的数据序列。故障库中的故障包括对应于基本数据的基本故障和对应于复杂数据的复杂故障。算法库包括对基本数据进行诊断的简单规则库和对复杂数据的模式识别算法库简单规则库采用产生式规则作为故障的知识表示,一条规则包括条件和结论两个对象,条件为数据库中的诊断数据,结论为故障库中的故障码以及相应故障描述;模式识别算法库包括概率神经网络算法库和曲线拟合算法库,概率神经网络算法对多维数据进行模式识别从而诊断故障,曲线拟合算法对时序数据进行模式识别从而诊断故障。 诊断的具体步骤如下
诊断任务从公共数据区内读取诊断数据量。然后判断读取的诊断数据是属于基本数据还是复杂数据,若是基本数据,则输入简单规则库,与规则库中的规则条件进行匹配,若匹配成功,则规则结论成立,输出为相对应的故障码,说明有故障发生,若没有相匹配的条件, 则输出为0,说明当前状态是正常状态;若是复杂数据,则输入模式识别算法库进行故障诊断,具体为多维数据采用概率神经网络算法进行模式识别,时序数据采用曲线拟合算法进行模式识别,输出皆为故障码或0。最后将诊断结果通过显示器显示出来,正常就显示0,否则显示故障码。
权利要求
1. 一种在PLC中嵌入非致命故障诊断的方法,其特征在于该方法将PLC中的任务分为控制任务和诊断任务;其中,控制任务处理的是执行梯形图控制算法程序,实现对机器进行控制并向公共数据区写入机器数据量;诊断任务处理的是读取公共数据区中的机器数据量,然后将采集到的机器数据量输入推理引擎,再进行针对非致命故障的诊断过程,系统采用优先级抢占式调度算法对这两个任务进行调度,具体包括如下步骤(1)创建控制任务和诊断任务并分配优先级,控制任务分配高优先级,诊断任务分配低优先级;(2)将控制任务和诊断任务压入就绪任务队列中;(3)执行控制任务,执行过程中若定时器中断产生,则控制任务转换为中断服务态,然后进入步骤(6);(4)当控制任务完成后挂起控制任务;(5)执行诊断任务,执行过程中若定时器中断产生,则诊断任务转换为中断服务态,然后进入步骤(6);(6)检测控制周期是否到达,若控制周期到达则将控制任务压入就绪队伍列表中,进入步骤(7),若控制周期未到达,则检测控制任务是否完成,若控制任务未完成则将控制任务压入就绪队伍列表中,进入步骤(7),若控制任务已完成则将诊断任务压入就绪队伍列表中,进入步骤(7);(7)任务调度,选择就绪任务队列中优先级高的任务运行,若就绪任务队列中有控制任务,则返回步骤(3),若就绪任务队列中只有诊断任务,则返回步骤(5)。
全文摘要
本发明涉及一种在PLC中嵌入非致命故障诊断的方法。现有的故障诊断占用CPU长,影响PLC的控制效率。本发明将PLC中的任务分为控制任务和诊断任务;其中,控制任务处理的是执行梯形图控制算法程序,实现对机器进行控制并向公共数据区写入机器数据量;诊断任务处理的是读取公共数据区中的机器数据量,然后将采集到的机器数据量输入推理引擎,再进行针对非致命故障的诊断过程,系统采用优先级抢占式调度算法对这两个任务进行调度。本发明克服现有技术中单任务PLC控制效率低的缺点,将非致命故障诊断程序单独作为一个任务,采用优先级抢占式调度算法对控制任务和诊断任务进行调度,提高了PLC的控制效率。
文档编号G05B23/02GK102183952SQ20111007487
公开日2011年9月14日 申请日期2011年3月28日 优先权日2011年3月28日
发明者严义, 包健, 魏丽娜 申请人:杭州电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1