师傅的泡泡,泡泡的师傅,知识改变命运!
电机控制中,PID的使用是非常常见的, 而且在Simulink仿真中经常需要封装子系统,以便于在一个对话框里进行参数设定,那么今天就学学怎么用simulink仿真PID,并封装起来。
目标:使用Simulink基础模块搭建电流环的PI控制器,然后封装成Mask。
1,PID基础知识
电机中使用的电流环Id\Iq是用来保持电流的恒定输出,一般都是使用Id* = 0,Iq* = Vel_Pid_Out(速度环的输出值)。那么稍微复习一下PID的相关知识。
模拟PID的控制公式:分为比例项、积分项、微分项。
由于计算机是一种采样控制,只能根据采样时刻的偏差计算控制量,不能连续输出控制量。因此上面公式中的积分项和微分项必须离散化处理,得到的离散PID公式如下:
如果采样周期足够小,则两个公式的近似计算可以获得足够精确的结果,离线控制过程与连续过程十分接近。因此我们仿真选择第二公式。
2,PI模型搭建
在明白了PID的基本原理之后,进行电流PI的仿真模型搭建。
输出参量为误差err,比例项为Kp * err,积分项为Ki*err的积分。重点是Discrete-time integration 的配置。由于需要配置成Mask,所以必须设置好各个模块的外部设置参数。整体搭建如下:
乘法器Gain配置如下,需要引出Kp和Ki参数。
零阶保持器(ZOH,Zero-Order Hold)是将输入信号每过一个采样时间更新一次,并保持到下一次采样,多用于将连续信号离散化。配置如下,需要引出Ts参数。
积分器需要引出采样时间、初始输出值、输出最大值、输出最小值。
最后就是限制器的配置,需要引出最大值和最小值,配置如下
3,封装Mask
那么PI的仿真框图基本就配置完了,现在需要将其封装起来Mask。
1, 选中全部,快捷键Crtl + G:
2,Mask–>Create Mask,或者快捷键Ctrl + M。
3,参数设置,Parameters & Dialog–>Promote
4,添加Promoted parameters。
5. 更改参数属性Property editor–>Properties
点击Ok之后,我们就创建好了一个设置参数。
6.按照如上步骤将其他所有的参数全部引出。
需要注意的是采样时间、输出最大值、输出最小值,需要绑定好几个模块。以输出最大值为例,他需要包含限制器跟积分器的Prompt。
8,回到主界面,双击Subsystem,即可更改设置的参数。
至此,就完成了电流环PI控制器的mask封装。
下个学习任务是:
创建电机控制模型,生成速度、Id、iq,配合刚完成PI控制器搭建一个闭环控制系统。