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 

Modelleisenbahn-Timing-Probleme



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!

15.03.2014, 15:39 (Dieser Beitrag wurde zuletzt bearbeitet: 15.03.2014 15:40 von "Chris".)
Beitrag #1

"Chris" Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Mar 2014

2013
-
EN

10
Deutschland
Question Modelleisenbahn-Timing-Probleme
Hallo,

versuche im Moment eine Modelleisenbahn via LV umzusetzen. Da ich noch recht ungeübt im Umgang mit LV bin, habe
gleich mal eine Frage zur folgenden Problematik....

SOLL:
Bis jetzt fahren 2 Züge in beide Richtungen. Ich würde gerne zusätzlich die Geschwindigkeit der Züge "seperat" regeln.

IST:
Wenn nur einer von beiden fährt, kann man die Geschwindigkeit über einen Drehknopf für den entsprechenden
Zug anpassen. Sobald man den zweiten dazuschaltet, beeinflußen sie sich gegenseitig. Huh


VERMUTUNG:
Ich vermute das es daran liegt, das der Cluster erst beschrieben wird, wenn beide Signale am Baustein "Replace Array Subset" anliegen.

Auch nach vielem Rumprobieren komme ich nicht so recht weiter.
Kann jmd helfen?

MfG und ein schönes Wochenende

Chris


Angehängte Datei(en)
13.0 .vi  cluster_array_1.1.vi (Größe: 24,04 KB / Downloads: 246)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.03.2014, 18:11 (Dieser Beitrag wurde zuletzt bearbeitet: 15.03.2014 18:16 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Modelleisenbahn-Timing-Probleme
Hallo Chris,

dein VI kommt mir so bekannt vor, hast du noch einen Kollegen oder gar einen anderen Nick?

Zum VI:
Zitat:SOLL:
Bis jetzt fahren 2 Züge in beide Richtungen. Ich würde gerne zusätzlich die Geschwindigkeit der Züge "seperat" regeln.

IST:
Wenn nur einer von beiden fährt, kann man die Geschwindigkeit über einen Drehknopf für den entsprechenden
Zug anpassen. Sobald man den zweiten dazuschaltet, beeinflußen sie sich gegenseitig.
Warum ist das wohl so? Vielleicht, weil beide Züge in der selben While-Loop verarbeitet werden?

Deine inneren 2 While-Loops für die zwei Züge laufen jeweils nur einmal durch: wenn man das Schieberegister durch einen Tunnel ersetzt, kann man die jeweilige While-Loop löschen. Wenn du das machst, siehst du auch, warum sich die Züge gegenseitig beeinflussen: du hast zwei verschiedene Wartezeiten in einer While-Loop. Nur die längere zählt…

- Ansonsten ist es eine äußerst dumme Idee, im Blockdiagramm die Namen von Terminals auszublenden! Sowas macht man einfach nicht! Oder würdest du in C sowas hier programmieren: "" := "" + "" ? Hmm
- (UI-)Schleifen sollten immer eine Wartezeit enthalten. Deine Start-Schleife hat keine…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.03.2014, 14:27
Beitrag #3

"Chris" Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Mar 2014

2013
-
EN

10
Deutschland
RE: Modelleisenbahn-Timing-Probleme
Hey GerdW,

Zitat:dein VI kommt mir so bekannt vor, hast du noch einen Kollegen oder gar einen anderen Nick?

Ja bin nicht allein....ist ein Projekt für die Uni.

Zitat:Warum ist das wohl so? Vielleicht, weil beide Züge in der selben While-Loop verarbeitet werden?

Deine inneren 2 While-Loops für die zwei Züge laufen jeweils nur einmal durch: wenn man das Schieberegister durch einen Tunnel ersetzt, kann man die jeweilige While-Loop löschen. Wenn du das machst, siehst du auch, warum sich die Züge gegenseitig beeinflussen: du hast zwei verschiedene Wartezeiten in einer While-Loop. Nur die längere zählt…

- Ansonsten ist es eine äußerst dumme Idee, im Blockdiagramm die Namen von Terminals auszublenden! Sowas macht man einfach nicht! Oder würdest du in C sowas hier programmieren: "" := "" + "" ? Hmm
- (UI-)Schleifen sollten immer eine Wartezeit enthalten. Deine Start-Schleife hat keine…

Hab es ein wenig verändert:

Alle Namen sind jetzt dem Blockdiagramm zu entnehmen.
Timer in Startschleife hinzugefügt.

Habe nur die äußere While Schleife entfernt. Damit habe ich doch 2 seperate Schleifen.
Das Register benötige ich um den entsprechenden Wert weiterzugeben und weiterhin nutzen zu können.

Jetzt habe ich das Problem das immer nur der Wert des letzten Schleifendurchgang´s durch den Tunnel weitergegeben wird. Gibt es eine Alternative zu einem Tunnel? Etwas was den gewünschten Wert nach jedem Schleifendurchlauf weitergibt? Oder kann ich eine andere Schleife nutzen, welche diese Anforderungen erfüllt?

Achso, was sind UI-Schleifen?

Gruß Chris


Angehängte Datei(en)
13.0 .vi  cluster_array_1.1_LVF.vi (Größe: 23,09 KB / Downloads: 227)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.03.2014, 19:52
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Modelleisenbahn-Timing-Probleme
Hallo Chris,

Zitat:Timer in Startschleife hinzugefügt.
Schon mal gut.
Noch besser wäre es, überall den richtigen Datentyp zu verwenden, um unnötige CoercionDots zu vermeiden!

Zitat:Habe nur die äußere While Schleife entfernt.
Mit der Folge, dass dein VI sofort (nach "Starten") wieder stoppt…
Durch die geänderte Abbruchbedingung stoppen diese Schleifen nie mehr…

Zitat:Damit habe ich doch 2 seperate Schleifen.
Ja. Die aber Dauerläufer sind…
THINK DATAFLOW!

Zitat:Das Register benötige ich um den entsprechenden Wert weiterzugeben und weiterhin nutzen zu können.
Wie ich schon mal sagte: wenn du das Schieberegister durch eine FeedbackNode ersetzt, brauchst du die Schleife nicht mehr. Dann wird noch offensichtlicher, dass diese Schleifen immer nur genau einmal durchlaufen…

Zitat:Gibt es eine Alternative zu einem Tunnel? Etwas was den gewünschten Wert nach jedem Schleifendurchlauf weitergibt?
Wenn die Schleifen nicht endlos laufen würden, würde ein normaler Tunnel auch funktionieren!

Zitat:Oder kann ich eine andere Schleife nutzen, welche diese Anforderungen erfüllt?
Wie schon mal gesagt: die inneren Loops sind unnütz, die äußere brauchst du weiterhin…

Zitat:was sind UI-Schleifen?
Das sind Schleifen, in denen man sich um das UI-Handling kümmert…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.03.2014, 15:38
Beitrag #5

"Chris" Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Mar 2014

2013
-
EN

10
Deutschland
RE: Modelleisenbahn-Timing-Probleme
Hey Gerdw,

erstmal Vielen Dank für deine Mühen!

Zitat:
Zitat:Timer in Startschleife hinzugefügt.
Schon mal gut.
Noch besser wäre es, überall den richtigen Datentyp zu verwenden, um unnötige CoercionDots zu vermeiden!

Geändert.

Zitat:
Zitat:Habe nur die äußere While Schleife entfernt.
Mit der Folge, dass dein VI sofort (nach "Starten") wieder stoppt…
Durch die geänderte Abbruchbedingung stoppen diese Schleifen nie mehr…

Zitat:Damit habe ich doch 2 seperate Schleifen.
Ja. Die aber Dauerläufer sind…
THINK DATAFLOW!

Hast du vollkommen recht. Habe ich geändert.

Zitat:
Zitat:Das Register benötige ich um den entsprechenden Wert weiterzugeben und weiterhin nutzen zu können.
Wie ich schon mal sagte: wenn du das Schieberegister durch eine FeedbackNode ersetzt, brauchst du die Schleife nicht mehr. Dann wird noch offensichtlicher, dass diese
Schleifen immer nur genau einmal durchlaufen…

Super Tip. Danke. Feedback Node ist drin. Schleifen laufen durch die geänderte Abbruchbedingung solange bis "STOP" TRUE wird.


Zitat:
Zitat:Oder kann ich eine andere Schleife nutzen, welche diese Anforderungen erfüllt?
Wie schon mal gesagt: die inneren Loops sind unnütz, die äußere brauchst du weiterhin…

Nun bin ich etwas verwirrt. Du sagtest doch, wenn ich seperate Zeiten für die Züge einstellen möchte, darf ich sie nicht in der selben Schleife laufen lassen. Also benötige
ich doch pro Zug eine Schleife. (Wenn ich "NUR" die äußere behalte, befinden sich die Züge in der selben Schleife (damit auch beide Wait-Bausteine) und es funktioniert nicht!)


Zitat:
Zitat:Gibt es eine Alternative zu einem Tunnel? Etwas was den gewünschten Wert nach jedem Schleifendurchlauf weitergibt?
Wenn die Schleifen nicht endlos laufen würden, würde ein normaler Tunnel auch funktionieren!

Nur nochmal für mein Verständnis. Der Tunnel einer While Schleife gibt immer nur den Wert des letzten Schleifendurchlaufs weiter. Also nur einen einzigen....richtig?
Es gibt also keine Möglichkeit den Wert nach "jedem" While Schleifen Durchlauf weiterzugeben?

Gruß Chris


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.03.2014, 15:46 (Dieser Beitrag wurde zuletzt bearbeitet: 18.03.2014 15:48 von GerdW.)
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Modelleisenbahn-Timing-Probleme
Hallo Chris,

Zitat:Nun bin ich etwas verwirrt. Du sagtest doch, wenn ich seperate Zeiten für die Züge einstellen möchte, darf ich sie nicht in der selben Schleife laufen lassen. Also benötige ich doch pro Zug eine Schleife. (Wenn ich "NUR" die äußere behalte, befinden sich die Züge in der selben Schleife (damit auch beide Wait-Bausteine) und es funktioniert nicht!)
Es funktionierte nicht so, wie du es programmiert hast…

Zitat:Der Tunnel einer While Schleife gibt immer nur den Wert des letzten Schleifendurchlaufs weiter. Also nur einen einzigen....richtig?
Nein, nicht "immer". Man kann den Tunnel per Rechtsklick konfigurieren und z.B. Autoindexing aktivieren…
Tipp: LabVIEW-Hilfe lesen, Einsteigerkurs absolvieren!

Zitat:Es gibt also keine Möglichkeit den Wert nach "jedem" While Schleifen Durchlauf weiterzugeben?
Wenn du "Durchlauf" schreibst, meinst du sicherlich "Iteration"…
1. THINK DATAFLOW: Werte werden erst nach Abarbeitung einer Struktur (hier: While-Loop) weitergegeben. Das beantwortet schon mal deine Frage…
2. Du kannst alle Werte sammeln (Stichwort Autoindexing) oder andere Methoden (wie Queues, Notifier, lokale Variablen, …) nutzen.

In deinem Bild hast du mal wieder grob den DATAFLOW missachtet! Wann wird die untere der zwei Schleifen gestartet? Wie oft wird sie durchlaufen iterieren?
Dank DATAFLOW wird deine Anzeige erst nach Beendigung beider Schleifen neu gezeichnet…

THINK DATAFLOW wird in der LabVIEW-Hilfe erläutert! Bitte mal lesen: Grundlagen->Erstellen eines Blockdiagramms->Blockdiagrammdatenfluss…
Ansonsten die Links in meiner Signatur beachten!

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
Lightbulb Windows 11 Timing Philipp_Kant 3 660 13.11.2024 14:03
Letzter Beitrag: Philipp_Kant
  Timing Einstellung DAQ-assistent bachatero18 6 4.411 26.02.2019 15:11
Letzter Beitrag: bachatero18
  Sequenz zur Dokumentation, Einfluss auf das Timing TSC 7 5.194 19.10.2016 07:08
Letzter Beitrag: TSC
  Timing-Probleme Joachim 1 3.166 20.08.2015 09:07
Letzter Beitrag: jg
  Timing Problem Nattdis 0 2.684 05.02.2015 14:56
Letzter Beitrag: Nattdis
  Timing simulation and control loop I2thavo 0 3.633 23.07.2014 19:49
Letzter Beitrag: I2thavo

Gehe zu: