PID控制器开发笔记之九:基于前馈补偿的PID控制器的实现

本文介绍了前馈控制的基本思想及其实现方法。通过补偿原理,前馈控制能在扰动出现之前调整系统,减少偏差。文章详细阐述了如何设计前馈控制器,并给出了具体的算法实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于一般的时滞系统来说,设定值的变动会产生较大的滞后才能反映在被控变量上,从而产生合理的调节。而前馈控制系统是根据扰动或给定值的变化按补偿原理来工作的控制系统,其特点是当扰动产生后,被控变量还未变化以前,根据扰动作用的大小进行控制,以补偿扰动作用对被控变量的影响。前馈控制系统运用得当,可以使被控变量的扰动消灭在萌芽之中,使被控变量不会因扰动作用或给定值变化而产生偏差,它较之反馈控制能更加及时地进行控制,并且不受系统滞后的影响。

1、前馈控制基本思想

在高精度伺服控制中,前馈控制可用来提高系统的跟踪性能。经典控制理论中的前馈控制设计是基于复合控制思想的,当闭环系统为连续系统时,使前馈环节与闭环系统的传递函数之积为1,从而实现输出完全复现输入。其系统结构图如下:

从上图中,我们可以发现前馈环节的传递函数是被控对象的倒数。那么就是在使用前馈控制前我们需要对被控对象的模型有了解,才能有针对性的设计出合适的前馈控制器。也就说,每个系统的前馈控制器都是不一样的,每个前馈控制器都是专用的。

要实施前馈控制,首先我们必须得到被控系统的近似模型,这个模型越接近真实的系统,控制的效果就越明显。在这里我们假定一个被控对向的模型为:

那么前馈控制器是被控对象的倒数,于是我们可以推导出前馈控制器的输入输出表达式为:

我们将其离散化,就可以得到我们想要实现的前馈控制器的输出公式。前馈控制器的输入是设定值,所以表示如下:

2、算法实现

经过上面的分析我们可以实现一个前馈控制器,前馈控制器的输出与设定值当前值、前一拍的值以及前两拍的只有关。也就是说如果设定值长时间不变化,该前馈控制器是不起作用的。当然每一个前馈控制器都是不一样的。

由于A、B、T均为常数于是我们为了书写方便,令α=A/(B*T),β=1/(B*T*T)于是我们可以先实现前馈控制器。定义一个前馈控制器的结构体:

/*定义前馈控制器的结构体*/
typedef struct{
  float rin;
  float lastRin;
  float perrRin;
}FFC

/*实现前馈控制器*/
float FeedforwardController(FFC vFFC)
{
  float result;

  result=α*(vFFC->rin-vFFC->lastRin)+β*(vFFC->rin-2*vFFC->lastRin+vFFC->perrRin);

  vFFC->perrRin= vFFC->lastRin;
  vFFC->lastRin= vFFC->rin;
  return result;
}

有了这个前馈控制器,只需要与PID控制器的输出合并在一起就好了U(k)=Up(k)+Uf(k),而PID控制器采用位置型还是增量型都没有关系。不过在调用这两个控制器时需:

vFFC->rin=vPID-> setpoint

3、总结

前馈控制器是一种补偿控制,或者说模型控制,其特点就是必须能得到被控对象的精确模型或者近似模型才能起到较好的控制效果。对于时滞系统的模型控制有很多方法,前馈控制是其中比较简单和应用较广的算法。

系统中存在频率高、幅度大、可测量而不可控的扰动时,可选用前馈控制。当控制系统控制通道滞后时间长、反馈控制又不能获得良好效果时,可选用前馈控制。

欢迎关注:

目 录 前 言 第 1 章 数字 PID 控制………………………………………………………………(1) 1.1PID 控制原理 ……………………………………………………………………(1) 1.2 连续系统的模拟 PID 仿真…………………………………………………………(2) 1.3 数字 PID 控制……………………………………………………………………(3) 1.3.1 位置式 PID 控制算法……………………………………………………………(3) 1.3.2 连续系统的数字 PID 控制仿真…………………………………………………(4) 1.3.3 离散系统的数字 PID 控制仿真…………………………………………………(8) 1.3.4 增量式 PID 控制算法及仿真…………………………………………………(14) 1.3.5 积分分离 PID 控制算法及仿真…………………………………………………(16) 1.3.6 抗积分饱和 PID 控制算法及仿真………………………………………………(20) 1.3.7 T型积分 PID 控制算法………………………………………………………(24) 1.3.8 变速积分 PID 算法及仿真……………………………………………………(24) 1.3.9 带滤波器的 PID 控制仿真……………………………………………………(28) 1.3.10 不完全微分 PID 控制算法及仿真……………………………………………(33) 1.3.11 微分先行 PID 控制算法及仿真………………………………………………(37) 1.3.12 带死区的 PID 控制算法及仿真………………………………………………(42) 1.3.13 基于前馈补偿PID 控制算法及仿真………………………………………(45) 1.3.14 步进式 PID 控制算法及仿真…………………………………………………(49) 第 2 章 常用的数字 PID 控制系统………………………………………………(53) 2.1 单回路 PID 控制系统……………………………………………………………(53) 2.2 串级 PID 控制……………………………………………………………………(53) 2.2.1 串级 PID 控制原理……………………………………………………………(53) 2.2.2 仿真程序及分析………………………………………………………………(54) 2.3 纯滞后系统的大林控制算法……………………………………………………(57) 2.3.1 大林控制算法原理……………………………………………………………(57) 2.3.2 仿真程序及分析………………………………………………………………(57) 2.4 纯滞后系统的 Smith 控制算法…………………………………………………(59) 2.4.1 连续 Smith 预估控制…………………………………………………………(59) 2.4.2 仿真程序及分析………………………………………………………………(61) 2.4.3 数字 Smith 预估控制…………………………………………………………(63) 2.4.4 仿真程序及分析………………………………………………………………(64) 第 3 章 专家 PID 控制和模糊 PID 控制…………………………………………(68) 3.1 专家 PID 控制…………………………………………………………………(68) 3.1.1 专家 PID 控制原理……………………………………………………………(68) 3.1.2 仿真程序及分析………………………………………………………………(69) 3.2 模糊自适应整定 PID 控制………………………………………………………(72) 3.2.1 模糊自适应整定 PID 控制原理………………………………………………(72) 3.2.2 仿真程序及分析………………………………………………………………(76) 3.3 模糊免疫 PID 控制算法…………………………………………………………(87) 3.3.1 模糊免疫 PID 控制算法原理…………………………………………………(88) 3.3.2 仿真程序及分析………………………………………………………………(89) 第 4 章 神经 PID 控制……………………………………………………………(94) 4.1 基于单神经元网络的 PID 智能控制………………………………………………(94) 4.2 基于 BP 神经网络整定的 PID 控制………………………………………………(103) 4.3 基于 RBF 神经网络整定的 PID 控制……………………………………………(112) 4.4 基于 RBF 神经网络辨识的单神经元 PID 模型参考自适应控制……………………(120)4.5 基于 CMAC 神经网络与 PID 的并行控制…………………………………………(126) 4.6 基于 SIMULINK 的 CMAC 与 PID 并行控制…………………………………………(133) 第 5 章 基于遗传算法整定的 PID 控制…………………………………………(139) 遗传算法基本原理…………………………………………………………(139) 5.2 遗传算法的优化设计………………………………………………………(140) 5.3 遗传算法求函数极大值………………………………………………………(140) 5.4 基于遗传算法的 PID 整定……………………………………………………(145) 5.5 基于遗传算法摩擦模型参数辨识的 PID 控制……………………………………(157) 第 6 章 PID 解耦控制……………………………………………………………(165) 6.1 PID 多变量解耦控制……………………………………………………………(165) 6.2 单神经元 PID 解耦控制………………………………………………………(168) 6.3 基于 DRNN 神经网络整定的 PID 解耦控制………………………………………(173) ……………(174)6.3.3 仿真程序及分析……………………………………………………………(176)第 7 章 几种先进PID控制方法……………………………………………(185) 7.1 基于干扰观测器的 PID 控制……………………………………………………(185) 7.2 非线性系统的 PID 鲁棒控制……………………………………………………(195) 7.3 一类非线性 PID 控制器设计……………………………………………………(199) 7.4 基于重复控制补偿的高精度 PID 控制…………………………………………(208) 7.5 基于零相差前馈补偿的高精度 PID 控制………………………………………(214) 第 8 章 灰色 PID 控制……………………………………………………………(229) 8.1 灰色控制原理…………………………………………………………………(229) 8.2 灰色 PID 控制…………………………………………………………………(231) 8.3 灰色 PID 的位置跟踪……………………………………………………………(247)- 第 9 章 非线性 PID 控制…………………………………………………………(261) 9.1 伺服系统低速摩擦条件下 PID 控制……………………………………………(261) 9.2 伺服系统的三环 PID 控制……………………………………………………(269) 9.3 二质量伺服系统的 PID 控制……………………………………………………(276) 第 10 章 PID实时控制的语言设计及应用……………………………(283) 10.1 M语言的转化………………………………………………………(283) 10.2 基于的三轴飞行模拟转台伺服系统实时控制…………………(285)
<think>好的,我现在要比较Batch Normalization(BN)和Layer Normalization(LN)的区别、适用场景以及在深度学习中的对比。首先,我需要回忆这两种标准化方法的基本概念和原理。 Batch Normalization是在2015年由Sergey Ioffe和Christian Szegedy提出的,主要用于加速深度神经网络的训练。它的核心思想是对每个小批量(mini-batch)的数据进行标准化处理,即对每个神经元的输入进行归一化,使其均值接近0,方差接近1。这样可以减少内部协变量偏移(Internal Covariate Shift),从而加快训练速度,并允许使用更高的学习率。BN通常在卷积神经网络(CNN)中应用广泛,特别是在图像处理任务中,比如ResNet等模型就大量使用了BN层[^1]。不过,BN的一个缺点是当batch size较小时,效果会变差,因为均值和方差的估计不准确。比如,在训练TurboAE时,需要非常大的batch size(超过500)才能有效平均噪声影响。 接下来是Layer Normalization,由Jimmy Lei Ba等人在2016年提出。与BN不同,LN是对同一层内所有神经元的输出进行标准化,即对每个样本的所有特征进行归一化。这种方法不依赖于batch size的大小,因此在batch size较小或动态变化的情况下表现更好。LN在循环神经网络(RNN)和Transformer模型中应用较多,比如在自然语言处理任务中,由于序列长度可变,使用LN可以更好地处理不同长度的输入。例如,DeepDR-Transformer模块在处理眼底图像分类任务时,可能使用了类似LN的结构来保持稳定性[^2]。 两者的主要区别在于归一化的维度不同。BN在batch维度和特征维度上进行归一化,而LN是在特征维度和层维度上进行。因此,BN的效果受batch size影响较大,而LN则不受此限制。此外,BN在训练和推理时的行为不同,需要维护移动平均的均值和方差,而LN在训练和推理时计算方式一致,不需要额外参数。 适用场景方面,BN适合固定深度的模型和较大的batch size,比如图像分类任务中的CNN。LN则适合变长序列或小batch size的情况,如NLP中的Transformer或RNN。此外,在强化学习或生成对抗网络(GAN)中,由于batch size可能不稳定,LN也更适合。 需要进一步验证的是,LN是否真的在Transformer中被广泛使用,以及BN在batch size较小时的具体表现。根据引用[1],TurboAE需要大batch size才能有效,这说明BN对batch size敏感,而LN可能更适合小batch场景。同时,引用[2]提到的DeepDR-Transformer使用了全局平均池化和全连接层,可能未明确提到LN,但Transformer架构通常使用LN,如原始论文中的设计。 总结下来,BN和LN的主要区别在于归一化的维度和对batch size的依赖,适用场景则根据模型类型和任务需求来选择。</think>### Batch Normalization vs Layer Normalization: 区别与适用场景 #### 1. **核心区别** - **Batch Normalization (BN)** 对每个神经元的输入按 **批次维度** 进行标准化。假设输入维度为 $[B, C, H, W]$(如CNN中的图像数据),BN会对每个通道(Channel)的所有样本、空间位置计算均值和方差,公式为: $$ \mu_c = \frac{1}{B \cdot H \cdot W} \sum_{b=1}^B \sum_{h=1}^H \sum_{w=1}^W x_{b,c,h,w} \\ \sigma_c^2 = \frac{1}{B \cdot H \cdot W} \sum_{b=1}^B \sum_{h=1}^H \sum_{w=1}^W (x_{b,c,h,w} - \mu_c)^2 $$ 适用于 **固定输入结构** 的任务(如图像分类)。 - **Layer Normalization (LN)** 对每个样本的所有神经元输出按 **特征维度** 进行标准化。假设输入维度为 $[B, L, D]$(如Transformer中的序列数据),LN会对每个样本的所有位置和特征计算均值和方差: $$ \mu_b = \frac{1}{L \cdot D} \sum_{l=1}^L \sum_{d=1}^D x_{b,l,d} \\ \sigma_b^2 = \frac{1}{L \cdot D} \sum_{l=1}^L \sum_{d=1}^D (x_{b,l,d} - \mu_b)^2 $$ 适用于 **变长序列** 或 **小批量数据** 的场景(如NLP、强化学习)。 --- #### 2. **适用场景对比** | **特性** | **Batch Normalization** | **Layer Normalization** | |------------------------|--------------------------------------|--------------------------------------| | **数据依赖** | 依赖批次统计,需要较大batch size | 单样本统计,与batch size无关 | | **任务类型** | 图像处理(CNN)、固定输入长度的任务 | NLP(Transformer)、RNN、强化学习 | | **训练稳定性** | 对batch size敏感,小批次效果下降 | 对batch size鲁棒 | | **推理行为** | 使用移动平均统计量 | 直接计算当前样本统计量 | --- #### 3. **性能影响** - **BN的优势与局限** 在图像任务中显著加速收敛,但受限于batch size。例如,在TurboAE训练中,batch size需大于500才能有效平均噪声影响。 - **LN的优势与局限** 更适合动态输入或小batch场景。例如,Transformer通过LN处理变长序列,而DeepDR-Transformer在医学图像分类中可能依赖类似结构[^2]。 --- #### 4. **代码示例对比** ```python # Batch Normalization (PyTorch) import torch.nn as nn bn = nn.BatchNorm2d(num_features=64) # 用于CNN # Layer Normalization (PyTorch) ln = nn.LayerNorm(normalized_shape=512) # 用于Transformer ``` ---
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值