|
|
|
|
/****************************************************************************
|
|
|
|
|
** File name : HTIEC61850Protocol.h
|
|
|
|
|
** Description : define iec 61850 network protocol api
|
|
|
|
|
** Create date : 2019.09.01
|
|
|
|
|
** Auther by : Liuyx
|
|
|
|
|
** Version info : V1.0.01
|
|
|
|
|
** Copyright (C) 2002-2019 xi'an huatek, Inc Co., Ltd
|
|
|
|
|
** Update record:
|
|
|
|
|
** DATE AUTHER DESC
|
|
|
|
|
** -------------------------------------------------------------------------
|
|
|
|
|
** 2019.09.01 Liuyx first build
|
|
|
|
|
****************************************************************************/
|
|
|
|
|
#ifndef __HT_IEC_61850_PROTOCOL_H
|
|
|
|
|
#define __HT_IEC_61850_PROTOCOL_H
|
|
|
|
|
|
|
|
|
|
#if defined (__cplusplus)
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif /* defined (__cplusplus) */
|
|
|
|
|
#pragma pack (push ,1)
|
|
|
|
|
|
|
|
|
|
/************************************************************************************
|
|
|
|
|
* svpdu_lpdu_head - 9-2/9-1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ(sample value)<EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>(link layer)<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(pdu)ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>
|
|
|
|
|
* @des_mac: Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ(ΪFF:FF:FF:FF:FF:FF<EFBFBD><EFBFBD>ʾ<EFBFBD>㲥<EFBFBD><EFBFBD>),ISO/IEC8802-3<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD>
|
|
|
|
|
* @src_mac: Դ<EFBFBD><EFBFBD>ַ,ISO/IEC8802-3<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD>
|
|
|
|
|
* @tpid: <EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD>Э<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ(Tag Protocol Identifier),<EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>и<EFBFBD><EFBFBD>ֶ<EFBFBD>(<EFBFBD>DZ<EFBFBD><EFBFBD><EFBFBD>)<EFBFBD><EFBFBD>
|
|
|
|
|
* @tci: <EFBFBD><EFBFBD><EFBFBD>ǵĿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ(Tag Control Information),<EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>и<EFBFBD><EFBFBD>ֶ<EFBFBD>(<EFBFBD>DZ<EFBFBD><EFBFBD><EFBFBD>)<EFBFBD><EFBFBD>
|
|
|
|
|
* @ether_type: <EFBFBD><EFBFBD>̫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>
|
|
|
|
|
* @appid: Ӧ<EFBFBD>ñ<EFBFBD>ʶ,<EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>Ӧ<EFBFBD>õIJ<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><EFBFBD>ң<EFBFBD>
|
|
|
|
|
* @epdu_length: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>APPID<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PDU<EFBFBD><EFBFBD><EFBFBD>ڵİ<EFBFBD>λλ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ8<EFBFBD><EFBFBD>m(m<1480);
|
|
|
|
|
* @reserve1: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڣ<EFBFBD>Ϊ0;
|
|
|
|
|
* @reserve2: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڣ<EFBFBD>Ϊ0;
|
|
|
|
|
*
|
|
|
|
|
* TPID ֵ<EFBFBD><EFBFBD>0x8100;
|
|
|
|
|
* TCI ֵ: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>
|
|
|
|
|
* PRI<EFBFBD><EFBFBD>User priority(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ),ռǰ3bit(BS3)<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>user priorityֵ<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>GOOSE<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><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȱʡֵ(4);
|
|
|
|
|
* CFI<EFBFBD><EFBFBD>ռPRI<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1bit<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD>ʶ<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RIF<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>RIF<EFBFBD><EFBFBD>,ֵӦ
|
|
|
|
|
* <EFBFBD><EFBFBD>Ϊ0;<EFBFBD><EFBFBD>ֵΪ1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ISO/IEC8802-3<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>У<EFBFBD>Length/Type<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>(RIF);
|
|
|
|
|
* VID: ռ֮<EFBFBD><EFBFBD>ʣ<EFBFBD>µ<EFBFBD>12bit;Ϊ֧<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><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱӦ<EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ(VID)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶVID ȱʡֵΪ0<EFBFBD><EFBFBD>
|
|
|
|
|
* ע<EFBFBD><EFBFBD>IEEE802.1Q<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>Ϊ4<EFBFBD><EFBFBD>7<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>֡<EFBFBD><EFBFBD>Ϊ1<EFBFBD><EFBFBD>3<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD>ȼ<EFBFBD>1Ϊδ<EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD>֡<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>0<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><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ(VID)<EFBFBD><EFBFBD>ȱʡֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ(VID)<EFBFBD><EFBFBD>ȱʡֵ
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> VIDȱʡֵ <EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>ȱʡֵ
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ 0 4
|
|
|
|
|
* ETHER_TYPE ֵ: <EFBFBD><EFBFBD>̫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16λ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>±<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<EFBFBD><EFBFBD>̫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]ȡֵ<EFBFBD><EFBFBD>[APPID<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>[APPID<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]ָAPPID<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>
|
|
|
|
|
* Ӧ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>̫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡֵ(16<EFBFBD><EFBFBD><EFBFBD><EFBFBD>) APPID<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* IEC61850-8-1GOOSE 88-B8 0 0
|
|
|
|
|
* IEC61850-8-1GSE<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 88-B9 0 0
|
|
|
|
|
* IEC61850-9-1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ 88-BA 0 1
|
|
|
|
|
* IEC61850-9-2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ 88-BA 0 1
|
|
|
|
|
* APPID ֵ<EFBFBD><EFBFBD>Ӧ<EFBFBD>ñ<EFBFBD>ʶ<EFBFBD><EFBFBD>APPID <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ù<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>APPID<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>[APPID <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]<EFBFBD><EFBFBD>[ʵ<EFBFBD>ʱ<EFBFBD>ʶ]
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD>APPID <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>8 <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>ΧΪ 0x4000<EFBFBD><EFBFBD>0x7fff<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>APPID<EFBFBD><EFBFBD>ȱʡֵӦΪ0x4000<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><EFBFBD><EFBFBD>Դ<EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>ֵӦ<EFBFBD>ñ<EFBFBD>ʶ(SV APPID)<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳǿ<EFBFBD><EFBFBD>ִ<EFBFBD>С<EFBFBD>
|
|
|
|
|
*
|
|
|
|
|
************************************************************************************/
|
|
|
|
|
typedef struct {
|
|
|
|
|
unsigned char des_mac[6];
|
|
|
|
|
unsigned char src_mac[6];
|
|
|
|
|
unsigned short tpid;
|
|
|
|
|
unsigned short tci;
|
|
|
|
|
unsigned short ether_type;
|
|
|
|
|
unsigned short appid;
|
|
|
|
|
unsigned short epdu_length;
|
|
|
|
|
unsigned short reserve1;
|
|
|
|
|
unsigned short reserve2;
|
|
|
|
|
}ST_SVPDU_LPDU_HEAD;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#pragma pack (pop)
|
|
|
|
|
#if defined (__cplusplus)
|
|
|
|
|
}
|
|
|
|
|
#endif /* defined (__cplusplus) */
|
|
|
|
|
|
|
|
|
|
#endif /* __HT_IEC_61850_PROTOCOL_H */
|