| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434 |
- #ifndef __GOOSE_APP_H
- #define __GOOSE_APP_H
- #define GOOSE_EQU_SIDE 8 // goose 通信单侧设备数量
- #define GOOSE_EQU_SIDE_N 4 // goose 通信负荷侧设备个数
- #define GOOSE_EQU_MAX (GOOSE_EQU_SIDE+GOOSE_EQU_SIDE_N) // goose 通信支持的设备总数
- #define GOOSE_RECV_GOLBNUM 16
- enum
- {
- GOOSE_CMD_TICK=0x11, //心跳报文 11
- GOOSE_CMD_DATA, // 突变报文 12
- GOOSE_CMD_GZGLOK, //故障隔离成功
- };
- enum
- {
- GOOSE_FIND_LL_NONE=0, // 寻找联络开关
- GOOSE_FIND_LL_QD, // 寻找联络开关 启动
- GOOSE_FIND_LL_OK, // 联络开关确认
- };
- #define FA_CMD_BUF_MAX 32
- enum
- {
- GOOSE_SEND_TBL_GZ=0, // 节点故障
- GOOSE_SEND_TBL_GL, // 隔离成功
- GOOSE_SEND_TBL_JT, // 开关拒跳
- GOOSE_SEND_TBL_GLBS, // 过流闭锁
- #if defined GD_AREA_ZHONGSHAN || defined GD_AREA_ZHONGSHAN_2020 //中山要求通信异常,全系统均异常
- GOOSE_SEND_TBL_STATUS, // 通信状态
- GOOSE_SEND_TBL_FG, // 通信复归
- #endif
- GOOSE_SEND_TBL_NUMBER, // 零序闭锁
- };
- enum
- {
- GOOSE_RECV_TBL_M01=0, //M侧节点故障
- GOOSE_RECV_TBL_M02, //M侧节点故障
- GOOSE_RECV_TBL_M03, //M侧节点故障
- GOOSE_RECV_TBL_M04, //M侧节点故障
- GOOSE_RECV_TBL_M05, //M侧节点故障
- GOOSE_RECV_TBL_M06, //M侧节点故障
- GOOSE_RECV_TBL_M07, //M侧节点故障
- GOOSE_RECV_TBL_M08, //M侧节点故障
- GOOSE_RECV_TBL_N01, //N侧节点故障
- GOOSE_RECV_TBL_N02, //N侧节点故障
- GOOSE_RECV_TBL_N03, //N侧节点故障
- GOOSE_RECV_TBL_N04, //N侧节点故障
- GOOSE_RECV_TBL_GL01, //开关隔离成功
- GOOSE_RECV_TBL_GL02, //开关隔离成功
- GOOSE_RECV_TBL_GL03, //开关隔离成功
- GOOSE_RECV_TBL_GL04, //开关隔离成功
- GOOSE_RECV_TBL_GL05, //开关隔离成功
- GOOSE_RECV_TBL_GL06, //开关隔离成功
- GOOSE_RECV_TBL_GL07, //开关隔离成功
- GOOSE_RECV_TBL_GL08, //开关隔离成功
- GOOSE_RECV_TBL_GL09, //开关隔离成功
- GOOSE_RECV_TBL_GL10, //开关隔离成功
- GOOSE_RECV_TBL_GL11, //开关隔离成功
- GOOSE_RECV_TBL_GL12, //开关隔离成功
-
-
- GOOSE_RECV_TBL_JT01, //开关拒跳
- GOOSE_RECV_TBL_JT02, //开关拒跳
- GOOSE_RECV_TBL_JT03, //开关拒跳
- GOOSE_RECV_TBL_JT04, //开关拒跳
- GOOSE_RECV_TBL_JT05, //开关拒跳
- GOOSE_RECV_TBL_JT06, //开关拒跳
- GOOSE_RECV_TBL_JT07, //开关拒跳
- GOOSE_RECV_TBL_JT08, //开关拒跳
- GOOSE_RECV_TBL_JT09, //开关拒跳
- GOOSE_RECV_TBL_JT10, //开关拒跳
- GOOSE_RECV_TBL_JT11, //开关拒跳
- GOOSE_RECV_TBL_JT12, //开关拒跳
-
- GOOSE_RECV_TBL_GLBS01, //过流闭锁01
- GOOSE_RECV_TBL_GLBS02, //过流闭锁02
- GOOSE_RECV_TBL_GLBS03, //过流闭锁03
- GOOSE_RECV_TBL_GLBS04, //过流闭锁04
- GOOSE_RECV_TBL_GLBS05, //过流闭锁05
- GOOSE_RECV_TBL_GLBS06, //过流闭锁06
- GOOSE_RECV_TBL_GLBS07, //过流闭锁07
- GOOSE_RECV_TBL_GLBS08, //过流闭锁08
- GOOSE_RECV_TBL_GLBS09, //过流闭锁09
- GOOSE_RECV_TBL_GLBS10, //过流闭锁10
- GOOSE_RECV_TBL_GLBS11, //过流闭锁11
- GOOSE_RECV_TBL_GLBS12, //过流闭锁12
- #if defined GD_AREA_ZHONGSHAN || defined GD_AREA_ZHONGSHAN_2020 //中山要求通信异常,全系统均异常
- GOOSE_RECV_TBL_STATUS01, //节点通信异常状态
- GOOSE_RECV_TBL_STATUS02, //节点通信异常状态
- GOOSE_RECV_TBL_STATUS03, //节点通信异常状态
- GOOSE_RECV_TBL_STATUS04, //节点通信异常状态
- GOOSE_RECV_TBL_STATUS05, //节点通信异常状态
- GOOSE_RECV_TBL_STATUS06, //节点通信异常状态
- GOOSE_RECV_TBL_STATUS07, //节点通信异常状态
- GOOSE_RECV_TBL_STATUS08, //节点通信异常状态
- GOOSE_RECV_TBL_STATUS09, //节点通信异常状态
- GOOSE_RECV_TBL_STATUS10, //节点通信异常状态
- GOOSE_RECV_TBL_STATUS11, //节点通信异常状态
- GOOSE_RECV_TBL_STATUS12, //节点通信异常状态
- GOOSE_RECV_TBL_FG01, //节点通信异常
- GOOSE_RECV_TBL_FG02, //节点通信异常
- GOOSE_RECV_TBL_FG03, //节点通信异常
- GOOSE_RECV_TBL_FG04, //节点通信异常
- GOOSE_RECV_TBL_FG05, //节点通信异常
- GOOSE_RECV_TBL_FG06, //节点通信异常
- GOOSE_RECV_TBL_FG07, //节点通信异常
- GOOSE_RECV_TBL_FG08, //节点通信异常
- GOOSE_RECV_TBL_FG09, //节点通信异常
- GOOSE_RECV_TBL_FG10, //节点通信异常
- GOOSE_RECV_TBL_FG11, //节点通信异常
- GOOSE_RECV_TBL_FG12, //节点通信异常
- #endif
- GOOSE_RECV_TBL_NUMBER, // 接收数据个数
- };
- #define GOOSE_RECV_LOGIC_NUM GOOSE_RECV_TBL_GLBS12 // 参与goose逻辑的虚遥信
- struct gse_tbl
- {
- char * name;
- char * sAddr;
- };
- // 保护动作跳闸标志
- typedef union UGOOSE_STU
- {
- DWORD wfFlag;
- struct
- {
- DWORD blxbs:1; //零序闭锁
- DWORD bglbs:1; //过流闭锁
- DWORD btw:1; //跳位
- DWORD bfx:1; // 节点反方向故障bit 4
- DWORD bzx:1; // 节点正方向故障bit 3
- DWORD blx:1; // 节点零序故障 bit 5
- DWORD btzsb:1; // 开关拒动 bit 2
- DWORD bgzglok:1; // 隔离ok bit 1
- DWORD bgl:1; // 节点故障 bit 0
- DWORD bcomerr:1; //通信异常
- DWORD bTstgz:1;
- DWORD bTstglok:1;
- DWORD bTstjt:1;
- DWORD bTstglbs:1;
- DWORD bTstcomerr:1;
-
- }bFlag;
- }UGOOSE_STU;
- typedef struct FA_GOOSE
- {
- UGOOSE_STU ug;
- DWORD ug_save;
- UGOOSE_STU ugside[GOOSE_EQU_MAX];
- DWORD dTrecv[GOOSE_RECV_GOLBNUM];
- int recvgolbnum;
- /*同61850模块交互的数据*/
- int outval[GOOSE_SEND_TBL_NUMBER];
- int inval[GOOSE_RECV_TBL_NUMBER];
- bool bSend;
- int commstate; //goose 模块发送的通信状态==0 通信正常 ==1 通信异常
- int commerr;
- int syscomerr;
- bool bComErr; //保护用
- bool bNside;
- TIMERELAY tRstTime; // goose 信息延时复归
- TIMERELAY tGooseStillTime; // goose 投入延迟复归
- #if defined GD_AREA_ZHONGSHAN || defined GD_AREA_ZHONGSHAN_2020
- u32 commerrst; //综合本机后的状态
- u32 commerrfg;
- u32 commerrstsave; // 和本机状态比较,本机状态大于保存值,需发送,说明有新的中断信息
- u32 commerrfgsave;
- TIMERELAY tErrfgtime; // 发送复归后,复归值清零时间继电器
- #endif
- }FA_GOOSE;
- typedef union UGOCDIR
- {
- DWORD wfFlag;
- struct
- {
- DWORD bYY1:1;
- DWORD bYY2:1;
- DWORD bWY1:1;
- DWORD bWY2:1;
-
- DWORD bZXA:1; //A相正方向动作
- DWORD bZXB:1; //B相正方向动作
- DWORD bZXC:1; //C相正方向动作
- DWORD bZX:1; //线路正向故障
-
- DWORD bFXA:1; //A反方向动作
- DWORD bFXB:1; //B相反方向动作
- DWORD bFXC:1; //C相反方向动作
- DWORD bFX:1; //线路反向故障
-
- DWORD bWXA:1; //A相无方向动作
- DWORD bWXB:1; //B相无方向动作
- DWORD bWXC:1; //C相无方向动作
- DWORD bWX:1; //线路无方向故障
-
- DWORD bQDA:1; // A相启动
- DWORD bQDB:1; // B相启动
- DWORD bQDC:1; // C相启动
- DWORD bQDLX:1;
-
- DWORD bLX:1; //线路零序故障
- DWORD bGZ:1; //线路有故障
- DWORD bGLBS:1;
- DWORD bCYY:1;
- DWORD bgzglok:1;
- DWORD btzsb:1;
- DWORD bcomerr:1;
- DWORD bcomerrbak:1;
- DWORD bllWY1:1;
- DWORD bllWY2:1;
-
- }bFlag;
- }UGOCDIR;
- typedef union UGOCFLAG
- {
- DWORD wfFlag;
- struct
- {
- DWORD bglQD:1;
- DWORD bglTz:1;
- DWORD bglTzH:1; //跳闸保持信号
- DWORD bglQDWave:1;
- #if defined GD_AREA_ZHONGSHAN || defined GD_AREA_ZHONGSHAN_2020 || defined GD_AREA_MAIN_2020
- DWORD bgl2QD:1;
- DWORD bgl2Tz:1;
- DWORD bgl2TzH:1; //跳闸保持信号
- DWORD bgl2QDWave:1;
- #endif
-
- DWORD blxQD:1;
- DWORD blxTz:1;
- DWORD blxTzH:1;
- DWORD blxQDWave:1;
- DWORD bgzglQD:1;
- DWORD bgzglTz:1; //故障隔离跳闸
- DWORD bgzglTzH:1; //故障隔离跳闸
- DWORD bextQD:1;
-
- DWORD bextTz:1;
- DWORD bextTzH:1;
- DWORD bsdQD:1; //首端失压 故障隔离
- DWORD bsdTz:1; // 跳闸
-
- DWORD bsdTzH:1; // 跳闸
- DWORD berrQD:1; //通信异常失压 故障隔离
- DWORD berrTz:1; // 跳闸
- DWORD berrTzH:1; // 跳闸
- DWORD bllQD:1 ; // 联络合闸启动
- DWORD bllWY_1:1 ; // 联络单侧失压
- DWORD bllhz:1; //联络合闸动作
- DWORD bllhzH:1; //联络合闸动作
-
- DWORD bExtbs:1;
- DWORD bXBbs:1;
- DWORD bXBbs2:1; //过流2谐波闭锁
-
- }bFlag;
- }UGOCFLAG;
- typedef union UCDFLAG
- {
- WORD wfFlag;
- struct
- {
-
- WORD bQD:1;
- WORD bCD:1;
- WORD bFD:1;
- }bFlag;
- }UCDFLAG;
- typedef struct FA_CD
- {
- UCDFLAG sta;
- TIMERELAY tCDTime; // 充电时间
- TIMERELAY tWYTime; // 放电失压时间
- }FA_CD;
- enum
- {
- FAG_GL1=0, // 过流1段
- FAG_GL2, // 过流2段
- FAG_LX, // 零序
- FAG_BHNUMBER
- };
- typedef struct TGOC_T
- {
- UGOCDIR psta; // 公用动作信息
- #if defined GD_AREA_ZHONGSHAN || defined GD_AREA_ZHONGSHAN_2020 || defined GD_AREA_MAIN_2020
- UGOCDIR psta2; // 过流2段用动作信息
- #endif
- UGOCFLAG sta; // 故障动作信息
- TIMERELAY tTZX_300ms; // 正相方向判断保持2秒
- TIMERELAY tTFX_300ms; // 反相方向判断保持2秒
- TIMERELAY tTWX_300ms; // 无方向判断报纸2秒
- TIMERELAY tTLX_300ms; // 零序故障保持2秒
- TIMERELAY tTGLBS_300ms; // 零序故障保持2秒
- TIMERELAY tTHz1s; // 合闸位置保持1秒
-
- FA_CD tglcd; //故障隔离充电
- FA_CD tllcd; //故障联络充电
- FA_CD tqccd; // 故障切除充电
- bool b_side_gz;
- bool b_side_tzsb;
- bool bTzout;
- bool bslowEn; //缓动型条件满足
- bool bgooseGz;
- bool bgooseBsHz;
- bool bextTzLed; // 动作灯
- bool bglTzLed; // 动作灯
- bool blxTzLed; // 动作灯
- bool bsdTzLed; // 动作灯
- bool berrTzLed; // 动作灯
- bool bgzglTzLed; // 故障隔离动作灯
-
- TIMERELAY tglFz25ms; // 幅值启动25ms
- TIMERELAY tglQDTime; // 时间继电器
- TIMERELAY tglQD25ms; // 启动25ms,防干扰时间继电器,用于速断和零序加速,防止误出口
- TIMERELAY tglslowTime; // 时间继电器
- TIMERELAY tlxslowTime; // 时间继电器
- #if defined GD_AREA_ZHONGSHAN || defined GD_AREA_ZHONGSHAN_2020 || defined GD_AREA_MAIN_2020
- TIMERELAY tgl2Fz25ms; // 幅值启动25ms
- TIMERELAY tgl2QDTime; // 时间继电器
- TIMERELAY tgl2QD25ms; // 启动25ms,防干扰时间继电器,用于速断和零序加速,防止误出口
- TIMERELAY tgl2slowTime; // 时间继电器
- TIMERELAY tTZX2_300ms; // 正相方向判断保持2秒
- TIMERELAY tTFX2_300ms; // 反相方向判断保持2秒
- TIMERELAY tTWX2_300ms; // 无方向判断报纸2秒
-
- #endif
- #ifdef GD_AREA_ZHONGSHAN_2020
- TOC_T tOc[FAG_BHNUMBER]; // 合闸加速跳 过流1
- #endif
- TIMERELAY tlxFz25ms; // 幅值启动25ms
- TIMERELAY tlxQDTime; // 时间继电器
- TIMERELAY tlxQD25ms; // 启动25ms,防干扰时间继电器,用于速断和零序加速,防止误出口
- TIMERELAY tgzglTime; // 故障隔离时间
- TIMERELAY tgoose15ms_gzgl; // 等待10ms goose 通信时间
- TIMERELAY tsdlostTime; // 首端失压时间
- TIMERELAY terrlostTime; //通信异常失压时间
-
- TIMERELAY tllhzTime; //联络合闸时间
- TIMERELAY tllQdTime; //联络合闸时间
- TIMERELAY tgoosedelayms_ll; //联络 等待goose 通信时间
- TIMERELAY tllWY1Time; //联络合闸时间
- TIMERELAY tllWY2Time; //联络合闸时间
- TIMERELAY tllYY1Time; //联络有压时间
- TIMERELAY tllYY2Time; //联络有压时间
-
- TIMERELAY tTzcheckTime; //跳闸失败检查时间
- TIMERELAY tHzcheckTime; //跳闸失败检查时间
- TIMERELAY tCYY3sdelayms;
- TIMERELAY tgzglokextTime;
- TIMERELAY ttzsbextTime;
- TIMERELAY tgzglokForbitTime; //故障隔离成功发送后,闭锁再次发送时间
- TIMERELAY textbsTime;
-
- }TGOC_T;
- extern const struct gse_tbl g_goose_send_tbl[GOOSE_SEND_TBL_NUMBER];
- extern const struct gse_tbl g_goose_recv_tbl[GOOSE_RECV_TBL_NUMBER];
- extern FA_GOOSE tFAg;
- extern int g_bgseEnable;
- void fa_g_unpack(void);
- void fa_g_packet(bool bfirst);
- void fa_g_init(void);
- void GOC_dir_check(int sw,u32 dStep);
- void fag_oc_gl(int sw,u32 dStep);
- void fag_oc_lx(int sw,u32 dStep);
- void fa_g_app_time(int sw);
- void fag_bh(int sw,DWORD dStep);
- // sunxi 20190418 void goose_send_packet(u8 type,u8 *mac,u32 gData,struct timespec *pts,bool btick);
- void XBCalc_goc(int sw); // goose 谐波计算:处理标志:谐波闭锁动作
- void fa_g_decode(int commstate); //通信异常判断
- void fa_g_extinit(int num,int firstaddr); // app_goose.c中调用fa_g.c中的变量初始化
- void fa_g_gocbrecvdT(int index); // app_goose.c中接收后调用,用于通信超时处理
- #ifdef GD_AREA_ZHONGSHAN_2020
- void fag_oc_acc(int sw,u32 dStep); // 分布式合闸加速跳闸
- #endif
- #endif
- //========================== 本文件结束 ===============================
|