專利名稱:具有電源故障補償功能的plc及電源故障補償方法
技術領域:
本發(fā)明涉及一種具有電源故障補償功能的PLC(可編程邏輯控制器)以及一種電源故障補償方法,特別涉及一種改進的具有電源故障補償功能的PLC及一種電源故障補償方法,當出現(xiàn)電源故障時,能夠實現(xiàn)程序操作的連續(xù)性。
PLC(可編程邏輯控制器)是一種控制電開關(輸入和輸出接點)如制造自動化系統(tǒng)等的裝置,所述的制造自動化系統(tǒng)等裝置與以用戶所設定程序為基礎的PLC相連。
PLC系統(tǒng)采用一種能夠進行實時數(shù)據(jù)通信的LAN(局部區(qū)域網絡),和一種多個通信站與一個網絡相連的多點網絡(1N通信)。
因此,在工廠自動化系統(tǒng)中,安裝在每條線路上的PLCs從PLC接收及向PLC發(fā)送每條線路上的數(shù)據(jù),如組件數(shù)、故障數(shù)以及輸出產品數(shù)等,使得系統(tǒng)根據(jù)接收到的數(shù)據(jù)進行的操作。
如
圖1所示,傳統(tǒng)的PLC包括一個為系統(tǒng)元件提供電源的電源單元10,一個根據(jù)用戶設定的程序進行操作的CPU(中心處理單元)11,一個提供經控制目標14處理的數(shù)據(jù)的輸入單元12,一個將控制信號從CPU11輸出到控制目標14的輸出單元13。
下面參考相關的附圖描述傳統(tǒng)PLC的操作。
電源單元10將一個AC輸入電源轉換成一個DC電源,供給CPU11及輸入和輸出單元12和13,CPU11通過輸入單元12讀取控制目標14的狀態(tài),執(zhí)行用戶編寫的程序,并通過輸出單元13來進行輸出。PLC通過上述方法來控制控制目標14。
此外,PLC重復執(zhí)行用戶編寫的程序,并更新進入PLC的數(shù)據(jù)存儲器中的該結果。數(shù)據(jù)存儲器在電源故障期間利用電池來保存存儲器的內容。因此,在PLC操作方式時,用戶根據(jù)被控的控制目標14的特性,來決定操作PLC的數(shù)據(jù)值是否保存在存儲器數(shù)據(jù)中。
當用戶設定存儲數(shù)據(jù)值的方式、并操作PLC時,如果出現(xiàn)電源故障,程序的執(zhí)行由于電源故障而停止時,則最初設定要存儲的數(shù)據(jù)與正常執(zhí)行程序所得到的數(shù)據(jù)將會不同。
作為操作結果,程序由于電源故障而停止,停止的位置不同,將會產生不同的操作結果。另外,當重新操作PLC時,由于CPU11利用程序停止時所得到的操作結果,從用戶程序的第一步開始重新執(zhí)行程序,所以無法獲得電源故障前后程序執(zhí)行的連續(xù)性。
圖2給出了PLC執(zhí)行的用戶程序。
用戶程序包括步驟1到步驟12。也就是說,程序設計成當接點A閉合時,相應地分別將1、2和3加到接點B、C和D上。此時,A表示一個邏輯值(bool value),B、C和D是設定為將被存儲的整數(shù)值。
首先,用戶程序由步驟1到步驟12正常進行,整數(shù)值B、C和D分別變?yōu)?、10和15,根據(jù)上述數(shù)值可以得到下面的表達式C=2*B,D=3*B。
如果用戶程序由步驟1到步驟12正常執(zhí)行了四次,接著,在第五次操作期間,剛好在執(zhí)行步驟8之前出現(xiàn)了電源故障,在步驟7所獲得到的操作值5、8和12以整數(shù)值5、8和12被存儲到了數(shù)據(jù)存儲器中。
如果電源故障恢復,則CPU11讀取存儲在數(shù)據(jù)存儲器中的B、C和D值,程序由步驟1開始執(zhí)行,而不從出現(xiàn)電源故障而停止的步驟處開始執(zhí)行。因此,程序執(zhí)行五次后得到的B、C和D值分別變成了6、10和15,操作值不能滿足等式C=2*B,D=3*B,因此PLC的操作可能錯誤地被執(zhí)行。
換句話說,在傳統(tǒng)的PLC中,由于無法保持電源故障前后用戶程序的連續(xù)性,所以PLC會發(fā)生錯誤動作。
因此,本發(fā)明的一個目的是提供一種具有電源故障補償功能的PLC以及一種電源故障補償方法,其能夠克服前述的在背景技術中遇到的問題。
本發(fā)明的另一個目的是提供一種具有電源故障補償功能的PLC以及一種電源故障補償方法,當出現(xiàn)電源故障時,其能夠實現(xiàn)程序操作的連續(xù)性。
為了達到上述目的,提供了一種具有電源故障補償功能的PLC,它包括一個第一存儲單元,用于存儲一程序執(zhí)行數(shù)據(jù)及一由CPU執(zhí)行的用戶程序;一個電源故障檢測器,用于檢測交流電源的狀態(tài),并輸出一個電源故障發(fā)生信號;一個程序計數(shù)器,用于對CPU執(zhí)行的程序的每一步進行計數(shù);一個第二存儲單元,用于存儲程序計數(shù)器的計數(shù)值,即電源故障前CPU最后執(zhí)行的程序步驟值;一個第三存儲單元,用于存儲電源故障前在CPU最后執(zhí)行的程序步驟中所得到的程序執(zhí)行結果值;一個電池,可分別向第二和第三存儲單元提供一直流電源;以及一個CPU,可從程序計數(shù)器中讀取電源故障前執(zhí)行的程序步驟值,并將讀取的數(shù)值存儲到第二存儲單元中,將電源故障前最后執(zhí)行的程序執(zhí)行結果值存儲到第三存儲單元中,讀取存儲在第一存儲單元中的用戶程序及存儲在第二和第三存儲單元中的數(shù)據(jù),從最后執(zhí)行的程序步驟的下一步開始執(zhí)行用戶程序。
為了達到上述目的,提供了一種電源故障補償方法,其包括以下步驟從電源故障檢測器中檢測出一個電源故障發(fā)生信號,并判斷電源故障;根據(jù)判斷的結果,從程序計數(shù)器中讀取電源故障發(fā)生前最后的執(zhí)行的程序步驟值,將所讀取的步驟值存儲到第二執(zhí)行單元中,并將電源故障前最后執(zhí)行的程序執(zhí)行結果值存儲到第三存儲單元中;當電源故障恢復時,判斷在PLC操作期間是否出現(xiàn)電源故障;當判斷結果是出現(xiàn)了電源故障時,則從第一存儲單元中讀取用戶程序,從第二和第三存儲單元中讀取數(shù)據(jù),并從最后執(zhí)行的程序步驟的下一步開始執(zhí)行用戶程序。
本發(fā)明的其他優(yōu)點、目的和特點通過下面的描述將會變得更加清楚。
通過下文給出的詳細說明以及僅作為說明而不是作為本發(fā)明的限制的相關附圖,將會更加充分地理解本發(fā)明,其中圖1是一個傳統(tǒng)PLC(可編程邏輯控制器)的方框圖;圖2是一個PLC執(zhí)行的用戶程序視圖;圖3是根據(jù)本發(fā)明的一個PLC電源故障補償裝置的方框圖;圖4是圖3中電源故障檢測單元的詳細電路圖。
圖5A到圖5C是來自圖4中電源故障檢測單元的操作定時信號的波形圖。
圖6是圖3中PLC電源故障補償裝置的操作流程圖。
如圖3所示,根據(jù)本發(fā)明的具有電源故障補償功能的PLC(可編程邏輯控制器)包括一個電源故障檢測器15,用來檢測一交流電壓的狀態(tài);一個第一存儲單元16,用來存儲CPU11執(zhí)行的用戶程序的程序執(zhí)行數(shù)據(jù)以及用戶程序;一個程序計數(shù)器17,用來對CPU11執(zhí)行的程序步驟進行計數(shù);一個第二存儲單元18,用來存儲程序計數(shù)器17的計數(shù)值、也就是電源故障前CPU11最后執(zhí)行的步驟數(shù);一個第三存儲單元19,用來存儲電源故障前從CPU11最后執(zhí)行的程序步驟中得到的程序執(zhí)行結果值;一個電池20,用來為第二及第三存儲單元18和19分別提供一直流電壓。
電源故障檢測器15包括一個具有電阻器R1和R2及一個電容器C1的阻抗單元1,一個具有兩個光電二極管PD1和PD2及一個光電三極管的光電耦合器2,一個具有電阻器R3和R4及一個電容器C2、用于從光電耦合器2充/放電5V電壓的充/放電單元3,一個對充/放電單元3的充/放電電壓起緩沖作用的緩沖單元4。
下面參考相關附圖來說明本發(fā)明具有電源故障補償功能的PLC的操作。
電源故障檢測器15對施加到輸入端的交流電壓進行檢測,并輸出一個電源故障發(fā)生信號AC-FAIL。
當輸入AC電源時,光電耦合器2由輸入的AC電源導通,5V電壓通過電阻器R4充進電容器C2,從而通過緩沖單元4輸出了一個高電平電源故障發(fā)生信號AC-FAIL。
另外,當未輸入AC電源時,光電耦合器2截止,使得電容器C2所充的電荷通過電阻器R4和R3釋放,從而通過緩沖單元4輸出一個低電平電源故障發(fā)生信號AC-FAIL。
如圖5a中所示,當出現(xiàn)電源故障時,電源故障檢測器15向CPU11輸出一個低電平電源故障發(fā)生信號AC-FAIL,表示在CPU11復位之前發(fā)生了電源故障。
首先,當電源單元10上施加了電源時,CPU11在步驟S2中判斷PLC方式是否是運行方式。根據(jù)判斷結果,如果PLC方式是運行方式,則在步驟S4中判斷,操作期間是否出現(xiàn)了電源故障,根據(jù)判斷結果,如果在操作期間未出現(xiàn)電源故障,則根據(jù)由第一存儲單元16中所讀取的用戶程序,對數(shù)據(jù)進行初始化,并在步驟S5和S6中設定將要執(zhí)行的程序步驟1到12。
此外,通過輸入單元12自控制目標14的輸入模塊(未示出)讀取數(shù)據(jù),從設定的步驟處開始執(zhí)行用戶程序,將操作結果傳送到位于另一線路上的PLC,并存儲在第一存儲單元16中,在步驟S7到S10中,將一控制數(shù)據(jù)通過輸出單元13輸出到控制目標的輸出模塊。當操作方式發(fā)生了變化時,PLC利用已改變的操作方式進行操作,而如果操作方式未發(fā)生變化,則重復執(zhí)行步驟S6之后的操作。此時,程序計數(shù)器17對CPU11執(zhí)行的程序步驟進行計數(shù)。
此外,如果出現(xiàn)電源故障,從電源故障檢測器15輸入一個低電平電源故障發(fā)生信號AC-FAIL時,CPU11接收到的電源故障發(fā)生信號AC-FAIL是一個中斷信號,使用戶程序停止。在電源故障前最后執(zhí)行的程序步驟中所得到的程序執(zhí)行結果值,存儲在第三存儲單元19中,而后如圖5C所示進行復位。
此外,CPU11控制程序計數(shù)器17,并將電源故障前最后處理的程序步驟值存儲到第二存儲單元18中。通過控制電池20,將一應急電源施加到第二和第三存儲單元18和19上。此時,第二和第三存儲單元18和19是由具有電池的RAM或與備用電池相連的RAM組成的。
因此,當施加了電源時,CPU11在步驟S1到S4中判斷,在操作期間是否出現(xiàn)了電源故障。根據(jù)判斷的結果,如果在PLC操作期間出現(xiàn)了電源故障,則從第三存儲單元19中恢復一個預定數(shù)據(jù)。從第二存儲單元18中讀取電源故障前最后執(zhí)行的程序步驟值,在步驟S4和S13中指定該程序步驟為電源故障時的步驟。接著,CPU11利用從第二存儲單元18中恢復的數(shù)據(jù),從電源故障時的步驟處執(zhí)行用戶程序,然后重復進行步驟S8以后的操作。
現(xiàn)在參考圖2中所示的用戶程序來對操作進行說明。
首先,當利用從第一存儲單元16中讀取的用戶程序以及數(shù)據(jù),從步驟1到步驟12正常執(zhí)行用戶程序五次,則整數(shù)值B、C和D分別變?yōu)?、10和15,可以得到等式C=2*B,D=3*B。
當從步驟1到步驟12正常重復執(zhí)行了用戶程序四次,第五次操作時,在步驟8之前出現(xiàn)了電源故障,則至步驟7時所得到的操作值5、8和12,作為整數(shù)值B、C和D,存儲到了第三存儲單元19中。程序計數(shù)器17的計數(shù)值8存儲到了第二存儲單元18中。
接著,當電源恢復時,CPU11讀取存儲在第三存儲單元19中的數(shù)值B、C和D,以及存儲在第二存儲單元18中的計數(shù)值8。程序從步驟8開始執(zhí)行到步驟12,其中在步驟8時操作由于電源故障而停止。因此,整數(shù)值B、C和D變?yōu)?、10和15,從而滿足了等式C=2*B,D=3*B。
因此,在本發(fā)明中,當發(fā)生了電源故障之后,電源又恢復時,可以恢復電源故障之前正處理的數(shù)據(jù),以由于電源故障而停止的用戶程序為基礎,重新執(zhí)行PLC操作,因此能夠確保用戶程序的連續(xù)性。
如上所述,在本發(fā)明中,用戶程序操作期間所得到的數(shù)據(jù)以及由于電源故障而停止的用戶程序的預定步驟,在存儲單元復位之前存儲到存儲單元中。當電源故障恢復正常時,從存儲單元中讀取數(shù)據(jù)及用戶程序,用戶程序自操作停止的步驟處開始執(zhí)行。于是可以實現(xiàn)用戶程序的連續(xù)性,并能保證PLC操作的穩(wěn)定性。
盡管為了說明的目的已經公開了本發(fā)明的優(yōu)選實施例,但本領域的技術人員可以知道,不背離權利要求所述的本發(fā)明的范圍和精神的各種不同的變形、增加以及替換都是可能的。
權利要求
1.一種PLC(可編程邏輯控制器),包括一個利用用戶程序控制控制目標的CPU,一個將控制信號從CPU輸出到控制目標的輸出單元,一個從控制目標將數(shù)據(jù)信號提供給CPU的輸入單元,一個將交流電源轉換成驅動PLC的直流電源并將轉換電源提供給每個電路元件的直流電壓供給單元,其改進包含第一存儲裝置,用于存儲程序執(zhí)行數(shù)據(jù)及CPU執(zhí)行的用戶程序;一個電源故障檢測裝置,用于檢測交流電源狀態(tài)并輸出電源故障發(fā)生信號;一個電源故障檢測裝置,用于檢測交流電源狀態(tài)并輸出電源故障發(fā)生信號。一個程序計數(shù)器,用于對CPU執(zhí)行的程序的每一步進行計數(shù);第二存儲裝置,用于存儲程序計數(shù)器的計數(shù)值,即電源故障前CPU最后執(zhí)行的程序步驟值;第三存儲裝置,用于存儲由電源故障前CPU最后執(zhí)行的程序步驟處所得到的程序執(zhí)行結果值;一個電池,用于向第二及第三存儲裝置分別提供一直流電源;以及一個CPU,由程序計數(shù)器中讀取電源故障前執(zhí)行的程序步驟值,并將所讀到的數(shù)值存儲到第二存儲裝置中,將電源故障前最后執(zhí)行的程序執(zhí)行結果值存儲到第三存儲裝置中,讀取存儲在第一存儲裝置中的用戶程序以及存儲在第二及第三存儲裝置中的數(shù)據(jù),并從最后執(zhí)行的程序步驟的下一步開始執(zhí)行用戶程序。
2.根據(jù)權利要求1所述的PLC,其中所述的電源故障檢測器包括一個提供交流電源的阻抗;一個由所述交流電源導通和截止的光電耦合器;一個當光電耦合器導通、截止充電操作時,進行放電操作的充電和放電單元;一個與充電和放單元相連的,用于當充電和放電單元進行放電操作時,輸出電源故障發(fā)生信號的緩沖單元。
3.根據(jù)權利要求1所述的PLC,其中所述的第二和第三存儲裝置是內部具有電池的RAM(隨機存取存儲器)。
4.根據(jù)權利要求1所述的PLC,其中所述的第二和第三存儲裝置是與備用電池相連的RAM。
5.一種用于PLC的電源故障補償方法,其中PLC包括一個第一存儲裝置,用于存儲當CPU執(zhí)行用程序時所得到的數(shù)據(jù)及用戶程序;一個電源故障檢測裝置,用于檢測交流電源的狀態(tài)、并輸出一個電源故障發(fā)生信號;一個程序計數(shù)器,用于對CPU執(zhí)行的程序的每一步進行計數(shù);一個第二存儲裝置,用于存儲程序計數(shù)器的計數(shù)值,即電源故障前CPU最后執(zhí)行的程序步驟值;一個第三存儲裝置,用于存儲電源故障前在CPU最后執(zhí)行的程序步驟中所得到的程序執(zhí)行結果值;一個電池,用于向第二及第三存儲裝置分別提供一直流電源;以及一個CPU,用于由程序計數(shù)器中讀取電源故障前執(zhí)行的程序步驟值,并將所讀到的數(shù)值存儲到第二存儲裝置中,將電源故障前最后執(zhí)行的程序執(zhí)行結果值存儲到第三存儲裝置中,讀取存儲在第一存儲裝置中的用戶程序以及存儲在第二及第三存儲裝置中的數(shù)據(jù),并從最后執(zhí)行的程序步驟的下一步開始執(zhí)行用戶程序,該方法包括以下步驟從電源故障檢測器檢測出電源故障發(fā)生信號,并判斷電源故障;根據(jù)判斷的結果,從程序計數(shù)器中讀取電源故障發(fā)生前最后執(zhí)行的程序步驟值,將所讀取的步驟值存儲到第二執(zhí)行裝置中,并將電源故障發(fā)生前最后執(zhí)行的程序執(zhí)行結果值存儲到第三存儲裝置中;當電源故障恢復時,判斷在PLC操作期間是否出現(xiàn)電源故障;以及當判斷結果是出現(xiàn)了電源故障時,則從第一存儲裝置中讀取用戶程序,從第二和第三存儲裝置中讀取數(shù)據(jù),并從最后執(zhí)行的程序步驟的下一步開始執(zhí)行用戶程序。
全文摘要
一種具有電源故障補償功能的PLC及一種電源故障補償方法。PLC包括第一存儲單元,存儲程序執(zhí)行數(shù)據(jù)及CPU執(zhí)行的用戶程序;電源故障檢測器,檢測交流電源的狀態(tài)、輸出電源故障發(fā)生信號;程序計數(shù)器,對CPU執(zhí)行的程序的每步進行計數(shù);第二存儲單元,存儲程序計數(shù)器的計數(shù)值;第三存儲單元,存儲電源故障前CPU最后執(zhí)行程序步驟中的程序執(zhí)行結果值;電池,向第二及第三存儲單元分別提供一直流電源CPU。
文檔編號G06F1/30GK1193773SQ9710726
公開日1998年9月23日 申請日期1997年12月17日 優(yōu)先權日1996年12月17日
發(fā)明者梁成云 申請人:Lg產電株式會社