Ein paar Fragen dazu
@Hucki, weil wir analog nocht nie etwas getan haben...
1 Frage: wie werden bei Entry und Exit die Netzwerkeingänge betätigt? Sind ja nicht mit einen Block verbunden oder so...
2 Frage: kannst du bitte genau erklären was beim " Byte splitting" passiert?
Ps: die Bahn ist eine reine Sportbahn und darf nicht von Talfahrern benutzt werden, deswegen wird das Exit denke ich nicht benötigt
Zu erst einmal:
Das Exit wird auf jeden Fall benötigt, denn das ist der Belegungsspeicher für das Aussteigen auf dem Berg!
(Es ist also gar kein Speicher für eine eventuelle Talfahrt im Beispiel.)
Zu 1.:
Das hat mit dem Aufbau des Speichers (hier der lokale Variablenspeicher VM) zu tun.
Das WORD VW0 besteht aus 2 BYTEs, dem VB0 und VB1, und diese wiederum aus 16 BITs, V0.0-V0.7 bzw. V1.0-V1.7.
Wenn man den Analogwert 256 in das VW0 speichert (= analoger Netzwerkausgang NAQ1, Übernahme von B009) wird in diesem WORD das V0.0 gesetzt und alle anderen BITs zurückgesetzt. Bei 512 nur das V0.1 und bei 1024 das V0.2
Ob eines und und wenn ja, welches BIT dieser 3 gesetzt ist, lässt sich einfach mit den digitalen Netzwerkeingängen wieder (getrennt) einlesen.
Deswegen habe ich für diese Speicherung auch den VW gewählt.
Edit:

In der Simulation gibt es unten einen Button
Datentabelle.
Dort könnt Ihr z.B. auch ein VW einmal als Analog- und einmal als Binärwert beobachten und seht dann, was ich gerade versucht habe zu erklären.
/Edit
In der 1. Variante hatte ich ja noch 1, 2 und 4 als Werte genommen, dadurch waren die Bits V1.0 - V1.2 für die Speicherung der Sitzbelegung zuständig. Mit den jetzigen Werten bleibt das VB1 frei.
Stattdessen kommt jetzt die aktuelle Sitzplatznummer von 1 (in BITS = 0000 0000 0000 0001) bis 59 (in BITS = 0000 0000 0011 1011) ins Spiel. Alle diese Zahlen (sogar bis 255) passen komplett nur in das VB1.
Durch die Addition in B013 kommen also Sitznummer (= LOW BYTE) und Sitzbelegung (= HIGH BYTE) zusammen in ein WORD/Analogwert, ohne sich gegenseitig zu beeinflussen.
Dieser Analogwert wird dann mit jedem Sitz eins weiter geschoben, bis er an der Bergstation nach im Beispiel 6 in Echt dann 30 Sitze später als Exit im VW2 ankommt.
Zu 2.:
Wie vorher das VW0 (Talstation) besteht auch das VW2 aus 2 BYTEs: VB2 und VB3.
Das VB2 enthält wie vorher das VB0 die Sitzbelegung, welche sich wieder mit 3 einzelnen Netzwerkeingängen einfacher auslesen lässt, ohne dass die im VB3 stehende Sitznummer dabei "reinfunkt".
VB3 lässt sich so leider nicht direkt auslesen, da die Analogwerte der LOGO! immer mit ganzen WORDs arbeitet.
Verwendet man für die Anzeige das VW2, wird ja die Summe aus Sitzbelegung + Sitznummer angezeigt.
Und verwendet man das VW3 (VB3+VB4), wird die Sitznummer als Wert zwischen 256 (in BITS = 0000 0001 0000 0000) und 15.104 (in BITs 0011 1011 0000 0000) interpretiert, weil sich so die BITs im HIGH BYTE statt im LOW BYTE befinden.
Daher kopiere ich das VW3 (VB3 = Sitznummer + VB4 = leer) in das das VW5 (VB5= Sitznummer + VB6) und lese anschließend das VW4 (VB4 = leer + VB5= Sitznummer) als Analogwert aus. Jetzt befindet sich die Nummer wieder im LOW BYTE (HIGH BYTE ist leer) und wird so wieder als korrekte Sitznummer zwischen 1 und 59 erkannt.
Es wird also das VB3 aus dem VW2 herausgetrennt in ein separates BYTE des VW4.
PS:
Beim ersten Befüllen des FIFOs (nach Updates des Sesselliftprogrammes in der LOGO!) steht noch keine Sitznummer in den jeweiligen Speichern, daher wird da immer noch die 0 als Sitznummer angezeigt.
Es wird also normalerweise eine Ini-Fahrt benötigt. Auch um dann mit I1 den Sitzplatz 1 zwischen Realität und LOGO! abzugleichen.
Ist der FIFO dann gefüllt, sollten Sitznummer und- belegung aller 30 Plätze im FIFO durch die Remanenz der Min/Max-Bausteine auch bei einem Stromausfall erhalten bleiben, so dass nach dem Wiedereinschalten beides noch zur Verfügung steht.
Und keine Ahnung, ob Ihr überhaupt Sitzplatznummern habt.
Mein Gedanke war halt, dass so das Personal oben leichter kontrollieren kann, ob bei der Software auch wirklich nix schief gegangen ist (Murphys Gesetz

). Man sieht die Sitznummer, die aus dem FIFO-Exit kommt und kann sie mit der realen Sitznummer vergleichen. Ihr habt ja in der Bergstation ein HMI, dass sicher gut zur Anzeige dafür geeignet ist.
Ggf. könnte man so auch eine Korrektur der FIFO-Positionen sogar von der Bergstation aus antriggern. Das sind aber Sachen, die ihr vor Ort checken müsst, ob man sowas benötigt.