CPN(Colored Petri Net,彩色Petri网)是在传统Petri网的基础上进行扩展的高级Petri网。它在故障诊断领域有着广泛的应用。
CPN故障诊断的主要思想和步骤如下:
建模:根据系统的结构和功能,采用CPN构建系统的模型。将系统不同组件表示为网的位置,数据/信号流表示为网的转换,故障表示为额外的转换。
状态空间分析:对CPN模型进行状态空间分析,枚举系统所有可能的状态。确定正常和故障状态。
仿真:对CPN模型进行仿真,通过给模型输入不同的事件序列,分析状态和标识的变化。
故障检测:通过对比正常模型和故障模型的仿真结果,判断系统是否发生故障以及故障类型。
诊断:追踪故障状态对应的事件序列,分析故障发生的原因,给出诊断报告。
相比传统方法,CPN故障诊断通过视觉化建模和仿真,能够直观高效地分析系统的故障,是一种有效的现代故障诊断方法。
%% 对向传播网络:CPN神经网络对轴承故障类型判断主程序
clc;close all;clear all;%清除空间
%% --- (1)预处理开始--
%% 产生样本
[PMatrix,T]=gendataFun();
[L01,L02]=size(PMatrix);
%对权值进初始化
PData=PMatrix;%输入数据
%% 样本转换为CPN需要的结果
TData=trancT2TData(T);%输出数据转换为CPN需要的结构
[k31,L03]=size(TData);%测量数据的矩阵大小
%% --- 预处理结束--
T_out01=TData;
MaxIte=1000;%学习次数
%% (3)开始CPN训练---
B0=0.01;
TrainNumber=100;
alfa=0.1;
[Out,w,v,com_Num]=cpns(PData,TData,B0,alfa,TrainNumber);%训练
Out;
%% 开始CPN训练结束---
%开始网络回想,其输入模式为Ptest01
n=0;%计算准确率的计数器
PredictionAll=zeros(L01,1);%记录预测值
for t01=1:L01
Ptest01=PMatrix(t01,:);%载入预测样本的输入数据
Ttest01=TData(t01,:);%载入预测样本的输出数据
%初始化Pc
PredictionAll(t01,1)=CPNPrediction(Ptest01,L03,w,v,com_Num);
% disp('真实结果');
Treal=T(t01);
% disp('预测结果');
Prediction=PredictionAll(t01,1);
if Treal==Prediction
n=n+1;
end
end
%% 把CPN的结果转化为自然语言
FaultTypes={'第一缸喷油器针阀磨损','正常','第一缸喷油器压力过小','供油提前角提前','其他'};
disp('诊断结果');
fprintf(' %s %s %s %s %s\n', '样本序号','实际类别','预测类别','正/误','故障类型');
for i=1:L01
s1=num2str(i);
s2=num2str(T(i));
s3=num2str(PredictionAll(i,1));
if T(i)==PredictionAll(i,1)
s4='正确';
else
s4='错误';
end
s5=FaultTypes{PredictionAll(i,1)};
fprintf(' %s %s %s %s %s \n', s1,s2,s3,s4,s5);
end
disp('正确率')
[num2str(n/L01*100),'%']
figure;
plot(1:L01,PredictionAll,'bo');
hold on;
plot(1:L01,T,'r*');
legend('预测故障类型','实际故障类型');
s22=['CPN神经网络对轴承故障类型的预测与实际类型对比, 误差='];
title(s22);
诊断结果
样本序号 实际类别 预测类别 正/误 故障类型
1 1 1 正确 第一缸喷油器针阀磨损
2 1 1 正确 第一缸喷油器针阀磨损
3 1 1 正确 第一缸喷油器针阀磨损
4 1 1 正确 第一缸喷油器针阀磨损
5 1 1 正确 第一缸喷油器针阀磨损
6 1 1 正确 第一缸喷油器针阀磨损
7 1 1 正确 第一缸喷油器针阀磨损
8 1 1 正确 第一缸喷油器针阀磨损
9 1 1 正确 第一缸喷油器针阀磨损
10 1 1 正确 第一缸喷油器针阀磨损
11 2 2 正确 正常
12 2 2 正确 正常
13 2 2 正确 正常
14 2 2 正确 正常
15 2 2 正确 正常
16 2 2 正确 正常
17 2 2 正确 正常
18 2 2 正确 正常
19 2 2 正确 正常
20 2 2 正确 正常
21 3 3 正确 第一缸喷油器压力过小
22 3 3 正确 第一缸喷油器压力过小
23 3 3 正确 第一缸喷油器压力过小
24 3 3 正确 第一缸喷油器压力过小
25 3 3 正确 第一缸喷油器压力过小
26 3 3 正确 第一缸喷油器压力过小
27 3 3 正确 第一缸喷油器压力过小
28 3 3 正确 第一缸喷油器压力过小
29 3 3 正确 第一缸喷油器压力过小
30 3 3 正确 第一缸喷油器压力过小
31 4 4 正确 供油提前角提前
32 4 4 正确 供油提前角提前
33 4 4 正确 供油提前角提前
34 4 4 正确 供油提前角提前
35 4 4 正确 供油提前角提前
36 4 4 正确 供油提前角提前
37 4 4 正确 供油提前角提前
38 4 4 正确 供油提前角提前
39 4 4 正确 供油提前角提前
40 4 4 正确 供油提前角提前
41 5 5 正确 其他
42 5 5 正确 其他
43 5 5 正确 其他
44 5 5 正确 其他
45 5 5 正确 其他
46 5 5 正确 其他
47 5 5 正确 其他
48 5 5 正确 其他
49 5 5 正确 其他
50 5 5 正确 其他
正确率
ans =
100%