-
電話:0318-5934567
傳真:0318-5934567
手機:13373380069
聯(lián)系人:周經(jīng)理
郵箱:hyguiye@163.com
網(wǎng)址:www.tunnao.cn
地址:河北省衡水市武邑縣東逍遙工業(yè)區(qū)
冀ICP備16003626號-3
金庫門安全記錄系統(tǒng)通信軟件設(shè)計
金庫門軟件設(shè)計主要包括PC機端和下位機端兩大部分。
3.1 下位機端程序設(shè)計
單片機程序采用C51 語言編寫,開/ 關(guān)鎖信號的采集用查詢方式,與PC 機的通信采用中斷方式。要保證通信的可靠性,通信指令的完整性與正確性判斷是一個比較關(guān)鍵的問題。一般來說,上位機傳送指令給下位機有兩種方式:(1)直接發(fā)送指令字符的方式(如AT 指令);(2)發(fā)送預(yù)先定義的指令代碼的方式,比如上述指令中g(shù)etdata 定義為0x01h ,settime 定義為0x02h,gettime定義為0x03h,等等。但**2種方式在噪聲比較嚴重的情況下可能會發(fā)生異常:例如,PC機要傳送的指令是0x01h,但由于干擾的原因,下位機接收的可能是0x03h,這樣PC 機原來想得到安全記錄數(shù)據(jù),但下位機卻發(fā)送了時間參數(shù)。
經(jīng)綜合考慮后,金庫門系統(tǒng)采用了**1 種方式。 由于PC 機與下位機的通信是通過串行中斷方式進行的,PC 機傳送的指令也只能被下位機一個字符一個字符地接收,判斷所接收的字符何時構(gòu)成一條指令以及指令正確性的判斷是至關(guān)重要的。一般的方法是當(dāng)接收的字符數(shù)達到小指令長度時就開始與系統(tǒng)設(shè)置的短指令進行比較,如果相等,則執(zhí)行相應(yīng)的指令,如果不相等,則等到接收到的字符與次短指令的長度相等時,再與次短指令進行比較,如此循環(huán)下去。這種算法有兩個 不足。
(1) 容易造成多余的比較。以本系統(tǒng)為例,短的指令是reset 指令,長度是5,次短的指令是getall指令,長度是6,其余指令長度是7。當(dāng)PC機傳送getdata 指令時,下位機先接收到‘g ’字符,接著接收到‘e ’字符,…,當(dāng)接收到**一個‘a(chǎn)’后,達到了短指令長度5,于是比較接收到的字符串‘getda’與指令‘reset ’是否相等,結(jié)果是不等,于是繼續(xù)接收下一個字符‘t ’,然后比較接收到的字符串‘getdat’與指令‘getall’是否相等,結(jié)果還是不等,于是繼續(xù)接收下一個字符‘a(chǎn) ’,然后再比較接收到的字符串‘getdata ’與指令‘getdata ’是否相等。由此可見,該算法多進行了 2 次字符串比較。而是否到達了應(yīng)進行比較的長度需要在中斷服務(wù)程序中進行判斷,如:
{ … if ( 接收字符長度=L1) 置位可以進行指令比較的標志; … else if (接收字符長度=L2) 置位可以進行指令比較的標志; … } 由于比較次數(shù)的不確定性,因此中斷服務(wù)程序執(zhí)行時間是不確定的。 (2) 在雙方通信過程中,由于干擾信號的原因,因此要傳送的指令中某個字符會發(fā)生錯誤,而該算法是不能判斷出來的,很有可能造成系統(tǒng)死機。例如,當(dāng)PC 機要傳送的指令是reset ,而下位機接收到的卻是resat ,由于‘reset ’與‘resat ’比較結(jié)果不相等,因此下位機等待新字符的到來,而PC 機認為指令已經(jīng)發(fā)送完畢,不會再發(fā)送任何字符給它,這會造成下位機**限等待,產(chǎn)生死機現(xiàn)象。
為了避免出現(xiàn)上述問題,**先引入狀態(tài)的概念:給下位機設(shè)置一系列狀態(tài),每接收一個字符就改變一次它所處的狀態(tài);再在這個基礎(chǔ)上設(shè)計一個確定的有限自動機(DFA )[3] M=(S,∑, f, S0 ,Z),其中S 表示有限狀態(tài)集{0,1,2, …,13,15} ,∑是可接收字符的集合{a,b,c, …,z},f 是一個從S×∑至S 的單值映射(如:f(0,g)=1;f(0,a)=15;f(3,d)=5 ),S0 表示初態(tài)0,Z是終態(tài)(集)15。DFA 也可用狀態(tài)轉(zhuǎn)換圖書館(圖3)的形式來表示。系統(tǒng)初始化時將狀態(tài)設(shè)置為0,當(dāng)接收到字母‘g’或‘r ’或‘s ’時,進入狀態(tài)1 ,接收到其他任何字符都進入終態(tài)15;當(dāng)系統(tǒng)處于狀態(tài) 1 時,若接收到字母‘e ’,則進入狀態(tài)2,否則進入終態(tài) 15;其余類推。當(dāng)系統(tǒng)進入終態(tài) 15后,可設(shè)置一終態(tài)標志,主程序判斷出該標志后,便可進行進一步的處理:若接收的字符的個數(shù)小于小指令長度,或者接收到的字符串與所有等長的指令比較后不相符,則發(fā)送“指令錯誤包”給PC 機;否則,執(zhí)行相應(yīng)的指令。這樣處理后,一方面可以識別出指令,另一方面也縮短了中斷服務(wù)程序的執(zhí)行時間,為系統(tǒng)的實時性提供了條件。
4 結(jié)束語
該金庫門系統(tǒng)設(shè)計完成后,經(jīng)過不斷修改和現(xiàn)場長期運行測試,并與Windows98、Wiondows2000 、Windows XP聯(lián)機測試,表明該系統(tǒng)性能滿足各項設(shè)計指標,且具有較高的可靠性,滿足實用化的需要。 參考文獻
- 相關(guān)推薦