Frage Formelprogrammierung in Loxone

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

    #1

    Frage Formelprogrammierung in Loxone

    Hallo Kollegen,

    Ich habe eine Frage zur Formelprogrammierung in Loxone. Ich become via Modbus einen Wert für die Außentemperatur.

    Bei +° erhalte ich diese 1:1

    Bei -° erhalte ich die Minusgrade plus 6500 (e.g. 6519) ware dann -1,9°

    Wie würdet Ihr das Programmieren um den Werte sauber, sprich -1,9° anzuzeigen?

    Danke Gernot
















  • Gerd Clever
    MS Profi
    • 24.07.2016
    • 642

    #2
    Wenn ich Gast richtig verstanden habe, fehlt da noch der Faktor 0,1. Die Status-Baustein-Lösung ist schön kompakt, aber leider ist der benötigte Statuswert für Zeile 1 <v2.1/10>-<v1.1/10> nicht zulässig. Ich sehe auch keine andere Möglichkeit, ohne vorbereitende Logik auszukommen.

    romildo Vielleicht hast Du ja in Sachen Status-Baustein noch einen (undokumentierten) genialen Gedanken

    Eine funktionierende Lösung (ohne Statusbaustein) wäre auf jeden Fall:

    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Beispiel_Temperatur.PNG
Ansichten: 638
Größe: 18,8 KB
ID: 127437
    Miniserver Gen 2, v13.1.11.17, 9x Extension, 2x Relay Extension, 4x 1-Wire, Türkontakte, Mobotix T25

    Wenn der Herr nicht das Haus baut, dann ist alle Mühe der Bauleute umsonst. (Psalm 127,1)

    Kommentar


    • romildo
      romildo kommentierte
      Kommentar bearbeiten
      Sorry, ich habe ihn gelöscht, da ich beim zweiten Mal lesen, gemerkt habe dass die Zahl noch durch 10 geteilt und zudem auch noch als Minuswert ausgegeben werden soll.
      Ihr seid halt alle viel zu schnell

    • Gerd Clever
      Gerd Clever kommentierte
      Kommentar bearbeiten
      Kann man einen bereits abgeschickten Beitrag wieder spurlos löschen? Wie geht das?

      EDIT: Hab's gefunden, die Möglichkeit war mir bisher noch nicht aufgefallen.
      Zuletzt geändert von Gerd Clever; 14.11.2017, 12:19.

    • romildo
      romildo kommentierte
      Kommentar bearbeiten
      Ganz einfach, Erst Bearbeiten dann Löschen anwählen.
      Geht natürlich nur mit eigenen Beiträgen und Kommentaren.

      Üblicherweise mache ich das aber nur, wenn ich denke, das der in der Zwischenzeit noch nicht gelesen wurde, was hier scheinbar ein Trugschluss war.
  • Gast

    #3
    Hallo Gerd,

    Vielen herzlichen Dank, ich werde das mal einprogrammieren und (wenns morgen kalt ist) validieren.
    Herzlichen Dank nochmals!!

    Kommentar

    • romildo
      Lebende Foren Legende
      • 25.08.2015
      • 5177

      #4
      Hallo
      Ich gehe mal davon aus, dass die postiven Werte auch als Ganzzahl ankommen, also als Beispiel Wert 19 = 1.9°.

      Ich würde dies über einen Statusbaustein gefolgt von einem Formelbaustein lösen.
      An AQ vom Formelbaustein sollte dann das Ergebnis richtig anliegen.

      Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Wertumwandlung.png
Ansichten: 673
Größe: 75,2 KB
ID: 127448
      LG Romildo

      Kommentar

      • dizzy85
        MS Profi
        • 08.12.2015
        • 748

        #5
        Hallöchen....
        Auch wenn dieser Thread schon einige Monde her ist,
        Aber ich habe in etwa die selbe Situation und zwar lese ich über Modbus Tcp einen Außentemperatur - Wert einer Remeha Therme aus,
        Das funktioniert bei "positiven" Temperatur-Werten, sobald aber die Werte ins "Negative" fallen bekomme ich Werte wie 3277,6 für -0,8 °C (tatsächlicher Wert) oder 3277,4 für -0,6 °C etc....

        Was ich nun dazu gefunden habe ist folgendes:

        "Bei Diematic-Controllern werden negative Werte nicht im Zweierkomplement kodiert. Das höchstwertige Bit (B15) wird auf 1 gesetzt, und die Bits 0 bis 14 enthalten den Absolutwert des Parameters"

        "In PHP wird dies folgendermaßen dekodiert: if ($this->rxReg[$regAddr+$i] >= 0x8000) $this->rxReg[$regAddr+$i]=-($this->rxReg[$regAddr+$i] & 0x7FFF);"

        Bei meiner Suche bin ich im Jeedom-Forum auf folgende Formel zur "Berechnung" gestoßen

        (( #value # >= 3200) ? #value # - 3276.8: #value #)


        Habt ihr evtl. eine Idee wie man das in Loxone gerade ziehen könnte das die Werte passen?
        Formelbaustein?
        Wie oben mit Status und Formel?

        Kommentar

        • romildo
          Lebende Foren Legende
          • 25.08.2015
          • 5177

          #6
          Ich kenne weder die Therme noch die Modbus Registereinstellungen dazu.
          INT (Signed 16-bit Integer) müsste ja Beispielsweise Werte von -32,768 bis +32,767 liefern.
          Sind denn die Modbus Registereinstellungen richtig?

          Wenn die Werte bei richtiger Einstellung so kommen wie in Post 5 beschrieben, würde ich folgende Formel in Loxone versuchen:
          Code:
          IF(I1>3276.8;3276.8-I1;I1)​
          LG Romildo

          Kommentar

          • Labmaster
            Lox Guru
            • 20.01.2017
            • 2744

            #7
            Könnte man nicht einfach in der Modbus Sensor Einstellung den Datentyp auf "16bit signed integer" setzen ?
            Wenn man dann auch noch eine Skalierung braucht (z.B. * 0.1) dann das auch direkt dort per Korrektur machen.

            Kommentar

            Lädt...