基于有限狀態(tài)機(jī)的工控系統(tǒng)軟件設(shè)計
(作者未知) 2012/1/15
摘要:通過分析工控系統(tǒng)的特性,提出采用狀態(tài)機(jī)的思想進(jìn)行工控軟件設(shè)計。詳細(xì)論述了高速狀態(tài)機(jī)的錯步問題以及控制層中狀態(tài)機(jī)的狀態(tài)劃分問題。結(jié)合具體的應(yīng)用實(shí)例,給出了基于狀態(tài)機(jī)的實(shí)現(xiàn)方法。實(shí)驗(yàn)表明,采用狀態(tài)機(jī)的設(shè)計方法有助于準(zhǔn)確描述受控對象的行為,軟件的健壯性和可靠性得到顯著提高。
關(guān)鍵詞:有限狀態(tài)機(jī);工控軟件;控制環(huán);狀態(tài)劃分
1 引言
1.1 工控軟件的一般問題
工控軟件設(shè)計可分為基于控制環(huán)和基于實(shí)時操作系統(tǒng)兩大類?刂骗h(huán)是把各個功能模塊連接成首尾相接的環(huán)狀結(jié)構(gòu)。其特點(diǎn)為任何一個功能模塊都不能出現(xiàn)死循環(huán),甚至循環(huán)次數(shù)太多的循環(huán)語句都應(yīng)避免出現(xiàn)。以保證能夠在實(shí)時意義上盡可能快地遍歷各功能模塊,從而滿足實(shí)時多任務(wù)的需求。在各功能模塊中一般用狀態(tài)機(jī)來描述模塊所處的狀態(tài)。而實(shí)時操作系統(tǒng)則可以通過一套底層機(jī)制根據(jù)優(yōu)先級和各任務(wù)狀態(tài)調(diào)度各功能模塊。此時各功能模塊就以“任務(wù)”作為表現(xiàn)形式。但是在每個任務(wù)內(nèi)部仍然為一個獨(dú)立的控制環(huán)結(jié)構(gòu),仍然需要用狀態(tài)機(jī)描述。本文將結(jié)合工程實(shí)踐論述狀態(tài)機(jī)在工控中的應(yīng)用,給出通用模型和注意要點(diǎn)。
1.2 有限狀態(tài)機(jī)
有限狀態(tài)機(jī)是一種重要的思想方法。從數(shù)學(xué)的角度看,它實(shí)際是一個五元組M = (I, O, S, δ, λ),其中I,O 分別表示輸入輸出,S 為狀態(tài)向量,δ為次態(tài)方程(δ: S×I - ﹥S),λ表示輸出方程(λ: S×I - ﹥ O)。有限狀態(tài)機(jī)從結(jié)構(gòu)體系上有層級狀態(tài)機(jī),并發(fā)狀態(tài)機(jī)等。層級狀態(tài)機(jī)類似于軟件中的子程序調(diào)度:更高層的一個狀態(tài)對應(yīng)于較低層的一個狀態(tài)機(jī)。這個高層的狀態(tài)處于底層狀態(tài)機(jī)的某個狀態(tài)中。這個低層狀態(tài)稱為子狀態(tài)。與子程序調(diào)用受到系統(tǒng)堆棧深度制約不一樣,層級狀態(tài)機(jī)可以由開發(fā)者根據(jù)控制對象的層次性運(yùn)動規(guī)律任意指定深度。與子程序的目的一樣,層級狀態(tài)機(jī)也是為了提高控制軟件的模塊化程度,降低狀態(tài)分析的復(fù)雜度。并發(fā)狀態(tài)機(jī)偏重于描述狀態(tài)機(jī)的調(diào)度。狀態(tài)機(jī)本身不能實(shí)現(xiàn)什么并發(fā)功能,并發(fā)的實(shí)現(xiàn)是通過軟件調(diào)度的。如果把狀態(tài)機(jī)理解成一個任務(wù),那么就能理解并發(fā)的實(shí)現(xiàn)。
在控制環(huán)中,一個“任務(wù)”就是一個功能模塊,我們只需要把多個狀態(tài)機(jī)串聯(lián)在環(huán)中,也就是實(shí)現(xiàn)了多輸入多輸出的并發(fā)控制。此時,多個狀態(tài)機(jī)在空間上是并存的,然而卻是分時調(diào)用的,調(diào)用的周期等同于控制環(huán)掃描一周的時間。不過如果CPU運(yùn)算速度足夠快,這個周期將會足夠的快,達(dá)到“實(shí)時”的程度,從而這多個狀態(tài)機(jī)也就實(shí)現(xiàn)了“并發(fā)”運(yùn)行。同理,在多任務(wù)操作系統(tǒng)中,“并發(fā)”的實(shí)現(xiàn)就更容易理解了,除了在單個任務(wù)內(nèi)存在控制環(huán)的并發(fā)控制外,在任務(wù)之間也同樣存在多狀態(tài)機(jī)的并發(fā)運(yùn)行。當(dāng)然,從CPU 的角度而言,只要是單核的,也就從來不存在真正的“并發(fā)”,它在任何一個特定的時間點(diǎn)都只能處理某個特定狀態(tài)機(jī)。不過多任務(wù)操作系統(tǒng)卻提供了一套底層機(jī)制來調(diào)度原來僅靠控制環(huán)來調(diào)度的任務(wù)。
附件下載:點(diǎn)擊下載查閱全文
|