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

📄 global.h

📁 电力系统无功自动补偿的操作系统程序
💻 H
📖 第 1 页 / 共 2 页
字号:
			CheckYxRec[i].ReInitDataProc( DATA_TYPE_YX);
			CheckYxStatus[i]	= TRUE;
			IsNeedManClearYx[i] = FALSE;
			yxLockStatus[i]		= FALSE;
		}
		for(i=0;i<LOCKVQC_YCNUM;i++) {
			CheckYcRec[i].ReInitDataProc( DATA_TYPE_YC);
			CheckYcValue[i] = 0;
			CheckYcType[i]  = IS_MORE;
			ycLockStatus[i] = FALSE;
		}
	};
	void	ClearAllManUnlockProc(){
		BYTE i;
		for (i=0;i<CheckBhNum;i++){
			bhLockStatus[i] = FALSE;
			CheckBhRec[i].ClearBhStatus();
		}
	    for (i=0;i<CheckYxNum;i++)
		    if (IsNeedManClearYx[i])  yxLockStatus[i] = FALSE;
	};
	void	SetBhStatus(int rtuNo, int dotNo){
		for (BYTE i=0;i<CheckBhNum;i++)
			CheckBhRec[i].SetBhStatus(rtuNo, dotNo);
	};
	UINT	GetLockStatusProc(){
		BYTE i;
		UINT ff=0;

			for (i=0;i<CheckBhNum;i++){
				bhLockStatus[i] = FALSE;
				if (CheckBhRec[i].GetBhStatus()) {
					bhLockStatus[i] = TRUE;
					ff |= LOCK_BH;
				}
			}

		    for (i=0;i<CheckYxNum;i++){
			    if (!IsNeedManClearYx[i])  yxLockStatus[i] = FALSE;
				if (CheckYxRec[i].GetStatus()==CheckYxStatus[i])
					yxLockStatus[i] = TRUE;
				if (yxLockStatus[i]) ff |= LOCK_YX;
			}
	
			for (i=0;i<(int)CheckYcNum;i++){
				ycLockStatus[i] = FALSE;
				if (CheckYcType[i]==IS_MORE) {
					if (CheckYcRec[i].GetYcValue() > CheckYcValue[i]){
						ycLockStatus[i] = TRUE;
						ff |= LOCK_YC;
					}
				}
				else if (CheckYcType[i]==IS_LESS) {
					if (CheckYcRec[i].GetYcValue() < CheckYcValue[i]){
						ycLockStatus[i] = TRUE;
						ff |= LOCK_YC;
					}
				}
				else if (CheckYcType[i]==IS_EQUAL) {
					if ((int)(CheckYcRec[i].GetYcValue()+0.5) == (int)(CheckYcValue[i]+0.5)){
						ycLockStatus[i] = TRUE;
						ff |= LOCK_YC;
					}
				}
				else if (CheckYcType[i]==IS_MORE_OR_EQUAL) {
					if ((int)(CheckYcRec[i].GetYcValue()+0.5) >= (int)(CheckYcValue[i]+0.5)){
						ycLockStatus[i] = TRUE;
						ff |= LOCK_YC;
					}
				}
				else if (CheckYcType[i]==IS_LESS_OR_EQUAL) {
					if ((int)(CheckYcRec[i].GetYcValue()+0.5) <= (int)(CheckYcValue[i]+0.5)){
						ycLockStatus[i] = TRUE;
						ff |= LOCK_YC;
					}
				}
				else if (CheckYcType[i]==IS_NOT_EQUAL) {
					if ((int)(CheckYcRec[i].GetYcValue()+0.5) != (int)(CheckYcValue[i]+0.5)){
						ycLockStatus[i] = TRUE;
						ff |= LOCK_YC;
					}
				}
			}
			return ff;
	}
};

class VQCGlobalDef{
public:
	UINT    ClassSize;
	BOOL	bCanUse;	//参数可用标志
    BYTE    RunMode;  //运行模式,电压优先,无功优先,综合考虑,只考虑电压,只考虑无功
	BYTE    DevControlMode;//设备控制模式,2-只动分接头,1-只动电容或抗器,0-都有
	BYTE    SeasonNum;
	BYTE    currSeasonNo;      //当前季节
	BYTE    EndMonth[UQ_SEASON_NUMBER]; //季节时段的结束日期
	BYTE    EndDay[UQ_SEASON_NUMBER];
	BYTE    AdjustPeriodTime;  //调节周期
    BOOL    bWatch;      //监视标志

    UINT    MaxActTimes;
    UINT    NextActTime; // 动作间隔
    BOOL    bUseMean;    //不用权值计算,采用平均值计算
    BOOL    bUseCos;     //根据功率因数下定值
    BOOL    bFirstDrq;   //优先投切电容器来调电压
    BOOL    bSameAllDevice;      //所有设备的限值相同

