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