DDC 单回路P ID 控制实验实验报告 一、对象动态特性实验 22111121)()1(2)1(1)(G−− ++−+=ZZKzTTTTTTTTG(s)离散化得: 差分方程:Y(k)=a0*Y(k-1)+b0*Y(k-2)+c0*R(k) 其中:a0=2.0*T1/T/(1+T1/T) b0=0.0-pow(T1/T,2.0)/(1+T1/T)/(1+T1/T) c0=K1/(1+T1/T)/(1+T1/T) 程序框图: 获取数据:T、r0、K1、T1 准备工作:求出 a0、b0、c0,令 y0、y1=0 画坐标轴,确定单位长对应坐标 相关源程序段: double T,r0,K1,T1,Kp,Ti,Td,Beta;//定义全局变量便于参数传递 void CMainFrame::OnDrawObject() { // TODO: Add your command handler code here if(T==0){ ErrorDlg errorDlg; errorDlg.DoModal(); } else{ CDC * pDC=GetDC(); CPen pen1,* oldpen; 计算 y(k),横坐标 t 递增,以 y(k)和 t 确定坐标画图 存储数据准备下次计算:y0=y1,y1-y2 t<横坐标最大值Y N 结 束 1 oldpen=pDC->SelectObject(&pen1);//画坐标轴 pen1.CreatePen(PS_SOLID,1,RGB(0,0,255)); pDC->SelectObject(&pen1); pDC->MoveTo(50,50); pDC->LineTo(50,300); pDC->MoveTo(50,50); pDC->LineTo(46,58); pDC->MoveTo(50,50); pDC->LineTo(54,58); pDC->MoveTo(50,300); pDC->LineTo(490,300); pDC->LineTo(482,295); pDC->MoveTo(490,300); pDC->LineTo(482,305); pDC->SetTextColor(RGB(0,0,255)); pDC->TextOut(40,298,"0"); pDC->TextOut(56,48,"Y"); pDC->TextOut(492,300,"t"); pDC->MoveTo(50,180); pen1.DeleteObject(); pen1.CreatePen(PS_DASH,1,RGB(0,0,255)); pDC->SelectObject(&pen1); pDC->LineTo(480,180); pDC->TextOut(35,174,"r0"); pen1.DeleteObject(); pen1.CreatePen(PS_SOLID,1,RGB(255,0,0)); pDC->SelectObject(&pen1); int y=300,t,unity,unitt=2;//两坐标轴单位长 unity=120.0/r0; double a0,b0,c0,y0=0,y1=0,y2; a0=2.0*T1/T/(1+T1/T); b0=0.0-pow(T1/T,2.0)/(1+T1/T)/(1+T1/T); c0=K1/(1+T1/T)/(1+T1/T); CString text; text.Format("对象动态特性曲线:K1=%4.1f, T1=%3.2f, T=%3.2f, r0=%3.1f",K1,T1,T,r0); pDC->TextOut(80,320,text); pDC->MoveTo(50,300); for(t=52;t<=480;t+=unitt){ y2=a0*y1+b0*y0+c0*r0; pDC->LineTo(t,y-unity*y2); y0=y1; y1=y2; } 2 pDC->SelectObject(oldpen); } } 程序界面及实验输出响应曲线: 二、单回...