張冰洋,黃 霞
(中南民族大學 實驗教學與實驗室管理中心, 湖北 武漢 430074)
單位脈沖響應是經典控制理論中表述線性系統動態特性的一種方法,是處于零初始條件的系統對單位脈沖力的響應,其表現形式是以時間為自變量的響應曲線,曲線包含了系統所有的動力特征參數[1]。提取系統的單位脈沖函數是獲取系統動態特性參數、進行系統辨識以及對系統進行有效監測與精確控制的前提[2]。基于相關分析法進行脈沖響應辨識,針對線性系統,不需要確定模型結構,可用于任意復雜的系統,在工程領域有廣泛應用[3-5]。
目前,相關分析法辨識脈沖響應的實驗教學研究相關文獻中,倪博溢等基于Matlab設計了系統辨識仿真工具箱,對不同的系統進行仿真,并利用LabVIEW和數據采集卡設計了一種辨識仿真實驗平臺,用于研究和教學實驗[6-7]。謝三毛和費克玲利用LabVIEW設計了一階系統的脈沖響應辨識仿真系統,用于實驗教學演示[8-9]。向曉燕等利用M序列作為輸入信號,利用Matlab對壓力控制加熱鍋爐爐腔溫度系統脈沖響應進行測試,并利用SIMULINK對壓力控制加熱爐參數模型進行估計和分析,得到系統參數模型,給出了脈沖響應特性測試的一個應用實例[10]。上述相關研究主要以Matlab或LabVIEW仿真設計為主,具有一定的空洞性。劉恒等利用555定時器、D觸發器、邏輯門和變換電路產生M序列,對二階系統進行脈沖響應測試,采用實際硬件對系統進行辨識,但辨識電路固定,系統缺乏靈活性和工程性[11]。基于目前工程教育和新工科背景下,培養具有科學基礎厚、工程能力強、綜合素質高的科技人才的實驗教學新理念[12-14],本文設計了相關分析法辨識脈沖響應實驗。
實驗利用仿真計算對系統特性進行分析、選取激勵序列參數,通過STM32單片機的DAC產生參數可調的M序列,利用ADC對被測系統輸入輸出數據進行同步采集,利用MCU進行數據運算和處理,結合TFT觸摸屏、上位機軟件構建仿真與測試系統,對系統脈沖響應進行辨識。實驗設計軟硬、虛實結合,靈活性高、擴展性好,實驗實施有利于學生理解理論知識、掌握工科學習新方法、提高綜合運用知識的能力和培養創新思維。
基于相關分析法進行脈沖響應辨識的理論依據是Wiener-Hopf方程:
(1)

用偽隨機二進制序列(M序列)進行相關分析是辨識系統脈沖響應函數的有效方法,M序列具有近似白噪聲的統計特性。其自相關函數為:

(2)
M序列作為系統辨識的輸入信號時,有:
(3)
因此,只要計算出系統輸入和輸出的互相關函數,就可以求出系統的脈沖響應估計值。
采用循環周期為NP、移位節拍為Δt、幅值為a的M序列u(k)作為辨識輸入,系統輸出為z(k),Wiener-Hopf方程的離散形式為:
(4)
系統輸入u(k)的自相關函數為:
(5)
代入式(4),得:
(6)
通常采用多周期數據計算互相關提高精度,即
(7)


(8)
式(8)即為利用M序列對系統脈沖響應進行估計的離散算法,其中,a為M序列的幅值,NP為循環周期,Δt為離散時間間隔,c為有界常數,一般取c=-Ruz(NP-1)。

圖1 M序列對二階系統進行脈沖響應辨識過程

相關分析法辨識脈沖響應實驗是系統辨識理論及應用課程的必修實驗,目前教材實驗設計均以Matlab仿真的形式產生激勵M序列信號作用于辨識系統,通過相關分析法計算輸入輸出互相關進行脈沖響應辨識。本實驗要求學生通過理論計算和仿真分析確定脈沖響應辨識的設計參數,設計M序列信號發生器,自行搭建被測系統,設計脈沖響應測試系統進行系統辨識實驗。
本實驗主要內容包括:
(1)利用運算放大器搭建給定的待辨識二階系統;
(2)設計參數可調的M序列信號發生器作為激勵信號;
(3)利用STM32單片機、TFT觸摸屏構建脈沖響應特性測試系統,完成給定待測系統脈沖響應特性辨識實驗。

K=0.5,T1=1.0 ms,T2=2.0 ms


圖2 待辨識二階系統原理圖
待辨識系統的階躍響應h(t)為:

(9)
隨著t的增大,h(t)的衰減指數項趨于0,假定從t=0開始,達到穩定值的98%為過渡過程時間ts,則有
(10)
求解式(10),得過渡過程時間ts=9.2 ms。
待辨識系統在0 dB處的開環截止頻率為ωc,在ωc處,幅頻特性:

(11)
求解式(11),得ωc=1379.48 rad/s,系統開環截止頻率fc=ωc/2π≈220 Hz。
利用Matlab對被測系統進行仿真分析,通過SYS=TF(NUM,DEN)函數構建待辨識系統的傳遞函數模型,通過STEP(SYS)和BODE(SYS)函數獲取系統的階躍響應曲線和頻率響應曲線,得到系統的單位階躍響應和頻率響應曲線如圖3所示,由響應曲線得到待辨識系統過渡過程時間為9.2 ms,開環截止頻率為220 Hz,與理論計算一致。

圖3 系統單位階躍響應和頻率響應曲線
M序列具有輸入凈擾動小,幅值、周期、時鐘節拍容易控制等優點,目前已普遍被選擇用作辨識輸入信號。在系統辨識中,選擇合適的輸入信號才能使辨識結果數據盡可能多的包含系統動態特性信息。辨識對象的過渡過程時間和最大截止頻率是選擇M序列參數的重要依據。當系統的頻率特性接近低通濾波特性時,M序列的參數NP和Δt滿足下述條件:
(12)
(NP-1)·Δt>ts
(13)
實驗中通過計算和仿真得到ts=9.2 ms,fc=220 Hz,且待辨識系統具有低通特性,根據式(12)、(13)得到M序列階數n的取值與移位脈沖周期Δt的關系如下表1所示。

表1 n的取值與移位脈沖周期Δt的關系
M序列階數越高,對應的辨識精度越高,但辨識算法的卷積運算計算時間越長,同時采樣的周期也更長,使得辨識響應變慢。綜合考慮,選取n=6,Δt=0.2 ms,即循環周期長度為63,移位節拍周期為0.2 ms的6階M序列作為系統辨識的激勵信號,M序列波形如圖4所示。

