From d81e9e1c19e2b40e35a2f21ad0dd0716f5a287c9 Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Thu, 8 Sep 2016 18:23:20 +0200 Subject: [PATCH] - implemente ControlObjectClient_setTestMode function, also for C# wrapper --- CHANGELOG | 4 + demos/beaglebone/beagle_demo.icd | 232 +- demos/beaglebone/static_model.c | 5182 ++++++++++++++++- demos/beaglebone/static_model.h | 896 ++- dotnet/IEC61850forCSharp/Control.cs | 13 +- dotnet/IEC61850forCSharp/IEC61850ClientAPI.cs | 2 +- .../IEC61850forCSharp.csproj | 1 + .../IEC61850forCSharp/ReportControlBlock.cs | 58 +- dotnet/reporting/ReportingExample.cs | 64 +- dotnet/tests/Test.cs | 263 + dotnet/tests/test.icd | 326 ++ .../server_example_logging.c | 3 + .../simpleIO_direct_control.icd | 2 +- .../inc/libiec61850_platform_includes.h | 2 +- src/hal/socket/linux/socket_linux.c | 16 +- src/hal/socket/win32/socket_win32.c | 1 + src/iec61850/client/client_control.c | 6 + src/iec61850/inc/iec61850_client.h | 2 +- src/iec61850/inc/iec61850_model.h | 120 +- src/iec61850/server/mms_mapping/logging.c | 10 +- src/iec61850/server/mms_mapping/mms_mapping.c | 2 - src/iec61850/server/mms_mapping/reporting.c | 3 + src/iec61850/server/model/dynamic_model.c | 1 + src/iec61850/server/model/model.c | 6 + src/mms/iso_mms/common/mms_value.c | 4 +- src/vs/libiec61850-wo-goose.def | 2 + src/vs/libiec61850.def | 3 + tools/model_generator/gendyncode.jar | Bin 87820 -> 88037 bytes tools/model_generator/genmodel.jar | Bin 85990 -> 88037 bytes .../tools/DynamicCodeGenerator.java | 33 +- 30 files changed, 7106 insertions(+), 151 deletions(-) create mode 100644 dotnet/tests/test.icd diff --git a/CHANGELOG b/CHANGELOG index 3f5c1f9..d86de30 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,7 @@ +Changes to version 0.9.3 +------------------------ +- .NET API: server side API + Changes to version 0.9.2.1 -------------------------- - server: fixed some memory access problens in dynamic model LCB diff --git a/demos/beaglebone/beagle_demo.icd b/demos/beaglebone/beagle_demo.icd index df06bd5..b76feba 100644 --- a/demos/beaglebone/beagle_demo.icd +++ b/demos/beaglebone/beagle_demo.icd @@ -72,7 +72,12 @@ - + + + + + + @@ -125,6 +130,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -274,6 +432,17 @@ + + + + + + + + + + + on @@ -312,5 +481,66 @@ maintenance process + + + not-ready + validated + ready + running + + + + Time + WeekDay + WeekOfYear + DayOfMonth + DayOfYear + + + + Hour + Day + Week + Month + Year + + + + reserved + Monday + Tuesday + Wednesday + Thursday + Friday + Saturday + Sunday + + + + reserved + January + February + March + April + May + June + July + August + September + October + November + December + + + + MS + PER_CYCLE + CYCLE + DAY + WEEK + MONTH + YEAR + EXTERNAL + diff --git a/demos/beaglebone/static_model.c b/demos/beaglebone/static_model.c index 50ce8fb..0081d63 100644 --- a/demos/beaglebone/static_model.c +++ b/demos/beaglebone/static_model.c @@ -1,7 +1,7 @@ /* * static_model.c * - * automatically generated from beagle_demo.iid + * automatically generated from beagle_demo.icd */ #include "static_model.h" @@ -1918,7 +1918,7 @@ LogicalNode iedModel_GenericIO_TIM_GAPC1 = { LogicalNodeModelType, "TIM_GAPC1", (ModelNode*) &iedModel_GenericIO, - NULL, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, (ModelNode*) &iedModel_GenericIO_TIM_GAPC1_Beh, }; @@ -2388,6 +2388,5182 @@ DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_ctlModel = { NULL, 0}; +LogicalNode iedModel_GenericIO_T60S_FSCH1 = { + LogicalNodeModelType, + "T60S_FSCH1", + (ModelNode*) &iedModel_GenericIO, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_Beh, +}; + +DataObject iedModel_GenericIO_T60S_FSCH1_Beh = { + DataObjectModelType, + "Beh", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_SchdSt, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_Beh_stVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_Beh_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_Beh, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_Beh_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_ENUMERATED, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_Beh_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_Beh, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_Beh_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_Beh_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_Beh, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_SchdSt = { + DataObjectModelType, + "SchdSt", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_SchdEntr, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_SchdSt_stVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdSt_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_SchdSt, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_SchdSt_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_ENUMERATED, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdSt_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_SchdSt, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_SchdSt_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdSt_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_SchdSt, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_SchdEntr = { + DataObjectModelType, + "SchdEntr", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPS, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_SchdEntr_stVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdEntr_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_SchdEntr, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_SchdEntr_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdEntr_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_SchdEntr, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_SchdEntr_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdEntr_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_SchdEntr, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPS = { + DataObjectModelType, + "ValSPS", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPS_stVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPS_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPS, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPS_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPS_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPS, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPS_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPS_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPS, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_VldReq = { + DataObjectModelType, + "VldReq", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq_stVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq_Oper, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper = { + DataAttributeModelType, + "Oper", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq_ctlModel, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_ctlVal, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_ctlVal = { + DataAttributeModelType, + "ctlVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_origin, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_origin = { + DataAttributeModelType, + "origin", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_ctlNum, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_origin_orCat, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_origin_orCat = { + DataAttributeModelType, + "orCat", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_origin, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_origin_orIdent, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_origin_orIdent = { + DataAttributeModelType, + "orIdent", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_origin, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_OCTET_STRING_64, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_ctlNum = { + DataAttributeModelType, + "ctlNum", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_T, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_INT8U, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_T = { + DataAttributeModelType, + "T", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_Test, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_Test = { + DataAttributeModelType, + "Test", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_Check, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_Check = { + DataAttributeModelType, + "Check", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq_Oper, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_CHECK, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_ctlModel = { + DataAttributeModelType, + "ctlModel", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq_t, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_VldReq, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_EnaReq = { + DataObjectModelType, + "EnaReq", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq_stVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper = { + DataAttributeModelType, + "Oper", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq_ctlModel, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_ctlVal, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_ctlVal = { + DataAttributeModelType, + "ctlVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_origin, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_origin = { + DataAttributeModelType, + "origin", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_ctlNum, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_origin_orCat, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_origin_orCat = { + DataAttributeModelType, + "orCat", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_origin, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_origin_orIdent, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_origin_orIdent = { + DataAttributeModelType, + "orIdent", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_origin, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_OCTET_STRING_64, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_ctlNum = { + DataAttributeModelType, + "ctlNum", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_T, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_INT8U, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_T = { + DataAttributeModelType, + "T", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_Test, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_Test = { + DataAttributeModelType, + "Test", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_Check, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_Check = { + DataAttributeModelType, + "Check", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_CHECK, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_ctlModel = { + DataAttributeModelType, + "ctlModel", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq_t, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EnaReq, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_EdtReq = { + DataObjectModelType, + "EdtReq", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq_stVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper = { + DataAttributeModelType, + "Oper", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq_ctlModel, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_ctlVal, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_ctlVal = { + DataAttributeModelType, + "ctlVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_origin, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_origin = { + DataAttributeModelType, + "origin", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_ctlNum, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_origin_orCat, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_origin_orCat = { + DataAttributeModelType, + "orCat", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_origin, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_origin_orIdent, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_origin_orIdent = { + DataAttributeModelType, + "orIdent", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_origin, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_OCTET_STRING_64, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_ctlNum = { + DataAttributeModelType, + "ctlNum", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_T, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_INT8U, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_T = { + DataAttributeModelType, + "T", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_Test, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_Test = { + DataAttributeModelType, + "Test", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_Check, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_Check = { + DataAttributeModelType, + "Check", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_CHECK, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_ctlModel = { + DataAttributeModelType, + "ctlModel", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq_t, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_EdtReq, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_DsaReq = { + DataObjectModelType, + "DsaReq", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_SchdPrio, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq_stVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper = { + DataAttributeModelType, + "Oper", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq_ctlModel, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_ctlVal, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_ctlVal = { + DataAttributeModelType, + "ctlVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_origin, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_origin = { + DataAttributeModelType, + "origin", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_ctlNum, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_origin_orCat, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_origin_orCat = { + DataAttributeModelType, + "orCat", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_origin, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_origin_orIdent, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_origin_orIdent = { + DataAttributeModelType, + "orIdent", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_origin, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_OCTET_STRING_64, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_ctlNum = { + DataAttributeModelType, + "ctlNum", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_T, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_INT8U, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_T = { + DataAttributeModelType, + "T", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_Test, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_Test = { + DataAttributeModelType, + "Test", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_Check, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_Check = { + DataAttributeModelType, + "Check", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_CHECK, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_ctlModel = { + DataAttributeModelType, + "ctlModel", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq_t, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_DsaReq, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_SchdPrio = { + DataObjectModelType, + "SchdPrio", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_NumEntr, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_SchdPrio_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdPrio_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_SchdPrio, + NULL, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_NumEntr = { + DataObjectModelType, + "NumEntr", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_SchdIntv, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_NumEntr_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_NumEntr_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_NumEntr, + NULL, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_SchdIntv = { + DataObjectModelType, + "SchdIntv", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_SchdIntv_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdIntv_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_SchdIntv, + NULL, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG1 = { + DataObjectModelType, + "ValSPG1", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG1_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG1_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG1, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG2 = { + DataObjectModelType, + "ValSPG2", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG3, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG2_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG2_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG2, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG3 = { + DataObjectModelType, + "ValSPG3", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG4, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG3_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG3_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG3, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG4 = { + DataObjectModelType, + "ValSPG4", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG5, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG4_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG4_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG4, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG5 = { + DataObjectModelType, + "ValSPG5", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG6, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG5_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG5_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG5, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG6 = { + DataObjectModelType, + "ValSPG6", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG7, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG6_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG6_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG6, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG7 = { + DataObjectModelType, + "ValSPG7", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG8, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG7_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG7_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG7, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG8 = { + DataObjectModelType, + "ValSPG8", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG9, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG8_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG8_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG8, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG9 = { + DataObjectModelType, + "ValSPG9", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG10, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG9_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG9_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG9, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG10 = { + DataObjectModelType, + "ValSPG10", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG11, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG10_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG10_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG10, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG11 = { + DataObjectModelType, + "ValSPG11", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG12, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG11_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG11_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG11, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG12 = { + DataObjectModelType, + "ValSPG12", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG13, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG12_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG12_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG12, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG13 = { + DataObjectModelType, + "ValSPG13", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG14, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG13_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG13_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG13, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG14 = { + DataObjectModelType, + "ValSPG14", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG15, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG14_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG14_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG14, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG15 = { + DataObjectModelType, + "ValSPG15", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG16, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG15_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG15_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG15, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG16 = { + DataObjectModelType, + "ValSPG16", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG17, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG16_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG16_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG16, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG17 = { + DataObjectModelType, + "ValSPG17", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG18, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG17_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG17_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG17, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG18 = { + DataObjectModelType, + "ValSPG18", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG19, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG18_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG18_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG18, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG19 = { + DataObjectModelType, + "ValSPG19", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG20, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG19_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG19_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG19, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG20 = { + DataObjectModelType, + "ValSPG20", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG21, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG20_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG20_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG20, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG21 = { + DataObjectModelType, + "ValSPG21", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG22, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG21_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG21_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG21, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG22 = { + DataObjectModelType, + "ValSPG22", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG23, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG22_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG22_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG22, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG23 = { + DataObjectModelType, + "ValSPG23", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG24, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG23_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG23_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG23, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG24 = { + DataObjectModelType, + "ValSPG24", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG25, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG24_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG24_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG24, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG25 = { + DataObjectModelType, + "ValSPG25", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG26, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG25_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG25_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG25, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG26 = { + DataObjectModelType, + "ValSPG26", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG27, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG26_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG26_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG26, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG27 = { + DataObjectModelType, + "ValSPG27", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG28, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG27_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG27_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG27, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG28 = { + DataObjectModelType, + "ValSPG28", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG29, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG28_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG28_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG28, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG29 = { + DataObjectModelType, + "ValSPG29", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG30, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG29_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG29_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG29, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG30 = { + DataObjectModelType, + "ValSPG30", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG31, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG30_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG30_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG30, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG31 = { + DataObjectModelType, + "ValSPG31", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG32, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG31_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG31_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG31, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG32 = { + DataObjectModelType, + "ValSPG32", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG33, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG32_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG32_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG32, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG33 = { + DataObjectModelType, + "ValSPG33", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG34, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG33_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG33_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG33, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG34 = { + DataObjectModelType, + "ValSPG34", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG35, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG34_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG34_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG34, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG35 = { + DataObjectModelType, + "ValSPG35", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG36, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG35_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG35_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG35, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG36 = { + DataObjectModelType, + "ValSPG36", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG37, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG36_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG36_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG36, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG37 = { + DataObjectModelType, + "ValSPG37", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG38, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG37_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG37_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG37, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG38 = { + DataObjectModelType, + "ValSPG38", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG39, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG38_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG38_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG38, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG39 = { + DataObjectModelType, + "ValSPG39", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG40, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG39_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG39_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG39, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG40 = { + DataObjectModelType, + "ValSPG40", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG41, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG40_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG40_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG40, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG41 = { + DataObjectModelType, + "ValSPG41", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG42, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG41_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG41_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG41, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG42 = { + DataObjectModelType, + "ValSPG42", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG43, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG42_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG42_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG42, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG43 = { + DataObjectModelType, + "ValSPG43", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG44, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG43_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG43_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG43, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG44 = { + DataObjectModelType, + "ValSPG44", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG45, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG44_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG44_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG44, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG45 = { + DataObjectModelType, + "ValSPG45", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG46, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG45_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG45_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG45, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG46 = { + DataObjectModelType, + "ValSPG46", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG47, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG46_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG46_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG46, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG47 = { + DataObjectModelType, + "ValSPG47", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG48, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG47_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG47_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG47, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG48 = { + DataObjectModelType, + "ValSPG48", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG49, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG48_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG48_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG48, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG49 = { + DataObjectModelType, + "ValSPG49", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG50, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG49_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG49_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG49, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG50 = { + DataObjectModelType, + "ValSPG50", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG51, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG50_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG50_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG50, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG51 = { + DataObjectModelType, + "ValSPG51", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG52, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG51_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG51_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG51, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG52 = { + DataObjectModelType, + "ValSPG52", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG53, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG52_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG52_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG52, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG53 = { + DataObjectModelType, + "ValSPG53", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG54, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG53_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG53_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG53, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG54 = { + DataObjectModelType, + "ValSPG54", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG55, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG54_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG54_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG54, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG55 = { + DataObjectModelType, + "ValSPG55", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG56, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG55_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG55_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG55, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG56 = { + DataObjectModelType, + "ValSPG56", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG57, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG56_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG56_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG56, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG57 = { + DataObjectModelType, + "ValSPG57", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG58, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG57_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG57_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG57, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG58 = { + DataObjectModelType, + "ValSPG58", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG59, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG58_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG58_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG58, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG59 = { + DataObjectModelType, + "ValSPG59", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG60, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG59_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG59_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG59, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG60 = { + DataObjectModelType, + "ValSPG60", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_StrTm, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG60_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG60_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_ValSPG60, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_StrTm = { + DataObjectModelType, + "StrTm", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_IntvPer, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_StrTm_setTm, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setTm = { + DataAttributeModelType, + "setTm", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_StrTm, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_StrTm_setCal, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_TIMESTAMP, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal = { + DataAttributeModelType, + "setCal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_StrTm, + NULL, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_occ, + 0, + IEC61850_FC_SP, + IEC61850_CONSTRUCTED, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_occ = { + DataAttributeModelType, + "occ", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_StrTm_setCal, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_occType, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_INT16U, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_occType = { + DataAttributeModelType, + "occType", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_StrTm_setCal, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_occPer, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_ENUMERATED, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_occPer = { + DataAttributeModelType, + "occPer", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_StrTm_setCal, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_weekDay, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_ENUMERATED, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_weekDay = { + DataAttributeModelType, + "weekDay", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_StrTm_setCal, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_month, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_ENUMERATED, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_month = { + DataAttributeModelType, + "month", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_StrTm_setCal, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_day, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_ENUMERATED, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_day = { + DataAttributeModelType, + "day", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_StrTm_setCal, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_hr, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_INT8U, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_hr = { + DataAttributeModelType, + "hr", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_StrTm_setCal, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_mn, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_INT8U, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_mn = { + DataAttributeModelType, + "mn", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_StrTm_setCal, + NULL, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_INT8U, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_IntvPer = { + DataObjectModelType, + "IntvPer", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_IntvTyp, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_IntvPer_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_IntvPer_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_IntvPer, + NULL, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_IntvTyp = { + DataObjectModelType, + "IntvTyp", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_SchdReuse, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_IntvTyp_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_IntvTyp_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_IntvTyp, + NULL, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_ENUMERATED, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH1_SchdReuse = { + DataObjectModelType, + "SchdReuse", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1, + NULL, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_SchdReuse_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdReuse_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH1_SchdReuse, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +LogicalNode iedModel_GenericIO_T60S_FSCH2 = { + LogicalNodeModelType, + "T60S_FSCH2", + (ModelNode*) &iedModel_GenericIO, + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_Beh, +}; + +DataObject iedModel_GenericIO_T60S_FSCH2_Beh = { + DataObjectModelType, + "Beh", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_SchdSt, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_Beh_stVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_Beh_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_Beh, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_Beh_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_ENUMERATED, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_Beh_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_Beh, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_Beh_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_Beh_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_Beh, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_SchdSt = { + DataObjectModelType, + "SchdSt", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_SchdEntr, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_SchdSt_stVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdSt_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_SchdSt, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_SchdSt_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_ENUMERATED, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdSt_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_SchdSt, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_SchdSt_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdSt_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_SchdSt, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_SchdEntr = { + DataObjectModelType, + "SchdEntr", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPS, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_SchdEntr_stVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdEntr_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_SchdEntr, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_SchdEntr_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdEntr_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_SchdEntr, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_SchdEntr_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdEntr_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_SchdEntr, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPS = { + DataObjectModelType, + "ValSPS", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPS_stVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPS_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPS, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPS_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPS_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPS, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPS_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPS_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPS, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_VldReq = { + DataObjectModelType, + "VldReq", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq_stVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq_Oper, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper = { + DataAttributeModelType, + "Oper", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq_ctlModel, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_ctlVal, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_ctlVal = { + DataAttributeModelType, + "ctlVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_origin, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_origin = { + DataAttributeModelType, + "origin", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_ctlNum, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_origin_orCat, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_origin_orCat = { + DataAttributeModelType, + "orCat", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_origin, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_origin_orIdent, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_origin_orIdent = { + DataAttributeModelType, + "orIdent", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_origin, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_OCTET_STRING_64, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_ctlNum = { + DataAttributeModelType, + "ctlNum", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_T, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_INT8U, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_T = { + DataAttributeModelType, + "T", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_Test, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_Test = { + DataAttributeModelType, + "Test", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_Check, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_Check = { + DataAttributeModelType, + "Check", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq_Oper, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_CHECK, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_ctlModel = { + DataAttributeModelType, + "ctlModel", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq_t, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_VldReq, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_EnaReq = { + DataObjectModelType, + "EnaReq", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq_stVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper = { + DataAttributeModelType, + "Oper", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq_ctlModel, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_ctlVal, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_ctlVal = { + DataAttributeModelType, + "ctlVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_origin, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_origin = { + DataAttributeModelType, + "origin", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_ctlNum, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_origin_orCat, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_origin_orCat = { + DataAttributeModelType, + "orCat", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_origin, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_origin_orIdent, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_origin_orIdent = { + DataAttributeModelType, + "orIdent", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_origin, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_OCTET_STRING_64, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_ctlNum = { + DataAttributeModelType, + "ctlNum", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_T, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_INT8U, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_T = { + DataAttributeModelType, + "T", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_Test, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_Test = { + DataAttributeModelType, + "Test", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_Check, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_Check = { + DataAttributeModelType, + "Check", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_CHECK, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_ctlModel = { + DataAttributeModelType, + "ctlModel", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq_t, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EnaReq, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_EdtReq = { + DataObjectModelType, + "EdtReq", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq_stVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper = { + DataAttributeModelType, + "Oper", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq_ctlModel, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_ctlVal, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_ctlVal = { + DataAttributeModelType, + "ctlVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_origin, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_origin = { + DataAttributeModelType, + "origin", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_ctlNum, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_origin_orCat, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_origin_orCat = { + DataAttributeModelType, + "orCat", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_origin, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_origin_orIdent, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_origin_orIdent = { + DataAttributeModelType, + "orIdent", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_origin, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_OCTET_STRING_64, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_ctlNum = { + DataAttributeModelType, + "ctlNum", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_T, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_INT8U, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_T = { + DataAttributeModelType, + "T", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_Test, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_Test = { + DataAttributeModelType, + "Test", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_Check, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_Check = { + DataAttributeModelType, + "Check", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_CHECK, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_ctlModel = { + DataAttributeModelType, + "ctlModel", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq_t, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_EdtReq, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_DsaReq = { + DataObjectModelType, + "DsaReq", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_SchdPrio, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq_stVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper = { + DataAttributeModelType, + "Oper", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq_ctlModel, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_ctlVal, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_ctlVal = { + DataAttributeModelType, + "ctlVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_origin, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_origin = { + DataAttributeModelType, + "origin", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_ctlNum, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_origin_orCat, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_origin_orCat = { + DataAttributeModelType, + "orCat", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_origin, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_origin_orIdent, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_origin_orIdent = { + DataAttributeModelType, + "orIdent", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_origin, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_OCTET_STRING_64, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_ctlNum = { + DataAttributeModelType, + "ctlNum", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_T, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_INT8U, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_T = { + DataAttributeModelType, + "T", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_Test, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_Test = { + DataAttributeModelType, + "Test", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_Check, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_Check = { + DataAttributeModelType, + "Check", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_CHECK, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_ctlModel = { + DataAttributeModelType, + "ctlModel", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq_t, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_DsaReq, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_SchdPrio = { + DataObjectModelType, + "SchdPrio", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_NumEntr, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_SchdPrio_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdPrio_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_SchdPrio, + NULL, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_NumEntr = { + DataObjectModelType, + "NumEntr", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_SchdIntv, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_NumEntr_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_NumEntr_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_NumEntr, + NULL, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_SchdIntv = { + DataObjectModelType, + "SchdIntv", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG1, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_SchdIntv_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdIntv_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_SchdIntv, + NULL, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG1 = { + DataObjectModelType, + "ValSPG1", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG1_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG1_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG1, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG2 = { + DataObjectModelType, + "ValSPG2", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG3, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG2_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG2_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG2, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG3 = { + DataObjectModelType, + "ValSPG3", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG4, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG3_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG3_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG3, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG4 = { + DataObjectModelType, + "ValSPG4", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG5, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG4_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG4_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG4, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG5 = { + DataObjectModelType, + "ValSPG5", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG6, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG5_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG5_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG5, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG6 = { + DataObjectModelType, + "ValSPG6", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG7, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG6_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG6_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG6, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG7 = { + DataObjectModelType, + "ValSPG7", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG8, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG7_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG7_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG7, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG8 = { + DataObjectModelType, + "ValSPG8", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG9, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG8_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG8_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG8, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG9 = { + DataObjectModelType, + "ValSPG9", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG10, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG9_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG9_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG9, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG10 = { + DataObjectModelType, + "ValSPG10", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG11, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG10_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG10_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG10, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG11 = { + DataObjectModelType, + "ValSPG11", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG12, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG11_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG11_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG11, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG12 = { + DataObjectModelType, + "ValSPG12", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG13, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG12_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG12_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG12, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG13 = { + DataObjectModelType, + "ValSPG13", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG14, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG13_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG13_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG13, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG14 = { + DataObjectModelType, + "ValSPG14", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG15, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG14_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG14_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG14, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG15 = { + DataObjectModelType, + "ValSPG15", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG16, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG15_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG15_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG15, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG16 = { + DataObjectModelType, + "ValSPG16", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG17, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG16_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG16_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG16, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG17 = { + DataObjectModelType, + "ValSPG17", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG18, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG17_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG17_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG17, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG18 = { + DataObjectModelType, + "ValSPG18", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG19, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG18_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG18_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG18, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG19 = { + DataObjectModelType, + "ValSPG19", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG20, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG19_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG19_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG19, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG20 = { + DataObjectModelType, + "ValSPG20", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG21, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG20_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG20_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG20, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG21 = { + DataObjectModelType, + "ValSPG21", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG22, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG21_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG21_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG21, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG22 = { + DataObjectModelType, + "ValSPG22", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG23, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG22_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG22_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG22, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG23 = { + DataObjectModelType, + "ValSPG23", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG24, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG23_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG23_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG23, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG24 = { + DataObjectModelType, + "ValSPG24", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG25, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG24_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG24_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG24, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG25 = { + DataObjectModelType, + "ValSPG25", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG26, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG25_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG25_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG25, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG26 = { + DataObjectModelType, + "ValSPG26", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG27, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG26_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG26_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG26, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG27 = { + DataObjectModelType, + "ValSPG27", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG28, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG27_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG27_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG27, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG28 = { + DataObjectModelType, + "ValSPG28", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG29, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG28_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG28_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG28, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG29 = { + DataObjectModelType, + "ValSPG29", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG30, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG29_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG29_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG29, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG30 = { + DataObjectModelType, + "ValSPG30", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG31, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG30_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG30_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG30, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG31 = { + DataObjectModelType, + "ValSPG31", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG32, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG31_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG31_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG31, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG32 = { + DataObjectModelType, + "ValSPG32", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG33, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG32_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG32_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG32, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG33 = { + DataObjectModelType, + "ValSPG33", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG34, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG33_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG33_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG33, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG34 = { + DataObjectModelType, + "ValSPG34", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG35, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG34_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG34_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG34, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG35 = { + DataObjectModelType, + "ValSPG35", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG36, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG35_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG35_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG35, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG36 = { + DataObjectModelType, + "ValSPG36", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG37, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG36_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG36_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG36, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG37 = { + DataObjectModelType, + "ValSPG37", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG38, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG37_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG37_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG37, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG38 = { + DataObjectModelType, + "ValSPG38", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG39, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG38_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG38_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG38, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG39 = { + DataObjectModelType, + "ValSPG39", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG40, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG39_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG39_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG39, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG40 = { + DataObjectModelType, + "ValSPG40", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG41, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG40_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG40_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG40, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG41 = { + DataObjectModelType, + "ValSPG41", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG42, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG41_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG41_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG41, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG42 = { + DataObjectModelType, + "ValSPG42", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG43, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG42_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG42_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG42, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG43 = { + DataObjectModelType, + "ValSPG43", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG44, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG43_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG43_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG43, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG44 = { + DataObjectModelType, + "ValSPG44", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG45, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG44_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG44_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG44, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG45 = { + DataObjectModelType, + "ValSPG45", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG46, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG45_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG45_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG45, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG46 = { + DataObjectModelType, + "ValSPG46", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG47, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG46_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG46_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG46, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG47 = { + DataObjectModelType, + "ValSPG47", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG48, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG47_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG47_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG47, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG48 = { + DataObjectModelType, + "ValSPG48", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG49, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG48_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG48_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG48, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG49 = { + DataObjectModelType, + "ValSPG49", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG50, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG49_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG49_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG49, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG50 = { + DataObjectModelType, + "ValSPG50", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG51, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG50_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG50_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG50, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG51 = { + DataObjectModelType, + "ValSPG51", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG52, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG51_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG51_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG51, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG52 = { + DataObjectModelType, + "ValSPG52", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG53, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG52_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG52_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG52, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG53 = { + DataObjectModelType, + "ValSPG53", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG54, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG53_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG53_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG53, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG54 = { + DataObjectModelType, + "ValSPG54", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG55, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG54_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG54_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG54, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG55 = { + DataObjectModelType, + "ValSPG55", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG56, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG55_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG55_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG55, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG56 = { + DataObjectModelType, + "ValSPG56", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG57, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG56_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG56_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG56, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG57 = { + DataObjectModelType, + "ValSPG57", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG58, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG57_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG57_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG57, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG58 = { + DataObjectModelType, + "ValSPG58", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG59, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG58_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG58_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG58, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG59 = { + DataObjectModelType, + "ValSPG59", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG60, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG59_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG59_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG59, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG60 = { + DataObjectModelType, + "ValSPG60", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_StrTm, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG60_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG60_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_ValSPG60, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_StrTm = { + DataObjectModelType, + "StrTm", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_IntvPer, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_StrTm_setTm, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setTm = { + DataAttributeModelType, + "setTm", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_StrTm, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_StrTm_setCal, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_TIMESTAMP, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal = { + DataAttributeModelType, + "setCal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_StrTm, + NULL, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_occ, + 0, + IEC61850_FC_SP, + IEC61850_CONSTRUCTED, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_occ = { + DataAttributeModelType, + "occ", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_StrTm_setCal, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_occType, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_INT16U, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_occType = { + DataAttributeModelType, + "occType", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_StrTm_setCal, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_occPer, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_ENUMERATED, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_occPer = { + DataAttributeModelType, + "occPer", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_StrTm_setCal, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_weekDay, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_ENUMERATED, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_weekDay = { + DataAttributeModelType, + "weekDay", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_StrTm_setCal, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_month, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_ENUMERATED, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_month = { + DataAttributeModelType, + "month", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_StrTm_setCal, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_day, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_ENUMERATED, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_day = { + DataAttributeModelType, + "day", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_StrTm_setCal, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_hr, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_INT8U, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_hr = { + DataAttributeModelType, + "hr", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_StrTm_setCal, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_mn, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_INT8U, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_mn = { + DataAttributeModelType, + "mn", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_StrTm_setCal, + NULL, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_INT8U, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_IntvPer = { + DataObjectModelType, + "IntvPer", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_IntvTyp, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_IntvPer_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_IntvPer_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_IntvPer, + NULL, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_IntvTyp = { + DataObjectModelType, + "IntvTyp", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_SchdReuse, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_IntvTyp_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_IntvTyp_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_IntvTyp, + NULL, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_ENUMERATED, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_T60S_FSCH2_SchdReuse = { + DataObjectModelType, + "SchdReuse", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2, + NULL, + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_SchdReuse_setVal, + 0 +}; + +DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdReuse_setVal = { + DataAttributeModelType, + "setVal", + (ModelNode*) &iedModel_GenericIO_T60S_FSCH2_SchdReuse, + NULL, + NULL, + 0, + IEC61850_FC_SG, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +LogicalNode iedModel_GenericIO_GGIO_FSCC1 = { + LogicalNodeModelType, + "GGIO_FSCC1", + (ModelNode*) &iedModel_GenericIO, + NULL, + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1_Beh, +}; + +DataObject iedModel_GenericIO_GGIO_FSCC1_Beh = { + DataObjectModelType, + "Beh", + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1, + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1_ActSchdRef, + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1_Beh_stVal, + 0 +}; + +DataAttribute iedModel_GenericIO_GGIO_FSCC1_Beh_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1_Beh, + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1_Beh_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_ENUMERATED, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_GGIO_FSCC1_Beh_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1_Beh, + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1_Beh_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_GGIO_FSCC1_Beh_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1_Beh, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_GenericIO_GGIO_FSCC1_ActSchdRef = { + DataObjectModelType, + "ActSchdRef", + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1, + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1_CtlEnt, + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1_ActSchdRef_stVal, + 0 +}; + +DataAttribute iedModel_GenericIO_GGIO_FSCC1_ActSchdRef_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1_ActSchdRef, + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1_ActSchdRef_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_VISIBLE_STRING_129, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_GGIO_FSCC1_ActSchdRef_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1_ActSchdRef, + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1_ActSchdRef_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_GenericIO_GGIO_FSCC1_ActSchdRef_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1_ActSchdRef, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_GenericIO_GGIO_FSCC1_CtlEnt = { + DataObjectModelType, + "CtlEnt", + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1, + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1_Schd1, + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1_CtlEnt_setSrcRef, + 0 +}; + +DataAttribute iedModel_GenericIO_GGIO_FSCC1_CtlEnt_setSrcRef = { + DataAttributeModelType, + "setSrcRef", + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1_CtlEnt, + NULL, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_VISIBLE_STRING_129, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_GGIO_FSCC1_Schd1 = { + DataObjectModelType, + "Schd1", + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1, + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1_Schd2, + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1_Schd1_setSrcRef, + 0 +}; + +DataAttribute iedModel_GenericIO_GGIO_FSCC1_Schd1_setSrcRef = { + DataAttributeModelType, + "setSrcRef", + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1_Schd1, + NULL, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_VISIBLE_STRING_129, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataObject iedModel_GenericIO_GGIO_FSCC1_Schd2 = { + DataObjectModelType, + "Schd2", + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1, + NULL, + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1_Schd2_setSrcRef, + 0 +}; + +DataAttribute iedModel_GenericIO_GGIO_FSCC1_Schd2_setSrcRef = { + DataAttributeModelType, + "setSrcRef", + (ModelNode*) &iedModel_GenericIO_GGIO_FSCC1_Schd2, + NULL, + NULL, + 0, + IEC61850_FC_SP, + IEC61850_VISIBLE_STRING_129, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + extern ReportControlBlock iedModel_GenericIO_LLN0_report0; extern ReportControlBlock iedModel_GenericIO_LLN0_report1; extern ReportControlBlock iedModel_GenericIO_LLN0_report2; @@ -2407,7 +7583,7 @@ ReportControlBlock iedModel_GenericIO_LLN0_report4 = {&iedModel_GenericIO_LLN0, IedModel iedModel = { - "beagle", + "Template", &iedModel_GenericIO, &iedModelds_GenericIO_LLN0_Events, &iedModel_GenericIO_LLN0_report0, diff --git a/demos/beaglebone/static_model.h b/demos/beaglebone/static_model.h index 8409861..ff5ef52 100644 --- a/demos/beaglebone/static_model.h +++ b/demos/beaglebone/static_model.h @@ -1,7 +1,7 @@ /* * static_model.h * - * automatically generated from beagle_demo.iid + * automatically generated from beagle_demo.icd */ #ifndef STATIC_MODEL_H_ @@ -201,6 +201,453 @@ extern DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_T; extern DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_Test; extern DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_Check; extern DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_ctlModel; +extern LogicalNode iedModel_GenericIO_T60S_FSCH1; +extern DataObject iedModel_GenericIO_T60S_FSCH1_Beh; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_Beh_stVal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_Beh_q; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_Beh_t; +extern DataObject iedModel_GenericIO_T60S_FSCH1_SchdSt; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdSt_stVal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdSt_q; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdSt_t; +extern DataObject iedModel_GenericIO_T60S_FSCH1_SchdEntr; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdEntr_stVal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdEntr_q; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdEntr_t; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPS; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPS_stVal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPS_q; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPS_t; +extern DataObject iedModel_GenericIO_T60S_FSCH1_VldReq; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_stVal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_q; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_ctlVal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_origin; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_origin_orCat; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_origin_orIdent; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_ctlNum; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_T; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_Test; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_Check; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_ctlModel; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_t; +extern DataObject iedModel_GenericIO_T60S_FSCH1_EnaReq; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_stVal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_q; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_ctlVal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_origin; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_origin_orCat; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_origin_orIdent; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_ctlNum; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_T; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_Test; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_Check; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_ctlModel; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_t; +extern DataObject iedModel_GenericIO_T60S_FSCH1_EdtReq; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_stVal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_q; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_ctlVal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_origin; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_origin_orCat; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_origin_orIdent; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_ctlNum; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_T; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_Test; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_Check; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_ctlModel; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_t; +extern DataObject iedModel_GenericIO_T60S_FSCH1_DsaReq; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_stVal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_q; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_ctlVal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_origin; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_origin_orCat; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_origin_orIdent; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_ctlNum; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_T; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_Test; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_Check; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_ctlModel; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_t; +extern DataObject iedModel_GenericIO_T60S_FSCH1_SchdPrio; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdPrio_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_NumEntr; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_NumEntr_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_SchdIntv; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdIntv_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG1; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG1_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG2; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG2_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG3; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG3_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG4; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG4_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG5; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG5_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG6; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG6_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG7; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG7_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG8; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG8_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG9; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG9_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG10; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG10_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG11; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG11_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG12; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG12_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG13; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG13_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG14; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG14_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG15; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG15_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG16; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG16_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG17; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG17_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG18; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG18_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG19; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG19_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG20; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG20_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG21; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG21_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG22; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG22_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG23; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG23_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG24; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG24_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG25; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG25_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG26; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG26_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG27; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG27_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG28; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG28_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG29; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG29_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG30; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG30_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG31; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG31_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG32; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG32_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG33; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG33_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG34; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG34_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG35; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG35_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG36; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG36_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG37; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG37_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG38; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG38_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG39; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG39_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG40; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG40_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG41; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG41_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG42; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG42_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG43; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG43_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG44; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG44_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG45; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG45_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG46; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG46_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG47; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG47_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG48; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG48_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG49; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG49_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG50; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG50_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG51; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG51_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG52; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG52_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG53; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG53_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG54; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG54_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG55; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG55_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG56; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG56_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG57; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG57_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG58; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG58_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG59; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG59_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG60; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG60_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_StrTm; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setTm; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_occ; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_occType; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_occPer; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_weekDay; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_month; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_day; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_hr; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_mn; +extern DataObject iedModel_GenericIO_T60S_FSCH1_IntvPer; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_IntvPer_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_IntvTyp; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_IntvTyp_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH1_SchdReuse; +extern DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdReuse_setVal; +extern LogicalNode iedModel_GenericIO_T60S_FSCH2; +extern DataObject iedModel_GenericIO_T60S_FSCH2_Beh; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_Beh_stVal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_Beh_q; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_Beh_t; +extern DataObject iedModel_GenericIO_T60S_FSCH2_SchdSt; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdSt_stVal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdSt_q; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdSt_t; +extern DataObject iedModel_GenericIO_T60S_FSCH2_SchdEntr; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdEntr_stVal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdEntr_q; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdEntr_t; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPS; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPS_stVal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPS_q; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPS_t; +extern DataObject iedModel_GenericIO_T60S_FSCH2_VldReq; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_stVal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_q; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_ctlVal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_origin; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_origin_orCat; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_origin_orIdent; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_ctlNum; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_T; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_Test; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_Check; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_ctlModel; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_t; +extern DataObject iedModel_GenericIO_T60S_FSCH2_EnaReq; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_stVal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_q; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_ctlVal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_origin; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_origin_orCat; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_origin_orIdent; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_ctlNum; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_T; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_Test; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_Check; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_ctlModel; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_t; +extern DataObject iedModel_GenericIO_T60S_FSCH2_EdtReq; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_stVal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_q; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_ctlVal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_origin; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_origin_orCat; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_origin_orIdent; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_ctlNum; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_T; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_Test; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_Check; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_ctlModel; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_t; +extern DataObject iedModel_GenericIO_T60S_FSCH2_DsaReq; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_stVal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_q; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_ctlVal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_origin; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_origin_orCat; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_origin_orIdent; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_ctlNum; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_T; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_Test; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_Check; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_ctlModel; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_t; +extern DataObject iedModel_GenericIO_T60S_FSCH2_SchdPrio; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdPrio_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_NumEntr; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_NumEntr_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_SchdIntv; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdIntv_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG1; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG1_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG2; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG2_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG3; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG3_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG4; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG4_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG5; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG5_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG6; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG6_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG7; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG7_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG8; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG8_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG9; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG9_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG10; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG10_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG11; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG11_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG12; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG12_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG13; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG13_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG14; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG14_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG15; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG15_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG16; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG16_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG17; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG17_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG18; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG18_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG19; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG19_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG20; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG20_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG21; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG21_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG22; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG22_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG23; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG23_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG24; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG24_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG25; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG25_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG26; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG26_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG27; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG27_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG28; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG28_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG29; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG29_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG30; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG30_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG31; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG31_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG32; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG32_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG33; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG33_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG34; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG34_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG35; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG35_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG36; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG36_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG37; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG37_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG38; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG38_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG39; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG39_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG40; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG40_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG41; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG41_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG42; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG42_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG43; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG43_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG44; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG44_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG45; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG45_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG46; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG46_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG47; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG47_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG48; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG48_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG49; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG49_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG50; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG50_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG51; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG51_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG52; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG52_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG53; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG53_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG54; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG54_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG55; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG55_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG56; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG56_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG57; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG57_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG58; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG58_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG59; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG59_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG60; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG60_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_StrTm; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setTm; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_occ; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_occType; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_occPer; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_weekDay; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_month; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_day; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_hr; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_mn; +extern DataObject iedModel_GenericIO_T60S_FSCH2_IntvPer; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_IntvPer_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_IntvTyp; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_IntvTyp_setVal; +extern DataObject iedModel_GenericIO_T60S_FSCH2_SchdReuse; +extern DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdReuse_setVal; +extern LogicalNode iedModel_GenericIO_GGIO_FSCC1; +extern DataObject iedModel_GenericIO_GGIO_FSCC1_Beh; +extern DataAttribute iedModel_GenericIO_GGIO_FSCC1_Beh_stVal; +extern DataAttribute iedModel_GenericIO_GGIO_FSCC1_Beh_q; +extern DataAttribute iedModel_GenericIO_GGIO_FSCC1_Beh_t; +extern DataObject iedModel_GenericIO_GGIO_FSCC1_ActSchdRef; +extern DataAttribute iedModel_GenericIO_GGIO_FSCC1_ActSchdRef_stVal; +extern DataAttribute iedModel_GenericIO_GGIO_FSCC1_ActSchdRef_q; +extern DataAttribute iedModel_GenericIO_GGIO_FSCC1_ActSchdRef_t; +extern DataObject iedModel_GenericIO_GGIO_FSCC1_CtlEnt; +extern DataAttribute iedModel_GenericIO_GGIO_FSCC1_CtlEnt_setSrcRef; +extern DataObject iedModel_GenericIO_GGIO_FSCC1_Schd1; +extern DataAttribute iedModel_GenericIO_GGIO_FSCC1_Schd1_setSrcRef; +extern DataObject iedModel_GenericIO_GGIO_FSCC1_Schd2; +extern DataAttribute iedModel_GenericIO_GGIO_FSCC1_Schd2_setSrcRef; @@ -394,6 +841,453 @@ extern DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_ctlModel; #define IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs_Oper_Test (&iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_Test) #define IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs_Oper_Check (&iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_Check) #define IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs_ctlModel (&iedModel_GenericIO_TIM_GAPC1_OpCntRs_ctlModel) +#define IEDMODEL_GenericIO_T60S_FSCH1 (&iedModel_GenericIO_T60S_FSCH1) +#define IEDMODEL_GenericIO_T60S_FSCH1_Beh (&iedModel_GenericIO_T60S_FSCH1_Beh) +#define IEDMODEL_GenericIO_T60S_FSCH1_Beh_stVal (&iedModel_GenericIO_T60S_FSCH1_Beh_stVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_Beh_q (&iedModel_GenericIO_T60S_FSCH1_Beh_q) +#define IEDMODEL_GenericIO_T60S_FSCH1_Beh_t (&iedModel_GenericIO_T60S_FSCH1_Beh_t) +#define IEDMODEL_GenericIO_T60S_FSCH1_SchdSt (&iedModel_GenericIO_T60S_FSCH1_SchdSt) +#define IEDMODEL_GenericIO_T60S_FSCH1_SchdSt_stVal (&iedModel_GenericIO_T60S_FSCH1_SchdSt_stVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_SchdSt_q (&iedModel_GenericIO_T60S_FSCH1_SchdSt_q) +#define IEDMODEL_GenericIO_T60S_FSCH1_SchdSt_t (&iedModel_GenericIO_T60S_FSCH1_SchdSt_t) +#define IEDMODEL_GenericIO_T60S_FSCH1_SchdEntr (&iedModel_GenericIO_T60S_FSCH1_SchdEntr) +#define IEDMODEL_GenericIO_T60S_FSCH1_SchdEntr_stVal (&iedModel_GenericIO_T60S_FSCH1_SchdEntr_stVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_SchdEntr_q (&iedModel_GenericIO_T60S_FSCH1_SchdEntr_q) +#define IEDMODEL_GenericIO_T60S_FSCH1_SchdEntr_t (&iedModel_GenericIO_T60S_FSCH1_SchdEntr_t) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPS (&iedModel_GenericIO_T60S_FSCH1_ValSPS) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPS_stVal (&iedModel_GenericIO_T60S_FSCH1_ValSPS_stVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPS_q (&iedModel_GenericIO_T60S_FSCH1_ValSPS_q) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPS_t (&iedModel_GenericIO_T60S_FSCH1_ValSPS_t) +#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq (&iedModel_GenericIO_T60S_FSCH1_VldReq) +#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_stVal (&iedModel_GenericIO_T60S_FSCH1_VldReq_stVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_q (&iedModel_GenericIO_T60S_FSCH1_VldReq_q) +#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_Oper (&iedModel_GenericIO_T60S_FSCH1_VldReq_Oper) +#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_Oper_ctlVal (&iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_ctlVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_Oper_origin (&iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_origin) +#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_Oper_origin_orCat (&iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_origin_orCat) +#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_Oper_origin_orIdent (&iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_origin_orIdent) +#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_Oper_ctlNum (&iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_ctlNum) +#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_Oper_T (&iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_T) +#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_Oper_Test (&iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_Test) +#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_Oper_Check (&iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_Check) +#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_ctlModel (&iedModel_GenericIO_T60S_FSCH1_VldReq_ctlModel) +#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_t (&iedModel_GenericIO_T60S_FSCH1_VldReq_t) +#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq (&iedModel_GenericIO_T60S_FSCH1_EnaReq) +#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_stVal (&iedModel_GenericIO_T60S_FSCH1_EnaReq_stVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_q (&iedModel_GenericIO_T60S_FSCH1_EnaReq_q) +#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_Oper (&iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper) +#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_Oper_ctlVal (&iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_ctlVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_Oper_origin (&iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_origin) +#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_Oper_origin_orCat (&iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_origin_orCat) +#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_Oper_origin_orIdent (&iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_origin_orIdent) +#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_Oper_ctlNum (&iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_ctlNum) +#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_Oper_T (&iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_T) +#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_Oper_Test (&iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_Test) +#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_Oper_Check (&iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_Check) +#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_ctlModel (&iedModel_GenericIO_T60S_FSCH1_EnaReq_ctlModel) +#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_t (&iedModel_GenericIO_T60S_FSCH1_EnaReq_t) +#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq (&iedModel_GenericIO_T60S_FSCH1_EdtReq) +#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_stVal (&iedModel_GenericIO_T60S_FSCH1_EdtReq_stVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_q (&iedModel_GenericIO_T60S_FSCH1_EdtReq_q) +#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_Oper (&iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper) +#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_Oper_ctlVal (&iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_ctlVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_Oper_origin (&iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_origin) +#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_Oper_origin_orCat (&iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_origin_orCat) +#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_Oper_origin_orIdent (&iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_origin_orIdent) +#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_Oper_ctlNum (&iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_ctlNum) +#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_Oper_T (&iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_T) +#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_Oper_Test (&iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_Test) +#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_Oper_Check (&iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_Check) +#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_ctlModel (&iedModel_GenericIO_T60S_FSCH1_EdtReq_ctlModel) +#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_t (&iedModel_GenericIO_T60S_FSCH1_EdtReq_t) +#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq (&iedModel_GenericIO_T60S_FSCH1_DsaReq) +#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_stVal (&iedModel_GenericIO_T60S_FSCH1_DsaReq_stVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_q (&iedModel_GenericIO_T60S_FSCH1_DsaReq_q) +#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_Oper (&iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper) +#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_Oper_ctlVal (&iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_ctlVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_Oper_origin (&iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_origin) +#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_Oper_origin_orCat (&iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_origin_orCat) +#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_Oper_origin_orIdent (&iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_origin_orIdent) +#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_Oper_ctlNum (&iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_ctlNum) +#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_Oper_T (&iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_T) +#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_Oper_Test (&iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_Test) +#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_Oper_Check (&iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_Check) +#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_ctlModel (&iedModel_GenericIO_T60S_FSCH1_DsaReq_ctlModel) +#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_t (&iedModel_GenericIO_T60S_FSCH1_DsaReq_t) +#define IEDMODEL_GenericIO_T60S_FSCH1_SchdPrio (&iedModel_GenericIO_T60S_FSCH1_SchdPrio) +#define IEDMODEL_GenericIO_T60S_FSCH1_SchdPrio_setVal (&iedModel_GenericIO_T60S_FSCH1_SchdPrio_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_NumEntr (&iedModel_GenericIO_T60S_FSCH1_NumEntr) +#define IEDMODEL_GenericIO_T60S_FSCH1_NumEntr_setVal (&iedModel_GenericIO_T60S_FSCH1_NumEntr_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_SchdIntv (&iedModel_GenericIO_T60S_FSCH1_SchdIntv) +#define IEDMODEL_GenericIO_T60S_FSCH1_SchdIntv_setVal (&iedModel_GenericIO_T60S_FSCH1_SchdIntv_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG1 (&iedModel_GenericIO_T60S_FSCH1_ValSPG1) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG1_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG1_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG2 (&iedModel_GenericIO_T60S_FSCH1_ValSPG2) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG2_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG2_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG3 (&iedModel_GenericIO_T60S_FSCH1_ValSPG3) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG3_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG3_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG4 (&iedModel_GenericIO_T60S_FSCH1_ValSPG4) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG4_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG4_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG5 (&iedModel_GenericIO_T60S_FSCH1_ValSPG5) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG5_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG5_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG6 (&iedModel_GenericIO_T60S_FSCH1_ValSPG6) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG6_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG6_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG7 (&iedModel_GenericIO_T60S_FSCH1_ValSPG7) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG7_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG7_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG8 (&iedModel_GenericIO_T60S_FSCH1_ValSPG8) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG8_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG8_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG9 (&iedModel_GenericIO_T60S_FSCH1_ValSPG9) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG9_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG9_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG10 (&iedModel_GenericIO_T60S_FSCH1_ValSPG10) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG10_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG10_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG11 (&iedModel_GenericIO_T60S_FSCH1_ValSPG11) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG11_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG11_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG12 (&iedModel_GenericIO_T60S_FSCH1_ValSPG12) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG12_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG12_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG13 (&iedModel_GenericIO_T60S_FSCH1_ValSPG13) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG13_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG13_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG14 (&iedModel_GenericIO_T60S_FSCH1_ValSPG14) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG14_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG14_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG15 (&iedModel_GenericIO_T60S_FSCH1_ValSPG15) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG15_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG15_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG16 (&iedModel_GenericIO_T60S_FSCH1_ValSPG16) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG16_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG16_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG17 (&iedModel_GenericIO_T60S_FSCH1_ValSPG17) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG17_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG17_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG18 (&iedModel_GenericIO_T60S_FSCH1_ValSPG18) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG18_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG18_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG19 (&iedModel_GenericIO_T60S_FSCH1_ValSPG19) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG19_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG19_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG20 (&iedModel_GenericIO_T60S_FSCH1_ValSPG20) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG20_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG20_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG21 (&iedModel_GenericIO_T60S_FSCH1_ValSPG21) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG21_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG21_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG22 (&iedModel_GenericIO_T60S_FSCH1_ValSPG22) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG22_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG22_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG23 (&iedModel_GenericIO_T60S_FSCH1_ValSPG23) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG23_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG23_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG24 (&iedModel_GenericIO_T60S_FSCH1_ValSPG24) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG24_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG24_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG25 (&iedModel_GenericIO_T60S_FSCH1_ValSPG25) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG25_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG25_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG26 (&iedModel_GenericIO_T60S_FSCH1_ValSPG26) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG26_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG26_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG27 (&iedModel_GenericIO_T60S_FSCH1_ValSPG27) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG27_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG27_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG28 (&iedModel_GenericIO_T60S_FSCH1_ValSPG28) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG28_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG28_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG29 (&iedModel_GenericIO_T60S_FSCH1_ValSPG29) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG29_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG29_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG30 (&iedModel_GenericIO_T60S_FSCH1_ValSPG30) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG30_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG30_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG31 (&iedModel_GenericIO_T60S_FSCH1_ValSPG31) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG31_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG31_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG32 (&iedModel_GenericIO_T60S_FSCH1_ValSPG32) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG32_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG32_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG33 (&iedModel_GenericIO_T60S_FSCH1_ValSPG33) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG33_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG33_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG34 (&iedModel_GenericIO_T60S_FSCH1_ValSPG34) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG34_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG34_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG35 (&iedModel_GenericIO_T60S_FSCH1_ValSPG35) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG35_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG35_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG36 (&iedModel_GenericIO_T60S_FSCH1_ValSPG36) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG36_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG36_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG37 (&iedModel_GenericIO_T60S_FSCH1_ValSPG37) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG37_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG37_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG38 (&iedModel_GenericIO_T60S_FSCH1_ValSPG38) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG38_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG38_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG39 (&iedModel_GenericIO_T60S_FSCH1_ValSPG39) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG39_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG39_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG40 (&iedModel_GenericIO_T60S_FSCH1_ValSPG40) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG40_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG40_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG41 (&iedModel_GenericIO_T60S_FSCH1_ValSPG41) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG41_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG41_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG42 (&iedModel_GenericIO_T60S_FSCH1_ValSPG42) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG42_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG42_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG43 (&iedModel_GenericIO_T60S_FSCH1_ValSPG43) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG43_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG43_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG44 (&iedModel_GenericIO_T60S_FSCH1_ValSPG44) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG44_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG44_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG45 (&iedModel_GenericIO_T60S_FSCH1_ValSPG45) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG45_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG45_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG46 (&iedModel_GenericIO_T60S_FSCH1_ValSPG46) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG46_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG46_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG47 (&iedModel_GenericIO_T60S_FSCH1_ValSPG47) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG47_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG47_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG48 (&iedModel_GenericIO_T60S_FSCH1_ValSPG48) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG48_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG48_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG49 (&iedModel_GenericIO_T60S_FSCH1_ValSPG49) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG49_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG49_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG50 (&iedModel_GenericIO_T60S_FSCH1_ValSPG50) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG50_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG50_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG51 (&iedModel_GenericIO_T60S_FSCH1_ValSPG51) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG51_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG51_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG52 (&iedModel_GenericIO_T60S_FSCH1_ValSPG52) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG52_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG52_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG53 (&iedModel_GenericIO_T60S_FSCH1_ValSPG53) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG53_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG53_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG54 (&iedModel_GenericIO_T60S_FSCH1_ValSPG54) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG54_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG54_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG55 (&iedModel_GenericIO_T60S_FSCH1_ValSPG55) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG55_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG55_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG56 (&iedModel_GenericIO_T60S_FSCH1_ValSPG56) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG56_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG56_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG57 (&iedModel_GenericIO_T60S_FSCH1_ValSPG57) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG57_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG57_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG58 (&iedModel_GenericIO_T60S_FSCH1_ValSPG58) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG58_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG58_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG59 (&iedModel_GenericIO_T60S_FSCH1_ValSPG59) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG59_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG59_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG60 (&iedModel_GenericIO_T60S_FSCH1_ValSPG60) +#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG60_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG60_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_StrTm (&iedModel_GenericIO_T60S_FSCH1_StrTm) +#define IEDMODEL_GenericIO_T60S_FSCH1_StrTm_setTm (&iedModel_GenericIO_T60S_FSCH1_StrTm_setTm) +#define IEDMODEL_GenericIO_T60S_FSCH1_StrTm_setCal (&iedModel_GenericIO_T60S_FSCH1_StrTm_setCal) +#define IEDMODEL_GenericIO_T60S_FSCH1_StrTm_setCal_occ (&iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_occ) +#define IEDMODEL_GenericIO_T60S_FSCH1_StrTm_setCal_occType (&iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_occType) +#define IEDMODEL_GenericIO_T60S_FSCH1_StrTm_setCal_occPer (&iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_occPer) +#define IEDMODEL_GenericIO_T60S_FSCH1_StrTm_setCal_weekDay (&iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_weekDay) +#define IEDMODEL_GenericIO_T60S_FSCH1_StrTm_setCal_month (&iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_month) +#define IEDMODEL_GenericIO_T60S_FSCH1_StrTm_setCal_day (&iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_day) +#define IEDMODEL_GenericIO_T60S_FSCH1_StrTm_setCal_hr (&iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_hr) +#define IEDMODEL_GenericIO_T60S_FSCH1_StrTm_setCal_mn (&iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_mn) +#define IEDMODEL_GenericIO_T60S_FSCH1_IntvPer (&iedModel_GenericIO_T60S_FSCH1_IntvPer) +#define IEDMODEL_GenericIO_T60S_FSCH1_IntvPer_setVal (&iedModel_GenericIO_T60S_FSCH1_IntvPer_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_IntvTyp (&iedModel_GenericIO_T60S_FSCH1_IntvTyp) +#define IEDMODEL_GenericIO_T60S_FSCH1_IntvTyp_setVal (&iedModel_GenericIO_T60S_FSCH1_IntvTyp_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH1_SchdReuse (&iedModel_GenericIO_T60S_FSCH1_SchdReuse) +#define IEDMODEL_GenericIO_T60S_FSCH1_SchdReuse_setVal (&iedModel_GenericIO_T60S_FSCH1_SchdReuse_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2 (&iedModel_GenericIO_T60S_FSCH2) +#define IEDMODEL_GenericIO_T60S_FSCH2_Beh (&iedModel_GenericIO_T60S_FSCH2_Beh) +#define IEDMODEL_GenericIO_T60S_FSCH2_Beh_stVal (&iedModel_GenericIO_T60S_FSCH2_Beh_stVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_Beh_q (&iedModel_GenericIO_T60S_FSCH2_Beh_q) +#define IEDMODEL_GenericIO_T60S_FSCH2_Beh_t (&iedModel_GenericIO_T60S_FSCH2_Beh_t) +#define IEDMODEL_GenericIO_T60S_FSCH2_SchdSt (&iedModel_GenericIO_T60S_FSCH2_SchdSt) +#define IEDMODEL_GenericIO_T60S_FSCH2_SchdSt_stVal (&iedModel_GenericIO_T60S_FSCH2_SchdSt_stVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_SchdSt_q (&iedModel_GenericIO_T60S_FSCH2_SchdSt_q) +#define IEDMODEL_GenericIO_T60S_FSCH2_SchdSt_t (&iedModel_GenericIO_T60S_FSCH2_SchdSt_t) +#define IEDMODEL_GenericIO_T60S_FSCH2_SchdEntr (&iedModel_GenericIO_T60S_FSCH2_SchdEntr) +#define IEDMODEL_GenericIO_T60S_FSCH2_SchdEntr_stVal (&iedModel_GenericIO_T60S_FSCH2_SchdEntr_stVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_SchdEntr_q (&iedModel_GenericIO_T60S_FSCH2_SchdEntr_q) +#define IEDMODEL_GenericIO_T60S_FSCH2_SchdEntr_t (&iedModel_GenericIO_T60S_FSCH2_SchdEntr_t) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPS (&iedModel_GenericIO_T60S_FSCH2_ValSPS) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPS_stVal (&iedModel_GenericIO_T60S_FSCH2_ValSPS_stVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPS_q (&iedModel_GenericIO_T60S_FSCH2_ValSPS_q) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPS_t (&iedModel_GenericIO_T60S_FSCH2_ValSPS_t) +#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq (&iedModel_GenericIO_T60S_FSCH2_VldReq) +#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_stVal (&iedModel_GenericIO_T60S_FSCH2_VldReq_stVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_q (&iedModel_GenericIO_T60S_FSCH2_VldReq_q) +#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_Oper (&iedModel_GenericIO_T60S_FSCH2_VldReq_Oper) +#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_Oper_ctlVal (&iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_ctlVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_Oper_origin (&iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_origin) +#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_Oper_origin_orCat (&iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_origin_orCat) +#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_Oper_origin_orIdent (&iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_origin_orIdent) +#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_Oper_ctlNum (&iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_ctlNum) +#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_Oper_T (&iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_T) +#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_Oper_Test (&iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_Test) +#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_Oper_Check (&iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_Check) +#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_ctlModel (&iedModel_GenericIO_T60S_FSCH2_VldReq_ctlModel) +#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_t (&iedModel_GenericIO_T60S_FSCH2_VldReq_t) +#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq (&iedModel_GenericIO_T60S_FSCH2_EnaReq) +#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_stVal (&iedModel_GenericIO_T60S_FSCH2_EnaReq_stVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_q (&iedModel_GenericIO_T60S_FSCH2_EnaReq_q) +#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_Oper (&iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper) +#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_Oper_ctlVal (&iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_ctlVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_Oper_origin (&iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_origin) +#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_Oper_origin_orCat (&iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_origin_orCat) +#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_Oper_origin_orIdent (&iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_origin_orIdent) +#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_Oper_ctlNum (&iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_ctlNum) +#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_Oper_T (&iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_T) +#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_Oper_Test (&iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_Test) +#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_Oper_Check (&iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_Check) +#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_ctlModel (&iedModel_GenericIO_T60S_FSCH2_EnaReq_ctlModel) +#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_t (&iedModel_GenericIO_T60S_FSCH2_EnaReq_t) +#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq (&iedModel_GenericIO_T60S_FSCH2_EdtReq) +#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_stVal (&iedModel_GenericIO_T60S_FSCH2_EdtReq_stVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_q (&iedModel_GenericIO_T60S_FSCH2_EdtReq_q) +#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_Oper (&iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper) +#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_Oper_ctlVal (&iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_ctlVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_Oper_origin (&iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_origin) +#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_Oper_origin_orCat (&iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_origin_orCat) +#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_Oper_origin_orIdent (&iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_origin_orIdent) +#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_Oper_ctlNum (&iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_ctlNum) +#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_Oper_T (&iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_T) +#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_Oper_Test (&iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_Test) +#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_Oper_Check (&iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_Check) +#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_ctlModel (&iedModel_GenericIO_T60S_FSCH2_EdtReq_ctlModel) +#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_t (&iedModel_GenericIO_T60S_FSCH2_EdtReq_t) +#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq (&iedModel_GenericIO_T60S_FSCH2_DsaReq) +#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_stVal (&iedModel_GenericIO_T60S_FSCH2_DsaReq_stVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_q (&iedModel_GenericIO_T60S_FSCH2_DsaReq_q) +#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_Oper (&iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper) +#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_Oper_ctlVal (&iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_ctlVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_Oper_origin (&iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_origin) +#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_Oper_origin_orCat (&iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_origin_orCat) +#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_Oper_origin_orIdent (&iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_origin_orIdent) +#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_Oper_ctlNum (&iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_ctlNum) +#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_Oper_T (&iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_T) +#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_Oper_Test (&iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_Test) +#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_Oper_Check (&iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_Check) +#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_ctlModel (&iedModel_GenericIO_T60S_FSCH2_DsaReq_ctlModel) +#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_t (&iedModel_GenericIO_T60S_FSCH2_DsaReq_t) +#define IEDMODEL_GenericIO_T60S_FSCH2_SchdPrio (&iedModel_GenericIO_T60S_FSCH2_SchdPrio) +#define IEDMODEL_GenericIO_T60S_FSCH2_SchdPrio_setVal (&iedModel_GenericIO_T60S_FSCH2_SchdPrio_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_NumEntr (&iedModel_GenericIO_T60S_FSCH2_NumEntr) +#define IEDMODEL_GenericIO_T60S_FSCH2_NumEntr_setVal (&iedModel_GenericIO_T60S_FSCH2_NumEntr_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_SchdIntv (&iedModel_GenericIO_T60S_FSCH2_SchdIntv) +#define IEDMODEL_GenericIO_T60S_FSCH2_SchdIntv_setVal (&iedModel_GenericIO_T60S_FSCH2_SchdIntv_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG1 (&iedModel_GenericIO_T60S_FSCH2_ValSPG1) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG1_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG1_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG2 (&iedModel_GenericIO_T60S_FSCH2_ValSPG2) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG2_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG2_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG3 (&iedModel_GenericIO_T60S_FSCH2_ValSPG3) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG3_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG3_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG4 (&iedModel_GenericIO_T60S_FSCH2_ValSPG4) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG4_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG4_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG5 (&iedModel_GenericIO_T60S_FSCH2_ValSPG5) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG5_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG5_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG6 (&iedModel_GenericIO_T60S_FSCH2_ValSPG6) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG6_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG6_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG7 (&iedModel_GenericIO_T60S_FSCH2_ValSPG7) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG7_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG7_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG8 (&iedModel_GenericIO_T60S_FSCH2_ValSPG8) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG8_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG8_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG9 (&iedModel_GenericIO_T60S_FSCH2_ValSPG9) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG9_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG9_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG10 (&iedModel_GenericIO_T60S_FSCH2_ValSPG10) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG10_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG10_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG11 (&iedModel_GenericIO_T60S_FSCH2_ValSPG11) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG11_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG11_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG12 (&iedModel_GenericIO_T60S_FSCH2_ValSPG12) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG12_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG12_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG13 (&iedModel_GenericIO_T60S_FSCH2_ValSPG13) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG13_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG13_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG14 (&iedModel_GenericIO_T60S_FSCH2_ValSPG14) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG14_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG14_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG15 (&iedModel_GenericIO_T60S_FSCH2_ValSPG15) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG15_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG15_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG16 (&iedModel_GenericIO_T60S_FSCH2_ValSPG16) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG16_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG16_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG17 (&iedModel_GenericIO_T60S_FSCH2_ValSPG17) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG17_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG17_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG18 (&iedModel_GenericIO_T60S_FSCH2_ValSPG18) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG18_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG18_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG19 (&iedModel_GenericIO_T60S_FSCH2_ValSPG19) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG19_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG19_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG20 (&iedModel_GenericIO_T60S_FSCH2_ValSPG20) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG20_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG20_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG21 (&iedModel_GenericIO_T60S_FSCH2_ValSPG21) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG21_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG21_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG22 (&iedModel_GenericIO_T60S_FSCH2_ValSPG22) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG22_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG22_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG23 (&iedModel_GenericIO_T60S_FSCH2_ValSPG23) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG23_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG23_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG24 (&iedModel_GenericIO_T60S_FSCH2_ValSPG24) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG24_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG24_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG25 (&iedModel_GenericIO_T60S_FSCH2_ValSPG25) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG25_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG25_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG26 (&iedModel_GenericIO_T60S_FSCH2_ValSPG26) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG26_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG26_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG27 (&iedModel_GenericIO_T60S_FSCH2_ValSPG27) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG27_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG27_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG28 (&iedModel_GenericIO_T60S_FSCH2_ValSPG28) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG28_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG28_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG29 (&iedModel_GenericIO_T60S_FSCH2_ValSPG29) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG29_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG29_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG30 (&iedModel_GenericIO_T60S_FSCH2_ValSPG30) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG30_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG30_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG31 (&iedModel_GenericIO_T60S_FSCH2_ValSPG31) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG31_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG31_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG32 (&iedModel_GenericIO_T60S_FSCH2_ValSPG32) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG32_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG32_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG33 (&iedModel_GenericIO_T60S_FSCH2_ValSPG33) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG33_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG33_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG34 (&iedModel_GenericIO_T60S_FSCH2_ValSPG34) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG34_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG34_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG35 (&iedModel_GenericIO_T60S_FSCH2_ValSPG35) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG35_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG35_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG36 (&iedModel_GenericIO_T60S_FSCH2_ValSPG36) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG36_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG36_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG37 (&iedModel_GenericIO_T60S_FSCH2_ValSPG37) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG37_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG37_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG38 (&iedModel_GenericIO_T60S_FSCH2_ValSPG38) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG38_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG38_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG39 (&iedModel_GenericIO_T60S_FSCH2_ValSPG39) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG39_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG39_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG40 (&iedModel_GenericIO_T60S_FSCH2_ValSPG40) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG40_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG40_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG41 (&iedModel_GenericIO_T60S_FSCH2_ValSPG41) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG41_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG41_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG42 (&iedModel_GenericIO_T60S_FSCH2_ValSPG42) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG42_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG42_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG43 (&iedModel_GenericIO_T60S_FSCH2_ValSPG43) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG43_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG43_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG44 (&iedModel_GenericIO_T60S_FSCH2_ValSPG44) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG44_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG44_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG45 (&iedModel_GenericIO_T60S_FSCH2_ValSPG45) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG45_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG45_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG46 (&iedModel_GenericIO_T60S_FSCH2_ValSPG46) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG46_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG46_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG47 (&iedModel_GenericIO_T60S_FSCH2_ValSPG47) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG47_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG47_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG48 (&iedModel_GenericIO_T60S_FSCH2_ValSPG48) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG48_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG48_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG49 (&iedModel_GenericIO_T60S_FSCH2_ValSPG49) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG49_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG49_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG50 (&iedModel_GenericIO_T60S_FSCH2_ValSPG50) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG50_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG50_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG51 (&iedModel_GenericIO_T60S_FSCH2_ValSPG51) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG51_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG51_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG52 (&iedModel_GenericIO_T60S_FSCH2_ValSPG52) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG52_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG52_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG53 (&iedModel_GenericIO_T60S_FSCH2_ValSPG53) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG53_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG53_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG54 (&iedModel_GenericIO_T60S_FSCH2_ValSPG54) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG54_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG54_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG55 (&iedModel_GenericIO_T60S_FSCH2_ValSPG55) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG55_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG55_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG56 (&iedModel_GenericIO_T60S_FSCH2_ValSPG56) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG56_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG56_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG57 (&iedModel_GenericIO_T60S_FSCH2_ValSPG57) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG57_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG57_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG58 (&iedModel_GenericIO_T60S_FSCH2_ValSPG58) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG58_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG58_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG59 (&iedModel_GenericIO_T60S_FSCH2_ValSPG59) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG59_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG59_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG60 (&iedModel_GenericIO_T60S_FSCH2_ValSPG60) +#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG60_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG60_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_StrTm (&iedModel_GenericIO_T60S_FSCH2_StrTm) +#define IEDMODEL_GenericIO_T60S_FSCH2_StrTm_setTm (&iedModel_GenericIO_T60S_FSCH2_StrTm_setTm) +#define IEDMODEL_GenericIO_T60S_FSCH2_StrTm_setCal (&iedModel_GenericIO_T60S_FSCH2_StrTm_setCal) +#define IEDMODEL_GenericIO_T60S_FSCH2_StrTm_setCal_occ (&iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_occ) +#define IEDMODEL_GenericIO_T60S_FSCH2_StrTm_setCal_occType (&iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_occType) +#define IEDMODEL_GenericIO_T60S_FSCH2_StrTm_setCal_occPer (&iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_occPer) +#define IEDMODEL_GenericIO_T60S_FSCH2_StrTm_setCal_weekDay (&iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_weekDay) +#define IEDMODEL_GenericIO_T60S_FSCH2_StrTm_setCal_month (&iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_month) +#define IEDMODEL_GenericIO_T60S_FSCH2_StrTm_setCal_day (&iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_day) +#define IEDMODEL_GenericIO_T60S_FSCH2_StrTm_setCal_hr (&iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_hr) +#define IEDMODEL_GenericIO_T60S_FSCH2_StrTm_setCal_mn (&iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_mn) +#define IEDMODEL_GenericIO_T60S_FSCH2_IntvPer (&iedModel_GenericIO_T60S_FSCH2_IntvPer) +#define IEDMODEL_GenericIO_T60S_FSCH2_IntvPer_setVal (&iedModel_GenericIO_T60S_FSCH2_IntvPer_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_IntvTyp (&iedModel_GenericIO_T60S_FSCH2_IntvTyp) +#define IEDMODEL_GenericIO_T60S_FSCH2_IntvTyp_setVal (&iedModel_GenericIO_T60S_FSCH2_IntvTyp_setVal) +#define IEDMODEL_GenericIO_T60S_FSCH2_SchdReuse (&iedModel_GenericIO_T60S_FSCH2_SchdReuse) +#define IEDMODEL_GenericIO_T60S_FSCH2_SchdReuse_setVal (&iedModel_GenericIO_T60S_FSCH2_SchdReuse_setVal) +#define IEDMODEL_GenericIO_GGIO_FSCC1 (&iedModel_GenericIO_GGIO_FSCC1) +#define IEDMODEL_GenericIO_GGIO_FSCC1_Beh (&iedModel_GenericIO_GGIO_FSCC1_Beh) +#define IEDMODEL_GenericIO_GGIO_FSCC1_Beh_stVal (&iedModel_GenericIO_GGIO_FSCC1_Beh_stVal) +#define IEDMODEL_GenericIO_GGIO_FSCC1_Beh_q (&iedModel_GenericIO_GGIO_FSCC1_Beh_q) +#define IEDMODEL_GenericIO_GGIO_FSCC1_Beh_t (&iedModel_GenericIO_GGIO_FSCC1_Beh_t) +#define IEDMODEL_GenericIO_GGIO_FSCC1_ActSchdRef (&iedModel_GenericIO_GGIO_FSCC1_ActSchdRef) +#define IEDMODEL_GenericIO_GGIO_FSCC1_ActSchdRef_stVal (&iedModel_GenericIO_GGIO_FSCC1_ActSchdRef_stVal) +#define IEDMODEL_GenericIO_GGIO_FSCC1_ActSchdRef_q (&iedModel_GenericIO_GGIO_FSCC1_ActSchdRef_q) +#define IEDMODEL_GenericIO_GGIO_FSCC1_ActSchdRef_t (&iedModel_GenericIO_GGIO_FSCC1_ActSchdRef_t) +#define IEDMODEL_GenericIO_GGIO_FSCC1_CtlEnt (&iedModel_GenericIO_GGIO_FSCC1_CtlEnt) +#define IEDMODEL_GenericIO_GGIO_FSCC1_CtlEnt_setSrcRef (&iedModel_GenericIO_GGIO_FSCC1_CtlEnt_setSrcRef) +#define IEDMODEL_GenericIO_GGIO_FSCC1_Schd1 (&iedModel_GenericIO_GGIO_FSCC1_Schd1) +#define IEDMODEL_GenericIO_GGIO_FSCC1_Schd1_setSrcRef (&iedModel_GenericIO_GGIO_FSCC1_Schd1_setSrcRef) +#define IEDMODEL_GenericIO_GGIO_FSCC1_Schd2 (&iedModel_GenericIO_GGIO_FSCC1_Schd2) +#define IEDMODEL_GenericIO_GGIO_FSCC1_Schd2_setSrcRef (&iedModel_GenericIO_GGIO_FSCC1_Schd2_setSrcRef) #endif /* STATIC_MODEL_H_ */ diff --git a/dotnet/IEC61850forCSharp/Control.cs b/dotnet/IEC61850forCSharp/Control.cs index f0faa90..8604e3e 100644 --- a/dotnet/IEC61850forCSharp/Control.cs +++ b/dotnet/IEC61850forCSharp/Control.cs @@ -141,7 +141,10 @@ namespace IEC61850 private static extern void ControlObjectClient_setInterlockCheck(IntPtr self, bool value); [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] - private static extern void ControlObjectClient_setSynchroCheck(IntPtr self, bool value); + private static extern void ControlObjectClient_setSynchroCheck(IntPtr self, bool value); + + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + private static extern void ControlObjectClient_setTestMode(IntPtr self, bool value); [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void InternalCommandTerminationHandler(IntPtr parameter,IntPtr controlClient); @@ -404,6 +407,14 @@ namespace IEC61850 ControlObjectClient_setSynchroCheck (controlObject, value); } + /// + /// Sets the value of the test flag for the operate command + /// + public void SetTestMode (bool value) + { + ControlObjectClient_setTestMode (controlObject, value); + } + /// /// Gets the last received LastApplError (Additional Cause Diagnostics) value. /// diff --git a/dotnet/IEC61850forCSharp/IEC61850ClientAPI.cs b/dotnet/IEC61850forCSharp/IEC61850ClientAPI.cs index 4a94a64..10a6c8e 100644 --- a/dotnet/IEC61850forCSharp/IEC61850ClientAPI.cs +++ b/dotnet/IEC61850forCSharp/IEC61850ClientAPI.cs @@ -629,7 +629,7 @@ namespace IEC61850 if (mmsValue.GetType () == MmsType.MMS_BOOLEAN) return mmsValue.GetBoolean (); else - throw new IedConnectionException ("Result is not of type timestamp (MMS_UTC_TIME)", 0); + throw new IedConnectionException ("Result is not of type boolean (MMS_BOOLEAN)", 0); } /// Read the value of a basic data attribute (BDA) of type float. diff --git a/dotnet/IEC61850forCSharp/IEC61850forCSharp.csproj b/dotnet/IEC61850forCSharp/IEC61850forCSharp.csproj index d5d09da..e0019db 100644 --- a/dotnet/IEC61850forCSharp/IEC61850forCSharp.csproj +++ b/dotnet/IEC61850forCSharp/IEC61850forCSharp.csproj @@ -45,6 +45,7 @@ + \ No newline at end of file diff --git a/dotnet/IEC61850forCSharp/ReportControlBlock.cs b/dotnet/IEC61850forCSharp/ReportControlBlock.cs index f4b4a69..ad9f5da 100644 --- a/dotnet/IEC61850forCSharp/ReportControlBlock.cs +++ b/dotnet/IEC61850forCSharp/ReportControlBlock.cs @@ -55,7 +55,7 @@ namespace IEC61850 [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] static extern void IedConnection_setRCBValues (IntPtr connection, out int error, IntPtr rcb, UInt32 parametersMask, bool singleRequest); - [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] static extern bool ClientReportControlBlock_isBuffered (IntPtr self); @@ -69,10 +69,10 @@ namespace IEC61850 [return: MarshalAs(UnmanagedType.I1)] static extern bool ClientReportControlBlock_getRptEna (IntPtr self); - [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] static extern void ClientReportControlBlock_setRptEna(IntPtr self, bool rptEna); - [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] static extern bool ClientReportControlBlock_getResv (IntPtr self); @@ -115,14 +115,14 @@ namespace IEC61850 [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] static extern void ClientReportControlBlock_setIntgPd (IntPtr self, UInt32 intgPd); - [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] static extern bool ClientReportControlBlock_getGI (IntPtr self); [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] static extern void ClientReportControlBlock_setGI (IntPtr self, bool gi); - [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] [return: MarshalAs(UnmanagedType.I1)] static extern bool ClientReportControlBlock_getPurgeBuf (IntPtr self); @@ -149,11 +149,11 @@ namespace IEC61850 [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] static extern void IedConnection_installReportHandler (IntPtr connection, string rcbReference, string rptId, InternalReportHandler handler, - IntPtr handlerParameter); + IntPtr handlerParameter); [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] static extern void IedConnection_uninstallReportHandler(IntPtr connection, string rcbReference); - + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void InternalReportHandler (IntPtr parameter, IntPtr report); @@ -256,7 +256,7 @@ namespace IEC61850 /// /// /// This will install a callback handler (delegate) that is invoked whenever a report - /// related this RCB is received. Any call of this method will replace an previously registered + /// related to this RCB is received. Any call of this method will replace an previously registered /// handler! /// /// @@ -273,13 +273,13 @@ namespace IEC61850 if (reportHandlerInstalled == false) { - string reportId = this.GetRptId (); - - if (internalHandler == null) - { - internalHandler = new InternalReportHandler(internalReportHandler); - } - + string reportId = this.GetRptId (); + + if (internalHandler == null) + { + internalHandler = new InternalReportHandler(internalReportHandler); + } + IedConnection_installReportHandler(this.connection, objectReference, reportId, internalHandler, IntPtr.Zero); reportHandlerInstalled = true; } @@ -539,24 +539,24 @@ namespace IEC61850 flagRptEna = true; } - /// - /// Get the purgeBuf flag of the report control block - /// + /// + /// Get the purgeBuf flag of the report control block + /// /// the prugeBuf value - public bool GetPurgeBuf () - { - return ClientReportControlBlock_getPurgeBuf(self); + public bool GetPurgeBuf () + { + return ClientReportControlBlock_getPurgeBuf(self); } - /// - /// Set the purgeBuf flag of the report control block - /// - /// This is only for buffered RCBs. If set to true the report buffer of a buffered RCB will be cleaned. + /// + /// Set the purgeBuf flag of the report control block + /// + /// This is only for buffered RCBs. If set to true the report buffer of a buffered RCB will be cleaned. /// set to true to flush report buffer - public void SetPurgeBuf (bool purgeBuf) - { - ClientReportControlBlock_setPurgeBuf(self, purgeBuf); - flagPurgeBuf = true; + public void SetPurgeBuf (bool purgeBuf) + { + ClientReportControlBlock_setPurgeBuf(self, purgeBuf); + flagPurgeBuf = true; } /// diff --git a/dotnet/reporting/ReportingExample.cs b/dotnet/reporting/ReportingExample.cs index 9857194..9e84c86 100644 --- a/dotnet/reporting/ReportingExample.cs +++ b/dotnet/reporting/ReportingExample.cs @@ -41,8 +41,8 @@ namespace reporting Console.WriteLine(" element " + i + " included for reason " + report.GetReasonForInclusion(i).ToString() + " " + values.GetElement(i)); } - if (report.HasDataReference()) { - Console.WriteLine(" data-ref: " + report.GetDataReference(i)); + if (report.HasDataReference()) { + Console.WriteLine(" data-ref: " + report.GetDataReference(i)); } } @@ -79,35 +79,35 @@ namespace reporting ReportControlBlock rcb1 = con.GetReportControlBlock(rcbReference1); ReportControlBlock rcb2 = con.GetReportControlBlock(rcbReference2); - ReportControlBlock rcb3 = con.GetReportControlBlock(rcbReference3); - - rcb1.GetRCBValues(); - - // note: the second parameter is not required! - rcb1.InstallReportHandler(reportHandler, rcb1); - - if (rcb1.IsBuffered()) - Console.WriteLine("RCB: " + rcbReference1 + " is buffered"); - - rcb1.SetTrgOps(TriggerOptions.DATA_CHANGED | TriggerOptions.INTEGRITY); - rcb1.SetIntgPd(5000); - rcb1.SetRptEna(true); - - rcb1.SetRCBValues(); - - rcb2.GetRCBValues(); - - if (rcb2.IsBuffered()) - Console.WriteLine("RCB: " + rcbReference2 + " is buffered"); - - rcb2.InstallReportHandler(reportHandler, rcb2); - - rcb2.SetOptFlds(ReportOptions.REASON_FOR_INCLUSION | ReportOptions.SEQ_NUM | ReportOptions.TIME_STAMP | - ReportOptions.CONF_REV | ReportOptions.ENTRY_ID | ReportOptions.DATA_REFERENCE | ReportOptions.DATA_SET); - rcb2.SetTrgOps(TriggerOptions.DATA_CHANGED | TriggerOptions.INTEGRITY); - rcb2.SetIntgPd(2000); - rcb2.SetRptEna(true); - + ReportControlBlock rcb3 = con.GetReportControlBlock(rcbReference3); + + rcb1.GetRCBValues(); + + // note: the second parameter is not required! + rcb1.InstallReportHandler(reportHandler, rcb1); + + if (rcb1.IsBuffered()) + Console.WriteLine("RCB: " + rcbReference1 + " is buffered"); + + rcb1.SetTrgOps(TriggerOptions.DATA_CHANGED | TriggerOptions.INTEGRITY); + rcb1.SetIntgPd(5000); + rcb1.SetRptEna(true); + + rcb1.SetRCBValues(); + + rcb2.GetRCBValues(); + + if (rcb2.IsBuffered()) + Console.WriteLine("RCB: " + rcbReference2 + " is buffered"); + + rcb2.InstallReportHandler(reportHandler, rcb2); + + rcb2.SetOptFlds(ReportOptions.REASON_FOR_INCLUSION | ReportOptions.SEQ_NUM | ReportOptions.TIME_STAMP | + ReportOptions.CONF_REV | ReportOptions.ENTRY_ID | ReportOptions.DATA_REFERENCE | ReportOptions.DATA_SET); + rcb2.SetTrgOps(TriggerOptions.DATA_CHANGED | TriggerOptions.INTEGRITY); + rcb2.SetIntgPd(2000); + rcb2.SetRptEna(true); + rcb2.SetRCBValues(); rcb3.GetRCBValues(); @@ -154,7 +154,7 @@ namespace reporting Console.WriteLine ("Error: " + e.Message); con.Dispose (); - } + } } } diff --git a/dotnet/tests/Test.cs b/dotnet/tests/Test.cs index ca1e4b6..887ccb8 100644 --- a/dotnet/tests/Test.cs +++ b/dotnet/tests/Test.cs @@ -2,6 +2,9 @@ using System; using IEC61850.Common; using IEC61850.Client; +using IEC61850.Server; +using System.Collections.Generic; +using System.Threading; namespace tests { @@ -102,7 +105,267 @@ namespace tests Assert.AreEqual (val.ToFloat (), (float)0.1234); } + [Test ()] + public void CreateModelFromNonExistingFile() + { + IedModel iedModel = ConfigFileParser.CreateModelFromConfigFile ("test.cfg"); + Assert.IsNull (iedModel); + } + + [Test ()] + public void CreateModelFromFile() + { + IedModel iedModel = ConfigFileParser.CreateModelFromConfigFile ("../../model.cfg"); + + Assert.NotNull (iedModel); + } + + [Test ()] + public void StartStopSimpleServer() + { + IedModel iedModel = ConfigFileParser.CreateModelFromConfigFile ("../../model.cfg"); + + IedServer iedServer = new IedServer (iedModel); + + Assert.NotNull (iedServer); + + iedServer.Start (10002); + + Assert.IsTrue (iedServer.IsRunning ()); + + iedServer.Stop (); + + Assert.IsFalse (iedServer.IsRunning ()); + + iedServer.Destroy (); + } + + [Test ()] + public void ConnectToServer() + { + IedModel iedModel = ConfigFileParser.CreateModelFromConfigFile ("../../model.cfg"); + + IedServer iedServer = new IedServer (iedModel); + + iedServer.Start (10002); + + IedConnection connection = new IedConnection (); + + connection.Connect ("localhost", 10002); + + List list = connection.GetServerDirectory (); + + Assert.IsNotEmpty (list); + + Assert.AreEqual (list.ToArray () [0], "simpleIOGenericIO"); + + iedServer.Stop (); + + iedServer.Destroy (); + } + + [Test ()] + public void AccessDataModelServerSide() + { + IedModel iedModel = ConfigFileParser.CreateModelFromConfigFile ("../../model.cfg"); + + ModelNode modelNode = iedModel.GetModelNodeByShortObjectReference ("GenericIO/GGIO1.AnIn1"); + + Assert.IsTrue (modelNode.GetType ().Equals (typeof(DataObject))); + + modelNode = iedModel.GetModelNodeByShortObjectReference ("GenericIO/GGIO1.AnIn1.mag.f"); + + Assert.IsTrue (modelNode.GetType ().Equals (typeof(DataAttribute))); + + Assert.IsNotNull (modelNode); + } + + [Test ()] + public void AccessDataModelClientServer() + { + IedModel iedModel = ConfigFileParser.CreateModelFromConfigFile ("../../model.cfg"); + + ModelNode ind1 = iedModel.GetModelNodeByShortObjectReference ("GenericIO/GGIO1.Ind1.stVal"); + + Assert.IsTrue (ind1.GetType ().Equals (typeof(DataAttribute))); + + IedServer iedServer = new IedServer (iedModel); + + iedServer.Start (10002); + + iedServer.UpdateBooleanAttributeValue((DataAttribute) ind1, true); + + IedConnection connection = new IedConnection (); + + connection.Connect ("localhost", 10002); + + bool stVal = connection.ReadBooleanValue ("simpleIOGenericIO/GGIO1.Ind1.stVal", FunctionalConstraint.ST); + + Assert.IsTrue (stVal); + + iedServer.UpdateBooleanAttributeValue((DataAttribute) ind1, false); + + stVal = connection.ReadBooleanValue ("simpleIOGenericIO/GGIO1.Ind1.stVal", FunctionalConstraint.ST); + + Assert.IsFalse (stVal); + + connection.Abort (); + + iedServer.Stop (); + + iedServer.Destroy (); + } + + + [Test()] + public void ControlWriteAccessToServer() + { + + IedModel iedModel = ConfigFileParser.CreateModelFromConfigFile ("../../model.cfg"); + + DataAttribute opDlTmms = (DataAttribute) iedModel.GetModelNodeByShortObjectReference("GenericIO/PDUP1.OpDlTmms.setVal"); + DataAttribute rsDlTmms = (DataAttribute)iedModel.GetModelNodeByShortObjectReference ("GenericIO/PDUP1.RsDlTmms.setVal"); + + IedServer iedServer = new IedServer (iedModel); + + int opDlTmmsValue = 0; + + iedServer.HandleWriteAccess (opDlTmms, delegate(DataAttribute dataAttr, MmsValue value, ClientConnection con, object parameter) { + opDlTmmsValue = value.ToInt32(); + return MmsDataAccessError.DATA_ACCESS_ERROR_SUCCESS; + }, null); + + iedServer.HandleWriteAccess (rsDlTmms, delegate(DataAttribute dataAttr, MmsValue value, ClientConnection con, object parameter) { + if (value.ToInt32() > 1000) + return MmsDataAccessError.DATA_ACCESS_ERROR_OBJECT_VALUE_INVALID; + else + return MmsDataAccessError.DATA_ACCESS_ERROR_SUCCESS; + }, null); + + iedServer.Start (10002); + + IedConnection connection = new IedConnection (); + + connection.Connect ("localhost", 10002); + + connection.WriteValue ("simpleIOGenericIO/PDUP1.OpDlTmms.setVal", FunctionalConstraint.SP, new MmsValue ((int)1234)); + + + try { + connection.WriteValue ("simpleIOGenericIO/PDUP1.RsDlTmms.setVal", FunctionalConstraint.SP, new MmsValue ((int)1234)); + } + catch (IedConnectionException e) { + Assert.AreEqual (IedClientError.IED_ERROR_OBJECT_VALUE_INVALID, e.GetIedClientError()); + } + + connection.WriteValue ("simpleIOGenericIO/PDUP1.RsDlTmms.setVal", FunctionalConstraint.SP, new MmsValue ((int)999)); + + MmsValue rsDlTmmsValue = iedServer.GetAttributeValue (rsDlTmms); + + Assert.AreEqual (999, rsDlTmmsValue.ToInt32 ()); + + connection.Abort (); + + iedServer.Stop (); + + Assert.AreEqual ((int) 1234, opDlTmmsValue); + + iedServer.Destroy (); + } + + [Test()] + public void WriteAccessPolicy() + { + + IedModel iedModel = ConfigFileParser.CreateModelFromConfigFile ("../../model.cfg"); + + DataAttribute opDlTmms = (DataAttribute) iedModel.GetModelNodeByShortObjectReference("GenericIO/PDUP1.OpDlTmms.setVal"); + DataAttribute rsDlTmms = (DataAttribute)iedModel.GetModelNodeByShortObjectReference ("GenericIO/PDUP1.RsDlTmms.setVal"); + + IedServer iedServer = new IedServer (iedModel); + + iedServer.HandleWriteAccess (opDlTmms, delegate(DataAttribute dataAttr, MmsValue value, ClientConnection con, object parameter) { + return MmsDataAccessError.DATA_ACCESS_ERROR_SUCCESS; + }, null); + + + iedServer.Start (10002); + + IedConnection connection = new IedConnection (); + + connection.Connect ("localhost", 10002); + + connection.WriteValue ("simpleIOGenericIO/PDUP1.RsDlTmms.setVal", FunctionalConstraint.SP, new MmsValue ((int)1234)); + + iedServer.SetWriteAccessPolicy (FunctionalConstraint.SP, AccessPolicy.ACCESS_POLICY_DENY); + + connection.WriteValue ("simpleIOGenericIO/PDUP1.OpDlTmms.setVal", FunctionalConstraint.SP, new MmsValue ((int)1234)); + + try { + connection.WriteValue ("simpleIOGenericIO/PDUP1.RsDlTmms.setVal", FunctionalConstraint.SP, new MmsValue ((int)999)); + } + catch (IedConnectionException e) { + Assert.AreEqual (IedClientError.IED_ERROR_ACCESS_DENIED, e.GetIedClientError()); + } + + MmsValue rsDlTmmsValue = iedServer.GetAttributeValue (rsDlTmms); + + Assert.AreEqual (1234, rsDlTmmsValue.ToInt32 ()); + + connection.Abort (); + + iedServer.Stop (); + + iedServer.Destroy (); + } + + [Test()] + public void ConnectionHandler() + { + IedModel iedModel = ConfigFileParser.CreateModelFromConfigFile ("../../model.cfg"); + + int handlerCalled = 0; + int connectionCount = 0; + + IedServer iedServer = new IedServer (iedModel); + + string ipAddress = null; + + iedServer.SetConnectionIndicationHandler(delegate(IedServer server, ClientConnection clientConnection, bool connected, object parameter) { + handlerCalled++; + if (connected) + connectionCount++; + else + connectionCount--; + + ipAddress = clientConnection.GetPeerAddress(); + }, null); + + iedServer.Start (10002); + + IedConnection con1 = new IedConnection (); + con1.Connect ("localhost", 10002); + + Assert.AreEqual (1, handlerCalled); + Assert.AreEqual (1, connectionCount); + + IedConnection con2 = new IedConnection (); + con2.Connect ("localhost", 10002); + + Assert.AreEqual (2, handlerCalled); + Assert.AreEqual (2, connectionCount); + + con1.Abort (); + con2.Abort (); + + Assert.AreEqual (4, handlerCalled); + Assert.AreEqual (0, connectionCount); + + Assert.AreEqual ("127.0.0.1:", ipAddress.Substring (0, 10)); + + iedServer.Stop (); + } } } diff --git a/dotnet/tests/test.icd b/dotnet/tests/test.icd new file mode 100644 index 0000000..f7a8e32 --- /dev/null +++ b/dotnet/tests/test.icd @@ -0,0 +1,326 @@ + + +
+
+ + + Station bus + + +
+

