计算机控制课程设计最小拍无波纹Word文档格式.docx
《计算机控制课程设计最小拍无波纹Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机控制课程设计最小拍无波纹Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
3.编程实现单片机上的控制算法.
报告内容:
1.控制体系仿真和设计步骤,应包含机能曲线.采样周期的选择.数字控制器的脉冲传递函数和差分方程;
2.元器件选型,电路设计,以及绘制的Protel道理图;
3.软件流程图,以及含有具体注释的源程序;
4.设计工作总结及心得领会;
5.列出所查阅的参考材料.
指点教师签字:
系(教研室)主任签字:
2014年6月27日
一.标题剖析
依据标题请求,设单位反馈线性定常离散体系的持续部分和零阶保持器的传递函数分离为,,采样周期T=0.1s,设计数字控制器,请求体系在单位斜坡输入时实现最小拍无波浪控制.
二.设计最小拍控制器
1.控制体系总体介绍
最小拍闭环控制体系包括给定值,输出值,D/A转换环节,数字控制器,被控对象,零阶保持器等环节.
在数字随动控制体系中,请求体系的输出值尽快地跟踪给定值的变化,起码拍控制就是为知足这一请求的一种离散化设计办法.所谓起码拍控制,就是请求闭环体系对于某种特定的输入在起码个采样周期内达到无静差的稳态,且闭环脉冲传递函数具有以下情势:
式中N是在可能情形下的最小正整数.这一情势表明闭环体系的脉冲响应在N个采样周期后变为0,从而意味着体系在N拍之内达到稳态.
2.控制体系框图及闭环工作道理
图1控制体系框图
最小拍双通道采样的闭环体系框图如图1所示,在该体系中对给定值r(t)进行D/A转换采样,得到离散化的r(z),并且对输出值c(t)也进行D/A转换,得到c(z),然后盘算有e(k)=c(k)-r(z).D(z)为盘算机控制体系的脉冲传递函数,U(z)为输出的控制量,然后经由A/D转换后得到模仿控制量U(t)对包含零阶保持器的被控量进行控值进而达到请求的最小拍控制的目标.
3.起码拍无纹波体系控制算法设计
(1)带零阶保持器的广义被控对象为经由过程matlab,z变换程序为
np=[0010];
dp=[110];
hs=tf(np,dp);
hz=c2d(hs,0.1)
成果为
Transferfunction:
0.04837z+0.04679
----------------------------------
z^2–1.905z+0.9048
Samplingtime:
0.1seconds
即
(2)无波浪最小拍控制器D(z)
依据G(z),对象有一个纯迟后因子v=1,一个零点,两个顶点,输入函数为单位斜坡旌旗灯号,,m=2,则闭环脉冲传递函数为
由
得系数,,则体系脉冲传函为
(3)误差脉冲传函为
(4)
由得设计的控制器为
(5)
4.无波浪最小拍控制体系simulink仿真
图2控制体系整体框图
仿真成果为:
(1)体系输入及体系输出曲线c(t)图形如图3所示:
图3体系输入及体系输出曲线c(t)
(2)体系误差e(t)曲线如图4所示:
图4体系误差e(t)曲线
(3)控制器输出u(k)曲线如图5所示:
图5控制器输出u(k)曲线
经由过程仿真曲线看出:
控制器D(z)知足设计请求,体系在第三拍之后体系达到无差,输出响应从第三个采样周期开端完整跟踪输入,且没有波浪.最后控制器输出恒定(),是以体系输出不会产生波浪,调节时光为.
将得体系的差分方程为:
(6)
三.硬件电路设计及元件选型
1.AD转换器选择AD0808
因为51单片机大部分不带AD转换器,所以模仿量的采集就必须靠A/D实现.我们选择8位精度的AD转换器AD0808.ADC0808是8位逐次逼近型A/D转换器.它由一个8路模仿开关.一个地址锁存译码器.一个A/D转换器和一个三态输出锁存器构成,内部具有锁存功效,故不须要加地址锁存器.ALE脚为地址锁存旌旗灯号,三根地址线固定接地,因为地址旌旗灯号已经固定,故将ALE接高电平.
START脚为AD转换启动旌旗灯号,高电平有用,程序控制.AD采样值为体系的误差旌旗灯号,故选择ADC0808的为5V.
因为ADC0808的时钟所限,AD转换器的时钟旌旗灯号,由单片机P2.1脚产生,将CLOCK脚接单片机的P2.1.由单片机产生300khz的时钟旌旗灯号.单片机晶振可选择为12MHz.
EOC为转换停止旌旗灯号.当EOC为高电日常平凡,表明转换停止;
不然,表明正在进行A/D转换.设计将其接单片机P2.2脚由程序读入,断定AD是否转换完成.AD转换成果由P0口读入,故将AD转换器的输出与单片机P0口相连,高下位依次相连.
图6AD转换器硬件电路接线图
2.DA转换器选择DAC0832.
具有8位并行.中速(树立时光1us).电流型.低廉(10~20元)的特色.
DAC0832的引脚接法下:
CS:
片选端,直接接低电平
ILE:
数据锁存许可控制端,直接接高电平.
WR2:
DAC存放器写选通控制端,故直接接低.
XFER:
数据传送控制,低电平有用,故直接接地.
WR1;
第一级输入存放器写选通控制,低电平有用.其输入为上升沿时,将输入数据锁存到DAC存放器,故将该脚与单片机P2.3口相连,由程序控制DA转换的时光.
D10~D17:
与单片机P0~P7相连.
图7DA转换器硬件电路接线图
3.控制器
控制器选择AT89C51单片机,依据ADC0808和DAC0832的特征,及上述剖析,设计单片机与AD.DA的接口电路如下图所示.
图8数字控制器硬件接线图
4.被控对象
如图9所示,左边的积分环节经由过程拔取500K的输入电阻和2UF的并联电容来实现,右边的放大器上并联了R=500K和C=2uF实现时光常数=1S,然后再经由过程=10实现放大系数Kp=10的请求.
图9被控对象实现硬件电路图
图10整体实现硬件接线图
四.程序流程图及源程序
1.流程图
主程序重要经由过程挪用子程序实现体系初始化和变量初始化的操作,包括设定准时器的工作状况.准时器装初值.开准时中止.启动准时器.D/A清零.变量清零等内容,完成上述操作后就等待进入准时中止.主程序流程图如图11所示.
图11主程序流程图
准时器1中止办事程序实现的功效有:
是为AD转换供给脉冲旌旗灯号,流程图如图12所示.
图12准时器1中止办事流程图
准时器0中止办事程序实现了采样和盘算输出控制量的功效.起首检讨是否到了采样周期,假如到了,就把输出清零.变量初始化并给采样周期值,进行下一步的采样和盘算,没到就就持续计时等待采样周期到来.依据之前算得的公式盘算出控制输出u(k),然后检讨控制量是否溢出,溢出了就取响应的最值.这之后输出控制量.最落后行控制量和误差的递推和采样周期恢复,就返回了,流程图如图13所示.
图13准时器0中止办事流程图
准时器T0的初值盘算:
机械周期:
采样周期T=0.1s
设:
须要装入T0的初值为X,则有:
X化为十六进制,即X=0x3cb0
T0的初值为TH0=0x3c;
TL0=0xb0;
2.源程序及注释
#include<
reg51.h>
——————界说变量及其初始化——————
sbitstart=P2^0;
//AD启动旌旗灯号
sbitCLK=P2^1;
//AD时钟旌旗灯号输出口
sbitEOC=P2^2;
//AD转换完成旌旗灯号
sbitDA_W=P2^3;
//DA转换旌旗灯号
sbitOE=P2^4;
unsignedcharad_data;
//AD采样值
unsignedcharn=0;
//准时标记量
chare;
//界说当前采样值
charu;
//界说DA输出量
charu0=0;
//
charu1=0;
chare0=0;
//
chare1=0;
//前二次采样值和前二次控制值
floattemp;
//设置指针
————————AD采样函数——————————
voidAD()
{
start=0;
start=1;
//启动AD转换器,开端转换
start=0;
while(EOC==0);
//转换未停止,空轮回
OE=1;
ad_data=P0;
//转换停止后,读取AD输出值
OE=0;
}
————————准时器中止初始化程序————————
voidTimeInitial()
{
IP=0x08;
//设置中止优先级,准时器1为高优先级
TMOD=0x21;
//准时器1采用方法2,准时器0采用方法1
TH1=0xd8;
//设置准时器1的初值
TL1=0xd8;
TH0=0x3c;
//设置准时器0的初值
EA=1;
//凋谢所有中止
ET1=1;
//许可T1溢出中止
TR1=1;
//启动准时器1
ET0=1;
//许可T0溢出中止
TR0=1;
//启动准时器0
———————主函数——————————
voidmain()
TimeInitial();
//AD启动旌旗灯号为0
DA_W=0;
P1=0x80;
DA_W=1;
//控制器初始输出为零
while
(1);
//空轮回,等待中止
}
——————准时器0中止函数————————
voidT0(void)interrupt1using1
//重装初值
if(n==2)
n=0;
AD();
//0.1s后,读取AD采样值
e=ad_data-128;
//采样现实误差值
temp=0.267*u1+0.733*u0+26.183*e-41.983*e1+16.552*e0;
//差分方程
if(temp>
0)//当前输出值大于零
=127)
u=127;
//断定是否溢出,溢出取极值
elseu=(char)temp;
//控制器输出值
else//当前输出值小于零
if(temp<
=-127)
u=-127;
P1=u+128;
//DA输出值
u0=u1;
//控制量递推赋值
u1=u;
e0=e1;
//误差量递推赋值
e1=e;
//上升沿DA输出
elsen++;
//准时不到0.1s,持续准时
}
————————准时器1中止函数————————
voidclk(void)inter