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 

Timer



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!

02.06.2009, 13:01 (Dieser Beitrag wurde zuletzt bearbeitet: 02.06.2009 13:04 von Kvasir.)
Beitrag #11

Kvasir Offline
LVF-Freak
****


Beiträge: 642
Registriert seit: May 2006

10
2004
DE_EN

0000
Oesterreich
Timer
Ich hab dir das Vi schnell umgeschrieben, sodass es als SubVi verwendet werden kann.

Ein SubVi solcher Art nennt man "funktionales Vi". Unter diesem Begriff findest du einige Beiträge hier im Forum.
Die prinzipielle Funktionsweise ist die, dass nun die Schleife pro Aufruf nur einmal durchlaufen wird, in den Shiftregistern aber die Daten des vorherigen Aufrufes gespeichert bleiben.

Beim ersten Aufruf solltest du den Wert Init einmal (und nur dieses einmal) auf True setzen.

Grüße


Sonstige .vi  Steuerung.vi (Größe: 15,31 KB / Downloads: 192)
Lv85_img

edit: Und hier noch deine Variante modifiziert.

Lv85_img
Sonstige .vi  steuerung_SubVI__1.vi (Größe: 16,76 KB / Downloads: 183)


Angehängte Datei(en) Thumbnail(s)
   

A few weeks of developement and testing can save a WHOLE afternoon in the library!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
02.06.2009, 13:07 (Dieser Beitrag wurde zuletzt bearbeitet: 02.06.2009 13:08 von Kvasir.)
Beitrag #12

Kvasir Offline
LVF-Freak
****


Beiträge: 642
Registriert seit: May 2006

10
2004
DE_EN

0000
Oesterreich
Timer
Hmm ok vor lauter schnell muss ich hier jetzt nochwas anfügen.

Du solltest auf jeden Fall deinen Indikator "aktuelle Position" hinter der Range Abfrage positionieren (in deiner Version - in meiner passt es schon). Wenn du es davor schon abgreifst kann der Wert außerhalb der Grenzen liegen, da ja erst durch die Range Überprüfung sichergestellt wird, dass keine Werte außerhalb vorkommen!

A few weeks of developement and testing can save a WHOLE afternoon in the library!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.06.2009, 13:35
Beitrag #13

NafeZ Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 95
Registriert seit: Apr 2009

8.5.1
2008
en

12345
Deutschland
Timer
Boar geil. Grooooooßes Dankeschön. Funzt! Aber da würdsch gern nochwas wissen: Das sog. "funktionale VI" hast du dadurch realisiert, dass du die Loop-Condition auf "Continue if true" gesetzt und mit false belegt hast oder? Und kann ich das SubVi jetzt auf mehrere andere "MainVIs" (Was eigentlich auch SubVIs sind) anwenden? Also ohne, dass ich in einem anderen VI die gleichen werte stehen habe?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.06.2009, 14:37 (Dieser Beitrag wurde zuletzt bearbeitet: 02.06.2009 14:37 von Kvasir.)
Beitrag #14

Kvasir Offline
LVF-Freak
****


Beiträge: 642
Registriert seit: May 2006

10
2004
DE_EN

0000
Oesterreich
Timer
Was ein funktionales Vi ausmacht ist prinzipiell eine Schleife, die nur einmal durchläuft und ein uninitialisiertes Shiftregister.
Dadurch speichert das Vi den Wert des vorherigen Aufrufes im Shiftregister. Du sparst dir damit also den Wert durch das ganze Main Vi durchzuziehen per Draht.
Du kannst natürlich auch die Schleife auf "Stop if true" und eine True Konstante vorne dranhängen. Das wesentliche ist - wie du richtig bemerkt hast - dass du eine Schleife hast, die nur einmal läuft.

Wenn du das Vi öfter anwenden willst, dann musst du es "reentrant" machen. Ohne reentrant gibt es nur eine Instanz von dem Vi. Jedesmal, wenn du es aufrufst (egal wo im Main Vi) wird der alte Wert durch den neuen ersetzt.

Schaltest du das Vi auf Reentrant, dann wird für jede Kopie (also für jedes Vorkommen deines SubVi im Blockdiagramm) des SubVi ein eigener Speicher angelegt. Damit bleibt dir der Wert also erhalten und du kannst das SubVi öfter verwenden.

Je nachdem ob du das SubVi also als Speicher für eine Variable, oder als eigenständige Funktion verwenden willst musst du also mit oder ohne reentrant arbeiten.

In deinem Fall dann mit reentrant. Einstellen tust du das über: - Datei -> Vi Einstellungen -> Ausführung -> ablaufinvariante Ausführung.

Grüße

A few weeks of developement and testing can save a WHOLE afternoon in the library!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.06.2009, 15:16
Beitrag #15

NafeZ Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 95
Registriert seit: Apr 2009

8.5.1
2008
en

12345
Deutschland
Timer
Danke für den kleinen Privatunterricht!Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  2 Parallele While-Schleifen mit unterschiedlichen Timer beenden Tomate27 3 2.956 18.08.2020 13:29
Letzter Beitrag: GerdW
  Timer macht was er will :-) Natalie1984 6 4.043 04.07.2019 12:49
Letzter Beitrag: IchSelbst
  While-Schleife anhalten ohne Timer valerian 2 4.174 04.10.2017 09:28
Letzter Beitrag: valerian
  Timer in [s] grba123 9 8.375 18.08.2015 15:14
Letzter Beitrag: Lucki
  Bedingung mit Timer verknüpfen ETechnik 7 6.465 28.05.2015 19:31
Letzter Beitrag: ETechnik
  (Absoluter) Bezug des VIs Timer-Wert RadioactiveMan 1 4.060 22.07.2014 13:17
Letzter Beitrag: jg

Gehe zu: