|
|
/****************************************************************************/
|
|
|
/* Copyright (c) 2007,许继集团有限公司 */
|
|
|
/* All rights reserved. */
|
|
|
/* */
|
|
|
/* 模块描述: */
|
|
|
/** iec61850基本数据类型和宏定义
|
|
|
* @file ai_def.h */
|
|
|
/* */
|
|
|
/* 日期 作者 注释 */
|
|
|
/* 2007/07/12 DJF 创建文件 */
|
|
|
/****************************************************************************/
|
|
|
|
|
|
#ifndef IEC61850_AI_DEF_H
|
|
|
#define IEC61850_AI_DEF_H
|
|
|
|
|
|
#include "sysincs.h"
|
|
|
#include "glbtypes.h"
|
|
|
#include "mms_def2.h"
|
|
|
#include "mmsobj.h"
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
extern "C" {
|
|
|
#endif
|
|
|
|
|
|
/**61850服务代码*/
|
|
|
typedef enum{
|
|
|
IEC61850_OP_UNKNOWN = 0,
|
|
|
IEC61850_OP_ASSOC,
|
|
|
IEC61850_OP_RELEASE ,
|
|
|
IEC61850_OP_ABORT,
|
|
|
|
|
|
IEC61850_OP_GETSRVDIR,
|
|
|
IEC61850_OP_GETLDDIR,
|
|
|
IEC61850_OP_GETLNDIR,
|
|
|
IEC61850_OP_GETDODEF,
|
|
|
|
|
|
IEC61850_OP_READ,
|
|
|
IEC61850_OP_WRITE,
|
|
|
|
|
|
IEC61850_OP_GETSGV,
|
|
|
IEC61850_OP_SETSGV,
|
|
|
|
|
|
IEC61850_OP_SELVAL,
|
|
|
IEC61850_OP_SELECT,
|
|
|
IEC61850_OP_CANCEL,
|
|
|
IEC61850_OP_OPER,
|
|
|
|
|
|
IEC61850_OP_CRTDS,
|
|
|
IEC61850_OP_DELDS,
|
|
|
IEC61850_OP_GETDSDIR,
|
|
|
IEC61850_OP_GETDSVAL,
|
|
|
IEC61850_OP_SETDSVAL,
|
|
|
|
|
|
IEC61850_OP_GETFAV,
|
|
|
IEC61850_OP_GETFILE,
|
|
|
IEC61850_OP_SETFILE,
|
|
|
IEC61850_OP_DELFILE ,
|
|
|
|
|
|
IEC61850_OP_QUERYLOGBT,
|
|
|
IEC61850_OP_QUERYLOGA,
|
|
|
IEC61850_OP_RPTENA // 报告使能
|
|
|
}IEC61850_OP;
|
|
|
|
|
|
/**
|
|
|
* 通道号枚举值
|
|
|
*/
|
|
|
typedef enum
|
|
|
{
|
|
|
AC_CHANNEL_A,
|
|
|
AC_CHANNEL_B,
|
|
|
AC_CHANNEL_UNKNOWN
|
|
|
}AC_CHANNEL;
|
|
|
|
|
|
#define MAX_REFERENCE_LENGTH 129
|
|
|
/**
|
|
|
* 61850对象参引数据类型
|
|
|
*/
|
|
|
typedef ST_CHAR AI_OBJ_REF[MAX_REFERENCE_LENGTH + 1];
|
|
|
|
|
|
/**
|
|
|
* 61850对象id数据类型,在服务器内唯一标识一个对象
|
|
|
*/
|
|
|
typedef ST_INT AI_OBJ_ID;
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 61850简单数据类型
|
|
|
*/
|
|
|
typedef enum{
|
|
|
VAL_TYPE_UNKNOWN = 0,
|
|
|
VAL_TYPE_BOOLEAN,
|
|
|
VAL_TYPE_INT8,
|
|
|
VAL_TYPE_INT16,
|
|
|
VAL_TYPE_INT32,
|
|
|
VAL_TYPE_INT128,
|
|
|
VAL_TYPE_INT8U,
|
|
|
VAL_TYPE_INT16U,
|
|
|
VAL_TYPE_INT32U,
|
|
|
VAL_TYPE_FLOAT32,
|
|
|
VAL_TYPE_FLOAT64,
|
|
|
VAL_TYPE_CODEDENUM, //固定长度的bitstring, 2bit
|
|
|
VAL_TYPE_TCMD, //固定长度的bitstring, 2bit
|
|
|
VAL_TYPE_OSTRING8, //变长octet string,最大长度8个字节
|
|
|
VAL_TYPE_OSTRING64, //变长octet string,最大长度64个字节
|
|
|
VAL_TYPE_VSTRING64, //可视变长字符串,最大长度64
|
|
|
VAL_TYPE_VSTRING65, //可视变长字符串,最大长度65
|
|
|
VAL_TYPE_VSTRING129, //可视变长字符串,最大长度129
|
|
|
VAL_TYPE_VSTRING255 , //可视变长字符串,最大长度255
|
|
|
VAL_TYPE_UNISTRING255, //utf-8字符串,最大255个字符
|
|
|
|
|
|
VAL_TYPE_QUALITY, //变长bitstring 13bit
|
|
|
VAL_TYPE_TIMESTAMP, //utctime
|
|
|
VAL_TYPE_ENTRYTIME, //binary time,btime6格式
|
|
|
VAL_TYPE_OPTFLDS, //变长bitstring 10bit
|
|
|
VAL_TYPE_TRGC, //变长bitstring 6bit
|
|
|
VAL_TYPE_CHECK, //变长bitstring 2bit
|
|
|
VAL_TYPE_ENTRYID, //固定长度的octet string, 8个字节
|
|
|
VAL_TYPE_STRUCT //复杂类型的数据
|
|
|
}AI_VAL_TYPE;
|
|
|
|
|
|
/*da 类型定义,每个宏定义的值和AI_OBJ_VAL中的枚举值一致 */
|
|
|
#define AI_DATYPE_UNKNOWN VAL_TYPE_UNKNOWN
|
|
|
#define AI_DATYPE_BOOLEAN VAL_TYPE_BOOLEAN
|
|
|
#define AI_DATYPE_INT8 VAL_TYPE_INT8
|
|
|
#define AI_DATYPE_INT16 VAL_TYPE_INT16
|
|
|
#define AI_DATYPE_INT32 VAL_TYPE_INT32
|
|
|
#define AI_DATYPE_INT128 VAL_TYPE_INT128
|
|
|
#define AI_DATYPE_INT8U VAL_TYPE_INT8U
|
|
|
#define AI_DATYPE_INT16U VAL_TYPE_INT16U
|
|
|
#define AI_DATYPE_INT32U VAL_TYPE_INT32U
|
|
|
#define AI_DATYPE_FLOAT32 VAL_TYPE_FLOAT32
|
|
|
#define AI_DATYPE_FLOAT64 VAL_TYPE_FLOAT64
|
|
|
#define AI_DATYPE_CODEDENUM VAL_TYPE_CODEDENUM
|
|
|
#define AI_DATYPE_TCMD VAL_TYPE_CODEDENUM
|
|
|
#define AI_DATYPE_OSTRING8 VAL_TYPE_OSTRING8
|
|
|
#define AI_DATYPE_OSTRING64 VAL_TYPE_OSTRING64
|
|
|
#define AI_DATYPE_VSTRING64 VAL_TYPE_VSTRING64
|
|
|
#define AI_DATYPE_VSTRING65 VAL_TYPE_VSTRING65
|
|
|
#define AI_DATYPE_VSTRING129 VAL_TYPE_VSTRING129
|
|
|
#define AI_DATYPE_VSTRING255 VAL_TYPE_VSTRING255
|
|
|
#define AI_DATYPE_UNISTRING255 VAL_TYPE_UNISTRING255
|
|
|
#define AI_DATYPE_QUALITY VAL_TYPE_QUALITY
|
|
|
#define AI_DATYPE_TIMESTAMP VAL_TYPE_TIMESTAMP
|
|
|
#define AI_DATYPE_ENTRYTIME VAL_TYPE_ENTRYTIME
|
|
|
#define AI_DATYPE_OPTFLDS VAL_TYPE_OPTFLDS
|
|
|
#define AI_DATYPE_TRGC VAL_TYPE_TRGC
|
|
|
#define AI_DATYPE_CHECK VAL_TYPE_CHECK
|
|
|
#define AI_DATYPE_ENTRYID VAL_TYPE_ENTRYID
|
|
|
#define AI_DATYPE_STRUCT VAL_TYPE_STRUCT
|
|
|
|
|
|
/**
|
|
|
* 61850对象类型
|
|
|
*/
|
|
|
typedef enum
|
|
|
{
|
|
|
OBJECT_TYPE_UNKNOWN = 0,
|
|
|
OBJECT_TYPE_IED,
|
|
|
OBJECT_TYPE_LD,
|
|
|
OBJECT_TYPE_LN,
|
|
|
OBJECT_TYPE_DS,
|
|
|
OBJECT_TYPE_FCN, //带fc的ln
|
|
|
OBJECT_TYPE_FCD,
|
|
|
OBJECT_TYPE_FCDA,
|
|
|
OBJECT_TYPE_CB //控制块
|
|
|
}AI_OBJ_TYPE;
|
|
|
|
|
|
typedef ST_INT AI_FCO_SUBTYPE; //值为AI_CBTYPE_XXX AI_LNTYPE_XXX AI_DOTYPE_XXX AI_DATYPE_XXX等
|
|
|
#define AI_FCO_SUBTYPE_UNKNOWN 0
|
|
|
|
|
|
/** cb控制块类型定义 */
|
|
|
#define AI_CBTYPE_UNKNOWN 0
|
|
|
#define AI_CBTYPE_SGCB 1 //SP
|
|
|
#define AI_CBTYPE_URCB 2 //RP
|
|
|
#define AI_CBTYPE_BRCB 3 //BR
|
|
|
#define AI_CBTYPE_LCB 4 //LG
|
|
|
#define AI_CBTYPE_GOCB 5 //GO
|
|
|
#define AI_CBTYPE_GSCB 6 //GS
|
|
|
#define AI_CBTYPE_MSVCB 7 //MS
|
|
|
#define AI_CBTYPE_USVCB 8 //US
|
|
|
|
|
|
/** ln 类型定义*/
|
|
|
#define AI_LNTYPE_UNKNOWN 0 /* NOT IN STANDARD LN TYPE */
|
|
|
#define AI_LNTYPE_LLN0 1
|
|
|
#define AI_LNTYPE_LPHD 2
|
|
|
#define AI_LNTYPE_PDIF 3
|
|
|
#define AI_LNTYPE_PDIR 4
|
|
|
#define AI_LNTYPE_PDIS 5
|
|
|
#define AI_LNTYPE_PDOP 6
|
|
|
#define AI_LNTYPE_PDUP 7
|
|
|
#define AI_LNTYPE_PFRC 8
|
|
|
#define AI_LNTYPE_PHAR 9
|
|
|
#define AI_LNTYPE_PHIZ 10
|
|
|
#define AI_LNTYPE_PIOC 11
|
|
|
#define AI_LNTYPE_PMRI 12
|
|
|
#define AI_LNTYPE_PMSS 13
|
|
|
#define AI_LNTYPE_POPF 14
|
|
|
#define AI_LNTYPE_PPAM 15
|
|
|
#define AI_LNTYPE_PSCH 16
|
|
|
#define AI_LNTYPE_PSDE 17
|
|
|
#define AI_LNTYPE_PTEF 18
|
|
|
#define AI_LNTYPE_PTOC 19
|
|
|
#define AI_LNTYPE_PTOF 20
|
|
|
#define AI_LNTYPE_PTOV 21
|
|
|
#define AI_LNTYPE_PTRC 22
|
|
|
#define AI_LNTYPE_PTTR 23
|
|
|
#define AI_LNTYPE_PTUC 24
|
|
|
#define AI_LNTYPE_PTUF 25
|
|
|
#define AI_LNTYPE_PTUV 26
|
|
|
#define AI_LNTYPE_PUPF 27
|
|
|
#define AI_LNTYPE_PVOC 28
|
|
|
#define AI_LNTYPE_PVPH 29
|
|
|
#define AI_LNTYPE_PZSU 30
|
|
|
#define AI_LNTYPE_RADR 31
|
|
|
#define AI_LNTYPE_RBDR 32
|
|
|
#define AI_LNTYPE_RBRF 33
|
|
|
#define AI_LNTYPE_RDIR 34
|
|
|
#define AI_LNTYPE_RDRE 35
|
|
|
#define AI_LNTYPE_RDRS 36
|
|
|
#define AI_LNTYPE_RFLO 37
|
|
|
#define AI_LNTYPE_RPSB 38
|
|
|
#define AI_LNTYPE_RREC 39
|
|
|
#define AI_LNTYPE_RSYN 40
|
|
|
#define AI_LNTYPE_CALH 41
|
|
|
#define AI_LNTYPE_CCGR 42
|
|
|
#define AI_LNTYPE_CILO 43
|
|
|
#define AI_LNTYPE_CPOW 44
|
|
|
#define AI_LNTYPE_CSWI 45
|
|
|
#define AI_LNTYPE_GAPC 46
|
|
|
#define AI_LNTYPE_GGIO 47
|
|
|
#define AI_LNTYPE_GSAL 48
|
|
|
#define AI_LNTYPE_IARC 49
|
|
|
#define AI_LNTYPE_IHMI 50
|
|
|
#define AI_LNTYPE_ITCI 51
|
|
|
#define AI_LNTYPE_ITMI 52
|
|
|
#define AI_LNTYPE_ANCR 53
|
|
|
#define AI_LNTYPE_ARCO 54
|
|
|
#define AI_LNTYPE_ATCC 55
|
|
|
#define AI_LNTYPE_AVCO 56
|
|
|
#define AI_LNTYPE_MDIF 57
|
|
|
#define AI_LNTYPE_MHAI 58
|
|
|
#define AI_LNTYPE_MHAN 59
|
|
|
#define AI_LNTYPE_MMTR 60
|
|
|
#define AI_LNTYPE_MMXN 61
|
|
|
#define AI_LNTYPE_MMXU 62
|
|
|
#define AI_LNTYPE_MSQI 63
|
|
|
#define AI_LNTYPE_MSTA 64
|
|
|
#define AI_LNTYPE_SARC 65
|
|
|
#define AI_LNTYPE_SIMG 66
|
|
|
#define AI_LNTYPE_SIML 67
|
|
|
#define AI_LNTYPE_SPDC 68
|
|
|
#define AI_LNTYPE_XCBR 69
|
|
|
#define AI_LNTYPE_XSWI 70
|
|
|
#define AI_LNTYPE_TCTR 71
|
|
|
#define AI_LNTYPE_TVTR 72
|
|
|
#define AI_LNTYPE_YEFN 73
|
|
|
#define AI_LNTYPE_YLTC 74
|
|
|
#define AI_LNTYPE_YPSH 75
|
|
|
#define AI_LNTYPE_YPTR 76
|
|
|
#define AI_LNTYPE_ZAXN 77
|
|
|
#define AI_LNTYPE_ZBAT 78
|
|
|
#define AI_LNTYPE_ZBSH 79
|
|
|
#define AI_LNTYPE_ZCAB 80
|
|
|
#define AI_LNTYPE_ZCAP 81
|
|
|
#define AI_LNTYPE_ZCON 82
|
|
|
#define AI_LNTYPE_ZGEN 83
|
|
|
#define AI_LNTYPE_ZGIL 84
|
|
|
#define AI_LNTYPE_ZLIN 85
|
|
|
#define AI_LNTYPE_ZMOT 86
|
|
|
#define AI_LNTYPE_ZREA 87
|
|
|
#define AI_LNTYPE_ZRRC 88
|
|
|
#define AI_LNTYPE_ZSAR 89
|
|
|
#define AI_LNTYPE_ZTCF 90
|
|
|
#define AI_LNTYPE_ZTCR 91
|
|
|
|
|
|
/** do类型定义 */
|
|
|
#define AI_DOTYPE_UNKNOWN 0 /* NOT IN STANDARD TYPE */
|
|
|
#define AI_DOTYPE_SPS 1
|
|
|
#define AI_DOTYPE_DPS 2
|
|
|
#define AI_DOTYPE_INS 3
|
|
|
#define AI_DOTYPE_ACT 4
|
|
|
#define AI_DOTYPE_ACD 5
|
|
|
#define AI_DOTYPE_SEC 6
|
|
|
#define AI_DOTYPE_BCR 7
|
|
|
#define AI_DOTYPE_MV 8
|
|
|
#define AI_DOTYPE_CMV 9
|
|
|
#define AI_DOTYPE_SAV 10
|
|
|
#define AI_DOTYPE_SPC 11
|
|
|
#define AI_DOTYPE_DPC 12
|
|
|
#define AI_DOTYPE_INC 13
|
|
|
#define AI_DOTYPE_BSC 14
|
|
|
#define AI_DOTYPE_ISC 15
|
|
|
#define AI_DOTYPE_APC 16
|
|
|
#define AI_DOTYPE_SPG 17
|
|
|
#define AI_DOTYPE_ING 18
|
|
|
#define AI_DOTYPE_ASG 19
|
|
|
#define AI_DOTYPE_CURVE 20
|
|
|
#define AI_DOTYPE_DPL 21
|
|
|
#define AI_DOTYPE_LPL 22
|
|
|
#define AI_DOTYPE_CSD 23
|
|
|
#define AI_DOTYPE_WYE 24
|
|
|
#define AI_DOTYPE_DEL 25
|
|
|
#define AI_DOTYPE_SEQ 26
|
|
|
#define AI_DOTYPE_HMV 27
|
|
|
#define AI_DOTYPE_HWYE 28
|
|
|
#define AI_DOTYPE_HDEL 29
|
|
|
//下面是在iec61850v2.0中新增的cdc类型
|
|
|
#define AI_DOTYPE_ENC 30
|
|
|
#define AI_DOTYPE_ENS 31
|
|
|
#define AI_DOTYPE_ENG 32
|
|
|
#define AI_DOTYPE_HST 33
|
|
|
#define AI_DOTYPE_ORG 34
|
|
|
#define AI_DOTYPE_TSG 35
|
|
|
#define AI_DOTYPE_CSG 36
|
|
|
#define AI_DOTYPE_ERS 37
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 61850常用基本数据类型定义
|
|
|
*/
|
|
|
#define ST_OSTRING8 OCTET_STRING8_TDEF /* octet string */
|
|
|
#define ST_OSTRING64 OCTET_STRING64_TDEF /* octet string */
|
|
|
#define ST_VSTRING255 VISIBLE_STRING255_TDEF /* Visible String */
|
|
|
#define ST_VSTRING64 VISIBLE_STRING64_TDEF /* Visible String */
|
|
|
#define ST_VSTRING65 VISIBLE_STRING65_TDEF /* Visible String */
|
|
|
#define ST_VSTRING129 VISIBLE_STRING129_TDEF /* Visible String */
|
|
|
#define ST_USTRING255 UNICODE_STRING255_TDEF /* utf8String */
|
|
|
#define ST_TIMESTAMP TimeStamp_TDEF /* utc time */
|
|
|
#define ST_ENTRYTIME EntryTime_TDEF /* btime6 */
|
|
|
#define ST_QUALITY Quality_TDEF /* BVstring13 */
|
|
|
#define ST_ENTRYID EntryID_TDEF /* 8个字节的8位位组 */
|
|
|
#define ST_OPTFLDS OPTFLDS_TDEF /* BVstring10 */
|
|
|
#define ST_TRGOP TRG_CONDITION_TDEF /* BVstring6 */
|
|
|
#define ST_CHECK Check_TDEF /* BVstring2 */
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 61850简单数据类型对象的值的数据结构定义
|
|
|
*/
|
|
|
typedef struct
|
|
|
{
|
|
|
AI_VAL_TYPE type; /**< 基本数据类型 */
|
|
|
ST_INT size; /**< 数据元素占用的字节数,即data的长度 */
|
|
|
ST_VOID *data; /**< 数据缓冲区 */
|
|
|
}AI_PRIM_VAL;
|
|
|
|
|
|
/**
|
|
|
* 61850对象值的数据结构定义
|
|
|
*/
|
|
|
typedef struct
|
|
|
{
|
|
|
AI_OBJ_ID obj_id; /**< 对象ID */
|
|
|
AI_OBJ_ID *prim_ids; /**< 此对象包含的简单类型对象的id,数组 */
|
|
|
AI_PRIM_VAL *prim_vals; /**< 本对象的所有简单类型的子成员的值,数组 */
|
|
|
ST_INT prim_num; /**< 数组大小 */
|
|
|
}AI_OBJ_VAL;
|
|
|
|
|
|
/**
|
|
|
* acsi服务错误代码
|
|
|
*/
|
|
|
typedef ST_INT8 AC_REQ_RESULT;
|
|
|
#define AC_RESULT_SUCCESS 0; /**< 服务成功 */
|
|
|
#define AC_RESULT_FAILURE 1; /**< 服务失败 */
|
|
|
#define AC_RESULT_TIMEOUT 2; /**< 服务超时失败 */
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
|
|
|
#endif /* ACSI_DEFINED_INCLUDE */
|
|
|
|
|
|
|