NEWS
Umwandlung BIN in DEC
-
@stefancammans sagte:
mehrere Binäre Datenpunkte zusammenfassen
Binäre (0/1) oder boolsche (false/true) Datenpunkte ?
-
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 :
-
ist mir eingenlich egal.
Der Tasterbefehl kommt aus der VISU vom iobroker.
Aber 0 & 1 ist denke ich einfacher.MfG
-
@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
-
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....
-
@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);
-
Das funktioniert schon mal super.
aber wie sorge ich jetzt dafür das es bei Wertänderung ausgeführt wird?
-
@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(); });
-
Super vielen Dank !!!
Da wäre ich nie drauf gekommen.Es geht genau so wie ich es mir vorgestellt habe.
Danke !! -
@stefancammans sagte:
genau so wie ich es mir vorgestellt habe.
Dann markiere bitte das Thema in der Überschrift des ersten Beitrags als [gelöst].