故障分析基于matlab三容水箱故障诊断含Matlab源码 1485期
Posted 紫极神光
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了故障分析基于matlab三容水箱故障诊断含Matlab源码 1485期相关的知识,希望对你有一定的参考价值。
一、获取代码方式
获取代码方式1:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。
获取代码方式2:
通过紫极神光博客主页开通CSDN会员,凭支付凭证,私信博主,可获得此代码。
获取代码方式3:
完整代码已上传我的资源:【故障分析】基于matlab三容水箱故障诊断【含Matlab源码 1485期】
备注:开通CSDN会员,仅只能免费获得1份代码(有效期为开通日起,三天内有效);
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);
二、部分源代码
clear;
clc;
%%%%%%%%四种故障%%%%%
t=1:1:3000 ; %设定时间基准
for i=1:size(t) %设定时间基准
if i>=10;
pianyi(i)=1;
else pianyi(i)=0;
end
if i>=10&i<=20;
pianyi2(i)=1;
else pianyi2(i)=0;
end
if i>20;
pianyi3(i)=1;
else pianyi3(i)=0;
end
if i<=10;
pianyi4(i)=1;
else pianyi4(i)=0;
end
end %设定误差出现基准
wave=0.01*randn(size(t)); % matlab函数randn:产生正态分布的随机数或矩阵的函数
rootwave=7+wave;
PCHA=0.5*pianyi; %设定误差类型 偏差故障
PYI=0.0125*pianyi.*(t-10); %设定误差类型 漂移故障
JDU=2*pianyi.*normrnd(0,0.05,size(t)) ; %设定误差类型 精度下降故障
WQUAN=0.5*pianyi3+0.05*pianyi2.*(t-10)+pianyi4.*wave; %设定误差类型 完全故障
xmin=0 ;
xmax=50;
ymin=6.5;
ymax=8;
%%%%%%%%%%%PID调节三水箱%%%%
kp1=30;ki1=0.2;kd1=5;
kp2=25;ki2=0.2;kd2=5;
h1set=25;h2set=20;
c1=0.450289;c2=0.611429;c3=0.461526;
noise1=rand(1)*0.01;noise2=rand(1)*0.01;noise3=rand(1)*0.01;
%s = rand('state')
%rand函数产生由在(0, 1)之间均匀分布的随机数组成的数组。
%Y = rand(n) 返回一个n x n的随机矩阵。如果n不是数量,则返回错误信息。
%Y = rand(m,n) 或 Y = rand([m n]) 返回一个m x n的随机矩阵。
%Y = rand(m,n,p,...) 或 Y = rand([m n p...]) 产生随机数组。
%Y = rand(size(A)) 返回一个和A有相同尺寸的随机矩阵。
g=981;
Sp=0.5;
%h10=0;h20=0;h30=0;
u1=0;u2=0;
A=154;
h1=0;h2=0;h3=0;
Q23min=-80.5;Q23max=80.5;
Q13min=-60;Q13max=60;
Q20min=0;Q20max=60;
h1min=0;h1max=100;
h2min=0;h2max=100;
h3min=0;h3max=100;
u2min=0;u2max=100;
u1min=0;u1max=100;
error1=0;error2=0;
for k=1:3000
Q13(k)=0.5*c1*Sp*sign(h1(k)-h3(k))*sqrt(2*g*abs(h1(k)-h3(k)));
Q23(k)=0.5*c3*Sp*sign(h3(k)-h2(k))*sqrt(2*g*abs(h3(k)-h2(k)));
Q20(k)=0.5*c2*Sp*sqrt(2*g*h2(k));
if mod(k,10)==0 %取余数
error1(k)=h1set-h1(k);%确立偏差
else
if k==1
error1(k)=error1;
else
error1(k)=error1(k-1);
end
end
if k==1
u1(k)=kp1*error1+ki1*error1*ones(k,1); %阀门1的PID算法在Matlab中的实现,u1=Q1
%ones(m,n)表示生成一个m行n列且所有元素都是1的矩阵
%WQUAN
end
if mod(k,5)==0
error2(k)=h2set-h2(k);
else
if k==1
error2(k)=error2;
else
error2(k)=error2(k-1);
end
end
if k==1
u2(k)=kp2*error2+ki2*error2*ones(k,1);
else
u2(k)=kp2*error2(k)+ki2*error2*ones(k,1)+kd2*(error2(k)-error2(k-1));
% u2(k)=kp2*error2(k)+ki2*error2*ones(k,1)+kd2*(error2(k)-error2(k-1))+PCHA(k);
%PCHA(k)
%PYI
%JDU
%WQUAN
end
h1(k+1)= h1(k)+0.1*((u1(k)-Q13(k))/A+noise1);
h3(k+1)= h3(k)+0.1*((Q13(k)-Q23(k))/A+noise3);
h2(k+1)= h2(k)+0.1*((u2(k)+Q23(k)-Q20(k))/A+noise2);
%h1(k+1)=a1(k);
%h2(k+1)=a2(k);
%h3(k+1)=a3(k);
if h1(k)>h1max;
h1(k)=h1max; %%%%%%%防止h1,h2,h3饱和输出,满液位后水自动溢出排掉
end %%%%%%%防止h1,h2,h3饱和输出,满液位后水自动溢出排掉
%%%%%%%防止h1,h2,h3饱和输出,满液位后水自动溢出排掉
if h3(k)>h3max;
h3(k)=h3max;
end
if Q20(k)>Q20max;
Q20(k)=Q20max;
end
if Q13(k)>Q13max;
Q13(k)=Q13max;
end
if Q13(k)<Q13min;
Q13(k)=Q13min;
end
if Q23(k)>Q23max;
Q23(k)=Q23max;
end
if Q23(k)<Q23min;
Q23(k)=Q23min;
end
if u1(k)<u1min;
u1(k)=u1min;
end
if u1(k)>u1max;
u1(k)=u1max;
end
end
%%%%%%PID调节结束%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%液位高度变化图像%%%%%%%%%%%%%
figure(1)
subplot(1,3,1)
hold on
plot(h1);
x1=xlabel('执行次数');
x2=ylabel('液位高速');
title('液位 H1');
subplot(1,3,2)
plot(h3)
x1=xlabel('执行次数');
x2=ylabel('液位高速');
title('液位 H3');
subplot(1,3,3)
hold on
plot(h2);
x1=xlabel('执行次数');
x2=ylabel('液位高速');
title('液位 H2');
%%%%%%%%%%%%%%%%%%%%%%%%Q13,Q23,Q20图像%%%%%%%%%%%%%%%%%%%%%%%
figure(2)
subplot(1,3,1)
plot(Q13);
title('Q13');
subplot(1,3,2)
plot(Q23);
title('Q23');
subplot(1,3,3)
plot(Q20);
title('Q20');
%%%%%%%%%%%%画 出 阀 门 U1 和 U2 开 度 的 图 形%%%%%%%%%%%%%%%%%%%
figure(3)
subplot(1,2,1)
plot(u1);
title('阀门U1流量');
subplot(1,2,2)
plot(u2);
title('阀门U2流量');
xlswrite('正常数据.xls',H1,'sheet1','A')
xlswrite('正常数据.xls',H2,'sheet1','B')
xlswrite('正常数据.xls',H3,'sheet1','C')
xlswrite('正常数据.xls',q13,'sheet1','D')
xlswrite('正常数据.xls',q23,'sheet1','E')
xlswrite('正常数据.xls',q20,'sheet1','F')
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 沈再阳.精通MATLAB信号处理[M].清华大学出版社,2015.
[2]高宝建,彭进业,王琳,潘建寿.信号与系统——使用MATLAB分析与实现[M].清华大学出版社,2020.
[3]王文光,魏少明,任欣.信号处理与系统分析的MATLAB实现[M].电子工业出版社,2018.
以上是关于故障分析基于matlab三容水箱故障诊断含Matlab源码 1485期的主要内容,如果未能解决你的问题,请参考以下文章
故障诊断分析基于matlab FFT轴承故障诊断含Matlab源码 2001期
故障诊断分析基于matlab FFT轴承故障诊断(包络谱)含Matlab源码 2002期
故障诊断分析基于matlab概率神经网络柴油机故障诊断含Matlab源码 1754期