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

📄 elctricmachinedlg.cpp

📁 异步电动机制动特性的仿真程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		if(cx>=cx0) 
		{dc.MoveTo(cx0,cy0); dc.LineTo(cx,cy);} //dc.Ellipse(cx0-3,cy0-3,cx+2,cy+3);//dc.LineTo(cx,cy);
		else  {dc.MoveTo(cx0,cy0); dc.LineTo(cx,cy);}//dc.Ellipse(cx-4,cy-3,cx0+4,cy0+3);
	}



	switch(txbz)
	{
	
	case 0: //自然特性
		{if(cx>=cx0)	s=s-0.00999;
		else s=s-0.0009998;
		
		if(s<0.00005)
			 {
				dc.LineTo(0,cy);
				OnStopFZ();
			 }
		break;
		}

	case 1: //回馈制动
		{if(cx>=cx0)	s=s-0.00999;
		else s=s-0.0009998;
			if((-Tem)>(-TL))
			 {
				//dc.LineTo(0,cy);
				OnStopFZ();
			 }
		break;	
		}

	case 2: //倒拉反转
		{if(cx>=cx0)	s=s+0.009;
		else s=s+0.009998;		
		if(Tem>TL)
			 {
				//dc.LineTo(0,cy);
				OnStopFZ();
			 }
		break;	
		}

	case 3: //电压反接制动
		{ s=s-0.0019998;		
		if(s<1)
			 {
				//dc.LineTo(0,cy);
				OnStopFZ();
			 }
		break;	
		}
		
	case 4: //nh制动
		{n=n-10;//s=s-100;		
		if(n<=1)
			 {
			//dc.LineTo(0,cy);
				OnStopFZ();
			 }
		break;	
		}	

	default: break;	
	}	



	cx0=cx;
	cy0=cy;
	dc.SelectObject(oldPen);
	dc.SelectObject(oldbrush);

	CDialog::OnTimer(nIDEvent);
}



void CElctricmachineDlg::OnStopFZ() 
{
	// TODO: Add your control notification handler code here
	KillTimer(2);
	KillTimer(3);
	KillTimer(4);
//	UpdateData(TRUE);
//	UpdateData(FALSE);


}

void CElctricmachineDlg::OnClose() 
{
	// TODO: Add your message handler code here and/or call default
//	OnCancel(); 
	CDialog::OnClose();
}

void CElctricmachineDlg::OnNhzd() 
{
	// TODO: Add your control notification handler code here
	OnDraw();
	UpdateData(TRUE);
	m_r2=15;
	yudrawNH();


//	m_r2=5;
	txbz=4;
	color1=50;
	color2=250;
	KillTimer(2);
	SetTimer(2,10,NULL);
	KillTimer(3);	
	SetTimer(3,10,NULL);
	KillTimer(4);	
	SetTimer(4,10,NULL);

	n=(1-0.03866*m_TLBZ)*1500;
	jsnT(m_r2);
//	if(m_select==0){Tem=-Tem;n=-n;}//判断是否反转
//	m_tem=Tem;
	m_djn=n;
	UpdateData(FALSE);
	CString str;
	str.Format("%f",Tem);
	this->SetDlgItemText(IDC_TEM,str);
	int cx,cy;
	cx=TL*KX;
	cy=(1-0.03866*m_TLBZ)*1500*KY;
	cy=-cy;
	cx0=cx;
	cy0=cy;	
}

void CElctricmachineDlg::OnDyfj() 
{
	// TODO: Add your control notification handler code here
	OnDraw();
	UpdateData(TRUE);
	m_r2=5;
	yudrawDYFJ();


//	m_r2=5;
	txbz=3;
	color1=200;
	color2=200;
	KillTimer(2);
	SetTimer(2,10,NULL);
	KillTimer(3);	
	SetTimer(3,10,NULL);
	KillTimer(4);	
	SetTimer(4,10,NULL);

	s=2-0.03866*m_TLBZ;
	jsnT(m_r2);
//	if(m_select==0){Tem=-Tem;n=-n;}//判断是否反转
//	m_tem=TL;
	m_djn=n;
	UpdateData(FALSE);
	CString str;
	str.Format("%f",TL);
	this->SetDlgItemText(IDC_TEM,str);

	int cx,cy;
	cx=TL*KX;
	cy=(1-0.03866*m_TLBZ)*1500*KY;
	cy=-cy;
	cx0=cx;
	cy0=cy;
			
}

void CElctricmachineDlg::OnDlfz() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
 	m_r2=100;
	s=2;
	yudraw();
	drawFZ(rect.Height()/2);// -400);
	
	s=1.0;
//	m_r2=80;
	txbz=2;
	color1=200;
	color2=200;
	KillTimer(2);
	SetTimer(2,10,NULL);
	KillTimer(3);	
	SetTimer(3,10,NULL);
	KillTimer(4);	
	SetTimer(4,10,NULL);

	jsnT(m_r2);
//	if(m_select==1){Tem=-Tem;n=-n;}//判断是否反转
//	m_tem=Tem;
	m_djn=n;
	UpdateData(FALSE);
	CString str;
	str.Format("%f",Tem);
	this->SetDlgItemText(IDC_TEM,str);

	int cx,cy;
	cx=Tem*KX;
	cy=n*KY;
	cy=-cy;//rect.Height()/2-cy;
	cx0=cx;
	cy0=cy;
		
}

void CElctricmachineDlg::jsnT(float r2)
{

	if(txbz==4)
	{
		Tem=-0.5*n/m_r2;
	//	n=s;
		return;
	}
	float k1,k2,k3;
	k1=2757.92;
	k2=(2.38+r2)/s;
	k3=(2.83+(2.38+r2)/s)*(2.83+(2.38+r2)/s)+174.24;
	Tem=k1*k2/k3;
	n=(1-s)*1500;


}

void CElctricmachineDlg::OnZxdd() 
{
	// TODO: Add your control notification handler code here
//	m_select=0;
}

void CElctricmachineDlg::OnFxdd() 
{
	// TODO: Add your control notification handler code here
//		m_select=1;
}

void CElctricmachineDlg::yudraw()
{
//	UpdateData(TRUE);
	int cx,cy;
//	s=1.0;
	CClientDC dc(GetDlgItem(IDC_EDIT1));//获得编辑框句柄

	CPen drawpen;
	drawpen.CreatePen(PS_SOLID,6,RGB(0,99,255));
	oldPen=dc.SelectObject(&drawpen);
	DeleteObject(&drawpen);

	dc.SetMapMode(MM_TEXT);//设置映射模式和原点
	dc.SetViewportOrg(rect.Width()/2 ,rect.Height()/2);
	
		jsnT(m_r2);
		cx=Tem*KX;
		cy=n*KY;
		cy=-cy;//rect.Height()/2-cy;
		s=s-0.0099;
		dc.MoveTo(cx,cy);

	for(;s>=0.00005;s=s-0.0099)
	
	{
		jsnT(m_r2);
		cx=Tem*KX;
		cy=n*KY;
		cy=-cy;//rect.Height()/2-cy;

//	m_tem=Tem;
	m_djn=n;
	UpdateData(FALSE);
	CString str;
	str.Format("%f",Tem);
	this->SetDlgItemText(IDC_TEM,str);
//	if((cx<960)&&(cy<340))
	{

		dc.LineTo(cx,cy); 
	}
	}
	dc.LineTo(0,cy);
	dc.SelectObject(oldPen);


}

void CElctricmachineDlg::drawFZ(int y0)
{
	int cx;

	CClientDC dc(GetDlgItem(IDC_EDIT1));//获得编辑框句柄


	CPen drawpen;
	drawpen.CreatePen(PS_SOLID,5,RGB(0,0,0));
	oldPen=dc.SelectObject(&drawpen);
	DeleteObject(&drawpen);

	dc.SetMapMode(MM_TEXT);//设置映射模式和原点
	dc.SetViewportOrg(rect.Width()/2,rect.Height()/2);//cy)

		s=0.03866;	
		jsnT(0.0);
		TL=Tem*m_TLBZ;
//		cy=n/6;
//	if(Tem<TL)
//	{
//	MessageBox("起动转矩太小,只能空载起动!","信息",MB_OK);
//	TL=3;
////	dc.MoveTo(24,0);
//	dc.LineTo(24,340);
//	}
//	else
	{
	dc.MoveTo(TL*KX,0);
	dc.LineTo(TL*KX,y0);	
	
	}

	dc.SelectObject(oldPen);
}

