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

📄 fcusimulatordlg.cpp

📁 本源码实现在WinCE系统下
💻 CPP
📖 第 1 页 / 共 2 页
字号:
{
	// TODO: Add your message handler code here and/or call default
	double NowTime;
	
	//OnButtonRecv();	//接受控制命令   
	
	NowTime = 2 * PI * ((double)(RealTime%100)/100);//时间
	
	GenerationCommandProcess();// 根据指令改变状态
	
	GenerationDataSource(NowTime);// 根据时间产生数据
	
	RealTime = RealTime + TIMEDELAY;// 时间轴向右移
	
    // 发送一个批次的数据
	OnButtonSend();
	
	CDialog::OnTimer(nIDEvent);
}

void CFcuSimulatorDlg::GenerationDataSource(double now)
{
	//发电机1,发电机2是否已经启动
	Generator_Start(now);
	//Generator_BusOn(now);
	//Generator_BusOff(now);
	//发电机1,发电机2是否已经tingzhi
	Generator_Stop(now);

	//电网状态(有待考虑)
	
	//发电机1,发电机2至少有一个已经合闸
	
    if((Generator1_state == GENERATOR_STATUS_BUSON)||(Generator2_state == GENERATOR_STATUS_BUSON))
	{
		if(Generator1_state == GENERATOR_STATUS_BUSON)
		{
			GridV_A = GeneratorV1_A;
			GridV_B = GeneratorV1_B;//////////
			GridV_C = GeneratorV1_C;
			
			for(Generator1_I=0;Generator1_I <= 500;Generator1_I++)
			{
			Grid_P=Generator1_I;

			Grid_I = Generator1_I + Generator2_I ;
			Grid_F = 50;
			}
			//Grid_P = Generator1_P + Generator2_P;
			//Grid_State = 1;
		}
		
		else if(Generator2_state == GENERATOR_STATUS_BUSON)
		{
			GridV_A = GeneratorV2_A;
			GridV_B = GeneratorV2_B;//////////
			GridV_C = GeneratorV2_C;
			
			Grid_I = Generator1_I + Generator2_I ;
			Grid_F = 50;
			Grid_P = Generator1_P + Generator2_P;
			//Grid_State = 1;
		}
	}
	else//否则电网参数均为零   这个也可以不要
	{
		GridV_A = 0;
		GridV_B = 0;
		GridV_C = 0;
		
		Grid_I = 0;
		Grid_F = 0;
		Grid_P = 0;
		
		// Grid_State = 0;			  
	}
}


void CFcuSimulatorDlg::GenerationCommandProcess()
{
	//不停的检测Terminal_Command命令并进行判断
	if((Terminal1_Command & TERMINAL_COMMAND_START)!=0)
		Generator1_state = GENERATOR_STATUS_START;//一号机启动
	
	
	if((Terminal2_Command & TERMINAL_COMMAND_START)!=0)
		Generator2_state = GENERATOR_STATUS_START;//二号机启动
	//发送start相应的数据

	
	if((Terminal1_Command & TERMINAL_COMMAND_BUSON)!=0)
		Generator1_state = GENERATOR_STATUS_BUSON;//一号机合闸
	
	
	if((Terminal2_Command & TERMINAL_COMMAND_BUSON)!=0)
		Generator2_state = GENERATOR_STATUS_BUSON;//二号机合闸
	//发送合闸相应的数据
	
	
	if((Terminal1_Command & TERMINAL_COMMAND_BUSOFF)!=0)
		Generator1_state = GENERATOR_STATUS_BUSOFF;//一号机解列
	
	if((Terminal2_Command & TERMINAL_COMMAND_BUSOFF)!=0)
		Generator2_state = GENERATOR_STATUS_BUSOFF;//二号机解列
	//发送解裂相应的数据
	
	
	if((Terminal1_Command & TERMINAL_COMMAND_STOP)!=0)
		Generator1_state = GENERATOR_STATUS_STOP;//一号机停机

	
	if((Terminal2_Command & TERMINAL_COMMAND_STOP)!=0)
		Generator2_state = GENERATOR_STATUS_STOP;//二号机停机
	//发送停机相应的数据
}

bool CFcuSimulatorDlg::Generator_Start(double now)
{
	if( (Generator1_state & GENERATOR_STATUS_START)!=0 )
	{  
		GeneratorV1_A = VOLTAGE_AMPTITUDE * sin(now); //发电机1组电压A相
		GeneratorV1_B = VOLTAGE_AMPTITUDE * sin(now - 2*(double)PI/3); //发电机1组电压B相
		GeneratorV1_C = VOLTAGE_AMPTITUDE * sin(now + 2*(double)PI/3); //发电机1组电压C相
		Generator1_I=0;
		Generator1_F=50;
		Generator1_P=sqrt(3) * GeneratorV1_A * Generator1_I;	
	}
	else
	{
		GeneratorV1_A = 0; //发电机1组电压A相
		GeneratorV1_B = 0; //发电机1组电压B相
		GeneratorV1_C = 0; //发电机1组电压C相
		Generator1_I = 0;
		Generator1_F = 0;
		Generator1_P = 0;
	}

	if( (Generator2_state & GENERATOR_STATUS_START)!=0 )
	{    
		GeneratorV2_A = VOLTAGE_AMPTITUDE * sin(now); //发电机2组电压A相
		GeneratorV2_B = VOLTAGE_AMPTITUDE * sin(now - 2*(double)PI/3); //发电机2组电压B相
		GeneratorV2_C = VOLTAGE_AMPTITUDE * sin(now + 2*(double)PI/3); //发电机2组电压C相
		Generator2_I=0;
		Generator2_F=50;
		Generator2_P=sqrt(3) * GeneratorV2_A * Generator2_I;
	}
	else
	{
		GeneratorV2_A = 0; //发电机2组电压A相
		GeneratorV2_B = 0; //发电机2组电压B相
		GeneratorV2_C = 0; //发电机2组电压C相
		Generator2_I = 0;
		Generator2_F = 0;
		Generator2_P = 0;
	}
	
	return true;
}


