Node Red REAL Datentyp verwenden.

ralf125

Level-1
Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,
kann mir einer erklären wie ich ein REAL Datentyp über Modbus in Node-Red verwenden kann?
Ich möchte einen Dimm Wert setzen. (Dimmer1_rFeedback)
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
ich benutze Modbus-Write und Modbus-Read.
bei e-Cockpit habe ich zum testen je ein Ausgang (Register 6 Bit 0)und ein Eingang (Register 32004 Bit 0)
Es kommt auch ein Wert an nur leider verstehe ich diesen nicht wirklich (0.1768.0.0 usw...)
Wandel ich in e-Cockpit REAL zu INT habe ich in Node-Red einen richtigen Wert.
ich möchte jedoch gerne einen REAL Wert (20-100) in Node-Red über Modbus an die Wago geben.
 
Ich versuche den Baustein (WagoAppBuilding.FbDimSingleButton)
den Eingang : rFeedback Mit einen REAL Wert zu steuern was auch bedingt funktioniert...
nur sobald ich einen Wert über Modbus:
INT => REAL Auf den Eingang rFeedback gebe, wird zwar das Licht gedimmt aber der Baustein lässt sich dann über den Taster nicht mehr richtig dimmen.
 
Meine Frage ging eher dahin, welchen Modbus-Node du in Node-Red verwendest, denn da gibt es in der Library mehrere verschiedene.
Der Node "node-red-contrib-modbustcp" der nur für Modbus-TCP ist, kann dir z.B. direkt 2 oder 4 Register in eine Gleitkommazahl Single/Double wandeln.
 
Es gibt Module wie node-red-contrib-buffer-parser, allerdings gibt dieser ein ArrayBuffer heraus, und z.B. der Node modbustcp will ein "normales" Array. Das müsstest du dann erst wieder umkopieren, dann kannst du aber gleich alles selber machen. Mit einem Funktionsblock mit folgendem Code:

Code:
var f = new Float32Array(1);
f[0] = msg.payload;
var w = new Uint16Array(f.buffer); 
msg.payload = Array.from(w);
return msg;
Muss halt sehen ob dann die Endianess für die Wago passt, evtl. geht das auch einfacher aber das kannst du als Ansatz hernehmen. Als Eingangswert gibst du dem Node deine Gleitkommazahl, und den Ausgang gibst du an den modbustcp-write weiter, den du auf Multiple Holding Register stellst.

Diese Frickelei ist eines der Dinge die ich an Node-Red nicht mag. Da schreibe ich lieber alles direkt in einem richtigen Programm, anstatt rumzuprobieren was die einzelnen Nodes denn wohl haben möchten, und dann trotzdem selber Code in Nodes schreiben zu müssen.
 
Zurück
Oben