void CElctricmachineDlg::yudrawFD()
{
	int cx,cy;
	s=1.0;
	CClientDC dc(GetDlgItem(IDC_EDIT1));//获得编辑框句柄

	CPen drawpen;
	drawpen.CreatePen(PS_SOLID,6,RGB(0,200,55));
	oldPen=dc.SelectObject(&drawpen);
	DeleteObject(&drawpen);

	dc.SetMapMode(MM_TEXT);//设置映射模式和原点
	dc.SetViewportOrg(rect.Width()/2 ,rect.Height()/2);
	
		jsnT(m_r2);
		cx=Tem*KX;
		cy=n*KY;
		cy=-cy;//rect.Height()/2-cy;
		s=s-0.0099;
		dc.MoveTo(cx,cy);

	for(;s>=-0.08;s=s-0.0099)
	
	{
		jsnT(m_r2);
		cx=Tem*KX;
		cy=n*KY;
		cy=-cy;//rect.Height()/2-cy;
//	m_tem=Tem;
	m_djn=n;
	UpdateData(FALSE);
	CString str;
	str.Format("%f",Tem);
	this->SetDlgItemText(IDC_TEM,str);
//	if((cx<960)&&(cy<340))
	{

		dc.LineTo(cx,cy); 
	}
	}
//	dc.LineTo(0,cy);
	dc.SelectObject(oldPen);

}

void CElctricmachineDlg::yudrawDYFJ()
{
	int cx,cy;
	s=0;
	CClientDC dc(GetDlgItem(IDC_EDIT1));//获得编辑框句柄

	CPen drawpen;
	drawpen.CreatePen(PS_SOLID,6,RGB(0,99,255));
	oldPen=dc.SelectObject(&drawpen);
	DeleteObject(&drawpen);

	dc.SetMapMode(MM_TEXT);//设置映射模式和原点
	dc.SetViewportOrg(rect.Width()/2 ,rect.Height()/2);
	
		jsnT(m_r2);
		cx=-Tem*KX;
		cy=n*KY;
//		cy=rect.Height()/2-cy;
		s=s+0.0099;
		dc.MoveTo(cx,cy);

	for(;s<=2;s=s+0.0099)
	
	{
		jsnT(m_r2);
		cx=-Tem*KX;
		cy=n*KY;
//		cy=rect.Height()/2-cy;
//	m_tem=-Tem;
//	m_djn=-n;
//	UpdateData(FALSE);
//	if((cx<960)&&(cy<340))
	{

		dc.LineTo(cx,cy); 
	}
	}
//	dc.LineTo(0,cy);
	dc.SelectObject(oldPen);

}

void CElctricmachineDlg::yudrawNH()
{
	int cx,cy;
//	s=0;
	CClientDC dc(GetDlgItem(IDC_EDIT1));//获得编辑框句柄

	CPen drawpen;
	drawpen.CreatePen(PS_SOLID,6,RGB(100,99,200));
	oldPen=dc.SelectObject(&drawpen);
	DeleteObject(&drawpen);

	dc.SetMapMode(MM_TEXT);//设置映射模式和原点
	dc.SetViewportOrg(rect.Width()/2 ,rect.Height()/2);
	

	
		Tem=0.5*1800/m_r2;
		n=1800;
//		cx=-Tem*4;
//		cy=n/6;
		cx=-Tem*KX;
		cy=n*KY;
		cy=-cy;
		dc.MoveTo(0,0);
		dc.LineTo(cx,cy); 

	dc.SelectObject(oldPen);
}

⌨️ 快捷键说明

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