收藏 分销(赏)

无波纹最小拍控制设计.doc

上传人:精**** 文档编号:2769120 上传时间:2024-06-05 格式:DOC 页数:17 大小:233.04KB 下载积分:8 金币
下载 相关 举报
无波纹最小拍控制设计.doc_第1页
第1页 / 共17页
无波纹最小拍控制设计.doc_第2页
第2页 / 共17页


点击查看更多>>
资源描述
(完整word版)无波纹最小拍控制设计 《计算机控制》课程设计报告 题目: 无波纹最小拍控制设计 2010年7月5日 《计算机控制》课程设计任务书 专 业 学 生 题 目 无波纹最小拍控制设计 设计时间 2010年 7月 5 日 至 2010 年7 月 11 日 共 1 周 设计要求 设计任务:采用零阶保持器的单位反馈离散系统,被控对象为,要求系统在单位斜坡输入时,实现无波纹最小拍控制,用离散设计法设计数字控制器。 方案设计: 1. 采用Matlab完成控制系统的建立、分析、设计和模拟仿真; 2. 选择元器件,完成电路设计,控制器采用MCS-51系列单片机(传感器、功率接口以及人机接口等可以暂不涉及),使用Protel绘制原理图; 3. 控制算法采用单片机汇编语言编程实现(应通过编译,无语法错误)。 报告内容: 1. 控制系统仿真和设计步骤,应包含Matlab仿真的性能曲线、采样周期T的选择、数字控制器脉冲传递函数和差分方程形式; 2. 元器件选型过程,电路设计过程,绘制的Protel原理图; 3. 算法流程图,含有详细注释的源程序; 4. 设计工作总结及心得体会; 5. 列出所查阅的参考资料。 指导教师签字: 系(教研室)主任签字: 2010年 7 月 5 日 方案设计: 一、题目分析 根据题目要求,设计无波纹最小拍控制器。采用零阶保持器的单位反馈离散系统,被控对象为,要求系统在单位斜坡输入时,实现无波纹最小拍控制,用离散设计法设计数字控制器。 二、控制系统设计 1、采样周期T的选择 当取采样周期T=1s时,经过理论验证,三拍后系统无波纹,达到无波纹输出时t=3s,满足控制器要求。 当取采样周期T=0.1s时,满足控制器要求且三拍系统无波纹,达到无波纹输出时t=0.3s,但考虑到AD转换器和DA转换器的转换时间和速率有限,故在满足性能要求的前提下,这里选择采样周期T=1s。 2、无波纹最小拍控制器的计算 (1)带零阶保持器的广义被控对象为通过matlab,z变换程序为 np=[0 0 10]; dp=[1 1 0]; hs=tf ( np, dp); hz=c2d(hs,1) 结果为 Transfer function: 3.679 z + 2.642 ---------------------- z^2 - 1.368 z + 0.3679 Sampling time: 1 即 (2)无波纹最小拍控制器D(z) 根据G(z),对象有一个纯迟后因子v=1,一个零点,两个极点,单位速度信号,所以q=1,则闭环脉冲传递函数为 由 得系数,,则系统脉冲传函为 误差脉冲传函为 由得设计的控制器为 3、无波纹最小拍控制系统框图 控制系统整体框图 4、无波纹最小拍控制系统Matlab仿真 通过Matlab观察阶跃输入响应输出程序如下 num=[0.382 -0.364 0.0824]; den=[1 -0.407 -0.593]; dz=tf ( num, den,-1); sys1=dz*hz; sys2=feedback(sys1,1); step(sys2,20) 输出曲线如下 由图可见,3拍后输出跟上输入,可实现最小拍控制,T=1s满足要求。 5、无波纹最小拍控制系统simulink仿真 仿真结果为: (1)系统输入及系统输出曲线c(t)图形如下: (2)系统误差e(t)曲线如下: (3)控制器输出u(k)曲线如下: 通过仿真曲线看出: 控制器D(z)满足设计要求,系统在第三拍之后系统达到无差,最后控制器输出恒定(),因此系统输出不会产生波纹,调节时间为。 将得系统的差分方程为: 三、硬件电路设计及元件选型 控制器部分由AD转换器,DA转换器和AT89C51单片机组成。模数转换芯片采用ADC0809,数模转换芯片采用DAC0832。 系统结构总图 1、AD转换器 AD转换器选ADC0809, ADC0809是一种逐次比较式的8路模拟输入,内部具有锁存功能,故不需要加地址锁存器。ALE脚为地址锁存信号,高电平有效,三根地址线固定接地,由于地址信号已经固定,故将ALE接高电平。 系统只需要一路信号,选择IN-0通道作为输入。 START脚为AD转换启动信号,高电平有效,程序控制。AD采样值为系统的偏差信号,故选择ADC0809的为5V。 由于ADC0809的时钟所限,AD转换器的时钟信号,由单片机P2.1脚产生,将CLOCK脚接单片机的P2.1。由单片机产生500khz的时钟信号。单片机晶振可选择为12MHz。 EOC 为转换结束信号。当EOC 为高电平时,表明转换结束;否则,表明正在进行A/D 转换。设计将其接单片机P2.2脚由程序读入,判断AD是否转换完成。AD转换结果由P0口读入,故将AD转换器的输出与单片机P0口相连,高低位依次相连。 设计AD转换器的接口电路如图所示: AD转换器的接口电路 2、DA转换器 DA转换器选择DAC0832,DAC0832是具有两个输入数据寄存器的8位DAC,可以直接与51单片机相连。参考电压 ,直接与供电电源相连。 因为输出的C(t)可能有负的情况,故选择DAC为双极性电压输出。DA输出值为: DAC0832的引脚接法下: CS:片选端,直接接低电平 ILE:数据锁存允许控制端,直接接高电平。 WR2:DAC寄存器写选通控制端,故直接接低。 XFER:数据传送控制,低电平有效,故直接接地。 WR1;第一级输入寄存器写选通控制,低电平有效。其输入为上升沿时,将输入数据锁存到DAC寄存器,故将该脚与单片机P2.3口相连,由程序控制DA转换的时间。 D10~D11:与单片机P0~P7相连。 电路图如下: DA转换器的接口电路 3、控制器 控制器选择AT89C51单片机,根据ADC0809和DAC0832的特性,及上述分析,设计单片机与AD、DA的接口电路如下图所示: 单片机选择12MHZ晶振,按键复位模式。 四、 程序流程图及源程序 1、流程图如下: 定时器初值重装装 CLK=~CLK 中断返回 A/D时钟程序 采样周期是否到 采样周期 变量加1 采样中断服务程序 开始 主程序 初始化 等待中断 N Y 中断返回 定时器初值重装 D/A输出u(k) 采样变量赋新值 采样周期变量初始化 A/D采样 计算u(k) 2、定时器T0的初值计算 设:需要装入T0的初值为X,则有: X化为十六进制,即X=0x3cb0 T0的初值为 TH0=0x3c; TL0=0xb0; 3、源程序及注释如下: #include<reg51.h> sbit start=P2^0; // AD启动信号 sbit CLK=P2^1; // AD时钟信号输出口 sbit EOC=P2^2; // AD转换完成信号 sbit DA_W=P2^3; // DA转换信号 unsigned char ad_data ; // AD采样值 unsigned char count=0; //定时标记量 char e; //定义当前采样值 char u; //定义DA输出量 char u0=0; // char u1=0; // char e0=0; // char e1=0; //前二次采样值和前二次控制值 float temp; //设置指针 void AD() // AD采样函数 { start=0; // start=1; // 启动AD转换器,开始转换 start=0; // while(EOC==0); // 转换未结束,空循环 ad_data=P0; // 转换结束后,读取AD输出值 } void TimeInitial() // 定时器中断初始化函数 { IP=0x08; //设置中断优先级,定时器1为高优先级 TMOD=0x11; //定时器1和定时器0均采用方式一 TH0=0x3c; //设置定时器0的初值 TL0=0xb0; // TH1=0xff; //设置定时器1的初值 TL1=0xfb; // EA=1; //开放所有中断 ET0=1; //允许T0溢出中断 TR0=1; //启动定时器0 ET1=1; //允许T1溢出中断 TR1=1; //启动定时器1 } void main() //主函数 { TimeInitial(); // start=0; //启动信号为0 DA_W=0; P1=0x80; DA_W=1; //控制器初始输出为零 while(1); //空循环,等待中断 } void t1(void )interrupt 1 using 1 //定时器0中断函数 { TH0=0x3c; // TL0=0xb0; //重装初值 if (count==20) // { count=0; // AD(); //一秒后,读取AD采样值 e=ad_data-128; //采样实际偏差值 temp=0.407*u1+0.595*u0+0.382*e-0.364*e1+0.0824*e0; //差分方程 if(temp>0) //当前输出值大于零 { if(temp>=127) // u=127; //判断是否溢出,溢出取极值 else u=(char)temp; //控制器输出值 } // else //当前输出值小于零 { if(temp<=-127) // u=-127; //判断是否溢出,溢出取极值 else u=(char)temp; //控制器输出值 } // P1=u+128; //DA输出值 u0=u1; //控制量递推赋值 u1=u; // e0=e1; //偏差量递推赋值 e1=e; // DA_W=0; // DA_W=1; //上升沿DA输出 } else count++; //定时不到20次,即不到一秒,继续定时 } void clk(void) interrupt 3 using 0 // 定时器1中断函数 { TH1=0xff; // TL1=0xfb; //重装初值 CLK=~CLK; //产生时钟信号 } 五、 设计工作总结及心得体会: 经过多天的努力,这次计算机控制课程设计已基本结束,在这一段时间中,我们收获良多。由于考试时间与课程设计时间安排有冲突,我们的时间很紧,前期准备不足。这导致我们刚开始的上机设计难以进行,浪费了很多时间,整个小组都没有一个明确方向。后来,在老师的指导下,经过我们多方查找资料,终于明确了工作方向,分工合作,相互帮助,最终完成了这次课程设计。 在这次课程设计中,我们学到了很多设计数字控制系统的思想与方法,如matlab仿真并利用simlink仿真。应用了计算机控制课程上学到的知识,还用到了自动控制原理、单片机原理及应用、模拟电子技术中的相关知识,给我们提供了一个将所学的课程联系在一起,并应用于实践的机会。 六、参考文献 1、张毅刚 主编. 单片机原理及应用 高等教育出版社,2003.12 2、李铁桥,张虹 主编 计算机控制理论与应用 2005,07 3、赵广元 编著 MTATLAB与控制系统仿真实践 北京航天航空大学出版社 2009.08 17
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服