111

+

4

+

01-0c-cd-01-00-01

+

1000

+
+
+ +
+

111

+

4

+

01-0c-cd-01-00-01

+

1000

+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + status-only + + + + + + + + status-only + + + + + + + + + direct-with-normal-security + + + + + direct-with-normal-security + + + + + direct-with-normal-security + + + + + direct-with-normal-security + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + status-only + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + on + blocked + test + test/blocked + off + + + + status-only + direct-with-normal-security + sbo-with-normal-security + direct-with-enhanced-security + sbo-with-enhanced-security + + + + not-supported + bay-control + station-control + remote-control + automatic-bay + automatic-station + automatic-remote + maintenance + process + + + + unknown + forward + backward + both + + + + +
diff --git a/examples/server_example_logging/server_example_logging.c b/examples/server_example_logging/server_example_logging.c index 7690725..f0c80ae 100644 --- a/examples/server_example_logging/server_example_logging.c +++ b/examples/server_example_logging/server_example_logging.c @@ -145,6 +145,7 @@ main(int argc, char** argv) IedServer_setLogStorage(iedServer, "GenericIO/LLN0$EventLog", statusLog); +#if 0 uint64_t entryID = LogStorage_addEntry(statusLog, Hal_getTimeInMs()); MmsValue* value = MmsValue_newIntegerFromInt32(123); @@ -167,6 +168,8 @@ main(int argc, char** argv) LogStorage_addEntryData(statusLog, entryID, "simpleIOGenerioIO/GPIO1$ST$SPCSO1$t", blob, blobSize, 0); LogStorage_getEntries(statusLog, 0, Hal_getTimeInMs(), entryCallback, (LogEntryDataCallback) entryDataCallback, NULL); +#endif + /* MMS server will be instructed to start listening to client connections. */ IedServer_start(iedServer, 102); diff --git a/examples/server_example_logging/simpleIO_direct_control.icd b/examples/server_example_logging/simpleIO_direct_control.icd index 216f1f7..a2c745a 100644 --- a/examples/server_example_logging/simpleIO_direct_control.icd +++ b/examples/server_example_logging/simpleIO_direct_control.icd @@ -108,7 +108,7 @@ - + diff --git a/src/common/inc/libiec61850_platform_includes.h b/src/common/inc/libiec61850_platform_includes.h index 97ae275..7c2452f 100644 --- a/src/common/inc/libiec61850_platform_includes.h +++ b/src/common/inc/libiec61850_platform_includes.h @@ -15,7 +15,7 @@ #include "platform_endian.h" -#define LIBIEC61850_VERSION "0.9.2" +#define LIBIEC61850_VERSION "0.9.3" #ifndef CONFIG_DEFAULT_MMS_VENDOR_NAME #define CONFIG_DEFAULT_MMS_VENDOR_NAME "libiec61850.com" diff --git a/src/hal/socket/linux/socket_linux.c b/src/hal/socket/linux/socket_linux.c index b00423d..cbf6c25 100644 --- a/src/hal/socket/linux/socket_linux.c +++ b/src/hal/socket/linux/socket_linux.c @@ -331,11 +331,19 @@ Socket_connect(Socket self, const char* address, int port) timeout.tv_sec = self->connectTimeout / 1000; timeout.tv_usec = (self->connectTimeout % 1000) * 1000; - if (select(self->fd + 1, NULL, &fdSet, NULL, &timeout) <= 0) - return false; - else - return true; + if (select(self->fd + 1, NULL, &fdSet , NULL, &timeout) == 1) { + int so_error; + socklen_t len = sizeof so_error; + getsockopt(self->fd, SOL_SOCKET, SO_ERROR, &so_error, &len); + + if (so_error == 0) + return true; + } + + close (self->fd); + + return false; } char* diff --git a/src/hal/socket/win32/socket_win32.c b/src/hal/socket/win32/socket_win32.c index 8c0b084..0e94445 100644 --- a/src/hal/socket/win32/socket_win32.c +++ b/src/hal/socket/win32/socket_win32.c @@ -262,6 +262,7 @@ TcpSocket_create() Socket self = (Socket) GLOBAL_MALLOC(sizeof(struct sSocket)); self->fd = INVALID_SOCKET; + self->connectTimeout = 5000; return self; } diff --git a/src/iec61850/client/client_control.c b/src/iec61850/client/client_control.c index 54f4938..058f0d2 100644 --- a/src/iec61850/client/client_control.c +++ b/src/iec61850/client/client_control.c @@ -871,6 +871,12 @@ ControlObjectClient_setSynchroCheck(ControlObjectClient self, bool value) self->synchroCheck = value; } +void +ControlObjectClient_setTestMode(ControlObjectClient self, bool value) +{ + self->test = value; +} + void ControlObjectClient_setLastApplError(ControlObjectClient self, LastApplError lastApplError) { diff --git a/src/iec61850/inc/iec61850_client.h b/src/iec61850/inc/iec61850_client.h index 0181f71..7ce06ee 100644 --- a/src/iec61850/inc/iec61850_client.h +++ b/src/iec61850/inc/iec61850_client.h @@ -1502,7 +1502,7 @@ LastApplError ControlObjectClient_getLastApplError(ControlObjectClient self); void -ControlObjectClient_setTestMode(ControlObjectClient self); +ControlObjectClient_setTestMode(ControlObjectClient self, bool value); void ControlObjectClient_setOrigin(ControlObjectClient self, const char* orIdent, int orCat); diff --git a/src/iec61850/inc/iec61850_model.h b/src/iec61850/inc/iec61850_model.h index 3a99b08..850126d 100644 --- a/src/iec61850/inc/iec61850_model.h +++ b/src/iec61850/inc/iec61850_model.h @@ -156,9 +156,9 @@ typedef enum { typedef enum { LogicalDeviceModelType, - LogicalNodeModelType, - DataObjectModelType, - DataAttributeModelType + LogicalNodeModelType, + DataObjectModelType, + DataAttributeModelType } ModelNodeType; struct sIedModel { @@ -176,89 +176,89 @@ struct sIedModel { struct sLogicalDevice { ModelNodeType modelType; - char* name; - ModelNode* parent; - ModelNode* sibling; - ModelNode* firstChild; + char* name; + ModelNode* parent; + ModelNode* sibling; + ModelNode* firstChild; }; struct sModelNode { - ModelNodeType modelType; - char* name; - ModelNode* parent; - ModelNode* sibling; - ModelNode* firstChild; + ModelNodeType modelType; + char* name; + ModelNode* parent; + ModelNode* sibling; + ModelNode* firstChild; }; struct sLogicalNode { - ModelNodeType modelType; - char* name; - ModelNode* parent; - ModelNode* sibling; - ModelNode* firstChild; + ModelNodeType modelType; + char* name; + ModelNode* parent; + ModelNode* sibling; + ModelNode* firstChild; }; struct sDataObject { - ModelNodeType modelType; - char* name; - ModelNode* parent; - ModelNode* sibling; - ModelNode* firstChild; + ModelNodeType modelType; + char* name; + ModelNode* parent; + ModelNode* sibling; + ModelNode* firstChild; - int elementCount; /* > 0 if this is an array */ + int elementCount; /* > 0 if this is an array */ }; struct sDataAttribute { - ModelNodeType modelType; - char* name; - ModelNode* parent; - ModelNode* sibling; - ModelNode* firstChild; + ModelNodeType modelType; + char* name; + ModelNode* parent; + ModelNode* sibling; + ModelNode* firstChild; - int elementCount; /* > 0 if this is an array */ + int elementCount; /* > 0 if this is an array */ - FunctionalConstraint fc; - DataAttributeType type; + FunctionalConstraint fc; + DataAttributeType type; - uint8_t triggerOptions; /* TRG_OPT_DATA_CHANGED | TRG_OPT_QUALITY_CHANGED | TRG_OPT_DATA_UPDATE */ + uint8_t triggerOptions; /* TRG_OPT_DATA_CHANGED | TRG_OPT_QUALITY_CHANGED | TRG_OPT_DATA_UPDATE */ - MmsValue* mmsValue; + MmsValue* mmsValue; - uint32_t sAddr; + uint32_t sAddr; }; typedef struct sDataSetEntry { - char* logicalDeviceName; - bool isLDNameDynamicallyAllocated; - char* variableName; - int index; - char* componentName; - MmsValue* value; - struct sDataSetEntry* sibling; + char* logicalDeviceName; + bool isLDNameDynamicallyAllocated; + char* variableName; + int index; + char* componentName; + MmsValue* value; + struct sDataSetEntry* sibling; } DataSetEntry; struct sDataSet { - char* logicalDeviceName; - char* name; /* eg. MMXU1$dataset1 */ - int elementCount; - DataSetEntry* fcdas; - DataSet* sibling; + char* logicalDeviceName; + char* name; /* eg. MMXU1$dataset1 */ + int elementCount; + DataSetEntry* fcdas; + DataSet* sibling; }; struct sReportControlBlock { - LogicalNode* parent; - char* name; - char* rptId; - bool buffered; - char* dataSetName; /* pre loaded with relative name in logical node */ + LogicalNode* parent; + char* name; + char* rptId; + bool buffered; + char* dataSetName; /* pre loaded with relative name in logical node */ - uint32_t confRef; /* ConfRef - configuration revision */ - uint8_t trgOps; /* TrgOps - trigger conditions */ - uint8_t options; /* OptFlds */ - uint32_t bufferTime; /* BufTm - time to buffer events until a report is generated */ - uint32_t intPeriod; /* IntgPd - integrity period */ + uint32_t confRef; /* ConfRef - configuration revision */ + uint8_t trgOps; /* TrgOps - trigger conditions */ + uint8_t options; /* OptFlds */ + uint32_t bufferTime; /* BufTm - time to buffer events until a report is generated */ + uint32_t intPeriod; /* IntgPd - integrity period */ - ReportControlBlock* sibling; /* next control block in list or NULL if this is the last entry */ + ReportControlBlock* sibling; /* next control block in list or NULL if this is the last entry */ }; struct sLogControlBlock { @@ -386,6 +386,12 @@ ModelNode_getChildWithFc(ModelNode* self, const char* name, FunctionalConstraint char* ModelNode_getObjectReference(ModelNode* self, char* objectReference); +/** + * + */ +ModelNodeType +ModelNode_getType(ModelNode* self); + /** * \brief Set the name of the IED * diff --git a/src/iec61850/server/mms_mapping/logging.c b/src/iec61850/server/mms_mapping/logging.c index a7b6ad5..6fb2f78 100644 --- a/src/iec61850/server/mms_mapping/logging.c +++ b/src/iec61850/server/mms_mapping/logging.c @@ -791,11 +791,6 @@ createLogControlBlock(MmsMapping* self, LogControlBlock* logControlBlock, prepareLogControl(logControl); - if (logControl->enabled) - enableLogging(logControl); - - LogControl_updateLogEna(logControl); - return lcb; } @@ -829,6 +824,11 @@ Logging_createLCBs(MmsMapping* self, MmsDomain* domain, LogicalNode* logicalNode if (logControlBlock->logRef != NULL) logControl->logInstance = getLogInstanceByLogRef(self, logControlBlock->logRef); + if (logControl->enabled) + enableLogging(logControl); + + LogControl_updateLogEna(logControl); + LinkedList_add(self->logControls, logControl); currentLcb++; diff --git a/src/iec61850/server/mms_mapping/mms_mapping.c b/src/iec61850/server/mms_mapping/mms_mapping.c index b056b83..41a0b47 100644 --- a/src/iec61850/server/mms_mapping/mms_mapping.c +++ b/src/iec61850/server/mms_mapping/mms_mapping.c @@ -621,8 +621,6 @@ MmsMapping_configureSettingGroups(MmsMapping* self) MmsValue_setUint16(resvTms, 0U); settingGroup->sgcbMmsValues = values; - - break; } else if (DEBUG_IED_SERVER) printf("IED_SERVER: Values for SGCB do not exist\n"); diff --git a/src/iec61850/server/mms_mapping/reporting.c b/src/iec61850/server/mms_mapping/reporting.c index 9bd155b..069e833 100644 --- a/src/iec61850/server/mms_mapping/reporting.c +++ b/src/iec61850/server/mms_mapping/reporting.c @@ -1670,6 +1670,9 @@ removeAllGIReportsFromReportBuffer(ReportBuffer* reportBuffer) currentReport = currentReport->next; } } + + if (reportBuffer->oldestReport == NULL) + reportBuffer->lastEnqueuedReport = NULL; } static void diff --git a/src/iec61850/server/model/dynamic_model.c b/src/iec61850/server/model/dynamic_model.c index 1f51fa1..0098f09 100644 --- a/src/iec61850/server/model/dynamic_model.c +++ b/src/iec61850/server/model/dynamic_model.c @@ -387,6 +387,7 @@ SettingGroupControlBlock_create(LogicalNode* parent, uint8_t actSG, uint8_t numO self->actSG = actSG; self->numOfSGs = numOfSGs; self->sibling = NULL; + self->editSG = 0; LogicalNode_addSettingGroupControlBlock(parent, self); diff --git a/src/iec61850/server/model/model.c b/src/iec61850/server/model/model.c index b2998ec..03a0092 100644 --- a/src/iec61850/server/model/model.c +++ b/src/iec61850/server/model/model.c @@ -639,6 +639,12 @@ ModelNode_getChildWithFc(ModelNode* self, const char* name, FunctionalConstraint return matchingNode; } +ModelNodeType +ModelNode_getType(ModelNode* self) +{ + return self->modelType; +} + LogicalNode* LogicalDevice_getLogicalNode(LogicalDevice* self, const char* nodeName) { diff --git a/src/mms/iso_mms/common/mms_value.c b/src/mms/iso_mms/common/mms_value.c index d2eca37..ee1ccd3 100644 --- a/src/mms/iso_mms/common/mms_value.c +++ b/src/mms/iso_mms/common/mms_value.c @@ -1,7 +1,7 @@ /* - * MmsValue.c + * mms_value.c * - * Copyright 2013-2015 Michael Zillgith + * Copyright 2013-2016 Michael Zillgith * * This file is part of libIEC61850. * diff --git a/src/vs/libiec61850-wo-goose.def b/src/vs/libiec61850-wo-goose.def index 0735c33..661f60c 100644 --- a/src/vs/libiec61850-wo-goose.def +++ b/src/vs/libiec61850-wo-goose.def @@ -550,3 +550,5 @@ EXPORTS SV_ASDU_addFLOAT64 SV_ASDU_setFLOAT64 MmsConnection_setRawMessageHandler + ModelNode_getType + ControlObjectClient_setTestMode diff --git a/src/vs/libiec61850.def b/src/vs/libiec61850.def index ee2495f..75c3ec1 100644 --- a/src/vs/libiec61850.def +++ b/src/vs/libiec61850.def @@ -626,3 +626,6 @@ EXPORTS SV_ASDU_addFLOAT64 SV_ASDU_setFLOAT64 MmsConnection_setRawMessageHandler + ModelNode_getType + ControlObjectClient_setTestMode + diff --git a/tools/model_generator/gendyncode.jar b/tools/model_generator/gendyncode.jar index e25b642dda0e2810a50a3710ae2df9e3372cd55f..0721d44f989a3038c79a74469a0882a3a10fc082 100644 GIT binary patch delta 6259 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 Tj_XnYe-7iF^p^V2B0~Hhc&MZ= delta 5915 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 WN2&5IK [-ied ] [-ap ] []"); System.exit(1); } @@ -66,8 +66,10 @@ public class DynamicCodeGenerator { } InputStream stream = new FileInputStream(icdFile); + + SclParser.withOutput = false; - SclParser sclParser = new SclParser(stream); + SclParser sclParser = new SclParser(stream, false); createDynamicCode(sclParser); } @@ -107,7 +109,7 @@ public class DynamicCodeGenerator { for (DataObjectType doType : doTypeDefs) { String functionPrototype = "DataObject*\nDO_" + doType.getId() - + "_createInstance(char* doName, ModelNode* parent);"; + + "_createInstance(char* doName, ModelNode* parent, int arrayCount);"; functionPrototypes.add(functionPrototype); } @@ -119,6 +121,16 @@ public class DynamicCodeGenerator { functionPrototypes.add(functionPrototype); } + /* Print header */ + + System.out.println("#include \"iec61850_server.h\""); + System.out.println(); + + for (String prototype : functionPrototypes) { + System.out.println(prototype); + System.out.println(); + } + for (LogicalNodeType lnType : lnTypeDefs) { @@ -134,8 +146,8 @@ public class DynamicCodeGenerator { out.println(" LogicalNode* newLn = LogicalNode_create(lnName, parent);\n"); List doDefs = lnType.getDataObjectDefinitions(); - for (DataObjectDefinition objDef : doDefs) { - out.printf(" DO_%s_createInstance(\"%s\", (ModelNode*) newLn);\n", objDef.getType(), objDef.getName()); + for (DataObjectDefinition objDef : doDefs) { + out.printf(" DO_%s_createInstance(\"%s\", (ModelNode*) newLn, %d);\n", objDef.getType(), objDef.getName(), objDef.getCount()); } out.println("\n return newLn;"); @@ -150,9 +162,10 @@ public class DynamicCodeGenerator { out.println(); out.println(" */"); out.println("DataObject*"); - out.printf("DO_%s_createInstance(char* doName, ModelNode* parent)\n", doType.getId()); + out.printf("DO_%s_createInstance(char* doName, ModelNode* parent, int arrayCount)\n", doType.getId()); out.println("{"); - out.println(" DataObject* newDo = DataObject_create(doName, parent);\n"); + + out.println(" DataObject* newDo = DataObject_create(doName, parent, arrayCount);\n"); for (DataAttributeDefinition dad : doType.getDataAttributes()) { @@ -199,7 +212,7 @@ public class DynamicCodeGenerator { for (DataAttributeDefinition dad : daType.getSubDataAttributes()) { if (dad.getAttributeType() == AttributeType.CONSTRUCTED) { out.print(" DA_" + dad.getType() + "_createInstance(\"" + dad.getName() + "\", "); - out.println("(ModelNode*) newDo, fc, triggerOptions);"); + out.println("(ModelNode*) newDa, fc, triggerOptions);"); } else { out.print(" DataAttribute_create(\"" + dad.getName() + "\", "); @@ -212,7 +225,7 @@ public class DynamicCodeGenerator { } } - out.println("\n return newDo;"); + out.println("\n return newDa;"); out.println("}\n\n"); }