電液伺服機(jī)構(gòu)與CAN總線(xiàn)接口設(shè)計(jì)
伺服機(jī)構(gòu)與CAN總線(xiàn)接口軟件的主要任務(wù)有:初始化、接收總線(xiàn)信息、向總線(xiàn)發(fā)送信息、受理中斷、數(shù)據(jù)運(yùn)算與輸入輸出控制。伺服機(jī)構(gòu)傳感器采集的信號(hào)存入指定發(fā)送子地址的數(shù)據(jù)緩沖區(qū)內(nèi),從彈上計(jì)算機(jī)接收的指令和數(shù)據(jù)則存入指定的接收子地址的數(shù)據(jù)緩沖區(qū)內(nèi)。當(dāng)接口收到彈上計(jì)算機(jī)的控制指令后,開(kāi)始對(duì)伺服機(jī)構(gòu)進(jìn)行控制。
初始化程序設(shè)計(jì)是本接口設(shè)計(jì)中重要的一個(gè)環(huán)節(jié)。在系統(tǒng)上電復(fù)位后,首先確定微處理器的設(shè)置,然后在SJA復(fù)位后,需要確定與通信有關(guān)的參數(shù),包括總線(xiàn)定時(shí)、各種寄存器和工作模式等。在系統(tǒng)運(yùn)行過(guò)程中,也可以發(fā)出一個(gè)復(fù)位請(qǐng)求,根據(jù)實(shí)現(xiàn)情況重新確定系統(tǒng)的通信參數(shù)。其初始化程序主要步驟有:
1)初始化微處理器,同時(shí)關(guān)閉與CAN控制器相連的外部中斷。
2)檢查復(fù)位端,若進(jìn)行復(fù)位狀態(tài),則設(shè)置通信參數(shù),包括:工作模式、時(shí)鐘驅(qū)動(dòng)寄存器、接收碼寄存器、輸出控制寄存器、接收屏蔽寄存器和總線(xiàn)定時(shí)等。
3)檢查復(fù)位請(qǐng)求位,若復(fù)位請(qǐng)求位為低,則系統(tǒng)進(jìn)入正常工作狀態(tài),開(kāi)微處理器的外部中斷以及CAN控制器本身的中斷。
初始化程序流程圖如圖5所示。
CAN總線(xiàn)報(bào)文數(shù)據(jù)的接收是由控制器根據(jù)CAN總線(xiàn)通信協(xié)議自主完成的。接收到的數(shù)據(jù)被放入接收緩存,然后狀態(tài)寄存器的“接收緩存狀態(tài)”標(biāo)志位將被置位,同時(shí),中斷寄存器的“接收中斷”標(biāo)志位也被置位。微處理器必須讀出接收到的數(shù)據(jù),同時(shí)釋放接收緩存。報(bào)文的接收過(guò)程可以采用中斷方式,也可以通過(guò)查詢(xún)的方式實(shí)現(xiàn)。
本設(shè)計(jì)中采用查詢(xún)方式實(shí)現(xiàn)數(shù)據(jù)的接收。如圖6所示為查詢(xún)方式的流程圖。CAN控制器的接收中斷標(biāo)志被關(guān)閉。微處理器讀取CAN控制器的狀態(tài)寄存器的“接收緩存狀態(tài)”標(biāo)志位,檢查是否有數(shù)據(jù)到來(lái)。如果緩沖區(qū)為空,表示沒(méi)有接收到數(shù)據(jù),微處理器便轉(zhuǎn)到其它工作上去,直到下一輪檢查。如果緩沖區(qū)滿(mǎn),則表示有數(shù)據(jù)放入緩存。微處理器可以根據(jù)報(bào)文信息讀取緩沖區(qū)的數(shù)據(jù),之后需要設(shè)置命令寄存器的“釋放緩存標(biāo)志”,通知SJA1000釋放接收緩存,完成接收,并進(jìn)行相應(yīng)的數(shù)據(jù)處理。但由于接收緩存中的報(bào)文不一定只是一個(gè),因此必須重新檢查接收緩存,直到接收緩存為空為止。否則,由于接收緩存的大小有限,將會(huì)出現(xiàn)緩沖區(qū)溢出的現(xiàn)象。循環(huán)查詢(xún)的時(shí)間必須足夠快,以避免報(bào)文丟失。
4 結(jié)束語(yǔ)
本設(shè)計(jì)很好地解決了導(dǎo)彈伺服機(jī)構(gòu)與CAN總線(xiàn)的連接和通信問(wèn)題,大大減輕了原系統(tǒng)的重量,增強(qiáng)了信號(hào)傳遞的抗干擾性,提高了伺服機(jī)構(gòu)的控制精度,另外,PC/104的模塊化結(jié)構(gòu)使得接口的通用性和可維修性也顯著提高。
評(píng)論