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

📄 signal.cpp

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

#include "stdafx.h"
#include "Watertank.h"
#include "Signal.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSignal

IMPLEMENT_DYNCREATE(CSignal, CCmdTarget)

CSignal::CSignal()
{
}

CSignal::~CSignal()
{
}


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

/////////////////////////////////////////////////////////////////////////////
// CSignal message handlers

void CSignal::Initial()
{

	TimeArray[0]=2.0;//确定各个波形的持续时间
	TimeArray[1]=100.0;
	TimeArray[2]=400.0;
	TimeArray[3]=400.0;
	TimeArray[4]=80;//归零时间
	


	RangeArray[0]=30;
	RangeArray[1]=200;
	RangeArray[2]=350;
	RangeArray[3]=360;
	RangeArray[4]=100;

    
	Time=0;


}

double CSignal::Produce()
{  
	double OutData=0;
	if(Time>=0&&Time<TimeArray[0])

		OutData=Time*(RangeArray[0]/TimeArray[0]);

	else if(Time<(TimeArray[0]+TimeArray[1]))

		OutData=RangeArray[0]+Mserial.Produce_Mserial()*RangeArray[4];

	      else if(Time<(2*TimeArray[0]+TimeArray[1]))

			  OutData=RangeArray[0]+((RangeArray[1]-RangeArray[0])/TimeArray[0])*(Time-TimeArray[0]-TimeArray[1]);

		       else if(Time<(2*TimeArray[0]+2*TimeArray[1]))

				   OutData=RangeArray[1]+Mserial.Produce_Mserial()*RangeArray[4];

			         else if(Time<(3*TimeArray[0]+2*TimeArray[1]))

						 OutData=RangeArray[1]+((RangeArray[2]-RangeArray[1])/TimeArray[0])*(Time-2*TimeArray[0]-2*TimeArray[1]);
					      
					       else if(Time<(3*TimeArray[0]+3*TimeArray[1]))

							   OutData=RangeArray[2]+Mserial.Produce_Mserial()*RangeArray[4];
						         
						          else if(Time<(4*TimeArray[0]+3*TimeArray[1]))

									  OutData=RangeArray[2]-((RangeArray[2]-RangeArray[1])/TimeArray[0])*(Time-(3*TimeArray[0]+3*TimeArray[1]));
								       
								        else if(Time<(4*TimeArray[0]+4*TimeArray[1]))

											OutData=RangeArray[1]+Mserial.Produce_Mserial()*RangeArray[4];
										      
										       else if(Time<(5*TimeArray[0]+4*TimeArray[1]))

												   OutData=RangeArray[1]-((RangeArray[1]-RangeArray[0])/TimeArray[0])*(Time-(4*TimeArray[0]+4*TimeArray[1]));
											     
											          else if(Time<(5*TimeArray[0]+5*TimeArray[1]))

														  OutData=RangeArray[0]+Mserial.Produce_Mserial()*RangeArray[4];
													        
													        else if(Time<(6*TimeArray[0]+5*TimeArray[1]))

																OutData=RangeArray[0]-(RangeArray[0]/TimeArray[0])*(Time-(5*TimeArray[0]+5*TimeArray[1]));
															       else if(Time<(6*TimeArray[0]+5*TimeArray[1]+TimeArray[4]))
																	  
																	   OutData=FakeMserial.Produce_FakeMserial(2)*(RangeArray[4]-0.2);
															     
															             else if(Time<(6*TimeArray[0]+5*TimeArray[1]+TimeArray[2]+TimeArray[4]))
																	            OutData=FakeMserial.Produce_FakeMserial(15)*RangeArray[3];
																		          else if(Time<(6*TimeArray[0]+5*TimeArray[1]+TimeArray[2]+2*TimeArray[4]))
																					  OutData=FakeMserial.Produce_FakeMserial(2)*(RangeArray[4]-0.2);
                                                                       
																	                   else if(Time<(6*TimeArray[0]+5*TimeArray[1]+TimeArray[2]+TimeArray[3]+2*TimeArray[4]))

																		                     OutData=FakeMserial.Produce_FakeMserial(15)*RangeArray[3];

																					      else if(Time<(6*TimeArray[0]+5*TimeArray[1]+TimeArray[2]+TimeArray[3]+2*TimeArray[4])+80)

                                                                                                OutData=FakeMserial.Produce_FakeMserial(2)*(RangeArray[4]-0.2);

																	                         else if(Time<1800)
																								 OutData=FakeMserial.Produce_FakeMserial(15)*RangeArray[3];
																							       else

																	                               OutData=0;
	Time++;
			        

	return OutData;

	
}

⌨️ 快捷键说明

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