基于PLC的PID温度控制系统设计附程序代码

合集下载

基于PLC的温度PID-模糊控制系统设计与仿真

基于PLC的温度PID-模糊控制系统设计与仿真
e e; 门开 度作 为 输 出 , 和 c阀 用 表 示 。 12 1 模 糊 论 域 ..
实现对温度 的控制 , 并且使其算法在 P C中通过软件 L
来实现 。
1 控 制器 的设计
1 1 总 体设 计 方 案 . .
Байду номын сангаас
对于温度控制系统 , 由于受控系统对控制量 的作 用反应较慢 , 工程上通常使用一阶惯性时滞模 型作 为 其系统模型 。由于实际生产过程给定值假设为 , 在
2l 0 1年 6月
农 机 化 研 究
第 6期
基 于 P C 的 温 度 P 一模 糊 控 制 系 统 设 计 与 仿 真 k I D
陈水生 ,孟庆髫
( . 江康 恩 贝制 药 股 份 有 限公 司 ,浙 江 兰溪 3 1 0 1浙 2 9;2石 河 子 大学 机 械 电气 工程 学 院 ,新 疆 石 河 子 1 摘 820 3 0 0)
收稿 日期 :2 1 0 0—0 8—1 7
通常在语 言变量 的论 域上将 其划 分为有 限 的 几档 , 可将 E,C和 划分为负大 、 E 负中、 负小 、 、 零 正 小 、 中和正 大 , 用 简化 表示 为 { B N N , E 正 使 N , M, S Z ,
P ,M,B} 因此 , SP P 。 一般 情 况 下 输 入 变 量 取 7个 量 化
等级即可满足控制精度 。若选择较多 的档 , 即对每一 个变量用 较 多 的状态 来描 述 , 定规 则 时就 比较 灵 制 活 , 则也 比较 细致 , 相 应 的规则便 多 了 , 规 但 变复 杂 了, 编制程序就 比较 困难 , 占用的 内存储器容量较 多;
基金项 目 :国家 自然科 学基金项 目( 0 6 0 2 664 0 )

基于PLC控制的加热炉温度控制系统设计

基于PLC控制的加热炉温度控制系统设计

课程设计姓名张镇炀学号********班级电气优创0801摘要温度控制系统广泛应用于工业控制领域,如钢铁厂、化工厂、火电厂等锅炉的温度控制系统,电焊机的温度控制系统等。

加热炉温度控制在许多领域中得到广泛的应用。

这方面的应用大多是基于单片机进行PID 控制, 然而单片机控制的DDC 系统软硬件设计较为复杂, 特别是涉及到逻辑控制方面更不是其长处, PLC 在这方面却是公认的最佳选择。

加热炉温度是一个大惯性系统,一般采用PID调节进行控制。

随着PLC功能的扩充在许多PLC控制器中都扩充了PID 控制功能, 因此在逻辑控制与PID控制混合的应用场所中采用PLC控制是较为合理的。

本设计是利用西门子S7-300PLC控制加热炉温度的控制系统。

首先介绍了温度控制系统的工作原理和系统的组成,然后介绍了西门子S7-300PLC和系统硬件及软件的具体设计过程。

关键词:西门子S7-300PLC,PID,温度传感器,固态继电器目录摘要 (I)Abstract ........................................... 错误!未定义书签。

第一章引言 ....................................... 错误!未定义书签。

1.1 系统设计背景............................... 错误!未定义书签。

1.2 系统工作原理 (IV)1.3 系统设计目标及技术要求 (IV)1.4 技术综述 (IV)第二章系统设计 (V)2.1 控制原理与数学模型 (V)2.1.1 PID控制原理 (V)2.1.2 PID指令的使用注意事项 (VIII)2.2 采样信号和控制量分析 (IX)2.3 系统组成 (IX)第三章硬件设计 ................................................... X I3.1 PLC的基本概念 (XI)3.1.1 模块式PLC的基本结构 (XII)3.1.2 PLC的特点 (XIII)3.2 PLC的工作原理 (XIV)3.2.1 PLC的循环处理过程 (XIV)3.2.2 用户程序的执行过程 (XVI)3.3 S7-300 简介 (XVI)3.3.1 数字量输入模块 (XVII)3.3.2 数字量输出模块 (XVII)3.3.3 数字量输入/输出模块 (XVII)3.3.4 模拟量输入模块 (XVII)3.3.5 模拟量输出模块 (XVIII)3.4 温度传感器 (XVIII)3.4.1 热电偶 (16)3.4.2 热电阻 (17)3.5 固态继电器 (XX)3.5.1 概述 (18)3.5.2 固态继电器的组成 (18)3.5.3 固态继电器的优缺点 (19)第四章软件设计 ................................................. X XII4.1 STEP7编程软件简介 (XXII)4.1.1 STEP7概述 (XXII)4.1.2 STEP7的硬件接口 .......................... .. (XXII)4.1.3 STEP7的编程功能 (XXII)4.1.4 STEP7的硬件组态与诊断功能 (XXIII)4.2 STEP7项目的创建 (XXIV)4.2.1 使用向导创建项目 (XXIV)4.2.2 直接创建项目 (XXIV)4.2.3 硬件组态与参数设置 (XXIV)4.3 用变量表调试程序 (XXVI)4.3.1 系统调试的基本步骤 (XXVI)4.3.2 变量表的基本功能 (XXVII)4.3.3 变量表的生成 (XXVIII)4.3.4 变量表的使用 (XXVIII)4.4 S7-300的编程语言 (XXIX)4.4.1 PLC编程语言的国际标准 (XXIX)4.4.2 STEP7中的编程技术 (XXX)结束语 ......................................................... X XXIV 致谢 (33)参考文献 (34)附录 (35)1.1系统设计背景近年来,加热炉温度控制系统是比较常见和典型的过程控制系统,温度是工业生产过程中重要的被控参数之一,冶金﹑机械﹑食品﹑化工等各类工业生产过程中广泛使用的各种加热炉﹑热处理炉﹑反应炉,对工件的处理均需要对温度进行控制。

基于PLC控制的加热炉温度控制系统设计

基于PLC控制的加热炉温度控制系统设计

基于PLC控制的加热炉温度控制系统设计概述加热炉是工业生产中常见的设备之一,其主要作用是提供高温环境用于加热物体。

为了确保加热炉的稳定性和安全性,需要设计一个可靠的温度控制系统。

本文将介绍一个基于PLC(可编程逻辑控制器)控制的加热炉温度控制系统设计方案。

系统设计原理在加热炉温度控制系统中,PLC作为核心控制器,通过监测温度传感器的输出信号,根据预设的温度设定值和控制策略,控制加热炉的加热功率,从而实现对加热炉温度的稳定控制。

以下是系统设计的主要步骤:1.硬件设备选择:选择适合的温度传感器和控制元件,如热电偶、温度控制继电器等。

2.PLC选型:根据实际需求,选择合适的PLC型号。

PLC需要具备足够的输入输出点数和计算能力。

3.传感器连接:将温度传感器接入PLC的输入端口,读取实时温度数据。

4.温度控制策略设计:根据加热炉的特性和工艺需求,设计合适的温度控制策略。

常见的控制策略包括比例控制、积分控制和微分控制。

5.控制算法实现:根据温度控制策略,编写PLC程序,在每个采样周期内计算控制算法的输出值。

6.加热功率控制:使用控制继电器或可调功率装置,控制加热炉的加热功率。

7.温度反馈控制:通过监测实际加热炉温度和设定值之间的差异,不断修正加热功率控制,使加热炉温度稳定在设定值附近。

系统硬件设计基于PLC控制的加热炉温度控制系统的硬件设计主要包括以下几个方面:1.温度传感器:常用的温度传感器有热电偶和热敏电阻。

根据加热炉的工艺需求和温度范围,选择适合的温度传感器。

2.PLC:选择适合的PLC型号,根据实际需求确定PLC的输入输出点数和计算能力。

3.控制继电器或可调功率装置:用于控制加热炉的加热功率。

根据加热炉的功率需求和控制方式,选择合适的继电器或可调功率装置。

4.运行指示灯和报警器:用于显示系统的运行状态和报警信息。

PLC程序设计PLC程序是基于PLC的加热炉温度控制系统的关键部分,其主要功能是实现温度控制算法。

基于PLC的PID恒温控制系统

基于PLC的PID恒温控制系统

基于PLC的PID恒温控制系统随着现代工业发展的不断进步,基于PLC的PID恒温控制系统得到了广泛的应用,尤其在生产过程中,精确的控制温度可以提高生产效率和产品质量。

本文将介绍基于PLC的PID恒温控制系统的工作原理、实现步骤和优劣势。

PID恒温控制系统是通过对温度信号进行反馈控制,实现对温度自动调节的一种控制方法。

其中PID控制器是控制器的核心部分,负责根据温度偏差、偏差变化率和偏差积分来输出控制信号。

PLC是一种集成了数字电子、计算机和控制器功能的自动化控制设备,可以实现对工业生产过程的自动化控制。

基于PLC的PID恒温控制系统的工作原理是将PID 控制器嵌入到PLC中,通过对温度传感器测得的温度信号进行处理,计算出对应的控制输出信号,然后通过控制器输出端口控制加热器或制冷器等执行机构来调节温度。

1. 选择合适的PLC型号和温度传感器型号,根据生产现场要求进行调试和安装。

2. 根据温度传感器测得的温度信号,将信号通过输入模块输入到PLC中,进行信号处理和转换。

3. 在PLC中编制PID控制算法,将输出信息通过输出模块输出到执行机构,如电热管或冷却器,以达到恒温的目的。

4. 设置合理的PID参数,包括比例系数、积分时间和微分时间等,以达到良好的控制性能和稳定性。

5. 对系统进行调试和测试,根据测试结果进行适当调整,最终达到理想的温度控制效果。

1. 处理速度快,响应速度高,可以实现高 frequency 的数据处理和控制。

2. 可以通过编程实现复杂的控制算法,灵活度高。

3. PLC具有丰富的通讯接口和网关,方便与其他设备进行互联。

4. 具有较高的可靠性和稳定性,适用于长时间运行和恶劣的工业生产环境。

1. 需要进行编程和算法调优,对技术人员的技能要求较高。

2. 系统成本较高,需要进行设备选型和布局设计。

3. 对于一些特殊的传感器和执行机构,可能需要额外的设备接口和控制模块。

综上所述,基于PLC的PID恒温控制系统在现代工业生产中具有重要的应用价值,但需要根据实际情况进行合理的选型和布局设计,并通过技术方法进行控制算法的调整和优化,以达到理想的控制效果。

plc的pid指令

plc的pid指令

//清累加器 //读模拟量输入至AC0 //若模拟量为正,则转至标号0直接转换
JMP 0
NOT ORD 16#FFFF0000,AC0
//否则将AC0进行符号处理
LBL 0 DTR AC0,AC0
//32位整数转为实数格式
实数格式转换成[0.0,1.0]归一化格式
/R 64000.0, AC0 +R 0.5, AC0 MOVR AC0, VD100
KC
5 +16
TS
6 +20
TI
7 +24
TD
8 +28 MX
9 +32 PVn-1
36-79
变量类型
IN IN IN/OUT IN IN IN IN IN/OUT IN/OUT
注释
过程变量归一化值 给定量归一化值 控制量归一化值 比例项增益 采样时间s 积分时间常数s 微分时间常数s
累积偏移量归一化值 上次执行pid指令时的过程变量
PID TBL, LOOP
TBL:PID控制环起始地址(VB)
回路参数表存储9个参数用于监控闭环控 制指令的执行
LOOP:控制环号(0-7) 对标志位影响:SM1.1(溢出)
用户程序中最多可用8条PID指令
《可编程控制器》精品课程
PID算法
连续ce Kc / TI
第一采样时刻,令 PVn1 PVn
《可编程控制器》精品课程
回路控制的组合选择
控制方式 增益Kc 积分时间常数Ti 微分时间常数Td
P
Kc
无穷大9999.99
0
PI
Kc
Ti
0
PD
Kc
无穷大9999.99

200PLC中PID编程

200PLC中PID编程

200PLC中PID编程PID作为一个经典的算法,在过程控制当中广泛的应用。

那么什么是PID呢?PID是比例、积分、微分的简称,而且还有一大堆公式。

看起来好高大上,好难。

我们有没有必要完全弄懂呢?其实作为维护人员,或者刚编程的人员,我们不需要对它的原理了解那么深。

但是我们一定要知道PID的目的是什么,P.I.D的参数怎么来设定。

怎么写程序能达到我们的要求。

大家看下面经典的单回路闭环控制系统示意图:我们用PID的目的就是要达到给定的温度值,也就是恒温。

我们的目的就是要这个曲线最后趋于直线,到达我们的给定值,其震荡是越来越小的。

接下来讲一下P比例的作用:P是比例增益,P的作用越大,升温越快,起到快速调节的作用。

但并不是越大越好,越大引起的震荡也会越大,会延长达到平衡的时间。

那么P我们具体设置成多少呢,是不是用我们算出来?其实是不用的,当我们拿到一个PLC,或者PID 控制仪我们首先查看手册,会有一个范围,在范围我们试着慢慢调试,调到我们感觉合适的数值,这个是需要时间的积累的。

I积分作用,I作为积分,它的作用是消除余差。

目的简单来说也就是让温度达到我们的设定值。

I越小作用越强。

那I我们是不是尽量设置最小值呢,我们都懂物极必反的道理。

如果尽可能的小会无线延长趋于稳定的时间。

这时我们也需要找到一个合理的范围,慢慢调试。

D微分的作用呢?D起到超调的作用,也就是提前抗干扰的能力。

这个我们就不细说了,因为我们一般都是设置成零。

我们只设置PI就能满足我们大部分的要求。

简单一句话就是我们只需要设置PI的数值就行了,等我们慢慢了解它之后,根据自己兴趣再慢慢研究。

我们知道200CPU最多可以支持8个PID回路,下面开始给大家讲程序了:我们选择PID向导就可以了:选个合适的回路:比例跟积分我们先设置成3.0 和 5.00这里我们选择单极性建议地址我们尽可能选择比较大,防止跟我们其他程序需要的V 区冲突:到这里就设置完成了,我们就可以直接在子程序里调用了在上方工具点开PID调试面板我们就可以进行调试了,由于时间紧没有接PLC,就不跟大家演示了调试完成后我们的PID就弄好了。

基于PID控制算法的电阻炉温度控制单片机C语言程序

基于PID控制算法的电阻炉温度控制单片机C语言程序

基于PID控制算法的电阻炉温度控制单片机C语言程序#include //函数申明、参数定义#include#include#include#define uchar unsigned char#define uint unsigned intsbit DQ=P2^7; //DS18B20的数据DQ脚sbit BEEP=P2^6; //蜂鸣器控制脚sbit PWM=P2^5; //继电器与单片机的连接sbit lcden=P2^0; //LCD1602的使能端sbit lcdrw=P2^1; //LCD1602的读/写sbit lcdrs=P2^2; //LCD1602的数据/指令uchar dis_buf,temp,key;float kp; // 比例常数uint set_temp; //设定温度uint now_temp; //当前温度float prev_prev_error=0,prev_error=0,error=0;//e(k-2),e(k-1),e(k)float dp; //p(k)-p(k-1)uchar high_pulse,low_pulse; //PWM波形占空比uchar low_time=0,high_time=0; //每个周期里低电平次数,高电平次数uchar code table3[]="0123456789";void delayms(int z); //延时void write_com(uchar com); //向LCD1602写指令void write_dat(uchar dat); //向LCD1602写数据void LCD_init(); //LCD1602初始化void LCD_disp_char(uchar x,uchar y,uchar dat);//在某个屏幕位置上显示一个字符,X (0-15),y(0-1)void LCD_disp_str(uchar x,uchar y,uchar *str); //LCD1602显示字符串函数void DS18B20_init(); //DS18B20初始化uchar tempreadbyte(); //按字节读uint tempread(); //读取温度void tempwritebyte(uchar dat); //按字节写uchar tempreadbit(); //按位写void temp_start(); //温度转化void DS18B20_wait(); //等待void displaylcd(uint now_temp,uint set_temp); //LCD1602显示void keyscan(); //按键扫描void keydown(); //判断按键是否按下uint key_input(); //按键输入void pid(float kp); //PID控制void InitTimer2(void); //T2定时器初始化void delayms(int z) //ms延时函数{int x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void LCD_Init(void) //LCD1602初始化{write_com(0x38); //显示模式设置delayms(1);write_com(0x06); //显示光标移到设置delayms(5);write_com(0x01); //显示清屏delayms(1);write_com(0x0C); //显示开及光标设置delayms(5);}void write_com(uchar com) //向LCD1602写指令rs低,rw低{lcdrs=0;lcden=1;lcdrw=0;P0=com;delayms(1);lcden=0;delayms(1);}void write_dat(uchar dat) //向LCD1602写数据rs高,rw低{ lcdrs=1;lcden=1;lcdrw=0;P0=dat;delayms(1);lcden=0;delayms(1);}void displaylcd(uint now_temp,uint set_temp) //LCD1602显示{uint k=0;//第一行显示当前温度k=now_temp/1000;if(k!=0){LCD_disp_char(9,0,table3[k]); //百位k=now_temp%1000/100; //十位k=now_temp%100/10; //个位LCD_disp_char(11,0,table3[k]); LCD_disp_str(12,0,".");k=now_temp%10; //小数LCD_disp_char(13,0,table3[k]); LCD_disp_char(14,0,0xdf);LCD_disp_str(15,0,"C"); //显示℃delayms(5);}else{LCD_disp_char(9,0,' ');k=now_temp%1000/100; //十位LCD_disp_char(10,0,table3[k]);k=now_temp%100/10; //个位LCD_disp_char(11,0,table3[k]); LCD_disp_str(12,0,".");k=now_temp%10; //小数LCD_disp_char(13,0,table3[k]); LCD_disp_char(14,0,0xdf);LCD_disp_str(15,0,"C"); //显示℃delayms(5);}//第二行显示设定温度k=0;k=set_temp/100;if(k!=0){LCD_disp_char(9,1,table3[k]); //百位k=set_temp%100/10; //十位LCD_disp_char(10,1,table3[k]);k=set_temp%10; //个位LCD_disp_char(11,1,table3[k]);LCD_disp_char(12,1,0xdf);LCD_disp_str(13,1,"C"); //显示℃LCD_disp_char(14,1,' ');LCD_disp_char(15,1,' ');delayms(5);}else{LCD_disp_char(9,1,' ');k=set_temp%100/10; //十位k=set_temp%10; //个位LCD_disp_char(11,1,table3[k]);LCD_disp_char(12,1,0xdf);LCD_disp_str(13,1,"C"); //显示℃LCD_disp_char(14,1,' ');LCD_disp_char(15,1,' ');delayms(5);}}void LCD_disp_char(uchar x,uchar y,uchar dat) //显示字符{uchar address;if(y==0)address=0x80+x;elseaddress=0xc0+x;write_com(address);write_dat(dat);}void LCD_disp_str(uchar x,uchar y,uchar *str) //显示字符串{uchar address;if(y==0)address=0x80+x;elseaddress=0xc0+x;write_com(address);while(*str!='\0'){write_dat(*str);str++;}}void DS18B20_init() //DS18B20初始化{//对于11.0592MHz时钟, uint型的i, 作一个i++操作的时间大于8usuint i=0;DQ=0;i=100; //拉低约800us, 符合协议要求的480us以上while(i>0)i--;DQ=1; //产生一个上升沿, 进入等待应答状态while(i>0)i--;}void DS18B20_wait() //等待{uint i;while(DQ);while(~DQ); //检测到应答脉冲i=4;while(i>0)i--;}uchar tempreadbit() //读取一位{uint i=0;bit b;DQ=0;i++; //延时约8us, 符合协议要求至少保持1usDQ=1;i++;i++; //延时约16us, 符合协议要求的至少延时15us以上b=DQ; i=8;while(i>0)i--; //延时约64us, 符合读时隙不低于60us要求return b;}uchar tempreadbyte() //读取一个字节{uint i;uchar j, dat=0;for(i=0; i<8; i++){j = tempreadbit();//最先读出的是最低位数据dat = (j << 7) | (dat >> 1);}return dat;}void tempwritebyte(uchar dat) //写字节{uint i;uchar j;for(j=0; j<8; j++){b=dat&0x01;dat>>=1;//写"1", 将DQ拉低15us后, 在15us~60us内将DQ拉高, 即完成写1if(b){DQ=0;i++;i++; //拉低约16us, 符号要求15~60us内DQ=1;i=8;while(i>0)i--; //延时约64us, 符合写时隙不低于60us要求}else //写"0", 将DQ拉低60us~120us{DQ=0;i=8;while(i>0)i--; //拉低约64us, 符号要求DQ=1;i++;i++; //整个写0时隙过程已经超过60us, 这里就不用像写1那样, 再延时64us了}}}void temp_start() //开始温度转换{DS18B20_init(); //初始化DS18B20, 无论什么命令, 首先都要发起初始化DS18B20_wait(); //等待DS18B20应答delayms(1); //延时1ms, 因为DS18B20会拉低DQ 60~240us 作为应答信号tempwritebyte(0xCC); // 发Skip ROM命令tempwritebyte(0x44); // 发转换命令}uint tempread() //读温度{uint a,b;temp_start();DS18B20_init(); //初始化DS18B20DS18B20_wait(); //等待DS18B20应答delayms(1); //延时1ms, 因为DS18B20会拉低DQ 60~240us 作为应答信号tempwritebyte(0xCC); //发Skip ROM命令tempwritebyte(0xBE); //发read命令a=tempreadbyte(); //低8位b=tempreadbyte(); //高8位b=b<<8;now_temp=((a|b))*0.0625*10.0+0.5;return(now_temp);}void keyscan() //按键扫描{P1=0x0F; //低四位输入delayms(1);temp=P1; //读P1口temp=temp&0x0F;temp=~(temp|0xF0);if(temp==1)key=0;else if(temp==2)key=1;else if(temp==4)key=2;else if(temp==8)key=3;elsekey=0;P1=0xF0; //高四位输入delayms(1);temp=P1; //读P1口temp=temp&0xF0;temp=~((temp>>4)|0xF0); if(temp==1)key=key+0;else if(temp==2)key=key+4;else if(temp==4)key=key+8;else if(temp==8)key=key+12;elsekey=0;dis_buf=key; //键值入显示缓存dis_buf=dis_buf&0x0f;if(dis_buf>11) //转换为ASCII码dis_buf=0x30;else if(dis_buf<10)dis_buf=dis_buf+0x30;elsedis_buf=dis_buf+0x37;}void keydown() //判断按键是否按下{P1=0xF0;while(1){if(P1!=0xF0){keyscan();break;}}}void pid(float kp) //增量型PID算法归一化参数{error=now_temp*1.0-set_temp*10.0; // 偏差u(k) dp=kp*1.0*(2.45*error-3.5*prev_error+1.25*prev_prev_error);//p(k)-p(k-1)=kp*[2.45e(k)-3.5e(k-1)+1.25e(k-2)]prev_prev_error=prev_error;prev_error=error;if(dp<-20.0){high_pulse=1;low_pulse=4;}else if(dp<-15.0){high_pulse=2;low_pulse=3;}else{high_pulse=4;low_pulse=1;}}void InitTimer2() //T2定时器初始化{RCAP2H=(65536-50000)/256; //定时50ms初值RCAP2L=(65536-50000)%256;ET2=1;EA=1;TR2=1;}uint key_input() //按键输入{uint m=0,n=0;do{keydown(); //读取按键值}while(dis_buf<0x30||dis_buf>0x39);m=dis_buf-0x30;LCD_disp_char(0,1,dis_buf); //显示第一个输入delayms(500);do{keydown(); //读取按键值}while(dis_buf<0x30||dis_buf>0x39);n=dis_buf-0x30;LCD_disp_char(1,1,dis_buf); //显示第二个输入set_temp=m*10+n; //设定温度值delayms(500);return set_temp;}void main() //主函数{uint s=0,r=1;LCD_init();delayms(100);LCD_disp_str(0,0," INPUT SET TEMP "); //第一行显示INPUT SET TEMP delayms(500);while(r){key_input(); //输入设定温度keydown(); //确认键和取消键s=dis_buf;if(s==0x41) //A确认键,B取消键{r=0; //确认键按下标志位delayms(500);LCD_disp_str(0,0,"NOW TEMP:"); //显示NOW TEMP:delayms(10);LCD_disp_str(0,1,"SET TEMP:"); //显示SET TEMP:delayms(10);displaylcd(0,set_temp); //显示当前温度0和设定温度}else{write_com(0x01); //清屏delayms(1000);LCD_disp_str(0,0," INPUT SET TEMP "); //第一行显示INPUT SET TEMPr=1;}}BEEP=1; //蜂鸣器默认不响PWM=0; //继电器默认导通while(1){now_temp=tempread();displaylcd(now_temp,set_temp); //显示当前温度和设定温度if(now_temp>10*set_temp) //当前温度大于设定温度的时,给继电器持续的高电平,停止加热{TR2=0; //关闭定时器T2PWM=1; //继电器高电平关断BEEP=0; //蜂鸣器响}else if(now_temp>9*set_temp) //当前温度大于设定温度的90%时,进行PID 控制{BEEP=1;InitTimer2();pid(2.72); //调用增量型PID算法}else{BEEP=1;PWM=0;}}delayms(10);}void Timer2() interrupt 5 //T2定时器中断服务程序{TF2=0;PWM=0;switch(PWM==1){case 0:if(++low_time==low_pulse) //达到低电平脉宽设定值{PWM=1; //输出PWM高电平,继电器断开low_time=0;break;}case 1:if(++high_time==high_pulse) //达到高电平脉宽设定值{PWM=0; //输出PWM低电平,继电器导通high_time=0;break;} } }。

