计算机控制课程设计最小拍无波纹.docx

上传人:b****2 文档编号:712526 上传时间:2022-10-12 格式:DOCX 页数:16 大小:346.21KB
下载 相关 举报
计算机控制课程设计最小拍无波纹.docx_第1页
第1页 / 共16页
计算机控制课程设计最小拍无波纹.docx_第2页
第2页 / 共16页
计算机控制课程设计最小拍无波纹.docx_第3页
第3页 / 共16页
计算机控制课程设计最小拍无波纹.docx_第4页
第4页 / 共16页
计算机控制课程设计最小拍无波纹.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

计算机控制课程设计最小拍无波纹.docx

《计算机控制课程设计最小拍无波纹.docx》由会员分享,可在线阅读,更多相关《计算机控制课程设计最小拍无波纹.docx(16页珍藏版)》请在冰豆网上搜索。

计算机控制课程设计最小拍无波纹.docx

计算机控制课程设计最小拍无波纹

 

《计算机控制》课程设计报告

 

题目:

最小拍控制设计

姓名:

学号:

 

2014年7月4日

《计算机控制》课程设计任务书

学号

班级

学生

指导教师

题目

最小拍控制设计

设计时间

2014年6月27日至2014年7月4日共1周

设计要求

设计任务:

设单位反馈线性定常离散系统的连续部分和零阶保持器的传递函数分别为

,采样周期T=0.1s,设计数字控制器

,要求系统在单位斜坡输入时实现最小拍无波纹控制。

方案设计:

1.完成控制系统的分析、设计;

2.选择元器件,完成电路设计,控制器采用MCS-51系列单片机(传感器、功率接口以及人机接口等可以暂不涉及),使用Protel绘制原理图;

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

——————定义变量及其初始化——————

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的初值

TL0=0xb0;

EA=1;//开放所有中断

ET1=1;//允许T1溢出中断

TR1=1;//启动定时器1

ET0=1;//允许T0溢出中断

TR0=1;//启动定时器0

}

———————主函数——————————

voidmain()

{

TimeInitial();

start=0;//AD启动信号为0

DA_W=0;

P1=0x80;

DA_W=1;//控制器初始输出为零

while

(1);//空循环,等待中断

}

——————定时器0中断函数————————

voidT0(void)interrupt1using1

{

TH0=0x3c;

TL0=0xb0;//重装初值

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)//当前输出值大于零

{

if(temp>=127)

u=127;//判断是否溢出,溢出取极值

elseu=(char)temp;//控制器输出值

}

else//当前输出值小于零

{

if(temp<=-127)

u=-127;//判断是否溢出,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1