ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

嵌入式开发笔记:理想型 PI 与并联式 PI、位置式与增量式,到底有什么区别?

嵌入式开发笔记:理想型 PI 与并联式 PI、位置式与增量式,到底有什么区别? 嵌入式开发笔记理想型 PI 与并联式 PI、位置式与增量式到底有什么区别文章目录嵌入式开发笔记理想型 PI 与并联式 PI、位置式与增量式到底有什么区别一、前言两组概念两个维度二、维度一连续域中的两种写法2.1 理想型 PI2.2 并联式 PI2.3 两者的等价关系三、维度二数字域中的两种实现3.1 位置式 PI3.2 增量式 PI3.3 两者的区别四、两个维度的正交关系五、四种组合的代码对照5.1 组合 1理想型 位置式5.2 组合 2理想型 增量式5.3 组合 3并联式 位置式5.4 组合 4并联式 增量式六、工程中怎么选6.1 参数形式的选型6.2 实现方式的选型七、总结一、前言两组概念两个维度在电机控制和电源开发中PI 调节器是最常用的控制器。但很多初学者在阅读不同厂商的代码和文档时经常被下面这些术语搞晕理想型 PI并联式 PI位置式 PI增量式 PI这四组词经常被混在一起讲导致很多人以为它们是四种不同的控制器。实际上它们描述的是两个完全不同的维度理想型和并联式是连续域里同一个 PI 的两种等价写法位置式和增量式是数字域里同一个 PI 的两种等价实现这两个维度互相独立可以任意组合。理想型参数可以做位置式也可以做增量式并联式参数同样如此。本文把这四个概念拆开讲清楚并用代码和配图展示它们的组合关系。二、维度一连续域中的两种写法2.1 理想型 PI理想型 PI 的传递函数写作G(s) Kp * (1 1/(Ti * s))展开后G(s) Kp Kp / (Ti * s)这里的两个参数是Kp比例增益Ti积分时间常数从物理意义上看Ti 表示积分作用累积到与比例作用相同输出所需的时间。Ti 越大积分作用越弱。2.2 并联式 PI并联式 PI 的传递函数写作G(s) Kp Ki / s这里的两个参数是Kp比例增益Ki积分增益从形式上看并联式 PI 把比例项和积分项拆成了两个独立的增益结构非常直观。2.3 两者的等价关系这两个传递函数在数学上完全等价只是参数化方式不同。对比一下理想型G(s) Kp Kp/(Ti * s) 并联式G(s) Kp Ki / s可以得出参数换算关系Ki Kp / Ti Ti Kp / Ki也就是说给定理想型的 Kp 和 Ti可以唯一确定并联式的 Kp 和 Ki反过来也一样。所以它们在连续域里描述的是同一个控制器没有本质区别。三、维度二数字域中的两种实现当把连续域的 PI 控制器搬到 MCU 上运行时需要对它做离散化。离散化的方式不同就产生了位置式和增量式两种实现。3.1 位置式 PI位置式 PI 直接计算控制量的绝对值。离散化后的公式为u(k) Kp * e(k) Ki * Ts * Σe(j)其中u(k)第 k 个周期的输出e(k)第 k 个周期的误差Ts控制周期Σe(j)从 0 到 k 的误差累加和位置式的特点是输出直接对应控制量的绝对值比如 PWM 占空比、电压指令等。代码实现并联式参数 位置式typedefstruct{floatKp;floatKi;floatTs;floatintegral;// 积分累加器floatout_max;floatout_min;}PI_Position;floatPI_Position_Update(PI_Position*pi,floaterror){// 积分累加pi-integralerror*pi-Ts;// 计算输出floatoutpi-Kp*errorpi-Ki*pi-integral;// 输出限幅if(outpi-out_max)outpi-out_max;if(outpi-out_min)outpi-out_min;returnout;}3.2 增量式 PI增量式 PI 计算的是控制量的变化量而不是绝对值。离散化后的公式为Δu(k) Kp * (e(k) - e(k-1)) Ki * Ts * e(k)当前输出等于上一次输出加上增量u(k) u(k-1) Δu(k)增量式的特点是输出是累加出来的每次只计算变化量。代码实现并联式参数 增量式typedefstruct{floatKp;floatKi;floatTs;floaterror_last;// 上一次误差floatout;// 当前输出floatout_max;floatout_min;}PI_Incremental;floatPI_Incremental_Update(PI_Incremental*pi,floaterror){// 计算增量floatdeltapi-Kp*(error-pi-error_last)pi-Ki*pi-Ts*error;// 更新输出pi-outdelta;// 输出限幅if(pi-outpi-out_max)pi-outpi-out_max;if(pi-outpi-out_min)pi-outpi-out_min;// 保存当前误差pi-error_lasterror;returnpi-out;}3.3 两者的区别对比维度位置式增量式输出含义控制量绝对值控制量变化量积分累加需要显式累加隐含在输出累加中内存需求需要保存积分器需要保存上次误差和上次输出切换扰动切换时输出可能突变切换时输出平滑积分饱和需要单独处理天然抗饱和配合限幅适用场景需要绝对控制量需要平滑输出四、两个维度的正交关系上面两个维度是完全独立的连续域决定了 PI 的参数怎么定义KpTi 还是 KpKi数字域决定了 PI 的代码怎么写位置式还是增量式所以可以任意组合组合参数形式实现方式组合 1理想型Kp, Ti位置式组合 2理想型Kp, Ti增量式组合 3并联式Kp, Ki位置式组合 4并联式Kp, Ki增量式这四种组合在数学上是等价的只是参数含义和代码结构不同。五、四种组合的代码对照下面用同一组 PI 参数分别用四种组合实现展示它们的一致性。假设并联式参数为 Kp2.0Ki10.0控制周期 Ts0.001s。对应的理想型参数为Ti Kp / Ki 2.0 / 10.0 0.25.1 组合 1理想型 位置式typedefstruct{floatKp;floatTi;floatTs;floatintegral;}PI_Ideal_Position;floatPI_Ideal_Position_Update(PI_Ideal_Position*pi,floaterror){pi-integralerror*pi-Ts;returnpi-Kp*errorpi-Kp/pi-Ti*pi-integral;}5.2 组合 2理想型 增量式typedefstruct{floatKp;floatTi;floatTs;floaterror_last;floatout;}PI_Ideal_Incremental;floatPI_Ideal_Incremental_Update(PI_Ideal_Incremental*pi,floaterror){floatdeltapi-Kp*(error-pi-error_last)pi-Kp/pi-Ti*pi-Ts*error;pi-outdelta;pi-error_lasterror;returnpi-out;}5.3 组合 3并联式 位置式前面已经展示过这里省略。5.4 组合 4并联式 增量式前面已经展示过这里省略。注意这四种代码在数学上完全等价。给定相同的误差序列它们的输出结果在理论上是一致的。六、工程中怎么选虽然四种组合数学等价但在工程实践中选择哪一种取决于具体场景。6.1 参数形式的选型场景推荐形式原因经典控制理论教材理想型与 Bode 图、根轨迹分析一致工程调试并联式Kp、Ki 独立可调直观厂商文档看文档不同厂商习惯不同6.2 实现方式的选型场景推荐方式原因需要绝对控制量位置式直接输出 PWM、电压等需要平滑切换增量式输出不会突变积分饱和敏感增量式天然抗饱和内存受限看情况位置式需要保存积分器增量式需要保存上次误差和输出七、总结概念所属维度含义理想型 PI连续域用 Kp、Ti 参数化并联式 PI连续域用 Kp、Ki 参数化位置式数字域直接计算输出绝对值增量式数字域计算输出变化量核心结论理想型和并联式是同一个连续域 PI 的两种等价写法参数可以互相换算位置式和增量式是同一个数字域 PI 的两种等价实现代码可以互相转换这两个维度相互独立可以任意组合四种组合在数学上完全等价工程中选哪种取决于参数习惯、代码风格和具体应用场景搞清楚这两个维度再看到不同厂商的代码和文档时就不会被各种术语绕晕了。
返回列表