当前位置:文档之家› 一个实用的单片机PID方式控温实例

一个实用的单片机PID方式控温实例

一个实用的单片机PID方式控温实例
一个实用的单片机PID方式控温实例

一个实用的单片机PID方式控温实例

§1:基本情况

本例中控制对象是一款小型专用工业烘箱

要求恒温范围:室温--300℃

恒温精度:±1℃

(其它指标略)

§2:控制器硬件

(参考原理图)

①.单片机采用(C51系列)TI公司的MCS1210Y4(内部有8通道24位AD转换器)串行口在线编程

②.前向通道温度信号(来自烘箱的Pt100电阻信号)经INA118放大送入AD

通道CH0

③.后向通道 I/O口驱动光耦MOC-3061,再驱动大功率双向可控硅输出

④.键盘 up 递增按钮和down 递减按钮,设置目标温度

⑤.LED(3位)显示温度值(软件切换显示目标温度或采样温度)

⑥.电源 +5V单电源

§3:软件介绍(由C语言编写)

①.流程采样当前温度--PID运算--PWM(占空比式)输出

②.温度采样

采样周期是一个很重要的参数

其确定取决于烘箱的固有响应特性参数(比如纯滞后时间θ以及

响应时间常数τ)一般值在4--20秒之间(例中取16秒)

③.PID运算

每采样一次之后进行一次PID运算,得到一个输出量,供输出函数调用.

为了下面叙述方便先定义几个变量

定义: T_target 表示目标温度

T_real 表示当前温度

T_diff 表示当前温差并且T_diff=T_target-T_real

PID运算表达式如下

PWM_OUT=P_OUT+I_OUT+D_OUT+P_H;(求代数和)

其中 P_OUT=KP*(T_diff)

称为比例项,KP是比例系数,比例项的作用是纠正偏差.

比例项输出等于比例系数乘当前温差

(原理图)

I_OUT=KI*∑(diff)

称为积分项,KI是积分系数,积分项用于消除系统稳态误差

∑(diff)含义是由当前算起前面N次采样温差的和(例中N取20)

D-_OUT=KD*Δdiff

称为微分项,KD是微分系数,

微分项用于减小系统超调量,增加系统稳定性.

(Δdiff=当前温差-上次温差)

P_H=KC*(T_target)

称为维持功率项,达温后(其它项均趋于0)此项起抵消散热维持温度的作用,可增加系统稳定性.

KC是维持功率系数

如果约定满功率值为100,停止输出功率值为0 那末PWM_OUT的取值范围就确定为0--100主要是为了后面编制输出函数时方便简明,直接调用PWM_OUT作为输出占空比的百分数)

后面整定系数时就要兼顾PWM_OUT的取值范围

§4.源程序(部分)

#define KP 3.0 //比例系数

#define KI 0.3 //积分系数

#define KD 200.0 //微分系数

#define KC 0.1 //维持功率系数

#define T_c 16 //采样周期(单位:秒)

sbit pid_port=P3^5; //控制输出端口

float T_target=0; //目标温度

float T_real=0; //当前温度

float PWM=0; //输出控制量

bit read_AD_enable=0; //PID运算允许标志位

//T0定时器初始化

void Timer0_Init()

{

TMOD|=0x01;

TF0 =0;

TR0 =1;

IE |=0x02;

}

//读取AD 转换值并刻度

void read_AD(void)

{

int delta_ad;

unsigned char ad[3];

ad[0]=ADRESH;

ad[1]=ADRESM;

ad[2]=ADRESL;

delta_ad=ad[0]*0x100+ad[1]-0x23cb;

if(delta_ad<=0)delta_ad=0;

T_real=(float)delta_ad/70;

}

//*--------PID运算函数

void pid(void)

{

static float diff[20]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; static float sum_diff=0; //∑(diff)

static int curr_=0;

float p_out,i_out,d_out,temp;

float pwm_0;

temp=diff[curr_];

if(curr_+1>=20)curr_=0;

else curr_+=1;

sum_diff-=diff[curr_];

diff[curr_]=T_target-T_real;

sum_diff+=diff[curr_];

p_out=KP*diff[curr_]; //比例项输出

i_out=KI*sum_diff; //积分项输出

d_out=KD*(diff[curr_]-temp); //微分项输出

pwm_0=KC*T_target; //维持功率项

if(i_out>100)i_out=100; //积分分离

if(i_out<-100)i_out=-100;

PWM=p_out+i_out+d_out+pwm_0; //总输出量

if(PWM<0)PWM=0;

else if(PWM>=100)PWM=100;

}

// 输出函数

void PWM_OUT(float PWM)

{

static unsigned char t=1; //t=(1--100)周期为4秒

unsigned char limit; //pid_value输出百分比

limit=(unsigned char)PWM;

if(t<=limit)pid_port=0; //加热

else pid_port=1; //停止加热

t++;

if(t>100)t=1;

}

/**************************************************/

//T0中断服务程序

void Timer0_ISR() interrupt 1 using 1

{

static unsigned int x=0;

TH0=(28672)>>8; // 11.0592MHz,interval 40mS

TL0=(28672+20)&0xff; // +20 compensate

TF0=0;

if((x++)>(T_c*25))

{

x=0;

read_AD_enable=1;

}

PWM_OUT(PWM); //可控硅输出

}

/****************************************************

主程序

----------------------------------------------------*/

void main (void)

{

//-------程序初始化(略)

while (1)

{

if(read_AD_enable==1)

{

read_AD_enable=0;

read_AD();

pid();

}

}

}

§5.参数的整定(这大概是最困难而且费时的事)

①T_c(采样周期)

单从控制精度上考虑,T_c当然是越小越好,但过小占用

处理器的运算时间会加长,从而导致系统成本增加,例中

主要考虑被控对象的时间常数τ和纯滞后时间θ,下面用

扩充响应曲线法求取τ及θ.

a. 使系统处于开环,手动直接在被控对象输入端加一个阶跃信号

描绘出响应曲线(如图)

b. 在响应曲线的最大斜率处作切线即可得到θ和τ

c. 选择T_c,当θ占主导地位时,应尽量使θ为T_c的整倍数

如θ=2T_c 或θ=T_c ,当θ比T_c小得多时,可取T_c= τ/10 ②KP( 比例系数)

先定为1,做一个简单的只有比例调节的函数,使系统工作于闭环,T_target 定在150℃(恒温范围的中间值)

纪录响应曲线,如果曲线没有出现振铃则可能是KP偏小,调整KP,使曲线出现轻微振铃.反之振铃幅度过大,则可能是KP偏大.

③KC(维持功率系数)

借用§5.②中的曲线(如下图)

根据图中所示由KC*150=PWM_H 导出KC

④KI(积分系数)

KI 的选取与T_c和积分时长有关,回过头看源程序PID运算函数中有一个静态数组,记录过去t 时刻到当前的各个温度采样值.每一次采样之后都要更新(淘汰掉最早的采样值,加入当前采样值).

积分时长=T_c*采样个数(即数组大小[SIZE])

积分时长的选择一般使它大于纯滞后时间θ即可,

反过来通过T_c和θ可以确定数组的大小[SIZE],接着套用下式就可以大致确定KI了.

KI*SIZE=10%*满功率值

⑤KD(微分系数)

KD取值大致为纯滞后时间θ(比如θ=200秒,KD先取200,后根据实验在调整)

以上的步骤可能要反复进行多次,各个系数也要作相应的调整.

这里我介绍一个站长编写的并已成功应用的调试软件HUANENG.EXE

专用于串行口数据分析绘图,可同时描绘8条曲线,(VC编写)使用非常简单,只需在上面源程序中pid()函数末尾加上几行数据打印输出的语句

比如:

printf("CH0=%x\nCH1=%x",T_real,PWM);

通过串行口接到计算机,打开该软件即可.界面如下图

统调中记住:增大KP,会加快系统响应,减小静差,但超调量增大,稳定性变差.

减小KI,削弱积分作用,系统超调量变小,但消除静差的时间长.

增大KD,可减小超调量,稳定性好,但系统响应速度变慢.

三菱PID控制实例

三菱PLC和FX2N-4AD-TC实现温度PID闭环控制系统的学习参考。。。。。。

风机鼓入的新风经加热交换器、制冷交换器、进入房间。原理说明:进风不断被受热体加温,欲使进风维持一定的温度,这就需要同时有一加热器以不同加热量给进风加热,这样才能保证进风温度保持恒定。 plc接线图如下,按图接好线。配线时,应使用带屏蔽的补偿导线和模拟输入电缆配合,屏蔽一切可能产生的干扰。fx2n-4ad-tc的特殊功能模块编号为0。

输入和输出点分配表 这里介绍pid控制改变加热器(热盘管)的加热时间从而实现对温度的闭环控制。

在温度控制系统中,电加热器加热,温度用热电耦检测,与热电耦型温度传感器匹配的模拟量输入模块 fx2n-4ad-tc将温度转换为数字输出,cpu将检测的温度与温度设定值比较,通过plc的pid控制改变加热器的加热时间从而实现对温度的闭环控制。pid控制时和自动调谐时电加热器的动作情况如上图所示。其参数设定内容如下表所示。 三菱plc和fx2n-4ad-tc实现温度pid闭环控制系统程序设计:

用选择开关置x10作为自动调谐控制后的pid控制,用选择开关置x11作为无自动调谐的pid控制。 当选择开关置x10时,控制用参数的设定值在pid运算前必须预先通过指令写入,见图程序0步开始,m8002为初始化脉冲,用mov指令将目标值、输入滤波常数、微分增益、输出值上限、输出值下限的设定值分别传送给数据寄存器d500、d512、d515、d532、d533。 程序第26步,使m0得电,使用自动调谐功能是为了得到最佳pid控制,自动调谐不能自动设定的参数必须通过指令设定,在第29步~47步之间用mov指令将自动调谐用的参数(自动调谐采用时间、动作方向自动调谐开始、自动调谐用输出值)分别传送给数据寄存器d510、d511、d502。 程序第53步开始,对fx2n-4ad-tc进行确认、模式设定,且在plc运行中读取来自fx2n-4ad-tc的数据送到plc的d501中,103步开始对pid动作进行初始化。 第116步开始,x10闭合,在自动调谐后实行pid控制,当自动调谐开始时的测定值达到目标值的变化量变化1/3以上,则自动调谐结束,程序第128步~140步,自动调谐

模糊控制详细讲解实例

一、速度控制算法: 首先定义速度偏差-50 km/h ≤e (k )≤50km/h ,-20≤ec (i )= e (k )- e (k-1)≤20,阀值e swith =10km/h 设计思想:油门控制采用增量式PID 控制算法,刹车控制采用模糊控制算法,最后通过选择规则进行选择控制量输入。 选择规则: e (k )<0 ① e (k )>- e swith and throttlr_1≠0 选择油门控制 ② 否则:先将油门控制量置0,再选择刹车控制 0

温度控制的PID算法-及C程序实现

温度控制与PID算法 温度控制与PID算法j较为复杂,下面结合实际浅显易懂的阐述一下PID控制理论,将温度控制及PID算法作一个简单的描述。 1.温度控制的框图 这是一个典型的闭环控制系统,用于控制加热温区的温度(PV)保持在恒定的温度设定值(SV)。系统通过温度采集单元反馈回来的实时温度信号(PV)获取偏差值(EV),偏差值经过PID调节器运算输出,控制发热管的发热功率,以克服偏差,促使偏差趋近于零。例如,当某一时刻炉内过PCB板较多,带走的热量较多时,即导致温区温度下降,这时,通过反馈的调节作用,将使温度迅速回升。其调节过程如下:

温度控制的功率输出采用脉宽调制的方法。固态继电器SSR的输出端为脉宽可调的电压U OUT 。当SSR的触发角触发时,电源电压U AN通过SSR的输出端加到发热管的两端;当SSR的触发角没有触发信号时,SSR关断。因此,发热管两端的平均电压为U d=(t/T)* U AN=K* U AN 其中K=t/T,为一个周期T中,SSR触发导通的比率,称为负载电压系数或是占空比,K 的变化率在0-1之间。一般是周期T固定不便,调节t, 当t在0-T的范围内变化时,发热管的电压即在0-U AN之间变化,这种调节方法称为定频调宽法。下面将要描述的PID 调节器的算式在这里的实质即是运算求出一个实时变化的,能够保证加热温区在外界干扰的情况下仍能保持温度在一个较小的范围内变化的合理的负载电压系数K。 2.温度控制的两个阶段 温度控制系统是一个惯性较大的系统,也就是说,当给温区开始加热之后,并不能立即观察得到温区温度的明显上升;同样的,当关闭加热之后,温区的温度仍然有一定程度的上升。另外,热电偶对温度的检测,与实际的温区温度相比较,也存在一定的滞后效应。这给温度的控制带来了困难。因此,如果在温度检测值(PV)到达设定值时才关断输出,可能因温度的滞后效应而长时间超出设定值,需要较长时间才能回到设定值;如果在温度检测值(PV)未到设定值时即关断输出,则可能因关断较早而导致温度难以达到设定值。为了合理地处理系统响应速度(即加热速度)与系统稳定性之间地矛盾,我们把温度控制分为两个阶段。

模糊控制详细讲解实例之欧阳歌谷创作

一、速度控制算法: 欧阳歌谷(2021.02.01) 首先定义速度偏差-50 km/h≤e(k)≤50km/h,-20≤ec(i)=e(k)-e(k-1)≤20,阀值eswith=10km/h 设计思想:油门控制采用增量式PID控制算法,刹车控制采用模糊控制算法,最后通过选择规则进行选择控制量输入。 选择规则: e(k)<0 ①e(k)>-eswith and throttlr_1≠0 选择油门控制 ②否则:先将油门控制量置0,再选择刹车控制 0

E/EC和U取相同的隶属度函数即: 说明:边界选择钟形隶属度函数,中间选用三角形隶属度函数,图像略 实际EC和E输入值若超出论域范围,则取相应的端点值。 3.模糊控制规则 由隶属度函数可以得到语言值隶属度(通过图像直接可以看出)如下表: 表1:E/EC和U语言值隶属度向量表 设置模糊规则库如下表: 表2:模糊规则表 3.模糊推理 由模糊规则表3可以知道输入E与EC和输出U的模糊关系,这里我取两个例子做模糊推理如下: if (E is NB) and (EC is NM) then (U is PB) 那么他的模糊关系子矩阵为:

模糊控制的应用实例与分析

模糊控制的应用 学院实验学院 专业电子信息工程 姓名 指导教师___________ 日期20门年9月20日 在自动控制中,包括经典理论和现代控制理论中有一个共同的特点,即控制器的综合设计都要建立在被控对象准确的数学模型(如微分方程等)

的基础上,但是在实际工业生产中,很多系统的影响因素很多,十分复杂。建立精确的数学模型特别困难,甚至是不可能的。这种情况下,模糊控制的诞生就显得意头重大,模糊控制不用建立数学模型,根据实际系统的输入输出的结果数据,参考现场操作人员的运行经验,就可对系统进行实时控制。模糊控制实际上是一种非线性控制,从属于智能控制的范畴。现代控制系统中的的控制能方便地解决工业领域常见的非线性、时变、在滞后、强耦合、变结构、结束条件苛刻等复杂问题。可编程控制器以其高可靠性、编程方便、耐恶劣环境、功能强大等特性很好地解决了工业控制领域普遍关心的可靠、安全、灵活、方便、经济等问题,这两者的结合,可在实际工程中广泛应用。 所谓模糊控制,其定义是是以模糊数学作为理论基础,以人的控制经验作为控制的知识模型,以模糊集合、模糊语言变量以及模糊逻辑推理作为控制算法的一种控制。模糊控制具有以下突出特点: ⑴模糊控制是一种基于规则的控制,它直接采用语言型控制规则,出发点 是现场操作人员的控制经验或相关专家的知识,在设计中不需要建立被控对象的精确的数学模型,因而使得控制机理和策略易于接受与理解,设计简单,便于应用 ⑵由工业过程的定性认识出发,比较容易建立语言控制规则,因而模糊控 制对那些数学模型难以获取,动态特性不易掌握或变化非常显著的对象非常适用。

⑶基于模型的控制算法及系统设计方法,由于出发点和性能指标的不同, 容易导致较大差异;但一个系统语言控制规则却具有相对的独立性,利用这些控制规律间的模糊连接,容易找到折中的选择,使控制效果优于常规控制器。 ⑷模糊控制是基于启发性的知识及语言决策规则设计的,这有利于模拟人 工控制的过程和方法,增强控制系统的适应能力,使之具有一定的智能水平。 ⑸模糊控制系统的鲁棒性強,干扰和参数变化对控制效果的影响被大大减 弱,尤其适合于非线性、时变及纯滞后系统的控制。 由于有着诸多优点,模糊理论在控制领域得到了广泛应用。下面我们就以下示例介绍模糊控制在实际中的应用: 电机调速控制系统见图1,模糊控制器的输入变量为实际转速与转速给定值之间的差值e及其变化率仝,输出变量为电机的电压变化量u。图2为电机调试输出结果,其横坐标为时间轴,纵坐标为转速。当设定转速为2 OOOr / s时,电机能很快稳定运行于2 OOOr / s;当设定转速下降到1 OOOr / s时,转速又很快下降到1 OOOr / s稳定运 行。

51单片机PID算法程序

51单片机PID算法程序(二)位置式PID控制算法 由51单片机组成的数字控制系统控制中,PID控制器是通过PID控制算法实现的。51单片机通过AD对信号进行采集,变成数字信号,再在单片机中通过算法实现PID运算,再通过DA把控制量反馈回控制源。从而实现对系统的伺服控制。 位置式PID控制算法 位置式PID控制算法的简化示意图 上图的传递函数为: (2-1) 在时域的传递函数表达式 (2-2)

