3_1_PID控制原理

       自从计算机进入控制领域以来,用数字计算机代替模拟计算机调节器组成计算机控制系统,不仅可以用软件实现PID控制算法,而且可以利用计算机的逻辑功能,使PID控制更加灵活。数字PID控制在生产过程中是一种最普遍采用的控制方法,在机电、冶金、机械、化工等行业中获得了广泛的应用。将偏差的比例(P)、积分(I)和微分(D)通过线性组合构成控制量,对被控对象进行控制,故称PID控制器。

       1.1 PID控制原理

       在模拟控制系统中,控制器最常用的控制规律是PID控制。模拟PID控制系统原理框图如下。系统由模拟PID控制器和被控对象组成。

5da46ea4906a030fc5edfc5e26cd468e.png

       PID控制器是一种线性控制器,它根据给定值yd(t)与实际输出值y(t)构成控制篇差:

       error(t) = yd(t) – y(t)                                               (1.1)

       PID控制规律为:

c41a425a3562620cd70e1d443e68c221.png

或写成传递函数的形式:    

d45adeb81dcabbc93a90725660fc7210.png        

式中,kp为比例系数;T1为积分时间常数;TD为微分时间常数。

       简单来说,PID控制器各校正环节的作用如下:

(1)比例环节:成比例地反映控制系统的偏差信号error(t),偏差一旦产生,控制器立即产生控制作用,以减小偏差。

(2)积分环节:主要用于消除静差,提高系统的无差度。积分作用的强弱取决于积分时间常数T1,T1越大,积分作用越弱,反之则越强。

(3)微分环节:反映偏差信号的变化趋势(变化速率),并能在偏差信号变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。

       1.2  Matlab对阶跃信号的仿真

       代码:

%设一被控对象G(s)=50/(0.125s^2+7s)<em id="__mceDel">%用增量式PID控制算法编写仿真程序
%输入分别为单位阶跃、正弦信号,采样时间为1ms
 
clear;
close all;
ts=0.001;                 %采样时间
sys=tf(50,[0.125,7,0]); %tf是传递函数  即被控对象函数G();
dsys=c2d(sys,ts,'z');    %把控制函数离散化
[num,den]=tfdata(dsys,'v');% 离散化后提取分子、分母
u_1=0;
u_2=0;
y_1=0;
y_2=0;
error_1=0;
error_2=0;
P=0;I=0;D=0;
n=1000;
time=zeros(1,n);
rin=zeros(1,n);
yout=zeros(1,n);
for k=1:n
    time(k)=k*ts;                   %采样时间
    S=1;
    if S==1
        kp=10;ki=100;kd=0.1;        %初始化PID
        rin(k)=1*(time(k)>0.1);     %Step Signal
    elseif S==2
        kp=10;ki=100;kd=0.1;
        rin(k)=0.5*sin(2*pi*k*ts);  %Sine Signal即实际输入
    end
    du=kp*P+kd*I+ki*D;              %PID Controller控制系数
    u=u_1+du;                       %Restricting the output of controller
     
    yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;   %实际输出
    error=rin(k)-yout(k);           %Return of parameters 误差
    u_2=u_1;                        %保存上上次输入
    u_1=u;                          %保存上一次控制系数
    y_2=y_1;                        %保存上上次输出
    y_1=yout(k);                    %保存上一次输出
    P=error-error_1;                %Calculating P
    D=error-2*error_1+error_2;      %Calculating D
    I=error;                        %Calculating I
    error_2=error_1;                %保存上上次误差
    error_1=error;                  %保存上一次误差
end
figure;
plot(time,rin,'b',time,yout,'r');   %输入和实际控制输出
xlabel('time(s)'),ylabel('rin,yout');

       效果:    

05a7723fdbcf80f7f47aa07f19ff5165.png

上面代码没研究,有兴趣的小伙伴可以研究修改测下。

Simulink PID仿真:

93e2e07ed3fb77c4c12fcc31926cd430.png

效果:    

bb5890373fb5104258fcbc92d97c1b81.png

《先进PID控制MATLAB仿真》

https://www.cnblogs.com/dingdangsunny/p/17967886

https://blog.youkuaiyun.com/STM89C56/article/details/105666186

欢迎关注:

92561ec6ca34c87d2f264008567a35d4.png

有需要交流的小伙伴可留言讨论。    

该数据集通过合成方式模拟了多种发动机在运行过程中的传感器监测数据,旨在构建一个用于机械系统故障检测的基准资源,特别适用于汽车领域的诊断分析。数据按固定时间间隔采集,涵盖了发动机性能指标、异常状态以及工作模式等多维度信息。 时间戳:数据类型为日期时间,记录了每个数据点的采集时刻。序列起始于2024年12月24日10:00,并以5分钟为间隔持续生成,体现了对发动机运行状态的连续监测。 温度(摄氏度):以浮点数形式记录发动机的温度读数。其数值范围通常处于60至120摄氏度之间,反映了发动机在常规工况下的典型温度区间。 转速(转/分钟):以浮点数表示发动机曲轴的旋转速度。该参数在1000至4000转/分钟的范围内随机生成,符合多数发动机在正常运转时的转速特征。 燃油效率(公里/升):浮点型变量,用于衡量发动机的燃料利用效能,即每升燃料所能支持的行驶里程。其取值范围设定在15至30公里/升之间。 振动_X、振动_Y、振动_Z:这三个浮点数列分别记录了发动机在三维空间坐标系中各轴向的振动强度。测量值标准化至0到1的标度,较高的数值通常暗示存在异常振动,可能与潜在的机械故障相关。 扭矩(牛·米):以浮点数表征发动机输出的旋转力矩,数值区间为50至200牛·米,体现了发动机的负载能力。 功率输出(千瓦):浮点型变量,描述发动机单位时间内做功的速率,取值范围为20至100千瓦。 故障状态:整型分类变量,用于标识发动机的异常程度,共分为四个等级:0代表正常状态,1表示轻微故障,2对应中等故障,3指示严重故障。该列作为分类任务的目标变量,支持基于传感器数据预测故障等级。 运行模式:字符串类型变量,描述发动机当前的工作状态,主要包括:怠速(发动机运转但无负载)、巡航(发动机在常规负载下平稳运行)、重载(发动机承受高负荷或高压工况)。 数据集整体包含1000条记录,每条记录对应特定时刻的发动机性能快照。其中故障状态涵盖从正常到严重故障的四级分类,有助于训练模型实现故障预测与诊断。所有数据均为合成生成,旨在模拟真实的发动机性能变化与典型故障场景,所包含的温度、转速、燃油效率、振动、扭矩及功率输出等关键传感指标,均为影响发动机故障判定的重要因素。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值