91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 0M
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2025-03-03
  • 語言: 其他
  • 標(biāo)簽: 其他??

資源簡(jiǎn)介

PID_AutoTune_v0.rar

資源截圖

代碼片段和文件信息

#if?ARDUINO?>=?100
??#include?“Arduino.h“
#else
??#include?“WProgram.h“
#endif

#include?


PID_ATune::PID_ATune(double*?Input?double*?Output)
{
input?=?Input;
output?=?Output;
controlType?=0?;?//default?to?PI
noiseBand?=?0.5;
running?=?false;
oStep?=?30;
SetLookbackSec(10);
lastTime?=?millis();

}



void?PID_ATune::Cancel()
{
running?=?false;
}?
?
int?PID_ATune::Runtime()
{
justevaled=false;
if(peakCount>9?&&?running)
{
running?=?false;
FinishUp();
return?1;
}
unsigned?long?now?=?millis();

if((now-lastTime) lastTime?=?now;
double?refVal?=?*input;
justevaled=true;
if(!running)
{?//initialize?working?variables?the?first?time?around
peakType?=?0;
peakCount=0;
justchanged=false;
absMax=refVal;
absMin=refVal;
setpoint?=?refVal;
running?=?true;
outputStart?=?*output;
*output?=?outputStart+oStep;
}
else
{
if(refVal>absMax)absMax=refVal;
if(refVal }

//oscillate?the?output?base?on?the?input‘s?relation?to?the?setpoint

if(refVal>setpoint+noiseBand)?*output?=?outputStart-oStep;
else?if?(refVal

??//bool?isMax=true?isMin=true;
??isMax=true;isMin=true;
??//id?peaks
??for(int?i=nLookBack-1;i>=0;i--)
??{
????double?val?=?lastInputs[i];
????if(isMax)?isMax?=?refVal>val;
????if(isMin)?isMin?=?refVal????lastInputs[i+1]?=?lastInputs[i];
??}
??lastInputs[0]?=?refVal;??
??if(nLookBack<9)
??{??//we?don‘t?want?to?trust?the?maxes?or?mins?until?the?inputs?array?has?been?filled
return?0;
}
??
??if(isMax)
??{
????if(peakType==0)peakType=1;
????if(peakType==-1)
????{
??????peakType?=?1;
??????justchanged=true;
??????peak2?=?peak1;
????}
????peak1?=?now;
????peaks[peakCount]?=?refVal;
???
??}
??else?if(isMin)
??{
????if(peakType==0)peakType=-1;
????if(peakType==1)
????{
??????peakType=-1;
??????peakCount++;
??????justchanged=true;
????}
????
????if(peakCount<10)peaks[peakCount]?=?refVal;
??}
??
??if(justchanged?&&?peakCount>2)
??{?//we‘ve?transitioned.??check?if?we?can?autotune?based?on?the?last?peaks
????double?avgSeparation?=?(abs(peaks[peakCount-1]-peaks[peakCount-2])+abs(peaks[peakCount-2]-peaks[peakCount-3]))/2;
????if(?avgSeparation?????{
FinishUp();
??????running?=?false;
??return?1;
?
????}
??}
???justchanged=false;
return?0;
}
void?PID_ATune::FinishUp()
{
??*output?=?outputStart;
??????//we?can?generate?tuning?parameters!
??????Ku?=?4*(2*oStep)/((absMax-absMin)*3.14159);
??????Pu?=?(double)(peak1-peak2)?/?1000;
}

double?PID_ATune::GetKp()
{
return?controlType==1???0.6?*?Ku?:?0.4?*?Ku;
}

double?PID_ATune::GetKi()
{
return?controlType==1??1.2*Ku?/?Pu?:?0.48?*?Ku?/?Pu;??//?Ki?=?Kc/Ti
}

double?PID_ATune::GetKd()
{
return?controlType==1??0.075?*?Ku?*?Pu?:?0;??//Kd?=?Kc?*?Td
}

void?PID_ATune::SetOutputS

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件???????3673??2016-10-19?18:31??PID_AutoTune_v0.cpp

?????文件???????1735??2016-10-19?18:32??PID_AutoTune_v0.h

-----------?---------??----------?-----??----

?????????????????5408????????????????????2


評(píng)論

共有 條評(píng)論