/*
bool CFcuSimulatorDlg::Generator_BusOn(double now)
{
	bool ret=TRUE;
	
	if(Generator1_state == GENERATOR_STATUS_BUSON)//number1
	{
		if(Generator2_state != GENERATOR_STATUS_BUSON)//首机合闸
		{
			GeneratorV1_A = VOLTAGE_AMPTITUDE * sin(now); //发电机1组电压A相
			GeneratorV1_B = VOLTAGE_AMPTITUDE * sin(now - 2*(double)PI/3); //发电机1组电压B相
			GeneratorV1_C = VOLTAGE_AMPTITUDE * sin(now + 2*(double)PI/3); //发电机1组电压C相
			Generator1_I=0;
			Generator1_F=50;
			Generator1_P=sqrt(3) * GeneratorV1_A * Generator1_I;
			
			Generator1_state = GENERATOR_STATUS_BUSON;  //发电机组1状态
		}
	}
	if(Generator2_state == GENERATOR_STATUS_BUSON)//number2
	{
		if(Generator1_state != GENERATOR_STATUS_BUSON)//首机合闸
		{
			GeneratorV2_A = VOLTAGE_AMPTITUDE * sin(now); //发电机2组电压A相
			GeneratorV2_B = VOLTAGE_AMPTITUDE * sin(now - 2*(double)PI/3); //发电机2组电压B相
			GeneratorV2_C = VOLTAGE_AMPTITUDE * sin(now + 2*(double)PI/3); //发电机2组电压C相
			Generator2_I=0;
			Generator2_F=50;
			Generator2_P=sqrt(3) * GeneratorV2_A * Generator2_I;
			
			Generator2_state = GENERATOR_STATUS_BUSON;  //发电机组2状态
		} 
	}
	return ret;
}	

bool CFcuSimulatorDlg::Generator_BusOff(double now)
{
	bool ret = TRUE;
	
	if(Generator1_state == GENERATOR_STATUS_BUSOFF)//number1
		
	{
		
		if(Generator1_state == GENERATOR_STATUS_BUSON)//在网
		{
			if(Generator2_state == GENERATOR_STATUS_BUSON)//是首机解列
			{
				GeneratorV1_A = VOLTAGE_AMPTITUDE * sin(now); //发电机1组电压A相
				GeneratorV1_B = VOLTAGE_AMPTITUDE * sin(now - 2*(double)PI/3); //发电机1组电压B相
				GeneratorV1_C = VOLTAGE_AMPTITUDE * sin(now + 2*(double)PI/3); //发电机1组电压C相
				Generator1_I=0;
				Generator1_F=50;
				Generator1_P=sqrt(3) * GeneratorV1_A * Generator1_I;
				
				Generator1_state = GENERATOR_STATUS_BUSOFF;  //发电机组1状态
				
			}
		          else //不是首机解列/////////有问题
				  {
					  GeneratorV1_A = VOLTAGE_AMPTITUDE * sin(now); //发电机1组电压A相
					  GeneratorV1_B = VOLTAGE_AMPTITUDE * sin(now - 2*(double)PI/3); //发电机1组电压B相
					  GeneratorV1_C = VOLTAGE_AMPTITUDE * sin(now + 2*(double)PI/3); //发电机1组电压C相
					  Generator1_I=0;
					  Generator1_F=50;
					  Generator1_P=sqrt(3) * GeneratorV1_A * Generator1_I;
					  
					  Generator1_state = GENERATOR_STATUS_BUSOFF;  //发电机组1状态
					  
					  ret = FALSE;
				  }
		}
		else   //不在网
			ret = FALSE;
	}
	
 	  
    if(Generator2_state == GENERATOR_STATUS_BUSOFF)//number2
	{
		if(Generator1_state == GENERATOR_STATUS_BUSON)//是首机解列
		{
			GeneratorV2_A = VOLTAGE_AMPTITUDE * sin(now); //发电机2组电压A相
			GeneratorV2_B = VOLTAGE_AMPTITUDE * sin(now - 2*(double)PI/3); //发电机2组电压B相
			GeneratorV2_C = VOLTAGE_AMPTITUDE * sin(now + 2*(double)PI/3); //发电机2组电压C相
			Generator2_I=0;
			Generator2_F=50;
			Generator2_P=sqrt(3) * GeneratorV1_A * Generator1_I;
			
			Generator2_state = GENERATOR_STATUS_BUSOFF;  //发电机组2状态
			
		}
	   else  
	   {
		   GeneratorV2_A = VOLTAGE_AMPTITUDE * sin(now); //发电机2组电压A相
		   GeneratorV2_B = VOLTAGE_AMPTITUDE * sin(now - 2*(double)PI/3); //发电机2组电压B相
		   GeneratorV2_C = VOLTAGE_AMPTITUDE * sin(now + 2*(double)PI/3); //发电机2组电压C相
		   Generator2_I=0;
		   Generator2_F=50;
		   Generator2_P=sqrt(3) * GeneratorV2_A * Generator2_I;
		   
		   Generator2_state = GENERATOR_STATUS_BUSOFF;  //发电机组2状态
		   
		   ret = FALSE;
	   }
		
	}
	return ret;
}
*/

bool CFcuSimulatorDlg::Generator_Stop(double now)
{
	
	bool ret = TRUE;
	
	if(Generator1_state == GENERATOR_STATUS_STOP)
	{	//发电机1状态为停机
		GeneratorV1_A = 0; //发电机1组电压A相
		GeneratorV1_B = 0; //发电机1组电压B相
		GeneratorV1_C = 0; //发电机1组电压C相
		Generator1_I=0;
		Generator1_F=0;
		Generator1_P=0;
	}
	if(Generator2_state == GENERATOR_STATUS_STOP)
	{	 //发电机2状态为停机
		GeneratorV2_A = 0; //发电机2组电压A相
		GeneratorV2_B = 0; //发电机2组电压B相
		GeneratorV2_C = 0; //发电机2组电压C相
		Generator2_I=0;
		Generator2_F=0;
		Generator2_P=0;
	}
	return ret;
}

⌨️ 快捷键说明

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