Forum: Mikrocontroller und Digitale Elektronik Nicht äquidistante Regelung


von Jan K. (jan_k)


Lesenswert?

Hey Leute!

Ich hab' mal ne Frage:
Die meisten Regelungstechnischen Auslegungsverfahren etc gehen von einer 
konstanten Sampletime und damit von äquidistant abgetastetetn Werten 
aus.

Aber wie in der Realität kann ich davon ausgehen? Es gibt doch immer 
Laufzeitschwankungen (puffer voll, bus belegt), insbesondere, wenn ich 
z.B. Blockweise Daten per Funk übertrage - es ist doch nicht 
unwahrscheinlich, dass ich gerade bei Funkübertragung Daten verliere?

Wird sowas überhaupt nicht beachtet, oder wird die sampletime immer 
mitgeschickt bzw berechnet, z.B. mit Hilfe von timestamps? Dann müsste 
aber jeder Filter, Regelungsalgo, was auch immer die Abtastzeit bei 
jedem Schritt mit einrechnen; Wird das wirklich so gemacht?

Oder was ist, wenn das Zeitverhalten der Stelleinrichtung nicht bekannt 
ist? Ich habe hier z.B. den Fall, dass ich zwar weiß, dass eine 
Information (das ist die Stellgröße des Reglers) alle 80ms gepulst wird, 
aber nicht, wann. Im schlimmsten Fall handele ich mir (falls meine 
Abtastrate ebenfalls 80ms groß ist) bis zu 160ms Totzeit ein. Ich kann 
natürlich den Regler höher takten, z.B. auf 10ms, aber dann hätte ich 
bis zu 8 Zyklen, die umsonst berechnet worden sind und immer noch 80ms 
Totzeit.

Gibt es für solche Probleme Lösungsmöglichkeiten?

Vielen Dank!
Jan

edit: eventuell ist das Thema im DSP Forum besser aufgehoben, sorry!

von Falk B. (falk)


Lesenswert?

@Jan K. (jan_k)

>Die meisten Regelungstechnischen Auslegungsverfahren etc gehen von einer
>konstanten Sampletime und damit von äquidistant abgetastetetn Werten
>aus.

Jo.

>Aber wie in der Realität kann ich davon ausgehen?

Indem man es richtig macht (tm).

> Es gibt doch immer
>Laufzeitschwankungen (puffer voll, bus belegt),

sicher, aber es gibt auch Timer-Interrupts und entsprechende 
Prioritäten. Damit sind die WICHTIGEN Kernroutinen immer gleichmäßig 
dran.

> insbesondere, wenn ich
>z.B. Blockweise Daten per Funk übertrage - es ist doch nicht
>unwahrscheinlich, dass ich gerade bei Funkübertragung Daten verliere?

Funkübertragung und Regelung sind verschiedene Dinge, auch wenn man sie 
kombinieren kann.

>Wird sowas überhaupt nicht beachtet,

Doch.

>oder wird die sampletime immer
>mitgeschickt bzw berechnet, z.B. mit Hilfe von timestamps?

Das ist eine Möglichkeit. Aber Regelschleifen über Funkstrecken sind ein 
Thema für sich. Die meisten Haben KEINEN Funk, der dazwischen funken 
kann ;-)

>Dann müsste
>aber jeder Filter, Regelungsalgo, was auch immer die Abtastzeit bei
>jedem Schritt mit einrechnen; Wird das wirklich so gemacht?

Siehe oben. Das ist was für die oberen Semester.

>Oder was ist, wenn das Zeitverhalten der Stelleinrichtung nicht bekannt
>ist?

Dann sollte man es möglichst rausfinden.

> Ich habe hier z.B. den Fall, dass ich zwar weiß, dass eine
>Information (das ist die Stellgröße des Reglers) alle 80ms gepulst wird,
>aber nicht, wann. Im schlimmsten Fall handele ich mir (falls meine
>Abtastrate ebenfalls 80ms groß ist) bis zu 160ms Totzeit ein.

Kann passieren.

von Jan K. (jan_k)


Lesenswert?

Hi Falk, erstmal vielen Dank für Deine Antwort!

Falk Brunner schrieb:
> @Jan K. (jan_k)
>

>>Aber wie in der Realität kann ich davon ausgehen?
>
> Indem man es richtig macht (tm).
>
Stark :D
>> Es gibt doch immer
>>Laufzeitschwankungen (puffer voll, bus belegt),
>
> sicher, aber es gibt auch Timer-Interrupts und entsprechende
> Prioritäten. Damit sind die WICHTIGEN Kernroutinen immer gleichmäßig
> dran.
Dessen bin ich mir bewusst. Aber es gibt durchaus Systeme, die nicht nur 
aus einem oder mehreren µCs bestehen, sondern z.B. aus (realtimefähigen) 
PCs mit Simulink/Matlab oder so.
Konkret hier: Simulink PC mit real time windows target sampelt (und 
pollt damit den seriellen Port) mit z.B. 1ms. Auf dem µC wird alle 10ms 
ein timer Interrupt angestoßen, der Messungen macht. Die variieren aber 
immer ganz leicht, kann durchaus 1 oder ne halbe ms sein. An dem PC 
treten dann durchaus Schwankungen um eben die 1,2 ms auf. Keine Ahnung 
wie man das, außer durch event handling (inkl. verschicken von 
timestamps) in den Griff kriegen soll..

>
>> insbesondere, wenn ich
>>z.B. Blockweise Daten per Funk übertrage - es ist doch nicht
>>unwahrscheinlich, dass ich gerade bei Funkübertragung Daten verliere?
>
> Funkübertragung und Regelung sind verschiedene Dinge, auch wenn man sie
> kombinieren kann.
>
Klar sind es das. Aber angenommen ich benötige die Daten über Funk zur 
Regelung..

>>Wird sowas überhaupt nicht beachtet,
>
> Doch.
Ok. Und es wird irgendwie versucht, trotzdem alles zu synchroniesieren 
und äquidistant gerechnet?
>
>>oder wird die sampletime immer
>>mitgeschickt bzw berechnet, z.B. mit Hilfe von timestamps?
>
> Das ist eine Möglichkeit. Aber Regelschleifen über Funkstrecken sind ein
> Thema für sich. Die meisten Haben KEINEN Funk, der dazwischen funken
> kann ;-)
>
Tjoar ok :) Solls aber geben, deswegen frage ich ja ;))
>>Dann müsste
>>aber jeder Filter, Regelungsalgo, was auch immer die Abtastzeit bei
>>jedem Schritt mit einrechnen; Wird das wirklich so gemacht?
>
> Siehe oben. Das ist was für die oberen Semester.
>
Unglücklicherweise (falls du wirklich Semester im uni Sinne meinst) 
kommt nur noch ein Master Semester in dem nichtlineare Regelung 
drankommt. Von nicht äquidistanten sampleraten habe ich hier leider noch 
nie was gehört ;)

>>Oder was ist, wenn das Zeitverhalten der Stelleinrichtung nicht bekannt
>>ist?
>
> Dann sollte man es möglichst rausfinden.
Dann müsste die Einrichtung auch mit dem PC oder dem µC synchronisiert 
werden..
>
>> Ich habe hier z.B. den Fall, dass ich zwar weiß, dass eine
>>Information (das ist die Stellgröße des Reglers) alle 80ms gepulst wird,
>>aber nicht, wann. Im schlimmsten Fall handele ich mir (falls meine
>>Abtastrate ebenfalls 80ms groß ist) bis zu 160ms Totzeit ein.
>
> Kann passieren.

Würde mich halt auch mal über Erfahrungsberichte freuen; Wird asynchron 
und per interrupt/event geregelt, oder ist das eher untypisch?


Schöne Grüße,
Jan

von Anja (Gast)


Lesenswert?

Jan K. schrieb:
> Würde mich halt auch mal über Erfahrungsberichte freuen; Wird asynchron
> und per interrupt/event geregelt, oder ist das eher untypisch?

Im Auto laufen viele Regler/Filter drehzahlsynchron. z.B. 600 - 6000 
RPM.

Jan K. schrieb:
> oder wird die sampletime immer
> mitgeschickt bzw berechnet, z.B. mit Hilfe von timestamps? Dann müsste
> aber jeder Filter, Regelungsalgo, was auch immer die Abtastzeit bei
> jedem Schritt mit einrechnen; Wird das wirklich so gemacht?

Genau so.

Wobei Totzeiten wie beim Funk tödlich sind für jeden Algorithmus.

Jan K. schrieb:
> Gibt es für solche Probleme Lösungsmöglichkeiten?
Den Regler auf dem uC rechnen und nur die Sollwerte/Parameter per 
Windows-Rechner vorgeben.

Gruß Anja

von c-hater (Gast)


Lesenswert?

Jan K. schrieb:

> Klar sind es das. Aber angenommen ich benötige die Daten über Funk zur
> Regelung..

Dann hast du ein ernstes Problem.

Das bedeutet nämlich, daß du vor der Dimensionierung der Regelung erst 
einmal intensive Forschungen zur Zuverlässigkeit der Funkstrecke 
betrieben mußt (statistisch belastbares Material), daraus dann eine 
optimiertes Übertragungsprotokoll ableiten mußt und daraus dann wieder 
ein (immer unerwünschtes) zusätzliches Zeitglied in deinem Regelkreis, 
welches die Regelung im Minimum langsamer und/oder ungenauer machen 
wird.

Und das Schlimmste: Selbst nach der ganzen Arbeit kann jede unerwartete 
Funktstörung (die in der ursprünglichen Analyse nicht enthalten war) das 
System immer noch vollständig zum Entgleisen bringen.

Sowas tut man sich ohne Not nicht an. Kabel ist immer billiger. OK, auch 
da kann es Kabelbruch geben. Die Auswirkungen sind dann die gleichen.

von Falk B. (falk)


Lesenswert?

@Jan K. (jan_k)

>Dessen bin ich mir bewusst. Aber es gibt durchaus Systeme, die nicht nur
>aus einem oder mehreren µCs bestehen, sondern z.B. aus (realtimefähigen)
>PCs mit Simulink/Matlab oder so.
>Konkret hier: Simulink PC mit real time windows target sampelt (und
>pollt damit den seriellen Port) mit z.B. 1ms. Auf dem µC wird alle 10ms
>ein timer Interrupt angestoßen, der Messungen macht. Die variieren aber
>immer ganz leicht, kann durchaus 1 oder ne halbe ms sein. An dem PC
>treten dann durchaus Schwankungen um eben die 1,2 ms auf. Keine Ahnung
>wie man das, außer durch event handling (inkl. verschicken von
>timestamps) in den Griff kriegen soll..

PCs sind nicht wirklich geeignet für richtig strenge Zeitabläufe.

>Klar sind es das. Aber angenommen ich benötige die Daten über Funk zur
>Regelung..

Dann wird es sportlich.

>Ok. Und es wird irgendwie versucht, trotzdem alles zu synchroniesieren
>und äquidistant gerechnet?

Keine Ahnung, solche Problem hatte ich noch nicht. Kann schon sein.

>Unglücklicherweise (falls du wirklich Semester im uni Sinne meinst)
>kommt nur noch ein Master Semester in dem nichtlineare Regelung
>drankommt. Von nicht äquidistanten sampleraten habe ich hier leider noch
>nie was gehört ;)

Jain. Ich meinte, das ist anspruchsvoll und wird nicht notwendigerweise 
in den meisten Vorlesungen gelehrt, ist was für Spezialisten.

von user (Gast)


Lesenswert?

Was ihr sagt ist alles mehr oder weniger richtig.

Man muß aber auch die Dynamik der Regelstrecke berücksichtigen.
Wenn die Strecke nur alle 100ms auf neue Stellwerte reagieren kann/muß, 
macht es keinen Sinn, jede us regeln zu wollen.

Damit die Regelung gut funktioniert und stabil bleibt, müssen die 
Eigenschaften der Regelstrecke bekannt sein und bei der Auslegung der 
Regelung berücksichtigt werden.

Totzeiten (egal woher sie kommen) sind für die Stabilität des Reglers 
gefährlich und sollten vermieden oder klein im Vergleich zur Dynamik der 
Regelstrecke sein.

Wie soetwas gemacht wird steht in der Fachliteratur über 
(diskrete/digitale) Regelungen.

Beispiel:
Kochtopf mit Wasser auf dem Herd.
Wenn man jede Sekunde an der Einstellung des Herds herumfummelt dauert 
es bestimmt länger bis das Wasser kocht als wenn man den Herd erst 
einmal auf volle Leistung stellt.
Allerdings sollte man auch nicht nur alle 20min nachschauen ob das 
Wasser (über)kocht. In welchen Zeitabständen hängt von den 
Randbedingungen (Regelstrecke) ab. Wenn ein 20Liter Topf auf einem 3kW 
Herd steht, reicht es vielleicht alle 5min nachzuschauen. Handelt es 
sich nur um 100ml auf dem gleichen 3kW Herd, ist das Wasser in den 20min 
sicherlich komplett verdampft.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.