專利名稱:一種在plc中嵌入非致命故障診斷的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及可編程邏輯控制器(PLC)技術(shù)領(lǐng)域,特別地,涉及一種在PLC中嵌入非致命故障診斷的方法。
背景技術(shù):
傳統(tǒng)的PLC大多采用單任務(wù)的時(shí)鐘掃描來(lái)執(zhí)行邏輯運(yùn)算和順序控制,這直接導(dǎo)致了 PLC的控制速度依賴于程序大小。然而在工業(yè)控制中,對(duì)機(jī)器運(yùn)行非致命的機(jī)器故障數(shù)量很多,若用梯形圖實(shí)現(xiàn)對(duì)這些故障的診斷,無(wú)疑會(huì)使梯形圖變得非常龐大,故障診斷也將占用CPU太長(zhǎng)時(shí)間,從而影響PLC的控制效率。
發(fā)明內(nèi)容
本發(fā)明旨在提供一種在PLC中嵌入非致命故障診斷的方法,以提高PLC的控制效率。本發(fā)明的目的是通過(guò)以下技術(shù)方案來(lái)實(shí)現(xiàn)的
一種在PLC中并行執(zhí)行邏輯控制任務(wù)與非致命故障診斷任務(wù)的方法,包括以下步驟
(1)創(chuàng)建控制任務(wù)和診斷任務(wù)并分配優(yōu)先級(jí),控制任務(wù)分配高優(yōu)先級(jí),診斷任務(wù)分配低優(yōu)先級(jí);
(2)將控制任務(wù)和診斷任務(wù)壓入就緒任務(wù)隊(duì)列中;
(3)執(zhí)行控制任務(wù),執(zhí)行過(guò)程中若定時(shí)器中斷產(chǎn)生,則控制任務(wù)轉(zhuǎn)換為中斷服務(wù)態(tài),然后進(jìn)入步驟(6);
(4)當(dāng)控制任務(wù)完成后掛起控制任務(wù);
(5)執(zhí)行診斷任務(wù),診斷執(zhí)行過(guò)程中若定時(shí)器中斷產(chǎn)生,則診斷任務(wù)轉(zhuǎn)換為中斷服務(wù)態(tài),然后進(jìn)入步驟(6);
(6)檢測(cè)控制周期是否到達(dá),若控制周期到達(dá)則將控制任務(wù)壓入就緒隊(duì)伍列表中,進(jìn)入步驟(7),若控制周期未到達(dá),則檢測(cè)控制任務(wù)是否完成,若控制任務(wù)未完成則將控制任務(wù)壓入就緒隊(duì)伍列表中,進(jìn)入步驟(7),若控制任務(wù)已完成則將診斷任務(wù)壓入就緒隊(duì)伍列表中,進(jìn)入步驟(7);
(7)任務(wù)調(diào)度,選擇就緒任務(wù)隊(duì)列中優(yōu)先級(jí)高的任務(wù)運(yùn)行,若就緒任務(wù)隊(duì)列中有控制任務(wù),則返回步驟(3),若就緒任務(wù)隊(duì)列中只有診斷任務(wù),則返回步驟(5)。相比于現(xiàn)有技術(shù),本發(fā)明的有益效果在于所涉及的在PLC中嵌入非致命故障診斷的方法克服現(xiàn)有技術(shù)中單任務(wù)PLC控制效率低的缺點(diǎn),將非致命故障診斷程序單獨(dú)作為一個(gè)任務(wù),采用優(yōu)先級(jí)搶占式調(diào)度算法對(duì)控制任務(wù)和診斷任務(wù)進(jìn)行調(diào)度,提高了 PLC的控制效率。
圖1是在PLC中嵌入非致命故障診斷方法的任務(wù)狀態(tài)3圖2是在PLC中嵌入非致命故障診斷方法的優(yōu)先級(jí)搶占式調(diào)度示例圖; 圖3是在PLC中嵌入非致命故障診斷方法的示范性實(shí)施例框圖。
具體實(shí)施例方式下面結(jié)合附圖及實(shí)施例對(duì)本發(fā)明做進(jìn)一步說(shuō)明。本發(fā)明所公開的在PLC中嵌入非致命故障診斷的方法在于克服現(xiàn)有技術(shù)中單任務(wù)PLC控制效率低的缺點(diǎn),以提高PLC的控制效率。首先,將PLC中的任務(wù)分為邏輯控制任務(wù)和非致命故障診斷任務(wù)兩部分。邏輯控制任務(wù)處理的是梯形圖控制算法程序,主要實(shí)現(xiàn)對(duì)機(jī)器運(yùn)行的控制功能,由于相比于非致命故障診斷,邏輯控制更為重要,所以將其定義為優(yōu)先級(jí)較高的任務(wù)。非致命故障診斷任務(wù)處理的是利用機(jī)器數(shù)據(jù)量進(jìn)行針對(duì)非致命故障的診斷過(guò)程,因這些故障都是非致命的,實(shí)時(shí)響應(yīng)要求較低,所以將其定義為優(yōu)先級(jí)較低的任務(wù)。系統(tǒng)采用優(yōu)先級(jí)搶占式調(diào)度算法對(duì)這兩個(gè)任務(wù)進(jìn)行調(diào)度。結(jié)合圖1所示,本發(fā)明所公開的方法如下所述,
(1)創(chuàng)建控制任務(wù)和診斷任務(wù)并分配優(yōu)先級(jí)(S10),控制任務(wù)分配高優(yōu)先級(jí),診斷任務(wù)分配低優(yōu)先級(jí)。(2)將控制任務(wù)和診斷任務(wù)壓入就緒任務(wù)隊(duì)列中,任務(wù)進(jìn)入就緒狀態(tài)(Sll)。(3)執(zhí)行控制任務(wù),控制任務(wù)進(jìn)入運(yùn)行狀態(tài)(S12),執(zhí)行過(guò)程中若定時(shí)器中斷產(chǎn)生, 則控制任務(wù)轉(zhuǎn)換為中斷服務(wù)態(tài)(S13 ),然后進(jìn)入步驟(6 )。(4)當(dāng)控制任務(wù)完成后掛起控制任務(wù),控制任務(wù)進(jìn)入掛起狀態(tài)(S14);
(5)執(zhí)行診斷任務(wù),診斷任務(wù)進(jìn)入運(yùn)行狀態(tài)(S15),執(zhí)行過(guò)程中若定時(shí)器中斷產(chǎn)生,則診斷任務(wù)轉(zhuǎn)換為中斷服務(wù)態(tài)(S13),然后進(jìn)入步驟(6)。(6)檢測(cè)控制周期是否到達(dá),若控制周期到達(dá)則將控制任務(wù)壓入就緒隊(duì)伍列表中, 控制任務(wù)進(jìn)入就緒狀態(tài)(S11),進(jìn)入步驟(7),若控制周期未到達(dá),則檢測(cè)控制任務(wù)是否完成,若控制任務(wù)未完成則將控制任務(wù)壓入就緒隊(duì)伍列表中,控制任務(wù)進(jìn)入就緒狀態(tài)(S11), 進(jìn)入步驟(7),若控制任務(wù)已完成則將診斷任務(wù)壓入就緒隊(duì)伍列表中,診斷任務(wù)進(jìn)入就緒狀態(tài)(S11),進(jìn)入步驟(7)。(7)對(duì)就緒任務(wù)隊(duì)列中的任務(wù)進(jìn)行調(diào)度,選擇就緒任務(wù)隊(duì)列中優(yōu)先級(jí)高的任務(wù)運(yùn)行,若就緒任務(wù)隊(duì)列中有控制任務(wù),則返回步驟(3),若就緒任務(wù)隊(duì)列中只有診斷任務(wù),則返回步驟(5)。圖2是該方法的優(yōu)先級(jí)搶占式調(diào)度示例圖,在一個(gè)控制周期內(nèi),系統(tǒng)先執(zhí)行控制任務(wù),當(dāng)控制任務(wù)完成且下一控制周期未開始時(shí),轉(zhuǎn)而執(zhí)行對(duì)非致命故障的診斷任務(wù),一旦下一控制周期開始時(shí),控制任務(wù)搶占CPU,診斷任務(wù)被中斷,內(nèi)核就切換診斷任務(wù)的現(xiàn)場(chǎng)到控制任務(wù)的現(xiàn)場(chǎng),控制任務(wù)再次執(zhí)行。系統(tǒng)就這樣周而復(fù)始地調(diào)度控制任務(wù)和診斷任務(wù)。圖3是一個(gè)示范性實(shí)施例框圖,描述了在PLC中控制任務(wù)和診斷任務(wù)各自的工作以及基于公共數(shù)據(jù)區(qū)的交互,該公共數(shù)據(jù)區(qū)是內(nèi)存中由PLC邏輯數(shù)據(jù)映射的一塊連續(xù)存儲(chǔ)區(qū)域,按數(shù)據(jù)類型進(jìn)行區(qū)域化分為比特區(qū)、字節(jié)區(qū)、單字區(qū)、雙字區(qū)和浮點(diǎn)區(qū)。其中,控制任務(wù)執(zhí)行梯形圖控制算法,實(shí)現(xiàn)的具體功能為對(duì)機(jī)器進(jìn)行邏輯運(yùn)算和順序控制;向公共數(shù)據(jù)區(qū)內(nèi)寫入對(duì)非致命故障診斷有用的數(shù)據(jù)量,即診斷任務(wù)中數(shù)據(jù)庫(kù)中的診斷數(shù)據(jù)。診斷任務(wù)中包含數(shù)據(jù)庫(kù)、故障庫(kù)以及算法庫(kù)。數(shù)據(jù)庫(kù)中的診斷數(shù)據(jù)包括開關(guān)量、模擬量、計(jì)數(shù)量三類基本數(shù)據(jù)以及時(shí)序數(shù)據(jù)、多維數(shù)據(jù)兩類復(fù)雜數(shù)據(jù),其中時(shí)序數(shù)據(jù)主要是具有一定規(guī)律的模擬量間隔采樣數(shù)據(jù),這些數(shù)據(jù)隨時(shí)間變化呈現(xiàn)一定的規(guī)律;多維數(shù)據(jù)主要是由多個(gè)瞬態(tài)的模擬量組成的數(shù)據(jù)序列。故障庫(kù)中的故障包括對(duì)應(yīng)于基本數(shù)據(jù)的基本故障和對(duì)應(yīng)于復(fù)雜數(shù)據(jù)的復(fù)雜故障。算法庫(kù)包括對(duì)基本數(shù)據(jù)進(jìn)行診斷的簡(jiǎn)單規(guī)則庫(kù)和對(duì)復(fù)雜數(shù)據(jù)的模式識(shí)別算法庫(kù)簡(jiǎn)單規(guī)則庫(kù)采用產(chǎn)生式規(guī)則作為故障的知識(shí)表示,一條規(guī)則包括條件和結(jié)論兩個(gè)對(duì)象,條件為數(shù)據(jù)庫(kù)中的診斷數(shù)據(jù),結(jié)論為故障庫(kù)中的故障碼以及相應(yīng)故障描述;模式識(shí)別算法庫(kù)包括概率神經(jīng)網(wǎng)絡(luò)算法庫(kù)和曲線擬合算法庫(kù),概率神經(jīng)網(wǎng)絡(luò)算法對(duì)多維數(shù)據(jù)進(jìn)行模式識(shí)別從而診斷故障,曲線擬合算法對(duì)時(shí)序數(shù)據(jù)進(jìn)行模式識(shí)別從而診斷故障。 診斷的具體步驟如下
診斷任務(wù)從公共數(shù)據(jù)區(qū)內(nèi)讀取診斷數(shù)據(jù)量。然后判斷讀取的診斷數(shù)據(jù)是屬于基本數(shù)據(jù)還是復(fù)雜數(shù)據(jù),若是基本數(shù)據(jù),則輸入簡(jiǎn)單規(guī)則庫(kù),與規(guī)則庫(kù)中的規(guī)則條件進(jìn)行匹配,若匹配成功,則規(guī)則結(jié)論成立,輸出為相對(duì)應(yīng)的故障碼,說(shuō)明有故障發(fā)生,若沒(méi)有相匹配的條件, 則輸出為0,說(shuō)明當(dāng)前狀態(tài)是正常狀態(tài);若是復(fù)雜數(shù)據(jù),則輸入模式識(shí)別算法庫(kù)進(jìn)行故障診斷,具體為多維數(shù)據(jù)采用概率神經(jīng)網(wǎng)絡(luò)算法進(jìn)行模式識(shí)別,時(shí)序數(shù)據(jù)采用曲線擬合算法進(jìn)行模式識(shí)別,輸出皆為故障碼或0。最后將診斷結(jié)果通過(guò)顯示器顯示出來(lái),正常就顯示0,否則顯示故障碼。
權(quán)利要求
1. 一種在PLC中嵌入非致命故障診斷的方法,其特征在于該方法將PLC中的任務(wù)分為控制任務(wù)和診斷任務(wù);其中,控制任務(wù)處理的是執(zhí)行梯形圖控制算法程序,實(shí)現(xiàn)對(duì)機(jī)器進(jìn)行控制并向公共數(shù)據(jù)區(qū)寫入機(jī)器數(shù)據(jù)量;診斷任務(wù)處理的是讀取公共數(shù)據(jù)區(qū)中的機(jī)器數(shù)據(jù)量,然后將采集到的機(jī)器數(shù)據(jù)量輸入推理引擎,再進(jìn)行針對(duì)非致命故障的診斷過(guò)程,系統(tǒng)采用優(yōu)先級(jí)搶占式調(diào)度算法對(duì)這兩個(gè)任務(wù)進(jìn)行調(diào)度,具體包括如下步驟(1)創(chuàng)建控制任務(wù)和診斷任務(wù)并分配優(yōu)先級(jí),控制任務(wù)分配高優(yōu)先級(jí),診斷任務(wù)分配低優(yōu)先級(jí);(2)將控制任務(wù)和診斷任務(wù)壓入就緒任務(wù)隊(duì)列中;(3)執(zhí)行控制任務(wù),執(zhí)行過(guò)程中若定時(shí)器中斷產(chǎn)生,則控制任務(wù)轉(zhuǎn)換為中斷服務(wù)態(tài),然后進(jìn)入步驟(6);(4)當(dāng)控制任務(wù)完成后掛起控制任務(wù);(5)執(zhí)行診斷任務(wù),執(zhí)行過(guò)程中若定時(shí)器中斷產(chǎn)生,則診斷任務(wù)轉(zhuǎn)換為中斷服務(wù)態(tài),然后進(jìn)入步驟(6);(6)檢測(cè)控制周期是否到達(dá),若控制周期到達(dá)則將控制任務(wù)壓入就緒隊(duì)伍列表中,進(jìn)入步驟(7),若控制周期未到達(dá),則檢測(cè)控制任務(wù)是否完成,若控制任務(wù)未完成則將控制任務(wù)壓入就緒隊(duì)伍列表中,進(jìn)入步驟(7),若控制任務(wù)已完成則將診斷任務(wù)壓入就緒隊(duì)伍列表中,進(jìn)入步驟(7);(7)任務(wù)調(diào)度,選擇就緒任務(wù)隊(duì)列中優(yōu)先級(jí)高的任務(wù)運(yùn)行,若就緒任務(wù)隊(duì)列中有控制任務(wù),則返回步驟(3),若就緒任務(wù)隊(duì)列中只有診斷任務(wù),則返回步驟(5)。
全文摘要
本發(fā)明涉及一種在PLC中嵌入非致命故障診斷的方法。現(xiàn)有的故障診斷占用CPU長(zhǎng),影響PLC的控制效率。本發(fā)明將PLC中的任務(wù)分為控制任務(wù)和診斷任務(wù);其中,控制任務(wù)處理的是執(zhí)行梯形圖控制算法程序,實(shí)現(xiàn)對(duì)機(jī)器進(jìn)行控制并向公共數(shù)據(jù)區(qū)寫入機(jī)器數(shù)據(jù)量;診斷任務(wù)處理的是讀取公共數(shù)據(jù)區(qū)中的機(jī)器數(shù)據(jù)量,然后將采集到的機(jī)器數(shù)據(jù)量輸入推理引擎,再進(jìn)行針對(duì)非致命故障的診斷過(guò)程,系統(tǒng)采用優(yōu)先級(jí)搶占式調(diào)度算法對(duì)這兩個(gè)任務(wù)進(jìn)行調(diào)度。本發(fā)明克服現(xiàn)有技術(shù)中單任務(wù)PLC控制效率低的缺點(diǎn),將非致命故障診斷程序單獨(dú)作為一個(gè)任務(wù),采用優(yōu)先級(jí)搶占式調(diào)度算法對(duì)控制任務(wù)和診斷任務(wù)進(jìn)行調(diào)度,提高了PLC的控制效率。
文檔編號(hào)G05B23/02GK102183952SQ20111007487
公開日2011年9月14日 申請(qǐng)日期2011年3月28日 優(yōu)先權(quán)日2011年3月28日
發(fā)明者嚴(yán)義, 包健, 魏麗娜 申請(qǐng)人:杭州電子科技大學(xué)