基于CAN的大客飛機(jī)航電系統(tǒng)局域網(wǎng)通信設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:提出一種基于CAN總線的大客飛機(jī)航電系統(tǒng)局域網(wǎng)通信仿真系統(tǒng)設(shè)計(jì)方法,探討了CAN總線在航電總線中應(yīng)用的優(yōu)點(diǎn)及可能性。仿真系統(tǒng)硬件通過CAN總線通信卡及工控機(jī)實(shí)現(xiàn),軟件通過模塊化設(shè)計(jì)方法實(shí)現(xiàn)。通信仿真系統(tǒng)實(shí)現(xiàn)了各子系統(tǒng)相關(guān)數(shù)據(jù)的傳送、處理,以及相關(guān)信息的實(shí)時(shí)顯示。應(yīng)用表明,局域網(wǎng)通信系統(tǒng)工作正常、性能良好,能實(shí)現(xiàn)測試設(shè)備之間高速率的數(shù)據(jù)傳輸與轉(zhuǎn)換,具有良好的實(shí)用價(jià)值。
關(guān)鍵詞:大客飛機(jī);CAN總線;局域網(wǎng)通信;CAN總線通信卡
0 引言
在大客飛機(jī)機(jī)載設(shè)備中,大量信息在系統(tǒng)與系統(tǒng)、系統(tǒng)與部件之間傳遞。為了讓機(jī)載設(shè)備之間完成實(shí)時(shí)、準(zhǔn)確地通信,盡量減少航電系統(tǒng)電氣連線的復(fù)雜性,提高航電系統(tǒng)控制的靈活性,而能與其他子系統(tǒng)進(jìn)行合理通信,必須選用一種合適的總線承擔(dān)此任務(wù)。CAN(Controll er Area Network)總線以其獨(dú)特的設(shè)計(jì)思想、優(yōu)良的性能和極高的可靠性,足以完成上述任務(wù),所以選用CAN總線來開發(fā)航電系統(tǒng)局域網(wǎng)通信仿真系統(tǒng),這是CAN總線在航空領(lǐng)域應(yīng)用的一次新的嘗試。
文中采用CAN總線仿真大客飛機(jī)航電系統(tǒng)局域網(wǎng)通信,是以CAN總線為傳輸總線,以工控機(jī)作為子系統(tǒng)仿真機(jī)的通信系統(tǒng),采用總線型拓?fù)浣Y(jié)構(gòu)。其目的在于仿真飛機(jī)某些子系統(tǒng)的功能、總線通信情況,測試整個(gè)仿真系統(tǒng)的工作情況,重點(diǎn)檢驗(yàn)系統(tǒng)工作狀態(tài)和邏輯時(shí)序的正確性,為CAN總線在航空領(lǐng)域的應(yīng)用提供案例。
1 仿真系統(tǒng)的功能
CAN總線通信仿真系統(tǒng)分為六個(gè)子系統(tǒng),仿真系統(tǒng)需要實(shí)現(xiàn)子系統(tǒng)之間實(shí)時(shí)準(zhǔn)確的數(shù)據(jù)傳輸,根據(jù)用戶需求設(shè)置系統(tǒng)的通信參數(shù),如通信速率、通信方式、發(fā)送方式等,顯示系統(tǒng)參數(shù)、本機(jī)參數(shù)、通信參數(shù),實(shí)時(shí)顯示系統(tǒng)接收的最新數(shù)據(jù),保存通信記錄。
CAN總線通信仿真系統(tǒng)由硬件和軟件兩部分組成。硬件主要包括PCI_CAN通信接口板、仿真計(jì)算機(jī)、總線分線盒及CAN總線等,采用總線型拓?fù)浣Y(jié)構(gòu)。軟件主要任務(wù)是根據(jù)相應(yīng)工作狀態(tài)對數(shù)據(jù)進(jìn)行傳輸、處理以及顯示。CAN總線通信仿真系統(tǒng)的拓?fù)浣Y(jié)構(gòu)如圖1所示。
2 仿真系統(tǒng)的硬件設(shè)計(jì)
CAN總線通信卡是硬件設(shè)計(jì)的關(guān)鍵部分,主要由CAN總線接口部分、通信控制部分和PCI總線接口部分三大部分組成。電路設(shè)計(jì)原理框圖如圖2所示。
PCI協(xié)議芯片采用PCI9052,采用64 MB雙口RAM緩存,用復(fù)雜可編程邏輯器件CPLD和單片機(jī)89C51來控制數(shù)據(jù)的讀寫,以保證數(shù)據(jù)的完整性和時(shí)序性;CPLD采用EPM7128;CAN控制器采用SJA1000;收發(fā)器采用82C250;6N137用作光耦隔離。
2.1 CAN總線接口部分
CAN總線通信卡總線接口電路如圖3所示。
CAN總線通信控制部分主要由CAN總線控制器SJA1000、高速光耦6N137和CAN驅(qū)動(dòng)器PCA82C250組成。為了增強(qiáng)CAN總線節(jié)點(diǎn)的抗干擾能力,CAN控制器SJA1000的通信引腳TX0和RX0并不是直接與PCA82C250的TXD和RXD相連,而是在中間加入一級高速光耦6N137,這樣能很好地實(shí)現(xiàn)總線上各個(gè)CAN節(jié)點(diǎn)之問的電氣隔離,增強(qiáng)了抗干擾能力。光耦電路用的2個(gè)電源VCC和VDD必須隔離。電源的完全隔離可采用小功率電源隔離模塊實(shí)現(xiàn)。這雖然增加了接口電路的復(fù)雜性,但卻提高了節(jié)點(diǎn)的穩(wěn)定性和安全性。PCA82C250的RS腳上接一個(gè)斜率電阻。電阻大小可以根據(jù)總線通信速度適當(dāng)調(diào)整,一般在16~140 kΩ之間。SJA1000的初始化由單片機(jī)來完成,單片機(jī)通過控制SJA1000實(shí)現(xiàn)數(shù)據(jù)的接收和發(fā)送等通信功能。AD0~AD7連接到單片機(jī)的P0口,CS連接到單片機(jī)的P2.7口,P2.7為0時(shí),單片機(jī)CPU的片外存儲器地址可選中SJA1000,CPU通過這些地址可對SJA1000執(zhí)行相應(yīng)的讀/寫操作。SJA1000的RD,WR,ALE分別與單片機(jī)的相應(yīng)引腳相連,SJA1000的INT接單片機(jī)的INT0,單片機(jī)也可通過中斷方式訪問SJA1000。
2.2 通信控制部分
CAN總線通信控制部分如圖4所示,主要由CAN總線控制器SJA1000、單片機(jī)AT89S52和雙口RAMIDT7006組成,負(fù)責(zé)整個(gè)CAN總線通信控制以及和PCI局部總線的互連。雙口RAM作為CAN總線和PCI局部總線交換數(shù)據(jù)時(shí)的一個(gè)緩沖存儲區(qū)。單片機(jī)AT89S52是該通信卡通信控制的核心,它負(fù)責(zé)與雙口RAM以及CAN控制器SJA1000之間的通信。
將雙口RAM的INTR和單片機(jī)的外部中斷引腳INT1相連,當(dāng)PCI9052向雙口RAM傳輸完數(shù)據(jù)后,觸發(fā)雙口RAM中斷引腳INTR,進(jìn)而觸發(fā)單片機(jī)中斷,單片機(jī)執(zhí)行中斷服務(wù)程序,讀取雙口RAM中的數(shù)據(jù)。為了使SJA1000和AT89S52時(shí)鐘同步,將SJA1000的CLKOUT引腳接至AT89S52的時(shí)鐘輸入端,作為AT89S52的外部時(shí)鐘輸入。SJA1000接收到新的數(shù)據(jù)后,給出中斷信號INT,通過觸發(fā)中斷信號INT0讓單片機(jī)實(shí)時(shí)處理這些數(shù)據(jù),單片機(jī)把這些數(shù)據(jù)處理完成后,寫入雙口RAM指定的存儲單元后,再向雙口RAM的1FFEH單元寫入任意數(shù)據(jù),即可觸發(fā)雙口RAM左端中斷,使計(jì)算機(jī)接收數(shù)據(jù)。由于SJA1000的地址數(shù)據(jù)復(fù)用,AD0~AD7可直接將其接到單片機(jī)的P0口。雙口RAM地址和數(shù)據(jù)是分開的,通過74LS373和單片機(jī)P1口相連。
2.3 PCI總線接口部分
CAN總線通信卡PCI總線接口連接如圖5所示。
PCI總線接口電路主要是PCI總線和雙口RAM的連接電路。雙口RAM是PCI總線和CAN總線數(shù)據(jù)傳輸?shù)闹修D(zhuǎn)站,由于CAN總線相對于PCI總線而言傳輸速度較慢,為了充分利用PCI通道的高速特性,一般要將單片機(jī)處理后的CAN總線數(shù)據(jù)暫時(shí)緩存在外部存儲器中,當(dāng)存儲器寫滿時(shí)再利用PCI總線的突發(fā)、快速的特性,將存儲器數(shù)據(jù)一次性讀出。這樣,既充分利用了PCI接口的高性能,CPU又能空出時(shí)間來進(jìn)行數(shù)據(jù)處理和顯示等其他操作,從而增強(qiáng)數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性。
PCI9052本質(zhì)上是一個(gè)橋設(shè)備,它把PCI總線對某一段PCI總線地址空間的各種操作(包括讀、寫等)轉(zhuǎn)換為相應(yīng)的局部總線上的操作。把數(shù)據(jù)寫入E2PROM完成后,當(dāng)板卡上電,PCI9052從E2PROM中讀取數(shù)據(jù)并寫入PCI9052中的PCI寄存器和局部配置寄存器中。PC機(jī)(PCI主控設(shè)備)通過讀這些寄存器,得知系統(tǒng)中有多少存儲器以及I/O控制器要求分配相應(yīng)的地址空間,將相應(yīng)的基地址寫入PCI基址寄存器中。假設(shè)本設(shè)計(jì)中計(jì)算機(jī)給PCI9052分配的基地址為0x8400,由局部配置寄存器的值可知,本設(shè)計(jì)采用的是I/O映射,且空間大小為FFH,則計(jì)算機(jī)對I/O空間0x8400H~0x84FFH的訪問,就會通過PCI9052映射到局部空間0x00H~0xFFH。
3 仿真系統(tǒng)的軟件設(shè)計(jì)
系統(tǒng)軟件設(shè)計(jì)是在Windows XP環(huán)境下,用VisualC++6.0開發(fā),采用面向?qū)ο蟮脑O(shè)計(jì)方法。軟件主要包括主模塊、初始化模塊、控制模塊、數(shù)據(jù)管理模塊、通信模塊、顯示模塊和通信接口驅(qū)動(dòng)軟件等。軟件可以通過友好界面為用戶提供通過CAN總線進(jìn)行通信的雙方的設(shè)備號、端口號、波特率、數(shù)據(jù)等,可以初始化芯片,可以進(jìn)行復(fù)位操作,可以設(shè)置波特率。向用戶展示CAN總線的通信過程和結(jié)果,體現(xiàn)CAN線協(xié)議的功能。軟件流程圖如圖6所示。
3.1 主模塊
主模塊通過調(diào)用適當(dāng)?shù)墓δ苣K,控制系統(tǒng)初始化及整個(gè)系統(tǒng)軟件的流程。
3.2 初始化模塊
初始化模塊通過調(diào)用API函數(shù)進(jìn)行硬件初始化和軟件初始化。主要完成各子系統(tǒng)之間通信所需要的通道選擇、波特率、幀格式、工作方式、發(fā)送數(shù)據(jù)方式、發(fā)送數(shù)據(jù)周期等初始化設(shè)置。
3.3 控制模塊
控制模塊主要完成對系統(tǒng)狀態(tài)、通信以及顯示的控制,根據(jù)操作人員的操作及其他系統(tǒng)節(jié)點(diǎn)的相應(yīng)狀態(tài),確定系統(tǒng)運(yùn)行狀態(tài)與工作方式的控制與切換、有關(guān)數(shù)據(jù)通信的控制等。
3.4 數(shù)據(jù)管理模塊
本模塊主要完成系統(tǒng)運(yùn)行過程中,對將要發(fā)送的數(shù)據(jù)進(jìn)行實(shí)時(shí)的編碼,對接收到的有關(guān)數(shù)據(jù)塊進(jìn)行實(shí)時(shí)解碼。數(shù)據(jù)處理的主要功能是根據(jù)接口控制文件(ICD)文件數(shù)據(jù)塊的大小,配合發(fā)送、接收模塊完成數(shù)據(jù)幀的封裝和解析。ICD用C++的結(jié)構(gòu)類來表示,并且每個(gè)子系統(tǒng)對應(yīng)一個(gè)惟一的ICD文件,ICD文件里面存放有多個(gè)數(shù)據(jù),形成數(shù)據(jù)塊。數(shù)據(jù)發(fā)送時(shí)通過調(diào)用軟件發(fā)送函數(shù),將ICD文件中的參數(shù)通過編碼組成對應(yīng)的CAN總線信息幀數(shù)據(jù)場并以字節(jié)的形式進(jìn)行發(fā)送。
3.5 數(shù)據(jù)通信模塊
通信模塊通過調(diào)用通信卡上底層的API函數(shù),配合數(shù)據(jù)發(fā)送和數(shù)據(jù)接收等模塊完成對各個(gè)子系統(tǒng)的數(shù)據(jù)發(fā)送和接收功能。
CAN協(xié)議規(guī)定數(shù)據(jù)幀每幀最多攜帶8個(gè)字節(jié)的數(shù)據(jù)。如果數(shù)據(jù)塊的總字節(jié)數(shù)大于8,那么需要分成多幀傳送,并且準(zhǔn)確標(biāo)示數(shù)據(jù)幀序列號,分辨出幀數(shù)據(jù)場中的數(shù)據(jù)對應(yīng)數(shù)據(jù)塊中的第幾個(gè)數(shù)據(jù)。比如在封裝時(shí)有可能遇到封裝某一兩字節(jié)數(shù)據(jù)時(shí),本幀目前只能放下一個(gè)字節(jié)數(shù)據(jù),那么本幀將封裝低字節(jié),而高字節(jié)則被封裝進(jìn)下一幀。程序中設(shè)計(jì)int型變量ordernum標(biāo)示這種情況的封裝。接收時(shí)按封裝的反過程解析數(shù)據(jù)。
3.6 顯示模塊
顯示界面如圖7所示。
圖7中左端顯示各子系統(tǒng)ICD文件節(jié)點(diǎn)名稱,右上方顯示該子系統(tǒng)從其他子系統(tǒng)接收到的最新數(shù)據(jù),右下方顯示收到最新數(shù)據(jù)的物理值及在ICD文件中的屬性。狀態(tài)欄顯示系統(tǒng)狀態(tài)。
3.7 應(yīng)用層協(xié)議
應(yīng)用層協(xié)議并不屬于軟件編程的范疇,但是CAN 2.0協(xié)議只規(guī)定物理層和鏈路層的標(biāo)準(zhǔn),沒有規(guī)定應(yīng)用層通信協(xié)議,而數(shù)據(jù)的通信必須按照應(yīng)用層協(xié)議來封裝幀、解析幀。目前有很多成熟的工業(yè)協(xié)議可以選擇,但不完全符合本系統(tǒng)的要求,為此,專門制定了針對本系統(tǒng)的應(yīng)用層協(xié)議。
本軟件采用擴(kuò)展格式的數(shù)據(jù)幀進(jìn)行通信,擴(kuò)展幀的29位標(biāo)識符結(jié)構(gòu)設(shè)計(jì)如表1所示,應(yīng)用層信息幀格式如表2所示。
利用本應(yīng)用層協(xié)議傳輸數(shù)據(jù),可以從信息幀中獲取數(shù)據(jù)來源、順序、是否為最后一幀等信息,完全滿足了仿真系統(tǒng)通信的需要,較好地完成了各個(gè)子系統(tǒng)之間的通信。
4 結(jié)論
CAN總線具有很好的應(yīng)用前景,它采用非破壞基于優(yōu)先權(quán)仲裁技術(shù),可實(shí)現(xiàn)多主工作方式,傳輸時(shí)間短,受干擾概率低,系統(tǒng)靈活、可擴(kuò)展性強(qiáng),報(bào)文摒除了傳統(tǒng)的源地址、目標(biāo)地址的概念,僅用標(biāo)識符來指示功能信息、優(yōu)先級信息,安裝簡單,易于維護(hù),經(jīng)濟(jì)性好。該仿真系統(tǒng)已交付使用。使用結(jié)果表明,CAN總線局域網(wǎng)通信卡工作良好,系統(tǒng)工作正常,實(shí)現(xiàn)了各子系統(tǒng)之間的通信,人機(jī)界面友好,為大客飛機(jī)航電綜合控制系統(tǒng)不斷發(fā)展做好技術(shù)和物質(zhì)準(zhǔn)備。