Jump to content

Empfohlene Beiträge

Geschrieben

Wie benutze ich den Index bei Listen oder Tabellen wo ist der unterschied und wie geht das mit Mehrfach Bedingung und wo führ

Habe schon Listen gebe bei Index immer Zufall zahl ein auch Wiederholung habe ich schon lauft auch alles ob die Wiederholung in der Anlage notwendig ist weis ich nicht 

Geschrieben
1 hour ago, aloys63 said:

ob die Wiederholung in der Anlage notwendig ist weis ich nicht 

Hallo @aloys63 , Die Wiederholung ist wichtig, um alle Objekte in der Liste durchzugehen. 
Der Index der Liste ist numerisch. Eine Tabelle kann Text als Index haben.
Wenn Sie spezifischere Fragen zu Listen/Tabellen haben, werden Ihnen sicherlich erfahrenere Mitglieder weiterhelfen.
Grüße Herman

 

Geschrieben

Hallo @aloys63 ,

Ich versuche mich mal an einer Antwort. Ich lese folgende Fragen aus deinem Post heraus:

1. Was ist der Unterschied zwischen Listen und Tabellen
Eine Liste enthält eine Reihe von gleichartigen Objekten, eine Tabelle kann unterschiedliche Objekttypen beinhalten.
In einer Liste wird die angezeigte Zahl (im Feld Namen) als Index genutzt, bei Tabellen der frei vergebbare Name.
Hierzu zwei Beispiele:

Hier eine Liste, wie sie bei mir z.B. bei einem Schattenbahnhof vorkommt und die möglichen Einfahr-Fahrstraßen enthält. Darin wird eine einzelne Fahrstraße durch den im Namen genannten Index addressiert, also durch die Zahl. Beim Erstellen von neuen Einträgen kannst Du keinen Namen vergeben (per Variablenbearbeitung) bzw. musst Du bei Hinzufügen über die EV selbst für den Eintrag des richtigen Index sorgen.

BeispielListe.jpg.f02fec1174cda3f58b791bc703c26a77.jpg

Hier jetzt eine Tabelle, wie sie bei mir bei Signalen vorkommt. Wie Du im dahinterliegenden Fenster erkennen kannst, sind mehrere Tabellen in einer Liste enthalten. Je Tabelle gibt es einen Eintrag (Text) "Routing", der mit dem Routing-Eintrag der eingefahrenen Lok abgeglichen wird. Gibt es eine Übereinstimmung, so wird die Fahrstraße aus dieser Tabelle freigeschaltet. Bei einer Tabelle wird also der Name als Index benutzt.BeispielTabelle.thumb.jpg.e398c8ab6fe9b2b9e3db82a83a19d46a.jpg

2. Wie geht das mit Mehrfachbedingung ?

Manchmal braucht man mehr als einen Abfragewert, um eine Bedingung als richtig zu erkennen. Hier ein Beispiel:
An einem Signal soll normalerweise die nächste Fahrstraße freigeschaltet werden, es sei denn, es ist ein Bahnhofssignal, bei dem der Zug dann anhalten soll, damit die Passagiere ein- oder aussteigen können. Das wäre eine einfache Bedingung:

Mehrfachbedingung1.jpg.1fdb581705b5981d18fbe6a64316cf44.jpg

Jetzt kommt eine weitere Bedingung hinzu: Im Bahnhof sollen keine Güterzüge halten, sofern der nächste Fahrabschnitt frei ist. Also soll die Bedingung erweitert werden. Dies geht mit der Schaltfläche "Weitere Bedingung hinzufügen". Dort können dann weitere Bedingungen ergänzt werden:

Mehrfachbedingung2.jpg.49f750b3ea6df68af469416783528dde.jpg

Zwischen den einzelnen Bedingungen kann eine Verknüpfung zwischen "und" oder "oder" umgestellt werden. Vorteil der Mehrfachbedingung ist, dass die Bedingungen nicht einzeln abfragen muss und dann jeweils dieselben Aktionen mehrfach definieren muss.

3. Wofür braucht man Wiederholungen ?

Es gibt verschiedene Einstiege, für die man Wiederholungen durchführen kann. Hier mal zwei Beispiele:

In der Liste oben sind Fahrstraßen enthalten. Wenn ich hieraus eine freie Fahrstraße ermitteln will, erstelle ich eine "Wiederholung für Elemente einer Liste". In der EV wird eine Schleife angelegt, in der bei den Aktionen und Bedingungen das Objektfeld mit dem Zahnrad auf "Wiederholung" umgestellt werden kann. Dann bezieht sich diese Aktion auf das gerade aktive Element aus der Liste.

In meiner Anlage haben alle fahrenden Straßenfahrzeuge das Schlagwort "Auto". Wenn ich die Anlage starte, möchte ich, dass alle Straßenfahrzeuge mit einer einheitlichen Geschwindigkeit losfahren. Also gibt es hier eine Wiederholung "für alle Objekte mit einem Schlagwort" "Auto". In dieser Schleife wird für das Wiederholelement (also Auto) die Geschwindigkeit eingestellt.

Wenn Du Fragen hast, nur fragen!

Viele Grüße,
    Wolfgang

 

Geschrieben

Habe nichts verstanden 

Wenn der Zug auf  dem Kontakt steht soll er Prüfen ob eine Fahrstraße aus der Liste die im Kontakt frei ist und die Aktivieren was mache ich falsch 

Test.mbp

Geschrieben

Hallo @aloys63 ,

Nachdem Phrontistes Deine EV schon einmal überarbeitet hat: Wiederholungen haben auch ihre Fallen. Wenn im Bahnhof alle Gleise frei wären, würden alle drei Fahrstraßen aktiviert. Deshalb muss innerhalb der Wiederholung sichergestellt werden, dass nur eine Fahrstraße aktiviert wird. Dies kann man zum Beispiel durch eine Variable des Gleiskontaktes erreichen (Im Beispiel "Fahrstraße gefunden"). Vor der Wiederholung wird diese Variable auf falsch (Boolwert false) gesetzt. Wird eine Fahrstraße gefunden, so wird diese Variable auf wahr (Boolwert true) gesetzt. Bevor eine Fahrstraße geprüft wird, wird eine Bedinung eingefügt, ob diese Variable noch auf falsch (false) steht. Falls nicht, wird die Prüfung und Aktivierung der Fahrstraße nicht durchgeführt:

Fahrstraenprfung1.thumb.jpg.01880d781240d816f796cb3c8c93e402.jpg

Hierzu noch eine Anmerkung: Wenn keine Fahrstraße aktiviert werden kann (alle Bahnhofsgleise belegt), dann müsste beim Verlassen eines Bahnhofssignal geprüft werden, ob auf dem Gleiskontakt "Einfahrt Gleis 1-3" ein Zug wartet und - falls ja - diese Aktionen ebenfalls ausgeführt werden.

Nebenbei ist dies ein schönes Beispiel für eine Mehrfachbedingung. Hier wird einmal abgefragt, ob die Variable "Fahrstraße gefunden" den Wert false hat und dann ob die Fahrstraße frei ist und aktiviert werden kann. Dies kann man zusammenfassen zu einer Mehrfachbedingung:

Fahrstraenprfung2.thumb.jpg.024ea55c1d7ba271ed2b4bfdaefa1b9e.jpg

Viele Grüße,
    Wolfgang

 

Geschrieben
vor 15 Stunden schrieb Phrontistes:

Hier korrigierte Version. Deine zweite Zeile war überflüssig, die dritte falsch.

Test korrigiert.mbp 423.73 kB · 6 downloads

Danke für Die korrigierte Anlage wahr ich ja fast richtig Phrontistes

und Danke prinz deine EV muss ich öfter lesen um es zu Fersten und selber machen 

Auf jeden Fall ein dickes Danke an beide und eine schöne Woche 

Geschrieben (bearbeitet)

Hallo Wolfgang,

vor 1 Stunde schrieb prinz:

Wenn im Bahnhof alle Gleise frei wären, würden alle drei Fahrstraßen aktiviert.

warum? Sobald die erste FS aktiviert ist, trifft beim nächsten Durchlauf der Schleife die Bedingung "frei und kann aktiviert werden" im zweiten Teil nicht mehr zu (weil alle über die erste Weiche müssen, und die ist schon gesperrt), d.h. weitere FS werden nicht mehr aktiviert. Getestet habe ich es nicht. Du?

Beste Grüße

Phrontistes

Bearbeitet von Phrontistes
Geschrieben

Hallo Phrontistes Solange eine Fahrstraße frei ist wenn der kontakt ausgelöst wird ist alles ok aber wen der Zug warten muss weil alle belegt sind bleibt der Zug stehen wenn eine Straße frei wird was muss man machen das so lange abgefragt wird bis eine frei ist und diese dann aktiviert 

Geschrieben
vor 6 Minuten schrieb aloys63:

was muss man machen das so lange abgefragt wird bis eine frei ist

Frag nicht "solange, bis eine frei wird"
Besser ist, du reagierst, wenn eine frei wird (= ein Zug ein Gleis verlässt) und fragst dann, ob sie für einen neuen Zug gebraucht wird.
So muss die EV nicht permanent ergebnislos ackern sondern wird nur dann aktiv, wenn es auch sinnvoll ist.

Geschrieben
vor 42 Minuten schrieb aloys63:

wenn eine Straße frei wird was muss man machen

 

vor 3 Stunden schrieb prinz:

Wenn keine Fahrstraße aktiviert werden kann (alle Bahnhofsgleise belegt), dann müsste beim Verlassen eines Bahnhofssignal geprüft werden, ob auf dem Gleiskontakt "Einfahrt Gleis 1-3" ein Zug wartet und - falls ja - diese Aktionen ebenfalls ausgeführt werden.

 

Geschrieben

Das ist nach dem Umbau aber nur eine runde Sache, wenn alle Bahnhofsgleise belegt sind. Ist das nicht der Fall, bleibt der Zug am Einfahrsignal stehen, obwohl Gleise frei sind, weil Du nicht mehr prüfst, ob ein Gleis frei ist.

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...