- added support for multiple data models in static model generator

pull/6/head
Michael Zillgith 11 years ago
parent 90c9484e8d
commit 5547adf853

@ -3,194 +3,51 @@
* *
* automatically generated from simpleIO_direct_control.icd * automatically generated from simpleIO_direct_control.icd
*/ */
#include <stdlib.h> #include "static_model.h"
#include "iec61850_model.h"
extern IedModel iedModel;
static void initializeValues(); static void initializeValues();
extern LogicalDevice iedModel_GenericIO;
extern LogicalNode iedModel_GenericIO_LLN0; extern DataSet iedModelds_GenericIO_LLN0_Events;
extern DataObject iedModel_GenericIO_LLN0_Mod; extern DataSet iedModelds_GenericIO_LLN0_Events2;
extern DataAttribute iedModel_GenericIO_LLN0_Mod_stVal; extern DataSet iedModelds_GenericIO_LLN0_Measurements;
extern DataAttribute iedModel_GenericIO_LLN0_Mod_q;
extern DataAttribute iedModel_GenericIO_LLN0_Mod_t;
extern DataAttribute iedModel_GenericIO_LLN0_Mod_ctlModel; extern DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda0;
extern DataObject iedModel_GenericIO_LLN0_Beh; extern DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda1;
extern DataAttribute iedModel_GenericIO_LLN0_Beh_stVal; extern DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda2;
extern DataAttribute iedModel_GenericIO_LLN0_Beh_q; extern DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda3;
extern DataAttribute iedModel_GenericIO_LLN0_Beh_t;
extern DataObject iedModel_GenericIO_LLN0_Health; DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda0 = {
extern DataAttribute iedModel_GenericIO_LLN0_Health_stVal;
extern DataAttribute iedModel_GenericIO_LLN0_Health_q;
extern DataAttribute iedModel_GenericIO_LLN0_Health_t;
extern DataObject iedModel_GenericIO_LLN0_NamPlt;
extern DataAttribute iedModel_GenericIO_LLN0_NamPlt_vendor;
extern DataAttribute iedModel_GenericIO_LLN0_NamPlt_swRev;
extern DataAttribute iedModel_GenericIO_LLN0_NamPlt_d;
extern DataAttribute iedModel_GenericIO_LLN0_NamPlt_configRev;
extern DataAttribute iedModel_GenericIO_LLN0_NamPlt_ldNs;
extern LogicalNode iedModel_GenericIO_LPHD1;
extern DataObject iedModel_GenericIO_LPHD1_PhyNam;
extern DataAttribute iedModel_GenericIO_LPHD1_PhyNam_vendor;
extern DataObject iedModel_GenericIO_LPHD1_PhyHealth;
extern DataAttribute iedModel_GenericIO_LPHD1_PhyHealth_stVal;
extern DataAttribute iedModel_GenericIO_LPHD1_PhyHealth_q;
extern DataAttribute iedModel_GenericIO_LPHD1_PhyHealth_t;
extern DataObject iedModel_GenericIO_LPHD1_Proxy;
extern DataAttribute iedModel_GenericIO_LPHD1_Proxy_stVal;
extern DataAttribute iedModel_GenericIO_LPHD1_Proxy_q;
extern DataAttribute iedModel_GenericIO_LPHD1_Proxy_t;
extern LogicalNode iedModel_GenericIO_GGIO1;
extern DataObject iedModel_GenericIO_GGIO1_Mod;
extern DataAttribute iedModel_GenericIO_GGIO1_Mod_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Mod_t;
extern DataAttribute iedModel_GenericIO_GGIO1_Mod_ctlModel;
extern DataObject iedModel_GenericIO_GGIO1_Beh;
extern DataAttribute iedModel_GenericIO_GGIO1_Beh_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Beh_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Beh_t;
extern DataObject iedModel_GenericIO_GGIO1_Health;
extern DataAttribute iedModel_GenericIO_GGIO1_Health_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Health_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Health_t;
extern DataObject iedModel_GenericIO_GGIO1_NamPlt;
extern DataAttribute iedModel_GenericIO_GGIO1_NamPlt_vendor;
extern DataAttribute iedModel_GenericIO_GGIO1_NamPlt_swRev;
extern DataAttribute iedModel_GenericIO_GGIO1_NamPlt_d;
extern DataObject iedModel_GenericIO_GGIO1_AnIn1;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn1_mag;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn1_mag_f;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn1_q;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn1_t;
extern DataObject iedModel_GenericIO_GGIO1_AnIn2;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn2_mag;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn2_mag_f;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn2_q;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn2_t;
extern DataObject iedModel_GenericIO_GGIO1_AnIn3;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn3_mag;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn3_mag_f;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn3_q;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn3_t;
extern DataObject iedModel_GenericIO_GGIO1_AnIn4;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn4_mag;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn4_mag_f;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn4_q;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn4_t;
extern DataObject iedModel_GenericIO_GGIO1_SPCSO1;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_q;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_ctlModel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_t;
extern DataObject iedModel_GenericIO_GGIO1_SPCSO2;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_q;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_ctlModel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_t;
extern DataObject iedModel_GenericIO_GGIO1_SPCSO3;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_q;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_ctlModel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_t;
extern DataObject iedModel_GenericIO_GGIO1_SPCSO4;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_q;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_ctlModel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_t;
extern DataObject iedModel_GenericIO_GGIO1_Ind1;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind1_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind1_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind1_t;
extern DataObject iedModel_GenericIO_GGIO1_Ind2;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind2_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind2_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind2_t;
extern DataObject iedModel_GenericIO_GGIO1_Ind3;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind3_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind3_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind3_t;
extern DataObject iedModel_GenericIO_GGIO1_Ind4;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind4_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind4_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind4_t;
extern DataSet ds_GenericIO_LLN0_Events;
extern DataSet ds_GenericIO_LLN0_Events2;
extern DataSet ds_GenericIO_LLN0_Measurements;
extern DataSetEntry ds_GenericIO_LLN0_Events_fcda0;
extern DataSetEntry ds_GenericIO_LLN0_Events_fcda1;
extern DataSetEntry ds_GenericIO_LLN0_Events_fcda2;
extern DataSetEntry ds_GenericIO_LLN0_Events_fcda3;
DataSetEntry ds_GenericIO_LLN0_Events_fcda0 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$ST$SPCSO1$stVal", "GGIO1$ST$SPCSO1$stVal",
-1, -1,
NULL, NULL,
NULL, NULL,
&ds_GenericIO_LLN0_Events_fcda1 &iedModelds_GenericIO_LLN0_Events_fcda1
}; };
DataSetEntry ds_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,
&ds_GenericIO_LLN0_Events_fcda2 &iedModelds_GenericIO_LLN0_Events_fcda2
}; };
DataSetEntry ds_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,
&ds_GenericIO_LLN0_Events_fcda3 &iedModelds_GenericIO_LLN0_Events_fcda3
}; };
DataSetEntry ds_GenericIO_LLN0_Events_fcda3 = { DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda3 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$ST$SPCSO4$stVal", "GGIO1$ST$SPCSO4$stVal",
@ -200,50 +57,50 @@ DataSetEntry ds_GenericIO_LLN0_Events_fcda3 = {
NULL NULL
}; };
DataSet ds_GenericIO_LLN0_Events = { DataSet iedModelds_GenericIO_LLN0_Events = {
"GenericIO", "GenericIO",
"LLN0$Events", "LLN0$Events",
4, 4,
&ds_GenericIO_LLN0_Events_fcda0, &iedModelds_GenericIO_LLN0_Events_fcda0,
&ds_GenericIO_LLN0_Events2 &iedModelds_GenericIO_LLN0_Events2
}; };
extern DataSetEntry ds_GenericIO_LLN0_Events2_fcda0; extern DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda0;
extern DataSetEntry ds_GenericIO_LLN0_Events2_fcda1; extern DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda1;
extern DataSetEntry ds_GenericIO_LLN0_Events2_fcda2; extern DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda2;
extern DataSetEntry ds_GenericIO_LLN0_Events2_fcda3; extern DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda3;
DataSetEntry ds_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,
&ds_GenericIO_LLN0_Events2_fcda1 &iedModelds_GenericIO_LLN0_Events2_fcda1
}; };
DataSetEntry ds_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,
&ds_GenericIO_LLN0_Events2_fcda2 &iedModelds_GenericIO_LLN0_Events2_fcda2
}; };
DataSetEntry ds_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,
&ds_GenericIO_LLN0_Events2_fcda3 &iedModelds_GenericIO_LLN0_Events2_fcda3
}; };
DataSetEntry ds_GenericIO_LLN0_Events2_fcda3 = { DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda3 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$ST$SPCSO4", "GGIO1$ST$SPCSO4",
@ -253,94 +110,94 @@ DataSetEntry ds_GenericIO_LLN0_Events2_fcda3 = {
NULL NULL
}; };
DataSet ds_GenericIO_LLN0_Events2 = { DataSet iedModelds_GenericIO_LLN0_Events2 = {
"GenericIO", "GenericIO",
"LLN0$Events2", "LLN0$Events2",
4, 4,
&ds_GenericIO_LLN0_Events2_fcda0, &iedModelds_GenericIO_LLN0_Events2_fcda0,
&ds_GenericIO_LLN0_Measurements &iedModelds_GenericIO_LLN0_Measurements
}; };
extern DataSetEntry ds_GenericIO_LLN0_Measurements_fcda0; extern DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda0;
extern DataSetEntry ds_GenericIO_LLN0_Measurements_fcda1; extern DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda1;
extern DataSetEntry ds_GenericIO_LLN0_Measurements_fcda2; extern DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda2;
extern DataSetEntry ds_GenericIO_LLN0_Measurements_fcda3; extern DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda3;
extern DataSetEntry ds_GenericIO_LLN0_Measurements_fcda4; extern DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda4;
extern DataSetEntry ds_GenericIO_LLN0_Measurements_fcda5; extern DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda5;
extern DataSetEntry ds_GenericIO_LLN0_Measurements_fcda6; extern DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda6;
extern DataSetEntry ds_GenericIO_LLN0_Measurements_fcda7; extern DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda7;
DataSetEntry ds_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,
&ds_GenericIO_LLN0_Measurements_fcda1 &iedModelds_GenericIO_LLN0_Measurements_fcda1
}; };
DataSetEntry ds_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,
&ds_GenericIO_LLN0_Measurements_fcda2 &iedModelds_GenericIO_LLN0_Measurements_fcda2
}; };
DataSetEntry ds_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,
&ds_GenericIO_LLN0_Measurements_fcda3 &iedModelds_GenericIO_LLN0_Measurements_fcda3
}; };
DataSetEntry ds_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,
&ds_GenericIO_LLN0_Measurements_fcda4 &iedModelds_GenericIO_LLN0_Measurements_fcda4
}; };
DataSetEntry ds_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,
&ds_GenericIO_LLN0_Measurements_fcda5 &iedModelds_GenericIO_LLN0_Measurements_fcda5
}; };
DataSetEntry ds_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,
&ds_GenericIO_LLN0_Measurements_fcda6 &iedModelds_GenericIO_LLN0_Measurements_fcda6
}; };
DataSetEntry ds_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,
&ds_GenericIO_LLN0_Measurements_fcda7 &iedModelds_GenericIO_LLN0_Measurements_fcda7
}; };
DataSetEntry ds_GenericIO_LLN0_Measurements_fcda7 = { DataSetEntry iedModelds_GenericIO_LLN0_Measurements_fcda7 = {
"GenericIO", "GenericIO",
false, false,
"GGIO1$MX$AnIn4$q", "GGIO1$MX$AnIn4$q",
@ -350,11 +207,11 @@ DataSetEntry ds_GenericIO_LLN0_Measurements_fcda7 = {
NULL NULL
}; };
DataSet ds_GenericIO_LLN0_Measurements = { DataSet iedModelds_GenericIO_LLN0_Measurements = {
"GenericIO", "GenericIO",
"LLN0$Measurements", "LLN0$Measurements",
8, 8,
&ds_GenericIO_LLN0_Measurements_fcda0, &iedModelds_GenericIO_LLN0_Measurements_fcda0,
NULL NULL
}; };
@ -2101,7 +1958,7 @@ ReportControlBlock iedModel_GenericIO_LLN0_report6 = {&iedModel_GenericIO_LLN0,
IedModel iedModel = { IedModel iedModel = {
"simpleIO", "simpleIO",
&iedModel_GenericIO, &iedModel_GenericIO,
&ds_GenericIO_LLN0_Events, &iedModelds_GenericIO_LLN0_Events,
&iedModel_GenericIO_LLN0_report0, &iedModel_GenericIO_LLN0_report0,
NULL, NULL,
NULL, NULL,

@ -84,8 +84,14 @@ public class StaticModelGenerator {
private IED ied; private IED ied;
private AccessPoint accessPoint; private AccessPoint accessPoint;
private String outputFileName;
private String hDefineName;
private String modelPrefix;
private boolean initializeOnce;
public StaticModelGenerator(InputStream stream, String icdFile, PrintStream cOut, PrintStream hOut, public StaticModelGenerator(InputStream stream, String icdFile, PrintStream cOut, PrintStream hOut,
String iedName, String accessPointName) throws SclParserException String outputFileName, String iedName, String accessPointName, String modelPrefix,
boolean initializeOnce) throws SclParserException
{ {
this.cOut = cOut; this.cOut = cOut;
this.hOut = hOut; this.hOut = hOut;
@ -100,6 +106,16 @@ public class StaticModelGenerator {
SclParser sclParser = new SclParser(stream); SclParser sclParser = new SclParser(stream);
this.outputFileName = outputFileName;
this.hDefineName = outputFileName.toUpperCase().replace( '.', '_' ).replace( '-', '_' ) + "_H_";
this.modelPrefix = modelPrefix;
this.initializeOnce = initializeOnce;
if( hDefineName.lastIndexOf( '/' ) >= 0 )
{
hDefineName = hDefineName.substring( hDefineName.lastIndexOf( '/' ) + 1 );
}
ied = null; ied = null;
if (iedName == null) if (iedName == null)
@ -147,17 +163,18 @@ public class StaticModelGenerator {
public static void main(String[] args) throws FileNotFoundException { public static void main(String[] args) throws FileNotFoundException {
if (args.length < 1) { if (args.length < 1) {
System.out.println("Usage: genmodel <ICD file> [-ied <ied-name>] [-ap <access-point-name>]"); System.out.println("Usage: genmodel <ICD file> [-ied <ied-name>] [-ap <access-point-name>] [-out <output-name>] [-modelprefix <model-prefix>]");
System.exit(1); System.exit(1);
} }
String icdFile = args[0]; String icdFile = args[0];
String defaultCFileName = "static_model.c"; String outputFileName = "static_model";
String defaultHFileName = "static_model.h";
String accessPointName = null; String accessPointName = null;
String iedName = null; String iedName = null;
String modelPrefix = "iedModel";
boolean initializeOnce = false;
if (args.length > 1) { if (args.length > 1) {
for (int i = 1; i < args.length; i++) { for (int i = 1; i < args.length; i++) {
@ -175,6 +192,28 @@ public class StaticModelGenerator {
i++; i++;
}
else if (args[i].equals("-out")) {
outputFileName = args[i+1];
System.out.println("Select Output File " + outputFileName);
i++;
}
else if (args[i].equals("-modelprefix")) {
modelPrefix = args[i+1];
System.out.println("Select Model Prefix " + modelPrefix);
i++;
}
else if (args[i].equals("-initializeonce")) {
initializeOnce = true;
System.out.println("Select Initialize Once");
} }
else { else {
System.out.println("Unknown option: \"" + args[i] + "\""); System.out.println("Unknown option: \"" + args[i] + "\"");
@ -183,13 +222,14 @@ public class StaticModelGenerator {
} }
PrintStream cOutStream = new PrintStream(new FileOutputStream(new File(defaultCFileName))); PrintStream cOutStream = new PrintStream(new FileOutputStream(new File(outputFileName + ".c")));
PrintStream hOutStream = new PrintStream(new FileOutputStream(new File(defaultHFileName))); PrintStream hOutStream = new PrintStream(new FileOutputStream(new File(outputFileName + ".h")));
System.out.println("Select ICD File " + icdFile);
InputStream stream = new FileInputStream(icdFile); InputStream stream = new FileInputStream(icdFile);
try { try {
new StaticModelGenerator(stream, icdFile, cOutStream, hOutStream, iedName, accessPointName); new StaticModelGenerator(stream, icdFile, cOutStream, hOutStream, outputFileName, iedName, accessPointName, modelPrefix, initializeOnce);
} catch (SclParserException e) { } catch (SclParserException e) {
System.err.println("ERROR: " + e.getMessage()); System.err.println("ERROR: " + e.getMessage());
} }
@ -199,8 +239,8 @@ public class StaticModelGenerator {
hOut.println("\n\n"); hOut.println("\n\n");
for (String variableName : variablesList) { for (String variableName : variablesList) {
String name = variableName.substring(8); String name = modelPrefix.toUpperCase() + variableName.substring( modelPrefix.length() );
hOut.println("#define IEDMODEL" + name + " (&" + variableName + ")"); hOut.println("#define " + name + " (&" + variableName + ")");
} }
} }
@ -233,7 +273,7 @@ public class StaticModelGenerator {
LogicalDevice logicalDevice = logicalDevices.get(i); LogicalDevice logicalDevice = logicalDevices.get(i);
String ldName = "iedModel_" + logicalDevice.getInst(); String ldName = modelPrefix + "_" + logicalDevice.getInst();
variablesList.add(ldName); variablesList.add(ldName);
@ -245,10 +285,10 @@ public class StaticModelGenerator {
cOut.println(" \"" + logicalDeviceName + "\","); cOut.println(" \"" + logicalDeviceName + "\",");
cOut.println(" (ModelNode*) &iedModel,"); cOut.println(" (ModelNode*) &" + modelPrefix + ",");
if (i < (logicalDevices.size() - 1)) if (i < (logicalDevices.size() - 1))
cOut.println(" (ModelNode*) &iedModel_" + logicalDevices.get(i + 1).getInst() + ","); cOut.println(" (ModelNode*) &" + modelPrefix + "_" + logicalDevices.get(i + 1).getInst() + ",");
else else
cOut.println(" NULL,"); cOut.println(" NULL,");
@ -279,9 +319,9 @@ public class StaticModelGenerator {
cOut.println(settingGroupControlBlocks); cOut.println(settingGroupControlBlocks);
String firstLogicalDeviceName = logicalDevices.get(0).getInst(); String firstLogicalDeviceName = logicalDevices.get(0).getInst();
cOut.println("\nIedModel iedModel = {"); cOut.println("\nIedModel " + modelPrefix + " = {");
cOut.println(" \"" + ied.getName() + "\","); cOut.println(" \"" + ied.getName() + "\",");
cOut.println(" &iedModel_" + firstLogicalDeviceName + ","); cOut.println(" &" + modelPrefix + "_" + firstLogicalDeviceName + ",");
if (dataSetNames.size() > 0) if (dataSetNames.size() > 0)
cOut.println(" &" + dataSetNames.get(0) + ","); cOut.println(" &" + dataSetNames.get(0) + ",");
@ -318,7 +358,7 @@ public class StaticModelGenerator {
int gseCount = 0; int gseCount = 0;
for (GSEControl gse : goCBs) { for (GSEControl gse : goCBs) {
String gcbVariableName = "iedModel_" + ldName + "_" + ln.getName() + "_gse" + gseCount; String gcbVariableName = modelPrefix + "_" + ldName + "_" + ln.getName() + "_gse" + gseCount;
gseVariableNames.add(gcbVariableName); gseVariableNames.add(gcbVariableName);
gseCount++; gseCount++;
} }
@ -346,7 +386,7 @@ public class StaticModelGenerator {
maxInstances = rcb.getRptEna().getMaxInstances(); maxInstances = rcb.getRptEna().getMaxInstances();
for (int i = 0; i < maxInstances; i++) { for (int i = 0; i < maxInstances; i++) {
String rcbVariableName = "iedModel_" + ldName + "_" + ln.getName() + "_report" + rcbCount; String rcbVariableName = modelPrefix + "_" + ldName + "_" + ln.getName() + "_report" + rcbCount;
rcbVariableNames.add(rcbVariableName); rcbVariableNames.add(rcbVariableName);
rcbCount++; rcbCount++;
} }
@ -367,7 +407,7 @@ public class StaticModelGenerator {
for (SettingControl sgcb : sgcbs) { for (SettingControl sgcb : sgcbs) {
String sgcbVariableName = "iedModel_" + ldName + "_" + ln.getName() + "_sgcb"; String sgcbVariableName = modelPrefix + "_" + ldName + "_" + ln.getName() + "_sgcb";
sgcbVariableNames.add(sgcbVariableName); sgcbVariableNames.add(sgcbVariableName);
@ -467,7 +507,7 @@ public class StaticModelGenerator {
if (dataAttribute.getFc() == FunctionalConstraint.SE) { if (dataAttribute.getFc() == FunctionalConstraint.SE) {
if (daName.startsWith("iedModel_SE_") == false) if (daName.startsWith(modelPrefix + "_SE_") == false)
daName = daName.substring(0, 9) + "SE_" + daName.substring(9); daName = daName.substring(0, 9) + "SE_" + daName.substring(9);
} }
@ -484,7 +524,7 @@ public class StaticModelGenerator {
String siblingDoName = doName; String siblingDoName = doName;
if (sibling.getFc() == FunctionalConstraint.SE) { if (sibling.getFc() == FunctionalConstraint.SE) {
if (siblingDoName.startsWith("iedModel_SE_") == false) if (siblingDoName.startsWith(modelPrefix + "_SE_") == false)
siblingDoName = siblingDoName.substring(0, 9) + "SE_" + siblingDoName.substring(9); siblingDoName = siblingDoName.substring(0, 9) + "SE_" + siblingDoName.substring(9);
} }
@ -564,6 +604,12 @@ public class StaticModelGenerator {
StringBuffer buffer = this.initializerBuffer; StringBuffer buffer = this.initializerBuffer;
buffer.append("\n"); buffer.append("\n");
if( initializeOnce )
{
buffer.append("if (!");
buffer.append(daName);
buffer.append(".mmsValue)\n");
}
buffer.append(daName); buffer.append(daName);
buffer.append(".mmsValue = "); buffer.append(".mmsValue = ");
@ -612,20 +658,17 @@ public class StaticModelGenerator {
private void printForwardDeclarations(Server server) { private void printForwardDeclarations(Server server) {
cOut.println("extern IedModel iedModel;");
cOut.println("static void initializeValues();"); cOut.println("static void initializeValues();");
hOut.println("extern IedModel iedModel;"); hOut.println("extern IedModel " + modelPrefix + ";");
for (LogicalDevice logicalDevice : server.getLogicalDevices()) { for (LogicalDevice logicalDevice : server.getLogicalDevices()) {
String ldName = "iedModel_" + logicalDevice.getInst(); String ldName = modelPrefix + "_" + logicalDevice.getInst();
cOut.println("extern LogicalDevice " + ldName + ";");
hOut.println("extern LogicalDevice " + ldName + ";"); hOut.println("extern LogicalDevice " + ldName + ";");
for (LogicalNode logicalNode : logicalDevice.getLogicalNodes()) { for (LogicalNode logicalNode : logicalDevice.getLogicalNodes()) {
String lnName = ldName + "_" + logicalNode.getName(); String lnName = ldName + "_" + logicalNode.getName();
cOut.println("extern LogicalNode " + lnName + ";");
hOut.println("extern LogicalNode " + lnName + ";"); hOut.println("extern LogicalNode " + lnName + ";");
printDataObjectForwardDeclarations(lnName, logicalNode.getDataObjects()); printDataObjectForwardDeclarations(lnName, logicalNode.getDataObjects());
@ -638,7 +681,6 @@ public class StaticModelGenerator {
for (DataObject dataObject : dataObjects) { for (DataObject dataObject : dataObjects) {
String doName = prefix + "_" + dataObject.getName(); String doName = prefix + "_" + dataObject.getName();
cOut.println("extern DataObject " + doName + ";");
hOut.println("extern DataObject " + doName + ";"); hOut.println("extern DataObject " + doName + ";");
if (dataObject.getSubDataObjects() != null) { if (dataObject.getSubDataObjects() != null) {
@ -655,11 +697,10 @@ public class StaticModelGenerator {
if (dataAttribute.getFc() == FunctionalConstraint.SE) { if (dataAttribute.getFc() == FunctionalConstraint.SE) {
if (daName.startsWith("iedModel_SE_") == false) if (daName.startsWith(modelPrefix + "_SE_") == false)
daName = daName.substring(0, 9) + "SE_" + daName.substring(9); daName = daName.substring(0, 9) + "SE_" + daName.substring(9);
} }
cOut.println("extern DataAttribute " + daName + ";");
hOut.println("extern DataAttribute " + daName + ";"); hOut.println("extern DataAttribute " + daName + ";");
if (dataAttribute.getSubDataAttributes() != null) if (dataAttribute.getSubDataAttributes() != null)
@ -669,24 +710,28 @@ public class StaticModelGenerator {
private void printCFileHeader(String filename) { private void printCFileHeader(String filename) {
String include = outputFileName + ".h\"";
if( include.lastIndexOf( '/' ) >= 0 ) {
include = include.substring( include.lastIndexOf( '/' ) + 1 );
}
cOut.println("/*"); cOut.println("/*");
cOut.println(" * static_model.c"); cOut.println(" * " + outputFileName + ".c");
cOut.println(" *"); cOut.println(" *");
cOut.println(" * automatically generated from " + filename); cOut.println(" * automatically generated from " + filename);
cOut.println(" */"); cOut.println(" */");
cOut.println("#include <stdlib.h>"); cOut.println("#include \"" + include);
cOut.println("#include \"iec61850_model.h\"");
cOut.println(); cOut.println();
} }
private void printHeaderFileHeader(String filename) { private void printHeaderFileHeader(String filename) {
hOut.println("/*"); hOut.println("/*");
hOut.println(" * static_model.h"); hOut.println(" * " + outputFileName + ".h");
hOut.println(" *"); hOut.println(" *");
hOut.println(" * automatically generated from " + filename); hOut.println(" * automatically generated from " + filename);
hOut.println(" */\n"); hOut.println(" */\n");
hOut.println("#ifndef STATIC_MODEL_H_"); hOut.println("#ifndef " + hDefineName);
hOut.println("#define STATIC_MODEL_H_\n"); hOut.println("#define " + hDefineName + "\n");
hOut.println("#include <stdlib.h>"); hOut.println("#include <stdlib.h>");
hOut.println("#include \"iec61850_model.h\""); hOut.println("#include \"iec61850_model.h\"");
hOut.println(); hOut.println();
@ -694,7 +739,7 @@ public class StaticModelGenerator {
private void printHeaderFileFooter() { private void printHeaderFileFooter() {
hOut.println(); hOut.println();
hOut.println("#endif /* STATIC_MODEL_H_ */\n"); hOut.println("#endif /* " + hDefineName + " */\n");
} }
private void printGSEControlBlocks(String ldName, String lnPrefix, LogicalNode logicalNode) { private void printGSEControlBlocks(String ldName, String lnPrefix, LogicalNode logicalNode) {
@ -940,7 +985,7 @@ public class StaticModelGenerator {
for (DataSet dataSet : dataSets) { for (DataSet dataSet : dataSets) {
String dataSetVariableName = "ds_" + logicalDevice.getInst() + "_" + logicalNode.getName() + "_" + dataSet.getName(); String dataSetVariableName = modelPrefix + "ds_" + logicalDevice.getInst() + "_" + logicalNode.getName() + "_" + dataSet.getName();
dataSetNames.add(dataSetVariableName); dataSetNames.add(dataSetVariableName);
} }
@ -1033,7 +1078,7 @@ public class StaticModelGenerator {
cOut.println("DataSet " + dataSetVariableName + " = {"); cOut.println("DataSet " + dataSetVariableName + " = {");
String lnVariableName = "iedModel_" + logicalDevice.getInst() + "_" + logicalNode.getName(); String lnVariableName = modelPrefix + "_" + logicalDevice.getInst() + "_" + logicalNode.getName();
cOut.println(" \"" + logicalDevice.getInst() + "\","); cOut.println(" \"" + logicalDevice.getInst() + "\",");
cOut.println(" \"" + logicalNode.getName() + "$" + dataSet.getName() + "\","); cOut.println(" \"" + logicalNode.getName() + "$" + dataSet.getName() + "\",");

Loading…
Cancel
Save