專利名稱:可編程控制器的制作方法
技術(shù)領域:
本發(fā)明一般地涉及到一種包含有一個順序控制程序的可編程控制器,它用于在有效地控制各工業(yè)生產(chǎn)線的工廠自動化(FA)領域或在控制多個工序的生產(chǎn)過程自動化(PA)領域中把信息輸入和輸出到各種現(xiàn)場智能設備。
本發(fā)明特別地涉及到對一種切換系統(tǒng)的改進,該切換系統(tǒng)跟一個執(zhí)行順序控制程序的1位處理器和一個普通的處理器相聯(lián)。與此相應作了改進的還有用戶任意地指定一個基本進程的功能,對一組用于把信號輸送到各現(xiàn)場設備和從其接收信號的I/O板進行控制的功能,以及放置在其中的順序控制程序的易編制性。
通常,在可編程控制器的CPU板上裝有一個典型的通用處理器(例如16位微處理器68000等)并把其作為第一處理器,還裝有一個專門用來執(zhí)行數(shù)值量或邏輯量的算術(shù)運算的處理器(如68000系列等)并將它作為第二處理器。這些處理器的運行根據(jù)儲存在一個程序存儲器中的順序控制程序進行切換。
圖1例示了一個模件,其中第一和第二處理器交替地運行,從同一個程序存儲器中讀出。
在圖1所示的模件中,把第一處理器CPU1設想為一個典型的通用處理器(如16位微處理器68000),第二處理器BPU2設想為是一個專門用來執(zhí)行數(shù)值量或邏輯量的算術(shù)運算的處理器(如68000系列),它們通過一個信息總線b連到一個程序存儲器3。注意,在某些情況下,第二處理器BPU2又稱為1位處理器。
在程序存儲器3中儲存著作為處理器CPU1的程序命令的機器語言指令。處理器CPU1順序地讀這些機器語言指令以進行處理。當讀出的指令應由處理器BPU2執(zhí)行時,處理器CPU1就對處理器BPU2發(fā)出一個命令以進行一次運算或數(shù)據(jù)準備。接著,從程序存儲器3讀出的各指令將依次發(fā)送給處理器BPU2以便把控制執(zhí)行權(quán)給予BPU2。
這種先有技術(shù)的可編程控制器使用了處理器CPU1和BPU2的組合,從設計方面看造成了一定的麻煩,即在系統(tǒng)設計階段就必須事先把儲存在程序存儲器3中的各機器語言指令分別指配給處理器CPU1和BPU2。
另一方面,目前常用的命令是跟CPU1所固有的機器語言指令無關(guān)地設計的解釋程序型命令(解釋程序命令),一般傾向于把這些解釋程序命令存放在程序存儲器3中。
一個使用解釋程序型命令的裝置除了能自由地設定由處理器CPU1執(zhí)行的命令外還能夠自由地設定由處理器BPU2執(zhí)行的命令。沒有必要在處理器CPU1的設計階段把各命令分別指配給CPU1和BPU2。根據(jù)從程序存儲器3中讀出的命令的內(nèi)容就可以定出是處理器CPU1還是BPU2,因此可以提高實用效率及擴充要由處理器BPU2執(zhí)行的命令。
然而,在既使用機器語言指令,又使用解釋程序型命令的情況下,當BPU2運行時,處理器CPU1也必須依次地從程序存儲器3中讀出程序命令,并把這些命令供給BPU2。這又導致一個費時的程序傳輸?shù)膯栴}。
在使用解釋程序型命令的場合,處理器CPU1必須對讀出的命令進行解釋,確定由那一個處理器執(zhí)行。特別是在處理器CPU1和BPU2頻繁地切換的裝置中,造成額外的時間開支。
本發(fā)明的主要目的是提供一種便于對處理器CPU1和BPU2進行切換并且加速總體進程的可編程控制器,從而避免前述的問題。
根據(jù)本發(fā)明的一個方面,提出了一種可編程控制器,它不僅可以改善CPU板的內(nèi)部結(jié)構(gòu),也可以改善諸如通用的算術(shù)運算、信息處理、控制操作、跟一個連到主機一邊的計算機系統(tǒng)進行通訊有關(guān)的基本程序處理以及順序控制程序處理等的效率。
根據(jù)本發(fā)明的另一個方面,提出了一種可編程控制器,它改進了把數(shù)據(jù)傳輸?shù)揭唤MI/O卡的功能,以便可靠地高速傳輸數(shù)據(jù)。這些I/O卡跟CPU板相連,并把信號傳送到現(xiàn)場的設備和從其接收信號。
根據(jù)本發(fā)明的又一個方面,提出了一種可編程控制器,它可以簡化順序控制程序的建立過程,也可以檢測可編程控制器本身運行的異常和順序控制程序開發(fā)中的異常。
在后面結(jié)合各附圖的討論中將可以清楚看出本發(fā)明的其他目的和優(yōu)點。其中圖1為表示一個先有技術(shù)的可編程控制器的框圖;
圖2為根據(jù)本發(fā)明制作的可編程控制器的一個實施例的框圖;
圖3示出一個程序存儲器3中的內(nèi)容以解釋圖2所示的裝置的工作;
圖4為一框圖,例示根據(jù)本發(fā)明制作的可編程控制器的另一實施例;
圖5(a)和5(b)各說明圖4所示的裝置的工作;
圖6為一種裝置的框圖,它對圖4所示的實施例的結(jié)構(gòu)作了部分改動;
圖7(a)和7(b)各說明圖6所示的裝置的工作;
圖8為根據(jù)本發(fā)明制作的可編程控制器的又一個實施例的框圖;
圖9(a)和9(b)表明圖8所示的第一和第二程序存儲器區(qū)31和32中的內(nèi)容;
圖10(a)和10(b)一起說明一種裝置,它對圖8所示的實施例的一些部件作了改動;
圖11表示一個根據(jù)本發(fā)明制作的可編程控制器的處理器板及一個I/O板的結(jié)構(gòu);
圖12表示一個解釋根據(jù)本發(fā)明制作的可編程控制器的工作的梯形程序圖;
圖13與之相配合解釋根據(jù)本發(fā)明制作的可編程控制器中CPU1和BPU2的工作;
圖14描述了一個使用可編程控制器的系統(tǒng);
圖15表示根據(jù)本發(fā)明制作的可編程控制器中基本進程和順序控制進程之間的關(guān)系;
圖16為從主機對根據(jù)本發(fā)明制作的可編程控制器處理語言的流程圖;
圖17為根據(jù)本發(fā)明制作的可編程控制器的標準I/O驅(qū)動程序的原理圖;
圖18表示在根據(jù)本發(fā)明制作的可編程控制器的標準I/O驅(qū)動程序中建立過程定義表的一種方式;
圖19為表示根據(jù)本發(fā)明制作的可編程控制器的標準I/O驅(qū)動程序訪問I/O板的過程的流程圖;
圖20和21是說明根據(jù)本發(fā)明制作的可編程控制器的I/O板和CPU板之間數(shù)據(jù)傳輸?shù)臅r序圖;
圖22表示在根據(jù)本發(fā)明制作的可編程控制器中所包含的一個異常情況記錄模塊的結(jié)構(gòu);
圖23表示圖22所述的異常情況記錄模塊給出的一段信息在主機的CRT上顯示的樣子;
圖24表示一個已經(jīng)把由編程工具產(chǎn)生的各種注解加上了的梯級工序;
圖25為表示本發(fā)明的編程工具和把步驟號相應的注解顯示出來的功能的框圖;
圖26表示跟圖25有關(guān)的一個功能內(nèi)部的注解文件;
圖27為跟圖25有關(guān)的一種功能內(nèi)部的工序/注解對照表;
圖28表示根據(jù)圖25所示功能在編程工具的CRT上顯示的圖象轉(zhuǎn)換;
圖29為根據(jù)本發(fā)明制作的可編程控制器的一個處理例的流程圖;
圖30表示對根據(jù)本發(fā)明制作的可編程控制器進行梯級工序編程時用的各功能塊;
圖31表示怎樣建立一個梯級工序;
圖32表示梯級工序的各信號名跟地址的對應關(guān)系;
圖33表示怎樣把詳細的地址指配給圖32中的梯級工序中的各信號名;
圖34(a)到34(c)分別表示一個用模塊方法建立的梯形程序圖;
圖35表示幾個可編程控制器執(zhí)行系列順序控制程序的情況;以及圖36表示控制圖35所示系統(tǒng)的基本程序的一個例子。
在圖2中,畫出了根據(jù)本發(fā)明制作的可編程控制器的一個實施例的框圖。
本實施例的方案的特點在于增設了一個跟信息總線b分開的控制線L,因此能在處理器CPU1和BPU2之間發(fā)送和接收信號。
處理器CPU1和BPU2用控制線L將起動信號和在程序存儲器3中的讀出地址通知對方。
程序存儲器3既用來存儲處理器BPU2的順序基本程序,也存儲前述的解釋程序型命令。具體地說,順序控制程序由順序基本命令和順序應用命令組成,前者以機器語言寫成,用于1位算術(shù)運算,而后者以解釋程序的格式寫成,用于數(shù)值間的比較和數(shù)據(jù)處理,順序控制程序按照順序存放在程序存儲器3中。
現(xiàn)在,參照表示程序存儲器3的內(nèi)部安排的圖3著重說明這種裝置的工作。
參照圖3,可以認為應用命令1至4是處理器CPU1用的解釋程序型命令,而基本命令1至4是處理器BPU2用的機器語言命令。
先是處理器CPU1工作,它按照箭頭A所示的次序從程序存儲器3中依次讀出應用命令1和2。處理器CPU1解釋并執(zhí)行這些命令。
下一步,CPU1讀在地址X1處的基本命令1(箭頭B)并解釋這一命令。如果處理器CPU1判斷這是一條BPU2的命令,就把基本命令1在程序存儲器3中的地址X1通過控制線L發(fā)送給BPU2,同時啟動處理器BPU2。
結(jié)果,處理器BPU2獲得了信息總線b的使用權(quán),并且根據(jù)從CPU1處接收到的程序存儲器3內(nèi)的地址X1按箭頭C所示的方向執(zhí)行基本命令1至4。
這時,BPU2不像先有技術(shù)裝置那樣通過CPU1接收基本命令,而是由它自己從程序存儲器3中直接讀取基本命令1至4。
基本命令是處理器BPU2所固有的指令,所以處理器BPU2執(zhí)行這些命令時不必經(jīng)過解釋。
接著,處理器BPU2在地址X2處讀到應用命令3并判斷這條命令應該由CPU1執(zhí)行(箭頭D)。處理器BPU2同樣也通過控制線L把應用命令3在程序存儲器中的地址X2發(fā)送給CPU1,并啟動CPU1。
由于這一步驟,處理器CPU1又獲得了信息總線b的使用權(quán),然后根據(jù)地址X2從程序存儲器3中讀出并執(zhí)行該操作(箭頭E)。
這樣,處理器CPU1和BPU2通過控制線L發(fā)送和接收啟動信號和程序存儲器的地址并交替地工作。尤其是BPU2不通過CPU1而是直接從程序存儲器3讀取命令,因此能夠進行高速處理。
如上所述,處理器BPU2在執(zhí)行基本命令時不需解釋性操作,因此這段時間可忽略不計。
下面翻到圖4,該圖表示根據(jù)本發(fā)明制作的可編程控制器的另一個實施例。在該實施例中,CPU1通過一個第一信息總線b1連到BPU2,而BPU2接著又通過第二信息總線b2連到程序存儲器3。
處理器BPU2包含一個連到在程序存儲器3一側(cè)的信息總線b2上的程序命令送出電路22,以及一個存著一條對CPU1而言代表“不執(zhí)行”的偽指令的偽指令產(chǎn)生電路23。程序命令送出電路22還包括一個用來選擇程序命令讀入電路21或偽指令產(chǎn)生電路23的切換電路24。
類似于圖2所示的實施例,在本實施例中程序存儲器3也存放著解釋程序型命令和BPU2的基本命令。
根據(jù)本發(fā)明如此制作的裝置的運行過程將參照圖5(a)和5(b)加以說明。
圖5(a)表示由CPU1執(zhí)行命令時的情況。
處理器BPU2判斷在地址Y1處讀得的命令1應歸于CPU1并且在專用處理器2內(nèi)把切換電路24轉(zhuǎn)向程序命令讀入電路21。讀出的命令1通過程序命令送出電路22從BPU2傳送到處理器CPU1,接著CPU1開始工作。
即使在CPU1工作期間程序存儲器3的讀出地址仍是由BPU2產(chǎn)生的。
轉(zhuǎn)向圖5(b),該圖表示由BPU2執(zhí)行命令時的情況。
處理器BPU2判斷在地址Y2處讀得的命令2應該由它自己執(zhí)行,于是通過切換電路24把偽指令產(chǎn)生電路23連到程序指令送出電路22。這樣,BPU2根據(jù)由它自己產(chǎn)生的讀出地址從程序存儲器3中讀得命令并執(zhí)行該命令,而根據(jù)由BPU2給出的代表“不執(zhí)行”的偽指令N,CPU1不作任何操作。
用這種方法,在CPU1和BPU2之間作平穩(wěn)的切換,使從程序存儲器3中讀出的命令能可靠地傳送到CPU1或BPU2,而不會引起時間的無效開支。
在圖4所示的例子中,處理器BPU2位于CPU1和程序存儲器3之間。然而,可以作另一種相當?shù)陌才牛窗袰PU1放在中間,并要在CPU1上安裝跟程序命令讀入電路21、程序指令送出電路22、偽指令產(chǎn)生器23和切換電路24等相應的線路。
在本例中,總是由位于中間的處理器來產(chǎn)生關(guān)于程序存儲器3的地址。所以,即使切換了要執(zhí)行命令的處理器,中間的處理器總是處在使程序推向前進的地位,因此可以忽略發(fā)送和接收關(guān)于程序存儲器3的地址所需的時間。
現(xiàn)在看圖6,在該圖所示的裝置中由CPU1這邊產(chǎn)生的地址可以送到圖4所示的實施例中的程序存儲器3去。
在本例中,處理器BPU2還包括一個把CPU1產(chǎn)生并送到信息總線b1的地址讀進來的地址讀入電路25、一個把程序存儲器3的讀出地址傳送到信息總線b2的地址傳送電路26和一個切換電路27。切換電路27用于把地址傳送電路26連到地址讀入電路25或連到一個裝在專用處理器2中的地址產(chǎn)生電路28。
下面將結(jié)合圖7(a)和7(b)詳細說明本實施例的工作。
圖7(a)表示當由CPU1執(zhí)行命令時的情況。包含在BPU2中的切換電路24連到程序命令讀入電路21,而切換電路27連到地址讀入電路25。一個由CPU1產(chǎn)生的地址Z1通過BPU2傳送到程序存儲器3,而與之相應的命令1通過BPU2傳送到CPU1。
圖7(b)表示當由BPU2執(zhí)行命令時的情況。這時,包含在BPU2中的切換電路24連到偽指令產(chǎn)生電路23,而切換電路27連到地址產(chǎn)生電路28。處理器BPU2按照由其內(nèi)部產(chǎn)生的地址Y3讀出并執(zhí)行命令2,而CPU1從BPU2處讀得偽指令N后不作任何操作。
在圖6所說明的方案中,CPU1可以訪問程序存儲器3的任何位置,這有利于執(zhí)行跳轉(zhuǎn)命令或類似的命令。
按照圖4或圖6所示的實施例,處理器CPU1和BPU2根據(jù)從程序存儲器3中讀得的命令交替地工作。特別是BPU2直接從程序存儲器3中讀出命令,因此可以進行高速的處理。
因為可以把基本命令規(guī)定為BPU2所固有的指令,在由BPU2執(zhí)行命令時不需要進行解釋,所以這段時間可以忽略不計。
在圖8中例示了根據(jù)本發(fā)明制作的可編程控制器的另一個實施例。
在該實施例中,CPU1通過信息總線b1連到第一程序存儲器區(qū)31,該區(qū)中只存放應用命令。BPU2通過信息總線b2連到第二程序存儲器區(qū)32,在該區(qū)中只存放基本命令。有一個第一輸出端口41連到信息總線b1,而第二輸出端口42連到信息總線b2。輸出端口41和42的輸出送到一個信號合成單元43,由它向CPU1和BPU2發(fā)出起動或停止工作的指令。
圖9(a)和9(b)表示出程序存儲器區(qū)31和32中的內(nèi)容。
程序存儲器區(qū)31用于存放應用命令1到5以及一條通知BPU2開始工作的應用命令OUT,而在程序存儲器區(qū)32中存放了基本命令1至4以及一條通知CPU1開始工作的基本命令OUT。
下面將著重說明本實施例的工作過程。
一開始,假定處理器CPU1工作著。
這時,信號合成單元43向CPU1發(fā)出一個運行指令。而向BPU2發(fā)出一個停止運行的指令。
處理器CPU1依次從程序存儲器區(qū)31讀出應用命令1和2并執(zhí)行這些命令。接著,CPU1讀得一條向BPU2發(fā)出運行指令的應用命令OUT并把這條命令傳送到輸出端口41。
信號合成單元43從輸出端口41作一讀出并識別出應用命令OUT,這時CPU1接收到一個停止運行的指令而給BPU2一個開始運行的指令。
結(jié)果,BPU2啟動,從程序存儲器區(qū)32讀出一條基本命令,然后執(zhí)行之。執(zhí)行了基本命令2之后,又讀出基本命令OUT?;久頞UT被傳送到輸出端口42。
信號合成單元43從輸出端口42讀出并識別出基本命令OUT。然后,信號合成單元43向BPU2發(fā)出一個停止運行的指令并向CPU1發(fā)出一個開始運行的指令。
于是,CPU1恢復運行。
這樣,信號合成單元43對CPU1和BPU2進行平穩(wěn)的切換。
圖10(a)和10(b)一起表示一個基本上跟圖8所示的實施例類似的例子,其中輸出端口41和42以及信號合成單元43一起連到一個信息總線b。
在這個例子中,程序存儲器3的結(jié)構(gòu)為圖10(b)所示,其中預先設置了一個只存放應用命令的區(qū)段A1和一個只存放基本命令的區(qū)段A2。
這一實施例的工作過程跟圖8所示的裝置的工作過程完全一樣。
如上所述,根據(jù)從圖8所示的實施例中的程序存儲器區(qū)31和32或者從圖10所示的實施例中的程序存儲器內(nèi)的區(qū)段A1和A2讀出的命令。,處理器CPU1和BPU2交替地工作。特別是,BPU2從其中直接讀出專用的命令,因此可以進行高速的處理。
因為基本命令是BPU2所固有的命令,在由BPU2執(zhí)行命令的時候不需要進行解釋,所以這段時間可以忽略不計。
根據(jù)本發(fā)明的上面所述部分,圖11給出了一個用各種線路實際制成的可編程控制器的例子。
參照圖11,在一塊CPU板100中,CPU1、BPU2和程序存儲器3都連到信息總線b。更具體地說,CPU1是一個諸如MC68000或類似型號的微處理器,用以從總體上控制CPU板100。微處理器CPU1跟BPU2并行地放置,都連到信息總線b,CPU1用于執(zhí)行順序應用命令。CPU門陣列5是一個控制定時信號輸出的組件,使CPU1能夠高效率地執(zhí)行命令。
BPU2由一個門陣列構(gòu)成,用來高速處理可認為是1位處理命令的順序基本命令,BPU2通過一個命令總線(沒有畫出)直接連到程序存儲器(RAM128KB),后者存放諸如梯形程序之類的順序控制程序。
信息總線b包括一個地址總線,一個數(shù)據(jù)總線和一個控制總線。
由CPU1執(zhí)行的控制整個CPU板的各種命令存放在一個ROM(256KB)6中。一個數(shù)據(jù)存儲器(RAM64KB)7是CPU1的工作區(qū),其中還存放一個以后將要提及的基本程序。為連接到各I/O板C1和C2的I/O總線bb設置了一個I/O接口(I/F)8。雖然在圖中只連了兩塊板,實際上I/O板的數(shù)目可隨系統(tǒng)的組成而增加。
連到信息總線b上的還有一個具有定時器功能的實時時鐘產(chǎn)生單元9、一個用于通訊的通訊緩沖器(RAM32KB)10以及一個連接通訊緩沖器10并作為對主機總線B的接口的主機接口11。此外,還有一個跟編程工具通訊用的RS232C端口。
有數(shù)個I/O板連到I/O總線bb,這些I/O板分為兩類,即通用寄存器/接口型I/O板C1和包含一個微處理器的命令/接口型I/O板C2,后者用來進行通訊以把命令發(fā)送給主可編程控制器及從它那里接收命令。
寄存器/接口型I/O板C1主要由一個面對總線bb的接口C11和一個面對外部觸點的接口C12組成。帶有微處理器的I/O板C2由一個面對總線bb的接口C21、一個微處理器C22(例如8位CPU)、一個數(shù)據(jù)存儲器C23(如RAM8KB)以及一個面對外部的接口C24組成。
下面將說明此CPU板100的特點。
它在結(jié)構(gòu)方面的特點在于BPU2不是通過信息總線b而只是通過命令總線(未畫出)對程序存儲器3進行直接訪問。下面按照圖12和13說明CPU板100的工作過程。
在圖12中,作為順序控制程序的一個例子畫出了一個梯形程序圖。圖13表示跟該梯形程序相應的一串程序命令。
在順序控制開始的時候,CPU1啟動BPU2,BPU2又從程序存儲器3中讀出一串程序命令,然后執(zhí)行一條規(guī)定為順序基本命令的加載命令“LD”。
接著,BPU2執(zhí)行一條AND命令、一條OR命令、一條OUT命令和一條LD命令。如果讀出的程序命令是應由CPU1執(zhí)行的應用命令(1),CPU1就從BPU2那里取過控制執(zhí)行權(quán),包括占用地址總線和數(shù)據(jù)總線的權(quán)力。然后,由CPU1執(zhí)行應用命令(1)。當處理完應用命令(1)后,CPU1通知BPU2執(zhí)行完畢,于是BPU2又讀出下一條命令。如果下一個應用命令(2)仍應由CPU1執(zhí)行,BPU2再一次把執(zhí)行權(quán)交給CPU1。
BPU2將要讀的下一條程序命令是加載命令“LD”,于是由BPU2自己執(zhí)行這一命令。
如上所述,總是由執(zhí)行順序基本命令的BPU2來讀一串程序命令。如果所讀出的命令屬于應由CPU1執(zhí)行的順序應用命令,CPU1就從BPU2那里接過控制執(zhí)行權(quán)。在這種情況下,因為在程序命令串中多半是順序基本命令,這樣就提高了由BPU2處理的速度。CPU1只在執(zhí)行完指令后把結(jié)束信號送回給BPU2。
如果BPU2讀得的程序命令是一個在系統(tǒng)中沒有定義的錯誤命令,預先規(guī)定BPU2向CPU1提供一個和該錯誤命令的形式相當?shù)膫沃噶睢TO計這條偽指令時已注意到不致由于CPU1照原樣執(zhí)行錯誤命令而對系統(tǒng)造成不利的影響。當CPU1這樣地開始進行順序控制時,BPU2從程序存儲器3讀出程序命令并開始執(zhí)行之。此后,BPU2直接從程序存儲器3讀得程序命令,因此CPU1不必逐條地讀出程序命令及確定控制執(zhí)行權(quán)。
在圖14中表示可編程控制器的一個例子,它包括CPU板100和數(shù)個I/O板,它適用于工廠自動化領域。
在圖14所示的系統(tǒng)中,一個可編程控制器U1控制一個機械零件加工系統(tǒng)S1,而另一個可編程控制器U2通過對一個機械零件裝配系統(tǒng)S2輸入或輸出信號對其進行控制??删幊炭刂破鱑1和U2通過總線B跟一個帶有打印機P的桌上計算機DTC通訊,從而可將系統(tǒng)的狀況通知操作員。要注意,桌上計算機DTC可根據(jù)情況通過一通訊線A由一臺中型或大型主機MC實行管理。
具體地說,可編程控制器U1和U2對系統(tǒng)S1和S2進行各種順序控制操作,例如觸點I/O過程,馬達驅(qū)動/停止過程,一個零件定位過程和電燈點亮/熄滅過程等。
下面將著重說明可編程控制器U1的工作。
可編程控制器U1包括圖11所示的CPU板100和插在單元內(nèi)部插槽中的一些I/O板C1和C2,它們都連到一個總線(I/O總線bb)。此外還有一個電源板PS和一個參與跟其他可編程控制器U2通訊的擴展板EX。
基于這種結(jié)構(gòu),一個跟機械零件加工系統(tǒng)S1相配的順序控制程序加載到可編程控制器U1的CPU板100中,由其根據(jù)從I/O板給出的信息執(zhí)行一順序算術(shù)運算。各控制信號也通過I/O板傳送到機械零件加工系統(tǒng)S1,由S1執(zhí)行一個所要求的順序操作。
上述順序控制程序,即本例中的一個梯形程序是在一個編程工具即一個桌上計算機上以屏幕編輯的方式編成并傳送到CPU板100中去。
可編程控制器U2有跟可編程控制器U1差不多相同的結(jié)構(gòu)和工作方式。
下面,較詳細地說明在CPU板100中的程序處理和在I/O板方面的處理情況。
CPU1執(zhí)行順序控制,同時執(zhí)行一些典型的操作,例如跟主機的多個數(shù)據(jù)的通訊、通用的算術(shù)運算、信息處理以及控制操作等。用基本語言建立了一個基本程序。下面將說明執(zhí)行基本程序和執(zhí)行順序控制程序之間的關(guān)系。
圖15為一個表示順序控制進程SQ和基本進程BAS作并行運行的原理圖。
順序控制進程SQ是要執(zhí)行圖12和13所示的一串程序命令,而基本進程BAS跟一個前面已提及的由用戶任意建立的數(shù)據(jù)讀出程序或者跟一個基本程序(如通訊程序)有關(guān)。一個執(zhí)行權(quán)切換處理單元ES、一個定時器T和一個任務調(diào)度程序TS的功能在CPU板100內(nèi)由軟件設定。任務調(diào)度程序的功能是確定基本程序中的幾個進程的執(zhí)行優(yōu)先級。然而,這種功能跟本發(fā)明的工作沒有直接關(guān)系。通常有幾百甚至幾千個順序控制程序命令串,執(zhí)行一個循環(huán)所需要的時間隨所控制的系統(tǒng)的組態(tài)不同而有很大差別,可達幾十ms或幾百ms。
現(xiàn)在假設已有一個系統(tǒng),其中在定時器T內(nèi)預置了10ms。
順序控制進程SQ的第一步是執(zhí)行一條加載命令“LD”。接著,執(zhí)行一條“與”命令AND、一條“或”命令OR和一條輸出命令OUT,這時10ms的時間過了。于是,假定一個“時間已到”信號作為一中斷信號從定時器T發(fā)送到執(zhí)行權(quán)切換控制單元ES。CPU1輸入這個中斷信號,但這時控制執(zhí)行權(quán)仍舊歸BPU2所有。因此,CPU1不能響應這個“時間已到”中斷。
順序控制進程繼續(xù)往前走,BPU2執(zhí)行到加載命令“LD”。下面,一直到控制執(zhí)行權(quán)轉(zhuǎn)給CPU1并且開始執(zhí)行應用命令(1)后,CPU1才接收一個10ms的“時間已到”中斷信號。于是,執(zhí)行權(quán)切換處理單元ES把交由CPU1執(zhí)行的進程從順序控制進程SQ轉(zhuǎn)為基本進程BAS,CPU1開始按照任務調(diào)度程序TS的調(diào)度開始處理基本程序BAS。
這時,順序控制進程SQ暫停執(zhí)行。
此后,定時器T又進入“時間已到”狀態(tài),并發(fā)出一個10ms中斷信號。這時,在CPU1內(nèi)的執(zhí)行權(quán)切換處理單元ES把基本進程的當前狀態(tài)暫時保存在數(shù)據(jù)存儲器7中,并重新恢復原來暫停的順序控制進程SQ的運行。
當順序控制進程SQ完成時,不管10ms時間是否已到,順序控制進程SQ立即通知執(zhí)行權(quán)切換處理單元ES進程已結(jié)束,CPU1就開始基本進程BAS。
如上所述,在運行時,順序控制進程SQ和基本進程BAS之間每10ms切換一次,這樣,從外面看來,似乎順序控制進程SQ和基本進程BAS是同時執(zhí)行的。這樣,多進程工作成為可行的。
注意,在定時器T中設置的時間并不只限于10ms,而是可以根據(jù)系統(tǒng)的組態(tài)任意地設置。
另一方面,某些系統(tǒng)結(jié)構(gòu)并不需要并行運行順序控制進程和基本進程。在一些情況下,根據(jù)系統(tǒng)的變動,只要運行順序控制進程或運行基本進程。在這種場合,前述的CPU板100中包含了一個執(zhí)行圖16所示的流程圖的程序,相應的做法如下。
在打開電源后,就做自檢,然后檢查是否已從主機方面指定了進程所用的語言。如果所用的語言是一順序語言,就在數(shù)據(jù)存儲器7中建立一個處理順序語言所必須的系統(tǒng)表。如果指定了基本語言,則在數(shù)據(jù)存儲器7中建立一個處理基本語言所必須的系統(tǒng)表。如果順序語言和基本語言都被指定,則在數(shù)據(jù)存儲器7中建立處理順序語言和基本語言所必須的系統(tǒng)表。
這樣,使程序建立相應于所指定的語言的系統(tǒng)表,這種方法便于從主機(例如一個桌上計算機)方面指定進程語言。
參看圖17,下面將著重說明設置在CPU板100中并且能夠適應多種類型I/O板的標準I/O驅(qū)動程序。
在CPU板100中的操作系統(tǒng)OS從一個用戶程序UP(例如裝在CPU板100中的一個基本程序)接收一個對I/O板的訪問請求a1或者從I/O板接收一個對CPU板100的中斷請求a2。從用戶程序UP發(fā)出的訪問請求a1啟動一個I/O請求接收過程(1),而對CPU板100的中斷請求a2啟動一個中斷請求接收過程(2)。
根據(jù)本發(fā)明,標準I/O驅(qū)動程序SD在系統(tǒng)啟動的時候?qū)τ诟鱾€插在相應插槽中的I/O板分別產(chǎn)生過程定義表TBL1、TBL2、…、TBLn。當發(fā)生I/O請求接收過程(1)或中斷請求接收過程(2)時,參照這些過程定義表TBL開始準備訪問。
當啟動這過程時,先判斷所要訪問的I/O板是屬于寄存器/接口型還是命令/接口型的,然后相應地執(zhí)行一個主處理過程。寄存器/接口型主處理過程和命令/接口型主處理過程的內(nèi)容跟常規(guī)的處理過程的內(nèi)容是一樣的。圖11中所示的普通I/O板C1可以作為寄存器/接口型I/O板的代表,而圖11中所示的帶有一個微處理器以發(fā)送和接收命令的I/O板C2可以作為命令/接口型I/O板的代表。
I/O請求接收過程(1)和中斷請求接收過程(2)的公共操作被歸入一個公共處理程序,無論I/O板的接口屬于什么類型都執(zhí)行這一公共處理程序。此外,還為需要一個跟標準過程不同的處理過程的I/O板準備了一個特殊處理程序。在啟動時從I/O板作向上的加載,把這特殊處理程序跟標準I/O驅(qū)動程序連接起來。在系統(tǒng)啟動時,這一特殊處理程序的地址已被設置在過程定義表TBL中了。
下面將參照圖18說明生成過程定義表TBL的方法。
當?shù)谝淮螆?zhí)行CPU板100的I/O請求接收過程時,讀入I/O板的各種信息和板的代號,從而對各個板分別產(chǎn)生過程定義表TBL。
首先,從I/O板來的多個信息中作為參數(shù)確定通道的數(shù)目(端口數(shù))及是否要作輸出。
如果所述I/O板屬于命令/接口型的,則在表中設置各命令寄存器的地址。如果需要特殊處理,則在表中設置特殊處理程序的地址。
如果I/O板屬于寄存器/接口型的,則在表中設置各寄存器的地址。
最后,如果表已建立起來,則相應的標幟就被置為ON,以便執(zhí)行多種請求過程。
對于系統(tǒng)中所有各I/O板都進行了上述操作后,在標準I/O驅(qū)動程序SD中的各過程定義表也就設置好了。
下面將結(jié)合圖19的流程圖說明怎樣進入已建立了過程定義表的標準I/O驅(qū)動程序SD。
一啟動訪問,即數(shù)據(jù)傳輸?shù)臏蕚溥^程,CPU板100的標準I/O驅(qū)動程序SD就查閱所涉及的I/O板的過程定義表TBL,核查該I/O板的通道數(shù)(端口數(shù))及是否有輸出,再鑒別接口的類型。
如果是屬于命令/接口類型,則再查閱過程定義表TBL得到一個輸出緩沖器地址,再進行數(shù)據(jù)變換。把要輸出的數(shù)據(jù)送入輸出緩沖器。又查閱過程定義表TBL,得到一個命令寄存器的地址,把輸出命令送出。這以后就等待從I/O板發(fā)來的中斷。接收到中斷后,就立即發(fā)出一個返回狀態(tài)信號。
如果所涉及的I/O板是寄存器/接口類型的,則查閱過程定義表TBL得到輸出數(shù)據(jù)寄存器的地址,再核查它是不是一個數(shù)據(jù)I/O接口。如果是數(shù)據(jù)I/O接口,則把1-位數(shù)據(jù)轉(zhuǎn)換成全字長的數(shù)據(jù),得到屏蔽數(shù)據(jù)。然后把數(shù)據(jù)寫入到輸出數(shù)據(jù)寄存器中。這個把數(shù)據(jù)寫入輸出數(shù)據(jù)寄存器的過程是公共的。
為了準備上述標準I/O驅(qū)動程序SD,要把多個I/O板裝入系統(tǒng)中。即使這樣,仍要對每一塊I/O板生成過程定義表,并且根據(jù)過程定義表來實現(xiàn)對I/O板的訪問。這樣,不必對每塊I/O板分別提供驅(qū)動程序。只要用一個標準I/O驅(qū)動程序就可以承擔對所有I/O板的訪問而不會引起性能的變壞。只要有一個標準I/O驅(qū)動程序就可以使用各種I/O板,這使以后在開發(fā)I/O驅(qū)動程序方面不必再做什么工作。這種方法也減少了存放I/O驅(qū)動程序用的存儲器容量。而且,把各種I/O板的接口標準化為寄存器型和命令型兩種,這樣用戶就可以隨意地設計I/O板并把它納入整個系統(tǒng)。
下面將參照圖20和21說明從硬件方面把數(shù)據(jù)傳送到I/O板的方法,這些I/O板通過I/O總線bb連到CPU板100。
參看框圖11,為CPU板100對I/O總線bb的I/O接口8以及I/O板C1和C2的接口C11和C12分別配備了選通信號產(chǎn)生裝置,在出現(xiàn)數(shù)據(jù)傳輸請求時它們在I/O總線bb的控制線上產(chǎn)生選通信號STB*。具體地說,在用門陣列組成的I/O接口8和接口C11和C12中增設了一些邏輯部件,它們和數(shù)據(jù)傳輸請求相結(jié)合每個傳輸幀向I/O總線bb發(fā)送選通信號STB*。
時序圖20表示I/O板響應CPU板100的數(shù)據(jù)傳輸請求把數(shù)據(jù)傳送給CPU板100的情況。
當從CPU板100提出數(shù)據(jù)傳輸請求時,CPU板100向I/O總線bb發(fā)送一個控制幀F(xiàn)φ中給定了各個字節(jié)使能位,這些字節(jié)使能位根據(jù)傳輸方式位(標識是讀還是寫操作)來允許讀寫并且說明數(shù)據(jù)的長度(2或4字節(jié))和數(shù)據(jù)的類型(數(shù)據(jù)還是控制信號)??刂茙現(xiàn)O在選通信號STB*“L”的第一個躍變沿SO成為有級。
接著,CPU板100發(fā)送地址幀F(xiàn)1和F2,它們各由2字節(jié)幀組成,以保證256KB的地址空間。這些地址幀F(xiàn)1和F2各在選通信號STB*“L”的最近一次躍變沿S1和S2時成為有效。
直到此時為止的T1期間包括了從CPU板100方面所做的操作。
在接收到幀F(xiàn)0、F1和F2后,I/O板判斷在T1期間內(nèi)它自己是否被選中。如果被選中了,I/O板就執(zhí)行一個數(shù)據(jù)傳輸準備過程。
被選中的I/O板在T3期間向I/O總線bb發(fā)送數(shù)據(jù)幀F(xiàn)3和F4。在本情況中,數(shù)據(jù)為2字節(jié)的。同時,I/O板還發(fā)送選通信號STB*“L”。數(shù)據(jù)幀F(xiàn)3和F4各在選通信號STB*的最近一次躍變沿S3和S4時成為有效。
最后,I/O板跟選通信號STB*“L”一起發(fā)送一個狀態(tài)幀F(xiàn)5。一字節(jié)的狀態(tài)幀F(xiàn)5可以看作是所述I/O板的內(nèi)部狀態(tài)信號,它用來表示各種狀態(tài),例如數(shù)據(jù)正常傳送、錯誤狀態(tài)和板上故障狀態(tài)等。
注意,幀信號FRM*以其最后一次躍變沿表示第一幀,而以其第一個躍變沿表示最后一幀,幀信號是用來檢測成幀中的錯誤。在數(shù)據(jù)傳輸周期內(nèi),一個數(shù)據(jù)方向指定信號DDIR*在其為“H”的時候表示一幀從CPU板100向I/O板一邊的傳輸,而在其為“L”的時候表示一幀從I/O板向CPU板的傳輸。信號FRM*和DDIR*都發(fā)送到I/O總線bb的控制線上。
時序圖21表示從CPU板100向I/O板傳送數(shù)據(jù)的情況。
在T4期間從CPU板100輸出控制幀F(xiàn)0、地址幀F(xiàn)1和F2以及數(shù)據(jù)幀F(xiàn)3和F4,同時還有選通信號STB*“L”。當I/O板在T5期間完成了所要求的操作后,I/O板在T6期間送回一個狀態(tài)幀F(xiàn)5和選通信號STB*“L”。
根據(jù)上面結(jié)合圖20和21說明的數(shù)據(jù)傳輸方式,CPU板100或I/O板在每次傳送各幀時也發(fā)送選通信號STB*“L”,并以此使相關(guān)的各幀成為有效。因此,各幀是以同步的方式傳送的。在圖20的情況中,從整個數(shù)據(jù)傳輸周期來看,T1和T3期間過程的傳送是異步的。在圖21的情況中,T4和T6期間過程的傳送也是異步的。這樣,就可以實現(xiàn)同步傳送方法和異步傳送方法的混合。
圖22表示一個記錄可編程控制器的故障歷史的功能??删幊炭刂破靼ㄒ恍┊惓z測電路,例如一個檢測電源是否被切斷的電源斷路檢測電路21、一個檢測內(nèi)部溫度異常用的高溫異常檢測電路22以及一個檢測在可編程控制器內(nèi)執(zhí)行的軟件失控的軟件異常檢測電路23等。如果這些異常檢測電路中的任何一個產(chǎn)生一個異常檢測信號,這個檢測信號就輸入到一個中斷產(chǎn)生電路24,由它在CPU1中產(chǎn)生一個中斷。
接收了中斷信號后,CPU1從正常過程25進入一個發(fā)生異常中斷處理過程26。
另一方面,CPU1中有一個定時器TT,它在發(fā)生異常中斷處理過程26開始時把引起的異常的類型跟異常出現(xiàn)的時刻聯(lián)系起來。CPU1將發(fā)生的異常按時間順序排隊,而一個輔助存儲單元27以文件的形式記錄這些異常情況。輔助存儲單元27還牽涉到使用數(shù)據(jù)存儲器7。
如果此后從主機方面提出要求,CPU1就開始一個異常歷史讀出過程28,讀出輔助存儲單元27的內(nèi)容并把它們傳送到主機去。這種安排使可以用主機一邊的CRT顯示單元和一個打印機以如圖23所示的格式把異常發(fā)生的條件輸出到外界來。它也便于分析所產(chǎn)生的異常的詳細情況、錯誤發(fā)生的時間,并采取相應的措施。
接著,我們將說明一種在本發(fā)明的可編程控制器中確定在執(zhí)行梯形程序期間出現(xiàn)錯誤的一梯級工序或者一想要找的梯級工序的方法。
可編程控制器通過如RS232C或RS422跟一個編程工具相連。如圖24所示,在梯形程序的編寫格式中常常把各種注解加到相應的梯級工序去。具體地說,在梯形程序中,第一步先寫上程序名稱“TEST”,然后是標題“試驗工序”、各梯級工序的步驟號、相應于數(shù)個梯級工序的工序注解“緊急情況停機工序”以及相應于該梯級工序每一行的一些次級注解“運行條件、運行狀態(tài)、……”。
在可編程控制器中存放著上述執(zhí)行控制進程的梯形程序。然而,如果在順序控制進程期間發(fā)生了異常,編程工具要讀出程序中所有各步并把它們在CRT上顯示出來以便確定故障的位置。但另一方面,一個梯形程序可能有幾千步,而CRT上顯示的圖象只有幾十行,很難從CRT的顯示中找出所要的梯級工序。通常,要打印出所有的梯級工序,并把程序清單帶到現(xiàn)場以確定跟程序中的梯級工序相應的實際電路。然而,這種確定梯級工序的方法實用性很差。
在根據(jù)本發(fā)明制作的可編程控制器中,用下述方法來確定。
圖25為一種裝置的框圖,其中有一個編程工具連到可編程控制器的CPU板100。為了簡單起見,在CPU板100中只畫了CPU1、一個RS232C口10、RAM7以及一個信息總線b。連到CPU板100的RS232C端口上去的編程工具包括一個顯示單元PTCRT、一個鍵盤PTKB、一個主存儲器PTM1以及一個輔助存儲器PTM2。
如前所述,在編程工具中按照控制順序編輯各梯級工序,編輯的結(jié)果暫時存放在一個順序控制程序映象文件IMF中。所產(chǎn)生的梯形程序又通過RS232口10送回到RAM7。這時,一個把各梯級工序跟各種注解對應起來的工序/注解對照表跟梯形程序一起送回。工序/注解對照表CCT用來建立各工序中的注解位置(步驟號)跟在后面將要提及的注解文件CF中的注解位置的對應關(guān)系。借助于這種工序/注解對照表CCT,即使程序修改了,仍能保持梯級工序及其注解之間的對應關(guān)系。
用這種方法,CPU1裝入了順序控制程序SQP和工序/注解對照表CCT。
在編程工具的輔助存儲器PTM2中存放了一個注解文件CF,梯形工序的步驟號和加到該工序的注解的內(nèi)容彼此對應起來并存入注解文件CF。
圖26示出了注解文件CF的內(nèi)容。圖27表示工序/注解對照表的內(nèi)容。注解文件CF可以不放在編程工具中,而放在CPU板的RAM7中,此外,還可以增加一個把步驟號跟次級注解對應的注解文件。
現(xiàn)在,參照圖28說明在編程工具上找出梯級工序的特定位置的過程。編程工具先讀入注解文件CF和工序/注解對照表CCT,并做好事先準備以在CRT顯示單元上依次顯示圖S1、S2、S3和S4。
在編程工具的CRT顯示單元上顯示的第一個圖是一個工序監(jiān)督菜單S1,從該圖中選取一“工序注解顯示”S2。于是,在CRT上以列表形式顯示一個工序注解清單。再從工序注解清單顯示S2中選擇一個所要的注解顯示S3,然后,包括在該工序注解中的所有次級注解都顯示出來。若按照次級注解選取某一工序顯示圖S4,則跟該次級注解相對應的梯級工序就被顯示出來。
也就是說,為了從如圖24所示的梯形程序中指定某一梯級工序,要顯示一個工序注解的清單,從中選出所要的工序注解,再指定跟包括在該工序注解中某一次級注解相對應的梯級工序,就能把某一特定的梯級工序在CRT上顯示出來。
注意,工序顯示圖S4也可以從工序監(jiān)督菜單S1或工序注解清單S2中直接選出。對各種顯示圖都可以作頁面更新上卷或頁面更新監(jiān)督。
如上所述,在根據(jù)本發(fā)明制作的可編程控制器中,設置了注解文件和工序/注解對照表并可被讀出。附加到各梯級工序的各種注解跟各梯級工序相聯(lián)系,以備在CRT上作分級顯示。因此,可以立即檢測到一個要找的梯級工序。
上述方案在調(diào)整工序或發(fā)生錯誤時容易找到所要的梯級工序。下面將著重說明生成梯形程序方法的改進以及在調(diào)試過程中的操作(的改進)。
通常,采用梯形程序的順序控制進程由一個處理例程執(zhí)行,后者包括一個公共過程(如自檢)、一個對I/O板上的I/O寄存器進行刷新的過程、已生成的梯形程序的執(zhí)行以及對立設備的服務過程。
根據(jù)本發(fā)明制作的可編程控制器,如圖29所示,在建立順序控制程序時還沒有安裝I/O板,就在公共過程之后不再執(zhí)行和調(diào)試I/O刷新過程。這樣,就可以在沒有I/O板的情況下按照從一個如編程工具這類的調(diào)試設備發(fā)出的指令進行調(diào)試。
原理圖30示出在根據(jù)本發(fā)明制作的可編程控制器中梯形程序的編程功能。圖中的各方框表示根據(jù)本發(fā)明制作的可編程控制器的各軟件功能塊。
圖30中所示的多個功能塊的工作方式如下。
工序編輯功能201用來編輯梯級工序各個工序部件,在設計梯級工序時程序員用這種功能以跟設備名類似的信號名的形式描述各工序部件的地址。信號定義功能202用來建立一個表格以確定各工序部件的地址和信號名的先期對應關(guān)系。編釋功能203參照梯級工序中的信號名、由信號定義功能202給出的與之相應的地址以及從地址自動產(chǎn)生功能204給出的信號,把一程序以執(zhí)行文件的形式發(fā)送到順序處理單元205。地址自動產(chǎn)生功能204自動地把詳盡的地址指配給由信號定義功能202給出的各信號名。
下面將實際地說明用這些功能生成梯形程序的過程。
編程工具和工序編輯功能201一起給出了如圖31所示的一個梯級工序。這時該工序的各個部件,如一個繼電器、一個輸出單元等以一些信號名如SW1和COIL1等表示出來。而在信號定義功能202中,各信號名SW1、COIL1、COIL2、IRL1、TIM1、CNT1和REG1等先被對應到地址X、X、Y、Y、I、T、C和D等,其中符號X為代表一個輸入的地址、Y是輸出地址、I是一個內(nèi)部繼電器地址、T代表一個定時器、C代表一個計數(shù)器、D代表一個數(shù)據(jù)寄存器。
詳盡的地址不是在編譯功能203被指配給梯級工序的各個部件,而是在地址自動產(chǎn)生功能204中完成的。具體地說,如果為工序部件SW1設置的不是詳盡的地址Xxxx而只是一般的地址X,就把詳盡的地址Xoo1指配給它。這時,詳盡地址的號碼是從加在梯級工序部件的信號名后面的最小號碼開始依以增加的。其結(jié)果示于圖33中。即地址Xoo1指配給信號名SW1,地址Xoo2指配給信號名SW2。
由編譯功能得到執(zhí)行文件格式的程序,雖然這程序的進程是在順序控制單元中完成的,但它的調(diào)試可以用來裝上I/O板的CPU板100來實現(xiàn),因為在如圖29所示的處理程序中,如果在調(diào)試階段沒有裝上I/O板,則I/O刷新過程可以跳過不做。以后再根據(jù)調(diào)試的結(jié)果在有必要時把詳盡的地址加進去。
因此,可以自動地把信號名跟詳盡的地址對應起來,不必擔心個別的梯級工序部件的地址,這又便于設計順序控制程序。總之,沒有I/O板就能夠進行調(diào)試,而且在跟順序控制程序相應的繼電器板等設計完畢之前就能夠考驗梯形程序的運行。
根據(jù)本發(fā)明制作的順序控制器按下面要說明的方法按各步驟把程序分解成一些程序塊來對有幾千個步驟的梯形流程圖進行編程。圖34(a)到34(c)示出了編程的方法。
圖34(a)到34(c)表示梯形流程圖的一部分,即步驟1、2和5。
起始命令“ACTPROG1.2”和停止命令“INACTPROG1.1”是本發(fā)明中新定義的命令,它們被放在步驟1的最后一小步處。這樣,當步驟1的控制運行走到這最后一小步時,代表步驟2的梯形程序塊PROG1.2就啟動,而代表步驟1的梯形程序塊PROG1.1結(jié)束,這樣就進入步驟2的控制運行。
在梯形程序塊PROG1.2的最后一小步放了一個梯形程序塊PROG1.2的停止命令“INACTPROG1.2”和步驟3到5的引動命令“ACTPROG1.3”、“ACTPROG2.1”和“ACTPROG3.1”。步驟3到5將同時起動。
在步驟5中還監(jiān)視著步驟3和4的結(jié)束。當檢測到步驟3、4和5都停止了,就響應停止命令“INACTPROG3.1”和“ACTPROG1.1”使運行返回到步驟1,即順序控制進程的開始步驟。
這樣,定義了梯形程序的起始命令“ACT”和停止命令“INACT”,因此可以把順序控制程序的幾千條命令分割成幾個程序塊并行地進行程序編制。此外,各擦形程序可以彼此通知起動或停止,這樣就能夠把分割成幾個程序塊的梯形程序裝載到數(shù)個CPU板上實現(xiàn)順序控制。
在圖35中表示出一個例子,其中裝載著基本程序進程的CPU板101和只裝載梯形程序進程的CPU板102到104結(jié)合起來控制著在實際控制線L上的控制對象M。
注意,梯形程序LD1和LD2裝在連著一組I/O板C10的CPU板102中;梯形程序LD3到LD5裝在連著一組I/O板C20的CPU板103中;以及梯形程序LD6裝在連著一組I/O板C30的CPU板104中。
圖36表示裝在CPU板101中的基本程序的一個例子。
梯形程序LD1到LD6可以看作是對于控制對象M的一系列順序控制程序,這些梯形程序有前述的塊結(jié)構(gòu)并且被獨立地編制。
CPU板101中的基本程序的功能是對各個梯形程序發(fā)出起動命令和從它們接收結(jié)束命令。
在開始運行時,CPU板101繼裝在CPU板102中的梯形程序LD1之后啟動梯形程序LD2。在這些程序結(jié)束之后,又根據(jù)當時順序控制進程的結(jié)果執(zhí)行梯形程序LD3或LD4。在程序LD3或LD4完成后,基本程序立即并行地啟動裝在CPU板103中的梯形程序LD5和裝在CPU板104中的梯形程序LD6。
根據(jù)所例示的系統(tǒng),在順序控制程序中一系列的順序控制操作被分割成一些程序塊,這種順序控制程序被數(shù)個可編程控制器處理和執(zhí)行。這樣,就能夠做到高效率的順序控制。
如上所述,根據(jù)本發(fā)明制作的可編程控制器能夠改善順序控制過程的速度,并且當系統(tǒng)要改動時容易重新設計。于是能實現(xiàn)具有高的處理效率的可編程控制器。
雖然在前面已經(jīng)參照各附圖詳細地說明了幾個例示的本發(fā)明的實施例,但應該理解到本發(fā)明并不僅僅嚴格地限于這些實施例。熟悉本領域技術(shù)的人可以進行各種變動和改進仍不偏離本發(fā)明的實質(zhì)和涉及范圍。
權(quán)利要求
1.一種可編程控制器,它包括一個第一處理器;一個第二處理器;一個用以存放一解釋程序型程序命令和一基本命令的程序存儲器;一個信息總線,所述第一處理器、第二處理器和所述程序存儲器通過該總結(jié)相互連接;以及一個位于所述第一處理器和第二處理器之間的控制線,所述第一處理器和第二處理器通過該控制線實現(xiàn)信號的雙向傳輸,其特征是,如果有執(zhí)行權(quán)的所述-處理器判斷所述命令應該由所述的另一處理器執(zhí)行,所述的一處理器就將所述程序命令在所述程序存儲器中的地址通過所述控制線通知所述的另一處理器并使之啟動,而應該執(zhí)行所述基本命令的所述處理器直接從所述程序存儲器中讀取所述基本命令并執(zhí)行之。
2.一種可編程控制器,它包括一個第一處理器;一個第二處理器;一個程序存儲器;一個第一信息總線,所述第一處理器通過該總線連到用以存放一解釋程序型程序命令和一基本命令的所述程序存儲器;以及一個第二信息總線,所述第二處理器通過該總線連到所述第一處理器,其中,當所述第一處理器運行時,所述第一處理器從所述程序存儲器讀取所述程序命令以便執(zhí)行該程序命令,同時也向所述第二處理器發(fā)出一個偽命令,而如果所述第一處理器判斷所述程序命令應由所述第二處理器執(zhí)行,就向第二處理器提供所述程序命令而不是所述的偽命令。
3.一種可編程控制器,它包括一個第一處理器;一個第二處理器;一個第一程序存儲器區(qū),它用以存放一由所述第一處理器執(zhí)行的程序命令和一通知所述第二處理器執(zhí)行的命令;一個第二程序存儲器區(qū),它用以存放一由所述第二處理器執(zhí)行的程序命令和一通知所述第一處理器執(zhí)行的命令;以及一個信號合成裝置,它用來輸入所述的通知所述第二處理器執(zhí)行的命令和所述的通知所述第一處理器執(zhí)行的命令,以及用來通知所述的一處理器開始運行并通知所述的另一處理器停止運行。
4.一種可編程控制器,它包括一組用于對一控制對象發(fā)送和接收多個信息的I/O板;以及一個通過所述I/O板組向所述控制對象發(fā)送控制信號的處理器板,所述處理器板包括一個控制整個系統(tǒng)并執(zhí)行在一順序控制程序和一基本程序中的部分命令的處理器,該基本程序進行通用的算術(shù)運算、信息處理或者如啟動所述順序控制程序和發(fā)出結(jié)束命令等控制操作;一個跟存放著所述順序控制程序的程序存儲器直接相連的1位處理器,它用于執(zhí)行依次從所述程序存儲器中讀出的命令并且當所述讀出的命令為應由所述處理器執(zhí)行的順序應用命令時將所述命令傳遞給所述處理器;一個暫時存放數(shù)據(jù)用的數(shù)據(jù)存儲器;一個存放一自檢程序的固定存儲器;一個參與跟主機進行通訊的通訊接口;一個把所述處理器板連到一I/O總線的I/O接口,發(fā)送和接收多個信息用的I/O板就通過該總線接入;和一個使所述處理器、所述1位處理器、所述數(shù)據(jù)存儲器、所述固定存儲器、所述通訊接口和所述I/O接口互相連接起來的內(nèi)部總線。
5.如權(quán)利要求(4)中所述的可編程控制器,其中當啟動時在所述處理器板內(nèi)裝有一個I/O驅(qū)動程序,該I/O驅(qū)動程序讀得I/O板的標識號、所述板的接口類型、通道數(shù)、命令寄存器地址和緩沖器地址或者數(shù)據(jù)寄存器地址以及當需要進行某種特殊處理時指向所述特殊處理過程的地址,以建立一個過程定義表并以表格的形式儲存起來,該I/O驅(qū)動程序還在作數(shù)據(jù)輸出處理時參考所述過程定義表。
6.如權(quán)利要求(4)中所述的可編程處理器,其中在所述處理器板和所述I/O板組內(nèi)有一些選通信號產(chǎn)生裝置;當起動一個數(shù)據(jù)傳送周期時,所述請求數(shù)據(jù)傳送的板每個傳輸幀都發(fā)出選通信號使所述有關(guān)幀成為有效;接收到所述數(shù)據(jù)傳送請求的所述板發(fā)出一個數(shù)據(jù)幀和一個狀態(tài)幀或在發(fā)出狀態(tài)幀時也發(fā)出所述選通信號;于是結(jié)束所述數(shù)據(jù)傳送周期。
7.如權(quán)利要求(4)中所述的可編程控制器,其中配備了跟異常情況的種類數(shù)相一致的異常情況檢測電路,所述處理器把異常檢測信號作為一個中斷信號來接收并將由一內(nèi)部定時器給出的時間數(shù)據(jù)和檢測到的異常情況的內(nèi)容以表格的形式儲存起來。
8.如權(quán)利要求(4)中所述的可編程控制器,其特征是在一個順序控制處理程序中的一個I/O刷新過程可以被跳過,在建立所述梯形級工序時把信號名指配給所述工序部件并且根據(jù)一個預先定好的信號名-地址對照表把信號名和地址對應起來,以及把跟所述信號名對應的詳盡地址從標有最小號碼的所述地址開始順序地賦給在編譯時還沒有指配有所述詳盡地址的所述信號名。
9.如權(quán)利要求(4)中所述的可編程控制器,其特征在于在對所述梯形程序進行編程時將一系列順序控制操作分割成一些對應于幾個步驟的程序塊,在每一所述程序塊的最后一個子步驟的所述梯級工序中設置一條用以規(guī)定接著要執(zhí)行的所述程序塊的命令和一條用以使所述本程序塊的進程停止的命令,以及按程序塊來建立和執(zhí)行所述梯形程序。
10.如權(quán)利要求(4)中所述的可編程控制器,其特征在于建立了一個注解文件和一個工序/注解對照表,該注解文件用于存放附加于以一種梯形語言形成的所述梯形程序中所述各梯級工序的注解和所述該梯級工序的步驟號使所述注解跟所述步驟號對應起來,在該工序/注解對照表中所述該梯級工序的所述步驟號跟所述注解文件中的注解號對應起來;以及由一編程工具讀出所述工序注解、所述步驟號和所述梯級工序。
11.一種用于通過周期性地切換所執(zhí)行的順序進程和各種基本進程來完成一CPU進程的可編程控制器,它包括一個設置了所述基本進程每次最大允許處理時間的定時器,它也用來計算所述順序進程每次的處理時間;以及一個執(zhí)行權(quán)切換處理單元,它用于在所述定時器中設置一個所述處理時間值以按照所述定時器的計數(shù)值來確定所述基本進程的所述處理時間并在所述順序進程和所述基本進程之間進行切換。
12.一種可編程控制器,它包括一個按照一種指定的語言運行的CPU;運行所述CPU所需要的各種部件;一種能夠從外面指定至少一種或更多的要執(zhí)行的語言的設置裝置;以及一種用以按照由所述設置手段指定的所述語言生成一個最佳執(zhí)行環(huán)境的生成裝置。
13.一種可編程控制器,它包括一個用以處理一種基本語言的處理器板;至少一個或更多的順序語言處理專用的處理器板,用以存放一個或更多的專用于所述順序語言處理的模塊式順序控制程序;以及裝備在所述順序語言處理專用的所述處理器板低端的一組I/O板,用以對一控制對象發(fā)送或接收控制信息,其特征是處理所述基本語言的所述處理器板把一啟動指令和一結(jié)束指令通知在所述順序語言處理專用的所述處理器板中的每一個所述模塊式順序控制程序。
全文摘要
包含順序控制程序的可編程控制器適于在有效地控制各工業(yè)生產(chǎn)線的工廠自動化或在控制多個工序的生產(chǎn)過程自動化領域內(nèi)高速度高效率地把信息輸入輸出到各種現(xiàn)場智能設備。為此,本發(fā)明提供了一種改進了的跟一個執(zhí)行順序控制程序的1位處理器和一個普通的處理器相聯(lián)的切換系統(tǒng)。
文檔編號G05B19/05GK1046987SQ9010232
公開日1990年11月14日 申請日期1990年4月23日 優(yōu)先權(quán)日1989年4月24日
發(fā)明者米澤正明, 長谷川圣, 河田泰紀, 松岡康二, 門脇隆 申請人:橫河電機株式會社