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 

Ereignis-gesteuerter Ablauf (wenn > dann > wenn > dann …)



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!

01.07.2010, 18:44
Beitrag #1

quarks Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Jul 2010

7.1
2010
de


Deutschland
Ereignis-gesteuerter Ablauf (wenn > dann > wenn > dann …)
Hallo Forum,
ich habe in den letzten Tagen so einiges versucht und auch hier gelesen, allerdings stehe ich immer noch total auf dem Schlauch und finde keinen Einstieg für mein erstes richtiges LV7.1 Projekt.

Das Projekt:
Ein Ofen fährt in einer Endlosschleife eine programmierte Temperaturkurve 10°C – 95°C und wieder auf 10°C, das macht er selbstständig.

In LabVIEW habe ich 2 analoge Eingänge, ein Temperatureingang und einen digitalen Ausgang.

Nun soll der Ablauf folgendermaßen aussehen:

>>>>>
Step1 - Ist Temperatur über 90°C gehe zu Step2
Step2 - Starte Timer 15Min. > Sind 15Min vorbei gehe zu Step3
Step3 – Zähle Zähler1 +1, setze Digitalen Ausgang, gehe zu Datenaufzeichnung

Step4 – Ist Temperatur unter 13°C gehe zu Step5
Step5 - Starte Timer 20Min. > Sind 20Min vorbei gehe zu Step6
Step6 – Zähle Zähler1 +1, lösche Digitalen Ausgang, gehe zu Datenaufzeichnung

Step7 – gehe zu Step1

Datenaufzeichnung - für 12 sec. Der Analogeingänge, Temperatur und Zählerstand dann Rücksprung
<<<<<<<<

Ein Highlight wäre noch wenn jede Minute die Datenaufzeichnung 1x angetriggert wird um den Temperatur-verlauf mitzubekommen.

Ich habe es schon mit case-strukturen, viele aneinander gehängte und und oder und oder nicht dies aber das nicht Verknüpfungen und Timer versucht :-) verwirre mich aber immer mehr in Unlogik. Ich habe keinen Ansatzpunkt wie ich den sturen Ablauf hinbekomme.

Ich bin schon für einen Gedankenanstoß froh und ganz toll wäre natürlich ein Muster zum spionieren.

Vielen Dank im voraus an alle von Euch
Mit freundlichen Grüßen Quarks
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
01.07.2010, 18:47
Beitrag #2

Y-P Offline
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
LVF-Team

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
Ereignis-gesteuerter Ablauf (wenn > dann > wenn > dann …)
Hier ist eine "State Machine" schon fast unumgänglich. Bsp. dazu gibt's einige im Forum.

Gruß Markus

--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.07.2010, 20:38
Beitrag #3

quarks Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Jul 2010

7.1
2010
de


Deutschland
Ereignis-gesteuerter Ablauf (wenn > dann > wenn > dann …)
Hallo Markus,
danke für die schnelle Antwort.
Da ich gerade mein LV nicht zur Verfügung habe kann ich nicht schauen ob dies in meiner base Version vorhanden ist. Habe heute schon ein paar mal über diesen Ansatz gelesen und Beispiele (nur die Grafiken da ich zu Hause kein LV habe) versucht nachzuvollziehen, allerdings die Funktion des Weiterschalten innerhalb der Struktur nicht wirklich verstanden.

Gruß quarks
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.07.2010, 20:42
Beitrag #4

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Ereignis-gesteuerter Ablauf (wenn > dann > wenn > dann …)
Eine "normale" Programmierung reicht hier völlig aus. State Machine muss nicht unbedingt sein, einfach die Steps nach und nach abarbeiten, der Datenfluß macht den Rest für dich.


Gruß. eg

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.07.2010, 21:44
Beitrag #5

quarks Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Jul 2010

7.1
2010
de


Deutschland
Ereignis-gesteuerter Ablauf (wenn > dann > wenn > dann …)
OK,
die State Machine werde ich morgen mal in LV versuchen zu verstehen. Und die normale Programmierung werde ich auch testen wenn ich noch ein paar Schlagwörter für den Ansatz zum rumknobeln bekomme. Wie gesagt ich versuchte es mit der flachen case Struktur idas hat nicht geklappt. Allerdings glaube ich das dies der richtige Ansatz war aber die "verknüpfelung" (sorry) von mir Müll war.

Tja, die abnormale Programmierung beherrsche ich ja (helfe da auch gerne jedem, jederzeit darin weiter) allerdings führt diese leider nicht zum Ziel.Big Grin Huh (Selbstironie)

Für Heute vielen Dank an Euch und schlaft gut
quarks
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.07.2010, 05:45
Beitrag #6

Y-P Offline
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
LVF-Team

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
Ereignis-gesteuerter Ablauf (wenn > dann > wenn > dann …)
:ironie:Ja, man kann auch 6 Bildschirme nach rechts programmieren in einer Flat-Sequence. O

In dem Fall würde ich jedenfalls zu 100 % eine State-Machine verwenden.

Gruß Markus

' schrieb:Eine "normale" Programmierung reicht hier völlig aus. State Machine muss nicht unbedingt sein, einfach die Steps nach und nach abarbeiten, der Datenfluß macht den Rest für dich.
Gruß. eg

--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
02.07.2010, 07:56 (Dieser Beitrag wurde zuletzt bearbeitet: 02.07.2010 08:01 von Lucki.)
Beitrag #7

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Ereignis-gesteuerter Ablauf (wenn > dann > wenn > dann …)
Bei einer textorientierten Programmiersprache würde man über den Fall, daß Programmierschritte linear hintereinander ausgeführt werden sollen, überhaupt nicht nachdenken müssen, und am allerwenigsten an eine Statemachine denken: Programmanweisungen hintereinander schreiben - fertig.
Bie LabVIEW hat man die Besonderhait, daß alles was datenmäßig nicht voneiander abhängig ist, virtuell gleichzeitig ausgeführt wird, es gibt kein Garantie auf ein bestimmte Reihenfolgé. Man muß diese gegebenenfalls erzwingen.

Die Möglichkeiten dazu sind:[list]
[*]Datenabhängigkeiten herstellen (bevozugte Methode)
Falls sich das nicht auf natürliche Weise sowieso ergibt, kann man den Fehlercluster Ein/Ausgang, den die meísten VIs haben, dazu benutzen, diese Abhängigkeiten herzustellen.<>
[*]Sequenzrahmen, hintereiander<>
[*]Sequenzrahmen, gestapelt<>
[*]State-Machine.<>
[st]Bei einer richtigen State-Machine werden typischerweise in den einzelnen Staten logische Entscheidungen gefällt, welcher Status als nächstes angesprungen werden soll. Wenn es einfach linear weiter geht, dann muß man keine State-Machine verwenden (und wenn man sie verwendet, dann würde ich sie nicht als solche bezeichnen, sondern allenfalls als ein Gebilde, welches den optischen Eindruck eine State-Machine macht).

Wenn man sie aber hier verwendet, dann nur deshalb, weil die alternative Verwendung von Sequenzrahmen auch ihre Nachteile hat:
Sequenzrahmen, hintereinander: Das BD wird kann meterlang werden und passt nicht mehr auf den Monitor.
Sequenzrahmen, gestapelt: Die Überführung von lokalen Sequenzvariablen in die nachfolgenden Rahmen verursacht oftmals häßlichen Drahtwirrwar.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.07.2010, 08:09
Beitrag #8

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Ereignis-gesteuerter Ablauf (wenn > dann > wenn > dann …)
Hallo zusammen!

' schrieb:Wenn man sie aber hier verwendet, dann nur deshalb, weil die alternative Verwendung von Sequenzrahmen auch ihre Nachteile hat:
Sequenzrahmen, hintereinader: Das BD wird kann meterlang werden und passt nicht mehr auf den Monitor.
Sequenzrahmen, gestapelt: Die Überführung von lokalen Sequenzvariablen in die nachfolgenden Rahmen verursacht oftmals häßlichen Drahtwirrwar.
Weitere Nachteile, weshalb ich eine Sequenzstruktur generell nicht verwende (auch wenn der Ablauf zunächst fest vorgegeben ist):[list]
[*]ein nachträgliches Einfügen von Zuständen ist nur schwer möglich<>
[*]Zustände können nicht mehrfach pro Ablauf ausgeführt werden
Hier müsste ein kompletter Abschnitt kopiert werden, was die Wartbarkeit erschwert und fehleranfällig ist bei Änderungen. Es passiert schnell, dass man vergisst, bei Änderungen alle identischen Abschnitte anzupassen und selbst dann können sich Fehler einschleichen<>
[*]die Reihenfolge ist fest vorgegeben und kann ohne weiteres nicht verändert werden (speziell bei Prüfabläufen ist das teils nötig, wenn man sieht, dass ein Prüfschritt o.ä. fehlt)<>
[st]Auch wenn ich wenige Millisekunden warten muss (Ventiltrennzeit o.ä.), verwende ich das folgende SubVI. Das wirkt zwar primitiv, doch ich zweckentfremde den überflüssig erscheinenden Fehleranschluss, um die Ablaufreihenfolge nach dem Datenflussprinzip vorzugeben.

   

Fazit: Die Sequenzstrukur hat meiner Meinung nach fast nur Nachteile und sollte nicht verwendet werden.

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.07.2010, 08:38
Beitrag #9

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.689
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Ereignis-gesteuerter Ablauf (wenn > dann > wenn > dann …)
Gerade die von quarks beschriebene Abfolge schreit ja förmlich nach einer Statemachine.

Statemachine haben einen weiteren Vorteil: Nach jedem einzelnen Step kann man nämlich, und zwar außerhalb der Statemachine-Struktur, einen für alle Schritte identischen Code ausführen lassen. Abbruch der Statemachine zu einem beliebigen Zeitpunkt wäre so ein Fall.

Eine Statemachine muss auch nicht zwangsläufig linear sein. Wenn ein Step S1 z.B. 20 Minuten warten soll, muss das nicht der Step S1 selbst machen. Er ruft einen Step SW mit Parameter WAIT auf. Der Step SW selbst ruft sich im Raster von z.B. 20ms selbst auf. Jetzt hat man die Möglichkeit im Raster von 20ms irgendwas zu machen - z.B. Abbrechen. Nach den 20 Minuten gibt der Step SW die Kontrolle wieder an den aufrufendes Step zurück.

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
02.07.2010, 10:50
Beitrag #10

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Ereignis-gesteuerter Ablauf (wenn > dann > wenn > dann …)
Also ich bleibe bei meiner Meinung. Die Steps kann man in SubVIs packen, Loops und Case-Strukturen machen die mehrmalige Ausführung und Entscheidungen. Falls man ein Step mehrmals ausführen muss, dann das entsprechende SubVI einsetzen. Den Datenflüß über Error-Cluster ist die beste Möglichket, sogar Fehlerbehandlung ist inklusive. Falls parallele Abläufe gewünscht sind, Producer/Consumer verwenden.
Was fehlt noch?

Gruß, eg

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Mittelwert wenn Werte in erster Spalte gleich marc_ampa 6 4.979 21.03.2022 08:38
Letzter Beitrag: marc_ampa
  Messwert für eine gewisse Zeit (~5sek.) speichern und dann erst ausgeben niklas2016 8 5.184 31.03.2021 09:35
Letzter Beitrag: GerdW
  Bestimmte Zeilen im Array löschen wenn Bedingung nicht erfüllt ist bachatero18 4 5.315 31.03.2020 14:49
Letzter Beitrag: bachatero18
Wink Benutzerdefinirtes Ereignis mit Arduino jennylena 1 3.260 15.02.2018 09:53
Letzter Beitrag: IchSelbst
  Ereignis Struktur 911tom 9 6.896 20.12.2017 20:57
Letzter Beitrag: GerdW
  Event Case Ignoriert Tastendruck wenn in Gegenwart eines anderen "Leeren" Event Case Ksanto 8 8.221 23.10.2017 09:08
Letzter Beitrag: Ksanto

Gehe zu: