Ankündigung

Einklappen
Keine Ankündigung bisher.

Einzelne Bit eines MW darstellen

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

    Einzelne Bit eines MW darstellen

    Hallo,

    ich habe einen Modbus Client, der mir nur MerkerWörter ausgibt, in denen dann die einzelnen Bit dargestellt sind.
    wie bekomme ich das am besten aufgeschlüsselt?

    Vielen Dank im Vorraus
    Mathias

    #2
    Hi,

    du schiebst die Bits (shift mit neg. Schiebeweite) an die letzte Stelle und konvertierst in b01

    Kommentar


      #3
      Danke, funktioniert, vielen Dank für die schnelle Antwort.

      Kommentar


        #4
        Hallo

        Jetzt habe ich noch ein Frage,
        wie bekomme ich mehrere bit in ein Merkerwort?

        Kommentar


          #5
          1u08/1u16/1u32 (je nachdem) nach links schieben für das entsprechende Bit und mit einem anderen verodern:

          Bits 0, 5 und 11 setzen:
          Code:
          merkerwort=1u16 or shift(1u16, 5s08) or shift(1u16, 11s08)

          Kommentar


            #6
            Merkerwort ist bei mir eine Variable VAR_Merkerwort (s16) und hier soll bei Bit 0 die Gruppenadresse 0/5/133 (b01) abgebildet werden und bei Bit 1 dann die Adresse 0/5/20 (b01), wie sieht das konkret aus?

            Kommentar


              #7
              Hallo,

              Code:
              VAR_Merkerwort=0s16
              if eventwrite("Unbenannt-0/5/133") or eventwrite("Unbenannt-0/5/20") then {
                  VAR_Merkerwort = (VAR_Merkerwort and -4s16) or convert("Unbenannt-0/5/133", 0s16) or convert(shift(convert("Unbenannt-0/5/20", 0u16), 1s08), 0s16);
              } endif​
              Anmerkung: ein vorzeichenbehafteter Datentyp (s) ist bei Bitvektoren eigentlich nicht sinnvoll. Gibt es einen Grund, warum das kein u16 ist? Dann könnte man mit 0xfffcu16 verunden sich einen convert sparen und direkt shiften. shift ist beim EibPC aber nur für vorzeichenlose Datentypen.
              Zuletzt geändert von foobar0815; 26.10.2023, 13:15.

              Kommentar


                #8
                Danke für die weitere Hilfe, werde das mal am Wochenende testen.

                Zitat von foobar0815 Beitrag anzeigen
                Gibt es einen Grund, warum das kein u16 ist?
                Nein, ist wohl nur ein Formatierungsfehler, also könnte man auch gut ein u16 nehmen, ist wohl nur durch einen Denkfehler entstanden.

                Kommentar

                Lädt...
                X