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 

Programmstop



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!

14.02.2018, 16:49
Beitrag #11

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: Programmstop
(14.02.2018 10:14 )MartinNewBee schrieb:  wie programmiere ich einen quasi "Notaus" (ich weiß so was sollte nicht programmiert sondern gebaut werden).
Was willst du haben: Einen Notaus bzw. Nothalt oder nur einen ganz normalen "Ablauf sofort beenden" (es gäbe da noch "Ablauf nach Zyklus beenden").

Für beide Fälle ist es ratsam, die Ablaufsteuerung als Schrittkette zu gestalten. Arbeite die Schrittkette in einem festgelegten Raster ab, z.B. 50ms. Jeder einzelne Schritt einer Schrittkette darf nur einen Bruchteil der Rasterzeit der Schrittkette benötigen. Sollte eine definierte oder undefinierte Wartezeit benötigt werden, so muss diese Zeit eben ohne explizite Wartefunktion programmiert werden. Man könnte z.B. die Schrittkettenaufrufe zählen. Wenn du jetzt einen "Abbruch sofort" haben willst, muss du lediglich nach jedem einzelnen Schritt (also außerhalb der Case-Sequenz) die Ende-Bedingung abfragen. Ist sie eingetreten, setzt du den nächsten Schritt der Schrittkette einfach auf den Schritt "Ablauf sofort beenden".

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
16.02.2018, 14:09
Beitrag #12

THL Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 111
Registriert seit: May 2011

2012
2009
EN


Deutschland
RE: Programmstop
Wenn ich wiederholte Aktionen habe, deren Ausführungszeit selbst kurz ist, aber zwischen den einzelnen Ausführungen doch eine längere Zeitspanne verstreicht (z.B. alle zwei Sekunden einen Messwert auslesen), dann verwende ich üblicherweise kein Wait (das Stückeln mit 50 ms Häppchen missfällt mir da), sondern stattdessen eine Ereignisstruktur mit Timeout um ein sofortigen Stopp zu ermöglichen.
Vorteil von der Queue-Struktur ist weiterhin, dass die Ausführung dieses VIs auch durch jedes andere VI per Queue-Befehl abgebrochen werden kann.


Angehängte Datei(en)
12.0 .vi  Sofortiger_stopp.vi (Größe: 13,71 KB / Downloads: 240)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.02.2018, 09:15 (Dieser Beitrag wurde zuletzt bearbeitet: 17.02.2018 09:36 von Lucki.)
Beitrag #13

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Programmstop
Ergänzung zum Beitrag von THL:
Diese Programmstruktur allein ist aber noch keine Gewähr, dass ein VI sofort beendet wird. Damit wird zwar der Stop-Knopf sofort gelesen, es wird aber nicht die Auführung eines vielleicht sekundenlangen Waits abgebrochen.
Das "Zerstückeln" eines langen Waits, wenn es im VI vorkommt, in mehrere kleinere Teile wird damit nicht überflüssig gemacht.

Vieleicht auch interessant: Die Funktionen "Occurrences" (mit Meldern ginge es auch) lassen sich als unterbrechbares "Wait" verwenden. Die Funktion "O. Warten" verhält sich exakt wie ein "Wait", läßt sich aber mit der Funktion "O. Auslösen" jederzeit abbrechen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.02.2018, 08:03
Beitrag #14

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Programmstop
Falls es jemand interessiert: Hier noch ein Beispiel (der Einfachheit aufbauend auf Freddys VI), wie man, wenn ein VI Wartefunktionen mit großen Zeiten enthält, das VI augenblicklich abbrechen kann.

15.0 .vi  demo.vi (Größe: 10,92 KB / Downloads: 238)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.02.2018, 14:49
Beitrag #15

THL Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 111
Registriert seit: May 2011

2012
2009
EN


Deutschland
RE: Programmstop
(17.02.2018 09:15 )Lucki schrieb:  Ergänzung zum Beitrag von THL:
Diese Programmstruktur allein ist aber noch keine Gewähr, dass ein VI sofort beendet wird. Damit wird zwar der Stop-Knopf sofort gelesen, es wird aber nicht die Auführung eines vielleicht sekundenlangen Waits abgebrochen.
Das "Zerstückeln" eines langen Waits, wenn es im VI vorkommt, in mehrere kleinere Teile wird damit nicht überflüssig gemacht.
Da hatte ich mich wohl missverstänlich ausgedrückt. In meinem Beispiel ersetzt das Timeout der Ereignisstruktur das Wait. Es kommt also gar kein Wait vor, auf das man warten müsste.
Mein Vorschlag ist natürlich nur für solche Fälle gedacht gewesen, wo in (langen) regelmässigen Abständen ein Ereignis ausgelöst wird (welches selbst kein Wait mehr enthält).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.02.2018, 17:26 (Dieser Beitrag wurde zuletzt bearbeitet: 19.02.2018 17:28 von Lucki.)
Beitrag #16

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Programmstop
@THL
Ich wollte Dich nicht korrigieren, sondern nur ergänzen, denn bei andern VIs -nicht bei Deinem Beispiel - mit mehreren unterschiedlich langen Waits ist diese Struktur nicht gut ausbaufähig. Entweder man nimmt dann außerdem Wait-Funktionen - oder man verlagert das Warten nicht in den Sender der Queue, sondern in die einzelen Emfänger. (Und da aber mehrere Empfänger bei Queues nicht verwendet werden sollen, wären dann Melder - die hier gar nichts zu melden haben - zu verwenden.)
Also so:
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
Antwort schreiben 


Gehe zu: