Parametrisierbare Hexadezimal-Strings an Virtuellen-Ausgang-Befehl (VAB) senden

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

    Parametrisierbare Hexadezimal-Strings an Virtuellen-Ausgang-Befehl (VAB) senden

    Liebe Mitstreiter, nachdem ich nun mehrere Tage gegoogelt und und stundenlang probiert habe, hoffe ich, dass mir hier vielleicht jemand helfen kann. Ich möchte Hexadezimal-Codes über einen VAB senden (um damit letztendlich über Modbus-TCP das Licht per DALI zu steuern). Bestimmte Parameter in diesem Code sollen jedoch per Variable etwa so anpassbar sein:

    Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Parametrisierbarer Hexbefehl via VAB.jpg Ansichten: 0 Größe: 161,7 KB ID: 237339
    Der Modbus TCP Befehl ist erprobt und funktioniert mit dem VAB. An der Stelle, wo jetzt die Variable <v> eingefügt ist, wird sonst die Helligkeit als Hexadezimal-Byte (mit Werten von 0 bis 254) angegeben. Folgendes ist zu beobachten:
    • Wird ein Wert AQ zwischen 0 und 9 übergeben, dann wird ein Befehl mit einem Helligkeitswert 30+AQ hex (im abgebildeten Fall also 38 hex) erzeugt. Hat AQ einen anderen Wert (z.B. >10), dann resultiert ein Helligkeitswert von 30 hex.
    Es gibt relativ wenig Threads,die sich mit diesem Thema beschäftigen, z.B. dieser, wo eine halbwegs passable Parameterübergabe gelang. Im gleichen Thread wurde auch der Vorschlag gemacht, einfach alle in Frage kommenden Hex-Befehle in einen Status-Baustein zu packen und den jeweils richtigen als Text an den VAB zu übergeben.Damit könnte ich auch leben - es wäre sogar meine bevorzugte Variante, weil ich dann mehrere Parameter übergeben könnte - es funktioniert nur leider nicht (bei mir).

    Ich habe schon tagelang mit allen Möglichkeiten systematisch herumprobiert, die mir eingefallen sind, komme aber nicht zu einer Lösung. Ich würde mich sehr freuen, wenn mir jemand einen Tipp geben könnte, was ich falsch mache.

    PS: Ich erzeuge solche Befehle auch aus der DALI-Software am PC, sende die über Modbus TCP an das DALI4net und fange die dann mit Wireshark ab. Genauso würde ich eigentlich erwarten, dass mein VAB von der IP-Adresse des Miniservers an die IP-Adresse des DALI4net gesendet wird und ich sie mit Wireshark abfangen und nachschauen könnte, was der VAB da eigentlich sendet. Leider kann ich mit Wireshark keinen Verkehr zwischen MS und DALI4net sehen (versteh ich auch nicht).
    Zuletzt geändert von Gast; 23.02.2020, 22:43.
  • Christian Fenzl
    Lebende Foren Legende
    • 31.08.2015
    • 11200

    #2
    Wenn du uns sagst, was wie mit dem Status-Baustein nicht funktioniert hat, können wir vielleicht helfen. Was anderes gibt es in Loxone nämlich nicht.

    PS: Sag es uns nicht, sondern mach Bilder!
    Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

    Kommentar

    • romildo
      Lebende Foren Legende
      • 25.08.2015
      • 5113

      #3
      Gast
      Du könntest ja eine Konstante mit Wert 30 an den Eingang AI2 des Statusbausteins hängen und im Statuswert die Werte von AI1 und AI2 addieren.
      Beispiel:
      Zeile 1: Bedingung AI1 <= 9, Statuswert <v1>+<v2>
      Zeile 2: Statuswert 30

      lg Romildo

      Kommentar

      • Gast

        #4
        Hi Christian, Danke für die schnelle Rückmeldung zu später Stunde. Beispiel: Ich nehme einen Hex-Befehl aus einem VAB, der funktioniert und kopiere ihn in den Textausgang eines Status-Bausteins, so wie hier vorgeschlagen, nur das es bei mir nicht funktioniert (egal, ob "Als Digitalausgang verwenden" im VAB aktiviert ist oder nicht):


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

Name: Textübergabe aus Status an VAB.jpg
Ansichten: 611
Größe: 277,8 KB
ID: 237350

        Kommentar

        • Gast

          #5
          Hi, Romildo, auch dir vielen Dank für die schnelle Antwort. Ich bin mir nicht sicher, ob ich deine Intention richtig verstanden habe aber hier meine Umsetzung:

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

Name: Summierte Eingänge in Statusbaustein für Parametrisierung VAB.jpg
Ansichten: 616
Größe: 223,1 KB
ID: 237353
          Das Ergebnis ist für beide Varianten dasselbe: der Parameter fliesst nicht in den Helligkeitswert ein. Diesen will ich frei von 1 bis 254 (bzw 01 bis FE hex) schreiben können.

          Kommentar

          • romildo
            Lebende Foren Legende
            • 25.08.2015
            • 5113

            #6
            Sorry, vermutlich schon zu spät, ich verstehe nicht wirklich was Du willst.
            Geht es darum einen Dezimalwert 1-254 in einen Hexwert 01-FE umzuwandeln, oder um was geht es?
            lg Romildo

            Kommentar


            • Gast
              Gast kommentierte
              Kommentar bearbeiten
              Hi Romildo, es geht letztlich darum, Dezimalwerte aus mehreren Berechnungsbausteinen (Helligkeit und eine fortlaufende Nummer) als Parameter an bestimmten Stellen in einen ansonsten statischen Hex-Befehl einzubauen, der über Modbus TCP ein DALI4net ansteuert, welches dann die LED schaltet. Sorry, wenn ich das Problem zu schwammig formuliert habe.
          • Labmaster
            Lox Guru
            • 20.01.2017
            • 2474

            #7
            Zitat von Tholoxx
            Hi Christian, Danke für die schnelle Rückmeldung zu später Stunde. Beispiel: Ich nehme einen Hex-Befehl aus einem VAB, der funktioniert und kopiere ihn in den Textausgang eines Status-Bausteins, so wie hier vorgeschlagen, nur das es bei mir nicht funktioniert (egal, ob "Als Digitalausgang verwenden" im VAB aktiviert ist oder nicht):


            Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Textübergabe aus Status an VAB.jpg Ansichten: 0 Größe: 277,8 KB ID: 237350
            Ist auch logisch, über <v> kann man keinen Text übergeben

            Das mit dem "...\x00\x08<v>\x00..." aus dem ersten Post kann auch nicht funktionieren da die HEX Werte ja als einzelne Binär Bytes gesendet werden, der Analogwert in <v> jedoch als Text in Binär Bytes umgesetzt wird.
            Aus einem <v> = 8 wird ein "\x38, für ein <v> = 18 würde quasi \x31\x38 gesendet werden.

            Was aber funktionieren sollte, ist die Binär Byte Ausgabe über \1 statt <v>
            also "...\x00\x08\1\x00..."

            Das unterste Byte welches also als analog Wert in den VAB übergeben wird, wird dort binär eingesetzt.

            Wenn du mehrere Bytes übergeben willst, dann könnte man die höherwertigen Bytes aus dem Analogwert auch noch verwenden, also \2, \3 und \4
            ,man müsste dann nur den Analogwert z.B. mit einem Formelbaustein entsprechend zusammen bauen wo eben die höherwertigen Bytes entsprechend zusammengesetzt werden.
            ( Formel für Formelbaustein: i1+i2*256+i3*65536+i4*‭16777216‬ )
            an AI1 dann den Wert für \1
            an AI2 dann den Wert für \2
            an AI3 dann den Wert für \3
            an AI4 dann den Wert für \4

            Zuletzt geändert von Labmaster; 24.02.2020, 08:43.

            Kommentar

            • Gast

              #8
              Hi, Labmaster, ich bin ja vom Forum echt beeindruckt - hab mein Problem kurz vor Mitternacht gepostet und erhalte innerhalb von fünf Stunden Antworten von drei Koryphäen.

              Also dein Vorschlag hat funktioniert, zumindest mit der Übergabe eines Wertes mittels Binär Byte Ausgabe über \1. Mit mehreren Werten probiere ich das natürlich auch aus und berichte.

              Habt erstmal alle drei vielen Dank für die prompte Hilfe!

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

Name: bergabe Werte von Status an VAB als Binär Byte .png
Ansichten: 643
Größe: 169,4 KB
ID: 237368

              Kommentar

              • Gast

                #9
                Es funktioniert auch mit der Übergabe mehrerer Bytes an den VBA, siehe hier in einer Anwendung.

                Kommentar

                Lädt...