1 引言
在控制理論中,所謂"控制系統(tǒng)的設(shè)計(jì)"是指把負(fù)反饋控制的原理應(yīng)用到實(shí)際的計(jì)算機(jī)測(cè)控系統(tǒng)中去,不是指計(jì)算機(jī)測(cè)控系統(tǒng)的工程設(shè)計(jì)。應(yīng)用控制理論討論控制系統(tǒng)的設(shè)計(jì)問題有一個(gè)隱含的前提,就是該計(jì)算機(jī)測(cè)控系統(tǒng)已經(jīng)正常運(yùn)行,起碼也要設(shè)計(jì)就緒。關(guān)于這一點(diǎn),許多人都缺乏應(yīng)有的認(rèn)識(shí)。
于是在控制理論中,"設(shè)計(jì)控制系統(tǒng)"就是"設(shè)計(jì)控制器"。這個(gè)控制器,其實(shí)是指控制系統(tǒng)框圖中控制器方框的算式,和測(cè)控系統(tǒng)中的控制器部件含義不同。而計(jì)算機(jī)控制理論的"設(shè)計(jì)控制器"就是首先推導(dǎo)出合乎要求的控制器算式,然后按照該控制器算式編寫一段程序模塊,插入到計(jì)算機(jī)測(cè)控系統(tǒng)的運(yùn)行程序中,以便使該計(jì)算機(jī)測(cè)控系統(tǒng)在正常運(yùn)行的基礎(chǔ)上,實(shí)現(xiàn)滿意的負(fù)反饋?zhàn)詣?dòng)控制,充分發(fā)揮計(jì)算機(jī)測(cè)控系統(tǒng)的潛在能力,實(shí)現(xiàn)真正意義上的自動(dòng)控制。
2 關(guān)于G(z)與D(z)的分子分母階差的搭配
在計(jì)算機(jī)控制系統(tǒng)中,被控設(shè)備模型G(z)的分子分母階次差只有兩種(如圖1所示):(1) 同階(同拍)模型就是用當(dāng)前的控制量u(k)和以前的數(shù)據(jù),算出當(dāng)前的輸出量y(k)。(2) 差一階(一拍延遲)模型就是用前一拍的控制量u(k-1)和已有的數(shù)據(jù),算出當(dāng)前的輸出量y(k)。
沒必要建立多拍延遲的模型。例如二拍延遲設(shè)備模型:
y(k)=-a1y(k-1)-a2y(k-2)-any(k-n)+b2u(k-2)+bnu(k-n)
就是說,用前二拍的控制量u(k-2)和已有的數(shù)據(jù),算出當(dāng)前的輸出量y(k)。這意味著沒有及時(shí)利用最新情報(bào)。因?yàn)橛?jì)算機(jī)測(cè)控系統(tǒng)可以做到每個(gè)測(cè)控周期測(cè)一對(duì)數(shù)據(jù),就是說,在k時(shí)刻,已經(jīng)知道了u(k-1),為什么不利用呢?至于那些具有延遲性能的設(shè)備,也可以本著充分利用最新情報(bào)的原則,仍然建立同階或差一階的模型,盡管可能其b0,b1,b2等很小或者為0。
圖1 被控對(duì)象的二種模型
圖2 二種控制器
設(shè)計(jì)的控制器D(z)的分子分母階次差也只有兩種(如圖2所示):(1) 同階(現(xiàn)時(shí))控制器就是讀入y(k)后,馬上計(jì)算u(k)并發(fā)出,這用于計(jì)算時(shí)間遠(yuǎn)小于測(cè)控周期的情況。(2) 差一階(一步預(yù)報(bào))控制器就是發(fā)出u(k)并讀入y(k),然后計(jì)算出u(k+1)以備下一節(jié)拍發(fā)出。當(dāng)計(jì)算時(shí)間不容忽視時(shí),一定要用預(yù)報(bào)控制器。
本著利用最新情報(bào)的原則,沒有必要設(shè)計(jì)二步三步預(yù)報(bào)控制器。
于是設(shè)備模型G(z)與控制器D(z)的搭配也只有兩種(如圖3所示):(1) G(z)差一階配D(z)同階,叫"現(xiàn)時(shí)控制系統(tǒng)",這時(shí),設(shè)備在上次的控制量和已知的數(shù)據(jù)的作用下產(chǎn)生了本次輸出y(k),計(jì)算機(jī)測(cè)得y(k)之后,立即計(jì)算并發(fā)出本次的控制量u(k)。(2) G(z)同階配D(z)差一階,叫"預(yù)報(bào)控制系統(tǒng)",這時(shí),計(jì)算機(jī)把上次算好的控制量u(k)發(fā)出,立即測(cè)量設(shè)備輸出y(k)(認(rèn)為這是由于本次及以前控制量作用的結(jié)果),由此算出u(k+1)以備下次發(fā)出。這二者,在設(shè)計(jì)時(shí)千萬不要搞錯(cuò)。
不可能或沒必要設(shè)計(jì)其他類型控制。如圖4上圖的"同階-同階"搭配,是不可行的。這就是說計(jì)算機(jī)發(fā)出本次的控制量u(k),立即讀回來本次的輸出y(k),又馬上計(jì)算本次的控制量u(k),那么還能再發(fā)出嗎?這樣的運(yùn)行程序就自相矛盾了,以此編寫的程序俗稱"死循環(huán)"。
再有,如圖4下圖的"差一階-差一階"搭配,這就是說,計(jì)算機(jī)發(fā)出本次的控制量u(k)和立即讀回來本次的輸出y(k)無關(guān),讀回來的本次輸出y(k)是由上次的控制量u(k-1)和已知的數(shù)據(jù)決定的,然后根據(jù)這個(gè)y(k)計(jì)算下次的控制量u(k+1),等待下次發(fā)出。這種控制方式?jīng)]有及時(shí)利用本次的控制量u(k),所以這是不合理的,即沒有利用最新信息。
圖3 二種正確的搭配
圖4 二種錯(cuò)誤的搭配
在基于狀態(tài)方程的控制系統(tǒng)中,也存在被控對(duì)象和控制器的階差搭配問題,也只有"預(yù)報(bào)控制系統(tǒng)"和"現(xiàn)時(shí)控制系統(tǒng)"二種,其道理是一樣的。
3 控制器程序中用的算式
3.1 串聯(lián)現(xiàn)時(shí)控制器
串聯(lián)現(xiàn)時(shí)控制器的z傳遞函數(shù)(不失一般性,以三階來列寫):
然而,在程序中的算式不用z傳遞函數(shù),而用它所對(duì)應(yīng)的差分方程:
3.2 串聯(lián)預(yù)報(bào)控制器
它的輸入輸出z傳遞函數(shù)關(guān)系如下(不失一般性,以三階來列寫):
它的算式如下:
3.3 前反饋現(xiàn)時(shí)控制器
它的輸入輸出z傳遞函數(shù)關(guān)系如下(不失一般性,以二階來列寫):
它的算式如下:
3.4 前反饋預(yù)報(bào)控制器
它的輸入輸出傳遞函數(shù)關(guān)系如下(不失一般性,設(shè)為二階):
它的算式如下:
3.5 被控設(shè)備模型
在控制系統(tǒng)的實(shí)際運(yùn)行中,雖然被控設(shè)備的輸入(即控制量)是由計(jì)算機(jī)發(fā)出的,被控設(shè)備的輸出是由計(jì)算機(jī)讀入的,但是為了核實(shí)所建立的設(shè)備模型(它是控制器設(shè)計(jì)的根據(jù))是否精確,需要在每個(gè)控制節(jié)拍,用控制量u和設(shè)備模型G(z)來計(jì)算輸出y,以便與測(cè)量的輸出y比較。同樣的,程序中的算式不用z傳遞函數(shù),而用它所對(duì)應(yīng)的差分方程,就是說,應(yīng)該把
改寫為差分方程的形式:
這是同節(jié)拍的設(shè)備模型;如果是一拍延遲的設(shè)備模型,就令上式中b0=0。為了與測(cè)量的y(k)相區(qū)別,不妨稱之為yg(k)。
3.6 系統(tǒng)模型
如果在程序中還要用整個(gè)系統(tǒng)的模型H(z)和預(yù)定值r(k)來計(jì)算系統(tǒng)輸出y(k),核實(shí)控制系統(tǒng)的控制性能;那么它的算法和上述用設(shè)備模型G(z)來計(jì)算的道理一樣。為了與y(k)和yg(k)相區(qū)別,不妨稱之為yh(k)。
一個(gè)滿意的控制系統(tǒng),其y(k)、yg(k)和yh(k)應(yīng)該是相等的,或者相差在允許范圍之內(nèi),否則,就要查找原因,修改該控制系統(tǒng),或者設(shè)計(jì)成自適應(yīng)控制器。
4 編寫控制器程序要考慮的問題
控制器程序只是計(jì)算機(jī)測(cè)控系統(tǒng)的整個(gè)運(yùn)行程序的一部分而已。當(dāng)控制工程(計(jì)算機(jī)測(cè)控系統(tǒng)的建造)完工投產(chǎn)時(shí),當(dāng)然至少包含了一個(gè)運(yùn)行程序和執(zhí)行開關(guān)、調(diào)節(jié)、測(cè)量和狀態(tài)監(jiān)控等基本操作功能。編寫控制器程序就是在這樣的運(yùn)行程序的基礎(chǔ)上,用同樣的編程語言,編寫一段程序,實(shí)現(xiàn)根據(jù)控制理論設(shè)計(jì)出來的讀入y(k)和寫出u(k)關(guān)系算式(即所設(shè)計(jì)的控制器),達(dá)到良好控制或者優(yōu)化控制的目的。在控制器框圖中,往往又細(xì)分為好多的"器"(方框),其實(shí)它們只是一些相互關(guān)聯(lián)的算式或算法而已。再多的"器"和方框在程序中就是一些相互關(guān)聯(lián)的一段程序。它們可以歸納為一個(gè)大方框-"計(jì)算機(jī)系統(tǒng)",如圖5所示。
關(guān)于讀寫操作的具體化,就是根據(jù)具體測(cè)控系統(tǒng),編寫讀寫操作語句(或者子程序、函數(shù))。讀操作和寫操作,在編寫控制器程序時(shí)只需從現(xiàn)有的測(cè)控系統(tǒng)運(yùn)行程序中復(fù)制。
開關(guān)動(dòng)作是在開機(jī)、關(guān)機(jī)或者換檔時(shí)才用的,一般在控制器程序中不考慮。至于運(yùn)行狀況檢測(cè)或者定期巡檢以及中斷服務(wù)子程序,最好能包含在控制器程序中,從現(xiàn)有的運(yùn)行程序中搬過來就行了。程序暫停和終止的設(shè)定,通常也是原來的運(yùn)行程序已經(jīng)考慮過的問題。
控制器程序的"出口"條件有:(1) 連續(xù)多次,測(cè)量的輸出值y(k)和計(jì)算的輸出值相差太大。(2) 設(shè)備故障,跳到中斷服務(wù)子程序,或者由人工干預(yù)。(3) 從控制臺(tái)上由操作工發(fā)出暫停或退出的命令。(4) 工作完成,如預(yù)定時(shí)間到,或出產(chǎn)的產(chǎn)品達(dá)到預(yù)定的數(shù)量,或生產(chǎn)過程完畢。
其它要考慮的實(shí)際問題還有:(1) 反饋濾波器,即測(cè)量信號(hào)的濾波,現(xiàn)在有數(shù)字信號(hào)處理DSP軟件工具可用。(2) 對(duì)于測(cè)量"野點(diǎn)"(過分偏離回歸線的數(shù)據(jù)),用電路限幅或用程序剔除。(3) 注意"負(fù)載效應(yīng)",因?yàn)樵O(shè)備在空載時(shí)和帶各種大小負(fù)載時(shí),性能不同,數(shù)學(xué)模型也不同。(4) 注意非線性現(xiàn)象,如飽和、準(zhǔn)飽和、自振蕩等。(5) 在同一個(gè)控制系統(tǒng)中,往往根據(jù)幾種不同情況設(shè)計(jì)幾個(gè)控制器,以便在操作時(shí)"分擋選擇"。
在編寫控制器程序時(shí),根據(jù)實(shí)際情況,可能還需要考慮其它輔助操作。
5 編程思路
(1) 計(jì)算機(jī)測(cè)控系統(tǒng)運(yùn)行就緒:系統(tǒng)狀態(tài)的初始化、開機(jī)、正常運(yùn)行等。
(2) 數(shù)組設(shè)定:例如r(10000)、u(10000)、y(10000)、u1(10000)、u2(10000),其中預(yù)定值r(k)事先定好了,數(shù)組的維數(shù)由設(shè)計(jì)者根據(jù)實(shí)際情況設(shè)定,其中10000是隨意數(shù)值。
(3) 預(yù)置數(shù)據(jù)(初始化):例如for(i=0;i<n;i++),預(yù)置r(i)、u(i)、y(i)、u1(i)、u2(i)等。注意r(i)、u(i)、y(i)與r(k)、u(k)、y(k)的關(guān)系是k=i-n(n是設(shè)備階次)。
(4) 在每個(gè)控制節(jié)拍(測(cè)控周期)中,如果是現(xiàn)時(shí)控制器,編程思路:
for(i=n;i<10000;i++) 或用 while()句
用讀指令測(cè)y(k);
計(jì)算u(k);
用寫指令發(fā)出u(k);
其他計(jì)算操作和等待下一時(shí)刻;
如果是預(yù)報(bào)控制器,編程思路:
for(i=n;i<10000;i++) 或用 while()句
用寫指令發(fā)出u(k);
用讀指令測(cè)y(k);
計(jì)算u(k+1);
其他計(jì)算操作和等待下一時(shí)刻;
(5) 在每個(gè)控制節(jié)拍(測(cè)控周期)中,即在for(i=n;i<10000;i++)之內(nèi),還要做的操作有:① 用設(shè)備模型G(z)計(jì)算輸出yg(k),用系統(tǒng)模型H(z)計(jì)算輸出yh(k),以便比較,監(jiān)測(cè)控制狀況。② 控制系統(tǒng)運(yùn)行狀況的定期檢測(cè)及其處理。③ 其他控制運(yùn)行所必須的操作。④ 數(shù)組用到頭時(shí)要"周而復(fù)始",例如:設(shè)置if(k=10000-n),在數(shù)組快到頭時(shí),要把末幾個(gè)數(shù)據(jù)移到頭幾個(gè)位置去,以便數(shù)組重頭使用。⑤ 用等待函數(shù)delay(T)或wait(T),T是測(cè)控周期,單位ms,必要時(shí),還要減去計(jì)算時(shí)間。
(6) 出口或結(jié)束:見上述的"程序出口條件"。
以上所述,是從事計(jì)算機(jī)控制的人員在編寫控制器程序時(shí)必須考慮的問題。至于基于狀態(tài)方程的控制器設(shè)計(jì)與編程,讀者可以觸類旁通。