LabVIEWForum.de - Problem mit Programmablauf, aktualisierung eines Diagramms

LabVIEWForum.de

Normale Version: Problem mit Programmablauf, aktualisierung eines Diagramms
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo,

hab da ein kleines Problem. Ich möchte auf Knopfdruck ein Programm zeitlich ablaufen lassen. Ich habe das mit einer While - Schleife gelöst. Das funktioniert für sich auch. Nur möchte ich gleichzeitig das immer das Signalverlaufsdiagramm läuft. So wie ich es momentan gelöst habe wird das Diagramm nur aktualisiert wenn die vorgegebene Zeit erreicht wird

Also, ich möchte das das Signalverlaufsdiagramm kontinuierlich aktualisiert wird, unabhängig davon wie lange es braucht bis mein Programm den nächsten Schritt erreicht.

Besteht eine Möglichkeit die Programmparameter zu Visualisieren. Ich stelle mir da ein horizontales Balkendiagramm vor das anzeigt z.B. von 0 bis 10 Minuten und in den Bereichen wo ein Ventil geschaltet wird soll dann ein Balken erscheinen (von 1 bis 2 Minuten und 5 bis 6 Minuten z.B.). Ich hatte das bisher realisiert durch ein Signalsverlaufsdiagramm das aber auch nur aktualisiert wenn die Schleife aktualisiert wird. Toll wäre es, wenn ich die Einstellungen sehen könnte bevor ich den Programmablauf starte.

Anbei das aktuelle Programm, Version 2009.

Grüße
Malte

[attachment=23204]
Mach' doch 2 parallele Schleifen. Eine zum Schreiben und eine zum Lesen und verwende keine Express-VIs.

Gruß Markus
Hallo,

ich scheine wohl extrem auf dem Schlauch zu stehen, weiß nämlich nicht wie das gemeint ist. Ich habe aus der While - Schleife eine For - Schleife um damit "Parallel" abarbeiten zu können was wiederrum dazu geführt hat, das ich das Programm nicht vorzeitig abbrechen kann.

[attachment=23209]
Lv09_img2

Das SubVi hab ich vergessen, macht aber auch nicht viel - nur prüfen ob ein Bit gesetzt ist....
[attachment=23210]
Lv09_img2

Malte
Wo ist denn die parallele Schleife? O

:offtopic:Bitte LabVIEW-Version mit angeben und Profil ändern (Du hast doch LabVIEW 2009, oder?), d.h. LVF-Regeln beachten. Rulez

Gruß Markus
Hallo,

das hat jetzt doch funktioniert.
Lv09_img2[attachment=23530]
Ein anderes Problem das damit zu tun hat. In einem bestimmten Zeitschritt möchte für eine Anzahl x ein Ventil takten mit einer Frequenz f und einem Tastverhältnis DC. Anbei mal etwas das ich gerade gebastelt habe. Problem dabei ist, das die Zeiten nicht stimmen, das Programm viel zu schnell abläuft
Lv09_img2[attachment=23531]

Diese VI soll dann später mit ins Hauptprogramm un z. B. an Zeitschritt 7 x - mal das Ventil takten bevor das Programm mit Zeitschritt 8 fortfährt.

Woran könnte es liegen?
Ein paar weitere Fragen.
Zuerst wollte ich "Timer Wert ms" benutzen, hiervon die aktuelle Zeit abziehen und dann einfach mit vergleichen Arbeiten. Doch ich habe keine Funktion gefunden die mir den Ausgang von "Timer Wert ms" in einen Integer umwandelt. Ich brauche also eine Funktion "ms Wert seit Programmstart"

Ich suche eine Eigenschaftsknoten "Diagramm löschen" für ein Signalverlaufsdiagramm um nach drücken des "Start" Buttons ein leeres Diagramm zu haben. Auch hätte ich gerne im Signalverlaufsdiagramm auf de x - Achse jede Sekunde eine Einteilung. Auf der y - Achse geht das, aber nicht auf der x - Achse bei der meiner Meinung nach gleichen Einstellungen

Danke und das Profil ist aktualisiert..
' schrieb:...Ein paar weitere Fragen.

... Doch ich habe keine Funktion gefunden die mir den Ausgang von "Timer Wert ms" in einen Integer umwandelt.
-> Du bekommst eine U32 Zahl vom Timer... Merkst du dir den Timerwert vor Programmstart, kannst du mittelz Differenzbildung jederzeit die bis dahin vergangenen ms erhalten.

Ich suche eine Eigenschaftsknoten "Diagramm löschen" für ein Signalverlaufsdiagramm um nach drücken des "Start" Buttons ein leeres Diagramm zu haben.
-> Du nimmst den Konten für Historie und gibst der Historie ein leeres Array und gut ist

Auch hätte ich gerne im Signalverlaufsdiagramm auf de x - Achse jede Sekunde eine Einteilung. Auf der y - Achse geht das, aber nicht auf der x - Achse bei der meiner Meinung nach gleichen Einstellungen
-> Darauf kann man mit den Eigenschaften Inkrement und kleinstes Inkrement Einfluss nehmen.

Danke und das Profil ist aktualisiert..
-> sehr löblich


Gruß SeBa
Ich Danke soweit schonmal.

Ich habe das "Takten" Programm neu gemacht. Für sich funktioniert es, nur kann ich es nicht als SubVI einbinden, hat wohl mit der while Schleife zu tun. Ich könnte auch den Inhalt des Sub - Vis in das Hauptprogramm kopieren, macht aber keinen großen Sinn wenn ich Sub - Vis nutzen möchte

Zitat:Ich suche eine Eigenschaftsknoten "Diagramm löschen" für ein Signalverlaufsdiagramm um nach drücken des "Start" Buttons ein leeres Diagramm zu haben.
-> Du nimmst den Konten für Historie und gibst der Historie ein leeres Array und gut ist
Das mit dem Eigenschaftskoten funktioniert nun, Danke! Wie könnte ich von der aktuellen Uhrzeit die im Diagramm ist diese abziehen, also das Diagramm "nullen". Ich finde keine Möglichkeit ein "1d - Array Signalverlauf" abzuändern

Zitat:Auch hätte ich gerne im Signalverlaufsdiagramm auf de x - Achse jede Sekunde eine Einteilung. Auf der y - Achse geht das, aber nicht auf der x - Achse bei der meiner Meinung nach gleichen Einstellungen
-> Darauf kann man mit den Eigenschaften Inkrement und kleinstes Inkrement Einfluss nehmen.
An für sich funktioniert es auch. Komisch finde ich nur, wenn ich die Eigenschaft in die While - Schleife mache in der auch das Signalverlaufsdiagramm aktualisiert wird, so verschwindet dieses wieder nach verlassen dieser Schleife. Ich kann es natürlich nochmal außerhalb der Schleife aufrufen, finde ich aber unschön. Auch suche ich noch den Eigenschaftsknoten der mir die Teilstriche beschriftet

[attachment=23557](LV 2009)
[attachment=23558](LV 2009)
(Beim hochladen wurde der Dateiname verstümmelt, sollte heißen ... Rücksetzen..)

Danke für die Unerstützung!
Hallo Malte,

erstmal ein paar generelle Hinweise:
- LV2009 hat eine wunderbare CleanUp-Funktion - damit sehen Blockdiagramme immer "hübsch" aus (meistens jedenfalls)!
- nach Möglichkeit Datentyp-konsistent programmieren
- LabVIEW hat Funktionen wie Kehrwert oder "+1", da muss man nicht eine Addition mit 1 oder eine generische Division bemühen (Stichwort: Übersicht)
- Wieso dividierst du eine Wert durch 100, um ihn dann wieder mit 1000 zu multiplizieren???
- wenn du einen Indikator nur benutzt, um einen Wert für den nächsten Aufruf zu speichern, kannst du auch eine FeedbackNode (oder: Shiftregister) nutzen...
- wenn eine Schleife nicht super zeitkritisch ist, sollte man ihr auch einen Delay spendieren, damit sich die CPU auch noch anderen Dingen widmen kann!

Allgemein gilt, dass die programmbestimmende while-loop ins MainVI gehört und nicht in ein SubVI...
' schrieb:Ich habe das "Takten" Programm neu gemacht. Für sich funktioniert es, nur kann ich es nicht als SubVI einbinden, hat wohl mit der while Schleife zu tun.
-> Setzt dich mit Meldern/Queue ect. auseinander und schau dir die Beispiele dazu an. Mit z.B. Meldern ist es recht einfach das Takten "im" SubVI auch auf dem MainVI darzustellen.

Das mit dem Eigenschaftskoten funktioniert nun, Danke! Wie könnte ich von der aktuellen Uhrzeit die im Diagramm ist diese abziehen, also das Diagramm "nullen". Ich finde keine Möglichkeit ein "1d - Array Signalverlauf" abzuändern
-> Dazu gibt es mittlerweile mehrere Beispiele/Einträge im Forum. Ich erinner mich an einen von Lucki. Musst du mal suchen...

An für sich funktioniert es auch. Komisch finde ich nur, wenn ich die Eigenschaft in die While - Schleife mache in der auch das Signalverlaufsdiagramm aktualisiert wird, so verschwindet dieses wieder nach verlassen dieser Schleife.
-> Kann man nicht beurteilen, da das VI mit dem Signalverlaufsdiagramm nicht hochgeladen wurde.

Auch suche ich noch den Eigenschaftsknoten der mir die Teilstriche beschriftet
-> Die werden automatisch beschriftet (soweit ich es jetzt gesehen habe)

Gruß SeBa
Hallo,

heute hab ich mich mal wieder mit dem Programm beschäftigt.

Zitat:Dazu gibt es mittlerweile mehrere Beispiele/Einträge im Forum. Ich erinner mich an einen von Lucki. Musst du mal suchen...
Genau das hat mich weitergebracht. Das funktioniert jetzt auch.

Ich habe auch damit begonnen das Diagramm aufzuräumen, bin aber noch nicht am Ende.

Zitat:-> Setzt dich mit Meldern/Queue ect. auseinander und schau dir die Beispiele dazu an. Mit z.B. Meldern ist es recht einfach das Takten "im" SubVI auch auf dem MainVI darzustellen.
Das ist ein Thema mit dem ich bis heute nicht klarkomme.
Ich habe ja im Endeffekt zwei parallele Tasks die ablaufen. Einmal die Messwerterfassung und aktualisierung des Diagramms, zum anderen die Steuerung der Ausgänge.
So wie ich das gelöst habe mit dem Takten in Zeitschritt 6 funktioniert offensichtlich nicht so..
Auch habe ich das Problem mit Beschriftung des Graphen (es fehlen die Teilbschriftungen). Hab ich das irgendwie wegoptimiert?

Hier die beiden Dateien die benötigt werden:
[attachment=23762](LV 2009)
[attachment=23763](LV 2009)

Grüße
Malte
Seiten: 1 2
Referenz-URLs