	//run VAlue
    UINT    runTime;  //VQC已运行时间
	CTime   currTime;
    DBLINK	noUseDBLINK[10];
    BYTE	noUseByte[100];

	VQCGlobalDef(){	
		bCanUse = FALSE;
		ClassSize = sizeof(VQCGlobalDef);
		RunMode = VQCMODE_FIRST_U;
		DevControlMode = DEVMODE_ALL;
		SeasonNum = 4;
		EndMonth[0] = 3;
		EndMonth[1] = 6;
		EndMonth[2] = 9;
		EndMonth[3] = 12;
		EndDay[0]	= 1;
		EndDay[1]	= 1;
		EndDay[2]	= 1;
		EndDay[3]	= 1;
		bWatch = true;
		AdjustPeriodTime = 3;
		MaxActTimes = 80;
		NextActTime = 30;
		bSameAllDevice = TRUE;
		bUseMean = FALSE;
		bUseCos = FALSE;
		runTime  = 10000;
		currTime = CTime::GetCurrentTime();
		//SelectSeasonProc(); 
	};
	BOOL	CheckParam(char *alarmMsg){
		BYTE i;
		alarmMsg[0]=0;
		strcpy(alarmMsg, "全局参数不对!");
		if (ClassSize != sizeof(VQCGlobalDef)) return FALSE;

		if (RunMode>VQCMODE_ONLY_Q) return FALSE;
		if (DevControlMode>DEVMODE_ONLY_DRQ) return FALSE;

		if ((AdjustPeriodTime<1)||(AdjustPeriodTime>30)) {
			strcpy(alarmMsg, " 调节周期时间设置错!");
			return FALSE;
		}

		strcpy(alarmMsg, " 季节时间设置错!");
		if (SeasonNum>UQ_SEASON_NUMBER) return FALSE;
		for (i=0;i<SeasonNum;i++){
			if (EndMonth[i] <1)	return FALSE;
			if (EndMonth[i] >12)return FALSE;
			if (EndDay[i] >31)	return FALSE;
			if (EndDay[i] <1)	return FALSE;
		}
		for (i=1;i<SeasonNum;i++){
			if (EndMonth[i] <EndMonth[i-1])	 return FALSE;
			if (EndMonth[i] ==EndMonth[i-1])
				if (EndDay[i] <=EndDay[i-1]) return FALSE;
		}
		alarmMsg[0]=0;
		return TRUE;
	};

	void SelectSeasonProc(){    //选择季节
		int i;
		if (SeasonNum<=1) {
			currSeasonNo = 0;
			return;
		}
		currTime = CTime::GetCurrentTime();
		for (i=0;i<SeasonNum;i++){
			if (currTime.GetMonth() > EndMonth[i]) continue;
			if (currTime.GetMonth() < EndMonth[i]) break;
			if (currTime.GetDay() < EndDay[i]) break;
		}
		i += SeasonNum;
		i --;
		i %= SeasonNum;
		currSeasonNo =i;
	};
};

class VQCSOE{
public:
	BYTE	isFjt;
	BYTE    operType;
	BYTE	zbNo;
	BYTE	mxNo;
	char    operDevName[125];
	BYTE	ykNo;
    int		zbDw;
    float   U;
    float   Q;
    float   uMeanValue;
    float   uUpLimit;
    float   uDownLimit;
    float   qMeanValue;
    float   qUpLimit;
    float   qDownLimit;
    CTime   HappenTime;
	bool	SaveVQCSoeProc(int rtuNo){
		HFILE hFile;
		CString fileName(VQC_SOE_PATH);
		char szText[40];
		UINT writeByteNum;

		wsprintf(szText, "RTU%02d\\%02d%02d%02d%02d.Y%02d",
			rtuNo,
			HappenTime.GetMonth(),HappenTime.GetDay(),
			HappenTime.GetHour(),HappenTime.GetMinute(),
			HappenTime.GetYear()%100);
		fileName += szText;
		hFile=_lcreat(fileName, 0);
		if (hFile==HFILE_ERROR) return FALSE;
		writeByteNum = _lwrite(hFile,(char *)this,sizeof(VQCSOE));
		_lclose(hFile);
		if (writeByteNum != sizeof(VQCSOE)) return FALSE;
		return (TRUE);
	};
	BOOL	ReadVQCSoeProc(char *fileName){
		HFILE hFile;
		UINT readByteNum;
		CString fn(VQC_SOE_PATH);
		fn += fileName;
		hFile=_lopen(fn, OF_READ);
		if (hFile==HFILE_ERROR) return FALSE;
		readByteNum = _lread(hFile,(char *)this,sizeof(VQCSOE));
		_lclose(hFile);
		if (readByteNum != sizeof(VQCSOE)) return FALSE;
		return (TRUE);
	};
};

extern class YKTRANSDEFINE ykTrans;

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -