[erl.] FiFo: Probleme Enter und In Aktion

[erl.] FiFo: Probleme Enter und In Aktion

Postby lordbrummi » 20.12.2017, 13:03

Hallo zusammen,

ich würde euch bitten, daß ihr euch mal folgendes Minibeispiel anschaut, vielleicht habt ihr ja Lösungsmöglichkeiten, bin mal auf eure Rückmeldungen gespannt.

Kurz zum Plan:
Relevant sind nur die 3 Startblöcke und der Folgeblock b1
Unter dem Enter Melder von b1 gibt es ein Textfeld, daß die lcid nach Enter on anzeigt.
Ebenso gibt es unter dem IN Melder von b1 ein Textfeld, daß die lcid am IN anzeigt.

Wichtig: Bitte in eurer Testumgebung noch den Rocview-Pfad für XML Skripte anpassen, der Plan enthält die beiden XML - Scripte um die Funktionen zu schalten.

Am Enter gibt es 2 Aktionen:
Das Textfeld unter dem Enter mit %lcid% updaten
Und die Funktion BL-R schalten.

Am In gibt es auch 2 Aktionen:
Das Textfeld unter dem In Melder mit %lcid% updaten
Und die Funktionen BL-L schalten.

Ablauf zum Nachsimulieren:
- 3 Startblöcke, setzt mal Auto1 in Startblock1, Auto2 in Startblock2 und Auto3 in Startblock 3
- Gleispannung und Automatik on
- Jetzt nur mal Auto1 starten und den Enter von B1 auslösen (noch nicht den IN)
- Jetzt Auto2 starten und ebenfalls den Enter von B1 auslösen
- Jetzt Auto 3 starten und ebenfalls den Enter von B1 auslösen
(alle 3 sind nun im Block B1)
- Jetzt den IN von B1 auslösen (Auto1 hat IN erreicht)
- den Enter von B2 auslösen (Auto1 fährt in B2 aus)
- den In von b1 auslösen (Auto2 am In von B1)
-usw.

Der Ablauf dürfte klar sein und ihr seht das Ergebnis:

Ziel wäre:
- Jedes Auto, daß den Enter von b1 erreicht führt die Enter Aktionen aus (das Textfeld am Enter mit %lcid% updaten und die Funktion BL-R schalten)
- Ebenso entsprechend am IN von b1

Ich bin mal gespannt, wie eure Ergebnisse sind, und ob ihr Tipps habt, wie man das Gewünschte umsetzen kann.
Erster Lösungsansatz waren lokspezifische Variablen, aber dazu muß man die %lcid% von den Followern am Enter wissen.

Grüße Dieter
You do not have the required permissions to view the files attached to this post.
TamsMC, Servodecoder und Magnetartikeldecoder, S88 Rückmeldung, OpenCar und 3-Leiter Bahn, Win10 64bit, RR 64bit
lordbrummi
 

Re: Hilfe erbeten - Probleme Enter und In Aktion

Postby peter&basti » 20.12.2017, 18:32

Hallo Dieter,

noch ohne zu testen habe ich einen Verdacht:

Soweit ich weiß, sind alle eingebauten Variablen an das aufrufende Objekt gebunden. Also gibt mir zum Beispiel eine Fahrstrasse, ein Block, ein Entermelder mit der Variable %lcid% die Lokkennung aus.

Der Rückmelder ENTER gibt diese Variable aber nur deswegen aus, weil er an einen Block gebunden ist.

So und jetzt gibt es nur eine %lcid% und nicht mehrere und ich denke damit beginnt Dein Problem, weil vermutlich der FIFO-Block im xml-Scriptdesign von Rob noch nicht in dieser Form berücksichtigt ist.

Wie geschrieben, ein Verdacht.
Liebe Grüße / best regards
Peter


System: DCC 2-Leiter H0, Rocrail 64bit auf Win10 Pro 64
Traktion: OpenDCC GBM
Fahrweg: RocNetNode & GCA PI01/2/3, GCA41/Arduino RFID, GCA145 Drehscheibe, etc.
Decoder: 99% Zimo
Experimentell: MQTT & Node-Red
peter&basti
 

Re: Hilfe erbeten - Probleme Enter und In Aktion

Postby lordbrummi » 20.12.2017, 19:17

Hallo Peter,

danke für deine Rückmeldung.
So wie du schreibst ist es höchstwahrscheinlich. Und deswegen scheitern auch alle Versuche, dies irgendwie mittels Scripting zu lösen, da ich einen Follower am Enter nicht identifizieren kann.

Vielleicht wäre eine Variable %lcidenter% hier hilfreich?

Wenn das erste Auto1 in Block b2 ausfährt (Enter von b2 auslöst), ist die %lcid% von b1 dann sofort Auto2.
Auch depart und occupied Aktionen werden dann in b1 für Auto2 sofort ausgeführt, obwohl Auto2 noch nicht am IN von b1 angekommen ist.

Man müsste also erreichen, daß ein Follower am Enter diese %lcidenter% füllt, dann könnte man mittels dieser Aktionen auslösen.
Und daß Follower erst occupied und depart Aktionen ausführen, wenn sie selbst den IN auslösen und nicht schon vorher, wenn Auto1 den Enter vom nächsten Block erreicht.

Aber alle Versuche dies per Scripting zu erreichen (zum Beispiel lokspez. Variablen) scheitern mangels Identifikationsmöglichkeit der Follower.

Grüße Dieter
Last edited by lordbrummi on 20.12.2017, 19:30, edited 1 time in total.
TamsMC, Servodecoder und Magnetartikeldecoder, S88 Rückmeldung, OpenCar und 3-Leiter Bahn, Win10 64bit, RR 64bit
lordbrummi
 

Re: Hilfe erbeten - Probleme Enter und In Aktion

Postby peter&basti » 20.12.2017, 19:25

Hallo Dieter,

es gibt eine Variable fifoids, soll ein CSV Feld sein mit allen ID's im Block.
Bin damit aber noch nicht weiter gekommen.

Möchte im ersten Schritt mal nur eine Textausgabe im trace machen.
Liebe Grüße / best regards
Peter


System: DCC 2-Leiter H0, Rocrail 64bit auf Win10 Pro 64
Traktion: OpenDCC GBM
Fahrweg: RocNetNode & GCA PI01/2/3, GCA41/Arduino RFID, GCA145 Drehscheibe, etc.
Decoder: 99% Zimo
Experimentell: MQTT & Node-Red
peter&basti
 

Re: Hilfe erbeten - Probleme Enter und In Aktion

Postby lordbrummi » 20.12.2017, 19:34

Hallo Peter,

wo hast du die fifoids gefunden (die kenne ich noch nicht)?

Ein anderer Gesankenansatz von mir war:
Wenn der Enter von b1 ausgelöst wird, müßte man ja aufgrund der Fahrstraße und Startblock den Auslöser identifizieren können. Aber wenn das auch Fifos sind und viele FS in den Block führen...
Irgendwie fehlt mir noch der richtige Ansatz.

Grüße Dieter
TamsMC, Servodecoder und Magnetartikeldecoder, S88 Rückmeldung, OpenCar und 3-Leiter Bahn, Win10 64bit, RR 64bit
lordbrummi
 

Re: Hilfe erbeten - Probleme Enter und In Aktion

Postby peter&basti » 20.12.2017, 20:30

Hallo Dieter,

wo hast du die fifoids gefunden (die kenne ich noch nicht)?


http://rocrail.net/software/rocrail-sna ... index.html

hier auf bklist clicken und dann sehen was der Block so alles zu bieten hat für scripting. Alles was nicht kursiv ist kann theoretisch in einem Script verarbeitet werden.
Liebe Grüße / best regards
Peter


System: DCC 2-Leiter H0, Rocrail 64bit auf Win10 Pro 64
Traktion: OpenDCC GBM
Fahrweg: RocNetNode & GCA PI01/2/3, GCA41/Arduino RFID, GCA145 Drehscheibe, etc.
Decoder: 99% Zimo
Experimentell: MQTT & Node-Red
peter&basti
 

Re: Hilfe erbeten - Probleme Enter und In Aktion

Postby lordbrummi » 20.12.2017, 21:46

Hallo Peter,

danke, die fifoids scheint mir nur der String zu sein, der im Block angezeigt wird, wenn mehrere in einem Block sind (String, kommasepariert).
Bei einem Enter wird dieser String vermutlich um das einfahrende Fahrzeug erweitert.
Das hiesse aber dann es muß am Enter RR-intern bekannt sein, welches Fahrzeug einfuhr, sonst könnte der String nicht erweitert werden.
Wenn Rob das als %lcidenter% zur Verfügung stellen könnte wäre schon viel gewonnen.

Bliebe dann noch:
Die IN, Occupied, Depart Aktionen machen ja die Follower (allerdings noch zu früh, und nicht erst am IN).

Grüße Dieter
TamsMC, Servodecoder und Magnetartikeldecoder, S88 Rückmeldung, OpenCar und 3-Leiter Bahn, Win10 64bit, RR 64bit
lordbrummi
 

Re: Hilfe erbeten - Probleme Enter und In Aktion

Postby peter&basti » 20.12.2017, 22:53

Hallo Dieter,

Dein Gedanke vorhin mit der FS war gar nicht so schlecht und der erste Teil Deiner Denksportaufgabe lässt sich auf dieser Basis ganz einfach lösen:

ich habe mal die Aktion für den Textupdate bei ENTER
- statt beim Melder B1+
- in alle Fahrstraßen nach Block B1 gehängt, mit Ereignis "unlock"
(Die FS wird ja bei ENTER freigegeben)

Jetzt werden mal bei ENTER schön der Reihe nach die Autos im ENTER Textfeld angezeigt, und zwar das was aktuell den Block "geentert" hat und kann in Folge auch als Variable in einem Script verarbeitet werden.

Für IN habe ich jetzt im Moment noch keine Idee.
Liebe Grüße / best regards
Peter


System: DCC 2-Leiter H0, Rocrail 64bit auf Win10 Pro 64
Traktion: OpenDCC GBM
Fahrweg: RocNetNode & GCA PI01/2/3, GCA41/Arduino RFID, GCA145 Drehscheibe, etc.
Decoder: 99% Zimo
Experimentell: MQTT & Node-Red
peter&basti
 

Re: Hilfe erbeten - Probleme Enter und In Aktion

Postby lordbrummi » 20.12.2017, 23:05

Hallo Peter,

ja die FS unlock Lösung hatte ich auch schon im Auge. Damit könnten die ‚Enterlinge‘ identifiziert werden.
Aber diese Aktion dann bei derzeit geplanten 60 Fifo Blöcken mit entsprechenden Weichen an den Enter Meldern aufzurufen ist sportlich....
Umständlich aber machbar.
Mit einer %lcidenter% wäre es einfacher und RR weiß ja intern wer nachrückt am Enter, sonst könnte ja fifosid nicht upgedatet werden.


Nun zum In:
Rob hat mal erwähnt, daß Follower gleich am Enter einen IN ‚verpasst‘ bekommen, sozusagen aus der Automatik genommen werde (sie haben ja im Block ihre Abstandssteuerung).

Dadurch, daß sie gleich am Enter auch den IN verpasst bekommen, führen sie dann occupied, in und depart Aktionen in dem Moment aus, wenn der Vordermann den Enter vom nächsten Block erreicht.
Sie sollten diese aber erst am IN ausführen.
Auch hier müssen sie ja am IN identifizierbar sein, denn auch hier wird fifosid upgedatet.

Das derzeitige Verhalten wird wohl mit Scriptmitteln nicht korrigierbar sein, dazu fällt mir im Moment auch noch nichts ein.

Grüße Dieter
TamsMC, Servodecoder und Magnetartikeldecoder, S88 Rückmeldung, OpenCar und 3-Leiter Bahn, Win10 64bit, RR 64bit
lordbrummi
 

Re: Hilfe erbeten - Probleme Enter und In Aktion

Postby peter&basti » 20.12.2017, 23:39

Hallo Dieter,

jetzt kommen wir der Sache eventuell näher.

Dieses Script, per Aktion in einem Block aufgerufen (bei mir testweise mal bei ENTER)

Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<xmlscript>
  <trace text="fifo-script"/>
  <query vr="fifo%callerid%" table="bklist" id="%callerid%" get="fifoids"/>
  <trace text="@fifo%callerid%"/>
</xmlscript>


erzeugt folgende Traceausgaben:

Code: Select all
23:28:14 Auto1,Auto2,Auto3
23:28:14 fifo-script
23:28:00 Auto1,Auto2
23:28:00 fifo-script


Das ist das Feld "fifoids" und an der ersten Position ist das "First in" bzw. auch das "First Out".
Wenn Auto1 weg, dann steht noch Auto2,Auto3 drin.

Vielleicht kann man mit dieser Information etwas anfangen.

Das Script ist schon mal universell für alle Blöcke weil die Variable "fifo%callerid% je Block angelegt wird (fifob1, fifob2, fifobus, so wie die Blöcke halt heißen)

Vielleicht magst Du mal weiter testen mit welchen Ereignissen man den Aktionsaufruf für dieses Script idealerweise verknüpft, damit in folge Deine Aktionen zum richtigen Zeitpunkt ausgeführt werden. Der Aktionsaufruf für dieses Script muss aber immer im Block sein!
Die Tracezeilen siehst Du in grün im Serverfenster wenn Trace Level Automatik eingeschaltet ist.

Ich blicke zur Zeit beim IN Ereignis von b1 nicht durch, weil es tut sich in der "fifoids" von b1 erst wieder etwas, wenn ich den ENTER von B2 drücke...
Liebe Grüße / best regards
Peter


System: DCC 2-Leiter H0, Rocrail 64bit auf Win10 Pro 64
Traktion: OpenDCC GBM
Fahrweg: RocNetNode & GCA PI01/2/3, GCA41/Arduino RFID, GCA145 Drehscheibe, etc.
Decoder: 99% Zimo
Experimentell: MQTT & Node-Red
peter&basti
 

Re: Hilfe erbeten - Probleme Enter und In Aktion

Postby peter&basti » 21.12.2017, 00:47

Hallo Dieter,

ich habe jetzt 2 scripte gemacht für ENTER und DEPART, aber wie man den IN Melder heranziehen kann ist mir noch nicht gelungen.
Aber zumindest mal ein paar erste Schritte.

Anbei Dein Plan + die 2 Scripte zurück zum Testen.

(Solange in den Trace Zeilen noch nicht das richtige Ergebnis zum richtigen Zeitpunkt rauskommt, ist es noch unnötig die Blinker Funktionen einzubinden...)
You do not have the required permissions to view the files attached to this post.
Liebe Grüße / best regards
Peter


System: DCC 2-Leiter H0, Rocrail 64bit auf Win10 Pro 64
Traktion: OpenDCC GBM
Fahrweg: RocNetNode & GCA PI01/2/3, GCA41/Arduino RFID, GCA145 Drehscheibe, etc.
Decoder: 99% Zimo
Experimentell: MQTT & Node-Red
peter&basti
 

Re: Hilfe erbeten - Probleme Enter und In Aktion

Postby lordbrummi » 21.12.2017, 07:26

peter&basti wrote:Ich blicke zur Zeit beim IN Ereignis von b1 nicht durch, weil es tut sich in der "fifoids" von b1 erst wieder etwas, wenn ich den ENTER von B2 drücke...


Moin Peter,

danke für deine Mithilfe. Wie weiter oben schon beschrieben, ist es so derzeit mit dem IN und das ist das Hauptproblem, wo ich derzeit noch auch noch am überlegen bin.
Wie geschrieben vermute ich, daß durch den Enter von b2 die fifoids in b1 angepasst wird (ist auch klar, da nun das erste Auto in B2 ist und anzeigetechnisch aus dem b1 entfernt wird).
Das IN Problem einzufangen gelingt mir derzeit auch noch nicht.

Ich schaue mir nachher mal deinen Testplan an und melde mich wieder.

Du hast recht ohne richtiges Ergebnis nützt es jetzt noch nichts die Blinkerfunktion einzubinden. Diese ist auch nur ein Beispiel. Generell geht es ja nur um zeitpunktrichtiges Ausführen von Enter, Depart, Occupied und IN Aktionen
Zwischen IN und Depart Aktionen muß unterschieden werden, wenn die Lok mal hält oder eben durchfahren kann.


@Rob:
Du aktualisierst ja die fifoids am Enter.
Wäre es möglich, programintern eine Variable %lcidenter% anzulegen die beim Follower Enter jeweils aktualisiert wird?
(Das würde die query Aktion bei jedem Enter einsparen)

Grüße Dieter

