用宏指令编写的温度pid算法简单易懂(四)

smocon2周前 (04-29)编程技术12

用宏指编写piD算法程序,只用了一条宏指编写为的是简单易懂,也是为了移稙到其它软件方便些。本章介绍MVP和MVi部分,下章介绍MVD和MV(输出占空比)=MVP+MVi+MVD部分,以及宏指令变量窗口。指令原码如下(本章宏指令必须和下一章宏指令连在一起才能编译成功)。 #include "macrotypedef.h" #include "math.h"

int MacroEntry() { //程序运行周期,1秒 PV=FXIS_D[0];//DO(D8030)把PLC温度读到触摸屏 PV=((200)*(PV-817)/3278)-50;// 温度模块-50~+150=4~20ma if (P==0)//开关量输出 { if (PV>=SV){ MV=0;} //AT8为记下当时时间SV是给定值 ,MV为占空比输出(PLC的D1)。 if (PV<=SV-DF){MV=OPH;}//AT8为记下当时时间DF回差 } else { //mvP的计算;///////////////////////////////////////////////////////////////// //MVP 输出 MVP = (SV - PV) * 1000/ (P+0.001); if (MVP<0){ MVP=0;} if (MVP>100){MVP=100;} //mvI的计算;//////////////////////////////////////////////////////////////////////////////// MVI2 = 0; MVI3 = 0; LW4054=LW4056; LW4056=LW9034;LW4058=LW9034-LW4054;LW4058=LW9034-LW4054;LW4058=LW4058/10; MVI1 =((SV - PV) * 1000/ (P+0.001) / (I + 0.001))*LW4058 ;

if (I1!=PV)//同升降 { if (I2!=SV) { if (I0==PV-SV){ I1=PV;I2=SV;I4=1;}//在PID窗口显示变化的位置 } } I0=PV-SV; if (I1!=PV)//PV有变化====================================== { if (PV>SV)//解决PV>SV情况 { MVI2= ((I1-PV) * 1000 / (P+0.001)); } if (I1<SV)//第2种情况。PV从负上穿或=SV { if (PV>SV){MVI2= -((PV-SV) * 1000/ (P+0.001)) ;}//只减穿过SV的部分 } if (I1>PV)//第3种情况。PV从正变为0或下穿SV { if (I1>SV) { if (PV<=SV){MVI2= ((I1-SV) * 1000 / (P+0.001));}//只加未穿过SV的部分 } }//************************************** if (PV-SV>(P+0.001)/20)//PV高于SV //解决人工设定SV的问题 { MVI1= 0;MVI2= 0;MVI3= 0;MVIT= 0; } }//================================================= I1= PV;

if (I2!=SV)//SV有变化,除了人工设定外,走曲线只能每次加0.1,如果每次加的数较大,在使用SV变化程序来控制没意义。 { if (I2<=PV)//第1种情况。在PV大于=SV的情况下SV往下降** { if (I2>SV){MVI3= ((SV-I2) * 1000 / (P+0.001));} //减SV-I2 }//*********************************** if (SV<PV)//第2种情况。前SV下穿PV或=PV **** { if (I2>PV) { if (SV<=PV){MVI3= ((SV-PV) * 1000 / (P+0.001));} // '只减穿过PV的部分SV-PV } }//************************************** if (I2<=PV)//第3种情况。在PV大于I2的情况下、SV上行 **** { if (SV>I2) { if (SV<=PV)//没有越过PV { MVI3=((SV-PV) * 1000 / (P+0.001));// '加// '加(纠结,减∶没有测试) } if (SV>PV) //SV越过了PV { MVI3= ((SV-I2) * 1000 / (P+0.001));// '加SV-I2 } } }//************************************** if (MVI3>(200 / (P+0.001))){MVI3= 0; } //如果曲线SV上升超0.2度的控制没意义。如果人工设定会出现很的MVI3 if (MVI3<-(200/ (P+0.001))) {MVI3= 0;} //如果曲线SV下降超0.2度的控制没意义。如果人工设定会出现很的-MVI3 if (SV-PV>(P+0.001)*0.1)//SV高于PV { MVI1= 0;MVI2= 0;MVI3= 0;MVIT= 0; } }//================================================= I2 = SV; if (I==0) {MVI1= 0;MVI2= 0;MVI3= 0;MVIT= 0; } if (MVP+MVI1>99){ MVI1=100-MVP;MVIT=0; } MVIT= MVIT+MVI1;// '累加公共部分 MVIT= MVIT+MVI2+MVI3;// ''累加PV变化的部分+SV变化的部分 MVI= MVIT;

标签: pid控制温度

相关文章

西门子S7-300,PID调节温度控制实例

控制要求1.水罐水温设置在50℃2.误差值在±1℃硬件配置设计方案1.采样 : 使用 PT100 热电阻经过变送器把水缸温度传送给S7-300 PLC。2. 数据的处理: 在 S7-300 PLC 中...

pid升温速度控制(pid温度控制参数设定)

近年来,PID控制算法已经广泛应用于各种温度控制设备中,但是大多数pid控制都是使温度稳定到一个值,而对于匀速升温控制的pid算法研究较少。本文使用了分区间控制的方法控制升温速度,比如从50℃升温到6...

PID参数及其整定(pid参数整定方法4种)

1. PID整定参数这三个字母是什么意思?它们如何影响你的工厂行为?PID是比例、积分和导数的首字母缩写。这些参数可以单独或集体使用、调整和控制。例如,您可以使用P控制器、PI控制器或PID控制器。每...

什么是注塑机的温度PID控制技术,温度PID控制系统

当通过热电偶采集的被测温度偏离所希望的给定值时,PID控制可根据测量信号与给定值的偏差进行比例(P)、积分(I)、微分(D)运算,从而输出某个适当的控制信号给执行机构,促使测量值恢复到给定值,达到自动...

管式换热器的温度控制系统中PID温度控制介绍

  管式换热器的温度控制系统PID算法温度控制涉及化工和医药领域,尤其涉及多种反应釜温度控制系统,为了克服现有技术中换热介质切换、手动控制、换热效率低的问题,冠亚制冷PID算法提供了一种新的温度控制系...

注塑机料筒温度的PID控制(注塑机料筒温度过高降不下来)

当通过热电偶采集的被测温度偏离所希望的给定值时,PID控制可根据测量信号与给定值的偏差进行比例(P)、积分(I)、微分(D)运算,从而输出某个适当的控制信号给执行机构,促使测量值恢复到给定值,达到自动...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。