Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Podesavanje PID parametara primenom Ziegler-Nichols metode

[es] :: Elektronika :: Podesavanje PID parametara primenom Ziegler-Nichols metode

Strane: 1 2 3

[ Pregleda: 16854 | Odgovora: 57 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

zivadin_despot
Živadin Despotović
Novi Sad

Član broj: 175438
Poruke: 704
*.dynamic.isp.telekom.rs.



+5 Profil

icon Podesavanje PID parametara primenom Ziegler-Nichols metode29.12.2014. u 12:20 - pre 113 meseci
Pozdrav svima, interesuje me praktican postupak odredjivanja parametara PID regulatora metodom ZN sa relejem u povratnoj sprezi. Obicna ZN metoda bi isla ovako:
1. Podesimo Kp na neku pocetnu malu vrednost, uticaj ostali nuliramo (Ti-veliko,Td-0)
2. Ukljucimo regulator i pratimo odziv.
3. Kp povecavamo dok se ne dobiju neprigusene periodicne oscilacije oko reference.
4. Zabelezimo Kp (Kp-kriticno) i izmerimo periodu oscilacija (T-kriticno)
5. Na osnovu ovih vrednosti i tipa regulatora (P,PI,PID) uzimamo vrednosti iz tabele ZN.

E sad nije bas najjasniji postupak rada ukoliko imamo relej u povratnoj sprezi.
Evo kako sam ja shvatio:
1. Pocetne parametre podesimo kao prethodno
2. Na izlaz prosledjujemo relejni izlaz, tj. ukoliko je greska pozitivna izlaz je negativan i suprotno.
3. Meri se prioda izlaznog signala (perioda releja)
4. Meri se amplituda greske.

Nije mi jasno kad se staje sa postupkom, odnosno da li se prestaje kao i u prethodnom slucaju, ako je da, cemu onda ova metoda?
Mana metode u originalu je sto se sistem dovodi na ivicu stabilnog stanja, te je problematican u industriji.

Ovde je to delimicno objasnjeno i prilozen je C kod...

Svaka pomoc je dobrodosla...

Hvala
 
Odgovor na temu

vladd

Član broj: 37217
Poruke: 12059
*.dynamic.isp.telekom.rs.



+5251 Profil

icon Re: Podesavanje PID parametara primenom Ziegler-Nichols metode29.12.2014. u 17:19 - pre 113 meseci
PID "na releju" zahteva konverziju napona u djuti sajkl, odnosno generisanje neke frekvencije rada relea.
 
Odgovor na temu

zivadin_despot
Živadin Despotović
Novi Sad

Član broj: 175438
Poruke: 704
*.dynamic.isp.telekom.rs.



+5 Profil

icon Re: Podesavanje PID parametara primenom Ziegler-Nichols metode29.12.2014. u 20:10 - pre 113 meseci
Da to je ok kada je kao aktuator postavljen relej. Medjutim ovde se relej koristi za na drugi nacin. Ovde sam pronasao dobar tekst o nacinu odredjivanja parametara na ovaj nacin, pa ako je neko zainteresovan mozemo to sve ovde zajedno protumaciti...
Cilj mi je da pokusam realizovati samopodesivi PID regulator, nekim mikroprocesorom...

Na str 22 je objasnjenje...
 
Odgovor na temu

Trick Fix
Behind a soldering iron

Član broj: 314532
Poruke: 1251
*.dynamic.isp.telekom.rs.



+1909 Profil

icon Re: Podesavanje PID parametara primenom Ziegler-Nichols metode29.12.2014. u 23:17 - pre 113 meseci
Citat:
zivadin_despot:sa relejem u povratnoj sprezi.....Mana metode...je sto se sistem dovodi na ivicu stabilnog stanja, te je problematican u industriji.


TAČNO !

Nikad mi se nisu sviđala inženjerska rešenja gde je mehanički rele u povratnoj vezi.

Takvi sistemi umeju da budu toliko "NERVOZNI" da sve u ormanu klacka,škljoca,štekče,brekče , trese se i na kraju propadne,
razglavi se i sve stane.....

Da ne pričam da i izvršni elementi (aktuatori, magneti, motori sa supčastim letvama itd ) su nahhebli od tog neprekidnog trzanja vamo-tamo.

-i sve to ne traje dugo,

Takva rešenja nisu Volkswagen Buba....


 
Odgovor na temu

mikikg
System administrator
Srbija

Član broj: 3779
Poruke: 5059
*.dynamic.isp.telekom.rs.

Sajt: yu3ma.net


+505 Profil

icon Re: Podesavanje PID parametara primenom Ziegler-Nichols metode30.12.2014. u 06:28 - pre 113 meseci
@zivadin_despot Pogledaj ovu temu ako vec nisi, tu smo se u par zadnjih stranica teme dotakli PID regulacije u digitalnom domenu:
http://www.elitesecurity.org/t...PWM-regulacija-sa-naponskim-FB

Nebitno je sto tu pricamo o PWM i regulaciji napona, potpuno ISTA pravila za PID vaze za sve druge primene ...
Site about Software Defined Radio – SDR
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator
 
Odgovor na temu

zivadin_despot
Živadin Despotović
Novi Sad

Član broj: 175438
Poruke: 704
*.dynamic.isp.telekom.rs.



+5 Profil

icon Re: Podesavanje PID parametara primenom Ziegler-Nichols metode30.12.2014. u 22:36 - pre 113 meseci
Pozdrav, nisam detaljno sve procitao, vec delove...
Uglavnom ne pokusavam da realizujem PID regulator u digitalnoj tehnici, vec algoritam za odredjivanje parametara PID-a, konkretno ZN metodu.
Pronasao sam arduino biblioteku sa ovim algoritmom, i delimicno objasnjenje. Biblioteka je zasnovana na simulink modelu...
Ovo je kod:
h file
Code:

#ifndef PID_AutoTune_v0
#define PID_AutoTune_v0
#define LIBRARY_VERSION    0.0.1

class PID_ATune
{


  public:
  //commonly used functions **************************************************************************
    PID_ATune(double*, double*);                           // * Constructor.  links the Autotune to a given PID
    int Runtime();                                              // * Similar to the PID Compue function, returns non 0 when done
    void Cancel();                                           // * Stops the AutoTune    
    
    void SetOutputStep(double);                               // * how far above and below the starting value will the output step?    
    double GetOutputStep();                                   // 
    
    void SetControlType(int);                                // * Determies if the tuning parameters returned will be PI (D=0)
    int GetControlType();                                   //   or PID.  (0=PI, 1=PID)            
    
    void SetLookbackSec(int);                            // * how far back are we looking to identify peaks
    int GetLookbackSec();                                //
    
    void SetNoiseBand(double);                            // * the autotune will ignore signal chatter smaller than this value
    double GetNoiseBand();                                //   this should be acurately set
    
    double GetKp();                                        // * once autotune is complete, these functions contain the
    double GetKi();                                        //   computed tuning parameters.  
    double GetKd();                                        //
    
  private:
    void FinishUp();
    bool isMax, isMin;
    double *input, *output;
    double setpoint;
    double noiseBand;
    int controlType;
    bool running;
    unsigned long peak1, peak2, lastTime;
    int sampleTime;
    int nLookBack;
    int peakType;
    double lastInputs[101];
    double peaks[10];
    int peakCount;
    bool justchanged;
    bool justevaled;
    double absMax, absMin;
    double oStep;
    double outputStart;
    double Ku, Pu;
    
};
#endif


cpp file
Code:

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

#include <PID_AutoTune_v0.h>


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)<sampleTime) return false;
    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<absMin)absMin=refVal;
    }
    
    //oscillate the output base on the input's relation to the setpoint
    
    if(refVal>setpoint+noiseBand) *output = outputStart-oStep;
    else if (refVal<setpoint-noiseBand) *output = outputStart+oStep;
    
    
  //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<val;
    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 < 0.05*(absMax-absMin))
    {
        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::SetOutputStep(double Step)
{
    oStep = Step;
}

double PID_ATune::GetOutputStep()
{
    return oStep;
}

void PID_ATune::SetControlType(int Type) //0=PI, 1=PID
{
    controlType = Type;
}
int PID_ATune::GetControlType()
{
    return controlType;
}
    
void PID_ATune::SetNoiseBand(double Band)
{
    noiseBand = Band;
}

double PID_ATune::GetNoiseBand()
{
    return noiseBand;
}

void PID_ATune::SetLookbackSec(int value)
{
    if (value<1) value = 1;
    
    if(value<25)
    {
        nLookBack = value * 4;
        sampleTime = 250;
    }
    else
    {
        nLookBack = 100;
        sampleTime = value*10;
    }
}

int PID_ATune::GetLookbackSec()
{
    return nLookBack * sampleTime / 1000;
}



 
Odgovor na temu

Trick Fix
Behind a soldering iron

Član broj: 314532
Poruke: 1251
*.dynamic.isp.telekom.rs.



+1909 Profil

icon Re: Podesavanje PID parametara primenom Ziegler-Nichols metode30.12.2014. u 22:50 - pre 113 meseci
....Uuuu ebt,

Idem ja da dam babi lek...
 
Odgovor na temu

zivadin_despot
Živadin Despotović
Novi Sad

Član broj: 175438
Poruke: 704
*.dynamic.isp.telekom.rs.



+5 Profil

icon Re: Podesavanje PID parametara primenom Ziegler-Nichols metode30.12.2014. u 22:54 - pre 113 meseci
Ovde je objasnjenje principa rada i eliminacija suma u povratnoj sprezi...
Ovo je primer koriscenja biblioteke:
Code:

#include <PID_v1.h>
#include <PID_AutoTune_v0.h>

byte ATuneModeRemember=2;
double input=80, output=50, setpoint=180;
double kp=2,ki=0.5,kd=2;

double kpmodel=1.5, taup=100, theta[50];
double outputStart=5;
double aTuneStep=50, aTuneNoise=1, aTuneStartValue=100;
unsigned int aTuneLookBack=20;

boolean tuning = false;
unsigned long  modelTime, serialTime;

PID myPID(&input, &output, &setpoint,kp,ki,kd, DIRECT);
PID_ATune aTune(&input, &output);

//set to false to connect to the real world
boolean useSimulation = true;

void setup()
{
  if(useSimulation)
  {
    for(byte i=0;i<50;i++)
    {
      theta[i]=outputStart;
    }
    modelTime = 0;
  }
  //Setup the pid 
  myPID.SetMode(AUTOMATIC);

  if(tuning)
  {
    tuning=false;
    changeAutoTune();
    tuning=true;
  }
  
  serialTime = 0;
  Serial.begin(9600);

}

void loop()
{

  unsigned long now = millis();

  if(!useSimulation)
  { //pull the input in from the real world
    input = analogRead(0);
  }
  
  if(tuning)
  {
    byte val = (aTune.Runtime());
    if (val!=0)
    {
      tuning = false;
    }
    if(!tuning)
    { //we're done, set the tuning parameters
      kp = aTune.GetKp();
      ki = aTune.GetKi();
      kd = aTune.GetKd();
      myPID.SetTunings(kp,ki,kd);
      AutoTuneHelper(false);
    }
  }
  else myPID.Compute();
  
  if(useSimulation)
  {
    theta[30]=output;
    if(now>=modelTime)
    {
      modelTime +=100; 
      DoModel();
    }
  }
  else
  {
     analogWrite(0,output); 
  }
  
  //send-receive with processing if it's time
  if(millis()>serialTime)
  {
    SerialReceive();
    SerialSend();
    serialTime+=500;
  }
}

void changeAutoTune()
{
 if(!tuning)
  {
    //Set the output to the desired starting frequency.
    output=aTuneStartValue;
    aTune.SetNoiseBand(aTuneNoise);
    aTune.SetOutputStep(aTuneStep);
    aTune.SetLookbackSec((int)aTuneLookBack);
    AutoTuneHelper(true);
    tuning = true;
  }
  else
  { //cancel autotune
    aTune.Cancel();
    tuning = false;
    AutoTuneHelper(false);
  }
}

void AutoTuneHelper(boolean start)
{
  if(start)
    ATuneModeRemember = myPID.GetMode();
  else
    myPID.SetMode(ATuneModeRemember);
}


void SerialSend()
{
  Serial.print("setpoint: ");Serial.print(setpoint); Serial.print(" ");
  Serial.print("input: ");Serial.print(input); Serial.print(" ");
  Serial.print("output: ");Serial.print(output); Serial.print(" ");
  if(tuning){
    Serial.println("tuning mode");
  } else {
    Serial.print("kp: ");Serial.print(myPID.GetKp());Serial.print(" ");
    Serial.print("ki: ");Serial.print(myPID.GetKi());Serial.print(" ");
    Serial.print("kd: ");Serial.print(myPID.GetKd());Serial.println();
  }
}

void SerialReceive()
{
  if(Serial.available())
  {
   char b = Serial.read(); 
   Serial.flush(); 
   if((b=='1' && !tuning) || (b!='1' && tuning))changeAutoTune();
  }
}

void DoModel()
{
  //cycle the dead time
  for(byte i=0;i<49;i++)
  {
    theta[i] = theta[i+1];
  }
  //compute the input
  input = (kpmodel / taup) *(theta[0]-outputStart) + input*(1-1/taup) + ((float)random(-10,10))/100;

}


Konkretno sta meni nije jasno:
Po teoriji na objekat upravljanja se dovodi diskretan signal koji zavisi od izmerene vrednosti i zadate vrednosti. Npr na grejac, ukoliko je temperatura manja od zadate grejac je prikljucen na maksimalan napon, ukoliko je temperatura veca od zadate onda se grejac ISKLJUCUJE. Tokom rada meri se maksimalna i minimalna vrednost oscilacija, kao i perioda oscilacija. Na osnovu ovih vrednosti proracunava se Ku i Tu, a zatim se parametri odredjuju na osnovu tabele.
Prvo pitanje da li se grejac ukljucuje na maksimalnu vrednost i iskljucuje ili se napon npr menja 220-100?
Tu je perioda oscilovanja i to je jasno. Prilikom proracuna vrednosti Ku=4*D/(A*PI), vrednost A je razlika maksimalne i minimalne vrednosti povratne sprege, i to je neka vrednost AD konvertora, interesuje me koliko je D, (to se ddefinise na pocetku, ali kako?) Na slici se vide ove vrednosti...


Prikačeni fajlovi
 
Odgovor na temu

Trick Fix
Behind a soldering iron

Član broj: 314532
Poruke: 1251
*.dynamic.isp.telekom.rs.



+1909 Profil

icon Re: Podesavanje PID parametara primenom Ziegler-Nichols metode30.12.2014. u 23:07 - pre 113 meseci
..uuu bre... sad ču i sebi da dam lek..

Mislim da sistem lepše vrši regulaciju ako se pri nižoj temperaturi (a ima potrebe da se grejač uključi)

-Grejač ne "spuca" odma na direktnih 230Vac ....
..već se onako malo-po-malo dozira (klacka) ta "inekcija/ubacivanje" dodatne potrebne snage (energije)

..i tako se sa donje strane polako približis SET-POINT-u,


...a ne da ga rokneš odmah direkno na 230V... pa se SET-POINT ----onda "preleti" i ode isuviše preko zadate veličine,
 
Odgovor na temu

zivadin_despot
Živadin Despotović
Novi Sad

Član broj: 175438
Poruke: 704
*.dynamic.isp.telekom.rs.



+5 Profil

icon Re: Podesavanje PID parametara primenom Ziegler-Nichols metode30.12.2014. u 23:13 - pre 113 meseci
Nije mi jasan izlaz u ovom primeru....Vidim da on na analogni izlaz prosledjuje oscilacije (softverski relej sa amplitudom D), koliko sam uspeo da ispratim kod. Interesuje me sta dalje radi sa tom vrednoscu, prakticno.
Ono sta sam ja poceo da radim je regulacija temperature u nekoj kutiji (eksperiment na stolu) znaci imama AC grejac 200W na keramici, zatvorenu kutiju, senzor (NTC) i stm32f4 plocicu. Relejem regulisem temperaturu, rezultat PID-a ide na relej. Pre zapocinjanja sa pid regulacijom ovaj algoritam treba sam da odredi parametre pida a zatim da nastavi sa regulacijom.
Ja bih to ovako uradio (algoritam podesavanja):
1. ukljucim grejac i zapocnem sa semplovanjem temperature
2. dok je merena temperatura manja od zadate ostavljam ukljucen grejac
3. kada je merena temperatura veca, grejac iskljucujem
4. ponovo ga ukljucim kada vrednost opadne ispod zadate
5. ovo sve ponovim 5 puta (eksperimentalno)
6. merenjem odredim maksimalnu i minimalnu vrednost merene vrednosti
7. algoritam se odvija u prekidu tajmera na svaki 50ms (npr)
8. na osnovu detekcije preseka merene i zadate vrednosti odredim preiodu oscilovanja (poznata vrednost tajmera i vrednost brojaca npr)
9. vrednost tu dobijam u ms ili s
10. vrednost ku dobijam na osnovu fomule gde mi je min i max vredsnot ad konvertora i lupam njihova razlika je 2000, ALI VREDNOST D JE PROBLEMATICNA, JA BIH UZEO MAKSIMALNU VREDNOST AD KONVERTORA (jer ako bih sve vrednosti normalizovao prema vrednosti ad konvertora ili prema nekoj drugoj vrednosti tako bi se dobilo, ovim se ne mesaju babe i zabe)

Naravno da bih izbegao nepotrebna ukljucenja i iskljucenja postavicu neki histerezis kao u primeru, ali za pocetak da ne komplikujem sebi zivot verovacu da nema nekih velikih pikova (usrednicu to)

Sta mislite da li mi je ovaj postupa za pocetak dobar, da li sam dobro skapirao kako to sve radi?

Hvala
 
Odgovor na temu

zivadin_despot
Živadin Despotović
Novi Sad

Član broj: 175438
Poruke: 704
*.dynamic.isp.telekom.rs.



+5 Profil

icon Re: Podesavanje PID parametara primenom Ziegler-Nichols metode30.12.2014. u 23:17 - pre 113 meseci
Pozdrav Trick Fix,
misim da je bas fora da mu se gurne maksimalna snaga i prati se odziv sistema. Temperatura ce rasti neko vreme, i kada ona predje zadatu ja iskljucim grejac ali po inerciji ce temperatura nastaviti malo da raste. Kada opadne ispod zadate vrednosti ponovo ukljucim grejac. To vreme opadanja i rasta direktno zavisi od okoline (uslovi hladjenja u ovom slucaju) i tu se krije funkcija objekta koja je nepoznata. i na osnovu toga bi iz tog dela trebalo odredjivati parametre pid-a.
pozz
 
Odgovor na temu

Trick Fix
Behind a soldering iron

Član broj: 314532
Poruke: 1251
*.dynamic.isp.telekom.rs.



+1909 Profil

icon Re: Podesavanje PID parametara primenom Ziegler-Nichols metode30.12.2014. u 23:22 - pre 113 meseci
Ne sme da se rokne na FULL snagu !

Može FULL snaga u početku ......ali kad se sa donje strane približiš SET-POINT-u onda pređeš na polago "klackanje" i

na lagano doziranje kao " kap-po-kap" i na lagano približavanje zadatoj vrednosti---tako NEČE da se puno/previše preleti "crta"


Današnji ,moderni regulatori to urade ---a zove se AUTO TUNING,

..usnime tromost/inertnost/odziv sistema dok si rekao "KEKS",



[Ovu poruku je menjao Trick Fix dana 31.12.2014. u 03:40 GMT+1]
 
Odgovor na temu

zivadin_despot
Živadin Despotović
Novi Sad

Član broj: 175438
Poruke: 704
*.dynamic.isp.telekom.rs.



+5 Profil

icon Re: Podesavanje PID parametara primenom Ziegler-Nichols metode30.12.2014. u 23:32 - pre 113 meseci
Pazi ove delove
Code:

oStep = 30;
.
.
.
//oscillate the output base on the input's relation to the setpoint  
if(refVal>setpoint+noiseBand) *output = outputStart-oStep;
else if (refVal<setpoint-noiseBand) *output = outputStart+oStep;
.
.
.
void PID_ATune::FinishUp()
{
      *output = outputStart;
      //we can generate tuning parameters!
      Ku = 4*(2*oStep)/((absMax-absMin)*3.14159);
      Pu = (double)(peak1-peak2) / 1000;
}
.
.
.
analogWrite(0,output);


Ovde je amplituda diskretnog signala oStep=30 (odakle mu ovaj br nemam pojma), izlaz se prosledjuje na analogni izlaz i on osciluje oko outputStart sa amplitudom oStep. Znaci nema nekog postepenog doziranja na analognom izlazu vec ukljuci na +oStep i iskljuci na -oStep... Nisam uspeo da skontam kolika je vrednost outputStart da vidim oko cega osciluje.
Prakticno postoji mogucnost da se radi o sledecem da se grejac dovodi na lupam 220 i na 180, znaci da osciluje oko 200V sa amplitudom 20?
To nisam siguran...
 
Odgovor na temu

Trick Fix
Behind a soldering iron

Član broj: 314532
Poruke: 1251
*.dynamic.isp.telekom.rs.



+1909 Profil

icon Re: Podesavanje PID parametara primenom Ziegler-Nichols metode30.12.2014. u 23:41 - pre 113 meseci
Pazi kad uopšte nemam pojma kakve Ti ovde kuke-kvake kačiš i kakve su to "Hieroglife" ???? (mislim na te tvoje kodove i tabele)

Ja ti samo pričam iz praxe kako sam podešavao silne regulatore,

..ali "pametni" regulatori umeju da prepoznaju strminu/brzinu približavanja (aktuelne vrednosti) ----> SET-POINT-u

i na osnovu toga formiraju to "klackanje" o čemu ti pričam,

Kad kažem : FORMIRAJU ----mislim na parametre: brzinu i na "DjutiSajkl" te klackalice....
 
Odgovor na temu

zivadin_despot
Živadin Despotović
Novi Sad

Član broj: 175438
Poruke: 704
*.dynamic.isp.telekom.rs.



+5 Profil

icon Re: Podesavanje PID parametara primenom Ziegler-Nichols metode30.12.2014. u 23:55 - pre 113 meseci
Ok, jasno mi je o cemu govoris...Ovde konkretno pokusavam da razumem i realizujem ovaj algoritam...a ovi kodovi su vec napisane biblioteke za arduino
pozz
 
Odgovor na temu

Trick Fix
Behind a soldering iron

Član broj: 314532
Poruke: 1251
*.dynamic.isp.telekom.rs.



+1909 Profil

icon Re: Podesavanje PID parametara primenom Ziegler-Nichols metode31.12.2014. u 00:00 - pre 113 meseci
Pozdrav,

Svako Dobro,
 
Odgovor na temu

zivadin_despot
Živadin Despotović
Novi Sad

Član broj: 175438
Poruke: 704
*.dynamic.isp.telekom.rs.



+5 Profil

icon Re: Podesavanje PID parametara primenom Ziegler-Nichols metode31.12.2014. u 01:38 - pre 113 meseci
Sad sam iz navedenog koda pohvatao da pri startu samopodesavanja output dobija vrednost 100 i osciluje za 30, znaci izlazni signal imam vrednost 130 i 70.
Dakle u slucaju mog grejaca, potrebno je da napona na grejacu osciluje oko odredjene vrednosti, npr 150 i da ima vrednosti npr 170-130.
Znaci sistem je pre pocetka eksperimenta potrebno dovesti u ustaljeno stanje, a zatim upravljacki signal povecati za 3-10% i postupci su isti kao sto je navedeno. Ovo se vidi iz sledecih isecaka knjiga:





Nije mi jasno medju navedenim koracima kad kaze podignemo upravljacki signal za 5% i kada merena vrednost predje SP onda smanjimo za 5% i td. Koje je to sad SP?
Ja zadam temperaturu od 200 stepeni, ukljucim grejac sa 20% snage i u ustaljenom stanju imam 80 stepeni, dignem za 5% i moja t ne dostize 200 stepeni, sta sad?.
Moze li mala pomoc oko razumevanja ovog dela? Mozda cu malo kasnije i sam naci odgovor, ali verovatno jos neko prati pa ce biti jasnije...
Pozdrav

[Ovu poruku je menjao zivadin_despot dana 31.12.2014. u 02:48 GMT+1]

Ako nekoga interesuje kompletne knjige o ovom podesavanju parametara mogu mu poslati linkove...

[Ovu poruku je menjao zivadin_despot dana 31.12.2014. u 02:50 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: Podesavanje PID parametara primenom Ziegler-Nichols metode31.12.2014. u 04:57 - pre 113 meseci
2 hinta ..
- ako vec imas mogucnost da turis triak zasto se zezas sa sporom relejnom kontrolom? pored toga sto je relejna kontrola opasnija za sistem i sto je sporija ne vidim nikakav benefit u odnosu na to da koristis klasican PID, ukines ID i dizes Pk dok ne dobijes stabilno stanje .. mnogo lakse nego da menjas F na releu
- NTC je spor, ja sam se zezao par nedelja nije mi autotune radio kako valja (isto ZN samo normalan nista releji u fb-u) dok nisam za senzor stavio termopar i resio problem .. dakle da bi uhvatio prvo stabilno oscilatorno stanje treba ti senzor sa manjom inercijom od toga sto meri :)

inace "stabilno" stanje sa relejnom kontrolom je klasican termostat sa histerezom, odredis gornji i donji limit i onda premeris oscilacije i dalje racunas Pk, Ik i Dk po ZN metodi ... sitno je brze od laganog dizanja Pk ali daleko stresnije, obicno se koristi za RUCNO setovanje pid-a, dakle ti u kontrolisanim uslovim odradis regulaciju releom, premeris oscilacije i preracunas pid koeficijente - to se skoro nikad ne stavlja u produkciju gde korisnik startuje spravu a ona krene da se aututunuje ... sa druge strane klasicna ZN metoda gde se Pk dize od 0 dok se ne dodje do stabilnog sistema je autotune koji smes da pustis u produkciju da klijent starta i da se sprava sama autotunuje .. doduse vidim po modernim spravama da autotune racunaju drugacije, nisam im provalio matis jos uvek ali nije ZN .. rekao bih da nije Cohen Coon, mozda je ATV nisam siguran, nemam sa ATV nikakvo iskustvo
 
Odgovor na temu

veselinovic
Jovan Veselinovic
Ist. Sarajevo

Moderator
Član broj: 7761
Poruke: 3877
31.223.159.105



+335 Profil

icon Re: Podesavanje PID parametara primenom Ziegler-Nichols metode31.12.2014. u 05:01 - pre 113 meseci
Mnogo pitanja je postavljeno.
Koliko znam odgovoricu, iako se ogradjujem da cu mozda negdje i fulati.
Prvo oko parametra D.
Vidi, ti imas neki realan sistem - recimo grijanje vode.
Treba da drzis recimo 50 stepeni ( bojler) i to u nekom stacionarnom stanju postizes
sa recimo 100V na grijacu.
Zaljuljas sistem i regulator ( max P-ostalo iskljuceno) napon ide od 80V do 120V.
D je 20V.

Algoritam koji si ti opisao u 10 tacaka krije jednu zamku.
Ako tako ljuljas sistem gubis karakteristike regulatora. Dobijas karakteristike samo objekta.
A tvoj termicki objekat je sistem 1. reda bez transportnog kasnjenja. Sam regulator sa senzorom ce unijeti kasnjenja.
Drugo, vaznije, sistem se ljulja oko stacionarne tacke ( englezi kazu point- odatle ono SP) jer linearizacija radi korektno samo u uskom opsegu.
A tebe inace interesuje sistem samo u blizini SP. Ostalo te bas briga. Eto u zadnjoj poruci i ti pominjes 5% prebacaja/podbacaja. To je OK.
Pazi skoro svaki sistem ( a termicki svaki) se u okolini SP moze tretirati kao sistem 1. reda sa trensportnim kasnjenjem. U principu ne da moze nego mora jer je nama nepoznata matematika za sisteme veceg reda.
Naravno, ja sam vec poceo da lapim, a sa ovim se nisam sretao 10-tak godina pa su moguce rupe u sjecanju. Jos gore je sto sam mozda te rupe popunio izmisljenim podacima.
Tako da dobro izvagaj pre nego sto uzmes za tacno.
 
Odgovor na temu

veselinovic
Jovan Veselinovic
Ist. Sarajevo

Moderator
Član broj: 7761
Poruke: 3877
31.223.159.105



+335 Profil

icon Re: Podesavanje PID parametara primenom Ziegler-Nichols metode31.12.2014. u 05:05 - pre 113 meseci
Kalman Bogdane.
Estimator stanja i Kalmanov regulator.
Na zalost tesko ga je svariti, jer nema analogni pandan, moze bit samo digitalni.
A tu su Z transformacije za koje nama analognim ljudima nema logike.
 
Odgovor na temu

[es] :: Elektronika :: Podesavanje PID parametara primenom Ziegler-Nichols metode

Strane: 1 2 3

[ Pregleda: 16854 | Odgovora: 57 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.