Hallo zusammen!
Wir haben ein kleines Problem: Für unseren Solarzellenversuch müssen wir für das Temperaturregelgerät ein VI erstellen, das uns ermöglicht, das Gerät zu steuern. Die Regelung funktioniert soweit, jedoch haben wir Probleme, einen XY-Graphen anzuschliessen, welcher die Temperatur in Abhängigkeit der Zeit darstellen soll. Wie kann man die Daten "Istwert R" als y-Werte benutzen?
Wir wären sehr dankbar für hilfreiche Tipps!
Hallo,
so wie ich das VI verstehe, willst Du es so lange laugen lassen, bis beim Auslesen des Wertes ein Fehler auftritt oder "Quit" betätigt wurde.
Das Problem besteht darin, daß die For-Schleife, welche den Zeitbezug auf der x-Achse herstellt komplett unabhängig von der While-Schleife, in der die Messung stattfindet, läuft. Außerdem benötigst Du für die Darstellung im Graphen auch eine Meßdatenreihe (eindimensionales Feld). Im Moment bekommst Du nur einen einzelnen Wert.
Jetzt ist es ja außerdem so, daß permanent der aktuelle Meßwert ausgelesesen wird, Du willst aber nur jede Sekunde eine Messung durchführen, oder?
Also schlage ich vor, die Messung "get" in die For-Schleife zu packen und die For-Schleife selbst in die case-Anweisung, wo "get" momentan steht.
Damit wird erreicht, daß nur jede Sekunde einmal "get" ausgeführt wird.
Anschließend kannst Du "Istwert R" dann auch mit dem rechten Rand der For-Schleife verbinden und "Autoindizierung aktivieren" (Rechtsklick auf den entstandenen Tunnel). So erhältst Du zu dem Feld der Zeitachse auch das Zugehörige eindimensionale Feld der Meßwerte. Das kannst Du dann an das Express-VI für den xy-Graph anschließen.
Hallo s200rs!
Vielen Dank für den hilfreichen Tipp!
Das Ziel unseres VI's ist, dass wir eine Messung über einen längeren Zeitraum machen können, und der Temperaturverlauf während der Messung ersichtlich ist.
Wir haben deine Ratschläge befolgt und das Programm ausprobiert. Das Problem beim momentanen VI ist, dass wir nicht den Verlauf der Temperaturkurve während der Messung sehen. Zudem können wir leider nicht die Anzahl der Messwerte beliebig hochschrauben ohne dass sich die anderen Funktionen des Regelgeräts verlangsamen.
Wir wären für einen weiteren Lösungsansatz dankbar!
Hallo,
nun, das erste Problem ist schnell behoben.
Um den Verlauf während der Meßwertaufnahme zu aktualisieren, muß bei jedem Schleifendurchlauf der aktuelle Datensatz (also inclusive des neuen Meßwertes) dem Diagramm übergeben werden.
Das bedeutet allerdings, daß man nicht mehr die automatische Indizierung nutzen kann, sondern den neuen Meßwert "per Hand" dem eindimensionalen Feld zuweisen muß. (siehe Bild)
Also auf den rechten oder linken Rand der For-Schleife rechtsklicken, dann "Schieberegister hinzufügen" auswählen (2x).
Des weiteren 2x das VI "in Array einfügen" einfügen und, wie im Bild dargestellt, verbinden.
Der Eingang "Index" kann mit der Zählvariable "i" der For-Schleife verbunden werden, muß aber nicht, da daß VI bei nicht verbundenem Anschluß das neue Element automatisch ans Feldende anhängt.
Es wird also mit jedem Schleifendurchlauf der neue "Zeitwert" auf der x-Achse eingefügt und der aktuelle Meßwert an die Meßreihe angehängt.
Die beiden neuen Reihen werden dem Graphen übergeben und angezeigt.
Nicht vergessen: am linken Rand der Schleife durch Rechtsklick auf das Schieberegister "Konstante erzeugen" anwählen, weil sonst die Meßwerte nach Beenden des VIs im Speicher bleiben und bei der nächsten Meßreihe die neuen Daten an die des vorhergehenden Versuchs angehängt werden.
Nun zum zweiten Problem:
Da habe ich ein kleines Verständnisproblem.
Zum einen: Was verbirgt sich hinter "Regelgerät"? Ist das ein externes Gerät?
Wenn ja, ist es mir schleierhaft, warum dieses durch den PC mit LabVIEW ausgebremst werden sollte.
Kann es sein, daß das Problem woanders liegt?
Ich verstehe nämlich auch die Zeitsteuerung in der For-Schleife nicht.
So wie ich das interpretiere, dürften nur negative Zeitwerte auf der x-Achse entstehen.
Außerdem sieht es so aus, als ob Ihr je 1 ms einmal ein Meßwert abrufen wollt. Das wird schlecht funktionieren, weil die Kommunikation über die RS232 (COM2) sicherlich länger als 1ms dauert.
Im Normalfall wird ja vom PC eine Datenanfrage an das externe Gerät gesendet und dieses antwortet dann nach einigen ms.
Jetzt ist es so, daß ein Meßwert gelesen wird, dann maximal 1ms gewartetwird, bis der aktuelle Schleifendurchlauf beendet ist und sofort der nächste Meßzyklus gestartet wird. Ist eine solch hohe Meßrate beabsichtigt?
Wir haben deine Ratschläge befolgt und haben VI getestet. Dabei tauchte folgende Fehlermeldung auf:
Shift register: unwired from inside the loop
Shift register: data type is undefined
Was haben wir falsch gemacht? Deine Lösung scheint uns logisch zu sein.
Zu deinen Fragen: Das Regelgerät ist tatsächlich ein externes Gerät, welches mit Hilfe des VI's angesteuert wird. Das Problem ist, dass zuerst die For-Schleife ausgeführt werden muss, bevor der nächste Teil des Case-Structure ausgeführt wird. Dies führt dazu, dass das Gerät extrem langsam reagiert. Wie kann man diese Verzögerung umgehen?
Vielen Dank, dass du so viel Zeit für unser Problem investierst!!!
Hallo,
Zum Shift-Register:
Also innerhalb der For-Schleife ist eines der beiden Shift-Register an der rechten und/oder linken Seite der For-Schleife nicht richtig angeschlossen. Die Meldung "data type is undefined" deutet darauf hin, daß sogar beide seiten nicht angeschlossen sind und auch kein Startwert (links außerhalb der Schleife) angeschlossen wurde. Damit weiß LV nicht, welcher Datentyp von einem Schleifendurchlauf zum nächsten übergeben werden soll. Im Normalfall ist so ein nicht definierter Typ schwarz eingefärbt (kann momentan kein Beispiel posten, weil ich auf dem im Moment benutzten Rechner kein LV installiert habe).
Vielleicht habt ihr insgesamt 3 Schieberegister erstellt und ein andersfarbiges überdeckt das schwarze, so daß Ihr's nicht seht. Also mal die beiden farbigen hoch und runter verschieben, dann solltet Ihr's sehen (wenn es dieser Fall sein sollte).
Tja und mit dem Regelgerät kann ich Euch so keine Antwort geben, weil ich es nicht kenne und ich auch nicht weiß, was genau ihr machen wollt. Stichwort Zeitsteuerung.
Wenn erst die For-Schleife abgearbeitet werden muß und dann erst etwas anderes, warum nehmt Ihr dann keine Sequenz, sondern eine Case-Struktur?
Was verbirgt sich hinter der Variable "Select?"
Hab vor etwa 3 1/2 Jahren auch mal klein mit LV 6.i angefangen. Arbeite aber seit einem Jahr jeden Tag damit, deswegen geht's mir mittlerweile relativ locker von der Hand. Immer fragt.