待解决1:系统辨识
系统辨识工具箱
工具箱教程
频率特性的求取主要有以下三种方法:
一、依据频率特性的定义求取系统的频率特性;
二、由传递函数直接令s=jw求取系统频率特性;
三、用清瞎码试验方法求取系统频率特性。
2. 第一种方法的具体解释为:已知系统微分方程,可将正弦函数代入,求系统输出的稳态解,输出变量稳态解与输入正弦函数的复数比即为系统的频率特性。
3. 第二种方法的具体解释为:已知系统传递函数G(s),可将传递函数中的“s”代之以“jw”,即可得系统频率特性G(jw)。
4. 第三种方法的具体解释为:通过实验的手段求取。对实验的线性定常系统输入正弦信号,不断改变输入信号的角频率,并得到对应的一系列输出的稳态振幅和相角,分别将它们与相应的输入正弦信号的幅值相比、相角相减,便得到频率特性。
5. 频率特性的定义:谐波输入下,输出响应中与输入同频率的谐波分量与谐波输入的幅值之比A(ω)为幅频特性,相位之差φ(ω)为相频特性,并称其指数表达形式为系统的频率特性。
6. 稳定系统的频率特性等于输出和输入的傅氏变换之比,而这神明正是频率特性在自控原理中的答哪物理意义。
7. 对于稳定的线性定常系统,由谐波输入产生的输出稳态分量仍然是与输入同频率的谐波函数,而幅值和相位的变化是频率ω的函数,且与系统数学模型相关。
8. 稳定系统的频率特性可以用实验方法确定,即在系统输入端加上不同频率的正弦信号,然后测量系统输出的稳态响应,再根据幅频特性和相频特性作出系统的频率特性曲线。
9. 对于不稳定的系统,输出响应稳态分量中含有由系统传递函数的不稳定极点产生的呈发散或振荡的分量,所以不稳定系统的频率特性不能通过实验法确定。
10. 频率特性的应用在自控原理中,和传递函数与微分方程一样,频率特性是系统数学模型的一种表达形式,它表征了系统的运动规律,成为系统频域分析的理论依据。
11. 在线性系统的频域分析法中,系统的频率特性是不可缺少的重要工具,控制系统及其元部件的频率特性可以运用分析法和实验方法获得,并可用多种形式的曲线表示,因而系统分析和控制器设计可以应用图解法进行。
12. 可对系统的各个环节的频率特性进行分析从而对整个系统的频域及稳定性进行有效的分析和设计。
待学习:重复控制
线性adrc。自抗扰控制
自抗扰控制理论(一)ADRC的原理
调参数经验
扩张状态观测器1~4阶系统推导
线性自抗扰 直流电机 位置/速度控制
调参
非线性adrc代码
代码2
非线性理论
高阶adrc
我调节adrc的参数时,w0为400,wc为300,b0为150000,请解释这几个参数为什么设为这个时,响应曲线较好,并且告诉我为什么b0要设的这么大,如果设小了,响应曲线就会震荡
在 ADRC 设计中,这几个参数起着关键作用,下面详细解释:
w₀ = 400 rad/s(ESO 带宽)
这个参数决定了扩展状态观测器(ESO)对系统状态和扰动的跟踪速度。w₀ 设为 400 rad/s 表示观测器能够较快地捕捉系统动态和扰动变化;同时,它通常要略高于闭环系统的期望带宽(wc),以确保控制器能基于可靠的状态估计工作。如果 w₀ 太低,ESO 跟踪不及时,会使控制补偿滞后,从而导致系统响应迟缓甚至震荡。
wc = 300 rad/s(闭环带宽)
这是期望的闭环动态性能指标。选择 wc = 300 rad/s 说明你希望系统有较快的响应速度,同时要求一定的稳态精度。设置 wc 略低于 w₀ 可以确保在闭环控制中,状态估计总能比控制动作快,从而实现有效的扰动补偿和平滑控制。也就是说,这个值既保证了响应速度,又防止因控制动作过于激进引起的不稳定。
b₀ = 150000(标称输入增益)
b₀ 是系统输入与输出之间的标称增益,它在 ADRC 控制律中起到关键作用。控制器中,扰动补偿项通常形如 z₃/b₀。如果 b₀ 设得较大,就能正确缩放扰动补偿信号,使得实际控制输入与系统动态匹配,从而使得闭环响应平滑。
如果 b₀ 设小了,补偿项 z₃/b₀ 会被放大,导致控制器对扰动过度补偿,从而引起响应震荡甚至发散。换句话说,b₀ 必须接近系统的真实增益值,才能保证扰动估计和补偿的比例合适,达到预期的控制效果。
综上所述,当参数设为 w₀ = 400, wc = 300, b₀ = 150000 时,ESO 能够快速、准确地估计扰动,而闭环带宽又保证了响应的快速性与适当的阻尼。b₀ 设得较大是为了使扰动补偿项不会因除数过小而被过度放大,否则会引起补偿过度,从而使响应曲线产生震荡。
我需要更快的响应,但是我提高w0和wc后,响应会震荡,应该怎么解决?
最终:选择较小的步长解决。
提高响应速度往往需要增加 ESO 带宽(w₀)和闭环带宽(w_c),但同时会使得控制器对高频噪声更敏感,从而引起震荡。为了解决这一问题,可以尝试以下方法:
适度增加带宽并同时改善阻尼
不要一次性大幅提高 w₀ 和 w_c,而是逐步增加,并同时调整控制律中的微分或阻尼项,以补偿因带宽提高而带来的振荡倾向。
引入低通滤波器
在测量信号或观测器输出中加入低通滤波器,降低高频噪声对控制器的影响,从而平滑响应,防止因噪声引起的振荡。
优化 ESO 结构
考虑使用改进的线性 ESO(如 MLESO),这种结构可以通过引入额外的比例-微分环节,改善扰动估计的精度,同时减少对高频噪声的敏感性,从而降低振荡。
调整 b₀ 参数
确保 b₀ 的值准确反映被控对象的实际输入增益。如果 b₀ 过低,会使扰动补偿项 z₃/b₀ 被过度放大,从而导致震荡。适当调整 b₀ 能帮助平衡响应速度和稳定性。
仿真设置和数值求解器
选择合适的求解器(例如刚性求解器)和较小的步长,可以提高数值求解精度,减少因离散化误差引起的震荡。
总结来说,你需要在提高响应速度和保证系统阻尼、抗噪性能之间找到平衡:适度提高带宽同时采取滤波和阻尼措施,从而实现快速且平稳的响应。参考一些 ADRC 实践经验(例如知乎上的相关讨论),这种折中调节往往能获得较好的响应效果。
内模控制
simulink自带的control system designer 的IMC tuning使用
需要先添加被控对象的block,以及随便添加一个传函在被控对象前面,构成闭环(输入阶跃)。然后添加闭环的输入输出,location里加上两个点(底下openings没加),然后就可以使用了
compensator选择传函,就会自动生成内膜控制器的传函,然后update blocks就可以导入进去了。
dominant closed- loop time constant. 主导闭环时间常数
内模控制——为什么pir控制器中的谐振项能抑制电机中的谐波
滑膜控制
滑模控制学习笔记(三)
滑模控制算法——基本原理(附MATLAB程序)
滑模控制(Sliding mode control)快速入门
matlab官网视频
滑模面的选择
知乎
滑模控制+MATLAB simulink搭建系统
matlab官方文档
b站视频
% 清除工作区和命令窗口
clear; clc;
% 系统参数
A = [0 1; -2 -2]; % 系统矩阵 A
B = [0; 1]; % 输入矩阵 B
C = [1 0]; % 输出矩阵 C
D = 0; % 系统 D 矩阵(此处为零)
% 滑模控制设计
lambda = 2; % 选择滑模面参数
k = 10; % 控制增益
% 初始化
x0 = [1; 0]; % 初始状态
tspan = [0 10]; % 仿真时间
% 定义状态空间方程及滑模控制律
% 采用匿名函数
system = @(t, x) A*x + B*(-k*sign(C*x));
% 运行仿真
[t, X] = ode45(system, tspan, x0);
% 计算系统输出
Y = C * X';
% 绘制结果
figure;
subplot(2,1,1);
plot(t, X(:,1), 'r', 'LineWidth', 1.5);
hold on;
plot(t, X(:,2), 'b', 'LineWidth', 1.5);
xlabel('Time (s)');
ylabel('States');
legend('x1', 'x2');
title('System States');
subplot(2,1,2);
plot(t, Y, 'k', 'LineWidth', 1.5);
xlabel('Time (s)');
ylabel('Output');
title('System Output');
% 滑模面 s(x) 和控制律 u(t)
s = @(x) C*x;
u = @(x) -k*sign(s(x));
% 打印控制输入
disp('Control input u(t):');
for i = 1:length(t)
fprintf('Time: %.2f s, Control Input: %.2f\n', t(i), u(X(i,:)'));
end
前馈控制
前馈pid
基于前馈补偿的PID控制器的实现
simulink-仿真以及PID参数整定/PID tuner 的使用流程
控制算法(六)前馈控制与航向误差
前馈pid2
生成陀螺噪声
matlab生成一定区间内的100个随机数
for i = 1:100
add = 0.01*(-1+2.*rand(100,1));
cross_center4(i,1) = cross_center2(i,2)+add(i);
%0.1*(-1+2.*rand(10,1))
end
% 目标函数(需要最小化的目标)
% 这三个参数控制了快速反射镜模型的反射率和相位差,从而影响模型的性能表现。
% 在优化过程中,fmincon 函数将寻找最优的参数值,使得目标函数值最小化。
% 具体来说,目标函数的计算过程根据给定的参数值 x 来计算模型的输出 y,并将 y 的平均值作为目标函数的返回值。
% 在每次迭代过程中,fmincon 函数会不断更新参数值,直到找到满足约束条件的最优解。
function obj = fsm_obj(x)
global a b c
k = x(1); % k 是一个参数,用于调节指数衰减的速率。
alpha = x(2); % alpha 是一个参数,用于调节余弦项的频率。
beta = x(3); % beta 是一个参数,用于调节余弦项的相位。
t = 0:0.1:10;
y = a + b * exp(-k * t) .* cos(alpha * t + beta) + c * t;
% 表示了一个用于计算快速反射镜模型输出的公式。
% a 是模型的常数项,表示快速反射镜模型在 t = 0 时的初始值。
% b 是一个参数,用于调节指数衰减项的幅度。
% exp(-k * t) 是指数衰减项,它随着时间 t 的增加而递减。
% cos(alpha * t + beta) 是余弦项,它具有频率为 alpha 的振荡行为,并且通过相位 beta 进行了调整。
% c 是一个参数,用于调节线性项的斜率。
% c * t 是线性项,它随着时间 t 的增加而线性增加。
% 通过将这些项组合在一起,公式计算出快速反射镜模型在给定时间 t 上的输出值 y。
% 这个公式代表了快速反射镜模型中各个参数对输出结果的影响,通过优化这些参数的值,可以调整模型的性能以满足特定的优化目标。
obj = mean(y); % 目标函数为 y 的平均值
end
% 约束函数(k、alpha 和 beta 需要在一定范围内)
function [c, ceq] = fsm_constraints(x)
k = x(1);
alpha = x(2);
beta = x(3);
c = []; % 不等式约束
ceq = [k + alpha + beta - 1]; % 等式约束
end
% 主函数
function fsm_optimization()
global a b c
a = 1;
b = 2;
c = 0.5;
% 设置初始参数值
x0 = [0.5, 0.5, 0.5];
% 设置优化问题的上下界
lb = [0, 0, 0];
ub = [1, 1, 1];
% 设置约束条件函数
nonlcon = @fsm_constraints;
% 设置优化选项 iter迭代次数
options = optimoptions('fmincon', 'Display', 'iter');
% 执行优化
[x_opt, fval] = fmincon(@fsm_obj, x0, [], [], [], [], lb, ub, nonlcon, options);
% 打印优化结果
disp('优化结果:');
disp(['最优参数值:', num2str(x_opt)]);
disp(['最优目标函数值:', num2str(fval)]);
end
% 全局变量定义
global a b c
% 调用主函数进行优化
fsm_optimization();
模糊PID
bode图绘制
num=[6850];
den=[1 1333 43473];
H = tf(num,den);
bode(H)
伯德图中的相角裕量和幅值裕量有什么物理意义?
ZHIHU