From 5dd6fbe8bd3fc0c70d8aeb42d8772bc0f6a1da03 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 May 2025 15:41:06 +0200 Subject: [PATCH] added array display in DOs --- .../SCLParser/src/DynamicModelGenerator.cs | 58 ++++++++++++++----- 1 file changed, 43 insertions(+), 15 deletions(-) diff --git a/tools/model_generator_dotnet/SCLParser/src/DynamicModelGenerator.cs b/tools/model_generator_dotnet/SCLParser/src/DynamicModelGenerator.cs index 8c2763b2..18b6e86c 100644 --- a/tools/model_generator_dotnet/SCLParser/src/DynamicModelGenerator.cs +++ b/tools/model_generator_dotnet/SCLParser/src/DynamicModelGenerator.cs @@ -128,13 +128,13 @@ namespace IEC61850.SCL if (gcb.SclGSEControl.AppID != null) output.Write(gcb.SclGSEControl.AppID + " "); else - output.Write("- "); + output.Write("null "); if (gcb.SclGSEControl.DatSet != null) output.Write(gcb.SclGSEControl.DatSet + " "); else - output.Write("- "); + output.Write("null "); if (gcb.SclGSEControl.ConfRev >= 0) output.Write(gcb.SclGSEControl.ConfRev + " "); @@ -153,18 +153,18 @@ namespace IEC61850.SCL if (gse.Mintime != null) output.Write(gse.Mintime); else - output.Write("-1"); + output.Write("0"); output.Write(' '); if (gse.Maxtime != null) output.Write(gse.Maxtime); else - output.Write("-1"); + output.Write("0"); } else { - output.Write("-1 -1"); + output.Write("0 0"); } if (gseAddress == null) @@ -210,12 +210,12 @@ namespace IEC61850.SCL if (smv.SclSMVControl.SmvID != null) output.Write(smv.SclSMVControl.SmvID + " "); else - output.Write("- "); + output.Write("null "); if (smv.SclSMVControl.DataSet != null) output.Write(smv.SclSMVControl.DataSet + " "); else - output.Write("- "); + output.Write("null "); if (smv.SclSMVControl.ConfRev >= 0) output.Write(smv.SclSMVControl.ConfRev + " "); @@ -225,21 +225,25 @@ namespace IEC61850.SCL if (smv.SclSMVControl.SmpMod != null) output.Write(smv.SclSMVControl.SmpMod + " "); else - output.Write("-1 "); + output.Write("0 "); - output.Write(smv.SclSMVControl.SmpRate + " "); + if(smv.SclSMVControl.SmpRate != -1) + output.Write(smv.SclSMVControl.SmpRate + " "); + else + output.Write("0 "); + //output.Write(smv.SclSMVControl.SmpRate + " "); if (smv.SclSMVControl.SclSmvOpts != null) output.Write(smv.SclSMVControl.SclSmvOpts.GetIntValue()); else - output.Write("-1"); + output.Write("0"); output.Write(' '); if (smv.SclSMVControl.Multicast) output.Write('1'); else - output.Write("-1"); + output.Write("0"); output.Write(' '); @@ -369,12 +373,9 @@ namespace IEC61850.SCL output.WriteLine(");"); } - private void ExportDataObject(StreamWriter output, DataObject dataObject, bool isTransient) + private void exportDataObjectChild(StreamWriter output, DataObject dataObject, bool isTransient) { - if (dataObject.IsTransiente) - isTransient = true; - foreach (DataObjectOrAttribute child in dataObject.DataObjectsAndAttributes) { if (child is DataObject) @@ -393,6 +394,33 @@ namespace IEC61850.SCL } } + + } + + private void ExportDataObject(StreamWriter output, DataObject dataObject, bool isTransient) + { + + if (dataObject.IsTransiente) + isTransient = true; + + if (dataObject.Count > 0) + { + /* data object is an array */ + for (int i = 0; i < dataObject.Count; i++) + { + output.WriteLine("[" + i + "]{\n"); + + exportDataObjectChild(output, dataObject, isTransient); + + output.Write("}\n"); + } + } + else + { + exportDataObjectChild(output, dataObject, isTransient); + + } + } //private void printDataAttributeValue(StreamWriter output, DataAttribute dataAttribute, bool isTransient)