当前位置:首页 » 操作系统 » 恒温算法

恒温算法

发布时间: 2022-09-27 07:05:15

Ⅰ 如何采用PID控制算法,使PLC控制的恒温箱的的温度变化能按照给定的曲线运行

这个其实就是你怎样计算目标值的问题,将你的保温曲线画出来,然后确定你需要多少个温度点,以及每个温度点的时间,然后在适当的时间改变PID程序的目标值即可,如常温加热到100℃保温10分钟,在加热到200℃保温20分钟,那么将PID的目标值设置到100℃,运行PID,当测量值到达100℃时开始计时,计时10分钟后将PID的目标值改为200℃,当温度到达200℃是再开始计时,计时20分钟后进行下一段的运行或停机即可,复杂的保温曲线也是同样的道理,就是计算起来麻烦一些

Ⅱ 高精度的恒温控制PID程序,8位MCU用C语言

以下程序供参考:
//51 温度PID经典算法
#include<reg51.h>
#include<intrins.h>
#include<math.h>
#include<string.h>
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=25;
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<time;n++)
for(m=0;m<2;m++){}
}
/***********************************************************
写一位数据子程序
***********************************************************/
void write_bit(unsigned char bitval)
{
EA=0;
DQ=0; /*拉低DQ以开始一个写时序*/
if(bitval==1)
{
_nop_();
DQ=1; /*如要写1,则将总线置高*/
}
delay(5); /*延时90us供DA18B20采样*/
DQ=1; /*释放DQ总线*/
_nop_();
_nop_();
EA=1;
}
/***********************************************************
写一字节数据子程序
***********************************************************/
void write_byte(unsigned char val)
{
unsigned char i;
unsigned char temp;
EA=0;
TR0=0;
for(i=0;i<8;i++) /*写一字节数据,一次写一位*/
{
temp=val>>i; /*移位操作,将本次要写的位移到最低位*/
temp=temp&1;
write_bit(temp); /*向总线写该位*/
}
delay(7); /*延时120us后*/
// TR0=1;
EA=1;
}
/***********************************************************
读一位数据子程序
***********************************************************/
unsigned char read_bit()
{
unsigned char i,value_bit;
EA=0;
DQ=0; /*拉低DQ,开始读时序*/
_nop_();
_nop_();
DQ=1; /*释放总线*/
for(i=0;i<2;i++){}
value_bit=DQ;
EA=1;
return(value_bit);
}
/***********************************************************
读一字节数据子程序
***********************************************************/
unsigned char read_byte()
{
unsigned char i,value=0;
EA=0;
for(i=0;i<8;i++)
{
if(read_bit()) /*读一字节数据,一个时序中读一次,并作移位处理*/
value|=0x01<<i;
delay(4); /*延时80us以完成此次都时序,之后再读下一数据*/
}
EA=1;
return(value);
}
/***********************************************************
复位子程序
***********************************************************/
unsigned char reset()
{
unsigned char presence;
EA=0;
DQ=0; /*拉低DQ总线开始复位*/
delay(30); /*保持低电平480us*/
DQ=1; /*释放总线*/
delay(3);
presence=DQ; /*获取应答信号*/
delay(28); /*延时以完成整个时序*/
EA=1;
return(presence); /*返回应答信号,有芯片应答返回0,无芯片则返回1*/
}
/***********************************************************
获取温度子程序
***********************************************************/
void get_temper()
{
unsigned char i,j;
do
{
i=reset(); /*复位*/
} while(i!=0); /*1为无反馈信号*/
i=0xcc; /*发送设备定位命令*/
write_byte(i);
i=0x44; /*发送开始转换命令*/
write_byte(i);
delay(180); /*延时*/
do
{
i=reset(); /*复位*/
} while(i!=0);
i=0xcc; /*设备定位*/
write_byte(i);
i=0xbe; /*读出缓冲区内容*/
write_byte(i);
j=read_byte();
i=read_byte();
i=(i<<4)&0x7f;
s=(unsigned int)(j&0x0f); //得到小数部分
s=(s*100)/16;
j=j>>4;
temper=i|j; /*获取的温度放在temper中*/
}
/*====================================================================================================
Initialize PID Structure
=====================================================================================================*/
void PIDInit (struct PID *pp)
{
memset ( pp,0,sizeof(struct PID)); //全部初始化为0
}
/*====================================================================================================
PID计算部分
=====================================================================================================*/
unsigned int PIDCalc( struct PID *pp, unsigned int NextPoint )
{
unsigned int dError,Error;
Error = pp->SetPoint - NextPoint; // 偏差
pp->SumError += Error; // 积分
dError = pp->LastError - pp->PrevError; // 当前微分
pp->PrevError = pp->LastError;
pp->LastError = Error;
return (pp->Proportion * Error // 比例项
+ pp->Integral * pp->SumError // 积分项
+ pp->Derivative * dError); // 微分项
}
/***********************************************************
温度比较处理子程序
***********************************************************/
void compare_temper()
{
unsigned char i;
if(set_temper>temper) //是否设置的温度大于实际温度
{
if(set_temper-temper>1) //设置的温度比实际的温度是否是大于1度
{
high_time=100; //如果是,则全速加热
low_time=0;
}
else //如果是在1度范围内,则运行PID计算
{
for(i=0;i<10;i++)
{
get_temper(); //获取温度
rin = s; // Read Input
rout = PIDCalc ( &spid,rin ); // Perform PID Interation
}
if (high_time<=100)
high_time=(unsigned char)(rout/800);
else
high_time=100;
low_time= (100-high_time);
}
}
else if(set_temper<=temper)
{
if(temper-set_temper>0)
{
high_time=0;
low_time=100;
}
else
{
for(i=0;i<10;i++)
{
get_temper();
rin = s; // Read Input
rout = PIDCalc ( &spid,rin ); // Perform PID Interation
}
if (high_time<100)
high_time=(unsigned char)(rout/10000);
else
high_time=0;
low_time= (100-high_time);
}
}
// else
// {}
}
/*****************************************************
T0中断服务子程序,用于控制电平的翻转 ,40us*100=4ms周期
******************************************************/
void serve_T0() interrupt 1 using 1
{
if(++count<=(high_time))
output=1;
else if(count<=100)
{
output=0;
}
else
count=0;
TH0=0x2f;
TL0=0xe0;
}
/*****************************************************
串行口中断服务程序,用于上位机通讯
******************************************************/
void serve_sio() interrupt 4 using 2
{
/* EA=0;
RI=0;
i=SBUF;
if(i==2)
{
while(RI==0){}
RI=0;
set_temper=SBUF;
SBUF=0x02;
while(TI==0){}
TI=0;
}
else if(i==3)
{
TI=0;
SBUF=temper;
while(TI==0){}
TI=0;
}
EA=1; */
}
void disp_1(unsigned char disp_num1[6])
{
unsigned char n,a,m;
for(n=0;n<6;n++)
{
// k=disp_num1[n];
for(a=0;a<8;a++)
{
clk=0;
m=(disp_num1[n]&1);
disp_num1[n]=disp_num1[n]>>1;
if(m==1)
data1=1;
else
data1=0;
_nop_();
clk=1;
_nop_();
}
}
}
/*****************************************************
显示子程序
功能:将占空比温度转化为单个字符,显示占空比和测得到的温度
******************************************************/
void display()
{
unsigned char code number[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
unsigned char disp_num[6];
unsigned int k,k1;
k=high_time;
k=k%1000;
k1=k/100;
if(k1==0)
disp_num[0]=0;
else
disp_num[0]=0x60;
k=k%100;
disp_num[1]=number[k/10];
disp_num[2]=number[k%10];
k=temper;
k=k%100;
disp_num[3]=number[k/10];
disp_num[4]=number[k%10]+1;
disp_num[5]=number[s/10];
disp_1(disp_num);
}
/***********************************************************
主程序
***********************************************************/
void main()
{
unsigned char z;
unsigned char a,b,flag_2=1,count1=0;
unsigned char phil[]={2,0xce,0x6e,0x60,0x1c,2};
TMOD=0x21;
TH0=0x2f;
TL0=0x40;
SCON=0x50;
PCON=0x00;
TH1=0xfd;
TL1=0xfd;
PS=1;
EA=1;
EX1=0;
ET0=1;
ES=1;
TR0=1;
TR1=1;
high_time=50;
low_time=50;
PIDInit ( &spid ); // Initialize Structure
spid.Proportion = 10; // Set PID Coefficients 比例常数 Proportional Const
spid.Integral = 8; //积分常数 Integral Const
spid.Derivative =6; //微分常数 Derivative Const
spid.SetPoint = 100; // Set PID Setpoint 设定目标 Desired Value
while(1)
{
if(plus==0)
{
EA=0;
for(a=0;a<5;a++)
for(b=0;b<102;b++){}
if(plus==0)
{
set_temper++;
flag=0;
}
}
else if(subs==0)
{
for(a=0;a<5;a++)
for(b=0;a<102;b++){}
if(subs==0)
{
set_temper--;
flag=0;
}
}
else if(stop==0)
{
for(a=0;a<5;a++)
for(b=0;b<102;b++){}
if(stop==0)
{
flag=0;
break;
}
EA=1;
}
get_temper();
b=temper;
if(flag_2==1)
a=b;
if((abs(a-b))>5)
temper=a;
else
temper=b;
a=temper;
flag_2=0;
if(++count1>30)
{
display();
count1=0;
}
compare_temper();
}
TR0=0;
z=1;
while(1)
{
EA=0;
if(stop==0)
{
for(a=0;a<5;a++)
for(b=0;b<102;b++){}
if(stop==0)
disp_1(phil);
// break;
}
EA=1;
}
}

Ⅲ 燃气热水器恒温的原理

谁说燃气热水器没有电子恒温,一般不带控制水量的燃气热水器有温度传感器及控制燃气流量的比例阀,通过感知出水温度及适当的算法,控制比例阀开度,实现恒温,稳定时可以实现正负1度左右,不过现在恒温热水器未普及,各厂家的技术参差,有些便宜的恒温效果不一定很好

Ⅳ 如何用PID算法编程,使单片机通过控制继电器来实现恒温功能。

/***********************************************************************
PID温度控制程序
程序说明:
系统上电后显示 “--温度”
表示需要先设定温度才开始进行温度检测
温度设定完毕后程序才开始进行PID温控
***********************************************************************/
#include <reg52.h>
#include <absacc.h>
#include"DS18B20.H"
#include"PID.H"
#define uchar unsigned char
#define uint unsigned int
unsigned char code tab[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xBF
}
;
/*个位0~9的数码管段码*/
unsigned char code sao[]=
{
0x7f,0xbf,0xdf,0xef
}
;
//扫描码
uchar set=30,keyflag=1 ; //set初始化为30° keyflag为进入温度设定的标志位
//4个按键使用说明
sbit key_out=P1^0 ; //用于温度设定后的退出
sbit key_up=P1^1 ; //设定温度加
sbit key_down=P1^2 ; //设定温度减
sbit key_in=P1^3 ; //在程序的运行中如需要重新设定温度 按下此键才能进入设置模式并且此时是停在温度控制的,按下key_out键后才表示设定完毕
void Show_key();
/***********************************************************/
void delays(unsigned char k)
{
unsigned char i,j ;
for(i=0;i<k;i++)
for(j=0;j<50;j++);
}
/*********************************************************
//数码管显示函数
P0口 作为数据口
P2口的低四位作为扫描口
变量 x表示扫描
d表示是否要加小数点 为1是 为0不加
y表示传递的数值
*********************************************************/
LCD_disp_char(uchar x,bit d,uchar y)
{
P2=0XFF ;
P0=0xFF ;
if(d==0)
P0=tab[y];
else
P0=tab[y]&0x7f ; //与上0x7f表示是否要加小数点
P2=sao[x]; //打开扫描端号

}
/*********************************************************
按键扫描
*********************************************************/
void keyscan(void)
{
if(key_in==0) //按键进入函数
{
delays(10); //延时消抖 (以下同)
if(key_in==0)
{
while(key_in==0)
{
Show_key(); //如果一直按着键不放 就一直显示在当前状态 (以下同)
}
keyflag=1 ; //按键标志位
}
}
/***********************/
if(key_out==0) //按键退出
{
delays(10);
if(key_out==0)
{
while(key_out==0)
{
Show_key();
}
keyflag=0 ;
set_temper=set ;
}
}
/*************************/
if(key_up==0) //设定温度的加
{
delays(10);
if(key_up==0)
{
while(key_up==0)
{
Show_key();
}
if(keyflag==1)
{
set++;
if(set>90) //如果大于90°就不在加
set=90 ;
}
}
}
/*************************/
if(key_down==0) //温度设定的减
{
delays(10);
if(key_down==0)
{
while(key_down==0)
{
Show_key();
}
if(keyflag==1)
{
set--;
if(set<30) //温度减到30°时不在往下减
set=30 ;
}
}
}
}
/*********************************************************************
按键按下时的显示函数
***********************************************************************/
void Show_key()
{
output=1 ;
LCD_disp_char(3,0,10); //显示 -
delays(3);
LCD_disp_char(2,0,10); //显示- (表示温度设定 )
delays(3);
LCD_disp_char(1,0,set/10); //显示温度十位
delays(3);
LCD_disp_char(0,0,set%10); //显示温度个位
delays(3);
}
/*****************************************************************/
void main()
{
unsigned int tmp ;//声明温度中间变量
unsigned char counter=0 ;
PIDBEGIN(); //PID参数的初始化
output=1 ; //关闭继电器输出
while(1)
{
keyscan();
if(keyflag)
{
Show_key(); //显示温度设定
}
else
{
if(counter--==0)
{
tmp=ReadTemperature();//每隔一段时间读取温度值
counter=20 ;
}
LCD_disp_char(3,0,tmp/1000); //显示温度十位
delays(3);
LCD_disp_char(2,1,tmp/100%10); //显示温度个位
//显示小数点
delays(3);
LCD_disp_char(1,0,tmp/10%10); //显示温度小数后一位
delays(3);
LCD_disp_char(0,0,tmp%10);//显示温度小数后二位
delays(3);
P2=0XFF ;
P0=0xff ;
compare_temper(); //比较温度

}
}
}
/**********************************************************************************************************************************************/
//PID算法温控C语言2008-08-17 18:58
#ifndef _PID_H__
#define _PID_H__
#include<intrins.h>
#include<math.h>
#include<string.h>
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 output=P1^4;
unsigned char high_time,low_time,count=0 ;
//占空比调节参数
unsigned char set_temper ;
void PIDInit(struct PID*pp)
{
memset(pp,0,sizeof(struct PID)); //PID参数初始化全部设置为0
}
unsigned int PIDCalc(struct PID*pp,unsigned int NextPoint)
{
unsigned int dError,Error ;
Error=pp->SetPoint-NextPoint ;
// 偏差
pp->SumError+=Error ;
// 积分
dError=pp->LastError-pp->PrevError ;
// 当前微分
pp->PrevError=pp->LastError ;
pp->LastError=Error ;
//比例
//积分项
return(pp->Proportion*Error+pp->Integral*pp->SumError+pp->Derivative*dError);
// 微分项
}
/***********************************************************
温度比较处理子程序
***********************************************************/
void compare_temper()
{
unsigned char i ;
//EA=0;
if(set_temper>temper)
{
if(set_temper-temper>1)
{
high_time=100 ; //大于1°不进行PID运算
low_time=0 ;
}
else
{ //在1°范围内进行PID运算
for(i=0;i<10;i++)
{
//get_temper();
rin=s;
// Read Input
rout=PIDCalc(&spid,rin); //执行PID运算
// Perform PID Interation
}
if(high_time<=100) //限制最大值
high_time=(unsigned char)(rout/800);
else
high_time=100;
low_time=(100-high_time);
}
}
/****************************************/
else if(set_temper<=temper) //当实际温度大于设置温度时
{
if(temper-set_temper>0)//如果实际温度大于设定温度
{
high_time=0 ;
low_time=100 ;
}
else
{
for(i=0;i<10;i++)
{
//get_temper();
rin=s ;
// Read Input
rout=PIDCalc(&spid,rin);
// Perform PID Interation
}
if(high_time<100) //此变量是无符号字符型
high_time=(unsigned char)(rout/10000);
else
high_time=0 ;//限制不输出负值
low_time=(100-high_time);
//EA=1;
}
}
}

/*****************************************************
T0中断服务子程序,用于控制电平的翻转 ,40us*100=4ms周期
******************************************************/
void serve_T0()interrupt 1 using 1
{
if(++count<=(high_time))
output=0 ;
else if(count<=100)
{
output=1 ;
}
else
count=0 ;
TH0=0x2f ;
TL0=0xe0 ;
}
void PIDBEGIN()
{

TMOD=0x01 ;
TH0=0x2f ;
TL0=0x40 ;

EA=1 ;
ET0=1 ;
TR0=1 ;

high_time=50 ;
low_time=50 ;
PIDInit(&spid);
// Initialize Structure
spid.Proportion=10 ;
// Set PID Coefficients
spid.Integral=8 ;
spid.Derivative=6 ;
spid.SetPoint=100 ;
// Set PID Setpoint

}
#endif

转自他人程序。

Ⅳ 控制恒温恒湿的算法

恒温恒湿光照培养箱有着精确的温度和湿度控制系统,它为产业研究、生物技术测试提供所需要的各种模拟环境条件,科广泛适用于药物、纺织、食品加工等无菌试验、稳定性检验以及工业产品的原料性能、产品包装、产品寿命等测试。

恒温光照培养箱的一个重要组成部分就是样品试验室,这部分基本上也是放置样品,并未样品提供模拟、强化大气环境的部分,一般来说,样品试验室会配备光源、样品架和测量装置等。

恒温光照培养箱之所以被称作这个名字,是因为它能够实现光照强度的调节,因此光源系统装置主要包括灯和点灯装置,可以控制灯的开启和关闭,以及实现光照强度的调节,以满足不同试验的光照强度要求。


提供体外的培养环境主要由温度、湿度两个指标衡量,属于多输入控制系统的集合体。整体设计可划分为恒温控制与恒湿控制两大核心控制系统和按键、显示、声光报警和数据存储下载辅助系统。恒温系统完成温度的闭环控制,其工作过程可概括为:


恒温恒湿光照培养箱按控制算法对采集的温度数据进行处理,输出的控制量传送到驱动电路,从而控制起加热功能的电热器的通断、以及压缩机和风扇的启停,使温度达到目标值,实现对箱体温度的控制,因此系统包含传感器检测、信号处理、人机交互系统和电源等功能模块。恒湿系统完成湿度恒定的功能,与恒温系统工作过程类似。


按照一定的控制算法对湿度信息处理,控制输出量传送到驱动电路,在空气自然交换的基础上控制雾化器的工作,使湿度达到设定值,实现对箱体湿度的控制。

恒温恒湿光照培养箱温控仪表使用注意事项:

设定温度时,严格按照恒温摇床技术参数规范操作,严谨超范围使用,否则后果自负。环境温度不可超越28℃,如高于此温度,应打开窗户通风,或者打开空调辅助降温,否则因压缩机连续制冷,超负荷工作,而导致缩短压缩机使用寿命。

Ⅵ 控制恒温恒湿的算法

目前,恒温恒湿空调系统的应用场合越来越多,例如在电子、医院、计量、纺织和光学仪器等领域,以保证一些产品或操作处于恒温恒湿的环境。

一种恒温恒湿系统的控制方法,包括:

测量恒温恒湿室内的实际室温T1测和实际室内露点温度T2测;

根据实际室温T1测与恒温恒湿系统的送风部的设定送风温度T1设的差值△T1对T1设进行校正:T1校=T1设+f(△T1),其中,△T1=T1测-T1设,△T1>0时,f(△T1)<0,△T1<0时,f(△T1)>0,T1校为所述送风部的校正后的设定送风温度;

根据实际室内露点温度T2测与恒温恒湿系统的送风部的设定送风露点温度T2设的差值△T2对T2设进行校正:T2校=T2设+F(△T2),其中,△T2=T2测-T2设,△T2>0时,F(△T2)<0,△T2<0时,F(△T2)>0,T2校为所述送风部的校正后的设定送风露点温度。

进一步地,f(△T1)和F(△T2)分别由控制器通过PID计算得到。

进一步地,恒温恒湿系统制冷时,送风部校正后的设定送风温度为T1校,

恒温恒湿系统制热时,所述送风部校正后的设定送风温度为T1’校,T1’校=T1校-第一死区温度,0<第一死区温度≦1℃;

恒温恒湿系统除湿时,所述送风部校正后的设定送风露点温度为T2校,

恒温恒湿系统加湿时,所述送风部校正后的设定送风露点温度为T2’,T2’校=T2校-第二死区温度,0<第二死区温度≦1℃。

进一步地,恒温恒湿系统包括冷却单元,当所述恒温恒湿系统用于降温和除湿时,所述恒温恒湿系统通过所述冷却单元进行降温和除湿;所述冷却单元包括第一换热管和设置于所述第一换热管上的第一控制阀,当根据所述T1校和所述T2校的控制所述第一控制阀具有不同的开度变化值时,所述控制器以所述T1校和所述T2校中令所述第一控制阀开度变化值更大的一个来控制所述第一控制阀的开度变化。

Ⅶ 控制恒温恒湿的算法

恒温恒湿空调系统的应用场合越来越多,例如在电子、医院、计量、纺织和光学仪器等领域,以保证一些产品或操作处于恒温恒湿的环境。

但是,目前的恒温恒湿系统存在以下问题:

当室内的温度升高或降低时,恒温恒湿系统的新风空调机组的设定送风温度不会变化,导致制冷或加热的能耗增加;当室内露点温度升高或降低时,恒温恒湿系统的新风空调机组的设定送风露点不会变化,导致除湿或加湿的能耗增加。

技术实现要素:

本发明的一个目的在于提出一种能耗小的恒温恒湿系统的控制方法;

本发明的另一个目的在于提出一种能耗小的恒温恒湿系统。

为达此目的,一方面,本发明采用以下技术方案:

一种恒温恒湿系统的控制方法,包括:

测量恒温恒湿室内的实际室温T1测和实际室内露点温度T2测;

根据实际室温T1测与恒温恒湿系统的送风部的设定送风温度T1设的差值△T1对T1设进行校正:T1校=T1设+f(△T1),其中,△T1=T1测-T1设,△T1>0时,f(△T1)<0,△T1<0时,f(△T1)>0,T1校为所述送风部的校正后的设定送风温度;

根据实际室内露点温度T2测与恒温恒湿系统的送风部的设定送风露点温度T2设的差值△T2对T2设进行校正:T2校=T2设+F(△T2),其中,△T2=T2测-T2设,△T2>0时,F(△T2)<0,△T2<0时,F(△T2)>0,T2校为所述送风部的校正后的设定送风露点温度。

进一步地,f(△T1)和F(△T2)分别由控制器通过PID计算得到。

进一步地,恒温恒湿系统制冷时,送风部校正后的设定送风温度为T1校,

恒温恒湿系统制热时,所述送风部校正后的设定送风温度为T1’校,T1’校=T1校-第一死区温度,0<第一死区温度≦1℃;

恒温恒湿系统除湿时,所述送风部校正后的设定送风露点温度为T2校,

恒温恒湿系统加湿时,所述送风部校正后的设定送风露点温度为T2’,T2’校=T2校-第二死区温度,0<第二死区温度≦1℃。

进一步地,恒温恒湿系统包括冷却单元,当所述恒温恒湿系统用于降温和除湿时,所述恒温恒湿系统通过所述冷却单元进行降温和除湿;所述冷却单元包括第一换热管和设置于所述第一换热管上的第一控制阀,当根据所述T1校和所述T2校的控制所述第一控制阀具有不同的开度变化值时,所述控制器以所述T1校和所述T2校中令所述第一控制阀开度变化值更大的一个来控制所述第一控制阀的开度变化。

另一方面,本发明采用以下技术方案:

一种恒温恒湿系统,包括控制器和分别与所述控制器连接的温度调节部、湿度调节部、送风部、室温传感器和室内露点温度传感器;

所述送风部用于将经过所述温度调节部和所述湿度调节部处理过的空气供入至所述恒温恒湿室内,所述送风部的设定送风温度为T1设,所述送风部的设定送风露点温度为T2设,所述室内温度传感器和所述室内露点传感器分别用于测量恒温恒湿室内的实际室温T1测和实际室内露点温度T2测;

所述控制器用于根据T1测与T1设的差值△T1对T1设进行校正、以及根据T2测与T2设的差值△T2对T2设进行校正,其中:

T1校=T1设+f(△T1),其中,△T1=T1测-T1设,△T1>0时,f(△T1)<0,△T1<0时,f(△T1)>0,T1校为所述送风部的校正后的设定送风温度,

T2校=T2设+F(△T2),其中,△T2=T2测-T2设,△T2>0时,F(△T2)<0,△T2<0时,F(△T2)>0,T2校为所述送风部的校正后的设定送风露点温度。

进一步地,f(△T1)和F(△T2)分别由所述控制器通过PID计算得到。

进一步地,所述湿度调节部包括分别与所述控制器连接的冷却单元和加湿器;当所述恒温恒湿系统用于除湿时,所述控制器关闭所述加湿器并控制所述冷却单元工作;当所述恒温恒湿系统用于加湿时,所述控制器控制关闭所述冷却单元并控制所述加湿器工作。

进一步地,当所述恒温恒湿系统用于降温和除湿时,所述恒温恒湿系统通过所述冷却单元进行降温和除湿;

所述冷却单元包括第一换热管和设置于所述第一换热管上的第一控制阀,当分别根据所述T1校和所述T2校的控制所述第一控制阀具有不同的开度变化值时,所述控制器以所述T1校和所述T2校中令所述第一控制阀开度变化值更大的一个来控制所述第一控制阀的开度变化。

进一步地,所述恒温恒湿系统还包括新风管和回风部,所述新风管和所述回风部的风出口均分别与所述温度调节装置的进风口以及所述湿度调节装置的进风口连通。

进一步地,所述新风管内设置有过滤结构。

本发明的有益效果如下:

本发明提供的恒温恒湿系统及其控制方法,其设定送风温度和设定送风露点温度不是固定的,而是基于实际室温和实际室内露点温度与该设定值的差值对该设定值进行校正、自动调整,采用闭环自动控制,避免恒温恒湿系统高能耗的运行,整体运行成本低。

附图说明

图1是本发明优选实施例一提供的恒温恒湿系统控制方法的示意图。

具体实施方式

下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。

优选实施例一:

本优选实施例提供了一种恒温恒湿系统的控制方法,该方法具体为:

测量恒温恒湿室内的实际室温T1测和实际室内露点温度T2测;

根据实际室温T1测与恒温恒湿系统的送风部的设定送风温度T1设的差值△T1对T1设进行校正:T1校=T1设+f(△T1),其中,△T1=T1测-T1设,△T1>0时,f(△T1)<0,△T1<0时,f(△T1)>0,T1校为送风部的校正后的设定送风温度;

根据实际室内露点温度T2测与恒温恒湿系统的送风部的设定送风露点温度T2设的差值△T2对T2设进行校正:T2校=T2设+f(△T2),其中,△T2=T2测-T2设,△T2>0时,f(△T2)<0,△T2<0时,f(△T2)>0,T2校为送风部的校正后的设定送风露点温度。

其中,f(△T1)和F(△T2)可以分别由控制器通过PID(Proportion Integration Differentiation)计算得到。PID的运算控制量包括比例单元P、积分单元I和微分单元D。PID运算中把收集到的数据△T1或△T2和一个参考值进行比较,然后把这个差别用于计算f(△T1)或F(△T2)。其中,比例单元P、积分单元I和微分单元D以及参考值均可由经验参数或调试参数获得。

本实施例中,例如,当恒温恒湿系统制冷且T1设=22℃时,如果T1测=23℃,△T=1>0,此时f(△T1)<0,T1校=22℃+f(△T1)。即当室温偏高,超过设定值22℃时,新风空调机组可以低于22℃的值送风,而不是以22℃送风。当恒温恒湿系统制冷且T1设=22℃时,如果T1测=21℃,△T=1<0,此时f(△T1)>0,T1校=22℃+f(△T1)。即当室温偏低,超过设定值22℃时,恒温恒湿系统可以以高于22℃的温度值送风,而不是以22℃送风。

本实施例提供的恒温恒湿系统的控制方法,其设定送风温度和设定送风露点温度不是固定的,而是基于实际室温和实际室内露点温度与该设定值的差值对该设定值进行校正、自动调整,采用闭环自动控制,避免恒温恒湿系统高能耗的运行,整体运行成本低。

本实施例中,在上述方法的基础上,恒温恒湿系统制冷时,送风部校正后的设定送风温度为T1校,恒温恒湿系统制热时,送风部校正后的设定送风温度为T1’校,T1’校=T1校-第一死区温度,0<第一死区温度≦1℃;恒温恒湿系统除湿时,送风部校正后的设定送风露点温度为T2校,恒温恒湿系统加湿时,送风部校正后的设定送风露点温度为T2’,T2’校=T2校-第二死区温度,0<第二死区温度≦1℃。第一死区温度和第二死区温度是指由于恒温恒湿系统无法精确控制的温度区域,其具体值可以根据恒温恒湿系统的控制精度进行选择。

本实施例中,在上述方法的基础上,恒温恒湿系统包括冷却单元,当恒温恒湿系统用于降温和除湿时,恒温恒湿系统通过冷却单元进行降温和除湿;

冷却单元包括第一换热管和设置于第一换热管上的第一控制阀,当分别根据T1校和T2校的控制第一控制阀具有不同的开度变化值时,控制器以T1校和T2校中令第一控制阀开度变化值更大的一个来控制第一控制阀的开度变化。

本实施例还提供了一种用于实现上述恒温恒湿系统控制方法的恒温恒湿系统,其包括控制器和分别与控制器连接的温度调节部、湿度调节部、送风部、室温传感器和室内露点温度传感器;送风部用于将经过温度调节部和湿度调节部处理过的空气供入至恒温恒湿室内,送风部的设定送风温度为T1设,送风部的设定送风露点温度为T2设,室内温度传感器和室内露点传感器分别用于测量恒温恒湿室内的实际室温T1测和实际室内露点温度T2测;

控制器用于根据T1测与T1设的差值△T1对T1设进行校正、以及根据T2测与T2设的差值△T2对T2设进行校正,其中:

T1校=T1设+f(△T1),其中,△T1=T1测-T1设,△T1>0时,f(△T1)<0,△T1<0时,f(△T1)>0,T1校为送风部的校正后的设定送风温度,

T2校=T2设+F(△T2),其中,△T2=T2测-T2设,△T2>0时,F(△T2)<0,△T2<0时,F(△T2)>0,T2校为送风部的校正后的设定送风露点温度。

本实施例提供的恒温恒湿系统,其设定送风温度和设定送风露点温度不是固定的,而是基于实际室温和实际室内露点温度与该设定值的差值对该设定值进行校正、自动调整,采用闭环自动控制,避免恒温恒湿系统高能耗的运行,整体运行成本低。

本实施例中,在上述结构的基础上,f(△T1)和F(△T2)分别由控制器通过PID计算得到。

本实施例中,在上述结构的基础上,湿度调节部包括分别与控制器连接的冷却单元和加湿器;当恒温恒湿系统用于除湿时,控制器关闭加湿器并控制冷却单元工作;当恒温恒湿系统用于加湿时,控制器控制关闭冷却单元并控制加湿器工作。当恒温恒湿系统用于加湿时,控制器控制以T2’校作为送风部的二次校正后的设定送风露点温度,T2’校=T2校-第二死区温度,0<第二死区温度≦1℃。

本实施例中,在上述结构的基础上,温度调节部包括分别与控制器连接的预热单元和再热单元,预热单元包括第二换热管、预热温度传感器和设置于第二换热管上的第二控制阀,预热温度传感器用于测量第二换热管的实际预热温度T11测;控制器用于在第二换热管的实际预热温度T11测大于换热管的设定预热温度时减小第二控制阀的开度,在实际预热温度T11测小于换热管的设定预热温度时增大第二控制阀的开度。

本实施例中,在上述结构的基础上,恒温恒湿系统还包括新风管和回风部,新风管和回风部的风出口均分别与温度调节装置的进风口以及湿度调节装置的进风口连通。新风管内优选但不局限为设置有过滤结构。

Ⅷ 挤出机PLC用什么算法可以通过接触器控制电加热完成恒温控制,像温控表一样

常用的是PID算法。其控制输出为周期固定占空比可变的方波,从而周期性的控制交流接触器的通断。但在负载电流较大或者温控精度要求较高的情况下,使用机械触点可能不是很好的办法,毕竟频繁的通断,对机械触点的寿命是需要考虑的问题。更多的时候是使用非机械触点比如固态继电器等更适合更高通断频率的部件做为功率端的控制部件。

Ⅸ 有谁知道恒温恒湿试验机的毛细管长度和内径怎么个算法实际运用的经验,务必是做过这行业的制冷工程设计

看在有20个铜板的份上~~
你好,你这个问题问得有点粗糙了。因为毛细管本身就是起到节流器的作用,对不同的工质(制冷剂)/不同的流量/不同的设计工况都是不一样的。如果要计算,那会非常复杂。
①首先要考虑工质的设计工况,在毛细管前后的状态/流量,再套进去理想状态方程里面计算。
②过长会节流过度,果断会节流不足,而不同的冷量对应的留量又不一样。还要考虑压降。
③粗了节流不足,细了阻力又太大。
但是实际上计算的时候,在截面突变的位置还会有一个流阻系数,工艺方式也不一样,可以说,同个厂家,没有自己的经验值情况下,完全没办法确定下来的。除非用流体软件模拟,但是这样花的时间太多啦,而且也不准,所以最好还是试。

个人建议:
①首先选用一个简单便宜的膨胀阀,确定好系统的最佳状态下的流量是多少,膨胀阀前后工况是多少;
②配选几根自己认为差不多的毛细管,我以前只用过3/5/8几种铜管管径的,在毛细管前后加一个铜管接头,一个一个试试看,哪个接近最佳状态用哪个。
如果你有制冷量和制冷剂系统图,我大概可以给个参考值给你。需要的话大家交流下。

热点内容
消防防诈骗脚本 发布:2025-05-17 22:49:31 浏览:876
凯酷2021选哪个配置 发布:2025-05-17 22:46:06 浏览:659
苹果好用的解压软件 发布:2025-05-17 22:42:23 浏览:381
我的世界服务器莫名崩溃 发布:2025-05-17 22:40:57 浏览:477
我的世界utc服务器ip 发布:2025-05-17 22:36:19 浏览:740
新闻压缩要素 发布:2025-05-17 22:22:11 浏览:118
耳机没有声音怎么办安卓 发布:2025-05-17 22:16:29 浏览:583
bc8android导航 发布:2025-05-17 22:15:50 浏览:639
什么配置的车标好 发布:2025-05-17 21:41:20 浏览:203
linux支持线程 发布:2025-05-17 21:26:14 浏览:184