- Config file generator: support multiple access points for GOOSE and SMV control blocks (LIB61850-418)

pull/476/head
Michael Zillgith 2 years ago
parent 27df38d205
commit 1d62270730

@ -291,6 +291,25 @@ public class SclParser
SclParser sclParser = new SclParser(stream);
}
public List<ConnectedAP> getConnectedAPs()
{
List<ConnectedAP> aps = new LinkedList<ConnectedAP>();
if (communication != null) {
List<SubNetwork> subNetworks = communication.getSubNetworks();
for (SubNetwork subNetwork : subNetworks) {
List<ConnectedAP> connectedAPs = subNetwork.getConnectedAPs();
for (ConnectedAP connectedAP : connectedAPs) {
aps.add(connectedAP);
}
}
}
return aps;
}
public ConnectedAP getConnectedAP(IED ied, String accessPointName) {
communication = this.getCommunication();

@ -61,6 +61,7 @@ public class DynamicModelGenerator {
private ConnectedAP connectedAP;
private IED ied = null;
private boolean hasOwner = false;
private List<ConnectedAP> connectedAPs;
public DynamicModelGenerator(InputStream stream, String icdFile, PrintStream output, String iedName, String accessPointName)
throws SclParserException {
@ -96,6 +97,8 @@ public class DynamicModelGenerator {
throw new SclParserException("No valid access point found!");
this.connectedAP = sclParser.getConnectedAP(ied, accessPoint.getName());
this.connectedAPs = sclParser.getConnectedAPs();
List<LogicalDevice> logicalDevices = accessPoint.getServer().getLogicalDevices();
@ -175,6 +178,18 @@ public class DynamicModelGenerator {
if (connectedAP != null) {
smv = connectedAP.lookupSMV(ld.getInst(), svcb.getName());
if (smv == null)
System.out.println("ConnectedAP not found for SMV");
if (smv == null) {
for (ConnectedAP ap : connectedAPs) {
smv = ap.lookupSMV(ld.getInst(), svcb.getName());
if (smv != null)
break;
}
}
if (smv != null)
smvAddress = smv.getAddress();
}

Loading…
Cancel
Save