當前位置:首頁 » 操作系統 » 恆溫演算法

恆溫演算法

發布時間: 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-18 04:13:28 瀏覽:370
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:606
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:27
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:100
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:935
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:728
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:797
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:504
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:367
ef資料庫查詢數據 發布:2025-05-18 03:29:36 瀏覽:669