Springen naar inhoud

Programmeren in step 7


  • Log in om te kunnen reageren

#1

Stef31

    Stef31


  • >250 berichten
  • 609 berichten
  • Ervaren gebruiker

Geplaatst op 15 december 2009 - 13:36

Hallo iedereen:

Voor mijn eindwerk moet ik een PID programmeren:

Ik heb de volgende uitdrukking voor een PID regelaar te programmeren:

y(nT) = y(nT-T) + (Kp + Ki + Kd) * e(nT) - (Kp + 2.Kd) * e(nT - T) + Kd * e(nT - 2T)

Dat is gegeven:
==========

e(nT - 0T) : fout op het moment nT (current sample time)

Hoe programmeer je nu eigenlijk 1 sample periode ervoor, 2 sample periodes ervoor?

Dat zou ik willen programmeren maar heb geen idee hoe eraan te beginnen

e(nT - 1T) : fout op het moment nT - T (1 sample periode ervoor)
e(nT - 2T) : fout op het moment nT - 2T ( 2 sample periodes ervoor)

Kan iemand mij hierbij helpen hoe ik dat probleem best aanpak liefst met een voorbeeld?

Vriendelijk dank
S

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

Jan van de Velde

    Jan van de Velde


  • >5k berichten
  • 44881 berichten
  • Moderator

Geplaatst op 16 december 2009 - 21:10

Iemand die hier een handje kan toesteken?
ALS WIJ JE GEHOLPEN HEBBEN....
help ons dan eiwitten vouwen, en help mee ziekten als kanker en zo te bestrijden in de vrije tijd van je chip...
http://www.wetenscha...showtopic=59270

#3

Lathander

    Lathander


  • >1k berichten
  • 2501 berichten
  • Ervaren gebruiker

Geplaatst op 17 december 2009 - 11:02

En in welke taal wil je dit programmeren?

Wat is een PID trouwens? Als ik dat zie, denk ik aan "Process ID number", van het soort dat je ziet in de Windows Taskmanager.

Veranderd door Evil Lathander, 17 december 2009 - 11:03

"Invisible Pink Unicorns are beings of great spiritual power. We know this because they are capable of being invisible and pink at the same time. Like all religions, the Faith of the Invisible Pink Unicorns is based upon both logic and faith. We have faith that they are pink; we logically know that they are invisible because we can't see them."


#4

Raga

    Raga


  • >25 berichten
  • 99 berichten
  • Lorentziaan

Geplaatst op 17 december 2009 - 13:28

Een PID is een proportional-integral-derivative controller.

De eenvoudigste manier is alle foutwaardes (d.w.z. de foutwaardes van alle samples) op te slaan in een structuur (array/list/vector).
Dan voeg je in elke iteratie de fout van de huidige sample toe aan die structuur.
Een andere manier is variabelen gebruiken om de vorige sample en de sample daarvoor op te slaan. Hiervoor moet je deze variabelen wel in elke iteratie aanpassen.

Helaas ken ik de gevraagde taal niet, dus met concrete voorbeelden kan ik je niet verder helpen.
Raga

#5

317070

    317070


  • >5k berichten
  • 5567 berichten
  • Moderator

Geplaatst op 17 december 2009 - 13:39

Een PID is een proportional-integral-derivative controller.

De eenvoudigste manier is alle foutwaardes (d.w.z. de foutwaardes van alle samples) op te slaan in een structuur (array/list/vector).
Dan voeg je in elke iteratie de fout van de huidige sample toe aan die structuur.
Een andere manier is variabelen gebruiken om de vorige sample en de sample daarvoor op te slaan. Hiervoor moet je deze variabelen wel in elke iteratie aanpassen.

Het simpelste is inderdaad het toestandsmodel van de PID bij te houden. Dus dat houdt in:

e2 = e1
e1 = e0
e0 = e(nT - 0T)

Dan zal de juiste fout telkens in de vaiabelen zitten, aangenomen dat het stukje code iedere T wordt aangeroepen. (Dus bij iedere sample?)
Maar de taal ken ik ook niet...
What it all comes down to, is that I haven't got it all figured out just yet
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures