[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