PS: @Peter:
Hab dein Beispiel in der Zwischenzeit angesehen. Die Depart Aktion funktioniert zwar, aber eben wie beschrieben zum falschen Zeitpunkt:
Code: Select all
08:21:27 Auto2 in b1 faehrt los

Auto2 führt Depart aus, wenn Auto1 den Enter von Block2 erreicht. Richtig wäre meines Erachtens, daß Auto2 erst am IN von b1 eine Depart Aktion ausführt.

Es gibt im Plan manuelle Signale. Wenn du nachdem Auto1 am Enter von B2 angekommen ist, daß Signal von b1 auf Rot stellst, dann hält Auto2 folgerichtig im Block b1.
D.h. es 'departed' dann erst, wenn das Signal wieder auf grün geht. Ein Depart kann also immer erst erfolgen, wenn ein Auto bereits am IN angekommen ist.
Und das hängt eben mit der 'verfrühten IN'-Problematik zusammen, die wir wohl auch mit scripting nicht lösen können.
TamsMC, Servodecoder und Magnetartikeldecoder, S88 Rückmeldung, OpenCar und 3-Leiter Bahn, Win10 64bit, RR 64bit
lordbrummi
 

Re: Hilfe erbeten - Probleme Enter und In Aktion

Postby peter&basti » 21.12.2017, 09:36

Guten Morgen Dieter,

ich habe gestern noch etwas versucht und kann schon beim IN eine ID ausgeben, die beim ENTER entsteht.
Wird aber ein bisserl komplexer...
Liebe Grüße / best regards
Peter


System: DCC 2-Leiter H0, Rocrail 64bit auf Win10 Pro 64
Traktion: OpenDCC GBM
Fahrweg: RocNetNode & GCA PI01/2/3, GCA41/Arduino RFID, GCA145 Drehscheibe, etc.
Decoder: 99% Zimo
Experimentell: MQTT & Node-Red
peter&basti
 

Re: Hilfe erbeten - Probleme Enter und In Aktion

Postby lordbrummi » 21.12.2017, 10:27

peter&basti wrote:Guten Morgen Dieter,

ich habe gestern noch etwas versucht und kann schon beim IN eine ID ausgeben, die beim ENTER entsteht.
Wird aber ein bisserl komplexer...



Moin Peter,

an der In-Problematik habe ich gestern abend auch noch rumgedocktert ;)
Wird aber wie du schon schreibst komplex (man muß ja mit Arrays arbeiten) und was ich befürchte, selbst wenn man es mit komplexen Scripten hinbekommt dadurch eben ziemlich prozessorlastig.

Dabei müßte es doch programmintern einfach zu lösen sein:
Durch Update der fifoids weiß RR, wer den Enter und wer den IN auslöst.
Eine %lcidenter% würde dadurch einfach das Enter Problem lösen.

Warum Rob einem Follower nach diesem Enter dann gleich einen IN 'verpasst' weiß ich auch nicht.
Der Follower wird ja durch die Abstandsteuerung auf Abstand gehalten. Und wenn er dann am IN ankommt wird ja auch die fifoids aktualisiert, also könnte er dann auch den IN bekommen.

Nachtrag:
Vermutlich weiß es RR doch nicht wenn ein Follower den IN auslöst. Vermutlich wird die fifoids einfach dadurch upgedated, daß der Vordermann den Enter vom Folgeblock auslöst.
Das wird vermutlich das Problem sein.

Grüße Dieter
TamsMC, Servodecoder und Magnetartikeldecoder, S88 Rückmeldung, OpenCar und 3-Leiter Bahn, Win10 64bit, RR 64bit
lordbrummi
 

Re: Hilfe erbeten - Probleme Enter und In Aktion

Postby rjversluis » 21.12.2017, 15:00

Moin Dieter,

ich habe soeben ein neue Variable eingebaut: %eventlcid%
Vielleicht kommst du damit weiter.
Best Regards, Rob.
:!: PS: Do not forget to attach the usual files.
:!: PS: Nicht vergessen die übliche Dateien an zu hängen.
[ macOS - Linux] - [ N: CBus - CAN-GCA ] - [ 0: RocNetNode - GCA-Pi ]
rjversluis
Site Admin
 

Next

Return to CarSystem, FiFO (DE)