对上式中的微分和积分进行近似 (2-3)式中n是离散点的个数。 于是传递函数可以简化为: (2-4)其中 u(n)——第k个采样时刻的控制; K P ——比例放大系数; K i ——积分放大系数; K d ——微分放大系数; T ——采样周期。 如果采样周期足够小,则(2-4)的近似计算可以获得足够精确的结果,离散控制过程与连续过程十分接近。 (2-4)表示的控制算法直接按(2-1)所给出的PID控制规律定义进行计算的,所以它给出了全部控制量的大小,因此被称为全量式或位置式PID控制算法。 缺点: 1)由于全量输出,所以每次输出均与过去状态有关,计算时要对e(k)(k=0,1,…n)进行累加,工作量大。 2)因为计算机输出的u(n)对应的是执行机构的实际位置,如果计算机出现故障,输出u(n)将大幅度变化,会引起执行机构的大幅度变化,有可能因此造成严重的生产事故,这在实际生产中是不允许的。 位置式PID控制算法C51程序 具体的PID参数必须由具体对象通过实验确定。由于单片机的处理速度和ram资源的限制,一般不采用浮点数运算,而将所有参数全部用整数,运算 到最后再除以一个2的N次方数据(相当于移位),作类似定点数运算,可大大提高运算速度,根据控制精度的不同要求,当精度要求很高时,注意保留移位

温度的PID控制及程序示例

温度的PID 控制 一.温度检测部分首先要OK. 二、PID 调节作用 PID 控制时域的公式 ))()(1)(()(?++ =dt t de Td t e Ti t e Kp t y 分解开来: (1) 比例调节器 y(t) = Kp * e(t) e(k) 为当前的温差(设定值与检测值的插值) y(k) 为当前输出的控制信号(需要转化为PWM 形式) # 输出与输入偏差成正比。只要偏差出现,就能及时地产生与之成比例的调节 作用,使被控量朝着减小偏差的方向变化,具有调节及时的特点。但是, Kp 过大会导致动态品质变坏,甚至使系统不稳定。比例调节器的特性曲线. (2) 积分调节器 y(t) = Ki * ∫(e(t))dt Ki = Kp/Ti Ti 为积分时间 #TI 是积分时间常数,它表示积分速度的大小,Ti 越大,积分速度越慢,积分作用越弱。只要偏差不为零就会产生对应的控制量并依此影响被控量。增大Ti 会减小积分作用,即减慢消除静差的过程,减小超调,提高稳定性。 (3) 微分调节器 y(t) = Kd*d(e(t))/dt Kd = Kp*Td Td 为微分时间 #微分分量对偏差的任何变化都会产生控制作用,以调整系统输出,阻止偏差变化。偏差变化越快,则产生的阻止作用越大。从分析看出,微分作用的特点是:加入微分调节将有助于减小超调量,克服震荡,使系统趋于稳定。他加快了系统的动作速度,减小调整的时间,从而改善了系统的动态性能。 三.PID 算法: 由时域的公式离散化后可得如下公式:

y(k) = y(k-1)+(Kp+Ki+Kd)*e(k)-(Kp +2*Kd)*e(k-1) + Kd*e(k-2) y(k) 为当前输出的控制信号(需要转化为PWM形式) y(k-1)为前一次输出的控制信号 e(k) 为当前的温差(设定值与检测值的插值) e(k-1) 为一次前的温差 e(k-2) 为二次前的温差 Kp 为比例系数 Ki = Kp*T/Ti T为采样周期 Kd = Kp*Td/T 四.PID参数整定(确定Kp,Ts,Ti,Td): 温度控制适合衰减曲线法,需要根据多次采样的数据画出响应曲线。 所以需要通过串口将采样时间t, 输出y(t)记录下来,方便分析。 1)、不加入算法,系统全速加热,从常温加热到较高的温度的时间为Tk, 则采样时间一般设为 T = Tk/10。 2)、置调节器积分时间TI=∞,微分时间TD=0,即只加比例算法: y(k) = y(k-1)+Kp*e(k) 比例带δ置于较大的值。将系统投入运行。(δ = 1/Kp) 3)、待系统工作稳定后,对设定值作阶跃扰动,然后观察系统的响应。若响应振荡衰减太快,就减小比例带;反之,则增大比例带。如此反复,直到出现如图所示的衰减比为4:1的振荡过程时,记录此时的δ值(设为δS),以及TS 的值(如图中所示)。当采用衰减比为10:1振荡过程时,应用上升时间Tr替代 振荡周期TS计算。 系统衰减振荡曲线 图中,TS为衰减振荡周期,Tr为响应上升时间。 据表中所给的经验公式计算δ、TI及TD的参数。

51单片机PID的算法实现程序

51单片机PID的算法实现程序 用整型变量来实现PID算法,由于是用整型数来做的,所以也不是很精确,但是对于很多的使用场合,这个精度也够了,关于系数和采样电压全部是放大10倍处理的.所以精度不是很高. 但是也不是那么低,大部分的场合都够了. 实在觉得精度不够, 可以再放大10倍或者100倍处理,但是要注意不超出整个数据类型的范围就可以了.本程序包括PID计算和输出两部分.当偏差>10度全速加热,偏差在10度以内为PID计算输出. 具体的参考代码参见下面:*/ //================================================================ // pid.H // Operation about PID algorithm procedure // C51编译器Keil 7.08 //================================================================ // 作者:zhoufeng // Date :2007-08-06 // All rights reserved. //================================================================ #include #include typedef unsigned char uint8; typedef unsigned int uint16; typedef unsigned long int uint32; /**********函数声明************/ void PIDOutput (); void PIDOperation (); /*****************************/ typedef struct PIDValue { uint32 Ek_Uint32[3]; //差值保存,给定和反馈的差值 uint8 EkFlag_Uint8[3]; //符号,1则对应的为负数,0为对应的为正数uint8 KP_Uint8; uint8 KI_Uint8; uint8 KD_Uint8; uint16 Uk_Uint16; //上一时刻的控制电压 uint16 RK_Uint16; //设定值 uint16 CK_Uint16; //实际值 }PIDValueStr; PIDValueStr PID; uint8 out ; // 加热输出 uint8 count; // 输出时间单位计数器 /********************************* PID = Uk + KP*[E(k)-E(k-1)]+KI*E(k)+KD*[E(k)-2E(k-1)+E(k-2)];(增量型PID算式) 函数入口: RK(设定值),CK(实际值),KP,KI,KD 函数出口: U(K) //PID运算函数

温度PID控制实验

温度PID 控制实验 一、实验目的 1.加深对PID 控制理论的理解; 2.认识Labview 虚拟仪器在测控电路的应用; 3.掌握时间比例P、积分I、微分D 对测控过程连续测控的影响以及提高测控系统的精度; 4.通过实验,改变P、I、D 参数,观察对整个温度测控系统的影响; 5.认识固态继电器和温度变送器,了解其工作原理。 二、预习要点 1.PID 控制理论与传递函数。请学生在0-100 的范围里,自己选择较好的KP,KI,KD 值,用该控制参数进行后续实验; 2.了解A/D、D/A 转换原理; 3.Labview 虚拟仪器图形软件(本实验指导书附录中对使用环境详细介绍)。 三、实验原理 温度是通过固态继电器的导通关断来实现加热的,控制周期即是一个加热和 冷却周期,PID 调节的实现也是通过这个周期实现的,在远离温度预设值的时固 态继电器在温度控制周期中持续加热(假设导通时间是T),在接近温度预设值 时通过PID 得到的值来控制这一周期内固态继电器的开关时间(假设导通时间是 1/2T)维持温度(假设导通时间是1/4T)。如图1 所示: 图1 加热周期控制示意图 8 四、实验项目 1.用PID 控制水箱温度; 2.用控制效果对比完成数据对比操作,选出最佳值。 五、实验仪器 ZCK-II 型智能化测控系统。 六、实验步骤及操作说明 1.打开仪器面板上的总电源开关,绿色指示灯亮起表示系统正常;

2.打开仪器面板上的液位电源开关,绿色指示灯亮起表示系统正常; 3,确保贮水箱内有足够的水,参照图2 中阀门位置设置阀门开关,将阀门1、3、5、6 打开,阀门2、4 关闭; 图2 水箱及管道系统图 4.参看变频器操作说明书将其设置在手动操作挡; 5.单击控制器RUN 按钮,向加热水箱注水,直到水位接近加热水箱顶部,完 全 淹没加热器后单击STOP 按钮结束注水; 6.关闭仪器面板上的液位电源开关,红色指示灯亮起表示系统关闭; 7.打开仪器面板上的加热电源开关,绿色指示灯亮起表示系统正常; 8.打开计算机,启动ZCK-II 型智能化测控系统主程序; 9.用鼠标单击温度控制动画图形进入温度控制系统主界面,小组实验无须在个 人信息输入框填写身份,直接确定即可; 10.在温度系统控制主界面中,单击采集卡测试图标,进入数据采集卡测试程序。 请在该选项中确定选择设备号为端口1,因为我们接入数据采集卡的端口是1 号 9 端口,其他数据端口留做其他方面使用的,所以切记不能选错,否则程序会报 错 并强制关闭。选择采集通道时请选择0 号通道即温度传感器占用的通道。控制上、 下限选项是为设置报警电路所预设的,在本实验中暂未起用该功能,感兴趣的 同 学可以试着完善它,本实验报警数值是+1V 以下和+5V 以上,这里只做了解即可。 采样点数(单位:个)、采样速率(单位:个/秒)和控制周期(单位:毫秒) 请 参照帮助显示区进行操作,一切设置确认无误后即可单击启动程序图标,观察 温 度和电压的变化,也可以单击冷却中左边的开关按钮进入加热程序,观察温度 上 升曲线及电流表和电压表变化,确认传感器正常工作后点击程序结束,等待返 回 主界面图标出现即可返回温度控制主界面进入下一步实验。 11.在温度系统控制主界面中,单击传感器标定图标,进入传感器标定程序。 本 程序界面和数据采集卡测试程序界面基本相同,操作请参照步骤10 进行,一切 设置确认无误后即可单击启动程序图标,观察温度和电压的变化,同时用温度

选取一个模糊控制的实例讲解

选取一个模糊控制的实例讲解,有文章,有仿真,有详细的推导过程。 一.实验题目:基于模糊控制系统的单级倒立摆 二.实验目的与要求: 倒立摆是联结在小车上的杆,通过小车的运动能保持竖立不倒的一种装置,它是一个典型的非线性、快速、多变量和自然不稳定系统,但是我们可以通过对它施加一定的控制使其稳定。对它的研究在理论上和方法上都有其重要意义。倒立摆的研究不仅要追求增加摆的级数,而且更重要的是如何发展现有的控制方法。同时, 它和火箭的姿态控制以及步行机器 人的稳定控制有很多相似之处,由此研究产生的理论和方法对一般工业过程也有广泛用途。 本文研究了倒立摆的控制机理,用Lagrange 方法推导了一级倒立摆的数学模型,这为研究多级和其它类型的倒立摆甚至更高层次的控制策略奠定了一个良好的基础。对系统进行了稳定性、可控性分析,得出倒立摆系统是一个开环不稳定但可控的系统的结论。 本文主要研究用极点配置、最优控制和模糊控制方法对倒立摆进行稳定控制。最优控制方法是基于状态反馈,但能实现输出指标最优的一种控制方法,方法和参数调节较简单,有着广泛的应用。模糊控制有不依赖于数学模型、适用于非线性系统等优点,所以本文尝试了用模糊控制对倒立摆进行控制,以将先进的控制方法用于实际中。 同时,对倒立摆系统的研究也将遵循从建模到仿真到实控,软硬件结合的系统的控制流程。在这过程中,借助数学工具Matlab7及仿真软件Simulink,作了大量的仿真研究工作,仿真结果表明系统能跟踪输入,并具有较好的抗干扰性。最后对实验室的倒立摆装置进行了软、硬件的调试,获得了较好的控制效果。 三.实验步骤: 1.一级倒立摆系统模型的建立 在忽略了空气阻力、各种摩擦之后(这也是为了保证Lagrange 方程的建立),可 将一级倒立摆系统抽象为由小车和匀质杆组成的系统,本系统设定如下: 小车质量M;摆杆质量m,长为l;小车在x 轴上移动;摆与竖直方向夹角为θ,规定正方向如图所示;加在小车x 轴上的力为F;

(完整版)基于单片机的PID温度控制毕业设计

以下文档格式全部为word格式,下载后您可以任意修改编辑。 前言 温度是表征物体冷热程度的物理量。在很多生产过程中,特别是在冶金、化工、建材、食品、机械、石油等工业中,温度的测量和控制都直接和安全生产、提高生产效率、保证产品质量、节约能源等重大技术经济指标相联系。因此,温度的测量与控制在国民经济各个领域中均受到了相当程度的重视。 单片机系统的开发应用给现代工业测控领域带来了一次新的技术革命,自动化、智能化均离不开单片机的应用。将单片机控制方法运用到温度控制系统中,可以克服温度控制系统中存在的严重滞后现象,同时在提高采样频率的基础上可以很大程度的提高控制效果和控制精度。现代自动控制越来越朝着智能化发展,在很多自动控制系统中都用到了工控机,小型机、甚至是巨型机处理机等,当然这些处理机有一个很大的特点,那就是很高的运行速度,很大的内存,大量的数据存储器。但随之而来的是巨额的成本。在很多的小型系统中,处理机的成本占了系统成本的比例高达20%,而对于这些小型的系统来说,配置一个如此高速的处理机没有任何必要,因为这些小系统追求经济效益,而不是最在乎系统的快速性,所以用成本低廉的单片机控制小型的,而又不是很复杂,不需要大量复杂运算的系统中是非常适合的。 随着电子技术以及应用需求的发展,单片机技术得到了迅速的发展,在高集成度,高速度,低功耗以及高性能方面取得了很大的进展。现在完

全可以运用单片机和电子温度传感器对某处进行温度检测,而且可以很容易地做到多点的温度检测,如果对此原理图稍加改进,还可以进行不同地点的实时温度检测和控制。

1绪论 1.1研究的目的和意义 温度是工业生产中主要被控参数之一,温度控制自然是生产的重要控制过程。工业生产中温度很难控制,对于要求严格的的场合,温度过高或过低将严重影响工业生产的产质量及生产效率,降低生产效益。这就需要设计一个良好温度控制器,随时向用户显示温度,而且能够较好控制。单片机具有和普通计算机类似的强大数据处理能力,结合PID,程序控制可大大提高控制效力,提高生产效益[9]。 例如钢铁生产过程中,按照工艺条件的规定保持一定的温度才能保证产品质量和设备的安全。对电气设备进行温度的监控,例如高压开关、变压器的出线套管等,判断可能存在的热缺陷,进而能及时发现、处理、预防重大事故的发生。因此研究温度控制仪具有重要的意义[10]。 在单片机温度测量系统中的关键是测量温度、控制温度和保持温度,温度测量是工业对象中主要的被控参数之一。因此,单片机温度测量则是对温度进行有效的测量,并且能够在工业生产中得到了广泛的应用,尤其在电力工程、化工生产、机械制造、冶金工业等重要工业领域中,担负着重要的测量任务。在日常生活中,也可广泛实用于地热、空调器、电加热器等各种家庭室温测量及工业设备温度测量场合[16]。 目前市场上热水器的控制系统大多存在功能单一、操作复杂、控制不方便等问题,很多控制器只具有温度和水位显示功能,不具有温度控制功能.即使热水器具有辅助加热功能。也可能由于加热时间不能控制而产生过烧,从而浪费电能。本文设计的热水器控制系统以51单片机为检测控制中心单元,具有温度设定与控制功能。该控制器和以往显示仪相比具有性

51单片机PID算法程序(二)位置式PID控制算法

由51单片机组成的数字控制系统控制中,PID控制器是通过PID控制算法实现的。51单片机通过AD对信号进行采集,变成数字信号,再在单片机中通过算法实现PID运算,再通过DA把控制量反馈回控制源。从而实现对系统的伺服控制。 位置式PID控制算法 位置式PID控制算法的简化示意图 上图的传递函数为: (2-1) 在时域的传递函数表达式 (2-2)对上式中的微分和积分进行近似 (2-3)式中n是离散点的个数。

于是传递函数可以简化为: (2-4)其中 u(n)——第k个采样时刻的控制; ——比例放大系数; K P ——积分放大系数; K i ——微分放大系数; K d T ——采样周期。 如果采样周期足够小,则(2-4)的近似计算可以获得足够精确的结果,离散控制过程与连续过程十分接近。 (2-4)表示的控制算法直接按(2-1)所给出的PID控制规律定义进行计算的,所以它给出了全部控制量的大小,因此被称为全量式或位置式PID控制算法。缺点: 1)由于全量输出,所以每次输出均与过去状态有关,计算时要对e(k)(k=0,1,…n)进行累加,工作量大。 2)因为计算机输出的u(n)对应的是执行机构的实际位置,如果计算机出现故障,输出u(n)将大幅度变化,会引起执行机构的大幅度变 化,有可能因此造成严重的生产事故,这在实际生产中是不允许的。 位置式PID控制算法C51程序 具体的PID参数必须由具体对象通过实验确定。由于单片机的处理速度和ram资源的限制,一般不采用浮点数运算,而将所有参数全部用整数,运算 到最后再除以一个2的N次方数据(相当于移位),作类似定点数运算,可大大提高运算速度,根据控制精度的不同要求,当精度要求很高时,注意保留移位引起的“余数”,做好余数补偿。这个程序只是一般常用pid算法的基本架构,没有包含输入输出处理部分。 ===================================================================== ================================*/ #include #include //C语言中memset函数头文件

PID温度控制的PLC程序设计

PID温度控制的PLC程序设计 温度控制是许多机器的重要的构成部分。它的功能是将温度控制在所需要的温度范围内,然后进行工件的加工与处理。PID控制系统是得到广泛应用的控制方法之一。在本文中,将详细讲叙本套系统。 l 系统组成 本套系统采用Omron的PLC与其温控单元以及Pro-face的触摸屏所组成。系统包括CQM1H-51、扩展单元TC-101、GP577R以及探温器、加热/制冷单元。 l 触摸屏画面部分(见图1-a) 1-a 如图所见,数据监控栏内所显示的002代表现在的温度,而102表示输出的温度。如按下开始设置就可设置参数。需要设置的参数有六个,分别是比例带、积分时间、微分时间、滞后值、控制周期、偏移量。它们在PLC的地址与一些开关的地址如下所列。 比例带: DM51 积分时间: DM52 微分时间: DM53 滞后值: DM54 控制周期: DM55 偏移量: DM56 数据刷新: 22905 l PLC程序部分 002:PID的输入字 102:PID的输出字 [NETWORK] Name="Action Check" //常规检查 [STA TEMENTLIST] LD 253.13 //常ON OUT TR0 CMP 002 #FFFF //确定温控单元是否完成初始化 AND NOT 255.06 //等于 OUT 041.15 //初始化完成 LD TR0 AND 041.15 OUT TR1 AND NOT 040.10 //不在参数设置状态 MOV DM0050 102 //将设置温度DM50传送给PID输出字 LD TR1 MOV 002 DM0057 //将002传送到DM57 [NETWORK] Name="Setting Start"//设置开始 [STA TEMENTLIST] LD 253.13 OUT TR0 AND 229.05 //触摸屏上的开始设置开关

基于单片机的pid算法温度控制技术代码

//PID算法温控C语言2008-08-17 18:58 #include #include #include #include struct PID { unsigned int SetPoint; // 设定目标Desired Value unsigned int Proportion; // 比例常数Proportional Const unsigned int Integral; // 积分常数Integral Const unsigned int Derivative; // 微分常数Derivative Const unsigned int LastError; // Error[-1] unsigned int PrevError; // Error[-2] unsigned int SumError; // Sums of Errors }; struct PID spid; // PID Control Structure unsigned int rout; // PID Response (Output) unsigned int rin; // PID Feedback (Input) sbit data1=P1^0; sbit clk=P1^1; sbit plus=P2^0; sbit subs=P2^1; sbit stop=P2^2; sbit output=P3^4; sbit DQ=P3^3; unsigned char flag,flag_1=0; unsigned char high_time,low_time,count=0;//占空比调节参数unsigned char set_temper=35; unsigned char temper; unsigned char i; unsigned char j=0; unsigned int s; /*********************************************************** 延时子程序,延时时间以12M晶振为准,延时时间为30us×time ***********************************************************/ void delay(unsigned char time) { unsigned char m,n; for(n=0;n

PID温度控制的PLC程序设计(梯形图语言)教学文案

P I D温度控制的P L C 程序设计(梯形图语言)

PID温度控制的PLC程序设计(梯形图语言) PID温度控制的PLC程序设计 温度控制是许多机器的重要的构成部分。它的功能是将温度控制在所需要的温度范围内,然后进行工件的加工与处理。PID控制系统是得到广泛应用的控制方法之一。在本文中,将详细讲叙本套系统。 l 系统组成 本套系统采用Omron的PLC与其温控单元以及Pro-face的触摸屏所组成。系统包括CQM1H-51、扩展单元TC-101、GP577R以及探温器、加热/制冷单元。 l 触摸屏画面部分(见图1-a) 1-a 如图所见,数据监控栏内所显示的002代表现在的温度,而102表示输出的温度。如按下开始设置就可设置参数。需要设置的参数有六个,分别是比例带、积分时间、微分时间、滞后值、控制周期、偏移量。它们在PLC的地址与一些开关的地址如下所列。 比例带 : DM51 积分时间 : DM52 微分时间 : DM53 滞后值 : DM54 控制周期 : DM55 偏移量 : DM56 数据刷新 : 22905

l PLC程序部分 002:PID的输入字 102:PID的输出字 [NETWORK] Name="Action Check" //常规检查 [STATEMENTLIST] LD 253.13 //常ON OUT TR0 CMP 002 #FFFF //确定温控单元是否完成初始化 字串1 AND NOT 255.06 //等于 OUT 041.15 //初始化完成 LD TR0 AND 041.15 OUT TR1 AND NOT 040.10 //不在参数设置状态 MOV DM0050 102 //将设置温度DM50传送给PID输出字 LD TR1 MOV 002 DM0057 //将002传送到DM57 [NETWORK] Name="Setting Start"//设置开始 [STATEMENTLIST] LD 253.13 OUT TR0 AND 229.05 //触摸屏上的开始设置开关 DIFU 080.05 //设置微分

51单片机PID算法程序(三)增量式PID控制算法要点

