[elektro] Nagy keverőmotor szabályzasa egyszerűen..

Lajos Rancz lajos.rancz at gmail.com
Wed Sep 10 12:53:38 CEST 2014


Helló!

Nem olyan bonyolult a PID alapelv, ajánlom ezt:
http://www.embedded.com/design/prototyping-and-development/4211211/PID-without-a-PhD

De ide elég lesz egy sima I szabályzó is, leírom, hogy kb hogy kell
csinálni.


   1. Van egy jól megválasztott ciklusidőd, ennyi időnként fut le a
   szabályzás
   2. Számolsz egy hibajelet a fordulatszámra: e = Fcél - Fmért
   3. A hibajelet minden körben hozzáadod egy akkuumulátorhoz, ez lesz az
   integráló tagod accu = accu + e;
   4. Az akkumulátor 0-ról (vagy egy előre meghatározott értékről) indul
    és van alsó és felső limitje. Ez amiatt kell, hogyha elértél már a
   vezérlés végére és még mindig nem érted el a cél fordulatszámot akkor ne
   telítsd túl az akkumulátor változót
   5. A kimenetet úgy kapod, hogy az akkumulátor változót megszorzod egy
   konstans értékkel (K_I). Ez a konstans érték határozza meg a szabályzási
   sebességet. Ha túl kicsi akkor túl lassan követsz, ha túl nagy akkor pedig
   beleng.

C kód:

static int accu = 0;  // Akkumulator valtozo
extern int target;    // Cel ertek
int controller(int measurement)
{
    static const int K_I = 0.1 * 1024; // Q22.10 format, 22 bit egesz, 10
bit tort
    int err = target - measurement;
    accu += err;
    if (accu < I_MIN) accu = I_MIN;
    if (accu > I_MAX) accu = I_MAX;
    int res = (K_I * accu) >> 10; // A 10 bitet itt szedjuk le
    return res;
}


Ennyi. Az integráló tag szavatolja hogy aszimptotikusan 0 lesz a hiba.

üdv


2014. szeptember 10. 12:08 elight at gmail.hu írta, <elight at gmail.hu>:

> Sziasztok.
>
> A következőbe futottam bele,
> programoznom kellene de most nem tesztelhetek csak a végén.
> Egy kis gondolati segítségre lenne szükségem.
> Milyen problémákra számíthatok  majd a gyakorlatban?
>
> Adva van egy jó nagy ( sok kW-os) keverőmotor
> Ez port kever , amelyet menetközben fűtenek is..
> A fűtés szabályzás  már rendben van...
> A problémám az ha állandó fordulatszámon
> keverek, és olvad az anyag , csökken a
> viszkozitás és a motor idővel egyre jobban túlfuthat..
> Ez állandó jellel nézve érezhető is ,tehát  hogy
> tíz perc múlva már nem a beállított fordulatszámot
> mutat a mérő hanem jelentősen többet.
>
> A Vezérlést megnéztem, már  teljesen kialakított.
> Szoftver oldalról kellene bűvészkednem ( számolgatnom) .
>
> Tehát AD-re bejön egy 0 - 10V os jel
>        0 - 4096 közötti érték     ez a motor aktuális fordulatszáma
>
> Kimegy D/A ról egy 0 - 10V os jel
>        0 - 4096 közötii érték a motor fordulat vezérlőjele.
>
> Van egy nyomógombokkal beállítható regiszter a kívánt fordulatszám
>        0  -  3000 1/n   fordulatszám érték.
>
> A calibrációkat már elvégeztem , tehát minkét jelet
> átszámolom ebbe a fordulatszám tartományba..
>
> Maga a folyamat elég lassú, nincsenek rángatások egységugrásjelek.
> Csak a lágyindítást és a leállást kell még majd  megoldanom.
> Ha lehet , szívesen megúsznám a PID-et.
>      ( ugye ,ugye,  kellett kimaradni azokról az órákról ! : )
> Szerintetek elengendő lehet ehhez egy alapjelhez
> kivonós, hozzáadós szabályzás?
> És hogy ne harapjon minden kis slipre ,
> esetleg valamiféle  szabályzási korrekciós tényező
>     meghatározására is szükségem lehet?
>
> Üdv István
>
>
> -----------------------------------------
>           elektro[-flame|-etc]
>


More information about the Elektro mailing list