So ich denke jetzt komme ich weiter. Ich denke mein grosser Gedankenfehler war, dass ich immer der Meinung war, dass der Modbus auf meinen K-Bus zugreift. Offensichtich scheint dies nicht zu sein, sondern ich habe einfach einen Stabel Variablen definiert worüber ich Datenaustauschen kann.
Ich habe beim EA-Abbild ein Variable aus dem Stapel eingefügt.
Beim Funktionsbaustein habe ich dies entsprechend angepasst.
Ein kleiner Schritt für die Menscheit aber ein grosser für mich. Nun wird es ziemlich geil, weil ich kann nun die Lampe über den Taster oder Symcon schalten und habe überall immer den korrekten Zustand angzeigt.
Was mir an dieser Lösung nicht gefällt, das mein Variblenname DO_088_14 nicht mehr vorhanden ist. Der Name heisst aufgeschlüsselt, dass es sich um einen digitalen Ausgang handelt, das es das Modul 88 ist und der 14 Kanal diese Modusl. Diese Bezeichner habe ich in meinen Stromlaufplänen und sonstigen Dokumentationen verwendet und möchte dies nicht aufgeben.
Also habe ich zwei Variablen einmal acoil[0] und DO_088_14 die für das selbe da sind. Cool währe es, wenn ich die beiden Variblen so vernküpfen könnte, dass wenn sich eine Variable verändert, die andere Variable den neuen Wert annimmt. Hätte den Vorteil das ich „nur“ noch diese Verknüpfung machen bräuchte und die Variablen im KBus sowie den POUs nicht ändern bräuchte. Nach einem halben Tag Suchen, bin ich zum Entschluss gekommen, dass dies nicht geht. Ich lasse mich gerne eines besseren belehren.
Alternative:
Ich schaffe mir entsprechende Adressräume z.B.
ax_DI : Array [2101…7708] Modul 21 Kanal 1 bis Modul 77 Kanal 8
ax_DO:Array [7801…13208] Modul 78 Kanal 1 bis Modul 132 Kanal 8
Damit hätte ich wieder eine ähnliche Notation welche etwas kompatibel ist mit meiner bestehenden Dokumentation. Nachteil ich generiere viele Variablen welche ich nicht benötige. Z.B. Modul 78 ist ein 8 Kanal Modul als brauche ich 7809 bis 7899 nicht. Ich gehe mal davon aus, dass ich keine Mehrdimensionalen Arrays definieren kann, womit man diesen Nachteil eventuell entschärfen könnte.
Diese Adressräume kann ich mit FbMbSlaveDataModel definieren und dann mit FbMbKompositorDataModel zusammen basteln. Wenn ich das mal so grob richtig verstanden habe.
Persistente Variablen habe ich im Moment mal aussen vorgelassen. Ob mir bei dieser Geschichte Enum mir weiterhilft kann ich im Moment nicht abschätzen aber jetzt raucht mir der Kopf sowieso.
Grüsse Pit