摘 要: 在設計各種軟硬件人機交互控制設備時,輸入容錯處理是必然遇到的一個問題。常規做法是用大量邏輯判斷進行處理,但是這種方法代碼容易出錯,而且當設備控制關系需要改變時,控制程序也需要重新編寫,極大影響系統的可靠性和編程效率。提出一種新的輸入控制容錯處理方法——“禁忌表”方法,將整個設備的輸入控制關系整合在一起。按照本文方法,在設備的控制關系發生改變的時候,只需改動“禁忌表”,控制程序無需改動,從而大大提高系統的開發速度。
關鍵詞: 禁忌表; 輸入容錯處理; 人機交互控制; 編程效率
中圖分類號: TN911?34 文獻標識碼: A 文章編號: 1004?373X(2014)02?0053?03
0 引 言
當前,各種設備終端人機交互控制關系越來越復雜,對設備輸入控制容錯處理的要求也越來越高,特別對大型武器裝備,容錯處理控制不好,將帶來不可預知的風險和損失,因此對設備研發人員的軟件控制技術提出了極高的要求[1?2]。輸入控制容錯處理的常規做法是編程時使用大量的邏輯判斷,對各種輸入操作與當前設備狀態進行相容判斷,確定該輸入操作在當前狀態下是否允許[3]。這種方法只適用于控制關系簡單的設備。由于設備狀態少,操作簡單,使用結構簡單的邏輯判斷就可以實現設備的容錯處理。但對于狀態多、控制關系復雜的設備,這種方法不僅程序編寫效率低,而且也很難保證可靠性。即使編制出可靠的輸入控制容錯程序,系統控制關系一旦需要改變,控制容錯程序就需重新編寫,增加了軟件編寫的工作量、系統開發成本和開發周期[4]。為此,提出一種新的輸入控制容錯處理方法——“禁忌表”方法,不僅編程中省去大量的邏輯判斷,簡化程序結構,而且在系統軟件升級和控制關系變動時,只需改動“禁忌表”,而無需改動程序,從而大大提高系統軟件的開發速度和可靠性。
1 “禁忌表”方法的數學模型
“禁忌表”方法基本思想就是首先建立設備所有鍵控輸入的“相容”與“禁忌”關系表,稱之為“鍵控輸入禁忌表”。在每次執行一個鍵控功能時,通過搜索“鍵控輸入禁忌表”,判斷系統當前狀態下,該輸入是否有效,若有效,就可執行相應的鍵控功能,并更新當前狀態;否則不執行任何操作。這樣在每次對輸入進行容錯處理時,只需執行一個特定的處理函數,該函數基于“鍵控輸入禁忌表”分析當前鍵控與當前系統狀態是否相容,若相容則輸入有效,若不相容則輸入無效。系統控制關系變更時,只需相應改動“鍵控輸入禁忌表”即可完成。
該方法的數學模型如下:
定義系統所有鍵控輸入的集合為K={k1,k2,…,km}。其中m為正整數,表示系統可鍵控輸入組合的個數。
定義系統所有可能狀態的集合為S={s1,s2,…,sn}。其中n為正整數,表示系統所有可能狀態的個數。
系統工作時所有可能呈現的狀態組合稱為系統的工作狀態。定義系統所有可能工作狀態的集合為WS={WS1,WS2,…,WSp},其中WSi =[si1,si2,…,sij]表示系統的某個工作狀態;j為此工作狀態包含系統狀態的個數,p為系統所有可能的工作狀態數,且有[WSi?S];
定義系統當前工作狀態為CWS, [CWS?S]。
定義與鍵控輸入ki相容的系統工作狀態集合為TSi={TSi1,TSi2,…,TSiq},i[?]{1,2,…,m}。其中:TSij={sij1,sij2,sij3,…,sijl};q為與鍵控輸入ki相容的系統工作狀態的個數;l為TSij中系統狀態的個數,顯然有[TSi?WS],即TSi為系統工作狀態集合WS的子集。所謂TSij與鍵控輸入ki相容,是指系統當前工作狀態CWS為TSij的情況下,鍵控輸入ki有效。
定義與鍵控輸入ki不相容的系統工作狀態集合為FSi={FSi1,FSi2,…,FSiq},i[?]{1,2,…,m},其中FSij={sij1,sij2,sij3,…,sijl};q為與鍵控輸入ki不相容的系統工作狀態集合的個數;l為FSij中系統狀態的個數,顯然有[FSi?WS],即FSi也為系統工作狀態集合 WS的子集。所謂FSij與鍵控輸入ki不相容,是指系統當前工作狀態CWS為FSij時,鍵控輸入ki無效。
[KEY_PROHIBIT(ki)=T,WSC?TSiF,WSC?FSi]
顯然,對任何一鍵控輸入ki,其對應的相容系統工作狀態集合TSi與非相容系統工作狀態集合FSi之和就是系統工作狀態集合WS,即TSi+FSi=WS。設KEY_ PROHIBIT(ki)為鍵控輸入ki有效判別函數,T表示有效,F表示無效,則有:
2 “禁忌表”方法的計算機實現
對任何系統,建立如下數據表:
(1) 鍵控輸入表K_table,表中存儲系統所有可能的鍵控輸入組合K。
(2) 狀態表S_table,表中存儲系統所有可能的狀態S。
(3) 工作狀態表WS_table,表中存儲所有可能的工作狀態的集合WS。
(4) 當前工作狀態表CWS_table,表中存儲系統當前工作狀態WSC。
(5) 鍵控輸入禁忌表PROHIBIT_table,該表中存儲了所有鍵控輸入的相容與非相容狀態。
基于上面的討論,可以得到如圖1所示的系統鍵控輸入容錯處理流程。
圖1 鍵控輸入容錯處理
以下是某偵察雷達模擬器設備采用VB6編寫的“禁忌表”(部分)和“禁忌判別函數”實現的輸入容錯控制,代碼很少[5?6]:
Const ty = \"99,tt,ay,ff,ay\" 通用狀態
Const cp = \"01,tt,99,01,08,10,09,16,edff,ay\" 重排
Const js = \"02,tt,99,02,01,08,09,16,edff,ay\" 監視
Const zj = \"03,tt,99,03,01,10,09,16,edff,ay\" 自檢
Const ks = \"04,tt,99,04,01,08,09,16,edff,ay\" 快速
Const jz = \"05,tt,99,05,01,10,09,16,edff,ay\" 加載
Const bp = \"06,tt,99,06,08,10,09,16,edff,ay\" 編批
Const sc = \"07,tt,99,07,01,08,10,16,edff,ay\" 刪除
Const qx = \"08,tt,99,08,01,10,09,16,edff,ay\" 全顯
Const sm = \"09,tt,ay,ff,10,13,17,16,ed\" 掃描
Const yj = \"10,tt,ay,ff,09,13,17,16,ed\" 預警
Const gj = \"11,tt,99,01,08,10,09,16,edff,ay\" 告警
Const dy = \"12,tt,99,01,10,09,16,edff,ay\" 打印
“禁忌表”中,相容的系統工作狀態用tt表示,系統所有工作狀態用ay表示,不相容的系統工作狀態用ff表示,ed表示表結束。
只需在命令按鍵執行處理前,執行如下的“禁忌判別函數”,判斷輸入命令是否有效,有效執行相應的按鍵功能,無效則不執行。其中傳遞變量jj_bz為當前按鍵輸入。
Public Function jjpb(jj_bz As String) As Boolean
'禁忌判別函數
dim int1,int2 as integer
dim str1,str2 as string
str1 = stateWord '取當前按鍵的禁忌標狀態字
int1 = 7
int2 = 2
str2 = Mid$(jj_bz, int1, int2)
If str2 = \"ay\" Then
int1 = int1 + 6
str2 = Mid$(jj_bz, int1, int2)
While str2 <> \"ed\"
If str2 = str1 Then
jjpb = False '有不可用當前狀態,函數返回不可用
Exit Function
End If
int1 = int1 + 3
str2 = Mid$(jj_bz, int1, int2)
Wend
jjpb = True '沒有不可用當前狀態,函數返回可用
Exit Function
Else
While str2 <> \"ed\"
str2 = Mid$(jj_bz, int1, int2)
If str2 = str1 Then
jjpb = True '有可用當前狀態,函數返回可用
Exit Function
End If
int1 = int1 + 3
Wend
jjpb = False '沒有可用當前狀態,函數返回不可用
Exit Function
End If
End Function
3 結 論
從上面分析可以看出,對復雜系統的控制,只要在系統控制設計之前,將系統的狀態、工作狀態以及與鍵控輸入的關系明確,建立各種必要的數據表,即可通過鍵控輸入判別函數實現所有鍵控輸入的容錯處理判斷,設計人員可以將主要精力集中到各種鍵控輸入具體功能的實現上,有利于系統的模塊化編程,提高了系統的可靠性和開發效率。此方法已在完成的某型艇載雷達模擬器系統的開發中得到了很好的應用,取得了明顯的效果。同時,該方法完全可推廣到大型、具有復雜輸入控制關系設備的鍵控輸入容錯設計中。
參考文獻
[1] 李人厚.智能控制理論和方法[M].西安:西安電子科技大學出版社,1999.
[2] 聞新.控制系統的故障診斷和容錯控制[M].北京:機械工業出版社,2001.
[3] 周東華,葉銀忠.現代故障診斷與容錯控制[M].北京:清華大學出版社,2000.
[4] 胡昌華,許化龍.控制系統故障診斷與容錯控制的分析和設計[M].北京:國防工業出版社,2000.
[5] 李華,曾艷麗.電子對抗系統效能仿真支撐環境研究[J].系統仿真學報,2007,19(9):1954?1958.
[6] 許兵.輕型戰場偵察雷達的結構總體設計[J].現代電子技術,2005,28(13):29?30.