51单片机PID算法程序(一)PID算法 (原创文章,转载请注明出处https://www.doczj.com/doc/e812354943.html,/tengjingshu) 比例,积分,微分的线性组合,构成控制量u(t),称为:比例(Proportional)、积分(Integrating)、微分(Differentiation)控制,简称PID控制 图1 控制器公式 在实际应用中,可以根据受控对象的特性和控制的性能要求,灵活地采用不同的控制组合,构成 比例(P)控制器 比例+积分(PI)控制器

比例+积分+微分(PID)控制器 式中 或 式中 控制系统中的应用 在单回路控制系统中,由于扰动作用使被控参数偏离给定值,从而产生偏差。自动控制系统的调节单元将来自变送器的测量值与给定值相比较后产生的偏差进行比例、积分、微分(PID)运算,并输出统一标准信号,去控制执行机构的动作,以实现对温度、压力、流量、也为及其他工艺参数的自动控制。 比例作用P只与偏差成正比;积分作用I是偏差对时间的积累;微分作用D 是偏差的变化率; 比例(P)控制 比例控制能迅速反应误差,从而减少稳态误差。除了系统控制输入为0和系统过程值等于期望值这两种情况,比例控制都能给出稳态误差。当期望值有一个变化时,系统过程值将产生一个稳态误差。但是,比例控制不能消除稳态误差。比例放大系数的加大,会引起系统的不稳定。

图2比例(P)控制阶跃响应 积分(I)控制 在积分控制中,控制器的输出与输入误差信号的积分成正比关系。 为了减小稳态误差,在控制器中加入积分项,积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即使误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减少,直到等于零。 积分(I)和比例(P)通常一起使用,称为比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。如果单独用积分(I)的话,由于积分输出随时间积累而逐渐增大,故调节动作缓慢,这样会造成调节不及时,使系统稳定裕度下降。

基于单片机的pid控制器设计论文毕设论文

中国矿业大学徐海学院本科生毕业论文 学院:徐海学院 专业:自动化 论文题目:基于单片机的PID控制器设计

中国矿业大学徐海学院毕业论文任务书 任务下达日期:2011年12月14日 毕业论文日期: 2011年12月20日至2012年6月5日 毕业论文题目:基于单片机的PID控制器设计 毕业论文专题题目: 毕业论文主要内容和要求: 1、基于单片机的PID控制器整体方案设计 2、硬件电路设计,包括电源、显示、按键、A/D、D/A转换等外围电 路设计 3、软件设计,包括参数设置程序、显示程序、按键程序、PID算法 程序等 4、应用PROTEUS、Keil C51软件进行设计及仿真 指导教师签字:

郑重声明 本人所呈交的毕业论文,是在导师的指导下,独立进行研究所取得的成果。所有数据、图片资料真实可靠。尽我所知,除文中已经注明引用的内容外,本毕业论文的研究成果不包含他人享有著作权的内容。对本论文所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明确的方式标明。本论文属于原创。本毕业论文的知识产权归属于培养单位。 本人签名:日期:

指导教师评语(①基础理论及基本技能的掌握;②独立解决实际问题的能力;③研究内容的理论依据和技术方法;④取得的主要成果及创新点; ⑤工作态度及工作量;⑥总体评价及建议成绩;⑦存在问题;⑧是否同意答辩等): 成绩:指导教师签字: 年月日

评阅教师评语(①选题的意义;②基础理论及基本技能的掌握;③综合运用所学知识解决实际问题的能力;④工作量的大小;⑤取得的主要成果及创新点;⑥写作的规范程度;⑦总体评价及建议成绩;⑧存在问题;⑨是否同意答辩等): 成绩:评阅教师签字: 年月日

温度控制的PID算法的C语言程序

我的题目是:基于PID算法的温度控制系统 89C51单片机,通过键盘输入预设值,与DS18B20测得的实际值做比较,然后驱动制冷或加热电路。用keil C语言来实现PID的控制。 最佳答案 7f0f2f1c2f

89C 89C89C1 L50℃3℃2006-02-17 2009-04-23 2009-04-23 2009-04-24 2009-04-24

2009-10-11 超低温漂移高精度运算放大器0P07将温度一电压信号进行放大,便于A/D进行转换,以提高温度采集电路的可靠性。模拟电路硬件部分见图2。 图2 ?温度电压转换电路 电控制执行电路的设计 ??? 由输出来控制电炉,电炉可以近似建立为具有滞后性质的一阶惯性环节数学模型。其传递函数形式为: ??? 可控硅可以认为是线形环节实现对水温的控制。单片机输出与电炉功率分别属于弱电与强电部分,需要进行隔离处理,这里采用光耦元件TLP521 在控制部分进行光电隔离,此外采用变压器隔离实现弱强电的电源隔离。 ??? 单片机PWM 输出电平为0 时,光耦元件导通,从而使三极管形成有效偏置而导通,通过整流桥的电压经过集电极电阻以及射集反向偏压,有7V 左右的电压加在双向可控硅控制端,从而使可控硅导通,交流通路形成,电阻炉工作;反之单片机输出电平为0 时,光耦元件不能导通,三极管不能形成有效偏置而截止,可控硅控制端电压几乎为零,可控硅截止从而截断交流通路,电炉停止工作。此外,还有越限报警,当温度低于下限时发光二极管亮;高上限时蜂鸣器叫。控制执行部分的硬件电路如下: 图3? 控制执行部分电路 3 键盘及显示的设计 ??? 键盘采用软件查询和外部中断相结合的方法来,低电平有效。图3 中按键AN1,AN2,AN3,AN4, AN5的功能定义如表1所示。 ??? 按键AN3与相连,采用外部中断方式,并且优先级定为最高;按键AN5和AN4分别与和相连,采用软件查询的方式;AN1则为硬件复位键,与R、C构成复位电路。

基于单片机的pid控制程序

Jesse Rei 的51 温度PID经典算法 #include #include #include #include struct PID { unsigned int SetPoint; // 设定目标Desired V alue unsigned int Proportion; // 比例常数Proportional Const unsigned int Integral; // 积分常数Integral Const unsigned int Derivative; // 微分常数Derivative Const unsigned int LastError; // Error[-1] unsigned int PrevError; // Error[-2] unsigned int SumError; // Sums of Errors }; struct PID spid; // PID Control Structure unsigned int rout; // PID Response (Output) unsigned int rin; // PID Feedback (Input) sbit data1=P1^0; sbit clk=P1^1; sbit plus=P2^0; sbit subs=P2^1; sbit stop=P2^2; sbit output=P3^4; sbit DQ=P3^3; unsigned char flag,flag_1=0; unsigned char high_time,low_time,count=0;//占空比调节参数 unsigned char set_temper=35; unsigned char temper; unsigned char i; unsigned char j=0; unsigned int s; void delay(unsigned char time) { unsigned char m,n; for(n=0;n>i; temp=temp&1; write_bit(temp); } delay(7); // TR0=1; EA=1; } unsigned char read_bit() { unsigned char i,value_bit; EA=0; DQ=0; _nop_(); _nop_(); DQ=1; for(i=0;i<2;i++){} value_bit=DQ; EA=1;

相关主题
文本预览
相关文档 最新文档