尚國慶,陶青平,劉滿麗
(中國電子科技集團公司第五十八研究所,江蘇無錫 214035)
引擎控制系統(tǒng)的控制器在測量轉(zhuǎn)速的同時,還必須在精確的齒輪角度產(chǎn)生如怠速控制、點火正時控制[1]和燃料噴射等信號,因此對角度測量的分辨率要求越來越高。目前的測速器件主要有光電數(shù)字脈沖編碼器[2-5]、霍爾傳感器[6-9]、電容式傳感器[10]以及測速發(fā)電機[11-13]。測量的方法有定時測角法(M 法)、定角測時法(T 法)和頻率/周期法(M/T 法)[14]。M 法通過測量一定時間內(nèi)的脈沖個數(shù)來獲得速度值,適合高轉(zhuǎn)速情況,缺點是角度分辨率低;T 法通過測量相鄰2 個脈沖的時間間隔得到速度信息,適合低速情況,高速時誤差大;M/T 法通過同時測量編碼器的脈沖數(shù)和在此期間的高頻脈沖數(shù),兼顧了高速和低速情況,但是軟件實現(xiàn)相對復(fù)雜,而且無法直接獲得角度信息。所以傳統(tǒng)方法無法在實現(xiàn)寬范圍轉(zhuǎn)速測量的同時實現(xiàn)高分辨率角度的測量。針對上述問題,本文介紹了一種RM57L843 處理器硬件角產(chǎn)生器(HWAG)模塊在齒輪角度和轉(zhuǎn)速測量中的設(shè)計與應(yīng)用,HWAG 模塊使用時間插入算法,實現(xiàn)高分辨率角度測量,結(jié)合高端定時器N2HET 的定時器功能,獲得轉(zhuǎn)速信息。相對于傳統(tǒng)方法,該方法軟件復(fù)雜度低,在測量轉(zhuǎn)速的同時可實現(xiàn)高分辨率的角度控制。
編碼器分為絕對式與增量式2 類。絕對式編碼器具有固定零點,輸出代碼是軸角的單值函數(shù),缺點是制造工藝復(fù)雜,不易小型化[15]。增量式編碼器易于小型化,響應(yīng)速度快,結(jié)構(gòu)簡單,缺點是沒有固定零點。本設(shè)計采用增量式編碼器,為了解決增量式編碼器沒有固定零點的缺點,需要進行如下改進:對于每圈N 個脈沖的增量式編碼器,將其中連續(xù)的3 個光柵改造為1 個擴展光柵。改進后的編碼器每圈產(chǎn)生的脈沖數(shù)量是(N-2)個,并且擴展光柵的脈沖周期是正常光柵周期的3 倍。例如,設(shè)計中應(yīng)用齒輪的齒數(shù)是60,光柵產(chǎn)生的脈沖信號如圖1 所示。每個普通齒輪產(chǎn)生的脈沖表示6°,其中擴展光柵產(chǎn)生的脈沖定義為奇點,并將奇點信號后的第一個齒輪邊沿信號定義為零點。HWAG 模塊可以在奇點期間產(chǎn)生硬件中斷,在此中斷后的下一個脈沖邊沿就是零點。編碼器的光柵數(shù)量一般與待測齒輪的齒數(shù)相同,即每個光柵產(chǎn)生的脈沖周期與實際的被測齒輪脈沖信號同步,編碼器的零點與齒輪的零度角一致。
圖1 60 齒脈沖與奇點信號
HWAG 模塊帶有可編程的輸入濾波器,外部信號經(jīng)過濾波后,根據(jù)時間插入算法,將脈沖信號劃分為K個角度增量信號,同時通過硬件接口向N2HET 模塊提供角度增量信息。HWAG 模塊具有以下特點:可編程的K 值;在第一個奇點同步后自動同步檢查;直接與N2HET 連接;可編程的齒輪活動邊沿;開始位同步于齒輪邊沿;可選擇齒輪輸入引腳。
一般引擎系統(tǒng)中普遍使用的齒輪齒數(shù)是60,每個齒的角度分辨率是6°,無法滿足發(fā)動機在精準的角度產(chǎn)生燃料噴射和點燃火花塞等控制要求,因此需要提高系統(tǒng)的角度分辨率。角滴答時鐘產(chǎn)生器是HWAG模塊的核心,PCNT(n)表示當前脈沖的周期值,PCNT(n-1)表示前一個脈沖的周期值?;谇耙粋€齒輪周期PCNT(n-1),使用時間插入算法來產(chǎn)生角滴答時鐘,該算法基于設(shè)置的系數(shù)K 來劃分上一個齒輪周期。齒輪周期是2 個活動邊沿之間的周期,HWAG 全局控制寄存器2(HWAGCR2),并定義了輸入信號是下降沿還是上升沿,角滴答時鐘產(chǎn)生器的原理如圖2 所示。
圖2 角滴答時鐘產(chǎn)生器的原理
時間插入算法由5 個主要關(guān)聯(lián)的計數(shù)器組成。齒計數(shù)器TCNT 是一個8 位計數(shù)器,記錄當前的齒輪數(shù)。每當捕獲脈沖邊沿信號,TCNT 計數(shù)器遞增,直至到達齒輪寄存器(HWAGTHVL)中的值,并在下一個齒輪輸入的活動邊沿到達時復(fù)位TCNT 數(shù)值。HWAGTHVL 中的值表示奇點所在的齒輪,由于在奇點期間脈沖周期是普通齒輪的3 倍,為了保證在下一圈期間角滴答時鐘不發(fā)生突變,在下一圈的第一個齒脈沖期間依然使用奇點前一個齒輪周期的值作為PCNT(n-1)中的值。
周期計數(shù)器PCNT 計算2 個齒輪間的周期PCNT(n),計算的時鐘是HWAG 模塊的工作時鐘VCLK2。這個活動邊沿(下降或上升)由HWAGCR2 寄存器中的TED 位選擇。齒輪輸入的一個活動邊沿到達時,PCNT的值被保存在HWAG 前一個齒輪周期值寄存器(HWAPCNT1)中。
步進計數(shù)器SCNT 按照系數(shù)K 步長計數(shù)到前一個周期值PCNT(n-1),這個周期值保存在HWAPCNT1寄存器中。當SCNT 超過PCNT(n-1)時產(chǎn)生一個角滴答時鐘,并且SCNT 重置為SCNT 和PCNT(n-1)之間的差值。SCNT 的周期結(jié)果是PCNT(n-1)/K,這樣就產(chǎn)生了角滴答時鐘,每個角滴答時鐘表示一個角度增量,將原齒輪的角度分辨率提高到K 倍。
滴答時鐘計數(shù)器TCKC 是一個遞減計數(shù)器,初始值是系數(shù)K。角度計數(shù)器ACNT 用于累加產(chǎn)生的角滴答時鐘,因為齒輪速度的變化造成角度計數(shù)器行為的不連續(xù)。在減速過程中,如果TCKC 在新的齒邊沿出現(xiàn)前計數(shù)到0,則SCNT 和PCNT(n-1)不再產(chǎn)生角滴答時鐘信號,ACNT 將暫停計數(shù)直到出現(xiàn)新的齒邊沿。在加速過程中,如果TCKC 在新的齒邊沿(該系統(tǒng)中齒輪輸入的上升沿)出現(xiàn)時未計數(shù)到0,剩余的滴答時鐘計數(shù)值加到ACNT 中。這樣設(shè)計的目的是在齒輪非勻速運行時,每個齒輪產(chǎn)生的角滴答時鐘數(shù)是確定值K 個。
齒輪的輸入來自模擬部分,其對外部噪聲敏感,因此需要濾除信號中的毛刺。在輸入信號被內(nèi)核使用前,HWAG 對其進行數(shù)字濾波。經(jīng)過n 個角滴答時鐘后,濾波器使輸入信號生效。因為滴答計數(shù)器是遞減計數(shù)器,計數(shù)器的余值(1-X)需要被設(shè)置。濾波寄存器中的計算值取每個齒角滴答時鐘計數(shù)值K。齒輪輸入類似一個帶有截止頻率的低通濾波器。一個齒輪在下降沿、活動沿輸入的窗口濾波器如圖3 所示。濾波寄存器值為步寬[K(1-X)],當?shù)未鹩嫈?shù)器的值到達這個濾波寄存器值時,齒輪輸入接觸阻塞。
圖3 齒輪輸入下降沿、活動沿的窗口濾波器
該設(shè)計的軟件主要分為HWAG 模塊和N2HET模塊2 個部分。HWAG 模塊根據(jù)時間插入算法提供角度信息,需要在系統(tǒng)運行前對該模塊進行初始配置,主要包括齒輪數(shù)量、角度分辨率系數(shù)K 等。N2HET 模塊主要用于定時,該系統(tǒng)在4 個特定角度點輸出控制信號,同時輸出轉(zhuǎn)速信息。
在系統(tǒng)的初始狀態(tài),齒輪的角度處于不確定狀態(tài),上電運行后首先需要確定零點位置,實現(xiàn)HWAG模塊與齒輪角度的同步,系統(tǒng)的軟件流程如圖4 所示。首先對HWAG 進行初始化設(shè)置,齒輪信號的輸入引腳是軟件可選的,HWAG 引腳選擇寄存器(HWAPINSEL)來執(zhí)行選擇功能。復(fù)位后默認選擇是HET[2],該系統(tǒng)中的齒輪數(shù)是60,奇點占用齒數(shù)是3,因此,齒輪數(shù)量寄存器(HWATHNB)的值是57。所有HWAG 模塊中斷開啟,HWAG 中斷使能設(shè)置寄存器(HWAENASET)數(shù)值為0xFF,中斷的目的是利用硬件中斷條件PCNT(n)>2PCNT(n-1)實現(xiàn)零點位置的確認。在HWAG 當前齒輪步寬寄存器(HWASTWD)中寫入角度分辨率系數(shù)K,表示將原有的齒輪角度6°劃分為K份,角度分辨率提高了K 倍。該設(shè)計中的K 值由上位機軟件設(shè)置,方便引擎控制系統(tǒng)滿足不同分辨率的要求。設(shè)置全局控制寄存器(HWAGCR2)的TED 位選擇齒輪邊沿的上升沿作為活動邊沿,設(shè)置CRI 位選擇使能硬件探測準則,然后設(shè)置STRT 位啟動HWAG 運行。
圖4 軟件流程
完成初始配置后,需要確認零點位置。在HWAG的運行過程中,當產(chǎn)生PCNT(n)>2PCNT(n-1)的中斷條件時,設(shè)置標志Flag 值為1,表示此脈沖信號為奇點信號。在普通齒邊沿信號中斷中如果標志Flag 值是1,則設(shè)置當前脈沖邊沿作為零度角。在此中斷中,暫停HWAG 運行,暫停N2HET 運行,設(shè)置標志Flag 值是0,清除HWAG 角度值寄存器(HWAACNT)、HWAG當前齒輪周期寄存器(HWAPCNT)、HWAG 當前齒輪數(shù)量寄存器(HWATHVL)的值,清除N2HET 模塊中CNT 指令數(shù)據(jù)段的值,定義當前角度值是0°。重新啟動HWAG 和N2HET 模塊,此時實現(xiàn)了HWAG 與齒輪信號的零點角度同步,同時HWAG 硬件接口向N2HET 模塊提供角度增量。
N2HET 是TI 公司的第5 代智能定時器模塊。N2HET 使用基于RISC 的專用定時器微型機來執(zhí)行30 條指令,每條指令由1 個32 位的程序段、1 個32 位的控制段和1 個32 位的數(shù)據(jù)段組成。指令存儲在N2HET 模塊的RAM 中。HWAG 接口在每個循環(huán)分頻時鐘周期(LRP)[16]向N2HET 提供角度增量,表示自上一個N2HET 循環(huán)分頻時鐘周期開始HWAG 模塊測量的角度增量。N2HET 模塊軟件部分的主要作用是提供定時基準和角度判斷控制。
通過HET IDE 軟件編寫代碼,編譯后可以生成C代碼。N2HET 指令設(shè)置參數(shù)如下:
L00 CNT {next=L01, reg=B, irq=OFF,max=0x1FFFFFF};
L01 CNT {next=L02, angle_count=ON, reg=A,irq=ON,max=60K};
L02 ACMP {next=L03, en_pin_action=ON,cond_addr=L03, pin=0, action = SET, reg=A, irq=ON,data=P0};
L03 ACMP {next=L04, en_pin_action=ON,cond_addr=L04, pin=1, action = SET, reg=A, irq=ON,data=P1};
L04 ACMP {next=L05, en_pin_action=ON,cond_addr=L05, pin=2, action = SET, reg=A, irq=ON,data=P2};
L05 ACMP {next=L06, en_pin_action=ON,cond_addr=L06, pin=3, action = SET, reg=A, irq=ON,data=P3};
L06 BR { next=L00, cond_addr=L00,event=NOCOND};
其中L00 CNT 指令工作在時間模式,每個LRP 周期,CNT 的數(shù)據(jù)段加1,為系統(tǒng)提供時間信息;L01 CNT指令工作在角度模式,作為N2HET 角度計數(shù)器,累加HWAG 模塊提供的角度增量,保存在寄存器A 中。該系統(tǒng)中齒輪數(shù)是60,每個齒輪角度劃分K 份,每份表示角度增量為6°/K,因此最大累加值是60K。
ACMP 指令用于執(zhí)行角度比較,L02 ACMP 指令中設(shè)置的角度值是P0,P0 的值由上位機軟件設(shè)置,便于引擎控制系統(tǒng)調(diào)校噴油角度等,當角度值到達P0時,引腳pin0 輸出高電平,同時產(chǎn)生中斷信號,其他3個點的角度點設(shè)計以此類推。4 路角度測量的初始值是7.5°、97.5°、187.5°、277.5°。BR 指令用于無條件跳轉(zhuǎn)到L00 指令,在每個LRP 周期循環(huán)執(zhí)行所有指令。
當角度到達待測點7.5°、97.5°、187.5°、277.5°時,分別在不同引腳拉高電平信號,通過對比輸入脈沖信號的零點與各個角度對應(yīng)的引腳電平信號的位置關(guān)系,可以計算出實際的角度值。同時通過N2HET 模塊中的L01 CNT 指令的數(shù)據(jù)段獲得對應(yīng)角度經(jīng)過的時間值,即可得到實際轉(zhuǎn)速值。
分別設(shè)置不同的角分辨率系數(shù)K,調(diào)整齒輪的轉(zhuǎn)速,測量角度與轉(zhuǎn)速,測試結(jié)果如表1 所示。
從表1 可以看出,設(shè)計中使用齒數(shù)為60 的齒輪,每個齒輪的角度是6°,通過HWAG 模塊配置不同的K 值,可以使角度分辨率提高K 倍。測量結(jié)果與實際的角度和轉(zhuǎn)速相差很小,基本在理論范圍內(nèi)。轉(zhuǎn)速增大后,轉(zhuǎn)速測量誤差增大,主要是因為采樣時間縮短,后續(xù)可以通過改進參考點來增加采樣時間,以減小計算誤差。
表1 角度與轉(zhuǎn)速測量結(jié)果
本研究介紹了以HWAG 模塊為核心的高分辨率齒輪角度和轉(zhuǎn)速測量系統(tǒng),相對于傳統(tǒng)軟件算法,HWAG 作為硬件模塊使用時間插入算法,可以將齒輪角度測量的分辨率提高K 倍。結(jié)果表明,該設(shè)計可以為引擎控制系統(tǒng)提供高精度的角度和轉(zhuǎn)速值。對于更復(fù)雜的引擎控制系統(tǒng),可以增加N2HET 軟件部分的ACMP 指令數(shù)量,將目前的4 個角度控制點擴展到32個。