付禹 馬曉凱
摘 要:機(jī)載設(shè)備中,1553B總線因其冗余度高,響應(yīng)速度快的優(yōu)勢(shì)而被廣泛應(yīng)用。進(jìn)行編程時(shí),通過(guò)使用鏈接庫(kù),可在不了解詳細(xì)構(gòu)造的環(huán)境下,僅通過(guò)調(diào)用頂層函數(shù)便可實(shí)現(xiàn)對(duì)不同廠家接口模塊的編程。本文從1553B總線的構(gòu)造出發(fā),通過(guò)比較靜態(tài)鏈接庫(kù)和動(dòng)態(tài)鏈接庫(kù)的區(qū)別,給出了一種通過(guò)調(diào)用靜態(tài)鏈接庫(kù)與1553B總線接口模塊通訊的編程方法。
關(guān)鍵詞:靜態(tài)鏈接庫(kù) 1553B總線 通訊編程
中圖分類號(hào):TP316 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2018)02(a)-0012-02
Abstract: 1553B bus is widely used in airborne equipment because of it's high redundancy and fast response.When using the 1553b interface module for software programming,by using the static link library to achieve different business interface modules,we do not have to know the detailed structure,we can directly call the top-level function to use the excuse module.this paper presents the 1553b bus structure,then make a compare of the static link library and the dynamic link library,at the last presents a method of 1553b programming based on static link library.
Key Words: Static link library; 1553b bus; Communication programming
1553B總線起初是美國(guó)軍方為機(jī)載設(shè)備制定的一種標(biāo)準(zhǔn)數(shù)據(jù)信息傳輸協(xié)議。由于1553B總線具有冗余度高,傳輸速度快,傳輸數(shù)據(jù)量大的優(yōu)勢(shì),迅速被不同國(guó)家廣泛應(yīng)用于各個(gè)領(lǐng)域。開(kāi)發(fā)商可根據(jù)不同的用途及環(huán)境對(duì)接口模塊進(jìn)行專業(yè)定制,以滿足用戶需求。本文詳細(xì)介紹了1553B總線的組成和特點(diǎn),并對(duì)在軟件編程中使用動(dòng)態(tài)鏈接庫(kù)和靜態(tài)鏈接庫(kù)進(jìn)行了比較,最后給出了一種通過(guò)調(diào)用靜態(tài)鏈接庫(kù)與1553B總線接口模塊通訊的編程方法。
1 1553B總線的組成
1553B總線的工作頻率為1Mb/s,工作方式為半雙工,具有雙冗余結(jié)構(gòu)。1553B總線由3個(gè)部分組成,分別為總線控制器(BC)、遠(yuǎn)程終端(RT)、總線監(jiān)視器(BM)。
(1)總線控制器BC。BC作為1553B總線的控制終端,具有建立和啟動(dòng)數(shù)據(jù)傳輸?shù)墓δ?。它?553B總線的司令部,能夠向子設(shè)備RT發(fā)送控制命令。通過(guò)給鏈接到總線上的子設(shè)備分配不同的RT子地址,只需使用一個(gè)BC,便可實(shí)現(xiàn)對(duì)所有子設(shè)備的控制。同時(shí)在1553B總線的標(biāo)準(zhǔn)中只規(guī)定了送到總線上的數(shù)據(jù)格式,對(duì)BC的工作方式?jīng)]有做出具體規(guī)定,這給使用1553B總線進(jìn)行設(shè)備控制帶來(lái)了很大的自由度。使用者只需應(yīng)用標(biāo)準(zhǔn)的數(shù)據(jù)格式,即可自主設(shè)計(jì)RT的個(gè)數(shù)以及整個(gè)系統(tǒng)的鏈接方法。1553B更大的優(yōu)勢(shì)在于,板卡能夠在BC模式和RT模式間進(jìn)行轉(zhuǎn)換,這就在更大程度上擴(kuò)展了系統(tǒng)結(jié)構(gòu)的設(shè)計(jì)方法。
(2)遠(yuǎn)程終端RT。RT在1553B總線起到接收總線控制數(shù)據(jù)的作用,它只能接收BC發(fā)送的數(shù)據(jù)并進(jìn)行應(yīng)答,無(wú)法主動(dòng)向總線傳送數(shù)據(jù),是總線中接收命令的結(jié)構(gòu)。如今,RT的使用分為兩種情況:嵌入式和非嵌入式?,F(xiàn)在很多RT已經(jīng)嵌入子設(shè)備,并作為子設(shè)備的一部分參與總線數(shù)據(jù)接收。除數(shù)據(jù)接收外,RT還具有緩存有用的數(shù)據(jù)、將數(shù)據(jù)傳送給子設(shè)備進(jìn)行分析處理、檢測(cè)傳輸錯(cuò)誤以及確認(rèn)數(shù)據(jù)有效的功能。由于1553B總線雙冗余結(jié)構(gòu)的存在,RT需要同時(shí)處理兩條總線發(fā)送的數(shù)據(jù)和命令。
(3)總線監(jiān)視器BM??偩€監(jiān)視器BM的作用是監(jiān)視和記錄總線上傳輸?shù)拿詈蛿?shù)據(jù),它受BC控制,不參與任何數(shù)據(jù)傳輸?shù)倪^(guò)程。BM有兩種工作模式:一種是字監(jiān)視模式,它監(jiān)聽(tīng)總線上所有的消息字;另一種是選擇監(jiān)視模式,只對(duì)指定的RT地址進(jìn)行監(jiān)視。
2 使用靜態(tài)鏈接庫(kù)和動(dòng)態(tài)鏈接庫(kù)在編譯上的差異
在對(duì)接口模塊進(jìn)行編程的過(guò)程中,需要根據(jù)接口模塊開(kāi)發(fā)商提供的軟件接口文件,達(dá)到使用不同的接口模塊的目的。軟件接口文件,就是庫(kù)文件,庫(kù)文件分兩種,即靜態(tài)鏈接庫(kù)和動(dòng)態(tài)鏈接庫(kù)。靜態(tài)鏈接是在鏈接階段,將源文件中使用的庫(kù)文件與通過(guò)匯編生成的目標(biāo)文件和并后生成的可執(zhí)行文件,而這種鏈接方式的好處在于,方便程序的移植,因?yàn)楫a(chǎn)生的可執(zhí)行文件和庫(kù)文件再無(wú)關(guān)系,所以,它可以直接應(yīng)用到任何環(huán)境。它的缺點(diǎn)在于,產(chǎn)生的文件內(nèi)存過(guò)大,同時(shí)也因?yàn)楫a(chǎn)生的可執(zhí)行文件和庫(kù)文件毫無(wú)關(guān)系,在需要對(duì)庫(kù)文件進(jìn)行更改升級(jí)時(shí),需要對(duì)靜態(tài)鏈接庫(kù)進(jìn)行重新編譯,很不方便。而動(dòng)態(tài)鏈接庫(kù)的產(chǎn)生就完全規(guī)避了這些缺點(diǎn),它將函數(shù)的可執(zhí)行代碼置于另一個(gè)DLL文件中,多個(gè)程序可以同時(shí)訪問(wèn)存在內(nèi)存中的同一DLL的內(nèi)容,產(chǎn)生的文件內(nèi)存很小。同時(shí),在需要庫(kù)文件進(jìn)行更改升級(jí)時(shí),只需要更改DLL文件中的內(nèi)容,無(wú)需對(duì)源程序進(jìn)行重新編譯。而它的缺點(diǎn)在于,程序?qū)LL依賴性過(guò)大,當(dāng)DLL被更改或者刪除時(shí),程序無(wú)法正常運(yùn)行。同時(shí),由于DLL文件的特點(diǎn),它的可移植性較差。
3 一種使用靜態(tài)鏈接庫(kù)對(duì)1553B通訊接口模塊進(jìn)行通訊編程的方法
本文講述的編程方法建立在WINDOWS7操作系統(tǒng)平臺(tái)上,使用XE7編程軟件和C++語(yǔ)言編寫完成。首先,在源程序中加入1553B模塊開(kāi)發(fā)商提供的頭文件和庫(kù)文件。例如:在源文件中添加include"mbi.h"的同時(shí),將提供的mbi.lib庫(kù)文件通過(guò)XE7軟件中的Project->Add to Project方式添加到源文件中。其次,使用提供的軟件接口函數(shù)查找1553b模塊的驅(qū)動(dòng)是否安裝成功。當(dāng)成功檢測(cè)到安裝的接口模塊后,需要定義1553b總線表格式以及1553B模塊使用模式。例如:
unsigned bus[2][8],//1553B總線表定義
INCOM rcom[30]; //輸入通信表設(shè)置
OUTCOM tcom[30]; //輸出通信表設(shè)置
unsigned short rcomlen[2]; //輸入通信表長(zhǎng)度
unsigned short tcomlen[2]; //輸出通信表長(zhǎng)度
init(&rcom;[0],&tcom;[0],0);//初始化1553B總線,并設(shè)置1553B模塊的工作方式。
最后,使用開(kāi)發(fā)商提供的1553B模塊的讀寫函數(shù)啟動(dòng)總線表,進(jìn)行總線上的數(shù)據(jù)傳輸。
4 結(jié)語(yǔ)
本文通過(guò)對(duì)1553B的總線結(jié)構(gòu)進(jìn)行研究,并對(duì)軟件設(shè)計(jì)過(guò)程中使用靜態(tài)鏈接庫(kù)和動(dòng)態(tài)鏈接庫(kù)在編譯上的差異進(jìn)行分析,給出了一種利用靜態(tài)鏈接庫(kù)與1553B接口模塊通訊的編程方法,經(jīng)過(guò)一段時(shí)間的運(yùn)行調(diào)試,此種方法可以運(yùn)用在大多數(shù)與1553B接口模塊進(jìn)行通訊的編程中。
參考文獻(xiàn)
[1] 吳云忠.基于pci接口的1553b總線控制軟件設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2013,36(24):47-49.
[2] 劉士全,雋揚(yáng),蔡潔明,等.1553B總線應(yīng)用發(fā)展研究[J].電子與封裝,2013,13(12):12-15.
[3] 張榮鋒,朱堅(jiān),夏文元,等.基于pci總線的1553b總線接口電路的設(shè)計(jì)與實(shí)現(xiàn)[J].紅外,2008,29(1):41-45.
[4] DDC Data Device Corporation.MIL-STD-1553A/B Designer's Guide[Z].
[5] DDC MIL-STD-1553B Designer's Guide[Z].
[6] 羅至強(qiáng).航空電子綜合化系統(tǒng)[M].北京:北京航空航天大學(xué)出版社,1990.