计算机控制课程设计报告达林算法.docx
- 文档编号:30261673
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:15
- 大小:352.42KB
计算机控制课程设计报告达林算法.docx
《计算机控制课程设计报告达林算法.docx》由会员分享,可在线阅读,更多相关《计算机控制课程设计报告达林算法.docx(15页珍藏版)》请在冰豆网上搜索。
计算机控制课程设计报告达林算法
《计算机控制》课程设计报告
题目:
Dahlin算法控制设计
姓名:
学号:
姓名:
学号:
姓名:
学号:
2010年7月10日
《计算机控制》课程设计任务书
专业
电气工程及其自动化
班级
学生
指导教师
题目
Dahlin算法控制设计
设计时间
2010年7月5日至2010年7月11日共1周
设计要求
设计任务:
设单位反馈线性定常离散系统的连续部分和零阶保持器的传递函数分别为
,被控对象为
,采用Dahlin算法设计消除振铃的数字控制器。
方案设计:
1.采用Matlab完成控制系统的建立、分析、设计和模拟仿真;
2.选择元器件,完成电路设计,控制器采用MCS-51系列单片机(传感器、功率接口以及人机接口等可以暂不涉及),使用Protel绘制原理图;
3.控制算法采用单片机汇编语言编程实现(应通过编译,无语法错误)。
报告内容:
1.控制系统仿真和设计步骤,应包含Matlab仿真的性能曲线、采样周期T的选择、数字控制器脉冲传递函数和差分方程形式;
2.元器件选型过程,电路设计过程,绘制的Protel原理图;
3.算法流程图,含有详细注释的汇编源程序;
4.设计工作总结及心得体会;
5.列出所查阅的参考资料。
指导教师签字:
系(教研室)主任签字:
2010年7月10日
一.实验目的
采用Dahlin算法设计消除振铃的数字控制器
二.提供的实验条件
(1)软件:
Matlab,Protues,KEIL
(2)仪器和设备:
计算机、单片机
三.设计要求
被控对象为
,采用Dahlin算法设计消除振铃的数字控制器。
达林算法主要是一种针对纯滞后对象的控制算法
,他对控制系统的快速性要求不高,其主要指标是系统无超调,或超调量较小。
并允许系统有较长的调整时间。
四.工作原理
基于达林算法的采样控制系统结构框图如图1所示。
图1采样控制系统原理图
D(z)系统的设计核心,它实际上是由计算机实现,它的输入输出均是时间上离散的数字信号信号。
在实际运用中要经过A/D,D/A的转换,利用数字控制起来控制被控对象,打到期望的性能指标。
D(z)的求算过程:
N=
我们选取采样周期T=0.05s,时间常数
=2s
若直接求出D(z)则会产生有振铃现象。
求
:
将分母中Z=1附近的极点,让其等于1。
最终求得达林算法的数字控制器:
=
若将数字控制器
通过单片机来运行则需求出
的差分方程
差分方程:
U(k)=0.975*u(k-1)+0.024*u(k-3)+20*e(k)-38.924*e(k-1)+18.924*e(k-2)
五.电路设计及元件选型
控制器部分需要AD转换器,DA转换器,单片机。
1、AD转换器
AD转换器选择ADC0809,ADC0809是一种逐次比较式的8路模拟输入,8路数字输出的A/D转换器。
AD转换器的电路设计:
(1)由于只需要一路信号,只选择IN-0输入,三根地址线固定接地,选择IN-0通道。
(2)ALE脚为地址锁存信号,高电平有效,由于地址信号已经固定,故将ALE接高电平。
(3)AD转换器的时钟信号,由单片机P2.1脚产生,故将CLOCK脚接单片机的P2.1。
本设计由单片机产生2.5khz的时钟信号。
(4)START脚为AD转换启动信号,高电平有效,由程序控制,故与单片机的P2.0脚相连。
(5)AD采样值为系统的偏差信号,有正负两种情况,故选择adc0809的参考电压为正负5V。
(6)AD转换结束后,EOC脚输出高电平,此时单片机接收EOC信号,读取AD转换的结果,将EOC脚与单片机的P2.2脚相连。
AD转换结果由P0口读入,故将AD转换器的输出与单片机P0口相连,高低位依次相连
经以上分析,设计AD转换器的接口电路如图所示
AD转换器的接口电路
2、DA转换器
DA转换器选择DAC0832,DAC0832是具有两个输入数据寄存器的8位DAC,它能直接与51单片机相连,其主要特性为:
(1)分辨率为8位
(2)电流输出,稳定时间为1s
(3)可双缓冲输入,单缓冲输入或直接数字输入
(4)单一电源供电
DA转换器的接口电路
DA转换器的电路设计:
(1)参考电压选择+5V,直接与供电电源相连。
(2)选择DAC为单缓冲方式,即输入寄存器工作于受控状态,DAC寄存器处于直通状态,由DAC0832的引脚特性,将DAC0832的引脚接发如下:
CS:
片选端,低电平有效,直接接低电平
ILE:
数据锁存允许控制端,高电平有效,直接接高电平。
WR2:
DAC寄存器写选通控制端,低电平有效,由于其处于直通状态,故直接接低。
XFER:
数据传送控制,低电平有效,故直接接地。
WR1;第一级输入寄存器写选通控制,低电平有效。
其输入为上升沿时,将输入数据锁存到DAC寄存器,故将该脚与单片机P2.3口相连,由程序控制DA转换的时间。
(3)控制器输出应该为双极性输出,故输出需要两个运算放大器,才能实现双极
输出,电路如图所示。
DA输出值为:
V0=(B-128)*Vref/128.
(4)DA的八路输入,与单片机的P1口相连,高低位依次对应。
3、控制器
控制器选择AT89C51单片机,根据ADC0809和DAC0832的特性,及上述分析,设计单片机与AD、DA的接口电路如下图所示:
单片机选择12MHZ晶振,上电复位模式。
六.
(1)仿真框图
差分方程为:
U(k)=0.975*u(k-1)+0.024*u(k-3)+20*e(k)-38.924*e(k-1)+18.924*e(k-2)
(2)仿真结果
Scope1:
Scope2:
Scope3:
Scope4:
(3)单片机实现
流程图
程序
#include
sbitstart=P2^0;//定义AD启动信号
sbitCLK=P2^1;//AD时钟信号输出口
sbitEOC=P2^2;//AD转换完成信号
sbitDA_w=P2^3;//定义DA转换信号
unsignedcharad_data;//定义AD采样值
unsignedcharcount=0;//定义定时标记量
chare;//定义当前采样值
charu;//定义DA输出量
charu2=0;//
charu0=0;//
chare2=0;//
chare1=0;//前二次采样值和前二次控制值
floattemp;//
voidadc0809()//AD采样函数
{start=0;//
start=1;//启动AD转换器,开始转换
start=0;//
while(EOC==0);//转换未结束,空循环
ad_data=P0;//转换结束后,读取AD输出值
}
voidTimeInitial()//定时器中断初始化函数
{
IP=0x08;//设置中断优先级,定时器1为高优先级
TMOD=0x11;//定时器1和定时器0均采用方式一
TH0=0x3c;//设置定时器0的初值
TL0=0xb0;//
TH1=(65536-100)/256;//设置定时器1的初值
TL1=(65536-100)%256;//
EA=1;//开放所有中断
ET0=1;//允许T0溢出中断
TR0=1;//启动定时器0
ET1=1;//允许T1溢出中断
TR1=1;//启动定时器1
}
voidmain()//主函数
{
TimeInitial();//
start=0;//启动信号为0
DA_w=0;
P1=0x80;
DA_w=1;//控制器初始输出为零
while
(1);//空循环,等待中断
}
voidt1(void)interrupt1using1//定时器0中断函数
{
TH0=0x3c;//
TL0=0xb0;//重装初值
if(count==20)//
{
count=0;//
adc0809();//一秒后,读取AD采样值
e=ad_data-128;//采样实际偏差值
temp=0.975*u2+0.024*u0+20*e-38.924*e2+18.924*e1;//差分方程
if(temp>0)//当前输出值大于零
{
if(temp>=127)//
u=127;//判断是否溢出,溢出取极值
elseu=(char)temp;//控制器输出值
}//
else//当前输出值小于零
{
if(temp<=-127)//
u=-127;//判断是否溢出,溢出取极值
elseu=(char)temp;//控制器输出值
}
//
P1=u+128;//DA输出值
u0=u2;//控制量递推赋值
u2=u;//
e2=e2;//偏差量递推赋值
e2=e;//
DA_w=0;//
DA_w=1;//上升沿DA输出
}
elsecount++;//定时不到20次,即不到一秒,继续定时
}
voidclk(void)interrupt3using0//定时器1中断函数
{
TH1=(65536-100)/256;//
TL1=(65536-100)%256;//重装初值
CLK=~CLK;//产生时钟信号
}
六、设计工作总结及心得体会:
此次设计我们三人分工比较明确,在设计开始的时候,就明确了每个人的任务,使得我们的设计效率比较高。
我们首先对整个系统有了一个总体设计并利用simulink完成了控制器Dz的设计,然后我们开始硬件的设计,通过查阅单片机课本了解A/D及D/A的性能指标意义并从我们设计的控制系统的要求出发选择了ADC0809和DAC0832。
完成了芯片选型后,按照芯片引脚功能及特性实现了单片机接口的设计。
在硬件电路设计的过程中,由于我们电脑安装的protel99SE无法安装库文件,所以我们选用了protues来设计的硬件电路。
同时也为整个系统的仿真做好了准备,但是对于程序设计,我们都不是很熟悉,所以在本次设计中,我们参考了其他的资料。
通过本次课程设计,我们发现对于各种软件的使用我们还不熟悉,需要以后提高。
尤其是对MATLAB软件不熟悉,在设计控制器的时候我们只能一步一步的计算,花了很多时间,并且准确率不是很高,开始两次的仿真结果都不好。
通过本次设计,我们还认识到团队合作的重要性,只有团队合作好了,设计的效率才会高。
五、参考文献
1.《单片机原理及应用》张毅刚主编高等教育出版社2003.12
2.《计算机控制理论与应用》李铁桥,张虹主编2005.7
3.《新概念51单片机C语言教程》郭天祥主编2008.11
4.《单片机C语言程序设计》马忠梅主编北京航空航天大学出版社2007.2
5.《控制器系统计算机仿真与CAD》陈在平著天津大学出版社2001.1
6.《MATLAB控制工程工具箱技术手册》魏巍编国防工业出版社2004.1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机控制 课程设计 报告 算法