Verbesserte ModBus Anbindung (IP-Symcon 7.0)

Mhhh, gute Frage. Weiß nicht, ob es die Standardaktion schon immer gab? Sonst ist mein Action Script ein Legacy. Habe gerade auf Standardaktion umgestellt und geht genauso.

richimaint

Dann kann es weg :wink:

paresy

1 „Gefällt mir“

Hi,

wäre es möglich zusätzlich zum Identischen auch noch die Position mitzugeben?
Mir ist klar, dass diese im Baum von Hand dann abgeändert werden können, aber grad bei Geräten mit einer großen Anzahl an Variablen, wäre es gut diese über die Position „gruppieren“ zu können.

Viele Grüße
Philipp

Die Position wird über die Reihenfolge der Adressen bestimmt. Und die Reihenfolge kannst du beliebig verschieben.

Allerdings werden die Positionen nur bei der Anlage der Variablen gesetzt, später nicht mehr.

Gerade, wenn man neue Adressen hinzu erfasst, möchte man die aber passend einsortieren. Hier im Fenster kann man es ja. Aber es fehlt noch eine Möglichkeit, die Variablen im Objektbaum neu zu sortieren. So eine Funktion („Variablen neu positionieren“) fände ich sehr hilfreich. Momentan mache ich es über ein Skript. Wäre aber bestimmt auch als Funktion in der Instanz interessant.

1 „Gefällt mir“

Ich wollte das noch mal in Erinnerung bringen.
Hier ist mir noch ein Schreibfehler aufgefallen.
grafik

Oh, danke - das ist irgendwie in Vergessenheit geraden. Jetzt korrigiert zum nächsten Update.

paresy

Ich hanb nun mal ein Gerät umgestellt. Dabei sind mir einige Sachen aufgefallen.
1.) Einige Register wurden erst nach dem Neustart von IPS aktuallisiert.
2.) Eine doppelt angelegte Adresse wird einfach nicht angelegt.

  1. Das sollte nicht sein. Alles sollte direkt nach dem Übernehmen aktualisiert werden
  2. Das ist korrekt - Der Ident wird anhand der Lese-Adresse erstellt und somit doppelte Übersprungen. Warum würdest du dies brauchen?

paresy

Brauch ich nicht, bei längeren Listen könnte es halt mal passieren, das ich was anlegen möchte, was es schon gibt. Ein Hinweis wäre da hilfreich.

Folgender Fehler tritt bei mir immer wieder mal sporatisch auf:

An diesem Modbus befinden sich 2 Teilnehmer (Growatt Wechselrichter).
Soweit ich es sehe, betrifft es immer den Wechslrichter mit der Adresse 2.

Gruß Schuggi

EDIT: Ich hab den Fehler gefunden, falsche Konfiguration des Registers.

Die neue Instanz Modbusgeräte finde ich sehr gut und erleichtert doch erheblich die Verwaltung von Modbusadressen.

Leider kommen ich nicht so klar was man bei Virtuellen Adressen im Bereich Aktion (lesen/schreiben) eintragen muss.

Mein konkretes Problem:

Ich bekomme von meinem Wechselrichter die aktuelle Wirkleistung übermittelt. Wenn dieser am Abend in den Ruhemodus geht, wird leider anstatt des aktuellen Wertes „0“ eine Zahl, die dem Wert NaN entspricht, übermittelt. Dadurch entstehen Sprünge im Archiv die man nicht möchte und jeden Tag per Hand den Wert zu löschen ist auch keine Lösung.

Früher habe ich mir eine Hilfsvariable für das Archiv angelegt.

So ähnlich stelle ich mir das jetzt mit den Virtuellen Adressen vor.

Konkret:

Modbus Adresse: Wirkleistung

Virtuelle Adresse: Wirkleistung_Archiv

Die Variable Wirkleitung_Archiv soll den Wert von Wirkleistung übernehmen, wenn dieser größer/gleich „0“ und kleiner/gleich „100000“.

Kann mir jemand sagen was da als Script in die beider Felder rein muss.

Vielen Dank

Viele Grüße René

Es gibt eine Mini-Doku

Hilft dir das schon weiter?

Hallo,

vielen Dank hat mir weitergeholfen. Das man den Ident verwenden muss hatte ich nicht herausgefunden.

Ich habe mir jetzt Virtuelle Adressen angelegt, um für das Archiv nicht gültige Werte herauszufiltern.
Hierbei habe ich bei einer Adresse folgende Fehlermeldung … aber auch nur bei dieser.

Meine Konfiguration sieht wie folgt aus:


Bei „Wirkleistung“ gibt es diese Meldung bei allen anderen nicht, obwohl das Lesescript bei allen von der Art gleich ist.


Wo liegt mein Fehler?
VG René

Du gibst nur einen Wert zurück bei < 100000. Anderfalls null. Das mag die Instanz nicht. Du musst immer einen gültigen Wert per „return“ zurückgeben.

paresy

Das ist etwas ungünstig, wenn man Werte wegfiltern möchte. Oder geht auch return Null?

Du kannst ja den Wert der variable auslesen und zurückgeben.

paresy

Nix zurückgeben ist null, ebenso wie Return null.
Null ist keine gültige Zahl, somit hast du damit auch einen Fehler.
Die Zahl 0 wäre gültig. Oder halt den aktuellen Wert :wink:
Michael

Das ginge natürlich. Einfacher und intuitiver wäre es, wenn man beim Verwerfen einer Zahl einfach nichts zurückgeben könnte.

So hat es wohl auch René zunächst erwartet.

Würde denn return $VALUES[‚Wirkleistung_W_Archiv‘] auch funktionieren?

Ok. Hat funktioniert. Es wird immer nur die erste Variable ausgegeben bei der der Fehler auftritt. Bei allen nachfolgenden gibt es keine Meldung mehr. Deshalb hatte ich auch nur einen Fehler … bei der ersten in der Liste.



Ganz trivial ist das aber nicht :smiley:

VG René

Und aktualisiert auch die Variable, obwohl es garkeinen neuen Wert gibt. Hier bewusst nichts zurück zu geben, damit eben auch das aktualisiert Feld stehen bleibt, fände ich für weitere Verarbeitung deutlich passender.