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!
hab ma wieder nen kleines prob hoffe ihr könnt mir helfen,
ich suche eine möglichkeit die ausführungen eines SubVIszu zählen. dieses VI sitzt in der innersten Case.diese case ist nur dafür da, damit auch dieses VI welches gezählt werden soll anhält, denn es hatte zwar angehalten, doch im diagramm kamen alle Daten auf einmal als ich es fortgesetzt habe, obwohl ich die daten gar nicht brauche. ist komisch.
das VI welches ich zählen möchte sitzt auf einer For-Schleife mit 1. ich kanns also nicht direkt da zählen.
ich kann auch noch die Vis hochladen, wenn das bild zu dürftig ist.
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
Zähler bei SubVI und Pausefunktion...
Lad' mal das VI hoch.
Gruß Markus
' schrieb:Guten morgen,
hab ma wieder nen kleines prob hoffe ihr könnt mir helfen,
ich suche eine möglichkeit die ausführungen eines SubVIszu zählen. dieses VI sitzt in der innersten Case.diese case ist nur dafür da, damit auch dieses VI welches gezählt werden soll anhält, denn es hatte zwar angehalten, doch im diagramm kamen alle Daten auf einmal als ich es fortgesetzt habe, obwohl ich die daten gar nicht brauche. ist komisch.
das VI welches ich zählen möchte sitzt auf einer For-Schleife mit 1. ich kanns also nicht direkt da zählen.
ich kann auch noch die Vis hochladen, wenn das bild zu dürftig ist.
danke mfg
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
22.07.2008, 07:37 (Dieser Beitrag wurde zuletzt bearbeitet: 22.07.2008 20:31 von jg.)
so ganz habe ich nicht verstanden, was du genau machen willst. Was willst du nun zählen? Die Anzahl der Ausführungen des SubVis TempUhrz?
Was genau meinst du dann mit "es funktioniert so, aber nicht elegant"? Hier wird nichts gezählt. Wofür brauchst du denn die While Schleife?
Erklär doch bitte nochmal, was genau passieren soll.
Ansonsten zählt man am einfachsten mit Hilfe eines Schieberegisters (siehe Screenshot). Den False Case einfach durchverbinden.
Und bitte sieh die die Beispiele im Example Finder (oder hier im Forum) zum DAQmx an. Das was du machst ist ja fast schon grausam. Ein Expresselement alleine wird ja schon sehr bekämpft hier im Forum, aber ein ExpressVi, dessen Daten man nicht nützt mit einem klassischen DAQmx Read hab ich noch nie gesehen.
Wie gesagt schau dir Beispiele dazu an. Besonders was das Stoppen und zurücksetzen von Tasks angeht.
A few weeks of developement and testing can save a WHOLE afternoon in the library!
warum sind denn express vis so umstritten, und warum kann ich das nicht so machen mit dem daqmx read?? es funktioniert doch?? oder gibts da irgendwelche einschränkungen??
mit elegant meinte ich das komplette vi, wie du schon sagst mit dem express und dahinter daqmx....ist ja vielleicht nicht das wahre.
ich habe sehr viele schleifen und so drinne, und bin nicht besonders glücklich damit. weil es außerdem auch sehr unübersichtlich wird.
das Problem mit den Express Vis ist, dass man eigentlich nie so recht weiß, was die genau machen. Deswegen sind sie nicht unbedingt beliebt.
In deinem Fall zum Beispiel erzeugt dir das Express Vi einen Task, liest Daten ein und beendet den Task wieder. Das macht das nun jedes mal, wenn es aufgerufen wird. Dabei würde es völlig ausreichen den Task einmal zu erzeugen, einmal zu starten, öfters zu lesen, einmal zu schließen und einmal zurückzusetzen. Nicht jede Schleife wieder. Das schluckt im günstigsten Fall Rechenzeit und im schlechtesten bekommst du Probleme mit den Ressourcen der Hardware (wenn du z.B. zwei Tasks parallel hast).
In deinem Fall liest du ja sogar doppelt Daten aus. Das ExpressVi an sich mißt ja schon (blauer Datenausgang) und du hängst noch einmal ein Read daran. Wobei du die Daten des Express Vi's gar nicht nutzt, womit es eigentlich ja schon den Sinn verfehlt.
Probier mal auf das Vi rechtsklicken und wähle "NI-DAQmx-Code erzeugen" aus. Da siehst du, was das Express Vi eigentlich alles macht (was du zum Teil nicht brauchst).
Vielleicht probierst du nochmal zu erklären, was du eigentlich genau machen willst. Also was dein Programm hier können soll? Was soll gezählt werden? Was soll wann, wie oft gemessen werden?
Ich bin mir sicher, dass wir dann ein paar Tips und Anregungen liefern können.
Grüße
A few weeks of developement and testing can save a WHOLE afternoon in the library!
22.07.2008, 11:58 (Dieser Beitrag wurde zuletzt bearbeitet: 22.07.2008 20:32 von jg.)
hi
habs nochmal überarbeitet, jedoch hab ich immernoch nen daqmx stop drinne...schau mal bitte rein.
hab das expressvi weggemacht.
mein programm soll folgendes machen:
es soll werte wie uhrzeit zähler temperatur strom spannung druck schall schwingung... anzeigen und speichern. sind insgesamt 26 werte +uhr und zähler.(das projekt läuft über 30 tage am stück und jede sec 2 datenpakete)
ein pause button und eine automatische abschaltung wenn temperatur zu hoch ist oder so.
gezählt werden soll z.b. wie oft daten gespeichert wurden oder eben jede sec 2 mal. wenn pause ist soll er logischerweise nicht zählen^^
außerdem soll es alle 6 sec ein signal an einen frequenzumrichter schicken damit der die drehrichtung des motors ändert.
das ist so in etwa der grundgedanke.
ich habe bis jetz nur für die temperatur das VI, weil der rest ja nur einbindung ist oder?
wäre für tips echt dankbar
mfg
22.07.2008, 13:23 (Dieser Beitrag wurde zuletzt bearbeitet: 22.07.2008 13:25 von Kvasir.)
so habe dir auf die schnelle einen rudimentären Vorschlag gebastelt.
Du siehst hier, dass ich sämtliche Initialisierungen vor der Schleife erledige. Nach der Schleife wird wieder alles zurückgesetzt.
Ich habe dir ebenfalls einen sehr einfachen Vorschlag eingebaut, wie du das Abschalten beim überschreiten eines Wertes angehen könntest. Hier wird einfach der 0. Kanal (Index Array) mit CritValue verglichen, und wenn er größer ist als der Wert die Schleife abgebrochen.
Ich öffne auch die Datei vor der Schleife und Schließe sie erst nach der Schleife. Dies spart massiv Rechenzeit. Allerdings solltest du dir bei einer Laufzeit von 30 Tagen überlegen, ob du nicht zwischendrinnen die Datei schließen willst um einem totalen Datenverlust bei Absturz des Systems zu verhindern.
Der Zähler läuft unten einfach mit, ohne dass er irgendwo benutzt wird. Den müsstest du natürlich noch in die Datei mit einbinden.
Das farbige Vi in der Mitte ist dein "ArrStrTempUhrz.vi". Habe es nur aus optischen Gründen mit einem Symbol versehen.