Active Disturbance Rejection Control
R2026bActive Disturbance Rejection Control block

To add a block to a model, double-click the canvas and start typing the block name. Then, select the block from the list.
库:
Simulink Control Design /
Adaptive Control
描述
使用 Active Disturbance Rejection Control 模块,您可以为具有未知动态特性以及内外部扰动的被控对象设计自抗扰控制 (ADRC)。ADRC 是一种无模型控制方法,它只需逼近被控对象动态特性,即可设计提供稳健抗扰性能的控制器。
该模块使用已知系统动态特性的一阶或二阶模型逼近以及建模为被控对象的扩张状态的未知动态特性和扰动。通常,您可以根据工作范围内被控对象的开环阶跃响应来确定此阶数。
一阶逼近 -
二阶逼近 -
其中:
y(t) 是被控对象输出。
u(t) 是输入信号。
b0 是临界增益,它是描述被控对象对输入 u(t) 的响应的估计增益。
f(t) 是总扰动,包括未知动态特性扰动和其他扰动。
该模块使用扩张状态观测器 (ESO) 来估计 f(t),并通过减少估计的扰动对模型逼近已知部分的影响来实现抗扰控制。为了调节 ADRC,需要设置适当的时域、模型类型和临界增益、控制器和观测器带宽以及初始条件。
有关详细信息,请参阅自抗扰控制。
示例
Implement PMSM Speed Control Using Active Disturbance Rejection Control
Implement active disturbance rejection control (ADRC) of the speed of a permanent magnet synchronous motor (PMSM) modeled in Simulink® using the Active Disturbance Rejection Control block. You can use the example to implement field-oriented control (FOC) using either a proportional integral (PI) or ADRC-based controller to run the motor in the speed control mode. Therefore, you can compare the performance of the PI and ADRC controllers.
(Motor Control Blockset)
端口
输入
提供受控系统要跟随的参考信号。
自 R2026b 起
将此端口连接到现有控制器发出的外部控制信号。模块使用此信号促进从现有控制器到 ADRC 控制器的无扰动切换。
依赖关系
要启用此输入端口,请将跟踪模式参数设置为跟踪外部控制信号或重置观测器状态。
自 R2026b 起
要启用 ESO,请将此信号设置为正值。否则,ESO 被禁用。
依赖关系
要启用此输入端口,请将跟踪模式参数设置为重置观测器状态。
自 R2026b 起
将被控对象输出信号的导数作为输入直接提供给模块。
依赖关系
要启用此输入端口,请将跟踪模式参数设置为重置观测器状态,并将模型类型参数设置为二阶。此外,您还必须为观测器状态反馈时间常数参数选择使用外部源。
输出
将控制输入信号连接到被控对象输入。
从扩张状态观测器估计的被控对象模型的扩张状态。
如果模型类型为一阶,xhat 是长度为 2 的向量,估计的状态为 和 。
如果模型类型为二阶,xhat 是长度为 3 的向量,估计的状态为 、 和 。
依赖关系
要启用此输出端口,请选择估计的扩张状态参数。
参数
“参数”选项卡
指定控制器时域。
当您选择离散时间时,请使用采样时间参数指定采样时间。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | time_domain |
| 值: | "discrete-time" (默认) | "continuous-time" |
指定离散时间控制器的采样时间值。
依赖关系
要启用此参数,请将时域参数设置为离散时间。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | Ts |
| 值: | "0.01" (默认) | finite positive scalar in quotes |
将被控对象的模型类型指定为以下项之一。
一阶 - 如果您的被控对象表现出一阶动态系统行为,请选择此选项。
二阶 - 如果您的被控对象表现出二阶动态系统行为,请选择此选项。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | model_type |
| 值: | "first-order" (默认) | "second-order" |
编程用法
模块参数:'model_type' |
| 类型:字符向量 |
值:'first-order' | 'second-order' |
默认值:'first-order' |
指定描述模型行为的临界增益 b0。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | b0 |
| 值: | "1" (默认) | finite nonzero scalar in quotes |
指定控制器带宽。此参数可确定控制器响应的速度。一般情况下,更快的响应需要更大的控制器带宽。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | wc |
| 值: | "1" (默认) | finite positive scalar in quotes |
指定观测器带宽。通常,将此项设置为控制器带宽的 5 到 10 倍,以便观测器比控制器收敛得要快。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | wo |
| 值: | "10" (默认) | finite positive scalar in quotes |
“模块”选项卡
将扩张状态观测器的初始状态值指定为长度为 n 的标量或向量。
如果模型类型为一阶,则 n = 2。否则,n = 3。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | x0 |
| 值: | "0" (默认) | finite scalar in quotes | vector in quotes |
用于将模块输出限制到指定的饱和界限的选项。使用上限和下限参数指定输出饱和界限。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | ulim_checkbox |
| 值: | "off" (默认) | "on" |
指定模块输出的上限。一旦模块输出超出此值,就会保持为该值。
依赖关系
要启用此参数,请选择限制输出参数。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | umax |
| 值: | "inf" (默认) | scalar in quotes |
指定模块输出的下限。一旦模块输出低于此值,就会保持为该值。
依赖关系
要启用此参数,请选择限制输出参数。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | umin |
| 值: | "-inf" (默认) | scalar in quotes |
自 R2026b 起
无扰动切换的跟踪模式,指定为以下值之一。
无 - 不执行跟踪,也不执行无扰动切换。
跟踪外部控制信号 - 持续运行扩张状态观测器来估计状态并跟踪控制信号,从而确保无扰动切换。选择此选项可启用 TR 输入端口。
重置观测器状态 - 在执行无扰动切换之前,使用外部重置信号,根据测得的过程输出对扩张状态观测器进行初始化。选择此选项可完成以下操作:
选择此选项可启用 TR 输入端口和使能输入端口
如果模型类型参数为二阶,则选择此选项可启用观测器状态反馈时间常数参数。
Active Disturbance Rejection Control 模块本身并不启动控制器切换。您必须在模型外部执行切换。
对于两种无扰动切换模式,Active Distrubance Rejection Control 模块都会从现有控制器输出信号逐渐过渡到 ADRC 输出信号。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | umin |
| 值: | "none" (默认) | "track external control signal" | "reset observer state" |
自 R2026b 起
二阶状态反馈的时间常数,指定为正标量。
依赖关系
要启用此参数,请将跟踪模式参数设置为重置观测器状态,并将模型类型参数设置为二阶。
您可以将被控对象输出的导数作为输入提供给模块,而不必提供状态反馈时间常数。为此,请选择使用外部源,这将添加 ydot 输入端口。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | FilterTimeConstant |
| 值: | "0.01" (默认) | positive scalar in quotes |
| 参数: | UseExternalDerivative |
| 值: | "off" (默认) | "on" |
用于从扩张状态观测器输出状态的选项。
如果模型类型为一阶,则模块输出 和 。
如果模型类型为二阶,则模块输出 、 和 。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | xhat_checkbox |
| 值: | "off" (默认) | "on" |
扩展功能
C/C++ 代码生成
使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。
版本历史记录
在 R2022b 中推出现在,您可以从现有控制器(例如 PID 控制器)无扰动切换到 Active Disturbance Rejection Control 模块。为此,请使用跟踪模式参数。
Active Disturbance Rejection Control 模块本身并不启动控制器切换。您必须在模型外部执行切换。执行此操作时,模块会从现有控制器输出信号逐渐过渡到 ADRC 输出信号。
Active Disturbance Rejection Control 模块现在位于 Simulink Control Design/Adaptive Control 子库中。
在 R2023b 中,当您打开使用上一版本保存的模型时,Active Disturbance Rejection Control 模块的库链接会自动更新。
另请参阅
主题
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)



