三项不平衡补充序分量
This commit is contained in:
@@ -593,10 +593,18 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
||||
channelU = channelList.stream().filter(x -> x.getChannelType().contains("U")).collect(Collectors.toList());
|
||||
unbanCheck(info, channelListDTO, channelU, checkArchive);
|
||||
break;
|
||||
case SeqV:
|
||||
channelU = channelList.stream().filter(x -> x.getChannelType().contains("U")).collect(Collectors.toList());
|
||||
unbanSeqCheck(info, channelListDTO, channelU, checkArchive);
|
||||
break;
|
||||
case I_UNBAN:
|
||||
channelI = channelList.stream().filter(x -> x.getChannelType().contains("I")).collect(Collectors.toList());
|
||||
unbanCheck(info, channelListDTO, channelI, checkArchive);
|
||||
break;
|
||||
case SeqA:
|
||||
channelI = channelList.stream().filter(x -> x.getChannelType().contains("I")).collect(Collectors.toList());
|
||||
unbanSeqCheck(info, channelListDTO, channelI, checkArchive);
|
||||
break;
|
||||
case PST:
|
||||
if (CollUtil.isNotEmpty(channelList)) {
|
||||
channelU = channelList.stream().filter(x -> x.getChannelType().contains("U")).collect(Collectors.toList());
|
||||
@@ -826,6 +834,82 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl<PqScriptDtlsMapper, PqS
|
||||
}
|
||||
}
|
||||
|
||||
private void unbanSeqCheck(List<PqScriptDtlsParam.CheckData> info,
|
||||
PqScriptDtlsParam.CheckData channelListDTO,
|
||||
List<PqScriptDtlsParam.ChannelListDTO> list,
|
||||
List<PqScriptCheckData> checkArchive
|
||||
) {
|
||||
PqScriptDtlsParam.CheckData checkData;
|
||||
if (CollUtil.isNotEmpty(list)) {
|
||||
List<PqScriptDtlsParam.ChannelListDTO> channelA = list.stream().filter(x -> x.getChannelType().contains("a")).collect(Collectors.toList());
|
||||
List<PqScriptDtlsParam.ChannelListDTO> channelB = list.stream().filter(x -> x.getChannelType().contains("b")).collect(Collectors.toList());
|
||||
List<PqScriptDtlsParam.ChannelListDTO> channelC = list.stream().filter(x -> x.getChannelType().contains("c")).collect(Collectors.toList());
|
||||
if (CollUtil.isEmpty(checkArchive)) {
|
||||
if (CollUtil.isNotEmpty(channelA) && CollUtil.isNotEmpty(channelB) && CollUtil.isNotEmpty(channelC)) {
|
||||
PqScriptDtlsParam.ChannelListDTO a = channelA.get(0);
|
||||
PqScriptDtlsParam.ChannelListDTO b = channelB.get(0);
|
||||
PqScriptDtlsParam.ChannelListDTO c = channelC.get(0);
|
||||
|
||||
BigDecimal vaMagnitude = new BigDecimal(a.getFAmp());
|
||||
BigDecimal vaAngle = new BigDecimal(a.getFPhase());
|
||||
BigDecimal vbMagnitude = new BigDecimal(b.getFAmp());
|
||||
BigDecimal vbAngle = new BigDecimal(b.getFPhase());
|
||||
BigDecimal vcMagnitude = new BigDecimal(c.getFAmp());
|
||||
BigDecimal vcAngle = new BigDecimal(c.getFPhase());
|
||||
|
||||
// 将幅值和角度转换为复数
|
||||
ThreePhaseUnbalance.Complex va = ThreePhaseUnbalance.fromPolar(vaMagnitude, vaAngle);
|
||||
ThreePhaseUnbalance.Complex vb = ThreePhaseUnbalance.fromPolar(vbMagnitude, vbAngle);
|
||||
ThreePhaseUnbalance.Complex vc = ThreePhaseUnbalance.fromPolar(vcMagnitude, vcAngle);
|
||||
|
||||
// 计算对称分量
|
||||
ThreePhaseUnbalance.Complex[] symmetricalComponents = ThreePhaseUnbalance.calculateSymmetricalComponents(va, vb, vc);
|
||||
ThreePhaseUnbalance.Complex v0 = symmetricalComponents[0]; // 零序分量
|
||||
ThreePhaseUnbalance.Complex v1 = symmetricalComponents[1]; // 正序分量
|
||||
ThreePhaseUnbalance.Complex v2 = symmetricalComponents[2]; // 负序分量
|
||||
|
||||
checkData = new PqScriptDtlsParam.CheckData();
|
||||
checkData.setErrorFlag(channelListDTO.getErrorFlag());
|
||||
checkData.setEnable(channelListDTO.getEnable());
|
||||
checkData.setPhase("A");
|
||||
checkData.setValueType(channelListDTO.getValueType());
|
||||
checkData.setPid(channelListDTO.getPid());
|
||||
checkData.setValue(v1.magnitude().doubleValue());
|
||||
info.add(checkData);
|
||||
|
||||
checkData = new PqScriptDtlsParam.CheckData();
|
||||
checkData.setErrorFlag(channelListDTO.getErrorFlag());
|
||||
checkData.setEnable(channelListDTO.getEnable());
|
||||
checkData.setPhase("B");
|
||||
checkData.setValueType(channelListDTO.getValueType());
|
||||
checkData.setPid(channelListDTO.getPid());
|
||||
checkData.setValue(v2.magnitude().doubleValue());
|
||||
info.add(checkData);
|
||||
|
||||
checkData = new PqScriptDtlsParam.CheckData();
|
||||
checkData.setErrorFlag(channelListDTO.getErrorFlag());
|
||||
checkData.setEnable(channelListDTO.getEnable());
|
||||
checkData.setPhase("C");
|
||||
checkData.setValueType(channelListDTO.getValueType());
|
||||
checkData.setPid(channelListDTO.getPid());
|
||||
checkData.setValue(v0.magnitude().doubleValue());
|
||||
info.add(checkData);
|
||||
}
|
||||
} else {
|
||||
for (PqScriptCheckData checkArciveData : checkArchive) {
|
||||
checkData = new PqScriptDtlsParam.CheckData();
|
||||
checkData.setErrorFlag(checkArciveData.getErrorFlag());
|
||||
checkData.setEnable(checkArciveData.getEnable());
|
||||
checkData.setPhase(checkArciveData.getPhase());
|
||||
checkData.setValueType(checkArciveData.getValueType());
|
||||
checkData.setPid(channelListDTO.getPid());
|
||||
checkData.setValue(checkArciveData.getValue());
|
||||
info.add(checkData);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void rmsCheck(List<PqScriptDtlsParam.CheckData> info,
|
||||
PqScriptDtlsParam.CheckData channelListDTO,
|
||||
List<PqScriptDtlsParam.ChannelListDTO> list,
|
||||
|
||||
@@ -13,7 +13,7 @@ import java.math.RoundingMode;
|
||||
public class ThreePhaseUnbalance {
|
||||
|
||||
// 定义复数类
|
||||
static class Complex {
|
||||
public static class Complex {
|
||||
BigDecimal real; // 复数的实部
|
||||
BigDecimal imag; // 复数的虚部
|
||||
|
||||
@@ -108,10 +108,10 @@ public class ThreePhaseUnbalance {
|
||||
BigDecimal vaMagnitude = new BigDecimal(Ua0);
|
||||
BigDecimal vaAngle = new BigDecimal(thetaA);
|
||||
|
||||
BigDecimal vbMagnitude =new BigDecimal(Ub0);
|
||||
BigDecimal vbMagnitude = new BigDecimal(Ub0);
|
||||
BigDecimal vbAngle = new BigDecimal(thetaB);
|
||||
|
||||
BigDecimal vcMagnitude =new BigDecimal(Uc0);
|
||||
BigDecimal vcMagnitude = new BigDecimal(Uc0);
|
||||
BigDecimal vcAngle = new BigDecimal(thetaC);
|
||||
|
||||
// 将幅值和角度转换为复数
|
||||
@@ -146,12 +146,12 @@ public class ThreePhaseUnbalance {
|
||||
BigDecimal vaAngle = new BigDecimal(0);
|
||||
|
||||
System.out.println("请输入B相电压的幅值(单位:V):");
|
||||
BigDecimal vbMagnitude =new BigDecimal(57.74*0.9);
|
||||
BigDecimal vbMagnitude = new BigDecimal(57.74 * 0.9);
|
||||
System.out.println("请输入B相电压的相位角(单位:度):");
|
||||
BigDecimal vbAngle = new BigDecimal(-122);
|
||||
|
||||
System.out.println("请输入C相电压的幅值(单位:V):");
|
||||
BigDecimal vcMagnitude =new BigDecimal(57.74);
|
||||
BigDecimal vcMagnitude = new BigDecimal(57.74);
|
||||
System.out.println("请输入C相电压的相位角(单位:度):");
|
||||
BigDecimal vcAngle = new BigDecimal(118);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user