Das Problem mit Little/Big-Endian haben sicher einige seit der 7.0. Bei mir gibt es leider einen von mir nicht änderbaren Empfänger der Modbus-Nachrichten (openWB), deshalb muß ich die Kostal auf little endian einstellen. Gibt es eine Möglichkeit, das Modul durch eine Änderung im Programmtext auf little endian festzuzurren?
Wenn ich den WR auf big endian umstelle, funktioniert das Modul wie erwünscht, dann aber die openWB nicht mehr
Ich hab mal versucht, im Modul zu editieren, aber anscheinend nicht die richtige Stelle erwischt - wer weiß Rat?
ich muss mich wieder einmal melden und schulde allen ein Update wie es mit dem Modul weiter geht.
Ursprünglich hatte ich vor, das Modul an IPS 7.0 anzupassen.
Dann kam mit IPS 7.x die Erweiterung des integrierten ModBus. Daher macht es Sinn, wenn ich das Ganze auf die neuen ModBus-Funktionen umschreibe, da diese nun auch Strings und alles andere unterstützt, was vorher nicht möglich war. Daher wird meine eigene ModBus-Klasse wohl überflüssig. Diese war jedoch darauf ausgelegt, dass sich der ModBus-Gateway um Big-/Little-Endian kümmert, was ab 7.x nun die ModBus-Instanz selber macht (coole Anpassung , aber für meinen Code nicht hilfreich ). Daher lässt sich das Problem von einigen von euch (z.B. @garfieldt & @dallard) nicht einfach mit einer Zeile Code fixen…
Ich habe geplant, dass das Modul in Zukunft direkt einen Konfigurations-Import in die erweiterte ModBus-Instanz schreibt und dann eigentlich nur noch beim Laden von meinem Code abhängig ist.
Aktuell ist es aber so, dass ich (noch) zwei Jobs habe und daher die Freizeit fürs Programmieren zu kurz kommt . Das wird sich aber im Herbst ändern und ich hoffe, dass ich dieses Thema dann endlich angehen kann.
Ev. hat jemand anderes bereits alle Werte in eine ModBus-Instanz eingepflegt und könnte seinen Export zur Verfügung stellen?
danke, das hat mir schon mal auf die Sprünge geholfen. Ich habe mir die Modbus-Doku für den Kostal besorgt und das Device angelegt. Dabei sind folgende Punkte aufgefallen:
Bool-Variablen sollen als function code 3 angelegt werden (lt. Doku). Geht im Modul nicht.
Einige Variablen werden als little endian - byte swap benötigt, andere (vor allem Strings) als big endian (standard). Einige Strings sind mit 8 Byte in der Doku, brauchen aber 16, um den vollen Text anzugeben. Zwei Adressen haben kein angegebenes Variablenformat, die habe ich erst mal ausgelassen. Ansonsten ist die Vorlage angehängt - ohne Gewähr. Funktioniert mit meinem Plenticore Plus G2 7.0.
endlich habe ich auch wieder etwas Zeit für Symcon
Ich habe nun sämtliche ModBus-Parameter des Modules in eine ModBus-Vorlage konvertiert und dafür einen separaten Thread in den ModBus Vorlagen angelegt.
@dallard hat seine ebenfalls hier gepostet. Vielen Dank!
Da das Ganze nun relativ einfach (abgesehen von der Handarbeit bei mehr als 100 Parametern) direkt mit Simcon möglich ist, werde ich das Modul nicht mehr weiter entwickeln. Ich werde aber noch prüfen, ob es Sinn macht, das Modul komplett neu zu erstellen und im Hintergrund einfach die ModBus Instanz von Simcon „zu pflegen“. Damit wäre dann eine Aktualisierung über den Store sehr einfach möglich.
Bitte gebt euer Feedback ab, ob ihr Interesse daran habt (ansonsten kann ich meine Zeit im Moment auch für anderes nutzen )
Ja, ich wäre interessiert an einem eigenständigen Modul
Nein, die Integration mit einer ModBus-Vorlage reicht völlig aus
Ich hätte gerne ein Script, welches die Archiv-Werte des Moduls auf die neuen Variablen der Vorlage überträgt
Es braucht zunächst zwei Client Instanzen mit dem Port ip:1502
Dann das Modbus-Geräte mit ID 71 anlegen und zum Schluss die Plenticore Instanzen. Sollte auf Anhieb funktionieren.