專利名稱:一種針對(duì)含有時(shí)間控制的plc程序自動(dòng)測(cè)試的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及程序測(cè)試技術(shù)領(lǐng)域,尤其涉及一種針對(duì)含有時(shí)間控制的PLC程序自動(dòng)測(cè)試的方法及裝置。
背景技術(shù):
PLC是一種工業(yè)自動(dòng)控制中使用的計(jì)算裝置。它廣泛應(yīng)用于鋼鐵、石油、化工、電力、建材、機(jī)械制造、汽車、輕紡、交通運(yùn)輸、航天、環(huán)保及文化娛樂等各個(gè)行業(yè), 小到家用設(shè)備,大到航天工業(yè),都有PLC的應(yīng)用。典型的PLC包含一個(gè)專用的CPU,一個(gè)存儲(chǔ)器和一組輸入輸出端口及其他裝置。它通過輸入端口接收來自傳感器的信號(hào),并通過輸出端口發(fā)出控制信號(hào)驅(qū)動(dòng)同它連接的外部設(shè)備。存儲(chǔ)器中安放PLC控制程序,系統(tǒng)的活動(dòng)由PLC控制程序所驅(qū)動(dòng)。PLC程序開發(fā)出來之后,必須通過大量的測(cè)試,排除錯(cuò)誤之后才能投入正式運(yùn)行。目前采用的測(cè)試方法有如下幾種
I)現(xiàn)場(chǎng)測(cè)試把編寫好的程序直接安裝到現(xiàn)場(chǎng)的PLC機(jī)器中,通過現(xiàn)場(chǎng)運(yùn)行檢驗(yàn)程序的正確性。比如把控制電梯的PLC程序安裝到電梯中的PLC機(jī)器中,通過操縱電梯按鈕,觀察電梯的運(yùn)行是否符合要求。這種方法雖然是必不可少的環(huán)節(jié),但是它們消耗時(shí)間很長(zhǎng),測(cè)試的覆蓋面有限,而且在學(xué)校教學(xué)也不便使用。2)離線測(cè)試在PLC軟件模擬器中運(yùn)行PLC程序,測(cè)試員點(diǎn)擊屏幕按鈕產(chǎn)生PLC的輸入信號(hào),然后觀察指示燈是否按照預(yù)期的次序和組合方式顯示預(yù)期輸出信號(hào)。這種方式不需要使用工作現(xiàn)場(chǎng)的機(jī)器,有助于盡早排除PLC程序的錯(cuò)誤。但是,手工輸入信號(hào)的方式效率低,而且測(cè)試過程無法重用。假設(shè)測(cè)試過程需要I千個(gè)測(cè)試輸入,程序調(diào)試修改20次,那么總共就需要2萬次測(cè)試輸入。3)手工測(cè)試輸入按鈕裝置這種裝置可以直接同PLC機(jī)器連接,裝置上有手工按鈕,按鈕的輸入可以直接送入PLC機(jī)器。操作員通過手工產(chǎn)生輸入信號(hào),測(cè)試PLC的運(yùn)行是否符合預(yù)期要求。這種測(cè)試方法同離線測(cè)試類似,只是把電腦內(nèi)部的虛擬按鈕改成了實(shí)際按鈕。它同前一種方法具有相同的缺點(diǎn),就是測(cè)試效率低。為了解決上述測(cè)試方法存在的各種缺陷,申請(qǐng)?zhí)枮椤?01010591420. 3”、名稱為“一種對(duì)PLC程序自動(dòng)測(cè)試的方法”的中國(guó)專利申請(qǐng)?zhí)岢隽艘环N對(duì)PLC程序進(jìn)行自動(dòng)測(cè)試的方法,該方法能夠有效的幫助檢查不含定時(shí)器控制的PLC程序的運(yùn)行是否正確。然而,上述專利申請(qǐng)中的測(cè)試方法雖然能夠?qū)Σ缓〞r(shí)器控制的PLC程序進(jìn)行有效測(cè)試,但是對(duì)于某些含有時(shí)間控制的PLC程序,其輸入的變量值有時(shí)僅在某些指定時(shí)刻才發(fā)生變化,而在兩個(gè)時(shí)刻之間,雖然此PLC程序可能執(zhí)行了數(shù)量可觀的周期數(shù),但是各輸入的變量值卻保持不變。因而,上述專利申請(qǐng)中的測(cè)試方法對(duì)含有時(shí)間控制的PLC程序并不適用。因此,有必要提出一種針對(duì)含有時(shí)間控制的PLC程序進(jìn)行測(cè)試的方法。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種針對(duì)含有時(shí)間控制的PLC程序自動(dòng)測(cè)試的方法及裝置,以解決現(xiàn)有的針對(duì)PLC程序自動(dòng)測(cè)試的方法及裝置無法準(zhǔn)確地對(duì)含有時(shí)間控制的PLC程序進(jìn)行測(cè)試的問題。為了解決上述問題,本發(fā)明提出一種針對(duì)含有時(shí)間控制的PLC程序自動(dòng)測(cè)試的方法,其中,所述PLC程序中包含有定時(shí)器,該方法包括以下步驟
輸入步驟輸入待測(cè)試的PLC程序和針對(duì)所述待測(cè)試的PLC程序的測(cè)試數(shù)據(jù)文件,其中,所述測(cè)試數(shù)據(jù)文件中包含若干條測(cè)試數(shù)據(jù)記錄;
語法分析步驟從所述待測(cè)試的PLC程序中分析出各輸入變量、各輸出變量、定時(shí)器變量以及邏輯運(yùn)算結(jié)構(gòu);并從所述測(cè)試數(shù)據(jù)文件中分析出各條測(cè)試數(shù)據(jù)記錄中的輸入的變量值、與該輸入的變量值相應(yīng)的預(yù)期輸出的變量值、以及各條測(cè)試數(shù)據(jù)記錄的類別;其中,每條測(cè)試數(shù)據(jù)記錄的類別包括在指定時(shí)刻處理的測(cè)試數(shù)據(jù)記錄,以及一個(gè)掃描周期中的測(cè)試數(shù)據(jù)記錄;
測(cè)試步驟啟動(dòng)測(cè)試,根據(jù)從所述測(cè)試數(shù)據(jù)文件中分析出的各條測(cè)試數(shù)據(jù)記錄的類別驅(qū)動(dòng)對(duì)該條測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試,將該條測(cè)試數(shù)據(jù)記錄中的輸入的變量值代入到所述待測(cè)試的PLC程序中對(duì)應(yīng)的輸入變量中,通過所述邏輯運(yùn)算結(jié)構(gòu)得到實(shí)際輸出結(jié)果,該實(shí)際輸出結(jié)果保存在所述待測(cè)試的PLC程序的輸出變量中;
比較步驟將保存在所述待測(cè)試的PLC程序的輸出變量中的實(shí)際輸出結(jié)果與所述測(cè)試數(shù)據(jù)文件中對(duì)應(yīng)測(cè)試數(shù)據(jù)記錄中的預(yù)期輸出的變量值進(jìn)行比較,如果相同,該所述待測(cè)試的PLC程序正確,如果不同,該所述待測(cè)試的PLC程序出錯(cuò);
顯示步驟將所述比較步驟的結(jié)果作為測(cè)試結(jié)果進(jìn)行顯示。較佳地,當(dāng)對(duì)所述一個(gè)掃描周期中的測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試時(shí),在讀入輸入變量值之后立即測(cè)試;當(dāng)對(duì)所述指定時(shí)刻處理的測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試時(shí),在指定時(shí)刻未到達(dá)之前,重復(fù)使用上一條測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試,并在指定時(shí)刻到達(dá)時(shí)啟動(dòng)對(duì)該條測(cè)試記錄的測(cè)試。較佳地,所述的測(cè)試數(shù)據(jù)文件的第一行的格式為周期標(biāo)題、各輸入變量、各輸出變量,其中所述各輸入變量和所述各輸出變量之間通過一符號(hào)隔開,所述測(cè)試數(shù)據(jù)文件自第一行后為所述測(cè)試數(shù)據(jù)記錄,并且每一行代表一條測(cè)試數(shù)據(jù)記錄,每條測(cè)試數(shù)據(jù)記錄的輸入的變量值和預(yù)期輸出的變量值分別與第一行的同列各輸入變量和各輸出變量相對(duì)應(yīng)。較佳地,所述在指定時(shí)刻處理的測(cè)試數(shù)據(jù)記錄的第一列用一個(gè)字母緊跟一個(gè)數(shù)字表示,該數(shù)字表示從對(duì)該條測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試開始到對(duì)下條測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試需要經(jīng)歷的時(shí)間;所述一個(gè)掃描周期中的測(cè)試數(shù)據(jù)記錄用一個(gè)整數(shù)表示。較佳地,在所述比較步驟中,如果實(shí)際輸出結(jié)果與預(yù)期輸出的變量值不同,則停止測(cè)試,顯示測(cè)試結(jié)果;其中,所述測(cè)試結(jié)果包含通過測(cè)試的測(cè)試數(shù)據(jù)、出錯(cuò)的測(cè)試數(shù)據(jù)所在的觸發(fā)時(shí)間或所在行、各輸入的變量值、預(yù)期輸出的變量值和實(shí)際輸出結(jié)果。
較佳地,該方法在所述顯示步驟之后進(jìn)一步包括用戶根據(jù)顯示的測(cè)試結(jié)果對(duì)所述待測(cè)試的PLC程序進(jìn)行修改,并在修改后繼續(xù)使用所述測(cè)試數(shù)據(jù)文件對(duì)修改后的待測(cè)試的PLC程序重新啟動(dòng)測(cè)試;如此循環(huán),直到所有測(cè)試數(shù)據(jù)都通過測(cè)試。同時(shí),為了解決上述問題,本發(fā)明還提出一種針對(duì)含有時(shí)間控制的PLC程序自動(dòng)測(cè)試的裝置,該裝置包括
輸入模塊用于輸入待測(cè)試的PLC程序和針對(duì)所述待測(cè)試的PLC程序的測(cè)試數(shù)據(jù)文件,其中,所述測(cè)試數(shù)據(jù)文件中包含若干條測(cè)試數(shù)據(jù)記錄;
語法分析模塊用于對(duì)所述輸入模塊輸入的所述待測(cè)試的PLC程序和所述測(cè)試數(shù)據(jù)文件進(jìn)行語法分析,從所述待測(cè)試的PLC程序中分析出各輸入變量、各輸出變量、定時(shí)器變量以及邏輯運(yùn)算結(jié)構(gòu);從所述測(cè)試數(shù)據(jù)文件中分析出輸入的變量值、與該輸入的變量值相應(yīng)的預(yù)期輸出的變量值、以及各條測(cè)試數(shù)據(jù)記錄的類別;其中,每條測(cè)試數(shù)據(jù)記錄的類別包括在指定時(shí)刻處理的測(cè)試數(shù)據(jù)記錄,以及一個(gè)掃描周期中的測(cè)試數(shù)據(jù)記錄;
測(cè)試模塊用于啟動(dòng)測(cè)試,根據(jù)從所述測(cè)試數(shù)據(jù)文件中分析出的各條測(cè)試數(shù)據(jù)記錄的類別驅(qū)動(dòng)對(duì)該條測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試,將該條測(cè)試數(shù)據(jù)記錄中的輸入的變量值代入到所述待測(cè)試的PLC程序中對(duì)應(yīng)的輸入變量中,通過所述邏輯運(yùn)算結(jié)構(gòu)得到實(shí)際輸出結(jié)果,并將該實(shí)際輸出結(jié)果保存在所述待測(cè)試的PLC程序的輸出變量中;
比較模塊用于將保存在所述待測(cè)試的PLC程序的輸出變量中的實(shí)際輸出結(jié)果與所述測(cè)試數(shù)據(jù)文件中對(duì)應(yīng)測(cè)試數(shù)據(jù)記錄中的預(yù)期輸出的變量值進(jìn)行比較,如果相同,該所述待測(cè)試的PLC程序正確,如果不同,該所述待測(cè)試的PLC程序出錯(cuò);
顯示模塊用于將所述比較模塊得到的結(jié)果作為測(cè)試結(jié)果進(jìn)行顯示。較佳地,當(dāng)所述測(cè)試模塊對(duì)所述一個(gè)掃描周期中的測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試時(shí),在讀入輸入變量值之后立即測(cè)試;當(dāng)所述測(cè)試模塊對(duì)所述指定時(shí)刻處理的測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試時(shí),在指定時(shí)刻未到達(dá)之前,重復(fù)使用上一條測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試,并在指定時(shí)刻到達(dá)時(shí)啟動(dòng)對(duì)該條測(cè)試記錄的測(cè)試。較佳地,所述語法分析模塊包括測(cè)試數(shù)據(jù)分析器以及PLC語法分析器,其中,所述測(cè)試數(shù)據(jù)分析器對(duì)所述測(cè)試數(shù)據(jù)文件進(jìn)行語法分析,從所述測(cè)試數(shù)據(jù)文件中分析出輸入的變量值、與該輸入的變量值相應(yīng)的預(yù)期輸出的變量值、以及各條測(cè)試數(shù)據(jù)記錄的類別;所述PLC語法分析器對(duì)所述待測(cè)試的PLC程序進(jìn)行語法分析,從所述待測(cè)試的PLC程序中分析出各輸入變量、各輸出變量、定時(shí)器變量以及邏輯運(yùn)算結(jié)構(gòu)。與現(xiàn)有技術(shù)相比,本發(fā)明提供的針對(duì)含有時(shí)間控制的PLC程序自動(dòng)測(cè)試的方法通過先分析出各條測(cè)試數(shù)據(jù)記錄的類別,然后根據(jù)測(cè)試數(shù)據(jù)記錄的類別驅(qū)動(dòng)對(duì)該條測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試,從而可將含有時(shí)間控制的PLC程序中的一個(gè)掃描周期中的測(cè)試數(shù)據(jù)記錄及指定時(shí)刻處理的測(cè)試數(shù)據(jù)記錄進(jìn)行區(qū)別測(cè)試,進(jìn)而能夠有效幫助檢查基于時(shí)間控制的PLC程序的運(yùn)行是否正確,提高了基于時(shí)間控制的PLC程序的可靠性以及方便了 PLC的教學(xué),更好地滿足了當(dāng)今工作的需求。
圖1為本發(fā)明實(shí)施例提供的針對(duì)含有時(shí)間控制的PLC程序自動(dòng)測(cè)試的裝置結(jié)構(gòu)框 圖2為本發(fā)明應(yīng)用例提供的被測(cè)試的基于時(shí)間控制的PLC程序的梯形圖。
具體實(shí)施例方式以下結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明提出的針對(duì)含有時(shí)間控制的PLC程序自動(dòng)測(cè)試的方法及裝置作進(jìn)一步詳細(xì)說明。根據(jù)下面說明和權(quán)利要求書,本發(fā)明的優(yōu)點(diǎn)和特征將更清楚。需說明的是,附圖均采用非常簡(jiǎn)化的形式且均使用非精準(zhǔn)的比率,僅用于方便、明晰地輔助說明本發(fā)明實(shí)施例的目的。為了提高基于時(shí)間控制的PLC程序的可靠性,本發(fā)明實(shí)施例提供了一種針對(duì)含有時(shí)間控制的PLC程序自動(dòng)測(cè)試的方法,其中,所述PLC程序中構(gòu)造有定時(shí)器,該方法包括以下步驟
輸入步驟輸入待測(cè)試的PLC程序和針對(duì)所述待測(cè)試的PLC程序的測(cè)試數(shù)據(jù)文件,其中,所述測(cè)試數(shù)據(jù)文件中包含若干條測(cè)試數(shù)據(jù)記錄;
語法分析步驟從所述待測(cè)試的PLC程序中分析出各輸入變量、各輸出變量、定時(shí)器變量以及邏輯運(yùn)算結(jié)構(gòu);并從所述測(cè)試數(shù)據(jù)文件中分析出各條測(cè)試數(shù)據(jù)記錄中的輸入的變量值、與該輸入的變量值相應(yīng)的預(yù)期輸出的變量值、以及各條測(cè)試數(shù)據(jù)記錄的類別;其中,每條測(cè)試數(shù)據(jù)記錄的類別包括在指定時(shí)刻處理的測(cè)試數(shù)據(jù)記錄,以及一個(gè)掃描周期中的測(cè)試數(shù)據(jù)記錄;
測(cè)試步驟啟動(dòng)測(cè)試,根據(jù)從所述測(cè)試數(shù)據(jù)文件中分析出的各條測(cè)試數(shù)據(jù)記錄的類別驅(qū)動(dòng)對(duì)該條測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試,將該條測(cè)試數(shù)據(jù)記錄中的輸入的變量值代入到所述待測(cè)試的PLC程序中對(duì)應(yīng)的輸入變量中,通過所述邏輯運(yùn)算結(jié)構(gòu)得到實(shí)際輸出結(jié)果,該實(shí)際輸出結(jié)果保存在所述待測(cè)試的PLC程序的輸出變量中;
比較步驟將保存在所述待測(cè)試的PLC程序的輸出變量中的實(shí)際輸出結(jié)果與所述測(cè)試數(shù)據(jù)文件中對(duì)應(yīng)測(cè)試數(shù)據(jù)記錄中的預(yù)期輸出的變量值進(jìn)行比較,如果相同,該所述待測(cè)試的PLC程序正確,如果不同,該所述待測(cè)試的PLC程序出錯(cuò);
顯示步驟將所述比較步驟的結(jié)果作為測(cè)試結(jié)果進(jìn)行顯示。在較佳實(shí)施例中,所述的測(cè)試數(shù)據(jù)文件的第一行的格式為周期標(biāo)題、各輸入變量、各輸出變量,其中所述各輸入變量和所述各輸出變量之間通過一符號(hào)隔開,所述測(cè)試數(shù)據(jù)文件自第一行后為所述測(cè)試數(shù)據(jù)記錄,并且每一行代表一條測(cè)試數(shù)據(jù)記錄,每條測(cè)試數(shù)據(jù)記錄的輸入的變量值和預(yù)期輸出的變量值分別與第一行的同列各輸入變量和各輸出變量相對(duì)應(yīng)。并且,所述在指定時(shí)刻處理的測(cè)試數(shù)據(jù)記錄的第一列用一個(gè)字母緊跟一個(gè)數(shù)字表示,該數(shù)字表示從對(duì)該條測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試開始到對(duì)下條測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試需要經(jīng)歷的時(shí)間;所述一個(gè)掃描周期中的測(cè)試數(shù)據(jù)記錄用一個(gè)整數(shù)表示。當(dāng)對(duì)所述一個(gè)掃描周期中的測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試時(shí),在讀入輸入變量之后立即測(cè)試;當(dāng)對(duì)所述指定時(shí)刻處理的測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試時(shí),在指定時(shí)刻未到達(dá)之前,重復(fù)使用上一條測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試,并在指定時(shí)刻到達(dá)時(shí)啟動(dòng)對(duì)該條測(cè)試記錄的測(cè)試。并且在較佳實(shí)施例中,在所述比較步驟中,如果實(shí)際輸出結(jié)果與預(yù)期輸出的變量值不同,則停止測(cè)試,顯示測(cè)試結(jié)果;其中,所述測(cè)試結(jié)果包含通過測(cè)試的測(cè)試數(shù)據(jù)、出錯(cuò)的測(cè)試數(shù)據(jù)所在的觸發(fā)時(shí)間或所在行、各輸入的變量值、預(yù)期輸出的變量值和實(shí)際輸出結(jié)果O并且,該方法在所述顯示步驟之后進(jìn)一步包括用戶根據(jù)顯示的測(cè)試結(jié)果對(duì)所述待測(cè)試的PLC程序進(jìn)行修改,并在修改后繼續(xù)使用所述測(cè)試數(shù)據(jù)文件對(duì)修改后的待測(cè)試的PLC程序重新啟動(dòng)測(cè)試;如此循環(huán),直到所有測(cè)試數(shù)據(jù)都通過測(cè)試。請(qǐng)參考圖1,本發(fā)明實(shí)施例還提供了一種針對(duì)含有時(shí)間控制的PLC程序自動(dòng)測(cè)試的裝置100,該裝置100包括
輸入模塊用于輸入待測(cè)試的PLC程序2和針對(duì)所述待測(cè)試的PLC程序2的測(cè)試數(shù)據(jù)文件1,其中,所述測(cè)試數(shù)據(jù)文件I中包含若干條測(cè)試數(shù)據(jù)記錄;
語法分析模塊110 :用于對(duì)所述輸入模塊輸入的所述待測(cè)試的PLC程序2和所述測(cè)試數(shù)據(jù)文件I進(jìn)行語法分析,從所述待測(cè)試的PLC程序2中分析出各輸入變量、各輸出變量、定時(shí)器變量以及邏輯運(yùn)算結(jié)構(gòu);從所述測(cè)試數(shù)據(jù)文件I中分析出輸入的變量值、與該輸入的變量值相應(yīng)的預(yù)期輸出的變量值、以及各條測(cè)試數(shù)據(jù)記錄的類別;其中,每條測(cè)試數(shù)據(jù)記錄的類別包括在指定時(shí)刻處理的測(cè)試數(shù)據(jù)記錄,以及一個(gè)掃描周期中的測(cè)試數(shù)據(jù)記錄;具體地,所述語法分析模塊110包括測(cè)試數(shù)據(jù)分析器111以及PLC語法分析器112,其中,所述測(cè)試數(shù)據(jù)分析器111對(duì)所述測(cè)試數(shù)據(jù)文件I進(jìn)行語法分析,從所述測(cè)試數(shù)據(jù)文件I中分析出輸入的變量值、與該輸入的變量值相應(yīng)的預(yù)期輸出的變量值、以及各條測(cè)試數(shù)據(jù)記錄的類別;所述PLC語法分析器112對(duì)所述待測(cè)試的PLC程序2進(jìn)行語法分析,從所述待測(cè)試的PLC程序2中分析出各輸入變量、各輸出變量、定時(shí)器變量以及邏輯運(yùn)算結(jié)構(gòu);
測(cè)試模塊120 :用于啟動(dòng)測(cè)試,根據(jù)從所述測(cè)試數(shù)據(jù)文件I中分析出的各條測(cè)試數(shù)據(jù)記錄的類別驅(qū)動(dòng)對(duì)該條測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試,將該條測(cè)試數(shù)據(jù)記錄中的輸入的變量值代入到所述待測(cè)試的PLC程序2中對(duì)應(yīng)的輸入變量中,通過所述邏輯運(yùn)算結(jié)構(gòu)得到實(shí)際輸出結(jié)果,并將該實(shí)際輸出結(jié)果保存在所述待測(cè)試的PLC程序2的輸出變量中;
具體地,當(dāng)所述測(cè)試模塊120對(duì)所述一個(gè)掃描周期中的測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試時(shí),在讀入輸入變量之后立即測(cè)試;當(dāng)所述測(cè)試模塊120對(duì)所述指定時(shí)刻處理的測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試時(shí),在指定時(shí)刻未到達(dá)之前,重復(fù)使用上一條測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試,并在指定時(shí)刻到達(dá)時(shí)啟動(dòng)對(duì)該條測(cè)試記錄的測(cè)試;
比較模塊130 :用于將保存在所述待測(cè)試的PLC程序2的輸出變量中的實(shí)際輸出結(jié)果與所述測(cè)試數(shù)據(jù)文件I中對(duì)應(yīng)測(cè)試數(shù)據(jù)記錄中的預(yù)期輸出的變量值進(jìn)行比較,如果相同,該所述待測(cè)試的PLC程序2正確,如果不同,該所述待測(cè)試的PLC程序2出錯(cuò);
顯示模塊140 :用于將所述比較模塊130得到的結(jié)果作為測(cè)試結(jié)果進(jìn)行顯示。
應(yīng)用例
為了使本發(fā)明更清楚明了,以下結(jié)合音樂噴泉PLC程序的測(cè)試過程來說明本發(fā)明的具體實(shí)施過程。該音樂噴泉PLC程序的梯形圖如圖2所示,這個(gè)程序控制A、B、C三個(gè)噴頭,為了進(jìn)行測(cè)試工作,設(shè)計(jì)了下述測(cè)試數(shù)據(jù)文件
Cycles X000 XOOl | Y000 YOOl Y0020 10 10 0 T10 0 0 0 11
T10 0 0 0 01
T10 0 0 11 0
T5 0 0 111
T10 0 0 0 0 0 T5 0 0 1 0 0 T10 0 0 0 11
T10 0 0 0 0 1 T10 0 0 11 0
T5 0 0 111
T10 0 0 0 0 0 T5 0 0 1 0 0 10 10 0 0
上述,XOOO和X001分別表示啟動(dòng)按鈕和停止按鈕,Y000, Y001, Y002分別表示噴頭A, B,C。第一列中T10表示該觸發(fā)時(shí)間點(diǎn)需要延時(shí)運(yùn)行10秒;測(cè)試文件的前兩行表示在啟動(dòng) 按鈕按下之后,噴頭A開始噴水,在第10秒,噴頭A停止噴水,同時(shí)噴頭B和C分別開始_ 水。第三行表示,再過10秒之后,噴頭B停止噴水,噴頭C繼續(xù)噴水;第四行表示,再過1C 秒之后,A,B開始噴水,C停止噴水。為了測(cè)試該音樂噴泉PLC程序的運(yùn)行是否正確,使用本發(fā)明提供的針對(duì)含有時(shí)間 控制的PLC程序自動(dòng)測(cè)試的方法對(duì)該音樂噴泉PLC程序進(jìn)行測(cè)試,具體步驟如下
第一步,輸入步驟輸入此音樂噴泉的PLC程序,該程序圖如圖2所示;輸入上述已設(shè) 計(jì)好的針對(duì)此PLC程序的測(cè)試數(shù)據(jù)文件;
第二步,語法分析步驟從此首樂噴泉的PLC程序中分析出各輸出變量、各輸出變量、 定時(shí)器變量以及邏輯運(yùn)算結(jié)構(gòu);從所述測(cè)試數(shù)據(jù)文件中分析出各條測(cè)試數(shù)據(jù)記錄中的輸入 的變量值、與該輸入的變量值相應(yīng)的預(yù)期輸出的變量值、以及各條測(cè)試數(shù)據(jù)記錄的類別; 第三步,測(cè)試步驟啟動(dòng)測(cè)試,根據(jù)從所述測(cè)試數(shù)據(jù)文件中分析出的各條測(cè)試數(shù)據(jù)記錄 的類別驅(qū)動(dòng)對(duì)該條測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試,將該條測(cè)試數(shù)據(jù)記錄中的輸入的變量值代入到 該音樂噴泉的PLC程序中對(duì)應(yīng)的輸入變量中,通過所述邏輯運(yùn)算結(jié)構(gòu)得到實(shí)際輸出結(jié)果, 該實(shí)際輸出結(jié)果保存在該音樂噴泉的PLC程序的輸出變量中;
第四步,比較步驟將保存在該音樂噴泉的PLC程序的輸出變量中的實(shí)際輸出結(jié)果與 所述測(cè)試數(shù)據(jù)文件中對(duì)應(yīng)測(cè)試數(shù)據(jù)記錄中的預(yù)期輸出的變量值進(jìn)行比較,如果相同,該音 樂噴泉的PLC程序正確,如果不同,該音樂噴泉的PLC程序出錯(cuò);
第五步,顯示步驟將所述比較步驟的結(jié)果作為測(cè)試結(jié)果進(jìn)行顯示。經(jīng)過上述測(cè)試步驟之后得到的該音樂噴泉PLC程序的測(cè)試結(jié)果如下
C 1 1 0 1 0 0 — 1 0 0 0.00s M0=1 Y000=1
T 10002 0 0 0 11—011 1.00s M0=0 T0=0 Y000=0 T 20002 0 0 0 0 1—001 2.00s M1=0 T1=0 Y001=0 T 30002 0 0 111—110 3.00s Ml=l M2=0 M0=1 T2=0cycle 30002 (time 30): program output incorrectinputs: 0 0
expected outputs: 110 program outputs: 111
為了加速測(cè)試過程,這里把時(shí)間壓縮了十倍,用I秒代替10秒,上述測(cè)試結(jié)果表明,該音樂噴泉PLC程序在第3秒(即相當(dāng)于原來要求的第30秒)時(shí)運(yùn)行出現(xiàn)錯(cuò)誤,程序的運(yùn)行結(jié)果中Y002=l,按照要求此時(shí)Y002應(yīng)該為0,這一測(cè)試發(fā)現(xiàn)了噴頭并沒有在指定時(shí)刻按要求停止,因此這個(gè)程序需要修改,修改之后可以繼續(xù)使 用這個(gè)測(cè)試數(shù)據(jù)文件重新啟動(dòng)測(cè)試,看是否能夠通過。這一過程顯示,測(cè)試數(shù)據(jù)可以重復(fù)使用,在調(diào)試過程中,不需要每次到現(xiàn)場(chǎng)去測(cè)試,提高了調(diào)試的效率,也方便了 PLC的教學(xué),更好地滿足了當(dāng)今工作的需求。為了將測(cè)試信息表示得更清楚,本發(fā)明還對(duì)測(cè)試數(shù)據(jù)文件的輸入格式進(jìn)行了改進(jìn),提出了一種變量賦值的輸入形式,其中,每一個(gè)變量賦值的形式是,《變量名》=《變量值》。它在數(shù)據(jù)行中表示,該數(shù)據(jù)行出現(xiàn)時(shí)刻的變量值的變化。例如,上述音樂噴泉PLC程序的測(cè)試數(shù)據(jù)文件的前三行用變量賦值的形式可表示如下
Cycles X000 X001 | Y000 YOOl Y002
OXOOO=I YOOO=I
TlO XOOO=O YOOO=O YOOl=I Y002=l
上述格式的測(cè)試文件的第二行表示,在周期O中,變量XOOO的值變?yōu)?,同時(shí)Υ000的值也變?yōu)镮。第三行表示,10秒鐘之后,Χ000和Υ000的值都變?yōu)?,同時(shí)Υ001和Υ002的值則從O變?yōu)镮。在數(shù)據(jù)量大的時(shí)候,這個(gè)格式的優(yōu)點(diǎn)是比較簡(jiǎn)短,信息表示更清楚。當(dāng)然,本發(fā)明提供的針對(duì)含有時(shí)間控制的PLC程序自動(dòng)測(cè)試的方法及裝置不僅可以適用于音樂噴泉PLC程序的測(cè)試,也能夠適用于任何其它含有時(shí)間控制的PLC程序的自動(dòng)測(cè)試。并且,雖然本發(fā)明實(shí)施例只例舉了對(duì)含有時(shí)間控制的PLC程序進(jìn)行自動(dòng)測(cè)試的方法,但是應(yīng)該認(rèn)識(shí)到,本發(fā)明提出的針對(duì)含有時(shí)間控制的PLC程序自動(dòng)測(cè)試的方法及裝置也適用于對(duì)不包含有時(shí)間控制的PLC程序進(jìn)行自動(dòng)測(cè)試。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1. 一種針對(duì)含有時(shí)間控制的PLC程序自動(dòng)測(cè)試的方法,其中,所述PLC程序中包含有定時(shí)器,其特征在于,該方法包括以下步驟 輸入步驟輸入待測(cè)試的PLC程序和針對(duì)所述待測(cè)試的PLC程序的測(cè)試數(shù)據(jù)文件,其中,所述測(cè)試數(shù)據(jù)文件中包含若干條測(cè)試數(shù)據(jù)記錄; 語法分析步驟從所述待測(cè)試的PLC程序中分析出各輸入變量、各輸出變量、定時(shí)器變量以及邏輯運(yùn)算結(jié)構(gòu);并從所述測(cè)試數(shù)據(jù)文件中分析出各條測(cè)試數(shù)據(jù)記錄中的輸入的變量值、與該輸入的變量值相應(yīng)的預(yù)期輸出的變量值、以及各條測(cè)試數(shù)據(jù)記錄的類別;其中,每條測(cè)試數(shù)據(jù)記錄的類別包括在指定時(shí)刻處理的測(cè)試數(shù)據(jù)記錄,以及一個(gè)掃描周期中的測(cè)試數(shù)據(jù)記錄; 測(cè)試步驟啟動(dòng)測(cè)試,根據(jù)從所述測(cè)試數(shù)據(jù)文件中分析出的各條測(cè)試數(shù)據(jù)記錄的類別驅(qū)動(dòng)對(duì)該條測(cè)試數(shù)據(jù)記錄相關(guān)的測(cè)試,將該條測(cè)試數(shù)據(jù)記錄中的輸入變量值代入到所述待測(cè)試的PLC程序中對(duì)應(yīng)的輸入變量中,通過所述邏輯運(yùn)算結(jié)構(gòu)得到實(shí)際輸出結(jié)果,該實(shí)際輸出結(jié)果保存在所述待測(cè)試的PLC程序的輸出變量中; 比較步驟將保存在所述待測(cè)試的PLC程序的輸出變量中的實(shí)際輸出結(jié)果與所述測(cè)試數(shù)據(jù)文件中對(duì)應(yīng)測(cè)試數(shù)據(jù)記錄中的預(yù)期輸出的變量值進(jìn)行比較,如果相同,該所述待測(cè)試的PLC程序正確,如果不同,該所述待測(cè)試的PLC程序出錯(cuò); 顯示步驟將所述比較步驟的結(jié)果作為測(cè)試結(jié)果進(jìn)行顯示。
2.如權(quán)利要求1所述的針對(duì)含有時(shí)間控制的PLC程序自動(dòng)測(cè)試的方法,其特征在于,當(dāng)對(duì)所述一個(gè)掃描周期中的測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試時(shí),在讀入輸入變量之后立即測(cè)試;當(dāng)對(duì)所述指定時(shí)刻處理的測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試時(shí),在指定時(shí)刻未到達(dá)之前,重復(fù)使用上一條測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試,并在指定時(shí)刻到達(dá)時(shí)啟動(dòng)對(duì)該條測(cè)試記錄的測(cè)試。
3.如權(quán)利要求1所述的針對(duì)含有時(shí)間控制的PLC程序自動(dòng)測(cè)試的方法,其特征在于,所述的測(cè)試數(shù)據(jù)文件的第一行的格式為周期標(biāo)題、各輸入變量、各輸出變量,其中所述各輸入變量和所述各輸出變量之間通過一符號(hào)隔開,所述測(cè)試數(shù)據(jù)文件自第一行后為所述測(cè)試數(shù)據(jù)記錄,并且每一行代表一條測(cè)試數(shù)據(jù)記錄,每條測(cè)試數(shù)據(jù)記錄的輸入的變量值和預(yù)期輸出的變量值分別與第一行的同列各輸入變量和各輸出變量相對(duì)應(yīng)。
4.如權(quán)利要求3所述的針對(duì)含有時(shí)間控制的PLC程序自動(dòng)測(cè)試的方法,其特征在于,所述在指定時(shí)刻處理的測(cè)試數(shù)據(jù)記錄的第一列用一個(gè)字母緊跟一個(gè)數(shù)字表示,該數(shù)字表示從對(duì)該條測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試開始到對(duì)下條測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試需要經(jīng)歷的時(shí)間;所述一個(gè)掃描周期中的測(cè)試數(shù)據(jù)記錄用一個(gè)整數(shù)表示。
5.如權(quán)利要求1所述的針對(duì)含有時(shí)間控制的PLC程序自動(dòng)測(cè)試的方法,其特征在于,在所述比較步驟中,如果實(shí)際輸出結(jié)果與預(yù)期輸出的變量值不同,則停止測(cè)試,顯示測(cè)試結(jié)果;其中,所述測(cè)試結(jié)果包含通過測(cè)試的測(cè)試數(shù)據(jù)、出錯(cuò)的測(cè)試數(shù)據(jù)及所在的觸發(fā)時(shí)間或所在行、各輸入的變量值、預(yù)期輸出的變量值和實(shí)際輸出結(jié)果。
6.如權(quán)利要求5所述的針對(duì)含有時(shí)間控制的PLC程序自動(dòng)測(cè)試的方法,其特征在于,該方法在所述顯示步驟之后進(jìn)一步包括用戶根據(jù)顯示的測(cè)試結(jié)果對(duì)所述待測(cè)試的PLC程序進(jìn)行修改,并在修改后繼續(xù)使用所述測(cè)試數(shù)據(jù)文件對(duì)修改后的待測(cè)試的PLC程序重新啟動(dòng)測(cè)試;如此循環(huán),直到所有測(cè)試數(shù)據(jù)都通過測(cè)試。
7.一種針對(duì)含有時(shí)間控制的PLC程序自動(dòng)測(cè)試的裝置,其特征在于,該裝置包括輸入模塊用于輸入待測(cè)試的PLC程序和針對(duì)所述待測(cè)試的PLC程序的測(cè)試數(shù)據(jù)文件,其中,所述測(cè)試數(shù)據(jù)文件中包含若干條測(cè)試數(shù)據(jù)記錄; 語法分析模塊用于對(duì)所述輸入模塊輸入的所述待測(cè)試的PLC程序和所述測(cè)試數(shù)據(jù)文件進(jìn)行語法分析,從所述待測(cè)試的PLC程序中分析出各輸入變量、各輸出變量、定時(shí)器變量以及 邏輯運(yùn)算結(jié)構(gòu);從所述測(cè)試數(shù)據(jù)文件中分析出輸入的變量值、與該輸入的變量值相應(yīng)的預(yù)期輸出的變量值、以及各條測(cè)試數(shù)據(jù)記錄的類別;其中,每條測(cè)試數(shù)據(jù)記錄的類別包括在指定時(shí)刻處理的測(cè)試數(shù)據(jù)記錄,以及一個(gè)掃描周期中的測(cè)試數(shù)據(jù)記錄; 測(cè)試模塊用于啟動(dòng)測(cè)試,根據(jù)從所述測(cè)試數(shù)據(jù)文件中分析出的各條測(cè)試數(shù)據(jù)記錄的類別驅(qū)動(dòng)對(duì)該條測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試,將該條測(cè)試數(shù)據(jù)記錄中的輸入的變量值代入到所述待測(cè)試的PLC程序中對(duì)應(yīng)的輸入變量中,通過所述邏輯運(yùn)算結(jié)構(gòu)得到實(shí)際輸出結(jié)果,并將該實(shí)際輸出結(jié)果保存在所述待測(cè)試的PLC程序的輸出變量中; 比較模塊用于將保存在所述待測(cè)試的PLC程序的輸出變量中的實(shí)際輸出結(jié)果與所述測(cè)試數(shù)據(jù)文件中對(duì)應(yīng)測(cè)試數(shù)據(jù)記錄中的預(yù)期輸出的變量值進(jìn)行比較,如果相同,該所述待測(cè)試的PLC程序正確,如果不同,該所述待測(cè)試的PLC程序出錯(cuò); 顯示模塊用于將所述比較模塊得到的結(jié)果作為測(cè)試結(jié)果進(jìn)行顯示。
8.如權(quán)利要求7所述的針對(duì)含有時(shí)間控制的PLC程序自動(dòng)測(cè)試的裝置,其特征在于,當(dāng)所述測(cè)試模塊對(duì)所述一個(gè)掃描周期中的測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試時(shí),在讀入輸入變量之后立即測(cè)試;當(dāng)所述測(cè)試模塊對(duì)所述指定時(shí)刻處理的測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試時(shí),在指定時(shí)刻未到達(dá)之前,重復(fù)使用上一條測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試,并在指定時(shí)刻到達(dá)時(shí)啟動(dòng)對(duì)該條測(cè)試記錄的測(cè)試。
9.如權(quán)利要求8所述的針對(duì)含有時(shí)間控制的PLC程序自動(dòng)測(cè)試的裝置,其特征在于,所述語法分析模塊包括測(cè)試數(shù)據(jù)分析器以及PLC語法分析器,其中,所述測(cè)試數(shù)據(jù)分析器對(duì)所述測(cè)試數(shù)據(jù)文件進(jìn)行語法分析,從所述測(cè)試數(shù)據(jù)文件中分析出輸入的變量值、與該輸入的變量值相應(yīng)的預(yù)期輸出的變量值、以及各條測(cè)試數(shù)據(jù)記錄的類別;所述PLC語法分析器對(duì)所述待測(cè)試的PLC程序進(jìn)行語法分析,從所述待測(cè)試的PLC程序中分析出各輸入變量、各輸出變量、定時(shí)器變量以及邏輯運(yùn)算結(jié)構(gòu)。
全文摘要
本發(fā)明公開了一種針對(duì)含有時(shí)間控制的PLC程序的自動(dòng)測(cè)試方法。通過先分析出各條測(cè)試數(shù)據(jù)記錄的類別,然后根據(jù)測(cè)試數(shù)據(jù)記錄的類別驅(qū)動(dòng)與該條測(cè)試數(shù)據(jù)記錄相關(guān)的測(cè)試,從而將含有時(shí)間控制的PLC程序中的一個(gè)掃描周期的測(cè)試數(shù)據(jù)記錄及指定時(shí)刻處理的測(cè)試數(shù)據(jù)記錄進(jìn)行區(qū)別測(cè)試,進(jìn)而能有效幫助檢查基于時(shí)間控制的PLC程序的運(yùn)行是否正確,提高了基于時(shí)間控制的PLC程序的可靠性及方便了PLC的教學(xué),更好地滿足了當(dāng)今工作的需求。同時(shí)還公開了一種針對(duì)含有時(shí)間控制的PLC程序自動(dòng)測(cè)試的裝置,該裝置基于分析出的各條測(cè)試數(shù)據(jù)記錄的類別驅(qū)動(dòng)對(duì)該條測(cè)試數(shù)據(jù)記錄進(jìn)行測(cè)試,從而提高了基于時(shí)間控制的PLC程序的可靠性及方便了PLC的教學(xué)。
文檔編號(hào)G06F11/36GK103019930SQ20121045790
公開日2013年4月3日 申請(qǐng)日期2012年11月15日 優(yōu)先權(quán)日2012年11月15日
發(fā)明者陳鋼 申請(qǐng)人:陳鋼