小功率随动系统设计报告DOC.docx

上传人:b****7 文档编号:9247207 上传时间:2023-02-03 格式:DOCX 页数:24 大小:776.17KB
下载 相关 举报
小功率随动系统设计报告DOC.docx_第1页
第1页 / 共24页
小功率随动系统设计报告DOC.docx_第2页
第2页 / 共24页
小功率随动系统设计报告DOC.docx_第3页
第3页 / 共24页
小功率随动系统设计报告DOC.docx_第4页
第4页 / 共24页
小功率随动系统设计报告DOC.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

小功率随动系统设计报告DOC.docx

《小功率随动系统设计报告DOC.docx》由会员分享,可在线阅读,更多相关《小功率随动系统设计报告DOC.docx(24页珍藏版)》请在冰豆网上搜索。

小功率随动系统设计报告DOC.docx

小功率随动系统设计报告DOC

一、数控系统设计任务

1.依据动态指标要求,设计系统参数,并选择校正方法;

2.得到离散域的校正算法;

3.用单片机实现控制算法及显示等要求。

二、实验设备及软件环境

1.MATLAB仿真

•对系统建模、仿真

•得到阶跃、脉冲等响应图形

•根轨迹绘制

2.uVision2编程环境

•启动uVision2,创建一个项目

•创建新的源文件

•添加配置启动代码

•为目标设置工具选项

•编译项目,创建hex文件

3.S51ISP软件

•S51系列单片机的在线编程软件。

•安装软件后,

1)打开S51ISP下载软件,右侧方框显示:

初始化并口完成;

2)单击擦除器件,显示擦除器件完成;

3)单击打开文件,装载.hex文件或.bin文件,显示读入文件xxxxxxx到缓冲区1xxxxx字节;

4)单击(自动)写器件,显示写器件完成。

5)至此,程序正常下载到器件中。

三、数字控制器设计与仿真

1.原系统模型

系统闭环传递函数:

2.根据经验设计PID校正环节

由于以前做过PID相关控制环节,对PID各项意义比较了解,故根据经验及实际系统调试得到PID校正器:

D(z)=3.4-2z-1(一阶后差变换法D(s)=1.4+0.032s)对应比例系数Kp=1.4、微分系数Kd=2、积分系数为0

调试依据:

•比例P项增大使开环增益提高,调节作用变强,上升时间变小,闭环中产生恒定的稳态误差,而且P值越大,稳态误差越大。

但是在此系统中P项增大会使系统静态误差减小(即增大K1)。

•微分项增大使上升时间变大,产生一定延时,但是可以消除振荡;

•积分项增大使上升时间变小,并且消除控制器的稳态误差,但是会加大系统的振荡性。

系统未加PID校正器时,K1=2上升时间较小,静态精度均满足要求,但是有一定振荡,系统动态参数不满足要求。

故不加积分I校正,只采用PD校正,经调试得比例系数Kp=1.4、微分系数Kd=2时,控制效果较好。

3.加入PD校正环节后系统模型

系统闭环传递函数:

4.仿真结果:

未加校正未加采样阶跃响应未加校正加采样阶跃响应

调节时间ts=389ms、超调σ%=19.76%调节时间ts=624ms、超调σ%=43.12%,

对应ξ=0.4587、ωn=25.2220对应ξ=0.2586ωn=27.8819

加PD校正阶跃响应

调节时间ts=227ms、超调σ%=0%满足ξ≥0.9ωn≥20rad/s对应调节时间ts<250ms,超调σ%<0.1524%的动态特性要求。

5.根轨迹验证:

未加校正开环根轨迹及K=1时系统闭环极点位置

加PD校正后开环根轨迹及K=1时系统闭环极点位置

可得未加校正时系统根轨迹有处于实轴外部分,且当K=1时有闭环极点-23.6±41.5i,动态参数不满足要求,有较大超调。

PD校正环节为在原系统两极点之间加入一零点-43.7,使得根轨迹均处于实轴上,故无论K取多少系统都没有超调。

加入PD校正后系统动态参数满足要求。

四、数字控制系统组成和工件原理

单片机系统硬件框图如下图

1.CPU

•定时/计数器:

1)做定时器使用时,对振荡源的12分频的固定脉冲计数。

2)与之相关的特殊功能寄存器包括:

计数寄存器TH和TL、控制寄存器TCON、方式控制寄存器TMOD、等。

3)定时/计数器工作方式:

方式0、方式1、方式2、方式3。

4)定时/计数器的初始化:

初始化步骤:

a)确定工作方式——编成TMOD寄存器;

b)计算计数初值,并装载到TH和TL寄存器;

c)定时/计数器在终端方式工作时,开CPU中断和源中断——编程IE寄存器;

d)启动定时/计数器——编程TCON中的TR1或TR0位。

5)计数初值的计算:

a)计数功能:

X=2n-计数值n:

8/13/16

b)定时功能:

X=2n-t/T

t:

定时时间(s)T:

机器周期=12/晶振频率

•中断入口表:

编号

中断源

入口地址

0

外部中断0

0003H

1

定时/计数器0

000BH

2

外部中断1

0013H

3

定时/计数器1

001BH

4

串行口中断

0023H

5

定时/计数器2

002BH

1)中断响应条件:

a)有中断请求信号

b)系统处于开中断状态

2)中断响应过程:

c)保护断点:

将断点地址压入堆栈保存,即当前PC值入栈。

d)寻找中断源:

中断服务程序硬件入口®PC,转入中断服务。

e)中断处理:

执行中断源所要求的程序处理段。

f)中断返回:

执行RETI指令,栈顶内容®PC,程序跳转回断点处。

2.A/D转换

•使用ADC0809采集两路信号,一路为位置信号,采集后送到显示器显示;另一路为误差信号,用于进行控制算法的输入。

•ADC0809为8路输入通道、8位逐次逼近式A/D转换器,可分时转换8路模拟信号。

其结构如下图所示。

A/D转换器0809的内部结构ADC0809与单片机连接

•操作过程:

1)连线:

片选端CS5接20-27

2)选中通道及片选和地址所存使能软件操作:

向端口(地址为1B20~1B27)写数据(虚写)启动转换;收到转化结束信号后读取数据。

3.D/A转换

•使用DAC0832完成控制算法计算值的输出;

•DAC0832是8位双缓冲器结构的D/A转换器,其输入寄存器和转换寄存器分别分配各自的地址,可分别选通同时输出多路模拟信号;

•也可PWM方法完成D/A输出。

DAC0832内部结构图DAC0832与单片机连接

•操作过程:

1)连线:

片选端CS6接28-2f,输出端为AOUT;

2)软件操作:

向输入寄存器端口(地址为1B28)写数据;

3)向DAC寄存器(地址为1B29)写数据启动转换。

4.显示

•使用由发光二极管组成的LED显示器

1)不同的发光段亮可组成不同的字型(字型表在后)。

2)电流大,耗电量大;电流小,发光量不够。

一般设计时,其工作电流一般选为10mA。

3)LED数码管显示器一般分为共阳极和共阴极。

•使用8279作为显示器的控制芯片。

特点:

1)8279是可编程的键盘显示接口芯片;

2)自动完成键盘的扫描输入,自动清除按键抖动;

3)自动完成LED扫描显示。

组成:

1)I/O控制和数据缓冲器;

2)控制和定时寄存器及定时控制部分;

3)扫描计数器;

4)回送缓冲器与键盘去抖动控制电路;

5)FIFO(先进后出)寄存器和状态电路;

6)显示器地址寄存器及显示RAM。

•数码管原理图、外形图及段码表

数码管原理数码管外形

字型

共阳极段选码

共阴极段选码

字型

共阳极段选码

共阴极段选码

0

C0H

3FH

8

80H

7FH

1

F9H

06H

9

90H

6FH

2

A4H

5BH

A

88H

77H

3

B0H

4FH

B

83H

7CH

4

99H

06H

C

C6H

39H

5

92H

6DH

D

A1H

5EH

6

82H

7DH

E

86H

79H

7

F8H

07H

F

8EH

71H

段码表

•8279与CPU的连接

1)连线:

片选端CS7接30-37;

地址口1B31,数据口1B30

连接LED与8279的A0~A3和B0~B3;

2)软件:

a)初始化:

总清除命令送命令口();

等待清除结束;

送键盘显示方式命令;

送时钟分频命令

b)显示数据:

送显示位置命令

向数据口送数据。

图108279与CPU的连接

五、数字控制器硬件电路设计

1.A/D外围硬件电路

A/D采样为对给定电位器和反馈电位器输出电平之差,由两电位器输出范围均为±12V,得两电位器输出电平之差范围为±24V,但是考虑到随动系统中两电位器输出电平之差一般不会太大同时出于灵敏度及A/D采样精度考虑,认为两电位器输出电平之差范围为±12V。

A/D采样的电平范围为0-5V,因此有必要增加一电平转换电路,将±12V线性转换为0-5V。

A/D采样电平转换电路:

实际电路中A/D通道1用来对给定电位器和反馈电位器输出电平之差采样,通道0用来对反馈电位器输出电平即位置进行采样。

调试时发现通道0加入电平转换电路后对主电路干扰很大(静态精度很大幅度降低),经分析得出是电平转换电路对原电路分流使反馈电位器输出电平下降,因此对通道0加入输入阻抗极大的电压跟随器:

通道0电压跟随器

2.D/A外围硬件电路

给定电位器和反馈电位器输出电平之差范围为±24V,经过控制器增益后约±30V,而D/A输出电平范围为0-5V,所以应该加入电平转换电路。

但是考虑到随动系统中给定电位器和反馈电位器输出电平之差一般在一个小范围内变化,所以此系统中D/A不选用电平转换电路。

另外即使出现给定电位器和反馈电位器输出电平之差很大的情况,没加电平转换电路只是相当于加入了限幅环节,对系统静态参数没有影响,而对动态参数影响不大可以忽略。

故本系统不加D/A电平转换电路。

六、软件设计及实现

D(s)=1.4+0.032s由一阶后差变换法得D(z)=3.4-2z-1

1.编程算法的实现:

数字控制器的形式:

写成如下形式:

其对应的差分方程为:

2.编程算法改进:

实际调试中发现使用

控制时,存在两个问题:

一、调节时间接近250ms;二、稳态时反馈电位器指针有些微抖动,经分析得出原因是稳态时A/D采样误差(不是稳定值,而是±1范围跳动)使稳态时比例项P几乎为零而微分项D不为零导致抖动。

解决方法:

一、分段比例P控制,在偏差大时P取4.5,偏差小时P取1.4。

(如此既不会产生超调,又减小调节时间,同时满足静态精度1.5°要求)

二、分段微分D控制,仅在偏差变化较小时加入微分项,稳态时不加入微分环节,即当微分项小于一定值时,将微分项置0。

(如此既消除超调,又不怎么影响调节时间,同时还消除稳态时的抖动)

实验结果:

两个问题得到很好解决。

3.系统仿真:

数字控制器设计完成后,用MATLAB仿真,得到系统的仿真动态响应图,求出系统指标。

调节时间ts=227ms、超调σ%=0%满足ξ≥0.9ωn≥20rad/s对应调节时间ts<250ms,超调σ%<0.1524%的动态特性要求。

软件流程图:

子程序流程图:

七、数控系统调试和结果分析

实际系统调试电路:

1.静态:

•未加校正环节

1)反馈电位器完全跟随给定电位器;

2)静态角度几乎没有偏差,静态精度<1.5度;

3)D/A输出120mv时,电机转动;

4)D/A输出±5V时达到转速26弧度/秒左右。

•加入设计的PD控制器

5)反馈电位器完全跟随给定电位器;

6)静态精度<1度;

7)D/A输出120mv时,电机转动;

8)D/A输出±5V时达到转速26弧度/秒左右。

2.动态

•未加校正环节

算得调节时间ts=860ms、超调σ%=38.33%,算得对应ξ=0.2919ωn=17.1267

•加入设计的PD控制器

算得调节时间ts=200ms、超调σ%=0%,对应ξ=0.2919ωn=17.1267满足ξ≥0.9ωn≥20rad/s对应调节时间ts<250ms,超调σ%<0.1524%的动态特性要求。

总之,系统静态特性和动态特性均满足要求,而且位置显示正常。

八、参考书籍

1.《自动控制原理》程鹏

2.《数控小功率随动系统》孙丹

3.《测控系统原理与设计》孙传友

九、体会建议

数字校正器我们选用PID校正,根据实测系统调试结果决定不用积分环节(系统本身超调已经较严重)。

使用传统的PD校正时发现了增大比例项P后调节时间和稳态精度满足要求(P越大ts越小),但是超调量不满足要求(P越大即K1越大,K1越大超调越大稳态精度越高),而减小P后超调量满足要求但是调节时间和稳态精度的矛盾。

为此我们不使用传统的PID校正,而采用分段PID校正法,即偏差大时P大,偏差小时P小,调试结果发现调节时间、稳态精度和超调量均满足要求。

另外,实际调试过程中发现稳态时反馈电位器指针有些微抖动,经分析得出原因是稳态时A/D采样误差(不是稳定值,而是±1范围跳动)使稳态时比例项P几乎为零而微分项D不为零导致抖动。

我们同样通过分段微分D控制,仅在偏差变化较小时加入微分项,稳态时不加入微分环节,即当微分项小于一定值时,将微分项置0。

结果发现系统既没有消除超调,又不怎么影响调节时间,同时还消除稳态时的抖动。

理论上单片机系统的电源为5V、A/D采样范围为0~5V、D/A输出±5V,实际测量中发现电源为4.86V,所以在A/D电平转换电路中应该适加调整以使输入为0V时,A/D采样输出为128;D/A输出时发现128对应的输出电压不并为0V,132对应的输出电压才为0V,所以在程序中D/A输出对应的0V并不是128,而是132。

由于之前做过几次PID校正,所以对PID较熟悉,因此我们并不是先对系统仿真再设计控制器,而是直接对系统进行PID调试,调试好后,再通过根轨迹验证等验证。

结果发现调试得到的PID控制器,在根轨迹等仿真中也是很合理的。

通过这次课设,我们将之前学习到的很多知识应用上,同时在实验过程中我们发现不少实际问题(稳态抖动、电源实际电压和理论电压不一致等等),经过分析我们一一找到了解决方法,这使我们实践动手能力有一个很大的提高。

实际实验中我们并没有完全按照指导书的内容按部就班地做,而是根据以往实践加入不少自己的想法,最后发现较快且较好地完成了这次课程设计。

附:

程序

//头文件

#include//89C52寄存器定义头文件

#include//存储器分配宏定义

//全部变量定义

#defineadd_8279XBYTE[0x1b30]//定义8279的数据口地址

#definecommand_8279XBYTE[0x1b31]//定义8279的命令口地址

#defineadd_adc0809_in0XBYTE[0x1B20]//addressofadc0809in0

#defineadd_adc0809_in1XBYTE[0x1B21]//addressofadc0809in1

#defineadd_buffer_dac0832XBYTE[0x1B28]//addressofbufferofdac0832

#defineadd_data_dac0832XBYTE[0x1B29]//addressofinableofdac0832

unsignedcharadc_read_data,adc_read2_data;//一通道adc_read_data

unsignedcharadd_write_data;//da输出

unsignedchari,j;

intadc_read3_data,adc_read4_data,adc_read5_data;//平均滤波

intsita=0;//位置变量

intconst_sita=0;//每20个timer1中断进行一次位置显示的计数标志

inten_1=0,en=0,en_d=0,en_p=0;//PID变量

intKp=9,Kd=8;

intpn;

intout_d=0,out_p=0;

//段码表

unsignedchardis_num[]=

{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c};//LED显示用

voidinit_all(void);//初始化函数

voidpid(void);

voiddis_8279(intnum2);//8279显示函数

voidtimerr1();//Timer1中断程度PWM控制

voidmain(void)//主程序

{

init_all();//初始化8279

while

(1)//waittimer1interrupt

{}

}

voidinit_all(void)//初始化程序

{

command_8279=0xd1;

command_8279=0x00;

command_8279=0x2a;

EA=1;

ET1=1;//timer1开中断

ES=1;

TMOD=0x15;//T1countermodel1T0timermodetl1

TH1=0xc6;TL1=0x00;//TH1=0xa6;TL1=0x00;time25msfoc=11.0592MHzheretime16.1ms

TR1=1;//初始化T1,并启动T1startT0

EX0=0;

}

voiddis_8279(intnum2)

{

unsignedcharhun=0,ten=0;

command_8279=0x82;

add_8279=dis_num[num2/100];

ten=num2%100;

command_8279=0x81;

add_8279=dis_num[ten/10];

command_8279=0x80;

add_8279=dis_num[ten%10];//showthesita

}

voidpid()

{

en=adc_read_data;

en_p=(en-128);//thep

if(((en_p<10))||((en_p>-10)))

out_p=Kp*en_p/5;

else

out_p=(Kp*en_p/2);

if(out_p>70)//比例限幅

out_p=70;

elseif(out_p<-70)

out_p=-70;

en_d=en-en_1;//thed

if((en_d<=2)&&(en_d>=-2))

out_d=0;

elseif(((en_d>2)&&(en_d<40))||((en_d<-2)&&(en_d>-40)))//微分限幅和消抖动

out_d=Kd*en_d/4;

else

out_d=0;

if(pn>255)//PID输出限幅

pn=255;

elseif(pn<0)

pn=0;

pn=out_p+out_d+132;

add_write_data=pn;

en_1=en;

}

voidtimerr1()interrupt3//Timer1中断程度PWM控制

{

TH1=0xc6;TL1=0x00;

add_adc0809_in1=0x00;//stratadc0809

for(j=0;j<20;j++)//采样三次

{}

adc_read3_data=add_adc0809_in1;

add_adc0809_in1=0x00;

for(j=0;j<20;j++)

{}

adc_read4_data=add_adc0809_in1;

add_adc0809_in1=0x00;

for(j=0;j<20;j++)

{}

adc_read5_data=add_adc0809_in1;

adc_read_data=(adc_read3_data+adc_read4_data+adc_read5_data)/3;//三次采样取平均

pid();//PID运算

add_buffer_dac0832=add_write_data;//DA输出

add_data_dac0832=add_write_data;

if(const_sita>20)//每20个timer1中断进行一次位置显示

{

add_adc0809_in0=0x00;//位置采样

for(i=0;i<10;i++)

{}

adc_read2_data=add_adc0809_in0;

sita=adc_read2_data*1.34;//角度计算

if(sita<170)

sita=170-sita;

else

sita=360+170-sita;

dis_8279((sita));

const_sita=0;

}

elseconst_sita++;

}

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

当前位置:首页 > 工作范文 > 行政公文

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

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