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

📄 mx.h

📁 电力系统无功自动补偿的操作系统程序
💻 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 + -