Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Modbus TCP Negativ Temperaturen

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

    - √ - Modbus TCP Negativ Temperaturen

    Hallo,

    Ich bin auf das Problem gestossen das Modbus TCP nur Ganzzahlen überträgt.
    Bei übertragung von Negativwerten müsste man das Zweierkomplement
    anwenden.

    Gibt es hierzu eine vorgensweisse?

    z.B
    3 = 3
    2 = 2
    1 = 1
    0 = 0
    -1 = 65535
    -2 = 65534
    -3 = 65533

    gleichzeitig müssten man die Werte durch 10 Dividiren um eine Kommastelle zu erhalten.

    danke für die Info

    #2
    Vielleicht verstehe ich ja nicht was Du meinst, aber wie ist es für negative Zahlen mit 65536 + Wert = 65536 - Abs(Wert)?

    Kommentar


      #3
      Hallo,
      Ich weiss leider nicht wo Ich diese umrechung erstellen kann.

      Kommentar


        #4
        Modbus Signed INT16

        Hallo,
        ich hatte bei der Modbus Anbindung meiner NIBE Fighter 1220 mit Nibe RCU11 die gleiche Fragestellung zu lösen. Teilweise waren die Werte aus den Holding Registern noch mit dem Faktor 0.1 zu multiplizieren.

        Items
        Code:
        Number F1220_Reg028raw            "NIBE F1220 Modbus Register 028 [%d]"                            <__logo_nibe>            (gHeatpump)    {modbus="slave1:27"}
        Number F1220_Reg028con            "Hauswand NNW [%.1f °C]"                                        <__temperature>            (gHeatpump, gWeather, gChart_Weather_Temperatures, gChart_KG_Technik_Ambient)
        Rules
        Code:
        rule "NIBEModbusRegister028Conversion"
            when 
                Item F1220_Reg028raw received update or Item F1220_Reg028raw changed
            then 
                {
                    var temp028=F1220_Reg028raw.state as DecimalType
                    if (F1220_Reg028raw.state > 32767) {
                        F1220_Reg028con.postUpdate((temp028.floatValue-65536) / 10)
                    } 
                    else {
                        F1220_Reg028con.postUpdate(temp028.floatValue / 10)
                    }
                }
        end
        Viel Erfolg!

        Kommentar


          #5
          Danke Danke,...

          es war genau das was Ich gesucht habe.
          es löst mein Problem.

          Danke.

          Für OpenHAB stellt es kein Problem dar wenn Ich 100 von diesen Rouls habe. Oder?

          Kommentar


            #6
            Modbus Konvertierung Registerwerte / Anzahl Rules

            Hallo tiego,
            ich lese 97 holding register aus dem Modbus Interface aus und muss davon ca. 30 umrechnen. Ich habe dem Muster oben also auch die entsprechende Anzahl von rules erstellt, bisher kein Problem festgestellt. Mein openHAB läuft auf einen quad core ARM Board mit debian wheezy.

            Mirko

            Kommentar

            Lädt...
            X