Ankündigung

Einklappen
Keine Ankündigung bisher.

Einbindung von Modbus TCP

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • fuppy
    antwortet
    Hallo ivande,
    sorry hat jetzt komischerweise länger gedauert, bis der Fehler wieder auftrat. Hier der Screenshot vom Admin UI:

    image.png

    Hier die Werte direkt vom Bus:

    image.png

    Hier noch der Auszug auf dem Logfile von SmarthomeNG:

    Code:
    2023-03-01  15:12:43 INFO     plugins.modbus_tcp  connected to ModbusTcpClient(192.168.0.181:502)
    2023-03-01  15:12:43 DEBUG    plugins.modbus_tcp  read InputRegister.72.1 (address.slaveUnit) regCount:2 result:ReadInputRegistersResponse (2)
    2023-03-01  15:12:43 DEBUG    plugins.modbus_tcp  value readed: 141.15728759765625 type: <class 'float'>
    2023-03-01  15:12:43 DEBUG    plugins.modbus_tcp  read InputRegister.74.1 (address.slaveUnit) regCount:2 result:ReadInputRegistersResponse (2)
    2023-03-01  15:12:43 DEBUG    plugins.modbus_tcp  value readed: 338.5069885253906 type: <class 'float'>
    2023-03-01  15:12:43 DEBUG    plugins.modbus_tcp  read InputRegister.52.1 (address.slaveUnit) regCount:2 result:ReadInputRegistersResponse (2)
    2023-03-01  15:12:43 DEBUG    plugins.modbus_tcp  value readed: 230.1840057373047 type: <class 'float'>
    2023-03-01  15:12:43 DEBUG    plugins.modbus_tcp  poll_device: 3 register readed requed-time: 0:00:00.051383​
    Es scheint also, also ob das Plugin bereits die Werte falsch ausliest...

    Angehängte Dateien

    Einen Kommentar schreiben:


  • fuppy
    antwortet
    Hallo ivande,
    na klar:
    Hier die Anleitung.

    Und hier die item Config:
    Code:
    PV_Speicher:
           name: PV-Speicher
           Import:
              type: num
              name: Import
              modBusObjectType: InputRegister     #(optional) default: HoldingRegister
              modBusAddress: 72
              modBusDataType: float32
              database: 'yes'
    
           Export:
              type: num
              name: Export
              modBusObjectType: InputRegister     #(optional) default: HoldingRegister
              modBusAddress: 74
              modBusDataType: float32
              database: 'yes'
    
           TotalPower:
              type: num
              name: TotalPower
              modBusObjectType: InputRegister     #(optional) default: HoldingRegister
              modBusAddress: 52
              modBusDataType: float32
              database: 'yes'​
    Screenshot vom Admin Interface reiche ich nach. Hab gestern Abend direkt im Plugin noch zwei Debug-Stellen auskommentiert, damit im Log auch die Werte, welche ausgelesen werden, angezeigt werden. Seitdem trat der Fehler "leider" nicht mehr auf 😅

    Einen Kommentar schreiben:


  • ivande
    antwortet
    Zitat von fuppy Beitrag anzeigen
    Laut Anleitung sind die Daten in zwei aufeinanderfolgenden 16 bit Registern
    hast du einen Link zur Anleitung und evtl. einen Sceenshot der falsch gelesenen Register-Werte vom Plugin(Admin-Interface) - mit Angabe wie der Wert tatsächlich aussehen sollte.

    Gruß Ivan

    Einen Kommentar schreiben:


  • fuppy
    antwortet
    Danke Tom Bombadil für deine schnelle Antwort.

    Datentypen sollten passen. Laut Anleitung sind die Daten in zwei aufeinanderfolgenden 16 bit Registern gespeichert. Als Datentyp hab ich float32 ausgewählt. Bzgl. Endianess hab ich keine Infos. Aber da die Daten aber ja zeitweise passen, kann ich mir schwer vorstellen, dass es daran liegen kann... echt komisch...

    Einen Kommentar schreiben:


  • Tom Bombadil
    antwortet
    Erste fixe Ideen: Stimmen Datentyp / Endianess? Evtl sind nur High- und Lowbyte vertauscht (little vs big endian). Hatte das neulich in einer anderen Supportanfrage schon mal ...

    /tom

    Einen Kommentar schreiben:


  • fuppy
    antwortet
    Hallo zusammen,
    ich hoffe, dass mir hier jemand weiterhelfen kann.
    Ich benutze ebenfalls das modbus_tcp Plugin in der Version 1.0.7. Ich möchte damit über einen Waveshare RS485 to ETH Converter ein EASTRON SDM-72D-M Zähler auslesen.
    Insgesamt lese ich drei Werte aus. Auf den ersten Blick passt soweit auch alles.
    Jedoch habe ich das Phänomen, dass in SHNG plötzlich unsinnige Werte angezeigt werden. Bei näherer Betrachtung stellt man fest, dass die Werte vertauscht sind.

    Im Debug-Modus kann ich leider nicht sehen, ob der Fehler nun innerhalb des Plugins oder schon vorher stattfindet.

    Ich hab parallel dann mit einem Modbus Client den Zähler respektive den Converter ausgelesen. Hier passen die Werte... deshalb mutmaße ich, dass im Plugin irgendetwas schief läuft.

    Hat jemand ne Idee, wie ich dem Ganzen auf die Schliche kommen könnte?

    Danke!
    Zuletzt geändert von fuppy; 27.02.2023, 17:48.

    Einen Kommentar schreiben:


  • Jackhammer
    antwortet
    Zitat von Tom Bombadil Beitrag anzeigen



    Letzteres ist evtl. der richtige Hinweis.

    Versuch mal bitte ein Register weiter unten (342) oder weiter oben (344). Vermutlich fängt Deine Registerübersicht bei 1 an, während die Adressierung bei 0 beginnt (nur die alternative 40.000er-Schreibweise fängt bei 40.001 an).
    /tom
    ​Minus 1 sieht gut aus. Werde das die Tage mit den anderen Registern verproben.

    Das Gerät ist übrigens ein EASTRON SDM-72D-M V2, falls hier irgendwann noch jemand das Problem haben sollte :P
    Angehängte Dateien

    Einen Kommentar schreiben:


  • Tom Bombadil
    antwortet
    Zitat von Jackhammer Beitrag anzeigen
    Tom Bombadil: Danke für den Link. Ich komme aber dennoch nicht weiter.
    Zitat von Jackhammer Beitrag anzeigen
    Den angezeigten Wert aus SHNG bekomme ich in QModMaster angezeigt, wenn ich in den Setting als Base Address 0 auswähle.
    Letzteres ist evtl. der richtige Hinweis.

    Versuch mal bitte ein Register weiter unten (342) oder weiter oben (344). Vermutlich fängt Deine Registerübersicht bei 1 an, während die Adressierung bei 0 beginnt (nur die alternative 40.000er-Schreibweise fängt bei 40.001 an).

    Ein Beispiel dafür hier - beide Arten der Adressierung für dasselbe Register sind in diesem Beispiel enthalten, die 'kleine' über die ID und die 'große' über HoldingRegister HR.

    /tom

    Einen Kommentar schreiben:


  • Jackhammer
    antwortet
    Tom Bombadil: Danke für den Link. Ich komme aber dennoch nicht weiter.

    Wenn ich das InputRegister 343 mit QModMaster auslese wird der Wert richtig angezeigt. In SHNG ist der Wert immer falsch, egal ob ich Endian.Big oder Little auswähle.
    Den angezeigten Wert aus SHNG bekomme ich in QModMaster angezeigt, wenn ich in den Setting als Base Address 0 auswähle.
    Das Item ist wie folgt konfiguriert:
    Code:
        TotalActiveEnergy:
            type: num
            name: TotalActiveEnergy
            modBusObjectType: InputRegister     #(optional) default: HoldingRegister
            modBusAddress: 343
            modBusDataType: float32               #(optional) default: uint16
            modBusByteOrder: 'Endian.Big'    #(optional) default: 'Endian.Big'
            modBusWordOrder: 'Endian.Big'    #(optional) default: 'Endian.Big'
            #modBusDirection: 'read'       #(optional) default: 'read'
            #modBusUnit: 2                   #(optional) default: slaveUnit aus der Plugin-Konfig
            #modBusFactor: 0.1                  #(optional) default: 1
            #modBusDirection: read_write        #(optional) default: 'read'​
    Angehängte Dateien

    Einen Kommentar schreiben:


  • tullsta
    antwortet
    Hallo,

    nur ein kurzer Kommentar und falls doppelt bitte ignorieren:
    bekam gestern eine Fehlermeldung beim Laden von modbus_tcp v1.0.7 mit pymodbus v3.0.2 / pymodbus3 v1.0.0:

    ModuleNotFoundError: No module named 'pymodbus.client.sync'
    No module named 'pymodbus.client.sync'
    Hab' dann die Loesung die ich in pluggit von msinn gefunden haben uebernommen:
    Code:
    try:
        # for newer versions of pymodbus
        from pymodbus.client.tcp import ModbusTcpClient
    except:
        # for older versions of pymodbus
        from pymodbus.client.sync import ModbusTcpClient

    HTH + LG - tullsta

    Einen Kommentar schreiben:


  • Tom Bombadil
    antwortet
    Bei grundsätzlichen Fragen zu Modbus hilft evtl. --> das hier.

    /tom

    Einen Kommentar schreiben:


  • Jackhammer
    antwortet
    Zitat von Cannon Beitrag anzeigen

    Ja ich auch. Ich hatte verstanden, dass das wenigstens im Develop drin ist. Wie sollen die Leute denn das dann testen?



    Geht das überhaupt? So wie ich das sehe muss man immer das komplette Release als Basis nehmen, was ich ehrlich gesagt als etwas umständlich erachte. Denn man hat Mühe überhaupt festzustellen, wo was geändert wurde. Einzeln runterladen kann man das ja bei github auch nicht - geht immer nur das komplette Paket. Oder ich stelle mich da auch zu doof für an.
    ich hab mir mal den Stand aus deinem Repo geklont und in SHNG 1.9.3 in Betrieb genommen. Das Plugin läuft jetzt, ich bekomme auch Werte vom Bus. Die sind allerdings noch nicht richtig. Da das mein erster Modbus versuch ist kann das aber an mir liegen

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Zitat von Tom Bombadil Beitrag anzeigen
    Da wird er nix finden, da Deine Änderungen noch nicht akzeptiert wurden. Die sind noch in einem 'Zwischenstadium', siehe oben. Irgendwann lernen wir beide vielleicht mal, wie man auf Github auch gegen *einzelne* Plugins *einzelne* PR's machen kann (ich bin zu doof dafür) - dann geht's wohl auch schneller.
    Tom Bombadil Zu dem Kudelmuddel um diesen PR und den Aussagen dazu in diesem Thread habe ich Dir eine PN geschrieben.

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Zitat von Tom Bombadil Beitrag anzeigen
    ich bin zu doof dafür
    Ja ich auch. Ich hatte verstanden, dass das wenigstens im Develop drin ist. Wie sollen die Leute denn das dann testen?

    Zitat von Tom Bombadil Beitrag anzeigen
    einzelne* Plugins *einzelne* PR's machen kann
    Geht das überhaupt? So wie ich das sehe muss man immer das komplette Release als Basis nehmen, was ich ehrlich gesagt als etwas umständlich erachte. Denn man hat Mühe überhaupt festzustellen, wo was geändert wurde. Einzeln runterladen kann man das ja bei github auch nicht - geht immer nur das komplette Paket. Oder ich stelle mich da auch zu doof für an.

    Einen Kommentar schreiben:


  • Tom Bombadil
    antwortet
    Zitat von Cannon Beitrag anzeigen
    Schau mal im develop branch bei den plugins.
    Da wird er nix finden, da Deine Änderungen noch nicht akzeptiert wurden. Die sind noch in einem 'Zwischenstadium', siehe oben. Irgendwann lernen wir beide vielleicht mal, wie man auf Github auch gegen *einzelne* Plugins *einzelne* PR's machen kann (ich bin zu doof dafür) - dann geht's wohl auch schneller.

    /tom

    Einen Kommentar schreiben:

Lädt...
X