- implemente ControlObjectClient_setTestMode function, also for C# wrapper

This commit is contained in:
Michael Zillgith 2016-09-08 18:23:20 +02:00
parent 372df34018
commit d81e9e1c19
30 changed files with 7106 additions and 151 deletions

View file

@ -1,3 +1,7 @@
Changes to version 0.9.3
------------------------
- .NET API: server side API
Changes to version 0.9.2.1
--------------------------
- server: fixed some memory access problens in dynamic model LCB

View file

@ -72,7 +72,12 @@
</DOI>
</LN>
<LN lnClass="GAPC" lnType="TIM_GAPC" inst="1" prefix="TIM_" />
<LN lnClass="GAPC" lnType="TIM_GAPC" inst="1" prefix="TIM_" />
<LN lnClass="FSCH" lnType="FSCH_60S" inst="1" prefix="T60S_" />
<LN lnClass="FSCH" lnType="FSCH_60S" inst="2" prefix="T60S_" />
<LN lnClass="FSCC" lnType="FSCC" inst="1" prefix="GGIO_" />
</LDevice>
</Server>
@ -125,6 +130,159 @@
<DO name="OpCntRs" type="INC_OpCntRs" />
</LNodeType>
<!-- Schedule type for 60s on/off controls -->
<LNodeType id="FSCH_60S" lnClass="FSCH">
<DO name="Beh" type="ENS_Beh" desc="Enumerated status" />
<DO name="SchdSt" type="ENS_ScheduleStateKind" desc="schedule state"/>
<DO name="SchdEntr" type="INS_0" desc="current schedule entry of the running schedule"/>
<DO name="ValSPS" type="SPS_0" desc="current value determined by the schedule" />
<DO name="VldReq" type="SPC_0" desc="validate request"/>
<DO name="EnaReq" type="SPC_0" desc="enable request"/>
<DO name="EdtReq" type="SPC_0" desc="enable request"/>
<DO name="DsaReq" type="SPC_0" desc="disable request"/>
<DO name="SchdPrio" type="ING" desc="schedule priority"/>
<DO name="NumEntr" type="ING" desc="number of valid entries"/>
<DO name="SchdIntv" type="ING" desc="the schedule interval duration in time entities as specified in the unit"/>
<DO name="ValSPG1" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG2" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG3" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG4" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG5" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG6" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG7" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG8" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG9" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG10" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG11" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG12" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG13" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG14" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG15" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG16" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG17" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG18" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG19" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG20" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG21" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG22" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG23" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG24" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG25" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG26" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG27" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG28" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG29" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG30" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG31" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG32" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG33" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG34" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG35" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG36" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG37" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG38" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG39" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG40" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG41" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG42" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG43" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG44" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG45" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG46" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG47" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG48" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG49" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG50" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG51" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG52" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG53" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG54" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG55" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG56" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG57" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG58" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG59" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="ValSPG60" type="SPG_0" desc="the SPG scheduled values (current value as SPS)"/>
<DO name="StrTm" type="TSG_0" desc="start time of the schedule in UTC time" />
<DO name="IntvPer" type="ING" desc="the periodicity interval duration in entities as specified in IntvTyp; if the value is 0, the schedule shall not be repeated periodically"/>
<DO name="IntvTyp" type="ENG_ScheduleIntervalKind" desc="interval type (units) to define the periodicity"/>
<DO name="SchdReuse" type="SPG_0" desc=""/>
</LNodeType>
<LNodeType id="FSCC" lnClass="FSCH">
<DO name="Beh" type="ENS_Beh" desc="Enumerated status" />
<DO name="ActSchdRef" type="ORS_0" desc="object reference of active schedule"/>
<DO name="CtlEnt" type="ORG_0" desc="object reference to the entity controlled by the schedule"/>
<DO name="Schd1" type="ORG_0" desc="object reference to schedule 1"/>
<DO name="Schd2" type="ORG_0" desc="object reference to schedule 2"/>
</LNodeType>
<DOType cdc="ORG" id="ORG_0">
<DA name="setSrcRef" fc="SP" dchg="true" bType="VisString129" />
</DOType>
<DOType cdc="ORS" id="ORS_0">
<DA name="stVal" fc="ST" dchg="true" bType="VisString129" />
<DA name="q" bType="Quality" fc="ST" qchg="true" />
<DA name="t" bType="Timestamp" fc="ST" />
</DOType>
<DOType cdc="ENS" desc="Enumerated status" id="ENS_ScheduleStateKind">
<DA bType="Enum" dchg="true" fc="ST" name="stVal" type="ScheduleStateKind" />
<DA bType="Quality" fc="ST" name="q" qchg="true" />
<DA bType="Timestamp" fc="ST" name="t" />
</DOType>
<DOType cdc="INS" desc="Integer status" id="INS_0">
<DA bType="INT32" dchg="true" fc="ST" name="stVal" />
<DA bType="Quality" fc="ST" name="q" qchg="true" />
<DA bType="Timestamp" fc="ST" name="t" />
</DOType>
<DOType cdc="SPS" desc="Single point status" id="SPS_0">
<DA bType="BOOLEAN" dchg="true" fc="ST" name="stVal" />
<DA bType="Quality" fc="ST" name="q" qchg="true" />
<DA bType="Timestamp" fc="ST" name="t" />
</DOType>
<DOType id="SPC_0" cdc="SPC">
<DA name="stVal" bType="BOOLEAN" fc="ST" dchg="true" />
<DA name="q" bType="Quality" fc="ST" qchg="true" />
<DA name="Oper" type="SPCOperate_1" bType="Struct" fc="CO" />
<DA name="ctlModel" type="CtlModels" bType="Enum" fc="CF" />
<DA name="t" bType="Timestamp" fc="ST" />
</DOType>
<DOType id="ING" cdc="ING">
<DA name="setVal" bType="INT32" fc="SP" dchg="true" />
</DOType>
<DOType cdc="SPG" id="SPG_0">
<DA name="setVal" bType="BOOLEAN" fc="SG" dchg="true" />
</DOType>
<DOType cdc="TSG" id="TSG_0">
<DA name="setTm" bType="Timestamp" fc="SP" dchg="true" />
<DA name="setCal" bType="Struct" type="CalendarTime" fc="SP" dchg="true" />
</DOType>
<DOType id="ENG_ScheduleIntervalKind" cdc="ENG">
<DA name="setVal" bType="Enum" type="ScheduleIntervalKind" fc="SP"
dchg="true" />
</DOType>
<DOType id="ING_EXT" cdc="ING">
<DA name="setVal" bType="INT32" fc="SP" dchg="true" />
<DA name="dataNs" bType="VisString255" fc="EX">
@ -274,6 +432,17 @@
<BDA name="Test" bType="BOOLEAN" />
<BDA name="Check" bType="Check" />
</DAType>
<DAType id="CalendarTime">
<BDA name="occ" bType="INT16U" />
<BDA name="occType" bType="Enum" type="OccurenceKind" />
<BDA name="occPer" bType="Enum" type="PeriodKind" />
<BDA name="weekDay" bType="Enum" type="WeekdayKind" />
<BDA name="month" bType="Enum" type="MonthKind" />
<BDA name="day" bType="INT8U" />
<BDA name="hr" bType="INT8U" />
<BDA name="mn" bType="INT8U" />
</DAType>
<EnumType id="Beh">
<EnumVal ord="1">on</EnumVal>
@ -312,5 +481,66 @@
<EnumVal ord="7">maintenance</EnumVal>
<EnumVal ord="8">process</EnumVal>
</EnumType>
<EnumType id="ScheduleStateKind">
<EnumVal ord="1">not-ready</EnumVal>
<EnumVal ord="2">validated</EnumVal>
<EnumVal ord="3">ready</EnumVal>
<EnumVal ord="4">running</EnumVal>
</EnumType>
<EnumType id="OccurenceKind">
<EnumVal ord="0">Time</EnumVal>
<EnumVal ord="1">WeekDay</EnumVal>
<EnumVal ord="2">WeekOfYear</EnumVal>
<EnumVal ord="3">DayOfMonth</EnumVal>
<EnumVal ord="4">DayOfYear</EnumVal>
</EnumType>
<EnumType id="PeriodKind">
<EnumVal ord="0">Hour</EnumVal>
<EnumVal ord="1">Day</EnumVal>
<EnumVal ord="2">Week</EnumVal>
<EnumVal ord="3">Month</EnumVal>
<EnumVal ord="4">Year</EnumVal>
</EnumType>
<EnumType id="WeekdayKind">
<EnumVal ord="0">reserved</EnumVal>
<EnumVal ord="1">Monday</EnumVal>
<EnumVal ord="2">Tuesday</EnumVal>
<EnumVal ord="3">Wednesday</EnumVal>
<EnumVal ord="4">Thursday</EnumVal>
<EnumVal ord="5">Friday</EnumVal>
<EnumVal ord="6">Saturday</EnumVal>
<EnumVal ord="7">Sunday</EnumVal>
</EnumType>
<EnumType id="MonthKind">
<EnumVal ord="0">reserved</EnumVal>
<EnumVal ord="1">January</EnumVal>
<EnumVal ord="2">February</EnumVal>
<EnumVal ord="3">March</EnumVal>
<EnumVal ord="4">April</EnumVal>
<EnumVal ord="5">May</EnumVal>
<EnumVal ord="6">June</EnumVal>
<EnumVal ord="7">July</EnumVal>
<EnumVal ord="8">August</EnumVal>
<EnumVal ord="9">September</EnumVal>
<EnumVal ord="10">October</EnumVal>
<EnumVal ord="11">November</EnumVal>
<EnumVal ord="12">December</EnumVal>
</EnumType>
<EnumType id="ScheduleIntervalKind">
<EnumVal ord="1">MS</EnumVal>
<EnumVal ord="2">PER_CYCLE</EnumVal>
<EnumVal ord="3">CYCLE</EnumVal>
<EnumVal ord="4">DAY</EnumVal>
<EnumVal ord="5">WEEK</EnumVal>
<EnumVal ord="6">MONTH</EnumVal>
<EnumVal ord="7">YEAR</EnumVal>
<EnumVal ord="8">EXTERNAL</EnumVal>
</EnumType>
</DataTypeTemplates>
</SCL>

File diff suppressed because it is too large Load diff

View file

@ -1,7 +1,7 @@
/*
* static_model.h
*
* automatically generated from beagle_demo.iid
* automatically generated from beagle_demo.icd
*/
#ifndef STATIC_MODEL_H_
@ -201,6 +201,453 @@ extern DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_T;
extern DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_Test;
extern DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_Check;
extern DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_ctlModel;
extern LogicalNode iedModel_GenericIO_T60S_FSCH1;
extern DataObject iedModel_GenericIO_T60S_FSCH1_Beh;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_Beh_stVal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_Beh_q;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_Beh_t;
extern DataObject iedModel_GenericIO_T60S_FSCH1_SchdSt;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdSt_stVal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdSt_q;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdSt_t;
extern DataObject iedModel_GenericIO_T60S_FSCH1_SchdEntr;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdEntr_stVal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdEntr_q;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdEntr_t;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPS;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPS_stVal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPS_q;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPS_t;
extern DataObject iedModel_GenericIO_T60S_FSCH1_VldReq;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_stVal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_q;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_origin;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_T;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_Test;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_Check;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_ctlModel;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_VldReq_t;
extern DataObject iedModel_GenericIO_T60S_FSCH1_EnaReq;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_stVal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_q;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_origin;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_T;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_Test;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_Check;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_ctlModel;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EnaReq_t;
extern DataObject iedModel_GenericIO_T60S_FSCH1_EdtReq;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_stVal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_q;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_origin;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_T;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_Test;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_Check;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_ctlModel;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_EdtReq_t;
extern DataObject iedModel_GenericIO_T60S_FSCH1_DsaReq;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_stVal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_q;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_origin;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_T;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_Test;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_Check;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_ctlModel;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_DsaReq_t;
extern DataObject iedModel_GenericIO_T60S_FSCH1_SchdPrio;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdPrio_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_NumEntr;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_NumEntr_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_SchdIntv;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdIntv_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG1;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG1_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG2;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG2_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG3;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG3_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG4;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG4_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG5;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG5_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG6;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG6_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG7;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG7_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG8;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG8_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG9;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG9_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG10;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG10_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG11;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG11_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG12;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG12_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG13;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG13_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG14;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG14_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG15;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG15_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG16;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG16_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG17;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG17_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG18;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG18_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG19;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG19_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG20;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG20_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG21;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG21_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG22;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG22_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG23;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG23_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG24;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG24_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG25;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG25_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG26;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG26_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG27;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG27_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG28;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG28_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG29;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG29_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG30;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG30_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG31;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG31_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG32;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG32_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG33;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG33_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG34;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG34_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG35;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG35_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG36;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG36_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG37;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG37_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG38;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG38_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG39;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG39_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG40;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG40_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG41;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG41_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG42;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG42_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG43;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG43_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG44;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG44_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG45;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG45_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG46;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG46_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG47;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG47_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG48;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG48_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG49;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG49_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG50;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG50_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG51;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG51_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG52;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG52_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG53;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG53_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG54;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG54_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG55;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG55_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG56;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG56_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG57;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG57_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG58;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG58_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG59;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG59_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_ValSPG60;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_ValSPG60_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_StrTm;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setTm;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_occ;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_occType;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_occPer;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_weekDay;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_month;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_day;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_hr;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_mn;
extern DataObject iedModel_GenericIO_T60S_FSCH1_IntvPer;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_IntvPer_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_IntvTyp;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_IntvTyp_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH1_SchdReuse;
extern DataAttribute iedModel_GenericIO_T60S_FSCH1_SchdReuse_setVal;
extern LogicalNode iedModel_GenericIO_T60S_FSCH2;
extern DataObject iedModel_GenericIO_T60S_FSCH2_Beh;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_Beh_stVal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_Beh_q;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_Beh_t;
extern DataObject iedModel_GenericIO_T60S_FSCH2_SchdSt;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdSt_stVal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdSt_q;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdSt_t;
extern DataObject iedModel_GenericIO_T60S_FSCH2_SchdEntr;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdEntr_stVal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdEntr_q;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdEntr_t;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPS;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPS_stVal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPS_q;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPS_t;
extern DataObject iedModel_GenericIO_T60S_FSCH2_VldReq;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_stVal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_q;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_origin;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_T;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_Test;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_Check;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_ctlModel;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_VldReq_t;
extern DataObject iedModel_GenericIO_T60S_FSCH2_EnaReq;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_stVal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_q;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_origin;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_T;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_Test;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_Check;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_ctlModel;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EnaReq_t;
extern DataObject iedModel_GenericIO_T60S_FSCH2_EdtReq;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_stVal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_q;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_origin;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_T;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_Test;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_Check;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_ctlModel;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_EdtReq_t;
extern DataObject iedModel_GenericIO_T60S_FSCH2_DsaReq;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_stVal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_q;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_ctlVal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_origin;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_origin_orCat;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_origin_orIdent;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_ctlNum;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_T;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_Test;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_Check;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_ctlModel;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_DsaReq_t;
extern DataObject iedModel_GenericIO_T60S_FSCH2_SchdPrio;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdPrio_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_NumEntr;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_NumEntr_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_SchdIntv;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdIntv_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG1;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG1_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG2;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG2_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG3;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG3_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG4;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG4_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG5;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG5_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG6;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG6_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG7;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG7_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG8;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG8_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG9;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG9_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG10;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG10_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG11;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG11_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG12;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG12_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG13;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG13_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG14;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG14_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG15;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG15_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG16;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG16_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG17;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG17_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG18;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG18_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG19;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG19_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG20;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG20_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG21;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG21_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG22;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG22_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG23;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG23_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG24;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG24_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG25;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG25_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG26;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG26_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG27;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG27_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG28;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG28_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG29;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG29_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG30;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG30_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG31;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG31_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG32;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG32_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG33;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG33_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG34;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG34_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG35;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG35_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG36;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG36_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG37;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG37_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG38;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG38_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG39;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG39_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG40;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG40_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG41;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG41_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG42;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG42_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG43;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG43_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG44;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG44_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG45;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG45_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG46;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG46_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG47;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG47_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG48;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG48_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG49;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG49_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG50;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG50_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG51;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG51_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG52;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG52_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG53;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG53_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG54;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG54_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG55;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG55_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG56;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG56_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG57;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG57_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG58;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG58_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG59;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG59_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_ValSPG60;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_ValSPG60_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_StrTm;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setTm;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_occ;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_occType;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_occPer;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_weekDay;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_month;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_day;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_hr;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_mn;
extern DataObject iedModel_GenericIO_T60S_FSCH2_IntvPer;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_IntvPer_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_IntvTyp;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_IntvTyp_setVal;
extern DataObject iedModel_GenericIO_T60S_FSCH2_SchdReuse;
extern DataAttribute iedModel_GenericIO_T60S_FSCH2_SchdReuse_setVal;
extern LogicalNode iedModel_GenericIO_GGIO_FSCC1;
extern DataObject iedModel_GenericIO_GGIO_FSCC1_Beh;
extern DataAttribute iedModel_GenericIO_GGIO_FSCC1_Beh_stVal;
extern DataAttribute iedModel_GenericIO_GGIO_FSCC1_Beh_q;
extern DataAttribute iedModel_GenericIO_GGIO_FSCC1_Beh_t;
extern DataObject iedModel_GenericIO_GGIO_FSCC1_ActSchdRef;
extern DataAttribute iedModel_GenericIO_GGIO_FSCC1_ActSchdRef_stVal;
extern DataAttribute iedModel_GenericIO_GGIO_FSCC1_ActSchdRef_q;
extern DataAttribute iedModel_GenericIO_GGIO_FSCC1_ActSchdRef_t;
extern DataObject iedModel_GenericIO_GGIO_FSCC1_CtlEnt;
extern DataAttribute iedModel_GenericIO_GGIO_FSCC1_CtlEnt_setSrcRef;
extern DataObject iedModel_GenericIO_GGIO_FSCC1_Schd1;
extern DataAttribute iedModel_GenericIO_GGIO_FSCC1_Schd1_setSrcRef;
extern DataObject iedModel_GenericIO_GGIO_FSCC1_Schd2;
extern DataAttribute iedModel_GenericIO_GGIO_FSCC1_Schd2_setSrcRef;
@ -394,6 +841,453 @@ extern DataAttribute iedModel_GenericIO_TIM_GAPC1_OpCntRs_ctlModel;
#define IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs_Oper_Test (&iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_Test)
#define IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs_Oper_Check (&iedModel_GenericIO_TIM_GAPC1_OpCntRs_Oper_Check)
#define IEDMODEL_GenericIO_TIM_GAPC1_OpCntRs_ctlModel (&iedModel_GenericIO_TIM_GAPC1_OpCntRs_ctlModel)
#define IEDMODEL_GenericIO_T60S_FSCH1 (&iedModel_GenericIO_T60S_FSCH1)
#define IEDMODEL_GenericIO_T60S_FSCH1_Beh (&iedModel_GenericIO_T60S_FSCH1_Beh)
#define IEDMODEL_GenericIO_T60S_FSCH1_Beh_stVal (&iedModel_GenericIO_T60S_FSCH1_Beh_stVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_Beh_q (&iedModel_GenericIO_T60S_FSCH1_Beh_q)
#define IEDMODEL_GenericIO_T60S_FSCH1_Beh_t (&iedModel_GenericIO_T60S_FSCH1_Beh_t)
#define IEDMODEL_GenericIO_T60S_FSCH1_SchdSt (&iedModel_GenericIO_T60S_FSCH1_SchdSt)
#define IEDMODEL_GenericIO_T60S_FSCH1_SchdSt_stVal (&iedModel_GenericIO_T60S_FSCH1_SchdSt_stVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_SchdSt_q (&iedModel_GenericIO_T60S_FSCH1_SchdSt_q)
#define IEDMODEL_GenericIO_T60S_FSCH1_SchdSt_t (&iedModel_GenericIO_T60S_FSCH1_SchdSt_t)
#define IEDMODEL_GenericIO_T60S_FSCH1_SchdEntr (&iedModel_GenericIO_T60S_FSCH1_SchdEntr)
#define IEDMODEL_GenericIO_T60S_FSCH1_SchdEntr_stVal (&iedModel_GenericIO_T60S_FSCH1_SchdEntr_stVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_SchdEntr_q (&iedModel_GenericIO_T60S_FSCH1_SchdEntr_q)
#define IEDMODEL_GenericIO_T60S_FSCH1_SchdEntr_t (&iedModel_GenericIO_T60S_FSCH1_SchdEntr_t)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPS (&iedModel_GenericIO_T60S_FSCH1_ValSPS)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPS_stVal (&iedModel_GenericIO_T60S_FSCH1_ValSPS_stVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPS_q (&iedModel_GenericIO_T60S_FSCH1_ValSPS_q)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPS_t (&iedModel_GenericIO_T60S_FSCH1_ValSPS_t)
#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq (&iedModel_GenericIO_T60S_FSCH1_VldReq)
#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_stVal (&iedModel_GenericIO_T60S_FSCH1_VldReq_stVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_q (&iedModel_GenericIO_T60S_FSCH1_VldReq_q)
#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_Oper (&iedModel_GenericIO_T60S_FSCH1_VldReq_Oper)
#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_Oper_ctlVal (&iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_ctlVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_Oper_origin (&iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_origin)
#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_Oper_origin_orCat (&iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_origin_orCat)
#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_Oper_origin_orIdent (&iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_origin_orIdent)
#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_Oper_ctlNum (&iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_ctlNum)
#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_Oper_T (&iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_T)
#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_Oper_Test (&iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_Test)
#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_Oper_Check (&iedModel_GenericIO_T60S_FSCH1_VldReq_Oper_Check)
#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_ctlModel (&iedModel_GenericIO_T60S_FSCH1_VldReq_ctlModel)
#define IEDMODEL_GenericIO_T60S_FSCH1_VldReq_t (&iedModel_GenericIO_T60S_FSCH1_VldReq_t)
#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq (&iedModel_GenericIO_T60S_FSCH1_EnaReq)
#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_stVal (&iedModel_GenericIO_T60S_FSCH1_EnaReq_stVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_q (&iedModel_GenericIO_T60S_FSCH1_EnaReq_q)
#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_Oper (&iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper)
#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_Oper_ctlVal (&iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_ctlVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_Oper_origin (&iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_origin)
#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_Oper_origin_orCat (&iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_origin_orCat)
#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_Oper_origin_orIdent (&iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_origin_orIdent)
#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_Oper_ctlNum (&iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_ctlNum)
#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_Oper_T (&iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_T)
#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_Oper_Test (&iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_Test)
#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_Oper_Check (&iedModel_GenericIO_T60S_FSCH1_EnaReq_Oper_Check)
#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_ctlModel (&iedModel_GenericIO_T60S_FSCH1_EnaReq_ctlModel)
#define IEDMODEL_GenericIO_T60S_FSCH1_EnaReq_t (&iedModel_GenericIO_T60S_FSCH1_EnaReq_t)
#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq (&iedModel_GenericIO_T60S_FSCH1_EdtReq)
#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_stVal (&iedModel_GenericIO_T60S_FSCH1_EdtReq_stVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_q (&iedModel_GenericIO_T60S_FSCH1_EdtReq_q)
#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_Oper (&iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper)
#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_Oper_ctlVal (&iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_ctlVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_Oper_origin (&iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_origin)
#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_Oper_origin_orCat (&iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_origin_orCat)
#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_Oper_origin_orIdent (&iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_origin_orIdent)
#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_Oper_ctlNum (&iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_ctlNum)
#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_Oper_T (&iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_T)
#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_Oper_Test (&iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_Test)
#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_Oper_Check (&iedModel_GenericIO_T60S_FSCH1_EdtReq_Oper_Check)
#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_ctlModel (&iedModel_GenericIO_T60S_FSCH1_EdtReq_ctlModel)
#define IEDMODEL_GenericIO_T60S_FSCH1_EdtReq_t (&iedModel_GenericIO_T60S_FSCH1_EdtReq_t)
#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq (&iedModel_GenericIO_T60S_FSCH1_DsaReq)
#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_stVal (&iedModel_GenericIO_T60S_FSCH1_DsaReq_stVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_q (&iedModel_GenericIO_T60S_FSCH1_DsaReq_q)
#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_Oper (&iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper)
#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_Oper_ctlVal (&iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_ctlVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_Oper_origin (&iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_origin)
#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_Oper_origin_orCat (&iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_origin_orCat)
#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_Oper_origin_orIdent (&iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_origin_orIdent)
#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_Oper_ctlNum (&iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_ctlNum)
#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_Oper_T (&iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_T)
#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_Oper_Test (&iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_Test)
#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_Oper_Check (&iedModel_GenericIO_T60S_FSCH1_DsaReq_Oper_Check)
#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_ctlModel (&iedModel_GenericIO_T60S_FSCH1_DsaReq_ctlModel)
#define IEDMODEL_GenericIO_T60S_FSCH1_DsaReq_t (&iedModel_GenericIO_T60S_FSCH1_DsaReq_t)
#define IEDMODEL_GenericIO_T60S_FSCH1_SchdPrio (&iedModel_GenericIO_T60S_FSCH1_SchdPrio)
#define IEDMODEL_GenericIO_T60S_FSCH1_SchdPrio_setVal (&iedModel_GenericIO_T60S_FSCH1_SchdPrio_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_NumEntr (&iedModel_GenericIO_T60S_FSCH1_NumEntr)
#define IEDMODEL_GenericIO_T60S_FSCH1_NumEntr_setVal (&iedModel_GenericIO_T60S_FSCH1_NumEntr_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_SchdIntv (&iedModel_GenericIO_T60S_FSCH1_SchdIntv)
#define IEDMODEL_GenericIO_T60S_FSCH1_SchdIntv_setVal (&iedModel_GenericIO_T60S_FSCH1_SchdIntv_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG1 (&iedModel_GenericIO_T60S_FSCH1_ValSPG1)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG1_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG1_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG2 (&iedModel_GenericIO_T60S_FSCH1_ValSPG2)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG2_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG2_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG3 (&iedModel_GenericIO_T60S_FSCH1_ValSPG3)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG3_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG3_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG4 (&iedModel_GenericIO_T60S_FSCH1_ValSPG4)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG4_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG4_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG5 (&iedModel_GenericIO_T60S_FSCH1_ValSPG5)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG5_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG5_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG6 (&iedModel_GenericIO_T60S_FSCH1_ValSPG6)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG6_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG6_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG7 (&iedModel_GenericIO_T60S_FSCH1_ValSPG7)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG7_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG7_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG8 (&iedModel_GenericIO_T60S_FSCH1_ValSPG8)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG8_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG8_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG9 (&iedModel_GenericIO_T60S_FSCH1_ValSPG9)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG9_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG9_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG10 (&iedModel_GenericIO_T60S_FSCH1_ValSPG10)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG10_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG10_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG11 (&iedModel_GenericIO_T60S_FSCH1_ValSPG11)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG11_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG11_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG12 (&iedModel_GenericIO_T60S_FSCH1_ValSPG12)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG12_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG12_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG13 (&iedModel_GenericIO_T60S_FSCH1_ValSPG13)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG13_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG13_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG14 (&iedModel_GenericIO_T60S_FSCH1_ValSPG14)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG14_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG14_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG15 (&iedModel_GenericIO_T60S_FSCH1_ValSPG15)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG15_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG15_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG16 (&iedModel_GenericIO_T60S_FSCH1_ValSPG16)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG16_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG16_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG17 (&iedModel_GenericIO_T60S_FSCH1_ValSPG17)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG17_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG17_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG18 (&iedModel_GenericIO_T60S_FSCH1_ValSPG18)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG18_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG18_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG19 (&iedModel_GenericIO_T60S_FSCH1_ValSPG19)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG19_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG19_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG20 (&iedModel_GenericIO_T60S_FSCH1_ValSPG20)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG20_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG20_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG21 (&iedModel_GenericIO_T60S_FSCH1_ValSPG21)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG21_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG21_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG22 (&iedModel_GenericIO_T60S_FSCH1_ValSPG22)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG22_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG22_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG23 (&iedModel_GenericIO_T60S_FSCH1_ValSPG23)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG23_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG23_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG24 (&iedModel_GenericIO_T60S_FSCH1_ValSPG24)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG24_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG24_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG25 (&iedModel_GenericIO_T60S_FSCH1_ValSPG25)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG25_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG25_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG26 (&iedModel_GenericIO_T60S_FSCH1_ValSPG26)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG26_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG26_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG27 (&iedModel_GenericIO_T60S_FSCH1_ValSPG27)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG27_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG27_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG28 (&iedModel_GenericIO_T60S_FSCH1_ValSPG28)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG28_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG28_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG29 (&iedModel_GenericIO_T60S_FSCH1_ValSPG29)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG29_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG29_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG30 (&iedModel_GenericIO_T60S_FSCH1_ValSPG30)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG30_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG30_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG31 (&iedModel_GenericIO_T60S_FSCH1_ValSPG31)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG31_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG31_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG32 (&iedModel_GenericIO_T60S_FSCH1_ValSPG32)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG32_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG32_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG33 (&iedModel_GenericIO_T60S_FSCH1_ValSPG33)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG33_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG33_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG34 (&iedModel_GenericIO_T60S_FSCH1_ValSPG34)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG34_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG34_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG35 (&iedModel_GenericIO_T60S_FSCH1_ValSPG35)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG35_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG35_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG36 (&iedModel_GenericIO_T60S_FSCH1_ValSPG36)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG36_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG36_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG37 (&iedModel_GenericIO_T60S_FSCH1_ValSPG37)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG37_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG37_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG38 (&iedModel_GenericIO_T60S_FSCH1_ValSPG38)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG38_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG38_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG39 (&iedModel_GenericIO_T60S_FSCH1_ValSPG39)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG39_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG39_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG40 (&iedModel_GenericIO_T60S_FSCH1_ValSPG40)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG40_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG40_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG41 (&iedModel_GenericIO_T60S_FSCH1_ValSPG41)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG41_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG41_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG42 (&iedModel_GenericIO_T60S_FSCH1_ValSPG42)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG42_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG42_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG43 (&iedModel_GenericIO_T60S_FSCH1_ValSPG43)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG43_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG43_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG44 (&iedModel_GenericIO_T60S_FSCH1_ValSPG44)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG44_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG44_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG45 (&iedModel_GenericIO_T60S_FSCH1_ValSPG45)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG45_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG45_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG46 (&iedModel_GenericIO_T60S_FSCH1_ValSPG46)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG46_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG46_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG47 (&iedModel_GenericIO_T60S_FSCH1_ValSPG47)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG47_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG47_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG48 (&iedModel_GenericIO_T60S_FSCH1_ValSPG48)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG48_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG48_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG49 (&iedModel_GenericIO_T60S_FSCH1_ValSPG49)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG49_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG49_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG50 (&iedModel_GenericIO_T60S_FSCH1_ValSPG50)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG50_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG50_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG51 (&iedModel_GenericIO_T60S_FSCH1_ValSPG51)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG51_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG51_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG52 (&iedModel_GenericIO_T60S_FSCH1_ValSPG52)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG52_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG52_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG53 (&iedModel_GenericIO_T60S_FSCH1_ValSPG53)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG53_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG53_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG54 (&iedModel_GenericIO_T60S_FSCH1_ValSPG54)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG54_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG54_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG55 (&iedModel_GenericIO_T60S_FSCH1_ValSPG55)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG55_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG55_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG56 (&iedModel_GenericIO_T60S_FSCH1_ValSPG56)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG56_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG56_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG57 (&iedModel_GenericIO_T60S_FSCH1_ValSPG57)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG57_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG57_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG58 (&iedModel_GenericIO_T60S_FSCH1_ValSPG58)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG58_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG58_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG59 (&iedModel_GenericIO_T60S_FSCH1_ValSPG59)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG59_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG59_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG60 (&iedModel_GenericIO_T60S_FSCH1_ValSPG60)
#define IEDMODEL_GenericIO_T60S_FSCH1_ValSPG60_setVal (&iedModel_GenericIO_T60S_FSCH1_ValSPG60_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_StrTm (&iedModel_GenericIO_T60S_FSCH1_StrTm)
#define IEDMODEL_GenericIO_T60S_FSCH1_StrTm_setTm (&iedModel_GenericIO_T60S_FSCH1_StrTm_setTm)
#define IEDMODEL_GenericIO_T60S_FSCH1_StrTm_setCal (&iedModel_GenericIO_T60S_FSCH1_StrTm_setCal)
#define IEDMODEL_GenericIO_T60S_FSCH1_StrTm_setCal_occ (&iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_occ)
#define IEDMODEL_GenericIO_T60S_FSCH1_StrTm_setCal_occType (&iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_occType)
#define IEDMODEL_GenericIO_T60S_FSCH1_StrTm_setCal_occPer (&iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_occPer)
#define IEDMODEL_GenericIO_T60S_FSCH1_StrTm_setCal_weekDay (&iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_weekDay)
#define IEDMODEL_GenericIO_T60S_FSCH1_StrTm_setCal_month (&iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_month)
#define IEDMODEL_GenericIO_T60S_FSCH1_StrTm_setCal_day (&iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_day)
#define IEDMODEL_GenericIO_T60S_FSCH1_StrTm_setCal_hr (&iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_hr)
#define IEDMODEL_GenericIO_T60S_FSCH1_StrTm_setCal_mn (&iedModel_GenericIO_T60S_FSCH1_StrTm_setCal_mn)
#define IEDMODEL_GenericIO_T60S_FSCH1_IntvPer (&iedModel_GenericIO_T60S_FSCH1_IntvPer)
#define IEDMODEL_GenericIO_T60S_FSCH1_IntvPer_setVal (&iedModel_GenericIO_T60S_FSCH1_IntvPer_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_IntvTyp (&iedModel_GenericIO_T60S_FSCH1_IntvTyp)
#define IEDMODEL_GenericIO_T60S_FSCH1_IntvTyp_setVal (&iedModel_GenericIO_T60S_FSCH1_IntvTyp_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH1_SchdReuse (&iedModel_GenericIO_T60S_FSCH1_SchdReuse)
#define IEDMODEL_GenericIO_T60S_FSCH1_SchdReuse_setVal (&iedModel_GenericIO_T60S_FSCH1_SchdReuse_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2 (&iedModel_GenericIO_T60S_FSCH2)
#define IEDMODEL_GenericIO_T60S_FSCH2_Beh (&iedModel_GenericIO_T60S_FSCH2_Beh)
#define IEDMODEL_GenericIO_T60S_FSCH2_Beh_stVal (&iedModel_GenericIO_T60S_FSCH2_Beh_stVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_Beh_q (&iedModel_GenericIO_T60S_FSCH2_Beh_q)
#define IEDMODEL_GenericIO_T60S_FSCH2_Beh_t (&iedModel_GenericIO_T60S_FSCH2_Beh_t)
#define IEDMODEL_GenericIO_T60S_FSCH2_SchdSt (&iedModel_GenericIO_T60S_FSCH2_SchdSt)
#define IEDMODEL_GenericIO_T60S_FSCH2_SchdSt_stVal (&iedModel_GenericIO_T60S_FSCH2_SchdSt_stVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_SchdSt_q (&iedModel_GenericIO_T60S_FSCH2_SchdSt_q)
#define IEDMODEL_GenericIO_T60S_FSCH2_SchdSt_t (&iedModel_GenericIO_T60S_FSCH2_SchdSt_t)
#define IEDMODEL_GenericIO_T60S_FSCH2_SchdEntr (&iedModel_GenericIO_T60S_FSCH2_SchdEntr)
#define IEDMODEL_GenericIO_T60S_FSCH2_SchdEntr_stVal (&iedModel_GenericIO_T60S_FSCH2_SchdEntr_stVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_SchdEntr_q (&iedModel_GenericIO_T60S_FSCH2_SchdEntr_q)
#define IEDMODEL_GenericIO_T60S_FSCH2_SchdEntr_t (&iedModel_GenericIO_T60S_FSCH2_SchdEntr_t)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPS (&iedModel_GenericIO_T60S_FSCH2_ValSPS)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPS_stVal (&iedModel_GenericIO_T60S_FSCH2_ValSPS_stVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPS_q (&iedModel_GenericIO_T60S_FSCH2_ValSPS_q)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPS_t (&iedModel_GenericIO_T60S_FSCH2_ValSPS_t)
#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq (&iedModel_GenericIO_T60S_FSCH2_VldReq)
#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_stVal (&iedModel_GenericIO_T60S_FSCH2_VldReq_stVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_q (&iedModel_GenericIO_T60S_FSCH2_VldReq_q)
#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_Oper (&iedModel_GenericIO_T60S_FSCH2_VldReq_Oper)
#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_Oper_ctlVal (&iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_ctlVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_Oper_origin (&iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_origin)
#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_Oper_origin_orCat (&iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_origin_orCat)
#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_Oper_origin_orIdent (&iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_origin_orIdent)
#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_Oper_ctlNum (&iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_ctlNum)
#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_Oper_T (&iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_T)
#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_Oper_Test (&iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_Test)
#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_Oper_Check (&iedModel_GenericIO_T60S_FSCH2_VldReq_Oper_Check)
#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_ctlModel (&iedModel_GenericIO_T60S_FSCH2_VldReq_ctlModel)
#define IEDMODEL_GenericIO_T60S_FSCH2_VldReq_t (&iedModel_GenericIO_T60S_FSCH2_VldReq_t)
#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq (&iedModel_GenericIO_T60S_FSCH2_EnaReq)
#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_stVal (&iedModel_GenericIO_T60S_FSCH2_EnaReq_stVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_q (&iedModel_GenericIO_T60S_FSCH2_EnaReq_q)
#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_Oper (&iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper)
#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_Oper_ctlVal (&iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_ctlVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_Oper_origin (&iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_origin)
#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_Oper_origin_orCat (&iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_origin_orCat)
#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_Oper_origin_orIdent (&iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_origin_orIdent)
#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_Oper_ctlNum (&iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_ctlNum)
#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_Oper_T (&iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_T)
#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_Oper_Test (&iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_Test)
#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_Oper_Check (&iedModel_GenericIO_T60S_FSCH2_EnaReq_Oper_Check)
#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_ctlModel (&iedModel_GenericIO_T60S_FSCH2_EnaReq_ctlModel)
#define IEDMODEL_GenericIO_T60S_FSCH2_EnaReq_t (&iedModel_GenericIO_T60S_FSCH2_EnaReq_t)
#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq (&iedModel_GenericIO_T60S_FSCH2_EdtReq)
#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_stVal (&iedModel_GenericIO_T60S_FSCH2_EdtReq_stVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_q (&iedModel_GenericIO_T60S_FSCH2_EdtReq_q)
#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_Oper (&iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper)
#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_Oper_ctlVal (&iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_ctlVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_Oper_origin (&iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_origin)
#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_Oper_origin_orCat (&iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_origin_orCat)
#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_Oper_origin_orIdent (&iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_origin_orIdent)
#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_Oper_ctlNum (&iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_ctlNum)
#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_Oper_T (&iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_T)
#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_Oper_Test (&iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_Test)
#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_Oper_Check (&iedModel_GenericIO_T60S_FSCH2_EdtReq_Oper_Check)
#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_ctlModel (&iedModel_GenericIO_T60S_FSCH2_EdtReq_ctlModel)
#define IEDMODEL_GenericIO_T60S_FSCH2_EdtReq_t (&iedModel_GenericIO_T60S_FSCH2_EdtReq_t)
#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq (&iedModel_GenericIO_T60S_FSCH2_DsaReq)
#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_stVal (&iedModel_GenericIO_T60S_FSCH2_DsaReq_stVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_q (&iedModel_GenericIO_T60S_FSCH2_DsaReq_q)
#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_Oper (&iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper)
#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_Oper_ctlVal (&iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_ctlVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_Oper_origin (&iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_origin)
#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_Oper_origin_orCat (&iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_origin_orCat)
#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_Oper_origin_orIdent (&iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_origin_orIdent)
#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_Oper_ctlNum (&iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_ctlNum)
#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_Oper_T (&iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_T)
#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_Oper_Test (&iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_Test)
#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_Oper_Check (&iedModel_GenericIO_T60S_FSCH2_DsaReq_Oper_Check)
#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_ctlModel (&iedModel_GenericIO_T60S_FSCH2_DsaReq_ctlModel)
#define IEDMODEL_GenericIO_T60S_FSCH2_DsaReq_t (&iedModel_GenericIO_T60S_FSCH2_DsaReq_t)
#define IEDMODEL_GenericIO_T60S_FSCH2_SchdPrio (&iedModel_GenericIO_T60S_FSCH2_SchdPrio)
#define IEDMODEL_GenericIO_T60S_FSCH2_SchdPrio_setVal (&iedModel_GenericIO_T60S_FSCH2_SchdPrio_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_NumEntr (&iedModel_GenericIO_T60S_FSCH2_NumEntr)
#define IEDMODEL_GenericIO_T60S_FSCH2_NumEntr_setVal (&iedModel_GenericIO_T60S_FSCH2_NumEntr_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_SchdIntv (&iedModel_GenericIO_T60S_FSCH2_SchdIntv)
#define IEDMODEL_GenericIO_T60S_FSCH2_SchdIntv_setVal (&iedModel_GenericIO_T60S_FSCH2_SchdIntv_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG1 (&iedModel_GenericIO_T60S_FSCH2_ValSPG1)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG1_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG1_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG2 (&iedModel_GenericIO_T60S_FSCH2_ValSPG2)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG2_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG2_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG3 (&iedModel_GenericIO_T60S_FSCH2_ValSPG3)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG3_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG3_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG4 (&iedModel_GenericIO_T60S_FSCH2_ValSPG4)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG4_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG4_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG5 (&iedModel_GenericIO_T60S_FSCH2_ValSPG5)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG5_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG5_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG6 (&iedModel_GenericIO_T60S_FSCH2_ValSPG6)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG6_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG6_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG7 (&iedModel_GenericIO_T60S_FSCH2_ValSPG7)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG7_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG7_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG8 (&iedModel_GenericIO_T60S_FSCH2_ValSPG8)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG8_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG8_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG9 (&iedModel_GenericIO_T60S_FSCH2_ValSPG9)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG9_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG9_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG10 (&iedModel_GenericIO_T60S_FSCH2_ValSPG10)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG10_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG10_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG11 (&iedModel_GenericIO_T60S_FSCH2_ValSPG11)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG11_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG11_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG12 (&iedModel_GenericIO_T60S_FSCH2_ValSPG12)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG12_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG12_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG13 (&iedModel_GenericIO_T60S_FSCH2_ValSPG13)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG13_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG13_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG14 (&iedModel_GenericIO_T60S_FSCH2_ValSPG14)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG14_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG14_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG15 (&iedModel_GenericIO_T60S_FSCH2_ValSPG15)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG15_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG15_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG16 (&iedModel_GenericIO_T60S_FSCH2_ValSPG16)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG16_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG16_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG17 (&iedModel_GenericIO_T60S_FSCH2_ValSPG17)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG17_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG17_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG18 (&iedModel_GenericIO_T60S_FSCH2_ValSPG18)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG18_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG18_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG19 (&iedModel_GenericIO_T60S_FSCH2_ValSPG19)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG19_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG19_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG20 (&iedModel_GenericIO_T60S_FSCH2_ValSPG20)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG20_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG20_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG21 (&iedModel_GenericIO_T60S_FSCH2_ValSPG21)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG21_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG21_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG22 (&iedModel_GenericIO_T60S_FSCH2_ValSPG22)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG22_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG22_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG23 (&iedModel_GenericIO_T60S_FSCH2_ValSPG23)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG23_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG23_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG24 (&iedModel_GenericIO_T60S_FSCH2_ValSPG24)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG24_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG24_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG25 (&iedModel_GenericIO_T60S_FSCH2_ValSPG25)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG25_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG25_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG26 (&iedModel_GenericIO_T60S_FSCH2_ValSPG26)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG26_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG26_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG27 (&iedModel_GenericIO_T60S_FSCH2_ValSPG27)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG27_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG27_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG28 (&iedModel_GenericIO_T60S_FSCH2_ValSPG28)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG28_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG28_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG29 (&iedModel_GenericIO_T60S_FSCH2_ValSPG29)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG29_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG29_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG30 (&iedModel_GenericIO_T60S_FSCH2_ValSPG30)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG30_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG30_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG31 (&iedModel_GenericIO_T60S_FSCH2_ValSPG31)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG31_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG31_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG32 (&iedModel_GenericIO_T60S_FSCH2_ValSPG32)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG32_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG32_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG33 (&iedModel_GenericIO_T60S_FSCH2_ValSPG33)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG33_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG33_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG34 (&iedModel_GenericIO_T60S_FSCH2_ValSPG34)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG34_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG34_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG35 (&iedModel_GenericIO_T60S_FSCH2_ValSPG35)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG35_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG35_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG36 (&iedModel_GenericIO_T60S_FSCH2_ValSPG36)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG36_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG36_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG37 (&iedModel_GenericIO_T60S_FSCH2_ValSPG37)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG37_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG37_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG38 (&iedModel_GenericIO_T60S_FSCH2_ValSPG38)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG38_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG38_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG39 (&iedModel_GenericIO_T60S_FSCH2_ValSPG39)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG39_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG39_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG40 (&iedModel_GenericIO_T60S_FSCH2_ValSPG40)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG40_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG40_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG41 (&iedModel_GenericIO_T60S_FSCH2_ValSPG41)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG41_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG41_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG42 (&iedModel_GenericIO_T60S_FSCH2_ValSPG42)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG42_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG42_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG43 (&iedModel_GenericIO_T60S_FSCH2_ValSPG43)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG43_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG43_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG44 (&iedModel_GenericIO_T60S_FSCH2_ValSPG44)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG44_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG44_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG45 (&iedModel_GenericIO_T60S_FSCH2_ValSPG45)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG45_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG45_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG46 (&iedModel_GenericIO_T60S_FSCH2_ValSPG46)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG46_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG46_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG47 (&iedModel_GenericIO_T60S_FSCH2_ValSPG47)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG47_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG47_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG48 (&iedModel_GenericIO_T60S_FSCH2_ValSPG48)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG48_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG48_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG49 (&iedModel_GenericIO_T60S_FSCH2_ValSPG49)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG49_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG49_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG50 (&iedModel_GenericIO_T60S_FSCH2_ValSPG50)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG50_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG50_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG51 (&iedModel_GenericIO_T60S_FSCH2_ValSPG51)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG51_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG51_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG52 (&iedModel_GenericIO_T60S_FSCH2_ValSPG52)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG52_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG52_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG53 (&iedModel_GenericIO_T60S_FSCH2_ValSPG53)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG53_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG53_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG54 (&iedModel_GenericIO_T60S_FSCH2_ValSPG54)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG54_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG54_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG55 (&iedModel_GenericIO_T60S_FSCH2_ValSPG55)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG55_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG55_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG56 (&iedModel_GenericIO_T60S_FSCH2_ValSPG56)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG56_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG56_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG57 (&iedModel_GenericIO_T60S_FSCH2_ValSPG57)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG57_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG57_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG58 (&iedModel_GenericIO_T60S_FSCH2_ValSPG58)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG58_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG58_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG59 (&iedModel_GenericIO_T60S_FSCH2_ValSPG59)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG59_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG59_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG60 (&iedModel_GenericIO_T60S_FSCH2_ValSPG60)
#define IEDMODEL_GenericIO_T60S_FSCH2_ValSPG60_setVal (&iedModel_GenericIO_T60S_FSCH2_ValSPG60_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_StrTm (&iedModel_GenericIO_T60S_FSCH2_StrTm)
#define IEDMODEL_GenericIO_T60S_FSCH2_StrTm_setTm (&iedModel_GenericIO_T60S_FSCH2_StrTm_setTm)
#define IEDMODEL_GenericIO_T60S_FSCH2_StrTm_setCal (&iedModel_GenericIO_T60S_FSCH2_StrTm_setCal)
#define IEDMODEL_GenericIO_T60S_FSCH2_StrTm_setCal_occ (&iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_occ)
#define IEDMODEL_GenericIO_T60S_FSCH2_StrTm_setCal_occType (&iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_occType)
#define IEDMODEL_GenericIO_T60S_FSCH2_StrTm_setCal_occPer (&iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_occPer)
#define IEDMODEL_GenericIO_T60S_FSCH2_StrTm_setCal_weekDay (&iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_weekDay)
#define IEDMODEL_GenericIO_T60S_FSCH2_StrTm_setCal_month (&iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_month)
#define IEDMODEL_GenericIO_T60S_FSCH2_StrTm_setCal_day (&iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_day)
#define IEDMODEL_GenericIO_T60S_FSCH2_StrTm_setCal_hr (&iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_hr)
#define IEDMODEL_GenericIO_T60S_FSCH2_StrTm_setCal_mn (&iedModel_GenericIO_T60S_FSCH2_StrTm_setCal_mn)
#define IEDMODEL_GenericIO_T60S_FSCH2_IntvPer (&iedModel_GenericIO_T60S_FSCH2_IntvPer)
#define IEDMODEL_GenericIO_T60S_FSCH2_IntvPer_setVal (&iedModel_GenericIO_T60S_FSCH2_IntvPer_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_IntvTyp (&iedModel_GenericIO_T60S_FSCH2_IntvTyp)
#define IEDMODEL_GenericIO_T60S_FSCH2_IntvTyp_setVal (&iedModel_GenericIO_T60S_FSCH2_IntvTyp_setVal)
#define IEDMODEL_GenericIO_T60S_FSCH2_SchdReuse (&iedModel_GenericIO_T60S_FSCH2_SchdReuse)
#define IEDMODEL_GenericIO_T60S_FSCH2_SchdReuse_setVal (&iedModel_GenericIO_T60S_FSCH2_SchdReuse_setVal)
#define IEDMODEL_GenericIO_GGIO_FSCC1 (&iedModel_GenericIO_GGIO_FSCC1)
#define IEDMODEL_GenericIO_GGIO_FSCC1_Beh (&iedModel_GenericIO_GGIO_FSCC1_Beh)
#define IEDMODEL_GenericIO_GGIO_FSCC1_Beh_stVal (&iedModel_GenericIO_GGIO_FSCC1_Beh_stVal)
#define IEDMODEL_GenericIO_GGIO_FSCC1_Beh_q (&iedModel_GenericIO_GGIO_FSCC1_Beh_q)
#define IEDMODEL_GenericIO_GGIO_FSCC1_Beh_t (&iedModel_GenericIO_GGIO_FSCC1_Beh_t)
#define IEDMODEL_GenericIO_GGIO_FSCC1_ActSchdRef (&iedModel_GenericIO_GGIO_FSCC1_ActSchdRef)
#define IEDMODEL_GenericIO_GGIO_FSCC1_ActSchdRef_stVal (&iedModel_GenericIO_GGIO_FSCC1_ActSchdRef_stVal)
#define IEDMODEL_GenericIO_GGIO_FSCC1_ActSchdRef_q (&iedModel_GenericIO_GGIO_FSCC1_ActSchdRef_q)
#define IEDMODEL_GenericIO_GGIO_FSCC1_ActSchdRef_t (&iedModel_GenericIO_GGIO_FSCC1_ActSchdRef_t)
#define IEDMODEL_GenericIO_GGIO_FSCC1_CtlEnt (&iedModel_GenericIO_GGIO_FSCC1_CtlEnt)
#define IEDMODEL_GenericIO_GGIO_FSCC1_CtlEnt_setSrcRef (&iedModel_GenericIO_GGIO_FSCC1_CtlEnt_setSrcRef)
#define IEDMODEL_GenericIO_GGIO_FSCC1_Schd1 (&iedModel_GenericIO_GGIO_FSCC1_Schd1)
#define IEDMODEL_GenericIO_GGIO_FSCC1_Schd1_setSrcRef (&iedModel_GenericIO_GGIO_FSCC1_Schd1_setSrcRef)
#define IEDMODEL_GenericIO_GGIO_FSCC1_Schd2 (&iedModel_GenericIO_GGIO_FSCC1_Schd2)
#define IEDMODEL_GenericIO_GGIO_FSCC1_Schd2_setSrcRef (&iedModel_GenericIO_GGIO_FSCC1_Schd2_setSrcRef)
#endif /* STATIC_MODEL_H_ */

View file

@ -141,7 +141,10 @@ namespace IEC61850
private static extern void ControlObjectClient_setInterlockCheck(IntPtr self, bool value);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
private static extern void ControlObjectClient_setSynchroCheck(IntPtr self, bool value);
private static extern void ControlObjectClient_setSynchroCheck(IntPtr self, bool value);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
private static extern void ControlObjectClient_setTestMode(IntPtr self, bool value);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate void InternalCommandTerminationHandler(IntPtr parameter,IntPtr controlClient);
@ -404,6 +407,14 @@ namespace IEC61850
ControlObjectClient_setSynchroCheck (controlObject, value);
}
/// <summary>
/// Sets the value of the test flag for the operate command
/// </summary>
public void SetTestMode (bool value)
{
ControlObjectClient_setTestMode (controlObject, value);
}
/// <summary>
/// Gets the last received LastApplError (Additional Cause Diagnostics) value.
/// </summary>

View file

@ -629,7 +629,7 @@ namespace IEC61850
if (mmsValue.GetType () == MmsType.MMS_BOOLEAN)
return mmsValue.GetBoolean ();
else
throw new IedConnectionException ("Result is not of type timestamp (MMS_UTC_TIME)", 0);
throw new IedConnectionException ("Result is not of type boolean (MMS_BOOLEAN)", 0);
}
/// <summary>Read the value of a basic data attribute (BDA) of type float.</summary>

View file

@ -45,6 +45,7 @@
<Compile Include="Control.cs" />
<Compile Include="IsoConnectionParameters.cs" />
<Compile Include="MmsVariableSpecification.cs" />
<Compile Include="IEC61850ServerAPI.cs" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>

View file

@ -55,7 +55,7 @@ namespace IEC61850
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern void IedConnection_setRCBValues (IntPtr connection, out int error, IntPtr rcb, UInt32 parametersMask, bool singleRequest);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
static extern bool ClientReportControlBlock_isBuffered (IntPtr self);
@ -69,10 +69,10 @@ namespace IEC61850
[return: MarshalAs(UnmanagedType.I1)]
static extern bool ClientReportControlBlock_getRptEna (IntPtr self);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern void ClientReportControlBlock_setRptEna(IntPtr self, bool rptEna);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
static extern bool ClientReportControlBlock_getResv (IntPtr self);
@ -115,14 +115,14 @@ namespace IEC61850
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern void ClientReportControlBlock_setIntgPd (IntPtr self, UInt32 intgPd);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
static extern bool ClientReportControlBlock_getGI (IntPtr self);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern void ClientReportControlBlock_setGI (IntPtr self, bool gi);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
static extern bool ClientReportControlBlock_getPurgeBuf (IntPtr self);
@ -149,11 +149,11 @@ namespace IEC61850
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern void IedConnection_installReportHandler (IntPtr connection, string rcbReference, string rptId, InternalReportHandler handler,
IntPtr handlerParameter);
IntPtr handlerParameter);
[DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)]
static extern void IedConnection_uninstallReportHandler(IntPtr connection, string rcbReference);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate void InternalReportHandler (IntPtr parameter, IntPtr report);
@ -256,7 +256,7 @@ namespace IEC61850
/// </summary>
/// <description>
/// This will install a callback handler (delegate) that is invoked whenever a report
/// related this RCB is received. Any call of this method will replace an previously registered
/// related to this RCB is received. Any call of this method will replace an previously registered
/// handler!
/// </description>
/// <param name='reportHandler'>
@ -273,13 +273,13 @@ namespace IEC61850
if (reportHandlerInstalled == false) {
string reportId = this.GetRptId ();
if (internalHandler == null)
{
internalHandler = new InternalReportHandler(internalReportHandler);
}
string reportId = this.GetRptId ();
if (internalHandler == null)
{
internalHandler = new InternalReportHandler(internalReportHandler);
}
IedConnection_installReportHandler(this.connection, objectReference, reportId, internalHandler, IntPtr.Zero);
reportHandlerInstalled = true;
}
@ -539,24 +539,24 @@ namespace IEC61850
flagRptEna = true;
}
/// <summary>
/// Get the purgeBuf flag of the report control block
/// </summary>
/// <summary>
/// Get the purgeBuf flag of the report control block
/// </summary>
/// <returns>the prugeBuf value</returns>
public bool GetPurgeBuf ()
{
return ClientReportControlBlock_getPurgeBuf(self);
public bool GetPurgeBuf ()
{
return ClientReportControlBlock_getPurgeBuf(self);
}
/// <summary>
/// Set the purgeBuf flag of the report control block
/// </summary>
/// <description>This is only for buffered RCBs. If set to true the report buffer of a buffered RCB will be cleaned.</description>
/// <summary>
/// Set the purgeBuf flag of the report control block
/// </summary>
/// <description>This is only for buffered RCBs. If set to true the report buffer of a buffered RCB will be cleaned.</description>
/// <param name="purgeBuf">set to true to flush report buffer</param>
public void SetPurgeBuf (bool purgeBuf)
{
ClientReportControlBlock_setPurgeBuf(self, purgeBuf);
flagPurgeBuf = true;
public void SetPurgeBuf (bool purgeBuf)
{
ClientReportControlBlock_setPurgeBuf(self, purgeBuf);
flagPurgeBuf = true;
}
/// <summary>

View file

@ -41,8 +41,8 @@ namespace reporting
Console.WriteLine(" element " + i + " included for reason " + report.GetReasonForInclusion(i).ToString() + " " + values.GetElement(i));
}
if (report.HasDataReference()) {
Console.WriteLine(" data-ref: " + report.GetDataReference(i));
if (report.HasDataReference()) {
Console.WriteLine(" data-ref: " + report.GetDataReference(i));
}
}
@ -79,35 +79,35 @@ namespace reporting
ReportControlBlock rcb1 = con.GetReportControlBlock(rcbReference1);
ReportControlBlock rcb2 = con.GetReportControlBlock(rcbReference2);
ReportControlBlock rcb3 = con.GetReportControlBlock(rcbReference3);
rcb1.GetRCBValues();
// note: the second parameter is not required!
rcb1.InstallReportHandler(reportHandler, rcb1);
if (rcb1.IsBuffered())
Console.WriteLine("RCB: " + rcbReference1 + " is buffered");
rcb1.SetTrgOps(TriggerOptions.DATA_CHANGED | TriggerOptions.INTEGRITY);
rcb1.SetIntgPd(5000);
rcb1.SetRptEna(true);
rcb1.SetRCBValues();
rcb2.GetRCBValues();
if (rcb2.IsBuffered())
Console.WriteLine("RCB: " + rcbReference2 + " is buffered");
rcb2.InstallReportHandler(reportHandler, rcb2);
rcb2.SetOptFlds(ReportOptions.REASON_FOR_INCLUSION | ReportOptions.SEQ_NUM | ReportOptions.TIME_STAMP |
ReportOptions.CONF_REV | ReportOptions.ENTRY_ID | ReportOptions.DATA_REFERENCE | ReportOptions.DATA_SET);
rcb2.SetTrgOps(TriggerOptions.DATA_CHANGED | TriggerOptions.INTEGRITY);
rcb2.SetIntgPd(2000);
rcb2.SetRptEna(true);
ReportControlBlock rcb3 = con.GetReportControlBlock(rcbReference3);
rcb1.GetRCBValues();
// note: the second parameter is not required!
rcb1.InstallReportHandler(reportHandler, rcb1);
if (rcb1.IsBuffered())
Console.WriteLine("RCB: " + rcbReference1 + " is buffered");
rcb1.SetTrgOps(TriggerOptions.DATA_CHANGED | TriggerOptions.INTEGRITY);
rcb1.SetIntgPd(5000);
rcb1.SetRptEna(true);
rcb1.SetRCBValues();
rcb2.GetRCBValues();
if (rcb2.IsBuffered())
Console.WriteLine("RCB: " + rcbReference2 + " is buffered");
rcb2.InstallReportHandler(reportHandler, rcb2);
rcb2.SetOptFlds(ReportOptions.REASON_FOR_INCLUSION | ReportOptions.SEQ_NUM | ReportOptions.TIME_STAMP |
ReportOptions.CONF_REV | ReportOptions.ENTRY_ID | ReportOptions.DATA_REFERENCE | ReportOptions.DATA_SET);
rcb2.SetTrgOps(TriggerOptions.DATA_CHANGED | TriggerOptions.INTEGRITY);
rcb2.SetIntgPd(2000);
rcb2.SetRptEna(true);
rcb2.SetRCBValues();
rcb3.GetRCBValues();
@ -154,7 +154,7 @@ namespace reporting
Console.WriteLine ("Error: " + e.Message);
con.Dispose ();
}
}
}
}

View file

@ -2,6 +2,9 @@
using System;
using IEC61850.Common;
using IEC61850.Client;
using IEC61850.Server;
using System.Collections.Generic;
using System.Threading;
namespace tests
{
@ -102,7 +105,267 @@ namespace tests
Assert.AreEqual (val.ToFloat (), (float)0.1234);
}
[Test ()]
public void CreateModelFromNonExistingFile()
{
IedModel iedModel = ConfigFileParser.CreateModelFromConfigFile ("test.cfg");
Assert.IsNull (iedModel);
}
[Test ()]
public void CreateModelFromFile()
{
IedModel iedModel = ConfigFileParser.CreateModelFromConfigFile ("../../model.cfg");
Assert.NotNull (iedModel);
}
[Test ()]
public void StartStopSimpleServer()
{
IedModel iedModel = ConfigFileParser.CreateModelFromConfigFile ("../../model.cfg");
IedServer iedServer = new IedServer (iedModel);
Assert.NotNull (iedServer);
iedServer.Start (10002);
Assert.IsTrue (iedServer.IsRunning ());
iedServer.Stop ();
Assert.IsFalse (iedServer.IsRunning ());
iedServer.Destroy ();
}
[Test ()]
public void ConnectToServer()
{
IedModel iedModel = ConfigFileParser.CreateModelFromConfigFile ("../../model.cfg");
IedServer iedServer = new IedServer (iedModel);
iedServer.Start (10002);
IedConnection connection = new IedConnection ();
connection.Connect ("localhost", 10002);
List<string> list = connection.GetServerDirectory ();
Assert.IsNotEmpty (list);
Assert.AreEqual (list.ToArray () [0], "simpleIOGenericIO");
iedServer.Stop ();
iedServer.Destroy ();
}
[Test ()]
public void AccessDataModelServerSide()
{
IedModel iedModel = ConfigFileParser.CreateModelFromConfigFile ("../../model.cfg");
ModelNode modelNode = iedModel.GetModelNodeByShortObjectReference ("GenericIO/GGIO1.AnIn1");
Assert.IsTrue (modelNode.GetType ().Equals (typeof(DataObject)));
modelNode = iedModel.GetModelNodeByShortObjectReference ("GenericIO/GGIO1.AnIn1.mag.f");
Assert.IsTrue (modelNode.GetType ().Equals (typeof(DataAttribute)));
Assert.IsNotNull (modelNode);
}
[Test ()]
public void AccessDataModelClientServer()
{
IedModel iedModel = ConfigFileParser.CreateModelFromConfigFile ("../../model.cfg");
ModelNode ind1 = iedModel.GetModelNodeByShortObjectReference ("GenericIO/GGIO1.Ind1.stVal");
Assert.IsTrue (ind1.GetType ().Equals (typeof(DataAttribute)));
IedServer iedServer = new IedServer (iedModel);
iedServer.Start (10002);
iedServer.UpdateBooleanAttributeValue((DataAttribute) ind1, true);
IedConnection connection = new IedConnection ();
connection.Connect ("localhost", 10002);
bool stVal = connection.ReadBooleanValue ("simpleIOGenericIO/GGIO1.Ind1.stVal", FunctionalConstraint.ST);
Assert.IsTrue (stVal);
iedServer.UpdateBooleanAttributeValue((DataAttribute) ind1, false);
stVal = connection.ReadBooleanValue ("simpleIOGenericIO/GGIO1.Ind1.stVal", FunctionalConstraint.ST);
Assert.IsFalse (stVal);
connection.Abort ();
iedServer.Stop ();
iedServer.Destroy ();
}
[Test()]
public void ControlWriteAccessToServer()
{
IedModel iedModel = ConfigFileParser.CreateModelFromConfigFile ("../../model.cfg");
DataAttribute opDlTmms = (DataAttribute) iedModel.GetModelNodeByShortObjectReference("GenericIO/PDUP1.OpDlTmms.setVal");
DataAttribute rsDlTmms = (DataAttribute)iedModel.GetModelNodeByShortObjectReference ("GenericIO/PDUP1.RsDlTmms.setVal");
IedServer iedServer = new IedServer (iedModel);
int opDlTmmsValue = 0;
iedServer.HandleWriteAccess (opDlTmms, delegate(DataAttribute dataAttr, MmsValue value, ClientConnection con, object parameter) {
opDlTmmsValue = value.ToInt32();
return MmsDataAccessError.DATA_ACCESS_ERROR_SUCCESS;
}, null);
iedServer.HandleWriteAccess (rsDlTmms, delegate(DataAttribute dataAttr, MmsValue value, ClientConnection con, object parameter) {
if (value.ToInt32() > 1000)
return MmsDataAccessError.DATA_ACCESS_ERROR_OBJECT_VALUE_INVALID;
else
return MmsDataAccessError.DATA_ACCESS_ERROR_SUCCESS;
}, null);
iedServer.Start (10002);
IedConnection connection = new IedConnection ();
connection.Connect ("localhost", 10002);
connection.WriteValue ("simpleIOGenericIO/PDUP1.OpDlTmms.setVal", FunctionalConstraint.SP, new MmsValue ((int)1234));
try {
connection.WriteValue ("simpleIOGenericIO/PDUP1.RsDlTmms.setVal", FunctionalConstraint.SP, new MmsValue ((int)1234));
}
catch (IedConnectionException e) {
Assert.AreEqual (IedClientError.IED_ERROR_OBJECT_VALUE_INVALID, e.GetIedClientError());
}
connection.WriteValue ("simpleIOGenericIO/PDUP1.RsDlTmms.setVal", FunctionalConstraint.SP, new MmsValue ((int)999));
MmsValue rsDlTmmsValue = iedServer.GetAttributeValue (rsDlTmms);
Assert.AreEqual (999, rsDlTmmsValue.ToInt32 ());
connection.Abort ();
iedServer.Stop ();
Assert.AreEqual ((int) 1234, opDlTmmsValue);
iedServer.Destroy ();
}
[Test()]
public void WriteAccessPolicy()
{
IedModel iedModel = ConfigFileParser.CreateModelFromConfigFile ("../../model.cfg");
DataAttribute opDlTmms = (DataAttribute) iedModel.GetModelNodeByShortObjectReference("GenericIO/PDUP1.OpDlTmms.setVal");
DataAttribute rsDlTmms = (DataAttribute)iedModel.GetModelNodeByShortObjectReference ("GenericIO/PDUP1.RsDlTmms.setVal");
IedServer iedServer = new IedServer (iedModel);
iedServer.HandleWriteAccess (opDlTmms, delegate(DataAttribute dataAttr, MmsValue value, ClientConnection con, object parameter) {
return MmsDataAccessError.DATA_ACCESS_ERROR_SUCCESS;
}, null);
iedServer.Start (10002);
IedConnection connection = new IedConnection ();
connection.Connect ("localhost", 10002);
connection.WriteValue ("simpleIOGenericIO/PDUP1.RsDlTmms.setVal", FunctionalConstraint.SP, new MmsValue ((int)1234));
iedServer.SetWriteAccessPolicy (FunctionalConstraint.SP, AccessPolicy.ACCESS_POLICY_DENY);
connection.WriteValue ("simpleIOGenericIO/PDUP1.OpDlTmms.setVal", FunctionalConstraint.SP, new MmsValue ((int)1234));
try {
connection.WriteValue ("simpleIOGenericIO/PDUP1.RsDlTmms.setVal", FunctionalConstraint.SP, new MmsValue ((int)999));
}
catch (IedConnectionException e) {
Assert.AreEqual (IedClientError.IED_ERROR_ACCESS_DENIED, e.GetIedClientError());
}
MmsValue rsDlTmmsValue = iedServer.GetAttributeValue (rsDlTmms);
Assert.AreEqual (1234, rsDlTmmsValue.ToInt32 ());
connection.Abort ();
iedServer.Stop ();
iedServer.Destroy ();
}
[Test()]
public void ConnectionHandler()
{
IedModel iedModel = ConfigFileParser.CreateModelFromConfigFile ("../../model.cfg");
int handlerCalled = 0;
int connectionCount = 0;
IedServer iedServer = new IedServer (iedModel);
string ipAddress = null;
iedServer.SetConnectionIndicationHandler(delegate(IedServer server, ClientConnection clientConnection, bool connected, object parameter) {
handlerCalled++;
if (connected)
connectionCount++;
else
connectionCount--;
ipAddress = clientConnection.GetPeerAddress();
}, null);
iedServer.Start (10002);
IedConnection con1 = new IedConnection ();
con1.Connect ("localhost", 10002);
Assert.AreEqual (1, handlerCalled);
Assert.AreEqual (1, connectionCount);
IedConnection con2 = new IedConnection ();
con2.Connect ("localhost", 10002);
Assert.AreEqual (2, handlerCalled);
Assert.AreEqual (2, connectionCount);
con1.Abort ();
con2.Abort ();
Assert.AreEqual (4, handlerCalled);
Assert.AreEqual (0, connectionCount);
Assert.AreEqual ("127.0.0.1:", ipAddress.Substring (0, 10));
iedServer.Stop ();
}
}
}

326
dotnet/tests/test.icd Normal file
View file

@ -0,0 +1,326 @@
<?xml version="1.0" encoding="UTF-8"?>
<SCL xmlns="http://www.iec.ch/61850/2003/SCL">
<Header id="" nameStructure="IEDName">
</Header>
<Communication>
<SubNetwork name="subnetwork1" type="8-MMS">
<Text>Station bus</Text>
<ConnectedAP iedName="simpleIO" apName="accessPoint1">
<GSE ldInst="GenericIO" cbName="gcbEvents">
<Address>
<P type="VLAN-ID">111</P>
<P type="VLAN-PRIORITY">4</P>
<P type="MAC-Address">01-0c-cd-01-00-01</P>
<P type="APPID">1000</P>
</Address>
</GSE>
<GSE ldInst="GenericIO" cbName="gcbAnalogValues">
<Address>
<P type="VLAN-ID">111</P>
<P type="VLAN-PRIORITY">4</P>
<P type="MAC-Address">01-0c-cd-01-00-01</P>
<P type="APPID">1000</P>
</Address>
</GSE>
</ConnectedAP>
</SubNetwork>
</Communication>
<IED name="simpleIO">
<Services>
<DynAssociation />
<GetDirectory />
<GetDataObjectDefinition />
<GetDataSetValue />
<DataSetDirectory />
<ReadWrite />
<GetCBValues />
<ConfLNs fixPrefix="true" fixLnInst="true" />
<GOOSE max="5" />
<GSSE max="5" />
<FileHandling />
<GSEDir />
<TimerActivatedControl />
</Services>
<AccessPoint name="accessPoint1">
<Server>
<Authentication />
<LDevice inst="GenericIO">
<LN0 lnClass="LLN0" lnType="LLN01" inst="">
<DataSet name="Events" desc="Events">
<FCDA ldInst="GenericIO" lnClass="GGIO" fc="ST" lnInst="1" doName="SPCSO1" daName="stVal" />
<FCDA ldInst="GenericIO" lnClass="GGIO" fc="ST" lnInst="1" doName="SPCSO2" daName="stVal" />
<FCDA ldInst="GenericIO" lnClass="GGIO" fc="ST" lnInst="1" doName="SPCSO3" daName="stVal" />
<FCDA ldInst="GenericIO" lnClass="GGIO" fc="ST" lnInst="1" doName="SPCSO4" daName="stVal" />
</DataSet>
<DataSet name="AnalogValues" desc="analog values">
<FCDA ldInst="GenericIO" lnClass="GGIO" fc="MX" lnInst="1" doName="AnIn1" />
<FCDA ldInst="GenericIO" lnClass="GGIO" fc="MX" lnInst="1" doName="AnIn2" />
<FCDA ldInst="GenericIO" lnClass="GGIO" fc="MX" lnInst="1" doName="AnIn3" />
<FCDA ldInst="GenericIO" lnClass="GGIO" fc="MX" lnInst="1" doName="AnIn4" />
</DataSet>
<ReportControl name="EventsRCB" confRev="1" datSet="Events" rptID="Events" buffered="false" intgPd="1000" bufTime="50">
<TrgOps period="true" />
<OptFields seqNum="true" timeStamp="true" dataSet="true" reasonCode="true" entryID="true" configRef="true" />
<RptEnabled max="1" />
</ReportControl>
<ReportControl name="AnalogValuesRCB" confRev="1" datSet="AnalogValues" rptID="AnalogValues" buffered="false" intgPd="1000" bufTime="50">
<TrgOps period="true" />
<OptFields seqNum="true" timeStamp="true" dataSet="true" reasonCode="true" entryID="true" configRef="true" />
<RptEnabled max="1" />
</ReportControl>
<LogControl name="EventLog" datSet="Events" logName="EventLog" logEna="false">
<TrgOps dchg="true" qchg="true" />
</LogControl>
<LogControl name="GeneralLog" datSet="" logName="" logEna="false">
<TrgOps dchg="true" qchg="true" />
</LogControl>
<Log />
<Log name="EventLog" />
<GSEControl appID="events" name="gcbEvents" type="GOOSE" datSet="Events" confRev="2"/>
<GSEControl appID="analog" name="gcbAnalogValues" type="GOOSE" datSet="AnalogValues" confRev="2"/>
<DOI name="Mod">
<DAI name="ctlModel">
<Val>status-only</Val>
</DAI>
</DOI>
</LN0>
<LN lnClass="LPHD" lnType="LPHD1" inst="1" prefix="" />
<LN lnClass="GGIO" lnType="GGIO1" inst="1" prefix="">
<DOI name="Mod">
<DAI name="ctlModel">
<Val>status-only</Val>
</DAI>
</DOI>
<DOI name="AnIn2">
<DAI name="mag" sAddr="101"/>
<DAI name="t" sAddr="102" />
</DOI>
<DOI name="SPCSO1">
<DAI name="ctlModel">
<Val>direct-with-normal-security</Val>
</DAI>
</DOI>
<DOI name="SPCSO2">
<DAI name="ctlModel">
<Val>direct-with-normal-security</Val>
</DAI>
</DOI>
<DOI name="SPCSO3">
<DAI name="ctlModel">
<Val>direct-with-normal-security</Val>
</DAI>
</DOI>
<DOI name="SPCSO4">
<DAI name="ctlModel">
<Val>direct-with-normal-security</Val>
</DAI>
</DOI>
</LN>
<LN lnClass="PDUP" lnType="PDUP" inst="1" prefix="" />
</LDevice>
</Server>
</AccessPoint>
</IED>
<DataTypeTemplates>
<LNodeType id="LLN01" lnClass="LLN0">
<DO name="Mod" type="ENC_Mod_status_only" />
<DO name="Beh" type="ENS_Beh" />
<DO name="Health" type="INS_1_Beh" />
<DO name="NamPlt" type="LPL_1_NamPlt" />
</LNodeType>
<LNodeType id="LPHD1" lnClass="LPHD">
<DO name="PhyNam" type="DPL_1_PhyNam" />
<DO name="PhyHealth" type="INS_1_Beh" />
<DO name="Proxy" type="SPS_1_Proxy" />
</LNodeType>
<LNodeType id="GGIO1" lnClass="GGIO">
<DO name="Mod" type="ENC_Mod_status_only" />
<DO name="Beh" type="ENS_Beh" />
<DO name="Health" type="INS_1_Beh" />
<DO name="NamPlt" type="LPL_2_NamPlt" />
<DO name="AnIn1" type="MV_1_AnIn1" />
<DO name="AnIn2" type="MV_1_AnIn1" />
<DO name="AnIn3" type="MV_1_AnIn1" />
<DO name="AnIn4" type="MV_1_AnIn1" />
<DO name="SPCSO1" type="SPC_2_SPCSO1" />
<DO name="SPCSO2" type="SPC_1_SPCSO2" />
<DO name="SPCSO3" type="SPC_1_SPCSO3" />
<DO name="SPCSO4" type="SPC_1_SPCSO1" />
<DO name="Ind1" type="SPS_1_Proxy" />
<DO name="Ind2" type="SPS_1_Proxy" />
<DO name="Ind3" type="SPS_1_Proxy" />
<DO name="Ind4" type="SPS_1_Proxy" />
</LNodeType>
<LNodeType id="PDUP" lnClass="PDUP">
<DO name="Beh" type="ENS_Beh" />
<DO name="Mod" type="ENC_Mod_status_only" />
<DO name="Str" type="ACD_Str" />
<DO name="Op" type="ACT_Op" />
<DO name="OpDlTmms" type="ING_SP" />
<DO name="RsDlTmms" type="ING_SP" />
</LNodeType>
<DOType id="ENS_Beh" cdc="ENS">
<DA name="stVal" fc="ST" bType="Enum" type="Beh" dchg="true" />
<DA name="q" fc="ST" bType="Quality" qchg="true" />
<DA name="t" fc="ST" bType="Timestamp" />
</DOType>
<DOType cdc="ENC" id="ENC_Mod_status_only">
<DA bType="Enum" dchg="true" fc="ST" name="stVal" type="Beh"/>
<DA bType="Quality" fc="ST" name="q" qchg="true"/>
<DA bType="Timestamp" fc="ST" name="t"/>
<DA bType="Enum" fc="CF" name="ctlModel" valKind="RO" type="CtlModels">
<Val>status-only</Val>
</DA>
</DOType>
<DOType cdc="ACD" id="ACD_Str">
<DA bType="BOOLEAN" dchg="true" fc="ST" name="general" />
<DA bType="Enum" dchg="true" fc="ST" name="dirGeneral" type="dirGeneral" />
<DA bType="Quality" fc="ST" name="q" qchg="true" />
<DA bType="Timestamp" fc="ST" name="t" />
</DOType>
<DOType cdc="ACT" id="ACT_Op">
<DA bType="BOOLEAN" dchg="true" fc="ST" name="general"/>
<DA bType="Quality" fc="ST" name="q" qchg="true"/>
<DA bType="Timestamp" fc="ST" name="t"/>
</DOType>
<DOType id="INC_1_Mod" cdc="INC">
<DA name="q" bType="Quality" fc="ST" qchg="true" />
<DA name="t" bType="Timestamp" fc="ST" />
<DA name="ctlModel" type="CtlModels" bType="Enum" fc="CF" />
</DOType>
<DOType id="INS_1_Beh" cdc="INS">
<DA name="stVal" bType="INT32" fc="ST" dchg="true" />
<DA name="q" bType="Quality" fc="ST" qchg="true" />
<DA name="t" bType="Timestamp" fc="ST" />
</DOType>
<DOType id="LPL_1_NamPlt" cdc="LPL">
<DA name="vendor" bType="VisString255" fc="DC" />
<DA name="swRev" bType="VisString255" fc="DC" />
<DA name="d" bType="VisString255" fc="DC" />
<DA name="configRev" bType="VisString255" fc="DC" />
<DA name="ldNs" bType="VisString255" fc="EX" />
</DOType>
<DOType id="DPL_1_PhyNam" cdc="DPL">
<DA name="vendor" bType="VisString255" fc="DC" />
</DOType>
<DOType id="SPS_1_Proxy" cdc="SPS">
<DA name="stVal" bType="BOOLEAN" fc="ST" dchg="true" />
<DA name="q" bType="Quality" fc="ST" qchg="true" />
<DA name="t" bType="Timestamp" fc="ST" />
</DOType>
<DOType id="LPL_2_NamPlt" cdc="LPL">
<DA name="vendor" bType="VisString255" fc="DC" />
<DA name="swRev" bType="VisString255" fc="DC" />
<DA name="d" bType="VisString255" fc="DC" />
</DOType>
<DOType id="MV_1_AnIn1" cdc="MV">
<DA name="mag" type="AnalogueValue_1" bType="Struct" fc="MX" dchg="true" />
<DA name="q" bType="Quality" fc="MX" qchg="true" />
<DA name="t" bType="Timestamp" fc="MX" />
</DOType>
<DOType id="SPC_1_SPCSO1" cdc="SPC">
<DA name="stVal" bType="BOOLEAN" fc="ST" dchg="true" />
<DA name="q" bType="Quality" fc="ST" qchg="true" />
<DA name="Oper" type="SPCOperate_1" bType="Struct" fc="CO" />
<DA name="ctlModel" type="CtlModels" bType="Enum" fc="CF" />
<DA name="t" bType="Timestamp" fc="ST" />
</DOType>
<DOType id="INC_2_Mod" cdc="INC">
<DA name="q" bType="Quality" fc="ST" qchg="true" />
<DA name="t" bType="Timestamp" fc="ST" />
<DA name="ctlModel" type="CtlModels" bType="Enum" fc="CF" />
</DOType>
<DOType id="SPC_2_SPCSO1" cdc="SPC">
<DA name="stVal" bType="BOOLEAN" fc="ST" dchg="true" />
<DA name="q" bType="Quality" fc="ST" qchg="true" />
<DA name="Oper" type="SPCOperate_1" bType="Struct" fc="CO" />
<DA name="ctlModel" type="CtlModels" bType="Enum" fc="CF" />
<DA name="t" bType="Timestamp" fc="ST" />
</DOType>
<DOType id="SPC_1_SPCSO2" cdc="SPC">
<DA name="stVal" bType="BOOLEAN" fc="ST" dchg="true" />
<DA name="q" bType="Quality" fc="ST" qchg="true" />
<DA name="Oper" type="SPCOperate_1" bType="Struct" fc="CO" />
<DA name="ctlModel" type="CtlModels" bType="Enum" fc="CF" />
<DA name="t" bType="Timestamp" fc="ST" />
</DOType>
<DOType id="SPC_1_SPCSO3" cdc="SPC">
<DA name="stVal" bType="BOOLEAN" fc="ST" dchg="true" />
<DA name="q" bType="Quality" fc="ST" qchg="true" />
<DA name="Oper" type="SPCOperate_1" bType="Struct" fc="CO" />
<DA name="ctlModel" type="CtlModels" bType="Enum" fc="CF" />
<DA name="t" bType="Timestamp" fc="ST" />
</DOType>
<DOType id="ING_SP" cdc="ING">
<DA name="setVal" bType="INT32" fc="SP" dchg="true" />
</DOType>
<DAType id="AnalogueValue_1">
<BDA name="f" bType="FLOAT32" />
</DAType>
<DAType id="Originator_1">
<BDA name="orCat" type="OrCat" bType="Enum" />
<BDA name="orIdent" bType="Octet64" />
</DAType>
<DAType id="SPCOperate_1">
<BDA name="ctlVal" bType="BOOLEAN" />
<BDA name="origin" type="Originator_1" bType="Struct" />
<BDA name="ctlNum" bType="INT8U" />
<BDA name="T" bType="Timestamp" />
<BDA name="Test" bType="BOOLEAN" />
<BDA name="Check" bType="Check" />
</DAType>
<EnumType id="Beh">
<EnumVal ord="1">on</EnumVal>
<EnumVal ord="2">blocked</EnumVal>
<EnumVal ord="3">test</EnumVal>
<EnumVal ord="4">test/blocked</EnumVal>
<EnumVal ord="5">off</EnumVal>
</EnumType>
<EnumType id="CtlModels">
<EnumVal ord="0">status-only</EnumVal>
<EnumVal ord="1">direct-with-normal-security</EnumVal>
<EnumVal ord="2">sbo-with-normal-security</EnumVal>
<EnumVal ord="3">direct-with-enhanced-security</EnumVal>
<EnumVal ord="4">sbo-with-enhanced-security</EnumVal>
</EnumType>
<EnumType id="OrCat">
<EnumVal ord="0">not-supported</EnumVal>
<EnumVal ord="1">bay-control</EnumVal>
<EnumVal ord="2">station-control</EnumVal>
<EnumVal ord="3">remote-control</EnumVal>
<EnumVal ord="4">automatic-bay</EnumVal>
<EnumVal ord="5">automatic-station</EnumVal>
<EnumVal ord="6">automatic-remote</EnumVal>
<EnumVal ord="7">maintenance</EnumVal>
<EnumVal ord="8">process</EnumVal>
</EnumType>
<EnumType id="dirGeneral">
<EnumVal ord="0">unknown</EnumVal>
<EnumVal ord="1">forward</EnumVal>
<EnumVal ord="2">backward</EnumVal>
<EnumVal ord="3">both</EnumVal>
</EnumType>
</DataTypeTemplates>
</SCL>

View file

@ -145,6 +145,7 @@ main(int argc, char** argv)
IedServer_setLogStorage(iedServer, "GenericIO/LLN0$EventLog", statusLog);
#if 0
uint64_t entryID = LogStorage_addEntry(statusLog, Hal_getTimeInMs());
MmsValue* value = MmsValue_newIntegerFromInt32(123);
@ -167,6 +168,8 @@ main(int argc, char** argv)
LogStorage_addEntryData(statusLog, entryID, "simpleIOGenerioIO/GPIO1$ST$SPCSO1$t", blob, blobSize, 0);
LogStorage_getEntries(statusLog, 0, Hal_getTimeInMs(), entryCallback, (LogEntryDataCallback) entryDataCallback, NULL);
#endif
/* MMS server will be instructed to start listening to client connections. */
IedServer_start(iedServer, 102);

View file

@ -108,7 +108,7 @@
<RptEnabled max="3" />
</ReportControl>
<LogControl name="EventLog" datSet="Events" logName="EventLog">
<LogControl name="EventLog" datSet="Events" logName="EventLog" logEna="true">
<TrgOps dchg="true" qchg="true" />
</LogControl>

View file

@ -15,7 +15,7 @@
#include "platform_endian.h"
#define LIBIEC61850_VERSION "0.9.2"
#define LIBIEC61850_VERSION "0.9.3"
#ifndef CONFIG_DEFAULT_MMS_VENDOR_NAME
#define CONFIG_DEFAULT_MMS_VENDOR_NAME "libiec61850.com"

View file

