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

📄 reference.cpp

📁 三容水箱的模糊控制设计
💻 CPP
字号:
// Reference.cpp : implementation file
//

#include "stdafx.h"
#include "Watertank.h"
#include "Reference.h"
#include "FakeMserial.h"
#include "Mserial.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


CFakeMserial fakemserial;
CMserial mserial;
/////////////////////////////////////////////////////////////////////////////
// CReference
IMPLEMENT_DYNCREATE(CReference, CCmdTarget)

CReference::CReference()
{ 
	Time=0;
	outdata=0;
	x[0]=0;
	y[0]=0;
	x[1]=20;
	x[2]=40;
	x[3]=90;
	x[4]=140;
	x[5]=190;
	x[6]=230;
	x[7]=270;
	x[8]=310;
	x[9]=340;
	x[10]=390;
    x[11]=450;
	x[12]=500;
    x[13]=640;
	x[14]=720;
	x[15]=800;
	x[16]=880;
	x[17]=940;
	x[18]=1060;
	x[19]=1180;
	x[20]=1300;
	x[21]=1460;
	x[22]=1580;
	x[23]=1700;
	x[24]=1820;
	x[25]=1940;
	x[26]=2060;
	x[27]=2180;
	y[1]=y[9]=20;
	y[2]=y[8]=80;
	y[3]=y[7]=180;
	y[4]=y[6]=280;
	y[5]=380;
	y[10]=380;
	y[11]=380;
	y[12]=20;
	y[13]=100;
	y[14]=200;
	y[15]=300;
    y[16]=0;
	y[17]=350;
	y[18]=380;
	y[19]=360;
	y[20]=230;
	y[21]=130;
	y[22]=10;
	y[23]=10;
	y[24]=30;
	y[25]=150;
	y[26]=310;
	y[27]=350;



}

CReference::~CReference()
{
}


BEGIN_MESSAGE_MAP(CReference, CCmdTarget)
	//{{AFX_MSG_MAP(CReference)
		// NOTE - the ClassWizard will add and remove mapping macros here.
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CReference message handlers

double CReference::produce()
{
	if(Time<x[1])
		outdata=y[1]; //梯形输出
	  else if(Time<x[2])
		  outdata=y[2];
	       else if(Time<x[3])
			   outdata=y[3]+mserial.Produce_Mserial()*20;
                  else if(Time<x[4])
			           outdata=y[4]+mserial.Produce_Mserial()*30;
				        else if(Time<x[5])
			                  outdata=y[5];
						       else if(Time<x[6])
			                           outdata=y[6]+fakemserial.Produce_FakeMserial(8)*60;
							        else if(Time<x[7])
										outdata=y[7]+fakemserial.Produce_FakeMserial(7)*180;
									     else if(Time<x[8])
											outdata=y[8]+mserial.Produce_Mserial()*40;
										      else if(Time<x[9])
										       	outdata=y[9];//梯形输出
											      else if(Time<x[10])//锯齿输出
													  outdata=10+((y[10]-10)/(x[10]-x[9]))*(Time-x[9])+mserial.Produce_Mserial()*40;
                                                        else if(Time<x[11])
                                                               outdata=y[10]+mserial.Produce_Mserial()*20;
														      else if(Time<x[12])
														      	   outdata=y[10]-(37.0/(x[11]-x[10]))*(Time-x[10])+mserial.Produce_Mserial()*50;//锯齿输出
															       

														     else if(Time<x[13])//平衡位置震荡
																 outdata=y[12]+mserial.Produce_Mserial()*5;
															     else if(Time<x[14])
																	  outdata=y[13]+mserial.Produce_Mserial()*50;
																     else if(Time<x[15])
																		 outdata=y[14]+mserial.Produce_Mserial()*60;
																	      else if(Time<x[16])
																			   outdata=y[15]+mserial.Produce_Mserial()*70;
																		       else if(Time<x[17])
																				   outdata=y[17]+mserial.Produce_Mserial()*70;//平衡位置震荡
																			        else if(Time<x[18])//M序列震荡
																						outdata=y[18]*fakemserial.Produce_FakeMserial(10);
																					    else if(Time<x[19])//平衡震荡
																							outdata=y[19]+mserial.Produce_Mserial()*20;
																						      else if(Time<x[20])
																								  outdata=y[20]+mserial.Produce_Mserial()*50;
																							       else if(Time<x[21])
																									     outdata=y[21]+mserial.Produce_Mserial()*50;
																								       else if(Time<x[22])
																										      outdata=y[22]+mserial.Produce_Mserial()*60;
																									          else if(Time<x[23])
																												  outdata=y[23]+mserial.Produce_Mserial()*10;
																											          else if(Time<x[24])
																														  outdata=y[24]+fakemserial.Produce_FakeMserial(10)*30;
																													      else if(Time<x[25])
																															   outdata=y[25]+mserial.Produce_Mserial()*60;
																														       else if(Time<x[26])
																																   outdata=y[26]+mserial.Produce_Mserial()*80;
																															        else if(Time<x[27])
																																		outdata=y[27]+fakemserial.Produce_FakeMserial(10);
																																	

																															        

																						    


																			
																		      
										                   
                                       							          
                                      else if(Time<2300) 
										  outdata=fakemserial.Produce_FakeMserial(15)*380;
									  else outdata=0;
																																																																																			   Time++;



																																																																		          
																																																											       
																																																					               
   return outdata;

}

⌨️ 快捷键说明

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