You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
659 lines
21 KiB
C
659 lines
21 KiB
C
/*
|
|
* cdc.h
|
|
*
|
|
* Copyright 2014 Michael Zillgith
|
|
*
|
|
* This file is part of libIEC61850.
|
|
*
|
|
* libIEC61850 is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* libIEC61850 is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with libIEC61850. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
* See COPYING file for the complete license text.
|
|
*/
|
|
|
|
#ifndef CDC_H_
|
|
#define CDC_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
/** \addtogroup server_api_group
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @defgroup COMMON_DATA_CLASSES Helper functions to create common data classes (CDC) using the dynamic model API
|
|
*
|
|
* Currently supports CDCs from IEC 61850-7-3:2010 (Edition 2)
|
|
*
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* \brief optional parts of CDCs
|
|
*/
|
|
#define CDC_OPTION_PICS_SUBST (1 << 0)
|
|
#define CDC_OPTION_BLK_ENA (1 << 1)
|
|
|
|
/** Add d (description) data attribute */
|
|
#define CDC_OPTION_DESC (1 << 2)
|
|
|
|
/** Add dU (unicode description) data attribute */
|
|
#define CDC_OPTION_DESC_UNICODE (1 << 3)
|
|
|
|
/** Add cdcNs and cdcName required when a CDC is an extension to the standard */
|
|
#define CDC_OPTION_AC_DLNDA (1 << 4)
|
|
|
|
/** Add dataNs (data namespace) required for extended CDCs */
|
|
#define CDC_OPTION_AC_DLN (1 << 5)
|
|
|
|
/** Add the unit data attribute */
|
|
#define CDC_OPTION_UNIT (1 << 6)
|
|
|
|
#define CDC_OPTION_FROZEN_VALUE (1 << 7)
|
|
|
|
#define CDC_OPTION_ADDR (1 << 8)
|
|
#define CDC_OPTION_ADDINFO (1 << 9)
|
|
|
|
#define CDC_OPTION_INST_MAG (1 << 10)
|
|
#define CDC_OPTION_RANGE (1 << 11)
|
|
|
|
#define CDC_OPTION_UNIT_MULTIPLIER (1 << 12)
|
|
|
|
#define CDC_OPTION_AC_SCAV (1 << 13)
|
|
|
|
#define CDC_OPTION_MIN (1 << 14)
|
|
#define CDC_OPTION_MAX (1 << 15)
|
|
|
|
#define CDC_OPTION_AC_CLC_O (1 << 16)
|
|
|
|
#define CDC_OPTION_RANGE_ANG (1 << 17)
|
|
|
|
#define CDC_OPTION_PHASE_A (1 << 18)
|
|
#define CDC_OPTION_PHASE_B (1 << 19)
|
|
#define CDC_OPTION_PHASE_C (1 << 20)
|
|
|
|
#define CDC_OPTION_PHASE_NEUT (1 << 21)
|
|
|
|
#define CDC_OPTION_PHASES_ABC (CDC_OPTION_PHASE_A | CDC_OPTION_PHASE_B | CDC_OPTION_PHASE_C)
|
|
|
|
#define CDC_OPTION_PHASES_ALL (CDC_OPTION_PHASE_A | CDC_OPTION_PHASE_B | CDC_OPTION_PHASE_C | CDC_OPTION_PHASE_NEUT)
|
|
|
|
#define CDC_OPTION_STEP_SIZE (1 << 22)
|
|
|
|
#define CDC_OPTION_ANGLE_REF (1 << 23)
|
|
|
|
/** Options that are only valid for DPL CDC */
|
|
#define CDC_OPTION_DPL_HWREV (1 << 17)
|
|
#define CDC_OPTION_DPL_SWREV (1 << 18)
|
|
#define CDC_OPTION_DPL_SERNUM (1 << 19)
|
|
#define CDC_OPTION_DPL_MODEL (1 << 20)
|
|
#define CDC_OPTION_DPL_LOCATION (1 << 21)
|
|
|
|
/** Add mandatory data attributes for LLN0 (e.g. LBL configRef) */
|
|
#define CDC_OPTION_AC_LN0_M (1 << 24)
|
|
#define CDC_OPTION_AC_LN0_EX (1 << 25)
|
|
#define CDC_OPTION_AC_DLD_M (1 << 26)
|
|
|
|
/**
|
|
* \brief Control model types
|
|
*/
|
|
#define CDC_CTL_MODEL_NONE 0
|
|
#define CDC_CTL_MODEL_DIRECT_NORMAL 1
|
|
#define CDC_CTL_MODEL_SBO_NORMAL 2
|
|
#define CDC_CTL_MODEL_DIRECT_ENHANCED 3
|
|
#define CDC_CTL_MODEL_SBO_ENHANCED 4
|
|
|
|
#define CDC_CTL_MODEL_HAS_CANCEL (1 << 4)
|
|
#define CDC_CTL_MODEL_IS_TIME_ACTIVATED (1 << 5)
|
|
|
|
#define CDC_CTL_OPTION_ORIGIN (1 << 6)
|
|
#define CDC_CTL_OPTION_CTL_NUM (1 << 7)
|
|
#define CDC_CTL_OPTION_ST_SELD (1 << 8)
|
|
#define CDC_CTL_OPTION_OP_RCVD (1 << 9)
|
|
#define CDC_CTL_OPTION_OP_OK (1 << 10)
|
|
#define CDC_CTL_OPTION_T_OP_OK (1 << 11)
|
|
#define CDC_CTL_OPTION_SBO_TIMEOUT (1 << 12)
|
|
#define CDC_CTL_OPTION_SBO_CLASS (1 << 13)
|
|
#define CDC_CTL_OPTION_OPER_TIMEOUT (1 << 14)
|
|
|
|
/****************************************************
|
|
* Constructed Attribute Classes (CAC)
|
|
***************************************************/
|
|
|
|
LIB61850_API DataAttribute*
|
|
CAC_AnalogueValue_create(const char* name, ModelNode* parent, FunctionalConstraint fc, uint8_t triggerOptions,
|
|
bool isIntegerNotFloat);
|
|
|
|
|
|
/**
|
|
* \brief create a ValWithTrans constructed data attribute
|
|
*
|
|
* \param hasTransInd
|
|
*/
|
|
LIB61850_API DataAttribute*
|
|
CAC_ValWithTrans_create(const char* name, ModelNode* parent, FunctionalConstraint fc, uint8_t triggerOptions, bool hasTransientIndicator);
|
|
|
|
|
|
/**
|
|
* CDC_OPTION_AC_CLC_O
|
|
*/
|
|
LIB61850_API DataAttribute*
|
|
CAC_Vector_create(const char* name, ModelNode* parent, uint32_t options, FunctionalConstraint fc, uint8_t triggerOptions);
|
|
|
|
LIB61850_API DataAttribute*
|
|
CAC_Point_create(const char* name, ModelNode* parent, FunctionalConstraint fc, uint8_t triggerOptions, bool hasZVal);
|
|
|
|
LIB61850_API DataAttribute*
|
|
CAC_ScaledValueConfig_create(const char* name, ModelNode* parent);
|
|
|
|
LIB61850_API DataAttribute*
|
|
CAC_Unit_create(const char* name, ModelNode* parent, bool hasMagnitude);
|
|
|
|
LIB61850_API DataAttribute*
|
|
CDA_OperBoolean(ModelNode* parent, bool isTImeActivated);
|
|
|
|
/****************************************************
|
|
* Common Data Classes (CDC)
|
|
***************************************************/
|
|
|
|
LIB61850_API DataObject*
|
|
CDC_SPS_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
|
|
|
|
LIB61850_API DataObject*
|
|
CDC_DPS_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
|
|
|
|
LIB61850_API DataObject*
|
|
CDC_INS_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_BCR_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
|
|
|
|
LIB61850_API DataObject*
|
|
CDC_VSS_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
|
|
|
|
/**
|
|
* \brief create a new SEC (Security violation) CDC instance (data object)
|
|
*
|
|
* Allowed parent types are LogicalNode and DataObject.
|
|
*
|
|
* options:
|
|
* standard (include standard optional elements like extension namespaces and descriptions (d, dU).
|
|
*
|
|
* CDC_OPTION_ADDR (address of the client causing the security violation)
|
|
* CDC_OPTION_ADDINFO (additional info text)
|
|
*
|
|
* \param dataObjectName the name of the new object
|
|
* \param parent the parent of the new data object (either a LogicalNode or another DataObject)
|
|
* \param options bit mask to encode required optional elements
|
|
*/
|
|
LIB61850_API DataObject*
|
|
CDC_SEC_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
|
|
|
|
/**
|
|
* \brief create a new MV (Measured value) CDC instance (data object)
|
|
*
|
|
* Allowed parent types are LogicalNode and DataObject.
|
|
*
|
|
* possible options:
|
|
* CDC_OPTION_INST_MAG
|
|
* CDC_OPTION_RANGE
|
|
* CDC_OPTION_PICS_SUBST
|
|
* standard (include standard optional elements like extension namespaces and descriptions (d, dU).
|
|
*
|
|
* \param dataObjectName the name of the new object
|
|
* \param parent the parent of the new data object (either a LogicalNode or another DataObject)
|
|
* \param options bit mask to encode required optional elements
|
|
* \param isIntegerNotFloat if true the AnalogueValue instance have integer instead of float
|
|
*
|
|
*/
|
|
LIB61850_API DataObject*
|
|
CDC_MV_create(const char* dataObjectName, ModelNode* parent, uint32_t options, bool isIntegerNotFloat);
|
|
|
|
/**
|
|
* CDC_OPTION_INST_MAG
|
|
* CDC_OPTION_RANGE
|
|
*/
|
|
LIB61850_API DataObject*
|
|
CDC_CMV_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
|
|
|
|
/**
|
|
* \brief create a new SAV (Sampled analog value) CDC instance (data object)
|
|
*
|
|
* Allowed parent types are LogicalNode and DataObject.
|
|
*
|
|
* possible options:
|
|
* CDC_OPTION_UNIT
|
|
* CDC_OPTION_AC_SCAV
|
|
* CDC_OPTION_MIN
|
|
* CDC_OPTION_MAX
|
|
* standard (include standard optional elements like extension namespaces and descriptions (d, dU).
|
|
*
|
|
* \param dataObjectName the name of the new object
|
|
* \param parent the parent of the new data object (either a LogicalNode or another DataObject)
|
|
* \param options bit mask to encode required optional elements
|
|
* \param isIntegerNotFloat if true the AnalogueValue instance have integer instead of float
|
|
*
|
|
*/
|
|
LIB61850_API DataObject*
|
|
CDC_SAV_create(const char* dataObjectName, ModelNode* parent, uint32_t options, bool isIntegerNotFloat);
|
|
|
|
/**
|
|
* \brief create a new LPL (Logical node name plate) CDC instance (data object)
|
|
*
|
|
* Allowed parent type is LogicalNode
|
|
*
|
|
* possible options:
|
|
* CDC_OPTION_AC_LN0_M (includes "configRev")
|
|
* CDC_OPTION_AC_LN0_EX (includes "ldNs")
|
|
* CDC_OPTION_AC_DLD_M (includes "lnNs")
|
|
* standard options:
|
|
* CDC_OPTION_DESC (includes "d")
|
|
* CDC_OPTION_DESC_UNICODE (include "du")
|
|
* CDC_OPTION_AC_DLNDA (include "cdcNs" and "cdcName")
|
|
* CDC_OPTION_AC_DLN (includes "dataNs")
|
|
*
|
|
* \param dataObjectName the name of the new object
|
|
* \param parent the parent of the new data object (either a LogicalNode or another DataObject)
|
|
* \param options bit mask to encode required optional elements
|
|
*
|
|
* \return new DataObject instance
|
|
*/
|
|
LIB61850_API DataObject*
|
|
CDC_LPL_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
|
|
|
|
/**
|
|
* \brief create a new DPL (Device name plate) CDC instance (data object)
|
|
*
|
|
* Allowed parent type is LogicalNode
|
|
*
|
|
* possible options:
|
|
* CDC_OPTION_DPL_HWREV (includes "hwRev")
|
|
* CDC_OPTION_DPL_SWREV (includes "swRev")
|
|
* CDC_OPTION_DPL_SERNUM (includes "serNum")
|
|
* CDC_OPTION_DPL_MODEL (includes "model")
|
|
* CDC_OPTION_DPL_LOCATION (includes "location")
|
|
* standard options:
|
|
* CDC_OPTION_AC_DLNDA (include "cdcNs" and "cdcName")
|
|
* CDC_OPTION_AC_DLN (includes "dataNs")
|
|
*
|
|
* \param dataObjectName the name of the new object
|
|
* \param parent the parent of the new data object (either a LogicalNode or another DataObject)
|
|
* \param options bit mask to encode required optional elements
|
|
*
|
|
* \return new DataObject instance
|
|
*/
|
|
LIB61850_API DataObject*
|
|
CDC_DPL_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
|
|
|
|
LIB61850_API DataObject*
|
|
CDC_HST_create(const char* dataObjectName, ModelNode* parent, uint32_t options, uint16_t maxPts);
|
|
|
|
/**
|
|
* \brief Directional protection activation information (ACD)
|
|
*
|
|
* Allowed parent types are LogicalNode and DataObject.
|
|
*
|
|
* possible options:
|
|
* CDC_OPTION_PHASE_A
|
|
* CDC_OPTION_PHASE_B
|
|
* CDC_OPTION_PHASE_C
|
|
* CDC_OPTION_PHASE_NEUT
|
|
* CDC_OPTION_PHASES_ABC
|
|
* CDC_OPTION_PHASES_ALL
|
|
* standard (include standard optional elements like extension namespaces and descriptions (d, dU).
|
|
*
|
|
* \param dataObjectName the name of the new object
|
|
* \param parent the parent of the new data object (either a LogicalNode or another DataObject)
|
|
* \param options bit mask to encode required optional elements
|
|
*/
|
|
LIB61850_API DataObject*
|
|
CDC_ACD_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
|
|
|
|
/**
|
|
* \brief Protection activation information (ACT)
|
|
*/
|
|
LIB61850_API DataObject*
|
|
CDC_ACT_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
|
|
|
|
/**
|
|
* \brief Single point setting (SPG)
|
|
*
|
|
* \param dataObjectName the name of the new object
|
|
* \param parent the parent of the new data object (either a LogicalNode or another DataObject)
|
|
* \param options bit mask to encode required optional elements
|
|
*/
|
|
LIB61850_API DataObject*
|
|
CDC_SPG_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
|
|
|
|
/**
|
|
* \brief Visible string setting (VSG)
|
|
*
|
|
* \param dataObjectName the name of the new object
|
|
* \param parent the parent of the new data object (either a LogicalNode or another DataObject)
|
|
* \param options bit mask to encode required optional elements
|
|
*/
|
|
LIB61850_API DataObject*
|
|
CDC_VSG_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
|
|
|
|
/**
|
|
* \brief Enumerated status setting (ENG)
|
|
*
|
|
* \param dataObjectName the name of the new object
|
|
* \param parent the parent of the new data object (either a LogicalNode or another DataObject)
|
|
* \param options bit mask to encode required optional elements
|
|
*/
|
|
LIB61850_API DataObject*
|
|
CDC_ENG_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
|
|
|
|
/**
|
|
* \brief Integer status setting (ING)
|
|
*
|
|
* possible options:
|
|
* CDC_OPTION_UNIT
|
|
* CDC_OPTION_MIN
|
|
* CDC_OPTION_MAX
|
|
* CDC_OPTION_STEP_SIZE
|
|
* standard (include standard optional elements like extension namespaces and descriptions (d, dU).
|
|
*
|
|
*/
|
|
LIB61850_API DataObject*
|
|
CDC_ING_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
|
|
|
|
/**
|
|
* \brief Analogue Setting (ASG)
|
|
*
|
|
* possible options:
|
|
* CDC_OPTION_UNIT
|
|
* CDC_OPTION_MIN
|
|
* CDC_OPTION_MAX
|
|
* CDC_OPTION_STEP_SIZE
|
|
* standard (include standard optional elements like extension namespaces and descriptions (d, dU).
|
|
*
|
|
*/
|
|
LIB61850_API DataObject*
|
|
CDC_ASG_create(const char* dataObjectName, ModelNode* parent, uint32_t options, bool isIntegerNotFloat);
|
|
|
|
/**
|
|
* \brief Phase to ground/neutral related measured values of a three-phase system (WYE)
|
|
*
|
|
* possible options:
|
|
* CDC_OPTION_ANGLE_REF
|
|
*/
|
|
LIB61850_API DataObject*
|
|
CDC_WYE_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
|
|
|
|
/**
|
|
* \brief Phase to phase related measured values of a three-phase system (DEL)
|
|
*
|
|
* possible options:
|
|
* CDC_OPTION_ANGLE_REF
|
|
*/
|
|
LIB61850_API DataObject*
|
|
CDC_DEL_create(const char* dataObjectName, ModelNode* parent, uint32_t options);
|
|
|
|
/***************************
|
|
* Controls
|
|
***************************/
|
|
|
|
/**
|
|
* \brief Controllable single point (SPC)
|
|
*
|
|
* \param controlOptions specify which control model to set as default and other control related options
|
|
*/
|
|
LIB61850_API DataObject*
|
|
CDC_SPC_create(const char* dataObjectName, ModelNode* parent, uint32_t options, uint32_t controlOptions);
|
|
|
|
/**
|
|
* \brief Controllable double point (DPC)
|
|
*
|
|
* CDC_OPTION_IS_TIME_ACTICATED
|
|
*
|
|
* substitution options
|
|
* CDC_OPTION_BLK_ENA
|
|
* standard description and namespace options
|
|
*
|
|
* \param dataObjectName the name of the new object
|
|
* \param parent the parent of the new data object (either a LogicalNode or another DataObject)
|
|
* \param options bit mask to encode required optional elements
|
|
* \param defaultControlModel specify which control model to set as default.
|
|
*
|
|
*/
|
|
LIB61850_API DataObject*
|
|
CDC_DPC_create(const char* dataObjectName, ModelNode* parent, uint32_t options, uint32_t controlOptions);
|
|
|
|
/**
|
|
* \brief Controllable integer status (INC)
|
|
*
|
|
* CDC_OPTION_IS_TIME_ACTICATED
|
|
*
|
|
* CDC_OPTION_MIN
|
|
* CDC_OPTION_MAX
|
|
* CDC_OPTION_STEP_SIZE
|
|
*
|
|
* substitution options
|
|
* CDC_OPTION_BLK_ENA
|
|
* standard description and namespace options
|
|
*
|
|
* \param dataObjectName the name of the new object
|
|
* \param parent the parent of the new data object (either a LogicalNode or another DataObject)
|
|
* \param options bit mask to encode required optional elements
|
|
* \param defaultControlModel specify which control model to set as default.
|
|
*
|
|
*/
|
|
LIB61850_API DataObject*
|
|
CDC_INC_create(const char* dataObjectName, ModelNode* parent, uint32_t options, uint32_t controlOptions);
|
|
|
|
/**
|
|
* \brief Controllable enumerated status (ENC)
|
|
*
|
|
* CDC_OPTION_IS_TIME_ACTICATED
|
|
*
|
|
* substitution options
|
|
* CDC_OPTION_BLK_ENA
|
|
* standard description and namespace options
|
|
*
|
|
* \param dataObjectName the name of the new object
|
|
* \param parent the parent of the new data object (either a LogicalNode or another DataObject)
|
|
* \param options bit mask to encode required optional elements
|
|
* \param defaultControlModel specify which control model to set as default.
|
|
*
|
|
*/
|
|
LIB61850_API DataObject*
|
|
CDC_ENC_create(const char* dataObjectName, ModelNode* parent, uint32_t options, uint32_t controlOptions);
|
|
|
|
/**
|
|
* \brief Controllable enumerated status (ENC)
|
|
*
|
|
* CDC_OPTION_IS_TIME_ACTICATED
|
|
*
|
|
* substitution options
|
|
* CDC_OPTION_BLK_ENA
|
|
* standard description and namespace options
|
|
*
|
|
* \param dataObjectName the name of the new object
|
|
* \param parent the parent of the new data object (either a LogicalNode or another DataObject)
|
|
* \param options bit mask to encode required optional elements
|
|
* \param controlOptions specify which control model to set as default and other control specific options
|
|
* \param hasTransientIndicator specifies if the step position information contains the transient indicator
|
|
*
|
|
*/
|
|
LIB61850_API DataObject*
|
|
CDC_BSC_create(const char* dataObjectName, ModelNode* parent, uint32_t options, uint32_t controlOptions, bool hasTransientIndicator);
|
|
|
|
/**
|
|
* \brief Integer controlled step position information (ISC)
|
|
*
|
|
* CDC_OPTION_IS_TIME_ACTICATED
|
|
*
|
|
* substitution options
|
|
* CDC_OPTION_BLK_ENA
|
|
* standard description and namespace options
|
|
*
|
|
* \param dataObjectName the name of the new object
|
|
* \param parent the parent of the new data object (either a LogicalNode or another DataObject)
|
|
* \param options bit mask to encode required optional elements
|
|
* \param controlOptions specify which control model to set as default and other control specific options
|
|
* \param hasTransientIndicator specifies if the step position information contains the transient indicator
|
|
*
|
|
*/
|
|
LIB61850_API DataObject*
|
|
CDC_ISC_create(const char* dataObjectName, ModelNode* parent, uint32_t options, uint32_t controlOptions, bool hasTransientIndicator);
|
|
|
|
/**
|
|
* \brief Controllable analogue process value (APC)
|
|
*
|
|
* CDC_OPTION_IS_TIME_ACTICATED
|
|
*
|
|
* CDC_OPTION_MIN
|
|
* CDC_OPTION_MAX
|
|
*
|
|
* substitution options
|
|
* CDC_OPTION_BLK_ENA
|
|
* standard description and namespace options
|
|
*
|
|
* \param dataObjectName the name of the new object
|
|
* \param parent the parent of the new data object (either a LogicalNode or another DataObject)
|
|
* \param options bit mask to encode required optional elements
|
|
* \param controlOptions specify which control model to set as default and other control specific options
|
|
* \param isIntegerNotFloat
|
|
*/
|
|
LIB61850_API DataObject*
|
|
CDC_APC_create(const char* dataObjectName, ModelNode* parent, uint32_t options, uint32_t controlOptions, bool isIntegerNotFloat);
|
|
|
|
/**
|
|
* \brief Binary controlled ananlogue process value (BAC)
|
|
*
|
|
* CDC_OPTION_IS_TIME_ACTICATED
|
|
*
|
|
* CDC_OPTION_MIN
|
|
* CDC_OPTION_MAX
|
|
* CDC_OPTION_STEP_SIZE
|
|
*
|
|
* substitution options
|
|
* CDC_OPTION_BLK_ENA
|
|
* standard description and namespace options
|
|
*
|
|
* \param dataObjectName the name of the new object
|
|
* \param parent the parent of the new data object (either a LogicalNode or another DataObject)
|
|
* \param options bit mask to encode required optional elements
|
|
* \param controlOptions specify which control model to set as default and other control specific options
|
|
* \param isIntegerNotFloat
|
|
*/
|
|
LIB61850_API DataObject*
|
|
CDC_BAC_create(const char* dataObjectName, ModelNode* parent, uint32_t options, uint32_t controlOptions, bool isIntegerNotFloat);
|
|
|
|
/** Minimum measured value */
|
|
#define CDC_OPTION_61400_MIN_MX_VAL (1 << 10)
|
|
|
|
/** Maximum measured value */
|
|
#define CDC_OPTION_61400_MAX_MX_VAL (1 << 11)
|
|
|
|
/** Total average value of data */
|
|
#define CDC_OPTION_61400_TOT_AV_VAL (1 << 12)
|
|
|
|
/** Standard deviation of data */
|
|
#define CDC_OPTION_61400_SDV_VAL (1 << 13)
|
|
|
|
/** Rate of increase */
|
|
#define CDC_OPTION_61400_INC_RATE (1 << 14)
|
|
|
|
/** Rate of decrease */
|
|
#define CDC_OPTION_61400_DEC_RATE (1 << 15)
|
|
|
|
/** Setpoint or parameter access level (low/medium/high) */
|
|
#define CDC_OPTION_61400_SP_ACS (1 << 16)
|
|
|
|
/** Time periodical reset (hourly/daily/weekly/monthly) */
|
|
#define CDC_OPTION_61400_CHA_PER_RS (1 << 17)
|
|
|
|
/** Command access level */
|
|
#define CDC_OPTION_61400_CM_ACS (1 << 18)
|
|
|
|
/** Total time duration of a state */
|
|
#define CDC_OPTION_61400_TM_TOT (1 << 19)
|
|
|
|
/** Daily counting data */
|
|
#define CDC_OPTION_61400_COUNTING_DAILY (1 << 20)
|
|
|
|
/** Monthly counting data */
|
|
#define CDC_OPTION_61400_COUNTING_MONTHLY (1 << 21)
|
|
|
|
/** Yearly counting data */
|
|
#define CDC_OPTION_61400_COUNTING_YEARLY (1 << 22)
|
|
|
|
/** Total counting data */
|
|
#define CDC_OPTION_61400_COUNTING_TOTAL (1 << 23)
|
|
|
|
/** All counting data */
|
|
#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)
|
|
|
|
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_STV_create(const char* dataObjectName, ModelNode* parent,
|
|
uint32_t options,
|
|
uint32_t controlOptions,
|
|
uint32_t wpOptions,
|
|
bool hasOldStatus);
|
|
|
|
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 DataObject*
|
|
CDC_ALM_create(const char* dataObjectName, ModelNode* parent,
|
|
uint32_t options,
|
|
uint32_t controlOptions,
|
|
uint32_t wpOptions,
|
|
bool hasOldStatus);
|
|
|
|
LIB61850_API DataObject*
|
|
CDC_CTE_create(const char* dataObjectName, ModelNode* parent,
|
|
uint32_t options,
|
|
uint32_t controlOptions,
|
|
uint32_t wpOptions,
|
|
bool hasHisRs);
|
|
|
|
LIB61850_API DataObject*
|
|
CDC_TMS_create(const char* dataObjectName, ModelNode* parent,
|
|
uint32_t options,
|
|
uint32_t controlOptions,
|
|
uint32_t wpOptions,
|
|
bool hasHisRs);
|
|
|
|
/**@}*/
|
|
|
|
/**@}*/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* CDC_H_ */
|