基于PLC的温度控制

基于PLC的温度控制

1 绪论1.1 课题背景随着现代工业的逐步发展,在工业生产中,温度、压力、流量和液位是四种最常见的过程变量。

其中,温度是一个非常重要的过程变量。

例如:在冶金工业、化工工业、电力工业、机械加工和食品加工等许多领域,都需要对各种加热炉、热处理炉、反应炉和锅炉的温度进行控制[1]。

这方面的应用大多是基于单片机进行PID控制,然而单片机控制的DDC系统软硬件设计较为复杂,特别是涉及到逻辑控制方面更不是其长处,然而PLC在这方面却是公认的最佳选择。

随着PLC功能的扩充在许多PLC控制器中都扩充了PID控制功能,因此在逻辑控制与PID控制混合的应用场所中采用PLC控制是较为合理的,通过采用PLC来对它们进行控制不仅具有控制方便、简单和灵活性大的优点,而且可以大幅度提高被测温度的技术指标,从而能够大大提高产品的质量和数量。

因此,PLC对温度的控制问题是一个工业生产中经常会遇到的控制问题。

这也正是本课题所重点研究的内容。

1.2 研究的主要内容本课题的研究内容主要有:1)温度的检测;2)采用PLC进行恒温控制;3)PID算法在PLC中如何实现;4)PID参数对系统控制性能的影响;5)温控系统人机界面的实现。

