【电力电子在电力系统中的应用】1 具有输出限幅的离散系统的PID控制器

【仅供参考】

【2023.02西南交大电力电子在电力系统中的应用】

目录

[0 仿真要求](#0 仿真要求)

[1 PID控制器的设计与封装](#1 PID控制器的设计与封装)

[1.1 搭建仿真电路](#1.1 搭建仿真电路)

[1.2 对PID控制器部分封装为subsystem模块](#1.2 对PID控制器部分封装为subsystem模块)

[1.3 创建Mask模块](#1.3 创建Mask模块)

[2 PID控制器的参数选择](#2 PID控制器的参数选择)

[2.1 Kp参数的调节](#2.1 Kp参数的调节)

[2.2 Ki参数的调节](#2.2 Ki参数的调节)

[2.3 Kd参数的调节](#2.3 Kd参数的调节)


0 仿真要求

1、针对极点0,-0.5的被控系统,设计具有输出限幅 的离散系统的PID控制器,并封装成参数可设置的模块,可设置Kp、Ki、Kd、输出限幅最大、最小值等参数。

2、验证PID在以下系统(替换Subsystem)的阶跃输出。

1 PID控制器的设计与封装

1.1 搭建仿真电路

其中:

  1. 将三个Gain模块的数值分别用参数Ki、Kp、Kd代替,便于后续封装成subsystem、创造Mask模块后,对模块属性进行设置;
  2. 在Ki对应的Gain模块后串上一个Discrete-Time Integrator(离散时间积分)模块;
  3. 在Kd对应的Gain模块后串上一个Discrete Derivative(离散系统微分)模块;
  4. 用Add模块将比例、积分、微分三条线路进行加和;
  5. 在Add模块后串联一个Saturation模块,对输出进行限幅;

将Saturation模块中Upper limit、Lower limit的数值分别用参数Max和Min代替,以便于后续创造Mask模块后,对模块属性进行设置。

1.2 对PID控制器部分封装为subsystem模块

得到下图所示电路:

1.3 创建Mask模块

对各参数进行编辑如下:

得到参数可设置的模块如下(可设置Kp、Ki、Kd、输出限幅最大、最小值等参数):

2 PID控制器的参数选择

2.1 Kp参数的调节

先将Ki、Kd清零,不进行限幅。如右图,当Kp选为0.05时(图中黄线所示),达到稳态时间偏长;Kp选为0.14时(图中蓝线所示),反应速度提升,但产生过冲。

2.2 Ki参数的调节

Ki在有外力作用和系统误差时用以消除偏差、提高精度。调大Ki也可增加响应速度,但同时也会产生过冲、过大会产生振荡。此处调节Ki参数效果不甚明显,故取一较小数值0.000001。

2.3 Kd参数的调节

Kd用以抑制过冲和振荡。Kd过小系统会产生过冲,过大则会减慢响应速度。如右图,当Kd选为0.01时(图中黄线所示),产生些许过冲;Kp选为0.14时(图中蓝线所示),差不多为预期所需。

综上所述,所得参数如图:

使用PID控制(黄线)和不使用PID控制(蓝线)时输出波形如图:

相关推荐
星夜离尘5613 小时前
MATLAB 只剩批次摘要怎么合并方差:用 n、mean、M2 保留批间差异
开发语言·matlab
爱喝热水的呀哈喽1 天前
HEJIAN RESEARCH
开发语言·matlab
星夜离尘562 天前
MATLAB阶跃响应怎么量:别把最后一个采样点当成稳态
开发语言·matlab
星夜离尘562 天前
MATLAB滑动RMS如何接报警:窗口未满和缺样不能当成正常
开发语言·matlab
机器学习之心2 天前
给地铁牵引系统做一次“体检“:灰色聚类 + 正态云模型的MATLAB完整实现
matlab·数据挖掘·聚类
星夜离尘563 天前
MATLAB 采样混叠实验 20 Hz 和 80 Hz 为什么会得到相同数据
matlab·数据采集·信号处理·采样定理·混叠
weixin_307779133 天前
C++代码实现MATLAB中的fitrtree函数功能
开发语言·c++·算法·matlab
weixin_307779133 天前
C++代码实现MATLAB中的spectralcluster函数功能
开发语言·c++·算法·matlab
孙琦Ray3 天前
开源MATLAB工具LIBquiv:650小时老化仿真仅139秒
matlab·开源·锂离子电池·等效电路模型·电池老化·libquiv·电池建模
phoenix@Capricornus3 天前
LDA 协方差矩阵(MATLAB `fitcdiscr`)
算法·matlab·矩阵