INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

PID-Regler fühlt sich unterbeschäftigt



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

02.10.2013, 14:23
Beitrag #1

ESB Offline
LVF-Neueinsteiger


Beiträge: 2
Registriert seit: Oct 2013

2011
2013
DE



PID-Regler fühlt sich unterbeschäftigt
Hallo,

ich habe ein etwas komisches Problem:
(Ich arbeite mich Labview 2011 und versuche mich zum ersten Mal mit damit)

Ich habe einen PID-Regler für eine Druck-geregelte Zufuhr gebaut. Mit diesem kann ich auch immer die gewünschten Drücke erreichen. Nur nach Erreichen des Solldruckwertes gibt mir mein Druckmessgerät (Thermovac TM 21) völlig zufällig einen Wert aus, der mein eingestellter Solldruckwert - 0,01 (ja immer 0,01) entspricht. Wenn ich auf die Anzeige des Druckmessgerätes schaue taucht dieser Wert nie auf. Und wenn ich lediglich ein Programm laufen lasse, welches den Druck misst, tritt dieser Fehler auch nicht auf.
Ein Bsp. für den Druckverlauf ist angehängt. Bei dem x-Wert ~670 habe ich auf den Sollwert 0.07 gestellt. Man sieht bei ~720 und ~750 diesen 0,01 Sprung nach unten und den darauffolgenden Versuch des PID-Reglers diesen auszugleichen.
Interessanterweise tritt dieser Fehler häufiger bei niedrigeren Sollwerten auf. Der Fakt, dass der Druck stabiler bei höheren Drücken ist, ist ansich nicht verwunderlich, da der Zufuhrregler (Pr4000B) bei höheren Werten genauer arbeitet, aber ich sehe da keinen Zusammenhang zur Häufigkeit des Auftretens eines Lesefehlers.

Beim der Suche nach einer Lösung dieses Problems ist mir ein weiteres Problem aufgefallen. Ich habe eine Bedingung eingebaut, die einfach sagt: "Wenn der Wert des Druckmessers gleich dem Solldruckwert - 0.01 ist, nehme den Wert des Solldruckwertes". Dieser einfache Vergleich funktioniert beim Labview, aus irgendeinem Grund, aber nur bei bestimmten Zahlen. Bei z.b. 0.07-0.01 behauptet Labview es wäre nicht 0.06, aber bei 0.08-0.01 ist Labview mit 0.07 einverstanden. Habe dafür die Bedingung rausgeschrieben und 2 Beispiele angehängt. (Anhänge mit "Vergleich" im Namen).

Gruß


Angehängte Datei(en) Thumbnail(s)
               

11.0 .vi  PID.vi (Größe: 281,06 KB / Downloads: 149)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
02.10.2013, 14:39 (Dieser Beitrag wurde zuletzt bearbeitet: 02.10.2013 14:42 von THL.)
Beitrag #2

THL Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 109
Registriert seit: May 2011

2012
2009
EN


Deutschland
RE: PID-Regler fühlt sich unterbeschäftigt
(02.10.2013 14:23 )ESB schrieb:  Beim der Suche nach einer Lösung dieses Problems ist mir ein weiteres Problem aufgefallen. Ich habe eine Bedingung eingebaut, die einfach sagt: "Wenn der Wert des Druckmessers gleich dem Solldruckwert - 0.01 ist, nehme den Wert des Solldruckwertes". Dieser einfache Vergleich funktioniert beim Labview, aus irgendeinem Grund, aber nur bei bestimmten Zahlen. Bei z.b. 0.07-0.01 behauptet Labview es wäre nicht 0.06, aber bei 0.08-0.01 ist Labview mit 0.07 einverstanden.
Hierfür gibt es eine einfache Erklärung: Simpel gesagt, werden Zahlen im Computer immer als Summe von 2er-Potenzen gespeichert, wodurch sich dezimale Nachkommastellen sehr oft nur näherungsweise darstellen lassen. Mit anderen Worten: 0.07 ist intern eigentlich so etwas ähnliches wie 0.0700000000014 und wird nur gerundet als 0.07 geschrieben. Wenn du exakte Vergleiche willst, solltest du mit Ganzzahlen (Integern) arbeiten, ansonsten musst du Fehlerschwellen berücksichtigen und z.B. aus dem Vergleich 0.07-0.01=0.06 ein abs(0.07-0.01-0.06)<1E-10 oder ähnliches machen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.10.2013, 22:28
Beitrag #3

Trinitatis Offline
LVF-Guru
*****


Beiträge: 1.694
Registriert seit: May 2008

7.1 / 8.0 /2014-1, 18
2002
DE

18055
Deutschland
RE: PID-Regler fühlt sich unterbeschäftigt
(02.10.2013 14:39 )THL schrieb:  Simpel gesagt, werden Zahlen im Computer immer als Summe von 2er-Potenzen gespeichert, wodurch sich dezimale Nachkommastellen sehr oft nur näherungsweise darstellen lassen. Mit anderen Worten: 0.07 ist intern eigentlich so etwas ähnliches wie 0.0700000000014 und wird nur gerundet als 0.07 geschrieben. Wenn du exakte Vergleiche willst, solltest du mit Ganzzahlen (Integern) arbeiten, ansonsten musst du Fehlerschwellen berücksichtigen und z.B. aus dem Vergleich 0.07-0.01=0.06 ein abs(0.07-0.01-0.06)<1E-10 oder ähnliches machen.

in der Palette NUMERISCH gibt es die Konstante "Maschinengenauigkeit", die dir eben diese Unschärfe ausgibt, die es bei Vergleichen zu berücksichtigen gilt.


Gruß, Marko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.10.2013, 12:36
Beitrag #4

ESB Offline
LVF-Neueinsteiger


Beiträge: 2
Registriert seit: Oct 2013

2011
2013
DE



RE: PID-Regler fühlt sich unterbeschäftigt
Gut, hat sich wirklich so einfach lösen lassen Smile

Damit kann ich zumindestens das Symptom gut bekämpfen. Vielleicht löst sich das andere Problem noch irgendwann von selbst.

Vielen Dank für die Hilfe.

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.10.2013, 10:51
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.411
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: PID-Regler fühlt sich unterbeschäftigt
Hallo ESB,

Zitat:keinen Zusammenhang zur Häufigkeit des Auftretens eines Lesefehlers.
Du solltest dieses ständige PortOpen und PortClose unterlassen. Normalerweise reicht es vollkommen aus, serielle Schnittstellen einmal bei Programmbeginn (vor der While-Loop) zu öffnen und einmal bei Programmende (nach der Loop) zu schließen. Wenn deine Geräte TermChars benutzen, kannst du auch auf BytesAtPort verzichten. (Tipp: Es gibt hier unzählige Threads zum Thema "serielle Schnittstelle", einfach dort mal nachlesen.)

Zum PID:
Muss es wirklich eine Simulationsschleife sein? Tut es nicht der BasicPID aus dem PID-Toolkit? Oder der noch einfachere SimplePID, der früher als Beispiel bei LabVIEW dabei war und den du durch Suchen entweder hier oder bei ni.com im Forum findest?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  PID Regler belu003 14 23.595 12.01.2015 14:41
Letzter Beitrag: se
  PID-Regler itsme87 12 19.710 05.10.2011 11:50
Letzter Beitrag: itsme87
  PID-Regler jooh 3 6.562 14.06.2011 15:22
Letzter Beitrag: jooh
  PID-Regler-VI Aleph1 3 8.885 16.09.2010 08:40
Letzter Beitrag: Aleph1
  PID REGLER dawe0006 7 8.555 10.08.2010 09:35
Letzter Beitrag: dawe0006
  PID - Regler tome28 6 8.729 10.10.2009 11:37
Letzter Beitrag: Y-P

Gehe zu: