- added SV subscriber and example

This commit is contained in:
Michael Zillgith 2015-11-13 17:48:19 +01:00
parent c3dace4150
commit c0174f9f38
31 changed files with 1451 additions and 2150 deletions

View file

@ -59,6 +59,7 @@ include_directories(
${CMAKE_CURRENT_BINARY_DIR}/config
src/common/inc
src/goose
src/sampled_values
src/hal/inc
src/iec61850/inc
src/iec61850/inc_private
@ -75,27 +76,28 @@ set(API_HEADERS
src/common/inc/linked_list.h
src/common/inc/byte_buffer.h
src/common/inc/lib_memory.h
src/iec61850/inc/iec61850_client.h
src/iec61850/inc/iec61850_common.h
src/iec61850/inc/iec61850_server.h
src/iec61850/inc/iec61850_model.h
src/iec61850/inc/iec61850_cdc.h
src/iec61850/inc/iec61850_dynamic_model.h
src/iec61850/inc/iec61850_config_file_parser.h
src/mms/inc/mms_value.h
src/mms/inc/mms_common.h
src/mms/inc/mms_types.h
src/mms/inc/mms_device_model.h
src/mms/inc/mms_server.h
src/mms/inc/mms_named_variable_list.h
src/mms/inc/mms_type_spec.h
src/mms/inc/mms_client_connection.h
src/mms/inc/iso_connection_parameters.h
src/mms/inc/iso_server.h
src/mms/inc/ber_integer.h
src/mms/inc/asn1_ber_primitive_value.h
src/goose/goose_subscriber.h
src/goose/goose_receiver.h
src/iec61850/inc/iec61850_client.h
src/iec61850/inc/iec61850_common.h
src/iec61850/inc/iec61850_server.h
src/iec61850/inc/iec61850_model.h
src/iec61850/inc/iec61850_cdc.h
src/iec61850/inc/iec61850_dynamic_model.h
src/iec61850/inc/iec61850_config_file_parser.h
src/mms/inc/mms_value.h
src/mms/inc/mms_common.h
src/mms/inc/mms_types.h
src/mms/inc/mms_device_model.h
src/mms/inc/mms_server.h
src/mms/inc/mms_named_variable_list.h
src/mms/inc/mms_type_spec.h
src/mms/inc/mms_client_connection.h
src/mms/inc/iso_connection_parameters.h
src/mms/inc/iso_server.h
src/mms/inc/ber_integer.h
src/mms/inc/asn1_ber_primitive_value.h
src/goose/goose_subscriber.h
src/goose/goose_receiver.h
src/sampled_values/sv_subscriber.h
)
IF(WIN32)

View file

@ -19,6 +19,7 @@ LIB_SOURCE_DIRS += src/mms/iso_mms/asn1c
LIB_SOURCE_DIRS += src/mms/iso_server
ifndef EXCLUDE_ETHERNET_WINDOWS
LIB_SOURCE_DIRS += src/goose
LIB_SOURCE_DIRS += src/sampled_values
endif
LIB_SOURCE_DIRS += src/iec61850/client
LIB_SOURCE_DIRS += src/iec61850/common
@ -45,13 +46,14 @@ LIB_SOURCE_DIRS += src/hal/ethernet/bsd
LIB_SOURCE_DIRS += src/hal/filesystem/linux
LIB_SOURCE_DIRS += src/hal/time/unix
endif
LIB_INCLUDE_DIRS += config
LIB_INCLUDE_DIRS += config
LIB_INCLUDE_DIRS += src/common/inc
LIB_INCLUDE_DIRS += src/mms/iso_mms/asn1c
LIB_INCLUDE_DIRS += src/mms/inc
LIB_INCLUDE_DIRS += src/mms/inc_private
LIB_INCLUDE_DIRS += src/hal/inc
LIB_INCLUDE_DIRS += src/goose
LIB_INCLUDE_DIRS += src/mms/inc_private
LIB_INCLUDE_DIRS += src/hal/inc
LIB_INCLUDE_DIRS += src/goose
LIB_INCLUDE_DIRS += src/sampled_values
LIB_INCLUDE_DIRS += src/iec61850/inc
LIB_INCLUDE_DIRS += src/iec61850/inc_private
ifeq ($(HAL_IMPL), WIN32)
@ -92,6 +94,7 @@ LIB_API_HEADER_FILES += src/mms/inc/ber_integer.h
LIB_API_HEADER_FILES += src/mms/inc/asn1_ber_primitive_value.h
LIB_API_HEADER_FILES += src/goose/goose_subscriber.h
LIB_API_HEADER_FILES += src/goose/goose_receiver.h
LIB_API_HEADER_FILES += src/sampled_values/sv_subscriber.h
get_sources_from_directory = $(wildcard $1/*.c)
get_sources = $(foreach dir, $1, $(call get_sources_from_directory,$(dir)))

View file

@ -18,7 +18,7 @@
#define DEBUG_ISO_SERVER 0
#define DEBUG_ISO_CLIENT 0
#define DEBUG_IED_SERVER 0
#define DEBUG_IED_CLIENT 0
#define DEBUG_IED_CLIENT 1
#define DEBUG_MMS_CLIENT 0
#define DEBUG_MMS_SERVER 0
#define DEBUG_GOOSE_SUBSCRIBER 0

View file

@ -18,8 +18,9 @@ add_subdirectory(iec61850_client_example4)
add_subdirectory(iec61850_client_example5)
add_subdirectory(iec61850_client_example_files)
add_subdirectory(iec61850_client_example_reporting)
add_subdirectory(goose_subscriber)
add_subdirectory(mms_client_example1)
add_subdirectory(mms_client_example2)
add_subdirectory(mms_client_example3)
add_subdirectory(mms_client_example4)
add_subdirectory(goose_subscriber)
add_subdirectory(sv_subscriber)

View file

@ -25,6 +25,7 @@ EXAMPLE_DIRS += server_example_threadless
EXAMPLE_DIRS += server_example_setting_groups
EXAMPLE_DIRS += goose_subscriber
EXAMPLE_DIRS += goose_publisher
EXAMPLE_DIRS += sv_subscriber
EXAMPLE_DIRS += mms_utility
MODEL_DIRS += server_example1

View file

@ -11,6 +11,19 @@
#include "hal_thread.h"
static void
printDstAddr(DstAddress dstAddress)
{
printf(" addr: ");
int i;
for (i = 0; i < 6; i++)
printf("%02x", dstAddress.addr[i]);
printf("\n prio: %u\n", dstAddress.priority);
printf(" vid: %u\n", dstAddress.vid);
printf(" appID: %u\n", dstAddress.appId);
}
int main(int argc, char** argv) {
@ -85,6 +98,9 @@ int main(int argc, char** argv) {
printf("noASDU: %i\n", ClientSVControlBlock_getNoASDU(svcb));
DstAddress dstAddress = ClientSVControlBlock_getDstAddress(svcb);
printDstAddr(dstAddress);
}
else {

View file

@ -3,171 +3,38 @@
*
* automatically generated from sampleModel_with_dataset.icd
*/
#include <stdlib.h>
#include "iec61850_model.h"
#include "static_model.h"
extern IedModel iedModel;
static void initializeValues();
extern LogicalDevice iedModel_Device1;
extern LogicalNode iedModel_Device1_LLN0;
extern DataObject iedModel_Device1_LLN0_Mod;
extern DataAttribute iedModel_Device1_LLN0_Mod_q;
extern DataAttribute iedModel_Device1_LLN0_Mod_t;
extern DataAttribute iedModel_Device1_LLN0_Mod_ctlModel;
extern DataObject iedModel_Device1_LLN0_Beh;
extern DataAttribute iedModel_Device1_LLN0_Beh_stVal;
extern DataAttribute iedModel_Device1_LLN0_Beh_q;
extern DataAttribute iedModel_Device1_LLN0_Beh_t;
extern DataObject iedModel_Device1_LLN0_Health;
extern DataAttribute iedModel_Device1_LLN0_Health_stVal;
extern DataAttribute iedModel_Device1_LLN0_Health_q;
extern DataAttribute iedModel_Device1_LLN0_Health_t;
extern DataObject iedModel_Device1_LLN0_NamPlt;
extern DataAttribute iedModel_Device1_LLN0_NamPlt_vendor;
extern DataAttribute iedModel_Device1_LLN0_NamPlt_swRev;
extern DataAttribute iedModel_Device1_LLN0_NamPlt_d;
extern DataAttribute iedModel_Device1_LLN0_NamPlt_configRev;
extern DataAttribute iedModel_Device1_LLN0_NamPlt_ldNs;
extern LogicalNode iedModel_Device1_LPHD1;
extern DataObject iedModel_Device1_LPHD1_PhyNam;
extern DataAttribute iedModel_Device1_LPHD1_PhyNam_vendor;
extern DataObject iedModel_Device1_LPHD1_PhyHealth;
extern DataAttribute iedModel_Device1_LPHD1_PhyHealth_stVal;
extern DataAttribute iedModel_Device1_LPHD1_PhyHealth_q;
extern DataAttribute iedModel_Device1_LPHD1_PhyHealth_t;
extern DataObject iedModel_Device1_LPHD1_Proxy;
extern DataAttribute iedModel_Device1_LPHD1_Proxy_stVal;
extern DataAttribute iedModel_Device1_LPHD1_Proxy_q;
extern DataAttribute iedModel_Device1_LPHD1_Proxy_t;
extern LogicalNode iedModel_Device1_DGEN1;
extern DataObject iedModel_Device1_DGEN1_Mod;
extern DataAttribute iedModel_Device1_DGEN1_Mod_q;
extern DataAttribute iedModel_Device1_DGEN1_Mod_t;
extern DataAttribute iedModel_Device1_DGEN1_Mod_ctlModel;
extern DataObject iedModel_Device1_DGEN1_Beh;
extern DataAttribute iedModel_Device1_DGEN1_Beh_stVal;
extern DataAttribute iedModel_Device1_DGEN1_Beh_q;
extern DataAttribute iedModel_Device1_DGEN1_Beh_t;
extern DataObject iedModel_Device1_DGEN1_Health;
extern DataAttribute iedModel_Device1_DGEN1_Health_stVal;
extern DataAttribute iedModel_Device1_DGEN1_Health_q;
extern DataAttribute iedModel_Device1_DGEN1_Health_t;
extern DataObject iedModel_Device1_DGEN1_NamPlt;
extern DataAttribute iedModel_Device1_DGEN1_NamPlt_vendor;
extern DataAttribute iedModel_Device1_DGEN1_NamPlt_swRev;
extern DataAttribute iedModel_Device1_DGEN1_NamPlt_d;
extern DataObject iedModel_Device1_DGEN1_OpTmh;
extern DataAttribute iedModel_Device1_DGEN1_OpTmh_stVal;
extern DataAttribute iedModel_Device1_DGEN1_OpTmh_q;
extern DataAttribute iedModel_Device1_DGEN1_OpTmh_t;
extern DataObject iedModel_Device1_DGEN1_GnOpSt;
extern DataAttribute iedModel_Device1_DGEN1_GnOpSt_stVal;
extern DataAttribute iedModel_Device1_DGEN1_GnOpSt_q;
extern DataAttribute iedModel_Device1_DGEN1_GnOpSt_t;
extern DataObject iedModel_Device1_DGEN1_OpTmsRs;
extern DataAttribute iedModel_Device1_DGEN1_OpTmsRs_stVal;
extern DataAttribute iedModel_Device1_DGEN1_OpTmsRs_q;
extern DataAttribute iedModel_Device1_DGEN1_OpTmsRs_t;
extern DataObject iedModel_Device1_DGEN1_TotWh;
extern DataAttribute iedModel_Device1_DGEN1_TotWh_mag;
extern DataAttribute iedModel_Device1_DGEN1_TotWh_mag_f;
extern DataAttribute iedModel_Device1_DGEN1_TotWh_q;
extern DataAttribute iedModel_Device1_DGEN1_TotWh_t;
extern LogicalNode iedModel_Device1_DSCH1;
extern DataObject iedModel_Device1_DSCH1_Mod;
extern DataAttribute iedModel_Device1_DSCH1_Mod_q;
extern DataAttribute iedModel_Device1_DSCH1_Mod_t;
extern DataAttribute iedModel_Device1_DSCH1_Mod_ctlModel;
extern DataObject iedModel_Device1_DSCH1_Beh;
extern DataAttribute iedModel_Device1_DSCH1_Beh_stVal;
extern DataAttribute iedModel_Device1_DSCH1_Beh_q;
extern DataAttribute iedModel_Device1_DSCH1_Beh_t;
extern DataObject iedModel_Device1_DSCH1_Health;
extern DataAttribute iedModel_Device1_DSCH1_Health_stVal;
extern DataAttribute iedModel_Device1_DSCH1_Health_q;
extern DataAttribute iedModel_Device1_DSCH1_Health_t;
extern DataObject iedModel_Device1_DSCH1_NamPlt;
extern DataAttribute iedModel_Device1_DSCH1_NamPlt_vendor;
extern DataAttribute iedModel_Device1_DSCH1_NamPlt_swRev;
extern DataAttribute iedModel_Device1_DSCH1_NamPlt_d;
extern DataObject iedModel_Device1_DSCH1_SchdSt;
extern DataAttribute iedModel_Device1_DSCH1_SchdSt_stVal;
extern DataAttribute iedModel_Device1_DSCH1_SchdSt_q;
extern DataAttribute iedModel_Device1_DSCH1_SchdSt_t;
extern DataObject iedModel_Device1_DSCH1_SchdId;
extern DataObject iedModel_Device1_DSCH1_SchdCat;
extern DataObject iedModel_Device1_DSCH1_SchdTyp;
extern DataObject iedModel_Device1_DSCH1_SchdAbsTm;
extern DataAttribute iedModel_Device1_DSCH1_SchdAbsTm_val;
extern DataAttribute iedModel_Device1_DSCH1_SchdAbsTm_time;
extern LogicalNode iedModel_Device1_MMXU1;
extern DataObject iedModel_Device1_MMXU1_Mod;
extern DataAttribute iedModel_Device1_MMXU1_Mod_q;
extern DataAttribute iedModel_Device1_MMXU1_Mod_t;
extern DataAttribute iedModel_Device1_MMXU1_Mod_ctlModel;
extern DataObject iedModel_Device1_MMXU1_Beh;
extern DataAttribute iedModel_Device1_MMXU1_Beh_stVal;
extern DataAttribute iedModel_Device1_MMXU1_Beh_q;
extern DataAttribute iedModel_Device1_MMXU1_Beh_t;
extern DataObject iedModel_Device1_MMXU1_Health;
extern DataAttribute iedModel_Device1_MMXU1_Health_stVal;
extern DataAttribute iedModel_Device1_MMXU1_Health_q;
extern DataAttribute iedModel_Device1_MMXU1_Health_t;
extern DataObject iedModel_Device1_MMXU1_NamPlt;
extern DataAttribute iedModel_Device1_MMXU1_NamPlt_vendor;
extern DataAttribute iedModel_Device1_MMXU1_NamPlt_swRev;
extern DataAttribute iedModel_Device1_MMXU1_NamPlt_d;
extern LogicalNode iedModel_Device1_MMXU2;
extern DataObject iedModel_Device1_MMXU2_Mod;
extern DataAttribute iedModel_Device1_MMXU2_Mod_q;
extern DataAttribute iedModel_Device1_MMXU2_Mod_t;
extern DataAttribute iedModel_Device1_MMXU2_Mod_ctlModel;
extern DataObject iedModel_Device1_MMXU2_Beh;
extern DataAttribute iedModel_Device1_MMXU2_Beh_stVal;
extern DataAttribute iedModel_Device1_MMXU2_Beh_q;
extern DataAttribute iedModel_Device1_MMXU2_Beh_t;
extern DataObject iedModel_Device1_MMXU2_Health;
extern DataAttribute iedModel_Device1_MMXU2_Health_stVal;
extern DataAttribute iedModel_Device1_MMXU2_Health_q;
extern DataAttribute iedModel_Device1_MMXU2_Health_t;
extern DataObject iedModel_Device1_MMXU2_NamPlt;
extern DataAttribute iedModel_Device1_MMXU2_NamPlt_vendor;
extern DataAttribute iedModel_Device1_MMXU2_NamPlt_swRev;
extern DataAttribute iedModel_Device1_MMXU2_NamPlt_d;
extern DataObject iedModel_Device1_MMXU2_TotW;
extern DataAttribute iedModel_Device1_MMXU2_TotW_mag;
extern DataAttribute iedModel_Device1_MMXU2_TotW_mag_f;
extern DataAttribute iedModel_Device1_MMXU2_TotW_q;
extern DataAttribute iedModel_Device1_MMXU2_TotW_t;
extern DataSet ds_Device1_LLN0_dataset1;
extern DataSet iedModelds_Device1_LLN0_dataset1;
extern DataSetEntry ds_Device1_LLN0_dataset1_fcda0;
extern DataSetEntry ds_Device1_LLN0_dataset1_fcda1;
extern DataSetEntry ds_Device1_LLN0_dataset1_fcda2;
extern DataSetEntry iedModelds_Device1_LLN0_dataset1_fcda0;
extern DataSetEntry iedModelds_Device1_LLN0_dataset1_fcda1;
extern DataSetEntry iedModelds_Device1_LLN0_dataset1_fcda2;
DataSetEntry ds_Device1_LLN0_dataset1_fcda0 = {
DataSetEntry iedModelds_Device1_LLN0_dataset1_fcda0 = {
"Device1",
false,
"LLN0$ST$Mod$q",
-1,
NULL,
NULL,
&ds_Device1_LLN0_dataset1_fcda1
&iedModelds_Device1_LLN0_dataset1_fcda1
};
DataSetEntry ds_Device1_LLN0_dataset1_fcda1 = {
DataSetEntry iedModelds_Device1_LLN0_dataset1_fcda1 = {
"Device1",
false,
"MMXU1$ST$Mod$q",
-1,
NULL,
NULL,
&ds_Device1_LLN0_dataset1_fcda2
&iedModelds_Device1_LLN0_dataset1_fcda2
};
DataSetEntry ds_Device1_LLN0_dataset1_fcda2 = {
DataSetEntry iedModelds_Device1_LLN0_dataset1_fcda2 = {
"Device1",
false,
"MMXU1$CF$Mod$ctlModel",
@ -177,11 +44,11 @@ DataSetEntry ds_Device1_LLN0_dataset1_fcda2 = {
NULL
};
DataSet ds_Device1_LLN0_dataset1 = {
DataSet iedModelds_Device1_LLN0_dataset1 = {
"Device1",
"LLN0$dataset1",
3,
&ds_Device1_LLN0_dataset1_fcda0,
&iedModelds_Device1_LLN0_dataset1_fcda0,
NULL
};
@ -1723,7 +1590,8 @@ DataAttribute iedModel_Device1_MMXU2_TotW_t = {
extern ReportControlBlock iedModel_Device1_LLN0_report0;
ReportControlBlock iedModel_Device1_LLN0_report0 = {&iedModel_Device1_LLN0, "LLN0_Events_BuffRep01", "LLN0$RP$brcbEV1", true, "dataset1", 1, 9, 239, 50, 900000, NULL};
ReportControlBlock iedModel_Device1_LLN0_report0 = {&iedModel_Device1_LLN0, "LLN0_Events_BuffRep01", "LLN0$RP$brcbEV1", true, "dataset1", 1, 25, 239, 50, 900000, NULL};
@ -1731,10 +1599,11 @@ ReportControlBlock iedModel_Device1_LLN0_report0 = {&iedModel_Device1_LLN0, "LLN
IedModel iedModel = {
"SampleIED",
&iedModel_Device1,
&ds_Device1_LLN0_dataset1,
&iedModelds_Device1_LLN0_dataset1,
&iedModel_Device1_LLN0_report0,
NULL,
NULL,
NULL,
initializeValues
};

View file

@ -3,357 +3,60 @@
*
* automatically generated from complexModel.icd
*/
#include <stdlib.h>
#include "iec61850_model.h"
#include "static_model.h"
extern IedModel iedModel;
static void initializeValues();
extern LogicalDevice iedModel_Inverter;
extern LogicalNode iedModel_Inverter_LLN0;
extern DataObject iedModel_Inverter_LLN0_Mod;
extern DataAttribute iedModel_Inverter_LLN0_Mod_q;
extern DataAttribute iedModel_Inverter_LLN0_Mod_t;
extern DataAttribute iedModel_Inverter_LLN0_Mod_ctlModel;
extern DataObject iedModel_Inverter_LLN0_Beh;
extern DataAttribute iedModel_Inverter_LLN0_Beh_stVal;
extern DataAttribute iedModel_Inverter_LLN0_Beh_q;
extern DataAttribute iedModel_Inverter_LLN0_Beh_t;
extern DataObject iedModel_Inverter_LLN0_Health;
extern DataAttribute iedModel_Inverter_LLN0_Health_stVal;
extern DataAttribute iedModel_Inverter_LLN0_Health_q;
extern DataAttribute iedModel_Inverter_LLN0_Health_t;
extern DataObject iedModel_Inverter_LLN0_NamPlt;
extern DataAttribute iedModel_Inverter_LLN0_NamPlt_vendor;
extern DataAttribute iedModel_Inverter_LLN0_NamPlt_swRev;
extern DataAttribute iedModel_Inverter_LLN0_NamPlt_d;
extern DataAttribute iedModel_Inverter_LLN0_NamPlt_configRev;
extern DataAttribute iedModel_Inverter_LLN0_NamPlt_ldNs;
extern LogicalNode iedModel_Inverter_LPHD1;
extern DataObject iedModel_Inverter_LPHD1_PhyNam;
extern DataAttribute iedModel_Inverter_LPHD1_PhyNam_vendor;
extern DataObject iedModel_Inverter_LPHD1_PhyHealth;
extern DataAttribute iedModel_Inverter_LPHD1_PhyHealth_stVal;
extern DataAttribute iedModel_Inverter_LPHD1_PhyHealth_q;
extern DataAttribute iedModel_Inverter_LPHD1_PhyHealth_t;
extern DataObject iedModel_Inverter_LPHD1_Proxy;
extern DataAttribute iedModel_Inverter_LPHD1_Proxy_stVal;
extern DataAttribute iedModel_Inverter_LPHD1_Proxy_q;
extern DataAttribute iedModel_Inverter_LPHD1_Proxy_t;
extern LogicalNode iedModel_Inverter_ZINV1;
extern DataObject iedModel_Inverter_ZINV1_Mod;
extern DataAttribute iedModel_Inverter_ZINV1_Mod_q;
extern DataAttribute iedModel_Inverter_ZINV1_Mod_t;
extern DataAttribute iedModel_Inverter_ZINV1_Mod_ctlModel;
extern DataObject iedModel_Inverter_ZINV1_Beh;
extern DataAttribute iedModel_Inverter_ZINV1_Beh_stVal;
extern DataAttribute iedModel_Inverter_ZINV1_Beh_q;
extern DataAttribute iedModel_Inverter_ZINV1_Beh_t;
extern DataObject iedModel_Inverter_ZINV1_Health;
extern DataAttribute iedModel_Inverter_ZINV1_Health_stVal;
extern DataAttribute iedModel_Inverter_ZINV1_Health_q;
extern DataAttribute iedModel_Inverter_ZINV1_Health_t;
extern DataObject iedModel_Inverter_ZINV1_NamPlt;
extern DataAttribute iedModel_Inverter_ZINV1_NamPlt_vendor;
extern DataAttribute iedModel_Inverter_ZINV1_NamPlt_swRev;
extern DataAttribute iedModel_Inverter_ZINV1_NamPlt_d;
extern DataObject iedModel_Inverter_ZINV1_WRtg;
extern DataAttribute iedModel_Inverter_ZINV1_WRtg_setMag;
extern DataAttribute iedModel_Inverter_ZINV1_WRtg_setMag_f;
extern DataAttribute iedModel_Inverter_ZINV1_WRtg_units;
extern DataAttribute iedModel_Inverter_ZINV1_WRtg_units_SIUnit;
extern DataObject iedModel_Inverter_ZINV1_VarRtg;
extern DataAttribute iedModel_Inverter_ZINV1_VarRtg_setMag;
extern DataAttribute iedModel_Inverter_ZINV1_VarRtg_setMag_f;
extern DataAttribute iedModel_Inverter_ZINV1_VarRtg_units;
extern DataAttribute iedModel_Inverter_ZINV1_VarRtg_units_SIUnit;
extern DataObject iedModel_Inverter_ZINV1_ACTyp;
extern DataAttribute iedModel_Inverter_ZINV1_ACTyp_setVal;
extern DataObject iedModel_Inverter_ZINV1_OutWSet;
extern DataAttribute iedModel_Inverter_ZINV1_OutWSet_setMag;
extern DataAttribute iedModel_Inverter_ZINV1_OutWSet_setMag_f;
extern DataAttribute iedModel_Inverter_ZINV1_OutWSet_units;
extern DataAttribute iedModel_Inverter_ZINV1_OutWSet_units_SIUnit;
extern DataObject iedModel_Inverter_ZINV1_OutVarSet;
extern DataAttribute iedModel_Inverter_ZINV1_OutVarSet_setMag;
extern DataAttribute iedModel_Inverter_ZINV1_OutVarSet_setMag_f;
extern DataAttribute iedModel_Inverter_ZINV1_OutVarSet_units;
extern DataAttribute iedModel_Inverter_ZINV1_OutVarSet_units_SIUnit;
extern LogicalNode iedModel_Inverter_MMXU1;
extern DataObject iedModel_Inverter_MMXU1_Mod;
extern DataAttribute iedModel_Inverter_MMXU1_Mod_q;
extern DataAttribute iedModel_Inverter_MMXU1_Mod_t;
extern DataAttribute iedModel_Inverter_MMXU1_Mod_ctlModel;
extern DataObject iedModel_Inverter_MMXU1_Beh;
extern DataAttribute iedModel_Inverter_MMXU1_Beh_stVal;
extern DataAttribute iedModel_Inverter_MMXU1_Beh_q;
extern DataAttribute iedModel_Inverter_MMXU1_Beh_t;
extern DataObject iedModel_Inverter_MMXU1_Health;
extern DataAttribute iedModel_Inverter_MMXU1_Health_stVal;
extern DataAttribute iedModel_Inverter_MMXU1_Health_q;
extern DataAttribute iedModel_Inverter_MMXU1_Health_t;
extern DataObject iedModel_Inverter_MMXU1_NamPlt;
extern DataAttribute iedModel_Inverter_MMXU1_NamPlt_vendor;
extern DataAttribute iedModel_Inverter_MMXU1_NamPlt_swRev;
extern DataAttribute iedModel_Inverter_MMXU1_NamPlt_d;
extern DataObject iedModel_Inverter_MMXU1_TotW;
extern DataAttribute iedModel_Inverter_MMXU1_TotW_mag;
extern DataAttribute iedModel_Inverter_MMXU1_TotW_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_TotW_q;
extern DataAttribute iedModel_Inverter_MMXU1_TotW_t;
extern DataObject iedModel_Inverter_MMXU1_TotVAr;
extern DataAttribute iedModel_Inverter_MMXU1_TotVAr_mag;
extern DataAttribute iedModel_Inverter_MMXU1_TotVAr_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_TotVAr_q;
extern DataAttribute iedModel_Inverter_MMXU1_TotVAr_t;
extern DataObject iedModel_Inverter_MMXU1_TotVA;
extern DataAttribute iedModel_Inverter_MMXU1_TotVA_mag;
extern DataAttribute iedModel_Inverter_MMXU1_TotVA_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_TotVA_q;
extern DataAttribute iedModel_Inverter_MMXU1_TotVA_t;
extern DataObject iedModel_Inverter_MMXU1_Hz;
extern DataAttribute iedModel_Inverter_MMXU1_Hz_mag;
extern DataAttribute iedModel_Inverter_MMXU1_Hz_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_Hz_q;
extern DataAttribute iedModel_Inverter_MMXU1_Hz_t;
extern DataObject iedModel_Inverter_MMXU1_PhV;
extern DataObject iedModel_Inverter_MMXU1_PhV_phsA;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsA_cVal;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsA_cVal_mag;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsA_cVal_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsA_q;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsA_t;
extern DataObject iedModel_Inverter_MMXU1_PhV_phsB;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsB_cVal;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsB_cVal_mag;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsB_cVal_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsB_q;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsB_t;
extern DataObject iedModel_Inverter_MMXU1_PhV_phsC;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsC_cVal;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsC_cVal_mag;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsC_cVal_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsC_q;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsC_t;
extern DataObject iedModel_Inverter_MMXU1_PhV_neut;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_neut_cVal;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_neut_cVal_mag;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_neut_cVal_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_neut_q;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_neut_t;
extern DataObject iedModel_Inverter_MMXU1_A;
extern DataObject iedModel_Inverter_MMXU1_A_phsA;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsA_cVal;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsA_cVal_mag;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsA_cVal_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsA_q;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsA_t;
extern DataObject iedModel_Inverter_MMXU1_A_phsB;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsB_cVal;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsB_cVal_mag;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsB_cVal_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsB_q;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsB_t;
extern DataObject iedModel_Inverter_MMXU1_A_phsC;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsC_cVal;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsC_cVal_mag;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsC_cVal_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsC_q;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsC_t;
extern DataObject iedModel_Inverter_MMXU1_A_neut;
extern DataAttribute iedModel_Inverter_MMXU1_A_neut_cVal;
extern DataAttribute iedModel_Inverter_MMXU1_A_neut_cVal_mag;
extern DataAttribute iedModel_Inverter_MMXU1_A_neut_cVal_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_A_neut_q;
extern DataAttribute iedModel_Inverter_MMXU1_A_neut_t;
extern DataObject iedModel_Inverter_MMXU1_W;
extern DataObject iedModel_Inverter_MMXU1_W_phsA;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsA_cVal;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsA_cVal_mag;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsA_cVal_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsA_q;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsA_t;
extern DataObject iedModel_Inverter_MMXU1_W_phsB;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsB_cVal;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsB_cVal_mag;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsB_cVal_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsB_q;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsB_t;
extern DataObject iedModel_Inverter_MMXU1_W_phsC;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsC_cVal;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsC_cVal_mag;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsC_cVal_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsC_q;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsC_t;
extern LogicalDevice iedModel_Battery;
extern LogicalNode iedModel_Battery_LLN0;
extern DataObject iedModel_Battery_LLN0_Mod;
extern DataAttribute iedModel_Battery_LLN0_Mod_q;
extern DataAttribute iedModel_Battery_LLN0_Mod_t;
extern DataAttribute iedModel_Battery_LLN0_Mod_ctlModel;
extern DataObject iedModel_Battery_LLN0_Beh;
extern DataAttribute iedModel_Battery_LLN0_Beh_stVal;
extern DataAttribute iedModel_Battery_LLN0_Beh_q;
extern DataAttribute iedModel_Battery_LLN0_Beh_t;
extern DataObject iedModel_Battery_LLN0_Health;
extern DataAttribute iedModel_Battery_LLN0_Health_stVal;
extern DataAttribute iedModel_Battery_LLN0_Health_q;
extern DataAttribute iedModel_Battery_LLN0_Health_t;
extern DataObject iedModel_Battery_LLN0_NamPlt;
extern DataAttribute iedModel_Battery_LLN0_NamPlt_vendor;
extern DataAttribute iedModel_Battery_LLN0_NamPlt_swRev;
extern DataAttribute iedModel_Battery_LLN0_NamPlt_d;
extern DataAttribute iedModel_Battery_LLN0_NamPlt_configRev;
extern DataAttribute iedModel_Battery_LLN0_NamPlt_ldNs;
extern LogicalNode iedModel_Battery_LPHD1;
extern DataObject iedModel_Battery_LPHD1_PhyNam;
extern DataAttribute iedModel_Battery_LPHD1_PhyNam_vendor;
extern DataObject iedModel_Battery_LPHD1_PhyHealth;
extern DataAttribute iedModel_Battery_LPHD1_PhyHealth_stVal;
extern DataAttribute iedModel_Battery_LPHD1_PhyHealth_q;
extern DataAttribute iedModel_Battery_LPHD1_PhyHealth_t;
extern DataObject iedModel_Battery_LPHD1_Proxy;
extern DataAttribute iedModel_Battery_LPHD1_Proxy_stVal;
extern DataAttribute iedModel_Battery_LPHD1_Proxy_q;
extern DataAttribute iedModel_Battery_LPHD1_Proxy_t;
extern LogicalNode iedModel_Battery_ZBAT1;
extern DataObject iedModel_Battery_ZBAT1_Mod;
extern DataAttribute iedModel_Battery_ZBAT1_Mod_q;
extern DataAttribute iedModel_Battery_ZBAT1_Mod_t;
extern DataAttribute iedModel_Battery_ZBAT1_Mod_ctlModel;
extern DataObject iedModel_Battery_ZBAT1_Beh;
extern DataAttribute iedModel_Battery_ZBAT1_Beh_stVal;
extern DataAttribute iedModel_Battery_ZBAT1_Beh_q;
extern DataAttribute iedModel_Battery_ZBAT1_Beh_t;
extern DataObject iedModel_Battery_ZBAT1_Health;
extern DataAttribute iedModel_Battery_ZBAT1_Health_stVal;
extern DataAttribute iedModel_Battery_ZBAT1_Health_q;
extern DataAttribute iedModel_Battery_ZBAT1_Health_t;
extern DataObject iedModel_Battery_ZBAT1_NamPlt;
extern DataAttribute iedModel_Battery_ZBAT1_NamPlt_vendor;
extern DataAttribute iedModel_Battery_ZBAT1_NamPlt_swRev;
extern DataAttribute iedModel_Battery_ZBAT1_NamPlt_d;
extern DataObject iedModel_Battery_ZBAT1_Vol;
extern DataAttribute iedModel_Battery_ZBAT1_Vol_mag;
extern DataAttribute iedModel_Battery_ZBAT1_Vol_mag_f;
extern DataAttribute iedModel_Battery_ZBAT1_Vol_q;
extern DataAttribute iedModel_Battery_ZBAT1_Vol_t;
extern DataObject iedModel_Battery_ZBAT1_Amp;
extern DataAttribute iedModel_Battery_ZBAT1_Amp_mag;
extern DataAttribute iedModel_Battery_ZBAT1_Amp_mag_f;
extern DataAttribute iedModel_Battery_ZBAT1_Amp_q;
extern DataAttribute iedModel_Battery_ZBAT1_Amp_t;
extern LogicalNode iedModel_Battery_ZBTC1;
extern DataObject iedModel_Battery_ZBTC1_Mod;
extern DataAttribute iedModel_Battery_ZBTC1_Mod_q;
extern DataAttribute iedModel_Battery_ZBTC1_Mod_t;
extern DataAttribute iedModel_Battery_ZBTC1_Mod_ctlModel;
extern DataObject iedModel_Battery_ZBTC1_Beh;
extern DataAttribute iedModel_Battery_ZBTC1_Beh_stVal;
extern DataAttribute iedModel_Battery_ZBTC1_Beh_q;
extern DataAttribute iedModel_Battery_ZBTC1_Beh_t;
extern DataObject iedModel_Battery_ZBTC1_Health;
extern DataAttribute iedModel_Battery_ZBTC1_Health_stVal;
extern DataAttribute iedModel_Battery_ZBTC1_Health_q;
extern DataAttribute iedModel_Battery_ZBTC1_Health_t;
extern DataObject iedModel_Battery_ZBTC1_NamPlt;
extern DataAttribute iedModel_Battery_ZBTC1_NamPlt_vendor;
extern DataAttribute iedModel_Battery_ZBTC1_NamPlt_swRev;
extern DataAttribute iedModel_Battery_ZBTC1_NamPlt_d;
extern DataObject iedModel_Battery_ZBTC1_BatChaSt;
extern DataObject iedModel_Battery_ZBTC1_BatChaPwr;
extern DataObject iedModel_Battery_ZBTC1_BatChaMod;
extern DataObject iedModel_Battery_ZBTC1_ChaV;
extern DataAttribute iedModel_Battery_ZBTC1_ChaV_mag;
extern DataAttribute iedModel_Battery_ZBTC1_ChaV_mag_f;
extern DataAttribute iedModel_Battery_ZBTC1_ChaV_q;
extern DataAttribute iedModel_Battery_ZBTC1_ChaV_t;
extern DataObject iedModel_Battery_ZBTC1_ChaA;
extern DataAttribute iedModel_Battery_ZBTC1_ChaA_mag;
extern DataAttribute iedModel_Battery_ZBTC1_ChaA_mag_f;
extern DataAttribute iedModel_Battery_ZBTC1_ChaA_q;
extern DataAttribute iedModel_Battery_ZBTC1_ChaA_t;
extern LogicalDevice iedModel_Physical_Measurements;
extern LogicalNode iedModel_Physical_Measurements_LLN0;
extern DataObject iedModel_Physical_Measurements_LLN0_Mod;
extern DataAttribute iedModel_Physical_Measurements_LLN0_Mod_q;
extern DataAttribute iedModel_Physical_Measurements_LLN0_Mod_t;
extern DataAttribute iedModel_Physical_Measurements_LLN0_Mod_ctlModel;
extern DataObject iedModel_Physical_Measurements_LLN0_Beh;
extern DataAttribute iedModel_Physical_Measurements_LLN0_Beh_stVal;
extern DataAttribute iedModel_Physical_Measurements_LLN0_Beh_q;
extern DataAttribute iedModel_Physical_Measurements_LLN0_Beh_t;
extern DataObject iedModel_Physical_Measurements_LLN0_Health;
extern DataAttribute iedModel_Physical_Measurements_LLN0_Health_stVal;
extern DataAttribute iedModel_Physical_Measurements_LLN0_Health_q;
extern DataAttribute iedModel_Physical_Measurements_LLN0_Health_t;
extern DataObject iedModel_Physical_Measurements_LLN0_NamPlt;
extern DataAttribute iedModel_Physical_Measurements_LLN0_NamPlt_vendor;
extern DataAttribute iedModel_Physical_Measurements_LLN0_NamPlt_swRev;
extern DataAttribute iedModel_Physical_Measurements_LLN0_NamPlt_d;
extern DataAttribute iedModel_Physical_Measurements_LLN0_NamPlt_configRev;
extern DataAttribute iedModel_Physical_Measurements_LLN0_NamPlt_ldNs;
extern LogicalNode iedModel_Physical_Measurements_LPHD1;
extern DataObject iedModel_Physical_Measurements_LPHD1_PhyNam;
extern DataAttribute iedModel_Physical_Measurements_LPHD1_PhyNam_vendor;
extern DataObject iedModel_Physical_Measurements_LPHD1_PhyHealth;
extern DataAttribute iedModel_Physical_Measurements_LPHD1_PhyHealth_stVal;
extern DataAttribute iedModel_Physical_Measurements_LPHD1_PhyHealth_q;
extern DataAttribute iedModel_Physical_Measurements_LPHD1_PhyHealth_t;
extern DataObject iedModel_Physical_Measurements_LPHD1_Proxy;
extern DataAttribute iedModel_Physical_Measurements_LPHD1_Proxy_stVal;
extern DataAttribute iedModel_Physical_Measurements_LPHD1_Proxy_q;
extern DataAttribute iedModel_Physical_Measurements_LPHD1_Proxy_t;
extern DataSet ds_Inverter_LLN0_dataset1;
extern DataSet iedModelds_Inverter_LLN0_dataset1;
extern DataSetEntry ds_Inverter_LLN0_dataset1_fcda0;
extern DataSetEntry ds_Inverter_LLN0_dataset1_fcda1;
extern DataSetEntry ds_Inverter_LLN0_dataset1_fcda2;
extern DataSetEntry ds_Inverter_LLN0_dataset1_fcda3;
extern DataSetEntry ds_Inverter_LLN0_dataset1_fcda4;
extern DataSetEntry iedModelds_Inverter_LLN0_dataset1_fcda0;
extern DataSetEntry iedModelds_Inverter_LLN0_dataset1_fcda1;
extern DataSetEntry iedModelds_Inverter_LLN0_dataset1_fcda2;
extern DataSetEntry iedModelds_Inverter_LLN0_dataset1_fcda3;
extern DataSetEntry iedModelds_Inverter_LLN0_dataset1_fcda4;
DataSetEntry ds_Inverter_LLN0_dataset1_fcda0 = {
DataSetEntry iedModelds_Inverter_LLN0_dataset1_fcda0 = {
"Inverter",
false,
"LLN0$ST$Mod$q",
-1,
NULL,
NULL,
&ds_Inverter_LLN0_dataset1_fcda1
&iedModelds_Inverter_LLN0_dataset1_fcda1
};
DataSetEntry ds_Inverter_LLN0_dataset1_fcda1 = {
DataSetEntry iedModelds_Inverter_LLN0_dataset1_fcda1 = {
"Battery",
false,
"LLN0$ST$Mod$q",
-1,
NULL,
NULL,
&ds_Inverter_LLN0_dataset1_fcda2
&iedModelds_Inverter_LLN0_dataset1_fcda2
};
DataSetEntry ds_Inverter_LLN0_dataset1_fcda2 = {
DataSetEntry iedModelds_Inverter_LLN0_dataset1_fcda2 = {
"Inverter",
false,
"MMXU1$ST$Mod$q",
-1,
NULL,
NULL,
&ds_Inverter_LLN0_dataset1_fcda3
&iedModelds_Inverter_LLN0_dataset1_fcda3
};
DataSetEntry ds_Inverter_LLN0_dataset1_fcda3 = {
DataSetEntry iedModelds_Inverter_LLN0_dataset1_fcda3 = {
"Inverter",
false,
"MMXU1$CF$Mod$ctlModel",
-1,
NULL,
NULL,
&ds_Inverter_LLN0_dataset1_fcda4
&iedModelds_Inverter_LLN0_dataset1_fcda4
};
DataSetEntry ds_Inverter_LLN0_dataset1_fcda4 = {
DataSetEntry iedModelds_Inverter_LLN0_dataset1_fcda4 = {
"Inverter",
false,
"MMXU1$MX$TotW$mag",
@ -363,11 +66,11 @@ DataSetEntry ds_Inverter_LLN0_dataset1_fcda4 = {
NULL
};
DataSet ds_Inverter_LLN0_dataset1 = {
DataSet iedModelds_Inverter_LLN0_dataset1 = {
"Inverter",
"LLN0$dataset1",
5,
&ds_Inverter_LLN0_dataset1_fcda0,
&iedModelds_Inverter_LLN0_dataset1_fcda0,
NULL
};
@ -3877,7 +3580,8 @@ DataAttribute iedModel_Physical_Measurements_LPHD1_Proxy_t = {
extern ReportControlBlock iedModel_Inverter_LLN0_report0;
ReportControlBlock iedModel_Inverter_LLN0_report0 = {&iedModel_Inverter_LLN0, "rcb101", "ID", false, "dataset1", 0, 3, 32, 0, 0, NULL};
ReportControlBlock iedModel_Inverter_LLN0_report0 = {&iedModel_Inverter_LLN0, "rcb101", "ID", false, "dataset1", 0, 19, 32, 0, 0, NULL};
@ -3885,10 +3589,11 @@ ReportControlBlock iedModel_Inverter_LLN0_report0 = {&iedModel_Inverter_LLN0, "r
IedModel iedModel = {
"ied1",
&iedModel_Inverter,
&ds_Inverter_LLN0_dataset1,
&iedModelds_Inverter_LLN0_dataset1,
&iedModel_Inverter_LLN0_report0,
NULL,
NULL,
NULL,
initializeValues
};

View file

@ -1955,6 +1955,7 @@ ReportControlBlock iedModel_GenericIO_LLN0_report6 = {&iedModel_GenericIO_LLN0,
IedModel iedModel = {
"simpleIO",
&iedModel_GenericIO,
@ -1962,6 +1963,7 @@ IedModel iedModel = {
&iedModel_GenericIO_LLN0_report0,
NULL,
NULL,
NULL,
initializeValues
};

View file

@ -3,191 +3,49 @@
*
* automatically generated from simpleIO_direct_control.icd
*/
#include <stdlib.h>
#include "iec61850_model.h"
#include "static_model.h"
extern IedModel iedModel;
static void initializeValues();
extern LogicalDevice iedModel_GenericIO;
extern LogicalNode iedModel_GenericIO_LLN0;
extern DataObject iedModel_GenericIO_LLN0_Mod;
extern DataAttribute iedModel_GenericIO_LLN0_Mod_q;
extern DataAttribute iedModel_GenericIO_LLN0_Mod_t;
extern DataAttribute iedModel_GenericIO_LLN0_Mod_ctlModel;
extern DataObject iedModel_GenericIO_LLN0_Beh;
extern DataAttribute iedModel_GenericIO_LLN0_Beh_stVal;
extern DataAttribute iedModel_GenericIO_LLN0_Beh_q;
extern DataAttribute iedModel_GenericIO_LLN0_Beh_t;
extern DataObject iedModel_GenericIO_LLN0_Health;
extern DataAttribute iedModel_GenericIO_LLN0_Health_stVal;
extern DataAttribute iedModel_GenericIO_LLN0_Health_q;
extern DataAttribute iedModel_GenericIO_LLN0_Health_t;
extern DataObject iedModel_GenericIO_LLN0_NamPlt;
extern DataAttribute iedModel_GenericIO_LLN0_NamPlt_vendor;
extern DataAttribute iedModel_GenericIO_LLN0_NamPlt_swRev;
extern DataAttribute iedModel_GenericIO_LLN0_NamPlt_d;
extern DataAttribute iedModel_GenericIO_LLN0_NamPlt_configRev;
extern DataAttribute iedModel_GenericIO_LLN0_NamPlt_ldNs;
extern LogicalNode iedModel_GenericIO_LPHD1;
extern DataObject iedModel_GenericIO_LPHD1_PhyNam;
extern DataAttribute iedModel_GenericIO_LPHD1_PhyNam_vendor;
extern DataObject iedModel_GenericIO_LPHD1_PhyHealth;
extern DataAttribute iedModel_GenericIO_LPHD1_PhyHealth_stVal;
extern DataAttribute iedModel_GenericIO_LPHD1_PhyHealth_q;
extern DataAttribute iedModel_GenericIO_LPHD1_PhyHealth_t;
extern DataObject iedModel_GenericIO_LPHD1_Proxy;
extern DataAttribute iedModel_GenericIO_LPHD1_Proxy_stVal;
extern DataAttribute iedModel_GenericIO_LPHD1_Proxy_q;
extern DataAttribute iedModel_GenericIO_LPHD1_Proxy_t;
extern LogicalNode iedModel_GenericIO_GGIO1;
extern DataObject iedModel_GenericIO_GGIO1_Mod;
extern DataAttribute iedModel_GenericIO_GGIO1_Mod_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Mod_t;
extern DataAttribute iedModel_GenericIO_GGIO1_Mod_ctlModel;
extern DataObject iedModel_GenericIO_GGIO1_Beh;
extern DataAttribute iedModel_GenericIO_GGIO1_Beh_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Beh_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Beh_t;
extern DataObject iedModel_GenericIO_GGIO1_Health;
extern DataAttribute iedModel_GenericIO_GGIO1_Health_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Health_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Health_t;
extern DataObject iedModel_GenericIO_GGIO1_NamPlt;
extern DataAttribute iedModel_GenericIO_GGIO1_NamPlt_vendor;
extern DataAttribute iedModel_GenericIO_GGIO1_NamPlt_swRev;
extern DataAttribute iedModel_GenericIO_GGIO1_NamPlt_d;
extern DataObject iedModel_GenericIO_GGIO1_AnIn1;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn1_mag;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn1_mag_f;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn1_q;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn1_t;
extern DataObject iedModel_GenericIO_GGIO1_AnIn2;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn2_mag;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn2_mag_f;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn2_q;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn2_t;
extern DataObject iedModel_GenericIO_GGIO1_AnIn3;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn3_mag;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn3_mag_f;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn3_q;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn3_t;
extern DataObject iedModel_GenericIO_GGIO1_AnIn4;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn4_mag;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn4_mag_f;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn4_q;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn4_t;
extern DataObject iedModel_GenericIO_GGIO1_SPCSO1;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_q;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_ctlModel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_t;
extern DataObject iedModel_GenericIO_GGIO1_SPCSO2;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_q;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_ctlModel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_t;
extern DataObject iedModel_GenericIO_GGIO1_SPCSO3;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_q;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_ctlModel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_t;
extern DataObject iedModel_GenericIO_GGIO1_SPCSO4;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_q;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_ctlModel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_t;
extern DataObject iedModel_GenericIO_GGIO1_Ind1;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind1_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind1_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind1_t;
extern DataObject iedModel_GenericIO_GGIO1_Ind2;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind2_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind2_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind2_t;
extern DataObject iedModel_GenericIO_GGIO1_Ind3;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind3_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind3_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind3_t;
extern DataObject iedModel_GenericIO_GGIO1_Ind4;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind4_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind4_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind4_t;
extern DataSet ds_GenericIO_LLN0_Events;
extern DataSet iedModelds_GenericIO_LLN0_Events;
extern DataSetEntry ds_GenericIO_LLN0_Events_fcda0;
extern DataSetEntry ds_GenericIO_LLN0_Events_fcda1;
extern DataSetEntry ds_GenericIO_LLN0_Events_fcda2;
extern DataSetEntry ds_GenericIO_LLN0_Events_fcda3;
extern DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda0;
extern DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda1;
extern DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda2;
extern DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda3;
DataSetEntry ds_GenericIO_LLN0_Events_fcda0 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda0 = {
"GenericIO",
false,
"GGIO1$ST$SPCSO1$stVal",
-1,
NULL,
NULL,
&ds_GenericIO_LLN0_Events_fcda1
&iedModelds_GenericIO_LLN0_Events_fcda1
};
DataSetEntry ds_GenericIO_LLN0_Events_fcda1 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda1 = {
"GenericIO",
false,
"GGIO1$ST$SPCSO2$stVal",
-1,
NULL,
NULL,
&ds_GenericIO_LLN0_Events_fcda2
&iedModelds_GenericIO_LLN0_Events_fcda2
};
DataSetEntry ds_GenericIO_LLN0_Events_fcda2 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda2 = {
"GenericIO",
false,
"GGIO1$ST$SPCSO3$stVal",
-1,
NULL,
NULL,
&ds_GenericIO_LLN0_Events_fcda3
&iedModelds_GenericIO_LLN0_Events_fcda3
};
DataSetEntry ds_GenericIO_LLN0_Events_fcda3 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda3 = {
"GenericIO",
false,
"GGIO1$ST$SPCSO4$stVal",
@ -197,11 +55,11 @@ DataSetEntry ds_GenericIO_LLN0_Events_fcda3 = {
NULL
};
DataSet ds_GenericIO_LLN0_Events = {
DataSet iedModelds_GenericIO_LLN0_Events = {
"GenericIO",
"LLN0$Events",
4,
&ds_GenericIO_LLN0_Events_fcda0,
&iedModelds_GenericIO_LLN0_Events_fcda0,
NULL
};
@ -1915,7 +1773,8 @@ DataAttribute iedModel_GenericIO_GGIO1_Ind4_t = {
extern ReportControlBlock iedModel_GenericIO_LLN0_report0;
ReportControlBlock iedModel_GenericIO_LLN0_report0 = {&iedModel_GenericIO_LLN0, "EventsRCB01", "Events", false, "Events", 1, 8, 111, 50, 1000, NULL};
ReportControlBlock iedModel_GenericIO_LLN0_report0 = {&iedModel_GenericIO_LLN0, "EventsRCB01", "Events", false, "Events", 1, 24, 111, 50, 1000, NULL};
@ -1923,10 +1782,11 @@ ReportControlBlock iedModel_GenericIO_LLN0_report0 = {&iedModel_GenericIO_LLN0,
IedModel iedModel = {
"simpleIO",
&iedModel_GenericIO,
&ds_GenericIO_LLN0_Events,
&iedModelds_GenericIO_LLN0_Events,
&iedModel_GenericIO_LLN0_report0,
NULL,
NULL,
NULL,
initializeValues
};

View file

@ -3,357 +3,60 @@
*
* automatically generated from complexModel.icd
*/
#include <stdlib.h>
#include "iec61850_model.h"
#include "static_model.h"
extern IedModel iedModel;
static void initializeValues();
extern LogicalDevice iedModel_Inverter;
extern LogicalNode iedModel_Inverter_LLN0;
extern DataObject iedModel_Inverter_LLN0_Mod;
extern DataAttribute iedModel_Inverter_LLN0_Mod_q;
extern DataAttribute iedModel_Inverter_LLN0_Mod_t;
extern DataAttribute iedModel_Inverter_LLN0_Mod_ctlModel;
extern DataObject iedModel_Inverter_LLN0_Beh;
extern DataAttribute iedModel_Inverter_LLN0_Beh_stVal;
extern DataAttribute iedModel_Inverter_LLN0_Beh_q;
extern DataAttribute iedModel_Inverter_LLN0_Beh_t;
extern DataObject iedModel_Inverter_LLN0_Health;
extern DataAttribute iedModel_Inverter_LLN0_Health_stVal;
extern DataAttribute iedModel_Inverter_LLN0_Health_q;
extern DataAttribute iedModel_Inverter_LLN0_Health_t;
extern DataObject iedModel_Inverter_LLN0_NamPlt;
extern DataAttribute iedModel_Inverter_LLN0_NamPlt_vendor;
extern DataAttribute iedModel_Inverter_LLN0_NamPlt_swRev;
extern DataAttribute iedModel_Inverter_LLN0_NamPlt_d;
extern DataAttribute iedModel_Inverter_LLN0_NamPlt_configRev;
extern DataAttribute iedModel_Inverter_LLN0_NamPlt_ldNs;
extern LogicalNode iedModel_Inverter_LPHD1;
extern DataObject iedModel_Inverter_LPHD1_PhyNam;
extern DataAttribute iedModel_Inverter_LPHD1_PhyNam_vendor;
extern DataObject iedModel_Inverter_LPHD1_PhyHealth;
extern DataAttribute iedModel_Inverter_LPHD1_PhyHealth_stVal;
extern DataAttribute iedModel_Inverter_LPHD1_PhyHealth_q;
extern DataAttribute iedModel_Inverter_LPHD1_PhyHealth_t;
extern DataObject iedModel_Inverter_LPHD1_Proxy;
extern DataAttribute iedModel_Inverter_LPHD1_Proxy_stVal;
extern DataAttribute iedModel_Inverter_LPHD1_Proxy_q;
extern DataAttribute iedModel_Inverter_LPHD1_Proxy_t;
extern LogicalNode iedModel_Inverter_ZINV1;
extern DataObject iedModel_Inverter_ZINV1_Mod;
extern DataAttribute iedModel_Inverter_ZINV1_Mod_q;
extern DataAttribute iedModel_Inverter_ZINV1_Mod_t;
extern DataAttribute iedModel_Inverter_ZINV1_Mod_ctlModel;
extern DataObject iedModel_Inverter_ZINV1_Beh;
extern DataAttribute iedModel_Inverter_ZINV1_Beh_stVal;
extern DataAttribute iedModel_Inverter_ZINV1_Beh_q;
extern DataAttribute iedModel_Inverter_ZINV1_Beh_t;
extern DataObject iedModel_Inverter_ZINV1_Health;
extern DataAttribute iedModel_Inverter_ZINV1_Health_stVal;
extern DataAttribute iedModel_Inverter_ZINV1_Health_q;
extern DataAttribute iedModel_Inverter_ZINV1_Health_t;
extern DataObject iedModel_Inverter_ZINV1_NamPlt;
extern DataAttribute iedModel_Inverter_ZINV1_NamPlt_vendor;
extern DataAttribute iedModel_Inverter_ZINV1_NamPlt_swRev;
extern DataAttribute iedModel_Inverter_ZINV1_NamPlt_d;
extern DataObject iedModel_Inverter_ZINV1_WRtg;
extern DataAttribute iedModel_Inverter_ZINV1_WRtg_setMag;
extern DataAttribute iedModel_Inverter_ZINV1_WRtg_setMag_f;
extern DataAttribute iedModel_Inverter_ZINV1_WRtg_units;
extern DataAttribute iedModel_Inverter_ZINV1_WRtg_units_SIUnit;
extern DataObject iedModel_Inverter_ZINV1_VarRtg;
extern DataAttribute iedModel_Inverter_ZINV1_VarRtg_setMag;
extern DataAttribute iedModel_Inverter_ZINV1_VarRtg_setMag_f;
extern DataAttribute iedModel_Inverter_ZINV1_VarRtg_units;
extern DataAttribute iedModel_Inverter_ZINV1_VarRtg_units_SIUnit;
extern DataObject iedModel_Inverter_ZINV1_ACTyp;
extern DataAttribute iedModel_Inverter_ZINV1_ACTyp_setVal;
extern DataObject iedModel_Inverter_ZINV1_OutWSet;
extern DataAttribute iedModel_Inverter_ZINV1_OutWSet_setMag;
extern DataAttribute iedModel_Inverter_ZINV1_OutWSet_setMag_f;
extern DataAttribute iedModel_Inverter_ZINV1_OutWSet_units;
extern DataAttribute iedModel_Inverter_ZINV1_OutWSet_units_SIUnit;
extern DataObject iedModel_Inverter_ZINV1_OutVarSet;
extern DataAttribute iedModel_Inverter_ZINV1_OutVarSet_setMag;
extern DataAttribute iedModel_Inverter_ZINV1_OutVarSet_setMag_f;
extern DataAttribute iedModel_Inverter_ZINV1_OutVarSet_units;
extern DataAttribute iedModel_Inverter_ZINV1_OutVarSet_units_SIUnit;
extern LogicalNode iedModel_Inverter_MMXU1;
extern DataObject iedModel_Inverter_MMXU1_Mod;
extern DataAttribute iedModel_Inverter_MMXU1_Mod_q;
extern DataAttribute iedModel_Inverter_MMXU1_Mod_t;
extern DataAttribute iedModel_Inverter_MMXU1_Mod_ctlModel;
extern DataObject iedModel_Inverter_MMXU1_Beh;
extern DataAttribute iedModel_Inverter_MMXU1_Beh_stVal;
extern DataAttribute iedModel_Inverter_MMXU1_Beh_q;
extern DataAttribute iedModel_Inverter_MMXU1_Beh_t;
extern DataObject iedModel_Inverter_MMXU1_Health;
extern DataAttribute iedModel_Inverter_MMXU1_Health_stVal;
extern DataAttribute iedModel_Inverter_MMXU1_Health_q;
extern DataAttribute iedModel_Inverter_MMXU1_Health_t;
extern DataObject iedModel_Inverter_MMXU1_NamPlt;
extern DataAttribute iedModel_Inverter_MMXU1_NamPlt_vendor;
extern DataAttribute iedModel_Inverter_MMXU1_NamPlt_swRev;
extern DataAttribute iedModel_Inverter_MMXU1_NamPlt_d;
extern DataObject iedModel_Inverter_MMXU1_TotW;
extern DataAttribute iedModel_Inverter_MMXU1_TotW_mag;
extern DataAttribute iedModel_Inverter_MMXU1_TotW_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_TotW_q;
extern DataAttribute iedModel_Inverter_MMXU1_TotW_t;
extern DataObject iedModel_Inverter_MMXU1_TotVAr;
extern DataAttribute iedModel_Inverter_MMXU1_TotVAr_mag;
extern DataAttribute iedModel_Inverter_MMXU1_TotVAr_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_TotVAr_q;
extern DataAttribute iedModel_Inverter_MMXU1_TotVAr_t;
extern DataObject iedModel_Inverter_MMXU1_TotVA;
extern DataAttribute iedModel_Inverter_MMXU1_TotVA_mag;
extern DataAttribute iedModel_Inverter_MMXU1_TotVA_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_TotVA_q;
extern DataAttribute iedModel_Inverter_MMXU1_TotVA_t;
extern DataObject iedModel_Inverter_MMXU1_Hz;
extern DataAttribute iedModel_Inverter_MMXU1_Hz_mag;
extern DataAttribute iedModel_Inverter_MMXU1_Hz_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_Hz_q;
extern DataAttribute iedModel_Inverter_MMXU1_Hz_t;
extern DataObject iedModel_Inverter_MMXU1_PhV;
extern DataObject iedModel_Inverter_MMXU1_PhV_phsA;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsA_cVal;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsA_cVal_mag;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsA_cVal_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsA_q;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsA_t;
extern DataObject iedModel_Inverter_MMXU1_PhV_phsB;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsB_cVal;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsB_cVal_mag;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsB_cVal_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsB_q;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsB_t;
extern DataObject iedModel_Inverter_MMXU1_PhV_phsC;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsC_cVal;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsC_cVal_mag;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsC_cVal_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsC_q;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_phsC_t;
extern DataObject iedModel_Inverter_MMXU1_PhV_neut;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_neut_cVal;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_neut_cVal_mag;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_neut_cVal_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_neut_q;
extern DataAttribute iedModel_Inverter_MMXU1_PhV_neut_t;
extern DataObject iedModel_Inverter_MMXU1_A;
extern DataObject iedModel_Inverter_MMXU1_A_phsA;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsA_cVal;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsA_cVal_mag;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsA_cVal_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsA_q;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsA_t;
extern DataObject iedModel_Inverter_MMXU1_A_phsB;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsB_cVal;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsB_cVal_mag;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsB_cVal_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsB_q;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsB_t;
extern DataObject iedModel_Inverter_MMXU1_A_phsC;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsC_cVal;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsC_cVal_mag;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsC_cVal_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsC_q;
extern DataAttribute iedModel_Inverter_MMXU1_A_phsC_t;
extern DataObject iedModel_Inverter_MMXU1_A_neut;
extern DataAttribute iedModel_Inverter_MMXU1_A_neut_cVal;
extern DataAttribute iedModel_Inverter_MMXU1_A_neut_cVal_mag;
extern DataAttribute iedModel_Inverter_MMXU1_A_neut_cVal_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_A_neut_q;
extern DataAttribute iedModel_Inverter_MMXU1_A_neut_t;
extern DataObject iedModel_Inverter_MMXU1_W;
extern DataObject iedModel_Inverter_MMXU1_W_phsA;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsA_cVal;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsA_cVal_mag;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsA_cVal_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsA_q;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsA_t;
extern DataObject iedModel_Inverter_MMXU1_W_phsB;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsB_cVal;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsB_cVal_mag;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsB_cVal_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsB_q;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsB_t;
extern DataObject iedModel_Inverter_MMXU1_W_phsC;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsC_cVal;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsC_cVal_mag;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsC_cVal_mag_f;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsC_q;
extern DataAttribute iedModel_Inverter_MMXU1_W_phsC_t;
extern LogicalDevice iedModel_Battery;
extern LogicalNode iedModel_Battery_LLN0;
extern DataObject iedModel_Battery_LLN0_Mod;
extern DataAttribute iedModel_Battery_LLN0_Mod_q;
extern DataAttribute iedModel_Battery_LLN0_Mod_t;
extern DataAttribute iedModel_Battery_LLN0_Mod_ctlModel;
extern DataObject iedModel_Battery_LLN0_Beh;
extern DataAttribute iedModel_Battery_LLN0_Beh_stVal;
extern DataAttribute iedModel_Battery_LLN0_Beh_q;
extern DataAttribute iedModel_Battery_LLN0_Beh_t;
extern DataObject iedModel_Battery_LLN0_Health;
extern DataAttribute iedModel_Battery_LLN0_Health_stVal;
extern DataAttribute iedModel_Battery_LLN0_Health_q;
extern DataAttribute iedModel_Battery_LLN0_Health_t;
extern DataObject iedModel_Battery_LLN0_NamPlt;
extern DataAttribute iedModel_Battery_LLN0_NamPlt_vendor;
extern DataAttribute iedModel_Battery_LLN0_NamPlt_swRev;
extern DataAttribute iedModel_Battery_LLN0_NamPlt_d;
extern DataAttribute iedModel_Battery_LLN0_NamPlt_configRev;
extern DataAttribute iedModel_Battery_LLN0_NamPlt_ldNs;
extern LogicalNode iedModel_Battery_LPHD1;
extern DataObject iedModel_Battery_LPHD1_PhyNam;
extern DataAttribute iedModel_Battery_LPHD1_PhyNam_vendor;
extern DataObject iedModel_Battery_LPHD1_PhyHealth;
extern DataAttribute iedModel_Battery_LPHD1_PhyHealth_stVal;
extern DataAttribute iedModel_Battery_LPHD1_PhyHealth_q;
extern DataAttribute iedModel_Battery_LPHD1_PhyHealth_t;
extern DataObject iedModel_Battery_LPHD1_Proxy;
extern DataAttribute iedModel_Battery_LPHD1_Proxy_stVal;
extern DataAttribute iedModel_Battery_LPHD1_Proxy_q;
extern DataAttribute iedModel_Battery_LPHD1_Proxy_t;
extern LogicalNode iedModel_Battery_ZBAT1;
extern DataObject iedModel_Battery_ZBAT1_Mod;
extern DataAttribute iedModel_Battery_ZBAT1_Mod_q;
extern DataAttribute iedModel_Battery_ZBAT1_Mod_t;
extern DataAttribute iedModel_Battery_ZBAT1_Mod_ctlModel;
extern DataObject iedModel_Battery_ZBAT1_Beh;
extern DataAttribute iedModel_Battery_ZBAT1_Beh_stVal;
extern DataAttribute iedModel_Battery_ZBAT1_Beh_q;
extern DataAttribute iedModel_Battery_ZBAT1_Beh_t;
extern DataObject iedModel_Battery_ZBAT1_Health;
extern DataAttribute iedModel_Battery_ZBAT1_Health_stVal;
extern DataAttribute iedModel_Battery_ZBAT1_Health_q;
extern DataAttribute iedModel_Battery_ZBAT1_Health_t;
extern DataObject iedModel_Battery_ZBAT1_NamPlt;
extern DataAttribute iedModel_Battery_ZBAT1_NamPlt_vendor;
extern DataAttribute iedModel_Battery_ZBAT1_NamPlt_swRev;
extern DataAttribute iedModel_Battery_ZBAT1_NamPlt_d;
extern DataObject iedModel_Battery_ZBAT1_Vol;
extern DataAttribute iedModel_Battery_ZBAT1_Vol_mag;
extern DataAttribute iedModel_Battery_ZBAT1_Vol_mag_f;
extern DataAttribute iedModel_Battery_ZBAT1_Vol_q;
extern DataAttribute iedModel_Battery_ZBAT1_Vol_t;
extern DataObject iedModel_Battery_ZBAT1_Amp;
extern DataAttribute iedModel_Battery_ZBAT1_Amp_mag;
extern DataAttribute iedModel_Battery_ZBAT1_Amp_mag_f;
extern DataAttribute iedModel_Battery_ZBAT1_Amp_q;
extern DataAttribute iedModel_Battery_ZBAT1_Amp_t;
extern LogicalNode iedModel_Battery_ZBTC1;
extern DataObject iedModel_Battery_ZBTC1_Mod;
extern DataAttribute iedModel_Battery_ZBTC1_Mod_q;
extern DataAttribute iedModel_Battery_ZBTC1_Mod_t;
extern DataAttribute iedModel_Battery_ZBTC1_Mod_ctlModel;
extern DataObject iedModel_Battery_ZBTC1_Beh;
extern DataAttribute iedModel_Battery_ZBTC1_Beh_stVal;
extern DataAttribute iedModel_Battery_ZBTC1_Beh_q;
extern DataAttribute iedModel_Battery_ZBTC1_Beh_t;
extern DataObject iedModel_Battery_ZBTC1_Health;
extern DataAttribute iedModel_Battery_ZBTC1_Health_stVal;
extern DataAttribute iedModel_Battery_ZBTC1_Health_q;
extern DataAttribute iedModel_Battery_ZBTC1_Health_t;
extern DataObject iedModel_Battery_ZBTC1_NamPlt;
extern DataAttribute iedModel_Battery_ZBTC1_NamPlt_vendor;
extern DataAttribute iedModel_Battery_ZBTC1_NamPlt_swRev;
extern DataAttribute iedModel_Battery_ZBTC1_NamPlt_d;
extern DataObject iedModel_Battery_ZBTC1_BatChaSt;
extern DataObject iedModel_Battery_ZBTC1_BatChaPwr;
extern DataObject iedModel_Battery_ZBTC1_BatChaMod;
extern DataObject iedModel_Battery_ZBTC1_ChaV;
extern DataAttribute iedModel_Battery_ZBTC1_ChaV_mag;
extern DataAttribute iedModel_Battery_ZBTC1_ChaV_mag_f;
extern DataAttribute iedModel_Battery_ZBTC1_ChaV_q;
extern DataAttribute iedModel_Battery_ZBTC1_ChaV_t;
extern DataObject iedModel_Battery_ZBTC1_ChaA;
extern DataAttribute iedModel_Battery_ZBTC1_ChaA_mag;
extern DataAttribute iedModel_Battery_ZBTC1_ChaA_mag_f;
extern DataAttribute iedModel_Battery_ZBTC1_ChaA_q;
extern DataAttribute iedModel_Battery_ZBTC1_ChaA_t;
extern LogicalDevice iedModel_Physical_Measurements;
extern LogicalNode iedModel_Physical_Measurements_LLN0;
extern DataObject iedModel_Physical_Measurements_LLN0_Mod;
extern DataAttribute iedModel_Physical_Measurements_LLN0_Mod_q;
extern DataAttribute iedModel_Physical_Measurements_LLN0_Mod_t;
extern DataAttribute iedModel_Physical_Measurements_LLN0_Mod_ctlModel;
extern DataObject iedModel_Physical_Measurements_LLN0_Beh;
extern DataAttribute iedModel_Physical_Measurements_LLN0_Beh_stVal;
extern DataAttribute iedModel_Physical_Measurements_LLN0_Beh_q;
extern DataAttribute iedModel_Physical_Measurements_LLN0_Beh_t;
extern DataObject iedModel_Physical_Measurements_LLN0_Health;
extern DataAttribute iedModel_Physical_Measurements_LLN0_Health_stVal;
extern DataAttribute iedModel_Physical_Measurements_LLN0_Health_q;
extern DataAttribute iedModel_Physical_Measurements_LLN0_Health_t;
extern DataObject iedModel_Physical_Measurements_LLN0_NamPlt;
extern DataAttribute iedModel_Physical_Measurements_LLN0_NamPlt_vendor;
extern DataAttribute iedModel_Physical_Measurements_LLN0_NamPlt_swRev;
extern DataAttribute iedModel_Physical_Measurements_LLN0_NamPlt_d;
extern DataAttribute iedModel_Physical_Measurements_LLN0_NamPlt_configRev;
extern DataAttribute iedModel_Physical_Measurements_LLN0_NamPlt_ldNs;
extern LogicalNode iedModel_Physical_Measurements_LPHD1;
extern DataObject iedModel_Physical_Measurements_LPHD1_PhyNam;
extern DataAttribute iedModel_Physical_Measurements_LPHD1_PhyNam_vendor;
extern DataObject iedModel_Physical_Measurements_LPHD1_PhyHealth;
extern DataAttribute iedModel_Physical_Measurements_LPHD1_PhyHealth_stVal;
extern DataAttribute iedModel_Physical_Measurements_LPHD1_PhyHealth_q;
extern DataAttribute iedModel_Physical_Measurements_LPHD1_PhyHealth_t;
extern DataObject iedModel_Physical_Measurements_LPHD1_Proxy;
extern DataAttribute iedModel_Physical_Measurements_LPHD1_Proxy_stVal;
extern DataAttribute iedModel_Physical_Measurements_LPHD1_Proxy_q;
extern DataAttribute iedModel_Physical_Measurements_LPHD1_Proxy_t;
extern DataSet ds_Inverter_LLN0_dataset1;
extern DataSet iedModelds_Inverter_LLN0_dataset1;
extern DataSetEntry ds_Inverter_LLN0_dataset1_fcda0;
extern DataSetEntry ds_Inverter_LLN0_dataset1_fcda1;
extern DataSetEntry ds_Inverter_LLN0_dataset1_fcda2;
extern DataSetEntry ds_Inverter_LLN0_dataset1_fcda3;
extern DataSetEntry ds_Inverter_LLN0_dataset1_fcda4;
extern DataSetEntry iedModelds_Inverter_LLN0_dataset1_fcda0;
extern DataSetEntry iedModelds_Inverter_LLN0_dataset1_fcda1;
extern DataSetEntry iedModelds_Inverter_LLN0_dataset1_fcda2;
extern DataSetEntry iedModelds_Inverter_LLN0_dataset1_fcda3;
extern DataSetEntry iedModelds_Inverter_LLN0_dataset1_fcda4;
DataSetEntry ds_Inverter_LLN0_dataset1_fcda0 = {
DataSetEntry iedModelds_Inverter_LLN0_dataset1_fcda0 = {
"Inverter",
false,
"LLN0$ST$Mod$q",
-1,
NULL,
NULL,
&ds_Inverter_LLN0_dataset1_fcda1
&iedModelds_Inverter_LLN0_dataset1_fcda1
};
DataSetEntry ds_Inverter_LLN0_dataset1_fcda1 = {
DataSetEntry iedModelds_Inverter_LLN0_dataset1_fcda1 = {
"Battery",
false,
"LLN0$ST$Mod$q",
-1,
NULL,
NULL,
&ds_Inverter_LLN0_dataset1_fcda2
&iedModelds_Inverter_LLN0_dataset1_fcda2
};
DataSetEntry ds_Inverter_LLN0_dataset1_fcda2 = {
DataSetEntry iedModelds_Inverter_LLN0_dataset1_fcda2 = {
"Inverter",
false,
"MMXU1$ST$Mod$q",
-1,
NULL,
NULL,
&ds_Inverter_LLN0_dataset1_fcda3
&iedModelds_Inverter_LLN0_dataset1_fcda3
};
DataSetEntry ds_Inverter_LLN0_dataset1_fcda3 = {
DataSetEntry iedModelds_Inverter_LLN0_dataset1_fcda3 = {
"Inverter",
false,
"MMXU1$CF$Mod$ctlModel",
-1,
NULL,
NULL,
&ds_Inverter_LLN0_dataset1_fcda4
&iedModelds_Inverter_LLN0_dataset1_fcda4
};
DataSetEntry ds_Inverter_LLN0_dataset1_fcda4 = {
DataSetEntry iedModelds_Inverter_LLN0_dataset1_fcda4 = {
"Inverter",
false,
"MMXU1$MX$TotW$mag",
@ -363,11 +66,11 @@ DataSetEntry ds_Inverter_LLN0_dataset1_fcda4 = {
NULL
};
DataSet ds_Inverter_LLN0_dataset1 = {
DataSet iedModelds_Inverter_LLN0_dataset1 = {
"Inverter",
"LLN0$dataset1",
5,
&ds_Inverter_LLN0_dataset1_fcda0,
&iedModelds_Inverter_LLN0_dataset1_fcda0,
NULL
};
@ -3877,7 +3580,8 @@ DataAttribute iedModel_Physical_Measurements_LPHD1_Proxy_t = {
extern ReportControlBlock iedModel_Inverter_LLN0_report0;
ReportControlBlock iedModel_Inverter_LLN0_report0 = {&iedModel_Inverter_LLN0, "rcb101", "ID", false, "dataset1", 0, 3, 32, 0, 0, NULL};
ReportControlBlock iedModel_Inverter_LLN0_report0 = {&iedModel_Inverter_LLN0, "rcb101", "ID", false, "dataset1", 0, 19, 32, 0, 0, NULL};
@ -3885,10 +3589,11 @@ ReportControlBlock iedModel_Inverter_LLN0_report0 = {&iedModel_Inverter_LLN0, "r
IedModel iedModel = {
"ied1",
&iedModel_Inverter,
&ds_Inverter_LLN0_dataset1,
&iedModelds_Inverter_LLN0_dataset1,
&iedModel_Inverter_LLN0_report0,
NULL,
NULL,
NULL,
initializeValues
};

View file

@ -3,342 +3,9 @@
*
* automatically generated from wtur.icd
*/
#include <stdlib.h>
#include "iec61850_model.h"
#include "static_model.h"
extern IedModel iedModel;
static void initializeValues();
extern LogicalDevice iedModel_WTG;
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;
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;
extern LogicalNode iedModel_WTG_WTUR1;
extern DataObject iedModel_WTG_WTUR1_NamPlt;
extern DataAttribute iedModel_WTG_WTUR1_NamPlt_vendor;
extern DataAttribute iedModel_WTG_WTUR1_NamPlt_swRev;
extern DataAttribute iedModel_WTG_WTUR1_NamPlt_configRev;
extern DataObject iedModel_WTG_WTUR1_TotWh;
extern DataObject iedModel_WTG_WTUR1_TotWh_manRs;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_Oper;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_Oper_ctlVal;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_Oper_operTm;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_Oper_origin;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_Oper_origin_orCat;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_Oper_origin_orIdent;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_Oper_ctlNum;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_Oper_T;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_Oper_Test;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_Oper_Check;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_stVal;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_q;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_t;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_ctlModel;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_sboTimeout;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_manRs_sboClass;
extern DataObject iedModel_WTG_WTUR1_TotWh_hisRs;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_Oper;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_Oper_ctlVal;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_Oper_operTm;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_Oper_origin;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_Oper_origin_orCat;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_Oper_origin_orIdent;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_Oper_ctlNum;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_Oper_T;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_Oper_Test;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_Oper_Check;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_stVal;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_q;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_t;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_hisRs_ctlModel;
extern DataObject iedModel_WTG_WTUR1_TotWh_actCtVal;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_actCtVal_stVal;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_actCtVal_q;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_actCtVal_t;
extern DataObject iedModel_WTG_WTUR1_TotWh_oldCtVal;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_oldCtVal_stVal;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_oldCtVal_q;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_oldCtVal_t;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_ctTot;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_dly;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_mly;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_yly;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_tot;
extern DataAttribute iedModel_WTG_WTUR1_TotWh_rsPer;
extern DataObject iedModel_WTG_WTUR1_TurSt;
extern DataObject iedModel_WTG_WTUR1_TurSt_actSt;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_actSt_stVal;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_actSt_q;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_actSt_t;
extern DataObject iedModel_WTG_WTUR1_TurSt_oldSt;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_oldSt_stVal;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_oldSt_q;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_oldSt_t;
extern DataObject iedModel_WTG_WTUR1_TurSt_stTm;
extern DataObject iedModel_WTG_WTUR1_TurSt_stTm_manRs;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_ctlVal;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_operTm;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_origin;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_origin_orCat;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_origin_orIdent;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_ctlNum;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_T;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_Test;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_Oper_Check;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_stVal;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_q;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_t;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_ctlModel;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_sboTimeout;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_manRs_sboClass;
extern DataObject iedModel_WTG_WTUR1_TurSt_stTm_hisRs;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_ctlVal;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_operTm;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_origin;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_origin_orCat;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_origin_orIdent;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_ctlNum;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_T;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_Test;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_Oper_Check;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_stVal;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_q;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_t;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_hisRs_ctlModel;
extern DataObject iedModel_WTG_WTUR1_TurSt_stTm_actTmVal;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_actTmVal_stVal;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_actTmVal_q;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_actTmVal_t;
extern DataObject iedModel_WTG_WTUR1_TurSt_stTm_oldTmVal;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_oldTmVal_stVal;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_oldTmVal_q;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_oldTmVal_t;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_tmTot;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_dly;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_mly;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_yly;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_tot;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stTm_rsPer;
extern DataObject iedModel_WTG_WTUR1_TurSt_stCt;
extern DataObject iedModel_WTG_WTUR1_TurSt_stCt_manRs;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_ctlVal;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_operTm;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_origin;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_origin_orCat;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_origin_orIdent;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_ctlNum;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_T;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_Test;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_Oper_Check;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_stVal;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_q;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_t;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_ctlModel;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_sboTimeout;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_manRs_sboClass;
extern DataObject iedModel_WTG_WTUR1_TurSt_stCt_hisRs;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_ctlVal;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_operTm;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_origin;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_origin_orCat;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_origin_orIdent;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_ctlNum;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_T;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_Test;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_Oper_Check;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_stVal;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_q;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_t;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_hisRs_ctlModel;
extern DataObject iedModel_WTG_WTUR1_TurSt_stCt_actCtVal;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_actCtVal_stVal;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_actCtVal_q;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_actCtVal_t;
extern DataObject iedModel_WTG_WTUR1_TurSt_stCt_oldCtVal;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_oldCtVal_stVal;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_oldCtVal_q;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_oldCtVal_t;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_ctTot;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_dly;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_mly;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_yly;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_tot;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_stCt_rsPer;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_preTmms;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_pstTmms;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_smpTmms;
extern DataAttribute iedModel_WTG_WTUR1_TurSt_datSetMx;
extern DataObject iedModel_WTG_WTUR1_W;
extern DataAttribute iedModel_WTG_WTUR1_W_instMag;
extern DataAttribute iedModel_WTG_WTUR1_W_instMag_i;
extern DataAttribute iedModel_WTG_WTUR1_W_instMag_f;
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_SetTurOp;
extern DataObject iedModel_WTG_WTUR1_SetTurOp_actSt;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_actSt_Oper;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_actSt_Oper_ctlVal;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_actSt_Oper_operTm;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_actSt_Oper_origin;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_actSt_Oper_origin_orCat;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_actSt_Oper_origin_orIdent;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_actSt_Oper_ctlNum;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_actSt_Oper_T;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_actSt_Oper_Test;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_actSt_Oper_Check;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_actSt_stVal;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_actSt_q;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_actSt_t;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_actSt_ctlModel;
extern DataObject iedModel_WTG_WTUR1_SetTurOp_oldSt;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_oldSt_stVal;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_oldSt_q;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_oldSt_t;
extern DataObject iedModel_WTG_WTUR1_SetTurOp_cmTm;
extern DataObject iedModel_WTG_WTUR1_SetTurOp_cmTm_manRs;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_manRs_Oper;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_manRs_Oper_ctlVal;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_manRs_Oper_operTm;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_manRs_Oper_origin;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_manRs_Oper_origin_orCat;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_manRs_Oper_origin_orIdent;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_manRs_Oper_ctlNum;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_manRs_Oper_T;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_manRs_Oper_Test;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_manRs_Oper_Check;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_manRs_stVal;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_manRs_q;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_manRs_t;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_manRs_ctlModel;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_manRs_sboTimeout;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_manRs_sboClass;
extern DataObject iedModel_WTG_WTUR1_SetTurOp_cmTm_hisRs;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_hisRs_Oper;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_hisRs_Oper_ctlVal;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_hisRs_Oper_operTm;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_hisRs_Oper_origin;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_hisRs_Oper_origin_orCat;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_hisRs_Oper_origin_orIdent;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_hisRs_Oper_ctlNum;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_hisRs_Oper_T;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_hisRs_Oper_Test;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_hisRs_Oper_Check;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_hisRs_stVal;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_hisRs_q;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_hisRs_t;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_hisRs_ctlModel;
extern DataObject iedModel_WTG_WTUR1_SetTurOp_cmTm_actTmVal;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_actTmVal_stVal;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_actTmVal_q;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_actTmVal_t;
extern DataObject iedModel_WTG_WTUR1_SetTurOp_cmTm_oldTmVal;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_oldTmVal_stVal;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_oldTmVal_q;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_oldTmVal_t;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_tmTot;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_dly;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_mly;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_yly;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_tot;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmTm_rsPer;
extern DataObject iedModel_WTG_WTUR1_SetTurOp_cmCt;
extern DataObject iedModel_WTG_WTUR1_SetTurOp_cmCt_manRs;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_manRs_Oper;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_manRs_Oper_ctlVal;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_manRs_Oper_operTm;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_manRs_Oper_origin;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_manRs_Oper_origin_orCat;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_manRs_Oper_origin_orIdent;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_manRs_Oper_ctlNum;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_manRs_Oper_T;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_manRs_Oper_Test;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_manRs_Oper_Check;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_manRs_stVal;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_manRs_q;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_manRs_t;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_manRs_ctlModel;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_manRs_sboTimeout;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_manRs_sboClass;
extern DataObject iedModel_WTG_WTUR1_SetTurOp_cmCt_hisRs;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_hisRs_Oper;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_hisRs_Oper_ctlVal;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_hisRs_Oper_operTm;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_hisRs_Oper_origin;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_hisRs_Oper_origin_orCat;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_hisRs_Oper_origin_orIdent;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_hisRs_Oper_ctlNum;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_hisRs_Oper_T;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_hisRs_Oper_Test;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_hisRs_Oper_Check;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_hisRs_stVal;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_hisRs_q;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_hisRs_t;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_hisRs_ctlModel;
extern DataObject iedModel_WTG_WTUR1_SetTurOp_cmCt_actCtVal;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_actCtVal_stVal;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_actCtVal_q;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_actCtVal_t;
extern DataObject iedModel_WTG_WTUR1_SetTurOp_cmCt_oldCtVal;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_oldCtVal_stVal;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_oldCtVal_q;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_oldCtVal_t;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_ctTot;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_dly;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_mly;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_yly;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_tot;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmCt_rsPer;
extern DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmAcs;
@ -4466,6 +4133,7 @@ DataAttribute iedModel_WTG_WTUR1_SetTurOp_cmAcs = {
IedModel iedModel = {
"WIND",
&iedModel_WTG,
@ -4473,6 +4141,7 @@ IedModel iedModel = {
NULL,
NULL,
NULL,
NULL,
initializeValues
};

View file

@ -3,56 +3,9 @@
*
* automatically generated from mhai_array.icd
*/
#include <stdlib.h>
#include "iec61850_model.h"
#include "static_model.h"
extern IedModel iedModel;
static void initializeValues();
extern LogicalDevice iedModel_ComplexArray;
extern LogicalNode iedModel_ComplexArray_LLN0;
extern DataObject iedModel_ComplexArray_LLN0_Mod;
extern DataAttribute iedModel_ComplexArray_LLN0_Mod_q;
extern DataAttribute iedModel_ComplexArray_LLN0_Mod_t;
extern DataAttribute iedModel_ComplexArray_LLN0_Mod_ctlModel;
extern DataObject iedModel_ComplexArray_LLN0_Beh;
extern DataAttribute iedModel_ComplexArray_LLN0_Beh_stVal;
extern DataAttribute iedModel_ComplexArray_LLN0_Beh_q;
extern DataAttribute iedModel_ComplexArray_LLN0_Beh_t;
extern DataObject iedModel_ComplexArray_LLN0_Health;
extern DataAttribute iedModel_ComplexArray_LLN0_Health_stVal;
extern DataAttribute iedModel_ComplexArray_LLN0_Health_q;
extern DataAttribute iedModel_ComplexArray_LLN0_Health_t;
extern DataObject iedModel_ComplexArray_LLN0_NamPlt;
extern DataAttribute iedModel_ComplexArray_LLN0_NamPlt_vendor;
extern DataAttribute iedModel_ComplexArray_LLN0_NamPlt_swRev;
extern DataAttribute iedModel_ComplexArray_LLN0_NamPlt_d;
extern DataAttribute iedModel_ComplexArray_LLN0_NamPlt_configRev;
extern DataAttribute iedModel_ComplexArray_LLN0_NamPlt_ldNs;
extern LogicalNode iedModel_ComplexArray_LPHD1;
extern DataObject iedModel_ComplexArray_LPHD1_PhyNam;
extern DataAttribute iedModel_ComplexArray_LPHD1_PhyNam_vendor;
extern DataObject iedModel_ComplexArray_LPHD1_PhyHealth;
extern DataAttribute iedModel_ComplexArray_LPHD1_PhyHealth_stVal;
extern DataAttribute iedModel_ComplexArray_LPHD1_PhyHealth_q;
extern DataAttribute iedModel_ComplexArray_LPHD1_PhyHealth_t;
extern DataObject iedModel_ComplexArray_LPHD1_Proxy;
extern DataAttribute iedModel_ComplexArray_LPHD1_Proxy_stVal;
extern DataAttribute iedModel_ComplexArray_LPHD1_Proxy_q;
extern DataAttribute iedModel_ComplexArray_LPHD1_Proxy_t;
extern LogicalNode iedModel_ComplexArray_MHAI1;
extern DataObject iedModel_ComplexArray_MHAI1_HA;
extern DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar;
extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_cVal;
extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_cVal_mag;
extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_cVal_mag_f;
extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_cVal_ang;
extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_cVal_ang_f;
extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_q;
extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_t;
extern DataAttribute iedModel_ComplexArray_MHAI1_HA_numHar;
extern DataAttribute iedModel_ComplexArray_MHAI1_HA_numCyc;
extern DataAttribute iedModel_ComplexArray_MHAI1_HA_evalTm;
extern DataAttribute iedModel_ComplexArray_MHAI1_HA_frequency;
@ -590,6 +543,7 @@ DataAttribute iedModel_ComplexArray_MHAI1_HA_frequency = {
IedModel iedModel = {
"test",
&iedModel_ComplexArray,
@ -597,6 +551,7 @@ IedModel iedModel = {
NULL,
NULL,
NULL,
NULL,
initializeValues
};

View file

@ -40,13 +40,13 @@ DE(GGIO1$MX$AnIn2);
DE(GGIO1$MX$AnIn3);
DE(GGIO1$MX$AnIn4);
}
RC(EventsRCB01 Events 0 Events 1 8 111 50 1000);
RC(AnalogValuesRCB01 AnalogValues 0 AnalogValues 1 8 111 50 1000);
RC(EventsRCB01 Events 0 Events 1 24 111 50 1000);
RC(AnalogValuesRCB01 AnalogValues 0 AnalogValues 1 24 111 50 1000);
GC(gcbEvents events Events 2 0 -1 -1 ){
PA(4 111 1000 010ccd010001);
PA(4 273 4096 010ccd010001);
}
GC(gcbAnalogValues analog AnalogValues 2 0 -1 -1 ){
PA(4 111 1000 010ccd010001);
PA(4 273 4096 010ccd010001);
}
}
LN(LPHD1){

View file

@ -3,318 +3,9 @@
*
* automatically generated from simpleIO_control_tests.icd
*/
#include <stdlib.h>
#include "iec61850_model.h"
#include "static_model.h"
extern IedModel iedModel;
static void initializeValues();
extern LogicalDevice iedModel_GenericIO;
extern LogicalNode iedModel_GenericIO_LLN0;
extern DataObject iedModel_GenericIO_LLN0_Mod;
extern DataAttribute iedModel_GenericIO_LLN0_Mod_q;
extern DataAttribute iedModel_GenericIO_LLN0_Mod_t;
extern DataAttribute iedModel_GenericIO_LLN0_Mod_ctlModel;
extern DataObject iedModel_GenericIO_LLN0_Beh;
extern DataAttribute iedModel_GenericIO_LLN0_Beh_stVal;
extern DataAttribute iedModel_GenericIO_LLN0_Beh_q;
extern DataAttribute iedModel_GenericIO_LLN0_Beh_t;
extern DataObject iedModel_GenericIO_LLN0_Health;
extern DataAttribute iedModel_GenericIO_LLN0_Health_stVal;
extern DataAttribute iedModel_GenericIO_LLN0_Health_q;
extern DataAttribute iedModel_GenericIO_LLN0_Health_t;
extern DataObject iedModel_GenericIO_LLN0_NamPlt;
extern DataAttribute iedModel_GenericIO_LLN0_NamPlt_vendor;
extern DataAttribute iedModel_GenericIO_LLN0_NamPlt_swRev;
extern DataAttribute iedModel_GenericIO_LLN0_NamPlt_d;
extern DataAttribute iedModel_GenericIO_LLN0_NamPlt_configRev;
extern DataAttribute iedModel_GenericIO_LLN0_NamPlt_ldNs;
extern LogicalNode iedModel_GenericIO_LPHD1;
extern DataObject iedModel_GenericIO_LPHD1_PhyNam;
extern DataAttribute iedModel_GenericIO_LPHD1_PhyNam_vendor;
extern DataObject iedModel_GenericIO_LPHD1_PhyHealth;
extern DataAttribute iedModel_GenericIO_LPHD1_PhyHealth_stVal;
extern DataAttribute iedModel_GenericIO_LPHD1_PhyHealth_q;
extern DataAttribute iedModel_GenericIO_LPHD1_PhyHealth_t;
extern DataObject iedModel_GenericIO_LPHD1_Proxy;
extern DataAttribute iedModel_GenericIO_LPHD1_Proxy_stVal;
extern DataAttribute iedModel_GenericIO_LPHD1_Proxy_q;
extern DataAttribute iedModel_GenericIO_LPHD1_Proxy_t;
extern LogicalNode iedModel_GenericIO_GGIO1;
extern DataObject iedModel_GenericIO_GGIO1_Mod;
extern DataAttribute iedModel_GenericIO_GGIO1_Mod_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Mod_t;
extern DataAttribute iedModel_GenericIO_GGIO1_Mod_ctlModel;
extern DataObject iedModel_GenericIO_GGIO1_Beh;
extern DataAttribute iedModel_GenericIO_GGIO1_Beh_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Beh_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Beh_t;
extern DataObject iedModel_GenericIO_GGIO1_Health;
extern DataAttribute iedModel_GenericIO_GGIO1_Health_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Health_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Health_t;
extern DataObject iedModel_GenericIO_GGIO1_NamPlt;
extern DataAttribute iedModel_GenericIO_GGIO1_NamPlt_vendor;
extern DataAttribute iedModel_GenericIO_GGIO1_NamPlt_swRev;
extern DataAttribute iedModel_GenericIO_GGIO1_NamPlt_d;
extern DataObject iedModel_GenericIO_GGIO1_AnIn1;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn1_mag;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn1_mag_f;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn1_q;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn1_t;
extern DataObject iedModel_GenericIO_GGIO1_AnIn2;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn2_mag;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn2_mag_f;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn2_q;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn2_t;
extern DataObject iedModel_GenericIO_GGIO1_AnIn3;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn3_mag;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn3_mag_f;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn3_q;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn3_t;
extern DataObject iedModel_GenericIO_GGIO1_AnIn4;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn4_mag;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn4_mag_f;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn4_q;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn4_t;
extern DataObject iedModel_GenericIO_GGIO1_SPCSO1;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_q;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_t;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_ctlModel;
extern DataObject iedModel_GenericIO_GGIO1_SPCSO2;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_SBO;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Cancel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Cancel_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Cancel_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Cancel_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Cancel_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Cancel_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Cancel_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Cancel_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_q;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_t;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_ctlModel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_sboClass;
extern DataObject iedModel_GenericIO_GGIO1_SPCSO3;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Cancel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Cancel_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Cancel_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Cancel_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Cancel_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Cancel_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Cancel_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Cancel_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_q;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_t;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_ctlModel;
extern DataObject iedModel_GenericIO_GGIO1_SPCSO4;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_SBOw;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_SBOw_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_SBOw_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_SBOw_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_SBOw_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_SBOw_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_SBOw_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_SBOw_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_SBOw_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Cancel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Cancel_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Cancel_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Cancel_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Cancel_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Cancel_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Cancel_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Cancel_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_q;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_t;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_ctlModel;
extern DataObject iedModel_GenericIO_GGIO1_SPCSO5;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO5_Oper;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO5_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO5_Oper_operTm;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO5_Oper_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO5_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO5_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO5_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO5_Oper_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO5_Oper_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO5_Oper_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO5_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO5_q;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO5_t;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO5_ctlModel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO5_Cancel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO5_Cancel_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO5_Cancel_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO5_Cancel_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO5_Cancel_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO5_Cancel_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO5_Cancel_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO5_Cancel_Test;
extern DataObject iedModel_GenericIO_GGIO1_SPCSO6;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO6_SBO;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO6_Oper;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO6_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO6_Oper_operTm;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO6_Oper_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO6_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO6_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO6_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO6_Oper_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO6_Oper_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO6_Oper_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO6_Cancel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO6_Cancel_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO6_Cancel_operTm;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO6_Cancel_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO6_Cancel_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO6_Cancel_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO6_Cancel_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO6_Cancel_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO6_Cancel_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO6_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO6_q;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO6_t;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO6_ctlModel;
extern DataObject iedModel_GenericIO_GGIO1_SPCSO7;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO7_Oper;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO7_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO7_Oper_operTm;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO7_Oper_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO7_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO7_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO7_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO7_Oper_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO7_Oper_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO7_Oper_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO7_Cancel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO7_Cancel_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO7_Cancel_operTm;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO7_Cancel_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO7_Cancel_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO7_Cancel_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO7_Cancel_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO7_Cancel_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO7_Cancel_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO7_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO7_q;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO7_t;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO7_ctlModel;
extern DataObject iedModel_GenericIO_GGIO1_SPCSO8;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_SBOw;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_SBOw_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_SBOw_operTm;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_SBOw_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_SBOw_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_SBOw_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_SBOw_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_SBOw_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_SBOw_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_SBOw_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_Oper;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_Oper_operTm;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_Oper_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_Oper_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_Oper_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_Oper_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_Cancel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_Cancel_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_Cancel_operTm;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_Cancel_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_Cancel_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_Cancel_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_Cancel_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_Cancel_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_Cancel_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_q;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_t;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO8_ctlModel;
extern DataObject iedModel_GenericIO_GGIO1_SPCSO9;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO9_Oper;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO9_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO9_Oper_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO9_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO9_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO9_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO9_Oper_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO9_Oper_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO9_Oper_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO9_Cancel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO9_Cancel_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO9_Cancel_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO9_Cancel_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO9_Cancel_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO9_Cancel_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO9_Cancel_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO9_Cancel_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO9_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO9_q;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO9_t;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO9_ctlModel;
extern DataObject iedModel_GenericIO_GGIO1_Ind1;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind1_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind1_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind1_t;
extern DataObject iedModel_GenericIO_GGIO1_Ind2;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind2_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind2_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind2_t;
extern DataObject iedModel_GenericIO_GGIO1_Ind3;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind3_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind3_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind3_t;
extern DataObject iedModel_GenericIO_GGIO1_Ind4;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind4_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind4_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind4_t;
@ -4182,6 +3873,7 @@ DataAttribute iedModel_GenericIO_GGIO1_Ind4_t = {
IedModel iedModel = {
"simpleIO",
&iedModel_GenericIO,
@ -4189,6 +3881,7 @@ IedModel iedModel = {
NULL,
NULL,
NULL,
NULL,
initializeValues
};

View file

@ -3,192 +3,51 @@
*
* automatically generated from simpleIO_direct_control_goose.icd
*/
#include <stdlib.h>
#include "iec61850_model.h"
#include "static_model.h"
extern IedModel iedModel;
static void initializeValues();
extern LogicalDevice iedModel_GenericIO;
extern LogicalNode iedModel_GenericIO_LLN0;
extern DataObject iedModel_GenericIO_LLN0_Mod;
extern DataAttribute iedModel_GenericIO_LLN0_Mod_q;
extern DataAttribute iedModel_GenericIO_LLN0_Mod_t;
extern DataAttribute iedModel_GenericIO_LLN0_Mod_ctlModel;
extern DataObject iedModel_GenericIO_LLN0_Beh;
extern DataAttribute iedModel_GenericIO_LLN0_Beh_stVal;
extern DataAttribute iedModel_GenericIO_LLN0_Beh_q;
extern DataAttribute iedModel_GenericIO_LLN0_Beh_t;
extern DataObject iedModel_GenericIO_LLN0_Health;
extern DataAttribute iedModel_GenericIO_LLN0_Health_stVal;
extern DataAttribute iedModel_GenericIO_LLN0_Health_q;
extern DataAttribute iedModel_GenericIO_LLN0_Health_t;
extern DataObject iedModel_GenericIO_LLN0_NamPlt;
extern DataAttribute iedModel_GenericIO_LLN0_NamPlt_vendor;
extern DataAttribute iedModel_GenericIO_LLN0_NamPlt_swRev;
extern DataAttribute iedModel_GenericIO_LLN0_NamPlt_d;
extern DataAttribute iedModel_GenericIO_LLN0_NamPlt_configRev;
extern DataAttribute iedModel_GenericIO_LLN0_NamPlt_ldNs;
extern LogicalNode iedModel_GenericIO_LPHD1;
extern DataObject iedModel_GenericIO_LPHD1_PhyNam;
extern DataAttribute iedModel_GenericIO_LPHD1_PhyNam_vendor;
extern DataObject iedModel_GenericIO_LPHD1_PhyHealth;
extern DataAttribute iedModel_GenericIO_LPHD1_PhyHealth_stVal;
extern DataAttribute iedModel_GenericIO_LPHD1_PhyHealth_q;
extern DataAttribute iedModel_GenericIO_LPHD1_PhyHealth_t;
extern DataObject iedModel_GenericIO_LPHD1_Proxy;
extern DataAttribute iedModel_GenericIO_LPHD1_Proxy_stVal;
extern DataAttribute iedModel_GenericIO_LPHD1_Proxy_q;
extern DataAttribute iedModel_GenericIO_LPHD1_Proxy_t;
extern LogicalNode iedModel_GenericIO_GGIO1;
extern DataObject iedModel_GenericIO_GGIO1_Mod;
extern DataAttribute iedModel_GenericIO_GGIO1_Mod_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Mod_t;
extern DataAttribute iedModel_GenericIO_GGIO1_Mod_ctlModel;
extern DataObject iedModel_GenericIO_GGIO1_Beh;
extern DataAttribute iedModel_GenericIO_GGIO1_Beh_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Beh_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Beh_t;
extern DataObject iedModel_GenericIO_GGIO1_Health;
extern DataAttribute iedModel_GenericIO_GGIO1_Health_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Health_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Health_t;
extern DataObject iedModel_GenericIO_GGIO1_NamPlt;
extern DataAttribute iedModel_GenericIO_GGIO1_NamPlt_vendor;
extern DataAttribute iedModel_GenericIO_GGIO1_NamPlt_swRev;
extern DataAttribute iedModel_GenericIO_GGIO1_NamPlt_d;
extern DataObject iedModel_GenericIO_GGIO1_AnIn1;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn1_mag;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn1_mag_f;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn1_q;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn1_t;
extern DataObject iedModel_GenericIO_GGIO1_AnIn2;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn2_mag;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn2_mag_f;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn2_q;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn2_t;
extern DataObject iedModel_GenericIO_GGIO1_AnIn3;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn3_mag;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn3_mag_f;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn3_q;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn3_t;
extern DataObject iedModel_GenericIO_GGIO1_AnIn4;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn4_mag;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn4_mag_f;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn4_q;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn4_t;
extern DataObject iedModel_GenericIO_GGIO1_SPCSO1;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_q;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_ctlModel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_t;
extern DataObject iedModel_GenericIO_GGIO1_SPCSO2;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_q;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_ctlModel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_t;
extern DataObject iedModel_GenericIO_GGIO1_SPCSO3;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_q;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_ctlModel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_t;
extern DataObject iedModel_GenericIO_GGIO1_SPCSO4;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_q;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_ctlModel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_t;
extern DataObject iedModel_GenericIO_GGIO1_Ind1;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind1_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind1_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind1_t;
extern DataObject iedModel_GenericIO_GGIO1_Ind2;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind2_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind2_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind2_t;
extern DataObject iedModel_GenericIO_GGIO1_Ind3;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind3_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind3_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind3_t;
extern DataObject iedModel_GenericIO_GGIO1_Ind4;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind4_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind4_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind4_t;
extern DataSet ds_GenericIO_LLN0_Events;
extern DataSet ds_GenericIO_LLN0_AnalogValues;
extern DataSet iedModelds_GenericIO_LLN0_Events;
extern DataSet iedModelds_GenericIO_LLN0_Events2;
extern DataSet iedModelds_GenericIO_LLN0_AnalogValues;
extern DataSetEntry ds_GenericIO_LLN0_Events_fcda0;
extern DataSetEntry ds_GenericIO_LLN0_Events_fcda1;
extern DataSetEntry ds_GenericIO_LLN0_Events_fcda2;
extern DataSetEntry ds_GenericIO_LLN0_Events_fcda3;
extern DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda0;
extern DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda1;
extern DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda2;
extern DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda3;
DataSetEntry ds_GenericIO_LLN0_Events_fcda0 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda0 = {
"GenericIO",
false,
"GGIO1$ST$SPCSO1$stVal",
-1,
NULL,
NULL,
&ds_GenericIO_LLN0_Events_fcda1
&iedModelds_GenericIO_LLN0_Events_fcda1
};
DataSetEntry ds_GenericIO_LLN0_Events_fcda1 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda1 = {
"GenericIO",
false,
"GGIO1$ST$SPCSO2$stVal",
-1,
NULL,
NULL,
&ds_GenericIO_LLN0_Events_fcda2
&iedModelds_GenericIO_LLN0_Events_fcda2
};
DataSetEntry ds_GenericIO_LLN0_Events_fcda2 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda2 = {
"GenericIO",
false,
"GGIO1$ST$SPCSO3$stVal",
-1,
NULL,
NULL,
&ds_GenericIO_LLN0_Events_fcda3
&iedModelds_GenericIO_LLN0_Events_fcda3
};
DataSetEntry ds_GenericIO_LLN0_Events_fcda3 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda3 = {
"GenericIO",
false,
"GGIO1$ST$SPCSO4$stVal",
@ -198,50 +57,103 @@ DataSetEntry ds_GenericIO_LLN0_Events_fcda3 = {
NULL
};
DataSet ds_GenericIO_LLN0_Events = {
DataSet iedModelds_GenericIO_LLN0_Events = {
"GenericIO",
"LLN0$Events",
4,
&ds_GenericIO_LLN0_Events_fcda0,
&ds_GenericIO_LLN0_AnalogValues
&iedModelds_GenericIO_LLN0_Events_fcda0,
&iedModelds_GenericIO_LLN0_Events2
};
extern DataSetEntry ds_GenericIO_LLN0_AnalogValues_fcda0;
extern DataSetEntry ds_GenericIO_LLN0_AnalogValues_fcda1;
extern DataSetEntry ds_GenericIO_LLN0_AnalogValues_fcda2;
extern DataSetEntry ds_GenericIO_LLN0_AnalogValues_fcda3;
extern DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda0;
extern DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda1;
extern DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda2;
extern DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda3;
DataSetEntry ds_GenericIO_LLN0_AnalogValues_fcda0 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda0 = {
"GenericIO",
false,
"GGIO1$ST$SPCSO1",
-1,
NULL,
NULL,
&iedModelds_GenericIO_LLN0_Events2_fcda1
};
DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda1 = {
"GenericIO",
false,
"GGIO1$ST$SPCSO2",
-1,
NULL,
NULL,
&iedModelds_GenericIO_LLN0_Events2_fcda2
};
DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda2 = {
"GenericIO",
false,
"GGIO1$ST$SPCSO3",
-1,
NULL,
NULL,
&iedModelds_GenericIO_LLN0_Events2_fcda3
};
DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda3 = {
"GenericIO",
false,
"GGIO1$ST$SPCSO4",
-1,
NULL,
NULL,
NULL
};
DataSet iedModelds_GenericIO_LLN0_Events2 = {
"GenericIO",
"LLN0$Events2",
4,
&iedModelds_GenericIO_LLN0_Events2_fcda0,
&iedModelds_GenericIO_LLN0_AnalogValues
};
extern DataSetEntry iedModelds_GenericIO_LLN0_AnalogValues_fcda0;
extern DataSetEntry iedModelds_GenericIO_LLN0_AnalogValues_fcda1;
extern DataSetEntry iedModelds_GenericIO_LLN0_AnalogValues_fcda2;
extern DataSetEntry iedModelds_GenericIO_LLN0_AnalogValues_fcda3;
DataSetEntry iedModelds_GenericIO_LLN0_AnalogValues_fcda0 = {
"GenericIO",
false,
"GGIO1$MX$AnIn1",
-1,
NULL,
NULL,
&ds_GenericIO_LLN0_AnalogValues_fcda1
&iedModelds_GenericIO_LLN0_AnalogValues_fcda1
};
DataSetEntry ds_GenericIO_LLN0_AnalogValues_fcda1 = {
DataSetEntry iedModelds_GenericIO_LLN0_AnalogValues_fcda1 = {
"GenericIO",
false,
"GGIO1$MX$AnIn2",
-1,
NULL,
NULL,
&ds_GenericIO_LLN0_AnalogValues_fcda2
&iedModelds_GenericIO_LLN0_AnalogValues_fcda2
};
DataSetEntry ds_GenericIO_LLN0_AnalogValues_fcda2 = {
DataSetEntry iedModelds_GenericIO_LLN0_AnalogValues_fcda2 = {
"GenericIO",
false,
"GGIO1$MX$AnIn3",
-1,
NULL,
NULL,
&ds_GenericIO_LLN0_AnalogValues_fcda3
&iedModelds_GenericIO_LLN0_AnalogValues_fcda3
};
DataSetEntry ds_GenericIO_LLN0_AnalogValues_fcda3 = {
DataSetEntry iedModelds_GenericIO_LLN0_AnalogValues_fcda3 = {
"GenericIO",
false,
"GGIO1$MX$AnIn4",
@ -251,11 +163,11 @@ DataSetEntry ds_GenericIO_LLN0_AnalogValues_fcda3 = {
NULL
};
DataSet ds_GenericIO_LLN0_AnalogValues = {
DataSet iedModelds_GenericIO_LLN0_AnalogValues = {
"GenericIO",
"LLN0$AnalogValues",
4,
&ds_GenericIO_LLN0_AnalogValues_fcda0,
&iedModelds_GenericIO_LLN0_AnalogValues_fcda0,
NULL
};
@ -1970,8 +1882,9 @@ DataAttribute iedModel_GenericIO_GGIO1_Ind4_t = {
extern ReportControlBlock iedModel_GenericIO_LLN0_report0;
extern ReportControlBlock iedModel_GenericIO_LLN0_report1;
ReportControlBlock iedModel_GenericIO_LLN0_report0 = {&iedModel_GenericIO_LLN0, "EventsRCB01", "Events", false, "Events", 1, 8, 111, 50, 1000, &iedModel_GenericIO_LLN0_report1};
ReportControlBlock iedModel_GenericIO_LLN0_report1 = {&iedModel_GenericIO_LLN0, "AnalogValuesRCB01", "AnalogValues", false, "AnalogValues", 1, 8, 111, 50, 1000, NULL};
ReportControlBlock iedModel_GenericIO_LLN0_report0 = {&iedModel_GenericIO_LLN0, "EventsRCB01", "Events", false, "Events", 1, 24, 111, 50, 1000, &iedModel_GenericIO_LLN0_report1};
ReportControlBlock iedModel_GenericIO_LLN0_report1 = {&iedModel_GenericIO_LLN0, "AnalogValuesRCB01", "AnalogValues", false, "AnalogValues", 1, 24, 111, 50, 1000, NULL};
extern GSEControlBlock iedModel_GenericIO_LLN0_gse0;
extern GSEControlBlock iedModel_GenericIO_LLN0_gse1;
@ -1979,7 +1892,7 @@ extern GSEControlBlock iedModel_GenericIO_LLN0_gse1;
static PhyComAddress iedModel_GenericIO_LLN0_gse0_address = {
4,
1,
1000,
4096,
{0x1, 0xc, 0xcd, 0x1, 0x0, 0x1}
};
@ -1988,7 +1901,7 @@ GSEControlBlock iedModel_GenericIO_LLN0_gse0 = {&iedModel_GenericIO_LLN0, "gcbEv
static PhyComAddress iedModel_GenericIO_LLN0_gse1_address = {
4,
1,
1000,
4096,
{0x1, 0xc, 0xcd, 0x1, 0x0, 0x1}
};
@ -1999,10 +1912,11 @@ GSEControlBlock iedModel_GenericIO_LLN0_gse1 = {&iedModel_GenericIO_LLN0, "gcbAn
IedModel iedModel = {
"simpleIO",
&iedModel_GenericIO,
&ds_GenericIO_LLN0_Events,
&iedModelds_GenericIO_LLN0_Events,
&iedModel_GenericIO_LLN0_report0,
&iedModel_GenericIO_LLN0_gse0,
NULL,
NULL,
initializeValues
};

View file

@ -122,7 +122,6 @@
</DOType>
<DOType cdc="ASG" id="ASG_SE">
<DA bType="Struct" fc="SG" name="setMag" type="AnalogueValue_1"/>
<DA bType="Struct" fc="SE" name="setMag" type="AnalogueValue_1"/>
</DOType>
@ -151,7 +150,6 @@
</DOType>
<DOType id="ING_SE" cdc="ING">
<DA name="setVal" bType="INT32" fc="SG" dchg="true" />
<DA name="setVal" bType="INT32" fc="SE" dchg="true" />
</DOType>

View file

@ -3,101 +3,9 @@
*
* automatically generated from sg_demo.icd
*/
#include <stdlib.h>
#include "iec61850_model.h"
#include "static_model.h"
extern IedModel iedModel;
static void initializeValues();
extern LogicalDevice iedModel_PROT;
extern LogicalNode iedModel_PROT_LLN0;
extern DataObject iedModel_PROT_LLN0_Mod;
extern DataAttribute iedModel_PROT_LLN0_Mod_Oper;
extern DataAttribute iedModel_PROT_LLN0_Mod_Oper_ctlVal;
extern DataAttribute iedModel_PROT_LLN0_Mod_Oper_operTm;
extern DataAttribute iedModel_PROT_LLN0_Mod_Oper_origin;
extern DataAttribute iedModel_PROT_LLN0_Mod_Oper_origin_orCat;
extern DataAttribute iedModel_PROT_LLN0_Mod_Oper_origin_orIdent;
extern DataAttribute iedModel_PROT_LLN0_Mod_Oper_ctlNum;
extern DataAttribute iedModel_PROT_LLN0_Mod_Oper_T;
extern DataAttribute iedModel_PROT_LLN0_Mod_Oper_Test;
extern DataAttribute iedModel_PROT_LLN0_Mod_Oper_Check;
extern DataAttribute iedModel_PROT_LLN0_Mod_stVal;
extern DataAttribute iedModel_PROT_LLN0_Mod_q;
extern DataAttribute iedModel_PROT_LLN0_Mod_t;
extern DataAttribute iedModel_PROT_LLN0_Mod_ctlModel;
extern DataObject iedModel_PROT_LLN0_Beh;
extern DataAttribute iedModel_PROT_LLN0_Beh_stVal;
extern DataAttribute iedModel_PROT_LLN0_Beh_q;
extern DataAttribute iedModel_PROT_LLN0_Beh_t;
extern DataObject iedModel_PROT_LLN0_Health;
extern DataAttribute iedModel_PROT_LLN0_Health_stVal;
extern DataAttribute iedModel_PROT_LLN0_Health_q;
extern DataAttribute iedModel_PROT_LLN0_Health_t;
extern DataObject iedModel_PROT_LLN0_NamPlt;
extern DataAttribute iedModel_PROT_LLN0_NamPlt_vendor;
extern DataAttribute iedModel_PROT_LLN0_NamPlt_swRev;
extern DataAttribute iedModel_PROT_LLN0_NamPlt_d;
extern DataAttribute iedModel_PROT_LLN0_NamPlt_configRev;
extern DataAttribute iedModel_PROT_LLN0_NamPlt_ldNs;
extern LogicalNode iedModel_PROT_LPHD1;
extern DataObject iedModel_PROT_LPHD1_PhyNam;
extern DataAttribute iedModel_PROT_LPHD1_PhyNam_vendor;
extern DataAttribute iedModel_PROT_LPHD1_PhyNam_hwRev;
extern DataAttribute iedModel_PROT_LPHD1_PhyNam_swRev;
extern DataAttribute iedModel_PROT_LPHD1_PhyNam_serNum;
extern DataAttribute iedModel_PROT_LPHD1_PhyNam_model;
extern DataAttribute iedModel_PROT_LPHD1_PhyNam_location;
extern DataObject iedModel_PROT_LPHD1_PhyHealth;
extern DataAttribute iedModel_PROT_LPHD1_PhyHealth_stVal;
extern DataAttribute iedModel_PROT_LPHD1_PhyHealth_q;
extern DataAttribute iedModel_PROT_LPHD1_PhyHealth_t;
extern DataObject iedModel_PROT_LPHD1_Proxy;
extern DataAttribute iedModel_PROT_LPHD1_Proxy_stVal;
extern DataAttribute iedModel_PROT_LPHD1_Proxy_q;
extern DataAttribute iedModel_PROT_LPHD1_Proxy_t;
extern LogicalNode iedModel_PROT_PTOC1;
extern DataObject iedModel_PROT_PTOC1_Beh;
extern DataAttribute iedModel_PROT_PTOC1_Beh_stVal;
extern DataAttribute iedModel_PROT_PTOC1_Beh_q;
extern DataAttribute iedModel_PROT_PTOC1_Beh_t;
extern DataObject iedModel_PROT_PTOC1_Mod;
extern DataAttribute iedModel_PROT_PTOC1_Mod_Oper;
extern DataAttribute iedModel_PROT_PTOC1_Mod_Oper_ctlVal;
extern DataAttribute iedModel_PROT_PTOC1_Mod_Oper_operTm;
extern DataAttribute iedModel_PROT_PTOC1_Mod_Oper_origin;
extern DataAttribute iedModel_PROT_PTOC1_Mod_Oper_origin_orCat;
extern DataAttribute iedModel_PROT_PTOC1_Mod_Oper_origin_orIdent;
extern DataAttribute iedModel_PROT_PTOC1_Mod_Oper_ctlNum;
extern DataAttribute iedModel_PROT_PTOC1_Mod_Oper_T;
extern DataAttribute iedModel_PROT_PTOC1_Mod_Oper_Test;
extern DataAttribute iedModel_PROT_PTOC1_Mod_Oper_Check;
extern DataAttribute iedModel_PROT_PTOC1_Mod_stVal;
extern DataAttribute iedModel_PROT_PTOC1_Mod_q;
extern DataAttribute iedModel_PROT_PTOC1_Mod_t;
extern DataAttribute iedModel_PROT_PTOC1_Mod_ctlModel;
extern DataObject iedModel_PROT_PTOC1_Str;
extern DataAttribute iedModel_PROT_PTOC1_Str_general;
extern DataAttribute iedModel_PROT_PTOC1_Str_dirGeneral;
extern DataAttribute iedModel_PROT_PTOC1_Str_q;
extern DataAttribute iedModel_PROT_PTOC1_Str_t;
extern DataObject iedModel_PROT_PTOC1_Op;
extern DataAttribute iedModel_PROT_PTOC1_Op_general;
extern DataAttribute iedModel_PROT_PTOC1_Op_q;
extern DataAttribute iedModel_PROT_PTOC1_Op_t;
extern DataObject iedModel_PROT_PTOC1_StrVal;
extern DataAttribute iedModel_PROT_PTOC1_StrVal_setMag;
extern DataAttribute iedModel_PROT_PTOC1_StrVal_setMag_f;
extern DataAttribute iedModel_SE_PROT_PTOC1_StrVal_setMag;
extern DataAttribute iedModel_SE_PROT_PTOC1_StrVal_setMag_f;
extern DataObject iedModel_PROT_PTOC1_OpDlTmms;
extern DataAttribute iedModel_PROT_PTOC1_OpDlTmms_setVal;
extern DataAttribute iedModel_SE_PROT_PTOC1_OpDlTmms_setVal;
extern DataObject iedModel_PROT_PTOC1_RsDlTmms;
extern DataAttribute iedModel_PROT_PTOC1_RsDlTmms_setVal;
extern DataAttribute iedModel_SE_PROT_PTOC1_RsDlTmms_setVal;
extern DataObject iedModel_PROT_PTOC1_RstTms;
extern DataAttribute iedModel_PROT_PTOC1_RstTms_setVal;
extern DataAttribute iedModel_SE_PROT_PTOC1_RstTms_setVal;
@ -1194,6 +1102,7 @@ DataAttribute iedModel_SE_PROT_PTOC1_RstTms_setVal = {
extern SettingGroupControlBlock iedModel_PROT_LLN0_sgcb;
SettingGroupControlBlock iedModel_PROT_LLN0_sgcb = {&iedModel_PROT_LLN0, 1, 5, 0, false, 0, 0, NULL};
@ -1205,6 +1114,7 @@ IedModel iedModel = {
NULL,
NULL,
NULL,
NULL,
&iedModel_PROT_LLN0_sgcb,
initializeValues
};

View file

@ -3,193 +3,50 @@
*
* automatically generated from simpleIO_direct_control.icd
*/
#include <stdlib.h>
#include "iec61850_model.h"
#include "static_model.h"
extern IedModel iedModel;
static void initializeValues();
extern LogicalDevice iedModel_GenericIO;
extern LogicalNode iedModel_GenericIO_LLN0;
extern DataObject iedModel_GenericIO_LLN0_Mod;
extern DataAttribute iedModel_GenericIO_LLN0_Mod_stVal;
extern DataAttribute iedModel_GenericIO_LLN0_Mod_q;
extern DataAttribute iedModel_GenericIO_LLN0_Mod_t;
extern DataAttribute iedModel_GenericIO_LLN0_Mod_ctlModel;
extern DataObject iedModel_GenericIO_LLN0_Beh;
extern DataAttribute iedModel_GenericIO_LLN0_Beh_stVal;
extern DataAttribute iedModel_GenericIO_LLN0_Beh_q;
extern DataAttribute iedModel_GenericIO_LLN0_Beh_t;
extern DataObject iedModel_GenericIO_LLN0_Health;
extern DataAttribute iedModel_GenericIO_LLN0_Health_stVal;
extern DataAttribute iedModel_GenericIO_LLN0_Health_q;
extern DataAttribute iedModel_GenericIO_LLN0_Health_t;
extern DataObject iedModel_GenericIO_LLN0_NamPlt;
extern DataAttribute iedModel_GenericIO_LLN0_NamPlt_vendor;
extern DataAttribute iedModel_GenericIO_LLN0_NamPlt_swRev;
extern DataAttribute iedModel_GenericIO_LLN0_NamPlt_d;
extern DataAttribute iedModel_GenericIO_LLN0_NamPlt_configRev;
extern DataAttribute iedModel_GenericIO_LLN0_NamPlt_ldNs;
extern LogicalNode iedModel_GenericIO_LPHD1;
extern DataObject iedModel_GenericIO_LPHD1_PhyNam;
extern DataAttribute iedModel_GenericIO_LPHD1_PhyNam_vendor;
extern DataObject iedModel_GenericIO_LPHD1_PhyHealth;
extern DataAttribute iedModel_GenericIO_LPHD1_PhyHealth_stVal;
extern DataAttribute iedModel_GenericIO_LPHD1_PhyHealth_q;
extern DataAttribute iedModel_GenericIO_LPHD1_PhyHealth_t;
extern DataObject iedModel_GenericIO_LPHD1_Proxy;
extern DataAttribute iedModel_GenericIO_LPHD1_Proxy_stVal;
extern DataAttribute iedModel_GenericIO_LPHD1_Proxy_q;
extern DataAttribute iedModel_GenericIO_LPHD1_Proxy_t;
extern LogicalNode iedModel_GenericIO_GGIO1;
extern DataObject iedModel_GenericIO_GGIO1_Mod;
extern DataAttribute iedModel_GenericIO_GGIO1_Mod_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Mod_t;
extern DataAttribute iedModel_GenericIO_GGIO1_Mod_ctlModel;
extern DataObject iedModel_GenericIO_GGIO1_Beh;
extern DataAttribute iedModel_GenericIO_GGIO1_Beh_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Beh_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Beh_t;
extern DataObject iedModel_GenericIO_GGIO1_Health;
extern DataAttribute iedModel_GenericIO_GGIO1_Health_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Health_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Health_t;
extern DataObject iedModel_GenericIO_GGIO1_NamPlt;
extern DataAttribute iedModel_GenericIO_GGIO1_NamPlt_vendor;
extern DataAttribute iedModel_GenericIO_GGIO1_NamPlt_swRev;
extern DataAttribute iedModel_GenericIO_GGIO1_NamPlt_d;
extern DataObject iedModel_GenericIO_GGIO1_AnIn1;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn1_mag;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn1_mag_f;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn1_q;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn1_t;
extern DataObject iedModel_GenericIO_GGIO1_AnIn2;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn2_mag;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn2_mag_f;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn2_q;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn2_t;
extern DataObject iedModel_GenericIO_GGIO1_AnIn3;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn3_mag;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn3_mag_f;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn3_q;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn3_t;
extern DataObject iedModel_GenericIO_GGIO1_AnIn4;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn4_mag;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn4_mag_f;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn4_q;
extern DataAttribute iedModel_GenericIO_GGIO1_AnIn4_t;
extern DataObject iedModel_GenericIO_GGIO1_SPCSO1;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_q;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_Oper_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_ctlModel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO1_t;
extern DataObject iedModel_GenericIO_GGIO1_SPCSO2;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_q;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_Oper_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_ctlModel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO2_t;
extern DataObject iedModel_GenericIO_GGIO1_SPCSO3;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_q;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_Oper_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_ctlModel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO3_t;
extern DataObject iedModel_GenericIO_GGIO1_SPCSO4;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_q;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_origin;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_T;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_Test;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_Oper_Check;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_ctlModel;
extern DataAttribute iedModel_GenericIO_GGIO1_SPCSO4_t;
extern DataObject iedModel_GenericIO_GGIO1_Ind1;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind1_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind1_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind1_t;
extern DataObject iedModel_GenericIO_GGIO1_Ind2;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind2_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind2_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind2_t;
extern DataObject iedModel_GenericIO_GGIO1_Ind3;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind3_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind3_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind3_t;
extern DataObject iedModel_GenericIO_GGIO1_Ind4;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind4_stVal;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind4_q;
extern DataAttribute iedModel_GenericIO_GGIO1_Ind4_t;
extern DataSet ds_GenericIO_LLN0_Events;
extern DataSet ds_GenericIO_LLN0_Events2;
extern DataSet iedModelds_GenericIO_LLN0_Events;
extern DataSet iedModelds_GenericIO_LLN0_Events2;
extern DataSetEntry ds_GenericIO_LLN0_Events_fcda0;
extern DataSetEntry ds_GenericIO_LLN0_Events_fcda1;
extern DataSetEntry ds_GenericIO_LLN0_Events_fcda2;
extern DataSetEntry ds_GenericIO_LLN0_Events_fcda3;
extern DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda0;
extern DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda1;
extern DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda2;
extern DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda3;
DataSetEntry ds_GenericIO_LLN0_Events_fcda0 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda0 = {
"GenericIO",
false,
"GGIO1$ST$SPCSO1$stVal",
-1,
NULL,
NULL,
&ds_GenericIO_LLN0_Events_fcda1
&iedModelds_GenericIO_LLN0_Events_fcda1
};
DataSetEntry ds_GenericIO_LLN0_Events_fcda1 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda1 = {
"GenericIO",
false,
"GGIO1$ST$SPCSO2$stVal",
-1,
NULL,
NULL,
&ds_GenericIO_LLN0_Events_fcda2
&iedModelds_GenericIO_LLN0_Events_fcda2
};
DataSetEntry ds_GenericIO_LLN0_Events_fcda2 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda2 = {
"GenericIO",
false,
"GGIO1$ST$SPCSO3$stVal",
-1,
NULL,
NULL,
&ds_GenericIO_LLN0_Events_fcda3
&iedModelds_GenericIO_LLN0_Events_fcda3
};
DataSetEntry ds_GenericIO_LLN0_Events_fcda3 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events_fcda3 = {
"GenericIO",
false,
"GGIO1$ST$SPCSO4$stVal",
@ -199,50 +56,50 @@ DataSetEntry ds_GenericIO_LLN0_Events_fcda3 = {
NULL
};
DataSet ds_GenericIO_LLN0_Events = {
DataSet iedModelds_GenericIO_LLN0_Events = {
"GenericIO",
"LLN0$Events",
4,
&ds_GenericIO_LLN0_Events_fcda0,
&ds_GenericIO_LLN0_Events2
&iedModelds_GenericIO_LLN0_Events_fcda0,
&iedModelds_GenericIO_LLN0_Events2
};
extern DataSetEntry ds_GenericIO_LLN0_Events2_fcda0;
extern DataSetEntry ds_GenericIO_LLN0_Events2_fcda1;
extern DataSetEntry ds_GenericIO_LLN0_Events2_fcda2;
extern DataSetEntry ds_GenericIO_LLN0_Events2_fcda3;
extern DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda0;
extern DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda1;
extern DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda2;
extern DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda3;
DataSetEntry ds_GenericIO_LLN0_Events2_fcda0 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda0 = {
"GenericIO",
false,
"GGIO1$ST$SPCSO1",
-1,
NULL,
NULL,
&ds_GenericIO_LLN0_Events2_fcda1
&iedModelds_GenericIO_LLN0_Events2_fcda1
};
DataSetEntry ds_GenericIO_LLN0_Events2_fcda1 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda1 = {
"GenericIO",
false,
"GGIO1$ST$SPCSO2",
-1,
NULL,
NULL,
&ds_GenericIO_LLN0_Events2_fcda2
&iedModelds_GenericIO_LLN0_Events2_fcda2
};
DataSetEntry ds_GenericIO_LLN0_Events2_fcda2 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda2 = {
"GenericIO",
false,
"GGIO1$ST$SPCSO3",
-1,
NULL,
NULL,
&ds_GenericIO_LLN0_Events2_fcda3
&iedModelds_GenericIO_LLN0_Events2_fcda3
};
DataSetEntry ds_GenericIO_LLN0_Events2_fcda3 = {
DataSetEntry iedModelds_GenericIO_LLN0_Events2_fcda3 = {
"GenericIO",
false,
"GGIO1$ST$SPCSO4",
@ -252,11 +109,11 @@ DataSetEntry ds_GenericIO_LLN0_Events2_fcda3 = {
NULL
};
DataSet ds_GenericIO_LLN0_Events2 = {
DataSet iedModelds_GenericIO_LLN0_Events2 = {
"GenericIO",
"LLN0$Events2",
4,
&ds_GenericIO_LLN0_Events2_fcda0,
&iedModelds_GenericIO_LLN0_Events2_fcda0,
NULL
};
@ -1986,10 +1843,11 @@ extern ReportControlBlock iedModel_GenericIO_LLN0_report1;
extern ReportControlBlock iedModel_GenericIO_LLN0_report2;
extern ReportControlBlock iedModel_GenericIO_LLN0_report3;
ReportControlBlock iedModel_GenericIO_LLN0_report0 = {&iedModel_GenericIO_LLN0, "EventsRCB01", "Events1", false, "Events", 1, 8, 111, 50, 1000, &iedModel_GenericIO_LLN0_report1};
ReportControlBlock iedModel_GenericIO_LLN0_report1 = {&iedModel_GenericIO_LLN0, "EventsIndexed01", "Events2", false, "Events", 1, 8, 111, 50, 1000, &iedModel_GenericIO_LLN0_report2};
ReportControlBlock iedModel_GenericIO_LLN0_report2 = {&iedModel_GenericIO_LLN0, "EventsIndexed02", "Events2", false, "Events", 1, 8, 111, 50, 1000, &iedModel_GenericIO_LLN0_report3};
ReportControlBlock iedModel_GenericIO_LLN0_report3 = {&iedModel_GenericIO_LLN0, "EventsIndexed03", "Events2", false, "Events", 1, 8, 111, 50, 1000, NULL};
ReportControlBlock iedModel_GenericIO_LLN0_report0 = {&iedModel_GenericIO_LLN0, "EventsRCB01", "Events1", false, "Events", 1, 24, 111, 50, 1000, &iedModel_GenericIO_LLN0_report1};
ReportControlBlock iedModel_GenericIO_LLN0_report1 = {&iedModel_GenericIO_LLN0, "EventsIndexed01", "Events2", false, "Events", 1, 24, 111, 50, 1000, &iedModel_GenericIO_LLN0_report2};
ReportControlBlock iedModel_GenericIO_LLN0_report2 = {&iedModel_GenericIO_LLN0, "EventsIndexed02", "Events2", false, "Events", 1, 24, 111, 50, 1000, &iedModel_GenericIO_LLN0_report3};
ReportControlBlock iedModel_GenericIO_LLN0_report3 = {&iedModel_GenericIO_LLN0, "EventsIndexed03", "Events2", false, "Events", 1, 24, 111, 50, 1000, NULL};
@ -1997,10 +1855,11 @@ ReportControlBlock iedModel_GenericIO_LLN0_report3 = {&iedModel_GenericIO_LLN0,
IedModel iedModel = {
"simpleIO",
&iedModel_GenericIO,
&ds_GenericIO_LLN0_Events,
&iedModelds_GenericIO_LLN0_Events,
&iedModel_GenericIO_LLN0_report0,
NULL,
NULL,
NULL,
initializeValues
};

View file

@ -0,0 +1,34 @@
set(sv_subscriber_example_SRCS
sv_subscriber_example.c
)
IF(WIN32)
IF(WITH_WPCAP)
set_source_files_properties(${sv_subscriber_example_SRCS}
PROPERTIES LANGUAGE CXX)
add_executable(sv_subscriber_example
${sv_subscriber_example_SRCS}
)
target_link_libraries(svsubscriber_example
iec61850
)
ENDIF(WITH_WPCAP)
ELSE(WIN32)
add_executable(sv_subscriber_example
${sv_subscriber_example_SRCS}
)
target_link_libraries(sv_subscriber_example
iec61850
)
ENDIF(WIN32)

View file

@ -0,0 +1,21 @@
LIBIEC_HOME=../../../libiec61850
PROJECT_BINARY_NAME = sv_subscriber
PROJECT_SOURCES += sv_subscriber_example.c
INCLUDES += -I.
include $(LIBIEC_HOME)/make/target_system.mk
include $(LIBIEC_HOME)/make/stack_includes.mk
all: $(PROJECT_BINARY_NAME)
include $(LIBIEC_HOME)/make/common_targets.mk
$(PROJECT_BINARY_NAME): $(PROJECT_SOURCES) $(LIB_NAME)
$(CC) $(CFLAGS) $(LDFLAGS) -o $(PROJECT_BINARY_NAME) $(PROJECT_SOURCES) $(INCLUDES) $(LIB_NAME) $(LDLIBS)
clean:
rm -f $(PROJECT_BINARY_NAME)

View file

@ -0,0 +1,73 @@
/*
* subscriber_test.c
*
* Example program for Sampled Values (SV) subscriber
*
*/
#include "hal_thread.h"
#include <signal.h>
#include <stdio.h>
#include "sv_subscriber.h"
static bool running = true;
void sigint_handler(int signalId)
{
running = 0;
}
/* Callback handler for received SV messages */
static void
svUpdateListener (SVSubscriber subscriber, void* parameter, SVClientASDU asdu)
{
printf("svUpdateListener called\n");
const char* svID = SVClientASDU_getSvId(asdu);
if (svID != NULL)
printf(" svID=(%s)\n", svID);
printf(" smpCnt: %i\n", SVClientASDU_getSmpCnt(asdu));
printf(" confRev: %u\n", SVClientASDU_getConfRev(asdu));
if (SVClientASDU_getDataSize(asdu) >= 8) {
printf(" DATA[0]: %f\n", SVClientASDU_getFLOAT32(asdu, 0));
printf(" DATA[1]: %f\n", SVClientASDU_getFLOAT32(asdu, 4));
}
}
int
main(int argc, char** argv)
{
SVReceiver receiver = SVReceiver_create();
if (argc > 1) {
printf("Set interface id: %s\n", argv[1]);
SVReceiver_setInterfaceId(receiver, argv[1]);
}
else {
printf("Using interface eth0\n");
SVReceiver_setInterfaceId(receiver, "eth0");
}
SVSubscriber subscriber = SVSubscriber_create(NULL, 0x4000);
SVSubscriber_setListener(subscriber, svUpdateListener, NULL);
SVReceiver_addSubscriber(receiver, subscriber);
SVReceiver_start(receiver);
signal(SIGINT, sigint_handler);
while (running) {
Thread_sleep(1);
}
SVReceiver_stop(receiver);
SVReceiver_destroy(receiver);
}

View file

@ -7,3 +7,4 @@ INCLUDES += -I$(LIBIEC_HOME)/src/iec61850/inc
INCLUDES += -I$(LIBIEC_HOME)/src/iec61850/inc_private
INCLUDES += -I$(LIBIEC_HOME)/src/hal/inc
INCLUDES += -I$(LIBIEC_HOME)/src/goose
INCLUDES += -I$(LIBIEC_HOME)/src/sampled_values

View file

@ -58,6 +58,7 @@ set (lib_common_SRCS
./iec61850/client/client_control.c
./iec61850/client/client_report_control.c
./iec61850/client/client_goose_control.c
./iec61850/client/client_sv_control.c
./iec61850/client/client_report.c
./iec61850/client/ied_connection.c
./iec61850/common/iec61850_common.c
@ -71,7 +72,7 @@ set (lib_common_SRCS
./iec61850/server/mms_mapping/mms_mapping.c
./iec61850/server/mms_mapping/reporting.c
./iec61850/server/mms_mapping/mms_goose.c
./iec61850/server/mms_mapping/mms_sv.c
)
set (lib_asn1c_SRCS
@ -173,6 +174,10 @@ set (lib_goose_SRCS
./goose/goose_publisher.c
)
set (lib_sv_SRCS
./sampled_values/sv_subscriber.c
)
set (lib_linux_SRCS
./hal/socket/linux/socket_linux.c
./hal/ethernet/linux/ethernet_linux.c
@ -213,6 +218,8 @@ set_source_files_properties(${lib_common_SRCS} ${lib_windows_SRCS}
IF(WITH_WPCAP)
set_source_files_properties(${lib_goose_SRCS}
PROPERTIES LANGUAGE CXX)
set_source_files_properties(${lib_sv_SRCS}
PROPERTIES LANGUAGE CXX)
ELSE()
add_definitions(-DEXCLUDE_ETHERNET_WINDOWS)
ENDIF()
@ -225,16 +232,17 @@ include_directories(
IF(WITH_WPCAP)
set (library_SRCS
${lib_common_SRCS}
${lib_asn1c_SRCS}
${lib_goose_SRCS}
${lib_common_SRCS}
${lib_asn1c_SRCS}
${lib_goose_SRCS}
${lib_sv_SRCS}
${lib_windows_SRCS}
)
ELSE()
set (library_SRCS
${lib_common_SRCS}
${lib_asn1c_SRCS}
${lib_common_SRCS}
${lib_asn1c_SRCS}
${lib_windows_SRCS}
)
@ -243,23 +251,26 @@ ENDIF(WITH_WPCAP)
ELSEIF(UNIX)
IF(APPLE)
set (library_SRCS
${lib_common_SRCS}
${lib_asn1c_SRCS}
${lib_goose_SRCS}
${lib_common_SRCS}
${lib_asn1c_SRCS}
${lib_goose_SRCS}
${lib_sv_SRCS}
${lib_bsd_SRCS}
)
ELSEIF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
set (library_SRCS
${lib_common_SRCS}
${lib_asn1c_SRCS}
${lib_goose_SRCS}
${lib_common_SRCS}
${lib_asn1c_SRCS}
${lib_goose_SRCS}
${lib_sv_SRCS}
${lib_bsd_SRCS}
)
ELSE()
set (library_SRCS
${lib_common_SRCS}
${lib_asn1c_SRCS}
${lib_goose_SRCS}
${lib_common_SRCS}
${lib_asn1c_SRCS}
${lib_goose_SRCS}
${lib_sv_SRCS}
${lib_linux_SRCS}
)
ENDIF(APPLE)

View file

@ -292,7 +292,7 @@ Timestamp_setTimeInSeconds(Timestamp* self, uint32_t secondsSinceEpoch)
void
Timestamp_setTimeInMilliseconds(Timestamp* self, uint64_t millisSinceEpoch)
{
uint32_t timeval32 = (millisSinceEpoch / 1000LL);
uint32_t timeval32 = (uint32_t) (millisSinceEpoch / 1000LL);
uint8_t* timeArray = (uint8_t*) &timeval32;
uint8_t* valueArray = self->val;

View file

@ -327,6 +327,7 @@ IedConnection_getMmsConnection(IedConnection self);
/** SV ASDU contains attribute Security */
#define IEC61850_SV_OPT_SECURITY 16
/** an opaque handle to the instance data of a ClientSVControlBlock object */
typedef struct sClientSVControlBlock* ClientSVControlBlock;
@ -370,7 +371,7 @@ ClientSVControlBlock_isMulticast(ClientSVControlBlock self);
* \return the error code of the last read or write access
*/
IedClientError
ClientSVControlBlock_getLastError(ClientSVControlBlock self);
ClientSVControlBlock_getLastComError(ClientSVControlBlock self);
bool
@ -382,6 +383,9 @@ ClientSVControlBlock_getSvEna(ClientSVControlBlock self);
bool
ClientSVControlBlock_setResv(ClientSVControlBlock self, bool svEna);
bool
ClientSVControlBlock_getResv(ClientSVControlBlock self);
char*
ClientSVControlBlock_getMsvID(ClientSVControlBlock self);

View file

@ -1968,22 +1968,6 @@ MmsValue_getTypeString(MmsValue* self)
}
}
static void
msTimeToGeneralizedTime(uint64_t msTime, uint8_t* buffer, size_t bufferSize)
{
time_t unixTime = (msTime / 1000);
struct tm tmTime;
int msPart = (msTime % 1000);
gmtime_r(&unixTime, &tmTime);
snprintf((char*) buffer, bufferSize, "%04d%02d%02d%02d%02d%02d.%03dZ", tmTime.tm_year + 1900, tmTime.tm_mon + 1,
tmTime.tm_mday, tmTime.tm_hour, tmTime.tm_min, tmTime.tm_sec, msPart);
}
char*
MmsValue_printToBuffer(MmsValue* self, char* buffer, int bufferSize)
{
@ -2022,7 +2006,11 @@ MmsValue_printToBuffer(MmsValue* self, char* buffer, int bufferSize)
break;
case MMS_BINARY_TIME:
msTimeToGeneralizedTime(MmsValue_getBinaryTimeAsUtcMs(self), (uint8_t*) buffer, bufferSize);
{
uint8_t tempBuf[20];
Conversions_msTimeToGeneralizedTime(MmsValue_getBinaryTimeAsUtcMs(self), tempBuf);
snprintf(buffer, bufferSize, "%s", tempBuf);
}
break;
case MMS_BIT_STRING:
@ -2101,7 +2089,11 @@ MmsValue_printToBuffer(MmsValue* self, char* buffer, int bufferSize)
break;
case MMS_UTC_TIME:
msTimeToGeneralizedTime(MmsValue_getUtcTimeInMs(self), (uint8_t*) buffer, bufferSize);
{
uint8_t tempBuf[20];
Conversions_msTimeToGeneralizedTime(MmsValue_getUtcTimeInMs(self), tempBuf);
snprintf(buffer, bufferSize, "%s", tempBuf);
}
break;
case MMS_STRING:

View file

@ -0,0 +1,621 @@
/*
* sv_receiver.c
*
* Copyright 2015 Michael Zillgith
*
* This file is part of libIEC61850.
*
* libIEC61850 is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* libIEC61850 is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with libIEC61850. If not, see <http://www.gnu.org/licenses/>.
*
* See COPYING file for the complete license text.
*/
#include "stack_config.h"
#include "libiec61850_platform_includes.h"
#include "hal_ethernet.h"
#include "hal_thread.h"
#include "ber_decode.h"
#include "ber_encoder.h"
#include "sv_subscriber.h"
#ifndef DEBUG_SV_SUBSCRIBER
#define DEBUG_SV_SUBSCRIBER 1
#endif
#define ETH_BUFFER_LENGTH 1518
#define ETH_P_SV 0x88ba
struct sSVReceiver {
bool running;
bool stopped;
bool checkDestAddr; /* option: check destination address (additionally to AppID) to identify application */
char* interfaceId;
uint8_t* buffer;
EthernetSocket ethSocket;
LinkedList subscriberList;
};
struct sSVSubscriber {
uint8_t ethAddr[6];
uint16_t appId;
SVUpdateListener listener;
void* listenerParameter;
};
struct sSVClientASDU {
char* svId;
uint8_t* smpCnt;
uint8_t* confRev;
uint8_t* smpSynch;
int dataBufferLength;
uint8_t* dataBuffer;
};
SVReceiver
SVReceiver_create(void)
{
SVReceiver self = (SVReceiver) GLOBAL_MALLOC(sizeof(struct sSVReceiver));
if (self != NULL) {
self->subscriberList = LinkedList_create();
self->buffer = (uint8_t*) GLOBAL_MALLOC(ETH_BUFFER_LENGTH);
self->checkDestAddr = false;
}
return self;
}
void
SVReceiver_setInterfaceId(SVReceiver self, const char* interfaceId)
{
if (self->interfaceId != NULL)
GLOBAL_FREEMEM(self->interfaceId);
self->interfaceId = copyString(interfaceId);
}
void
SVReceiver_disableDestAddrCheck(SVReceiver self)
{
self->checkDestAddr = false;
}
void
SVReceiver_addSubscriber(SVReceiver self, SVSubscriber subscriber)
{
LinkedList_add(self->subscriberList, (void*) subscriber);
}
void
SVReceiver_removeSubscriber(SVReceiver self, SVSubscriber subscriber)
{
LinkedList_remove(self->subscriberList, (void*) subscriber);
}
static void
svReceiverLoop(void* threadParameter)
{
SVReceiver self = (SVReceiver) threadParameter;
self->running = true;
self->stopped = false;
SVReceiver_startThreadless(self);
while (self->running) {
if (SVReceiver_tick(self) == false)
Thread_sleep(1);
}
SVReceiver_stopThreadless(self);
self->stopped = true;
}
void
SVReceiver_start(SVReceiver self)
{
Thread thread = Thread_create((ThreadExecutionFunction) svReceiverLoop, (void*) self, true);
if (thread != NULL) {
if (DEBUG_SV_SUBSCRIBER)
printf("SV_SUBSCRIBER: SV receiver started for interface %s\n", self->interfaceId);
Thread_start(thread);
}
else {
if (DEBUG_SV_SUBSCRIBER)
printf("SV_SUBSCRIBER: Starting SV receiver failed for interface %s\n", self->interfaceId);
}
}
void
SVReceiver_stop(SVReceiver self)
{
self->running = false;
while (self->stopped == false)
Thread_sleep(1);
}
void
SVReceiver_destroy(SVReceiver self)
{
LinkedList_destroyDeep(self->subscriberList,
(LinkedListValueDeleteFunction) SVSubscriber_destroy);
GLOBAL_FREEMEM(self->buffer);
GLOBAL_FREEMEM(self);
}
void
SVReceiver_startThreadless(SVReceiver self)
{
if (self->interfaceId == NULL)
self->ethSocket = Ethernet_createSocket(CONFIG_ETHERNET_INTERFACE_ID, NULL);
else
self->ethSocket = Ethernet_createSocket(self->interfaceId, NULL);
Ethernet_setProtocolFilter(self->ethSocket, ETH_P_SV);
self->running = true;
}
void
SVReceiver_stopThreadless(SVReceiver self)
{
Ethernet_destroySocket(self->ethSocket);
self->running = false;
}
static void
parseASDU(SVReceiver self, SVSubscriber subscriber, uint8_t* buffer, int length)
{
int bufPos = 0;
struct sSVClientASDU asdu;
memset(&asdu, 0, sizeof(struct sSVClientASDU));
int svIdLength = 0;
while (bufPos < length) {
int elementLength;
uint8_t tag = buffer[bufPos++];
bufPos = BerDecoder_decodeLength(buffer, &elementLength, bufPos, length);
switch (tag) {
case 0x80:
asdu.svId = (char*) (buffer + bufPos);
svIdLength = elementLength;
break;
case 0x82:
asdu.smpCnt = buffer + bufPos;
break;
case 0x83:
asdu.confRev = buffer + bufPos;
break;
case 0x85:
asdu.smpSynch = buffer + bufPos;
break;
case 0x87:
asdu.dataBuffer = buffer + bufPos;
asdu.dataBufferLength = elementLength;
break;
default: /* ignore unknown tag */
break;
}
bufPos += elementLength;
}
if (asdu.svId != NULL)
asdu.svId[svIdLength] = 0;
/* Call callback handler */
if (subscriber->listener != NULL)
subscriber->listener(subscriber, subscriber->listenerParameter, &asdu);
}
static void
parseSequenceOfASDU(SVReceiver self, SVSubscriber subscriber, uint8_t* buffer, int length)
{
int bufPos = 0;
while (bufPos < length) {
int elementLength;
uint8_t tag = buffer[bufPos++];
bufPos = BerDecoder_decodeLength(buffer, &elementLength, bufPos, length);
switch (tag) {
case 0x30:
parseASDU(self, subscriber, buffer + bufPos, elementLength);
break;
default: /* ignore unknown tag */
break;
}
bufPos += elementLength;
}
}
static void
parseSVPayload(SVReceiver self, SVSubscriber subscriber, uint8_t* buffer, int apduLength)
{
int bufPos = 0;
if (buffer[bufPos++] == 0x60) {
int elementLength;
bufPos = BerDecoder_decodeLength(buffer, &elementLength, bufPos, apduLength);
int svEnd = bufPos + elementLength;
while (bufPos < svEnd) {
uint8_t tag = buffer[bufPos++];
bufPos = BerDecoder_decodeLength(buffer, &elementLength, bufPos, svEnd);
if (bufPos + elementLength > apduLength) {
if (DEBUG_SV_SUBSCRIBER)
printf("SV_SUBSCRIBER: Malformed message: sub element is too large!\n");
goto exit_error;
}
if (bufPos == -1)
goto exit_error;
switch(tag) {
case 0x80: /* noASDU (INTEGER) */
/* ignore */
break;
case 0xa2: /* asdu (SEQUENCE) */
parseSequenceOfASDU(self, subscriber, buffer + bufPos, elementLength);
break;
default: /* ignore unknown tag */
break;
}
bufPos += elementLength;
}
return;
}
exit_error:
if (DEBUG_SV_SUBSCRIBER)
printf("SV_SUBSCRIBER: Invalid SV message!\n");
return;
}
static void
parseSVMessage(SVReceiver self, int numbytes)
{
int bufPos;
bool subscriberFound = false;
uint8_t* buffer = self->buffer;
if (numbytes < 22) return;
/* Ethernet source address */
uint8_t* srcAddr = buffer;
/* skip ethernet addresses */
bufPos = 12;
int headerLength = 14;
/* check for VLAN tag */
if ((buffer[bufPos] == 0x81) && (buffer[bufPos + 1] == 0x00)) {
bufPos += 4; /* skip VLAN tag */
headerLength += 4;
}
/* check for SV Ethertype */
if (buffer[bufPos++] != 0x88)
return;
if (buffer[bufPos++] != 0xba)
return;
uint16_t appId;
appId = buffer[bufPos++] * 0x100;
appId += buffer[bufPos++];
uint16_t length;
length = buffer[bufPos++] * 0x100;
length += buffer[bufPos++];
/* skip reserved fields */
bufPos += 4;
int apduLength = length - 8;
if (numbytes < length + headerLength) {
if (DEBUG_SV_SUBSCRIBER)
printf("SV_SUBSCRIBER: Invalid PDU size\n");
return;
}
if (DEBUG_SV_SUBSCRIBER) {
printf("SV_SUBSCRIBER: SV message: ----------------\n");
printf("SV_SUBSCRIBER: APPID: %u\n", appId);
printf("SV_SUBSCRIBER: LENGTH: %u\n", length);
printf("SV_SUBSCRIBER: APDU length: %i\n", apduLength);
}
/* check if there is a matching subscriber */
LinkedList element = LinkedList_getNext(self->subscriberList);
SVSubscriber subscriber;
while (element != NULL) {
subscriber = (SVSubscriber) LinkedList_getData(element);
if (subscriber->appId == appId) {
if (self->checkDestAddr) {
if (memcmp(srcAddr, subscriber->ethAddr, 6) == 0) {
subscriberFound = true;
break;
}
else
if (DEBUG_SV_SUBSCRIBER)
printf("SV_SUBSCRIBER: Checking ethernet src address failed!\n");
}
else {
subscriberFound = true;
break;
}
}
element = LinkedList_getNext(element);
}
if (subscriberFound)
parseSVPayload(self, subscriber, buffer + bufPos, apduLength);
else {
if (DEBUG_SV_SUBSCRIBER)
printf("SV_SUBSCRIBER: SV message ignored due to unknown APPID value\n");
}
}
bool
SVReceiver_tick(SVReceiver self)
{
int packetSize = Ethernet_receivePacket(self->ethSocket, self->buffer, ETH_BUFFER_LENGTH);
if (packetSize > 0) {
parseSVMessage(self, packetSize);
return true;
}
else
return false;
}
SVSubscriber
SVSubscriber_create(const uint8_t* ethAddr, uint16_t appID)
{
SVSubscriber self = (SVSubscriber) GLOBAL_CALLOC(1, sizeof(struct sSVSubscriber));
if (self != NULL) {
self->appId = appID;
if (ethAddr != NULL)
memcpy(self->ethAddr, ethAddr, 6);
}
return self;
}
void
SVSubscriber_destroy(SVSubscriber self)
{
if (self != NULL)
GLOBAL_FREEMEM(self);
}
void
SVSubscriber_setListener(SVSubscriber self, SVUpdateListener listener, void* parameter)
{
self->listener = listener;
self->listenerParameter = parameter;
}
uint16_t
SVClientASDU_getSmpCnt(SVClientASDU self)
{
uint16_t retVal;
uint8_t* valBytes = (uint8_t*) &retVal;
#if (ORDER_LITTLE_ENDIAN == 1)
valBytes[0] = self->smpCnt[1];
valBytes[1] = self->smpCnt[0];
#else
valBytes[0] = self->smpCnt[0];
valBytes[1] = self->smpCnt[1];
#endif
return retVal;
}
const char*
SVClientASDU_getSvId(SVClientASDU self)
{
return self->svId;
}
uint32_t
SVClientASDU_getConfRev(SVClientASDU self)
{
uint32_t retVal = *((uint32_t*) (self->confRev));
#if (ORDER_LITTLE_ENDIAN == 1)
uint8_t* buf = (uint8_t*) (&retVal);
BerEncoder_revertByteOrder(buf, 4);
#endif
return retVal;
}
int8_t
SVClientASDU_getINT8(SVClientASDU self, int index)
{
int8_t retVal = *((int8_t*) (self->dataBuffer + index));
return retVal;
}
int16_t
SVClientASDU_getINT16(SVClientASDU self, int index)
{
int16_t retVal = *((int16_t*) (self->dataBuffer + index));
#if (ORDER_LITTLE_ENDIAN == 1)
uint8_t* buf = (uint8_t*) (&retVal);
BerEncoder_revertByteOrder(buf, 2);
#endif
return retVal;
}
int32_t
SVClientASDU_getINT32(SVClientASDU self, int index)
{
int32_t retVal = *((int32_t*) (self->dataBuffer + index));
#if (ORDER_LITTLE_ENDIAN == 1)
uint8_t* buf = (uint8_t*) (&retVal);
BerEncoder_revertByteOrder(buf, 4);
#endif
return retVal;
}
uint8_t
SVClientASDU_getINT8U(SVClientASDU self, int index)
{
uint8_t retVal = *((uint8_t*) (self->dataBuffer + index));
return retVal;
}
uint16_t
SVClientASDU_getINT16U(SVClientASDU self, int index)
{
uint16_t retVal = *((uint16_t*) (self->dataBuffer + index));
#if (ORDER_LITTLE_ENDIAN == 1)
uint8_t* buf = (uint8_t*) (&retVal);
BerEncoder_revertByteOrder(buf, 2);
#endif
return retVal;
}
uint32_t
SVClientASDU_getINT32U(SVClientASDU self, int index)
{
uint32_t retVal = *((uint32_t*) (self->dataBuffer + index));
#if (ORDER_LITTLE_ENDIAN == 1)
uint8_t* buf = (uint8_t*) (&retVal);
BerEncoder_revertByteOrder(buf, 4);
#endif
return retVal;
}
float
SVClientASDU_getFLOAT32(SVClientASDU self, int index)
{
float retVal = *((float*) (self->dataBuffer + index));
#if (ORDER_LITTLE_ENDIAN == 1)
uint8_t* buf = (uint8_t*) (&retVal);
BerEncoder_revertByteOrder(buf, 4);
#endif
return retVal;
}
double
SVClientASDU_getFLOAT64(SVClientASDU self, int index)
{
double retVal = *((double*) (self->dataBuffer + index));
#if (ORDER_LITTLE_ENDIAN == 1)
uint8_t* buf = (uint8_t*) (&retVal);
BerEncoder_revertByteOrder(buf, 8);
#endif
return retVal;
}
int
SVClientASDU_getDataSize(SVClientASDU self)
{
return self->dataBufferLength;
}

View file

@ -0,0 +1,326 @@
/*
* sv_subscriber_api.h
*
* Copyright 2015 Michael Zillgith
*
* This file is part of libIEC61850.
*
* libIEC61850 is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* libIEC61850 is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with libIEC61850. If not, see <http://www.gnu.org/licenses/>.
*
* See COPYING file for the complete license text.
*/
#ifndef SAMPLED_VALUES_SV_SUBSCRIBER_H_
#define SAMPLED_VALUES_SV_SUBSCRIBER_H_
#include "libiec61850_common_api.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* \brief opaque handle to a SV ASDU (Application service data unit) instance.
*
* Sampled Values (SV) ASDUs (application service data units) are the basic units for
* sampled value data. Each ASDU represents a single sample consisting of multiple measurement
* values with a single dedicated timestamp.
*
* NOTE: SVClientASDU are statically allocated and are only valid inside of the SVUpdateListener
* function when called by the library. If you need the data contained in the ASDU elsewhere
* you have to copy and store the data by yourself!
*/
typedef struct sSVClientASDU* SVClientASDU;
/**
* \brief opaque handle to a SV subscriber instance
*
* A subscriber is an instance associated with a single stream of measurement data. It is identified
* by the Ethernet destination address, the appID value (both are on SV message level) and the svID value
* that is part of each ASDU (SVClientASDU object).
*/
typedef struct sSVSubscriber* SVSubscriber;
/**
* \brief Callback function for received SV messages
*
* Will be called for each ASDU contained in a SV message!
*
* \param subscriber the subscriber that was associated with the received SV message
* \param parameter a user provided parameter that is simply passed to the callback
* \param asdu SV ASDU data structure. This structure is only valid inside of the callback function
*/
typedef void (*SVUpdateListener)(SVSubscriber subscriber, void* parameter, SVClientASDU asdu);
/**
* \brief opaque handle to a SV receiver instance
*/
typedef struct sSVReceiver* SVReceiver;
/**
* \brief Create a new SV receiver instance.
*
* A receiver is responsible for processing all SV message for a single Ethernet interface.
* In order to process messages from multiple Ethernet interfaces you have to create multiple
* instances.
*
* \return the newly created receiver instance
*/
SVReceiver
SVReceiver_create(void);
/**
* \brief Disable check for destination address of the received SV messages
*
* Per default both the appID and the destination address are checked to identify
* relevant SV messages. Destination address check can be disabled for performance
* reason when the appIDs are unique in the local system.
*
* \param self the receiver instance reference
*/
void
SVReceiver_disableDestAddrCheck(SVReceiver self);
/**
* \brief Set the Ethernet interface ID for the receiver instance
*
* Use this function if you want to use a different interface than
* the default interface set by CONFIG_ETHERNET_INTERFACE_ID (stack_config.h)
* NOTE: This function has to be called before calling SVReceiver_start.
*
* \param self the receiver instance reference
* \param interfaceId the Ethernet interface id (platform specific e.g. eth0 for linux).
*/
void
SVReceiver_setInterfaceId(SVReceiver self, const char* interfaceId);
/**
* \brief Add a subscriber instance to the receiver
*
* The given subscriber will be connected to the receiver instance.
*
* \param self the receiver instance reference
* \param subscriber the subscriber instance to connect
*/
void
SVReceiver_addSubscriber(SVReceiver self, SVSubscriber subscriber);
/**
* \brief Disconnect subscriber and receiver
*
* \param self the receiver instance reference
* \param subscriber the subscriber instance to disconnect
*/
void
SVReceiver_removeSubscriber(SVReceiver self, SVSubscriber subscriber);
/**
* \brief Receiver starts listening for SV messages.
*
* NOTE: This call will start a new background thread.
*
* \param self the receiver instance reference
*/
void
SVReceiver_start(SVReceiver self);
/**
* \brief Receiver stops listening for SV messages
*
* \param self the receiver instance reference
*/
void
SVReceiver_stop(SVReceiver self);
/**
* \brief Destroy receiver instance (cleanup resources)
*
* \param self the receiver instance reference
*/
void
SVReceiver_destroy(SVReceiver self);
/***************************************
* Functions for non-threaded operation
***************************************/
void
SVReceiver_startThreadless(SVReceiver self);
void
SVReceiver_stopThreadless(SVReceiver self);
bool
SVReceiver_tick(SVReceiver self);
/*
* Subscriber
*/
SVSubscriber
SVSubscriber_create(const uint8_t* ethAddr, uint16_t appID);
/**
* \brief Set a callback handler to process received SV messages
*
* If the received SV message contains multiple ASDUs (application service data units) the callback
* function will be called for each ASDU separately. If a callback function has already been installed
* for this SVSubscriber object the old callback will be replaced.
*
* \param self The subscriber object
* \param listener the callback function to install
* \param a user provided parameter that is provided to the callback function
*
*/
void
SVSubscriber_setListener(SVSubscriber self, SVUpdateListener listener, void* parameter);
void
SVSubscriber_destroy(SVSubscriber self);
/*************************************************************************
* SVClientASDU object methods
**************************************************************************/
/**
* \brief return the SmpCnt value included in the SV ASDU
*
* The SmpCnt (sample counter) is increased for each ASDU to
* identify the sample.
*
* \param self ASDU object instance
*/
uint16_t
SVClientASDU_getSmpCnt(SVClientASDU self);
/**
* \brief return the SvID value included in the SV ASDU
*
* \param self ASDU object instance
*/
const char*
SVClientASDU_getSvId(SVClientASDU self);
/**
* \brief return the ConfRev value included in the SV ASDU
*
* \param self ASDU object instance
*/
uint32_t
SVClientASDU_getConfRev(SVClientASDU self);
/**
* \brief Get an INT8 data value in the data part of the ASDU
*
* \param self ASDU object instance
* \param index the index (byte position of the start) of the data in the data part
*
* \return SV data
*/
int8_t
SVClientASDU_getINT8(SVClientASDU self, int index);
/**
* \brief Get an INT16 data value in the data part of the ASDU
*
* \param self ASDU object instance
* \param index the index (byte position of the start) of the data in the data part
*
* \return SV data
*/
int16_t
SVClientASDU_getINT16(SVClientASDU self, int index);
/**
* \brief Get an INT32 data value in the data part of the ASDU
*
* \param self ASDU object instance
* \param index the index (byte position of the start) of the data in the data part
*
* \return SV data
*/
int32_t
SVClientASDU_getINT32(SVClientASDU self, int index);
/**
* \brief Get an INT8U data value in the data part of the ASDU
*
* \param self ASDU object instance
* \param index the index (byte position of the start) of the data in the data part
*
* \return SV data
*/
uint8_t
SVClientASDU_getINT8U(SVClientASDU self, int index);
/**
* \brief Get an INT16U data value in the data part of the ASDU
*
* \param self ASDU object instance
* \param index the index (byte position of the start) of the data in the data part
*
* \return SV data
*/
uint16_t
SVClientASDU_getINT16U(SVClientASDU self, int index);
/**
* \brief Get an INT32U data value in the data part of the ASDU
*
* \param self ASDU object instance
* \param index the index (byte position of the start) of the data in the data part
*
* \return SV data
*/
uint32_t
SVClientASDU_getINT32U(SVClientASDU self, int index);
/**
* \brief Get an FLOAT32 data value in the data part of the ASDU
*
* \param self ASDU object instance
* \param index the index (byte position of the start) of the data in the data part
*
* \return SV data
*/
float
SVClientASDU_getFLOAT32(SVClientASDU self, int index);
/**
* \brief Get an FLOAT64 data value in the data part of the ASDU
*
* \param self ASDU object instance
* \param index the index (byte position of the start) of the data in the data part
*
* \return SV data
*/
double
SVClientASDU_getFLOAT64(SVClientASDU self, int index);
/**
* \brief Returns the size of the data part of the ASDU
*
* \param self ASDU object instance
*
* \return size of the ASDU data part in bytes.
*/
int
SVClientASDU_getDataSize(SVClientASDU self);
#ifdef __cplusplus
}
#endif
#endif /* SAMPLED_VALUES_SV_SUBSCRIBER_ */

View file

@ -498,4 +498,19 @@ EXPORTS
SVControlBlock_create
SVControlBlock_addPhyComAddress
GSEControlBlock_addPhyComAddress
GooseSubscriber_getConfRev
ClientSVControlBlock_create
ClientSVControlBlock_destroy
ClientSVControlBlock_isMulticast
ClientSVControlBlock_getLastComError
ClientSVControlBlock_setSvEna
ClientSVControlBlock_getSvEna
ClientSVControlBlock_setResv
ClientSVControlBlock_getResv
ClientSVControlBlock_getMsvID
ClientSVControlBlock_getDatSet
ClientSVControlBlock_getConfRev
ClientSVControlBlock_getSmpRate
ClientSVControlBlock_getDstAddress
ClientSVControlBlock_getOptFlds
ClientSVControlBlock_getSmpMod
ClientSVControlBlock_getNoASDU

View file

@ -522,4 +522,45 @@ EXPORTS
SVControlBlock_create
SVControlBlock_addPhyComAddress
GSEControlBlock_addPhyComAddress
GooseSubscriber_getConfRev
GooseSubscriber_getConfRev
SVReceiver_create
SVReceiver_setInterfaceId
SVReceiver_addSubscriber
SVReceiver_removeSubscriber
SVReceiver_start
SVReceiver_stop
SVReceiver_destroy
SVReceiver_startThreadless
SVReceiver_stopThreadless
SVReceiver_tick
SVSubscriber_create
SVSubscriber_setListener
SVSubscriber_destroy
SVClientASDU_getSmpCnt
SVClientASDU_getSvId
SVClientASDU_getConfRev
SVClientASDU_getINT8
SVClientASDU_getINT16
SVClientASDU_getINT32
SVClientASDU_getINT8U
SVClientASDU_getINT16U
SVClientASDU_getINT32U
SVClientASDU_getFLOAT32
SVClientASDU_getFLOAT64
SVClientASDU_getDataSize
ClientSVControlBlock_create
ClientSVControlBlock_destroy
ClientSVControlBlock_isMulticast
ClientSVControlBlock_getLastComError
ClientSVControlBlock_setSvEna
ClientSVControlBlock_getSvEna
ClientSVControlBlock_setResv
ClientSVControlBlock_getResv
ClientSVControlBlock_getMsvID
ClientSVControlBlock_getDatSet
ClientSVControlBlock_getConfRev
ClientSVControlBlock_getSmpRate
ClientSVControlBlock_getDstAddress
ClientSVControlBlock_getOptFlds
ClientSVControlBlock_getSmpMod
ClientSVControlBlock_getNoASDU