diff --git a/src/c/cmd/ot-sim-61850-module/CMakeLists.txt b/src/c/cmd/ot-sim-61850-module/CMakeLists.txt index 07e9f0c..fdf1c87 100644 --- a/src/c/cmd/ot-sim-61850-module/CMakeLists.txt +++ b/src/c/cmd/ot-sim-61850-module/CMakeLists.txt @@ -3,14 +3,21 @@ find_package(LibXml2 REQUIRED) include_directories( ${JSON_INCLUDE_DIRS} ${LIBXML2_INCLUDE_DIR} + include +) + +file(GLOB ot-sim-61850-module_SRC + "src/*.c" ) add_executable(ot-sim-61850-module + ${ot-sim-61850-module_SRC} main.c ) target_link_libraries(ot-sim-61850-module czmq + iec61850 ${LIBXML2_LIBRARIES} json-c pthread diff --git a/src/c/cmd/ot-sim-61850-module/README.md b/src/c/cmd/ot-sim-61850-module/README.md new file mode 100644 index 0000000..6b77384 --- /dev/null +++ b/src/c/cmd/ot-sim-61850-module/README.md @@ -0,0 +1,52 @@ +# IEC 61850 Module + +## Initial Design Approach + +Predefined OT devices + * WTG main controller, yaw controller, blade controller, etc + * Specific, hard-coded tags for each controller + * Enabled via specific elements in OT-sim XML config + +Alternatively, the WTG main controller could provide a 61400-25 IED via MMS +externally, and still use Modbus internally. + +## Future Design Goals + +Fully composable and configurable devices using relevant portions of CID files +in OT-sim XML config. + * Shoot for fully dynamic creation of LDs, LNs, DOs, DAs, etc at runtime + * May require precompilation step at runtime (like examples are now) + +## Predefined Devices + +### WTG Blade Controller + +* LD: +* LN: +* DO: +* DA: + +### Wind Turbine (WTUR) + +iec61400-25-2{ed2.0}b.pdf - pg 22 + +Inherits from "Wind Power Plant Common" - pg 19 + +> Does WTUR need NamPlt, Beh, Health, and Mod since LLN0 already has it? What +> would it be specific to for WTUR vs LLN0? Maybe for a plant-wide logical +> device that has multiple WTUR nodes? +> Turns out it just needs Beh. The others are only mandatory in LLN0 for the +> root LD. A physical device may have multiple logical devices if it's acting as +> a concentrator, for example. + +* WTUR + * NamPlt - LPL (iec61850-7-3{ed2.1}en.pdf - pg 106) + * vendor - VisString255 + * swRev - VisString255 + * configRev - VisString255 + * Beh - ENS (iec61850-7-3{ed2.1}en.pdf - pg 36) + * stVal - EnumDA (of type BehaviourModeKind) + * q - Quality + * t - Timestamp + * Health - ENS (iec61850-7-3{ed2.1}en.pdf - pg 36) + * Mod - ENC (iec61850-7-3{ed2.1}en.pdf - pg 70) \ No newline at end of file diff --git a/src/c/cmd/ot-sim-61850-module/include/ied.h b/src/c/cmd/ot-sim-61850-module/include/ied.h new file mode 100644 index 0000000..d1ce6d6 --- /dev/null +++ b/src/c/cmd/ot-sim-61850-module/include/ied.h @@ -0,0 +1,10 @@ +#ifndef IED_H +#define IED_H + +#include +#include + +extern IedModel iedModel; +extern LogicalDevice iedModel_WTG; + +#endif // IED_H \ No newline at end of file diff --git a/src/c/cmd/ot-sim-61850-module/include/lln0.h b/src/c/cmd/ot-sim-61850-module/include/lln0.h new file mode 100644 index 0000000..6a14a4d --- /dev/null +++ b/src/c/cmd/ot-sim-61850-module/include/lln0.h @@ -0,0 +1,36 @@ +#ifndef LLN0_H +#define LLN0_H + +#include +#include + +extern LogicalNode iedModel_WTG_LLN0; +extern DataObject iedModel_WTG_LLN0_Mod; +extern DataAttribute iedModel_WTG_LLN0_Mod_Oper; +extern DataAttribute iedModel_WTG_LLN0_Mod_Oper_ctlVal; +extern DataAttribute iedModel_WTG_LLN0_Mod_Oper_operTm; +extern DataAttribute iedModel_WTG_LLN0_Mod_Oper_origin; +extern DataAttribute iedModel_WTG_LLN0_Mod_Oper_origin_orCat; +extern DataAttribute iedModel_WTG_LLN0_Mod_Oper_origin_orIdent; +extern DataAttribute iedModel_WTG_LLN0_Mod_Oper_ctlNum; +extern DataAttribute iedModel_WTG_LLN0_Mod_Oper_T; +extern DataAttribute iedModel_WTG_LLN0_Mod_Oper_Test; +extern DataAttribute iedModel_WTG_LLN0_Mod_Oper_Check; +extern DataAttribute iedModel_WTG_LLN0_Mod_stVal; +extern DataAttribute iedModel_WTG_LLN0_Mod_q; +extern DataAttribute iedModel_WTG_LLN0_Mod_t; +extern DataAttribute iedModel_WTG_LLN0_Mod_ctlModel; +extern DataObject iedModel_WTG_LLN0_Beh; +extern DataAttribute iedModel_WTG_LLN0_Beh_stVal; +extern DataAttribute iedModel_WTG_LLN0_Beh_q; +extern DataAttribute iedModel_WTG_LLN0_Beh_t; +extern DataObject iedModel_WTG_LLN0_Health; +extern DataAttribute iedModel_WTG_LLN0_Health_stVal; +extern DataAttribute iedModel_WTG_LLN0_Health_q; +extern DataAttribute iedModel_WTG_LLN0_Health_t; +extern DataObject iedModel_WTG_LLN0_NamPlt; +extern DataAttribute iedModel_WTG_LLN0_NamPlt_vendor; +extern DataAttribute iedModel_WTG_LLN0_NamPlt_swRev; +extern DataAttribute iedModel_WTG_LLN0_NamPlt_configRev; + +#endif // LLN0_H \ No newline at end of file diff --git a/src/c/cmd/ot-sim-61850-module/include/lphd.h b/src/c/cmd/ot-sim-61850-module/include/lphd.h new file mode 100644 index 0000000..bb9c41e --- /dev/null +++ b/src/c/cmd/ot-sim-61850-module/include/lphd.h @@ -0,0 +1,27 @@ +#ifndef LPHD_H +#define LPHD_H + +#include +#include + +extern LogicalNode iedModel_WTG_LPHD1; +extern DataObject iedModel_WTG_LPHD1_NamPlt; +extern DataAttribute iedModel_WTG_LPHD1_NamPlt_vendor; +extern DataAttribute iedModel_WTG_LPHD1_NamPlt_swRev; +extern DataAttribute iedModel_WTG_LPHD1_NamPlt_configRev; +extern DataObject iedModel_WTG_LPHD1_PhyNam; +extern DataAttribute iedModel_WTG_LPHD1_PhyNam_vendor; +extern DataAttribute iedModel_WTG_LPHD1_PhyNam_hwRev; +extern DataAttribute iedModel_WTG_LPHD1_PhyNam_swRev; +extern DataAttribute iedModel_WTG_LPHD1_PhyNam_serNum; +extern DataAttribute iedModel_WTG_LPHD1_PhyNam_model; +extern DataObject iedModel_WTG_LPHD1_PhyHealth; +extern DataAttribute iedModel_WTG_LPHD1_PhyHealth_stVal; +extern DataAttribute iedModel_WTG_LPHD1_PhyHealth_q; +extern DataAttribute iedModel_WTG_LPHD1_PhyHealth_t; +extern DataObject iedModel_WTG_LPHD1_Proxy; +extern DataAttribute iedModel_WTG_LPHD1_Proxy_stVal; +extern DataAttribute iedModel_WTG_LPHD1_Proxy_q; +extern DataAttribute iedModel_WTG_LPHD1_Proxy_t; + +#endif // LPHD_H \ No newline at end of file diff --git a/src/c/cmd/ot-sim-61850-module/include/wtur.h b/src/c/cmd/ot-sim-61850-module/include/wtur.h new file mode 100644 index 0000000..09f3051 --- /dev/null +++ b/src/c/cmd/ot-sim-61850-module/include/wtur.h @@ -0,0 +1,44 @@ +#ifndef WTUR_H +#define WTUR_H + +#include +#include + +extern LogicalNode iedModel_WTG_WTUR1; + +extern DataObject iedModel_WTG_WTUR1_Beh; +extern DataAttribute iedModel_WTG_WTUR1_Beh_stVal; +extern DataAttribute iedModel_WTG_WTUR1_Beh_q; +extern DataAttribute iedModel_WTG_WTUR1_Beh_t; + +extern DataObject iedModel_WTG_WTUR1_TotWh; + +extern DataObject iedModel_WTG_WTUR1_TotWh_cntVal; +extern DataAttribute iedModel_WTG_WTUR1_TotWh_cntVal_actVal; +extern DataAttribute iedModel_WTG_WTUR1_TotWh_cntVal_pulsQty; +extern DataAttribute iedModel_WTG_WTUR1_TotWh_cntVal_q; +extern DataAttribute iedModel_WTG_WTUR1_TotWh_cntVal_t; + +extern DataObject iedModel_WTG_WTUR1_TurSt; + +extern DataObject iedModel_WTG_WTUR1_TurSt_st; +extern DataAttribute iedModel_WTG_WTUR1_TurSt_st_stVal; +extern DataAttribute iedModel_WTG_WTUR1_TurSt_st_q; +extern DataAttribute iedModel_WTG_WTUR1_TurSt_st_t; + +extern DataObject iedModel_WTG_WTUR1_W; + +extern DataAttribute iedModel_WTG_WTUR1_W_mag; +extern DataAttribute iedModel_WTG_WTUR1_W_mag_i; +extern DataAttribute iedModel_WTG_WTUR1_W_mag_f; +extern DataAttribute iedModel_WTG_WTUR1_W_q; +extern DataAttribute iedModel_WTG_WTUR1_W_t; + +extern DataObject iedModel_WTG_WTUR1_TurOp; + +extern DataObject iedModel_WTG_WTUR1_TurOp_st; +extern DataAttribute iedModel_WTG_WTUR1_TurOp_st_stVal; +extern DataAttribute iedModel_WTG_WTUR1_TurOp_st_q; +extern DataAttribute iedModel_WTG_WTUR1_TurOp_st_t; + +#endif // WTUR_H \ No newline at end of file diff --git a/src/c/cmd/ot-sim-61850-module/main.c b/src/c/cmd/ot-sim-61850-module/main.c index a561259..7181ae1 100644 --- a/src/c/cmd/ot-sim-61850-module/main.c +++ b/src/c/cmd/ot-sim-61850-module/main.c @@ -11,6 +11,8 @@ #include +#include "ied.h" + // ---- BEGIN PUB/SUB STUFF // ---- PUTTING THIS HERE SINCE HAVING IT IN A SEPARATE HEADER/SOURCE FILE // ---- CAUSES "MULTIPLE DEFINITION" ERRORS WITH HELICS CONSTANTS @@ -420,16 +422,16 @@ int main(int argc, char **argv) { signal(SIGINT, trap); running = 1; - IedServerConfig config = IedServerConfig_create(); + IedServer server = IedServer_create(&iedModel); + + /* MMS server will be instructed to start listening to client connections. */ + IedServer_start(server, 102); - DataObject iedModel_GenericIO_GGIO1_SPCSO1 = { - DataObjectModelType, - "SPCSO1", - (ModelNode*) &iedModel_GenericIO_GGIO1, - (ModelNode*) &iedModel_GenericIO_GGIO1_SPCSO2, - (ModelNode*) &iedModel_GenericIO_GGIO1_SPCSO1_origin, - 0 -}; + if (!IedServer_isRunning(server)) { + printf("Starting IEC 61850 server failed - exiting now.\n"); + IedServer_destroy(server); + exit(-1); + } while (running) { // Use poller here so we can break out of this thread quickly if program is diff --git a/src/c/cmd/ot-sim-61850-module/src/ied.c b/src/c/cmd/ot-sim-61850-module/src/ied.c new file mode 100644 index 0000000..1db0501 --- /dev/null +++ b/src/c/cmd/ot-sim-61850-module/src/ied.c @@ -0,0 +1,25 @@ +#include "ied.h" +#include "lln0.h" + +static void initializeValues() {} + +IedModel iedModel = { + "WIND", + &iedModel_WTG, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + initializeValues +}; + +LogicalDevice iedModel_WTG = { + LogicalDeviceModelType, + "WTG", + (ModelNode*) &iedModel, + NULL, + (ModelNode*) &iedModel_WTG_LLN0 +}; \ No newline at end of file diff --git a/src/c/cmd/ot-sim-61850-module/src/lln0.c b/src/c/cmd/ot-sim-61850-module/src/lln0.c new file mode 100644 index 0000000..bfa2a4f --- /dev/null +++ b/src/c/cmd/ot-sim-61850-module/src/lln0.c @@ -0,0 +1,369 @@ +#include "ied.h" +#include "lln0.h" +#include "lphd.h" + +LogicalNode iedModel_WTG_LLN0 = { + LogicalNodeModelType, + "LLN0", + (ModelNode*) &iedModel_WTG, + (ModelNode*) &iedModel_WTG_LPHD1, + (ModelNode*) &iedModel_WTG_LLN0_Mod, +}; + +DataObject iedModel_WTG_LLN0_Mod = { + DataObjectModelType, + "Mod", + (ModelNode*) &iedModel_WTG_LLN0, + (ModelNode*) &iedModel_WTG_LLN0_Beh, + (ModelNode*) &iedModel_WTG_LLN0_Mod_Oper, + 0 +}; + +DataAttribute iedModel_WTG_LLN0_Mod_Oper = { + DataAttributeModelType, + "Oper", + (ModelNode*) &iedModel_WTG_LLN0_Mod, + (ModelNode*) &iedModel_WTG_LLN0_Mod_stVal, + (ModelNode*) &iedModel_WTG_LLN0_Mod_Oper_ctlVal, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0 +}; + +DataAttribute iedModel_WTG_LLN0_Mod_Oper_ctlVal = { + DataAttributeModelType, + "ctlVal", + (ModelNode*) &iedModel_WTG_LLN0_Mod_Oper, + (ModelNode*) &iedModel_WTG_LLN0_Mod_Oper_operTm, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_INT32, + 0, + NULL, + 0 +}; + +DataAttribute iedModel_WTG_LLN0_Mod_Oper_operTm = { + DataAttributeModelType, + "operTm", + (ModelNode*) &iedModel_WTG_LLN0_Mod_Oper, + (ModelNode*) &iedModel_WTG_LLN0_Mod_Oper_origin, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_TIMESTAMP, + 0, + NULL, + 0 +}; + +DataAttribute iedModel_WTG_LLN0_Mod_Oper_origin = { + DataAttributeModelType, + "origin", + (ModelNode*) &iedModel_WTG_LLN0_Mod_Oper, + (ModelNode*) &iedModel_WTG_LLN0_Mod_Oper_ctlNum, + (ModelNode*) &iedModel_WTG_LLN0_Mod_Oper_origin_orCat, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0 +}; + +DataAttribute iedModel_WTG_LLN0_Mod_Oper_origin_orCat = { + DataAttributeModelType, + "orCat", + (ModelNode*) &iedModel_WTG_LLN0_Mod_Oper_origin, + (ModelNode*) &iedModel_WTG_LLN0_Mod_Oper_origin_orIdent, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_ENUMERATED, + 0, + NULL, + 0 +}; + +DataAttribute iedModel_WTG_LLN0_Mod_Oper_origin_orIdent = { + DataAttributeModelType, + "orIdent", + (ModelNode*) &iedModel_WTG_LLN0_Mod_Oper_origin, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_OCTET_STRING_64, + 0, + NULL, + 0 +}; + +DataAttribute iedModel_WTG_LLN0_Mod_Oper_ctlNum = { + DataAttributeModelType, + "ctlNum", + (ModelNode*) &iedModel_WTG_LLN0_Mod_Oper, + (ModelNode*) &iedModel_WTG_LLN0_Mod_Oper_T, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_INT8U, + 0, + NULL, + 0 +}; + +DataAttribute iedModel_WTG_LLN0_Mod_Oper_T = { + DataAttributeModelType, + "T", + (ModelNode*) &iedModel_WTG_LLN0_Mod_Oper, + (ModelNode*) &iedModel_WTG_LLN0_Mod_Oper_Test, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_TIMESTAMP, + 0, + NULL, + 0 +}; + +DataAttribute iedModel_WTG_LLN0_Mod_Oper_Test = { + DataAttributeModelType, + "Test", + (ModelNode*) &iedModel_WTG_LLN0_Mod_Oper, + (ModelNode*) &iedModel_WTG_LLN0_Mod_Oper_Check, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0 +}; + +DataAttribute iedModel_WTG_LLN0_Mod_Oper_Check = { + DataAttributeModelType, + "Check", + (ModelNode*) &iedModel_WTG_LLN0_Mod_Oper, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_CHECK, + 0, + NULL, + 0 +}; + +DataAttribute iedModel_WTG_LLN0_Mod_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_WTG_LLN0_Mod, + (ModelNode*) &iedModel_WTG_LLN0_Mod_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0 +}; + +DataAttribute iedModel_WTG_LLN0_Mod_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_WTG_LLN0_Mod, + (ModelNode*) &iedModel_WTG_LLN0_Mod_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0 +}; + +DataAttribute iedModel_WTG_LLN0_Mod_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_WTG_LLN0_Mod, + (ModelNode*) &iedModel_WTG_LLN0_Mod_ctlModel, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0 +}; + +DataAttribute iedModel_WTG_LLN0_Mod_ctlModel = { + DataAttributeModelType, + "ctlModel", + (ModelNode*) &iedModel_WTG_LLN0_Mod, + NULL, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_ENUMERATED, + 0, + NULL, + 0 +}; + +DataObject iedModel_WTG_LLN0_Beh = { + DataObjectModelType, + "Beh", + (ModelNode*) &iedModel_WTG_LLN0, + (ModelNode*) &iedModel_WTG_LLN0_Health, + (ModelNode*) &iedModel_WTG_LLN0_Beh_stVal, + 0 +}; + +DataAttribute iedModel_WTG_LLN0_Beh_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_WTG_LLN0_Beh, + (ModelNode*) &iedModel_WTG_LLN0_Beh_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0 +}; + +DataAttribute iedModel_WTG_LLN0_Beh_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_WTG_LLN0_Beh, + (ModelNode*) &iedModel_WTG_LLN0_Beh_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0 +}; + +DataAttribute iedModel_WTG_LLN0_Beh_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_WTG_LLN0_Beh, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0 +}; + +DataObject iedModel_WTG_LLN0_Health = { + DataObjectModelType, + "Health", + (ModelNode*) &iedModel_WTG_LLN0, + (ModelNode*) &iedModel_WTG_LLN0_NamPlt, + (ModelNode*) &iedModel_WTG_LLN0_Health_stVal, + 0 +}; + +DataAttribute iedModel_WTG_LLN0_Health_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_WTG_LLN0_Health, + (ModelNode*) &iedModel_WTG_LLN0_Health_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0 +}; + +DataAttribute iedModel_WTG_LLN0_Health_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_WTG_LLN0_Health, + (ModelNode*) &iedModel_WTG_LLN0_Health_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0 +}; + +DataAttribute iedModel_WTG_LLN0_Health_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_WTG_LLN0_Health, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0 +}; + +DataObject iedModel_WTG_LLN0_NamPlt = { + DataObjectModelType, + "NamPlt", + (ModelNode*) &iedModel_WTG_LLN0, + NULL, + (ModelNode*) &iedModel_WTG_LLN0_NamPlt_vendor, + 0 +}; + +DataAttribute iedModel_WTG_LLN0_NamPlt_vendor = { + DataAttributeModelType, + "vendor", + (ModelNode*) &iedModel_WTG_LLN0_NamPlt, + (ModelNode*) &iedModel_WTG_LLN0_NamPlt_swRev, + NULL, + 0, + IEC61850_FC_DC, + IEC61850_VISIBLE_STRING_255, + 0, + NULL, + 0 +}; + +DataAttribute iedModel_WTG_LLN0_NamPlt_swRev = { + DataAttributeModelType, + "swRev", + (ModelNode*) &iedModel_WTG_LLN0_NamPlt, + (ModelNode*) &iedModel_WTG_LLN0_NamPlt_configRev, + NULL, + 0, + IEC61850_FC_DC, + IEC61850_VISIBLE_STRING_255, + 0, + NULL, + 0 +}; + +DataAttribute iedModel_WTG_LLN0_NamPlt_configRev = { + DataAttributeModelType, + "configRev", + (ModelNode*) &iedModel_WTG_LLN0_NamPlt, + NULL, + NULL, + 0, + IEC61850_FC_DC, + IEC61850_VISIBLE_STRING_255, + 0, + NULL, + 0 +}; \ No newline at end of file diff --git a/src/c/cmd/ot-sim-61850-module/src/lphd.c b/src/c/cmd/ot-sim-61850-module/src/lphd.c new file mode 100644 index 0000000..a85b5f6 --- /dev/null +++ b/src/c/cmd/ot-sim-61850-module/src/lphd.c @@ -0,0 +1,229 @@ +#include "ied.h" +#include "lphd.h" +#include "wtur.h" + +LogicalNode iedModel_WTG_LPHD1 = { + LogicalNodeModelType, + "LPHD1", + (ModelNode*) &iedModel_WTG, + (ModelNode*) &iedModel_WTG_WTUR1, + (ModelNode*) &iedModel_WTG_LPHD1_NamPlt, +}; + +DataObject iedModel_WTG_LPHD1_NamPlt = { + DataObjectModelType, + "NamPlt", + (ModelNode*) &iedModel_WTG_LPHD1, + (ModelNode*) &iedModel_WTG_LPHD1_PhyNam, + (ModelNode*) &iedModel_WTG_LPHD1_NamPlt_vendor, + 0 +}; + +DataAttribute iedModel_WTG_LPHD1_NamPlt_vendor = { + DataAttributeModelType, + "vendor", + (ModelNode*) &iedModel_WTG_LPHD1_NamPlt, + (ModelNode*) &iedModel_WTG_LPHD1_NamPlt_swRev, + NULL, + 0, + IEC61850_FC_DC, + IEC61850_VISIBLE_STRING_255, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_LPHD1_NamPlt_swRev = { + DataAttributeModelType, + "swRev", + (ModelNode*) &iedModel_WTG_LPHD1_NamPlt, + (ModelNode*) &iedModel_WTG_LPHD1_NamPlt_configRev, + NULL, + 0, + IEC61850_FC_DC, + IEC61850_VISIBLE_STRING_255, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_LPHD1_NamPlt_configRev = { + DataAttributeModelType, + "configRev", + (ModelNode*) &iedModel_WTG_LPHD1_NamPlt, + NULL, + NULL, + 0, + IEC61850_FC_DC, + IEC61850_VISIBLE_STRING_255, + 0, + NULL, + 0}; + +DataObject iedModel_WTG_LPHD1_PhyNam = { + DataObjectModelType, + "PhyNam", + (ModelNode*) &iedModel_WTG_LPHD1, + (ModelNode*) &iedModel_WTG_LPHD1_PhyHealth, + (ModelNode*) &iedModel_WTG_LPHD1_PhyNam_vendor, + 0 +}; + +DataAttribute iedModel_WTG_LPHD1_PhyNam_vendor = { + DataAttributeModelType, + "vendor", + (ModelNode*) &iedModel_WTG_LPHD1_PhyNam, + (ModelNode*) &iedModel_WTG_LPHD1_PhyNam_hwRev, + NULL, + 0, + IEC61850_FC_DC, + IEC61850_VISIBLE_STRING_255, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_LPHD1_PhyNam_hwRev = { + DataAttributeModelType, + "hwRev", + (ModelNode*) &iedModel_WTG_LPHD1_PhyNam, + (ModelNode*) &iedModel_WTG_LPHD1_PhyNam_swRev, + NULL, + 0, + IEC61850_FC_DC, + IEC61850_VISIBLE_STRING_255, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_LPHD1_PhyNam_swRev = { + DataAttributeModelType, + "swRev", + (ModelNode*) &iedModel_WTG_LPHD1_PhyNam, + (ModelNode*) &iedModel_WTG_LPHD1_PhyNam_serNum, + NULL, + 0, + IEC61850_FC_DC, + IEC61850_VISIBLE_STRING_255, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_LPHD1_PhyNam_serNum = { + DataAttributeModelType, + "serNum", + (ModelNode*) &iedModel_WTG_LPHD1_PhyNam, + (ModelNode*) &iedModel_WTG_LPHD1_PhyNam_model, + NULL, + 0, + IEC61850_FC_DC, + IEC61850_VISIBLE_STRING_255, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_LPHD1_PhyNam_model = { + DataAttributeModelType, + "model", + (ModelNode*) &iedModel_WTG_LPHD1_PhyNam, + NULL, + NULL, + 0, + IEC61850_FC_DC, + IEC61850_VISIBLE_STRING_255, + 0, + NULL, + 0}; + +DataObject iedModel_WTG_LPHD1_PhyHealth = { + DataObjectModelType, + "PhyHealth", + (ModelNode*) &iedModel_WTG_LPHD1, + (ModelNode*) &iedModel_WTG_LPHD1_Proxy, + (ModelNode*) &iedModel_WTG_LPHD1_PhyHealth_stVal, + 0 +}; + +DataAttribute iedModel_WTG_LPHD1_PhyHealth_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_WTG_LPHD1_PhyHealth, + (ModelNode*) &iedModel_WTG_LPHD1_PhyHealth_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_LPHD1_PhyHealth_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_WTG_LPHD1_PhyHealth, + (ModelNode*) &iedModel_WTG_LPHD1_PhyHealth_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_LPHD1_PhyHealth_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_WTG_LPHD1_PhyHealth, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_WTG_LPHD1_Proxy = { + DataObjectModelType, + "Proxy", + (ModelNode*) &iedModel_WTG_LPHD1, + NULL, + (ModelNode*) &iedModel_WTG_LPHD1_Proxy_stVal, + 0 +}; + +DataAttribute iedModel_WTG_LPHD1_Proxy_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_WTG_LPHD1_Proxy, + (ModelNode*) &iedModel_WTG_LPHD1_Proxy_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_LPHD1_Proxy_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_WTG_LPHD1_Proxy, + (ModelNode*) &iedModel_WTG_LPHD1_Proxy_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_LPHD1_Proxy_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_WTG_LPHD1_Proxy, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; diff --git a/src/c/cmd/ot-sim-61850-module/src/wtur.c b/src/c/cmd/ot-sim-61850-module/src/wtur.c new file mode 100644 index 0000000..af61ceb --- /dev/null +++ b/src/c/cmd/ot-sim-61850-module/src/wtur.c @@ -0,0 +1,2158 @@ +#include "ied.h" +#include "wtur.h" + +LogicalNode iedModel_WTG_WTUR1 = { + LogicalNodeModelType, + "WTUR1", + (ModelNode*) &iedModel_WTG, + NULL, + (ModelNode*) &iedModel_WTG_WTUR1_Beh, +}; + +DataObject iedModel_WTG_WTUR1_Beh = { + DataObjectModelType, + "NamPlt", + (ModelNode*) &iedModel_WTG_WTUR1, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh, + (ModelNode*) &iedModel_WTG_WTUR1_Beh_stVal, + 0 +}; + +DataAttribute iedModel_WTG_WTUR1_Beh_stVal = { + DataAttributeModelType, + "vendor", + (ModelNode*) &iedModel_WTG_WTUR1_Beh, + (ModelNode*) &iedModel_WTG_WTUR1_Beh_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_Beh_q = { + DataAttributeModelType, + "swRev", + (ModelNode*) &iedModel_WTG_WTUR1_Beh, + (ModelNode*) &iedModel_WTG_WTUR1_Beh_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_Beh_t = { + DataAttributeModelType, + "configRev", + (ModelNode*) &iedModel_WTG_WTUR1_Beh, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_WTG_WTUR1_TotWh = { + DataObjectModelType, + "TotWh", + (ModelNode*) &iedModel_WTG_WTUR1, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs, + 0 +}; + +DataObject iedModel_WTG_WTUR1_TotWh_manRs = { + DataObjectModelType, + "manRs", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs_Oper, + 0 +}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_Oper = { + DataAttributeModelType, + "Oper", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs_stVal, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs_Oper_ctlVal, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_Oper_ctlVal = { + DataAttributeModelType, + "ctlVal", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs_Oper_operTm, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_Oper_operTm = { + DataAttributeModelType, + "operTm", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs_Oper_origin, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_Oper_origin = { + DataAttributeModelType, + "origin", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs_Oper_ctlNum, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs_Oper_origin_orCat, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_Oper_origin_orCat = { + DataAttributeModelType, + "orCat", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs_Oper_origin, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs_Oper_origin_orIdent, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_Oper_origin_orIdent = { + DataAttributeModelType, + "orIdent", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs_Oper_origin, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_OCTET_STRING_64, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_Oper_ctlNum = { + DataAttributeModelType, + "ctlNum", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs_Oper_T, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_INT8U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_Oper_T = { + DataAttributeModelType, + "T", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs_Oper_Test, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_Oper_Test = { + DataAttributeModelType, + "Test", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs_Oper_Check, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_Oper_Check = { + DataAttributeModelType, + "Check", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs_Oper, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_CHECK, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs_ctlModel, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_ctlModel = { + DataAttributeModelType, + "ctlModel", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs_sboTimeout, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_sboTimeout = { + DataAttributeModelType, + "sboTimeout", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs_sboClass, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_INT32U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_sboClass = { + DataAttributeModelType, + "sboClass", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_manRs, + NULL, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataObject iedModel_WTG_WTUR1_TotWh_hisRs = { + DataObjectModelType, + "hisRs", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_actCtVal, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs_Oper, + 0 +}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_Oper = { + DataAttributeModelType, + "Oper", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs_stVal, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs_Oper_ctlVal, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_Oper_ctlVal = { + DataAttributeModelType, + "ctlVal", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs_Oper_operTm, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_INT32, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_Oper_operTm = { + DataAttributeModelType, + "operTm", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs_Oper_origin, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_Oper_origin = { + DataAttributeModelType, + "origin", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs_Oper_ctlNum, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs_Oper_origin_orCat, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_Oper_origin_orCat = { + DataAttributeModelType, + "orCat", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs_Oper_origin, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs_Oper_origin_orIdent, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_Oper_origin_orIdent = { + DataAttributeModelType, + "orIdent", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs_Oper_origin, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_OCTET_STRING_64, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_Oper_ctlNum = { + DataAttributeModelType, + "ctlNum", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs_Oper_T, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_INT8U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_Oper_T = { + DataAttributeModelType, + "T", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs_Oper_Test, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_Oper_Test = { + DataAttributeModelType, + "Test", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs_Oper_Check, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_Oper_Check = { + DataAttributeModelType, + "Check", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs_Oper, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_CHECK, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs_ctlModel, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_ctlModel = { + DataAttributeModelType, + "ctlModel", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_hisRs, + NULL, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataObject iedModel_WTG_WTUR1_TotWh_actCtVal = { + DataObjectModelType, + "actCtVal", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_oldCtVal, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_actCtVal_stVal, + 0 +}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_actCtVal_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_actCtVal, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_actCtVal_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_actCtVal_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_actCtVal, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_actCtVal_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_actCtVal_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_actCtVal, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_WTG_WTUR1_TotWh_oldCtVal = { + DataObjectModelType, + "oldCtVal", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_ctTot, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_oldCtVal_stVal, + 0 +}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_oldCtVal_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_oldCtVal, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_oldCtVal_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_oldCtVal_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_oldCtVal, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_oldCtVal_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_oldCtVal_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_oldCtVal, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_ctTot = { + DataAttributeModelType, + "ctTot", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_dly, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_INT32U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_dly = { + DataAttributeModelType, + "dly", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_mly, + NULL, + 32, + IEC61850_FC_ST, + IEC61850_INT32U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_mly = { + DataAttributeModelType, + "mly", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_yly, + NULL, + 13, + IEC61850_FC_ST, + IEC61850_INT32U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_yly = { + DataAttributeModelType, + "yly", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_tot, + NULL, + 21, + IEC61850_FC_ST, + IEC61850_INT32U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_tot = { + DataAttributeModelType, + "tot", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh, + (ModelNode*) &iedModel_WTG_WTUR1_TotWh_rsPer, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_INT32U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TotWh_rsPer = { + DataAttributeModelType, + "rsPer", + (ModelNode*) &iedModel_WTG_WTUR1_TotWh, + NULL, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataObject iedModel_WTG_WTUR1_TurSt = { + DataObjectModelType, + "TurSt", + (ModelNode*) &iedModel_WTG_WTUR1, + (ModelNode*) &iedModel_WTG_WTUR1_W, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_actSt, + 0 +}; + +DataObject iedModel_WTG_WTUR1_TurSt_actSt = { + DataObjectModelType, + "actSt", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_oldSt, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_actSt_stVal, + 0 +}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_actSt_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_actSt, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_actSt_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_actSt_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_actSt, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_actSt_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_actSt_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_actSt, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_WTG_WTUR1_TurSt_oldSt = { + DataObjectModelType, + "oldSt", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_oldSt_stVal, + 0 +}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_oldSt_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_oldSt, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_oldSt_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_oldSt_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_oldSt, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_oldSt_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_oldSt_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_oldSt, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_WTG_WTUR1_TurSt_stTm = { + DataObjectModelType, + "stTm", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs, + 0 +}; + +DataObject iedModel_WTG_WTUR1_TurSt_stTm_manRs = { + DataObjectModelType, + "manRs", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper, + 0 +}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper = { + DataAttributeModelType, + "Oper", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs_stVal, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_ctlVal, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_ctlVal = { + DataAttributeModelType, + "ctlVal", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_operTm, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_operTm = { + DataAttributeModelType, + "operTm", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_origin, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_origin = { + DataAttributeModelType, + "origin", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_ctlNum, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_origin_orCat, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_origin_orCat = { + DataAttributeModelType, + "orCat", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_origin, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_origin_orIdent, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_origin_orIdent = { + DataAttributeModelType, + "orIdent", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_origin, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_OCTET_STRING_64, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_ctlNum = { + DataAttributeModelType, + "ctlNum", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_T, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_INT8U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_T = { + DataAttributeModelType, + "T", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_Test, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_Test = { + DataAttributeModelType, + "Test", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_Check, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_Check = { + DataAttributeModelType, + "Check", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_CHECK, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs_ctlModel, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_ctlModel = { + DataAttributeModelType, + "ctlModel", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs_sboTimeout, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_sboTimeout = { + DataAttributeModelType, + "sboTimeout", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs_sboClass, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_INT32U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_sboClass = { + DataAttributeModelType, + "sboClass", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_manRs, + NULL, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataObject iedModel_WTG_WTUR1_TurSt_stTm_hisRs = { + DataObjectModelType, + "hisRs", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_actTmVal, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper, + 0 +}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper = { + DataAttributeModelType, + "Oper", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs_stVal, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_ctlVal, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_ctlVal = { + DataAttributeModelType, + "ctlVal", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_operTm, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_INT32, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_operTm = { + DataAttributeModelType, + "operTm", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_origin, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_origin = { + DataAttributeModelType, + "origin", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_ctlNum, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_origin_orCat, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_origin_orCat = { + DataAttributeModelType, + "orCat", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_origin, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_origin_orIdent, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_origin_orIdent = { + DataAttributeModelType, + "orIdent", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_origin, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_OCTET_STRING_64, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_ctlNum = { + DataAttributeModelType, + "ctlNum", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_T, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_INT8U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_T = { + DataAttributeModelType, + "T", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_Test, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_Test = { + DataAttributeModelType, + "Test", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_Check, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_Check = { + DataAttributeModelType, + "Check", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_CHECK, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs_ctlModel, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_ctlModel = { + DataAttributeModelType, + "ctlModel", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_hisRs, + NULL, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataObject iedModel_WTG_WTUR1_TurSt_stTm_actTmVal = { + DataObjectModelType, + "actTmVal", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_oldTmVal, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_actTmVal_stVal, + 0 +}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_actTmVal_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_actTmVal, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_actTmVal_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_actTmVal_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_actTmVal, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_actTmVal_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_actTmVal_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_actTmVal, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_WTG_WTUR1_TurSt_stTm_oldTmVal = { + DataObjectModelType, + "oldTmVal", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_tmTot, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_oldTmVal_stVal, + 0 +}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_oldTmVal_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_oldTmVal, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_oldTmVal_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_oldTmVal_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_oldTmVal, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_oldTmVal_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_oldTmVal_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_oldTmVal, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_tmTot = { + DataAttributeModelType, + "tmTot", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_dly, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_INT32U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_dly = { + DataAttributeModelType, + "dly", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_mly, + NULL, + 32, + IEC61850_FC_ST, + IEC61850_INT32U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_mly = { + DataAttributeModelType, + "mly", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_yly, + NULL, + 13, + IEC61850_FC_ST, + IEC61850_INT32U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_yly = { + DataAttributeModelType, + "yly", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_tot, + NULL, + 21, + IEC61850_FC_ST, + IEC61850_INT32U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_tot = { + DataAttributeModelType, + "tot", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm_rsPer, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_INT32U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_rsPer = { + DataAttributeModelType, + "rsPer", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stTm, + NULL, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataObject iedModel_WTG_WTUR1_TurSt_stCt = { + DataObjectModelType, + "stCt", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_preTmms, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs, + 0 +}; + +DataObject iedModel_WTG_WTUR1_TurSt_stCt_manRs = { + DataObjectModelType, + "manRs", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper, + 0 +}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper = { + DataAttributeModelType, + "Oper", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs_stVal, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_ctlVal, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_ctlVal = { + DataAttributeModelType, + "ctlVal", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_operTm, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_operTm = { + DataAttributeModelType, + "operTm", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_origin, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_origin = { + DataAttributeModelType, + "origin", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_ctlNum, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_origin_orCat, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_origin_orCat = { + DataAttributeModelType, + "orCat", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_origin, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_origin_orIdent, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_origin_orIdent = { + DataAttributeModelType, + "orIdent", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_origin, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_OCTET_STRING_64, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_ctlNum = { + DataAttributeModelType, + "ctlNum", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_T, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_INT8U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_T = { + DataAttributeModelType, + "T", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_Test, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_Test = { + DataAttributeModelType, + "Test", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_Check, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_Check = { + DataAttributeModelType, + "Check", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_CHECK, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_BOOLEAN, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs_ctlModel, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_ctlModel = { + DataAttributeModelType, + "ctlModel", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs_sboTimeout, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_sboTimeout = { + DataAttributeModelType, + "sboTimeout", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs_sboClass, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_INT32U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_sboClass = { + DataAttributeModelType, + "sboClass", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_manRs, + NULL, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataObject iedModel_WTG_WTUR1_TurSt_stCt_hisRs = { + DataObjectModelType, + "hisRs", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_actCtVal, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper, + 0 +}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper = { + DataAttributeModelType, + "Oper", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs_stVal, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_ctlVal, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_ctlVal = { + DataAttributeModelType, + "ctlVal", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_operTm, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_INT32, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_operTm = { + DataAttributeModelType, + "operTm", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_origin, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_origin = { + DataAttributeModelType, + "origin", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_ctlNum, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_origin_orCat, + 0, + IEC61850_FC_CO, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_origin_orCat = { + DataAttributeModelType, + "orCat", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_origin, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_origin_orIdent, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_origin_orIdent = { + DataAttributeModelType, + "orIdent", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_origin, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_OCTET_STRING_64, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_ctlNum = { + DataAttributeModelType, + "ctlNum", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_T, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_INT8U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_T = { + DataAttributeModelType, + "T", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_Test, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_Test = { + DataAttributeModelType, + "Test", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_Check, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_BOOLEAN, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_Check = { + DataAttributeModelType, + "Check", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper, + NULL, + NULL, + 0, + IEC61850_FC_CO, + IEC61850_CHECK, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs_ctlModel, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_ctlModel = { + DataAttributeModelType, + "ctlModel", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_hisRs, + NULL, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataObject iedModel_WTG_WTUR1_TurSt_stCt_actCtVal = { + DataObjectModelType, + "actCtVal", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_oldCtVal, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_actCtVal_stVal, + 0 +}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_actCtVal_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_actCtVal, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_actCtVal_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_actCtVal_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_actCtVal, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_actCtVal_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_actCtVal_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_actCtVal, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_WTG_WTUR1_TurSt_stCt_oldCtVal = { + DataObjectModelType, + "oldCtVal", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_ctTot, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_oldCtVal_stVal, + 0 +}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_oldCtVal_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_oldCtVal, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_oldCtVal_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_oldCtVal_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_oldCtVal, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_oldCtVal_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_oldCtVal_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_oldCtVal, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_ctTot = { + DataAttributeModelType, + "ctTot", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_dly, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_INT32U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_dly = { + DataAttributeModelType, + "dly", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_mly, + NULL, + 32, + IEC61850_FC_ST, + IEC61850_INT32U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_mly = { + DataAttributeModelType, + "mly", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_yly, + NULL, + 13, + IEC61850_FC_ST, + IEC61850_INT32U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_yly = { + DataAttributeModelType, + "yly", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_tot, + NULL, + 21, + IEC61850_FC_ST, + IEC61850_INT32U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_tot = { + DataAttributeModelType, + "tot", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt_rsPer, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_INT32U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_rsPer = { + DataAttributeModelType, + "rsPer", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_stCt, + NULL, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_ENUMERATED, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_preTmms = { + DataAttributeModelType, + "preTmms", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_pstTmms, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_INT32U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_pstTmms = { + DataAttributeModelType, + "pstTmms", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_smpTmms, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_INT32U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_smpTmms = { + DataAttributeModelType, + "smpTmms", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt, + (ModelNode*) &iedModel_WTG_WTUR1_TurSt_datSetMx, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_INT16U, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurSt_datSetMx = { + DataAttributeModelType, + "datSetMx", + (ModelNode*) &iedModel_WTG_WTUR1_TurSt, + NULL, + NULL, + 0, + IEC61850_FC_CF, + IEC61850_VISIBLE_STRING_129, + 0, + NULL, + 0}; + +DataObject iedModel_WTG_WTUR1_W = { + DataObjectModelType, + "W", + (ModelNode*) &iedModel_WTG_WTUR1, + (ModelNode*) &iedModel_WTG_WTUR1_TurOp, + (ModelNode*) &iedModel_WTG_WTUR1_W_instMag, + 0 +}; + +DataAttribute iedModel_WTG_WTUR1_W_instMag = { + DataAttributeModelType, + "instMag", + (ModelNode*) &iedModel_WTG_WTUR1_W, + (ModelNode*) &iedModel_WTG_WTUR1_W_mag, + (ModelNode*) &iedModel_WTG_WTUR1_W_instMag_i, + 0, + IEC61850_FC_MX, + IEC61850_CONSTRUCTED, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_W_instMag_i = { + DataAttributeModelType, + "i", + (ModelNode*) &iedModel_WTG_WTUR1_W_instMag, + (ModelNode*) &iedModel_WTG_WTUR1_W_instMag_f, + NULL, + 0, + IEC61850_FC_MX, + IEC61850_INT32, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_W_instMag_f = { + DataAttributeModelType, + "f", + (ModelNode*) &iedModel_WTG_WTUR1_W_instMag, + NULL, + NULL, + 0, + IEC61850_FC_MX, + IEC61850_FLOAT32, + 0, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_W_mag = { + DataAttributeModelType, + "mag", + (ModelNode*) &iedModel_WTG_WTUR1_W, + (ModelNode*) &iedModel_WTG_WTUR1_W_q, + (ModelNode*) &iedModel_WTG_WTUR1_W_mag_i, + 0, + IEC61850_FC_MX, + IEC61850_CONSTRUCTED, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_W_mag_i = { + DataAttributeModelType, + "i", + (ModelNode*) &iedModel_WTG_WTUR1_W_mag, + (ModelNode*) &iedModel_WTG_WTUR1_W_mag_f, + NULL, + 0, + IEC61850_FC_MX, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_W_mag_f = { + DataAttributeModelType, + "f", + (ModelNode*) &iedModel_WTG_WTUR1_W_mag, + NULL, + NULL, + 0, + IEC61850_FC_MX, + IEC61850_FLOAT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_W_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_WTG_WTUR1_W, + (ModelNode*) &iedModel_WTG_WTUR1_W_t, + NULL, + 0, + IEC61850_FC_MX, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_W_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_WTG_WTUR1_W, + NULL, + NULL, + 0, + IEC61850_FC_MX, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; + +DataObject iedModel_WTG_WTUR1_TurOp = { + DataObjectModelType, + "TurOp", + (ModelNode*) &iedModel_WTG_WTUR1, + NULL, + (ModelNode*) &iedModel_WTG_WTUR1_TurOp_st, + 0 +}; + +DataObject iedModel_WTG_WTUR1_TurOp_st = { + DataObjectModelType, + "actSt", + (ModelNode*) &iedModel_WTG_WTUR1_TurOp, + NULL, + (ModelNode*) &iedModel_WTG_WTUR1_TurOp_st_stVal, + 0 +}; + +DataAttribute iedModel_WTG_WTUR1_TurOp_st_stVal = { + DataAttributeModelType, + "stVal", + (ModelNode*) &iedModel_WTG_WTUR1_TurOp_st, + (ModelNode*) &iedModel_WTG_WTUR1_TurOp_st_q, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_INT32, + 0 + TRG_OPT_DATA_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurOp_st_q = { + DataAttributeModelType, + "q", + (ModelNode*) &iedModel_WTG_WTUR1_TurOp_st, + (ModelNode*) &iedModel_WTG_WTUR1_TurOp_st_t, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_QUALITY, + 0 + TRG_OPT_QUALITY_CHANGED, + NULL, + 0}; + +DataAttribute iedModel_WTG_WTUR1_TurOp_st_t = { + DataAttributeModelType, + "t", + (ModelNode*) &iedModel_WTG_WTUR1_TurOp_st, + NULL, + NULL, + 0, + IEC61850_FC_ST, + IEC61850_TIMESTAMP, + 0, + NULL, + 0}; \ No newline at end of file