Compare commits

...

7 Commits

Author SHA1 Message Date
周宇 蔡
f7154db93d Merge branch 'dev-new' 2026-06-11 18:13:29 +08:00
周宇 蔡
557022d346 Merge branch 'main' of http://www.pqmcc.com:3000/ClientApps/CN_Tool 2026-06-11 18:09:02 +08:00
周宇 蔡
e43ab264e0 feat(mms-mapping): 添加江苏配置模板支持谐波数据
- 新增 JiangSu_Config1.xml 配置文件
- 配置历史稳态数据类型包括短时闪变、长时闪变、暂态数据
- 配置实时稳态数据类型支持电压、电流、功率等参数
- 设置谐波数据解析规则和通配符配置
- 配置电压电流功率等电气量的95值、平均值、最大值、最小值统计
- 添加谐波含有率、相角等谐波类数据配置
- 配置暂态事件解析规则和录波文件时间格式
- 设置 Kafka 消息发送相关参数和数据系数转换规则
2026-06-11 18:04:25 +08:00
周宇 蔡
24bdaa1ae9 Merge branch 'dev-czy'
# Conflicts:
#	tools/mms-mapping/src/main/java/com/njcn/gather/icd/mapping/component/IcdToXmlResponseConverter.java
#	tools/mms-mapping/src/main/java/com/njcn/gather/icd/mapping/component/JsonToXmlConversionService.java
#	tools/mms-mapping/src/main/java/com/njcn/gather/icd/mapping/component/RuleBasedXmlMappingService.java
#	tools/mms-mapping/src/main/java/com/njcn/gather/icd/mapping/pojo/bo/IcdToXmlGenerateResult.java
#	tools/mms-mapping/src/main/java/com/njcn/gather/icd/mapping/pojo/vo/IcdToXmlResponse.java
#	tools/mms-mapping/src/main/java/com/njcn/gather/icd/mapping/service/impl/IcdToXmlTaskAppService.java
2026-06-01 08:54:13 +08:00
周宇 蔡
58ca8b0c23 refactor(mms-mapping): 重构ICD到XML转换服务优化代码结构
- 移除IcdToXmlGenerateResult中未使用的iedName、ldInst、indexAnalysis、savedPath字段
- 注释掉相应的getter/setter方法减少代码冗余
- 重构IcdToXmlTaskAppService中generateFromIcd方法的业务逻辑
- 优化JsonToXmlConversionService的转换流程提高性能
- 添加详细的中文注释说明各个方法的功能和实现逻辑
- 调整规则匹配和XML生成的核心算法提升匹配准确性
- 修改未匹配规则的错误提示信息增加详细指标信息
2026-05-27 08:45:36 +08:00
周宇 蔡
8a92ff3be0 feat(mapping): 优化ICD到XML转换服务支持未匹配规则详情
- 实现convertFromJsonWithResult方法返回完整的转换结果
- 添加未匹配规则详细信息到生成结果的问题列表中
- 新增ConversionResult、RuleMatchingResult和UnmatchedRuleDetail数据结构
- 扩展应用规则逻辑以跟踪和报告未匹配的规则变体
- 重构buildXmlFromMapping方法以支持结果详情返回
- 更新控制台日志输出以显示规则匹配统计信息
2026-05-06 15:43:19 +08:00
周宇 蔡
ddadf26837 feat(mms-mapping): test中添加XML字符串返回功能并优化JSON转XML性能测试
- 在IcdToXmlGenerateResult和IcdToXmlResponse中新增mappingXml字段存储生成的XML字符串
- 修改IcdToXmlResponseConverter将XML内容从savedPath改为mappingXml字段
- 更新IcdToXmlTaskAppService将XML转换结果从保存路径改为直接返回XML内容
- 重构JsonToXmlConversionService移除临时文件创建,直接返回XML字符串
- 在JsonToXmlConversionService中添加性能监控日志输出
- 新增JsonToXmlDebugRunner用于本地调试JSON转XML功能
2026-05-06 14:31:18 +08:00
6 changed files with 1397 additions and 184 deletions

View File

