⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 global.h

📁 电力系统无功自动补偿的操作系统程序
💻 H
📖 第 1 页 / 共 2 页
字号:
#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 + -