INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Programmablauf zufällig



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!

17.01.2008, 09:27
Beitrag #1

WolfiB Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 88
Registriert seit: Jul 2007

8.5
2007
de

711xx
Deutschland
Programmablauf zufällig
Hallo Users,

das angehängte Programm ist ein Teil eines großen Programms.
Ich möchte hiermit Ergebnisse (über Variablen) in einen String abspeichern.

Wenn eine bestimmte Variable gesetzt wird, soll eben wie in der dafür Programmierten Case-Seite vorgegebenen Werte an den String
angehängt werden.
Am Ende möchte ich den String dann in eine Datei speichern und evtl ausdrucken. Das geht auch immer.

Allerdings wird nicht zuverlässig jeder neue String-Teil an den gesamten angehängt.
Kann ich die ganze Case-Auswahl auch in eine Ereignisgesteuerte Struktur ändern? Hatte dies mal versucht, allerdings hat es mit den Variablen
nicht funktioniert.


Ich weiss, es sind viele Variablen verwendet. Wusste mir aber bei der größe des gesamten Programms nicht anders zu helfen.


Danke für eure Tips.

Gruß Wolle

Ich benutze LV Version 8.5.


Angehängte Datei(en)
Sonstige .vi  ErgSpeichern.vi (Größe: 222,84 KB / Downloads: 217)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
18.01.2008, 11:55 (Dieser Beitrag wurde zuletzt bearbeitet: 20.01.2008 15:10 von jg.)
Beitrag #2

WolfiB Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 88
Registriert seit: Jul 2007

8.5
2007
de

711xx
Deutschland
Programmablauf zufällig
Hey,

hab da nochmals was versucht.

Kann ich denn eine Ereignisgesteuerte Struktur nicht über die Abfrage von Anzeigeelementen steuern?
Gibt es da eine Möglichkeit?

Zeige die benutzten Anzeigelemente nicht ans, sondern blende Sie sowieso aus, benutze Sie nur als Variable.

Danke, Gruß Wolle

Lv85_img


Angehängte Datei(en)
Sonstige .vi  Erg_speichern_Test.vi (Größe: 18,58 KB / Downloads: 171)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.01.2008, 21:03
Beitrag #3

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Programmablauf zufällig
Zu deinem ersten Posting:

Hierzu muss ich sagen - und ich glaube da geht es vielen LV-Programmierern so: So ein Programm kuck ich gar nicht weiter an. So viele Variablen. So eine komplizierte Reihenfolge von Case-Sequenzen. Ich werfe da mal folgendes in den Raum: Statemachine, While-Schleife, Schieberegister, Queues/Melder und SubVIs, funktionale SubVIs - und die allgemeine LV-Hilfe. Vielleicht kannst du was brauchen, ich kann das nicht entscheiden.



' schrieb:Kann ich denn eine Ereignisgesteuerte Struktur nicht über die Abfrage von Anzeigeelementen steuern?
Nein. So wie du diesen Satz formuliert hast nicht.

Ein Ereignis wird ausgelöst, wenn der Anwender im Frontpanel eine Aktion ausführt. z.B. einen Wert in einem Eingabeelement ändert. Vom Blockdiagramm aus kann man ein Ereignis auslösen, indem man auf den Eigenschaftsknoten "Wert (signalisierend)" schreibt.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.01.2008, 17:21 (Dieser Beitrag wurde zuletzt bearbeitet: 20.01.2008 15:10 von jg.)
Beitrag #4

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Programmablauf zufällig
' schrieb:Wusste mir aber bei der größe des gesamten Programms nicht anders zu helfen.
Eine Lösung, wenn nicht gar die Lösung für vieles in LV, sind: Unterprogramme, also SubVIs.

Ich hab mal dein VI etwas angepasst. Siehe Anhang. Dieses VI funktioniert jetzt als Unterprogramm innerhalb deines Hauptprogrammes. Das SubVI speichert solange alle Daten, bis zuletzt "Speichern" aufgerufen wird. Diesen Sachverhalt hattest du bereits selbst derart programmiert.

Dieses SubVI wird jetzt - siehe Muster.VI - immer dann aufgerufen, wenn genau der Zustand, der über den Enumerator auswählbar ist, im Hauptprogramm eingetreten ist. Und da es nur genau einen Zeitpunkt gibt, an dem z.B. "P2 HSP3 speichern" gilt, wird im Datenfluß genau zu dieser Zeit das SubVI einmal mit genau diesem Enumerator-Wert (und natürlich den erforderlichen Werten) aufgerufen - und schon stehen die zu speichernden Daten im SubVI.

Es ist immer möglich, alle Variablen zu vermeiden. Das Arbeiten mit Unterprogrammen unterstützt diese Forderung (Variablen zu vermeiden).

Lv85_img


Angehängte Datei(en)
Sonstige .vi  ErgSpeichern_Neu.vi (Größe: 139,25 KB / Downloads: 171)

Sonstige .vi  Muster.vi (Größe: 11,85 KB / Downloads: 171)

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.01.2008, 12:37
Beitrag #5

WolfiB Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 88
Registriert seit: Jul 2007

8.5
2007
de

711xx
Deutschland
Programmablauf zufällig
Hallo,

danke IchSelbst für deine Antworten.

Es tut mir echt leid, dass es so viele Variablen sind. Wusste mir in der kurzen Zeit, in der ich erst mit LabVIEW arbeite
und welche für das ganze Projekt zur Verfügung stand, nicht anders zu helfen.

