simulink中的PID模块的使用

本文详细介绍了Simulink中的PID模块,包括控制器类型、PID格式、时域选择及输出限制等内容。并通过对比,说明了自建PID模块在特定场景下的优势。

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

1、Simulink中PID模块的介绍

首先,找到PID模块,双击打开模块的参数设置,如下:

在这里插入图片描述

下面介绍几种常用功能的参数设置。

1.1、控制器类型选择

可以看到Controller:可以选择PI、PD和PID控制等。

1.2、PID控制器格式

Form:有并行(默认)和理想型(串行),其传函如下:

在这里插入图片描述
注意:传函中的P、I、D系数就是我们需要整定的三个PID参数。

1.3、时域选择

Time domain:连续时间和离散时间。
当选择离散时间时,需要设置积分器和微分器中的滤波器的离散化方法,有向前欧拉,后向欧拉,
双线性变换法,如下图:

在这里插入图片描述

可以看出,积分环节 ( 1 s ) (\frac{1}{s}) (s1)通过前向欧拉离散化方法变成了 T s 1 z − 1 T_{s}\frac{1}{z-1} Tsz11

1.4、PID的饱和输出限制

限制PID的输出,还有去饱和积分的方法,如,反算法、钳位法。如图所示:

在这里插入图片描述
当然我们也可以自己搭一个PID控制器。

2 、自建PID模块

下面搭建一个常用的离散型带输出饱和限制和积分饱和限制的PI控制器。如下:
在这里插入图片描述

从这个离散的PI控制模块中,可以看出积分环节是带有限幅输出的,当然还要对这个积分模块的限幅进行设置勾选,如图:

在这里插入图片描述

为什么我们需要对积分环节进行单独的限制输出。看个例子:

在这里插入图片描述

这个是带有积分饱和限制的PI控制器调节出来的系统响应。

在这里插入图片描述

这个是用simulink系统自带的PI控制器调节出来的系统响应,两个PI控制器的参数设置一样。但是带抗饱和积分的PI控制器调节出来的系统响应效果明显更好。

那么什么时候需要加积分环节限制输出呢?当系统在抗扰动时,需要一个大的Ki参数来快速消除稳态误差,而在开始从0到稳态这个过程又会因为ki太大而引起过大超调时,这个时候就需要加积分过饱和限制。

好的,我可以为您提供相关的教程: 1. BP神经网络PID控制器的Simulink仿真模型搭建 首先需要安装MATLAB和Simulink软件。 步骤: 1)打开Simulink,新建一个模型。 2)在Simulink库中找到PID控制器模块,将其拖入模型中。 3)在模型中加入BP神经网络模块,将其与PID控制器模块连接。 4)设置BP神经网络模块的输入和输出,可以使用Simulink中的输入输出模块。 5)设置PID控制器模块的参数,包括比例系数Kp、积分时间Ti和微分时间Td等。 6)设置仿真时间和仿真步长,开始仿真。 2. 神经网络PID控制器MATLAB代码 以下是一份简单的神经网络PID控制器的MATLAB代码示例: ```matlab % 清空工作区 clear all; close all; clc; % 设置PID控制器参数 Kp = 1; Ti = 1; Td = 0.1; % 设置仿真时间和步长 tspan = [0 10]; dt = 0.01; % 设置初始值 y0 = 0; e0 = 0; de0 = 0; u0 = 0; % 定义神经网络 net = feedforwardnet([10 5]); net.trainFcn = 'trainlm'; % 生成训练数据 t_train = 0:dt:2*pi; y_train = sin(t_train); u_train = zeros(size(t_train)); for i = 2:length(t_train) e_train(i) = y_train(i-1) - u_train(i-1); de_train(i) = (e_train(i) - e_train(i-1)) / dt; u_train(i) = Kp * (e_train(i) + (1/Ti)*sum(e_train(1:i))*dt + Td*de_train(i)); end % 训练神经网络 net = train(net,[e_train;de_train],[u_train]); % 仿真 [t,y] = ode45(@(t,y) pid_neural_net(t,y,net,Kp,Ti,Td),tspan,y0); % 绘图 plot(t,y); xlabel('时间'); ylabel('输出'); title('神经网络PID控制器仿真'); % 定义PID控制器函数 function u = pid_neural_net(t,y,net,Kp,Ti,Td) e = 0 - y; de = 0 - y; u = Kp * (e + (1/Ti)*sum(e)*t + Td*de) + net([e;de]); end ``` 以上是一个简单的神经网络PID控制器的MATLAB代码示例,可以根据具体需求进行修改和优化。 希望这些信息能对您有所帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值