2 基于PLC的炉温控制系统的硬件设计2.1系统控制要求本PLC温度控制系统的具体指标要求是:对加热器加热温度调整范围为0℃—150℃,温度控制精度小于3℃,系统的超调量须小于15%。

软件设计须能进行人机对话,考虑到本系统控制对象为电炉,是一个大延迟环节,且温度调节范围较宽,所以本系统对过渡过程时间不予要求。

2.2系统设计思路根据系统具体指标要求,可以对每一个具体部分进行分析设计。

整个控制系统分为硬件电路设计和软件程序设计两部分。

系统硬件框图结构如图所示:图2.1系统硬件框图被控对象为炉内温度,温度传感器检测炉内的温度信号,经温度变送器将温度值转换成0~10V的电压信号送入PLC模块。

PLC把这个测量信号与设定值比较得到偏差,经PID运算后,发出控制信号,经调压装置输出交流电压用来控制电加热器的端电压,从而实现炉温的连续控制。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于PLC的PID温度控制系统设计(附程序代码)摘要自动控制系统在各个领域尤其是工业领域中有着及其广泛的应用,温度控制是控制系统中最为常见的控制类型之一。

随着PLC技术的飞速发展,通过PLC 对被控对象进行控制日益成为今后自动控制领域的一个重要发展方向。

温度控制系统广泛应用于工业控制领域,如钢铁厂、化工厂、火电厂等锅炉的温度控制系统。

而温度控制在许多领域中也有广泛的应用。

这方面的应用大多是基于单片机进行PID 控制, 然而单片机控制的DDC 系统软硬件设计较为复杂, 特别是涉及到逻辑控制方面更不是其长处, 然而PLC 在这方面却是公认的最佳选择。

根据大滞后、大惯性、时变性的特点,一般采用PID调节进行控制。

随着PLC功能的扩充,在许多PLC 控制器中都扩充了PID 控制功能, 因此在逻辑控制与PID控制混合的应用场所中采用PLC控制是较为合理的。

本设计是利用西门子S7-200PLC来控制温度系统。

首先研究了温度的PID调节控制,提出了PID的模糊自整定的设计方案,结合MCGS监控软件控制得以实现控制温度目的。

关键词:PLC;PID;温度控制目录1 引言11.1 温度控制系统的意义 11.2 温度控制系统背景 11.3 研究技术介绍 11.3.1 传感技术 11.3.2 PLC 21.3.3 上位机31.3.4 组态软件 31.4 本文研究对象 42 温度PID控制硬件设计 52.1 控制要求52.2 系统整体设计方案 52.3 硬件配置62.3.1 西门子S7-200 CUP224 6 2.3.2 传感器62.3.3 EM235模拟量输入模块 7 2.3.4 温度检测和控制模块8 2.4 I/O分配表82.5 I/O接线图83 控制算法设计93.1 P-I-D控制93.2 PID回路指令113.2.1 PID算法113.2.2 PID回路指令143.2.3 回路输入输出变量的数值转换163.2.4 PID参数整定174 程序设计194.1 程序流程图194.2 梯形图195 调试235.1 程序调试235.2 硬件调试23结束语24附录程序代码25参考文献271引言1.1 温度控制系统的意义温度及湿度的测量和控制对人类日常生活、工业生产、气象预报、物资仓储等都起着极其重要的作用。

在许多场合,及时准确获得目标的温度、湿度信息是十分重要的,近年来,温湿度测控领域发展迅速,并且随着数字技术的发展,温湿度的测控芯片也相应的登上历史的舞台,能够在工业、农业等各领域中广泛使用。

1.2温度控制系统背景自70年代以来,由于工业过程控制的需要,特别是在微电子技术和计算机技术的迅猛发展以及自动控制理论和设计方法发展的推动下,国内外温度控制系统发展迅速,并在职能化、自适应、参数自整定等方面取得成果,在这方面,一日本、美国、德国、瑞典等国技术领先,都产生了一批商品化的、性能优异的温度控制器及仪器仪表,并在各行各业广泛应用。

温度控制系统在国内各行各业的应用虽然十分广泛,但从国内生产的温度控制器来讲,总体发展水平仍然不高,同日本、美国、德国等先进国家相比仍然有着较大的差距。

目前,我国在这方面总体水平处于20实际80年代中后期水平,成熟产品主要以“点位”控制及常规的PID控制器为主,它只能适应一般温度系统控制,难于控制滞后、复杂、时变温度系统控制。

而适应于较高控制场合的智能化、自适应控制仪表,国内技术还不十分成熟。

形成商品化并在仪表控制系统参数的自整定方面,还没开发性能可靠的自整定软件。

参数大多靠人工经验及我国现场调试来确定。

随着科学技术的不断发展,人们对温度控制系统的要求越来越高,因此,高精度、智能化、人性化的温度控制系统是国内外必然发展趋势。

1.3 研究技术介绍1.3.1 传感技术传感技术、通信技术和计算机技术是现代信息技术的三大基础技术。

中华人民共和国国家标准GB7665-1987对传感器(transducer/sensor)的定义是:“能感受规定的被测量并按照一定规律转换成可用输出信号的器件或装置,通常由敏感元件和转换元件组成。

其中,敏感元件是指直接感受或响应被测量的部分;转换元件是指传感器中能将敏感元件或响应的被测量转换成适于传感器或被测量的电信号部分。

”对生产过程的监控首先离不开采集设备工作信息,因此选用合适的传感器至关重要,如果把计算机看作是自动化系统的“大脑”,信道看作是“神经网络”的话,那么传感器就是自动化系统的“五官”。

无法对现场数据进行准确、可靠、实时测量,监控也就无从谈起了。

可编程控制器的英文名称是Programmable Logic Controller,即可编程逻辑控制器,简称PLC。

现代制造业必须对市场需求做出快速反应,生产小批量、多品种、多规格、低成本和高质量的产品,这便要求生产设备和自动化生产线的控制系统必须具有极高可靠性和灵活性。

可编程控制器正是顺应这一潮流而出现的,以微处理器为基础的通用工业控制装置。

在20世纪60年代的汽车制造业,传统继电接触器控制装置广泛应用于生产流水线的自动控制系统中。

这套装置设备体积庞大,可靠性差,同时维护不便,而且,完全由逻辑硬件构成,接线十分复杂。

一旦生产过程某一环节发生改变,控制装置就要重新设计改造。

随着汽车生产工业的迅猛发展,对于汽车型号频繁改进,传统控制系统捉襟见肘,弊端日益放大,最终PLC 应运而生。

它开创性地引入程序控制功能,使计算机科学技术进入工业生产控制领域应用。

早期PLC仅仅是替代继电器控制装置完成顺序控制、定时等任务,但是其简单易懂、安装方便、体积小、能耗低、有故障显示、能重复使用的特点,使得PLC很快就得到了推广应用。

随着超大规模集成电路技术和微处理器性能的飞速发展,PLC的软、硬件功能不能丰富、完善。

国际电工委员会(IEC)对PLC的正式定义:“可编程控制器是一种数字运算操作的电子系统,专为工业环境应用而设计,它采用一类可编程的存储器,用于其内部存储程序、执行逻辑运算、顺序控制、定时、计数与算术操作等面向用户的指令,并通过数字或模拟或输入/输出控制各种类型的机械或生产过程。

可编程控制器及其有关外部设备,都按易于与工业控制系统联成一个整体、易于扩充其功能的原则设计。

”PLC技术发展至今已十分成熟,生产PLC产品的厂家多达200多个,其中较著名有德国的西门子(Siemens)公司、美国的Rockwell自动化公司所属的A-B (Allen &Bradly)公司、GE-Fanuc公司、法国的施耐德(Schneider)公司、日本的三菱公司和欧姆龙(OMRON)公司。

1.3.3 上位机即便远离生产现场,操作人员仍可以通过远程计算机―即上位机―直接向生产设备发出控制指令的。

上位机屏幕上可以动态实时显示各种信号变化(液压,水位,温度等),便是人机界面(Human Machine Interface)。

而下位机是获取设备状况及直接控制设备的计算机,一般是PLC或单片机。

1.3.4 组态软件组态软件,处在自动控制系统监控层一级的软件平台和开发环境,使用灵活的组态方式,为用户提供快速构建工业自动控制系统监控功能的、通用层次的软件工具。

在组态软件出现之前,工控领域的用户通过手工或委托第三方编写HMI(人机接口软件)应用,开发时间长、效率低、可靠性差;或者购买专用的工控系统,通常是封闭的系统,选择余地小,往往不能满足需求,很难与外界进行数据交互,升级和增加功能都受到严重的限制。

组态软件的出现使用户可以利用组态软件的功能,构建一套最适合自己的应用系统。

随着工业自动化水平的迅速提高,计算机在工业领域的广泛应用,种类繁多的控制设备和过程监控装置在工业领域的应用,传统的工业控制软件已无法满足用户的各种需求。

在开发传统的工业控制软件时,一旦工业被控对象有变动,就必须修改其控制系统的源程序,导致其开发周期长;已开发成功的工控软件又由于每个控制项目的不同而使其重复使用率很低,导致它的价格昂贵。

通用工业自动化组态软件能够很好地解决传统工业控制软件存在的种种问题,使用户能根据自己的控制对象和控制目的的任意组态,完成最终的自动化控制工程。

1.4本文研究对象现代社会要求制造业市场需求迅速的反应,生产出小批量、多品种、多规格、低成本和高质量的产品。

为了满足这一需求,生产设备的控制系统必须具有极高的灵活性和可靠性,可编程控制器就顺应而生。

随着微处理器、计算机和数字通信技术的飞跃发展,计算机控制已扩展到所有控制领域。

在建材、化工、食品、机械、钢铁、煤矿等工业生产中广泛应用时运输机运送原料物品。

本文介绍了以锅炉为被控对象,以锅炉出口水温为被控参数,以以PLC为控制器,构成锅炉温度串级控制系统;采用PID算法,运用PLC梯形图编程语言进行编程,实现锅炉温度的自动控制。

电热锅炉的应用领域相当广泛,在相当多的领域里,电热锅炉的性能优劣决定了产品的质量好坏。

目前电热锅炉的控制系统大都采用以微处理器为核心的计算机控制技术,既提高设备的自动化程度又提高设备的控制精度。

本文主要从温度控制算法角度进行阐述。

通过改造电热锅炉的控制系统具有响应快、稳定性好、可靠性高,控制精度好等特点,对工业控制有现实意义。

2温度PID控制硬件设计2.1控制要求本课设以锅炉内胆作为被控对象,内胆的水温为系统的被控制量。

要求锅炉内胆的水温稳定至给定量,将铂电阻检测到的锅炉内胆温度信号TT1作为反馈信号,在与给定量比较后的差值通过调节器控制三相调压模块的输出电压(即三相电加热管的端电压),以达到控制锅炉内胆水温的目的。

给定值(目标值)可以预先设定后直接输入到回路中;过程变量由在受热体中的Pt100测量并经温度变送器给出,为单极性电压模拟量;输出值是送至加热器的电压,其允许变化范围为最大值的0% 至100%。

2.2系统整体设计方案系统选用PLC CPU 224为控制器,PT100型热电阻将检测到的实际锅炉水温转化为电压信号,经过EM235模拟量输入模块转化成数字量信号并送到PLC中进行PID调节,PID控制器输出转化为0~10mA的电流信号输入控制可控硅电压调整器或触发板改变可控硅管导通角的大小来调节输出功率,从而调节电热丝的加热。

如图所示。

2.3硬件配置2.3.1 西门子S7-200 CUP224S7-200系列PLC可提供4种不同的基本单元和6种型号的扩展单元。

其系统构成包括基本单元、扩展单元、编程器、存储卡、写入器等。

S7-200系列的基本单元如表2-1所示。

表2-1S7-200系列PLC中CPU22X的基本单元型号输入点输出点可带扩展模块数S7-200CPU221 6 4 0 S7-200CPU222 8 6 2个扩展模块S7-200CPU224 24 10 7个扩展模块S7-200CPU224XP 24 16 7个扩展模块S7-200CPU22624 16 7个扩展模块本论文采用的是CUP224。

相关文档
最新文档