專利名稱:用于安全控制的編譯器的再驗(yàn)證的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于工業(yè)控制系統(tǒng)的控制語言編譯器的再驗(yàn)證。特別地,本發(fā)明揭示一種在編譯器被用于編譯用戶編寫的程序之后對(duì)編譯器進(jìn)行再驗(yàn)證的方法,該程序用于現(xiàn)實(shí)世界實(shí)體的安全控制。須經(jīng)編譯器編譯的用戶編寫的程序用來在設(shè)備中執(zhí)行,該設(shè)備包括向工業(yè)控制系統(tǒng)添加安全部件的功能。本發(fā)明保證了不會(huì)由于編譯器代碼中的差錯(cuò)而將錯(cuò)誤引入該設(shè)備中。這種差錯(cuò)例如可能在編譯器代碼的分發(fā)期間產(chǎn)生。差錯(cuò)也可能由于在編譯器運(yùn)行時(shí)計(jì)算機(jī)的存儲(chǔ)器中的故障或者存儲(chǔ)編譯器代碼的磁盤上的故障而產(chǎn)生。本發(fā)明保證了這樣的錯(cuò)誤不會(huì)被引入現(xiàn)實(shí)世界實(shí)體的控制中,否則可能會(huì)導(dǎo)致傷害人的事故或是造成對(duì)環(huán)境的破壞。
背景技術(shù):
工業(yè)控制系統(tǒng)例如應(yīng)用在制造和加工工業(yè)、例如化學(xué)工廠、石油生產(chǎn)工廠、精煉廠、紙漿和造紙廠、鋼廠以及自動(dòng)化工廠中。工業(yè)控制系統(tǒng)也廣泛地應(yīng)用在電力工業(yè)中。這樣的工業(yè)控制系統(tǒng)可能需要包括或聯(lián)合添加安全部件的設(shè)備。要求額外的、標(biāo)準(zhǔn)工業(yè)控制系統(tǒng)提供的安全部件的處理的例子有在近海生產(chǎn)平臺(tái)上的處理、在核電站中和化學(xué)工廠的危險(xiǎn)區(qū)域的處理。安全部件可以與安全關(guān)閉、火災(zāi)和/或同樣用于火災(zāi)和瓦斯探測的報(bào)警系統(tǒng)結(jié)合使用。
一個(gè)包括安全臨界功能的工業(yè)控制系統(tǒng)的例子在DE19857683“Safetycritical function monitoring of control systems for process control applications hasseparate unit”中描述。該系統(tǒng)具有一個(gè)通過若干分散的數(shù)據(jù)接收器耦合至不同處理器的主控制器總線。
通用計(jì)算機(jī)系統(tǒng)的使用提出下面的問題,就是用戶編寫的程序在執(zhí)行的過程中并不會(huì)受編譯器代碼中的錯(cuò)誤影響。
由Alfred V.Aho,Ravi Sethi和Jeffrey D.Ullman編寫的并于1988年由Addison-Wesley出版社出版的“CompilersPrinciples,techniques and tools”包括了對(duì)通用編譯器的檢驗(yàn)的討論。第731頁第11.4段“測試和維護(hù)”涉及在使用編譯器之前依據(jù)標(biāo)準(zhǔn)軟件測試來檢驗(yàn)編譯器。書中建議的一種途徑是“回歸”測試。保持一組測試程序,一旦編譯器被修改,就同時(shí)用新的和舊的編譯器版本來編譯測試程序。任何由這兩個(gè)編譯器產(chǎn)生的目標(biāo)程序中的差異都被報(bào)告給編譯器編寫者。該書進(jìn)一步指出選擇要包含在測試組中的程序是一個(gè)困難的問題。
編譯技術(shù)領(lǐng)域中的現(xiàn)有技術(shù)包括用于編譯器優(yōu)化的方法和系統(tǒng)。
US5577253“Analyzing inductive expressions in a multilanguage optimizingcompiler”描述了一種在計(jì)算機(jī)系統(tǒng)中執(zhí)行的方法,在該計(jì)算機(jī)系統(tǒng)中通過普通編譯器后端使用歸納變量來執(zhí)行多個(gè)最優(yōu)化。這個(gè)正申請(qǐng)專利的優(yōu)化技術(shù)沒有指出后來對(duì)編譯器的校正。
US6071316“Automated validation and verification of computer software”揭示了一種用于檢驗(yàn)已經(jīng)被編譯的源代碼執(zhí)行代碼中所有不同路徑的方法。這沒有涉及到編譯器的校正。
在現(xiàn)實(shí)世界實(shí)體的安全控制領(lǐng)域中遺留的問題是保證用戶編寫的程序的最高可能的可靠性。
另一個(gè)涉及工業(yè)控制系統(tǒng)的問題是系統(tǒng)軟件分發(fā)(例如通過互聯(lián)網(wǎng))的復(fù)雜性已經(jīng)導(dǎo)致在編譯器軟件中發(fā)生差錯(cuò)的危險(xiǎn)性增加。
發(fā)明人已經(jīng)發(fā)現(xiàn)需要保證用于具有對(duì)現(xiàn)實(shí)世界實(shí)體進(jìn)行安全控制目的的軟件的編譯器在代碼被分發(fā)、作為二進(jìn)制代碼被存儲(chǔ)或被裝載到RAM中時(shí)不改變其產(chǎn)生代碼的方式。
發(fā)明內(nèi)容
本發(fā)明的一個(gè)目的是提供一種在編譯器被使用之后對(duì)其進(jìn)行再驗(yàn)證的方法,該編譯器用來對(duì)由用戶編寫的、用于在工業(yè)控制系統(tǒng)中執(zhí)行安全控制的程序進(jìn)行編譯。
這個(gè)以及其它的目的通過本發(fā)明依據(jù)權(quán)利要求1所描述的方法實(shí)現(xiàn)。有益的實(shí)施方案在從屬權(quán)利要求中描述。
根據(jù)本發(fā)明,以控制語言定義的測試程序被編譯。通過檢驗(yàn)測試程序正確地執(zhí)行來對(duì)編譯器進(jìn)行再驗(yàn)證。生成用于隨后的比較用途的第一軟件裝置。在編譯了用戶編寫的程序之后,編譯測試程序。基于測試程序的編譯來生成第二軟件裝置。通過比較第一和第二軟件裝置,針對(duì)在第一和第二次編譯之間引入的差錯(cuò)來對(duì)編譯器進(jìn)行再驗(yàn)證。如果再驗(yàn)證表明在編譯器中沒有差錯(cuò),用戶編寫的程序就能夠在具有用于控制現(xiàn)實(shí)世界實(shí)體的安全部件的設(shè)備中執(zhí)行。
須經(jīng)編譯器編譯的用戶編寫的程序用來在一個(gè)設(shè)備中執(zhí)行,該設(shè)備包括向工業(yè)控制系統(tǒng)添加安全部件的功能。如上面所述,依據(jù)本發(fā)明的方法包括示出如何基于一個(gè)被編譯的測試程序產(chǎn)生第一和第二軟件裝置的步驟。典型地,在建立一種控制語言的編譯器的新版本或修訂版時(shí),生成第一軟件裝置。第一軟件裝置典型地同現(xiàn)有的編譯器代碼的版本或修訂版相關(guān)。該方法包括在用戶編寫的程序被編譯之后生成第二軟件裝置的步驟。該方法包括通過將第一軟件裝置和第二軟件裝置相比較來利用第一和第二軟件裝置對(duì)編譯器進(jìn)行再驗(yàn)證的步驟。第一軟件裝置和第二軟件裝置通過使用相同的原理從編譯過的測試程序中導(dǎo)出。
本發(fā)明有利于保證不會(huì)因?yàn)榫幾g器代碼或者其執(zhí)行環(huán)境中的差錯(cuò)而將錯(cuò)誤引入工業(yè)控制系統(tǒng)中。這種差錯(cuò)例如可能在編譯器代碼的分發(fā)期間產(chǎn)生,或者差錯(cuò)可能是由計(jì)算機(jī)存儲(chǔ)器中的故障或存儲(chǔ)編譯器代碼的磁盤中故障引起的。編譯器代碼中的差錯(cuò)也可能由于計(jì)算機(jī)寄存器、堆棧存儲(chǔ)器或是CPU中的錯(cuò)誤而出現(xiàn)。
本發(fā)明尤其有用的一個(gè)特點(diǎn)是它有助于保證這樣的錯(cuò)誤不會(huì)被引入用于現(xiàn)實(shí)世界實(shí)體的安全控制的設(shè)備中,否則這樣的錯(cuò)誤可能會(huì)導(dǎo)致傷害人的事故或造成對(duì)環(huán)境的破壞。
典型地,用戶編寫的程序用控制語言來編寫,該控制語言例如基于IEC61131-3。
本發(fā)明的一個(gè)目的是檢測編譯器代碼或是其執(zhí)行環(huán)境中的錯(cuò)誤。本發(fā)明在編譯的任何時(shí)候檢測編譯器代碼中的差錯(cuò),這保證了由所述編譯器編譯的、安全臨界的用戶編寫的程序的高可靠性。
本發(fā)明的進(jìn)一步的目的是提供一種計(jì)算機(jī)程序產(chǎn)品,其包括可以被裝載到通用計(jì)算機(jī)或工作站和/或設(shè)備的內(nèi)存中的軟件代碼裝置,其中該計(jì)算機(jī)程序產(chǎn)品具有執(zhí)行上述方法中的至少一個(gè)步驟的軟件裝置。
本發(fā)明的又一個(gè)目的是提供一種計(jì)算機(jī)程序,其包括計(jì)算機(jī)代碼裝置和/或軟件代碼部分,用于使計(jì)算機(jī)或處理器執(zhí)行上述方法中的任意一個(gè)步驟。
本發(fā)明將結(jié)合所附的示意圖做進(jìn)一步的詳細(xì)闡述。
圖1示出了一個(gè)包括一個(gè)裝載有編譯器代碼的計(jì)算機(jī)和一個(gè)具有安全控制部件的設(shè)備的工業(yè)控制系統(tǒng)的總體示意圖。
圖2示出了基于本發(fā)明的方法的流程示意圖。
圖3示出了本發(fā)明的一個(gè)實(shí)施方案的簡圖,其中在用戶編寫的程序被編譯之后,執(zhí)行測試程序的編譯。編譯后的測試程序與該測試程序的前一次編譯相比較。
圖4示出了本發(fā)明的另一實(shí)施方案的簡圖,其中在用戶編寫的程序被編譯之后,執(zhí)行測試程序的編譯。圖中示出第二軟件裝置被下載到一個(gè)執(zhí)行安全控制的設(shè)備,在該設(shè)備中第二軟件裝置與第一軟件裝置相比較。
具體實(shí)施例方式
圖1示出了具有包括安全部件6b的設(shè)備6a的工業(yè)控制系統(tǒng)2的示意圖。用于現(xiàn)實(shí)世界實(shí)體10的安全控制的用戶編寫的程序典型地在工作站5a或通用計(jì)算機(jī)中進(jìn)行編譯。這種工作站5a或通用計(jì)算機(jī)通過通信裝置3連接到設(shè)備6a上。通信裝置3基于例如現(xiàn)場總線技術(shù)或例如TCP/IP等通信標(biāo)準(zhǔn)。工業(yè)控制系統(tǒng)2包括許多不同的設(shè)備,例如控制器6c,PLC7,操作員站或處理入口4以及處理輸入輸出(I/O)8。上述的設(shè)備通??稍诠I(yè)控制系統(tǒng)中以任何數(shù)目并且與其他設(shè)備聯(lián)合存在。包括安全部件6b的設(shè)備6a可以是例如PLC或控制器的獨(dú)立設(shè)備。安全部件是這樣的,以致設(shè)備和/或工業(yè)控制系統(tǒng)遵循例如在IEC 61508標(biāo)準(zhǔn)中定義的安全完整性水平(SIL)等安全標(biāo)準(zhǔn)。設(shè)備也可以包括具有添加到設(shè)備中的安全部件的一個(gè)或幾個(gè)軟件模塊。設(shè)備6a經(jīng)由例如現(xiàn)場總線或處理輸入輸出(I/O)等通信裝置連接到須進(jìn)行安全控制的現(xiàn)實(shí)世界實(shí)體10上?,F(xiàn)實(shí)世界實(shí)體的例子是傳動(dòng)裝置、儀表、馬達(dá)、閥門、泵、風(fēng)扇等等。一個(gè)現(xiàn)實(shí)世界實(shí)體也可以是一組實(shí)體或?qū)嶓w的系統(tǒng)。
在處理控制系統(tǒng)2中用于安全應(yīng)用的設(shè)備6a典型地執(zhí)行用戶編寫的應(yīng)用程序,該應(yīng)用程序是使用源自本領(lǐng)域技術(shù)人員熟悉的IEC 61131-3標(biāo)準(zhǔn)的高級(jí)語言來描述的。因此,編譯器22典型地是一個(gè)針對(duì)源自IEC 61131-3標(biāo)準(zhǔn)的高級(jí)語言的編譯器。
以下,將編譯器的發(fā)行版、版本或修訂版都稱作編譯器。
用于安全控制的編譯器的驗(yàn)證典型地在軟件工廠中完成。本文中的軟件工廠是指一個(gè)場所,在那里可利用足夠的和驗(yàn)證合格的測試設(shè)備以及勝任的人員來執(zhí)行對(duì)編譯器的測試和驗(yàn)證。對(duì)編譯器的驗(yàn)證和相關(guān)的測試應(yīng)當(dāng)充分。測試應(yīng)當(dāng)例如保證編譯器22和安全部件符合安全認(rèn)證的要求。同時(shí),也需要滿足其他要求,例如,需要有足夠的性能以便在工業(yè)控制系統(tǒng)2中執(zhí)行其他應(yīng)用程序或程序。對(duì)編譯器的驗(yàn)證包括驗(yàn)證應(yīng)用程序是否在用于對(duì)現(xiàn)實(shí)世界實(shí)體進(jìn)行安全控制的設(shè)備中正確地執(zhí)行。
除了對(duì)編譯器進(jìn)行上述驗(yàn)證之外,本發(fā)明還公開了建立一個(gè)測試程序20,該測試程序20的目的是使用它作為在軟件工廠之外編譯器22的再驗(yàn)證的輸入。測試程序20應(yīng)當(dāng)包括用于安全控制應(yīng)用的控制語言的所有邏輯。在典型的測試程序中使用的定義典型地來自于IEC 61131-3標(biāo)準(zhǔn)。一個(gè)優(yōu)選的測試程序是通過使用所有的語言、所有的函數(shù)和所有的語言結(jié)構(gòu)建立的。這是為了保證編譯器22在該測試程序的編譯期間分析和檢查所有的邏輯表達(dá)式,該邏輯表達(dá)式以后將在用戶編寫的程序21中使用。
在本發(fā)明的一個(gè)實(shí)施方案中,來自軟件工廠的編譯器的一個(gè)版本或修訂版與測試程序相關(guān)。該測試程序在軟件工廠中在對(duì)編譯器進(jìn)行驗(yàn)證時(shí)至少部分被使用。用于后來的比較目的的第一軟件裝置也與編譯器的該版本或修訂版相關(guān)。更有利的是將測試程序連同編譯器的發(fā)行版、版本和修訂版一起分發(fā)。
圖2表示基于本發(fā)明的方法的流程示意圖。測試程序20用控制語言定義。該方法包括通過編譯器編譯11a測試程序的步驟。該方法還進(jìn)一步包括通過檢驗(yàn)測試程序正確地執(zhí)行來對(duì)編譯器進(jìn)行驗(yàn)證的步驟11b。
圖2也表示出該方法包括產(chǎn)生第一軟件裝置12的步驟。第一軟件裝置依賴于測試程序20的可執(zhí)行代碼。第一軟件裝置可以有多種實(shí)施方案。在一種實(shí)施方案中,第一軟件裝置23包括編譯后的測試程序的可執(zhí)行源代碼。在另一種實(shí)施方案中,生成第一軟件裝置12包括校驗(yàn)和和/或循環(huán)冗余校驗(yàn)碼的計(jì)算。在這種實(shí)施方案中,校驗(yàn)和和/或循環(huán)冗余校驗(yàn)碼是利用作為一個(gè)輸入的編譯后的測試程序計(jì)算的。下面將循環(huán)冗余校驗(yàn)碼稱為CRC。CRC可以用幾種方法計(jì)算或得出。例如,CRC的長度可以是16位或32位。16位多項(xiàng)式CRC-CCITT(X16+X12+X5+1)或者16位多項(xiàng)式(X16+X15+X2+1)是適合用在本發(fā)明的實(shí)施方案中的多項(xiàng)式的例子。一個(gè)可被用于計(jì)算CRC的32位多項(xiàng)式的例子是(X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1)。上述32位多項(xiàng)式是在以太網(wǎng)標(biāo)準(zhǔn)IEEE802.3中定義的,并且是在本發(fā)明的實(shí)施方案中使用的優(yōu)選的多項(xiàng)式。在一種替代的實(shí)施方案中,可以使用校驗(yàn)和,例如奇偶校驗(yàn)。
圖2表示出基于本發(fā)明的方法包括第二次編譯13測試程序20的步驟。編譯13測試程序20在編譯了用戶編寫的程序21之后完成。在生成12第一軟件裝置23、35和第二次編譯13測試程序20之間的時(shí)間滯后典型地是幾天或幾周。時(shí)間滯后可能長達(dá)幾年。在生成12第一軟件裝置和第二次編譯13測試程序20之間的時(shí)間里,編譯器代碼中可能已出現(xiàn)差錯(cuò)。這種差錯(cuò)可能例如在編譯器代碼的分發(fā)期間產(chǎn)生,或者差錯(cuò)可能是由計(jì)算機(jī)存儲(chǔ)器中的故障或存儲(chǔ)編譯器代碼的磁盤中的故障引起的。編譯器代碼中的差錯(cuò)也可能是由于計(jì)算機(jī)寄存器、堆棧存儲(chǔ)器或編譯器運(yùn)行的CPU中的錯(cuò)誤而出現(xiàn)的。
此外,圖2表示出該方法包括基于對(duì)測試程序20的第二次編譯而生成14第二軟件裝置24a、31的步驟。生成12第二軟件裝置24a、31的步驟是基于與先前生成第一軟件裝置的步驟相同的原理。如同第一軟件裝置一樣,第二軟件裝置可以有多種實(shí)施方案。在一種實(shí)施方案中,第二軟件裝置24a包括編譯后的測試程序20的第二次編譯的可執(zhí)行代碼。在另一種實(shí)施方案中,生成14第二軟件裝置包括校驗(yàn)和和/或循環(huán)冗余校驗(yàn)碼的計(jì)算。計(jì)算校驗(yàn)和和/或循環(huán)冗余校驗(yàn)碼的替代方法在上面對(duì)生成第一軟件裝置的闡述中更詳細(xì)地描述了。圖3更詳細(xì)地示出了生成14第二軟件裝置24a以及之后比較15軟件裝置的步驟和啟動(dòng)16用戶編寫的程序26的步驟的概要。圖4表示了在本發(fā)明的一種替代的實(shí)施方案中第二軟件裝置31被下載到設(shè)備6a中。
圖2也示出了該方法包括比較15第一軟件裝置和第二軟件裝置的步驟。圖3示出了在該方法的一種實(shí)施方案中比較步驟是由安裝有編譯器22的相同的工作站5a或通用計(jì)算機(jī)來完成的。在這種實(shí)施方案中,第一軟件裝置23和第二軟件裝置24a的比較步驟15可以通過使用由操作系統(tǒng)提供的標(biāo)準(zhǔn)部件來實(shí)現(xiàn)。
在另一實(shí)施方案中,比較步驟15是由設(shè)備6a完成的。圖4示出了這種實(shí)施方案的概要。在這種實(shí)施方案中,優(yōu)選的是第一軟件裝置35應(yīng)同系統(tǒng)軟件一起被下載到設(shè)備6a中。圖4表示出在測試程序20的第二次編譯之前第一軟件裝置35一般已經(jīng)被下載到設(shè)備6a中。第二軟件裝置31結(jié)合用戶編寫的程序的成功編譯26被下載34。
在本發(fā)明的一種實(shí)施方案中,對(duì)軟件裝置的比較15包括對(duì)暗示值的比較-并且不在計(jì)算中包括暗示的值之間進(jìn)行比較。在后面的情況中,值將會(huì)是0,并且0和0之間的比較可能導(dǎo)致所存儲(chǔ)的計(jì)算被置于某些或全部的位被保持在0的存儲(chǔ)器中,并且該比較可能得出無效的結(jié)果。這就是為什么非零值(例如暗示值)之間的比較會(huì)產(chǎn)生更高的發(fā)現(xiàn)錯(cuò)誤的幾率。
在本發(fā)明的一種替代的實(shí)施方案中,編譯測試程序13、產(chǎn)生14第二軟件裝置以及比較15第一和第一軟件裝置的步驟被重復(fù)許多次。在這種替代的實(shí)施方案中,為了產(chǎn)生第一和第二軟件裝置的變化,可使用一個(gè)附加的數(shù)據(jù)源。這種實(shí)施方案的一個(gè)例子是,產(chǎn)生第二軟件裝置的步驟包括結(jié)合一個(gè)和第二軟件裝置一起隨時(shí)間變化的變量的附加步驟。隨時(shí)間變化的變量典型地與測試程序的第二次編譯相關(guān)。在相同的替代的實(shí)施方案中,比較步驟可包括下載隨時(shí)間變化的變量的附加步驟。有利的是使用日期和時(shí)間標(biāo)記。在根據(jù)圖4的一種實(shí)施方案中,日期和時(shí)間標(biāo)記被下載到設(shè)備6a中并且將該日期和時(shí)間標(biāo)記與第一軟件裝置35相結(jié)合。使用隨時(shí)間變化的變量、例如日期和時(shí)間標(biāo)記的優(yōu)點(diǎn)是,隨時(shí)間產(chǎn)生第一和第二軟件裝置的變化。這種變化消除了以下可能性,即在下載期間下載鏈路中的一個(gè)單元存儲(chǔ)第二軟件裝置以及在隨后的下載期間將該第二軟件裝置代替其接收的新的第二軟件裝置發(fā)送出去。
圖2也表示出該方法包括使編譯后的用戶編寫的程序26能夠在具有用于控制現(xiàn)實(shí)世界實(shí)體10的安全部件的設(shè)備6a中執(zhí)行的步驟16。該方法的該使能步驟是在假設(shè)在先前步驟中沒有檢測到差錯(cuò)的情況下完成的。
依據(jù)本發(fā)明的方法至少是部分地在包含在一個(gè)計(jì)算機(jī)程序存儲(chǔ)設(shè)備中的一組計(jì)算機(jī)可讀指令的控制下執(zhí)行的。
本發(fā)明也公開了一種用于在工業(yè)控制系統(tǒng)2中的安全控制的計(jì)算機(jī)程序產(chǎn)品5b。計(jì)算機(jī)程序產(chǎn)品5b包括在根據(jù)上述的方法對(duì)編譯器進(jìn)行再驗(yàn)證之后使用戶編寫的程序能夠執(zhí)行的功能。此外,計(jì)算機(jī)產(chǎn)品包括用于執(zhí)行進(jìn)一步的操作來接收通過互聯(lián)網(wǎng)1發(fā)送的、包括第一軟件裝置35的信號(hào)的軟件裝置。
本發(fā)明也公開了一種計(jì)算機(jī)程序,其包括用于使計(jì)算機(jī)或處理器執(zhí)行上述方法中任一步驟的計(jì)算機(jī)代碼裝置。
本發(fā)明的前述公開內(nèi)容和描述是示例性的和解釋性的,在部件、處理和計(jì)算步驟以及程序、以及示意性電路和操作方法的細(xì)節(jié)方面都可以在不背離本發(fā)明的精神的情況下作出改變。
權(quán)利要求
1.一種在編譯器(22)已被使用之后對(duì)其進(jìn)行再驗(yàn)證的方法,該編譯器用來編譯由用戶編寫的、用于在工業(yè)控制系統(tǒng)(2)中執(zhí)行安全控制的程序,該方法包括以下步驟-第一次編譯(11a)一個(gè)測試程序(20),該測試程序以一種控制語言定義;-通過檢驗(yàn)該測試程序正確地執(zhí)行來對(duì)編譯器進(jìn)行驗(yàn)證(11b);其特征在于,還包括以下步驟-生成(12)源自編譯后的測試程序、用于后面的比較的第一軟件裝置;-在編譯了用戶編寫的程序之后第二次編譯(13)該測試程序;-基于該測試程序的第二次編譯生成(14)用于比較的第二軟件裝置;-比較(15)第一軟件裝置和第二軟件裝置;其中針對(duì)在第一和第二次編譯之間引入的任何差錯(cuò)對(duì)編譯器(22)進(jìn)行再驗(yàn)證;-假設(shè)再驗(yàn)證表明編譯器(22)中沒有差錯(cuò),則使編譯后的用戶編寫的程序能夠在具有用于控制現(xiàn)實(shí)世界實(shí)體(10)的安全部件的設(shè)備(6a)中執(zhí)行(16)。
2.如權(quán)利要求1的方法,其特征在于,所述比較步驟(15)在編譯器(22)在其中執(zhí)行的相同的工作站(5a)或通用計(jì)算機(jī)中執(zhí)行。
3.如權(quán)利要求1的方法,其特征在于,所述軟件裝置是校驗(yàn)和或循環(huán)冗余校驗(yàn)碼。
4.如權(quán)利要求3的方法,其特征在于,所述比較步驟(15)在具有安全部件的設(shè)備(6a)中執(zhí)行。
5.如權(quán)利要求4的方法,其特征在于,所述比較步驟(15)包括下載隨時(shí)間變化的變量的附加步驟,該變量與校驗(yàn)和或代碼在相同的消息中被下載到設(shè)備(6a)中,其中隨時(shí)間變化的變量被用來實(shí)現(xiàn)消息的變化。
6.如權(quán)利要求1的方法,其特征在于,所述測試程序(20)是以源自IEC6-1131標(biāo)準(zhǔn)的控制語言來定義的。
7.一種包括軟件代碼裝置的計(jì)算機(jī)程序產(chǎn)品(5b),該軟件代碼裝置可以被裝載到通用計(jì)算機(jī)或工作站(5a)和/或設(shè)備(6a)的內(nèi)存中,其特征在于,所述的計(jì)算機(jī)程序產(chǎn)品具有裝置,用于執(zhí)行由計(jì)算機(jī)實(shí)現(xiàn)的第二次編譯(13)測試程序的步驟、由計(jì)算機(jī)實(shí)現(xiàn)的生成第二軟件裝置(14)的步驟、由計(jì)算機(jī)實(shí)現(xiàn)的比較(15)第一軟件裝置和第二軟件裝置的步驟以及由計(jì)算機(jī)實(shí)現(xiàn)的使用戶編寫的程序能夠在設(shè)備(6a)中執(zhí)行的步驟(16),所有如權(quán)利要求1的步驟。
8.一種如權(quán)利要求7的計(jì)算機(jī)程序產(chǎn)品(5b),包括用于執(zhí)行進(jìn)一步的操作的軟件裝置,以便-接收通過互聯(lián)網(wǎng)(1)發(fā)送的、包括第一軟件裝置(35)的信號(hào)。
9.一種計(jì)算機(jī)程序,包括用于使計(jì)算機(jī)或處理器執(zhí)行權(quán)利要求1-6中任一步驟的代碼裝置和/或軟件代碼部分。
全文摘要
本發(fā)明涉及在用于工業(yè)控制系統(tǒng)的控制語言編譯器每次被使用之后該編譯器的再驗(yàn)證。特別地,本發(fā)明揭示了一種用于對(duì)編譯用戶編寫的程序的編譯器進(jìn)行再驗(yàn)證的方法,該用戶編寫的程序用于現(xiàn)實(shí)世界實(shí)體的安全控制。須經(jīng)編譯器編譯的用戶編寫的程序用來在裝置中執(zhí)行,該裝置包括向工業(yè)控制系統(tǒng)中添加安全部件的功能。本發(fā)明保證了不會(huì)由于編譯器代碼中的差錯(cuò)而將錯(cuò)誤引入該裝置。這種差錯(cuò)可能例如在編譯器代碼的分發(fā)期間產(chǎn)生,或者由計(jì)算機(jī)的存儲(chǔ)器中的故障或者存儲(chǔ)編譯器代碼的磁盤上的故障引起。因此,本發(fā)明保證了這樣的錯(cuò)誤不會(huì)被引入到現(xiàn)實(shí)世界實(shí)體的控制中,否則這樣的錯(cuò)誤可能會(huì)導(dǎo)致傷害人的事故或是造成對(duì)環(huán)境的破壞。
文檔編號(hào)G06F9/45GK1666178SQ03815234
公開日2005年9月7日 申請(qǐng)日期2003年6月27日 優(yōu)先權(quán)日2002年6月28日
發(fā)明者A·奧佩姆, M·貢馬克, K·漢森 申請(qǐng)人:Abb股份有限公司