@@ -93,7 +93,7 @@ public class JsonToXmlConversionService {
MappingDocument mappingDocument = objectMapper.readValue(mappingJson, MappingDocument.class);
return buildXmlFromMapping(mappingDocument, templateStream, ruleStreams, indexMapping, methodDescribeList);
}
/**
* 从MappingDocument构建XML内容
*/
@@ -102,13 +102,13 @@ public class JsonToXmlConversionService {
List<InputStream> ruleStreams,
IcdToXmlMappingService.IndexMappingConfig indexMapping,
List<String> methodDescribeList) throws Exception {
// 读取模板
String templateContent = readInputStreamToString(templateStream);
//填充IED信息
String xmlContent = fillIedInfo(templateContent, mappingDocument);
//填充ReportControls信息
xmlContent = fillReportControlsFromMapping(xmlContent, mappingDocument);
//填充do da信息
xmlContent = applyRulesFromMapping(xmlContent, mappingDocument, ruleStreams, indexMapping, methodDescribeList);
return xmlContent;
@@ -192,6 +192,68 @@ public class JsonToXmlConversionService {
reportStatBuilder.toString().replace("$", "\\$").replace("[", "\\[").replace("]", "\\]")
);
reportStatBuilder = new StringBuilder();
reportStatBuilder.append("\t\t<ReportReal>\n");
for (var reportItem : mappingDocument.getReportMap()) {
if (reportItem.getName() != null && !reportItem.getName().isEmpty()) {
String name = reportItem.getName();
if (name.contains("urcbFluc") ||
name.contains("urcbStHarm") ||
name.contains("urcbStIHarm") ||
name.contains("urcbStMMXU") ||
name.contains("urcbStMSQI") ||
name.contains("urcbPLT") ||
name.contains("urcbPST") ||
name.contains("urcbFlicker") ||
name.contains("urcbStatistic")||
name.contains("urcbRealData")) {
String reportControlStr = buildReportControlString(reportItem);
reportStatBuilder.append("\t\t\t<Report ReportControl=\"")
.append(escapeXml(reportControlStr))
.append("\" />\n");
}
}
}
reportStatBuilder.append("\t\t</ReportReal>");
xmlContent = xmlContent.replaceAll(
"<ReportReal>[\\s\\S]*?</ReportReal>",
reportStatBuilder.toString().replace("$", "\\$").replace("[", "\\[").replace("]", "\\]")
);
reportStatBuilder = new StringBuilder();
reportStatBuilder.append("\t\t<ReportEvent>\n");
for (var reportItem : mappingDocument.getReportMap()) {
if (reportItem.getName() != null && !reportItem.getName().isEmpty()) {
String name = reportItem.getName();
if (name.contains("QVVR") ||
name.contains("RDRE") ||
name.contains("GGIO")) {
String reportControlStr = buildEventReportControlString(reportItem);
reportStatBuilder.append("\t\t\t<Report ReportControl=\"")
.append(escapeXml(reportControlStr))
.append("\" />\n");
}
}
}
reportStatBuilder.append("\t\t</ReportEvent>");
xmlContent = xmlContent.replaceAll(
"<ReportEvent>[\\s\\S]*?</ReportEvent>",
reportStatBuilder.toString().replace("$", "\\$").replace("[", "\\[").replace("]", "\\]")
);
return xmlContent;
}
@@ -202,8 +264,10 @@ public class JsonToXmlConversionService {
StringBuilder sb = new StringBuilder();
sb.append("LLN0$").append(rc.getBuffered() != null && rc.getBuffered().equals("BR") ? "BR$" : "RP$").append(rc.getName());
if(rc.getName().contains("PLT") || rc.getName().contains("Flicker") || rc.getName().contains("PST") || rc.getName().contains("Fluc")){
if(rc.getName().contains("urcb")){
sb.append(",3");
}
else if(rc.getName().contains("PLT") || rc.getName().contains("Flicker") || rc.getName().contains("PST") || rc.getName().contains("Fluc")){
sb.append(",600");
}else{
sb.append(",60");
@@ -227,15 +291,53 @@ public class JsonToXmlConversionService {
if(rc.getName().contains("PLT") || rc.getName().contains("Flicker")){
sb.append(",1");
}else if(rc.getName().contains("PST") || rc.getName().contains("Fluc")){
}else if(rc.getName().contains("PST") || rc.getName().contains("Fluc")|| rc.getName().contains("RealData")){
sb.append(",2");
} else {
}else {
sb.append(",0");
}
return sb.toString();
}
/**
* 构建EventReportControl字符串
*/
private String buildEventReportControlString(ReportMapItem rc) {
StringBuilder sb = new StringBuilder();
sb.append("LLN0$").append(rc.getBuffered() != null && rc.getBuffered().equals("BR") ? "BR$" : "RP$").append(rc.getName());
if(rc.getName().contains("urcb")){
sb.append(",3");
}
else if(rc.getName().contains("PLT") || rc.getName().contains("Flicker") || rc.getName().contains("PST") || rc.getName().contains("Fluc")){
sb.append(",600");
}else{
sb.append(",60");
}
sb.append(",1");
sb.append(",0");
sb.append(",0");
sb.append(",0");
sb.append(",0");
sb.append(",yes");
sb.append(",1");
sb.append(",1");
sb.append(",1");
sb.append(",1");
sb.append(",1");
sb.append(",0");
sb.append(",1");
sb.append(",1");
sb.append(",1");
sb.append(",8");
sb.append(",1");
sb.append(",0");
return sb.toString();
}
/**
* 从MappingDocument应用规则
*/
@@ -244,9 +346,9 @@ public class JsonToXmlConversionService {
List<InputStream> ruleStreams,
IcdToXmlMappingService.IndexMappingConfig indexMapping,
List<String> methodDescribeList) throws Exception {
//合并所有规则文件
var mergedRules = mergeAllRulesDesc(ruleStreams, indexMapping);
//读取mappingDocument
var mappingMetrics = extractMetricsFromMapping(mappingDocument);
addMethodDescribe(methodDescribeList, "========== 开始从JSON匹配规则 ==========");
@@ -401,18 +503,14 @@ public class JsonToXmlConversionService {
String line;
String currentGroup = "";
java.util.regex.Pattern valueRulePattern = java.util.regex.Pattern.compile(
"<Value\\s+" +
"name=\"([^\"]+)\"\\s+" +
"desc=\"([^\"]+)\"\\s+" +
"type=\"([^\"]+)\"\\s+" +
"(?:DO=\"([^\"]*)\")?\\s*" +
"(?:DA=\"([^\"]*)\")?\\s*" +
"(?:BaseFlag=\"([^\"]*)\")?\\s*" +
"(?:LimitUp=\"([^\"]*)\")?\\s*" +
"(?:LimitDown=\"([^\"]*)\")?\\s*" +
"(?:Coefficient=\"([^\"]*)\")?\\s*" +
"/>", java.util.regex.Pattern.CASE_INSENSITIVE
java.util.regex.Pattern valueTagPattern = java.util.regex.Pattern.compile(
"<Value\\s+([^>]+)/>",
java.util.regex.Pattern.CASE_INSENSITIVE
);
java.util.regex.Pattern attributePattern = java.util.regex.Pattern.compile(
"(name|desc|type|DO|DA|BaseFlag|LimitUp|LimitDown|Coefficient|Offset|PltFlag)=\"([^\"]*)\"",
java.util.regex.Pattern.CASE_INSENSITIVE
);
while ((line = reader.readLine()) != null) {
@@ -441,14 +539,23 @@ public class JsonToXmlConversionService {
continue;
}
java.util.regex.Matcher matcher = valueRulePattern.matcher(line);
if (matcher.find()) {
java.util.regex.Matcher tagMatcher = valueTagPattern.matcher(line);
if (tagMatcher.find()) {
String attributesStr = tagMatcher.group(1);
java.util.Map<String, String> attrMap = new java.util.HashMap<>();
java.util.regex.Matcher attrMatcher = attributePattern.matcher(attributesStr);
while (attrMatcher.find()) {
attrMap.put(attrMatcher.group(1).toLowerCase(), attrMatcher.group(2));
}
RuleBasedXmlMappingService.ValueRule rule = new RuleBasedXmlMappingService.ValueRule();
rule.setName(matcher.group(1));
rule.setDesc(matcher.group(2));
rule.setType(matcher.group(3));
String doPath = matcher.group(4) != null ? matcher.group(4) : "";
String daPath = matcher.group(5) != null ? matcher.group(5) : "";
rule.setName(attrMap.getOrDefault("name", ""));
rule.setDesc(attrMap.getOrDefault("desc", ""));
rule.setType(attrMap.getOrDefault("type", ""));
String doPath = attrMap.getOrDefault("do", "");
String daPath = attrMap.getOrDefault("da", "");
if (indexMapping != null && !doPath.isEmpty()) {
doPath = applyIndexMapping(doPath, currentGroup, indexMapping, rule.getName(), rule.getDesc());
@@ -456,13 +563,16 @@ public class JsonToXmlConversionService {
rule.setDoPath(doPath);
rule.setDaPath(daPath);
rule.setBaseFlag(matcher.group(6));
rule.setLimitUp(matcher.group(7));
rule.setLimitDown(matcher.group(8));
rule.setCoefficient(matcher.group(9));
rule.setBaseFlag(attrMap.getOrDefault("baseflag", null));
rule.setLimitUp(attrMap.getOrDefault("limitup", null));
rule.setLimitDown(attrMap.getOrDefault("limitdown", null));
rule.setCoefficient(attrMap.getOrDefault("coefficient", null));
rule.setOffset(attrMap.getOrDefault("offset", null));
rule.setPltFlag(attrMap.getOrDefault("pltflag", null));
String key = rule.getDesc();
if (!key.isEmpty() && hasValidDoOrDa(rule)) {
if (!key.isEmpty()) {//!key.isEmpty() && hasValidDoOrDa(rule)
rules.computeIfAbsent(key.toLowerCase(), k -> new ArrayList<>()).add(rule);
}
}
@@ -710,6 +820,8 @@ public class JsonToXmlConversionService {
} else {
sb.append("[").append(start).append("]");
}
}else{
sb.append("$cVal");
}
}
if (typeName != null && !typeName.isEmpty()) {
@@ -770,9 +882,9 @@ public class JsonToXmlConversionService {
boolean matched = false;
for (RuleBasedXmlMappingService.ValueRule rule : ruleVariants) {
if (rule.getName() == null || rule.getDoPath().isEmpty()) {
continue;
}
// if (rule.getName() == null || rule.getDoPath().isEmpty()) {
// continue;
// }
if(mappingMetrics.containsKey(rule.getName())){
MetricInfo metric = mappingMetrics.get(rule.getName());
@@ -909,30 +1021,32 @@ public class JsonToXmlConversionService {
private String applyRulesToXml(String xmlContent,
java.util.Map<String, RuleBasedXmlMappingService.ValueRule> applicableRules) {
java.util.regex.Pattern xmlValuePattern = java.util.regex.Pattern.compile(
"<Value\\s+" +
"name=\"([^\"]+)\"\\s+" +
"desc=\"([^\"]+)\"\\s+" +
"type=\"([^\"]+)\"\\s+" +
"(?:DO=\"([^\"]*)\")?\\s*" +
"(?:DA=\"([^\"]*)\")?\\s*" +
"(?:BaseFlag=\"([^\"]*)\")?\\s*" +
"(?:LimitUp=\"([^\"]*)\")?\\s*" +
"(?:LimitDown=\"([^\"]*)\")?\\s*" +
"(?:Coefficient=\"([^\"]*)\")?\\s*" +
"/>", java.util.regex.Pattern.CASE_INSENSITIVE
java.util.regex.Pattern valueTagPattern = java.util.regex.Pattern.compile(
"<Value\\s+([^>]+)/>",
java.util.regex.Pattern.CASE_INSENSITIVE
);
java.util.regex.Matcher matcher = xmlValuePattern.matcher(xmlContent);
java.util.regex.Pattern attributePattern = java.util.regex.Pattern.compile(
"(name|desc|type|DO|DA|BaseFlag|LimitUp|LimitDown|Coefficient|Offset|PltFlag)=\"([^\"]*)\"",
java.util.regex.Pattern.CASE_INSENSITIVE
);
java.util.regex.Matcher matcher = valueTagPattern.matcher(xmlContent);
StringBuffer result = new StringBuffer();
while (matcher.find()) {
String name = matcher.group(1);
String desc = matcher.group(2);
String type = matcher.group(3);
String attributesStr = matcher.group(1);
java.util.Map<String, String> attrMap = new java.util.HashMap<>();
java.util.regex.Matcher attrMatcher = attributePattern.matcher(attributesStr);
while (attrMatcher.find()) {
attrMap.put(attrMatcher.group(1).toLowerCase(), attrMatcher.group(2));
}
String name = attrMap.getOrDefault("name", "");
String desc = attrMap.getOrDefault("desc", "");
String type = attrMap.getOrDefault("type", "6");
// String key = buildRuleKey(name, desc);
//RuleBasedXmlMappingService.ValueRule matchedRule = applicableRules.get(key.toLowerCase());
RuleBasedXmlMappingService.ValueRule matchedRule = applicableRules.get(desc);
if (matchedRule != null) {
StringBuilder valueNode = new StringBuilder("<Value ");
@@ -958,6 +1072,12 @@ public class JsonToXmlConversionService {
if (matchedRule.getCoefficient() != null && !matchedRule.getCoefficient().isEmpty()) {
valueNode.append("Coefficient=\"").append(escapeXml(matchedRule.getCoefficient())).append("\" ");
}
if (matchedRule.getOffset() != null && !matchedRule.getOffset().isEmpty()) {
valueNode.append("Offset=\"").append(escapeXml(matchedRule.getOffset())).append("\" ");
}
if (matchedRule.getPltFlag() != null && !matchedRule.getPltFlag().isEmpty()) {
valueNode.append("PltFlag=\"").append(escapeXml(matchedRule.getPltFlag())).append("\" ");
}
valueNode.append("/>");
matcher.appendReplacement(result, java.util.regex.Matcher.quoteReplacement(valueNode.toString()));
@@ -986,7 +1106,7 @@ public class JsonToXmlConversionService {
}
methodDescribeList.add(message);
}
/**
* 指标信息内部类
*/

View File

@@ -61,7 +61,7 @@ public class RuleBasedXmlMappingService {
private static final Pattern DO_NO_INDEX_PATTERN = Pattern.compile("(MMXU|MHAI|MSQI|MFLK|QVVR)\\$");
public InputStream loadDefaultXmlFile( ) throws Exception {
ClassPathResource templateResource = new ClassPathResource("template/JiangSu_Config2.xml");
ClassPathResource templateResource = new ClassPathResource("template/JiangSu_Config1.xml");
if (!templateResource.exists()) {
return null;
@@ -808,6 +808,8 @@ public class RuleBasedXmlMappingService {
private String limitUp;
private String limitDown;
private String coefficient;
private String offset;
private String pltFlag;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
@@ -827,6 +829,10 @@ public class RuleBasedXmlMappingService {
public void setLimitDown(String limitDown) { this.limitDown = limitDown; }
public String getCoefficient() { return coefficient; }
public void setCoefficient(String coefficient) { this.coefficient = coefficient; }
public String getOffset() { return offset; }
public void setOffset(String offset) { this.offset = offset; }
public String getPltFlag() { return pltFlag; }
public void setPltFlag(String pltFlag) { this.pltFlag = pltFlag; }
}
static class IcdMetricInfo {

View File

@@ -26,4 +26,12 @@ public class MappingModuleConfig {
/** 默认输出目录。 */
@Value("${icd.mapping.default-output-dir:}")
private String defaultOutputDir;
/** JSON转XML使用的默认XML模板路径。 */
@Value("${icd.mapping.json-to-xml-template-path:template/JiangSu_Config2.xml}")
private String jsonToXmlTemplatePath;
/** JSON转XML使用的默认规则文件路径。 */
@Value("${icd.mapping.json-to-xml-rule-path:template/默认规则.txt}")
private String jsonToXmlRulePath;
}

View File

@@ -0,0 +1,617 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--注:#7#代表通配符,用于通配数据类型 采用8421码8-CP95、4-最小值、2-最大值、1-平均值-->
<!-- %2,50%代表通配符,用于通配谐波数据,采用范围编码,第一个数字表示谐波起始号,第二个数字谐波结束号-->
<!-- SEQ=后面的值采用8421码 8-T、4-C、2-B、1-A-->
<!--send类型0-不发送kafka、1-发送kafka-->
<!--type类型0-DataType、1-监测点、2-剔除标记、3-发生时刻毫秒、4-数据链表、5-相位、6-值索引、9-实时SOE事件-->
<!--nane:参数项、desc:参数描述、type:参数等级、DO:数据对象名、DA:数据属性名、Coefficient:数据系数、Offset:起始序号偏移量、PltFlag:长时闪变标志-->
<!--角型接线时相角为0不再进行DO、DA路径值扩展-->
<JSConfigTemplate version="2021-12-15" author="ww" SelectStat="JiangSu" SelectReal="Kafka Producer" desc="昆明长水机场增加谐波类数据配置">
<!--注:暂态事件解析规则配置 Flag0-不分相 1-分相 如果Flag=0 ABC配置成一样如果Flag=1ABC根据实际配置-->
<WavePhasic Flag="1" A="QVVR1" B="QVVR2" C="QVVR3" />
<!--暂态事件持续事件单位0-毫秒 1--->
<UnitOfTime Unit="0" />
<!--上送值的时间UTC-UTC时间 beijing-北京时间-->
<ValueOfTime Unit="utc" />
<!--录波文件的时间UTC-UTC时间 beijing-北京时间-->
<ComtradeFile WaveTimeFlag="beijing" />
<IED name="PQMonitor" desc="电能质量监测装置" />
<LDevice Prefix="PQM" desc="监测点" />
<ReportMap>
<!--用于映射需要触发那些报告-->
<!--ReportControl:ID,RCBName,intgPd,dchg,qchg,dupd,period,gi,issuffixed,seqNum,timeStamp,reasonCode,dataSet,dataRef,bufOvfl,entryID,configRef,segmentation,FlickerFlag-->
<!--600/60秒即10分钟/1分钟-->
<!--0,0,0,1,0为周期触发报告-->
<!--1,0,0,0,0为变位触发报告-->
<ReportStat>
<Report ReportControl="LLN0$BR$brcbFlickerData,60,1,0,0,0,0,yes,1,1,1,1,1,0,1,1,1,3,1" />
<Report ReportControl="LLN0$BR$brcbStatisticData,60,1,0,0,0,0,yes,1,1,1,1,1,0,1,1,1,1,0" />
</ReportStat>
<ReportReal>
<Report ReportControl="LLN0$RP$urcbRealData,3,0,0,0,1,0,yes,1,1,1,1,1,0,1,1,1,3,2" />
</ReportReal>
<ReportEvent>
<Report ReportControl="LLN0$BR$brcbQVVR,60,1,0,0,0,0,yes,1,1,1,1,1,0,1,1,1,8,1,0"/>
<Report ReportControl="LLN0$BR$brcbRDRE,60,1,0,0,0,0,yes,1,1,1,1,1,0,1,1,1,8,1,0"/>
<Report ReportControl="LLN0$BR$brcbGGIO,60,1,0,0,0,0,yes,1,1,1,1,1,0,1,1,1,8,1,0"/>
<Report ReportControl="LLN0$BR$brcbLPHD,60,1,0,0,0,0,yes,1,1,1,1,1,0,1,1,1,8,1,0"/>
</ReportEvent>
</ReportMap>
<Topic name="HISDATA" desc="历史稳态数据">
<DataType name="DATA_TYPE" value="02" desc="历史短时闪变数据" type="0">
<Monitor name="MONITOR" desc="监测点" type="1">
<Item name="FLAG" value="0" desc="剔除标记" type="2" />
<Item name="TIME" desc="发生时刻" type="3" />
<Item name="F_S" desc="短时闪变和波动" type="4" >
<Sequence name="SEQ" value="7" desc="相别" type="5" >
<Value name="PST" desc="短时闪变" type="6" DO="" DA="" />
<Value name="FLUC" desc="电压波动幅度" type="6" DO="" DA="" />
<Value name="FLUCF" desc="电压波动频度" type="6" DO="" DA="" />
</Sequence>
<Sequence name="SEQ" value="112" desc="相别" type="5" >
<Value name="PST" desc="线电压短时闪变" type="6" DO="" DA="" />
<Value name="FLUC" desc="线电压波动幅度" type="6" DO="" DA="" />
<Value name="FLUCF" desc="线电压波动频度" type="6" DO="" DA="" />
</Sequence>
</Item>
</Monitor>
</DataType>
<DataType name="DATA_TYPE" value="03" desc="历史长时闪变数据" type="0">
<Monitor name="MONITOR" desc="监测点" type="1">
<Item name="FLAG" value="0" desc="剔除标记" type="2" />
<Item name="TIME" desc="发生时刻" type="3" />
<Item name="F_L" desc="闪变" type="4" >
<Sequence name="SEQ" value="7" desc="相别" type="5" >
<Value name="PLT" desc="长时闪变" type="6" DO="" DA="" />
</Sequence>
<Sequence name="SEQ" value="112" desc="相别" type="5" >
<Value name="PLT" desc="线电压长时闪变" type="6" DO="" DA="" />
</Sequence>
</Item>
</Monitor>
</DataType>
<DataType name="DATA_TYPE" value="04" desc="历史暂态数据" type="0" >
<Monitor name="MONITOR" desc="监测点" type="1" >
<Item name="VOLTAGE" desc="暂态指标" type="4" >
<Sequence name="SEQ" value="7" desc="相别" type="5">
<Value name="MAG" desc="残余电压" type="6" DO="" DA="" />
<Value name="DUR" desc="持续时间" type="6" DO="" DA="" />
<!--Value name="SEQ" desc="相别" type="6" DO="" DA="" />
<Value name="STARTTIME" desc="开始时间" type="6" DO="" DA="" />
<Value name="ENDTIME" desc="结束时间" type="6" DO="" DA="" />
<Value name="DISKIND" desc="暂降类型" type="6" DO="" DA="" />
<Value name="WAVEFILE" desc="波形文件名称" type="6" DO="" DA="" /-->
</Sequence>
</Item>
</Monitor>
</DataType>
<DataType name="DATA_TYPE" value="01" desc="历史稳态数据" type="0">
<Monitor name="MONITOR" desc="监测点" type="1">
<Item name="FLAG" value="0" desc="剔除标记" type="2" />
<Item name="TIME" desc="发生时刻" type="3" />
<Item name="V" desc="电压" type="4" >
<!--电压V部分(A-C相)-->
<Sequence name="SEQ" value="7" desc="相别(A-C相)" type="5">
<!--Coefficient 值系数转成kafka的时候乘以系数BaseFlag 基础数据标志 0或没有-非基础数据 1-基础数据LimitUp 数据合理上限,如果包含*%UN字符表示需要乘以电压等级电压如果包含*%U字符表示需要乘以电压等级/1.732电压例如220kV则相电压上限为1.5*220LimitDown 数据合理下限 如果包含*%U字符表示需要乘以电压等级电压-->
<Value name="G_DELTA_V" desc="电压偏差95值" type="6" DO="" DA="" BaseFlag="1" LimitUp="20" LimitDown="-20" Coefficient="1"/>
<Value name="DELTA_V" desc="电压偏差平均值" type="6" DO="" DA="" BaseFlag="1" LimitUp="20" LimitDown="-20" Coefficient="1"/>
<Value name="MAX_DELTA_V" desc="电压偏差最大值" type="6" DO="" DA="" BaseFlag="1" LimitUp="20" LimitDown="-20" Coefficient="1"/>
<Value name="MIN_DELTA_V" desc="电压偏差最小值" type="6" DO="" DA="" BaseFlag="1" LimitUp="20" LimitDown="-20" Coefficient="1"/>
<Value name="G_VRMS" desc="电压有效值95值" type="6" DO="" DA="" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="VRMS" desc="电压有效值平均值" type="6" DO="" DA="" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="MAX_VRMS" desc="电压有效值最大值" type="6" DO="" DA="" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="MIN_VRMS" desc="电压有效值最小值" type="6" DO="" DA="" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="G_VRMS_LVR" desc="线电压有效值95值" type="6" DO="" DA="" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="VRMS_LVR" desc="线电压有效值平均值" type="6" DO="" DA="" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="MAX_VRMS_LVR" desc="线电压有效值最大值" type="6" DO="" DA="" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="MIN_VRMS_LVR" desc="线电压有效值最小值" type="6" DO="" DA="" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="G_VTHD" desc="电压总谐波畸变率95值" type="6" DO="" DA="" />
<Value name="VTHD" desc="电压总谐波畸变率平均值" type="6" DO="" DA="" />
<Value name="MAX_VTHD" desc="电压总谐波畸变率最大值" type="6" DO="" DA="" />
<Value name="MIN_VTHD" desc="电压总谐波畸变率最小值" type="6" DO="" DA="" />
<Value name="G_VFUND_ANGLE" desc="基波电压相角95值" type="6" DO="" DA="" />
<Value name="VFUND_ANGLE" desc="基波电压相角平均值" type="6" DO="" DA="" />
<Value name="MAX_VFUND_ANGLE" desc="基波电压相角最大值" type="6" DO="" DA="" />
<Value name="MIN_VFUND_ANGLE" desc="基波电压相角最小值" type="6" DO="" DA="" />
<Value name="G_V1" desc="基波电压有效值95值" type="6" DO="" DA="" />
<Value name="V1" desc="基波电压有效值平均值" type="6" DO="" DA="" />
<Value name="MAX_V1" desc="基波电压有效值最大值" type="6" DO="" DA="" />
<Value name="MIN_V1" desc="基波电压有效值最小值" type="6" DO="" DA="" />
<Value name="G_SV_%0,49%" desc="间谐波电压含有率(f25-2475)95值" type="6" DO="" DA="" />
<Value name="SV_%0,49%" desc="间谐波电压含有率(f25-2475)平均值" type="6" DO="" DA="" />
<Value name="MAX_SV_%0,49%" desc="间谐波电压含有率(f25-2475)最大值" type="6" DO="" DA="" />
<Value name="MIN_SV_%0,49%" desc="间谐波电压含有率(f25-2475)最小值" type="6" DO="" DA="" />
<Value name="G_V%2,50%" desc="谐波电压含有率(2-50)95值" type="6" DO="" DA="" />
<Value name="V%2,50%" desc="谐波电压含有率(2-50)平均值" type="6" DO="" DA="" />
<Value name="MAX_V%2,50%" desc="谐波电压含有率(2-50)最大值" type="6" DO="" DA="" />
<Value name="MIN_V%2,50%" desc="谐波电压含有率(2-50)最小值" type="6" DO="" DA="" />
<Value name="G_VA%2,50%" desc="谐波电压相角(2-50)95值" type="6" DO="" DA="" />
<Value name="VA%2,50%" desc="谐波电压相角(2-50)平均值" type="6" DO="" DA="" />
<Value name="MAX_VA%2,50%" desc="谐波电压相角(2-50)最大值" type="6" DO="" DA="" />
<Value name="MIN_VA%2,50%" desc="谐波电压相角(2-50)最小值" type="6" DO="" DA="" />
</Sequence>
<!--电压V部分(A-C相)角型接线-->
<Sequence name="SEQ" value="112" desc="相别(A-C相)" type="5">
<!--Coefficient 值系数转成kafka的时候乘以系数BaseFlag 基础数据标志 0或没有-非基础数据 1-基础数据LimitUp 数据合理上限,如果包含*%UN字符表示需要乘以电压等级电压如果包含*%U字符表示需要乘以电压等级/1.732电压例如220kV则相电压上限为1.5*220LimitDown 数据合理下限 如果包含*%U字符表示需要乘以电压等级电压-->
<Value name="G_DELTA_V" desc="线电压偏差95值" type="6" DO="" DA="" BaseFlag="1" LimitUp="20" LimitDown="-20" Coefficient="1"/>
<Value name="DELTA_V" desc="线电压偏差平均值" type="6" DO="" DA="" BaseFlag="1" LimitUp="20" LimitDown="-20" Coefficient="1"/>
<Value name="MAX_DELTA_V" desc="线电压偏差最大值" type="6" DO="" DA="" BaseFlag="1" LimitUp="20" LimitDown="-20" Coefficient="1"/>
<Value name="MIN_DELTA_V" desc="线电压偏差最小值" type="6" DO="" DA="" BaseFlag="1" LimitUp="20" LimitDown="-20" Coefficient="1"/>
<Value name="G_VRMS_LVR" desc="线电压有效值95值" type="6" DO="" DA="" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="VRMS_LVR" desc="线电压有效值平均值" type="6" DO="" DA="" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="MAX_VRMS_LVR" desc="线电压有效值最大值" type="6" DO="" DA="" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="MIN_VRMS_LVR" desc="线电压有效值最小值" type="6" DO="" DA="" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="G_VTHD" desc="线电压总谐波畸变率95值" type="6" DO="" DA="" />
<Value name="VTHD" desc="线电压总谐波畸变率平均值" type="6" DO="" DA="" />
<Value name="MAX_VTHD" desc="线电压总谐波畸变率最大值" type="6" DO="" DA="" />
<Value name="MIN_VTHD" desc="线电压总谐波畸变率最小值" type="6" DO="" DA="" />
<Value name="G_VFUND_ANGLE" desc="基波线电压相角95值" type="6" DO="" DA="" />
<Value name="VFUND_ANGLE" desc="基波线电压相角平均值" type="6" DO="" DA="" />
<Value name="MAX_VFUND_ANGLE" desc="基波线电压相角最大值" type="6" DO="" DA="" />
<Value name="MIN_VFUND_ANGLE" desc="基波线电压相角最小值" type="6" DO="" DA="" />
<Value name="G_V1" desc="基波线电压有效值95值" type="6" DO="" DA="" />
<Value name="V1" desc="基波线电压有效值平均值" type="6" DO="" DA="" />
<Value name="MAX_V1" desc="基波线电压有效值最大值" type="6" DO="" DA="" />
<Value name="MIN_V1" desc="基波线电压有效值最小值" type="6" DO="" DA="" />
<Value name="G_SV_%0,49%" desc="间谐波线电压含有率(f25-2475)95值" type="6" DO="" DA="" />
<Value name="SV_%0,49%" desc="间谐波线电压含有率(f25-2475)平均值" type="6" DO="" DA="" />
<Value name="MAX_SV_%0,49%" desc="间谐波线电压含有率(f25-2475)最大值" type="6" DO="" DA="" />
<Value name="MIN_SV_%0,49%" desc="间谐波线电压含有率(f25-2475)最小值" type="6" DO="" DA="" />
<Value name="G_V%2,50%" desc="谐波线电压含有率(2-50)95值" type="6" DO="" DA="" />
<Value name="V%2,50%" desc="谐波线电压含有率(2-50)平均值" type="6" DO="" DA="" />
<Value name="MAX_V%2,50%" desc="谐波线电压含有率(2-50)最大值" type="6" DO="" DA="" />
<Value name="MIN_V%2,50%" desc="谐波线电压含有率(2-50)最小值" type="6" DO="" DA="" />
<Value name="G_VA%2,50%" desc="谐波线电压相角(2-50)95值" type="6" DO="" DA="" />
<Value name="VA%2,50%" desc="谐波线电压相角(2-50)平均值" type="6" DO="" DA="" />
<Value name="MAX_VA%2,50%" desc="谐波线电压相角(2-50)最大值" type="6" DO="" DA="" />
<Value name="MIN_VA%2,50%" desc="谐波线电压相角(2-50)最小值" type="6" DO="" DA="" />
</Sequence>
<Sequence name="SEQ" value="8" desc="相别(T相)" type="5">
<!--电压V部分(T相)-->
<Value name="G_VNSEQ" desc="负序电压95值" type="6" DO="" DA="" />
<Value name="VNSEQ" desc="负序电压平均值" type="6" DO="" DA="" />
<Value name="MAX_VNSEQ" desc="负序电压最大值" type="6" DO="" DA="" />
<Value name="MIN_VNSEQ" desc="负序电压最小值" type="6" DO="" DA="" />
<Value name="G_V_UNBAN" desc="负序电压不平衡95值" type="6" DO="" DA="" />
<Value name="V_UNBAN" desc="负序电压不平衡平均值" type="6" DO="" DA="" />
<Value name="MAX_V_UNBAN" desc="负序电压不平衡最大值" type="6" DO="" DA="" />
<Value name="MIN_V_UNBAN" desc="负序电压不平衡最小值" type="6" DO="" DA="" />
<Value name="G_VZSEQ" desc="零序电压95值" type="6" DO="" DA="" />
<Value name="VZSEQ" desc="零序电压平均值" type="6" DO="" DA="" />
<Value name="MAX_VZSEQ" desc="零序电压最大值" type="6" DO="" DA="" />
<Value name="MIN_VZSEQ" desc="零序电压最小值" type="6" DO="" DA="" />
<Value name="G_VZSEQ_UNBAN" desc="零序电压不平衡95值" type="6" DO="" DA="" />
<Value name="VZSEQ_UNBAN" desc="零序电压不平衡平均值" type="6" DO="" DA="" />
<Value name="MAX_VZSEQ_UNBAN" desc="零序电压不平衡最大值" type="6" DO="" DA="" />
<Value name="MIN_VZSEQ_UNBAN" desc="零序电压不平衡最小值" type="6" DO="" DA="" />
<Value name="G_FREQ" desc="频率95值" type="6" DO="" DA="" />
<Value name="FREQ" desc="频率平均值" type="6" DO="" DA="" />
<Value name="MAX_FREQ" desc="频率最大值" type="6" DO="" DA="" />
<Value name="MIN_FREQ" desc="频率最小值" type="6" DO="" DA="" />
<Value name="G_DELTA_FREQ" desc="频率偏差95值" type="6" DO="" DA="" />
<Value name="DELTA_FREQ" desc="频率偏差平均值" type="6" DO="" DA="" />
<Value name="MAX_DELTA_FREQ" desc="频率偏差最大值" type="6" DO="" DA="" />
<Value name="MIN_DELTA_FREQ" desc="频率偏差最小值" type="6" DO="" DA="" />
<Value name="G_VPSEQ" desc="正序电压95值" type="6" DO="" DA="" />
<Value name="VPSEQ" desc="正序电压平均值" type="6" DO="" DA="" />
<Value name="MAX_VPSEQ" desc="正序电压最大值" type="6" DO="" DA="" />
<Value name="MIN_VPSEQ" desc="正序电压最小值" type="6" DO="" DA="" />
</Sequence>
</Item>
<Item name="I" desc="电流" type="4" >
<!--电流I部分(A-C相)-->
<Sequence name="SEQ" value="7" desc="相别(A-C相)" type="5">
<Value name="G_IRMS" desc="电流有效值95值" type="6" DO="" DA="" />
<Value name="IRMS" desc="电流有效值平均值" type="6" DO="" DA="" />
<Value name="MAX_IRMS" desc="电流有效值最大值" type="6" DO="" DA="" />
<Value name="MIN_IRMS" desc="电流有效值最小值" type="6" DO="" DA="" />
<Value name="G_I1" desc="基波电流有效值95值" type="6" DO="" DA="" />
<Value name="I1" desc="基波电流有效值平均值" type="6" DO="" DA="" />
<Value name="MAX_I1" desc="基波电流有效值最大值" type="6" DO="" DA="" />
<Value name="MIN_I1" desc="基波电流有效值最小值" type="6" DO="" DA="" />
<Value name="G_IFUND_ANGLE" desc="基波电流相角95值" type="6" DO="" DA="" />
<Value name="IFUND_ANGLE" desc="基波电流相角平均值" type="6" DO="" DA="" />
<Value name="MAX_IFUND_ANGLE" desc="基波电流相角最大值" type="6" DO="" DA="" />
<Value name="MIN_IFUND_ANGLE" desc="基波电流相角最小值" type="6" DO="" DA="" />
<Value name="G_SI_%0,49%" desc="间谐波电流幅值(f25-2475)95值" type="6" DO="" DA="" />
<Value name="SI_%0,49%" desc="间谐波电流幅值(f25-2475)平均值" type="6" DO="" DA="" />
<Value name="MAX_SI_%0,49%" desc="间谐波电流幅值(f25-2475)最大值" type="6" DO="" DA="" />
<Value name="MIN_SI_%0,49%" desc="间谐波电流幅值(f25-2475)最小值" type="6" DO="" DA="" />
<Value name="G_I%1,50%" desc="谐波电流幅值(2-50)95值" type="6" DO="" DA="" />
<Value name="I%1,50%" desc="谐波电流幅值(2-50)平均值" type="6" DO="" DA="" />
<Value name="MAX_I%1,50%" desc="谐波电流幅值(2-50)最大值" type="6" DO="" DA="" />
<Value name="MIN_I%1,50%" desc="谐波电流幅值(2-50)最小值" type="6" DO="" DA="" />
<Value name="G_IA%1,50%" desc="谐波电流相角(2-50)95值" type="6" DO="" DA="" />
<Value name="IA%1,50%" desc="谐波电流相角(2-50)平均值" type="6" DO="" DA="" />
<Value name="MAX_IA%1,50%" desc="谐波电流相角(2-50)最大值" type="6" DO="" DA="" />
<Value name="MIN_IA%1,50%" desc="谐波电流相角(2-50)最小值" type="6" DO="" DA="" />
<Value name="ITHD" desc="电流总谐波畸变率平均值" type="6" DO="" DA="" Coefficient="1" />
<Value name="MAX_ITHD" desc="电流总谐波畸变率最大值" type="6" DO="" DA="" Coefficient="1" />
<Value name="MIN_ITHD" desc="电流总谐波畸变率最小值" type="6" DO="" DA="" Coefficient="1" />
<Value name="G_ITHD" desc="电流总谐波畸变率95值" type="6" DO="" DA="" Coefficient="1" />
</Sequence>
<!--电流I部分(T相)-->
<Sequence name="SEQ" value="8" desc="相别(T相)" type="5">
<Value name="G_INSEQ" desc="负序电流95值" type="6" DO="" DA="" />
<Value name="INSEQ" desc="负序电流平均值" type="6" DO="" DA="" />
<Value name="MAX_INSEQ" desc="负序电流最大值" type="6" DO="" DA="" />
<Value name="MIN_INSEQ" desc="负序电流最小值" type="6" DO="" DA="" />
<Value name="G_I_UNBAN" desc="负序电流不平衡95值" type="6" DO="" DA="" />
<Value name="I_UNBAN" desc="负序电流不平衡平均值" type="6" DO="" DA="" />
<Value name="MAX_I_UNBAN" desc="负序电流不平衡最大值" type="6" DO="" DA="" />
<Value name="MIN_I_UNBAN" desc="负序电流不平衡最小值" type="6" DO="" DA="" />
<Value name="G_IZSEQ" desc="零序电流95值" type="6" DO="" DA="" />
<Value name="IZSEQ" desc="零序电流平均值" type="6" DO="" DA="" />
<Value name="MAX_IZSEQ" desc="零序电流最大值" type="6" DO="" DA="" />
<Value name="MIN_IZSEQ" desc="零序电流最小值" type="6" DO="" DA="" />
<Value name="G_VZSEQ_UNBAN" desc="零序电流不平衡95值" type="6" DO="" DA="" />
<Value name="VZSEQ_UNBAN" desc="零序电流不平衡平均值" type="6" DO="" DA="" />
<Value name="MAX_IZSEQ_UNBAN" desc="零序电流不平衡最大值" type="6" DO="" DA="" />
<Value name="MIN_IZSEQ_UNBAN" desc="零序电流不平衡最小值" type="6" DO="" DA="" />
<Value name="G_IPSEQ" desc="正序电流95值" type="6" DO="" DA="" />
<Value name="IPSEQ" desc="正序电流平均值" type="6" DO="" DA="" />
<Value name="MAX_IPSEQ" desc="正序电流最大值" type="6" DO="" DA="" />
<Value name="MIN_IPSEQ" desc="正序电流最小值" type="6" DO="" DA="" />
</Sequence>
</Item>
<Item name="PQ" desc="功率" type="4" >
<!--功率PQ部分(A-C相)-->
<Sequence name="SEQ" value="7" desc="相别(A-C相)" type="5">
<Value name="G_PF" desc="功率因数95值" type="6" DO="" DA="" />
<Value name="PF" desc="功率因数平均值" type="6" DO="" DA="" />
<Value name="MAX_PF" desc="功率因数最大值" type="6" DO="" DA="" />
<Value name="MIN_PF" desc="功率因数最小值" type="6" DO="" DA="" />
<Value name="G_DF" desc="位移功率因数95值" type="6" DO="" DA="" />
<Value name="DF" desc="位移功率因数平均值" type="6" DO="" DA="" />
<Value name="MAX_DF" desc="位移功率因数最大值" type="6" DO="" DA="" />
<Value name="MIN_DF" desc="位移功率因数最小值" type="6" DO="" DA="" />
<Value name="G_P_FUND" desc="基波有功功率95值" type="6" DO="" DA="" />
<Value name="P_FUND" desc="基波有功功率平均值" type="6" DO="" DA="" />
<Value name="MAX_P_FUND" desc="基波有功功率最大值" type="6" DO="" DA="" />
<Value name="MIN_P_FUND" desc="基波有功功率最小值" type="6" DO="" DA="" />
<Value name="G_S" desc="视在功率95值" type="6" DO="" DA="" />
<Value name="S" desc="视在功率平均值" type="6" DO="" DA="" />
<Value name="MAX_S" desc="视在功率最大值" type="6" DO="" DA="" />
<Value name="MIN_S" desc="视在功率最小值" type="6" DO="" DA="" />
<Value name="G_Q" desc="无功功率95值" type="6" DO="" DA="" />
<Value name="Q" desc="无功功率平均值" type="6" DO="" DA="" />
<Value name="MAX_Q" desc="无功功率最大值" type="6" DO="" DA="" />
<Value name="MIN_Q" desc="无功功率最小值" type="6" DO="" DA="" />
<Value name="G_P%1,50%" desc="谐波有功功率(2-50)95值" type="6" DO="" DA="" />
<Value name="P%1,50%" desc="谐波有功功率(2-50)平均值" type="6" DO="" DA="" />
<Value name="MAX_P%1,50%" desc="谐波有功功率(2-50)最大值" type="6" DO="" DA="" />
<Value name="MIN_P%1,50%" desc="谐波有功功率(2-50)最小值" type="6" DO="" DA="" />
<Value name="G_Q%1,50%" desc="谐波无功功率(2-50)95值" type="6" DO="" DA="" />
<Value name="Q%1,50%" desc="谐波无功功率(2-50)平均值" type="6" DO="" DA="" />
<Value name="MAX_Q%1,50%" desc="谐波无功功率(2-50)最大值" type="6" DO="" DA="" />
<Value name="MIN_Q%1,50%" desc="谐波无功功率(2-50)最小值" type="6" DO="" DA="" />
<Value name="G_S%1,50%" desc="谐波视在功率(2-50)95值" type="6" DO="" DA="" />
<Value name="S%1,50%" desc="谐波视在功率(2-50)平均值" type="6" DO="" DA="" />
<Value name="MAX_S%1,50%" desc="谐波视在功率(2-50)最大值" type="6" DO="" DA="" />
<Value name="MIN_S%1,50%" desc="谐波视在功率(2-50)最小值" type="6" DO="" DA="" />
<Value name="G_P" desc="有功功率95值" type="6" DO="" DA="" />
<Value name="P" desc="有功功率平均值" type="6" DO="" DA="" />
<Value name="MAX_P" desc="有功功率最大值" type="6" DO="" DA="" />
<Value name="MIN_P" desc="有功功率最小值" type="6" DO="" DA="" />
</Sequence>
<!--功率PQ部分(T相)-->
<Sequence name="SEQ" value="8" desc="相别(T相)" type="5">
<Value name="G_PF" desc="总功率因数95值" type="6" DO="" DA="" />
<Value name="PF" desc="总功率因数平均值" type="6" DO="" DA="" />
<Value name="MAX_PF" desc="总功率因数最大值" type="6" DO="" DA="" />
<Value name="MIN_PF" desc="总功率因数最小值" type="6" DO="" DA="" />
<Value name="G_DF" desc="总位移功率因数95值" type="6" DO="" DA="" />
<Value name="DF" desc="总位移功率因数平均值" type="6" DO="" DA="" />
<Value name="MAX_DF" desc="总位移功率因数最大值" type="6" DO="" DA="" />
<Value name="MIN_DF" desc="总位移功率因数最小值" type="6" DO="" DA="" />
<Value name="G_S" desc="总视在功率95值" type="6" DO="" DA="" />
<Value name="S" desc="总视在功率平均值" type="6" DO="" DA="" />
<Value name="MAX_S" desc="总视在功率最大值" type="6" DO="" DA="" />
<Value name="MIN_S" desc="总视在功率最小值" type="6" DO="" DA="" />
<Value name="G_Q" desc="总无功功率95值" type="6" DO="" DA="" />
<Value name="Q" desc="总无功功率平均值" type="6" DO="" DA="" />
<Value name="MAX_Q" desc="总无功功率最大值" type="6" DO="" DA="" />
<Value name="MIN_Q" desc="总无功功率最小值" type="6" DO="" DA="" />
<Value name="G_P" desc="总有功功率95值" type="6" DO="" DA="" />
<Value name="P" desc="总有功功率平均值" type="6" DO="" DA="" />
<Value name="MAX_P" desc="总有功功率最大值" type="6" DO="" DA="" />
<Value name="MIN_P" desc="总有功功率最小值" type="6" DO="" DA="" />
</Sequence>
</Item>
</Monitor>
</DataType>
</Topic>
<Topic name="RTDATA" desc="实时数据">
<DataType name="DATA_TYPE" value="01" desc="实时稳态数据" send="1" type="0">
<Monitor name="-" desc="监测点" type="1">
<Item name="FLAG" value="0" desc="剔除标记" type="3" />
<Item name="TIME" desc="发生时刻" type="3" />
<Item name="V" desc="电压" type="4" >
<!--电压V部分(A-C相)-->
<Sequence name="SEQ" value="7" desc="相别(A-C相)" type="5">
<Value name="VRMS" desc="实时电压有效值" type="6" DO="" DA="" Coefficient="1" />
<Value name="DELTA_V" desc="实时电压偏差" type="6" DO="" DA="" Coefficient="1" />
<Value name="VTHD" desc="实时电压总谐波畸变率" type="6" DO="" DA="" Coefficient="1" />
<!--icd101/102模型-->
<Value name="VFUND_ANGLE" desc="实时基波电压相角" type="6" DO="" DA="" Coefficient="1" />
<Value name="VRMS_LVR" desc="实时线电压有效值" type="6" DO="" DA="" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<!--icd100模型-->
<!--<Value name="V_ANGLE" desc="基波电压相角" type="6" DO="" DA="" Coefficient="1" /-->
<!--icd101/102模型-->
<Value name="V1" desc="实时基波电压有效值" type="6" DO="" DA="" Coefficient="1" />
<!--icd100模型-->
<!--Value name="V1" desc="基波电压有效值" type="6" DO="" DA="" Coefficient="1" /-->
<Value name="V%2,50%" desc="实时2-50次谐波电压含有率" type="6" DO="" DA="" Coefficient="1" Offset="0" />
<Value name="SV_%0,49%" desc="实时1-50次间谐波电压含有率" type="6" DO="" DA="" Coefficient="1" Offset="0" />
<Value name="VA%2,50%" desc="实时谐波电压相角(2-50)" type="6" DO="" DA="" />
</Sequence>
<!--电压V部分(A-C相)角型接线-->
<Sequence name="SEQ" value="112" desc="相别(A-C相)" type="5">
<!--Coefficient 值系数转成kafka的时候乘以系数BaseFlag 基础数据标志 0或没有-非基础数据 1-基础数据LimitUp 数据合理上限,如果包含*%UN字符表示需要乘以电压等级电压如果包含*%U字符表示需要乘以电压等级/1.732电压例如220kV则相电压上限为1.5*220LimitDown 数据合理下限 如果包含*%U字符表示需要乘以电压等级电压-->
<Value name="DELTA_V" desc="实时线电压偏差" type="6" DO="" DA="" Coefficient="1"/>
<Value name="VRMS_LVR" desc="实时线电压有效值" type="6" DO="" DA="" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" Coefficient="1" />
<Value name="VTHD" desc="实时线电压总谐波畸变率" type="6" DO="" DA="" Coefficient="1"/>
<Value name="VFUND_ANGLE" desc="实时基波线电压相角" type="6" DO="" DA="" Coefficient="1" />
<Value name="V1" desc="实时基波线电压有效值" type="6" DO="" DA="" Coefficient="1"/>
<Value name="SV_%0,49%" desc="实时间谐波线电压含有率(f25-2475)" type="6" DO="" DA="" Coefficient="1" Offset="0" />
<Value name="V%2,50%" desc="实时谐波线电压含有率(2-50)" type="6" DO="" DA="" Coefficient="1" Offset="0" />
<Value name="VA%2,50%" desc="实时谐波线电压相角(2-50)" type="6" DO="" DA="" />
</Sequence>
<Sequence name="SEQ" value="8" desc="相别(T相)" type="5">
<!--电压V部分(T相)-->
<Value name="VNSEQ" desc="实时负序电压" type="6" DO="" DA="" Coefficient="1" />
<Value name="V_UNBAN" desc="实时负序电压不平衡" type="6" DO="" DA="" Coefficient="1" />
<Value name="VZSEQ" desc="实时零序电压" type="6" DO="" DA="" Coefficient="1" />
<Value name="VZSEQ_UNBAN" desc="实时零序电压不平衡" type="6" DO="" DA="" Coefficient="1" />
<Value name="FREQ" desc="实时频率" type="6" DO="" DA="" Coefficient="1" />
<Value name="DELTA_FREQ" desc="实时频率偏差" type="6" DO="" DA="" Coefficient="1" />
<Value name="VPSEQ" desc="实时正序电压" type="6" DO="" DA="" Coefficient="1" />
</Sequence>
</Item>
<Item name="I" desc="电流" type="4" >
<!--电流I部分(A-C相)-->
<Sequence name="SEQ" value="7" desc="相别(A-C相)" type="5">
<Value name="IRMS" desc="实时电流有效值" type="6" DO="" DA="" Coefficient="1" />
<Value name="I1" desc="实时基波电流有效值" type="6" DO="" DA="" Coefficient="1" />
<Value name="ITHD" desc="实时电流总谐波畸变率" type="6" DO="" DA="" Coefficient="1" />
<!--icd101/102模型-->
<Value name="I_ANGLE" desc="实时基波电流相角" type="6" DO="" DA="" Coefficient="1" />
<!--icd100模型-->
<!--Value name="I_ANGLE" desc="基波电流相角" type="6" DO="" DA="" Coefficient="1" /-->
<Value name="I%2,50%" desc="实时2-50次谐波电流幅值" type="6" DO="" DA="" Coefficient="1" Offset="0" />
<Value name="SI_%0,49%" desc="实时1-50次间谐波电流含有率" type="6" DO="" DA="" Coefficient="1" Offset="0" />
<!--Value name="I%1,49%" desc="1-50次谐波电流含有率" type="6" DO="" DA="" Coefficient="1" Offset="1" /-->
</Sequence>
<!--电流I部分(T相)-->
<Sequence name="SEQ" value="8" desc="相别(T相)" type="5">
<Value name="INSEQ" desc="实时负序电流" type="6" DO="" DA="" Coefficient="1" />
<Value name="I_UNBAN" desc="实时负序电流不平衡" type="6" DO="" DA="" Coefficient="1" />
<Value name="IZSEQ" desc="实时零序电流" type="6" DO="" DA="" Coefficient="1" />
<Value name="IZSEQ_UNBAN" desc="实时零序电流不平衡" type="6" DO="" DA="" Coefficient="1" />
<Value name="IPSEQ" desc="实时正序电流" type="6" DO="" DA="" Coefficient="1" />
</Sequence>
</Item>
<Item name="PQ" desc="功率" type="4" >
<!--功率PQ部分(A-C相)-->
<Sequence name="SEQ" value="7" desc="相别(A-C相)" type="5">
<Value name="PF" desc="实时功率因数" type="6" DO="" DA="" Coefficient="1" />
<Value name="DF" desc="实时基波功率因数" type="6" DO="" DA="" Coefficient="1" />
<Value name="P_FUND" desc="实时基波有功功率" type="6" DO="" DA="" Coefficient="1" />
<Value name="S" desc="实时视在功率" type="6" DO="" DA="" Coefficient="1" />
<Value name="Q" desc="实时无功功率" type="6" DO="" DA="" Coefficient="1" />
<Value name="P" desc="实时有功功率" type="6" DO="" DA="" Coefficient="1" />
</Sequence>
<!--功率PQ部分(T相)-->
<Sequence name="SEQ" value="8" desc="相别(T相)" type="5">
<Value name="PF" desc="实时总功率因数" type="6" DO="" DA="" Coefficient="1" />
<Value name="DF" desc="实时总基波功率因数" type="6" DO="" DA="" Coefficient="1" />
<Value name="S" desc="实时总视在功率" type="6" DO="" DA="" Coefficient="1" />
<Value name="Q" desc="实时总无功功率" type="6" DO="" DA="" Coefficient="1" />
<Value name="P" desc="实时总有功功率" type="6" DO="" DA="" Coefficient="1" />
</Sequence>
</Item>
</Monitor>
</DataType>
<DataType name="DATA_TYPE" value="02" desc="实时闪变数据" send="0" type="0">
<Monitor name="MONITOR" desc="监测点" type="1">
<Item name="FLAG" value="0" desc="剔除标记" type="3" />
<Item name="TIME" desc="发生时刻" type="3" />
<Item name="F_S" desc="短闪变" type="4" >
<Sequence name="SEQ" value="7" desc="相别" type="5" >
<Value name="SF" desc="实时短时闪变" type="6" DO="" DA="" Coefficient="1" PltFlag="False" />
</Sequence>
<Sequence name="SEQ" value="112" desc="相别" type="5" >
<Value name="SF" desc="实时线电压短时闪变" type="6" DO="" DA="" Coefficient="1" PltFlag="False" />
</Sequence>
</Item>
</Monitor>
</DataType>
<DataType name="DATA_TYPE" value="03" desc="实时闪变数据" send="0" type="0">
<Monitor name="MONITOR" desc="监测点" type="1">
<Item name="FLAG" value="0" desc="剔除标记" type="3" />
<Item name="TIME" desc="发生时刻" type="3" />
<Item name="F_L" desc="长闪变" type="4" >
<Sequence name="SEQ" value="7" desc="相别" type="5" >
<Value name="LF" desc="实时长时闪变" type="6" DO="" DA="" Coefficient="1" PltFlag="True" />
</Sequence>
<Sequence name="SEQ" value="112" desc="相别" type="5" >
<Value name="LF" desc="实时线电压长时闪变" type="6" DO="" DA="" Coefficient="1" PltFlag="True" />
</Sequence>
</Item>
</Monitor>
</DataType>
<DataType name="DATA_TYPE" value="04" desc="实时暂态事件" send="0" type="0" >
<Monitor name="MONITOR" desc="监测点" type="1" >
<Item name="VOLTAGE" desc="暂态指标" type="4" >
<Sequence name="SEQ" value="-" desc="相别" type="5">
<Value name="MAG" desc="实时残余电压" type="6" DO="" DA="" Coefficient="1" />
<Value name="DUR" desc="实时持续时间" type="6" DO="" DA="" Coefficient="1" />
<!--Value name="STARTTIME" desc="开始时间" type="6" DO="" DA="" Coefficient="1" />
<Value name="ENDTIME" desc="结束时间" type="6" DO="" DA="" Coefficient="1" />
<Value name="DISKIND" desc="暂降类型" type="6" DO="" DA="" Coefficient="1" />
<Value name="WAVEFILE" desc="波形文件名称" type="6" DO="" DA="" Coefficient="1" /-->
</Sequence>
</Item>
</Monitor>
</DataType>
</Topic>
<Topic name="RTDATASOE" desc="实时SOE事件">
<DataType name="DATA_TYPE" value="01" desc="稳态SOE事件" type="0" >
<SOE desc="频率偏差越上限" type="9" DO="" DA="" TriggerFlag="Alm1" />
<SOE desc="频率偏差越下限" type="9" DO="" DA="" TriggerFlag="Alm2" />
<SOE desc="电压偏差越上限" type="9" DO="" DA="" TriggerFlag="Alm3" />
<SOE desc="电压偏差越下限" type="9" DO="" DA="" TriggerFlag="Alm4" />
<SOE desc="短时闪变越限" type="9" DO="" DA="" TriggerFlag="Alm5" />
<SOE desc="长时闪变越限" type="9" DO="" DA="" TriggerFlag="Alm6" />
<SOE desc="电压波动越限" type="9" DO="" DA="" TriggerFlag="Alm7" />
<SOE desc="电压负序不平衡度越限" type="9" DO="" DA="" TriggerFlag="Alm8" />
<SOE desc="电压总谐波畸变率越限" type="9" DO="" DA="" TriggerFlag="Alm9" />
<SOE desc="2次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm10" />
<SOE desc="3次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm11" />
<SOE desc="4次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm12" />
<SOE desc="5次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm13" />
<SOE desc="6次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm14" />
<SOE desc="7次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm15" />
<SOE desc="8次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm16" />
<SOE desc="9次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm17" />
<SOE desc="10次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm18" />
<SOE desc="11次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm19" />
<SOE desc="12次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm20" />
<SOE desc="13次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm21" />
<SOE desc="14次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm22" />
<SOE desc="15次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm23" />
<SOE desc="16次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm24" />
<SOE desc="17次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm25" />
<SOE desc="18次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm26" />
<SOE desc="19次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm27" />
<SOE desc="20次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm28" />
<SOE desc="21次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm29" />
<SOE desc="22次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm30" />
<SOE desc="23次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm31" />
<SOE desc="24次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm32" />
<SOE desc="25次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm33" />
<SOE desc="26次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm34" />
<SOE desc="27次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm35" />
<SOE desc="28次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm36" />
<SOE desc="29次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm37" />
<SOE desc="30次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm38" />
<SOE desc="31次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm39" />
<SOE desc="32次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm40" />
<SOE desc="33次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm41" />
<SOE desc="34次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm42" />
<SOE desc="35次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm43" />
<SOE desc="36次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm44" />
<SOE desc="37次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm45" />
<SOE desc="38次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm46" />
<SOE desc="39次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm47" />
<SOE desc="40次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm48" />
<SOE desc="41次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm49" />
<SOE desc="42次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm50" />
<SOE desc="43次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm51" />
<SOE desc="44次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm52" />
<SOE desc="45次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm53" />
<SOE desc="46次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm54" />
<SOE desc="47次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm55" />
<SOE desc="48次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm56" />
<SOE desc="49次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm57" />
<SOE desc="50次谐波电压越限" type="9" DO="" DA="" TriggerFlag="Alm58" />
<SOE desc="2次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm59" />
<SOE desc="3次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm60" />
<SOE desc="4次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm61" />
<SOE desc="5次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm62" />
<SOE desc="6次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm63" />
<SOE desc="7次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm64" />
<SOE desc="8次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm65" />
<SOE desc="9次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm66" />
<SOE desc="10次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm67" />
<SOE desc="11次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm68" />
<SOE desc="12次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm69" />
<SOE desc="13次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm70" />
<SOE desc="14次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm71" />
<SOE desc="15次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm72" />
<SOE desc="16次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm73" />
<SOE desc="17次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm74" />
<SOE desc="18次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm75" />
<SOE desc="19次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm76" />
<SOE desc="20次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm77" />
<SOE desc="21次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm78" />
<SOE desc="22次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm79" />
<SOE desc="23次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm80" />
<SOE desc="24次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm81" />
<SOE desc="25次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm82" />
<SOE desc="26次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm83" />
<SOE desc="27次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm84" />
<SOE desc="28次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm85" />
<SOE desc="29次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm86" />
<SOE desc="30次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm87" />
<SOE desc="31次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm88" />
<SOE desc="32次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm89" />
<SOE desc="33次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm90" />
<SOE desc="34次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm91" />
<SOE desc="35次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm92" />
<SOE desc="36次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm93" />
<SOE desc="37次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm94" />
<SOE desc="38次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm95" />
<SOE desc="39次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm96" />
<SOE desc="40次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm97" />
<SOE desc="41次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm98" />
<SOE desc="42次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm99" />
<SOE desc="43次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm100" />
<SOE desc="44次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm101" />
<SOE desc="45次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm102" />
<SOE desc="46次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm103" />
<SOE desc="47次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm104" />
<SOE desc="48次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm105" />
<SOE desc="49次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm106" />
<SOE desc="50次谐波电流越限" type="9" DO="" DA="" TriggerFlag="Alm107" />
<SOE desc="电压越上限(自定义触发)" type="9" DO="" DA="" TriggerFlag="Alm108" />
<SOE desc="电压越下限(自定义触发)" type="9" DO="" DA="" TriggerFlag="Alm109" />
<SOE desc="电流越上限(自定义触发)" type="9" DO="" DA="" TriggerFlag="Alm110" />
<SOE desc="电流越下限(自定义触发)" type="9" DO="" DA="" TriggerFlag="Alm111" />
<SOE desc="电压变化量越限(自定义触发)" type="9" DO="" DA="" TriggerFlag="Alm112" />
<SOE desc="电流变化量越限(自定义触发)" type="9" DO="" DA="" TriggerFlag="Alm113" />
</DataType>
<DataType name="DATA_TYPE" value="02" desc="暂态SOE事件" type="0" >
</DataType>
<DataType name="DATA_TYPE" value="03" desc="状态SOE事件" type="0" >
<SOE desc="终端工作电源上电" type="9" DO="" DA="" TriggerFlag="PwrUp" />
<SOE desc="终端工作电源掉电" type="9" DO="" DA="" TriggerFlag="PwrDn" />
</DataType>
</Topic>
<Topic name="SOEDATA" desc="告警SOE">
<SOE name="ThdVVal" desc="电压总畸变率越限告警" type="9" DO="" DA="" />
<SOE name="ThdAVal" desc="电流总畸变率越限告警" type="9" DO="" DA="" />
<SOE name="HToddVVal" desc="奇次谐波电压含有率越限告警" type="9" DO="" DA="" />
<SOE name="HTeddVVal" desc="偶次谐波电压含有率越限告警" type="9" DO="" DA="" />
<SOE name="H2AVal" desc="2次谐波电流越限告警" type="9" DO="" DA="" />
<SOE name="H3AVal" desc="3次谐波电流越限告警" type="9" DO="" DA="" />
<SOE name="H4AVal" desc="4次谐波电流越限告警" type="9" DO="" DA="" />
<SOE name="H5AVal" desc="5次谐波电流越限告警" type="9" DO="" DA="" />
<SOE name="H7AVal" desc="7次谐波电流越限告警" type="9" DO="" DA="" />
<SOE name="H9AVal" desc="9次谐波电流越限告警" type="9" DO="" DA="" />
<SOE name="H11AVal" desc="11次谐波电流越限告警" type="9" DO="" DA="" />
<SOE name="H13AVal" desc="13次谐波电流越限告警" type="9" DO="" DA="" />
<SOE name="ImbNgVFVal" desc="电压负序不平衡度越限告警" type="9" DO="" DA="" />
<SOE name="ImbNgAFVal" desc="电流负序不平衡度越限告警" type="9" DO="" DA="" />
<SOE name="OvHzStrVal" desc="频率高越限告警" type="9" DO="" DA="" />
<SOE name="UnHzStrVal" desc="频率低越限告警" type="9" DO="" DA="" />
<SOE name="LRVInterrup" desc="长期电压中断告警" type="9" DO="" DA="" />
<SOE name="LRVSwell" desc="电压上偏差越限告警" type="9" DO="" DA="" />
<SOE name="LRVSag" desc="电压下偏差越限告警" type="9" DO="" DA="" />
<SOE name="PhPstVal" desc="短时闪变越限告警" type="9" DO="" DA="" />
<SOE name="PhPltVal" desc="长时闪变越限告警" type="9" DO="" DA="" />
<SOE name="PhyStateFault" desc="终端运行状态:故障" type="9" DO="" DA="" />
<SOE name="PhyStateRun" desc="终端运行状态:运行" type="9" DO="" DA="" />
<SOE name="PwrUp" desc="终端上电" type="9" DO="" DA="" />
<SOE name="PwrDn" desc="终端掉电" type="9" DO="" DA="" />
<SOE name="CommInterrupt" desc="终端通信中断" type="9" DO="" DA="" />
<SOE name="CommResume" desc="终端通信恢复" type="9" DO="" DA="" />
</Topic>
</JSConfigTemplate>

View File

@@ -1,127 +1,328 @@
<Value name="相电压短时闪变值波动闪变值值" desc="短时闪变" type="6" DO="MFLK1$MX$PhPst" DA="phs*$cVal$mag$f" />
<Value name="相电压电压变动幅值波动闪变值值" desc="电压波动幅" type="6" DO="MMXU2$MX$FLUC" DA="phs*$cVal$mag$f" />
<Value name="相电压电压变动频度波动闪变值值" desc="电压波动频度" type="6" DO="MMXU2$MX$FLUCCF" DA="phs*$cVal$mag$f" />
<Value name="电压时闪变值波动闪变值值" desc="时闪变" type="6" DO="MFLK2$MX$PhPlt" DA="phs*$cVal$mag$f" />
<Value name="电压扰动事件特征幅值值" desc="残余电压" type="6" DO="QVVR0$MX$VVa" DA="mag$f" />
<Value name="电压扰动事件持续时间" desc="持续时间" type="6" DO="QVVR0$MX$VVaTm" DA="mag$f" />
<Value name="SEQ" desc="相别" type="6" DO="" DA="" />
<Value name="STARTTIME" desc="开始时间" type="6" DO="" DA="" />
<Value name="ENDTIME" desc="结束时间" type="6" DO="" DA="" />
<Value name="DISKIND" desc="暂降类型" type="6" DO="" DA="" />
<Value name="WAVEFILE" desc="波形文件名称" type="6" DO="" DA="" />
<Value name="相电压偏差95值值" desc="电压偏差95值" type="6" DO="MMXU5$MX$VolDev" DA="phs*$cVal$mag$f" BaseFlag="1" LimitUp="20" LimitDown="-20" Coefficient="1"/>
<Value name="相电压偏差平均值值" desc="电压偏差平均值" type="6" DO="MMXU2$MX$VolDev" DA="phs*$cVal$mag$f" BaseFlag="1" LimitUp="20" LimitDown="-20" Coefficient="1"/>
<Value name="相电压偏差最大值值" desc="电压偏差最大值" type="6" DO="MMXU3$MX$VolDev" DA="phs*$cVal$mag$f" BaseFlag="1" LimitUp="20" LimitDown="-20" Coefficient="1"/>
<Value name="相电压偏差最小值值" desc="电压偏差最小值" type="6" DO="MMXU4$MX$VolDev" DA="phs*$cVal$mag$f" BaseFlag="1" LimitUp="20" LimitDown="-20" Coefficient="1"/>
<Value name="相电压总有效值95值值" desc="电压有效值95值" type="6" DO="MMXU5$MX$PhV" DA="phs*$cVal$mag$f" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="相电压总有效值平均值值" desc="电压有效值平均值" type="6" DO="MMXU2$MX$PhV" DA="phs*$cVal$mag$f" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="相电压总有效值最大值值" desc="电压有效值最大值" type="6" DO="MMXU3$MX$PhV" DA="phs*$cVal$mag$f" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="相电压总有效值最小值值" desc="电压有效值最小值" type="6" DO="MMXU4$MX$PhV" DA="phs*$cVal$mag$f" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="相电压谐波总畸变率平均值值" desc="电压总谐波畸变率平均值" type="6" DO="MHAI2$MX$ThdPhV" DA="phs*$cVal$mag$f" />
<Value name="相电压谐波总畸变率最大值值" desc="电压总谐波畸变率最大值" type="6" DO="MHAI3$MX$ThdPhV" DA="phs*$cVal$mag$f" />
<Value name="相电压谐波总畸变率最小值值" desc="电压总谐波畸变率最小值" type="6" DO="MHAI4$MX$ThdPhV" DA="phs*$cVal$mag$f" />
<Value name="MIN_VFUND_ANGLE" desc="基波电压相角最小值" type="6" DO="MHAI4$MX$FundPhVAng" DA="phs*$cVal$ang$f" />
<Value name="相电压基波有效值平均值值" desc="基波电压有效值平均值" type="6" DO="MHAI2$MX$FundPhV" DA="phs*$cVal$mag$f" />
<Value name="相电压基波有效值最大值值" desc="基波电压有效值最大值" type="6" DO="MHAI3$MX$FundPhV" DA="phs*$cVal$mag$f" />
<Value name="相电压基波有效值最小值值" desc="基波电压有效值最小值" type="6" DO="MHAI4$MX$FundPhV" DA="phs*$cVal$mag$f" />
<Value name="相电压间谐波含有率序列间谐波平均值值" desc="间谐波电压含有率(f25-2475)平均值" type="6" DO="MHAI8$MX$HPhV" DA="phs*Har[%-0]$mag$f" />
<Value name="相电压间谐波含有率序列间谐波最大值值" desc="间谐波电压含有率(f25-2475)最大值" type="6" DO="MHAI9$MX$HPhV" DA="phs*Har[%-0]$mag$f" />
<Value name="相电压间谐波含有率序列间谐波最小值值" desc="间谐波电压含有率(f25-2475)最小值" type="6" DO="MHAI10$MX$HPhV" DA="phs*Har[%-0]$mag$f" />
<Value name="相电压短时闪变值波动闪变值值" desc="短时闪变" type="6" DO="MFLK1$MX$PhPst" DA="phs*$cVal$mag$f" />
<Value name="相电压电压变动幅值波动闪变值值" desc="电压波动幅" type="6" DO="MMXU2$MX$FLUC" DA="phs*$cVal$mag$f" />
<Value name="相电压电压变动频度波动闪变值值" desc="电压波动频度" type="6" DO="MMXU2$MX$FLUCCF" DA="phs*$cVal$mag$f" />
<Value name="线电压时闪变值波动闪变值值" desc="线电压短时闪变" type="6" DO="" DA="" />
<Value name="线电压电压变动幅值波动闪变值值" desc="线电压波动幅度" type="6" DO="" DA="" />
<Value name="线电压电压变动频度波动闪变值值" desc="线电压波动频度" type="6" DO="" DA="" />
<Value name="相电压长时闪变值波动闪变值值" desc="长时闪变" type="6" DO="MFLK2$MX$PhPlt" DA="phs*$cVal$mag$f" />
<Value name="线电压长时闪变值波动闪变值值" desc="线电压长时闪变" type="6" DO="" DA="" />
<Value name="电压扰动事件特征幅值电压变动a值" desc="残余电压" type="6" DO="QVVR0$MX$VVa" DA="mag$f" />
<Value name="电压扰动事件持续时间电压变动a值" desc="持续时间" type="6" DO="QVVR0$MX$VVaTm" DA="mag$f" />
<Value name="间谐波电压有效值序列间谐波平均值值" desc="间谐波电压含有率(f25-2475)平均值" type="6" DO="MHAI8$MX$HPhV" DA="phs*Har[%-0]$mag$f" />
<Value name="间谐波电压有效值序列间谐波最大值值" desc="间谐波电压含有率(f25-2475)最大值" type="6" DO="MHAI9$MX$HPhV" DA="phs*Har[%-0]$mag$f" />
<Value name="间谐波电压有效值序列间谐波最小值值" desc="间谐波电压含有率(f25-2475)最小值" type="6" DO="MHAI10$MX$HPhV" DA="phs*Har[%-0]$mag$f" />
<Value name="相电压偏差95值值" desc="电压偏差95值" type="6" DO="MMXU5$MX$VolDev" DA="phs*$cVal$mag$f" BaseFlag="1" LimitUp="20" LimitDown="-20" Coefficient="1"/>
<Value name="相电压偏差平均值值" desc="电压偏差平均值" type="6" DO="MMXU2$MX$VolDev" DA="phs*$cVal$mag$f" BaseFlag="1" LimitUp="20" LimitDown="-20" Coefficient="1"/>
<Value name="相电压偏差最大值值" desc="电压偏差最大值" type="6" DO="MMXU3$MX$VolDev" DA="phs*$cVal$mag$f" BaseFlag="1" LimitUp="20" LimitDown="-20" Coefficient="1"/>
<Value name="相电压偏差最小值值" desc="电压偏差最小值" type="6" DO="MMXU4$MX$VolDev" DA="phs*$cVal$mag$f" BaseFlag="1" LimitUp="20" LimitDown="-20" Coefficient="1"/>
<Value name="相电压谐波含有率序列平均值值" desc="谐波电压含有率(2-50)平均值" type="6" DO="MHAI2$MX$HPhV" DA="phs*Har[%-2]$mag$f" />
<Value name="相电压谐波含有率序列最大值值" desc="谐波电压含有率(2-50)最大值" type="6" DO="MHAI3$MX$HPhV" DA="phs*Har[%-2]$mag$f" />
<Value name="相电压谐波含有率序列最小值值" desc="谐波电压含有率(2-50)最小值" type="6" DO="MHAI4$MX$HPhV" DA="phs*Har[%-2]$mag$f" />
<Value name="谐波电压有效值序列平均值角度" desc="谐波电压相角(2-50)平均值" type="6" DO="MHAI2$MX$HPhV" DA="phs*Har[%-2]$ang$f" />
<Value name="正序负序和零序电压平均值负序值" desc="负序电压平均值" type="6" DO="MSQI2$MX$SeqV" DA="c2$cVal$mag$f" />
<Value name="正序负序和零序电压最大值负序值" desc="负序电压最大值" type="6" DO="MSQI3$MX$SeqV" DA="c2$cVal$mag$f" />
<Value name="正序负序和零序电压最小值负序值" desc="负序电压最小值" type="6" DO="MSQI4$MX$SeqV" DA="c2$cVal$mag$f" />
<Value name="电压负序不平衡度平均值值" desc="负序电压不平衡平均值" type="6" DO="MSQI2$MX$ImbNgV" DA="mag$f" />
<Value name="电压负序不平衡度最大值值" desc="负序电压不平衡最大值" type="6" DO="MSQI3$MX$ImbNgV" DA="mag$f" />
<Value name="电压负序不平衡度最小值值" desc="负序电压不平衡最小值" type="6" DO="MSQI4$MX$ImbNgV" DA="mag$f" />
<Value name="正序负序和零序电压平均值零序值" desc="零序电压平均值" type="6" DO="MSQI2$MX$SeqV" DA="c3$cVal$mag$f" />
<Value name="正序负序和零序电压最大值零序值" desc="零序电压最大值" type="6" DO="MSQI3$MX$SeqV" DA="c3$cVal$mag$f" />
<Value name="正序负序和零序电压最小值零序值" desc="零序电压最小值" type="6" DO="MSQI4$MX$SeqV" DA="c3$cVal$mag$f" />
<Value name="电压零序不平衡度平均值值" desc="零序电压不平衡平均值" type="6" DO="MSQI2$MX$ImbZroV" DA="mag$f" />
<Value name="电压零序不平衡度最大值值" desc="零序电压不平衡最大值" type="6" DO="MSQI3$MX$ImbZroV" DA="mag$f" />
<Value name="电压零序不平衡度最小值值" desc="零序电压不平衡最小值" type="6" DO="MSQI4$MX$ImbZroV" DA="mag$f" />
<Value name="频率95值值" desc="频率95值" type="6" DO="MMXU5$MX$Hz" DA="mag$f" />
<Value name="频率平均值值" desc="频率平均值" type="6" DO="MMXU2$MX$Hz" DA="mag$f" />
<Value name="频率最大值值" desc="频率最大值" type="6" DO="MMXU3$MX$Hz" DA="mag$f" />
<Value name="频率最小值值" desc="频率最小值" type="6" DO="MMXU4$MX$Hz" DA="mag$f" />
<Value name="频率偏差95值值" desc="频率偏差95值" type="6" DO="MMXU5$MX$FreqDev" DA="mag$f" />
<Value name="频率偏差平均值值" desc="频率偏差平均值" type="6" DO="MMXU2$MX$FreqDev" DA="mag$f" />
<Value name="频率偏差最大值值" desc="频率偏差最大值" type="6" DO="MMXU3$MX$FreqDev" DA="mag$f" />
<Value name="频率偏差最小值值" desc="频率偏差最小值" type="6" DO="MMXU4$MX$FreqDev" DA="mag$f" />
<Value name="正序负序和零序电压平均值正序值" desc="正序电压平均值" type="6" DO="MSQI2$MX$SeqV" DA="c1$cVal$mag$f" />
<Value name="正序负序和零序电压最大值正序值" desc="正序电压最大值" type="6" DO="MSQI3$MX$SeqV" DA="c1$cVal$mag$f" />
<Value name="正序负序和零序电压最小值正序值" desc="正序电压最小值" type="6" DO="MSQI4$MX$SeqV" DA="c1$cVal$mag$f" />
<Value name="电流总有效值95值值" desc="电流有效值95值" type="6" DO="MMXU5$MX$A" DA="phs*$cVal$mag$f" />
<Value name="电流总有效值平均值值" desc="电流有效值平均值" type="6" DO="MMXU2$MX$A" DA="phs*$cVal$mag$f" />
<Value name="电流总有效值最大值值" desc="电流有效值最大值" type="6" DO="MMXU3$MX$A" DA="phs*$cVal$mag$f" />
<Value name="电流总有效值最小值值" desc="电流有效值最小值" type="6" DO="MMXU4$MX$A" DA="phs*$cVal$mag$f" />
<Value name="电流基波有效值平均值值" desc="基波电流有效值平均值" type="6" DO="MHAI2$MX$HA" DA="phs*Har[1]$mag$f" />
<Value name="电流基波有效值最大值值" desc="基波电流有效值最大值" type="6" DO="MHAI3$MX$HA" DA="phs*Har[1]$mag$f" />
<Value name="电流基波有效值最小值值" desc="基波电流有效值最小值" type="6" DO="MHAI4$MX$HA" DA="phs*Har[1]$mag$f" />
<Value name="间谐波电流有效值序列间谐波平均值值" desc="谐波电流幅值(f25-2475)平均值" type="6" DO="MHAI8$MX$HA" DA="phs*Har[%-0]$mag$f" />
<Value name="间谐波电流有效值序列间谐波最大值值" desc="谐波电流幅值(f25-2475)最大值" type="6" DO="MHAI9$MX$HA" DA="phs*Har[%-0]$mag$f" />
<Value name="间谐波电流有效值序列间谐波最小值值" desc="谐波电流幅值(f25-2475)最值" type="6" DO="MHAI10$MX$HA" DA="phs*Har[%-0]$mag$f" />
<Value name="谐波电流有效值序列平均值值" desc="谐波电流幅值(2-50)平均值" type="6" DO="MHAI2$MX$HA" DA="phs*Har[%-0]$mag$f" />
<Value name="谐波电流有效值序列最大值值" desc="谐波电流幅值(2-50)最大值" type="6" DO="MHAI3$MX$HA" DA="phs*Har[%-0]$mag$f" />
<Value name="谐波电有效值序列最小值值" desc="谐波电流幅值(2-50)最小值" type="6" DO="MHAI4$MX$HA" DA="phs*Har[%-0]$mag$f" />
<Value name="正序负序和零序电流平均值负序值" desc="负序电流平均值" type="6" DO="MSQI2$MX$SeqA" DA="c2$cVal$mag$f" />
<Value name="正序负序和零序电流最大值负序值" desc="负序电流最大值" type="6" DO="MSQI3$MX$SeqA" DA="c2$cVal$mag$f" />
<Value name="正序负序和零序电流最小值负序值" desc="负序电流最小值" type="6" DO="MSQI4$MX$SeqA" DA="c2$cVal$mag$f" />
<Value name="电流负序不平衡度平均值值" desc="负序电流不平衡平均值" type="6" DO="MSQI2$MX$ImbNgA" DA="mag$f" />
<Value name="电流负序不平衡度最大值值" desc="负序电流不平衡最大值" type="6" DO="MSQI3$MX$ImbNgA" DA="mag$f" />
<Value name="电流负序不平衡度最小值值" desc="负序电流不平衡最小值" type="6" DO="MSQI4$MX$ImbNgA" DA="mag$f" />
<Value name="正序负序和零序电流平均值零序值" desc="零序电流平均值" type="6" DO="MSQI2$MX$SeqA" DA="c3$cVal$mag$f" />
<Value name="正序负序和零序电流最大值零序值" desc="零序电流最大值" type="6" DO="MSQI3$MX$SeqA" DA="c3$cVal$mag$f" />
<Value name="正序负序和零序电流最小值零序值" desc="零序电流最小值" type="6" DO="MSQI4$MX$SeqA" DA="c3$cVal$mag$f" />
<Value name="电流零序不平衡度平均值值" desc="零序电流不平衡平均值" type="6" DO="MSQI2$MX$ImbZroA" DA="mag$f" />
<Value name="电流零序不平衡度最大值值" desc="零序电流不平衡最大值" type="6" DO="MSQI3$MX$ImbZroA" DA="mag$f" />
<Value name="电流零序不平衡度最小值值" desc="零序电流不平衡最小值" type="6" DO="MSQI4$MX$ImbZroA" DA="mag$f" />
<Value name="正序负序和零序电流平均值正序值" desc="正序电流平均值" type="6" DO="MSQI2$MX$SeqA" DA="c1$cVal$mag$f" />
<Value name="正序负序和零序电流最大值正序值" desc="正序电流最大值" type="6" DO="MSQI3$MX$SeqA" DA="c1$cVal$mag$f" />
<Value name="正序负序和零序电流最小值正序值" desc="正序电流最小值" type="6" DO="MSQI4$MX$SeqA" DA="c1$cVal$mag$f" />
<Value name="功率因数平均值值" desc="功率因数平均值" type="6" DO="MMXU2$MX$PF" DA="phs*$cVal$mag$f" />
<Value name="功率因数最大值值" desc="功率因数最大值" type="6" DO="MMXU3$MX$PF" DA="phs*$cVal$mag$f" />
<Value name="功率因数最小值值" desc="功率因数最小值" type="6" DO="MMXU4$MX$PF" DA="phs*$cVal$mag$f" />
<Value name="位移功率因数平均值值" desc="基波功率因数平均值" type="6" DO="MHAI2$MX$HSigPF" DA="phs*Har[1]$mag$f" />
<Value name="位移功率因数最大值值" desc="基波功率因数最大值" type="6" DO="MHAI3$MX$HSigPF" DA="phs*Har[1]$mag$f" />
<Value name="基波有功功率平均值值" desc="基波有功功率平均值" type="6" DO="MHAI2$MX$HW" DA="phs*Har[1]$mag$f" />
<Value name="基波有功功率最值值" desc="基波有功功率最值" type="6" DO="MHAI3$MX$HW" DA="phs*Har[1]$mag$f" />
<Value name="基波有功功率最小值值" desc="基波有功功率最小值" type="6" DO="MHAI4$MX$HW" DA="phs*Har[1]$mag$f" />
<Value name="视在功率95值值" desc="视在功率95值" type="6" DO="MMXU5$MX$VA" DA="phs*$cVal$mag$f" />
<Value name="视在功率平均值值" desc="视在功率平均值" type="6" DO="MMXU2$MX$VA" DA="phs*$cVal$mag$f" />
<Value name="视在功率最大值值" desc="视在功率最大值" type="6" DO="MMXU3$MX$VA" DA="phs*$cVal$mag$f" />
<Value name="视在功率最小值值" desc="视在功率最小值" type="6" DO="MMXU4$MX$VA" DA="phs*$cVal$mag$f" />
<Value name="无功功率95值值" desc="无功功率95值" type="6" DO="MMXU5$MX$VAr" DA="phs*$cVal$mag$f" />
<Value name="无功功率平均值值" desc="无功功率平均值" type="6" DO="MMXU2$MX$VAr" DA="phs*$cVal$mag$f" />
<Value name="无功功率最大值值" desc="无功功率最大值" type="6" DO="MMXU3$MX$VAr" DA="phs*$cVal$mag$f" />
<Value name="无功功率最小值值" desc="无功功率最小值" type="6" DO="MMXU4$MX$VAr" DA="phs*$cVal$mag$f" />
<Value name="2~50次谐波有功功率序列平均值值" desc="谐波有功功率(2-50)平均值" type="6" DO="MHAI2$MX$HW" DA="phs*Har[%-0]$mag$f" />
<Value name="2~50次谐波有功功率序列最大值值" desc="谐波有功功率(2-50)最大值" type="6" DO="MHAI3$MX$HW" DA="phs*Har[%-0]$mag$f" />
<Value name="2~50次谐波有功功率序列最小值值" desc="谐波有功功率(2-50)最小值" type="6" DO="MHAI4$MX$HW" DA="phs*Har[%-0]$mag$f" />
<Value name="有功功率95值值" desc="有功功率95值" type="6" DO="MMXU5$MX$W" DA="phs*$cVal$mag$f" />
<Value name="有功功率平均值值" desc="有功功率平均值" type="6" DO="MMXU2$MX$W" DA="phs*$cVal$mag$f" />
<Value name="有功功率最大值值" desc="有功功率最大值" type="6" DO="MMXU3$MX$W" DA="phs*$cVal$mag$f" />
<Value name="有功功率最小值值" desc="有功功率最小值" type="6" DO="MMXU4$MX$W" DA="phs*$cVal$mag$f" />
<Value name="三相功率因数平均值值" desc="总功率因数平均值" type="6" DO="MMXU2$MX$TotPF" DA="mag$f" />
<Value name="三相功率因数最大值值" desc="总功率因数最大值" type="6" DO="MMXU3$MX$TotPF" DA="mag$f" />
<Value name="三相功率因数最小值值" desc="总功率因数最小值" type="6" DO="MMXU4$MX$TotPF" DA="mag$f" />
<Value name="三相位移功率因数平均值值" desc="总基波功率因数平均值" type="6" DO="MHAI2$MX$HTotPF" DA="har[1]$mag$f" />
<Value name="三相位移功率因数最大值值" desc="总基波功率因数最大值" type="6" DO="MHAI3$MX$HTotPF" DA="har[1]$mag$f" />
<Value name="三相位移功率因数最小值值" desc="总基波功率因数最小值" type="6" DO="MHAI4$MX$HTotPF" DA="har[1]$mag$f" />
<Value name="三相总视在功率平均值值" desc="总视在功率平均值" type="6" DO="MMXU2$MX$TotVA" DA="mag$f" />
<Value name="三相总视在功率最大值值" desc="总视在功率最大值" type="6" DO="MMXU3$MX$TotVA" DA="mag$f" />
<Value name="三相总视在功率最小值值" desc="总视在功率最小值" type="6" DO="MMXU4$MX$TotVA" DA="mag$f" />
<Value name="三相总无功功率平均值值" desc="总无功功率平均值" type="6" DO="MMXU2$MX$TotVAr" DA="mag$f" />
<Value name="三相总无功功率最大值值" desc="总无功功率最大值" type="6" DO="MMXU3$MX$TotVAr" DA="mag$f" />
<Value name="三相总无功功率最小值值" desc="总无功功率最小值" type="6" DO="MMXU4$MX$TotVAr" DA="mag$f" />
<Value name="三相总有功功率平均值值" desc="总有功功率平均值" type="6" DO="MMXU2$MX$TotW" DA="mag$f" />
<Value name="三相总有功功率最大值值" desc="总有功功率最大值" type="6" DO="MMXU3$MX$TotW" DA="mag$f" />
<Value name="三相总有功功率最小值值" desc="总有功功率最小值" type="6" DO="MMXU4$MX$TotW" DA="mag$f" />
<Value name="相电压总有效值95值值" desc="电压有效值95值" type="6" DO="MMXU5$MX$PhV" DA="phs*$cVal$mag$f" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="相电压总有效值平均值值" desc="电压有效值平均值" type="6" DO="MMXU2$MX$PhV" DA="phs*$cVal$mag$f" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="相电压总有效值最大值值" desc="电压有效值最大值" type="6" DO="MMXU3$MX$PhV" DA="phs*$cVal$mag$f" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="电压有效值最小值值" desc="电压有效值最小值" type="6" DO="MMXU4$MX$PhV" DA="phs*$cVal$mag$f" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="线电压总有效值95值值" desc="线电压有效值95值" type="6" DO="" DA="" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="线电压总有效值平均值值" desc="线电压有效值平均值" type="6" DO="" DA="" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="线电压总有效值最大值值" desc="线电压有效值最大值" type="6" DO="" DA="" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="线电压总有效值最小值值" desc="线电压有效值最小值" type="6" DO="" DA="" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="相电压谐波总畸变率95值值" desc="电压总谐波畸变率95值" type="6" DO="" DA="" />
<Value name="相电压谐波总畸变率平均值值" desc="电压总谐波畸变率平均值" type="6" DO="MHAI2$MX$ThdPhV" DA="phs*$cVal$mag$f" />
<Value name="相电压谐波总畸变率最大值值" desc="电压总谐波畸变率最大值" type="6" DO="MHAI3$MX$ThdPhV" DA="phs*$cVal$mag$f" />
<Value name="电压谐波总畸变率最小值值" desc="电压总谐波畸变率最小值" type="6" DO="MHAI4$MX$ThdPhV" DA="phs*$cVal$mag$f" />
<Value name="电压基波有效值95值角度" desc="基波电压相角95值" type="6" DO="" DA="" />
<Value name="相电压基波有效值平均值角度" desc="基波电压相角平均值" type="6" DO="MHAI2$MX$FundPhVAng" DA="phs*$cVal$ang$f" />
<Value name="相电压基波有效值最大值角度" desc="基波电压相角最大值" type="6" DO="" DA="" />
<Value name="相电压基波有效值最小值角度" desc="基波电压相角最小值" type="6" DO="MHAI4$MX$FundPhVAng" DA="phs*$cVal$ang$f" />
<Value name="相电压基波有效值95值值" desc="基波电压有效值95值" type="6" DO="" DA="" />
<Value name="相电压基波有效值平均值值" desc="基波电压有效值平均值" type="6" DO="MHAI2$MX$FundPhV" DA="phs*$cVal$mag$f" />
<Value name="相电压基波有效值最大值值" desc="基波电压有效值最大值" type="6" DO="MHAI3$MX$FundPhV" DA="phs*$cVal$mag$f" />
<Value name="相电压基波有效值最小值值" desc="基波电压有效值最小值" type="6" DO="MHAI4$MX$FundPhV" DA="phs*$cVal$mag$f" />
<Value name="间谐波电压有效值序列间谐波95值值" desc="间谐波电压含有率(f25-2475)95值" type="6" DO="MHAI8$MX$HPhV" DA="phs*Har[%-0]$mag$f" />
<Value name="间谐波电压有效值序列间谐波平均值值" desc="间谐波电压含有率(f25-2475)平均值" type="6" DO="MHAI8$MX$HPhV" DA="phs*Har[%-0]$mag$f" />
<Value name="间谐波电压有效值序列间谐波最大值值" desc="间谐波电压含有率(f25-2475)最大值" type="6" DO="MHAI9$MX$HPhV" DA="phs*Har[%-0]$mag$f" />
<Value name="间谐波电压有效值序列间谐波最小值值" desc="间谐波电压含有率(f25-2475)最小值" type="6" DO="MHAI10$MX$HPhV" DA="phs*Har[%-0]$mag$f" />
<Value name="间谐波电压有效值序列间谐波95值值" desc="间谐波电压含有率(f25-2475)95值" type="6" DO="MHAI8$MX$HPhV" DA="phs*Har[%-0]$mag$f" />
<Value name="间谐波电压有效值序列间谐波平均值值" desc="间谐波电压含有率(f25-2475)平均值" type="6" DO="MHAI8$MX$HPhV" DA="phs*Har[%-0]$mag$f" />
<Value name="间谐波电压有效值序列间谐波最大值值" desc="间谐波电压含有率(f25-2475)最大值" type="6" DO="MHAI9$MX$HPhV" DA="phs*Har[%-0]$mag$f" />
<Value name="间谐波电压有效值序列间谐波最小值值" desc="间谐波电压含有率(f25-2475)最小值" type="6" DO="MHAI10$MX$HPhV" DA="phs*Har[%-0]$mag$f" />
<Value name="相电压谐波含有率序列95值值" desc="谐波电压含有率(2-50)95值" type="6" DO="MHAI2$MX$HPhV" DA="phs*Har[%-2]$mag$f" />
<Value name="相电压谐波含有率序列平均值值" desc="谐波电压含有率(2-50)平均值" type="6" DO="MHAI2$MX$HPhV" DA="phs*Har[%-2]$mag$f" />
<Value name="相电压谐波含有率序列最大值值" desc="谐波电压含有率(2-50)最值" type="6" DO="MHAI3$MX$HPhV" DA="phs*Har[%-2]$mag$f" />
<Value name="相电压谐波含有率序列最小值值" desc="谐波电压含有率(2-50)最小值" type="6" DO="MHAI4$MX$HPhV" DA="phs*Har[%-2]$mag$f" />
<Value name="谐波电有效值序列95值角度" desc="谐波电压相角(2-50)95值" type="6" DO="MHAI2$MX$HPhV" DA="phs*Har[%-2]$ang$f" />
<Value name="谐波电压有效值序列平均值角度" desc="谐波电压相角(2-50)平均值" type="6" DO="MHAI2$MX$HPhV" DA="phs*Har[%-2]$ang$f" />
<Value name="谐波电压有效值序列最大值角度" desc="谐波电压相角(2-50)最大值" type="6" DO="MHAI3$MX$HPhV" DA="phs*Har[%-2]$ang$f" />
<Value name="谐波电压有效值序列最小值角度" desc="谐波电压相角(2-50)最小值" type="6" DO="MHAI4$MX$HPhV" DA="phs*Har[%-2]$ang$f" />
<Value name="相电压谐波含有率序列95值角度" desc="谐波电压相角(2-50)95值" type="6" DO="MHAI2$MX$HPhV" DA="phs*Har[%-2]$ang$f" />
<Value name="相电压谐波含有率序列平均值角度" desc="谐波电压相角(2-50)平均值" type="6" DO="MHAI2$MX$HPhV" DA="phs*Har[%-2]$ang$f" />
<Value name="相电压谐波含有率序列最大值角度" desc="谐波电压相角(2-50)最大值" type="6" DO="MHAI3$MX$HPhV" DA="phs*Har[%-2]$ang$f" />
<Value name="相电压谐波含有率序列最小值角度" desc="谐波电压相角(2-50)最小值" type="6" DO="MHAI4$MX$HPhV" DA="phs*Har[%-2]$ang$f" />
<Value name="线电压偏差95值值" desc="线电压偏差95值" type="6" DO="" DA="" BaseFlag="1" LimitUp="20" LimitDown="-20" Coefficient="1"/>
<Value name="线电压偏差平均值值" desc="线电压偏差平均值" type="6" DO="" DA="" BaseFlag="1" LimitUp="20" LimitDown="-20" Coefficient="1"/>
<Value name="线电压偏差最大值值" desc="线电压偏差最大值" type="6" DO="" DA="" BaseFlag="1" LimitUp="20" LimitDown="-20" Coefficient="1"/>
<Value name="线电压偏差最小值值" desc="线电压偏差最小值" type="6" DO="" DA="" BaseFlag="1" LimitUp="20" LimitDown="-20" Coefficient="1"/>
<Value name="线电压总有效值95值值" desc="线电压有效值95值" type="6" DO="" DA="" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="线电压总有效值平均值值" desc="线电压有效值平均值" type="6" DO="" DA="" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="线电压总有效值最大值值" desc="线电压有效值最大值" type="6" DO="" DA="" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="线电压总有效值最小值值" desc="线电压有效值最小值" type="6" DO="" DA="" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="线电压谐波总畸变率95值值" desc="线电压总谐波畸变率95值" type="6" DO="" DA="" />
<Value name="线电压谐波总畸变率平均值值" desc="线电压总谐波畸变率平均值" type="6" DO="" DA="" />
<Value name="线电压谐波总畸变率最大值值" desc="线电压总谐波畸变率最大值" type="6" DO="" DA="" />
<Value name="线电压谐波总畸变率最值值" desc="线电压总谐波畸变率最值" type="6" DO="" DA="" />
<Value name="线电压基波有效值95值角度" desc="基波线电压相角95值" type="6" DO="" DA="" />
<Value name="线电压基波有效值平均值角度" desc="基波线电压相角平均值" type="6" DO="" DA="" />
<Value name="线电压基波有效值最大值角度" desc="基波线电压相角最大值" type="6" DO="" DA="" />
<Value name="线电压基波有效值最小值角度" desc="基波线电压相角最小值" type="6" DO="" DA="" />
<Value name="线电压基波有效值95值值" desc="基波线电压有效值95值" type="6" DO="" DA="" />
<Value name="线电压基波有效值平均值值" desc="基波线电压有效值平均值" type="6" DO="" DA="" />
<Value name="线电压基波有效值最大值值" desc="基波线电压有效值最大值" type="6" DO="" DA="" />
<Value name="线电压基波有效值最小值值" desc="基波线电压有效值最小值" type="6" DO="" DA="" />
<Value name="线电压间谐波含有率序列间谐波95值值" desc="谐波线电压含有率(f25-2475)95值" type="6" DO="" DA="" />
<Value name="线电压间谐波含有率序列间谐波平均值值" desc="间谐波线电压含有率(f25-2475)平均值" type="6" DO="" DA="" />
<Value name="线电压间谐波含有率序列间谐波最大值值" desc="间谐波线电压含有率(f25-2475)最大值" type="6" DO="" DA="" />
<Value name="线电压间谐波含有率序列间谐波最小值值" desc="间谐波线电压含有率(f25-2475)最小值" type="6" DO="" DA="" />
<Value name="线电压谐波含有率序列95值值" desc="谐波线电压含有率(2-50)95值" type="6" DO="" DA="" />
<Value name="线电压谐波含有率序列平均值值" desc="谐波线电压含有率(2-50)平均值" type="6" DO="" DA="" />
<Value name="线电压谐波含有率序列最大值值" desc="谐波线电压含有率(2-50)最大值" type="6" DO="" DA="" />
<Value name="线电压谐波含有率序列最小值值" desc="谐波线电压含有率(2-50)最小值" type="6" DO="" DA="" />
<Value name="线电压谐波含有率序列95值角度" desc="谐波线电压相角(2-50)95值" type="6" DO="" DA="" />
<Value name="线电压谐波含有率序列平均值角度" desc="谐波线电压相角(2-50)平均值" type="6" DO="" DA="" />
<Value name="线电压谐波含有率序列最大值角度" desc="谐波线电压相角(2-50)最大值" type="6" DO="" DA="" />
<Value name="线电压谐波含有率序列最小值角度" desc="谐波线电压相角(2-50)最小值" type="6" DO="" DA="" />
<Value name="正序负序和零序电压95值负序值" desc="负序电压95值" type="6" DO="MSQI2$MX$SeqV" DA="c2$cVal$mag$f" />
<Value name="正序负序和零序电压平均值负序值" desc="负序电压平均值" type="6" DO="MSQI2$MX$SeqV" DA="c2$cVal$mag$f" />
<Value name="正序负序和零序电压最大值负序值" desc="负序电压最大值" type="6" DO="MSQI3$MX$SeqV" DA="c2$cVal$mag$f" />
<Value name="正序负序和零序电压最小值负序值" desc="负序电压最小值" type="6" DO="MSQI4$MX$SeqV" DA="c2$cVal$mag$f" />
<Value name="电压负序不平衡度95值值" desc="负序电压不平衡95值" type="6" DO="MSQI2$MX$ImbNgV" DA="mag$f" />
<Value name="电压负序不平衡度平均值值" desc="负序电压不平衡平均值" type="6" DO="MSQI2$MX$ImbNgV" DA="mag$f" />
<Value name="电压负序不平衡度最大值值" desc="负序电压不平衡最大值" type="6" DO="MSQI3$MX$ImbNgV" DA="mag$f" />
<Value name="电压负序不平衡度最小值值" desc="负序电压不平衡最小值" type="6" DO="MSQI4$MX$ImbNgV" DA="mag$f" />
<Value name="正序负序和零序电压95值零序值" desc="零序电压95值" type="6" DO="MSQI2$MX$SeqV" DA="c3$cVal$mag$f" />
<Value name="正序负序和零序电压平均值零序值" desc="零序电压平均值" type="6" DO="MSQI2$MX$SeqV" DA="c3$cVal$mag$f" />
<Value name="正序负序和零序电压最大值零序值" desc="零序电压最大值" type="6" DO="MSQI3$MX$SeqV" DA="c3$cVal$mag$f" />
<Value name="正序负序和零序电压最小值零序值" desc="零序电压最小值" type="6" DO="MSQI4$MX$SeqV" DA="c3$cVal$mag$f" />
<Value name="电压零序不平衡度95值值" desc="零序电压不平衡95值" type="6" DO="MSQI2$MX$ImbZroV" DA="mag$f" />
<Value name="电压零序不平衡度平均值值" desc="零序电压不平衡平均值" type="6" DO="MSQI2$MX$ImbZroV" DA="mag$f" />
<Value name="电压零序不平衡度最大值值" desc="零序电压不平衡最大值" type="6" DO="MSQI3$MX$ImbZroV" DA="mag$f" />
<Value name="电压零序不平衡度最小值值" desc="零序电压不平衡最小值" type="6" DO="MSQI4$MX$ImbZroV" DA="mag$f" />
<Value name="频率95值值" desc="频率95值" type="6" DO="MMXU5$MX$Hz" DA="mag$f" />
<Value name="频率平均值值" desc="频率平均值" type="6" DO="MMXU2$MX$Hz" DA="mag$f" />
<Value name="频率最大值值" desc="频率最大值" type="6" DO="MMXU3$MX$Hz" DA="mag$f" />
<Value name="频率最小值值" desc="频率最小值" type="6" DO="MMXU4$MX$Hz" DA="mag$f" />
<Value name="频率偏差95值值" desc="频率偏差95值" type="6" DO="MMXU5$MX$FreqDev" DA="mag$f" />
<Value name="频率偏差平均值值" desc="频率偏差平均值" type="6" DO="MMXU2$MX$FreqDev" DA="mag$f" />
<Value name="频率偏差最大值值" desc="频率偏差最大值" type="6" DO="MMXU3$MX$FreqDev" DA="mag$f" />
<Value name="频率偏差最小值值" desc="频率偏差最小值" type="6" DO="MMXU4$MX$FreqDev" DA="mag$f" />
<Value name="正序负序和零序电压95值正序值" desc="正序电压95值" type="6" DO="MSQI2$MX$SeqV" DA="c1$cVal$mag$f" />
<Value name="正序负序和零序电压平均值正序值" desc="正序电压平均值" type="6" DO="MSQI2$MX$SeqV" DA="c1$cVal$mag$f" />
<Value name="正序负序和零序电压最大值正序值" desc="正序电压最大值" type="6" DO="MSQI3$MX$SeqV" DA="c1$cVal$mag$f" />
<Value name="正序负序和零序电压最小值正序值" desc="正序电压最小值" type="6" DO="MSQI4$MX$SeqV" DA="c1$cVal$mag$f" />
<Value name="电流总有效值95值值" desc="电流有效值95值" type="6" DO="MMXU5$MX$A" DA="phs*$cVal$mag$f" />
<Value name="电流总有效值平均值值" desc="电流有效值平均值" type="6" DO="MMXU2$MX$A" DA="phs*$cVal$mag$f" />
<Value name="电流总有效值最大值值" desc="电流有效值最大值" type="6" DO="MMXU3$MX$A" DA="phs*$cVal$mag$f" />
<Value name="电流总有效值最小值值" desc="电流有效值最小值" type="6" DO="MMXU4$MX$A" DA="phs*$cVal$mag$f" />
<Value name="电流基波有效值95值值" desc="基波电流有效值95值" type="6" DO="MHAI2$MX$HA" DA="phs*Har[1]$mag$f" />
<Value name="电流基波有效值平均值值" desc="基波电流有效值平均值" type="6" DO="MHAI2$MX$HA" DA="phs*Har[1]$mag$f" />
<Value name="电流基波有效值最大值值" desc="基波电流有效值最大值" type="6" DO="MHAI3$MX$HA" DA="phs*Har[1]$mag$f" />
<Value name="电流基波有效值最小值值" desc="基波电流有效值最小值" type="6" DO="MHAI4$MX$HA" DA="phs*Har[1]$mag$f" />
<Value name="电流基波有效值95值角度" desc="基波电流相角95值" type="6" DO="" DA="" />
<Value name="电流基波有效值平均值角度" desc="基波电流相角平均值" type="6" DO="" DA="" />
<Value name="电流基波有效值最大值角度" desc="基波电流相角最大值" type="6" DO="" DA="" />
<Value name="电流基波有效值最小值角度" desc="基波电流相角最小值" type="6" DO="" DA="" />
<Value name="间谐波电流有效值序列间谐波95值值" desc="间谐波电流幅值(f25-2475)95值" type="6" DO="MHAI8$MX$HA" DA="phs*Har[%-0]$mag$f" />
<Value name="间谐波电流有效值序列间谐波平均值值" desc="间谐波电流幅值(f25-2475)平均值" type="6" DO="MHAI8$MX$HA" DA="phs*Har[%-0]$mag$f" />
<Value name="间谐波电流有效值序列间谐波最大值值" desc="间谐波电流幅值(f25-2475)最大值" type="6" DO="MHAI9$MX$HA" DA="phs*Har[%-0]$mag$f" />
<Value name="间谐波电流有效值序列间谐波最小值值" desc="间谐波电流幅值(f25-2475)最小值" type="6" DO="MHAI10$MX$HA" DA="phs*Har[%-0]$mag$f" />
<Value name="谐波电流有效值序列95值值" desc="谐波电流幅值(2-50)95值" type="6" DO="MHAI2$MX$HA" DA="phs*Har[%-0]$mag$f" />
<Value name="谐波电流有效值序列平均值值" desc="谐波电流幅值(2-50)平均值" type="6" DO="MHAI2$MX$HA" DA="phs*Har[%-0]$mag$f" />
<Value name="谐波电流有效值序列最大值值" desc="谐波电流幅值(2-50)最大值" type="6" DO="MHAI3$MX$HA" DA="phs*Har[%-0]$mag$f" />
<Value name="谐波电流有效值序列最小值值" desc="谐波电流幅值(2-50)最小值" type="6" DO="MHAI4$MX$HA" DA="phs*Har[%-0]$mag$f" />
<Value name="谐波电流有效值序列95值角度" desc="谐波电流相角(2-50)95值" type="6" DO="" DA="" />
<Value name="谐波电流有效值序列平均值角度" desc="谐波电流相角(2-50)平均值" type="6" DO="" DA="" />
<Value name="谐波电流有效值序列最大值角度" desc="谐波电流相角(2-50)最大值" type="6" DO="" DA="" />
<Value name="谐波电流有效值序列最小值角度" desc="谐波电流相角(2-50)最小值" type="6" DO="" DA="" />
<Value name="电流总谐波畸变率平均值值" desc="电流总谐波畸变率平均值" type="6" DO="" DA="" Coefficient="1" />
<Value name="电流总谐波畸变率最大值值" desc="电流总谐波畸变率最大值" type="6" DO="" DA="" Coefficient="1" />
<Value name="电流总谐波畸变率最小值值" desc="电流总谐波畸变率最小值" type="6" DO="" DA="" Coefficient="1" />
<Value name="电流总谐波畸变率95值值" desc="电流总谐波畸变率95值" type="6" DO="" DA="" Coefficient="1" />
<Value name="正序负序和零序电流95值负序值" desc="负序电流95值" type="6" DO="MSQI2$MX$SeqA" DA="c2$cVal$mag$f" />
<Value name="正序负序和零序电流平均值负序值" desc="负序电流平均值" type="6" DO="MSQI2$MX$SeqA" DA="c2$cVal$mag$f" />
<Value name="正序负序和零序电流最大值负序值" desc="负序电流最大值" type="6" DO="MSQI3$MX$SeqA" DA="c2$cVal$mag$f" />
<Value name="正序负序和零序电流最小值负序值" desc="负序电流最小值" type="6" DO="MSQI4$MX$SeqA" DA="c2$cVal$mag$f" />
<Value name="电流负序不平衡度95值值" desc="负序电流不平衡95值" type="6" DO="MSQI2$MX$ImbNgA" DA="mag$f" />
<Value name="电流负序不平衡度平均值值" desc="负序电流不平衡平均值" type="6" DO="MSQI2$MX$ImbNgA" DA="mag$f" />
<Value name="电流负序不平衡度最大值值" desc="负序电流不平衡最大值" type="6" DO="MSQI3$MX$ImbNgA" DA="mag$f" />
<Value name="电流负序不平衡度最小值值" desc="负序电流不平衡最小值" type="6" DO="MSQI4$MX$ImbNgA" DA="mag$f" />
<Value name="正序负序和零序电流95值零序值" desc="零序电流95值" type="6" DO="MSQI2$MX$SeqA" DA="c3$cVal$mag$f" />
<Value name="正序负序和零序电流平均值零序值" desc="零序电流平均值" type="6" DO="MSQI2$MX$SeqA" DA="c3$cVal$mag$f" />
<Value name="正序负序和零序电流最大值零序值" desc="零序电流最大值" type="6" DO="MSQI3$MX$SeqA" DA="c3$cVal$mag$f" />
<Value name="正序负序和零序电流最小值零序值" desc="零序电流最小值" type="6" DO="MSQI4$MX$SeqA" DA="c3$cVal$mag$f" />
<Value name="电流零序不平衡度95值值" desc="零序电流不平衡95值" type="6" DO="MSQI2$MX$ImbZroA" DA="mag$f" />
<Value name="电流零序不平衡度平均值值" desc="零序电流不平衡平均值" type="6" DO="MSQI2$MX$ImbZroA" DA="mag$f" />
<Value name="电流零序不平衡度最大值值" desc="零序电流不平衡最大值" type="6" DO="MSQI3$MX$ImbZroA" DA="mag$f" />
<Value name="电流零序不平衡度最小值值" desc="零序电流不平衡最小值" type="6" DO="MSQI4$MX$ImbZroA" DA="mag$f" />
<Value name="正序负序和零序电流95值正序值" desc="正序电流95值" type="6" DO="MSQI2$MX$SeqA" DA="c1$cVal$mag$f" />
<Value name="正序负序和零序电流平均值正序值" desc="正序电流平均值" type="6" DO="MSQI2$MX$SeqA" DA="c1$cVal$mag$f" />
<Value name="正序负序和零序电流最大值正序值" desc="正序电流最大值" type="6" DO="MSQI3$MX$SeqA" DA="c1$cVal$mag$f" />
<Value name="正序负序和零序电流最小值正序值" desc="正序电流最小值" type="6" DO="MSQI4$MX$SeqA" DA="c1$cVal$mag$f" />
<Value name="功率因数95值值" desc="功率因数95值" type="6" DO="MMXU2$MX$PF" DA="phs*$cVal$mag$f" />
<Value name="功率因数平均值值" desc="功率因数平均值" type="6" DO="MMXU2$MX$PF" DA="phs*$cVal$mag$f" />
<Value name="功率因数最大值值" desc="功率因数最大值" type="6" DO="MMXU3$MX$PF" DA="phs*$cVal$mag$f" />
<Value name="功率因数最小值值" desc="功率因数最小值" type="6" DO="MMXU4$MX$PF" DA="phs*$cVal$mag$f" />
<Value name="位移功率因数平均值值" desc="基波功率因数平均值" type="6" DO="MHAI2$MX$HSigPF" DA="phs*Har[1]$mag$f" />
<Value name="位移功率因数最大值值" desc="基波功率因数最大值" type="6" DO="MHAI3$MX$HSigPF" DA="phs*Har[1]$mag$f" />
<Value name="三相位移功率因数平均值值" desc="总基波功率因数平均值" type="6" DO="MHAI2$MX$HTotPF" DA="har[1]$mag$f" />
<Value name="三相位移功率因数最大值值" desc="总基波功率因数最大值" type="6" DO="MHAI3$MX$HTotPF" DA="har[1]$mag$f" />
<Value name="三相位移功率因数最小值值" desc="总基波功率因数最小值" type="6" DO="MHAI4$MX$HTotPF" DA="har[1]$mag$f" />
<Value name="位移功率因数95值值" desc="位移功率因数95值" type="6" DO="MHAI2$MX$HSigPF" DA="phs*Har[1]$mag$f" />
<Value name="位移功率因数平均值值" desc="位移功率因数平均值" type="6" DO="MHAI2$MX$HSigPF" DA="phs*Har[1]$mag$f" />
<Value name="位移功率因数最大值值" desc="位移功率因数最大值" type="6" DO="MHAI3$MX$HSigPF" DA="phs*Har[1]$mag$f" />
<Value name="位移功率因数最小值值" desc="位移功率因数最小值" type="6" DO="MHAI4$MX$HSigPF" DA="phs*Har[1]$mag$f" />
<Value name="基波有功功率95值值" desc="基波有功功率95值" type="6" DO="MHAI2$MX$HW" DA="phs*Har[1]$mag$f" />
<Value name="基波有功功率平均值值" desc="基波有功功率平均值" type="6" DO="MHAI2$MX$HW" DA="phs*Har[1]$mag$f" />
<Value name="基波有功功率最大值值" desc="基波有功功率最大值" type="6" DO="MHAI3$MX$HW" DA="phs*Har[1]$mag$f" />
<Value name="基波有功功率最小值值" desc="基波有功功率最小值" type="6" DO="MHAI4$MX$HW" DA="phs*Har[1]$mag$f" />
<Value name="视在功率95值值" desc="视在功率95值" type="6" DO="MMXU5$MX$VA" DA="phs*$cVal$mag$f" />
<Value name="视在功率平均值值" desc="视在功率平均值" type="6" DO="MMXU2$MX$VA" DA="phs*$cVal$mag$f" />
<Value name="视在功率最大值值" desc="视在功率最大值" type="6" DO="MMXU3$MX$VA" DA="phs*$cVal$mag$f" />
<Value name="视在功率最小值值" desc="视在功率最小值" type="6" DO="MMXU4$MX$VA" DA="phs*$cVal$mag$f" />
<Value name="无功功率95值值" desc="无功功率95值" type="6" DO="MMXU5$MX$VAr" DA="phs*$cVal$mag$f" />
<Value name="无功功率平均值值" desc="无功功率平均值" type="6" DO="MMXU2$MX$VAr" DA="phs*$cVal$mag$f" />
<Value name="无功功率最大值值" desc="无功功率最大值" type="6" DO="MMXU3$MX$VAr" DA="phs*$cVal$mag$f" />
<Value name="无功功率最小值值" desc="无功功率最小值" type="6" DO="MMXU4$MX$VAr" DA="phs*$cVal$mag$f" />
<Value name="2~50次谐波有功功率序列95值值" desc="谐波有功功率(2-50)95值" type="6" DO="MHAI2$MX$HW" DA="phs*Har[%-0]$mag$f" />
<Value name="2~50次谐波有功功率序列平均值值" desc="谐波有功功率(2-50)平均值" type="6" DO="MHAI2$MX$HW" DA="phs*Har[%-0]$mag$f" />
<Value name="2~50次谐波有功功率序列最大值值" desc="谐波有功功率(2-50)最大值" type="6" DO="MHAI3$MX$HW" DA="phs*Har[%-0]$mag$f" />
<Value name="2~50次谐波有功功率序列最小值值" desc="谐波有功功率(2-50)最小值" type="6" DO="MHAI4$MX$HW" DA="phs*Har[%-0]$mag$f" />
<Value name="2~50次谐波无功功率序列95值值" desc="谐波无功功率(2-50)95值" type="6" DO="" DA="" />
<Value name="2~50次谐波无功功率序列平均值值" desc="谐波无功功率(2-50)平均值" type="6" DO="" DA="" />
<Value name="2~50次谐波无功功率序列最大值值" desc="谐波无功功率(2-50)最大值" type="6" DO="" DA="" />
<Value name="2~50次谐波无功功率序列最小值值" desc="谐波无功功率(2-50)最小值" type="6" DO="" DA="" />
<Value name="2~50次谐波视在功率序列95值值" desc="谐波视在功率(2-50)95值" type="6" DO="" DA="" />
<Value name="2~50次谐波视在功率序列平均值值" desc="谐波视在功率(2-50)平均值" type="6" DO="" DA="" />
<Value name="2~50次谐波视在功率序列最大值值" desc="谐波视在功率(2-50)最大值" type="6" DO="" DA="" />
<Value name="2~50次谐波视在功率序列最小值值" desc="谐波视在功率(2-50)最小值" type="6" DO="" DA="" />
<Value name="有功功率95值值" desc="有功功率95值" type="6" DO="MMXU5$MX$W" DA="phs*$cVal$mag$f" />
<Value name="有功功率平均值值" desc="有功功率平均值" type="6" DO="MMXU2$MX$W" DA="phs*$cVal$mag$f" />
<Value name="有功功率最大值值" desc="有功功率最大值" type="6" DO="MMXU3$MX$W" DA="phs*$cVal$mag$f" />
<Value name="有功功率最小值值" desc="有功功率最小值" type="6" DO="MMXU4$MX$W" DA="phs*$cVal$mag$f" />
<Value name="三相功率因数95值值" desc="总功率因数95值" type="6" DO="MMXU2$MX$TotPF" DA="mag$f" />
<Value name="三相功率因数平均值值" desc="总功率因数平均值" type="6" DO="MMXU2$MX$TotPF" DA="mag$f" />
<Value name="三相功率因数最大值值" desc="总功率因数最大值" type="6" DO="MMXU3$MX$TotPF" DA="mag$f" />
<Value name="三相功率因数最小值值" desc="总功率因数最小值" type="6" DO="MMXU4$MX$TotPF" DA="mag$f" />
<Value name="三相位移功率因数95值值" desc="总位移功率因数95值" type="6" DO="MHAI2$MX$HTotPF" DA="har[1]$mag$f" />
<Value name="三相位移功率因数平均值值" desc="总位移功率因数平均值" type="6" DO="MHAI2$MX$HTotPF" DA="har[1]$mag$f" />
<Value name="三相位移功率因数最大值值" desc="总位移功率因数最大值" type="6" DO="MHAI3$MX$HTotPF" DA="har[1]$mag$f" />
<Value name="三相位移功率因数最小值值" desc="总位移功率因数最小值" type="6" DO="MHAI4$MX$HTotPF" DA="har[1]$mag$f" />
<Value name="三相总视在功率95值值" desc="总视在功率95值" type="6" DO="MMXU2$MX$TotVA" DA="mag$f" />
<Value name="三相总视在功率平均值值" desc="总视在功率平均值" type="6" DO="MMXU2$MX$TotVA" DA="mag$f" />
<Value name="三相总视在功率最大值值" desc="总视在功率最大值" type="6" DO="MMXU3$MX$TotVA" DA="mag$f" />
<Value name="三相总视在功率最小值值" desc="总视在功率最小值" type="6" DO="MMXU4$MX$TotVA" DA="mag$f" />
<Value name="三相总无功功率95值值" desc="总无功功率95值" type="6" DO="MMXU2$MX$TotVAr" DA="mag$f" />
<Value name="三相总无功功率平均值值" desc="总无功功率平均值" type="6" DO="MMXU2$MX$TotVAr" DA="mag$f" />
<Value name="三相总无功功率最大值值" desc="总无功功率最大值" type="6" DO="MMXU3$MX$TotVAr" DA="mag$f" />
<Value name="三相总无功功率最小值值" desc="总无功功率最小值" type="6" DO="MMXU4$MX$TotVAr" DA="mag$f" />
<Value name="三相总有功功率95值值" desc="总有功功率95值" type="6" DO="MMXU2$MX$TotW" DA="mag$f" />
<Value name="三相总有功功率平均值值" desc="总有功功率平均值" type="6" DO="MMXU2$MX$TotW" DA="mag$f" />
<Value name="三相总有功功率最大值值" desc="总有功功率最大值" type="6" DO="MMXU3$MX$TotW" DA="mag$f" />
<Value name="三相总有功功率最小值值" desc="总有功功率最小值" type="6" DO="MMXU4$MX$TotW" DA="mag$f" />
<Value name="相电压总有效值实时数据值" desc="实时电压有效值" type="6" DO="MMXU$MX$PhV" DA="phs*$cVal$mag$f" Coefficient="1" />
<Value name="相电压偏差实时数据值" desc="实时电压偏差" type="6" DO="MMXU$MX$VolDev" DA="phs*$cVal$mag$f" Coefficient="1" />
<Value name="相电压谐波总畸变率实时数据值" desc="实时电压总谐波畸变率" type="6" DO="MHAI$MX$ThdPhV" DA="phs*$cVal$mag$f" Coefficient="1" />
<Value name="相电压基波有效值实时数据角度" desc="实时基波电压相角" type="6" DO="MHAI$MX$FundPhVAng" DA="phs*$cVal$ang$f" Coefficient="1" />
<Value name="线电压总有效值实时数据值" desc="实时线电压有效值" type="6" DO="MMXU$MX$LnPhV" DA="phs*$cVal$mag$f" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" />
<Value name="相电压基波有效值实时数据值" desc="实时基波电压有效值" type="6" DO="MHAI$MX$FundPhV" DA="phs*$cVal$mag$f" Coefficient="1" />
<Value name="相电压谐波含有率序列实时数据值" desc="实时2-50次谐波电压含有率" type="6" DO="MHAI$MX$HPhV" DA="phs*Har[%-2]$mag$f" Coefficient="1" Offset="0" />
<Value name="间谐波电压有效值序列间谐波实时数据值" desc="实时1-50次间谐波电压含有率" type="6" DO="MHAI$MX$HPhV" DA="phs*Har[%-0]$mag$f" Coefficient="1" Offset="0" />
<Value name="谐波电压有效值序列实时数据角度" desc="实时谐波电压相角(2-50)" type="6" DO="MHAI$MX$HPhV" DA="phs*Har[%-2]$ang$f" />
<Value name="相电压谐波含有率序列实时数据角度" desc="实时谐波电压相角(2-50)" type="6" DO="MHAI$MX$HPhV" DA="phs*Har[%-2]$ang$f" />
<Value name="线电压偏差实时数据值" desc="实时线电压偏差" type="6" DO="MMXU$MX$LnVolDev" DA="phs*$cVal$mag$f" Coefficient="1"/>
<Value name="线电压总有效值实时数据值" desc="实时线电压有效值" type="6" DO="MMXU$MX$LnPhV" DA="phs*$cVal$mag$f" BaseFlag="1" LimitUp="0*%U" LimitDown="150*%U" Coefficient="1" />
<Value name="线电压谐波总畸变率实时数据值" desc="实时线电压总谐波畸变率" type="6" DO="MHAI$MX$ThdLnPhV" DA="phs*$cVal$mag$f" Coefficient="1"/>
<Value name="相电压基波有效值实时数据角度" desc="实时基波线电压相角" type="6" DO="MHAI$MX$FundLnPhVAng" DA="phs*$cVal$ang$f" Coefficient="1" />
<Value name="线电压基波有效值实时数据值" desc="实时基波线电压有效值" type="6" DO="MHAI$MX$FundLnPhV" DA="phs*$cVal$mag$f" Coefficient="1"/>
<Value name="线电压间谐波含有率序列间谐波实时数据值" desc="实时间谐波线电压含有率(f25-2475)" type="6" DO="MHAI$MX$HLnPhV" DA="phs*Har[%-0]$mag$f" Coefficient="1" Offset="0" />
<Value name="线电压谐波含有率序列实时数据值" desc="实时谐波线电压含有率(2-50)" type="6" DO="MHAI$MX$HLnPhV" DA="phs*Har[%-2]$mag$f" Coefficient="1" Offset="0" />
<Value name="线电压谐波含有率序列实时数据角度" desc="实时谐波线电压相角(2-50)" type="6" DO="MHAI$MX$HLnPhV" DA="phs*Har[%-2]$ang$f" />
<Value name="正序负序和零序电压实时数据负序值" desc="实时负序电压" type="6" DO="MSQI$MX$SeqV" DA="c2$cVal$mag$f" Coefficient="1" />
<Value name="电压负序不平衡度实时数据值" desc="实时负序电压不平衡" type="6" DO="MSQI$MX$ImbNgV" DA="mag$f" Coefficient="1" />
<Value name="正序负序和零序电压实时数据零序值" desc="实时零序电压" type="6" DO="MSQI$MX$SeqV" DA="c3$cVal$mag$f" Coefficient="1" />
<Value name="电压零序不平衡度实时数据值" desc="实时零序电压不平衡" type="6" DO="MSQI$MX$ImbZroV" DA="mag$f" Coefficient="1" />
<Value name="频率实时数据值" desc="实时频率" type="6" DO="MMXU$MX$Hz" DA="mag$f" Coefficient="1" />
<Value name="频率偏差实时数据值" desc="实时频率偏差" type="6" DO="MMXU$MX$FreqDev" DA="mag$f" Coefficient="1" />
<Value name="正序负序和零序电压实时数据正序值" desc="实时正序电压" type="6" DO="MSQI$MX$SeqV" DA="c1$cVal$mag$f" Coefficient="1" />
<Value name="电流总有效值实时数据值" desc="实时电流有效值" type="6" DO="MMXU$MX$A" DA="phs*$cVal$mag$f" Coefficient="1" />
<Value name="电流基波有效值实时数据值" desc="实时基波电流有效值" type="6" DO="MHAI$MX$HA" DA="phs*Har[1]$mag$f" Coefficient="1" />
<Value name="电流总谐波畸变率实时数据值" desc="实时电流总谐波畸变率" type="6" DO="MHAI$MX$ThdPhA" DA="phs*$cVal$mag$f" Coefficient="1" />
<Value name="电流基波有效值实时数据角度" desc="实时基波电流相角" type="6" DO="MHAI$MX$FundPhAAng" DA="phs*$cVal$ang$f" Coefficient="1" />
<Value name="谐波电流有效值序列实时数据值" desc="实时2-50次谐波电流幅值" type="6" DO="MHAI$MX$HA" DA="phs*Har[%-0]$mag$f" Coefficient="1" Offset="0" />
<Value name="间谐波电流有效值序列间谐波实时数据值" desc="实时1-50次间谐波电流含有率" type="6" DO="MHAI$MX$HA" DA="phs*Har[%-0]$mag$f" Coefficient="1" Offset="0" />
<Value name="正序负序和零序电流实时数据负序值" desc="实时负序电流" type="6" DO="MSQI$MX$SeqA" DA="c2$cVal$mag$f" Coefficient="1" />
<Value name="电流负序不平衡度实时数据值" desc="实时负序电流不平衡" type="6" DO="MSQI$MX$ImbNgA" DA="mag$f" Coefficient="1" />
<Value name="正序负序和零序电流实时数据零序值" desc="实时零序电流" type="6" DO="MSQI$MX$SeqA" DA="c3$cVal$mag$f" Coefficient="1" />
<Value name="电流零序不平衡度实时数据值" desc="实时零序电流不平衡" type="6" DO="MSQI$MX$ImbZroA" DA="mag$f" Coefficient="1" />
<Value name="正序负序和零序电流实时数据正序值" desc="实时正序电流" type="6" DO="MSQI$MX$SeqA" DA="c1$cVal$mag$f" Coefficient="1" />
<Value name="功率因数实时数据值" desc="实时功率因数" type="6" DO="MMXU$MX$PF" DA="phs*$cVal$mag$f" Coefficient="1" />
<Value name="位移功率因数实时数据值" desc="实时基波功率因数" type="6" DO="MHAI$MX$HSigPF" DA="phs*Har[1]$mag$f" Coefficient="1" />
<Value name="基波有功功率实时数据值" desc="实时基波有功功率" type="6" DO="MHAI$MX$HW" DA="phs*Har[1]$mag$f" Coefficient="1" />
<Value name="视在功率实时数据值" desc="实时视在功率" type="6" DO="MMXU$MX$VA" DA="phs*$cVal$mag$f" Coefficient="1" />
<Value name="无功功率实时数据值" desc="实时无功功率" type="6" DO="MMXU$MX$VAr" DA="phs*$cVal$mag$f" Coefficient="1" />
<Value name="有功功率实时数据值" desc="实时有功功率" type="6" DO="MMXU$MX$W" DA="phs*$cVal$mag$f" Coefficient="1" />
<Value name="三相功率因数实时数据值" desc="实时总功率因数" type="6" DO="MMXU$MX$TotPF" DA="mag$f" Coefficient="1" />
<Value name="三相位移功率因数实时数据值" desc="实时总基波功率因数" type="6" DO="MHAI$MX$HTotPF" DA="har[1]$mag$f" Coefficient="1" />
<Value name="三相总视在功率实时数据值" desc="实时总视在功率" type="6" DO="MMXU$MX$TotVA" DA="mag$f" Coefficient="1" />
<Value name="三相总无功功率实时数据值" desc="实时总无功功率" type="6" DO="MMXU$MX$TotVAr" DA="mag$f" Coefficient="1" />
<Value name="三相总有功功率实时数据值" desc="实时总有功功率" type="6" DO="MMXU$MX$TotW" DA="mag$f" Coefficient="1" />
<Value name="相电压短时闪变值波动闪变值值" desc="实时短时闪变" type="6" DO="MFLK$MX$PhPst" DA="phs*$cVal$mag$f" Coefficient="1" PltFlag="False" />
<Value name="线电压短时闪变值波动闪变值值" desc="实时线电压短时闪变" type="6" DO="MFLK$MX$LnPhPst" DA="phs*$cVal$mag$f" Coefficient="1" PltFlag="False" />
<Value name="相电压长时闪变值波动闪变值值" desc="实时长时闪变" type="6" DO="MFLK$MX$PhPlt" DA="phs*$cVal$mag$f" Coefficient="1" PltFlag="True" />
<Value name="线电压长时闪变值波动闪变值值" desc="实时线电压长时闪变" type="6" DO="MFLK$MX$LnPhPlt" DA="phs*$cVal$mag$f" Coefficient="1" PltFlag="True" />
<Value name="电压扰动事件特征幅值电压变动a值" desc="实时残余电压" type="6" DO="QVVR$MX$VVa" DA="mag$f" Coefficient="1" />
<Value name="电压扰动事件持续时间电压变动a值" desc="实时持续时间" type="6" DO="QVVR$MX$VVaTm" DA="mag$f" Coefficient="1" />

View File

@@ -0,0 +1,261 @@
package com.njcn.gather.icd.mapping.debug;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.njcn.gather.icd.mapping.component.IcdToXmlResponseConverter;
import com.njcn.gather.icd.mapping.pojo.bo.IcdToXmlGenerateResult;
import com.njcn.gather.icd.mapping.pojo.enums.GenerateStatus;
import com.njcn.gather.icd.mapping.service.impl.IcdToXmlTaskAppService;
import org.springframework.boot.Banner;
import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.ConfigurableApplicationContext;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
/**
* JSON 转 XML 本地调试入口。
*
* 使用方式:
* 1. 先通过 GetIcdMmsJsonDebugRunner 获取 mappingJson或使用已有的 JSON 文件。
* 2. 修改 MMS_JSON_FILE_PATH 指向包含 mappingJson 的文件路径。
* 3. 直接运行 main查看生成的 XML 内容。
* 4. 可选:设置 SAVE_XML_TO_DISK = true 将 XML 保存到磁盘。
*/
public class JsonToXmlDebugRunner {
/**
* 包含 mappingJson 的文件路径。
* 文件格式:纯文本,内容为 getIcdMmsJson 接口返回的 mappingJson 字段值。
* 或者完整的 MappingTaskResponse JSON会自动提取 mappingJson 字段)。
*/
private static final String MMS_JSON_FILE_PATH = "D:/temp/mms-output/mapping.json";
/** 是否输出格式化 XML便于人工查看。 */
private static final boolean PRETTY_XML = true;
/** 是否把生成的 XML 写入磁盘。 */
private static final boolean SAVE_XML_TO_DISK = true;
/** saveXmlToDisk=true 时使用的输出文件路径。 */
private static final String OUTPUT_XML_PATH = "D:/temp/mms-output/generated-config.xml";
/** 是否打印详细的转换过程日志。 */
private static final boolean VERBOSE_LOG = true;
public static void main(String[] args) {
try (ConfigurableApplicationContext context = new SpringApplicationBuilder(DebugApplication.class)
.web(WebApplicationType.NONE)
.bannerMode(Banner.Mode.OFF)
.logStartupInfo(false)
.run(args)) {
IcdToXmlTaskAppService icdToXmlTaskAppService = context.getBean(IcdToXmlTaskAppService.class);
IcdToXmlResponseConverter responseConverter = context.getBean(IcdToXmlResponseConverter.class);
ObjectMapper objectMapper = createObjectMapper();
if (VERBOSE_LOG) {
System.out.println("========== JSON 转 XML 调试开始 ==========");
System.out.println("输入文件: " + MMS_JSON_FILE_PATH);
System.out.println("输出文件: " + (SAVE_XML_TO_DISK ? OUTPUT_XML_PATH : "(不保存)"));
System.out.println();
}
// 读取 JSON 文件
String jsonContent = readJsonFile();
if (VERBOSE_LOG) {
System.out.println("✓ JSON 文件读取成功,长度: " + jsonContent.length() + " 字符");
}
// 提取 mappingJson可能是完整响应或纯 mappingJson
String mappingJson = extractMappingJson(jsonContent, objectMapper);
if (VERBOSE_LOG) {
System.out.println("✓ MappingJSON 提取成功,长度: " + mappingJson.length() + " 字符");
System.out.println();
}
// 调用服务生成 XML
if (VERBOSE_LOG) {
System.out.println("正在转换 JSON 为 XML...");
}
IcdToXmlGenerateResult result = icdToXmlTaskAppService.generateXmlFromJson(mappingJson);
// 输出结果
printResult(result, objectMapper);
// 保存 XML 到磁盘
if (SAVE_XML_TO_DISK && result.getStatus() == GenerateStatus.SUCCESS) {
saveXmlToDisk(result.getXmlContent());
}
if (VERBOSE_LOG) {
System.out.println();
System.out.println("========== JSON 转 XML 调试结束 ==========");
}
} catch (Exception ex) {
throw new IllegalStateException("JSON 转 XML 调试失败:" + ex.getMessage(), ex);
}
}
/**
* 读取 JSON 文件内容。
*/
private static String readJsonFile() {
Path jsonPath = Paths.get(MMS_JSON_FILE_PATH);
if (!Files.exists(jsonPath)) {
throw new IllegalArgumentException("JSON 文件不存在:" + jsonPath.toAbsolutePath());
}
try {
byte[] bytes = Files.readAllBytes(jsonPath);
return new String(bytes, StandardCharsets.UTF_8);
} catch (Exception ex) {
throw new IllegalArgumentException("读取 JSON 文件失败:" + ex.getMessage(), ex);
}
}
/**
* 从 JSON 内容中提取 mappingJson。
* 支持两种格式:
* 1. 完整的 MappingTaskResponse JSON包含 mappingJson 字段)
* 2. 纯 mappingJson 字符串
*/
private static String extractMappingJson(String jsonContent, ObjectMapper objectMapper) {
try {
// 尝试解析为对象,看是否包含 mappingJson 字段
if (jsonContent.trim().startsWith("{")) {
java.util.Map<String, Object> jsonMap = objectMapper.readValue(
jsonContent,
java.util.Map.class
);
if (jsonMap.containsKey("mappingJson")) {
Object mappingJsonObj = jsonMap.get("mappingJson");
if (mappingJsonObj != null) {
return mappingJsonObj.toString();
}
}
}
// 如果不是对象或不包含 mappingJson则假设整个内容就是 mappingJson
return jsonContent;
} catch (Exception ex) {
// 如果解析失败,也假设整个内容就是 mappingJson
return jsonContent;
}
}
/**
* 打印转换结果。
*/
private static void printResult(IcdToXmlGenerateResult result, ObjectMapper objectMapper) {
System.out.println();
System.out.println("===== 转换结果 =====");
System.out.println("状态: " + result.getStatus());
System.out.println("消息: " + result.getMessage());
if (result.getProblems() != null && !result.getProblems().isEmpty()) {
System.out.println("问题列表:");
for (String problem : result.getProblems()) {
System.out.println(" - " + problem);
}
}
// if (result.getStatus() == GenerateStatus.SUCCESS) {
// System.out.println();
// System.out.println("----- 生成的 XML 内容 -----");
// String xmlContent = result.getMappingXml();
//
// if (PRETTY_XML) {
// // 简单格式化:每个标签独占一行
// xmlContent = formatXml(xmlContent);
// }
//
// System.out.println(xmlContent);
// System.out.println("--------------------------");
// System.out.println();
// System.out.println("XML 长度: " + result.getMappingXml().length() + " 字符");
// }
}
/**
* 简单的 XML 格式化。
*/
private static String formatXml(String xml) {
if (xml == null || xml.isEmpty()) {
return xml;
}
// 在标签前后添加换行
String formatted = xml.replaceAll(">", ">\n")
.replaceAll("<", "\n<")
.replaceAll("\n\n", "\n");
// 简单的缩进处理
StringBuilder result = new StringBuilder();
int indentLevel = 0;
String[] lines = formatted.split("\n");
for (String line : lines) {
line = line.trim();
if (line.isEmpty()) {
continue;
}
// 如果是闭合标签,减少缩进
if (line.startsWith("</") && !line.endsWith("/>")) {
indentLevel = Math.max(0, indentLevel - 1);
}
// 添加缩进
for (int i = 0; i < indentLevel; i++) {
result.append(" ");
}
result.append(line).append("\n");
// 如果是开始标签且不是自闭合,增加缩进
if (line.startsWith("<") && !line.startsWith("</")
&& !line.endsWith("/>") && !line.endsWith(">")) {
indentLevel++;
}
}
return result.toString();
}
/**
* 保存 XML 到磁盘。
*/
private static void saveXmlToDisk(String xmlContent) {
try {
Path outputPath = Paths.get(OUTPUT_XML_PATH);
// 创建父目录
if (outputPath.getParent() != null && !Files.exists(outputPath.getParent())) {
Files.createDirectories(outputPath.getParent());
}
Files.write(outputPath, xmlContent.getBytes(StandardCharsets.UTF_8));
System.out.println("✓ XML 已保存到: " + outputPath.toAbsolutePath());
System.out.println(" 文件大小: " + Files.size(outputPath) + " 字节");
} catch (Exception ex) {
throw new IllegalStateException("保存 XML 文件失败:" + ex.getMessage(), ex);
}
}
private static ObjectMapper createObjectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
return objectMapper;
}
@SpringBootApplication(scanBasePackages = "com.njcn.gather.icd.mapping")
public static class DebugApplication {
}
}