计算机控制系统实验指导书
- 格式:doc
- 大小:2.32 MB
- 文档页数:12
《计算机控制技术》实验指导书
徐启俞辉
南京工业大学
自动化与电气工程学院
2013-11-17
目录
实验一离散系统的数字PID实验实验二空调温度控制实验
实验三步进电机控制实验
实验一 离散系统的数字PID 控制
一. 实验目的
1.加深理解计算机控制系统的特点; 2.掌握MATLAB 编程或仿真方法; 3.了解PID 控制中各参数的作用。
二. 实验内容
1. 利用MATLAB 软件根据要求设计PID 数字控制器
控制对象为
s
s s s G 1047035.87523500
)(2
3++=
采样时间为1ms ,试编程或用SIMULINK 仿真做出输入为阶跃信号、正弦信号和方波信号时的响应曲线,试观察当改变PID 参数时会有什么影响。
2. 调节各参数观察输出结果 3. 总结PID 参数对输出控制的影响
三. 实验设备及仪器
1. 计算机
2. MATLAB 软件
四. 报告要求
按标准格式书写实验报告。
*********************************************** 提示:采用Z 变换进行离散化后的离散对象为
)
3()4()2()3()1()2()
3()4()2()3()1()2()(-+-+-+------=k u num k u num k u num k yout den k yout den k yout den k yout
***************实验一参考程序************** clear all; close all;
ts=0.001;
sys=tf(5.235e005,[1,87.35,1.047e004,0]); dsys=c2d(sys,ts,'z');
[num,den]=tfdata(dsys,'v');
u_1=0.0;u_2=0.0;u_3=0.0;
y_1=0.0;y_2=0.0;y_3=0.0;
x=[0,0,0]';
error_1=0;
for k=1:1:500
time(k)=k*ts;
s=1;
if s==1
kp=0.50;ki=0.001;kd=0.001;
rin(k)=1;
elseif s==2
kp=0.50;ki=0.001;kd=0.001;
rin(k)=sign(sin(2*2*pi*k*ts)); elseif s==3
kp=1.5;ki=1.0;kd=0.01;
rin(k)=0.5*sin(2*2*pi*k*ts);
end
u(k)=kp*x(1)+kd*x(2)+ki*x(3);
if u(k)>=10
u(k)=10;
end
if u(k)<=-10
u(k)=-10;
end
yout(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(2)*u_1+num(3)*u_2+num(4)*u_3; error(k)=rin(k)-yout(k);
u_3=u_2;u_2=u_1;u_1=u(k);
y_3=y_2;y_2=y_1;y_1=yout(k);
x(1)=error(k);
x(2)=(error(k)-error_1)/ts;
x(3)=x(3)+error(k)*ts;
error_1=error(k);
end
figure(1);
plot(time,rin,'b',time,yout,'r');
xlabel('time(s)'),ylabel('rin,yout');
grid;
***************实验一SIMULINK仿真参考**************
实验二空调温度控制实验
一、实验要求
利用实验仪仿温度变化,加热和致冷电机可以用发光管代替。
要求可以用键盘设定恒温温度,当外界温度超过设定温度+/-2℃时,就要启动加热或致冷电机。
二、实验目的
1.了解闭环控制的基本原理;
2.进一步熟悉A/D 变换原理和编程方法;
3.进一步了键盘扫描和LED 显示原理和编程方法。
三、实验电路及连接
LED 显示电路和键盘电路实验仪上已接好。
原理图见图1。
A/D变换电路只要接上模拟量输入和地址选择信号即可。
四、实验说明
过.现联合起来形成一个控制系统. 其中LED 显示实
验和键盘扫描实验可参见硬件实验十六、十七。
A/D 变
换实验可参见硬件实验十三。
I/O 口输入输出可参见
8255 硬件实验。
五、实验程序框图
A/D 采样子程序框图
LED 显示子程序框图键盘扫描子程序框图
温度控制主程序框图
实验三步进电机控制实验
一、实验目的:
1.了解步进电机控制的基本原理。
2.掌握控制步进电机转动的编程方法。
3.了解单片机控制外部设备的常用电路。
二、实验仪器和器材:
1.计算机一台
2.Lab2000P仿真实验箱
三、实验原理、内容与步骤:
步进电机驱动原理是通过对每相线圈中的电流的顺序切换来使电机作步进式旋转。
切换是通过单片机输出脉冲信号来实现的。
所以调节脉冲信号的频率便可以改变步进电机的转速,改变各相脉冲的先后顺序,可以改变电机的旋转方向。
步进电机的转速应由慢到快逐步加速。
电机驱动方式可以采用双四拍(AB→BC→CD→DA→AB)方式,也可以采用单四拍(A→B→C →D→A)方式,或单、双八拍(A→AB→B→BC→C→CD→D→DA→A)方式。
实际控制时公共端是接在VCC上的,所以实际控制脉冲是低有效。
8255的PA口输出的脉冲信号经(MC1413或ULN2003A)倒相驱动后,向步进电机输出脉冲信号序列。
实验原理图如下图所示:
参考程序如下:
#define mode8255 0x82
xdata unsigned char control _at_ 0x8003; xdata unsigned char ctl _at_ 0x8000;
#define Astep 0x01
#define Bstep 0x02
#define Cstep 0x04
#define Dstep 0x08
unsigned char dly_c;
void delay()
{
unsigned char tt,cc;
cc = dly_c;
tt = 0x0;
do{
do {
}while(--tt);
}while(--cc);
}
void main()
{
unsigned char mode;
control = mode8255;
mode = 2;
ctl = 0;
dly_c = 0x10;
// 单/双八拍工作方式
if(mode ==1)
while(1)
{
ctl = Astep;
delay();
ctl = Astep+Bstep;
delay();
ctl = Bstep;
delay();
ctl = Bstep+Cstep;
delay();
ctl = Cstep;
delay();
ctl = Cstep+Dstep;
delay();
ctl = Dstep;
delay();
ctl = Dstep+Astep;
delay();
if(dly_c>2) dly_c --;
};
// 双四拍工作方式
if(mode == 2)
while(1)
{
ctl = Astep+Bstep;
delay();
ctl = Bstep+Cstep;
delay();
ctl = Cstep+Dstep;
delay();
ctl = Dstep+Astep;
delay();
if(dly_c>3) dly_c --;
};
// 单四拍工作方式
if(mode ==3)
while(1)
{
ctl = Dstep;
delay();
ctl = Cstep;
delay();
ctl = Bstep;
delay();
ctl = Astep;
delay();
if(dly_c>4) dly_c --;
}
while(1); }。