基于数字pid的电机速度控制系统设计课程设计任务书毕设论文.docx
《基于数字pid的电机速度控制系统设计课程设计任务书毕设论文.docx》由会员分享,可在线阅读,更多相关《基于数字pid的电机速度控制系统设计课程设计任务书毕设论文.docx(14页珍藏版)》请在冰豆网上搜索。
基于数字pid的电机速度控制系统设计课程设计任务书毕设论文
课程设计任务书
学院
专业
学生姓名
班级学号
课程设计题目
基于数字PID的电机速度控制系统设计
实践教学要求与任务:
1)构成电机速度控制系统
2)硬软件设计
3)实验调试
4)THFCS-1现场总线控制系统实验
5)撰写实验报告
工作计划与进度安排:
1)第1~2天,查阅文献,构成电机速度控制系统
2)第3~4天,硬软件设计
3)第5~6,实验调试
4)第7~9天,THFCS-1现场总线控制系统实验
5)第10天,撰写实验报告
指导教师:
201年月日
专业负责人:
201年月日
学院教学副院长:
201年月日
目录
1电机硬件控制电路2
1.1硬件电路器件选型2
1.2硬件电路设计方案2
1.3硬件电路的PCB设计4
2PID控制算法5
2.1比例、积分、微分控制5
2.2PID控制器的参数整定7
3基于数字PID控制程序的设计7
3.1数字PID与模拟PID控制算法7
3.2数字PID控制程序8
4总结8
附录9
参考文献12
摘要
在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。
PID控制器问世至今已有近70年历史,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。
当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。
即当我们不完全了解一个系统和被控对象,或不能通过有效的测量手段来获得系统参数时,最适合用PID控制技术。
PID控制,实际中也有PI和PD控制。
PID控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。
PID控制算法分为模拟PID和数字PID两种。
模拟PID就是在现场安装的利用DDZII或者DDZIII型表再加上其他气动仪表的模块,对现场控制变量的模拟信号利用旋钮或拨盘对PID的三个值进行设定对或者手动控制输出的系统,其信号均为模拟信号。
数字PID就是把现场的控制变量的模拟信号和对现场受控变量的输出信号均转换成了数字信号,PID的实现也是通过数字信号的设定来完成的。
现在大多在DCS、PLC系统内完成的。
本设计是基于数字PID的电机调速计算机控制系统的设计,针对不同的电机对其PID控制参数进行相应的整定从而使电机工作以更高的效率、更好的调速性能工作!
关键词:
系统参数;数字PID;计算机控制系统
1电机硬件控制电路
1.1硬件电路器件选型
电机驱动电路的开关器件选择英飞凌公司的BTS7960。
BTS7960是NovalithIC家族三个独立的芯片的一部分:
一是p型通道的高电位场效应晶体管,二是一个n型通道的低电位场效应晶体管,结合一个驱动晶片,形成一个完全整合的高电流半桥。
所有三个芯片是安装在一个共同的引线框,利用芯片对芯片和芯片芯片技术。
电源开关应用垂直场效应管技术来确保最佳的阻态。
由于p型通道的高电位开关,需要一个电荷泵消除电磁干扰。
通过驱动集成技术,逻辑电平输入、电流取样诊断、转换速率调整器,失效发生时间、防止欠电压、过电流、短路结构轻易地连接到一个微处理器上。
BTS7960可结合其他的BTS7960形成全桥和三相驱动结构。
1.2硬件电路设计方案
电机控制从控制方法上可以分为开环控制和闭环控制两种。
开环控制在用法上比较简单,只需考虑输出,不需要反馈信号,使用上比较简单,但是其缺点是速度控制的精度比较低,不能适应不同的赛道环境。
另外一种为闭环控制,电机的速度控制信号输出由需要的速度和电机的实际转速二者决定,即需要对电机的实际转速进行采集和反馈。
这种做法的好处是控制精度比较高,电机调速性能比较理想。
通常情况下的电机转速的闭环控制,是通过软件的自动控制算法实现的,需要将电机的转速反馈给S12,通过软件上的自动控制算法,由需要的速度同实际的速度的偏差,给出纠正值,达到对速度的稳定控制。
但是这样一来将会增加S12的负担。
而我们的智能车利用CCD进行识别,使微控制器更多的关注图像的采集及处理是我们设计时一直注意的问题。
因此我们在电机驱动电路上下了很大的功夫,最终确定了一种硬件的闭环控制方案。
这种方案使用了光电编码器或测速发电机完成电机速度信号的采集。
测速发电机输出的电压大小表征了电机的实际转速。
这一电压同S12输出的PWM信号的积分值进行比较,由它们的偏差控制电机该加速还是减速。
在电机驱动上,我们用MOS管作为分立元件搭建了H桥驱动电路,如图1.1所示,简化H桥驱动电路如图1.2所示。
通过逻辑设计,可以让电机处于多种模式下工作,经过在赛道上对赛车进行试验,电机的加减速效果很好,完全可以满足赛车对不同赛道加减速的要求,可以达到对电机的调速控制要求。
电机的工作模式如表1所示。
图1.1驱动电路原理图
图1.2H桥电机驱动电路
表1电机工作模式
模式(nENABLE=0):
HIN1
nLIN1
HIN2
nLIN2
0,自由正转模式
1,自由反转模式
2,带制动的正转模式
3,带制动的反转模式
4,双极驱动的正转模式
5,双极驱动的反转模式
6,全速前进
7,停止(刹车)
nENABLE=1
PWM
L
PWM
nPWM
PWM
nPWM
H
L
L
H
nPWM
PWM
nPWM
PWM
nPWM
H
L
H
L
H
L
H
nPWM
PWM
L
L
L
L
H
L
H
nPWM
PWM
L
L
H
1.3硬件电路的PCB设计
图1.3驱动电路PCB
图1.4驱动电路PCB
2PID控制算法
2.1比例、积分、微分控制
PID控制器由比例单元(P)、积分单元(I)和微分单元(D)组成。
其输入e(t)与输出u(t)的关系为:
u(t)=kp[e(t)+1/TI∫e(t)dt+TD*de(t)/dt]
式中积分的上下限分别是0和t。
因此它的传递函数为:
G(s)=U(s)/E(s)=kp[1+1/(TI*s)+TD*s]
其中kp为比例系数;TI为积分时间常数;TD为微分时间常数。
图1.1PID控制的方块图
比例(P)控制。
比例控制是一种最简单的控制方式。
其控制器的输出与输入误差信号成比例关系。
当仅有比例控制时系统输出存在稳态误差。
积分(I)控制。
在积分控制中,控制器的输出与输入误差信号的积分成正比关系。
对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(SystemwithSteady-stateError)。
为了消除稳态误差,在控制器中必须引入“积分项”。
积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。
这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。
因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。
微分(D)控制。
在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。
自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。
其原因是由于存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。
解决的办法是使抑制误差的作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。
这就是说,在控制器中仅引入“比例”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。
所以对有较大惯性或滞后的被控对象,比例+微分(PD)控制器能改善系统在调节过程中的动态特性。
2.2PID控制器的参数整定
PID控制器的参数整定是控制系统的核心内容。
它是根据被控过程的特性确定PID控制器的比例系数、积分时间和微分时间的大小。
PID控制器参数整定的方法很多,概括起来有两大类:
一是理论计算整定法。
它主要是依据系统的数学模型,经过理论计算确定控制器参数。
这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改。
二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。
PID控制器参数的工程整定方法,主要有临界比例法、反应曲线法和衰减法。
两种方法各有其特点,其共同点都是通过试验,然后按照工程对经验公式控制器参数进行整定。
但无论采用哪一种方法所得到的控制器参数,都需要在实际运行中进行最后调整与完善。
现在一般采用的是临界比例法。
利用该方法进行PID控制器参数的整定步骤如下:
(1)首先预选择一个足够短的采样周期让系统工作;
(2)仅加入比例控制环节,直到系统对输入的阶跃响应出现临界振荡,记下这时的比例放大系数和临界振荡周期;
(3)在一定的控制度下通过公式计算得到PID控制器的参数。
本设计采用经验估计与实际调试情况相结合的方法测得本设计电机的P、I、D合适的参数为10.0,15.0,5.0。
3基于数字PID控制程序的设计
3.1数字PID与模拟PID控制算法
模拟PID就是在现场安装的利用DDZII或者DDZIII型表再加上其他气动仪表的模块,对现场控制变量的模拟信号利用旋钮或拨盘对PID的三个值进行设定对或者手动控制输出的系统,其信号均为模拟信号。
数字PID就是把现场的控制变量的模拟信号和对现场受控变量的输出信号均转换成了数字信号,PID的实现也是通过数字信号的设定来完成的。
3.2数字PID控制程序
本设计采用增量计算位置输出的PID控制算法,位置式PID控制的输出与整个过去的状态有关,用到了误差的累加值;而增量式PID的输出只与当前拍和前两拍的误差有关,因此位置式PID控制的累积误差相对更大;增量式PID控制输出的是控制量增量,并无积分作用,因此该方法适用于执行机构带积分部件的对象,如步进电机等,而位置式PID适用于执行机构不带积分部件的对象,如电液伺服阀。
由于增量式PID输出的是控制量增量,如果计算机出现故障,误动作影响较小,而执行机构本身有记忆功能,可仍保持原位,不会严重影响系统的工作,而位置式的输出直接对应对象的输出,因此对系统影响较大。
本设计的控制程序如下:
MOTOR_P=(int)(Kp*(MOTOR_ER-MOTOR_ER1));
MOTOR_I=(int)(Ki*MOTOR_ER);
MOTOR_D=(int)(Kd*(MOTOR_ER-2*MOTOR_ER1+MOTOR_ER2));
MOTOR_OUT=MOTOR_OUT+MOTOR_P+MOTOR_I+MOTOR_D;
式中MOTOR_ER是编码器采集的速度与电机设定速度只差,MOTOR_ER1和MOTOR_ER2是前两个采样周期采集的误差,MOTOR_P、MOTOR_I、MOTOR_D分别是PID控制算法的P项、I项、D项,MOTOR_OUT是电机输出值。
4总结
电机调速在工业现场中有很广泛的应用,而要建立电机调速系统的准确数学模型是很困难的,其他基于准确数学模型的控制算法在这里有一定的局限性,通过本次设计,所以这里采取工业现场应用最为广泛的PID控制算法。
通过这次设计让我对P、I、D在控制电机性能方面有了更进一步的理解,也让我感觉到了自己所学知识的不全面和对细节把握的不准确。
让我去弥补了很多以前不怎么在意的细节。
通过这次设计,让我看到基础是一切后续学习的基本保证,要在掌握基础理论的知识同时积极结合实际以达到学以致用的目的!
附录
控制器采用飞思卡尔半导体公司MC9S12XS128系列的16位控制芯片,基于数字PID的电机调速控制系统的控制程序如下:
#include
#include
#include"LQEEPROM.h"
#include"system.h"
#pragmaLINK_INFODERIVATIVE"mc9s12xs128"
intD_speed,W_speed,L_speed,Speed_Set;
intMOTOR_ER,MOTOR_ER1,MOTOR_ER2,MOTOR_OUT,MOTOR_P,
MOTOR_I,MOTOR_D,Kp=10,Ki=15,Kd=5;
intkey_temp;
voidmott_ctr(void)
{
//PWMDTY01电机反转
//PWMDTY23电机正转
MOTOR_ER=Speed_Set-Pulse_count;
MOTOR_P=(int)(Kp*(MOTOR_ER-MOTOR_ER1));
MOTOR_I=(int)(Ki*MOTOR_ER);
MOTOR_D=(int)(Kd*(MOTOR_ER-2*MOTOR_ER1+MOTOR_ER2));
MOTOR_OUT=MOTOR_OUT+MOTOR_P+MOTOR_I+MOTOR_D;
if(stop_flag==1)MOTOR_OUT=0;
if(MOTOR_OUT>=0)
{
if(MOTOR_OUT>=8000)MOTOR_OUT=8000;
PWMDTY23=MOTOR_OUT;
PWMDTY01=0;
}else
{
if(MOTOR_OUT<=-8000)MOTOR_OUT=-8000;
PWMDTY01=-MOTOR_OUT;
PWMDTY23=0;
}
MOTOR_ER2=MOTOR_ER1;
MOTOR_ER1=MOTOR_ER;
}
voidmode_select(void)
{
unsignedcharkey_temp;
key_temp=Mode_Get();
PORTB=PORTB-key_temp;
switch(key_temp)
{
case0:
D_speed=85;
W_speed=67;
L_speed=64;
break;
case1:
D_speed=90;
W_speed=70;
L_speed=71;
break;
case2:
D_speed=95;
W_speed=70;
L_speed=67;
break;
case3:
D_speed=90;
W_speed=75;
L_speed=71;
break;
default:
break;
}
}
voidmain(void)
{
DisableInterrupts;
PLL_Init();
PWM_Init();
IC_Init();
Pulse_accumulator_Init();
PIT_Timer_Init();
PORT_Init();
EnableInterrupts;
mode_select();
for(;;)
{
_FEED_COP();
PITCFLMT_PITE=0;
PWMDTY23=0;
PWMDTY01=0;
mott_ctr();
TFLG1_C1F=1;
TIE_C1I=1;
}
}
参考文献
[1]吴晔,张阳,腾勤.基于HCS12的嵌入式系统设计.北京:
电子工业出版社,2010.
[2]陈伯时主编.电力拖动自动控制系统.第2版.北京:
机械工业出版社,2003.
[3]谢宜仁主编.单片机实用技术问答[M].北京:
人民邮电出版社,2003-02.
[4]实用电子电路设计制作300例[M].北京:
中国电力出版社,2005-01.