资源简介

这是一个变压器故障诊断改良三比值法德VC++ 源代码, 而且程序中实现了读写txt文件。文件中的数据是实际运行变压器的现场数据。程序简单易懂。

资源截图

代码片段和文件信息

#include “iostream“
#include “ctype.h“
#include “fstream“
#include “math.h“
#include “stdlib.h“
#include “stdio.h“
using namespace std;

const int ML_THERMAL=1;
const int H_THERMAL=2;
const int L_DISCHARGE=3;
const int H_DISCHARGE=4;
const int THER_DISCH=5;
const int CODELESS=10;
const double defInfMin=0.00001;

struct {
double  INPUT[7];
double TEACH[1];
}Study_Data[1000][1];

int readyangben()
{ //读样本的资料
ifstream infile;
infile.open (“newori.txt“);
if(!infile)
cout<<“error“< double num;                //定义文件中的数据类型
char p;                   //定义一个字符读取文件中的空格和/或回车符
int M=1;                  //这里首先定义为1是因为最后一行的结束符是EOF所以用‘\n‘来判断行的话
int NN=0;
while(!infile.eof())      //每次读入之前都要判断是否到了文件末
{
do{
infile.get (p);
if(p==‘\n‘)
{
M++;         //统计行数;
NN=0;         //一个新行开始时,列数置为0
// cout< }
}
while(isspace((int)p) && !infile.eof ());//结束条件是读入的是空格或已到达文件末
NN++;                 //统计列数
infile.putback (p); // 如果前面读入的不是空格或回车符,则要把刚才读入的字符返回到文件流中!
infile>>num;       //  读入一个数
if (NN==8)
Study_Data[M-1]->TEACH[0]=num;
else
Study_Data[M-1]->INPUT[NN-1]=num;

// cout< }
infile.close (); //     关闭文件
return 0;
}

//改良三比值算法
int CDGA_IMP(double dH2double dCH4double dC2H6double dC2H4double dC2H2)
{//改良三比值诊断法   
double m1 m2 m3;
int diagnosis;
if(fabs(dC2H4) <= defInfMin) dC2H4 = defInfMin;//保证分母不为零
if(fabs(dH2) <= defInfMin) dH2 = defInfMin;//保证分母不为零
if(fabs(dC2H6) <= defInfMin) dC2H6 = defInfMin;//保证分母不为零
m1 = dC2H2/dC2H4;
m2 = dCH4/dH2;
m3 = dC2H4/dC2H6;

//中低温过热判断
if (m1 <= 0.1 && m2 > 0.1 && m2 <= 1 && m3 >1 && m3 <= 3)
{
diagnosis = ML_THERMAL;

else if (m1 <= 0.1 && m2 > 1 && m3 <= 3)
{
diagnosis = ML_THERMAL;
}
//高温过热判断
else if (m1 <= 0.1 && m3 > 3)
{
diagnosis = H_THERMAL;
}
//低能放电判断
else if (m1 <= 0.1 && m2 <= 0.1 && m3<= 1)
{
diagnosis = L_DISCHARGE;
}
else if (m1 > 0.1 && m1 <= 3 && m2 <= 1)
{
diagnosis = L_DISCHARGE;
}
//高能放电判断
else if (m1 > 3 && m2 <= 1)
{
diagnosis = H_DISCHARGE;
}
//放电兼过热判断
else if (m1 > 0.1 && m1 <= 3 && m2 > 1)
{
diagnosis = THER_DISCH;
}
else if (m1 > 3 && m2 > 1)
{
diagnosis = THER_DISCH;
}
//无编码
else 
{
diagnosis = CODELESS;
}
    return diagnosis;
}

int main()
{
double result[500]oridata[500][7];
int mi;
    
readyangben();

for (m=0;m<449;m++)
{
for (i=0;i<7;i++)
{
oridata[m][i]=Study_Data[m]->INPUT[i];
}

result[m]=CDGA_IMP(oridata[m][0]oridata[m][1]oridata[m][2]oridata[m][3]oridata[m][4]);


// cout<<“第“<TEACH[0]< // cout<
}
ofstream reslut(“reslut.txt“ios::out);
ofstream num(“m.txt“ios::out);

for (m=0;m<449;m++)
{
if (result[m]!=Study_Data[m]->TEACH[0])
// cout<

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        537  2010-05-01 15:50  bpdata\bpdata.dsw

     文件      41984  2010-05-01 19:50  bpdata\bpdata.ncb

     文件      82944  2010-05-01 18:35  bpdata\Debug\vc60.idb

     文件     118784  2010-05-01 18:35  bpdata\Debug\vc60.pdb

     文件     585828  2010-05-01 18:35  bpdata\Debug\bpdata.exe

     文件    1147904  2010-05-01 18:35  bpdata\Debug\bpdata.pdb

     文件    2106592  2010-05-01 18:17  bpdata\Debug\bpdata.pch

     文件     369590  2010-05-01 18:35  bpdata\Debug\data.obj

     文件     834440  2010-05-01 18:35  bpdata\Debug\bpdata.ilk

     文件       1307  2010-05-01 18:35  bpdata\bpdata.plg

     文件      17554  2010-05-01 17:40  bpdata\originaldata.txt

     文件         91  2010-05-01 18:21  bpdata\reslut.txt

     文件         14  2010-05-01 18:21  bpdata\m.txt

     文件       4282  2010-05-01 17:42  bpdata\bpdata.dsp

     文件      15689  2010-05-01 18:19  bpdata\newori.txt

     文件       3686  2010-05-01 19:50  bpdata\data.cpp

     文件      49664  2010-05-01 19:50  bpdata\bpdata.opt

     目录          0  2010-05-01 15:50  bpdata\Debug

     目录          0  2010-05-01 15:50  bpdata

----------- ---------  ---------- -----  ----

              5380890                    19


评论

共有 条评论

相关资源