360 lines
11 KiB
C
360 lines
11 KiB
C
![]() |
|
|||
|
/****************************************************************************
|
|||
|
<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>: iec61850lib.h
|
|||
|
----------------------------------------------------------------------------
|
|||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> : iec61850lib <EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD>
|
|||
|
----------------------------------------------------------------------------
|
|||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ :
|
|||
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
----------------------------------------------------------------------------
|
|||
|
2010-06-11 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
****************************************************************************/
|
|||
|
|
|||
|
#ifndef _IEC61850LIB_H_
|
|||
|
#define _IEC61850LIB_H_
|
|||
|
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
extern "C"{
|
|||
|
#endif
|
|||
|
|
|||
|
/******************* <20><><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ؽṹ<D8BD><E1B9B9><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD> ***********************/
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3>ȣ<EFBFBD><C8A3><EFBFBD>9-2<><32>14
|
|||
|
#define SV2_MAX_VSTRING_LEN 35
|
|||
|
#define SV2_MAX_OBJREF_LEN 64
|
|||
|
#define SV2_MAX_SVID_LEN 34
|
|||
|
|
|||
|
|
|||
|
#define SV2_MAX_ASDU_NUM 10 //<2F><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>һ<EFBFBD><D2BB>apdu<64>а<EFBFBD><D0B0><EFBFBD>10<31><30>asdu
|
|||
|
|
|||
|
/**
|
|||
|
* smv9-2<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
*/
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
int eth_index;
|
|||
|
int timeout;
|
|||
|
|
|||
|
unsigned short int appid;
|
|||
|
char svID[SV2_MAX_SVID_LEN+1]; /**< svID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> */
|
|||
|
}GSV_SV2RECV_INI;
|
|||
|
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
unsigned short int smpCnt; /**< <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
unsigned int confRev; /**< <20><><EFBFBD>øı<C3B8><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
char smpSynch; /**< <20><>0<EFBFBD><30>1<EFBFBD><31>2<EFBFBD><32><EFBFBD><EFBFBD>ֵ,<2C><>9-2le7.2.2 */
|
|||
|
char *ds_buf; /**< <20><><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ʽ<EFBFBD><CABD>9-2le figure5 */
|
|||
|
int buf_len; /**< ds_buf<75>ij<EFBFBD><C4B3><EFBFBD> */
|
|||
|
}SV2_ASDU_VAL;
|
|||
|
|
|||
|
/** ASN.1 <20><EFBFBD>Ԫ<EFBFBD><D4AA>Ϣ */
|
|||
|
typedef struct ASN_1_UNIT_struct
|
|||
|
{
|
|||
|
unsigned short int tag; /**< <20><>Ԫ<EFBFBD><D4AA>ǩ */
|
|||
|
unsigned short int size; /**< <20><>Ԫ<EFBFBD><D4AA><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> */
|
|||
|
unsigned short int offset; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>asn1<6E><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ<CABC>õ<EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD> */
|
|||
|
} ASN_1_UNIT, * PASN_1_UNIT;
|
|||
|
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
char *apdu;
|
|||
|
ASN_1_UNIT smpCnt;
|
|||
|
ASN_1_UNIT confRev;
|
|||
|
ASN_1_UNIT smpSynch;
|
|||
|
ASN_1_UNIT ds_buf;
|
|||
|
ASN_1_UNIT svId;
|
|||
|
}SV2_ASDU_AU;
|
|||
|
|
|||
|
/**2012-03-27<32><37><EFBFBD><EFBFBD><EFBFBD>ӽṹ<D3BD>壬<EFBFBD><E5A3AC>GOOSE_SMV.txt<78>ļ<EFBFBD><C4BC>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Ϣ**/
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
char daRef[SV2_MAX_OBJREF_LEN+1];
|
|||
|
char outVarName[SV2_MAX_OBJREF_LEN+1];
|
|||
|
int entryIndex; //<2F><><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD>1<EFBFBD><31>ʼ
|
|||
|
int userIndex; //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
float rating; //<2F>ֵ<EEB6A8><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2012-03-30, from int to float
|
|||
|
} SV2_ASDU_USER;
|
|||
|
|
|||
|
/**
|
|||
|
* smv9-2<EFBFBD><EFBFBD><EFBFBD>ƽṹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
int eth_index; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
unsigned short int appid;
|
|||
|
|
|||
|
unsigned short int reserved1;
|
|||
|
unsigned short int reserved2;
|
|||
|
|
|||
|
char svId[SV2_MAX_SVID_LEN+1];
|
|||
|
SV2_ASDU_VAL *asdu_vals;
|
|||
|
SV2_ASDU_AU *val_asdu_au;
|
|||
|
unsigned char asdu_num; /**< apdu<64><75>asdu<64>ĸ<EFBFBD><C4B8><EFBFBD> */
|
|||
|
unsigned short int apdu_len; /**< <20><><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6><CFB1>Ļ<EFBFBD>asdu<64><75><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>仯 */
|
|||
|
|
|||
|
SV2_ASDU_USER *asdu_user; //hsj add 2012-03-27
|
|||
|
int entryNumAct; //<2F><><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>鳤<EFBFBD><E9B3A4>
|
|||
|
int entryNumDataset; //<2F><><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD>ܸ<EFBFBD><DCB8><EFBFBD>
|
|||
|
int delayPoint; //<2F>ϲ<EFBFBD><CFB2><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD>ͣ<EFBFBD><CDA3>ӳٵ<D3B3><D9B5><EFBFBD>
|
|||
|
|
|||
|
int ctrlIndex; //<2F><><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD>0<EFBFBD><30>ʼ add 2012-05-10
|
|||
|
}GSV_SV2RECV_CTRL;
|
|||
|
|
|||
|
/**
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļص<EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>9-2<EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻش<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* sv2_ctrl<EFBFBD>е<EFBFBD>ds_buffs<EFBFBD><EFBFBD>ȡֵ
|
|||
|
* svIndex<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>svNum<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD>SV<EFBFBD>ܸ<EFBFBD><EFBFBD><EFBFBD>, recvTime<EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣬<EFBFBD><EFBFBD>λns
|
|||
|
*/
|
|||
|
typedef void (*U_SMV2RECV_CALLBACK)(GSV_SV2RECV_CTRL *sv2_ctrl, int svIndex, int svNum, unsigned int recvTime );
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/************************** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GOOSE<53><45><EFBFBD>ؽṹ<D8BD><E1B9B9><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD> ******************/
|
|||
|
|
|||
|
#define MAX_IDENT_LEN 64 /* length of an Identifier variable */
|
|||
|
#define MVL61850_MAX_OBJREF_LEN 129 /* Value specified by Tissue 141*/
|
|||
|
|
|||
|
//<2F><>ֹ<EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#ifndef GEN_LIST_INCLUDED
|
|||
|
typedef struct dbl_lnk
|
|||
|
{
|
|||
|
/* Note: adding/removing fields to/from this struct will make older */
|
|||
|
/* !!! applications incompatible with new security DLLs. */
|
|||
|
struct dbl_lnk * next;
|
|||
|
struct dbl_lnk * prev;
|
|||
|
} DBL_LNK;
|
|||
|
#endif
|
|||
|
|
|||
|
typedef struct mms_utc_time_tag
|
|||
|
{
|
|||
|
unsigned long secs; /* Number of seconds since January 1, 1970 */
|
|||
|
unsigned long fraction; /* Fraction of a second */
|
|||
|
unsigned long qflags; /* Quality flags, 8 least-significant bits only */
|
|||
|
} MMS_UTC_TIME;
|
|||
|
|
|||
|
typedef enum{
|
|||
|
AS_DA_TYPE_UNKNOWN = 0,
|
|||
|
AS_DA_TYPE_BOOLEAN,
|
|||
|
AS_DA_TYPE_INT8,
|
|||
|
AS_DA_TYPE_INT16,
|
|||
|
AS_DA_TYPE_INT32,
|
|||
|
AS_DA_TYPE_INT128,
|
|||
|
AS_DA_TYPE_INT8U,
|
|||
|
AS_DA_TYPE_INT16U,
|
|||
|
AS_DA_TYPE_INT32U,
|
|||
|
AS_DA_TYPE_FLOAT32,
|
|||
|
AS_DA_TYPE_FLOAT64,
|
|||
|
AS_DA_TYPE_CODEDENUM, //<2F>̶<EFBFBD><CCB6><EFBFBD><EFBFBD>ȵ<EFBFBD>bitstring, 2bit
|
|||
|
// AS_DA_TYPE_TCMD, //<2F>̶<EFBFBD><CCB6><EFBFBD><EFBFBD>ȵ<EFBFBD>bitstring, 2bit
|
|||
|
AS_DA_TYPE_OSTRING8, //<2F>䳤octet string,<2C><><EFBFBD><EFBFBD>8<EFBFBD><38><EFBFBD>ֽ<EFBFBD>
|
|||
|
AS_DA_TYPE_OSTRING64, //<2F>䳤octet string,<2C><><EFBFBD><EFBFBD>64<36><34><EFBFBD>ֽ<EFBFBD>
|
|||
|
AS_DA_TYPE_VSTRING64, //<2F><><EFBFBD>ӱ䳤<D3B1>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>64
|
|||
|
AS_DA_TYPE_VSTRING65, //<2F><><EFBFBD>ӱ䳤<D3B1>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>65
|
|||
|
AS_DA_TYPE_VSTRING129, //<2F><><EFBFBD>ӱ䳤<D3B1>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>129
|
|||
|
AS_DA_TYPE_VSTRING255 , //<2F><><EFBFBD>ӱ䳤<D3B1>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>255
|
|||
|
AS_DA_TYPE_UNISTRING255, //utf-8<>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>255<35><35><EFBFBD>ַ<EFBFBD>
|
|||
|
|
|||
|
AS_DA_TYPE_QUALITY, //<2F>䳤bitstring 13bit
|
|||
|
AS_DA_TYPE_TIMESTAMP, //utctime
|
|||
|
AS_DA_TYPE_ENTRYTIME, //binary time<6D><65>btime6<65><36>ʽ
|
|||
|
AS_DA_TYPE_OPTFLDS, //<2F>䳤bitstring 10bit
|
|||
|
AS_DA_TYPE_TRGC, //<2F>䳤bitstring 6bit
|
|||
|
AS_DA_TYPE_CHECK, //<2F>䳤bitstring 2bit
|
|||
|
AS_DA_TYPE_ENTRYID, //<2F>̶<EFBFBD><CCB6><EFBFBD><EFBFBD>ȵ<EFBFBD>octet string, 8<><38><EFBFBD>ֽ<EFBFBD>
|
|||
|
AS_DA_TYPE_STRUCT //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}AS_DA_TYPE;
|
|||
|
|
|||
|
|
|||
|
/**add 2012-03-27, <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>index<65><78><EFBFBD><EFBFBD>ȡ<EFBFBD>ĵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>***/
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
DBL_LNK l;
|
|||
|
//MVL_VAR_ASSOC * var;
|
|||
|
unsigned int index; //<2F><>Ϊ<EFBFBD>洢<EFBFBD><E6B4A2>userinfo<66>ж<EFBFBD>ȡ<EFBFBD><C8A1>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>
|
|||
|
unsigned char gse_trged;//<2F>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>goose
|
|||
|
}MVL_VAR_LIST;
|
|||
|
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
char da_ref [MAX_IDENT_LEN + 1]; /* <20><><EFBFBD><EFBFBD>da<64><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:E1Q1SB1Ld1/LN$ST$Mod$stVal*/
|
|||
|
char usr_data_info [MAX_IDENT_LEN + 1];
|
|||
|
void * dataPtr;
|
|||
|
void * dataType; /* data type of this leaf */
|
|||
|
AS_DA_TYPE type; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
void * do_map; /* <20><>da<64><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD>do<64><6F>map<61>ṹ,ʹ<><CAB9>ʱǿ<CAB1><C7BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊas_do_map*/
|
|||
|
|
|||
|
MVL_VAR_LIST * var_list;//<2F><>data_map<61><70><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC>ij<EFBFBD>Ա added djf 20090807
|
|||
|
void * last_data;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱȽ<DDB1> added djf 20090807
|
|||
|
} AS_DA_MAP;
|
|||
|
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
int da_map_num;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬһ<CDAC><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>damap<61><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD>==0
|
|||
|
AS_DA_MAP ** da_maps;//<2F><><EFBFBD>飬ͬһ<CDAC><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>damap<61><70>ָ<EFBFBD><D6B8>ln<6C>µ<EFBFBD>datamap<61><70><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD>==NULL
|
|||
|
}GOOSE_MAP_CTRL;
|
|||
|
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
unsigned char connected;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
int eth_index;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
double rx_time;//ʱ<><CAB1>
|
|||
|
}GOOSE_RX_CHNL;
|
|||
|
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
DBL_LNK l;
|
|||
|
|
|||
|
struct
|
|||
|
{
|
|||
|
unsigned short etypeAppid; //ͨ<>Ų<EFBFBD><C5B2>ֵ<EFBFBD>appid
|
|||
|
unsigned char dstMac[6];//<2F>鲥<EFBFBD><E9B2A5>ַ
|
|||
|
//char gcRef [MVL61850_MAX_OBJREF_LEN + 1]; /* GoCBRef in IEC 61850 */
|
|||
|
//char dataSetRef [MVL61850_MAX_OBJREF_LEN + 1];/* DatSet in IEC 61850 */
|
|||
|
//char appID [MVL61850_MAX_OBJREF_LEN + 1]; /* GoID in IEC 61850 */
|
|||
|
int timeValidate; //GOOSE<53><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч,hsj add 2012-03-30
|
|||
|
int ctrlIndex; //<2F><><EFBFBD>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD>0<EFBFBD><30>ʼ 2012-05-09
|
|||
|
}ini_info;//<2F><>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD>goose<73>õ<EFBFBD><C3B5><EFBFBD>
|
|||
|
char gcRef [MVL61850_MAX_OBJREF_LEN + 1]; /* GoCBRef in IEC 61850 */
|
|||
|
unsigned long timeToLive;
|
|||
|
char dataSetRef [MVL61850_MAX_OBJREF_LEN + 1];/* DatSet in IEC 61850 */
|
|||
|
unsigned char appID_pres;
|
|||
|
char appID [MVL61850_MAX_OBJREF_LEN + 1]; /* GoID in IEC 61850 */
|
|||
|
MMS_UTC_TIME utcTime;
|
|||
|
unsigned long stNum;
|
|||
|
unsigned long sqNum;
|
|||
|
unsigned char test;
|
|||
|
unsigned long confRev;
|
|||
|
unsigned char needsCommissioning;
|
|||
|
unsigned long entryNum;
|
|||
|
|
|||
|
signed long numUnits; //dataset<65>а<EFBFBD><D0B0><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݵ<EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
|
|||
|
GOOSE_MAP_CTRL * goose_maps;//ÿ<><C3BF>unit<69><74>Ӧһ<D3A6><D2BB>GOOSE_MAP_CTRL<52>ṹ<EFBFBD><E1B9B9>
|
|||
|
|
|||
|
int chnl_num;//ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
GOOSE_RX_CHNL * chnls;//<2F><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>
|
|||
|
}GSE_RX_CTRL;
|
|||
|
|
|||
|
|
|||
|
/************************** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GOOSE<53><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽṹ<D8BD><E1B9B9><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD> ******************/
|
|||
|
#define GOOSE_SENDBUFF__MAX_LEN 1540
|
|||
|
#define MAC_ADDR_SIZE 6
|
|||
|
#define MVL61850_MAX_RPTID_LEN 65
|
|||
|
|
|||
|
|
|||
|
typedef union
|
|||
|
{
|
|||
|
MMS_UTC_TIME utcTime;
|
|||
|
unsigned short quality;
|
|||
|
unsigned char dpi;
|
|||
|
unsigned char spi;
|
|||
|
unsigned long int1;
|
|||
|
float fl1;
|
|||
|
} USER_DATA_VAL;
|
|||
|
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>
|
|||
|
char Ref[MVL61850_MAX_OBJREF_LEN+1];
|
|||
|
char typeStr[MVL61850_MAX_RPTID_LEN+1];
|
|||
|
char InVarName[MVL61850_MAX_OBJREF_LEN+1];
|
|||
|
int act; //act <20><><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD>õ<EFBFBD>
|
|||
|
|
|||
|
unsigned long varIndex; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
AS_DA_TYPE type;
|
|||
|
USER_DATA_VAL valNow;
|
|||
|
USER_DATA_VAL valLast;
|
|||
|
} GSE_IEC_DATA_USER;
|
|||
|
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
unsigned char *goEna;
|
|||
|
char gcRef [MVL61850_MAX_OBJREF_LEN + 1]; /* GoCBRef in IEC 61850 */
|
|||
|
unsigned long timeToLive;
|
|||
|
char dataSetRef [MVL61850_MAX_OBJREF_LEN + 1];/* DatSet in IEC 61850 */
|
|||
|
unsigned char appID_pres;
|
|||
|
char appID [MVL61850_MAX_RPTID_LEN + 1]; /* GoID in IEC 61850 */
|
|||
|
/* (was AppID in Ed 1) */
|
|||
|
MMS_UTC_TIME utcTime;
|
|||
|
unsigned long stNum;
|
|||
|
unsigned long sqNum;
|
|||
|
unsigned char test;
|
|||
|
unsigned long confRev;
|
|||
|
unsigned char needsCommissioning;
|
|||
|
long numDataEntries;
|
|||
|
void * dataEntries; /* array of data entry structs */
|
|||
|
long numDataMaps;
|
|||
|
AS_DA_MAP ** data_maps;
|
|||
|
GSE_IEC_DATA_USER *userData;
|
|||
|
|
|||
|
int ethIndex;
|
|||
|
unsigned char *sendPst;
|
|||
|
int sendLen;
|
|||
|
unsigned char asn1Buf[GOOSE_SENDBUFF__MAX_LEN];
|
|||
|
unsigned char *pstSqNum;
|
|||
|
unsigned char *pstStNum;
|
|||
|
unsigned char *pstTest;
|
|||
|
unsigned char *pstutcTime;
|
|||
|
unsigned char *pstTimeAllow;
|
|||
|
}GSE_IEC_CTRL;
|
|||
|
|
|||
|
typedef struct iec_goose_send_user_info
|
|||
|
{
|
|||
|
struct iec_goose_send_user_info * next;
|
|||
|
struct iec_goose_send_user_info * prev;
|
|||
|
|
|||
|
unsigned int goose_state; /*TRUE, ready to send GOOSE */
|
|||
|
double next_time; /*<2A>´η<C2B4><CEB7><EFBFBD>ʱ<EFBFBD><CAB1> */
|
|||
|
unsigned int retrans_curve_offset; /*offset to current retrans curve */
|
|||
|
void * curve_pointer; /*pointer to retransmission curve*/
|
|||
|
GSE_IEC_CTRL * gptr; /*pointer to GOOSE Control */
|
|||
|
// MVL_NVLIST_CTRL * nvl; /*pointer to Data Set associated with GOOSE*/
|
|||
|
// MVL_IND_PEND * scan_ind; /*pointer to structure that allows for polling*/
|
|||
|
unsigned char dstAddress[MAC_ADDR_SIZE]; /*destination MAC address to which GOOSE will be sent */
|
|||
|
|
|||
|
unsigned short etype_tci; /* Ethertype TCI */
|
|||
|
unsigned short etype_id; /* Ethertype ID */
|
|||
|
unsigned short etype_appID; /* Ethertype AppID */
|
|||
|
|
|||
|
unsigned char val_changed; /* <20><><EFBFBD><EFBFBD><EFBFBD>ݱ仯<DDB1><E4BBAF><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>goose */
|
|||
|
}IEC_GOOSE_SEND_USER_INFO;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/********************* <20><><EFBFBD><EFBFBD><EFBFBD>Ľṹ<C4BD>岻<EFBFBD><E5B2BB>ʹ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *******************/
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
unsigned char devAddr;
|
|||
|
unsigned char devCpu;
|
|||
|
union
|
|||
|
{
|
|||
|
struct
|
|||
|
{
|
|||
|
#ifdef CONFIG_CPU_BIG_ENDIAN
|
|||
|
unsigned char infHigh;
|
|||
|
unsigned char infLow;
|
|||
|
#else
|
|||
|
unsigned char infLow;
|
|||
|
unsigned char infHigh;
|
|||
|
#endif
|
|||
|
} inf_struc;
|
|||
|
unsigned short inf;
|
|||
|
} inf_union;
|
|||
|
|
|||
|
unsigned int unique; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ψһֵ
|
|||
|
|
|||
|
char infType; //<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ң<><D2A3>C/ң<><D2A3>X/ң<><D2A3>K/<2F><>ֲZ/GOOSE S/
|
|||
|
} DATAMAP_USER_INFO;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
#endif
|