当前位置:文档之家› 计算机控制系统课程设计

计算机控制系统课程设计

《计算机控制》课程设计报告题目: 超前滞后矫正控制器设计姓名:学号: 10级自动化2013年12月2日《计算机控制》课程设计任务书指导教师签字: 系(教研室)主任签字:2013年 11 月 25 日1.控制系统分析和设计1.1实验要求设单位反馈系统的开环传递函数为)101.0)(11.0(100)(++=s s s s G ,采用模拟设计法设计数字控制器,使校正后的系统满足:速度误差系数不小于100,相角裕度不小于40度,截止角频率不小于20。

1.2系统分析(1)使系统满足速度误差系数的要求:(2)用MATLAB 画出100()(0.11)(0.011)G s s s s =++的Bode 图为: 由图可以得到未校正系统的性能参数为:相角裕度0 1.58γ=︒, 幅值裕度00.828g K dB dB =,剪切频率为:030.1/c rad s ω=, 截止频率为031.6/g rad s ω=(3)未校正系统的阶跃响应曲线可以看出系统产生衰减震荡。

(4)性能分析及方法选择系统的幅值裕度和相角裕度都很小,很容易不稳定。

在剪切频率处对数幅值特性以-40dB/dec 穿过0dB 线。

如果只加入一个超前校正网络来校正其相角,超前量不足以满足相位裕度的要求,可以先缴入滞后,使中频段衰减,再用超前校正发挥作用,则有可能满足要求。

故使用超前滞后校正。

1.3模拟控制器设计(1)确定剪切频率c ωc ω过大会增加超前校正的负担,过小会使带宽过窄,影响响应的快速性。

首先求出幅值裕度为零时对应的频率,约为30/g rad s ω=,令30/c g rad s ωω==。

(2)确定滞后校正的参数22113/10c rad s T ωω===, 20.33T s =,并且取得10β= 112110.33/rad s T T ωβ===, 13T s = 则滞后校正的控制器为10.331()31c s G s s +=+ 此时系统的响应曲线为:滞后校正后的性能参数为: 相角裕度 026.9γ=︒, 幅值裕度 016.9g K dB dB =,剪切频率为:08.73/c rad s ω=, 截止频率为026.5/g rad s ω=系统仍需要进行超前校正(3)确定超前校正的参数在图中过(c ω,0dB )作-20dB/dec 线,与原先的Bode 相交,交点的角频率为:3313/rad s T ω==, 30.3T s = 443130/rad s T T βω===,40.03T s = 超前矫正控制器的传递函数为:20.31()0.031c s G s s +=+ (4)超前滞后校正同时作用时系统的Bode 图:相角裕度 048.4γ=︒, 幅值裕度 013.5g K dB dB =,剪切频率为:024.4/c rad s ω=, 截止频率为062.1/g rad s ω=校正后的系统性能已经满足了性能指标要求。

(5)画出校正后系统的阶跃响应曲线(6)设计好的控制器传递函数为:(0.331)(0.31)()(31)(0.031)c s s G s s s ++=++ 1.4用模拟法设计数字控制器(1)模拟控制器离散化采用双线性变换法。

(2)采样周期选择取采样周期T=0.01s,因为考虑到A/D ,D/A 转换的时间以及单片机计算的时间,采样时间不能选的太小,但是为了保证离散控制器的控制仍能满足性能指标的要求,采样时间不能取得太大。

取采样周期为10ms,给程序运行留下了足够的时间,而且由后面可见控制效果仍满足性能指标要求,所以取采样周期为10ms 。

(3)将模拟控制器离散化 离散化后得脉冲函数为:220.9715 1.8820.9116() 1.7110.7119c z z G z z z -+=-+ (4)被控对象离散化离散化的被控对象为:2320.012870.039840.007441() 2.273 1.6060.3329p z z G z z z z ++=-+- (5)绘制出离散系统的Bode 图相角裕度 041.3γ=︒, 幅值裕度 09.11g K dB dB =,剪切频率为:024.4/c rad s ω=, 截止频率为041.3/g rad s ω=离散化的控制器仍旧满足性能指标的要求,设计合理。

(6)离散系统的阶跃响应曲线:(6)数字控制器的脉冲传递函数:1.5控制系统的编排结构(1)编排结构的选择如果使用直接型编排结构,如果控制器中任一系数存在误差,则将使控制器所有的零极点产生响应的变化,严重影响系统的性能。

在控制器设计时采用了超前滞后校正,所以采用串联型结构比较简单,而且任何一系数有误差,不会使控制器所有的零极点产生相应的变化。

因为()c G z 有复数零点,故可以写成12121 1.9370.9383()0.9715*1 1.7110.7119c z z G z z z -----+=-+ (2)转换为差分方程的形式:0.9715可以通过一个比例环节实现,可以不用考虑。

只需在设计好的控制器上加个比例因子即可。

2.硬件电路设计2.1元器件选择(1)控制器选择选择8051单片机,外接晶振为2MHz.(2)A/D 选择选择ADC0809,该AD 有8路输入通道,8位A/D 转换器,分辨率为8位,转换时间为100s μ,(时钟为640KHz 时),130s μ(时钟为500KHz 时);单个+5V 供电,模拟输入电压范围为0到5V,不需要零点和满课度校准;内部没有时钟,所以需要外接时钟,时钟从单片机的ALE 引脚引出。

在经过两个D 触发器分频,从而达到500KHz的时钟信号。

D触发器选择74LS174。

A/D转换时间为130sμ,应该能满足设计的要求。

(3)D/A选择选择DAC0832,分辨率为8位;可单缓冲,双缓冲或者直接数字输入;只需要在满量程下调整线性度;单一电源供电+5V到+15V;可以满足设计的要求。

输出电压值为:82refout D VU* =-2.2电路的设计(1)A/D转换电路的设计将AD转换的ADDA,ADDB,ADDC接地,选择IN0锁存器。

EOC接P2.2,转换结束则输出1,否则输出为0;OE接P2.1,选择是否输出数据。

OE=0,输出高阻态,OE=1输出数字量;ST接P2.0,转化开始信号。

由1变零转换开始;IN0接输入的模拟数据e(t);IN1-IN7悬空;Clock接分频器SUN7474的输出端,输入500HZ时钟信号;Vref(+)接+5V,Vreft(-)接地,VCC接电源,GND接地;ALE地址所存,上跳沿所存,可以接在P2.O口。

D0-D7接单片机的P1.0-P1.7;(2)D/A转换电路设计D0-D7接单片机的P0.0-P0.7,数字量输入;将CS,WR1,WR2,XFER,引脚接地;ILE引脚接+5V,Vref选择+5V,GND接地;此时DAC0832处于直通工作方式,一旦有数字量输入,就直接进入DAC寄存器,进行D/A转换。

(3)8051单片机的电路设计:P0.0-P0.7接D/A转换数字输入端;P1.0-P1.7接A/D转化数字输出端;P2.0接A/D转换ST端;P2.1接A/D转换OE端;P2.2接A/D转换EOC端;外接2MHZ的时钟电路输入到时钟端XTAL1,XTAL2;外接复位电路到RET;2.2硬件电路图3.用单片机实现控制算法3.1流程图(2)程序编写#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit ST=P2^0;sbit OE=P2^1;sbit EOC=P2^2; //A/D转换结束标志位void main(){float uk_1=0.0;float uk=0.0;float ek=0.0;float ek_1=0.0;//初始化float ek_2;float uk_2;ST=0;OE=0; //输出高阻态/*定时器中断初始化*/TMOD|=0XF9;// 设置T1工作在方式1,16位定时器方式TH1=0x7E;TL1=0xE0; //装初值,定时10msEA=1;//开总中断ET1=1;//开T1中断TR1=1;//启动定时器1while(1){if(EOC==1){uk_2=uk_1;ek_2=ek_2;uk_1=uk;ek_1=ek;OE=1;//输出转换数据ek=P1;//给单片机输入数据OE=0 ; //输出高阻态}uk=ek-1.937*ek_1+0.9383*ek_2+1.711*uk_1-0.7119*uk_2; //差分方程P0=(uchar)uk;//数据输入到D/A转换器while (EOC==0) ;//等待A/D转换结束}}/*************定时器中断处理************/void time(void) interrupt 1 using 1{ TH1=0XF9;TL1=0x7E;//重装初值ST=1;ST=0;//开始下一次转换数据}4.设计总结与体会4.1设计过程总结:(1)首先用自动控制原理的知识,设计出满足要求的超前滞后校正控制器。

(2)对模拟控制器进行双线线性变换离散化。

(3)观察bode图,如果不符合性能指标,则调节采样周期或者直接重新设计模拟控制器,直到性能指标满足要求。

(4)选择合适的编排结构,将设计好的控制器分为几个串联或者并联的控制器,并将每个控制器转换为差分方程形式,便于编程序。

(5)选择单片机及A/D,D/A转换芯片,用protel画出实现控制器任务的最小系统硬件图。

(6)绘制控制算法流程图(7)编程实现控制器的控制算法4.2心得体会在这次的设计过程中,我将整个控制器的设计过程都经历了一遍,包括应用自动控制原理的知识来设计超前滞后校正,并用MATLAB绘制Bode图;应用用计算机控制系统的知识对设计好的模拟控制系统双线性变换,编程数字控制器,用protel软件绘制硬件电路图,用visio绘制流程图,用Keil软件编写实现控制算法的程序。

对大学期间所学的内容巩固了一边,综合应用了专业课所学的知识,而且熟悉了专业领域常用软件的使用,收获很多,这次课设经验为我们以后的学习工作打下了基础。

设计中的不足之处是没有实际的硬件电路来验证自己设计的控制器的正确性,没有显示出来实际的控制效果,希望有机会可以完整的做一套控制系统。

5.参考文献《自动控制原理》张晋格《计算机控制系统设计课件》马立勇《单片机原路及应用》张毅刚附录1.原系统的阶跃响应程序num1=[100];den1=conv([1 0],conv([0.1 1],[0.01 1]))G=tf(num1,den1);T=feedback(G,1);step(T);2.校正后系统的bode图程序:num1=conv([33 100],[0.3 1]);den1=conv([0.03 1],conv([3 1],conv([1 0],conv([0.1 1],[0.01 1]))))margin(num1,den1);3.校正后系统的阶跃响应曲线程序:num1=conv([33 100],[0.3 1]);den1=conv([0.03 1],conv([3 1],conv([1 0],conv([0.1 1],[0.01 1]))))G=tf(num1,den1);T=feedback(G,1);step(T)4.校正后离散系统的bode图程序num1=conv([0.33 1],[0.3 1]);den1=conv([3 1],[0.03 1]);GC1=tf(num1,den1);GC1GZ1=c2d(GC1,0.01,'tustin');GZ1num0=[100];den0=conv([1 0],conv([0.1 1],[0.01 1]));Gp=tf(num0,den0);GZ2=c2d(Gp,0.01,'ZOH')GZ2GZ=GZ1*GZ2;margin(GZ);5.校正后离散系统的阶跃响应曲线GC1=tf(num1,den1);GC1GZ1=c2d(GC1,0.01,'tustin');GZ1num0=[100];den0=conv([1 0],conv([0.1 1],[0.01 1])); Gp=tf(num0,den0);GZ2=c2d(Gp,0.01,'ZOH')GZ2GZ=GZ1*GZ2;margin(GZ);T=feedback(GZ,1);step(T);。

相关主题