Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Umwandlung BIN in DEC

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Umwandlung BIN in DEC

    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      fastfoot @stefancammans last edited by

      @stefancammans sagte in Umwandlung BIN in DEC:

      Umwandlung BIN in DEC

      Hallo Zusammen,

      wie kann ich mehrere Binäre Datenpunkte zusammenfassen( DEC) und per MODBUS
      übertragen ?

      MfG

      meinst Du so etwas?

      let a = '100';
      let b = '001';
      let c = parseInt(a | b,2);
      log(c);
      
      S 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @stefancammans last edited by

        @stefancammans sagte:

        mehrere Binäre Datenpunkte zusammenfassen

        Binäre (0/1) oder boolsche (false/true) Datenpunkte ?

        S 1 Reply Last reply Reply Quote 0
        • S
          stefancammans @fastfoot last edited by

          @fastfoot

          so ähnlich...

          ich möchte mehrere Bool-VAR in ein MODBUS-Register übergeben,
          um die Variabel in der Wago-SPS als Tast-befehle zu nutzen.

          So sähe das in Codesys aus :
          Beispiel BIT TO WORD.PNG
          Beispiel BIT TO WORD 2.PNG

          1 Reply Last reply Reply Quote 0
          • S
            stefancammans @paul53 last edited by

            @paul53

            ist mir eingenlich egal.
            Der Tasterbefehl kommt aus der VISU vom iobroker.
            Aber 0 & 1 ist denke ich einfacher.

            MfG

            paul53 1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @stefancammans last edited by paul53

              @stefancammans sagte:

              0 & 1 ist denke ich einfacher.

              Das muss man nicht in eine Zahl wandeln. Im folgenden Beispiel enthält der Variablenname die Bitposition.

              let dec = a0 | a1 << 1 | a2 << 2 | a3 << 3
              
              S 1 Reply Last reply Reply Quote 0
              • S
                stefancammans @paul53 last edited by

                @paul53

                let modbus_Helper = a0 | 'javascript.0.script.js.BIT_TO_.Bit_to_Word_2_2' << 1 |
                'javascript.0.script.js.BIT_TO_.Bit_to_Word_2_3' << 2 |
                'javascript.0.script.js.BIT_TO_.Bit_to_Word_2_4' << 3 ;

                setState('modbus.0.holdingRegisters.12310' ,modbus_Helper )

                irgendwie bekomme ich das nicht hin....

                paul53 1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @stefancammans last edited by paul53

                  @stefancammans
                  Datenpunkt-IDs sind keine binären Werte sondern Strings.

                  let a2 = getState('javascript.0.script.js.BIT_TO_.Bit_to_Word_2_2').val;
                  let a3 = getState('javascript.0.script.js.BIT_TO_.Bit_to_Word_2_3').val;
                  let a4 = getState('javascript.0.script.js.BIT_TO_.Bit_to_Word_2_4').val;
                  let modbus_Helper = a2 << 2 | a3 << 3 | a4 << 4;
                  setState('modbus.0.holdingRegisters.12310', modbus_Helper);
                  
                  S 1 Reply Last reply Reply Quote 0
                  • S
                    stefancammans @paul53 last edited by

                    @paul53

                    Das funktioniert schon mal super.

                    aber wie sorge ich jetzt dafür das es bei Wertänderung ausgeführt wird?

                    paul53 1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @stefancammans last edited by

                      @stefancammans sagte:

                      bei Wertänderung ausgeführt wird?

                      var a2 = getState('javascript.0.script.js.BIT_TO_.Bit_to_Word_2_2').val;
                      var a3 = getState('javascript.0.script.js.BIT_TO_.Bit_to_Word_2_3').val;
                      var a4 = getState('javascript.0.script.js.BIT_TO_.Bit_to_Word_2_4').val;
                      
                      function bin2dec() {
                         let modbus_Helper = a2 << 2 | a3 << 3 | a4 << 4;
                         setState('modbus.0.holdingRegisters.12310', modbus_Helper);
                      }
                      
                      bin2dec(); // Script start
                      
                      on('javascript.0.script.js.BIT_TO_.Bit_to_Word_2_2', function(dp) {
                        a2 = dp.state.val;
                        bin2dec();
                      });
                      on('javascript.0.script.js.BIT_TO_.Bit_to_Word_2_3', function(dp) {
                        a3 = dp.state.val;
                        bin2dec();
                      });
                      on('javascript.0.script.js.BIT_TO_.Bit_to_Word_2_4', function(dp) {
                        a4 = dp.state.val;
                        bin2dec();
                      });
                      
                      S 1 Reply Last reply Reply Quote 0
                      • S
                        stefancammans @paul53 last edited by

                        @paul53

                        Super vielen Dank !!!
                        Da wäre ich nie drauf gekommen.

                        Es geht genau so wie ich es mir vorgestellt habe.
                        Danke !!

                        paul53 1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @stefancammans last edited by

                          @stefancammans sagte:

                          genau so wie ich es mir vorgestellt habe.

                          Dann markiere bitte das Thema in der Überschrift des ersten Beitrags als [gelöst].

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          657
                          Online

                          31.8k
                          Users

                          80.0k
                          Topics

                          1.3m
                          Posts

                          3
                          12
                          401
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo