⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 temperaturemonitor.cpp

📁 很好c语言编写的pid算法,具有很好的参考价值
💻 CPP
字号:
////////////////////////////////////////////////////////
//	僼傽僀儖偺愢柧丗壏搙娔帇僋儔僗幚懱
////////////////////////////////////////////////////////
#include "Rtos.h"
#include "TemperatureMonitor.h"

////////////////////////////////////////////////////////
//	僋儔僗丗壏搙娔帇僋儔僗
//	婡  擻丗僐儞僗僩儔僋僞
//			曄悢偺弶婜壔
//	堷  悢丗側偟
//	栠傝抣丗側偟
////////////////////////////////////////////////////////
TemperatureMonitor::TemperatureMonitor()
{
	this->temperetureCondition = TEMP_COND_BOIL;		//弶婜忬懺傪壛擬忬懺偲偡傞
	this->reboilFlag = FALSE;
}


////////////////////////////////////////////////////////
//	僋儔僗丗壏搙娔帇僋儔僗
//	婡  擻丗悈壏偺娔帇偲惂屼
//			偼偠傔偵搾傪暒偐偟嶦嬠偟偨屻曐壏偵堏傞丅
//			婎杮揑偵偼揹尮偑擖偭偰偄傞娫偼忢偵曐壏傪偍偙側偆丅
//			乽暒摣乿儃僞儞墴壓帪丄奧傪暵偠偨帪偵嵞搙暒偐偟捈偡丅
//	堷  悢丗枹巊梡
//	栠傝抣丗側偟
////////////////////////////////////////////////////////
VOID TemperatureMonitor::monitorTemperatureTask( INT StaCd )
{
	for( ; ; )
	{
		this->temperetureCondition = TEMP_COND_BOIL;
		this->boil( STERILIZE_TEMP );								// 偼偠傔偼 100亷偵壛擬偡傞
		this->temperetureCondition = TEMP_COND_STERILIZE;
				this->sterilize( STERILIZE_TIME , STERILIZE_TEMP );	// 3 暘娫 100 亷偵偡傞
		this->temperetureCondition = TEMP_COND_KEEP;
		this->keep(  );									// 曐壏
	}
}


////////////////////////////////////////////////////////
//	僋儔僗丗壏搙娔帇僋儔僗
//	婡  擻丗壛擬
//			壛擬偺栚昗壏搙偵払偟偨傜敳偗傞丅
//	堷  悢丗栚昗壏搙
//	栠傝抣丗側偟
////////////////////////////////////////////////////////
VOID TemperatureMonitor::boil( SHORT Target )
{
	this->boilControl->setTargetTemperature( Target );	// 栚昗壏搙愝掕
	SHORT diff;
	do
	{
		diff = this->boilControl->control();			// 壏搙惂屼
	}
	while( diff );										// 栚昗壏搙偵払偟偨傜敳偗傞
}

////////////////////////////////////////////////////////
//	僋儔僗丗壏搙娔帇僋儔僗
//	婡  擻丗嶦嬠
//			巜掕帪娫偺曐壏傪偍偙側偆
//	堷  悢丗帪娫
//			堐帩偡傞壏搙
//	栠傝抣丗側偟
////////////////////////////////////////////////////////
VOID TemperatureMonitor::sterilize( SHORT Time, SHORT Target )
{
	this->sterilizeControl->setTargetTemperature( Target );		// 栚昗壏搙愝掕
	SHORT Period = this->sterilizeControl->getControlPeriod();
	for( SHORT i = 0; i < (Time / Period) ; ++i )
	{
		this->sterilizeControl->control();				// 壏搙惂屼
	}
}


////////////////////////////////////////////////////////
//	僋儔僗丗壏搙娔帇僋儔僗
//	婡  擻丗曐壏
//			愝掕壏搙傪堐帩偟懕偗傞偑愡揹帪崗丄嵞壛擬偺梫媮偑偁偭偨帪偼敳偗傞
//	堷  悢丗側偟
//	栠傝抣丗側偟
////////////////////////////////////////////////////////
VOID TemperatureMonitor::keep(  )
{
	this->reboilFlag = FALSE;
	while( !(this->reboilFlag) )
	{
		if( this->powerSaverObj->isPowerOffTime() == TRUE )		// 揹尮傪愗傞帪娫偐傪挷傋傞
		{
			break;												// 愡揹帪娫偵側偭偨傜曐壏傪傗傔傞
		}
		SHORT Target = this->temperatureSelectorObj->getTargetTemperature();	// 栚昗壏搙傪庢摼偡傞
		this->keepControl->setTargetTemperature( Target );	// 栚昗壏搙愝掕
		this->keepControl->control();						// 壏搙惂屼
	}

	// 愡揹帪娫拞偼嵞壛擬偵峴偐側偄傛偆偵偡傞
	while( this->powerSaverObj->isPowerOffTime() == TRUE )		// 揹尮傪愗傞帪娫偐傪挷傋傞
	{
		this->heaterControllObj->StopHeating();					// 僸乕僞乕傪掆巭偡傞
		dly_tsk( MONITOR_CONTROL_PERIOD );
	}
	this->reboilFlag = FALSE;
}

////////////////////////////////////////////////////////
//	僋儔僗丗壏搙娔帇僋儔僗
//	婡  擻丗暒偐偟捈偟
//			暒偐偟捈偡帪偵幚峴偡傞
//			曐壏偺壏搙惂屼傪拞抐偡傞偨傔偺僼儔僌傪愝掕偡傞
//	堷  悢丗側偟
//	栠傝抣丗側偟
////////////////////////////////////////////////////////
VOID TemperatureMonitor::reboil(  )
{
	this->keepControl->breakWaitControlPeriod();
	this->reboilFlag = TRUE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -