- Java Tools: Add support to handle Services.ReportSettings@owner attribute

pull/265/head
Michael Zillgith 5 years ago
parent bafe27a0e8
commit bef1ad21b4

@ -42,7 +42,7 @@
<ReadWrite /> <ReadWrite />
<GetCBValues /> <GetCBValues />
<ConfLNs fixPrefix="true" fixLnInst="true" /> <ConfLNs fixPrefix="true" fixLnInst="true" />
<ReportSettings cbName="Conf" datSet="Dyn" rptID="Dyn" optFields="Dyn" bufTime="Dyn" trgOps="Dyn" intgPd="Dyn" /> <ReportSettings cbName="Conf" datSet="Dyn" rptID="Dyn" optFields="Dyn" bufTime="Dyn" trgOps="Dyn" intgPd="Dyn" owner="true" />
<GOOSE max="5" /> <GOOSE max="5" />
<GSSE max="5" /> <GSSE max="5" />
<FileHandling /> <FileHandling />

@ -20,7 +20,7 @@ extern DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda3;
DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda0 = { DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda0 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$ST$SPCSO1$stVal", "GGIO1$ST$SPCSO1$stVal",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -30,7 +30,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda0 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda1 = { DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda1 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$ST$SPCSO2$stVal", "GGIO1$ST$SPCSO2$stVal",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -40,7 +40,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda1 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda2 = { DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda2 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$ST$SPCSO3$stVal", "GGIO1$ST$SPCSO3$stVal",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -50,7 +50,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda2 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda3 = { DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda3 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$ST$SPCSO4$stVal", "GGIO1$ST$SPCSO4$stVal",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -73,7 +73,7 @@ extern DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda3;
DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda0 = { DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda0 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$ST$SPCSO1", "GGIO1$ST$SPCSO1",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -83,7 +83,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda0 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda1 = { DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda1 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$ST$SPCSO2", "GGIO1$ST$SPCSO2",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -93,7 +93,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda1 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda2 = { DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda2 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$ST$SPCSO3", "GGIO1$ST$SPCSO3",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -103,7 +103,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda2 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda3 = { DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda3 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$ST$SPCSO4", "GGIO1$ST$SPCSO4",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -130,7 +130,7 @@ extern DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda7;
DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda0 = { DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda0 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$MX$AnIn1$mag$f", "GGIO1$MX$AnIn1$mag$f",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -140,7 +140,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda0 = {
DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda1 = { DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda1 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$MX$AnIn1$q", "GGIO1$MX$AnIn1$q",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -150,7 +150,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda1 = {
DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda2 = { DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda2 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$MX$AnIn2$mag$f", "GGIO1$MX$AnIn2$mag$f",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -160,7 +160,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda2 = {
DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda3 = { DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda3 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$MX$AnIn2$q", "GGIO1$MX$AnIn2$q",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -170,7 +170,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda3 = {
DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda4 = { DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda4 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$MX$AnIn3$mag$f", "GGIO1$MX$AnIn3$mag$f",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -180,7 +180,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda4 = {
DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda5 = { DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda5 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$MX$AnIn3$q", "GGIO1$MX$AnIn3$q",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -190,7 +190,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda5 = {
DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda6 = { DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda6 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$MX$AnIn4$mag$f", "GGIO1$MX$AnIn4$mag$f",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -200,7 +200,7 @@ DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda6 = {
DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda7 = { DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda7 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$MX$AnIn4$q", "GGIO1$MX$AnIn4$q",
-1, -1,
NULL, NULL,
NULL, NULL,
@ -2012,16 +2012,16 @@ extern ReportControlBlock iedModel_GenericIO_LLN0_report7;
extern ReportControlBlock iedModel_GenericIO_LLN0_report8; extern ReportControlBlock iedModel_GenericIO_LLN0_report8;
extern ReportControlBlock iedModel_GenericIO_LLN0_report9; extern ReportControlBlock iedModel_GenericIO_LLN0_report9;
ReportControlBlock iedModel_GenericIO_LLN0_report0 = {&iedModel_GenericIO_LLN0, "EventsRCB01", "Events1", false, "Events", 1, 24, 175, 50, 1000, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, &iedModel_GenericIO_LLN0_report1}; ReportControlBlock iedModel_GenericIO_LLN0_report0 = {&iedModel_GenericIO_LLN0, "EventsRCB01", "Events1", false, "Events", 1, 88, 175, 50, 1000, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, &iedModel_GenericIO_LLN0_report1};
ReportControlBlock iedModel_GenericIO_LLN0_report1 = {&iedModel_GenericIO_LLN0, "EventsRCBPreConf01", "Events1", false, "Events", 1, 24, 175, 50, 1000, {0x4, 0xc0, 0xa8, 0x2, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, &iedModel_GenericIO_LLN0_report2}; ReportControlBlock iedModel_GenericIO_LLN0_report1 = {&iedModel_GenericIO_LLN0, "EventsRCBPreConf01", "Events1", false, "Events", 1, 88, 175, 50, 1000, {0x4, 0xc0, 0xa8, 0x2, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, &iedModel_GenericIO_LLN0_report2};
ReportControlBlock iedModel_GenericIO_LLN0_report2 = {&iedModel_GenericIO_LLN0, "EventsBRCB01", "Events2", true, "Events", 1, 24, 175, 50, 1000, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, &iedModel_GenericIO_LLN0_report3}; ReportControlBlock iedModel_GenericIO_LLN0_report2 = {&iedModel_GenericIO_LLN0, "EventsBRCB01", "Events2", true, "Events", 1, 88, 175, 50, 1000, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, &iedModel_GenericIO_LLN0_report3};
ReportControlBlock iedModel_GenericIO_LLN0_report3 = {&iedModel_GenericIO_LLN0, "EventsBRCBPreConf01", "Events2", true, "Events", 1, 24, 175, 50, 1000, {0x4, 0xc0, 0xa8, 0x2, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, &iedModel_GenericIO_LLN0_report4}; ReportControlBlock iedModel_GenericIO_LLN0_report3 = {&iedModel_GenericIO_LLN0, "EventsBRCBPreConf01", "Events2", true, "Events", 1, 88, 175, 50, 1000, {0x4, 0xc0, 0xa8, 0x2, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, &iedModel_GenericIO_LLN0_report4};
ReportControlBlock iedModel_GenericIO_LLN0_report4 = {&iedModel_GenericIO_LLN0, "EventsIndexed01", "Events2", false, "Events", 1, 24, 175, 50, 1000, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, &iedModel_GenericIO_LLN0_report5}; ReportControlBlock iedModel_GenericIO_LLN0_report4 = {&iedModel_GenericIO_LLN0, "EventsIndexed01", "Events2", false, "Events", 1, 88, 175, 50, 1000, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, &iedModel_GenericIO_LLN0_report5};
ReportControlBlock iedModel_GenericIO_LLN0_report5 = {&iedModel_GenericIO_LLN0, "EventsIndexed02", "Events2", false, "Events", 1, 24, 175, 50, 1000, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, &iedModel_GenericIO_LLN0_report6}; ReportControlBlock iedModel_GenericIO_LLN0_report5 = {&iedModel_GenericIO_LLN0, "EventsIndexed02", "Events2", false, "Events", 1, 88, 175, 50, 1000, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, &iedModel_GenericIO_LLN0_report6};
ReportControlBlock iedModel_GenericIO_LLN0_report6 = {&iedModel_GenericIO_LLN0, "EventsIndexed03", "Events2", false, "Events", 1, 24, 175, 50, 1000, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, &iedModel_GenericIO_LLN0_report7}; ReportControlBlock iedModel_GenericIO_LLN0_report6 = {&iedModel_GenericIO_LLN0, "EventsIndexed03", "Events2", false, "Events", 1, 88, 175, 50, 1000, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, &iedModel_GenericIO_LLN0_report7};
ReportControlBlock iedModel_GenericIO_LLN0_report7 = {&iedModel_GenericIO_LLN0, "Measurements01", "Measurements", true, "Measurements", 1, 16, 239, 50, 1000, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, &iedModel_GenericIO_LLN0_report8}; ReportControlBlock iedModel_GenericIO_LLN0_report7 = {&iedModel_GenericIO_LLN0, "Measurements01", "Measurements", true, "Measurements", 1, 80, 239, 50, 1000, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, &iedModel_GenericIO_LLN0_report8};
ReportControlBlock iedModel_GenericIO_LLN0_report8 = {&iedModel_GenericIO_LLN0, "Measurements02", "Measurements", true, "Measurements", 1, 16, 239, 50, 1000, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, &iedModel_GenericIO_LLN0_report9}; ReportControlBlock iedModel_GenericIO_LLN0_report8 = {&iedModel_GenericIO_LLN0, "Measurements02", "Measurements", true, "Measurements", 1, 80, 239, 50, 1000, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, &iedModel_GenericIO_LLN0_report9};
ReportControlBlock iedModel_GenericIO_LLN0_report9 = {&iedModel_GenericIO_LLN0, "Measurements03", "Measurements", true, "Measurements", 1, 16, 239, 50, 1000, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, NULL}; ReportControlBlock iedModel_GenericIO_LLN0_report9 = {&iedModel_GenericIO_LLN0, "Measurements03", "Measurements", true, "Measurements", 1, 80, 239, 50, 1000, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, NULL};

@ -34,11 +34,14 @@ public class IED {
private String name; private String name;
private List<AccessPoint> accessPoints; private List<AccessPoint> accessPoints;
private TypeDeclarations typeDeclarations; private TypeDeclarations typeDeclarations;
private Node self;
public IED(Node iedNode, TypeDeclarations typeDeclarations) public IED(Node iedNode, TypeDeclarations typeDeclarations)
throws SclParserException { throws SclParserException {
this.name = ParserUtils.parseAttribute(iedNode, "name"); this.name = ParserUtils.parseAttribute(iedNode, "name");
self = iedNode;
List<Node> accessPointNodes = ParserUtils.getChildNodesWithTag(iedNode, "AccessPoint"); List<Node> accessPointNodes = ParserUtils.getChildNodesWithTag(iedNode, "AccessPoint");
this.accessPoints = new LinkedList<AccessPoint>(); this.accessPoints = new LinkedList<AccessPoint>();
@ -76,4 +79,13 @@ public class IED {
return accessPoints.get(0); return accessPoints.get(0);
} }
public Services getServices() {
Node servicesNode = ParserUtils.getChildNodeWithTag(self, "Services");
if (servicesNode != null) {
return new Services(servicesNode);
}
else
return null;
}
} }

@ -0,0 +1,51 @@
package com.libiec61850.scl.model;
/*
* Copyright 2013-2020 Michael Zillgith
*
* This file is part of libIEC61850.
*
* libIEC61850 is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* libIEC61850 is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with libIEC61850. If not, see <http://www.gnu.org/licenses/>.
*
* See COPYING file for the complete license text.
*/
import org.w3c.dom.Node;
import com.libiec61850.scl.ParserUtils;
import com.libiec61850.scl.SclParserException;
public class ReportSettings {
private Node self;
public ReportSettings(Node reportSettingsNode)
{
self = reportSettingsNode;
}
public boolean hasOwner()
{
try {
Boolean ownerValue = ParserUtils.parseBooleanAttribute(self, "owner");
if (ownerValue != null)
return ownerValue.booleanValue();
else
return false;
} catch (SclParserException e) {
return false;
}
}
}

@ -0,0 +1,44 @@
package com.libiec61850.scl.model;
/*
* Copyright 2013-2020 Michael Zillgith
*
* This file is part of libIEC61850.
*
* libIEC61850 is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* libIEC61850 is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with libIEC61850. If not, see <http://www.gnu.org/licenses/>.
*
* See COPYING file for the complete license text.
*/
import org.w3c.dom.Node;
import com.libiec61850.scl.ParserUtils;
public class Services {
private Node self;
public Services(Node servicesNode) {
self = servicesNode;
}
public ReportSettings getReportSettings()
{
Node reportSettingsNode = ParserUtils.getChildNodeWithTag(self, "ReportSettings");
if (reportSettingsNode != null)
return new ReportSettings(reportSettingsNode);
return null;
}
}

@ -50,12 +50,15 @@ import com.libiec61850.scl.model.LogControl;
import com.libiec61850.scl.model.LogicalDevice; import com.libiec61850.scl.model.LogicalDevice;
import com.libiec61850.scl.model.LogicalNode; import com.libiec61850.scl.model.LogicalNode;
import com.libiec61850.scl.model.ReportControlBlock; import com.libiec61850.scl.model.ReportControlBlock;
import com.libiec61850.scl.model.ReportSettings;
import com.libiec61850.scl.model.Services;
import com.libiec61850.scl.model.SettingControl; import com.libiec61850.scl.model.SettingControl;
public class DynamicModelGenerator { public class DynamicModelGenerator {
private ConnectedAP connectedAP; private ConnectedAP connectedAP;
private IED ied = null; private IED ied = null;
private boolean hasOwner = false;
public DynamicModelGenerator(InputStream stream, String icdFile, PrintStream output, String iedName, String accessPointName) public DynamicModelGenerator(InputStream stream, String icdFile, PrintStream output, String iedName, String accessPointName)
throws SclParserException { throws SclParserException {
@ -69,7 +72,17 @@ public class DynamicModelGenerator {
if (ied == null) if (ied == null)
throw new SclParserException("No data model present in SCL file! Exit."); throw new SclParserException("No data model present in SCL file! Exit.");
Services services = ied.getServices();
if (services != null) {
ReportSettings rptSettings = services.getReportSettings();
if (rptSettings != null) {
hasOwner = rptSettings.hasOwner();
}
}
AccessPoint accessPoint = null; AccessPoint accessPoint = null;
if (accessPointName != null) if (accessPointName != null)
@ -257,7 +270,13 @@ public class DynamicModelGenerator {
output.print("- "); output.print("- ");
output.print(rcb.getConfRef() + " "); output.print(rcb.getConfRef() + " ");
output.print(rcb.getTriggerOptions().getIntValue() + " ");
int triggerOptions = rcb.getTriggerOptions().getIntValue();
if (hasOwner)
triggerOptions += 64;
output.print(triggerOptions + " ");
output.print(rcb.getOptionFields().getIntValue() + " "); output.print(rcb.getOptionFields().getIntValue() + " ");

@ -60,9 +60,11 @@ import com.libiec61850.scl.model.LogControl;
import com.libiec61850.scl.model.LogicalDevice; import com.libiec61850.scl.model.LogicalDevice;
import com.libiec61850.scl.model.LogicalNode; import com.libiec61850.scl.model.LogicalNode;
import com.libiec61850.scl.model.ReportControlBlock; import com.libiec61850.scl.model.ReportControlBlock;
import com.libiec61850.scl.model.ReportSettings;
import com.libiec61850.scl.model.RptEnabled; import com.libiec61850.scl.model.RptEnabled;
import com.libiec61850.scl.model.SampledValueControl; import com.libiec61850.scl.model.SampledValueControl;
import com.libiec61850.scl.model.Server; import com.libiec61850.scl.model.Server;
import com.libiec61850.scl.model.Services;
import com.libiec61850.scl.model.SettingControl; import com.libiec61850.scl.model.SettingControl;
import com.libiec61850.scl.model.TriggerOptions; import com.libiec61850.scl.model.TriggerOptions;
@ -113,6 +115,8 @@ public class StaticModelGenerator {
private boolean initializeOnce; private boolean initializeOnce;
private SclParser sclParser; private SclParser sclParser;
private boolean hasOwner = false;
public StaticModelGenerator(InputStream stream, String icdFile, PrintStream cOut, PrintStream hOut, public StaticModelGenerator(InputStream stream, String icdFile, PrintStream cOut, PrintStream hOut,
String outputFileName, String iedName, String accessPointName, String modelPrefix, String outputFileName, String iedName, String accessPointName, String modelPrefix,
@ -162,6 +166,16 @@ public class StaticModelGenerator {
if (ied == null) if (ied == null)
System.out.println("IED model not found in SCL file! Exit."); System.out.println("IED model not found in SCL file! Exit.");
Services services = ied.getServices();
if (services != null) {
ReportSettings rptSettings = services.getReportSettings();
if (rptSettings != null) {
hasOwner = rptSettings.hasOwner();
}
}
accessPoint = null; accessPoint = null;
@ -1422,6 +1436,9 @@ public class StaticModelGenerator {
if (rcb.getTriggerOptions() != null) if (rcb.getTriggerOptions() != null)
triggerOps = rcb.getTriggerOptions().getIntValue(); triggerOps = rcb.getTriggerOptions().getIntValue();
if (hasOwner)
triggerOps += 64;
rcbString += triggerOps + ", "; rcbString += triggerOps + ", ";

Loading…
Cancel
Save