, ,
(1.商洛學(xué)院,商洛 726000; 2.中國科學(xué)院西安光學(xué)精密機械研究所,西安 710119;3.西安交通大學(xué),西安 710049)
基于CAN總線的高可靠成像控制系統(tǒng)設(shè)計
李華1,3,朱波2,鄭培云2
(1.商洛學(xué)院,商洛726000; 2.中國科學(xué)院西安光學(xué)精密機械研究所,西安710119;3.西安交通大學(xué),西安710049)
為了實現(xiàn)多套成像設(shè)備的智能化控制,設(shè)計了基于CAN總線的成像控制系統(tǒng),并給出了設(shè)計中關(guān)鍵技術(shù)的解決方法;首先,給出了可靠性高的熱備份CAN總線控制系統(tǒng)硬件設(shè)計原理;其次,介紹了基于FPGA的CAN總線協(xié)議芯片—SJA1000邏輯控制原理與方法;最后結(jié)合實際工程項目闡述了控制系統(tǒng)的工作過程;試驗結(jié)果表明,該設(shè)計性能穩(wěn)定、可靠性高,能夠滿足多臺成像系統(tǒng)的智能化控制;設(shè)計理念和方法具有通用性,系統(tǒng)的可擴展性強。
成像系統(tǒng);CAN;FPGA;熱備份;時序
成像系統(tǒng)在各行各業(yè)發(fā)揮著越來越重要的作用,傳統(tǒng)的成像系統(tǒng)都是一個控制單元控制一套成像系統(tǒng),控制往往采用RS422總線等點對點的形式,在成像系統(tǒng)只有一套時,這樣的設(shè)計性能穩(wěn)定、可靠性高,在一些對可靠性要求較高的場合,如航天、航空等,仍具有較普遍的應(yīng)用[1-2]。但是,隨著成像系統(tǒng)的發(fā)展,單臺成像系統(tǒng)已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足應(yīng)用需要,必須增加成像系統(tǒng)的單機數(shù)量,不同單機完成不同的功能,但是,隨著單機數(shù)目的增加,控制單元的負(fù)擔(dān)也越來越重,采用傳統(tǒng)的點對點通訊形式無論是效率,還是可靠性方面都不能滿足要求。
本文在充分調(diào)研國內(nèi)外相關(guān)控制技術(shù)的基礎(chǔ)上,研制了基于CAN總線的分布式成像控制系統(tǒng)。該系統(tǒng)采用了主從結(jié)合的體系結(jié)構(gòu),硬件設(shè)計采用了雙CAN協(xié)議芯片熱備份設(shè)計,極高的提高了整個成像系統(tǒng)的可靠性。通過CAN總線進行組網(wǎng)通信,可快速靈活的搭建好控制平臺,根據(jù)不同的需求,控制不同的單機進行工作[3-4],改變相應(yīng)的成像參數(shù),同時獲取單機的工作狀態(tài),從而達到完美成像的目的。
本系統(tǒng)總體如圖1所示。系統(tǒng)總共由三臺相機和一套控制單元組成,三臺相機根據(jù)需要在不同時段,使用不同參數(shù)進行相應(yīng)圖像的輸出,控制單元協(xié)調(diào)三臺相機完成工程任務(wù)。
控制單元控制三臺相機的指令參數(shù)包括:曝光時間(1~47 ms可調(diào))、幀頻(20 f/s、10 f/s、5 f/s三擋可調(diào))、增益(3檔可調(diào))、自動/手動曝光切換、校時(配合秒脈沖對相機進行時間修正)、初始化(相機AD配置參數(shù))等;而相機則需要在收到遙測請求指令3 ms內(nèi),將相機當(dāng)前工作狀態(tài)以遙測參數(shù)的形式返回給控制單元。可以看出,整個控制系統(tǒng)指令龐雜,實時性要求高,給設(shè)計帶來一定挑戰(zhàn)。
圖1 系統(tǒng)框圖
針對以上任務(wù)需求,本設(shè)計采用CAN總線作為指令、遙測傳輸通道,其中,CAN總線協(xié)議芯片使用業(yè)內(nèi)比較成熟的SJA1000,接口芯片選用PCA82C250,工作方式為增強型CAN(PeliCAN)模式,使用標(biāo)準(zhǔn)幀格式傳輸,每個CAN幀長度11字節(jié),數(shù)據(jù)前3字節(jié)為頭部信息,傳輸速率為500 Kbps。SJA1000的配置、數(shù)據(jù)發(fā)送與接收等操作由FPGA進行控制,滿足了系統(tǒng)工作需要。
相機通訊系統(tǒng)的硬件組成如圖2所示。其中,F(xiàn)PGA模塊選用Xilinx公司Virtex II系列的XC2V3000,其核電壓為+1.5 V,輔助電壓為+3.3 V,接口電壓本設(shè)計取+3.3 V。CAN總線通訊模塊采用Philips公司生產(chǎn)的SJA1000作為CAN控制器芯片,PCA82C250作為CAN總線收發(fā)器。對于 Virtex II系列的FPGA而言,接口電平不支持5 V I/O標(biāo)準(zhǔn),如果與5 V I/O標(biāo)準(zhǔn)的SJA1000直接相連,將可能導(dǎo)致FPGA管腳通過極大電流,造成器件的永久損壞。為了兼容電平差異,設(shè)計上采用了一片TI公司的雙向總線收發(fā)器SN54L VTH16245,將SJA1000的5 V TTL電平數(shù)據(jù)信號AD0~AD7、中斷信號INT轉(zhuǎn)換成3.3 V I/O標(biāo)準(zhǔn)信號,連接到FPGA的相應(yīng)引腳上,而SJA1000讀寫控制信號CS、WR、RD、ALE對于FPGA來說是輸出信號,因此,直連至SJA1000相應(yīng)的管腳即可。
為了增加系統(tǒng)的可靠性,適應(yīng)復(fù)雜的工作環(huán)境,本設(shè)計使用了兩片SJA1000芯片,構(gòu)成熱備結(jié)構(gòu)。為了節(jié)約總線資源,SJA1000采用數(shù)據(jù)總線共用的形式,即兩片SJA1000的數(shù)據(jù)總線在經(jīng)過SN54L VTH16245芯片前進行了2合1操作,合并后的信號經(jīng)過SN54L VTH16245后進入FPGA進行處理。而兩片SJA1000的控制信號則分別進入FPGA進行控制,保證了兩片SJA1000操作的獨立性,不會造成數(shù)據(jù)丟失。
該硬件設(shè)計的兩片SJA1000互為備份,正常工作時通過SJA1000A進行通訊,如果A路出現(xiàn)故障,立即切換至SJA1000B進行通訊,同時對SJA1000A進行復(fù)位初始化操作,極大的提高了系統(tǒng)的可靠性和環(huán)境適應(yīng)能力。
圖2 SJA1000熱備份硬件設(shè)計
邏輯設(shè)計是本系統(tǒng)的核心,整個控制過程由一片F(xiàn)PGA完成,主要功能包括:系統(tǒng)主邏輯控制、初始化SJA1000、寫SJA1000和讀SJA1000。在介紹SJA1000具體操作之前,先對CAN總線的數(shù)據(jù)格式和本設(shè)計應(yīng)用層數(shù)據(jù)協(xié)議簡要介紹。
CAN協(xié)議規(guī)定了兩種不同的幀格式,不同之處為標(biāo)識符的長度,具有11位標(biāo)識符的幀稱之為標(biāo)準(zhǔn)幀,具有29位標(biāo)識符的幀被稱為擴展幀。本設(shè)計根據(jù)項目需求,使用標(biāo)準(zhǔn)幀進行數(shù)據(jù)傳輸,一幀CAN數(shù)據(jù)幀共11字節(jié),其中前3字節(jié)為幀頭,用于數(shù)據(jù)鏈路層的控制,后面8字節(jié)為用戶數(shù)據(jù)。幀頭1~幀頭3與SJA1000的地址16、17、18對應(yīng),用戶數(shù)據(jù)與SJA1000的地址19~26對應(yīng)。
應(yīng)用層數(shù)據(jù)在CAN總線上傳輸之前,若總數(shù)據(jù)量少于等于8字節(jié),則按照CAN總線單幀數(shù)據(jù)域結(jié)構(gòu)組織數(shù)據(jù),組成CAN單幀傳輸幀傳送。若總數(shù)據(jù)量大于8字節(jié),則按照CAN總線復(fù)合幀數(shù)據(jù)域結(jié)構(gòu)組織數(shù)據(jù),組成CAN復(fù)合幀傳輸幀傳送。復(fù)合幀首幀最先發(fā)送,之后按照順序發(fā)送中間幀,最后發(fā)送尾幀。
基于SJA1000的控制系統(tǒng)其工作實際就是按照協(xié)議接收指令并按照要求組幀發(fā)送數(shù)據(jù)的過程,也就是在一個主控邏輯的指揮下完成SJA1000的初始化、讀、寫等操作[5]。
3.1 主控邏輯
本系統(tǒng)的主控邏輯如圖3所示。
圖3 本系統(tǒng)主控時序
分析圖3可以看出,系統(tǒng)的主控邏輯由一個大的狀態(tài)機組成,其工作過程如下:系統(tǒng)上電穩(wěn)定后,F(xiàn)PGA首先對兩片SJA1000芯片進行初始化,然后啟動狀態(tài)機進入IDLE狀態(tài)等待SJA1000芯片中斷的到來,此時,如果是SJA1000A產(chǎn)生的中斷,F(xiàn)PGA就開始對SJA1000A進行讀操作,根據(jù)讀取到的指令進行下一步工作,期間如果SJA1000B有中斷到來,先將其寄存,等待FPGA將SJA1000A的數(shù)據(jù)處理完畢,接著再讀取SJA1000B內(nèi)的數(shù)據(jù),并進行相應(yīng)的后續(xù)處理工作。以上操作完成后,狀態(tài)機重新進入IDLE,等待下一次中斷的到來。同理,如果是SJA1000B的中斷先來,就先處理B內(nèi)的數(shù)據(jù)。如此往復(fù)就可以控制兩片SJA1000連續(xù)工作,完成控制系統(tǒng)指令和遙測參數(shù)的處理。
3.2 初始化SJA1000
對SJA1000進行初始化是一切操作的開始,也是最重要的一步,系統(tǒng)通過配置相關(guān)的寄存器,完成SJA1000芯片的初始化。值得注意的是,SJA1000的寄存器配置只能在芯片復(fù)位模式下進行,所以應(yīng)該對SJA1000實行有效的復(fù)位操作。初始化過程就是依次對總線定時寄存器0、總線定時寄存器1、輸出控制寄存器、時鐘分頻器、驗收代碼寄存器、驗收屏蔽寄存器、中斷使能寄存器等7類寄存器進行尋址和賦值。
在SJA1000需要初始化的寄存器中,最重要的是驗收代碼寄存器(ACR)和驗收屏蔽寄存器(AMR)。ACR和AMR是CAN總線實現(xiàn)點對點、一點對多點的重要寄存器。其中,AMR是專門為實現(xiàn)一點對多點而設(shè)置的寄存器,因為CAN控制器實際對網(wǎng)絡(luò)數(shù)據(jù)的標(biāo)識符和本身的ACR值進行比較時還要參考ARM值,當(dāng)AMR中某位為1時也就意味著ACR中的該位被屏蔽,任意值都可以接收,也即只比較AMR寄存器中位置為0的位,只要他們符合就接收。
以設(shè)置雙濾波,接收標(biāo)識符ID.28~ID.18為0000_1010,010和ID.28~ID.18為0110_1011,111的兩類CAN標(biāo)準(zhǔn)幀為例,在PeliCAN模式下,設(shè)置驗收代碼寄存器ACR0=0x0A、ACR1=0x40、ACR2=0x6B、ACR3=0xE0;根據(jù)雙濾波器時信息幀與濾波器的位對應(yīng)關(guān)系,將需要參與濾波的信息位對應(yīng)的驗收屏蔽寄存器位設(shè)置為0,設(shè)置AMR0=0x00,AMR1=0x0F、AMR2=0x00、AMR3=0X0F。其他ID的標(biāo)準(zhǔn)幀則會被過濾,不會產(chǎn)生INT中斷。此時,如果還需要接收標(biāo)識符ID.28~ID.18為0000_1011,010的標(biāo)準(zhǔn)幀,則需要將AMR0設(shè)置為0x01,告訴SJA1000對ID.21位進行屏蔽,任意值都可以通過。
本系統(tǒng)SJA1000時鐘為16 MHz,CAN總線的通訊波特率為500 Kbps,需要處理的幀類型有三類,因此,7類13個寄存器的值分別設(shè)置為:0x00、0x1C、0x1A、0xC7、0x20、0x00、0x02、0x00、0x01、0x0F、0x00、0x0F、0x01。寄存器設(shè)置完后,SJA1000初始化完成,就可以進行CAN總線的讀寫操作[6-7]。
3.3 讀SJA1000操作
FPGA對SJA1000的讀操作是通過INT管腳的狀態(tài)觸發(fā)的,在初始化SJA1000時,設(shè)置接收中斷使能,即如果SJA1000的緩存中有數(shù)據(jù)時,會觸發(fā)SJA1000的INT管腳電平由高變低。此時,F(xiàn)PGA就執(zhí)行圖4所示的讀操作,將SJA1000內(nèi)的數(shù)據(jù)讀取到FPGA的相關(guān)寄存器內(nèi)。當(dāng)FPGA將SJA1000中的數(shù)據(jù)讀取,并釋放緩沖器后,INT管腳電平又由低變高,等待下一次數(shù)據(jù)的到來。
圖4 讀SJA1000流程圖
SJA1000的讀流程時序波形如圖5所示??梢钥闯觯x過程由4個步驟組成,在ALE、CS和RD時序有效的情況下,先判斷SR寄存器的值,然后將SJA1000接收緩存器中的數(shù)據(jù)讀出,最后再進行中斷清除和釋放接收緩存器操作。對照SJA1000手冊可知,本設(shè)計完全滿足要求。
圖5 讀SJA1000時序仿真波形
3.4 寫SJA1000操作
FPGA對SJA1000的寫操作是通過向SJA1000相應(yīng)的寄存器寫入要發(fā)送的值完成。當(dāng)相機收到控制單元發(fā)送的指令時,首先進行判斷,如果是遙測請求,則按照協(xié)議要求以復(fù)合幀的形式向控制單元發(fā)送三包遙測參數(shù),用于反映相機當(dāng)前的狀態(tài)。寫SJA1000時首先判斷SJA1000芯片當(dāng)前是否在接收、發(fā)送數(shù)據(jù),如果是則等待10 μs(根據(jù)系統(tǒng)指令長度和工作頻率決定),再進行判斷,如果SJA1000完成了數(shù)據(jù)的收、發(fā),則將需要發(fā)送的數(shù)據(jù)寫入發(fā)送緩存器,如果沒有則進行恢復(fù)操作,即對SJA1000進行初始化。數(shù)據(jù)寫入操作完成后,須執(zhí)行發(fā)送命令,即對CMR.0位寫入0x01,最后釋放緩存器,以等待下一次操作。具體的操作流程如圖6所示。
圖6 寫SJA1000流程圖
按照圖6所示的流程,寫SJA1000時序仿真波形如圖7所示,可以看出,整個寫過程由4個步驟組成,完成一個數(shù)據(jù)包的寫操作。在ALE、CS和WR有效的情況下先判斷SR的狀態(tài)是否滿足發(fā)送條件,如果滿足,將需要發(fā)送的數(shù)據(jù)寫入SJA1000的相關(guān)寄存器,再釋放接收緩存器。對照SJA1000手冊可知,設(shè)計完全滿足要求。
圖7 寫SJA1000時序仿真波形
按照以上章節(jié)思路進行系統(tǒng)硬件設(shè)計,兩片SJA1000構(gòu)成熱備通訊系統(tǒng),數(shù)據(jù)信號和中斷信號經(jīng)過一片SN54LVTH16245后進入FPGA,控制信號從FPGA直連至SJA1000。物理層連接方面,SJA1000 的TX0口和RX0口分別和PCA82C250的TXD口和RXD口相連接,PCA82C250通過帶有差動發(fā)送和接收功能的兩個總線終端CAN_H和CAN_L連接到外部總線,為了匹配阻抗,提高信號傳輸?shù)目煽啃裕珻AN_H與CAN_L之間端接了120 Ω的電阻。
圖8 指令發(fā)送與接收界面
相機硬件設(shè)計完畢,通過地面檢測設(shè)備模擬控制單元和相機進行通訊,通訊界面如圖8所示。當(dāng)發(fā)送遙測請求指令(02 20 00 00 FF)時,相機會向地檢連續(xù)返回由3條指令(即幀頭為08 A0 E0、08 A0 C0、08 A0 A0的三條指令)構(gòu)成的遙測數(shù)據(jù)包,其內(nèi)容按照約定協(xié)議填充,包括:曝光參數(shù)、指令計數(shù)、電壓遙測等;當(dāng)發(fā)送控制指令時,相機會判斷指令的對錯,如果指令對(如30 ms曝光:05 20 00 0A 97 1E 01 C0)則返回指令接收正確(03 A1 00 3D 97 AA),如果指令錯(如錯誤曝光指令:05 20 00 0A 97 12 01 B4),則返回指令接收錯誤(03 A1 00 3D 97 55)。結(jié)合圖8中其它指令的發(fā)送和響應(yīng),可以看出,指令握手嚴(yán)格、響應(yīng)及時,設(shè)計完全滿足成像系統(tǒng)的控制需求,具有較高的可靠性。
由于CAN總線結(jié)構(gòu)簡單、通信速率高、可靠性好、連接方便、通信協(xié)議簡單,且具有統(tǒng)一的國際標(biāo)準(zhǔn),被公認(rèn)為最有前途的現(xiàn)場總線之一,因此,工業(yè)上得到了普遍的應(yīng)用,近些年,隨著對CAN總線的認(rèn)可,航天應(yīng)用也越來越普遍。本設(shè)計通過FPGA控制SJA1000實現(xiàn)CAN總線通信,可擴展性好,穩(wěn)定性高,降低了應(yīng)用系統(tǒng)的重量、體積以及功耗,同時為了進一步提高CAN總線通信系統(tǒng)的可靠性,設(shè)計了基于雙SJA1000芯片的熱備結(jié)構(gòu),經(jīng)過實際工程項目檢驗,證明了其良好的效果。目前,該控制系統(tǒng)已在工程項目中獲得了成功的應(yīng)用。
[1]趙慶磊,龍科慧,韓誠山,等.空間TDICCD相機的在軌成像參數(shù)重注[J].航空學(xué)報,2014,35(8):2271-2278.
[2]韓紅霞,孫 航,曹立華.基于FPGA的紅外相機時序構(gòu)造設(shè)計[J].液晶與顯示,2014,29(3):370-376.
[3]劉 鑫,林兆華,杜璧秀.CAN總線分布式自動調(diào)焦控制系統(tǒng)設(shè)計[J].國外電子測量技術(shù),2014,33(8):44-48.
[4]毛 晴,梁 軍,劉 贊.基于FPGA的通用開放式星載陀螺模擬器設(shè)計[J].計算機測量與控制,2016,24(5):160-166.
[5]徐木水,劉金國.基于FPGA的CAN總線通信接口的設(shè)計[J].電子設(shè)計工程, 2010,18(18):96-99.
[6]孟 磊.基于CAN總線技術(shù)的汽車數(shù)字儀表的研究[D].西安:西安電子科技大學(xué),2011.
[7]關(guān)俊強,左麗麗,吳維林.基于FPGA和CAN控制器軟核的CAN總線發(fā)送系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機測量與控制,2016,24(3):281-284.
DesignofHighReliabilityImagingControlSystemBasedonCANBus
Li Hua1,3, Zhu Bo2, Zheng Peiyun2
(1.Shangluo University, Shangluo 726000, China;2.Xi′an Institute of Optics and Precision Mechanics, Chinese Academy of Sciences, Xi′an 710119, China;3.Xi′an Jiao tong University, Xi′an 710049, China)
In order to achieve intelligent control of many sets of imaging systems, this paper presents an imaging control system based on CAN bus,and introduces how to solve some problems of key technology on the design.Firstly, hardware design principle of high reliability thermal back-up CAN bus control system is given; Then, logic control principle and method of SJA1000 chip based on FPGA is introduced; Finally, combined with the actual engineering project the working process of the control system is expounded.Experimental results proved that this system has advantages of stable and reliable, which can achieve intelligent control of more than one imaging system.The concept and method of this design is versatile, so the system has good universality.
imaging system; CAN; FPGA; thermal back- up; timing
2017-03-24;
2017-04-10。
國家自然科學(xué)基金項目(61273366);陜西省自然科學(xué)基礎(chǔ)研究計劃(2016JM6060)。
李 華(1980-),女,陜西西安人,副教授,主要從事基于可編程邏輯器件的圖像處理相關(guān)與教學(xué)工作方向的研究。
1671-4598(2017)10-0069-04
10.16526/j.cnki.11-4762/tp.2017.10.019
TP274
A