欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

可編程控制器、cpu單元、特殊功能模塊以及雙重化處理方法

文檔序號:6285904閱讀:386來源:國知局
專利名稱:可編程控制器、cpu單元、特殊功能模塊以及雙重化處理方法
技術(shù)領(lǐng)域
本發(fā)明涉及可編程控制器、CPU單元、特殊功能模塊以及雙重化處理方法。
背景技術(shù)
采用可編程控制器(PLC)作為工廠自動化(FA)的控制裝置。該PLC由多個單元構(gòu)成。即,適當(dāng)組合供電源的電源單元、控制整個PLC的CPU單元、安裝在FA的生產(chǎn)裝置和設(shè)備裝置的適當(dāng)位置的開關(guān)、輸入傳感器信號的輸入單元、向激勵器等輸出控制輸出的輸出單元、用于連接到通信網(wǎng)絡(luò)的通信單元等構(gòu)成。
PLC的CPU單元的控制是將輸入單元輸入的信號讀入CPU單元的I/O存儲器(IN刷新),基于用預(yù)先登錄的用戶程序描述語言(例如,ラダ-語言)編寫的用戶程序進行邏輯運算(執(zhí)行運算),將該運算執(zhí)行結(jié)果寫入I/O存儲器并送給輸出單元(OUT刷新),之后,經(jīng)通信單元與通信網(wǎng)絡(luò)上的其它PLC進行數(shù)據(jù)收發(fā),和經(jīng)CPU具有的通信端口與外圍設(shè)備進行數(shù)據(jù)收發(fā)等(周邊處理),循環(huán)重復(fù)上述處理。另外,有時集中進行IN刷新和OUT刷新(I/O刷新)。
但是,CPU單元通常構(gòu)成為具有存儲上述用戶程序的RAM、存儲系統(tǒng)程序的ROM、執(zhí)行上述運算處理等的MPU、執(zhí)行運算時使用的RAM(公共存儲器,IO存儲器、工作存儲器)等。與此不同,還有在CPU單元內(nèi)安裝可拆裝的、作為智能的高功能板的特殊功能模塊(有時稱為INNER板、內(nèi)板、子板,以下稱為“內(nèi)板”)的類型。該內(nèi)板具有例如執(zhí)行生成的可執(zhí)行用于與外部設(shè)備通信的專用處理的程序的功能,通過內(nèi)板實施上述運算處理等的一部分,可以實現(xiàn)控制的高速化、高度化。
但是,為了提高系統(tǒng)的安全性、可靠性,對構(gòu)成PLC的各單元進行雙重化。例如,本發(fā)明對作為對象的CPU單元進行雙重化時,設(shè)置2個CPU單元,同時利用CPU間總線連接這些2個CPU單元。這些2個CPU單元具有基本上相同的功能,執(zhí)行存儲在各CPU單元的相同內(nèi)容的用戶程序。
另外,2臺CPU單元中,一個CPU單元成為主用CPU單元,實際進行循環(huán)處理,對存儲器進行讀寫和與外部的I/O設(shè)備等之間進行控制數(shù)據(jù)(I/O數(shù)據(jù))的收發(fā),從而控制FA網(wǎng)絡(luò)系統(tǒng)。另一個CPU單元成為備用CPU單元,待機中,執(zhí)行與主用的用戶程序相同內(nèi)容的用戶程序,但運算結(jié)果不反映到IO存儲器。另外,從主用CPU單元接收處理結(jié)果等,進行備用CPU單元的存儲器的更新。這樣,確保備用CPU單元和主用CPU單元的存儲器的同一性。
另外,在主用CPU單元發(fā)生了故障時,備用CPU單元轉(zhuǎn)換為主用CPU單元,進行實際的控制等動作。從而,即使CPU單元發(fā)生了故障,系統(tǒng)也不會馬上停止,繼續(xù)運轉(zhuǎn),因此可以提高可靠性。
上述雙重化系統(tǒng)中,確保CPU單元的IO存儲器等在2個CPU單元之間的同一性,從而保證雙重化系統(tǒng)。但是,在安裝了上述內(nèi)板的類型的CPU單元的情況下,雖然可以維持CPU單元主體側(cè)具有的存儲器的同一性,但不能連內(nèi)板都雙重化。
本發(fā)明的目的在于提供在具有2臺安裝了特殊功能模塊的可編程控制器中,可以構(gòu)筑包含特殊功能模塊的雙重化系統(tǒng)的可編程控制器、CPU單元、特殊功能模塊、以及雙重化處理方法。

發(fā)明內(nèi)容
本發(fā)明的可編程控制器是一種具有2個CPU單元,上述2個CPU單元可以確認(rèn)對方狀態(tài),一方成為主用時另一方成為備用,上述主用CPU單元故障停機時,上述備用CPU單元轉(zhuǎn)換為主用并繼續(xù)運轉(zhuǎn)的可編程控制器。另外,上述2個CPU單元具有可拆裝的、執(zhí)行運算處理的特殊功能模塊,同時這些各特殊功能模塊中,安裝在上述主用CPU單元的功能模塊成為主用特殊功能模塊,與上述主用CPU一起進行控制,安裝在上述備用CPU單元的功能模塊成為備用特殊功能模塊。這樣,可以進行還包含特殊功能模塊的雙重化,成為更安全、高功能、高可靠性的可編程控制器。
另外,最好是以上述結(jié)構(gòu)為前提,上述2個CPU單元和、安裝在各CPU的上述特殊功能模塊之間的數(shù)據(jù)交換經(jīng)公共存儲器進行,上述2個特殊功能模塊與上述2個CPU單元異步執(zhí)行運算,同時在該運算執(zhí)行中,不進行存儲在上述公共存儲器的I/O數(shù)據(jù)的寫入,由上述運算執(zhí)行得到的上述I/O數(shù)據(jù)在與被安裝的CPU單元的同步處理中傳送給上述CPU單元。
為了構(gòu)筑相關(guān)的可編程控制器,本發(fā)明的CPU單元是例如可安裝執(zhí)行運算處理的特殊功能模塊的對應(yīng)雙重化的CPU單元,采用2個模式,即基于用戶程序進行控制的主用模式和、不進行上述控制的備用模式,上述備用模式時,若檢測到對方CPU單元故障停機,則轉(zhuǎn)換為主用并繼續(xù)運轉(zhuǎn)的CPU單元中,與自身安裝的上述特殊功能模塊之間的數(shù)據(jù)交換是通過公共存儲器進行,具有執(zhí)行完包含上述用戶程序的運算執(zhí)行的循環(huán)處理之后,與上述特殊功能模塊之間取同步并進行數(shù)據(jù)的收發(fā)的內(nèi)部服務(wù)處理功能,該內(nèi)部服務(wù)處理功能可以將通過自身安裝的上述特殊功能模塊的運算執(zhí)行而得到的I/O數(shù)據(jù)存儲到上述公共存儲器。
另外,用于構(gòu)筑上述可編程控制器的本發(fā)明的特殊功能模塊是在對應(yīng)雙重化的CPU單元可拆裝的特殊功能模塊,上述特殊功能模塊和上述CPU單元之間的數(shù)據(jù)交換通過公共存儲器進行,上述特殊功能模塊與被安裝的CPU單元異步地進行運算,同時在該運算執(zhí)行中,不進行存儲在上述公共存儲器的I/O數(shù)據(jù)的寫入,由上述運算執(zhí)行得到的上述I/O數(shù)據(jù)在與被安裝的CPU單元的同步處理中傳送給上述CPU單元。
另外,上述可編程控制器,本發(fā)明相關(guān)的特殊功能模塊,是在作為基于用戶程序進行控制的主用CPU單元進行工作的模式和作為不進行所述控制的備用CPU單元進行工作的模式中的任意模式下工作的對應(yīng)雙重化的CPU單元中可拆裝的安裝的特殊功能模塊;所述特殊功能模塊具有在安裝自己的所述對應(yīng)雙重化的CPU單元作為主用CPU單元工作的模式下,作為主用特殊功能模塊進行工作;在安裝自己的所述對應(yīng)雙重化的CPU單元作為備用CPU單元工作的模式下,作為備用特殊功能模塊進行工作的功能,所述特殊功能模塊和所述CPU單元之間的數(shù)據(jù)交換通過公共存儲器進行,所述特殊功能模塊與被安裝的CPU單元異步地進行運算,同時在該運算執(zhí)行中,不將該運算執(zhí)行中得到的I/O數(shù)據(jù)向所述公共數(shù)據(jù)存儲器中寫入,在所述運算執(zhí)行中得到的所述I/O數(shù)據(jù)在與被安裝的CPU單元的同步處理中寫入所述公共存儲器。
本發(fā)明的雙重化處理方法是具有2臺備有執(zhí)行運算的特殊功能模塊的CPU單元、并且該2臺CPU單元構(gòu)成雙重化系統(tǒng)的可編程控制器的上述雙重化處理方法,可以控制為上述2個特殊功能模塊中,安裝在上述主用CPU單元的功能模塊成為主用的特殊功能模塊,與上述主用CPU單元一起進行控制,安裝在上述備用CPU單元的功能模塊成為備用的特殊功能模塊。
另外,以有關(guān)結(jié)構(gòu)為前提,上述2個CPU單元和、安裝在各CPU單元的上述特殊功能模塊之間的數(shù)據(jù)交換是通過公共存儲器進行,上述2個特殊功能模塊與上述2個CPU單元異步執(zhí)行運算,該運算執(zhí)行中,不進行存儲在上述公共存儲器的I/O數(shù)據(jù)的寫入,由上述運算執(zhí)行得到的上述I/O數(shù)據(jù)在與被安裝的CPU單元的同步處理中傳送給上述CPU單元。
在此,對上述存儲器的運算執(zhí)行結(jié)果的寫入可以由CPU單元進行,也可以是根據(jù)來自CPU單元的命令,由特殊功能模塊進行。
根據(jù)本發(fā)明,2個特殊功能模塊分別異步地運算執(zhí)行同一內(nèi)容的程序。另外,由于構(gòu)筑了雙重化系統(tǒng),處理對象的數(shù)據(jù)也相同,所以最終的運算結(jié)果也一致。
最好是,取得安裝在上述CPU單元的上述特殊功能模塊自己的運算執(zhí)行結(jié)果和安裝在對方CPU單元的上述特殊功能模塊的運算執(zhí)行結(jié)果,同時比較取得的2個運算執(zhí)行結(jié)果,在不一致時,運算處理慢的特殊功能模塊進行加快運算的補償處理,使2個特殊功能模塊的進展相等。
另外,作為用于構(gòu)筑有關(guān)的可編程控制器的CPU單元,對上述公共存儲器的上述I/O數(shù)據(jù)的存儲是以自身安裝的特殊功能模塊和對方CPU單元安裝的特殊功能模塊的運算執(zhí)行結(jié)果一致為條件進行的。
像這樣,通過進行補償處理,由于每次進行補償處理后,2個特殊功能模塊的運算處理的進行狀態(tài)一致,所以寫入的運算結(jié)果的數(shù)據(jù)也相同。
另外,本發(fā)明的可編程控制器中,上述主用特殊功能模塊具有在根據(jù)來自外部的命令,存儲在上述主用特殊功能模塊的存儲器的變量數(shù)據(jù)或參數(shù)數(shù)據(jù)變更時,對上述主用CPU單元請求雙重化初始化處理的功能,上述主用CPU單元具有至少取得上述存儲器的變更的內(nèi)容,同時輸出給上述備用的特殊功能模塊,使上述主用的特殊功能模塊的存儲器內(nèi)容和上述備用的特殊功能模塊的存儲器內(nèi)容一致的功能。另外,存儲在特殊功能模塊的存儲器的變量數(shù)據(jù)是例如由運算執(zhí)行等循環(huán)重寫的數(shù)據(jù)。存儲在特殊功能模塊的存儲器的參數(shù)數(shù)據(jù)不是由運算執(zhí)行等循環(huán)重寫,而是利用工具等從外部重寫的數(shù)據(jù),例如是特殊功能模塊的有關(guān)系統(tǒng)設(shè)定的數(shù)據(jù)和特殊功能模塊用的用戶程序等。
主用側(cè)的特殊功能模塊有時在運算處理中使用工具等從外部變更存儲器的存儲內(nèi)容。此時,通過進行雙重化初始化處理,可以將該變更內(nèi)容傳送給備用側(cè)的特殊功能模塊側(cè),可以確保同一性。另外,“上述向備用的特殊功能模塊輸出”在實施例中是經(jīng)由備用的CPU單元傳送給主用的特殊功能模塊,但當(dāng)然也可以是構(gòu)筑直接傳送給特殊功能模塊的結(jié)構(gòu),由該結(jié)構(gòu)進行傳送。


圖1是表示本發(fā)明的一實施例的圖。
圖2是表示本發(fā)明的一實施例的主要部分的圖。
圖3是表示CPU單元和內(nèi)板的功能的流程圖。
圖4是表示CPU單元-INNER板I/F區(qū)域的數(shù)據(jù)結(jié)構(gòu)的一例的圖。
圖5是表示CPU狀態(tài)區(qū)的數(shù)據(jù)結(jié)構(gòu)的一例的圖。
圖6是表示INNER板狀態(tài)區(qū)的數(shù)據(jù)結(jié)構(gòu)的一例的圖。
圖7是表示CPU-INNER命令響應(yīng)區(qū)的數(shù)據(jù)結(jié)構(gòu)的一例的圖。
圖8是表示CPU-INNER命令響應(yīng)區(qū)所用的命令/響應(yīng)的一例的圖。
圖9是表示同步開始處理的具體處理例的圖。
圖10是表示運算結(jié)果補償處理的處理順序的一例的圖。
圖11是表示運算結(jié)果傳送開始處理的具體的處理例的圖。
圖12是表示運算結(jié)果補償處理的具體的處理例的圖。
圖13是表示運算結(jié)果傳送處理的具體的處理例的圖。
圖14是表示運算結(jié)果傳送處理的具體的處理例的圖。
圖15是表示運算結(jié)果傳送處理的具體的處理例的圖。
圖16是表示運算結(jié)果傳送處理的具體的處理例的圖。
圖17是表示運算結(jié)果傳送處理的具體的處理例的圖。
圖18是表示運算結(jié)果傳送處理的具體的處理例的圖。
圖19是表示運算結(jié)果傳送處理的具體的處理例的圖。
圖20是表示循環(huán)處理的具體的處理例的圖。
圖21是表示事件執(zhí)行處理的具體的處理例的圖。
圖22是表示事件執(zhí)行處理的具體的處理例的圖。
圖23是表示同步結(jié)束處理的具體的處理例的圖。
圖24是表示CPU單元和內(nèi)板的功能(雙重化初始化處理)的流程圖。
圖25是表示CPU單元和內(nèi)板的雙重化初始化處理的流程圖。
圖26是表示集中數(shù)據(jù)傳送處理的具體的處理例的圖。
圖27是表示集中數(shù)據(jù)傳送處理的具體的處理例的圖。
圖28是表示集中數(shù)據(jù)傳送處理的具體的處理例的圖。
圖29是表示集中數(shù)據(jù)傳送處理的具體的處理例的圖。
圖30是表示集中數(shù)據(jù)傳送處理的具體的處理例的圖。
圖31是表示集中數(shù)據(jù)傳送處理的具體的處理例的圖。
圖32是表示集中數(shù)據(jù)傳送處理的具體的處理例的圖。
具體實施例方式
圖1示出本發(fā)明的可編程控制器(PLC)的一實施例。本發(fā)明的PLC10由多個單元構(gòu)成,各單元雙重化。即,對構(gòu)成PLC10的各單元供電的2臺電源單元11,運算執(zhí)行用戶程序、具有I/O刷新和循環(huán)執(zhí)行外圍處理的功能的第1、第2CPU單元12、13,控制這些第1、第2CPU單元12、13的動作的雙工單元16、連接輸入輸出設(shè)備的I/O單元17等。
這些單元經(jīng)系統(tǒng)總線19連接(參考圖2)。當(dāng)然,在該PLC10除了上述單元之外,還存在可安裝的單元,根據(jù)需要增減連結(jié)的單元。
該PLC10中,電源單元11、第1、第2CPU單元12、13雙重化。即,2臺電源單元11通過并聯(lián)連接向PLC10的各單元供電。因此,其中一方電源單元11發(fā)生故障、異常等而不能供電時,另一方電源單元11對各單元繼續(xù)供電。
由于第1、第2CPU單元12、13執(zhí)行同一內(nèi)容的用戶程序,所以實際在系統(tǒng)運行時,某一方成為控制系統(tǒng)(主用),另一方成為備用。成為控制系統(tǒng)的CPU單元進行的用戶程序的運算結(jié)果反映到控制(經(jīng)I/O單元輸出到外部設(shè)備)。在備用CPU單元側(cè)也執(zhí)行同一內(nèi)容的用戶程序,但不輸出其結(jié)果。備用CPU單元從控制系統(tǒng)的CPU單元接收運算執(zhí)行結(jié)果,執(zhí)行更新自己的存儲器等的規(guī)定處理。這樣,備用CPU單元維持與控制系統(tǒng)的CPU單元相同的狀態(tài)。從而,在控制系統(tǒng)的CPU單元因異常而故障停機時,備用CPU單元可以馬上轉(zhuǎn)換為控制系統(tǒng)并執(zhí)行控制動作,實現(xiàn)熱備份方式的雙重化系統(tǒng)。
第1、第2CPU單元12、13的轉(zhuǎn)換是由作為雙重化控制器單元的雙工單元16進行。即,如圖2所示,雙工單元16具有雙重化控制電路16a,利用該雙重化控制電路16a操作總線轉(zhuǎn)換器18而轉(zhuǎn)換總線和進行在第1、第2CPU單元12、13之間的同步控制。另外,經(jīng)該雙工單元16,在第1、第2CPU單元12、13之間進行數(shù)據(jù)交換。
本實施例中,在第1、第2CPU單元12、13分別內(nèi)置有第1、第2內(nèi)板14、15。具體說來,通過安裝在各CPU單元具有的槽,進行機械組合,同時經(jīng)總線可以與CPU單元進行數(shù)據(jù)交換。另外,對該第1、第2內(nèi)板14、15也可以擇一選取主用和備用。即,在被安裝的CPU單元為主用時,內(nèi)板也成為主用,在被安裝的CPU單元為備用時,內(nèi)板也成為備用。
以下說明中,為了方便,以第1CPU單元12、第1內(nèi)板14為主用,第2CPU單元13、第2內(nèi)板15為備用進行說明。與第1、第2CPU單元12、13同樣,第1內(nèi)板14和第2內(nèi)板15也具有相同的功能,執(zhí)行同一處理。當(dāng)然,第1、第2CPU單元12、13的硬件結(jié)構(gòu)采用相同結(jié)構(gòu),第1、第2內(nèi)板14、15的硬件結(jié)構(gòu)也采用相同結(jié)構(gòu)。
具體說來,如圖2所示,第1、第2CPU單元12、13具有存儲用戶程序的用戶存儲器12a、13a,運算執(zhí)行該用戶存儲器12a、13a中存儲的用戶程序、循環(huán)執(zhí)行I/O刷新和外圍處理的MPU12b、13b和在該運算執(zhí)行時作為工作區(qū)使用的RAM12c、13c,IO存儲器12d、13d以及I/F-ASIC12e、13e。
第1、第2內(nèi)板14、15具有存儲有內(nèi)板用的系統(tǒng)程序等的ROM14a、15a,與對應(yīng)的CPU單元進行通信、同時執(zhí)行ROM14a、15a中存儲的系統(tǒng)程序的MPU14b、15b和存儲有內(nèi)板上執(zhí)行的內(nèi)板用的用戶程序、同時在該系統(tǒng)程序的執(zhí)行中作為工作區(qū)等使用的RAM14c、15c。
上述ROM14a、15a、MPU14b、15b、以及RAM14c、15c經(jīng)總線14d、15d連接。另外,經(jīng)該總線14d、15d連接第1、第2內(nèi)板14、15和、第1、第2CPU單元12、13的I/F-ASIC12e、13e。在第1、第2內(nèi)板14、15的MPU14b、15b和、I/F-ASIC12e、13e之間設(shè)有中斷信號線14e、15e。
IO存儲器12d、13d除了具有存儲作為通常的控制數(shù)據(jù)的I/O數(shù)據(jù)的IO存儲器的功能之外,還作為第1、第2CPU單元12、13和、安裝在這些CPU單元的第1、第2內(nèi)板14、15間的公共存儲器的功能。另外,第1、第2CPU單元12、13的I/F-ASIC12e、13e分別具有進行第1、第2CPU單元12、13內(nèi)的MPU12b、13b和、第1、第2內(nèi)板14、15內(nèi)的MPU14b、15b訪問對應(yīng)的第1、第2CPU單元12、13內(nèi)的IO存儲器12d、13d時的仲裁的功能。這樣,經(jīng)IO存儲器12d、13d,對應(yīng)的內(nèi)板和CPU單元之間進行數(shù)據(jù)交換。
另外,如上所述,第1、第2CPU單元12、13以及第1、第2內(nèi)板14、15中,一方成為主用,另一方成為備用。
即,主用側(cè)的第1CPU單元12的處理是CPU間同步處理,即與第2CPU單元13取同步,彼此執(zhí)行各種處理,有關(guān)的各種處理是運算執(zhí)行用戶程序的處理、IO刷新處理、外圍服務(wù)處理、內(nèi)板服務(wù)處理等,循環(huán)執(zhí)行有關(guān)處理。
另外,備用側(cè)的第2CPU單元13的處理基本上與第1CPU單元12同樣,執(zhí)行用戶程序,同時將運算執(zhí)行的結(jié)果存儲到IO存儲器13d。具體說來,進行CPU間同步處理,即與第1CPU單元12取同步,彼此執(zhí)行各種處理。有關(guān)的各種處理是運算執(zhí)行用戶程序的處理、外圍服務(wù)處理、內(nèi)板服務(wù)處理等,循環(huán)執(zhí)行有關(guān)處理。像這樣,與主用側(cè)的第1CPU單元12相比,不執(zhí)行IO刷新處理。另外,IO存儲器13d的數(shù)據(jù)反映主用側(cè)的第1CPU單元12的IO存儲器13d的內(nèi)容,兩者的存儲內(nèi)容一致。
主用側(cè)的第1內(nèi)板14與第1CPU單元12之間進行同步處理,上述第1CPU單元12進行內(nèi)板服務(wù)處理時,執(zhí)行規(guī)定的處理,返回執(zhí)行結(jié)果。即,使用IO存儲器12d的公共存儲區(qū)進行數(shù)據(jù)交換。
備用側(cè)的第2內(nèi)板15與第2CPU單元13之間進行同步處理,讀出IO存儲器13d的公共存儲區(qū)的數(shù)據(jù)(反映第1CPU單元12側(cè)的運算結(jié)果等),執(zhí)行規(guī)定的處理。另外,第2內(nèi)板15將自己的進行了運算處理的結(jié)果存儲到IO存儲器13d的公共存儲區(qū)。
第2CPU單元13側(cè)的數(shù)據(jù)交換流如圖2所示,單方向進行。即,從第1CPU單元12側(cè),第1CPU單元12的IO存儲器12d的存儲內(nèi)容(CPU單元用數(shù)據(jù)和內(nèi)板用數(shù)據(jù))傳送并存儲到第2CPU單元13的IO存儲器13d的規(guī)定存儲區(qū)。接著,內(nèi)板用數(shù)據(jù)經(jīng)I/F-ASIC13e傳遞給第2內(nèi)板15。接著,基于該傳來的內(nèi)板用數(shù)據(jù),第2內(nèi)板15進行運算執(zhí)行等。
這樣,由于保證IO存儲器13d與IO存儲器12d具有同一性,所以第2CPU單元13和第2內(nèi)板15也執(zhí)行與第1CPU單元12、第1內(nèi)板14相同的處理,運算結(jié)果也基板上相同。從而,在主用側(cè)的第1CPU單元12和/或第1內(nèi)板14側(cè)發(fā)生了故障等時,在該時刻,第2CPU單元13和第2內(nèi)板15轉(zhuǎn)換為主用。像這樣,第2CPU單元13、第2內(nèi)板15成為主用時,這些執(zhí)行上述主用的處理。從而,可以原樣順暢地繼續(xù)執(zhí)行運轉(zhuǎn)、控制。
各CPU單元和內(nèi)板的處理為如圖3所示的流程。首先,主用的第1CPU單元12執(zhí)行電源ON時的處理(ST1)。該電源ON時的處理例如是進行RAM12c的初始化,識別I/O單元的連接狀態(tài),進行IO存儲器12d的清除等。
另外,若啟動正常,則進行梯式(ラダ一)執(zhí)行處理(ST2)。即,依次運算執(zhí)行用戶存儲器12a中存儲的用戶程序。接著,進行I/O刷新處理(ST3)。即,將IO存儲器12d的預(yù)先分配的輸入單元用的數(shù)據(jù)區(qū)的數(shù)據(jù)更新為從輸入單元接收的數(shù)據(jù)和將該輸出單元用的數(shù)據(jù)區(qū)的數(shù)據(jù)發(fā)送給輸出單元。這樣,可以取得來自傳感器之外的輸入設(shè)備的輸入數(shù)據(jù)和將進行梯式執(zhí)行處理而得到的運算結(jié)果(輸出數(shù)據(jù)等)提供給控制對象設(shè)備。另外,該I/O刷新的結(jié)果,即,更新的IO存儲器12d的內(nèi)容通過I/F-ASOC12e傳送給備用側(cè)的第2CPU單元13的IO存儲器13d。
接著,與第2CPU之間取同步,同時與主用的第1內(nèi)板14之間開始進行同步處理(ST4),執(zhí)行INNER服務(wù)處理(ST5)。該INNER服務(wù)處理是取得后述的第1內(nèi)板14運算而得到的運算結(jié)果和輸出事件處理的請求。若一系列處理結(jié)束,則結(jié)束同步處理后(ST6),執(zhí)行外圍服務(wù)處理(ST7)。作為該外圍服務(wù)有對通信單元等具有特殊功能的單元的數(shù)據(jù)交換處理等。以后,將上述步驟2至7作為一個周期,循環(huán)重復(fù)執(zhí)行。
另一方面,主用的第1內(nèi)板14執(zhí)行電源ON時的處理(ST11)。該電源ON時的處理是例如進行RAM14c的初始化等。
接著,執(zhí)行運算處理(ST12)。即,執(zhí)行RAM14c中存儲的該內(nèi)板用的用戶程序。該運算處理與第1CPU單元12的梯式執(zhí)行等異步進行。一接收來自第1CPU單元12的同步命令信號,就開始同步(ST13),執(zhí)行運算結(jié)果的傳送處理(ST14)、循環(huán)處理(ST15)、以及事件處理(ST16)。該各處理在第1CPU單元12的INNER服務(wù)期間(ST5)執(zhí)行。該同步處理一結(jié)束(ST17),就返回步驟12,開始運算處理。另外,步驟12的運算執(zhí)行的期間禁止寫入作為來自第1內(nèi)板14側(cè)的IO存儲器12d上的控制數(shù)據(jù)的I/O數(shù)據(jù)。另外,在步驟12的運算執(zhí)行中從第1CPU單元12沒有接收到同步命令信號時,在運算執(zhí)行結(jié)束狀態(tài)下等待接收同步命令信號。
另外,上述第1內(nèi)板14和第1CPU單元12之間的同步運轉(zhuǎn)通過使用了公共存儲器的數(shù)據(jù)傳送來執(zhí)行,以后具體說明第1內(nèi)板14的同步運轉(zhuǎn)中的各處理。
另一方面,備用側(cè)的第2CPU單元13基本上與第1CPU單元12同樣,首先進行了電源ON時的處理之后(ST21),進行梯式執(zhí)行處理(ST22)。接著,不進行I/O刷新,與第1CPU電源12之間取同步,同時與備用的第2內(nèi)板15之間開始同步處理(ST23),執(zhí)行INNER服務(wù)處理(ST24)。該INNER服務(wù)處理是取得后述的第1內(nèi)板14運算而得到的運算結(jié)果和輸出事件處理的請求。若系列處理結(jié)束,則結(jié)束同步處理后(ST25),執(zhí)行外圍服務(wù)處理(ST26)。
另外,備用的第2內(nèi)板15執(zhí)行電源ON時的處理(ST31)。該電源ON時的處理例如進行RAM15c的初始化等。
接著,執(zhí)行運算處理(ST32)。即,執(zhí)行RAM15c中存儲的該內(nèi)板用的用戶程序。該運算處理與第2CPU單元13的梯式執(zhí)行等異步進行,運算內(nèi)容與第1內(nèi)板14相同。另外,在步驟32的運算執(zhí)行中從第2CPU單元13沒有接收到同步命令信號時,在運算執(zhí)行結(jié)束狀態(tài)下等待接收同步命令信號。
接著,一接收來自第2CPU單元13的同步命令信號,就開始同步(ST33),執(zhí)行運算結(jié)果的傳送處理(ST34)、循環(huán)處理(ST35)、以及事件處理(ST36)。該各處理在第2CPU單元13的INNER服務(wù)期間(ST24)執(zhí)行。周期處理一結(jié)束(ST37),就返回步驟32,開始運算處理。
內(nèi)板14、15的運算執(zhí)行時如允許寫入作為IO存儲器12d、13d上的控制數(shù)據(jù)的I/O數(shù)據(jù)時,會有損壞兩者的數(shù)據(jù)的同一性的危險。因此,運算執(zhí)行時禁止寫入作為IO存儲器12d、13d上的控制數(shù)據(jù)的I/O數(shù)據(jù),使用公共存儲器將在一定的定時(循環(huán)處理(ST15)或事件處理(ST16))運算的結(jié)果、作為IO存儲器12d、13d上的控制數(shù)據(jù)的I/O數(shù)據(jù)傳送給CPU單元。CPU單元基于該傳來的數(shù)據(jù),寫入作為IO存儲器12d、13d上的控制數(shù)據(jù)的I/O數(shù)據(jù)。
下面,說明各處理步驟的具體處理順序。首先,本實施例中,同步處理通過利用公共存儲器(IO存儲器12d、13d)的命令響應(yīng),與對方之間傳送數(shù)據(jù)來執(zhí)行。在此,說明分配給用于上述同步處理的IO存儲器12d、13d的規(guī)定區(qū)域的CPU單元-內(nèi)板I/F區(qū)域。該區(qū)域是用于CPU單元和內(nèi)板的狀態(tài)和CPU單元-內(nèi)板間的命令響應(yīng),成為圖4所示的存儲器分配結(jié)構(gòu)。CPU單元和內(nèi)板可以對自己的區(qū)域進行讀寫(R/W),對對方區(qū)域只進行讀(R)。
CPU狀態(tài)區(qū)是CPU單元寫的區(qū)域,內(nèi)板利用該CPU狀態(tài)區(qū)的規(guī)定標(biāo)記進行運算、作業(yè)的啟動、停止。具體說來,成為圖5所示的結(jié)構(gòu)。在此,“INNER板可以/不可以運轉(zhuǎn)標(biāo)記”是特定內(nèi)板運轉(zhuǎn)(0)還是不能運轉(zhuǎn)(1)的標(biāo)記。即,內(nèi)板在各循環(huán)(“運算執(zhí)行/運算結(jié)果傳送/事件/循環(huán)”)的最初檢查上述標(biāo)記,“1”時,不進行運算。另外,該標(biāo)記為“1”是如例如CPU待機中、或其它設(shè)備運轉(zhuǎn)等待中、或后述的雙重化初始化中(備用側(cè))等,不能保證主用側(cè)和備用側(cè)的數(shù)據(jù)的同一性的情況。
另外,在該CPU狀態(tài)區(qū)寫入傳送給對方的數(shù)據(jù)的存儲區(qū)的起始地址和、數(shù)據(jù)大小。這樣,從在此指定的起始地址和數(shù)據(jù)大小特定應(yīng)傳送的數(shù)據(jù)區(qū),進行傳送處理。
另外,INNER狀態(tài)區(qū)是內(nèi)板寫入的區(qū)域,CPU單元利用該INNER狀態(tài)區(qū)的規(guī)定標(biāo)記進行后述的雙重化初始化啟動、雙重化核對。具體說來,成為如圖6所示的結(jié)構(gòu)。在此,“雙重化初始化請求標(biāo)記”是在內(nèi)板要動態(tài)啟動雙重化初始化時使用的標(biāo)記,在要將主用側(cè)的內(nèi)板(第1內(nèi)板14)的變量數(shù)據(jù)或參數(shù)數(shù)據(jù)的內(nèi)容傳送給備用側(cè)的內(nèi)板(第2內(nèi)板15)時為1。另外,忽視來自備用側(cè)的內(nèi)板的雙重化初始化請求。雙重化的運轉(zhuǎn)開始時,由于無條件進行雙重化初始化,所以實際上在雙重化運轉(zhuǎn)中要進行雙重化初始化時設(shè)定為“1”即可。
核對數(shù)據(jù)區(qū)是為了第1、第2內(nèi)板14、15同步運轉(zhuǎn),核對各種內(nèi)部狀態(tài)是否一致而使用的區(qū)域。預(yù)先定義好該核對數(shù)據(jù)區(qū)中存儲的內(nèi)容,各內(nèi)板(MPU14b、15b)寫入該定義的內(nèi)容。這樣,第1、第2CPU單元12、13對存儲在核對數(shù)據(jù)區(qū)中的數(shù)據(jù)之間進行比較,在不一致(核對錯誤)時,雙重化核對成為異常,不能進行雙重化運轉(zhuǎn)。另外,該核對數(shù)據(jù)的比較定時是電源ON時的內(nèi)板識別時或、雙重化初始化時。
CPU-INNER命令響應(yīng)區(qū)是用于CPU單元-內(nèi)板間的命令/響應(yīng)的區(qū)域,成為如圖7所示的存儲區(qū)的分配。另外,在此使用的命令/響應(yīng)有如圖8所示的命令/響應(yīng)。使用相關(guān)的區(qū)域和命令/響應(yīng),基于如下所示的具體的處理順序進行同步處理。
即,同步處理開始步驟(ST4、ST23)中,首先,第1、第2CPU單元12、13分別向第1、第2內(nèi)板14、15發(fā)出使用中斷信號線14e、15e開始同步的中斷通知。接著,發(fā)出同步開始命令。即,通過在IO存儲器12d、13d上分配的公共存儲器的CPU-INNER命令響應(yīng)區(qū)的該區(qū)域?qū)懭胍?guī)定的命令(0001)來進行(參考圖9)。另外,對同步開始命令附加內(nèi)板用自激振蕩計數(shù)器,利用該計數(shù)器對準(zhǔn)內(nèi)板的時鐘。
接收了上述同步開始的中斷通知的第1、第2內(nèi)板14、15執(zhí)行同步開始處理(ST13、ST33)。即,訪問對應(yīng)的IO存儲器12d、13d,取得命令之后,回復(fù)同步開始命令的響應(yīng)。作為此時回復(fù)的響應(yīng)有以下2種,①進行運算結(jié)果傳送、事件、循環(huán)時(8001)②不進行運算結(jié)果傳送、事件、循環(huán)時(4001)另外,上述響應(yīng)②是內(nèi)板的運算執(zhí)行的進展與上一次循環(huán)相比沒有變化時,即不需要傳送時返回。另外,取得了該響應(yīng)②的CPU單元跳過之后的有關(guān)運算結(jié)果傳送、事件、循環(huán)的各處理步驟。另外,若正常,由于主用側(cè)和備用側(cè)進行同一處理,所以在此返回的響應(yīng)的內(nèi)容相同,但兩者不一致時,將來自主用側(cè)的內(nèi)板的響應(yīng)內(nèi)容作為正確并進行處理。
執(zhí)行上述同步開始處理(返回響應(yīng)①)之后,執(zhí)行運算結(jié)果傳送處理。本實施例中,由于以熱備份方式實現(xiàn)雙重化,所以若在運算執(zhí)行時允許內(nèi)板14、15寫入IO存儲器12d、13d,則會損壞兩者的數(shù)據(jù)同一性。因此,運算執(zhí)行時禁止寫入IO存儲器12d、13d,以一定的定時傳送運算結(jié)果,基于規(guī)定條件,寫入IO存儲器12d、13d。
此時,第1CPU單元12和第2CPU單元13取同步,在第1CPU單元12側(cè)可以取得備用的第2CPU單元13和第2內(nèi)板15的狀態(tài)(存儲器內(nèi)容、第1內(nèi)板執(zhí)行步驟14而得到的當(dāng)前運算結(jié)果)。另外,在第2CPU單元13側(cè)利用來自第1CPU單元12的傳送處理,可以取得主用的第1CPU單元12和第1內(nèi)板14的狀態(tài)(存儲器內(nèi)容、第1內(nèi)板執(zhí)行步驟14而得到的當(dāng)前運算結(jié)果)。
從而,若比較第1內(nèi)板14的運算結(jié)果和第2內(nèi)板15的運算結(jié)果,就可以比較兩個內(nèi)板14、15的運算進展是否一致。即,第1、第2內(nèi)板14、15一起執(zhí)行相同的運算處理。從而,若彼此的程序的處理速度相同,處理同一命令,則該運算結(jié)果相同。因此,確認(rèn)運算結(jié)果是否一致,在不一致時,通過進行為了一致而調(diào)整處理速度的補償處理,該補償處理后,第1、第2內(nèi)板14、15成為處理到同一步驟命令的狀態(tài)(使運算的進展一致的狀態(tài))。像這樣,通過進行適當(dāng)?shù)难a償處理,可以將第1、第2內(nèi)板14、15的處理的進展?fàn)顟B(tài)以每個循環(huán)單位校準(zhǔn),即使第2內(nèi)板15轉(zhuǎn)換為主用,也不需要從第1內(nèi)板14突然改變伴隨運算結(jié)果輸出的控制量等,可以平滑地進行轉(zhuǎn)換。
另外,使該運算進展一致的運算結(jié)果補償處理為如圖10所示。即,執(zhí)行以下所示的(1)至(8)的處理。在此,帶有括號的數(shù)字對應(yīng)于圖10所示的各處理步驟。
(1)主用的第1CPU單元12向主用和備用的第1、第2內(nèi)板14、15發(fā)出運算結(jié)果傳送開始命令。具體說來,如圖11所示,執(zhí)行在公共存儲器的規(guī)定區(qū)域?qū)懭朊睢?002〕的處理。將在公共存儲器的規(guī)定區(qū)域?qū)懭氲拿睢?002〕,通過I/F-ASIC12e也寫入備用側(cè)的第2CPU單元13的公共存儲器的規(guī)定區(qū)域。通過這樣的處理,主用側(cè)的第1CPU單元12,可對第1、第2內(nèi)板發(fā)出運算結(jié)果傳送開始的命令。
(2)主用和備用的第1、第2內(nèi)板14、15發(fā)出運算結(jié)果傳送開始響應(yīng)。與該開始響應(yīng)同時,在數(shù)據(jù)區(qū)設(shè)定運算結(jié)果信息。該運算結(jié)果信息是表示運算執(zhí)行狀況的信息(具體說來,表示內(nèi)板用的用戶程序的執(zhí)行處理進行到哪兒的信息,例如相當(dāng)于用戶程序的步驟序號等),設(shè)計內(nèi)板時定義。即,如圖11所示,寫入命令〔8002〕,同時登錄運算信息。
(3)主用的第1CPU單元12一接收主用和備用的第1、第2內(nèi)板14、15的運算結(jié)果傳送開始命令,就將備用側(cè)的運算結(jié)果信息復(fù)制到本機的運算結(jié)果信息,再將主用側(cè)的運算結(jié)果信息傳送給備用側(cè)。
(4)接著,主用的第1CPU單元12向第1、第2內(nèi)板發(fā)出運算結(jié)果補償開始命令。具體來說,如圖12所示,通過在公共存儲器的規(guī)定區(qū)域?qū)懭朊睢?003〕來進行。將在公共存儲器的規(guī)定區(qū)域?qū)懭氲拿睢?003〕,通過I/F-ASIC12e也寫入備用側(cè)的第2CPU單元13的公共存儲器的規(guī)定區(qū)域。通過這樣的處理,主用側(cè)的第1CPU單元12,可對第1、第2內(nèi)板發(fā)出運算結(jié)果校正開始的命令。
(5)主用和備用的第1、第2內(nèi)板14、15如收到運算結(jié)果校正開始的命令,基于本機和另一機的運算結(jié)果補償運算的進展。即,進展慢的內(nèi)板為了向進展快的內(nèi)板對準(zhǔn)進展,執(zhí)行規(guī)定的運算。例如,運算結(jié)果信息若用用戶程序的步驟序號的情況說明,則如下。在第1內(nèi)板14的用戶程序執(zhí)行到步驟N1,第2內(nèi)板15的用戶程序執(zhí)行到步驟N2(N2比N1小)的狀態(tài)下,補償運算的進展時,進展慢的第2內(nèi)板15通過將用戶程序執(zhí)行到步驟N1,對準(zhǔn)第1內(nèi)板14的進展。
(6)主用和備用的第1、第2內(nèi)板14、15發(fā)出對運算結(jié)果校正開始的響應(yīng)(參考圖12)。發(fā)出對運算結(jié)果校正開始的響應(yīng),具體來說是進行運算的內(nèi)板通過在本機的命令區(qū)寫入響應(yīng)〔8003〕,慢的一側(cè)的內(nèi)板在補償運算完成后,在本機的命令區(qū)寫入響應(yīng)〔8003〕來執(zhí)行。
(7)主用的第1CPU單元12一接收主用和備用側(cè)的運算結(jié)果補償響應(yīng),就向主用和備用的第1、第2內(nèi)板發(fā)出運算結(jié)果反映許可命令。在備用側(cè),也從主用側(cè)發(fā)出運算結(jié)果反映許可命令。具體來說,主用的第1CPU單元2,通過在公共存儲器的規(guī)定區(qū)域?qū)懭脒\算結(jié)果反映許可命令來進行,將在公共存儲器的規(guī)定區(qū)域?qū)懭脒\算結(jié)果反映許可命令,通過I/F-ASIC12e也寫入備用側(cè)的第2CPU單元13的公共存儲器的規(guī)定區(qū)域。通過這樣的處理,主用側(cè)的第1CPU單元12,可對第1、第2內(nèi)板發(fā)出運算結(jié)果反映許可命令。
(8)主用和備用的第1、第2內(nèi)板14、15在收到運算結(jié)果反映許可命令時反映運算結(jié)果。處理完成后,回復(fù)運算結(jié)果反映許可響應(yīng)。
即,由于若從第1、第2內(nèi)板發(fā)出運算結(jié)果步驟處理,則完成運算結(jié)果補償,兩者的進展?fàn)顟B(tài)變成一致,所以在該狀態(tài)下,將內(nèi)板的運算結(jié)果存儲到IO存儲器。另外,示出從相關(guān)的(1)到(8)的運算結(jié)果傳送開始到運算結(jié)果反映許可的CPU-INNER命令響應(yīng)區(qū)的數(shù)據(jù)變化的順序的一例,如圖13至圖19所示。另外,各圖中,ACT為主用、STB為備用側(cè)。該處理中數(shù)據(jù)有變化的區(qū)域用網(wǎng)表示,通過從主用側(cè)傳來而寫入的數(shù)據(jù)用下劃線表示。
簡單說明各處理,運算結(jié)果傳送開始處理(圖13)中,主用的第1CPU單元12在IO存儲器12d中的STB用(備用側(cè)用)的CPU-INNER命令響應(yīng)區(qū)(+80)和、ACT用(備用側(cè)用)的CPU-INNER命令響應(yīng)區(qū)(+336)寫入表示運算結(jié)果傳送開始的命令(0002)。接著,寫入+80的命令通過I/F-ASIC12e而在備用的第2CPU單元13的CPU-INNER命令響應(yīng)區(qū)(+80)寫入相同命令(0002)。
取得了該命令(0002)的內(nèi)板向CPU-INNER命令響應(yīng)區(qū)回復(fù)響應(yīng)(8002),同時分別存儲自己的運算結(jié)果信息(圖14)。具體來說,主用的第1內(nèi)板在CPU-INNER命令響應(yīng)區(qū)(+336)中寫入響應(yīng)(8002),同時在接下來的區(qū)域中存儲自己的運算結(jié)果信息。另一方面,備用的第2內(nèi)板,在CPU-INNER命令響應(yīng)區(qū)(+80)中寫入響應(yīng)(8002),同時在接下來的區(qū)域中存儲自己的運算結(jié)果信息。
接著,復(fù)制另一機的運算結(jié)果信息(圖15)。即,第1CPU單元12取得STB用INNER,即備用的第2內(nèi)板的運算結(jié)果,并存儲到自己的CPU-INNER命令響應(yīng)區(qū)的規(guī)定區(qū)域,同時將ACT用INNER,即主用的第1內(nèi)板的運算結(jié)果傳送給第2CPU單元的IO存儲器13d的CPU-INNER命令響應(yīng)區(qū)的規(guī)定區(qū)域。
接著,運算結(jié)果補償開始處理(圖16)中,主用的第1CPU單元12在IO存儲器12d中的STB用(備用側(cè)用)的CPU-INNER命令響應(yīng)區(qū)(+80)和、ACT用(主用側(cè)用)的CPU-INNER命令響應(yīng)區(qū)(+336)寫入表示運算結(jié)果補償開始的命令(0003)。接著,寫入+80的命令通過I/F-ASIC12e而在備用的第2CPU單元13的CPU-INNER命令響應(yīng)區(qū)(+80)寫入相同命令(0003)。
接著,各內(nèi)板一接收來自CPU單元的運算結(jié)果補償開始命令,就基于自己的運算結(jié)果信息和對方側(cè)內(nèi)板的運算結(jié)果信息開始運算結(jié)果補償,完成后回復(fù)響應(yīng)(8003)(圖17)。
接收該響應(yīng)(8003),主用的第1CPU單元12在IO存儲器12d中的STB用(備用側(cè)用)的CPU-INNER命令響應(yīng)區(qū)(+80)和、ACT用(主用側(cè)用)的CPU-INNER命令響應(yīng)區(qū)(+336)寫入表示運算結(jié)果反映許可的命令(0004)。接著,寫入+80的命令通過I/F-ASIC12e而在備用的第2CPU單元13的CPU-INNER命令響應(yīng)區(qū)(+80)寫入相同命令(0004)(圖18)。
接收該許可,第1、第2內(nèi)板14、15回復(fù)許可響應(yīng)(8004),同時將運算結(jié)果寫入作為公共存儲器的IO存儲器的規(guī)定區(qū)域(圖19)。
下面,說明循環(huán)處理。步驟15、35的內(nèi)板的循環(huán)處理中的處理開始利用同步對準(zhǔn),但實際處理中,在主用側(cè)和備用側(cè)分別執(zhí)行,在兩者間不進行循環(huán)數(shù)據(jù)的交換。具體說來,如圖20所示,通過在CPU-INNER命令區(qū)寫入通知循環(huán)有效開始的命令(0005)來開始。另外,該命令(0005),通過I/F-ASIC12e寫入備用側(cè)的第2CPU單元13的CPU-INNER命令響應(yīng)區(qū)。通過執(zhí)行該循環(huán)處理,在CPU單元和內(nèi)板之間可以周期地進行數(shù)據(jù)交換。
下面,說明事件處理。步驟16、36的事件處理按以下順序進行。即,CPU單元→內(nèi)板的事件是通過主用側(cè)CPU單元在備用側(cè)CPU-INNER命令響應(yīng)區(qū)寫入事件執(zhí)行開始命令,向備用側(cè)的CPU-INNER命令響應(yīng)區(qū)也傳送事件執(zhí)行開始命令,在第1、第2內(nèi)板14、15同時執(zhí)行。另外,在CPU單元丟棄備用側(cè)的響應(yīng)。通過執(zhí)行該事件處理,在CPU單元和內(nèi)板之間可以非周期地交換數(shù)據(jù)。
另一方面,內(nèi)板→CPU單元的事件是該事件處理可以進行用時間片跨過多個周期的處理。即,有時在一個周期沒有完成。事件執(zhí)行結(jié)束后,也用命令通知。
具體說來,如圖12所示,CPU單元寫入通知事件執(zhí)行開始的命令(0006),接收了該命令的內(nèi)板通過回復(fù)響應(yīng)(8006)來開始。接著,如圖22所示,CPU單元寫入通知事件執(zhí)行結(jié)束的命令(0007),通過接收了該命令的內(nèi)板回復(fù)響應(yīng)(8007)來結(jié)束。另外,任一命令向通過I/F-ASIC12e寫入備用側(cè)的第2CPU單元13的CPU-INNER命令響應(yīng)區(qū)。
如圖23所示,CPU單元寫入通知同步結(jié)束的命令(0008)(ST6、ST25),通過接收了該命令的內(nèi)板回復(fù)響應(yīng)(8008)來結(jié)束(ST17、ST37)。
下面,說明雙重化內(nèi)板處理。如上所述,通常的運轉(zhuǎn)狀態(tài)下,通過同步運轉(zhuǎn)確保第1內(nèi)板14和第2內(nèi)板15的數(shù)據(jù)的同一性。但是,可以使用工具等從外部變更主用側(cè)的第1內(nèi)板14的RAM14c中存儲的變量數(shù)據(jù)和參數(shù)數(shù)據(jù)和從外部變更主用的第1CPU單元12的用戶程序和IO存儲器12d中的數(shù)據(jù)(成為I/O刷新的對象的數(shù)據(jù)和、有關(guān)CPU單元的系統(tǒng)設(shè)定的數(shù)據(jù))。這樣,備有側(cè)的第2CPU單元13和第2內(nèi)板15中由于沒有相關(guān)工具引起的變更,所以不能確保第1、第2內(nèi)板14、15間、以及第1、第2CPU單元12、13間的數(shù)據(jù)同一性。
因此,進行雙重化初始化處理,將第1內(nèi)板14的變量存儲器和參數(shù)數(shù)據(jù)等傳送給第2內(nèi)板15側(cè),同時將第1CPU單元12的用戶程序等傳送給第2CPU單元13,確保兩者的同一性。該初始化處理如圖24所示,執(zhí)行完通常的同步運轉(zhuǎn)的INNER服務(wù)處理(ST5、ST24)、事件(ST16、ST36)之后進行(ST8、ST18、ST27、ST38)。
另外,相關(guān)的INNER服務(wù)處理的更具體的順序如圖25所示。即,事件處理一結(jié)束,(10)主用的第1CPU單元12檢查用戶程序和IO存儲器12d上的數(shù)據(jù)是否由外部變更,第1內(nèi)板14檢查變量數(shù)據(jù)和參數(shù)數(shù)據(jù)是否由外部變更。
(11)第1內(nèi)板14判斷為從外部有變更時,向第1CPU單元12通知雙重化初始化請求。該通知通過立起雙重化初始化請求標(biāo)記(參考圖6)來進行。(12)第1CPU單元12監(jiān)視有無來自第1內(nèi)板14的相關(guān)請求(實際上檢查標(biāo)記)。
接著,(13)接收到該雙重化初始化請求的通知時,開始雙重化初始化。另外,第1CPU單元12在自己的用戶程序和IO存儲器12d上的數(shù)據(jù)由外部變更時,也開始雙重化處理。在相關(guān)的第1CPU單元12、第1內(nèi)板14的任一個都沒有變更時,不進行雙重化初始化處理而結(jié)束。
(14)一開始雙重化初始化,第1CPU單元12將用于數(shù)據(jù)傳送的區(qū)域(雙重化初始化傳送數(shù)據(jù)存儲區(qū))通知給主用的第1內(nèi)板14。該雙重化初始化傳送數(shù)據(jù)存儲區(qū)是雙重化初始化時存儲傳送數(shù)據(jù)的區(qū)域。另外,第1CPU單元12、第1內(nèi)板14的雙方都可以對該雙重化初始化傳送數(shù)據(jù)存儲區(qū)進行讀寫。若進行了相關(guān)的通知,則等待來自第1內(nèi)板14的應(yīng)答。
(15)第1內(nèi)板14向第1CPU單元12通知寫入開始地址和數(shù)據(jù)大小,同時在該地址位置寫入數(shù)據(jù)。數(shù)據(jù)的寫入一完成,就向第1CPU單元12通知寫入完成。
(16)接收了該通知的第1CPU單元12向第2內(nèi)板15通知取得的寫入開始地址和數(shù)據(jù)大小,等待來自第2內(nèi)板15的讀完命令。
(17)備用的第2內(nèi)板基于來自第1CPU12的通知,讀出在第1內(nèi)板14側(cè)變更的數(shù)據(jù)。若都讀完數(shù)據(jù),則向主用的第1CPU單元12通知數(shù)據(jù)讀完。
(18)若第1CPU單元12確認(rèn)了來自第2內(nèi)板15的讀完通知,則結(jié)束雙重化初始化。
以上的采用了圖25的INNER服務(wù)處理的說明只是有關(guān)從雙重化初始化處理的主用側(cè)內(nèi)板向備用側(cè)內(nèi)板傳送變量數(shù)據(jù)和參數(shù)數(shù)據(jù)。從雙重化初始化處理的主用CPU向備用CPU的數(shù)據(jù)傳送可以通過主用CPU將自己的用戶存儲器中的用戶程序?qū)懭雮溆肅PU的用戶存儲器來實現(xiàn)。
但是,上述(17)的第2內(nèi)板15的數(shù)據(jù)讀出實際上通過傳送數(shù)據(jù)來執(zhí)行。另外,本實施例中,有分割數(shù)據(jù)傳送和集中數(shù)據(jù)傳送的2種傳送方法。使用哪一種方法是在設(shè)計內(nèi)板時定義好。
集中數(shù)據(jù)傳送是為了在雙重化系統(tǒng)運轉(zhuǎn)時,使主用側(cè)和備用側(cè)執(zhí)行相同的運算,需要1個周期傳送完時進行的傳送方法。內(nèi)板中,變量數(shù)據(jù)是應(yīng)該在集中數(shù)據(jù)傳送中傳送的數(shù)據(jù)。
分割數(shù)據(jù)傳送是是對主用側(cè)和備用側(cè)的第1、第2內(nèi)板14、15的運算執(zhí)行沒有影響,用多個周期傳送也可以時的傳送方法。內(nèi)板中,參數(shù)數(shù)據(jù)是應(yīng)該在分割數(shù)據(jù)傳送中傳送的數(shù)據(jù)。
上述分割/集中傳送通過CPU-INNER命令響應(yīng)區(qū)進行,與上述相同在通常循環(huán)動作后執(zhí)行,具體的公共存儲器的命令響應(yīng)的數(shù)據(jù)傳送處理如圖26以后所示。
集中數(shù)據(jù)傳送按圖26至圖32所示的處理順序進行。即,首先,CPU單元在命令響應(yīng)區(qū)的規(guī)定區(qū)域?qū)懭胫甘炯袛?shù)據(jù)傳送的命令(0100),同時指定使用的集中傳送數(shù)據(jù)存儲區(qū)(圖26(a))。該集中傳送數(shù)據(jù)存儲區(qū)在本實施例中有2處,即第1和第2,用該區(qū)域指定來指定某個區(qū)域(1或2)。這對應(yīng)于圖25的處理(14)。
接收該指定,內(nèi)板在公共存儲器存儲開始地址(絕對地址/相對地址的任一個都可以)和、數(shù)據(jù)大小(byte單位/word單位等),同時,作為響應(yīng)回復(fù)當(dāng)前狀態(tài)(未傳送完4100,傳送完8100)(圖26(b)、(c))。這對應(yīng)于圖25的處理(15)。
接著,如接到收傳送完成的命令(8100),主用的第1CPU單元12將接收到的第1內(nèi)板的數(shù)據(jù)(參數(shù)數(shù)據(jù)、變量數(shù)據(jù)等)經(jīng)由備用的第2CPU單元13傳遞給備用的第2內(nèi)板15。在此,第1CPU單元12對傳送的數(shù)據(jù)不進行檢查,原樣傳送。
即,如圖27(a)所示,主用的第1CPU單元12指定存儲有傳送的數(shù)據(jù)的傳送源區(qū)域(1或2),同時寫入開始地址和大小。接著,從對方側(cè)接收響應(yīng)(8101)。
另外,集中傳送的具體的數(shù)據(jù)變更履歷為圖28以后所示。各圖中,變更了數(shù)據(jù)的部分(寫入的部分)用網(wǎng)表示,各圖的標(biāo)題中的括號內(nèi)表示相關(guān)的網(wǎng)部分的數(shù)據(jù)的變更者。首先,如圖28所示,主用的第1CPU單元輸入采用傳送區(qū)1(0001)進行集中傳送數(shù)據(jù)的命令(0100)。
接收該命令,如圖29所示,主用的第1內(nèi)板14寫入響應(yīng)(8100),同時存儲開始地址和大小。存儲該響應(yīng)的同時,應(yīng)傳送的數(shù)據(jù)存儲到規(guī)定區(qū)域。
接著,如圖30所示,主用的第1CPU單元12將取得的開始地址、大小復(fù)制到固定區(qū)域。這對應(yīng)于圖25的處理(16)。
通過I/F-ASIC12e,在備用側(cè)的公共存儲器的規(guī)定區(qū)域?qū)懭朊?0101)、使用區(qū)域(0001)、開始地址、以及大小。此時,也傳送實際數(shù)據(jù)。這對應(yīng)于圖25的處理(17)。
另外,完成上述圖30所示的復(fù)制,同時第1CPU單元12輸入用于下一傳送的命令(0100),同時指定傳送區(qū)(0002)(參考圖31)。使在此指定的區(qū)域為與前一次不同的區(qū)域。像這樣,通過分開使用集中傳送數(shù)據(jù)存儲區(qū),可以避免覆蓋或消除數(shù)據(jù)。
隨著該命令輸入,備用的第2內(nèi)板15回復(fù)CPU單元→內(nèi)板集中數(shù)據(jù)傳送響應(yīng)(8101),主用的第1內(nèi)板14回復(fù)內(nèi)板→CPU單元集中數(shù)據(jù)傳送響應(yīng)(8100)(參考圖32)。
另一方面,分割數(shù)據(jù)傳送通過將主用的內(nèi)板的參數(shù)數(shù)據(jù)內(nèi)容經(jīng)由CPU單元傳遞給備用的內(nèi)板來實現(xiàn)。該處理是采用命令響應(yīng)執(zhí)行。
另外,如上所述,雙重化初始化處理在利用工具等從外部接受了變更時當(dāng)然進行,但例如在電源ON時等也進行。
如上所述,本發(fā)明是具有2臺安裝了特殊功能模塊的CPU單元的可編程控制器中,可以構(gòu)筑包含特殊功能模塊的雙重化系統(tǒng)。
權(quán)利要求
1.一種可編程控制器,具有2個CPU單元,所述2個CPU單元可以確認(rèn)對方狀態(tài),一方成為主用時另一方成為備用,所述主用CPU單元故障停機時,所述備用CPU單元轉(zhuǎn)換為主用并繼續(xù)運轉(zhuǎn),其特征在于所述2個CPU單元具有可拆裝的、執(zhí)行運算處理的特殊功能模塊,同時這些各特殊功能模塊中,安裝在所述主用CPU單元的功能模塊成為主用特殊功能模塊,與所述主用CPU一起進行控制,安裝在所述備用CPU單元的功能模塊成為備用特殊功能模塊。
2.如權(quán)利要求1所述的可編程控制器,其特征在于所述2個CPU單元和安裝在各CPU的所述特殊功能模塊之間的數(shù)據(jù)交換經(jīng)公共存儲器進行,所述2個特殊功能模塊與所述2個CPU單元異步執(zhí)行運算,同時在該運算執(zhí)行中,不將該運算執(zhí)行中得到的I/O數(shù)據(jù)寫入所述公共數(shù)據(jù)存儲器中,在所述運算執(zhí)行中得到的所述I/O數(shù)據(jù)在與被安裝的CPU單元的同步處理中寫入所述公共存儲器。
3.如權(quán)利要求1或2所述的可編程控制器,其特征在于安裝在所述CPU單元的所述特殊功能模塊取得自己的運算執(zhí)行結(jié)果和安裝在對方CPU單元的所述特殊功能模塊的運算執(zhí)行結(jié)果,同時比較這些取得的2個運算執(zhí)行結(jié)果,在不一致時,運算處理慢的特殊功能模塊進行加快運算的補償處理,使2個特殊功能模塊的進展相等。
4.如權(quán)利要求1至3的任一項所述的可編程控制器,其特征在于所述主用特殊功能模塊具有在根據(jù)來自外部的命令,存儲在所述主用特殊功能模塊的存儲器的變量數(shù)據(jù)或參數(shù)數(shù)據(jù)變更時,對所述主用CPU單元請求雙重化初始化處理的功能,所述主用CPU單元具有在被要求所述雙重初始化時,至少取得所述存儲器的變更的內(nèi)容,同時輸出給所述備用的特殊功能模塊,使所述主用的特殊功能模塊的存儲器內(nèi)容和所述備用的特殊功能模塊的存儲器內(nèi)容一致的功能。
5.一種CPU單元,可安裝執(zhí)行運算處理的特殊功能模塊對應(yīng)雙重化,采用2個模式,即基于用戶程序進行控制的主用模式和不進行所述控制的備用模式,所述備用模式時,若檢測到對方CPU單元故障停機,則轉(zhuǎn)換為主用并繼續(xù)運轉(zhuǎn),其特征在于與自身安裝的所述特殊功能模塊之間的數(shù)據(jù)交換是通過公共存儲器進行,具有執(zhí)行完包含所述用戶程序的運算執(zhí)行的循環(huán)處理之后,與所述特殊功能模塊之間取同步并進行數(shù)據(jù)的收發(fā)的內(nèi)部服務(wù)處理功能,該內(nèi)部服務(wù)處理功能可以將通過自身安裝的所述特殊功能模塊的運算執(zhí)行而得到的I/O數(shù)據(jù)存儲到所述公共存儲器。
6.如權(quán)利要求5所述的CPU單元,其特征在于對所述公共存儲器的所述I/O數(shù)據(jù)的存儲是以自身安裝的特殊功能模塊和對方CPU單元安裝的特殊功能模塊的運算執(zhí)行結(jié)果一致為條件進行的。
7.一種特殊功能模塊,在作為基于用戶程序進行控制的主用CPU單元進行工作的模式和作為不進行所述控制的備用CPU單元進行工作的模式中的任意模式下工作的對應(yīng)雙重化的CPU單元中可拆裝地安裝,其特征在于所述特殊功能模塊具有在安裝自身的所述對應(yīng)雙重化的CPU單元作為主用CPU單元工作的模式下,作為主用特殊功能模塊進行工作;在安裝自身的所述對應(yīng)雙重化的CPU單元作為備用CPU單元工作的模式下,作為備用特殊功能模塊進行工作的功能,所述特殊功能模塊和所述CPU單元之間的數(shù)據(jù)交換通過公共存儲器進行,所述特殊功能模塊與被安裝的CPU單元異步地進行運算,同時在該運算執(zhí)行中,不將該運算執(zhí)行中得到的I/O數(shù)據(jù)向所述公共數(shù)據(jù)存儲器中寫入,在所述運算執(zhí)行中得到的所述I/O數(shù)據(jù)在與被安裝的CPU單元的同步處理中寫入所述公共存儲器。
8.一種具有2臺備有執(zhí)行運算的特殊功能模塊的CPU單元、并且該2臺CPU單元構(gòu)成雙重化系統(tǒng)的可編程控制器的雙重化處理方法,其特征在于所述2臺CPU單元可按作為基于用戶程序進行控制的主用CPU單元進行工作的模式和作為不進行所述控制的備用CPU單元進行工作的模式中的任何一個模式來工作;所述2個特殊功能模塊中,安裝在所述主用CPU單元的功能模塊成為主用的特殊功能模塊,與所述主用CPU單元一起進行控制,安裝在所述備用CPU單元的功能模塊成為備用的特殊功能模塊;在所述主用側(cè)的CPU單元或安裝在該CPU單元的所述特殊模塊發(fā)生了異常時,控制所述備用的CPU單元和特殊功能模塊轉(zhuǎn)換為主用。
9.一種具有2臺備有執(zhí)行運算的特殊功能模塊的CPU單元、并且該2臺CPU單元構(gòu)成雙重化系統(tǒng)的可編程控制器的雙重化處理方法,其特征在于所述2臺CPU單元在可按基于用戶程序進行控制的主用CPU單元進行工作的模式和作為不進行所述控制的備用CPU單元進行工作的模式中的任何一個模式來工作,所述2個特殊功能模塊中,安裝在所述主用CPU單元的功能模塊成為主用的特殊功能模塊,與所述主用CPU單元一起進行控制,安裝在所述備用CPU單元的功能模塊成為備用的特殊功能模塊,所述2個CPU單元和分別安裝在該CPU單元的所述特殊功能模塊之間的數(shù)據(jù)交換通過公共存儲器進行,所述2個特殊功能模塊與所述2個CPU單元異步執(zhí)行運算,該運算執(zhí)行中,不將該運算執(zhí)行中得到的I/O數(shù)據(jù)寫入所述公共數(shù)據(jù)存儲器中,在所述運算執(zhí)行中得到的所述I/O數(shù)據(jù)在與被安裝的CPU單元的同步處理中寫入所述公共存儲器。
全文摘要
具有2臺安裝了內(nèi)板的CPU單元的可編程控制器中,構(gòu)筑內(nèi)板的雙重化系統(tǒng)。2個內(nèi)板中,安裝在主用CPU對應(yīng)的內(nèi)板成為主用內(nèi)板,安裝在備用CPU單元的內(nèi)板成為備用內(nèi)板。各內(nèi)板與各CPU單元異步進行運算(ST12、ST13),該運算結(jié)果不在運算執(zhí)行中寫入存儲器,而在與CPU單元的同步處理中,從內(nèi)板傳送給CPU單元(ST14、ST34)。CPU單元比較傳來的運算執(zhí)行結(jié)果,在不一致時,使慢的一方繼續(xù)運算,在進展一致的狀態(tài)下許可寫入,這樣,將運算執(zhí)行結(jié)果寫入存儲器。
文檔編號G05B19/05GK1477468SQ0314389
公開日2004年2月25日 申請日期2003年6月7日 優(yōu)先權(quán)日2002年6月7日
發(fā)明者永野英輔, 福島正則, 富田賢一郎, 冨田一彰, 一郎, 則, 彰 申請人:歐姆龍株式會社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
明溪县| 诸城市| 武胜县| 高安市| 贵州省| 东台市| 泉州市| 长乐市| 津南区| 阿拉善左旗| 卓尼县| 嵊州市| 永平县| 颍上县| 和林格尔县| 鹤壁市| 乐业县| 琼海市| 青浦区| 仪陇县| 肇东市| 五家渠市| 钦州市| 丰台区| 冕宁县| 特克斯县| 宁阳县| 天柱县| 萨嘎县| 河东区| 保定市| 报价| 搜索| 大竹县| 息烽县| 平遥县| 绩溪县| 夏邑县| 旺苍县| 阿荣旗| 宿迁市|