基础知识
系统辨识及黑箱方法
系统辨识是通过考察系统的输入、输出及其动态过程,来定量或定性地认识系统的功能特性、行为方式,以及探索其内部结构和机理的一种控制论认识方法。
通过辨识建立数学模型的目的是估计表征系统行为的重要参数,建立一个能模仿真实系统行为的模型,用当前可测量的系统的输入和输出预测系统输出的未来演变,以及设计控制器。
黑箱方法,指内部构造还不清楚,由于条件的限制,只能通过外部观测和试验去认识其功能和特性的系统。人们把外部对黑箱的影响称为黑箱的输入,把黑箱对外部的反应称为黑箱的输出。
状态空间方程
系统的动态特性是用由状态变量构成的一阶微分方程组来描述的。它能反映系统的全部独立变量的变化,从而能同时确定系统的全部内部运动状态,而且还可以方便地处理初始条件。
状态空间表达式: 由状态方程和输出方程构成,在状态空间中对控制系统作完整表述的公式。
系统的状态方程为:

其中,A 为 n×n 的常系数矩阵,称作系统矩阵 ; B 为 n×r 的常系数矩阵,称作控制矩阵。 A 与 B 都由系统本身的参数决定。 u 是输入信号, x 是系统状态向量。
系统的输出方程:
其中,C 为 m×n 的常系数矩阵,称为输出矩阵,它表达了输出变量与状态变量之间的关系; D 为 m×r 的常系数矩阵,称为直接转移矩阵,它表示输入变量通过矩阵 D 直接转移到输出。在大多数实际系统中, D=0 。 y 是输出信号。
黑箱系统辨识
基本流程如下图所示

激励信号
利用MATLAB产生频率从1Hz到500Hz变化的扫频信号。由于频率范围较大,且高频部分云台振幅变化较小,为了减少数据量,采用类指数形式的变化趋势。为了保证信号不会发生跳变,在每次信号频率发生变化时都需要从零相位开始,因此周期需要是整数。
clear; clc; close all;
F = ([1:0.5:22. 24:2:40, 50:10:120, 200, 250, 333, 500]);
T = round(1000./F);%周期
F = 1000./T;%频率
plot(F);
ylabel('F/Hz');
这里产生的频率和对应周期是1Hz到500Hz,但经过实测发现用不到过于高频的信号,实际使用的是1Hz到40Hz的信号并达到了更好的效果,代码做一些微调整就行。
云台YAW轴
根据经验和时域的响应情况,调节PID参数构建速度环和位置环使云台可以稳定的跟随目标角速度。
将上一步Matlab生成的F和T导入程序,并产生激励信号驱动电机。这里由于激励信号数据量很大,正弦信号在定时器里产生并驱动。这里我使用了两种方案:使用硬定时器或使用基于FreeRTOS的软定时器。
硬定时器方案:在CubeMX配置好定时器频率为500Hz,将信号生成函数扔进回调函数。这里使用了TIM8。
在tim.c文件中,定时器设置如下:
void MX_TIM8_Init(void)
{
TIM_ClockConfigTypeDef sClockSourceConfig = {
0};
TIM_MasterConfigTypeDef sMasterConfig = {
0};
htim8.Instance = TIM8;
htim8.Init.
基于MATLAB的嵌入式系统辨识与云台控制

本文围绕嵌入式系统辨识展开,介绍了系统辨识及黑箱方法、状态空间方程等基础知识。利用MATLAB产生扫频激励信号,在云台YAW轴控制中,调节PID参数构建速度环和位置环,采用硬定时器或软定时器方案驱动电机,最终得到系统传递函数,用于PID调参及射击系统建模。
最低0.47元/天 解锁文章
1799

被折叠的 条评论
为什么被折叠?



