摘? 要: 詳細介紹了1553B" title="1553B">1553B總線控制器" title="總線控制器">總線控制器實現(xiàn)異步通訊的軟件設計方案,。
關鍵詞: 1553B總線? 總線控制器? 同步通訊" title="同步通訊">同步通訊? 異步通訊? ISBC協(xié)議
?
1553B是一種時分制指令/響應式多路" title="多路">多路傳輸數據總線,因其高可靠性和實時性廣泛應用在航空電子設備中,目前在艦船系統(tǒng)中也有廣泛應用,??偩€上可以掛接一個總線控制器(BC),若干(不超過31個)用來連接子系統(tǒng)和數據總線進行數據通信的遠程終端(RT),一般還可以掛接一個總線監(jiān)視器(MT),用于監(jiān)聽各個節(jié)點的通信狀態(tài)。
總線控制器是在數據總線上被指定執(zhí)行啟動信息傳輸任務的終端,。1553B總線上消息傳輸的過程是:總線控制器向某一終端發(fā)布一個接收/發(fā)送指令,終端在給定的響應時間范圍內發(fā)回一個狀態(tài)字并執(zhí)行消息的接收/發(fā)送。
在1553B數據總線上,消息是按時間逐次進行傳輸的,總線上BC與RT間有10種可能的通信模式[1],。大多消息的處理按固定的順序,、周期和相位出現(xiàn),。這類消息稱為周期消息,其傳輸過程叫同步通訊。對這類消息可以按靜態(tài)的時間表進行,周期時間最小的消息排在一個小幀中(小周期),周期時間最大按小周期2的冪次的調和構成一個主幀(大周期),每個大周期由若干個小周期組成,其余各周期同樣按照2的冪次的調和排入消息表,具體的算法詳見文獻[2]。多數的總線控制器系統(tǒng)軟件都只實現(xiàn)了周期消息的傳輸,即同步通訊。但在實際應用的總線通訊中,有些消息是由系統(tǒng)中隨機突發(fā)事件激活或由其它事件的請求所引起,。這類消息稱非周期消息,相應的傳輸稱異步通訊,。異步通訊是在有服務請求的情況下插入同步通訊中的,具有很高的實時性和重要性,因此,能夠根據用戶的需求,在同步通訊的同時實現(xiàn)非周期消息的異步通訊具有非常實際的意義。
1 總線控制器異步通訊處理方案
總線控制器(BC)是總線上的重要組成??偩€上所有消息的傳輸都由BC來激勵和控制,是總線進行通訊的開關。為了處理非周期消息,在總線上必須對BC原有的靜態(tài)總線控制協(xié)議進行改進,改進后的協(xié)議稱為ISBC,它的特點是:
????·當消息被更新后才進行傳輸,其工作機理為更新檢測傳輸(UPD&T);
·消息傳輸周期是變化的,。一個周期消息完成后立即開始新的周期。對任何相關子系統(tǒng)來說,對更新性消息而言,傳輸周期是異步的,。
這一協(xié)議的應用降低了通信系統(tǒng)的負載和平均延遲時間,大大改善了子系統(tǒng)的性能。
實現(xiàn)更新數據傳輸機制(ISBC)的方法有兩種:異步服務請求方式和BC定時查詢方式,。異步服務請求方式是當同步通訊段中的某一周期消息的狀態(tài)字的服務請求位因異步的服務而被置1時必需插入異步通訊,。BC定時查詢方式是總線控制器BC以某一預定頻率向RT發(fā)送方式指令0x1000(發(fā)送矢量字),。被查詢的RT若有非周期消息,就將矢量字置位,通知BC組織非周期消息的傳輸。
異步請求方式無查詢開銷,但它對非周期消息響應不確定,必須在請求RT獲得總線使用權時BC才組織傳輸非周期消息,。BC定時查詢方式較前者有很強的確定性,它每個小周期對各個終端查詢一次,可以保證非周期消息的分辨率,雖然有查詢開銷,但由于采用UDP&T方式,開銷并不多,。另外由于它的確定性,系統(tǒng)設計時可確切地對系統(tǒng)進行性能評價,便于系統(tǒng)設計,。由于在實時系統(tǒng)中主要考慮實時性問題,因此本軟件采用BC定時查詢方式,。
2 異步通信軟件的仿真測試環(huán)境
仿真軟件" title="仿真軟件">仿真軟件的開發(fā)基于特定的硬件和軟件配置環(huán)境。如圖1所示,。
?
在整個測試環(huán)境中,本軟件用來組織整個系統(tǒng)各個子系統(tǒng)間消息的傳輸,并響應子系統(tǒng)的非周期消息傳輸請求,實現(xiàn)異步通訊,。計算機仿真終端必須由一塊多路數據總線接口卡連接到總線上,以進行數據通訊。本軟件的開發(fā)選用美國DDC公司的IDEA多路數據總線接口卡,Win98操作系統(tǒng)為計算機仿真平臺,。
IDEA接口卡本身提供了一個RTL(運行時庫)函數庫,為上層仿真軟件的開發(fā)提供了與底層硬件驅動相關的特定功能接口函數(API),驅動總線接口卡與總線進行數據通訊。為了給用戶提供友好的界面,本仿真軟件使用VC++語言進行設計開發(fā),。
仿真軟件除了要組織消息的異步通訊,還要求對鏈入網絡的各個終端進行監(jiān)視,判斷各個RT故障情況,將其鏈入或剔除網絡的通信過程,以提高網絡的數據傳輸效率,并實時顯示節(jié)點狀態(tài)便于管理員及時發(fā)現(xiàn)和排除故障,。同時在實際通訊中,為了協(xié)調各個終端的通訊,設計了周期性的帶數據字的同步消息,每個周期向各個RT廣播,通知各個RT做好準備,并在特定終端的異步消息傳輸結束后通知該RT。設計中周期消息的傳輸周期分別為2s,、1s,、50ms(周期時間為設計值,可根據用戶要求改變),故設定周期性消息的傳輸大周期為2s,并將其分成40個小周期(每周期為50ms)。每一小周期1553B命令的配置圖如圖2所示,。??????????
?
?
3 異步通訊軟件的結構
考慮以上功能的實現(xiàn)和VC++語言本身的特點,本軟件在界面和功能的實現(xiàn)上采用模塊化的設計思想,由設置文件建立模塊(M1-1)和仿真功能實現(xiàn)模塊(M1-2)兩個主模塊組成,各主模塊根據需要包含相應的功能子模塊(模塊的命名方式:M層次-模塊號),。設置文件建立模塊(M1-1)為用戶提供輸入界面,用戶可以方便地定義系統(tǒng)所使用的終端地址、要傳輸的消息內容和數據以及周期消息傳輸的消息表,對不同的用戶有很大的適應性,。仿真功能實現(xiàn)模塊(M1-2)根據M1-1提供的數據定時組織周期消息的傳輸,并查詢異步消息的傳輸請求,及時響應異步消息請求并組織傳輸,每個大周期定時向故障節(jié)點發(fā)送查詢消息,以判斷相應RT的狀態(tài)并刷新實時顯示各節(jié)點狀態(tài),。系統(tǒng)模塊數據流如圖3所示(設該軟件為0級模塊,即M0—仿真軟件)。
?
?
設置文件建立模塊主要為用戶提供一個友好的輸入界面,用戶輸入的數據主要為仿真功能實現(xiàn)模塊提供輸入,。仿真功能實現(xiàn)模塊從軟件中取出用戶在設置文件模塊中定義的傳輸消息所必需的數據,組織消息傳輸,。根據不同功能的實現(xiàn),它所包含的子模塊主要為:IDEA卡的初始化和周期消息傳輸(M2-1)、異步通訊實現(xiàn)模塊(M2-2),、RT故障檢測(M2-3),。
由于IDEA卡在驅動上提供了應用程序接口函數API,因此在操作IDEA卡時只需調用相應的API,而不需直接驅動IDEA卡。在驅動IDEA接口卡進行數據傳輸前首先要初始化數據接口卡,通過調用相應的API,進行卡的自檢,并將用戶定義的消息內容和消息表寫入IDEA卡的存儲區(qū),。組織周期消息傳輸時,為節(jié)省總線的開銷,在每個大周期結束前向網絡連接的終端發(fā)送查詢狀態(tài)的消息,判斷該節(jié)點是否可以正常通訊,將正常通訊的終端設置為活動終端,并在組織消息表時進行過濾,只組織關于活動終端的消息,。圖4給出了仿真軟件在仿真平臺中的位置及其結構。
?
?
3.1 異步通訊實現(xiàn)模塊M2-2
本軟件的重點就是非周期消息的組織傳輸,即異步通訊的實現(xiàn),。周期傳輸的消息多數時間是固定不變的,因此每個周期都傳輸相同的消息實際加重了總線的負載,為此本軟件中大多數消息都為異步消息,對終端進行查詢,。當消息變化時請求發(fā)送的終端設置相應的矢量字,總線控制器則根據收到的矢量字發(fā)送相應的消息。這樣大大節(jié)省了總線的開銷,提高了效率,。本軟件采用BC定時查詢方式實現(xiàn)異步通訊。
仿真軟件所仿真的BC每個小周期(50ms)內向各個活動終端發(fā)送方式指令—發(fā)送矢量字,詢問該終端是否有異步通訊請求,被詢問終端向BC返回一個矢量字(0~31),。若某一終端返回矢量字0,則表示該終端無異步通訊請求,BC繼續(xù)查詢下一活動終端;若該終端返回的矢量字非零,則表示該終端有異步通訊請求,BC必須立即組織該終端請求的異步通訊,。
異步通訊是根據查詢返回的矢量字組織的,不同的矢量字(1~31)對應不同的消息內容和數目,每個矢量字所對應的非周期消息數目和內容由用戶在設置文件模塊中自由定義。為了便于在同步通訊中插入異步通訊的程序實現(xiàn),定義一個數組隊列,。在仿真開始前遍歷用戶在消息定義中輸入的異步消息,將消息號加入對應的矢量字的數組中,并將該計數器加1,。
在對IDEA卡實現(xiàn)異步通訊即非周期消息的傳輸時,根據IDEA卡提供的API,采用使IDEA卡產生中斷的方法,設置向各個終端查詢矢量字的消息傳輸結束后產生中斷,在IDEA卡的中斷處理例程中組織異步通訊,。如果返回的矢量字非零,則該終端有異步傳輸請求,取出相應矢量字的第一條異步消息,插入消息表中傳輸,并將該矢量字的消息數減1;同樣為異步消息設置傳輸結束后中斷,在中斷處理程序中繼續(xù)判斷消息數目,循環(huán)至該適量字對應的異步消息傳輸完畢,繼續(xù)查詢下一終端,傳輸周期消息。程序流程圖如圖5所示,。
?
?
3.2 RT故障檢測模塊
由于總線所連接的各個終端正常運行的時間很長,出故障的概率較小,。為節(jié)省總線開銷并及時捕獲故障節(jié)點,在每個大周期(即40個小周期)結束前向每個終端查詢一次狀態(tài)。若有節(jié)點已經啟動/修復,則立即清除該節(jié)點的故障標志,重排周期消息表,添加與該終端相關的可傳輸消息;若發(fā)現(xiàn)某終端故障標志被設置,同樣重排消息表并將相關消息刪除,。為了保證消息的正確傳輸,當某條消息傳輸出錯時定義消息的兩次重發(fā),當消息在該總線和另一條余度總線上重發(fā)失敗后,將該消息視為出錯,同時將相應的終端RT設置故障標志,。程序實現(xiàn)控制流如圖6所示,。
?
?
3.3 軟件設計的容錯處理
1553B總線主要應用在航空電子即空中運動平臺中,艦船系統(tǒng)也有應用。應用環(huán)境都比較惡劣,受到的干擾較多,且工作時間長,。1553B本身采用了一定的措施以保證數據傳輸的正確性,如它采用雙余度總線A和B(見圖3),消息在其中一條總線上傳輸,若此總線發(fā)生錯誤,則消息也可以在另一條總線上傳輸,。本軟件利用1553B這個特點,為每條消息設置中斷。在中斷例程中,對傳輸出錯的消息在此總線和另一條總線上進行重傳兩次的重發(fā)處理,從而排除因偶然的外界因素影響而出現(xiàn)的消息傳輸錯誤,。
另外,軟件中需用戶定義的內容多根據1553B規(guī)定的有效性采用直接選擇式,防止用戶的輸入錯誤;對需用戶輸入數據都有相應的有效性判斷,若輸入有誤,產生錯誤警告,提示用戶重新輸入。
本軟件已應用于某艦船系統(tǒng)中,組織各子系統(tǒng)消息傳輸,仿真測試各子系統(tǒng),。在應用中可以發(fā)現(xiàn),總線傳輸的效率是應用中必須考慮和提高的一個問題,查詢矢量字方式的異步消息傳輸可以提高總線利用的效率,是減輕總線負載的有效解決方案,。
?
參考文獻
1 羅志強.航空電子綜合化系統(tǒng).北京:北京航空航天大學出版社,1990
2 陳 彩.多路數據總線通信傳輸軟件生成工具的研究.北京航空航天大學碩士論文,1995
3 飛機內部時分制指令/響應式多路傳輸數據總線.美國軍用標準,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 岳麗華,紀金龍,黃劉生. 軟件技術基礎. 合肥:中國科學技術大學出版社,1994