01.07.2010, 18:44
Beitrag #1
|
quarks
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
|
|
|
01.07.2010, 18:47
Beitrag #2
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
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 !!
--------------------------------------------------------------------------
|
|
|
01.07.2010, 20:38
Beitrag #3
|
quarks
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
|
|
|
01.07.2010, 20:42
Beitrag #4
|
eg
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
|
|
|
01.07.2010, 21:44
Beitrag #5
|
quarks
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. (Selbstironie)
Für Heute vielen Dank an Euch und schlaft gut
quarks
|
|
|
02.07.2010, 05:45
Beitrag #6
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
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.
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 !!
--------------------------------------------------------------------------
|
|
|
02.07.2010, 07:56
(Dieser Beitrag wurde zuletzt bearbeitet: 02.07.2010 08:01 von Lucki.)
Beitrag #7
|
Lucki
Tech.Exp.2.Klasse
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.
|
|
|
02.07.2010, 08:09
Beitrag #8
|
Matze
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.
|
|
|
02.07.2010, 10:50
|
eg
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
|
|
|
| |