專利名稱:產(chǎn)生和存儲用于可編程控制器的、由指令構(gòu)成的應(yīng)用程序的方法和可編程控制器的操作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于產(chǎn)生和存儲一種用于可編程控制器的、由指令構(gòu)成的應(yīng)用程序的方法,其中在處理應(yīng)用程序時可編程控制器由生產(chǎn)過程的輸入信號推導(dǎo)出生產(chǎn)過程的輸出信號,本發(fā)明還涉及一種用于可編程控制器的相應(yīng)的操作方法。
這種方法是公知的。
本發(fā)明的目的在于提出新的方法。
該產(chǎn)生和存儲方法的目的的解決方案如下,應(yīng)用程序的指令分別由一操作碼和配屬給操作碼的功能參數(shù)構(gòu)成,功能參數(shù)或者引用輸入信號或者引用另一指令,并且該方法具有下述步驟a)在產(chǎn)生應(yīng)用程序時,對每個輸出信號從配屬給各個輸出信號的指令開始問詢待處理的指令,其中對下述步驟進(jìn)行處理b)問詢并暫存有待處理的操作碼;c)確定功能參數(shù)的數(shù)量;d)順序地詢問功能參數(shù);e)如果功能參數(shù)是一個輸入信號,則暫存對輸入信號的引用;f)如果功能參數(shù)是一個新的操作碼,則暫存對一新指令的引用,向該新指令轉(zhuǎn)移并暫存另一操作碼并重復(fù)進(jìn)行用于新指令的步驟c)至f);g)只有當(dāng)至少當(dāng)時的輸出信號的所有指令完全被詢問后,才將暫存的操作碼和暫存的功能參數(shù)存儲在剩磁存儲器中以及標(biāo)識為有效。
而且根據(jù)操作方法,應(yīng)用程序的指令分別由一操作碼和配屬給操作碼的功能參數(shù)構(gòu)成,其中功能參數(shù)或者引用一輸入信號或者引用另一指令。本發(fā)明的步驟如下a)在周期的處理過程中,從配屬給輸出信號的指令開始,對每個指令進(jìn)行下述步驟處理;b)讀出配屬給指令的操作碼和配屬給該指令的功能參數(shù);c)對每個功能參數(shù)檢查該功能參數(shù)是否引用另一指令;d)如果功能參數(shù)引用一輸入信號,則該輸入信號被暫存;e)如果功能參數(shù)引用另一指令,則轉(zhuǎn)向另一指令并用另一指令重復(fù)進(jìn)行步驟b)至e);f)當(dāng)所有功能參數(shù)處理完畢后,則推導(dǎo)出配屬給指令的輸出信號。
下面將對照實施例對本發(fā)明的其它優(yōu)點和細(xì)節(jié)加以說明。其中
圖1為編程機(jī)和可編程控制器的結(jié)構(gòu),圖2為編程機(jī)的用戶接口,圖3為編程舉例。
如圖1所示,編程機(jī)1具有一個處理器2,該處理器通過母線系統(tǒng)3與固定值存儲器4、寫讀存儲器5以及接口6、7和8連接。在固定值存儲器4中存儲有處理器2的操作系統(tǒng),寫讀存儲器5用作編程機(jī)1的操作存儲器。利用輸入單元9,例如一個鍵盤通過接口6可將數(shù)據(jù)輸入到編程機(jī)1內(nèi)。同樣利用接口7可將數(shù)據(jù)顯示在顯示單元10上。編程機(jī)利用通信接口8通過圖中用虛線所示的通信連接11與可編程控制器12通聯(lián)。
可編程控制器12同樣具有一個處理器13,該處理器用于處理應(yīng)用程序。應(yīng)用程序由大量的待處理的指令構(gòu)成并存儲在電可擦和寫入的固定值存儲器14中。根據(jù)待處理的應(yīng)用程序,處理器13通過控制器15和過程接口16訪問圖中未示出的技術(shù)過程或生產(chǎn)裝置17。處理器從此處將輸入信號讀入,將輸入信號存儲在寫讀存儲器18中并接著利用應(yīng)用程序推導(dǎo)出輸出信號。輸出信號同樣被存儲在寫讀存儲器18中并接著通過控制器15和過程接口16輸出給生產(chǎn)過程17。另外,可編程控制器12具有一個至編程機(jī)的接口19。處理器13、存儲器14、18、控制器15以及通信接口19同樣通過母線20相互連接在一起。
編程機(jī)1和可編程控制器12理論上是可以相互分隔開的設(shè)備。但最好是如圖1所示的虛線和如圖2所示,編程器1安裝在可編程控制器件12內(nèi)。但在上述兩種情況下,編程機(jī)1可以通過接口8和19以及通信連接11訪問固定值存儲器14。其中可以將新的應(yīng)用程序?qū)懭牍潭ㄖ荡鎯ζ?4中并對已有的應(yīng)用程序讀出、擦除或變更。
如圖2所示,可編程控制器12具有螺接端子21至24、鍵盤25和液晶顯示器26??删幊炭刂破?2通過螺接端子21與24伏電源連接。分別通過兩個螺接端子22,數(shù)字輸出信號被輸出給生產(chǎn)過程17。生產(chǎn)過程17的輸入信號通過一螺絲夾23讀入。接在螺絲夾22和23上的執(zhí)行機(jī)構(gòu)和傳感器通過螺絲夾24與電源連接。所以螺絲夾22至24是過程接口16的組成部分。
液晶顯示器26相當(dāng)于編程機(jī)1的顯示單元10。另外在運(yùn)行時還可通過顯示器26顯示可編程控制器12的信號。即顯示器26也起著監(jiān)視單元的作用。采用鍵盤25可以直接將指令輸入到編程機(jī)1和可編程控制器件12中。
應(yīng)用程序通常由各個指令構(gòu)成,其中每個指令分別由操作碼和配屬給操作碼的功能參數(shù)構(gòu)成。工作時,可編程控制器周期地處理下述指令序列-讀入生產(chǎn)過程17的輸入信號,-根據(jù)應(yīng)用程序推導(dǎo)出用于生產(chǎn)過程的輸出信號,-將輸出信號輸出給生產(chǎn)過程17。
此工作方式通常是公知的。
在產(chǎn)生應(yīng)用程序時,由編程單元1順序地詢問輸入單元9的有待處理的指令。為此從配屬給第一輸出信號的指令開始詢問將處理哪個功能。也就是說,將在顯示單元10上輸出一相應(yīng)的指令并等候,直至使用者通過輸入單元9輸入操作碼。
一旦輸入了操作碼,該操作碼被編程單元1暫存在寫讀存儲器5中。接著編程單元1確定有多少個功能參數(shù)配屬給該指令。在此,在編程機(jī)1內(nèi)的內(nèi)部配屬與使用者可見的功能參數(shù)的數(shù)量是有區(qū)別的。在內(nèi)部對所有操作碼功能參數(shù)的數(shù)量都是相同的,在上述例中都是4。在外部則與此相反始終僅詢問所需的功能參數(shù)數(shù)量。對此將舉例進(jìn)一步說明如果作為操作碼輸入用于“或”操作的碼,的確詢問四個參數(shù)。稍后在處理程序時也將考慮到這四個參數(shù)。如果與此相反,作為操作碼選用了邏輯“非”,則僅向使用者詢問一個參數(shù),即取反的輸入信號。其它的三個參數(shù)由編程機(jī)1獨立進(jìn)行填充并在執(zhí)行程序時不加以考慮。
在對操作碼詢問并暫存在寫讀存儲器5后,由編程單元1與輸入單元9和顯示單元10相配合還順序地對功能參數(shù)加以詢問和暫存。作為功能參數(shù)或者可輸入一個輸入信號,或者可輸入另一個操作碼。其中在每次輸入功能參數(shù)時將立刻檢查該參數(shù)是否是操作碼。
如果功能參數(shù)不是操作碼,而是一個輸入信號,則該功能參數(shù)被中間存儲并開始下一個功能參數(shù)。在此情況下,輸入信號不僅系指來自生產(chǎn)過程17的輸入信號,而且也指其數(shù)值已預(yù)知的信號。這種信號例如是常數(shù)0或常數(shù)1信號以及時鐘信號。
如果與此相反,輸入的是一個作為功能參數(shù)的新的操作碼,則作為功能參數(shù)暫存的不是操作碼,而是新的指令的地址。緊接著轉(zhuǎn)移到該新指令并在此處暫存在此之前輸入的操作碼。接著重新確定功能參數(shù)的數(shù)量,并且詢問功能參數(shù)和暫存。
對這些功能參數(shù)也立刻再次檢查它們是輸入信號,還是操作碼。如果它們是新的操作碼,則又重新立刻將新指令的地址作為功能參數(shù)加以存儲并轉(zhuǎn)移到該新指令。而且在此又將剛剛輸入的操作碼加以存儲,確定需要多少功能參數(shù)并對功能參數(shù)進(jìn)行詢問和暫存。
這種對操作碼和功能參數(shù)的交錯詢問一直進(jìn)行下去,直到最后詢問和暫存操作碼的功能參數(shù)指向輸入信號為止。如果所有的功能參數(shù)都指向輸入信號,則完成了各個指令的輸入。接著返回到前面的指令并且在此指令時必要時詢問下一個功能參數(shù)并暫存,在此也在必要時轉(zhuǎn)移到另一指令。
上述過程一直進(jìn)行,直至所有推導(dǎo)輸出信號所需的功能相互交織在一起,即每個指令的所有功能參數(shù)被輸入。只有在此點實現(xiàn)后,才對配屬給下一個輸出信號的指令進(jìn)行詢問并且只要需要就重復(fù)進(jìn)行該過程。采用此方式將順序地對所有輸出信號編程。
當(dāng)然也可以由使用者隨時中斷應(yīng)用程序的輸入。但在此時不進(jìn)行對輸入和暫存的子程序的存儲。在斷開編程機(jī)1時將失去輸入的數(shù)據(jù)。只有編程過程完全結(jié)束時,才能將被詢問和暫存在寫讀存儲器5內(nèi)的應(yīng)用程序存儲在剩磁存儲器14內(nèi)。
-當(dāng)對每個輸出信號輸入一個指令,并且-當(dāng)每個編程操作碼的每個功能參數(shù)被覆蓋時,則編程過程或應(yīng)用程序的產(chǎn)生被視為完全結(jié)束。
圖3示出一個簡單的應(yīng)用程序的例子。其中實線表示根據(jù)邏輯連接所需的連接。虛線則表示根據(jù)編程流程所需的附加連接,并且點劃線表示由編程機(jī)1本身補(bǔ)充的連接。圖3的編程例的輸入過程如下首先編程機(jī)通過顯示單元10和輸入單元9詢問,為推導(dǎo)第一輸出A1的輸出信號需采用哪個操作碼。使用者接著通過輸入單元輸入,將實現(xiàn)“與”邏輯27。相應(yīng)的操作碼被存儲在編程機(jī)1的寫讀存儲器5內(nèi)。接著依次對第一、第二和第三功能參數(shù),即對“與”邏輯27的四個輸入信號中的三個進(jìn)行詢問并暫存。
第一和第二輸入?yún)?shù)是輸入信號E1和E2。所以在輸入這兩個功能參數(shù)時立刻開始下一個功能參數(shù)。但在詢問第三個功能參數(shù)時,與此相反使用者輸入他想采取“非”邏輯。故作為第三功能參數(shù)的指令地址被暫存,在此指令上然后對“非”邏輯進(jìn)行處理。
接著由編程機(jī)1向此指令轉(zhuǎn)移并詢問,哪個功能參數(shù)是“非”邏輯28(唯一)的功能參數(shù)。在此由使用者輸入輸入信號E3。編程機(jī)1對該功能參數(shù)進(jìn)行暫存并用另外三個功能參數(shù)對指令加以補(bǔ)充,這三個功能參數(shù)分別為邏輯1。而且這三個功能參數(shù)被暫存在存儲器5中。以此結(jié)束了“非”邏輯28的參數(shù)化。所以又返回“與”邏輯的其它參數(shù)的寫入并詢問第四個功能參數(shù)并暫存。由于依照圖3例的“與”邏輯27僅具有三個有效的輸入?yún)?shù),故第四個輸入通過使用者的相應(yīng)的輸入與邏輯1連接。
至此結(jié)束輸出A1的編程并開始輸出A2的編程。
首先詢問并在使用者輸入后進(jìn)行皙存,用于產(chǎn)生輸出信號A2的操作碼是“或”邏輯29。接著依次詢問“或”邏輯29的四個功能參數(shù)。
根據(jù)圖3的編程例,輸入作為第一個功能參數(shù)的輸入E3的已編程的“非”邏輯。由于該邏輯已經(jīng)編程完畢,故不再需要有關(guān)該功能參數(shù)的輸入并且在暫存后立刻開始第二個功能參數(shù)。
第二和第三功能參數(shù)是(有效的)輸入信號E2和E4,因而可以立刻開始第四個功能參數(shù)。
根據(jù)圖3的編程例,“或”邏輯29也僅有三個輸入信號。故第四個功能參數(shù)為常數(shù)0。
由于至此結(jié)束輸出A2的編程,則開始輸出A3。
根據(jù)所述的編程例,本來不需要采用輸出A3和A4。故對于輸出A3選用“非”邏輯30,該“非”邏輯與邏輯1連接。這樣輸出A3設(shè)在常數(shù)0上。對于輸出A4與上述相同輸入“非”邏輯31。另外,還可以將輸出A3和A4直接與邏輯0連接。
由此產(chǎn)生的程序存儲在存儲器14中。此程序在下表中示出。
B1FC (AND)ADDR(E1)ADDR(E2)ADDR(B5)ADDR(“1”)B2FC (OR)ADDR(B5)ADDR(E2)ADDR(E4)ADDR(“0”)B3FC (NOT)ADDR(“1”)ADDR(“1”)ADDR(“1”)ADDR(“1”)B4FC (NOT)ADDR(“1”)ADDR(“1”)ADDR(“1”)ADDR(“1”)B5FC (NOT)ADDR(E3)ADDR(“1”)ADDR(“1”)ADDR(“1”)在表1的左側(cè)用B1至B5分別表示各指令的起始。但該數(shù)據(jù)僅用于說明并且不是存儲的程序的組成部分。在真正的程序中FC表示操作碼、ADDR表示地址。
這種程序由塊構(gòu)成,每個塊有五個字節(jié)。第一個字節(jié)分別表示指令的操作碼,另外四個字節(jié)表示四個功能參數(shù)。前面的四個指令B1至B4始終用于對四個輸出信號的指令進(jìn)行定義。從第五個指令B5開始則對指令進(jìn)行存儲,所述指令系在計算輸出信號時必須間接追溯的指令。
應(yīng)用程序的處理過程如下將周期地對指令B1至B4加以處理。在處理指令B1至B4中的每個指令時首先讀出配屬給指令的操作碼。接著順序地讀出配屬給指令的功能參數(shù)。在讀入每個功能參數(shù)時立刻檢查該功能參數(shù)是否引用另一指令。當(dāng)功能參數(shù)引用一輸入信號時,則該輸入信號被暫存。
如果功能參數(shù)與此相反引用的是另一指令,則立刻(即在讀入其它的功能參數(shù)前)向該指令轉(zhuǎn)移并讀出配屬給該指令的操作碼和配屬給該指令的功能參數(shù)。而且當(dāng)操作碼指示一新指令時,則在處理其它功能參數(shù)前,立刻處理該指令。在處理完一個指令的所有的功能參數(shù)后,則推導(dǎo)出配屬給指令的輸出信號,必要時返回到將調(diào)用的指令,并且將推導(dǎo)出的輸入信號作為應(yīng)用程序的繼續(xù)處理的依據(jù)。
而且還將在此對照表中所示的程序?qū)ζ湓碜鲞M(jìn)一步的說明。
首先讀出指令B1的操作碼。接著讀出引用輸入E1和E2的功能參數(shù)。在讀出第三個功能參數(shù)時向指令B5轉(zhuǎn)移。將讀出該指令的操作碼和所有四個功能參數(shù)(由于所有四個功能參數(shù)都引用輸入信號)并推導(dǎo)出配屬給該指令B5的輸出信號。用此輸出信號然后返回指令B1并讀出第四個功能參數(shù)。接著推導(dǎo)出輸出信號A1并存儲在寫讀存儲器18中。
此后讀出指令B2的操作碼和第一功能參數(shù)。接著重新向指令B5轉(zhuǎn)移,指令5的操作碼和四個功能參數(shù)被讀出并推導(dǎo)出指令B5的輸出信號。接著返回指令B2并讀出剩余的三個功能參數(shù)。接著推導(dǎo)出指令B2的輸出信號。
最后還讀出并處理指令B3的操作碼和功能參數(shù)和推導(dǎo)出輸出信號A3。同樣對指令B4和由此產(chǎn)生的輸出信號A4進(jìn)行處理。
在推導(dǎo)出最后的輸出信號A4之后,將推導(dǎo)出的輸出信號A1至A4輸出給生產(chǎn)過程17并重新讀入輸入信號E1至E4。接著開始一個推導(dǎo)輸出信號A1至A4的新的周期。
替代所述的生成方法,另外還可以在單個輸出信號完全編程后立刻將屬于一個輸出信號的指令存儲在剩磁存儲器14中。也就是說,當(dāng)輸出信號A1被完全編程后,例如可以立刻將指令B1和B5加以存儲。
同樣也可以將每個輸入的操作碼和每個輸入的功能參數(shù)立刻存儲在剩磁存儲器14中。在此情況下必須在程序生成過程開始時在剩磁存儲器14的一專門為此設(shè)置的存儲區(qū)內(nèi)設(shè)定,所有輸出信號A1至A4的編程是無效的。例如可以將四個1比特存儲元置于邏輯0上,以便說明對四個輸出信號A1至A4編程是無效的。當(dāng)輸出信號A1至A4被有效編程后,這四個1比特存儲元被置于邏輯1上。其中可以有選擇地在整個應(yīng)用程序生成后或在對每個輸出信號的所有指令詢問后單獨對每個輸出信號A1至A4進(jìn)行有效標(biāo)識。
對指令也不必非得按照表中的順序進(jìn)行存儲。例如可以將所有用于推導(dǎo)輸出信號A1的指令,在此是指令B1和B5,順序地存儲在存儲器14中。用于推導(dǎo)輸出信號A2至A4的指令B2至B4則接著存儲在這些指令(B1和B5)的后面。在處理應(yīng)用程序時,在此情況下將注視哪個地址是用于推導(dǎo)輸出信號A1而調(diào)用的最高的地址。用于推導(dǎo)輸出信號A2的指令則開始于下一個較高的地址。采用同樣的方法,即對采用的最高的地址進(jìn)行暫存,然后可以推導(dǎo)出用于推導(dǎo)輸出信號A3和A4的指令設(shè)置在什么位置。但在實施本發(fā)明時,專業(yè)人員優(yōu)選這種還是那種方式,可按其自己的意愿進(jìn)行。
權(quán)利要求
1.一種用于產(chǎn)生和存儲用于可編程控制器的、由指令構(gòu)成的應(yīng)用程序的方法,-其中在處理應(yīng)用程序時可編程控制器由生產(chǎn)過程(17)的輸入信號(E1至E4)推導(dǎo)出用于生產(chǎn)過程(17)的輸出信號(A1至A4),-其中應(yīng)用程序的指令(B1至B5)分別由一操作碼和配屬給該操作碼的功能參數(shù)構(gòu)成,-其中功能參數(shù)或者引用輸入信號(E1至E4)或者引用另一指令(B5),具有下列步驟a)在產(chǎn)生應(yīng)用程序時,對每個輸出信號從配屬給該輸出信號(A1至A4)的指令開始問詢待處理的指令(B1至B5),其中進(jìn)行下述步驟的處理b)問詢并暫存有待處理的操作碼;c)確定功能參數(shù)的數(shù)量;d)順序地詢問功能參數(shù);e)如果功能參數(shù)是一個輸入信號,則暫存對輸入信號(E1至E4)的引用;f)如果功能參數(shù)是一個新的操作碼,則暫存對一新指令的引用,向該新指令轉(zhuǎn)移并暫存另一操作碼并重復(fù)進(jìn)行用于新指令(B5)的步驟c)至f);g)只有當(dāng)至少各個輸出信號(A1至A4)的所有指令(B1至B5)完全被詢問后,才將暫存的操作碼和暫存的功能參數(shù)存儲在剩磁存儲器(14)中以及進(jìn)行有效標(biāo)識。
2.一種可編程控制器的操作方法,-其中可編程控制器周期地處理一個由指令(B1至B5)構(gòu)成的應(yīng)用程序,以便由生產(chǎn)過程(17)的輸入信號(E1至E4)推導(dǎo)出用于生產(chǎn)過程(17)的輸出信號(A1至A4),-其中應(yīng)用程序的指令(B1至B5)分別由操作碼和配屬給操作碼的功能參數(shù)構(gòu)成,-其中功能參數(shù)或者引用一輸入信號(E1至E4),或者引用另一指令(B5),具有下述步驟a)在周期的處理過程中,從配屬給輸出信號(A1至A4)的指令(B1至B4)開始對每個指令(B1至B5)進(jìn)行下述步驟的處理;b)讀出配屬給指令(B1至B5)的操作碼和配屬給該指令(B1至B5)的功能參數(shù);c)對每個功能參數(shù)檢查該功能參數(shù)是否引用另一指令(B5);d)如果功能參數(shù)引用一輸入信號(E1至E4),則該輸入信號(E1至E4)被暫存;e)如果功能參數(shù)引用另一指令(B5),則向另一指令(B5)轉(zhuǎn)移并用另一指令(B5)重復(fù)進(jìn)行步驟b)至e);f)當(dāng)所有功能參數(shù)處理完畢后,推導(dǎo)出配屬給指令(B1至B5)的輸出信號(A1至A4)。
3.一種用于實施如權(quán)利要求1所述方法的編程單元,具有-用于詢問和暫存有待處理的指令的操作碼的器件(2、4、5、6、7、9、10);-用于確定有待處理的指令的功能參數(shù)數(shù)量的器件(2、4);-用于詢問和暫存功能參數(shù)的器件(2、4、5、6、7、9、10);-用于檢查功能參數(shù)是否是一個新的操作碼的器件(2、4);-當(dāng)功能參數(shù)是一個新的操作碼時用于向新指令轉(zhuǎn)移的器件(2、4);-當(dāng)至少一個輸出信號(A1至A4)的所有待處理的指令的所有功能參數(shù)尚未被暫存時、用于防止暫存的操作碼和暫存的功能參數(shù)在剩磁存儲器(14)中的存儲以及用于防止對其進(jìn)行有效標(biāo)識的器件(2、4)。
4.一種用于實施如權(quán)利要求2所述方法的可編程控制器,具有-用于讀出配屬給指令的操作碼和功能參數(shù)的器件(13);-用于檢查功能參數(shù)是引用一輸入信號,還是引用另一指令的器件(13);-當(dāng)功能參數(shù)引用輸入信號時、用于暫存輸入信號的器件(18);-當(dāng)功能參數(shù)引用另一指令時、用于向另一指令轉(zhuǎn)移的器件(13);-用于返回待調(diào)用的指令的器件(13);-當(dāng)所有的配屬給指令的功能參數(shù)處理完畢后、用于推導(dǎo)配屬給指令的輸出信號的器件(13)。
5.如權(quán)利要求4所述的可編程控制器,所述可編程控制器與如權(quán)利要求3所述的編程單元結(jié)合在一起。
全文摘要
一種用于產(chǎn)生和存儲用于可編程控制器的、由指令構(gòu)成的應(yīng)用程序的方法,在處理應(yīng)用程序時首先讀出配屬給輸出信號的操作碼和配屬給該操作碼的功能參數(shù)。對每個功能參數(shù),分別根據(jù)該功能參數(shù)是引用一個輸入信號還是引用另一指令,或者暫存輸入信號或者向其它指令轉(zhuǎn)移并且處理其操作碼和功能參數(shù)。當(dāng)至少一個輸出信號的所有指令的全部功能參數(shù)尚未完全輸入完時,則阻止應(yīng)用程序的存儲及有效標(biāo)識。
文檔編號G05B19/05GK1196128SQ96196852
公開日1998年10月14日 申請日期1996年8月23日 優(yōu)先權(quán)日1995年9月5日
發(fā)明者??啤た材防? 邁克爾·希塞爾 申請人:西門子公司