1.课程设计报告名称:过程计算机控制主题: DDC 串级回路 PID 闭环控制系统设计及实时仿真系统:控制班: 学号: 学生姓名: 同组人: 导师:李明阳设计周数:一周一,设计目的1,设计目的1 1.学习和理解使用高级语言(C 语言)实现数字 PID 控制算法模块程序的方法; 2.比较验证理想微分 PID 和实际微分 PID 控制算法阶跃响应,加深对上述两种算法各自特征的认识 识; 3.学习如何使用模拟计算机; 4.学习掌握 A/D、D/A 使用转换接口板的方法; 5.了解微机中断定时的方法; 6.学习掌握通过 A/D、D/A 计算机转换获取被控对象动态特性的方法; 7 通过实时仿真实验掌握实时仿真实验 DDC 单回路控制程序编制及调试方法。二、实验仪器二、实验仪器(1)一台微型计算机,系统软件 Windows 98 或 DOS (不能直接使用 I/O 能力的 NT 或 XP 系统), 内装 Turbo C 2.0/3.0 环境软件集成开发; (2)一台模拟计算机(XMN-1 型); (3)通用数据采集控制板(PCL-812PG 型) 。三、三、PIDPID 的离散化的。
2.离散化理想微分 PID 算法的传递函数形式如下: sTsTKsGd ip11)(上式采用向后差分法离散,差分方程形式为:uk=uk-1 q0*e2 q1*e1 q2*e0;各种系数为:q0=kp*(1 T/Ti Td/T);q1=-kp*(1 2*Td/T);q2=kp*Td/T;实际微分 PID 算法的传递函数形式如下: sTsTsTKsGd ifp111)(上式采用向后差分法离散,写差分方程的形式如下:uk=c0*(uk-1) c1*ek c2*ek-1 c3*ek-2 uk-1.所有系数为:c0=Tf/(T Tf);c1=kp*T/(T Tf)*(1 T/Ti Td/T);c2=-kp*T/(T Tf)*(1 2*Td/T);c3=kp*Td/(T Tf);四、硬件二阶惯性环节建设四、硬件二阶惯性环节建设利用模拟计算机中的电容电阻和操作放大器,搭接二阶惯性链接,模拟被控对象。硬件电路如下:2) 1()(TsKsG各元件参数如下:R3=R2=510K;R1=R4=R5=R6=R7=1M ;C1=C2=C=4.7uF;则可得:K=(R5/。
3、R1)*(R6/R4)=1T1=T2=R5*C1=R6*C2=1000000*0.0000047=4.7s所以 G(s)=1/(4.7s 1)*(4.7s 1)硬件电路建成后,将 PLCD-780 插入 IPC 机箱插槽,用导线将 PLCD-780 中的 A/D、D/A、电源的接线端子与二阶惯性环节的输出、输入端口和底盘上的电源连接形成完整的 PID 闭环控制系统,为通信做好准备。五、实验结果五、实验结果(1)理想与实际思维 PID 阶跃响应曲线阶跃响应曲线(2)被控对象(实物搭建二阶惯性环节)阶跃响应曲线)被控对象(实物搭建二阶惯性环节)阶跃响应曲线上图通过 D/A 输出一个 1 模拟的被控对象(惯性链接)输入左右信号 ,A/D 采集对象的输入信号及其响应,再使 D/A 输出幅度为 2 同时采集输入输出信号。然后,D/A 再反向在输出一个幅度为 2 同时采集输入输出信号,获得模拟对象的飞升特性曲线。然后,D/A 反向输出一个范围 2 同时收集输入输出信号,获得模拟对象的飞行特征曲线。在程序中,模拟对象输入信号通过按钮加减。当按下 H 按键时,按下 U 键时,D/A 输出一个 1 伏阶跃信号,再
4.时阶跃信号累积。每次按下 D 键时,D/A 输出阶跃信号递减 1。(3)根据对象单位阶跃)根据对象单位阶跃响应曲线寻求增益和惯性时间:响应曲线寻求增益和惯性时间: 利用切线法获取对象的增益和一阶等效的惯性时间:如上图所示,做拐点切线,得对象增益和一阶等效惯性时间分别为: 13(4)手动切换:(5)设定值 r、控制量,控制量 u 与被控对象输出的阶跃响应曲线:与被控对象输出的阶跃响应曲线:1)0()(ccK程序清单 /*-头文件定义-*/ #include #include #include #include /*-定义绘图坐标-*/ #define ox 8 /*-原点横坐标-*/ #define oy 440 /*-原点纵坐标-*/ #define xx 620 /*-x 轴顶横坐标-*/ #define xy 440 /*-x 轴顶点纵坐标-*/ #define lenx 580 #define leny 400 #define yx 8 /*-y 轴顶横坐标-*/ #define yy 15 /*-y 轴顶点纵坐标-*/*-定义绘图区域-*/ #defin。
5、e left 20 #define top 20 #define right 620 #define bottom 460 /*-坐标轴注释-*/ #define xtext1x 450 #define xtext1y 450 #define ytext1x 10 #define ytext1y 60 #define xtext2x 610 #define xtext2y 450 #define ytext2x 10 #define ytext2y 20/*-理想 PID 运算式-*/float lxpid(float kp,float td,float ti,float e3,float u1) int t=1; float u; float q0=kp*(1 t/ti td/t); float q1=-kp*(1 2*td/t); float q2=kp*td/t; u=q0*e0 q1*e1 q2*e2 u1; return u; /*-实际 PID 运算式-*/float sjpid(float kp,float tf,float td,float ti,float e3,fl。
6、oat du1,float u1) int t=1; float u2; float c1=tf/(t tf); float c2=kp*t*(1 t/ti td/t)/(t tf); float c3=-kp*t*(1 2*td/t)/(t tf); float c4=kp*td/(t tf); u2=c1*du1 c2*e0 c3*e1 c4*e2 u1; return u2; /*-绘图初始化-*/ void Initial_Sys(void) int GraphDriver; int GraphMode; detectgraph( initgraph( cleardevice(); /*-绘制坐标系-*/void DrawAxis(void) int i; setbkcolor(15); setcolor(5); line(ox,oy,xx,xy); /*x_axis*/ line(xx-5,xy-5,xx,xy); line(xx,xy,xx-5,xy 5); line(ox,oy,yx,yy); /*y_axis*/ line(yx-5,yy 10,yx,yy);line(。
7、yx 5,yy 10,yx,yy); for(i=0;i0) printf(“Parallal,Mode:%c,sp=%.1f,pv=%2.1f,u=%.1f,error=%.1f,Kp=%.1f,Ti=%.1f,Td=%.1ftr“,A_H,sp,pv,u,e,Kp,Ti,Td); else printf(“ttTf got a wrong value! Please exit and restart this program.r“);cj_counter ; while(cj_counter5) /* make the output real */ pv1=5; else if (pv10) pv1=0; temp=(int)(4095*pv1/5.0); hb=temp8; lb=temp-(hb8);outportb(BASE,1); /*启动 DA 转换*/for(i=0;i10000;i );outportb(BASE 4,lb); /* low 8 */ for(i=0;i10000;i );outportb(BASE 5,hb); /* high 4 */*00-中断子。
8、程序-*/void interrupt INT_1C(void) time_counter ; outportb(0x20,0x20); /*键盘控制*/int scankey(void) int key0; /*扫描键盘,判断是否有建按*/key0=bioskey(1); /*1:按下无键返回 0 */if(key0!=0) key0=bioskey(0); /*0:返回按下的键*/ return key0; /*DelayAction*/ /*tao=(int)(18.2*2) Delay action=2 seconds*/ float DelayAction(float y0) /*软件延迟*/ float y_out;static float y_old36=0; /*将 ad 延迟 2s 作为 PV,T=0.2s,于是延迟 36 步*/int cyc; y_out=y_old36-1; for(cyc=1;cyc36;cyc ) y_old36-cyc=y_old36-cyc-1; y_old0=y0; return y_out; /*PID 主程序*/void PIDset(void) /*PI。
华北电力大学计算机控制课程ddc串级回路pid会员第一,闭环***分享,可在线阅读,更多相关华北电力大学计算机控制课程ddc串级回路pid请在金锄头文库上搜索闭环。