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