Hallo Viktor,
das wird mal wieder ein Roman!
Die Sache mit der Zusammenarbeit zwischen Zentrale und den Steuerungsprogrammen ist etwas komplexer und so wie es bisher gelöst ist vermutlich der beste und einfachste Weg, um Komplikationen aus dem Weg zu gehen.
Die Zentrale ist der Master, fertig.
Deine im obigen Beitrag angesprochenen Probleme der Zusammenarbeit zwischen Zentrale und Steuerungsprogramm rühren immer daher, dass der Benutzer auf eine Art und Weise eingegriffen hat, die er nicht überblickt und sich daher selber in diese Situation hineinmanöviert hat. Sehr oft fehlt auch das technische Verständnis, was sich da im Hintergrund abspielt. Das ist aber kein Vorwurf an den Benutzer. Dieses Wissen wird leider nicht so im Detail der Öffentlichkeit in epischer Breite erklärt. Es gibt dazu leider keine Anleitungen in "einfacher Sprache". Das oben verlinkte Dokument ist für Programmierer geschrieben, und daher bewusst nicht für die Allgemeinheit geeignet. Ich habe bisher keine Beschreibung in "einfacher Sprache" gefunden/geschrieben. Das fehlt wirklich, wenn man sich die regelmässig immer wiederkehrenden gleichen Fragen hier im Forum zu Gemüte führt.
In der Regel vergeben die mfx-Zentralen CS2/CS3 von den Göppingern bei einer mfx-Anmeldung, jetzt egal ob schnell oder langsam, einem ihr schon/noch bekanntem Decoder dieselbe SID wieder, sofern der Lokeintrag mit der UID/SID in der Lokliste der Zentrale auffindbar ist. Dabei wird davon ausgegangen, dass die Lokliste in der Zentrale eineindeutig ist, und keine Doppelbelegungen aufweist und die Lokliste der Zentrale auch die aktuellsten Informationen über diesen Decoder hat. Wurde ein Decoder inzwischen von einer anderen Zentrale verändert (z. B. in den CVs oder Funktionen usw.), wird das bei einer Schnellanmeldung, wie Stefan schon geschrieben hat, zuerst mal nicht erkannt. Der Decoder bekommt trotzdem seine alte SID wieder.
Wenn ich aber hergehe und eine mfx-Lok komplett aus der Lokliste der Zentrale lösche, ist die UID/SID Zuordnung von früher nicht mehr vorhanden, und die Zentrale vergibt zurecht eine neue SID, weil es für sie nun eine komplett neue mfx-Lok ist. Dann darf ich mich aber nicht beklagen, wenn sich die SID geändert hat und ich das im Steuerungsprogramm dann auch nachziehen muss. Dieses Ei habe ich mir dann selber gelegt und muss daher auch mit den Folgen leben.
Eine mfx-Zentrale kann (derzeit) nicht erkennen, ob das Steuerungsprogramm eine UID/SID-Kombi aus einer früheren Beziehung schon/noch kennt. Dazu gibt es bisher leider keine Steuerbefehle, auch in der Richtung von CS zum Steuerungsprogramm nicht. Schön wäre es, wenn man da eine logische Kopplung machen könnte, und die mfx-Zentrale quasi die Lokliste des Steuerungsprogramms übernimmt oder umgekehrt. Ja, es gibt Steuerungsprogramme, die in der Lage sind, die Lokliste der CS auszulesen und zu verwenden. Aber Loks, die das Steuerungsprogramm hat, die aber in der CS-Lokliste nicht zu finden sind, können damit nicht ohne weiteres in die CS transferiert werden. Dazu gibt es keine offiziellen Steuerbefehle.
Aber:
Was das dann für Auswirkungen auf diejenigen Loks hat, welche die Zentrale zwischenzeitlich ohne das Steuerungsprogramm in ihre Lokliste aufgenommen hat und diese Daten dann eventuell mit den UID/SID-Kombinationen des Steuerungsprogramms kollidieren, kann sich jeder selber ausmalen. Solle es in Zukunft mal Befehle geben, einer Zentrale UID/SID-Kombinationen zu übergeben, muss die Zentrale all denjenigen Loks, welche nun mit ihren eigenen Zentralen-Steuerungsdaten kollidieren, eine neue UID/SID-Kombi zuweisen, die es bisher nicht gab und diese Kombis auch dem Steuerungprogramm zurück geben. Dafür gibt es aber bisher keine Austauschbefehle.
Wenn man sich aber Gedanken darüber macht, der Zentrale bekannte Loks zu übergeben, muss man vorher Fragen beantworten, wie z. B. diese:
Ich habe auf der Anlage mfx-Loks, die ganz offiziell an der Zentrale angemeldet sind. Aufgrund eines Austausches mit einem Steuerungsprogramm kommt es nun dazu, dass die eine oder andere mfx-Lok auf der Anlage eine neue UID/SID-Kombination zugewiesen werden müsste. Was passiert nun, wenn diese mfx-Loks auf Schienenabschnitten stehen, welche zur Zeit nicht bestromt sind, und daher von der Zentrale das "Binden" nicht möglich ist. Es wird Komplikationen geben, wenn das Signal grün schaltet, und die Lok mit ihrer alten SID auf einmal losfährt, weil diejenige (neue) mfx-Lok mit der neu zugewisenen alten SID einer Lok auf der Anlage einen Fahrbefehl bekommt, und nun sich beide mfx-Loks angesprochen fühlen. Das gibt ein richtiges Chaos. Da ist die Situation, dass die _alte_ Lok die Situation erkennt, und sich mal schnell neu anmeldet, wenn sie wieder Strom bekommt, noch das harmloseste aller Szenarien.
Daher: Es darf im System nur einen Master geben, der Herr über UID/SID-Kombinationen ist.
Daher ist die bisherige Lösung mit "Die Zentrale ist Master" die derzeit beste Lösung. Aber ein gewisser (Daten-)Austausch zwischen Steuerungsprogramm und Zentrale wäre trotzdem wünschenswert. Hier müsste dann aber das Steuerungsprogramm Slave sein, und seine Daten mit den Daten der Zentrale abgleichen incl. der Übernahme/Vergabe der UID/SID-Kombinationen von der Zentrale zum Steuerungsprogramm. Ich würde für den Abgleich von Loks, welche im Steuerungsprogramm enthalten sind und in der Zentrale fehlen, eine Möglichkeit vorsehen, diese "virtuell" an der Zentrale anmelden zu können. In diesem Fall tut dann das Steuerungsprogramm so, wie wenn es eine Lok wäre und diese der Zentrale bekannt macht incl. dem virtuellen "Binden", also dem Zuweisen von UID/SID und Neuanmeldezähler. Damit kann dann das Steuerungsprogramm seine Lok der Zentrale bekanntmachen, die Zentrale aber der (neuen) Lok vom Steuerungsprogramm auch eine (neue) SID zuweisen. Damit dürfte dann eine Situation wie oben beschrieben entschärft werden.
Eigentlich dürfte so eine Situation, dass es eine Lok auf einer mfx-Anlage gibt, deren UID/SID-Kombination ungültig ist (für die Zentrale), gar nicht geben. Wenn eine mfx-Lok auf der Anlage wieder aufgegleist wird, und die mfx-Lok erkennt, dass sie in einem anderen Sonnensystem aufwacht, wird sie sich neu anmelden, und daher wird dann diese "alte" UID der Zentrale wieder bekannt gemacht und sie erhält ihre alte SID wieder, die auch dem Steuerungsprogramm bekannt sein müsste. Wurde sie aber zwischenzeitlich in der Zentrale gelöscht, bekommt sie eine neue SID, welche dann aber nicht mehr mit der SID im Steuerungsprogramm überein stimmt. Jetzt ist ein Abgleich nötig, den es so bisher noch nicht gibt.
Sollte hier jemand von den Göppingern mitlesen, dann würde ich es begrüssen, wenn man sich in dieser Hinsicht mal ein paar warme Gedanken machen würde.
Es fehlen Befehle wie:
Hallo Zentrale, hast du eine Lok mit der UID 0x12345678?
Wenn nein, dann:
Zentrale: Schnell- oder Virtuelle Anmeldung einer Lok mit der UID 0x12345678 mit allen dazu nötigen Folgebefehlen. Das käme dem Anmelden/Laden einer Lok über die Chipkarte gleich.
Problem: Diese Lok steht derzeit nicht auf der Anlage oder kann physikalisch nicht gebunden werden, weil stromlos. Was dann?
Wenn ja (UID ist der Zentrale bekannt): Durchführen eines virtuellen Bindens mit dem Steuerungsprogramm. Das Steuerungsprogramm bekommt dann für diese Lok eine neue SID.
Damit kann ein Steuerungsprogramm vor der Benutzung einer mfx-Lok sicherstellen, dass die ihr bekannte Lok auch die richtige SID hat und ggf. die derzeit aktuelle SID übernehmen.
Das bedingt aber, dass das Steuerungsprogramm auch eine Liste mit UID/SID führt, also nicht nur, wie bisher, die SID der Lok kennt sondern auch deren UID, um bei der Zentrale nach deren SID nachfragen zu können.
Gruß est2fe
P.S.: Ich gehe mal davon aus, dass du (Viktor) das Dokument, das du oben verlinkt hast, auch durchgelesen und verstanden hast. Somit sind dir die hier im Beitrag verwendeten Begrifflichkeiten bekannt. Wenn nicht, bitte melden.