s→∞相当于在主频段-л/T<=ω<=л/T中
ω→л/T对应z=-1点
(c).D(z)中增益K的确定:
D(s)
=D(z)
如果D(s)分子中s因子,可按高频段增益相等,或者某频段幅频相等确定
D(s)
=D(z)
|D(j
)|=|D(
)|
注意:
在MATLAB工具箱中,讲一个s=∞零点映射成了z=∞零点,其他的s=∞零点映射成z=-1的零点,分子会比分母低一阶.
1.1有两个无穷远处零点的零极点匹配方法
由方程
可得其极点为
=-0.4±j0.9165,
=-1
=
=0.,408±j0.5313,
=0.6065
有三个无穷远处的零点,可映射为
由于在MATLAB工具箱中,将一个s=∞零点映射成了z=∞零点,故由MATLAB零极点匹配方法得到的是两个无穷远处的零极点匹配结果:
0.01985z^2+0.0397z+0.01985
D(z)=----------------------------------
z^3-2.075z^2+1.561z-0.4066
1.2有三个无穷远处零点的零极点匹配方法
由方程
可得其极点为
=-0.4±j0.9165,
=-1
=
=0.408±j0.5313,
=0.6065
有三个无穷远处的零点,可映射为
D(s)
=D(z)
1=
得k=0.031
D(z)=
2.MATLAB语句及响应曲线
2.1有两个无穷远处零点的零极点匹配方法
(A)MATLANB程序如下
>>num=[1];
>>den=[1,1.8,1.8,1];
>>sys=tf(num,den)
Transferfunction:
1
-------------------------
s^3+1.8s^2+1.8s+1
>>[numz,denz]=c2dm(num,den,0.5,'matched');
>>w=0:
0.1:
40;
>>[mag,pha]=bode(num,den,w);
>>[dmag,dpha]=dbode(numz,denz,0.5,w);
>>figure
(1);
>>plot(w,mag,'blue');holdon;
>>plot(w,dmag,'red');
>>gridon;axis([0,40,0,1.2]);
>>figure
(2);
>>plot(w,pha,'blue');holdon;
>>plot(w,dpha,'red');
(B).响应曲线如下
2.2.有三个无穷远处零点的零极点匹配方法
(A).MATLAB程序如下
>>numz=[0.0301,0.09029,0.09029,0.0301];
>>numz=[0.031,0.093,0.093,0.031];
>>denz=[1,-1.422,0.9436,-0.2722];
>>w=0:
0.1:
40;
>>[dmag,dpha]=dbode(numz,denz,0.5,w);
>>figure
(1);
>>plot(w,mag,'blue');holdon;
>>plot(w,dmag,'red');
>>gridon;axis([0,40,0,1.2]);
>>figure
(2);
>>plot(w,pha,'blue');holdon;
>>plot(w,dpha,'red');
>>gridon;axis([0,40,-1200,100]);
>>
(B).响应曲线如下
2.3两种情况的分析比较
响应曲线如下
分析:
比较有两个和有三个无穷远处零点的零极点匹配方法的离散化频率响应曲线可得两者的幅频特性曲线相差不大,但相频特性曲线差异较大,有两个无穷远处零点的匹配方法比有三个无穷远处零点的匹配方法相位滞后大一些。
2.4.阶跃响应曲线比较
(A)有两个无穷远零点的情况
(B).有三个无穷远零点的情况
分析:
由图像可知,两种方法稳态值均趋于1,即采用零极点匹配法可以保证D(s)稳定,则D(z)一定稳定。
但采用两个无穷远处零极点匹配方法所得到的阶跃响应曲线有超调且调节时间长。
而采用三个无穷远零极点匹配方法所得到的阶跃响应曲线无超调且调节时间短。
3.PROTEL原理图
3.1控制器的选择与电路设计
单片机是计算机控制系统常用的一种控制器,具有较强的控制功能。
单片机种类繁多、性能各异。
本次设计对所需控制器的要求不是很高,所以选择较为常用的AT89S52作为控制器。
AT89S52最高工作频率为33Hz、32个可编程I/O口线、三个16位定时器/计数器,满足设计任务要求。
AT89S52其最小系统如下图
3.2AD的选择与电路设计。
选择ADC0809,该AD具有8路输入通道,8位A/D转换器,即分辨率为8
位。
转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时),单个+5V电源供电,模拟输入电压范围0~+5V,不需零点和满刻度校准,工作
度范围为-40~+85摄氏度,低功耗,约15mW。
由于该AD内部没有时钟,要外
接时钟输入,时钟可以从单片机的ALE引脚引出,经过两个D触发器分频,可
得到500KHz的时钟信号,D触发器可以选择SUN7474.,这样AD的转换时间为
130us,可以满足本设计的要求。
3.3D/A的选择与电路设计
DAC0832分辨率为8位;电流稳定时间1us;可单缓冲、双缓冲或直接数字输入;只需在满量程下调整其线性度;单一电源供电(+5V~+15V);低功耗,200mW。
可以满足本设计的需求。
将CS、WR1、WR2和XFER引脚接地,ILE引脚接+5V,Vref选择+5V,8位数字信号输入端DI0~DI7分别接单片机P0.0~P0.7引脚。
此时DAC0832处于直通工作方式,数字量一旦输入,就直接进入DAC寄存器,进行D/A转换。
其电路图如图所示。
3.4整体电路图如下
4.单片机程序流程图
5.KEIL程序
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitST=P2^2;
sbitOE=P2^1;
sbitEOC=P2^0;//AD,DA控制位定义
voidInit_Timer1(void);//产生50ms延时
voidmain(void)
{
floatuk_2=0.0;
floatuk_1=0.0;
floatuk=0.0;
floatek_2=0.0;
floatek_1=0.0;
floatek=0.0;
floatuk_3=0.0;
floatek_3=0.0;//数据初始化
ST=0;
OE=0;//输出数据线呈高阻态
ST=1;
ST=0;//开始转换数据
Init_Timer1();
while
(1)
{
if(EOC==1)
{
uk_1=uk;
uk_2=uk_1;
uk_3=uk_2;
ek_1=ek;
ek_2=ek_1;
ek_3=ek_2;
OE=1;//输出转换得到数据
ek=P1;//保存数据
OE=0;//输出数据线成高阻态
}
uk=1.422*uk_1-0.9436*uk_2+0.2722*uk_3+0.031*ek+0.093*ek_1+0.093*ek_2+0.031*ek_3;//差分方程
P0=(uchar)uk;//将uk输出给DA
while(EOC==0);//等待转换结束
}
}
voidInit_timer1(void)
{
TMOD=0x10;//设置T1为工作方式1,为16位定时器
TH1=0x3C;
TL1=0xB0;//装初值,设置定时时间为50ms
EA=1;//开总中断
ET1=1;//允许T1溢出中断
TR1=1;//计数器1开始工作
}
voidTimer1_isr(void)interrupt3using1
{
TH1=0x3C;
TL1=0xB0;//重装初值,设置定时时间为50ms
ST=1;
ST=0;//开始下一次转换数据
}
四.设计心得体会
经过为期一周多的课程设计,让我感触颇深的是解决问题的思路、方法、技巧的重要性。
所谓“万事开头难”,在最初的几天,看到题目什么也想不到,脑袋里一片空白,不知道怎么开始,也就拖拖拉拉好几天都没开始做。
但是,在多次向同学请教并查阅资料后,慢慢的我似乎找到了基本的思路。
虽然我做的不好,但是也收获颇多。
通过这几天的设计,我们对运用MATLAB进行控制系统数字仿真有了更加深刻的认识,对用protel绘制电路图以及编写C语言程序更加的熟悉。
这个课程设计将我们所学的《自动控制原理》、《计算机控制理论与应用》、《单片机》、《模拟电子技术基础》、《数字电子技术基础》等重要课程联系起来,真正做到理论联系实际,这对我们以后的学习和工作一定会有很大的帮助。
当然,由于水平有限、经验不足我们的设计还存在着一些不足,有待于在将来的设计中进一步提高,在此恳请老师批评指正。
此外,通过这次课程设计也让我更加深刻理解了认真细心,严谨规范对科研工作的重要性,以及哈工大“规格严格,功夫到家”这一务实校训的深刻理解。
五.参考文献
《MATLAB控制系统动态仿真》谢仕宏编著
《MATLAB在自动控制中的应用》吴晓燕张双选编著
《计算机控制系统》刘建昌关守平周玮编著
《自动控制原理》张晋格主编
《Protel》电路设计教程江思敏姚鹏翼胡荣等
《单片机原理及应用》张毅刚主编