1553B總線控制器異步通訊仿真軟件設(shè)計(jì)
由于IDEA卡在驅(qū)動(dòng)上提供了應(yīng)用程序接口函數(shù)API,因此在操作IDEA卡時(shí)只需調(diào)用相應(yīng)的API,而不需直接驅(qū)動(dòng)IDEA卡。在驅(qū)動(dòng)IDEA接口卡進(jìn)行數(shù)據(jù)傳輸前首先要初始化數(shù)據(jù)接口卡,通過調(diào)用相應(yīng)的API,進(jìn)行卡的自檢,并將用戶定義的消息內(nèi)容和消息表寫入IDEA卡的存儲(chǔ)區(qū)。組織周期消息傳輸時(shí),為節(jié)省總線的開銷,在每個(gè)大周期結(jié)束前向網(wǎng)絡(luò)連接的終端發(fā)送查詢狀態(tài)的消息,判斷該節(jié)點(diǎn)是否可以正常通訊,將正常通訊的終端設(shè)置為活動(dòng)終端,并在組織消息表時(shí)進(jìn)行過濾,只組織關(guān)于活動(dòng)終端的消息。圖4給出了仿真軟件在仿真平臺(tái)中的位置及其結(jié)構(gòu)。
3.1 異步通訊實(shí)現(xiàn)模塊M2-2
本軟件的重點(diǎn)就是非周期消息的組織傳輸,即異步通訊的實(shí)現(xiàn)。周期傳輸?shù)南⒍鄶?shù)時(shí)間是固定不變的,因此每個(gè)周期都傳輸相同的消息實(shí)際加重了總線的負(fù)載,為此本軟件中大多數(shù)消息都為異步消息,對(duì)終端進(jìn)行查詢。當(dāng)消息變化時(shí)請(qǐng)求發(fā)送的終端設(shè)置相應(yīng)的矢量字,總線控制器則根據(jù)收到的矢量字發(fā)送相應(yīng)的消息。這樣大大節(jié)省了總線的開銷,提高了效率。本軟件采用BC定時(shí)查詢方式實(shí)現(xiàn)異步通訊。
仿真軟件所仿真的BC每個(gè)小周期(50ms)內(nèi)向各個(gè)活動(dòng)終端發(fā)送方式指令-發(fā)送矢量字,詢問該終端是否有異步通訊請(qǐng)求,被詢問終端向BC返回一個(gè)矢量字(0~31)。若某一終端返回矢量字0,則表示該終端無異步通訊請(qǐng)求,BC繼續(xù)查詢下一活動(dòng)終端;若該終端返回的矢量字非零,則表示該終端有異步通訊請(qǐng)求,BC必須立即組織該終端請(qǐng)求的異步通訊。
異步通訊是根據(jù)查詢返回的矢量字組織的,不同的矢量字(1~31)對(duì)應(yīng)不同的消息內(nèi)容和數(shù)目,每個(gè)矢量字所對(duì)應(yīng)的非周期消息數(shù)目和內(nèi)容由用戶在設(shè)置文件模塊中自由定義。為了便于在同步通訊中插入異步通訊的程序?qū)崿F(xiàn),定義一個(gè)數(shù)組隊(duì)列。在仿真開始前遍歷用戶在消息定義中輸入的異步消息,將消息號(hào)加入對(duì)應(yīng)的矢量字的數(shù)組中,并將該計(jì)數(shù)器加1。
在對(duì)IDEA卡實(shí)現(xiàn)異步通訊即非周期消息的傳輸時(shí),根據(jù)IDEA卡提供的API,采用使IDEA卡產(chǎn)生中斷的方法,設(shè)置向各個(gè)終端查詢矢量字的消息傳輸結(jié)束后產(chǎn)生中斷,在IDEA卡的中斷處理例程中組織異步通訊。如果返回的矢量字非零,則該終端有異步傳輸請(qǐng)求,取出相應(yīng)矢量字的第一條異步消息,插入消息表中傳輸,并將該矢量字的消息數(shù)減1;同樣為異步消息設(shè)置傳輸結(jié)束后中斷,在中斷處理程序中繼續(xù)判斷消息數(shù)目,循環(huán)至該適量字對(duì)應(yīng)的異步消息傳輸完畢,繼續(xù)查詢下一終端,傳輸周期消息。程序流程圖如圖5所示。
3.2 RT故障檢測(cè)模塊
由于總線所連接的各個(gè)終端正常運(yùn)行的時(shí)間很長(zhǎng),出故障的概率較小。為節(jié)省總線開銷并及時(shí)捕獲故障節(jié)點(diǎn),在每個(gè)大周期(即40個(gè)小周期)結(jié)束前向每個(gè)終端查詢一次狀態(tài)。若有節(jié)點(diǎn)已經(jīng)啟動(dòng)/修復(fù),則立即清除該節(jié)點(diǎn)的故障標(biāo)志,重排周期消息表,添加與該終端相關(guān)的可傳輸消息;若發(fā)現(xiàn)某終端故障標(biāo)志被設(shè)置,同樣重排消息表并將相關(guān)消息刪除。為了保證消息的正確傳輸,當(dāng)某條消息傳輸出錯(cuò)時(shí)定義消息的兩次重發(fā),當(dāng)消息在該總線和另一條余度總線上重發(fā)失敗后,將該消息視為出錯(cuò),同時(shí)將相應(yīng)的終端RT設(shè)置故障標(biāo)志。程序?qū)崿F(xiàn)控制流如圖6所示。
3.3 軟件設(shè)計(jì)的容錯(cuò)處理
1553B總線主要應(yīng)用在航空電子即空中運(yùn)動(dòng)平臺(tái)中,艦船系統(tǒng)也有應(yīng)用。應(yīng)用環(huán)境都比較惡劣,受到的干擾較多,且工作時(shí)間長(zhǎng)。1553B本身采用了一定的措施以保證數(shù)據(jù)傳輸?shù)恼_性,如它采用雙余度總線A和B(見圖3),消息在其中一條總線上傳輸,若此總線發(fā)生錯(cuò)誤,則消息也可以在另一條總線上傳輸。本軟件利用1553B這個(gè)特點(diǎn),為每條消息設(shè)置中斷。在中斷例程中,對(duì)傳輸出錯(cuò)的消息在此總線和另一條總線上進(jìn)行重傳兩次的重發(fā)處理,從而排除因偶然的外界因素影響而出現(xiàn)的消息傳輸錯(cuò)誤。
另外,軟件中需用戶定義的內(nèi)容多根據(jù)1553B規(guī)定的有效性采用直接選擇式,防止用戶的輸入錯(cuò)誤;對(duì)需用戶輸入數(shù)據(jù)都有相應(yīng)的有效性判斷,若輸入有誤,產(chǎn)生錯(cuò)誤警告,提示用戶重新輸入。
本軟件已應(yīng)用于某艦船系統(tǒng)中,組織各子系統(tǒng)消息傳輸,仿真測(cè)試各子系統(tǒng)。在應(yīng)用中可以發(fā)現(xiàn),總線傳輸?shù)男适菓?yīng)用中必須考慮和提高的一個(gè)問題,查詢矢量字方式的異步消息傳輸可以提高總線利用的效率,是減輕總線負(fù)載的有效解決方案。
參考文獻(xiàn)
1 羅志強(qiáng).航空電子綜合化系統(tǒng).北京:北京航空航天大學(xué)出版社,1990
2 陳 彩.多路數(shù)據(jù)總線通信傳輸軟件生成工具的研究.北京航空航天大學(xué)碩士論文,1995
3 飛機(jī)內(nèi)部時(shí)分制指令/響應(yīng)式多路傳輸數(shù)據(jù)總線.美國(guó)軍用標(biāo)準(zhǔn),1978
4 BUS-69035 and BUS-69135 Software Manual IDEA CARD RUN TIME LIBRARY for Windows 95/98 and Windows NT. Data Device Corp,1999
5 岳麗華紀(jì)金龍黃劉生. 軟件技術(shù)基礎(chǔ). 合肥:中國(guó)科學(xué)技術(shù)大學(xué)出版社,1994
數(shù)字通信相關(guān)文章:數(shù)字通信原理
通信相關(guān)文章:通信原理
評(píng)論