张冰洋,黄 霞
(中南民族大学 实验教学与实验室管理中心, 湖北 武汉 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 系统辨识结果
本实验以典型的相关分析法辨识脉冲响应为例,开发了基于新工科创新理念的相关分析法辨识脉冲响应实验。实验作为脉冲响应特性测试综合设计性实验项目,可用于自动控制、单片机原理与应用、嵌入式系统设计等课程的综合设计和大学生电子设计大赛实训。实验涵盖了模拟电子技术、数字电子技术、自动控制、数字信号处理、单片机应用、嵌入式系统设计等课程的知识点,实验实施过程涉及了理论计算分析、软件仿真分析、测试系统设计等方面。所设计实验通过软硬结合、虚实结合的手段,能够加深学生对相关课程知识的理解、提高知识的综合运用能力并培养创新思维,符合新工科提倡的培养具有科学基础厚、工程能力强、综合素质高的科技人才的实验教学新理念。