圖4 M序列波形
待辨識系統由M序列激勵,M序列一般通過線性反饋移位寄存器控制電路產生,可由雙D觸發器74LS74、四輸入或門74LS32、四輸入異或門74LS86和555時基電路構成,但該方案電路結構固定,序列參數不便更改。STM32F4系列單片機具有兩個相互獨立的片上DAC外設,每個通道都有單獨的轉換器并帶有DMA功能,可配置為8位或12位分辨率的數字輸入信號。采用STM32單片機的內置DAC模塊編程產生M序列,參數可調,實現起來靈活方便且節省硬件成本,本實驗采用這種方案。
實驗所用ARMFLY STM32-V6開發板核心芯片為STM32F429BIT6。實驗中,結合移位寄存器產生M序列的原理,編寫M序列數據產生函數mSerialSimulation(uint8_t n,uint16_t amp)產生階數為n,幅度為amp/4096的序列數據。通過函數DAC_Config()進行DAC通道PA5的初始化和DAC模式配置,使能DAC通道及DMA請求。其中,在GPIO_InitStructure結構體中,通過GPIO_Mode成員配置PA5為模擬輸入模式,在DAC_InitStructure結構體中,通過DAC_Trigger成員配置DAC的觸發模式為DAC_Trigger_T2_TRGO,使用TIM2定時觸發,達到控制輸出波形周期的目的。通過函數DAC_TIM_Config()配置TIM2,每間隔0.2 ms產生Update事件,觸發DAC把DHRx寄存器中的數據轉移到數據寄存器DORx中進行轉換。其中,TIM_TimeBaseStructure結構體的TIM_CounterMode成員配置為TIM_CounterMode_Up,TIM_Period、TIM_Prescaler和TIM_ClockDivision成員分別配置為199,179和0。通過DAC_DMA_Config()初始化DMA,函數配置DMA外設數據地址為 DHR12RD 寄存器,DMA內存數據地址為產生的M序列數組地址,DMA緩存的個數為M序列數組長度且DMA工作在循環模式。這樣配置后,定時器每間隔0.2 ms觸發DMA搬運M序列數據數組的一個數據到DAC通道寄存器進行轉換,每完成一個周期后DMA重新開始循環,STM32-V6開發板的PA5端口將連續輸出M序列波形。為提高電路的驅動能力,PA5的輸出接分壓電路和電壓跟隨器后加載到待辨識系統,為保證輸出信號的幅值在ADC采樣范圍內,M序列幅值小于1 V,實驗設定為0.5 V,輸出信號最大幅值小于1.6 V,滿足ADC采樣要求,輸入輸出波形如圖5所示,M序列移位時鐘節拍為0.2 ms,周期為12.6 ms。

圖5 待辨識系統激勵和響應波形
辨識系統以STM32-V6單片機開發系統為核心,系統結構框圖如圖6所示。經PA5產生的序列信號電壓跟隨器電路加載到待辨識二階系統上,STM32單片機內置的12位ADC對待辨識系統的輸入和輸出信號進行采集,由單片機進行數據處理和運算,辨識結果通過TFT觸摸屏進行顯示。軟件設計流程如圖7所示。基于STM32的雙通道ADC同步采集和脈沖響應辨識算法是系統設計的核心。

圖6 辨識系統結構框圖

圖7 辨識系統軟件設計流程
1)數據采集系統設計
脈沖響應辨識需要對待辨識系統的輸入和輸出進行相關運算,要求對待辨識系統的輸入和輸出進行同步采集。STM32F429BIT6單片機有3個最高精度為12位的ADC,每個ADC有16個外部通道,具有獨立模式、雙重模式和三重模式,對于不同的AD轉換要求幾乎都有合適的模式可選。其中ADC1和ADC2具有同步規則模式,在該模式下,ADC1和ADC2被同步觸發,采樣結果通過一個32-Bit的DMA傳輸到SRMA,結合定時器進行采樣控制,可實現雙通道同步采樣。實驗中編寫ADC1和ADC2同步采樣函數ADC1_2_Config(u16 SampleFreq,u16 DMA_BufferSizer),通過SampleFreq設定采樣頻率,通過DMA_BufferSizer設定采樣點。
該函數首先配置ADC1和ADC2為ADC_Mode_RegSimult模式,開啟掃描,關閉連續自動轉換,選擇外部定時器TIM3作為觸發轉換條件,即ADC_InitStructure結構體的配ADC_ScanConvMode、ADC_ContinuousConvMode、和ADC_ExternalTrigConvMode成員分別配置為ENABLE、DISABLE和ADC_ExternalTrigConv_T3_TRGO。接著配置定時器TIM3,將TIM_TimeBaseStructure結構體成員TIM_Period、TIM_Prescaler和TIM_CounterMode配置為0,TIM_CounterMode_Up,180000000/SampleFreq-1,通過函數入口參數SampleFreq控制ADC采樣率。最后開啟DMA1_Channel1,設置DMA_PeripheralBaseAddr為(uint32_t)(&(ADC1->DR)),DMA_MemoryBaseAddr為(uint32_t)ADC_DualConvertedValueTab,DMA_BufferSize為DMA_BufferSizer,使能DMA,ADC1、ADC2,開啟轉換后,轉換好的數據直接存儲在內存里的ADC_DualConvertedValueTab數組中。ADC_DualConvertedValueTab數組中同步采集了輸入和輸出信號,其中系統輸入數據為低16位,系統輸出數據為高16位。
2)系統辨識算法設計
系統辨識算法設計框圖如圖8所示,利用Matlab軟件對辨識系統進行建模仿真,通過Matlab自帶的函數fG = tf(fnum, fden)建立系統模型,通過自己編寫的mSerialSimulation.m函數產生待辨識系統的激勵M序列fm,設定采樣時間間隔為0.2 ms,采樣長度為4個周期,通過函數fy = lsim(fG,fxNew,ftx)得到系統的響應fy。通過相關分析的離散算法,編寫程序計算系統輸入和輸出的互相關Ruz(k)和脈沖響應g(k),并繪制仿真結果,仿真計算結果和理論曲線進行比較,均方根誤差為0.0197,仿真計算結果如圖9所示,理論曲線與軟件算法辨識曲線非常接近,軟件算法有效。

圖8 系統辨識算法設計流程

圖9 Matlab仿真計算結果
將Matlab算法轉換為C語言程序,移植到Keil平臺,系統輸入和輸出數據分別為ADC1和ADC2同步采集的4周期數據,經MCU進行運算得到系統脈沖響應特性測試結果,最終結果在TFT觸摸屏上顯示。
根據圖2所示電路在DYM215運放模塊上搭建待辨識系統和信號調理電路,待辨識系統的輸入和輸出分別由PT80和PT83插孔引出,用實驗導線將STM32-V6開發板的PA5與DYM-215運放模塊上搭建的電壓跟隨器電路的輸入端PT79相連接,將PA4與PT80相連接,將PA1與PT83相連,將STM32-V6開發板配套的TFT觸摸屏安裝在開發板上,完成脈沖響應特性辨識實驗系統的硬件連接。打開Keil uVision5軟件,將已經完成的系統辨識程序進行軟硬件聯合調試,通過后,編譯生成hex文件,通過JLink下載運行,用示波器測試系統輸入輸出波形,同時觀察觸摸屏顯示的辨識結果,實驗結果如圖10和圖11所示。
圖10為羅德與施瓦茨RTM3004示波器測試的輸入和輸出波形,圖11為觸摸屏顯示的實驗結果。圖11上半部分為實時測量的系統輸入和輸出波形,其中偏下者為系統輸入,偏上者為系統輸出。左下部分為待辨識系統的輸入和輸出的互相關曲線,右下部分淺色線條為脈沖響應辨識測量值,深色線條為脈沖響應辨識理論值,辨識結果和理論值的均方根誤差為0.0252。實驗結果與在Matlab中的仿真計算基本一致。實驗結果證明,所設計的辨識系統可以準確測量給定二階系統的脈沖響應特性。

圖10 辨識系統的輸入與輸出波形

圖11 系統辨識結果
本實驗以典型的相關分析法辨識脈沖響應為例,開發了基于新工科創新理念的相關分析法辨識脈沖響應實驗。實驗作為脈沖響應特性測試綜合設計性實驗項目,可用于自動控制、單片機原理與應用、嵌入式系統設計等課程的綜合設計和大學生電子設計大賽實訓。實驗涵蓋了模擬電子技術、數字電子技術、自動控制、數字信號處理、單片機應用、嵌入式系統設計等課程的知識點,實驗實施過程涉及了理論計算分析、軟件仿真分析、測試系統設計等方面。所設計實驗通過軟硬結合、虛實結合的手段,能夠加深學生對相關課程知識的理解、提高知識的綜合運用能力并培養創新思維,符合新工科提倡的培養具有科學基礎厚、工程能力強、綜合素質高的科技人才的實驗教學新理念。