细节调整

This commit is contained in:
2022-07-20 15:04:49 +08:00
parent b3e70554d1
commit 86d71e8015
3 changed files with 164 additions and 84 deletions

View File

@@ -26,6 +26,8 @@ public class WaveDataDTO implements Serializable {
private List<List<Float>> listWaveData;
//波形RMS值
private List<List<Float>> listRmsData;
//RMS最小值
private List<List<Float>> listRmsMinData;
//波形对应的相别数量
private Integer iPhasic;
//接线方式(0.星型接法;1.三角型接法;2.开口三角型接法)

View File

@@ -5,9 +5,11 @@ import com.njcn.common.pojo.dto.wave.*;
import lombok.extern.slf4j.Slf4j;
import java.io.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
@@ -90,13 +92,21 @@ public class AnalyWave {
********************************/
double iWave = 0 ;
int nPhasic = 0;// 相别
List<List<Float>> listRmsMin =new ArrayList<>();//存放RMS值的最小值
if(lstWave.size() > 0){
nPhasic = comtradeCfgDTO.getNPhasic();
//ComtradeCfg.nAnalogNum为值的个数(-1的原因是一个存的是时间)
iWave = Math.floor((lstWave.get(0).size() -1) / nPhasic);
List<Float> tmpListRms;
List<Float> tmpListRmsMin;
//增加RMS的最小值
double fMinTime = 0.0 , fMinValue = 0.0;
//每一项一项计算
for(int j = 0; j < iWave; j ++){
// 实例化
tmpListRmsMin = new ArrayList<>();
double fSumA = 0.0, fSumB= 0.0, fSumC = 0.0;
double fValidA = 0.0, fValidB = 0.0, fValidC = 0.0;
//循环原始数据
@@ -123,8 +133,22 @@ public class AnalyWave {
}
fValidA = Math.sqrt(fSumA / HalfTs);
tmpListRms.add((float) fValidA);
tmpListRms.add((float) (Math.round(fValidA * 100)) / 100);
listRms.set(i,tmpListRms);
// 最小值判断
if (i >= HalfTs){
if(i == HalfTs){
fMinValue = fValidA;
fMinTime = tmpListValue.get(0);
}
else{
if(fValidA < fMinValue){
fMinValue = fValidA;
fMinTime = tmpListValue.get(0);
}
}
}
break;
case 2:
fSumA += Math.pow(tmpListValue.get(1 + nPhasic * j), 2);
@@ -138,9 +162,27 @@ public class AnalyWave {
fValidA = Math.sqrt(fSumA / HalfTs);
fValidB = Math.sqrt(fSumB / HalfTs);
tmpListRms.add((float) fValidA);
tmpListRms.add((float) fValidB);
tmpListRms.add((float) (Math.round(fValidA * 100)) / 100);
tmpListRms.add((float) (Math.round(fValidB * 100)) / 100);
listRms.set(i,tmpListRms);
// 最小值判断
if (i >= HalfTs){
if(i == HalfTs){
fMinValue = fValidA;
fMinTime = tmpListValue.get(0);
}
else{
if(fValidA < fMinValue){
fMinValue = fValidA;
fMinTime = tmpListValue.get(0);
}
if(fValidB < fMinValue){
fMinValue = fValidB;
fMinTime = tmpListValue.get(0);
}
}
}
break;
case 3:
fSumA += Math.pow(tmpListValue.get(1 + nPhasic * j), 2);
@@ -157,14 +199,41 @@ public class AnalyWave {
fValidB = Math.sqrt(fSumB / HalfTs);
fValidC = Math.sqrt(fSumC / HalfTs);
tmpListRms.add((float) fValidA);
tmpListRms.add((float) fValidB);
tmpListRms.add((float) fValidC);
tmpListRms.add((float) (Math.round(fValidA * 100)) / 100);
tmpListRms.add((float) (Math.round(fValidB * 100)) / 100);
tmpListRms.add((float) (Math.round(fValidC * 100)) / 100);
listRms.set(i,tmpListRms);
// 最小值判断
if (i >= HalfTs){
if(i == HalfTs){
fMinValue = fValidA;
fMinTime = tmpListValue.get(0);
}
else{
if(fValidA < fMinValue){
fMinValue = fValidA;
fMinTime = tmpListValue.get(0);
}
if(fValidB < fMinValue){
fMinValue = fValidB;
fMinTime = tmpListValue.get(0);
}
if(fValidC < fMinValue){
fMinValue = fValidC;
fMinTime = tmpListValue.get(0);
}
}
}
break;
}
}
}
//增加最小值时间,最小值
tmpListRmsMin.add((float)fMinTime);//获取时间
tmpListRmsMin.add((float)(Math.round(fMinValue * 100)) / 100);//获取时间
listRmsMin.add(tmpListRmsMin);
}
//过滤前一个周波
@@ -199,6 +268,7 @@ public class AnalyWave {
}
}
waveDataDTO.setListRmsData(listRms);
waveDataDTO.setListRmsMinData(listRmsMin);//RMS最小值
return waveDataDTO;
}
@@ -381,7 +451,7 @@ public class AnalyWave {
long a = comtradeCfgDTO.getTimeStart().getTime();
long b = comtradeCfgDTO.getTimeTrige().getTime();
int c = (int) (a - b);
int c = (int) (b - a);
if (c >= 90 && c <= 110) {
comtradeCfgDTO.setNPush(100);
} else if (c >= 190 && c <= 210) {
@@ -1107,11 +1177,24 @@ public class AnalyWave {
* iFlag == 2 App抽点要求采样率抽点成32
* iFlag == 3 高级算法原始波形大于32
********************************************************/
/** 输出格式: 2014-5-05 00:00:00 大写H为24小时制 */
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s = null;
Date d = new Date();
s = sdf.format(d);
System.out.println(s);
AnalyWave analyWave = new AnalyWave();
// 获取瞬时波形
WaveDataDTO waveDataDTO = analyWave.getComtrade("C:\\Users\\陈超\\Desktop\\Comtrade\\192.168.0.58\\222.CFG", 1);//获取原始波形值
WaveDataDTO waveDataDTO = analyWave.getComtrade("D:\\Comtrade\\00-B7-8D-00-EA-4A\\PQMonitor_PQM1_001341_20220627_063159_104_WAV.CFG", 1);//获取原始波形值
d = new Date();
s = sdf.format(d);
System.out.println(s);
// 获取RMS波形
WaveDataDTO waveDataDTO1 = analyWave.getValidData(waveDataDTO);
d = new Date();
s = sdf.format(d);
System.out.println(s);
// 获取特征值
List<EigenvalueDTO> lstEigenvalueDTO = analyWave.getEigenvalue(waveDataDTO,true);
String str = "";