LabVIEWForum.de - Probleme X-Achsen Skalierung

LabVIEWForum.de

Normale Version: Probleme X-Achsen Skalierung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

zum Aufbau einer Regelung habe ich mich für den Einsatz von LabVIEW entschieden.
Ich messe analog eine Temperatur mit einer NI USB 6211 Karte und verarbeite sie in einem pid Baustein des PID Toolkits, anschließend steuere ich dann den Aktuator über ein analoges Signal an.

Das funktionert auch soweit ganz gut. Ich habe nur ein riesen Problem die X-Achse des Diagrammes so einzustellen, dass sie fest von 0 -60 Sekunden reicht um aus dem Diagramm dann z.B. eine Sprungantwort zu ermitteln.

Habe das Forum schon jetzt mehrere Tage durchsucht komme aber zu keiner Lösung. :(Es werden jeglichen min-max Einstellung ignoriert und riesengroße Werte angezeigt.

Wäre super wenn mir jemand eine Hilfestellung geben könnte.Top1

Vi ist im Anhang.

Vielen Dank im Vorraus und einen schönen Sonntag noch,

Animatronic

[attachment=30124]

Labview 2009 Studentversion
PID Toolkit
Hallo Animatronic,

also, du verwendest ja Charts statt Graphen...

Aber auch bei Charts kannst du das AutoScaling der X-Achse abstellen und die Achse mauell auf 0-60s festlegen - wie sinnvoll das auch sein mag...
Die beiden Charts verwenden ja auch noch einen unterschiedlichen X-Scale-Multiplier, zeigen aber die gleichen Daten (bzw. Daten mit der gleichen zeitlichen Auflösung). Irgendwas passt da also nicht zusammen! Hinzu kommt noch die unterschiedliche Historienlänge beider Charts - sollen trotzdem beide nur 60s darstellen (bei deinem VI: 60 bzw. 12 Messwerte)?

Außerdem sehe ich keinerlei zeitliche Steuerung. Woher weißt du überhaupt die Zeitwerte für die X-Achse? Dein DAQ-Assi liefert dir immer genau ein Sample - bei gewünschten 1kHz Samplerate. Wie genau wird das wohl sein, wenn dir Windows dazwischenfunkt und der DAQ-Assi für jeden einzelnen Wert den InputTask anlegen muss, einen Wert von der HW abholt und dann den Task wieder beendet? Ist schon ganz schön viel Arbeit, die da innerhalb einer Millisekunde erledigt werden muss! Lies einfach mal ein bisschen im Forum, wie man ohne ExpressVIs im Allgemeinen und ohne DAQ-Assi im Speziellen auskommt, wie man mehr als einen Messwert pro Aufruf von der HW abholt und wie man Schleifen genauer taktet. Irgendwo die Zeit zu messen wäre vielleicht auch eine Idee...

P.S.: Zum Thema ExpressVI: deine Formel könnte man a) in einem FormulaNode/ExpressionNode rechnen lassen (dann würde man die Formel sofort sehen, ohne den Assistenten öffnen zu müssen) oder b) direkt mit den Rechenfunktionen erledigen lassen: y=(x-offset1)/scale+offset2 (was noch weniger Rechenzeit benötigt und ebensogut zu "lesen" ist)...
Hier mal ein Beispiel, wie man die x-Achse mit Zeit in Sek skaliert, beginnend mit t=0 bei der ersten Messung. Beachte die Skalierungseigenschaften der X-Achse: Für die X-Achse keine Zeit wählen, sondern normales Double-Format. Andernfalls hättest Du immer dieses blöde hh:mmConfuseds an der Backe bzw. auf der X-Achse.
[attachment=30126]
Lv86_img[attachment=30125]
Guten Abend!

Vielen Dank für die schnellen Antworten und guten Tipps! Top1 Bin echt begeistert, wie schnell einem blutigen Anfänger geholfen wird.

@Gerd W
Du hast recht mit den Express Vi`s ist nicht wirklich was. Ist halt immer schnell gemacht aber was da wirklich hinter steckt versteht man dann meist nicht und merkt das erst wenn Probleme auftreten. Habe die Formal neu nach deiner Empfehlung eingebunden, so dass sie direkt sichtbar ist. Desweiteren habe ich die DAQ Assis rausgeschmissen und mache es jetzt Schritt für Schritt. Nur mit dem speichern in einer Datei und die Einbindung in Excel ist Schritt für Schritt doch relativ kompliziert. Aber noch eine kurze Frage zu dem Timing:

Kann ich das Schleifen Timing wie im Bild dargestellt realisieren? Wenn ich dann z.B. 10ms als Vorgabe auswähle, passt das dann auch oder muss man noch weitere Dinge beachten?

[attachment=30129]

@Lucki
Danke für das super Beispiel und den Tipp mit den Double-Format, ohne diese 00:00:00 und Datumsanzeige sieht die ganze Sache doch gefälliger aus.

Danke nochmals, ihr habt mir echt geholfen und eine gute Nacht

Animatronic
Hallo Animatronic,

Zitat:Kann ich das Schleifen Timing wie im Bild dargestellt realisieren? Wenn ich dann z.B. 10ms als Vorgabe auswähle, passt das dann auch oder muss man noch weitere Dinge beachten?
Momentan holst du immer noch pro DAQ-Read nur einen einzelnen Wert ab. Wenn du jetzt dein Schleifentiming einführst (warum eigentlich als I8 statt U32?), dann wird bei der bisher verwendeten Samplingrate von 1kHz irgendwann der DAQ-Buffer volllaufen... Hol doch einfach 10 Werte alle 10ms ab, das sollte für die PID-Regelung doch auch ausreichen. Wie schnell soll der Regler überhaupt arbeiten?
Hi GerdW,

erstanl Danke für die Antwort,

ich habe jetzt das Schleifentiming auf 10ms fest gesetzt. Wenn ich aber jetzt 10 Samples pro durchgang abhole wie im Bild dargestellt, kann der pid Baustein sowie der Formelknoten und die anderen schon verbauten Bausteine das neue 1D Array nicht mehr verarbeiten.

[attachment=30148]

Kurze Frage:
Mir ist nicht klar warum es bei Abholung von 1 Sample alle 10ms zu Problemen mit dem Speicher kommt. Die 1 Khz sind doch mit dem Schleifentiming hinfällig oder verstehe ich das falsch. Wenn ja, was mache ich dagegen?

Zu der Geschwindigkeit des PID sollten 5 bis 10 ms allemal ausreichen, da mir der Sensor auch t95 alle 10ms gibt und der Aktuator auch je nach TagesformRolleyes so zwischen 5-15 ms braucht.

Viele Grüße

Animatronic
Hallo Animatronic,

in deinem UrsprungsVI war der DAQAssi auf eine Samplingrate von 1kHz gesetzt - darauf bezog ich meine Aussage. Du kannst natürlich auch eine Samplingrate von nur 100Hz vorgeben und weiterhin nur einen Wert pro Abfrage abholen - dann läuft dein restliches VI auch wieder...
Hi Gerd,

hab mich nach einem langen Tag doch nochmal hingesetzt und was gemacht. Habe versucht den von dir erwähnten speicherüberlauf entgegen zu wirken, jedoch bekomm ich permanent folgende Fehlermeldung:

Fehler -200077 ist bei Eigenschaftsknoten DAQmx Timing (arg 1) in DAQmx Timing (Sample Clock).vi:1->mi_pid_1.1.vi aufgetreten
Mögliche Ursachen:

Gewünschter Wert wird für diese Eigenschaft nicht unterstützt.

Eigenschaft: SampleTimingArt
Angefordert: Sample-Takt
Mögliche Auswahl: On Demand

Task-Name: _unnamedTask<B888>

habe schon diverse Einstellungen vorgenommen, jedoch ohne Erfolg.

Hättest du einen Tipp woran das liegen könnte?

[attachment=30161]

Viele Grüße

Animatronic
Referenz-URLs