计算机控制课程设计最小拍无波纹Word文档格式.docx
《计算机控制课程设计最小拍无波纹Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机控制课程设计最小拍无波纹Word文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
个采样周期后变为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、最少拍无纹波系统控制算法设计
np=[O010];
dp=[110];
hs=tf(np,dp);
hz=c2d(hs,0.1)
结果为
Transferfunction:
0.04837z+0.04679
zA2-1.905z+0.9048
Samplingtime:
0.1seconds
即
(2)
〜、0.04837Z+0.04679G(z)=—
z2-1.905z+0.9048
(2)无波纹最小拍控制器D(z)
入函数为单位斜坡信号
为
r(t)二t
R(z^(10.1z_1)2
(1_z)
m=2,贝U闭环脉冲传递函数
根据G(z),对象有一个纯迟后因子v=1,—个零点^=_0.967,两个极点,输
J(z^(10.967z4)(f1z4f2z^)
"
(1)=(1-0.967)(f「f2)
G'
(1)=2.967f,4.901f2
得系数fl=1.266,f2八0.758,则系统脉冲传函为
G(z)=1.2660.24^66O3733
误差脉冲传函为
0.(4)33
①e(z)=(1—z"
12)(出0.2T133=卜1T.2£
7zz—20十466
Dz
由
*
G*e得设计的控制器为
D(z)=
26.183(z-0.6986)(z-0.9048)_26.183z2-41.982z16.552
(z-1)(z+0.733)-z2-0.267^0.733
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)满足设计要求,系统在第三拍之后系统
达到无差,输出响应从第三个采样周期开始完全跟踪输入,且没有波纹。
最后控
制器输出恒定(U(k)=O),因此系统输出不会产生波纹,调节时间为t^0.3so
D(z)=座
将E(z)得系统的差分方程为:
u(k)=0.267u(k-1)0.733u(k-2)26.183e(k)-41.983e(k-1)16.552e(k-2)⑹
三、硬件电路设计及元件选型
1、AD转换器选择AD0808
由于51单片机大部分不带AD转换器,所以模拟量的采集就必须靠A/D实现。
我们选择8位精度的AD转换器AD0808。
ADC0808是8位逐次逼近型A/D转换器。
它由一个8路模拟开关、一个地址锁存译码器、一个A/D转换器和一个三态输出锁存器组成,内部具有锁存功能,故不需要加地址锁存器。
ALE
脚为地址锁存信号,三根地址线固定接地,由于地址信号已经固定,故将ALE
接高电平。
START脚为AD转换启动信号,高电平有效,程序控制。
AD采样值为系统的偏差信号,故选择ADC0808的Vref为-5V。
由于ADC0808的时钟所限,AD转换器的时钟信号,由单片机P2.1脚产生,将CLOCK脚接单片机的P2.1o由单片机产生300khz的时钟信号。
单片机晶振可选择为12MHzo
EOC为转换结束信号。
当EOC为高电平时,表明转换结束;
否则,表明
INPUT
+5V
A*
IN0
CLOCKd
IN1
START
IN2
IN3
EOC
IN4
IN5
OUT1
IN6
OUT2
IN7
OUT3
OUT4
adda
OUT5
addb
OUT6
ADDC
OUT7
ALE
OUT8
VREF(+)
VREF(-)
OE
STart
■7
■21
AD7
■20
AD6
19
AD5
18
AD4
8
AD3
15
AD2
14
AD1
17
AD0
OE•
U2
ADC0808
25■
24■
23
22■
12■
16
INPUT26
27
28
1
2
3
4
5
CLK
■10CLK
正在进行A/D转换。
设计将其接单片机P2.2脚由程序读入,判断AD是否转换完成。
AD转换结果由P0口读入,故将AD转换器的输出与单片机P0口相连,高低位依次相连。
-5V
图6AD转换器硬件电路接线图
2.DA转换器选择DAC0832。
具有8位并行、中速(建立时间1us)、电流型、低廉(10~20元)的特点。
DAC0832的引脚接法下:
CS:
片选端,直接接低电平
ILE:
数据锁存允许控制端,直接接高电平。
WR2:
DAC寄存器写选通控制端,故直接接低。
XFER:
数据传送控制,低电平有效,故直接接地。
WR1;
第一级输入寄存器写选通控制,低电平有效。
其输入为上升沿时,将输入数据锁存到DAC寄存器,故将该脚与单片机P2.3口相连,由程序控制DA转换的时间。
D10~D17:
与单片机P0~P7相连。
U3
STARTCLKEOC
D^WOE
GND
■CSWR1GND
VCC
ILE(BY1/BY2)
WR2
DI3
XFER
DI2
DI4
DI1
DI5
DI0
DI6
VREF
DI7
RFB
IOUT2
IOUT1
DAI6
11
10
DAC0832
DA34
DA25
RFB9
DAO7
VERF8
~19~
~~
~17~
DA4
DA5▼
DA6*
13
DA7■-
»
20
R2
R3
20k
U4
UTPUT
OPAMP
Volts
R4
U5
10k
图7DA转换器硬件电路接线图
3、控制器
控制器选择AT89C51单片机,根据ADC0808和DAC0832的特性,及上述分析,设计单片机与AD、DA的接口电路如下图所示。
RP1
RESPACK-8
C2
1nF
C3
十
X1
CRYSTAL
U1
X119
C1
R1
DA1
DA2
DA3
DA4
DA5
6
DA6
7
DA7
•A0
XTAL1
P0.0/AD0
P0.1/AD1
P0.2/AD2
XTAL2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
RST
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
PSEN
P2.3/A11
P2.4/A12
EA
P2.5/A13
P2.6/A14
P2.7/A15
P1.0
P3.0/RXD
P1.1
P3.1/TXD
P1.2
P3.2/INT0
P1.3
P3.3/INT1
P1.4
P3.4/T0
P1.5
P3.5/T1
P1.6
P3.6/WR
P1.7
P3.7/RD
X218
9
39
38
37
36
35
34
33
32
21
ST
ART
22
Cj
K
eO
C
24
dA
W
25
L-26二
~?
12
卫
L^5.
AT89C51
图8数字控制器硬件接线图
4、被控对象
如图9所示,左边的积分环节通过选取500K的输入电阻和2UF的并联电容来实现,右边的放大器上并联了R=500K和C=2uF实现时间常数T2=1S,然后再通过只2=10实现放大系数Kp=10的要求。
图9被控对象实现硬件电路图
II卜
R51nF
I1
CLOCK片
ADDA
ADDB
*A01
■A1
BA2
■a3
.A4
A5
A6
■a/
P3.7/RD"
ADT
OE
OUTPUT
TS
ILE(BY1/B^)
10-11
~14
~15
16~17
I.INPUT26
•27
29
DAW2
DA25
33AD6
32AD7
37AD2
36AD3
35AD4
34AD5
26
DA16
15DA5
14DA6
13DA7
DA07
RFB~9"
16DA4
20k-
图10整体实现硬件接线图
四、程序流程图及源程序
1、流程图
主程序主要通过调用子程序实现系统初始化和变量初始化的操作,包括设
定定时器的工作状态、定时器装初值、开定时中断、启动定时器、D/A清零、变
量清零等内容,完成上述操作后就等待进入定时中断。
主程序流程图如图11所
示。
图11主程序流程图
定时器1中断服务程序实现的功能有:
是为AD转换提供脉冲信号,流程图如图12所示。
定时器1中断入
J口丿
CLK取反
'
中断返回
图12定时器1中断服务流程图
定时器0中断服务程序实现了采样和计算输出控制量的功能。
首先检查是否到了采样周期,如果到了,就把输出清零、变量初始化并给采样周期值,进行下一步的采样和计算,没到就就继续计时等待采样周期到来。
根据之前算得的公式计算出控制输出u(k),然后检查控制量是否溢出,溢出了就取相应的最值。
这之后输出控制量。
最后进行控制量和偏差的递推和采样周期恢复,就返回了,流程图如图13所示。
图13定时器0中断服务流程图
定时器T0的初值计算:
机器周期:
jg»
10花,采样周期T=0.1s
设:
需要装入T0的初值为X,则有:
(21°
—X)1金:
50-130
216-X=5000X=15536
X化为十六进制,即X=0x3cb0
T0的初值为TH0=0x3c;
TL0=0xb0;
2、源程序及注释
#include<
reg51.h>
定义变量及其初始化
sbitstart=P2A0;
sbitCLK=P2A1;
sbitEOC=P2A2;
sbitDA_W=P2A3;
sbitOE=P2A4;
//AD启动信号
//AD时钟信号输出口
//AD转换完成信号
//DA转换信号
unsignedcharad_data;
//AD采样值
unsignedcharn=0;
chare;
charu;
charu0=0;
charu1=0;
chare0=0;
chare1=0;
floattemp;
//定时标记量
〃定义当前采样值
//定义DA输出量
//
//前二次采样值和前二次控制值
//设置指针
AD采样函数
voidAD()
{
start=0;
start=1;
while(EOC==0);
OE=1;
ad_data=P0;
OE=0;
//启动AD转换器,开始转换
//转换未结束,空循环
//转换结束后,读取AD输出值
}
定时器中断初始化程序
voidTimeInitial()
IP=0x08;
TMOD=0x21;
TH1=0xd8;
TL1=0xd8;
TH0=0x3c;
//设置中断优先级,定时器1为高优先级
//定时器1采用方式2,定时器0采用方式1
//设置定时器1的初值
//设置定时器0的初值
EA=1;
//开放所有中断
ET1=1;
//允许T1溢出中断
TR1=1;
//启动定时器1
ET0=1;
//允许T0溢出中断
TR0=1;
//启动定时器0
——————定时器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)//当前输出值大于零
=127)
//判断是否溢出,溢出取极值
//控制器输出值
u=127;
elseu=(char)temp;
程设计,我对所学过的知识在应用方面有了初步认识,并且学到很多扩展方面的知识,且再对课题的仿真过程当中,能够熟练的使用Simulink软件。
通过查资料了解了课本上没学到的知识,也知道了AT89C51与我们所学的80C51引脚,内部结构以及用途上的差别。
还选择了ADC0808作为A/D转换器,DAC0832作为本系统的D/A转换器。
通过模拟量经过输入通道进入A/D转换器进行转换,传输到单片机内,通过编程,对所录入的模拟信号进行编程,实现外扩电路的显示,以及D/A转换后传输给执行器进行控制。
六、参考文献
[1]刘建昌等编著,计算机控制系统,北京:
科学出版社,2009
[2]张艳兵等编著,计算机控制技术,北京:
国防工业出版社,2008
[3]张毅刚主编,单片机原理及应用,北京:
高等教育出版社,2004
[4]陈涛编著,单片机应用及C51程序设计,北京:
机械工业出版社,2008
[5]控制、电子技术类杂志、报刊