libiec61850  1.5.3
iec61850_cdc.h
Go to the documentation of this file.
1 /*
2  * cdc.h
3  *
4  * Copyright 2014 Michael Zillgith
5  *
6  * This file is part of libIEC61850.
7  *
8  * libIEC61850 is free software: you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation, either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * libIEC61850 is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with libIEC61850. If not, see <http://www.gnu.org/licenses/>.
20  *
21  * See COPYING file for the complete license text.
22  */
23 
24 #ifndef CDC_H_
25 #define CDC_H_
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
31 
47 #define CDC_OPTION_PICS_SUBST (1 << 0)
48 #define CDC_OPTION_BLK_ENA (1 << 1)
49 
51 #define CDC_OPTION_DESC (1 << 2)
52 
54 #define CDC_OPTION_DESC_UNICODE (1 << 3)
55 
57 #define CDC_OPTION_AC_DLNDA (1 << 4)
58 
60 #define CDC_OPTION_AC_DLN (1 << 5)
61 
63 #define CDC_OPTION_UNIT (1 << 6)
64 
65 #define CDC_OPTION_FROZEN_VALUE (1 << 7)
66 
67 #define CDC_OPTION_ADDR (1 << 8)
68 #define CDC_OPTION_ADDINFO (1 << 9)
69 
70 #define CDC_OPTION_INST_MAG (1 << 10)
71 #define CDC_OPTION_RANGE (1 << 11)
72 
73 #define CDC_OPTION_UNIT_MULTIPLIER (1 << 12)
74 
75 #define CDC_OPTION_AC_SCAV (1 << 13)
76 
77 #define CDC_OPTION_MIN (1 << 14)
78 #define CDC_OPTION_MAX (1 << 15)
79 
80 #define CDC_OPTION_AC_CLC_O (1 << 16)
81 
82 #define CDC_OPTION_RANGE_ANG (1 << 17)
83 
84 #define CDC_OPTION_PHASE_A (1 << 18)
85 #define CDC_OPTION_PHASE_B (1 << 19)
86 #define CDC_OPTION_PHASE_C (1 << 20)
87 
88 #define CDC_OPTION_PHASE_NEUT (1 << 21)
89 
90 #define CDC_OPTION_PHASES_ABC (CDC_OPTION_PHASE_A | CDC_OPTION_PHASE_B | CDC_OPTION_PHASE_C)
91 
92 #define CDC_OPTION_PHASES_ALL (CDC_OPTION_PHASE_A | CDC_OPTION_PHASE_B | CDC_OPTION_PHASE_C | CDC_OPTION_PHASE_NEUT)
93 
94 #define CDC_OPTION_STEP_SIZE (1 << 22)
95 
96 #define CDC_OPTION_ANGLE_REF (1 << 23)
97 
99 #define CDC_OPTION_DPL_HWREV (1 << 17)
100 #define CDC_OPTION_DPL_SWREV (1 << 18)
101 #define CDC_OPTION_DPL_SERNUM (1 << 19)
102 #define CDC_OPTION_DPL_MODEL (1 << 20)
103 #define CDC_OPTION_DPL_LOCATION (1 << 21)
104 
106 #define CDC_OPTION_AC_LN0_M (1 << 24)
107 #define CDC_OPTION_AC_LN0_EX (1 << 25)
108 #define CDC_OPTION_AC_DLD_M (1 << 26)
109 
113 #define CDC_CTL_MODEL_NONE 0
114 #define CDC_CTL_MODEL_DIRECT_NORMAL 1
115 #define CDC_CTL_MODEL_SBO_NORMAL 2
116 #define CDC_CTL_MODEL_DIRECT_ENHANCED 3
117 #define CDC_CTL_MODEL_SBO_ENHANCED 4
118 
119 #define CDC_CTL_MODEL_HAS_CANCEL (1 << 4)
120 #define CDC_CTL_MODEL_IS_TIME_ACTIVATED (1 << 5)
121 
122 #define CDC_CTL_OPTION_ORIGIN (1 << 6)
123 #define CDC_CTL_OPTION_CTL_NUM (1 << 7)
124 #define CDC_CTL_OPTION_ST_SELD (1 << 8)
125 #define CDC_CTL_OPTION_OP_RCVD (1 << 9)
126 #define CDC_CTL_OPTION_OP_OK (1 << 10)
127 #define CDC_CTL_OPTION_T_OP_OK (1 << 11)
128 #define CDC_CTL_OPTION_SBO_TIMEOUT (1 << 12)
129 #define CDC_CTL_OPTION_SBO_CLASS (1 << 13)
130 #define CDC_CTL_OPTION_OPER_TIMEOUT (1 << 14)
131 
132 /****************************************************
133  * Constructed Attribute Classes (CAC)
134  ***************************************************/
135 
136 LIB61850_API DataAttribute*
137 CAC_AnalogueValue_create(const char* name, ModelNode* parent, FunctionalConstraint fc, uint8_t triggerOptions,
138  bool isIntegerNotFloat);
139 
140 
146 LIB61850_API DataAttribute*
147 CAC_ValWithTrans_create(const char* name, ModelNode* parent, FunctionalConstraint fc, uint8_t triggerOptions, bool hasTransientIndicator);
148 
149 
153 LIB61850_API DataAttribute*
154 CAC_Vector_create(const char* name, ModelNode* parent, uint32_t options, FunctionalConstraint fc, uint8_t triggerOptions);
155 
156 LIB61850_API DataAttribute*
157 CAC_Point_create(const char* name, ModelNode* parent, FunctionalConstraint fc, uint8_t triggerOptions, bool hasZVal);
158 
159 LIB61850_API DataAttribute*
160 CAC_ScaledValueConfig_create(const char* name, ModelNode* parent);
161 
162 LIB61850_API DataAttribute*
163 CAC_Unit_create(const char* name, ModelNode* parent, bool hasMagnitude);
164 
165 LIB61850_API DataAttribute*
166 CDA_OperBoolean(ModelNode* parent, bool isTImeActivated);
167 
168 /****************************************************
169  * Common Data Classes (CDC)
170  ***************************************************/
171 
172 LIB61850_API DataObject*
173 CDC_SPS_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
174 
175 LIB61850_API DataObject*
176 CDC_DPS_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
177 
178 LIB61850_API DataObject*
179 CDC_INS_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
180 
181 LIB61850_API DataObject*
182 CDC_ENS_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
183 
184 LIB61850_API DataObject*
185 CDC_BCR_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
186 
187 LIB61850_API DataObject*
188 CDC_VSS_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
189 
205 LIB61850_API DataObject*
206 CDC_SEC_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
207 
225 LIB61850_API DataObject*
226 CDC_MV_create(const char* dataObjectName, ModelNode* parent, uint32_t options, bool isIntegerNotFloat);
227 
232 LIB61850_API DataObject*
233 CDC_CMV_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
234 
253 LIB61850_API DataObject*
254 CDC_SAV_create(const char* dataObjectName, ModelNode* parent, uint32_t options, bool isIntegerNotFloat);
255 
277 LIB61850_API DataObject*
278 CDC_LPL_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
279 
301 LIB61850_API DataObject*
302 CDC_DPL_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
303 
304 LIB61850_API DataObject*
305 CDC_HST_create(const char* dataObjectName, ModelNode* parent, uint32_t options, uint16_t maxPts);
306 
325 LIB61850_API DataObject*
326 CDC_ACD_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
327 
331 LIB61850_API DataObject*
332 CDC_ACT_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
333 
341 LIB61850_API DataObject*
342 CDC_SPG_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
343 
351 LIB61850_API DataObject*
352 CDC_VSG_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
353 
361 LIB61850_API DataObject*
362 CDC_ENG_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
363 
375 LIB61850_API DataObject*
376 CDC_ING_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
377 
389 LIB61850_API DataObject*
390 CDC_ASG_create(const char* dataObjectName, ModelNode* parent, uint32_t options, bool isIntegerNotFloat);
391 
398 LIB61850_API DataObject*
399 CDC_WYE_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
400 
407 LIB61850_API DataObject*
408 CDC_DEL_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
409 
410 /***************************
411  * Controls
412  ***************************/
413 
419 LIB61850_API DataObject*
420 CDC_SPC_create(const char* dataObjectName, ModelNode* parent, uint32_t options, uint32_t controlOptions);
421 
437 LIB61850_API DataObject*
438 CDC_DPC_create(const char* dataObjectName, ModelNode* parent, uint32_t options, uint32_t controlOptions);
439 
459 LIB61850_API DataObject*
460 CDC_INC_create(const char* dataObjectName, ModelNode* parent, uint32_t options, uint32_t controlOptions);
461 
477 LIB61850_API DataObject*
478 CDC_ENC_create(const char* dataObjectName, ModelNode* parent, uint32_t options, uint32_t controlOptions);
479 
496 LIB61850_API DataObject*
497 CDC_BSC_create(const char* dataObjectName, ModelNode* parent, uint32_t options, uint32_t controlOptions, bool hasTransientIndicator);
498 
515 LIB61850_API DataObject*
516 CDC_ISC_create(const char* dataObjectName, ModelNode* parent, uint32_t options, uint32_t controlOptions, bool hasTransientIndicator);
517 
536 LIB61850_API DataObject*
537 CDC_APC_create(const char* dataObjectName, ModelNode* parent, uint32_t options, uint32_t controlOptions, bool isIntegerNotFloat);
538 
558 LIB61850_API DataObject*
559 CDC_BAC_create(const char* dataObjectName, ModelNode* parent, uint32_t options, uint32_t controlOptions, bool isIntegerNotFloat);
560 
562 #define CDC_OPTION_61400_MIN_MX_VAL (1 << 10)
563 
565 #define CDC_OPTION_61400_MAX_MX_VAL (1 << 11)
566 
568 #define CDC_OPTION_61400_TOT_AV_VAL (1 << 12)
569 
571 #define CDC_OPTION_61400_SDV_VAL (1 << 13)
572 
574 #define CDC_OPTION_61400_INC_RATE (1 << 14)
575 
577 #define CDC_OPTION_61400_DEC_RATE (1 << 15)
578 
580 #define CDC_OPTION_61400_SP_ACS (1 << 16)
581 
583 #define CDC_OPTION_61400_CHA_PER_RS (1 << 17)
584 
586 #define CDC_OPTION_61400_CM_ACS (1 << 18)
587 
589 #define CDC_OPTION_61400_TM_TOT (1 << 19)
590 
592 #define CDC_OPTION_61400_COUNTING_DAILY (1 << 20)
593 
595 #define CDC_OPTION_61400_COUNTING_MONTHLY (1 << 21)
596 
598 #define CDC_OPTION_61400_COUNTING_YEARLY (1 << 22)
599 
601 #define CDC_OPTION_61400_COUNTING_TOTAL (1 << 23)
602 
604 #define CDC_OPTION_61400_COUNTING_ALL (CDC_OPTION_61400_COUNTING_DAILY | CDC_OPTION_61400_COUNTING_MONTHLY | CDC_OPTION_61400_COUNTING_YEARLY | CDC_OPTION_61400_COUNTING_TOTAL)
605 
606 LIB61850_API DataObject*
607 CDC_SPV_create(const char* dataObjectName, ModelNode* parent,
608  uint32_t options,
609  uint32_t controlOptions,
610  uint32_t wpOptions,
611  bool hasChaManRs);
612 
613 LIB61850_API DataObject*
614 CDC_STV_create(const char* dataObjectName, ModelNode* parent,
615  uint32_t options,
616  uint32_t controlOptions,
617  uint32_t wpOptions,
618  bool hasOldStatus);
619 
620 LIB61850_API DataObject*
621 CDC_CMD_create(const char* dataObjectName, ModelNode* parent,
622  uint32_t options,
623  uint32_t controlOptions,
624  uint32_t wpOptions,
625  bool hasOldStatus,
626  bool hasCmTm,
627  bool hasCmCt);
628 
629 LIB61850_API DataObject*
630 CDC_ALM_create(const char* dataObjectName, ModelNode* parent,
631  uint32_t options,
632  uint32_t controlOptions,
633  uint32_t wpOptions,
634  bool hasOldStatus);
635 
636 LIB61850_API DataObject*
637 CDC_CTE_create(const char* dataObjectName, ModelNode* parent,
638  uint32_t options,
639  uint32_t controlOptions,
640  uint32_t wpOptions,
641  bool hasHisRs);
642 
643 LIB61850_API DataObject*
644 CDC_TMS_create(const char* dataObjectName, ModelNode* parent,
645  uint32_t options,
646  uint32_t controlOptions,
647  uint32_t wpOptions,
648  bool hasHisRs);
649 
654 #ifdef __cplusplus
655 }
656 #endif
657 
658 #endif /* CDC_H_ */
LIB61850_API DataObject * CDC_ACD_create(const char *dataObjectName, ModelNode *parent, uint32_t options)
Directional protection activation information (ACD)
LIB61850_API DataObject * CDC_ASG_create(const char *dataObjectName, ModelNode *parent, uint32_t options, bool isIntegerNotFloat)
Analogue Setting (ASG)
LIB61850_API DataObject * CDC_BSC_create(const char *dataObjectName, ModelNode *parent, uint32_t options, uint32_t controlOptions, bool hasTransientIndicator)
Controllable enumerated status (ENC)
LIB61850_API DataObject * CDC_ISC_create(const char *dataObjectName, ModelNode *parent, uint32_t options, uint32_t controlOptions, bool hasTransientIndicator)
Integer controlled step position information (ISC)
LIB61850_API DataObject * CDC_VSG_create(const char *dataObjectName, ModelNode *parent, uint32_t options)
Visible string setting (VSG)
LIB61850_API DataObject * CDC_HST_create(const char *dataObjectName, ModelNode *parent, uint32_t options, uint16_t maxPts)
LIB61850_API DataObject * CDC_ALM_create(const char *dataObjectName, ModelNode *parent, uint32_t options, uint32_t controlOptions, uint32_t wpOptions, bool hasOldStatus)
LIB61850_API DataAttribute * CDA_OperBoolean(ModelNode *parent, bool isTImeActivated)
LIB61850_API DataAttribute * CAC_Unit_create(const char *name, ModelNode *parent, bool hasMagnitude)
LIB61850_API DataObject * CDC_SPV_create(const char *dataObjectName, ModelNode *parent, uint32_t options, uint32_t controlOptions, uint32_t wpOptions, bool hasChaManRs)
LIB61850_API DataObject * CDC_DPS_create(const char *dataObjectName, ModelNode *parent, uint32_t options)
LIB61850_API DataObject * CDC_VSS_create(const char *dataObjectName, ModelNode *parent, uint32_t options)
LIB61850_API DataObject * CDC_SEC_create(const char *dataObjectName, ModelNode *parent, uint32_t options)
create a new SEC (Security violation) CDC instance (data object)
LIB61850_API DataObject * CDC_SAV_create(const char *dataObjectName, ModelNode *parent, uint32_t options, bool isIntegerNotFloat)
create a new SAV (Sampled analog value) CDC instance (data object)
LIB61850_API DataObject * CDC_SPC_create(const char *dataObjectName, ModelNode *parent, uint32_t options, uint32_t controlOptions)
Controllable single point (SPC)
LIB61850_API DataObject * CDC_TMS_create(const char *dataObjectName, ModelNode *parent, uint32_t options, uint32_t controlOptions, uint32_t wpOptions, bool hasHisRs)
LIB61850_API DataObject * CDC_APC_create(const char *dataObjectName, ModelNode *parent, uint32_t options, uint32_t controlOptions, bool isIntegerNotFloat)
Controllable analogue process value (APC)
LIB61850_API DataObject * CDC_WYE_create(const char *dataObjectName, ModelNode *parent, uint32_t options)
Phase to ground/neutral related measured values of a three-phase system (WYE)
LIB61850_API DataObject * CDC_ENC_create(const char *dataObjectName, ModelNode *parent, uint32_t options, uint32_t controlOptions)
Controllable enumerated status (ENC)
LIB61850_API DataObject * CDC_SPG_create(const char *dataObjectName, ModelNode *parent, uint32_t options)
Single point setting (SPG)
LIB61850_API DataObject * CDC_LPL_create(const char *dataObjectName, ModelNode *parent, uint32_t options)
create a new LPL (Logical node name plate) CDC instance (data object)
LIB61850_API DataObject * CDC_DPL_create(const char *dataObjectName, ModelNode *parent, uint32_t options)
create a new DPL (Device name plate) CDC instance (data object)
LIB61850_API DataObject * CDC_ING_create(const char *dataObjectName, ModelNode *parent, uint32_t options)
Integer status setting (ING)
LIB61850_API DataAttribute * CAC_ScaledValueConfig_create(const char *name, ModelNode *parent)
LIB61850_API DataObject * CDC_CTE_create(const char *dataObjectName, ModelNode *parent, uint32_t options, uint32_t controlOptions, uint32_t wpOptions, bool hasHisRs)
LIB61850_API DataAttribute * CAC_ValWithTrans_create(const char *name, ModelNode *parent, FunctionalConstraint fc, uint8_t triggerOptions, bool hasTransientIndicator)
create a ValWithTrans constructed data attribute
LIB61850_API DataObject * CDC_INC_create(const char *dataObjectName, ModelNode *parent, uint32_t options, uint32_t controlOptions)
Controllable integer status (INC)
LIB61850_API DataObject * CDC_DPC_create(const char *dataObjectName, ModelNode *parent, uint32_t options, uint32_t controlOptions)
Controllable double point (DPC)
LIB61850_API DataObject * CDC_BCR_create(const char *dataObjectName, ModelNode *parent, uint32_t options)
LIB61850_API DataObject * CDC_CMV_create(const char *dataObjectName, ModelNode *parent, uint32_t options)
LIB61850_API DataObject * CDC_DEL_create(const char *dataObjectName, ModelNode *parent, uint32_t options)
Phase to phase related measured values of a three-phase system (DEL)
LIB61850_API DataObject * CDC_INS_create(const char *dataObjectName, ModelNode *parent, uint32_t options)
LIB61850_API DataObject * CDC_ACT_create(const char *dataObjectName, ModelNode *parent, uint32_t options)
Protection activation information (ACT)
LIB61850_API DataAttribute * CAC_Vector_create(const char *name, ModelNode *parent, uint32_t options, FunctionalConstraint fc, uint8_t triggerOptions)
LIB61850_API DataAttribute * CAC_AnalogueValue_create(const char *name, ModelNode *parent, FunctionalConstraint fc, uint8_t triggerOptions, bool isIntegerNotFloat)
LIB61850_API DataObject * CDC_MV_create(const char *dataObjectName, ModelNode *parent, uint32_t options, bool isIntegerNotFloat)
create a new MV (Measured value) CDC instance (data object)
LIB61850_API DataObject * CDC_STV_create(const char *dataObjectName, ModelNode *parent, uint32_t options, uint32_t controlOptions, uint32_t wpOptions, bool hasOldStatus)
LIB61850_API DataObject * CDC_ENG_create(const char *dataObjectName, ModelNode *parent, uint32_t options)
Enumerated status setting (ENG)
LIB61850_API DataObject * CDC_BAC_create(const char *dataObjectName, ModelNode *parent, uint32_t options, uint32_t controlOptions, bool isIntegerNotFloat)
Binary controlled ananlogue process value (BAC)
LIB61850_API DataObject * CDC_SPS_create(const char *dataObjectName, ModelNode *parent, uint32_t options)
LIB61850_API DataObject * CDC_ENS_create(const char *dataObjectName, ModelNode *parent, uint32_t options)
LIB61850_API DataObject * CDC_CMD_create(const char *dataObjectName, ModelNode *parent, uint32_t options, uint32_t controlOptions, uint32_t wpOptions, bool hasOldStatus, bool hasCmTm, bool hasCmCt)
LIB61850_API DataAttribute * CAC_Point_create(const char *name, ModelNode *parent, FunctionalConstraint fc, uint8_t triggerOptions, bool hasZVal)
FunctionalConstraint
Definition: iec61850_common.h:264