專利名稱:同步方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種由至少兩個分系統(tǒng)構(gòu)成的冗余自動化系統(tǒng)的同步方法,其中至少兩個分系統(tǒng)具有至少一個處理器并通過通信裝置相互聯(lián)通,所述分系統(tǒng)為控制一個過程執(zhí)行功能相同的機器指令序列并有時候通過通信裝置相互同步。
通常的自動化系統(tǒng)的同步方法是已知的。在采用EP-A-0497147的方法時,由兩個分系統(tǒng)構(gòu)成的自動化系統(tǒng)的分系統(tǒng)至遲在由使用者預(yù)選定的時間后進行同步。類似的方法在EP-A-0 616 274中也有所記載。在此,根據(jù)機器指令序列的實際運行時間進行同步。為此,既需要了解應(yīng)用程序指令的運行時間,又需要對這些運行時間持續(xù)累加。由于為實現(xiàn)同步不必要地消耗過多的時間,因此已知的方法就此而言還不是最佳的。
故本發(fā)明的目的在于,提出一種以最小付出實現(xiàn)一個至少由兩個分系統(tǒng)構(gòu)成的自動化系統(tǒng)的同步的同步方法。其中同步方法應(yīng)與是否具有專用的硬件無關(guān)。其中本發(fā)明的同步方法對自動化系統(tǒng)的計算能力的影響應(yīng)當盡可能小。
本發(fā)明的目的是通過具有權(quán)利要求1或2特征部分的特征的方法來實現(xiàn)的。
本發(fā)明的同步方法以每個分系統(tǒng)的計數(shù)器(以下稱作同步計數(shù)器)為基礎(chǔ),該同步計數(shù)器通過增值變更語句被增值變更,即增大1。對一個處理器來說,增值變更是一個特別簡單的任務(wù),該任務(wù)在具體情況下甚至在一個脈沖周期內(nèi)即可完成,并因而可特別迅速地完成。
至少當至少兩個分系統(tǒng)中的一個,以下稱作報警分系統(tǒng),記錄了一個特殊事件,例如一個中斷或報警時,進行同步。在此情況時,報警分系統(tǒng)向至少另一分系統(tǒng)轉(zhuǎn)送其同步計數(shù)器的實際值。通過此轉(zhuǎn)送至少另一分系統(tǒng)至少被告知,出現(xiàn)了特殊事件。至少另一分系統(tǒng)向每個其它的分系統(tǒng)轉(zhuǎn)送其同步計數(shù)器的實際值。每個分系統(tǒng)隨之既了解了自己的同步計數(shù)器的實際值,又了解了至少另一分系統(tǒng)的同步計數(shù)器的值。
在出現(xiàn)特殊事件的時間點,就執(zhí)行機器指令序列而言,一個分系統(tǒng)可以超前于至少另一分系統(tǒng)。如果是此情況,此外超前的分系統(tǒng)可能已經(jīng)執(zhí)行了較大數(shù)量的增值變更語句,從而出現(xiàn)了兩個分系統(tǒng)同步計數(shù)器值的差異。
每個分系統(tǒng)由自己的同步計數(shù)器的值和至少另一分系統(tǒng)的同步計數(shù)器的值求出實際最大值。所有的分系統(tǒng)通過繼續(xù)執(zhí)行機器指令序列可共同到達的同步計數(shù)器的值是同步計數(shù)器增大了1的,即經(jīng)增值變更的最大值。因而在每個分系統(tǒng)中,所有的分系統(tǒng)的同步計數(shù)器的最大值都被增值變更。這個對所有的分系統(tǒng)都相同的值在下面被稱作同步計數(shù)器-目的值。對此值當然也可以采用另一方式加以確定,其中首先對同步計數(shù)器的值進行增值變更并接著求出作為最大值的同步計數(shù)器-目的值。
當?shù)竭_某個增值變更語句位置時,下面對此稱作同步位置,在此位置同步計數(shù)器的值到達同步計數(shù)器-目的值,分系統(tǒng)中斷執(zhí)行機器指令序列。由于增值變更語句出現(xiàn)在機器指令功能相同的序列的相互一致的位置,因此增值變更語句特別適用于作為潛在的同步位置。
另一方面,通過某個同步計數(shù)器的值與同步計數(shù)器-目的值的比較可以非常簡單地推斷出是否到達這種同步位置。故同步方法基本建立在增值-及比較運算上,由一個處理器即可以特別迅速和高效地實現(xiàn)所述增值-及比較運算。
由于兩個分系統(tǒng)可以在不同的時間點上到達其同步位置,故每個分系統(tǒng)都利用同步信號向至少另一分系統(tǒng)通告到達同步位置的信息。每個分系統(tǒng)接著等待由至少另一分系統(tǒng)發(fā)送的同步信號的輸入,通過此同步信號該分系統(tǒng)通告它已經(jīng)到達同步位置。在有一個以上的其它的分系統(tǒng)情況下,每個分系統(tǒng)都要等待來自所有其它的分系統(tǒng)的同步信號的輸入,從而使每個分系統(tǒng)只有在所有的分系統(tǒng)已到達同步位置時,才繼續(xù)動作。
但在到達同步位置時不交換同步信號的應(yīng)用情況也同樣是可以想像的。
每個分系統(tǒng)在至少另一分系統(tǒng)到達同步位置并記錄同步信號后,求出對特殊事件的特定的響應(yīng)并執(zhí)行此響應(yīng)。該響應(yīng)是對特殊事件特定的機器指令序列。此后每個分系統(tǒng)繼續(xù)執(zhí)行這個機器指令序列,在到達同步位置時基于同步及基于對特殊事件的響應(yīng)該執(zhí)行被復(fù)位。
報警的分系統(tǒng)最早直接在記錄特殊事件后,例如結(jié)合轉(zhuǎn)送同步計數(shù)器的實際值,最遲也可以結(jié)合同步信號向至少另一分系統(tǒng)轉(zhuǎn)送特殊事件。
但也有下述情況,在執(zhí)行對特殊事件的特定的響應(yīng)時不進行交換和對同步信號的等待。在這種情況時,當?shù)竭_同步位置時直接執(zhí)行特殊事件-特定的響應(yīng)。雖然未進行時間同步,但采用本發(fā)明的方法保證了盡管不是同時,但卻是在某個分系統(tǒng)機器指令序列內(nèi)的功能相同的位置執(zhí)行特殊事件-特定的響應(yīng)。由于同步位置設(shè)置在功能相同的機器指令序列的相互一致的位置,故采用此方式可以保證所需的同步。
如果按照權(quán)利要求3求出機器指令序列的每個機器指令的地址,尤其是實際待執(zhí)行的機器指令的地址以及某個與同步位置一致的機器指令的地址,則尤其可以有效地到達同步位置。
因而可以至少在由報警的分系統(tǒng)對特殊事件記錄之后執(zhí)行機器指令序列時,始終將實際待執(zhí)行的機器指令的地址與某個與同步位置一致的機器指令的地址進行比較。如果確定出所比較的兩個地址一致時,則到達同步位置。采用此方式正好在到達同步位置時可中斷執(zhí)行機器指令序列。
在同步位置位于機器指令序列的一個有條件或無條件重復(fù)的分序列中時,則對各個機器指令多次處理。但只有當隨著執(zhí)行增值變更語句同步計數(shù)器到達同步計數(shù)器-目的值時,增值變更語句位置才變成同步位置。故在循環(huán)的情況下會出現(xiàn),在循環(huán)范圍內(nèi)多次對增值變更語句進行處理,但只有在一定數(shù)量的處理后才成為同步位置的情況。在此情況時僅求出增值變更語句的地址是不夠的。在此情況下,只有當實際執(zhí)行的機器指令的地址與某個與潛在的同步位置一致的機器指令的地址相一致并且同時同步計數(shù)器與同步計數(shù)器目的值一致時,才到達同步位置。
如上所述,當求出每個機器指令的地址時,除此之外還有一“斷點”與同步位置連接,從而使機器指令序列的執(zhí)行正好在同步位置中斷。由處理器直接進行檢查,看同步位置,即與斷點連接的地址是否已達到。通常由INTEL公司生產(chǎn)的處理器,例如i80386、i80486、奔騰等在到達與斷點連接的地址時啟動中斷,中斷的實現(xiàn)明確地表明已到達有關(guān)的地址。
如果處理器可以單步方式運行,那么也可以至少在報警的分系統(tǒng)記錄一特殊事件后執(zhí)行機器指令序列時,始終將實際執(zhí)行的機器指令的地址與同步位置的地址進行比較。當確定一致時,則到達同步位置并且中斷機器指令序列的各個指令的處理。
按照權(quán)利要求4的特征,到達同步位置的另一有效的方案在于,在至少由報警的分系統(tǒng)記錄特殊事件之后執(zhí)行機器指令序列時,始終將同步計數(shù)器的值與同步計數(shù)器-目的值進行比較并且當同步計數(shù)器值到達同步計數(shù)器-目的值時,中斷執(zhí)行機器指令序列。為此求出第一存儲位置和第二存儲位置,其中在第一存儲位置存儲同步計數(shù)器的值并且在第二存儲位置存儲同步計數(shù)器-目的值。在采用通用的處理器時,尤其是INTEL公司生產(chǎn)的所述處理器時,對處理器的編程應(yīng)使一旦第一存儲位置的內(nèi)容與第二存儲位置的內(nèi)容一致時,中斷機器指令序列的執(zhí)行。該處理器專用的功能迄今首先用于查找錯誤程序,即所謂的調(diào)試程序。但當然也可以利用此功能到達同步位置。
可以按照不同的策略確定機器指令序列內(nèi)的增值語句的位置。在由一種程序設(shè)計語言的指令序列產(chǎn)生機器指令序列時,比較有利的是在指令序列轉(zhuǎn)換成機器指令序列時插入增值變更語句。在產(chǎn)生機器指令序列之后,但在執(zhí)行該機器指令之前利用再定位將增值變更語句插入機器指令序列中也屬于本發(fā)明的范圍。
當指令序列涉及的是一種程序設(shè)計語言的指令序列時,其中相關(guān)連的指令序列被合并在一個程序塊中,則增值變更的語句分別在至少程序塊的一個界偶處插入機器指令的序列中。這種程序設(shè)計語言例如包括諸如PASCAL、PEARL、C/C++等所有“結(jié)構(gòu)化的”程序設(shè)計語言,它們都分別具有用于協(xié)定程序塊的語言手段,其中專用的語言手段另外還隱含地確定一個程序塊。
與按照EP-A-0 497 147的已有技術(shù)相同,結(jié)合所有的跳變指令,例如有條件的和無條件的跳變指令始終必須插入增值變更語句。其中跳變指令系指在處理器可以直接理解的語言級導(dǎo)致有條件的或無條件的跳變的所有指令并且也包括所謂的高級語言的語句。由于可能需要通過跳變越過增值變更語句,所以此點是必要的。尤其考慮到,通過跳變將在較長的、可能甚至無限的時間內(nèi)在兩個增值變更語句間僅執(zhí)行機器指令,從而在這個時間內(nèi)沒有增值變更語句被執(zhí)行。在此情況時,相應(yīng)不會到達潛在的同步位置,從而不會實現(xiàn)同步。所以增值變更語句經(jīng)常地,但不是必要地,插入在這種跳變指令前。
在調(diào)用所謂的子程序的情況下,如果將增值變更語句插入在子程序內(nèi),即插入在子程序的開始和結(jié)束處,則是有益的。由于雖然是子程序的開始和結(jié)束,但對子程序的調(diào)用并不總是可以明顯地識別出,因而宜對增值變更語句插入機器指令序列進行明顯的簡化。例如在采用匯編程序設(shè)計語言時,在這里稱作調(diào)用語句和返回語句,所述語句分別啟動向子程序的跳變及由子程序的返回。
在通常其專用的程序設(shè)計語言不能為面向程序塊的結(jié)構(gòu)化提供語言手段的存儲器編程控制的情況下,增值變更語句始終插入在跳變指令前。特別是在存儲器編程控制的情況下,經(jīng)常利用所謂的“組件”實現(xiàn)機器指令序列的結(jié)構(gòu)化。因而完全可以把組件視為一程序塊的專門的特征。由于是利用跳變指令實現(xiàn)的在執(zhí)行存儲器編程控制的機器指令序列時必要的組件變換,故在此將增值變更語句插入在跳變指令前也會達到所需的結(jié)果。以類似的方式,這些同樣也適用于如匯編或BASIC等非結(jié)構(gòu)化的或僅在很小程度上結(jié)構(gòu)化的程序設(shè)計語言。
另外也可以在一固定的,尤其是由使用者預(yù)定數(shù)量的機器指令序列的單個指令之后將增值變更語句插入到機器指令序列中。采用此方式預(yù)定的增值變更語句的順序具有這樣的優(yōu)點,在兩個增值變更語句間的平均時段始終是大致相同的。由在增值變更語句間執(zhí)行的各個指令的運行時間的總和確定出現(xiàn)兩個增值變更語句間的時間。
如果需要以實際等距離時間間隔的、與增值變更語句一致的潛在的同步位置,則在將程序設(shè)計語言的指令序列轉(zhuǎn)換成機器指令序列時求出每個單獨指令的運行時間并通過將各單獨指令的運行時間累加求出單獨指令序列的運行時間。在到達一確定的,尤其是由使用者預(yù)定的運行時間時,在機器指令序列中插入一增值變更語句。在一增值變更語句后,又重新從零開始對各指令的運行時間進行累加。但出于上述原因,始終需要將增值變更語句插入在跳變指令前。另外除了在固定的運行時間-/空間間隔后的插入外,還可以附加在跳變指令前實現(xiàn)增值變更語句。但另外也可以在一個插入在跳變指令前的增值變更語句后,從零開始對運行時間或間隔的計數(shù)。
另外增值變更語句也可插入到機器指令序列或指令順序序列中,對此下面稱作源序列或源順序,其中對有關(guān)某機器指令或某指令順序的源序列或源順序,尤其是有關(guān)機器指令序列的某子序列或指令順序的某子序列(對此下面稱作搜索序列或搜索順序)的源序列或源順序進行檢查。
一旦識別出源序列或源順序中的搜索序列或搜索順序,即可以將增值變更語句前置于搜索序列或搜索順序或附加于后。搜索序列或搜索順序是源序列或源順序的某些單元的特征,如上所述,增值變更語句(即至少程序塊邊界和/或跳變指令)被分配給源序列或源順序的這些單元。
按照一專門的實現(xiàn)方式,利用一專門的編譯程序器實現(xiàn)增值變更語句的插入。專門的編譯程序器的轉(zhuǎn)換方法與標準的編譯程序器的轉(zhuǎn)換方法的區(qū)別在于,對那些例如給程序塊或跳變指令定義的語言手段進行識別并將其轉(zhuǎn)換成所配屬的機器指令以及附加轉(zhuǎn)換成增值變更語句。
另一種選擇方案是采用所謂的“預(yù)處理程序”(“Pre-Prozessor”)。利用此預(yù)處理程序可對程序設(shè)計語言的指令順序進行預(yù)處理。借助一個專門的程序員基本已知的句法即可驅(qū)動這種預(yù)處理程序,一種設(shè)序設(shè)計語言特定的語言手段,例如引導(dǎo)一個程序塊的語言手段與引導(dǎo)這樣一種程序塊的語言手段以及啟動增值變更語句的另一種語言手段進行調(diào)換。
但將增值變更語句以對使用者透明的方式插入機器指令序列中卻是合乎人們愿望的。在預(yù)處理程序上的上述語句對使用者來說是可識別的并因而是可操作的。但操作有時也會導(dǎo)致同步時的差錯和/或產(chǎn)生的程序本身的差錯。所以用于將增值變更語句插入指令序列中的另一有益的選擇方案在于,替代預(yù)處理程序采用一專用的預(yù)處理程序,該專用的預(yù)處理程序與有時其它的按照語句的交換無關(guān),至少將那些按照上述表述分配有一個增值變更語句的指令序列轉(zhuǎn)換成剛才那個指令序列以及增值變更語句。
除上述基本不由使用者施加影響的插入增值變更語句的方案外,另外還可以由使用者親自將增值變更語句插入到機器指令序列中或插入到指令順序序列中。
從下述對實施例的說明中可得出本發(fā)明進一步的優(yōu)點和細節(jié)。附圖中
圖1為自動化系統(tǒng)的線路框圖;圖2為同步方法的原理圖;圖3為同步方法的流程圖;圖4為插入方法的原理圖;圖5和6為插入方法的流程圖。
如圖1所示,冗余自動化系統(tǒng)1由至少二個分系統(tǒng)2、2’構(gòu)成,所述分系統(tǒng)為操縱和控制一個圖中未示出的技術(shù)過程,與該技術(shù)過程結(jié)合在一起。每個分系統(tǒng)2、2’具有一個處理器3、一個數(shù)據(jù)存儲單元4、一個指令序列存儲單元5以及至少一個通信裝置6。其中數(shù)據(jù)存儲單元4和指令序列存儲單元5不必非得是冗余自動化系統(tǒng)1中的分立單元。
至少二個分系統(tǒng)2、2’通過通信裝置6并通過總線7實現(xiàn)相互間及與圖中未示出的技術(shù)過程的聯(lián)通。
在數(shù)據(jù)存儲單元4中至少存儲有同步計數(shù)器的值SZ、SZ'的值以及同步計數(shù)器-目的值SZZ。在指令序列存儲單元5中至少存儲有機器指令MP序列。機器指令MP序列對于二個分系統(tǒng)2、2’至少功能相同。在對圖中未示出的技術(shù)過程進行控制時,由分系統(tǒng)2、2’的處理器3執(zhí)行指令序列存儲單元5的機器指令MP序列。
在圖2中示出至少兩個分系統(tǒng)2、2’的機器指令MP序列。在左側(cè)的機器指令MP序列是分系統(tǒng)2的機器指令MP序列,在右側(cè)的機器指令MP序列是分系統(tǒng)2'的機器指令MP序列。
如圖2所示,增值語句IA插入機器指令MP序列中。利用增值語句IA,某分系統(tǒng)2、2’的同步計數(shù)器SZ,SZ'被增值,即增大1。在機器指令MP序列內(nèi)用箭頭10、10'標示的位置分別表示那個在出現(xiàn)特殊事件11的時間點被實際執(zhí)行的機器指令。另外從圖2中還看出,至少有一個分系統(tǒng)2、2’將特殊事件11記錄下來。
如圖2所示,分系統(tǒng)2、2’在此時間點執(zhí)行機器指令MP序列的不同的機器指令。在此時間點對特殊事件11的處理有時將導(dǎo)致產(chǎn)生自動化系統(tǒng)1的分系統(tǒng)2、2’的不穩(wěn)定的數(shù)據(jù)。所以在特殊事件11處理之前需要實現(xiàn)分系統(tǒng)2、2’的同步。在分系統(tǒng)2中,在出現(xiàn)特殊事件11的時間點上同步計數(shù)器SZ具有的值為n。在分系統(tǒng)2'中,在出現(xiàn)特殊事件的時間點上同步計數(shù)器SZ'具有的值已經(jīng)是n+1。
為實現(xiàn)同步,某個在執(zhí)行機器指令MP序列時超前于至少另一分系統(tǒng)2、2’的分系統(tǒng)必須中斷機器指令MP序列的執(zhí)行,直至另一分系統(tǒng)2、2’到達機器指令MP功能相同的序列內(nèi)的相關(guān)位置。
增值語句IA是機器指令MP序列中的直接相應(yīng)的位置。同步計數(shù)器SZ'在圖2中所示的狀況下具有的值為n+1。同步計數(shù)器SZ具有的值為n。如果分系統(tǒng)2'的機器指令MP序列的執(zhí)行暫停在實際狀況下,同時在分系統(tǒng)2中的機器指令MP序列的執(zhí)行繼續(xù)進行,直至同步計數(shù)器SZ也到達值n+1,則還沒有實現(xiàn)同步。
所以兩個分系統(tǒng)2、2’可同時到達的下一個增值語句IA是同步計數(shù)器SZ和同步計數(shù)器SZ'都取值n+2時的同步語句IA。兩個分系統(tǒng)2、2’能共同到達的同步計數(shù)器SZ、SZ'的值被稱作同步計數(shù)器-目的值SZZ。其中同步位置SP相應(yīng)于機器指令MP序列內(nèi)的某增值語句IA的位置,在此位置同步計數(shù)器SZ、SZ'的值到達同步計數(shù)器-目的值SZZ。
如圖3所示,在對特殊事件11記錄后報警的分系統(tǒng)2為推斷同步計數(shù)器-目的值SZZ向至少另一分系統(tǒng)2'發(fā)送它的同步計數(shù)器SZ的值以及特殊事件11。這是用于轉(zhuǎn)送特殊事件11的盡可能早的時間點。最遲必須與轉(zhuǎn)送同步信號SS相關(guān)聯(lián)轉(zhuǎn)送特殊事件。以此方式使至少另一分系統(tǒng)2'被告知出現(xiàn)特殊事件11并發(fā)送其同步計數(shù)器SZ'的實際值,此實際值被報警的分系統(tǒng)2接收到。
每個分系統(tǒng)2、2’了解了自己的同步計數(shù)器SZ的值以及至少另一分系統(tǒng)2、2’的同步計數(shù)器SZ'的值。由兩個被增值變更的同步計數(shù)器SZ、SZ'的最大值得出同步計數(shù)器-目的值SZZ。當然另外也可以首先推斷最大值并通過對該最大值的增值變更求出同步計數(shù)器-目的值SZZ。
在同步計數(shù)器SZ、SZ'的信息交換后,兩個分系統(tǒng)2、2’繼續(xù)執(zhí)行機器指令MP序列。一旦一個分系統(tǒng)2、2’在執(zhí)行機器指令MP序列時已到達同步位置SP,則中斷機器指令MP序列的執(zhí)行??梢酝ㄟ^實際執(zhí)行的機器指令MP序列的指令的地址與同步位置SP的地址的比較或者如圖3所示,通過監(jiān)督同步計數(shù)器SZ、SZ'的值是否到達同步計數(shù)器-目的值SZZ來判別是否到達同步位置SP。
每個到達同步位置SP的分系統(tǒng)2、2’通過轉(zhuǎn)送同步信號SS向至少另一分系統(tǒng)2、2’通告已到達同步位置SP。報警的分系統(tǒng)2、2’最早緊接著對特殊事件11記錄之后并且最遲與同步信號SS的轉(zhuǎn)送相結(jié)合向至少另一分系統(tǒng)2、2’轉(zhuǎn)送特殊事件11。
每個分系統(tǒng)2、2’一旦到達同步位置SP并且由至少另一分系統(tǒng)2、2’接收到同步信號SS時,就求出對特殊事件11特定的響應(yīng)并執(zhí)行此響應(yīng)。在執(zhí)行完對特殊事件11特定的響應(yīng)后,將繼續(xù)執(zhí)行同步位置SP后面的機器指令MP的序列。
如在開始時已提及的那樣,也有為執(zhí)行特殊事件11特定的響應(yīng)時不需要信息交換和等待同步信號SS的情況。在此種情況時,當?shù)竭_同步位置SP時直接執(zhí)行特殊事件的特定的響應(yīng)。所以在這里明確地指出,在圖3流程圖中在詢問“SZ<SZZ?”與執(zhí)行“特殊事件-特定響應(yīng)”間的程序塊是可選用的。每次如果不需要精確的時間同步并且如果特殊事件-特定響應(yīng)雖然不是同時的,但是在機器指令MP序列的功能相同的位置上執(zhí)行已足夠了的時候,就可以省去選用這一節(jié)。
按照本發(fā)明同步方法的一種選擇設(shè)計,替代增值語句IA將減值語句IA插入機器指令序列中。在此種情況時,與上述同步計數(shù)器SZ、SZ'由0開始分別增值1相同,同步計數(shù)器SZ、SZ'由起動值,例如32.767開始,分別減值變更。其中同步方法在這種減值變更的同步計數(shù)器SZ、SZ'計值的情況下以完全類似的方式進行。
圖4以一種程序設(shè)計語言的指令序列為例示出增值語句的IA的插入方法。尤其是對結(jié)構(gòu)化的程序設(shè)計語言,在一所謂的結(jié)構(gòu)圖形(Struktogramm)中實現(xiàn)了對程序過程的顯示。由此結(jié)構(gòu)圖形中尤其可以看到程序塊邊界和相伴隨的結(jié)構(gòu)化。在圖的左側(cè)示意示出簡化的結(jié)構(gòu)圖形。結(jié)構(gòu)圖形由二個程序塊B1和B2構(gòu)成,其中程序塊B1例如用于所謂的主程序,與此相反程序塊B2例如用于所謂的子程序。
在主程序B1中開始執(zhí)行程序。主程序B1和子程序B2分別構(gòu)成一單獨的程序塊。所以它們分別被置入程序塊指令。在主程序B1及子程序B2開始處的程序塊指令分別引出程序塊,在主程序B1及子程序B2結(jié)束處的程序塊指令結(jié)束程序塊。而且在一個程序塊的語句中會出現(xiàn)其它程序塊,例如與在循環(huán)時相同的多次重復(fù)的語句。在主程序B1中,由內(nèi)部程序塊調(diào)用子程序B2。
圖4在右側(cè)示出通過插入增值變更語句IA所形成的結(jié)構(gòu)圖形。每個引導(dǎo)一個程序塊的程序塊指令被轉(zhuǎn)換成一個引導(dǎo)一個程序塊的程序塊指令和一個增值變更語句IA;每個結(jié)束一個程序塊的程序塊指令被轉(zhuǎn)換成一個增值語句IA和一個結(jié)束程序塊的程序塊指令。程序塊指令和增值變更語句IA的順序并不限于圖4中所示的順序并且也可以進行變更。而且在主程序B1的內(nèi)部程序塊中調(diào)用子程序的語句被轉(zhuǎn)換成增值語句IA和調(diào)用子程序B2的語句。
圖5和6分別示出一個插入方法流程圖。
圖5示出權(quán)利要求6所述的插入方法。首先對指令計數(shù)器BZ的值預(yù)置,即置零。接著求出機器指令MP序列的實際后承的機器指令。只有當機器指令涉及的是一個跳變指令時,增值變更指令I(lǐng)A才被插入機器指令MP序列中。只有當指令計數(shù)器BZ超過指令計數(shù)器閥值BZS時,增值變更語句IA才被插入機器指令MP序列中并且接著指令計數(shù)器BZ又被置于零。此后,求出的機器指令被插入機器指令MP序列中。在緊接插入機器指令后,指令計數(shù)器BZ被增值變更,即增大1,這是因為這時機器指令MP序列的機器指令的數(shù)量正如增加一個機器指令。隨著求出一個機器指令繼續(xù)進行處理,直至所有的機器指令被處理完畢。
替代圖5中所示的指令計數(shù)器BZ及指令計數(shù)器閥值BZS也可以采用運行時間計數(shù)器及運行時間計數(shù)器閥值。運行時間計數(shù)器被分別增大一個插入的機器指令的運行時間。運行時間計數(shù)器-閥值預(yù)先給定兩個增值變更語句IA間的運行時間。
圖6示出按照權(quán)利要求7的插入方法,該方法涉及機器指令MP序列及一種程序設(shè)計語言的指令順序的序列,通過對該序列的解釋控制一個過程,尤其是一個技術(shù)過程。為插入增值語句IA,檢查機器指令MP序列及指令順序的序列,看是否出現(xiàn)搜索序列及搜索順序。只有當在機器指令序列及指令順序的序列內(nèi)找到搜索序列及搜索順序時,才插入增值語句。該插入方法采用檢查機器指令序列及指令順序的序列的方式繼續(xù)進行,直至對所述序列檢查完畢。
最后還應(yīng)對“功能相同”這一措詞的含義說一下看法。機器指令功能相同的序列例如是作為不同的高級語言的語句編譯的結(jié)果,但所述不同的高級語言的語句描述的都是一個和同一任務(wù)。另外,機器指令的功能相同的序列是作為由一種高級語言的語句編譯的結(jié)果產(chǎn)生的,但所述一種高級語言的語句是由該種語言的不同的編譯器轉(zhuǎn)換的。機器指令的功能相同的序列也是作為由一種或同一高級語言的語句編譯的結(jié)果實現(xiàn)的,所述高級語言的語句描述的是同一任務(wù),所述任務(wù)由一個或同一編譯器,但對此編譯器采用不同的參數(shù),例如采用不同的最佳化層進行處理。
權(quán)利要求
1.一種由至少兩個分系統(tǒng)(2、2’)構(gòu)成的冗余自動化系統(tǒng)(1)的同步方法,其中至少兩個分系統(tǒng)(2、2’)分別具有至少一個處理器(3),并通過通信裝置(6)相互連接,為控制處理器,執(zhí)行機器指令(MP)功能相同的序列并有時候通過通信裝置相同步,其特征在于-每個分系統(tǒng)(2、2’)具有一個同步計數(shù)器(SZ、SZ’),-功能相同的機器指令(MP)序列在相互一致的位置中具有增值變更-或減值變更語句(IA),利用所述增值變更-或減值變更語句同步計數(shù)器(SZ、SZ’)被增值變更或減值變更,-至少在一個分系統(tǒng)(2、2’),即報警的分系統(tǒng)(2、2’)記錄一個特殊事件(11)時,進行同步,-其中該同步的步驟如下每個分系統(tǒng)(2、2’)a)向另一分系統(tǒng)(2、2’)轉(zhuǎn)送其同步計數(shù)器(SZ、SZ’)的實際值,b)由自己的同步計數(shù)器(SZ、 SZ’)的增值變更的或減值變更的值并由一分系統(tǒng)(2、2’)的同步計數(shù)器(SZ、SZ’)的增值變更的或減值變更的值求出實際的最大值或最小值,同步計數(shù)器-目的值(SZZ),c)在到達機器指令(MP)序列內(nèi)的一個位置(下面稱作同步位置(SP))時,在此位置同步計數(shù)器(SZ、SZ’)的值到達同步計數(shù)器-目的值(SZZ),中斷機器指令(MP)序列的執(zhí)行,d)求出對特殊事件(11)特定的響應(yīng),執(zhí)行此響應(yīng)并在此后繼續(xù)執(zhí)行同步位置(SP)后的機器指令(MP)序列,-其中報警的分系統(tǒng)(2、2’)最早緊接記錄特殊事件(11)之后并且最遲結(jié)合求出特殊事件(11)特定的響應(yīng)向另一分系統(tǒng)(2、2’)轉(zhuǎn)送特殊事件(11)。
2.一種由至少兩個分系統(tǒng)(2、2’)構(gòu)成的冗余自動化系統(tǒng)(1)的同步方法,其中至少兩個分系統(tǒng)(2、2’)分別具有至少一個處理器(3)并通過通信裝置(6)相互連接,為控制處理器,執(zhí)行機器指令(MP)功能相同的序列并有時候通過通信裝置相互同步,其特征在于-每個分系統(tǒng)(2、2’)具有一個同步計數(shù)器(SZ、SZ’),-功能相同的機器指令(MP)序列在相互一致的位置具有增值變更-或減值變更語句(IA),利用所述增值變更-或減值變更語句同步計數(shù)器(SZ、SZ')被增值變更或減值變更,-至少在一個分系統(tǒng)(2、2’),即報警的分系統(tǒng)(2、2’)記錄一個特殊事件(11)時,進行同步,-其中該同步的步驟如下每個分系統(tǒng)(2、2’)a)向另一個分系統(tǒng)(2、2’)轉(zhuǎn)送其同步計數(shù)器(SZ、SZ')的實際值,b)由自己的同步計數(shù)器(SZ、SZ')的增值變更的或減值變更的值和由另一分系統(tǒng)(2、2’)的同步計數(shù)器(SZ、SZ')的增值變更的或減值變更的值求出實際最大或最小值,即同步計數(shù)器-目的值(SZZ),c)在到達機器指令(MP)序列內(nèi)的一個位置(下面稱作同步位置(SP))時,在此位置同步計數(shù)器(SZ、SZ')的值到達同步計數(shù)器-目的值(SZZ),中斷執(zhí)行機器指令(MP)序列,d)用一個同步信號(SS)向另一個分系統(tǒng)(2、2’)通告到達同步位置(SP),e)在到達同步位置(SP)并記錄另一分系統(tǒng)(2、2’)的同步信號(SS)后求出對特殊事件(11)特定的響應(yīng),執(zhí)行此響應(yīng)并在此后繼續(xù)執(zhí)行同步位置(SP)后的機器指令(MP)序列,-其中報警的分系統(tǒng)(2、2’)最早緊接記錄特殊事件(11)之后并且最遲結(jié)合同步信號(SS)向另一分系統(tǒng)(2、2’)轉(zhuǎn)送特殊事件。
3.按照格要求1或2所述的同步方法,其特征在于-對機器指令(MP)序列的每個機器指令通過其在機器指令(MP)序列中的位置分配一個明確的地址,-求出機器指令(MP)序列的每一個機器指令的地址,尤其是實際有待執(zhí)行的機器指令地址以及與同步位置(SP)一致的某機器指令的地址,-在至少由報警的分系統(tǒng)(2、2’)對特殊事件(11)記錄之后執(zhí)行機器指令(MP)序列時,始終將實際待執(zhí)行的機器指令的地址與某個與同步位置(SP)一致的機器指令的地址進行比較并且-正好在到達同步位置(SP)時中斷執(zhí)行機器指令(MP)序列。
4.按照權(quán)利要求1或2所述的同步方法,其特征在于-至少在由報警的分系統(tǒng)(2、2’)記錄特殊事件(11)之后執(zhí)行機器指令(MP)序列時,始終將同步計數(shù)器(SZ、SZ')的值與同步計數(shù)器-目的值(SZZ)進行比較并且-當同步計數(shù)器(SZ、SZ')的值到達同步計數(shù)器-目的值(SZZ)時,中斷執(zhí)行機器指令(MP)序列。
5.按照權(quán)利要求1、2、3或4所述的同步方法,其特征在于分別至少-在機器指令(MP)序列的固定數(shù)量的單獨指令之后或在對一定數(shù)量的機器指令的運行時間計值的情況下以一定的基本等距的運行時間間隔以及-結(jié)合每個跳變指令執(zhí)行增值變更語句(IA)。
6.按照上述任一項權(quán)利要求所述的同步方法,其特征在于分別-在機器指令(MP)序列的固定數(shù)量的單獨指令之后或在對一定數(shù)量的機器指令的運行時間計值的情況下以一定的、基本等距的運行時間間隔以及-結(jié)合每個跳變指令將增值語句(IA)插入機器指令(MP)序列中。
7.按照上述任一項權(quán)利要求所述的同步方法,其特征在于-由一種程序設(shè)計語言的指令順序的序列產(chǎn)生機器指令(MP)的序列,-對機器指令(MP)的序列或指令順序序列查找特定的機器指令或特定的指令順序,尤其是機器指令(MP)序列的特定的分序列或指令順序的特定的分序列,對此以下稱作搜索序列或搜索順序,-對搜索序列或搜索順序的出現(xiàn)進行識別并且-將增值變更語句(IA)置于搜索序列或搜索順序前面或?qū)λ阉餍蛄谢蛩阉黜樞蛱砑釉鲋底兏Z句。
8.按照權(quán)利要求7所述的同步方法,其特征在于-相關(guān)連的指令順序被分別合并在一個程序塊中并且-一個搜索序列或一個搜索順序至少是程序塊的一個界偶和/或一個跳變指令。
9.按照權(quán)利要求8所述的同步方法,其特征在于-在產(chǎn)生機器指令(MP)序列的同時將增值變更語句(IA)插入機器指令序列中,-其中利用一專門的編譯程序以已知的方式產(chǎn)生機器指令(MP)序列,-其中分別在識別出搜索序列或搜索順序時由專門的編譯程序產(chǎn)生增值變更語句(IA)并且插入機器指令(MP)序列中。
10.按照權(quán)利要求8或9所述的同步方法,其特征在于-在產(chǎn)生機器指令(MP)序列之前和/或之后將增值變更語句(IA)插入機器指令(MP)序列中,-利用一種標準的編譯程序以已知的方式產(chǎn)生機器指令(MP)序列,-在產(chǎn)生機器指令(MP)序列之前和/或之后,分別在識別出搜索序列或搜索順序時,將增值變更語句(IA)插入機器指令(MP)序列中或指令順序序列中。
全文摘要
一種由至少兩個分系統(tǒng)(2、2’)構(gòu)成的、冗余自動化系統(tǒng)(1)的同步方法,所述分系統(tǒng)為控制過程執(zhí)行機器指令(MP)功能相同的序列,所述機器指令(MP)序列在相互一致的位置具有用于對同步計數(shù)器(SZ、SZ′)進行增值變更的增值變更語句(IA)。至少在分系統(tǒng)(2、2’)記錄了一個特殊事件(11)時,利用同步計數(shù)器(SZ、SZ′)的值進行同步。為此,求出同步計數(shù)器-目的值(SZZ),從而當?shù)竭_同步位置(SP)時,即同步計數(shù)器(SZ、SZ′)的值到達同步計數(shù)器-目的值(SZZ)時,使分系統(tǒng)(2、2’)中斷執(zhí)行機器指令(MP)序列。
文檔編號G05B19/042GK1228173SQ97197275
公開日1999年9月8日 申請日期1997年6月3日 優(yōu)先權(quán)日1996年6月24日
發(fā)明者赫伯特·巴塞爾, 海納·富克斯, 阿方斯·戈貝爾 申請人:西門子公司