杭州电子科技大学
实验报告
课程名称:
指导老师:
学生姓名:
学生学号:
学生班级:
所学专业:
实验日期:
实验1、常规PID控制算法仿真
1.实验参数:
shiyanpid Ts=0.1s,b为班号1~5,x为学号后2位,1~99
2.实验要求:
(1)画Simulinnk框图
(2)设计或凑试PID三个参数,进行仿真
(3)使稳态误差为0,且动态性能较满意
3.实验结果:
(1)Simulinnk框图 b=1, x=3
(2)凑试PID三个参数,进行仿真
a) 经过设计以及试凑,先令Ki=0,Kd=0,调节Kp,逐渐增大Kp,观察系统的响应,直到得到静差几乎为零,经不断调试得Kp=3,响应曲线如下:
b) 在比例调节的基础上系统的静差不能满足要求,加入积分环节。令Kd=0,调节Ki,
Kp。Ki先选小,然后再逐渐增大,得到良好动态性能且静差得到消除的响应曲线。此时经试后得到Kp=3,Ki=2,响应曲线如下
c) 在以上基础上再进一步调试Kd,以进一步提高响应速度,减少调整时间。经调试得到Kd=0.5,响应曲线如下:
(3)使稳态误差为0,且动态性能较满意
最后PID三个参数的值,其中Kp=3, Ki=2, Kd=-0.5。响应曲线如上图。
实验2、积分分离PID控制算法仿真
1.实验参数:
shiyanpidjffl Ts=0.1s,b为班号1~5,x为学号后2位,1~99
2.实验要求:
(1)画Simulinnk框图
(2)使稳态误差为0,且动态性能较满意
(3)尝试不同的积分分离的阈值(比如ε=0,0.1,0.2,……,0.9,1),观察阶跃响应,并确定最佳的阈值
3.实验结果
(1)Simulinnk框图 b=1, x=3
(2)使稳态误差为0,且动态性能较满意
根据实验1的方法不断调试得到动态特性和静态特性都比较满意的响应曲线,即
Kp=2,Ki=20,Kd=0.1。此时为采用积分分离。仿真曲线如下图:
(3)尝试不同的积分分离的阈值(比如ε=0,0.1,0.2,……,0.9,1),观察阶跃响应,并确定最佳的阈值。
a) 当阈值ε=1时,仿真曲线如下:震荡的比较严重。
b) 当阈值ε=0.5时,仿真曲线如下:
c) 当阈值ε=0.2时,仿真曲线如下:
d) 当阈值ε=0时,仿真曲线如下:系统的超调量几乎为零,响应速度也有所减少。
所以由以上可知,最佳阈值为ε=0。
实验3、组态王软件练习
1.实验要求:
(1)画如图1所示模拟水箱图,系统运行后水位逐渐上升
(2)画如图2所示常量寄存器操作界面,当在“写数据框”写入某个数后,“读数据框”即显示该数
2.实验结果
(1)模拟水箱图
(2)常量寄存器操作界面
实验内容:
1、 八字段LED数码管驱动显示工作原理
2、 74LS138三—八译码器工作原理及如何控制数码管工作原理
3、 数码管动态显示工作原理分析与计算
4、 数码管多种显示实验
实验任务:
1、让Y0所对应的数码管显示“0”—“9”,间隔1秒
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
int a,num;
sbit A0=P2^0;
sbit A1=P2^1;
sbit A3=P2^2;
void init();
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void main()
{
init();
num=0;
P0=table[0];
while(1)
{
A0=0;
A1=0;
A3=0;
if(a==20)
{
a=0;
num++;
if(num==10)
num=0;
P0=table[num];
}
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
}
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
2、让Y0所对应的数码管显示“0”,Y1显示“1”,Y2显示“2”…………以此类推最后Y7显示“7”,间隔1秒
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
int a,num;
sbit A0=P2^0;
sbit A1=P2^1;
sbit A2=P2^2;
void init();
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void main()
{
init();
num=0;
P0=table[0];
while(1)
{
if(a==20)
{
a=0;
num++;
if(num==8)
num=0;
}
switch(num) //位选,选择点亮的数码管,
{
case(0):
A0=0;A1=0;A2=0; break;
case(1):
A0=1;A1=0;A2=0; break;
case(2):
A0=0;A1=1;A2=0; break;
case(3):
A0=1;A1=1;A2=0; break;
case(4):
A0=0;A1=0;A2=1; break;
case(5):
A0=1;A1=0;A2=1; break;
case(6):
A0=0;A1=1;A2=1; break;
case(7):
A0=1;A1=1;A2=1; break;
}
P0=table[num];
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
}
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
3、让Y0所对应的数码管显示“0”,Y1显示“1”,Y2显示“2”…………以此类推最后Y7显示“7”,间隔4毫秒,注意观察现象,和实验2有何区别
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
int a,num;
sbit A0=P2^0;
sbit A1=P2^1;
sbit A2=P2^2;
void init();
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void main()
{
init();
num=0;
P0=table[0];
while(1)
{
if(a==4)
{
a=0;
num++;
if(num==8)
num=0;
}
switch(num) //位选,选择点亮的数码管,
{
case(0):
A0=0;A1=0;A2=0; break;
case(1):
A0=1;A1=0;A2=0; break;
case(2):
A0=0;A1=1;A2=0; break;
case(3):
A0=1;A1=1;A2=0; break;
case(4):
A0=0;A1=0;A2=1; break;
case(5):
A0=1;A1=0;A2=1; break;
case(6):
A0=0;A1=1;A2=1; break;
case(7):
A0=1;A1=1;A2=1; break;
}
P0=table[num];
}
}
void timer0() interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
a++;
}
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
4、让Y0所对应的数码管显示“5”,停留1秒,再让Y1显示“5”,…………以此类推最后Y7显示“5”,移动字幕
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
int a,num;
sbit A0=P2^0;
sbit A1=P2^1;
sbit A2=P2^2;
void init();
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void main()
{
init();
num=0;
P0=table[0];
while(1)
{
if(a==20)
{
a=0;
num++;
if(num==8)
num=0;
}
switch(num) //位选,选择点亮的数码管,
{
case(0):
A0=0;A1=0;A2=0; break;
case(1):
A0=1;A1=0;A2=0; break;
case(2):
A0=0;A1=1;A2=0; break;
case(3):
A0=1;A1=1;A2=0; break;
case(4):
A0=0;A1=0;A2=1; break;
case(5):
A0=1;A1=0;A2=1; break;
case(6):
A0=0;A1=1;A2=1; break;
case(7):
A0=1;A1=1;A2=1; break;
}
P0=table[5];
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
}
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
5、在8个数码管上稳定显示“i love you”
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
int a,num;
sbit A0=P2^0;
sbit A1=P2^1;
sbit A2=P2^2;
void init();
uchar code table[]={0x30,0x38,0x3f,0x3e,0x79,0x6e,0x3f,0x3e};
void main()
{
init();
num=0;
P0=table[0];
while(1)
{
if(a==2)
{
a=0;
num++;
if(num==8)
num=0;
}
switch(num) //位选,选择点亮的数码管,
{
case(0):
A0=0;A1=0;A2=0; break;
case(1):
A0=1;A1=0;A2=0; break;
case(2):
A0=0;A1=1;A2=0; break;
case(3):
A0=1;A1=1;A2=0; break;
case(4):
A0=0;A1=0;A2=1; break;
case(5):
A0=1;A1=0;A2=1; break;
case(6):
A0=0;A1=1;A2=1; break;
case(7):
A0=1;A1=1;A2=1; break;
}
P0=table[num];
}
}
void timer0() interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
a++;
}
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
计算机控制系统实验报告姓名罗才宝学号0953505008指导教师专业年级所在院系完成日期实验一DA数模转换实验一实验目的1掌握数模…
杭州电子科技大学实验报告课程名称指导老师学生姓名学生学号学生班级所学专业实验日期实验1常规PID控制算法仿真1实验参数shiyan…
计算机控制技术实验报告题目专业姓名学号指导老师一实验目的实验一AD转换实验1学习掌握模数信号转换的基本原理2掌握ADC0809芯片…
计算机控制实验报告班级姓名学号实验二最少拍控制系统1实验结果图21单位阶跃输入下最少拍有纹波控制系统仿真结构模型图22单位阶跃输入…
陕西理工学院单片机课程设计陕西理工学院课程设计实验报告课程单片机原理及应用题目交通灯院系电气工程系班级自控学号姓名指导老师时间20…
计算机控制系统实验报告姓名罗才宝学号0953505008指导教师专业年级所在院系完成日期实验一DA数模转换实验一实验目的1掌握数模…
计算机控制实验报告班级姓名学号实验二最少拍控制系统1实验结果图21单位阶跃输入下最少拍有纹波控制系统仿真结构模型图22单位阶跃输入…
计算机控制系统实验报告第二部分一实验日期20xx424实验时间9501130小组成员薛有华武毅男二实验目的1了解步进电机温度PID…
微机原理与接口技术课程设计报告交通灯控制系统班级学号姓名成绩20xx年7月1日1目录1课程设计的目的和要求32系统的主要功能作用及…
指导教师评定成绩计算机控制技术课程设计报告设计题目最少拍无波纹控制器的设计与仿真学生姓名专业班级指导教师一课程设计题目最少拍无波纹…
计算机控制原理实验报告姓名学号班级指导教师完成时间实验一二阶系统闭环参数n和对时域响应的影响一实验目的1研究二阶系统闭环参数n和对…