@ -331,11 +331,19 @@ Socket_connect(Socket self, const char* address, int port)
timeout.tv_sec = self->connectTimeout / 1000;
timeout.tv_usec = (self->connectTimeout % 1000) * 1000;
if (select(self->fd + 1, NULL, &fdSet, NULL, &timeout) <= 0)
return false;
else
return true;
if (select(self->fd + 1, NULL, &fdSet , NULL, &timeout) == 1) {
int so_error;
socklen_t len = sizeof so_error;
getsockopt(self->fd, SOL_SOCKET, SO_ERROR, &so_error, &len);
if (so_error == 0)
return true;
}
close (self->fd);
return false;
}
char*

View file

@ -262,6 +262,7 @@ TcpSocket_create()
Socket self = (Socket) GLOBAL_MALLOC(sizeof(struct sSocket));
self->fd = INVALID_SOCKET;
self->connectTimeout = 5000;
return self;
}

View file

@ -871,6 +871,12 @@ ControlObjectClient_setSynchroCheck(ControlObjectClient self, bool value)
self->synchroCheck = value;
}
void
ControlObjectClient_setTestMode(ControlObjectClient self, bool value)
{
self->test = value;
}
void
ControlObjectClient_setLastApplError(ControlObjectClient self, LastApplError lastApplError)
{

View file

@ -1502,7 +1502,7 @@ LastApplError
ControlObjectClient_getLastApplError(ControlObjectClient self);
void
ControlObjectClient_setTestMode(ControlObjectClient self);
ControlObjectClient_setTestMode(ControlObjectClient self, bool value);
void
ControlObjectClient_setOrigin(ControlObjectClient self, const char* orIdent, int orCat);

View file

@ -156,9 +156,9 @@ typedef enum {
typedef enum {
LogicalDeviceModelType,
LogicalNodeModelType,
DataObjectModelType,
DataAttributeModelType
LogicalNodeModelType,
DataObjectModelType,
DataAttributeModelType
} ModelNodeType;
struct sIedModel {
@ -176,89 +176,89 @@ struct sIedModel {
struct sLogicalDevice {
ModelNodeType modelType;
char* name;
ModelNode* parent;
ModelNode* sibling;
ModelNode* firstChild;
char* name;
ModelNode* parent;
ModelNode* sibling;
ModelNode* firstChild;
};
struct sModelNode {
ModelNodeType modelType;
char* name;
ModelNode* parent;
ModelNode* sibling;
ModelNode* firstChild;
ModelNodeType modelType;
char* name;
ModelNode* parent;
ModelNode* sibling;
ModelNode* firstChild;
};
struct sLogicalNode {
ModelNodeType modelType;
char* name;
ModelNode* parent;
ModelNode* sibling;
ModelNode* firstChild;
ModelNodeType modelType;
char* name;
ModelNode* parent;
ModelNode* sibling;
ModelNode* firstChild;
};
struct sDataObject {
ModelNodeType modelType;
char* name;
ModelNode* parent;
ModelNode* sibling;
ModelNode* firstChild;
ModelNodeType modelType;
char* name;
ModelNode* parent;
ModelNode* sibling;
ModelNode* firstChild;
int elementCount; /* > 0 if this is an array */
int elementCount; /* > 0 if this is an array */
};
struct sDataAttribute {
ModelNodeType modelType;
char* name;
ModelNode* parent;
ModelNode* sibling;
ModelNode* firstChild;
ModelNodeType modelType;
char* name;
ModelNode* parent;
ModelNode* sibling;
ModelNode* firstChild;
int elementCount; /* > 0 if this is an array */
int elementCount; /* > 0 if this is an array */
FunctionalConstraint fc;
DataAttributeType type;
FunctionalConstraint fc;
DataAttributeType type;
uint8_t triggerOptions; /* TRG_OPT_DATA_CHANGED | TRG_OPT_QUALITY_CHANGED | TRG_OPT_DATA_UPDATE */
uint8_t triggerOptions; /* TRG_OPT_DATA_CHANGED | TRG_OPT_QUALITY_CHANGED | TRG_OPT_DATA_UPDATE */
MmsValue* mmsValue;
MmsValue* mmsValue;
uint32_t sAddr;
uint32_t sAddr;
};
typedef struct sDataSetEntry {
char* logicalDeviceName;
bool isLDNameDynamicallyAllocated;
char* variableName;
int index;
char* componentName;
MmsValue* value;
struct sDataSetEntry* sibling;
char* logicalDeviceName;
bool isLDNameDynamicallyAllocated;
char* variableName;
int index;
char* componentName;
MmsValue* value;
struct sDataSetEntry* sibling;
} DataSetEntry;
struct sDataSet {
char* logicalDeviceName;
char* name; /* eg. MMXU1$dataset1 */
int elementCount;
DataSetEntry* fcdas;
DataSet* sibling;
char* logicalDeviceName;
char* name; /* eg. MMXU1$dataset1 */
int elementCount;
DataSetEntry* fcdas;
DataSet* sibling;
};
struct sReportControlBlock {
LogicalNode* parent;
char* name;
char* rptId;
bool buffered;
char* dataSetName; /* pre loaded with relative name in logical node */
LogicalNode* parent;
char* name;
char* rptId;
bool buffered;
char* dataSetName; /* pre loaded with relative name in logical node */
uint32_t confRef; /* ConfRef - configuration revision */
uint8_t trgOps; /* TrgOps - trigger conditions */
uint8_t options; /* OptFlds */
uint32_t bufferTime; /* BufTm - time to buffer events until a report is generated */
uint32_t intPeriod; /* IntgPd - integrity period */
uint32_t confRef; /* ConfRef - configuration revision */
uint8_t trgOps; /* TrgOps - trigger conditions */
uint8_t options; /* OptFlds */
uint32_t bufferTime; /* BufTm - time to buffer events until a report is generated */
uint32_t intPeriod; /* IntgPd - integrity period */
ReportControlBlock* sibling; /* next control block in list or NULL if this is the last entry */
ReportControlBlock* sibling; /* next control block in list or NULL if this is the last entry */
};
struct sLogControlBlock {
@ -386,6 +386,12 @@ ModelNode_getChildWithFc(ModelNode* self, const char* name, FunctionalConstraint
char*
ModelNode_getObjectReference(ModelNode* self, char* objectReference);
/**
*
*/
ModelNodeType
ModelNode_getType(ModelNode* self);
/**
* \brief Set the name of the IED
*

View file

@ -791,11 +791,6 @@ createLogControlBlock(MmsMapping* self, LogControlBlock* logControlBlock,
prepareLogControl(logControl);
if (logControl->enabled)
enableLogging(logControl);
LogControl_updateLogEna(logControl);
return lcb;
}
@ -829,6 +824,11 @@ Logging_createLCBs(MmsMapping* self, MmsDomain* domain, LogicalNode* logicalNode
if (logControlBlock->logRef != NULL)
logControl->logInstance = getLogInstanceByLogRef(self, logControlBlock->logRef);
if (logControl->enabled)
enableLogging(logControl);
LogControl_updateLogEna(logControl);
LinkedList_add(self->logControls, logControl);
currentLcb++;

View file

@ -621,8 +621,6 @@ MmsMapping_configureSettingGroups(MmsMapping* self)
MmsValue_setUint16(resvTms, 0U);
settingGroup->sgcbMmsValues = values;
break;
}
else if (DEBUG_IED_SERVER)
printf("IED_SERVER: Values for SGCB do not exist\n");

View file

@ -1670,6 +1670,9 @@ removeAllGIReportsFromReportBuffer(ReportBuffer* reportBuffer)
currentReport = currentReport->next;
}
}
if (reportBuffer->oldestReport == NULL)
reportBuffer->lastEnqueuedReport = NULL;
}
static void

View file

@ -387,6 +387,7 @@ SettingGroupControlBlock_create(LogicalNode* parent, uint8_t actSG, uint8_t numO
self->actSG = actSG;
self->numOfSGs = numOfSGs;
self->sibling = NULL;
self->editSG = 0;
LogicalNode_addSettingGroupControlBlock(parent, self);

View file

@ -639,6 +639,12 @@ ModelNode_getChildWithFc(ModelNode* self, const char* name, FunctionalConstraint
return matchingNode;
}
ModelNodeType
ModelNode_getType(ModelNode* self)
{
return self->modelType;
}
LogicalNode*
LogicalDevice_getLogicalNode(LogicalDevice* self, const char* nodeName)
{

View file

@ -1,7 +1,7 @@
/*
* MmsValue.c
* mms_value.c
*
* Copyright 2013-2015 Michael Zillgith
* Copyright 2013-2016 Michael Zillgith
*
* This file is part of libIEC61850.
*

View file

@ -550,3 +550,5 @@ EXPORTS
SV_ASDU_addFLOAT64
SV_ASDU_setFLOAT64
MmsConnection_setRawMessageHandler
ModelNode_getType
ControlObjectClient_setTestMode

View file

@ -626,3 +626,6 @@ EXPORTS
SV_ASDU_addFLOAT64
SV_ASDU_setFLOAT64
MmsConnection_setRawMessageHandler
ModelNode_getType
ControlObjectClient_setTestMode

Binary file not shown.

Binary file not shown.

View file

@ -27,9 +27,9 @@ public class DynamicCodeGenerator {
public static void main(String[] args) throws FileNotFoundException, SclParserException {
System.out.println("Dynamic code generator");
if (args.length < 1) {
System.out.println("Dynamic code generator");
System.out.println("Usage: gencode <ICD file> [-ied <ied-name>] [-ap <access-point-name>] [<output filename>]");
System.exit(1);
}
@ -66,8 +66,10 @@ public class DynamicCodeGenerator {
}
InputStream stream = new FileInputStream(icdFile);
SclParser.withOutput = false;
SclParser sclParser = new SclParser(stream);
SclParser sclParser = new SclParser(stream, false);
createDynamicCode(sclParser);
}
@ -107,7 +109,7 @@ public class DynamicCodeGenerator {
for (DataObjectType doType : doTypeDefs) {
String functionPrototype = "DataObject*\nDO_" + doType.getId()
+ "_createInstance(char* doName, ModelNode* parent);";
+ "_createInstance(char* doName, ModelNode* parent, int arrayCount);";
functionPrototypes.add(functionPrototype);
}
@ -119,6 +121,16 @@ public class DynamicCodeGenerator {
functionPrototypes.add(functionPrototype);
}
/* Print header */
System.out.println("#include \"iec61850_server.h\"");
System.out.println();
for (String prototype : functionPrototypes) {
System.out.println(prototype);
System.out.println();
}
for (LogicalNodeType lnType : lnTypeDefs) {
@ -134,8 +146,8 @@ public class DynamicCodeGenerator {
out.println(" LogicalNode* newLn = LogicalNode_create(lnName, parent);\n");
List<DataObjectDefinition> doDefs = lnType.getDataObjectDefinitions();
for (DataObjectDefinition objDef : doDefs) {
out.printf(" DO_%s_createInstance(\"%s\", (ModelNode*) newLn);\n", objDef.getType(), objDef.getName());
for (DataObjectDefinition objDef : doDefs) {
out.printf(" DO_%s_createInstance(\"%s\", (ModelNode*) newLn, %d);\n", objDef.getType(), objDef.getName(), objDef.getCount());
}
out.println("\n return newLn;");
@ -150,9 +162,10 @@ public class DynamicCodeGenerator {
out.println();
out.println(" */");
out.println("DataObject*");
out.printf("DO_%s_createInstance(char* doName, ModelNode* parent)\n", doType.getId());
out.printf("DO_%s_createInstance(char* doName, ModelNode* parent, int arrayCount)\n", doType.getId());
out.println("{");
out.println(" DataObject* newDo = DataObject_create(doName, parent);\n");
out.println(" DataObject* newDo = DataObject_create(doName, parent, arrayCount);\n");
for (DataAttributeDefinition dad : doType.getDataAttributes()) {
@ -199,7 +212,7 @@ public class DynamicCodeGenerator {
for (DataAttributeDefinition dad : daType.getSubDataAttributes()) {
if (dad.getAttributeType() == AttributeType.CONSTRUCTED) {
out.print(" DA_" + dad.getType() + "_createInstance(\"" + dad.getName() + "\", ");
out.println("(ModelNode*) newDo, fc, triggerOptions);");
out.println("(ModelNode*) newDa, fc, triggerOptions);");
}
else {
out.print(" DataAttribute_create(\"" + dad.getName() + "\", ");
@ -212,7 +225,7 @@ public class DynamicCodeGenerator {
}
}
out.println("\n return newDo;");
out.println("\n return newDa;");
out.println("}\n\n");
}