Nun auf dein geändertes Programm zu kommen:
Ich habe die Funktion bzw. die Umsetzung noch nicht ganz verstanden.

Hier nochmals meine Soll-Funktionsweise:
Die MAschine besitzt 3 gleiche Stationen, daher hatte ich die Ergebnisse jeweils in eigene VAriablen geschrieben. Da nicht garantiert
ist welche des 3 Stationen verwendet wird.

Wenn nun ein Durchlauf der jeweiligen Station und der jeweiligen Prüfung beendet ist, sollten die Ergebnisse in den String gespeichert werden.
Nach beendigung aller Prüfungen sollen diese gespeichert bzw. gedruckt werden.

Wie erfolgt bei deiner Umsetzung nun die Auswahl?
Muss ich die Ergebnissspeicher nun auf einen reduzieren?
Wo packe ich die beiden Programme nun hin?


Wäre nochmals sehr dankbar für die Hilfe.


Gruß Wolle
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.01.2008, 19:28
Beitrag #6

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Programmablauf zufällig
' schrieb:Ich habe die Funktion bzw. die Umsetzung noch nicht ganz verstanden.
Was genau hast du denn noch nicht verstenden? Benenne das hier und ich (oder wer gerade noch Lust hat) versuche dir das zu erklären.

Zitat:Die MAschine besitzt 3 gleiche Stationen, daher hatte ich die Ergebnisse jeweils in eigene VAriablen geschrieben.
Und genau so, wie du dir das denkst, tust du das auch programmieren: Ein SubVI, das maschinenunabhängig alles tut, was mit der Station zusammenhängt. Das SubVI bekommt dann einen Eingang, der die Maschine spezifiziert (Enumerator). Intern muss das SubVI natürlich so aufgebaut sein, dass mehrere Maschinen gesteuert respektive dass die Daten bzw. die Ergebnisse der einzelnen Maschienen irgendwo hinterlegt sind. Das Hinterlegen könnte in funktionalen SubVIs geschehen.

Zitat:Da nicht garantiert ist welche des 3 Stationen verwendet wird.
Da das eine SubVI maschinenunabhängig arbeitet, spielt es überhaupt keine Rolle, welche Station verwendet wird und welche nicht.
Ein solches SubVI hat einen weiteren Vorteil: Keiner kann sagen, mit dieser Station geht es, mit jener aber nicht. Ist das SubVI - so wie es sein soll - maschinenunabhängig, kann dieser Zustand gar nicht eintreten. Oder nur sehr schwierig.

Zitat:Wenn nun ein Durchlauf der jeweiligen Station und der jeweiligen Prüfung beendet ist, sollten die Ergebnisse in den String gespeichert werden.
Nach beendigung aller Prüfungen sollen diese gespeichert bzw. gedruckt werden.
Alles kein Problem - wenn du alles schön mit SubVIs machst. SubVIs sind wie "globale Variablen": Überall verfügbar und einsetzbar.
Dein Speicher-VI z.B. bekommt über den Enumerator-Eingang mitgeteilt, welche Station gespeichert werden soll. Dieses SubVI holt sich dann mittels des Enumerators aus dem funktionalen SubVI, das die Ergebnisse aller Maschinen (z.B. in einem Array of Cluster ect) enthält, die Ergebnisdaten eben dieser einen zu speichernden Station. Hast du z.B. String wie "Station 1", "Station 2" usw. dann geht das stationsunabhängig über den String-Formatier-Befehl "Format('Station %d',[MaschEnum])" (Beachte das %d und den Enumerator).

Zitat:Wie erfolgt bei deiner Umsetzung nun die Auswahl?
Vom SubVI aus gesehen über den Eingang, ein Enumerator mit den Werten "Station1", "Station2", "Station3" etc. Irgendjemand im Hauptprogramm nun muss entscheiden welche Station benutzt werden soll. Diese Entscheidung liefert nun den Enumerator, der in Datenfluß-technischer Manier nun durch das ganze Programm läuft bis hin zum Speichern.

Zitat:Muss ich die Ergebnissspeicher nun auf einen reduzieren?
Dein Ergebnisspeicher könnte ein funktionales SubVI sein, das in einem Array of Cluster die Ergebnisse aller Maschinen enthält. Ein Index entspricht dabei immer einer Maschine. Ein Cluster sind die Ergebnisse genau einer Maschine.

Zitat:Wo packe ich die beiden Programme nun hin?
Meine beiden SubVIs sind nur Muster. Wo du welches SubVI hintust, musst du in deiner Applikation entscheiden.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Zugversuch - Oberfläche: Programmablauf? _Markus_ 1 2.197 19.11.2019 13:47
Letzter Beitrag: GerdW
  Längere Wartezeit im Programmablauf quattro888 5 3.685 21.05.2019 14:26
Letzter Beitrag: quattro888
  Programmablauf creo_123 4 4.482 27.05.2013 11:43
Letzter Beitrag: GerdW
  Zufällig Auftretende Fehlermeldung dirkh 5 3.259 15.02.2013 14:55
Letzter Beitrag: swatski
  ProgrammAblauf Andy4u 2 5.134 23.05.2011 09:28
Letzter Beitrag: Andy4u
  Werte während Programmablauf abfragen/nachtragen Nele08 2 4.677 04.04.2011 12:21
Letzter Beitrag: Nele08

Gehe zu: