|
|
/****************************************************************************
|
|
|
** 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采样值(sample value)链路层(link layer)报文(pdu)头部信息。
|
|
|
* @des_mac: 目标地址(为FF:FF:FF:FF:FF:FF表示广播包),ISO/IEC8802-3标准地址;
|
|
|
* @src_mac: 源地址,ISO/IEC8802-3标准地址;
|
|
|
* @tpid: 标记的协议标识(Tag Protocol Identifier),有些报文没有该字段(非标准的);
|
|
|
* @tci: 标记的控制信息(Tag Control Information),有些报文没有该字段(非标准的);
|
|
|
* @ether_type: 以太网类型;
|
|
|
* @appid: 应用标识,标识不用的应用的采样值,连续几个包取得采样值时需要核对应用标识,否则会导致取得采
|
|
|
* 样值混乱;
|
|
|
* @epdu_length: 包括以APPID开始的以太网类型PDU在内的八位位组的数目,其值为8+m(m<1480);
|
|
|
* @reserve1: 保留字节,为0;
|
|
|
* @reserve2: 保留字节,为0;
|
|
|
*
|
|
|
* TPID 值:0x8100;
|
|
|
* TCI 值: 由三部分组成:
|
|
|
* PRI:User priority(优先权),占前3bit(BS3),应对user priority值进行配置,以区分采样值和定时苛
|
|
|
* 刻的、保护相关的GOOSE信息,或低优先级的总线负载。如果不配置优先级,则应采用缺省值(4);
|
|
|
* CFI:占PRI后面1bit,用于标识是否含有RIF信息;在以太网标记帧中长度/类型域后没有嵌入RIF域,值应
|
|
|
* 该为0;若值为1,则表明在ISO/IEC8802-3标记帧中,Length/Type域后接着内嵌的路由信息域(RIF);
|
|
|
* VID: 占之后剩下的12bit;为支持虚拟局域网是一种可选的机制,如果采用了这种机制,那么配置时应设
|
|
|
* 定虚拟局域网标识(VID)。另外,虚拟局域网标识VID 缺省值为0;
|
|
|
* 注:IEEE802.1Q允许应用带有一组优先级限制,高优先级帧应设置其优先级为4~7,低优先级帧则为1~3,优
|
|
|
* 先级1为未标记的帧,应避免采用优先级0,因为这会引起正常通信下不可预见的传输时延。优先级和虚拟
|
|
|
* 网标识(VID)的缺省值表:优先级和虚拟网标识(VID)的缺省值
|
|
|
* 服务 VID缺省值 优先级缺省值
|
|
|
* 采样值 0 4
|
|
|
* ETHER_TYPE 值: 以太网类型码16位表示,下表描述[以太网类型码]取值和[APPID类型码]取值;
|
|
|
* 表:分配的以太网类型码取值([APPID类型码]指APPID的最高两位)
|
|
|
* 应用 以太网类型码取值(16进制) APPID类型
|
|
|
* IEC61850-8-1GOOSE 88-B8 0 0
|
|
|
* IEC61850-8-1GSE管理 88-B9 0 0
|
|
|
* IEC61850-9-1采样值 88-BA 0 1
|
|
|
* IEC61850-9-2采样值 88-BA 0 1
|
|
|
* APPID 值:应用标识。APPID 用以选择采样值信息并区分应用关联。APPID的值是[APPID 类型码]和[实际标识]
|
|
|
* 的组合,APPID 类型码被定义为其最高两位(如表8 所定义)。因而采样值取如下值:
|
|
|
* 为采样值保留的取值范围为 0x4000~0x7fff。如果没有配置APPID,缺省值应为0x4000。缺省值被保留为
|
|
|
* 表明缺少配置。强烈推荐在同一系统内采用唯一的、面向数据源的采样值应用标识(SV APPID)。这应当由
|
|
|
* 配置系统强迫执行。
|
|
|
*
|
|
|
************************************************************************************/
|
|
|
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 */
|