📄 mx.h
字号:
#include "drq.h"
#include "global.h"
#ifndef _MUXI_HEAD
#define _MUXI_HEAD
class VQCMONI_DBS{
public:
// dead value
UINT ClassSize;
float LockUpLimit;
float LockDownLimit;
ST_LIMIT limit[UQ_SEASON_NUMBER];
float oweValue; //未越限的权值
int oweWeight; //未越限的差值
int weight1; //第一个变化量的权值
int weight2; //第二个变化量的权值
float fValue1; //第一个变化量值,以限值为基值
float fValue2; //第二个变化量值,以限值为基值
BYTE ctrlPercent;//控制的百分比
//run value
UINT dayOverUpTime; //本日越上限的累计时间(秒为单位)
UINT dayOverDownTime; //本日越下限的累计时间
UINT monthOverUpTime; //本月越上限的累计时间
UINT monthOverDownTime; //本月越下限的累计时间
UINT lastDayOverUpTime; //昨日越上限的累计时间
UINT lastDayOverDownTime; //昨日越下限的累计时间
UINT lastMonthOverUpTime; //上月越上限的累计时间
UINT lastMonthOverDownTime;//上月越下限的累计时间
float sampleValue[MAX_SAMPLE_NUM+1]; //[0]值为最新的采样值
float meanValue; //平均值
float currUpLimit; //当前的上限值
float currDownLimit;
float realValue; //实时值
BYTE zone; //实时值运行区域,或平均值运行区域,共7个区域
DBLINK noUseDBLINK[10];
BYTE noUseByte[100];
float cosq_currUpLimit;
float cosq_currDownLimit;
float cosq_realValue;
VQCMUXI_DBS *pFatherMX;
VQCMONI_DBS();
~VQCMONI_DBS();
VQCMONI_DBS operator=(VQCMONI_DBS op);
BOOL CheckParam(char * alarmMsg);
void CaculateOverLimitTime();
void AdjustTimeProc();
void SetZoneProc();
void ClearAllDataRecordProc(){
dayOverUpTime = 0;
dayOverDownTime = 0;
monthOverUpTime = 0;
monthOverDownTime = 0;
lastDayOverUpTime = 0;
lastDayOverDownTime = 0;
lastMonthOverUpTime = 0;
lastMonthOverDownTime = 0;
};
};
class VQCZB_DBS;
class VQCMUXI_DBS{
public:
UINT ClassSize;
int ZBNo; // auto get, 0 to VQC_ZBNUM-1
int MXNo;
int LeftLinkZBNo; // auto get, 0 or 1 for one ZB
int RightLinkZBNo; // auto get, 0 or 1 for one ZB
int LeftLinkMXNo; // auto get, 0 or 1 for one ZB
int RightLinkMXNo; // auto get, 0 or 1 for one ZB
BYTE LeftLinkDevNum;
BYTE RightLinkDevNum;
DBLINK LeftLinkDevRec[4];
DBLINK RightLinkDevRec[4];
DBLINK LinkZbKgDevRec; //与主变连接设备
DBLINK LinkZbDzDevRec;
DBLINK AskFjtUpRec; //请求分接头升的遥信
DBLINK AskFjtDownRec; //请求分接头降的遥信
DBLINK AskDrqCloseRec; //请求合电容器或退电抗器的遥信
DBLINK AskDrqOpenRec; //请求退电容器或合电抗器的遥信
DBLINK URec;
DBLINK QRec;
DBLINK LockStatRec; //VQC子模块的闭锁遥信
BYTE DRQNum;
BYTE DKQNum;
BOOL drqUseOrder[VQC_DRQNUM]; //在做 CheckParam 处理中自动得到
BOOL dkqUseOrder[VQC_DRQNUM];
VQCDRQ_DBS DRQ[VQC_DRQNUM];
VQCDRQ_DBS DKQ[VQC_DRQNUM];
VQCMONI_DBS U;
VQCMONI_DBS Q;
DBLINK PRec; //相应有功的记录
BOOL bLinkQ; //取无功总加的YX定义
Lock_Condition CheckLock;
VQCZB_DBS *pFatherZB;
VQCGlobalDef *pGlobalDef;
UINT ActWeight; //权值的动作限值,若取平均值,则ActWeight =1;
UINT JudgeTime; //越限判断的时间
UINT MaxSampleNum; //实际参数设定的最大采样数,judgeTime / globalDef.adjustPeriodTime
// run value
UINT lockReasonStatus; //封锁原因
BYTE integrateZone; //综合的U与Q的运行区域
UINT sampleNum;
UINT askFjtUpWeight; //希望升档的累计权值
UINT askFjtDownWeight; //希望降档的累计权值
UINT askDrqCloseWeight; //希望投电容器的累计权值
UINT askDrqOpenWeight; //希望退电容器的累计权值
UINT firstFjtNum;
UINT firstDrqNum;
BOOL bLeftLink; //判断相临母线是否相连
BOOL bRightLink; //判断相临母线是否相连
BYTE linkMXNum;
DBLINK noUseDBLINK[10];
BYTE noUseByte[100];
VQCMUXI_DBS * linkMX[VQC_ZBNUM*2];
int currUseDrqOnNum; //母线上电容器在投入状态的个数,用于电容器动作时多条母线优先选择
int currUseDkqOnNum; //母线上电抗器在投入状态的个数,
VQCDRQ_DBS *currUseDevForRiseQReduceU; //包括并列母线上,当前可以用来合的电抗器或分的电容器
VQCDRQ_DBS *currUseDevForReduceQRiseU; //包括并列母线上,当前可以用来分的电抗器或合的电容器
VQCSOE soe;
// class VQCDRQ_DBS * currUseCloseDrq; //包括并列母线上,当前可以用来合的电容器号
// class VQCDRQ_DBS * currUseOpenDrq; //包括并列母线上,当前可以用来分的电容器号
// class VQCDRQ_DBS * currUseCloseDkq; //包括并列母线上,当前可以用来合的电抗器号
// class VQCDRQ_DBS * currUseOpenDkq; //包括并列母线上,当前可以用来分的电抗器号
void InitStructProc();
VQCMUXI_DBS();
~VQCMUXI_DBS();
VQCMUXI_DBS operator=(VQCMUXI_DBS op);
void CopyDefineProc(VQCMUXI_DBS *op);
BOOL CheckParam(char * alarmMsg);
BOOL FindLeftLinkDevProc();
BOOL FindRightLinkDevProc();
BOOL SetLinkDevProc(char * alarmMsg);
//init proc
void ClearAllDataRecordProc(){
BYTE i;
sampleNum = 0;
U.ClearAllDataRecordProc();
Q.ClearAllDataRecordProc();
for (i=0;i<DRQNum;i++) DRQ[i].ClearAllDataRecordProc();
for (i=0;i<DKQNum;i++) DKQ[i].ClearAllDataRecordProc();
};
void EveryDayInitProc(); //每天的参数初始化
void InitParamProc(BOOL bFirst){}; //系统开始运行的初始化
void ReReadParamProc(class VQCMUXI_DBS param){}; //参数修改后的设置修改
void ClearAllManUnlockProc(); //清除需人工解锁的闭锁,指保护闭锁和拒动闭锁
float GetQUseCosLimitProc(float cosf);
void AdjustTimeProc(); //定时调节模块
void CheckLockProc(); //检查闭锁条件状态
void GetDevLinkStatusProc(); //得到设备连接情况
void SetLockStatusForLinkDevProc();//根据设备连接状况设置相关设备的闭锁标志
void SetLibValueProc(); //设置虚YX和YC的值
void DoAdjustProc(); //设置VQC运行模块的运行状态
void AdjustWeightProc(BYTE,UINT,UINT); //调整权值
VQCDRQ_DBS * FindDrqForCloseOnOneMxProc();
VQCDRQ_DBS * FindDkqForCloseOnOneMxProc();
VQCDRQ_DBS * FindDrqForOpenOnOneMxProc();
VQCDRQ_DBS * FindDkqForOpenOnOneMxProc();
VQCDRQ_DBS * FindDkgOpenOrDrqClose();
VQCDRQ_DBS * FindDrqOpenOrDkgClose();//找出当前计划用来分的电容器或合的电抗器
BYTE GetIntegrateZoneWithQUZone(BYTE UZone, BYTE QZone);//根据电压和无功的区域号,得出综合区域号
BYTE GetIntegrateZoneWithQUValue(float,float,float,float,float,float);
void ResetUQZone(float dUpU, float dDownU,float dUpQ, float dDownQ);
BOOL CheckDrqUsedWillReciprocate(float uValue, float qValue, VQCDRQ_DBS *useDev);
void AdjustMXVQCProc();
BOOL ActFjtForOneZB(VQCZB_DBS *pZB, BOOL bFjtUp);
BOOL DoFjtActProc(BOOL bFjtUp, BOOL bakMode, BOOL bDrqClose);
BOOL DoDrqActProc(BOOL bDrqClose, BOOL bakMode, BOOL bFjtUp);
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -