專利名稱:用于執(zhí)行程序語句的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于執(zhí)行程序語句的方法和設(shè)備,更具體地,涉及一種 用于執(zhí)行梯形圖語言的方法和使用該方法的可編程邏輯控制器。
背景技術(shù):
梯形圖語言是使非專業(yè)人員方便地控制PLC (可編程邏輯控制器)的一 種符號(hào)指令集,如圖1所示。圖1是示出梯形圖語言的一個(gè)示例。如圖1所示,當(dāng)循環(huán)往復(fù)地執(zhí)行梯形圖語言程序時(shí),每次循環(huán)都要將程 序從頭至尾掃描一遍,之后根據(jù)運(yùn)算結(jié)果設(shè)置輸出,其優(yōu)點(diǎn)是簡單方便。舉 例來說,當(dāng)圖1中所示的程序代碼下載到PLC的CPU (中央處理單元)中 的時(shí)候,CPU會(huì)逐行執(zhí)行該程序。也就是說,在該梯形圖語言中,所示出的 環(huán)境輸入變量分別為%Q0.1、 %Q0.2、 %I0.7、 %Q0.4、 %I0.3、 %I0.4、 %Q0.3、 %M5和。/。Q0.5,這些變量將依次被執(zhí)行。在現(xiàn)有技術(shù)中,例如每次程序運(yùn)行到第一行的時(shí)候,都要執(zhí)行這段代碼 %Q0.1、 %Q0.2、 %I0.7、 %Q0.4。即使程序的條件都沒有變化,我們的程序 也不得不全部掃描,這就造成了 PLC的運(yùn)算負(fù)擔(dān)過重。而且,隨著用戶的應(yīng)用越來越復(fù)雜,其程序數(shù)量不斷增大,而單片機(jī)的 運(yùn)算速度有限,處理速度逐漸成為PLC的瓶頸。發(fā)明內(nèi)容鑒于以上問題,本發(fā)明的發(fā)明人考慮了如下的方案。我們知道,梯形程序的運(yùn)行結(jié)果取決于上述的輸入變量,如果例如第一 個(gè)語句中的輸入變量o/oQ0.1、 %Q0.2、 %I0.7、 0/。Q0.4都沒有變化,就沒有必 要再次執(zhí)行該語句。如果仍然按照以往的模式進(jìn)行掃描,大多數(shù)的情況下都 是在進(jìn)行冗余的操作。在實(shí)際應(yīng)用中,只有少數(shù)的幾個(gè)變量會(huì)不斷的變化,或者說變化也不頻繁。實(shí)際上,只有不到20%的輸入變量發(fā)生變化。這樣,在運(yùn)行第一遍之后,我們只運(yùn)行那些與變化的值有依賴關(guān)系的語句,這樣就可以大幅度的提高性能。例如,假設(shè)圖1中只有變量%10.3 (位于 第二條語句中)變化,那么我們的程序只執(zhí)行第二條語句。如果沒有任何變 量變化,那么就不執(zhí)行任何語句。這樣,就能大大提高PLC的處理速度。因此,根據(jù)第一方面,本發(fā)明提供一種執(zhí)行程序語句的方法,包括步驟 在每一條語句中設(shè)置判定條件;以及根據(jù)所述判定條件來決定是否執(zhí)行含有 所述判定條件的語句。本發(fā)明還提供一種用于執(zhí)行程序語句的設(shè)備,包括設(shè)置裝置,用于在 每一條語句中設(shè)置判定條件;以及控制裝置,用于根據(jù)所述判定條件來決定 是否執(zhí)行含有所述判定條件的語句。根據(jù)第二方面,本發(fā)明提供一種用于執(zhí)行程序的方法,所述程序包括多 條語句,所述方法包括在每一條語句中設(shè)置條件值;以及當(dāng)執(zhí)行程序時(shí), 僅執(zhí)行條件值為預(yù)定值的語句。本發(fā)明還提供一種用于執(zhí)行程序的設(shè)備,包括設(shè)置裝置,用于在每一 條語句中設(shè)置條件值;以及執(zhí)行裝置,用于當(dāng)執(zhí)行程序時(shí),僅執(zhí)行條件值為 預(yù)定值的語句。根據(jù)第三方面,本發(fā)明提供一種用于執(zhí)行程序的方法,所述程序包括多 條語句,該方法包括在第一次執(zhí)行所述程序時(shí),執(zhí)行其中的每一條語句; 在第二次及以后執(zhí)行所述程序時(shí),首先檢查每一條語句中設(shè)置的條件值;如 果所述條件值是預(yù)定值,則執(zhí)行包含所述條件值的語句。通過本發(fā)明的實(shí)現(xiàn),可以減輕PLC的工作負(fù)載,并增加PLC的處理速度。
從下面結(jié)合附圖對(duì)本發(fā)明實(shí)施例的詳細(xì)描述中,本發(fā)明的這些和/或其它 方面和優(yōu)點(diǎn)將變得更加清楚并且更容易理解,其中 圖l是示出梯形圖語言的一個(gè)示例。 圖2是示出本發(fā)明的梯形圖語言的示例。圖3是示出本發(fā)明的梯形圖語言的條件值與變量對(duì)應(yīng)關(guān)系的示例。圖4是示出本發(fā)明的梯形圖語言的條件值與變量對(duì)應(yīng)關(guān)系的另 一示例。圖5是示出本發(fā)明用于執(zhí)行程序語句的設(shè)備的方框圖。 圖6是示出本發(fā)明執(zhí)行程序語句的方法的流程圖。
具體實(shí)施方式
下面將結(jié)合附圖詳細(xì)描述本發(fā)明的具體實(shí)施例。如果考慮到對(duì)某些相關(guān) 現(xiàn)有技術(shù)的詳細(xì)描述可能會(huì)混淆本發(fā)明的要點(diǎn),則將不會(huì)在這里提供其詳細(xì) 描述。在同一實(shí)施例中,相同的附圖標(biāo)記用于表示執(zhí)行相同功能的元件或元素。圖2是示出本發(fā)明的梯形圖語言的示例。如圖2所示,對(duì)圖1中的梯形語言的前兩句進(jìn)行了修改,使得在每一行 語句之前,分別增添一個(gè)判定條件C一l和C—2。 換句話說,將每一條語句都換成如下的形式 if(YES == C一n)C—n = NO; 〃將C_n設(shè)置為NO /*執(zhí)行該語句中的其余代碼*/嚴(yán)這里的條件值C的下標(biāo)n,代表著第n行語句"在本發(fā)明的實(shí)施例中,根據(jù)以上的語句,如果該判定條件得到滿足,即 如果條件值C一n等于預(yù)定值(這里設(shè)置為"YES (是)"),則執(zhí)行該語句中的 其它代碼。
在進(jìn)行了上述判定之后,去除條件值C—n,或者使其不等于該預(yù)定值, 例如可以使該條件值C一n等于"NO(否)"。本發(fā)明的一個(gè)實(shí)施例中,也可以 在執(zhí)行了該語句中的其它代碼之后執(zhí)行上述去除操作。這樣,在沒有其它條 件(例如后面描述的變量變化)的情況下,該語句將不再被執(zhí)行。由于在梯形語句編譯的時(shí)候,就可以知道每一行的條件值C一n所對(duì)應(yīng)的 一組輸入變量。如圖3和圖4所示,條件值C一1對(duì)應(yīng)本行中的輸入變量。/。Q0.1、 %Q0.2、 %10.7、和o/oQ0.4,條件值C—2對(duì)應(yīng)本行中的輸入變量%10.3、 %10.4、 %Q0,3。在本發(fā)明的實(shí)施例中,只要對(duì)當(dāng)前行內(nèi)的任何輸入變量進(jìn)行了改變,那 么這個(gè)語句行中的條件值將被設(shè)為"YES (是)"。對(duì)輸入變量寫的操作代碼如下 variable—write(old, new)if(new is not equal to old) { old = new; C—n=YES } 》〃這里的條件值C的下標(biāo)n,代表著第n行。 上述代碼的含義是,判斷某個(gè)變量的新值"new"是否與其舊值"old" 相等,如果不相等,則用該變量的新值"new"代替其舊值"old",并將預(yù)定 值"YES"賦予該語句的條件值C一n。也就是說,只要對(duì)當(dāng)前行內(nèi)的任何輸入變量進(jìn)行了改變,那么這個(gè)語句 行中的條件值將被設(shè)為"YES",則對(duì)這條語句再次執(zhí)行時(shí),將執(zhí)行這條語句 中的其它代碼。在本發(fā)明的一個(gè)實(shí)施例中,可以在程序第一次運(yùn)行的時(shí)候,將所有的條 件值C一n都設(shè)定為"YES",所以程序?qū)?huì)從頭到尾的執(zhí)行每一語句。而當(dāng)?shù)?二次及以后運(yùn)行的時(shí)候,該程序會(huì)檢查每一語句的條件值,如果該條件值是"YES",則執(zhí)行該語句,否則不執(zhí)行該語句,而繼續(xù)對(duì)下一行語句的條件值 進(jìn)行判斷。任何一個(gè)輸入變量的改變都將導(dǎo)致對(duì)應(yīng)語句行的條件值變?yōu)?YES"。圖5是示出本發(fā)明用于執(zhí)行程序語句的設(shè)備的方框圖。 如圖5所示,本發(fā)明的設(shè)備10包括設(shè)置裝置102,用于在每一條語句 中設(shè)置判定條件;控制裝置104,用于根據(jù)所述判定條件來決定是否執(zhí)行含 有所述判定條件的語句;和執(zhí)行裝置106,用于如果所述判定條件(條件值 C一n)得到滿足,則執(zhí)行包含所述判定條件的語句。例如,如果控制裝置104 確定某語句行的條件值C一n為預(yù)定值"YES",則當(dāng)執(zhí)行程序時(shí),執(zhí)行裝置 106先清除該語句中的預(yù)定值"YES",然后執(zhí)行條件值為預(yù)定值"YES"的 該語句。在本發(fā)明的一個(gè)實(shí)施例中,所述控制裝置104確定所述判定條件是否得 到滿足,如果所述判定條件沒有得到滿足,則所述執(zhí)行裝置106不執(zhí)行含有 所述判定條件的語句。在本發(fā)明的一個(gè)實(shí)施例中,在第一次執(zhí)行全部語句之前,所述設(shè)置裝置 102設(shè)置每一條語句的判定條件,例如設(shè)置裝置102將每一條語句的條件值 C n都設(shè)置為預(yù)定值"YES",使得每一條語句都將被執(zhí)行。并且,在第一次執(zhí)行程序后,即在第二次及以后運(yùn)行該程序的時(shí)候,如果包含在某條語句中 的任何變量發(fā)生改變,則設(shè)置裝置102設(shè)置該語句的判定條件,例如將該語句的條件值設(shè)置為預(yù)定值"YES",使得該語句下一次將要被執(zhí)行。本發(fā)明中的設(shè)置裝置102不對(duì)本發(fā)明的技術(shù)范圍構(gòu)成限制,也可以通過將其合并在控制裝置104或執(zhí)行裝置106中來實(shí)現(xiàn)其功能。在本發(fā)明的一個(gè)實(shí)施例中,所述設(shè)備10可以是可編程邏輯控制器(PLC )。 圖6是示出本發(fā)明執(zhí)行程序語句的方法的流程圖。如圖6所示,在步驟S602,設(shè)置裝置102在每一條語句中設(shè)置判定條件。在后面的步驟中,控制裝置104將根據(jù)所述判定條件來決定是否執(zhí)行含 有所述判定條件的語句。具體地,在步驟S604,控制裝置604判定該語句中 的所述判定條件是否得到滿足,即該判定條件值是否等于預(yù)定值(例如 "YES")。如果該判定條件值等于該預(yù)定值,例如為"YES",則過程進(jìn)行到 步驟S606;否則,如果該判定條件值不等于該預(yù)定值,例如等于"NO(否)", 則過程前進(jìn)到步驟S610。在步驟S606,設(shè)置裝置102清除該語句中的預(yù)定值,或者將該條件值設(shè) 置為與該預(yù)定值不同的值,例如將其設(shè)置為"NO",然后過程前進(jìn)到步驟S608。 在步驟S608,執(zhí)行裝置106執(zhí)行該語句。步驟S606和S608的順序不對(duì)本發(fā)明的范圍構(gòu)成限制,也可以在步驟 S604中的判定操作完成后,先執(zhí)行步驟S608中的執(zhí)行操作,然后再執(zhí)行步 驟S606中的清除操作。然后,過程前進(jìn)到步驟S610,在步驟S610中,控制裝置104判斷是否 包含在某一語句中的任何變量發(fā)生了改變。如果判斷包含在某一語句中的任 何變量發(fā)生了改變,則過程進(jìn)行到步驟S612。在步驟S612,設(shè)置其中變量發(fā)生了變化的語句的判定條件,例如使其等 于預(yù)定值"YES"(使得該語句在下一次將要被執(zhí)行),然后這一執(zhí)行過程結(jié) 束,程序等待下一次掃描。如果在步驟S610中判斷包含在全部語句中的任何變量都沒有發(fā)生改變, 則不對(duì)任何語句的判定條件進(jìn)行設(shè)置,該執(zhí)行過程直接結(jié)束,程序等待下一 次掃描。在本發(fā)明的一個(gè)實(shí)施例中,還可以在第一次執(zhí)行全部語句之前,將每一 條語句的判定條件都設(shè)置為預(yù)定值,使得每一條語句都將被執(zhí)行。在本發(fā)明的另一個(gè)實(shí)施例中,還可以釆用這樣的方式在第一次執(zhí)行程 序前,不在程序語句中設(shè)置條件值,直接執(zhí)行其中的每一條語句,而在第二 次執(zhí)行該程序前,開始設(shè)置條件值,并在第二次及以后執(zhí)行所述程序時(shí),首 先檢查每一條語句中設(shè)置的條件值,如果所述條件值是預(yù)定值,則執(zhí)行包含 所述條件值的語句,否則,跳過該語句。并且,如果包含在某一語句中的任 何變量發(fā)生改變,則將該條語句的條件值設(shè)置為上述預(yù)定值。雖然上面已經(jīng)結(jié)合附圖示出并詳多田描述了本發(fā)明的一些實(shí)施例,本領(lǐng)域 地技術(shù)人員應(yīng)當(dāng)理解,在不偏離本發(fā)明的原則和精神的情況下,可以對(duì)這些 實(shí)施例做出變化和修改,而仍然落在所附的權(quán)利要求及其等價(jià)物的范圍內(nèi)。
權(quán)利要求
1.一種執(zhí)行程序語句的方法,包括步驟在每一條語句中設(shè)置判定條件;以及根據(jù)所述判定條件來決定是否執(zhí)行含有所述判定條件的語句。
2. 如權(quán)利要求l所述的方法,還包括步驟 確定所述判定條件是否得到滿足;以及如果所述判定條件沒有得到滿足,則跳過含有所述判定條件的語句。
3. 如權(quán)利要求2所述的方法,還包括步驟 如果所述判定條件得到滿足,則執(zhí)行包含所述判定條件的語句。
4. 如權(quán)利要求1所述的方法,還包括步驟在第一次執(zhí)行全部語句之前,設(shè)置每一條語句的判定條件,使得每一條 語句都將被執(zhí)行。
5. 如權(quán)利要求1所述的方法,還包括步驟 如果所述判定條件得到滿足,立即清除其判定條件。
6. 如權(quán)利要求1所述的方法,還包括步驟如果包含在所述語句中的任何變量發(fā)生改變,則設(shè)置所述語句的判定條 件,使得該語句將要被執(zhí)行。
7. 如權(quán)利要求l所述的方法,其中判定條件位于每一條語句的前面。
8. 如權(quán)利要求l所述的方法,其中所述語句是用于可編程邏輯控制器的 斗弟形i吾言。
9. 一種用于執(zhí)行程序的方法,所述程序包括多條語句,所述方法包括 在每一條語句中設(shè)置條件值;以及當(dāng)執(zhí)行程序時(shí),僅執(zhí)行條件值為預(yù)定值的語句。
10. 如權(quán)利要求9所述的方法,還包括步驟在第一次執(zhí)行程序前,將每一條語句的條件值設(shè)置為所述預(yù)定值;以及 在第一次執(zhí)行程序后,如果包含于所述語句中的任何變量發(fā)生改變,則 將所述語句的條件值設(shè)置為所述預(yù)定值。
11. 如權(quán)利要求9所述的方法,還包括步驟 所述語句一旦得到執(zhí)行,立即清除所述條件值。
12. 如權(quán)利要求9所述的方法,其中條件值被設(shè)置于每一條語句的前面。
13. —種用于執(zhí)行程序的方法,所述程序包括多條語句,該方法包括 在第一次執(zhí)行所述程序時(shí),執(zhí)行其中的每一條語句; 在第二次及以后執(zhí)行所述程序時(shí),首先檢查每一條語句中設(shè)置的條件值; 如果所述條件值是預(yù)定值,則執(zhí)行包含所述條件值的語句。
14. 如權(quán)利要求11所述的方法,還包括步驟如果包含在所述語句中的任何變量發(fā)生改變,則將所述語句的條件值設(shè) 置為所述預(yù)定值。
15. —種用于執(zhí)行程序語句的設(shè)備,包括 設(shè)置裝置,用于在每一條語句中設(shè)置判定條件;以及語句。 ' 、 ' '
16. 如權(quán)利要求15所述的設(shè)備,還包括執(zhí)行裝置,用于如果所述判定條件得到滿足,則執(zhí)行包含所述判定條件 的語句。
17. 如權(quán)利要求16所述的設(shè)備,其中所述控制裝置確定所述判定條件是 否得到滿足,如果所述判定條件沒有得到滿足,則所述執(zhí)行裝置不執(zhí)行含有 所述判定條件的語句。
18. 如權(quán)利要求15所述的設(shè)備,其中在第一次執(zhí)行全部語句之前,所述 設(shè)置裝置設(shè)置每一條語句的判定條件,使得每一條語句都將被執(zhí)行。
19. 如權(quán)利要求15所述的設(shè)備,其中如果包含在所述語句中的任何變量 發(fā)生改變,則設(shè)置所述語句的判定條件,使得該語句將要被執(zhí)行。
20. 如權(quán)利要求15所述的設(shè)備,其中所述設(shè)備是可編程邏輯控制器。
21. —種用于執(zhí)行程序的設(shè)備,包括 設(shè)置裝置,用于在每一條語句中設(shè)置條件值;以及 執(zhí)行裝置,用于當(dāng)執(zhí)行程序時(shí),僅執(zhí)行條件值為預(yù)定值的語句。
22. 如權(quán)利要求21所述的設(shè)備,其中在第一次執(zhí)行程序前,所述設(shè)置裝 置將每一條語句的條件值設(shè)置為所述預(yù)定值;在第一次執(zhí)行程序后,如果包 含于所述語句中的任何變量發(fā)生改變,則所述設(shè)置裝置將所述語句的條件值 設(shè)置為所述預(yù)定值。
全文摘要
提供了一種用于執(zhí)行程序的方法和設(shè)備,所述程序包括多條語句,所述方法包括在每一條語句中設(shè)置條件值;以及當(dāng)執(zhí)行程序時(shí),僅執(zhí)行條件值為預(yù)定值的語句。通過本發(fā)明的實(shí)現(xiàn),可以減輕可編程邏輯控制器的工作負(fù)載,并增加它的處理速度。
文檔編號(hào)G06F9/44GK101290572SQ200710096178
公開日2008年10月22日 申請(qǐng)日期2007年4月18日 優(yōu)先權(quán)日2007年4月18日
發(fā)明者凌 馬 申請(qǐng)人:施耐德電器工業(yè)公司