📄 global.h
字号:
#include "dblink.h"
#ifndef _GLOBAL_HEAD
#define _GLOBAL_HEAD
#define VQC_PARAM_FILE "\\nsa2000\\init\\VQCPARAM."
#define VQC_SOE_PATH "\\nsa2000\\log\\vqc\\"
#define VQC_TIMER 10
#define MAX_SAMPLE_NUM 500
#define YKOBT_DRQ 0xcc
#define YKOBT_FJT 0x33
#define YKOBT_ZWS 0x99
#define VQC_VER 0x2000
#define RUN_MODE_LOCAL 0
#define RUN_MODE_REMOTE 1
#define NORMAL_WEIGHT 10
#define LIMIT_MODE_ALL 100
#define LIMIT_MODE_MEAN 0 //不包括处于闭锁区域的值
#define VQCMODE_FIRST_U 0 //电压优先,调节手段不能同时满足U,Q时,优先满足U
#define VQCMODE_ALL 1 //综合考虑,调节手段不能同时满足U,Q时,不调以减少操作次数
#define VQCMODE_FIRST_Q 2 //无功优先,调节手段不能同时满足U,Q时,优先满足Q
#define VQCMODE_ONLY_U 3 //只考虑电压
#define VQCMODE_ONLY_Q 4 //只考虑无功
#define DEVMODE_ONLY_FJT 1 //只有分节头调节,只考虑电压
#define DEVMODE_ONLY_DRQ 2 //只有电容抗器投切,
#define DEVMODE_ALL 0 //分节头电容器都可用,电压优先无功优先或综合考虑只或考虑电压
#define UQ_SEASON_NUMBER 4 //电压与无功一年共有4个季节参数,分春夏秋冬4个时段
#define UQ_SECT_NUMBER 16 //电压与无功一天共有16个时间段,
#define VQC_ZBNUM 6
#define VQC_DRQNUM 6 // one muxi
#define VQC_FJTMIDDWNUM 4
#define LOCKVQC_YCNUM 8
#define LOCKVQC_YXNUM 8
#define LOCKVQC_BHNUM 4
//遥测闭锁值比较算式类型
#define IS_MORE 0 //按浮点数计算 >
#define IS_LESS 1 //按浮点数计算 <
#define IS_EQUAL 2 //按整型数计算 =
#define IS_MORE_OR_EQUAL 3 //按整型数计算 >=
#define IS_LESS_OR_EQUAL 4 //按整型数计算 <=
#define IS_NOT_EQUAL 5 //按整型数计算 <> 不等于
#define LOCK_NONE 0x0000
//总的VQC调节有关闭锁标志,共用闭锁标志标志反映在主变调节闭锁标志上和母线调节闭锁标志上
#define LOCK_TIMES_OVER 0x0001 //超过总的限定动作次数,共用闭锁标志
#define LOCK_BH 0x0002 //保护闭锁,共用闭锁标志
#define LOCK_YX 0x0004 //YX闭锁,共用闭锁标志
#define LOCK_YC 0x0008 //YC闭锁,共用闭锁标志
#define LOCK_STOP 0x0010 //退出运行,共用闭锁标志
#define LOCK_REMOTE 0x4000 //远方处于退出状态
#define LOCK_LOCAL 0x8000 //就地处于退出状态
//主变调节闭锁标志,所有标志反映在母线调节闭锁标志
#define LOCK_ZB_TIMES_OVER LOCK_TIMES_OVER //总的闭锁标志反应
#define LOCK_ZB_BH LOCK_BH //共用闭锁标志,含主变保护闭锁
#define LOCK_ZB_YX LOCK_YX //共用闭锁标志,含主变遥信闭锁
#define LOCK_ZB_YC LOCK_YC //共用闭锁标志,含主变遥测闭锁
#define LOCK_ZB_STOP LOCK_STOP //总的闭锁标志反应
#define LOCK_ZB_NOTRUN 0x0100 //主变未运行,标志反映到母线调节闭锁标志
#define LOCK_ZB_ACTING 0x0200 //正在操作过程中,暂不能调节,标志反映到母线调节闭锁标志
#define LOCK_ZB_FORBIDUPU 0x4000 //电压不能上调,标志反映到母线调节闭锁标志
#define LOCK_ZB_FORBIDDOWNU 0x8000 //电压不能下调,标志反映到母线调节闭锁标志
//分接头调节有关闭锁标志,分接头闭锁不影响整个VQC调节
#define LOCK_FJT_YX LOCK_YX //分接头被闭锁遥信闭锁
#define LOCK_FJT_TIMES_OVER 0x0040 //分接头动作次数太多
#define LOCK_FJT_NOTREADY 0x0080 //分接头动作恢复过程中
#define LOCK_FJT_REJECT 0x0100 //已两次拒动
#define LOCK_FJT_ILOCK 0x0200 //I 到达封锁区域
#define LOCK_FJT_MANACT 0x0400 //分接头人工调节
#define LOCK_FJT_DWINVALID 0x0800 //不合法的档位
#define LOCK_FJT_UP 0x4000 //分接头不能上调
#define LOCK_FJT_DOWN 0x8000 //分接头不能下调
//VQC子模块即母线有关闭锁标志,
#define LOCK_MX_TIMES_OVER LOCK_TIMES_OVER //总的闭锁标志反应
#define LOCK_MX_BH LOCK_BH //共用闭锁标志,含母线保护闭锁
#define LOCK_MX_YX LOCK_YX //共用闭锁标志,含母线遥信闭锁
#define LOCK_MX_YC LOCK_YC //共用闭锁标志,含母线遥测闭锁
#define LOCK_MX_STOP LOCK_STOP //总的闭锁标志反应
#define LOCK_MX_NOTRUN LOCK_ZB_NOTRUN //母线连接的主变未运行
#define LOCK_MX_ACTING LOCK_ZB_ACTING //正在操作过程中,暂不能调节
#define LOCK_MX_NOTLINK 0x0400 //母线没有与主变相连
#define LOCK_MX_VALUE_OVER 0x0800 //UQ 到达封锁区域
#define LOCK_MX_FORBIDUPU LOCK_ZB_FORBIDUPU //电压不能上调
#define LOCK_MX_FORBIDDOWNU LOCK_ZB_FORBIDDOWNU //电压不能下调
//电容器或电抗器有关动作闭锁
#define LOCK_DRQ_TIMES_OVER LOCK_TIMES_OVER //超过设备限定动作次数,
#define LOCK_DRQ_BH LOCK_ZB_BH //保护信号闭锁
#define LOCK_DRQ_YX LOCK_YX //YX信号闭锁
#define LOCK_DRQ_NOTREADY LOCK_FJT_NOTREADY//电容器动作恢复过程中
#define LOCK_DRQ_REJECT LOCK_FJT_REJECT //电容器已两次拒动
#define LOCK_DRQ_NOUSE LOCK_FJT_ILOCK //电容器开关隔离刀闸没投入或电容器开关故障
#define LOCK_DRQ_MANACT LOCK_FJT_MANACT //电容器开关人工调节
#define LOCK_DRQ_CLOSE LOCK_FJT_UP //电容器不能合
#define LOCK_DRQ_OPEN LOCK_FJT_DOWN //电容器不能分
#define ZONE_UP_LOCK 1
#define ZONE_UP 2
#define ZONE_NORMAL_UP 3
#define ZONE_NORMAL 4
#define ZONE_NORMAL_DOWN 5
#define ZONE_DOWN 6
#define ZONE_DOWN_LOCK 7
#define RUN_ZONE_LOCK 0
#define RUN_ZONE_LEFT_UP 1
#define RUN_ZONE_UP 2
#define RUN_ZONE_RIGHT_UP 3
#define RUN_ZONE_LEFT 4
#define RUN_ZONE_NORMAL 5
#define RUN_ZONE_RIGHT 6
#define RUN_ZONE_LEFT_DOWN 7
#define RUN_ZONE_DOWN 8
#define RUN_ZONE_RIGHT_DOWN 9
#define ACT_MODE_NONE 0
#define ACT_MODE_FJT_UP 0x11
#define ACT_MODE_FJT_DOWN 0x22
#define ACT_MODE_DRQ_CLOSE 0x44
#define ACT_MODE_DRQ_OPEN 0x88
#define ACT_MODE_DKQ_CLOSE 0x66
#define ACT_MODE_DKQ_OPEN 0x99
class ST_LIMIT{
public:
BYTE SectNum;
BYTE EndHour[UQ_SECT_NUMBER];
BYTE EndMinute[UQ_SECT_NUMBER];
float UpLimit[UQ_SECT_NUMBER];
float DownLimit[UQ_SECT_NUMBER];
BYTE currTimeSectNo;
ST_LIMIT(){
SectNum =1;
currTimeSectNo = 0;
for (BYTE i=0;i<UQ_SECT_NUMBER;i++){
EndHour[i] = 24;
EndMinute[i]= 0;
UpLimit[i] = 0;
DownLimit[i]= 0;
}
};
BYTE GetCurrTimeSectNo(){
int i;
CTime ct;
if (SectNum==1) return 0;
ct = CTime::GetCurrentTime();
if ((SectNum<=0)||(SectNum>UQ_SECT_NUMBER)) {
ST_LIMIT();
return 0;
}
for(i=0;i<SectNum;i++){
if (ct.GetHour() > EndHour[i]) continue;
if (ct.GetHour() < EndHour[i]) break;
if (ct.GetMinute() < EndMinute[i]) break;
}
i += SectNum;
i --;
i %= SectNum;
return i;
};
public:
void SetCurrTimeSectNo(){ currTimeSectNo = GetCurrTimeSectNo();};
float GetUpLimtValue() { return UpLimit[currTimeSectNo]; };
float GetDownLimtValue(){ return DownLimit[currTimeSectNo]; };
};
class Lock_Condition{ //闭锁条件设置
public:
UINT ClassSize;
UINT CheckBhNum;
DBLINK CheckBhRec[LOCKVQC_BHNUM];
BOOL bhLockStatus[LOCKVQC_BHNUM];
UINT CheckYxNum;
DBLINK CheckYxRec[LOCKVQC_YXNUM];
BOOL CheckYxStatus[LOCKVQC_YXNUM];
BOOL IsNeedManClearYx[LOCKVQC_YXNUM];
BOOL yxLockStatus[LOCKVQC_YXNUM]; //run value
UINT CheckYcNum;
DBLINK CheckYcRec[LOCKVQC_YCNUM];
float CheckYcValue[LOCKVQC_YCNUM];
BYTE CheckYcType[LOCKVQC_YCNUM]; // up or down
BOOL ycLockStatus[LOCKVQC_YCNUM];
BOOL CheckParam(char *alarmMsg){
BYTE i;
alarmMsg[0]=0;
strcpy(alarmMsg, "闭锁参数不对! ");
if (ClassSize != sizeof(Lock_Condition)) return FALSE;
if (CheckBhNum>LOCKVQC_BHNUM) return FALSE;
if (CheckYcNum>LOCKVQC_YCNUM) return FALSE;
if (CheckYxNum>LOCKVQC_YXNUM) return FALSE;
for(i=0;i<CheckBhNum;i++)
if (!CheckBhRec[i].CheckBhParam()){
strcpy(alarmMsg, "保护闭锁条件错!");
return FALSE;
}
for(i=0;i<CheckYcNum;i++)
if (!CheckYcRec[i].CheckYcParam()){
strcpy(alarmMsg, "遥测闭锁条件错!");
return FALSE;
}
for(i=0;i<CheckYxNum;i++)
if (!CheckYxRec[i].CheckYxParam()){
strcpy(alarmMsg, "遥信闭锁条件错!");
return FALSE;
}
alarmMsg[0]=0;
return TRUE;
}
Lock_Condition(){
BYTE i;
ClassSize = sizeof(Lock_Condition);
CheckBhNum = 0;
CheckYcNum = 0;
CheckYxNum = 0;
for(i=0;i<LOCKVQC_BHNUM;i++){
CheckBhRec[i].ReInitDataProc( DATA_TYPE_BH);
bhLockStatus[i] = FALSE;
}
for(i=0;i<LOCKVQC_YXNUM;i++) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -