Problem mit Programmablauf, aktualisierung eines Diagramms
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!
15.12.2009, 10:05 (Dieser Beitrag wurde zuletzt bearbeitet: 15.12.2009 10:06 von maltejahn.)
Problem mit Programmablauf, aktualisierung eines Diagramms
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.
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
Problem mit Programmablauf, aktualisierung eines Diagramms
Mach' doch 2 parallele Schleifen. Eine zum Schreiben und eine zum Lesen und verwende keine Express-VIs.
Gruß Markus
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
15.12.2009, 14:11 (Dieser Beitrag wurde zuletzt bearbeitet: 15.12.2009 14:58 von Y-P.)
Problem mit Programmablauf, aktualisierung eines Diagramms
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.
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
Problem mit Programmablauf, aktualisierung eines Diagramms
Wo ist denn die parallele Schleife?
:offtopic:Bitte LabVIEW-Version mit angeben und Profil ändern (Du hast doch LabVIEW 2009, oder?), d.h. LVF-Regeln beachten.
Gruß Markus
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
11.01.2010, 10:48 (Dieser Beitrag wurde zuletzt bearbeitet: 11.01.2010 15:11 von jg.)
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
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
Problem mit Programmablauf, aktualisierung eines Diagramms
' 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
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
12.01.2010, 09:50 (Dieser Beitrag wurde zuletzt bearbeitet: 12.01.2010 09:53 von maltejahn.)
Problem mit Programmablauf, aktualisierung eines Diagramms
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
Problem mit Programmablauf, aktualisierung eines Diagramms
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...
Problem mit Programmablauf, aktualisierung eines Diagramms
' 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
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Problem mit Programmablauf, aktualisierung eines Diagramms
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?