1553B總線(xiàn)控制器設計與調試
1 引言
1553B總線(xiàn)是美國軍用標準MIL-STD-1553B定義的一種串行總線(xiàn)的傳輸形式。由美國于20世紀70年代提出,總線(xiàn)的組成包括一個(gè)總線(xiàn)控制器(BC),若干個(gè)(最多31個(gè))遠程終端(RT),如果需要的話(huà)還可以加上負責監視總線(xiàn)信息的總線(xiàn)監視器(BM),1553B總線(xiàn)通訊之所以得到如此廣泛的應用,就是其具有以下特點(diǎn):
(1)強調實(shí)時(shí)性,1553B的傳送速率為1Mb/s,傳輸速率快。
(2)1553B總線(xiàn)按指令/響應的方式異步操作,即總線(xiàn)上所有的消息傳輸都由總線(xiàn)控制器發(fā)出的指令來(lái)控制,相關(guān)終端對指令應給予回答并執行操作。這種方式非常適合集中控制的分布式處理系統。
(3)1553B總線(xiàn)是雙冗余的傳輸線(xiàn),總線(xiàn)都是雙備份的,如果總線(xiàn)通訊不通,系統將會(huì )根據BC初始化時(shí)候的設定自動(dòng)選擇通訊重試,增強了系統的可靠性。
總線(xiàn)控制器是總線(xiàn)信息通訊的發(fā)起者和組織者,因此對BC控制的好壞將直接影響到總線(xiàn)通訊的質(zhì)量。
2 總線(xiàn)的控制方法設計
總線(xiàn)控制器是總線(xiàn)信息通訊的發(fā)起者,同時(shí)總線(xiàn)上所有信息的傳輸又均由BC來(lái)控制和激勵,其簡(jiǎn)單的通訊過(guò)程為:BC向RT(或多個(gè)RT)發(fā)送一個(gè)發(fā)送或者接收指令,如果為接收指令,指令后會(huì )攜帶需要RT接收的數據字,RT接收到命令字后,在給定的相應時(shí)間范圍內返回一個(gè)狀態(tài)字,并執行相應動(dòng)作。如果為發(fā)送指令,RT只需接收BC發(fā)送的數據字,然后返回狀態(tài)即可。
在1553B總線(xiàn)上通訊的信息多種多樣,所以針對不同的背景要有不同的總線(xiàn)設計方法,對于結構單一、數據量較少系統,總線(xiàn)上數據的活動(dòng)不是很頻繁,可以采取比較簡(jiǎn)單的方法:對周期性傳輸的消息采用固定周期來(lái)定時(shí)傳輸,對一次性消息采用命令插入的方式,要求RT返回數據的采用查詢(xún)方式向RT的子地址下達命令字來(lái)獲取數據。
如果通訊比較復雜,甚至有多個(gè)RT時(shí),這時(shí)再采用上面的方式就使得BC需要同時(shí)發(fā)送大量命令字來(lái)查詢(xún)多個(gè)RT的子地址,這樣勢必給通訊帶來(lái)沉重負擔,因此可以采用另外一種矢量字方式,將發(fā)送消息的主動(dòng)權交還給發(fā)送方(RT),具體的實(shí)現方法就是:RT在接收到BC的命令之后,完成相應動(dòng)作(例如自檢),動(dòng)作完成后將數據字寫(xiě)到相應的子地址BUF中,然后按照協(xié)議構造矢量字,再把矢量字發(fā)送到RT的0/31號子地址(只能是0或31號子地址),BC在發(fā)送完一次性消息后就可以向0/31號字地址發(fā)命令字,然后讀得該子地址內存放的矢量字,然后根據協(xié)議解析矢量字,從而向從矢量字中得到的子地址發(fā)送命令,從而得到BC想要得到的RT數據。這樣處理既可保證通訊數據量明顯較小,又可以保證消息傳輸實(shí)時(shí)性,同時(shí)又使軟件的設計具有更多的靈活性。
為了保證1553B通訊能夠適應更多更復雜的情況,BC還提供了很多特殊的功能給用戶(hù),使用戶(hù)可以根據自己的需求來(lái)使用這些特殊功能,以滿(mǎn)足特殊的系統要求:
(1)自動(dòng)重試:BC進(jìn)行初始化的時(shí)候可以進(jìn)行設定,根據需求來(lái)設定BC的重試條件。
(2)動(dòng)態(tài)總線(xiàn)控制:總線(xiàn)控制器向一個(gè)有執行總線(xiàn)控制能力的遠程終端發(fā)送一個(gè)轉讓控制的指令字,如果遠程終端接受總線(xiàn)控制,總線(xiàn)控制權就交給了這個(gè)遠程終端。
(3)啟動(dòng)自檢測:總線(xiàn)控制器可以用指令使遠程終端激活其內部的自檢電路。
3 總線(xiàn)控制器的軟件設計
由于BC在總線(xiàn)上面的特殊性,其軟件設計的好壞將直接影響整個(gè)系統通訊的流暢、可靠,軟件設計歸結起來(lái)有以下幾個(gè)注意的地方:
(1)中斷方式的選擇:對于總線(xiàn)消息而言,都是總線(xiàn)控制器將這些消息組織成一個(gè)一個(gè)的總線(xiàn)幀來(lái)傳輸的,一幀也就是平時(shí)說(shuō)的一個(gè)總線(xiàn)周期。在設計軟件中斷時(shí)可以采用單個(gè)消息觸發(fā)一次中斷,也可以選擇一個(gè)總線(xiàn)周期進(jìn)一次中斷,當然最快的就是單個(gè)消息就進(jìn)入中斷,這樣可以保證每個(gè)消息結束后就能夠馬上得到處理,實(shí)時(shí)性好。但是每條消息都執行中斷程序無(wú)疑對軟件運行效率也是有影響的,所以減少中斷次數對軟件系統還是有利的,但是減少進(jìn)中斷次數又是以犧牲系統實(shí)時(shí)性為代價(jià)的,兩者相比較筆者建議如果通訊數據量不是很大的情況下盡量采用單條消息中斷的方式,同時(shí)盡量簡(jiǎn)化中斷程序執行的代碼,提高程序的效率。如果有多個(gè)RT且數據量很大,可以考慮一個(gè)周期進(jìn)行一次中斷。
評論