NEWS
Werte in ein Register Schreiben
-
Ich möchte nicht extra noch einen Thread aufmachen für eine kurze Frage.
Warum funktioniert dies hier:const Wohnen_L01 = 'modbus.0.holdingRegisters.Ausgang-01'/*Output*/; const Merker_L01 = 's7.0.Markers.25.Wohnen_L01'/*Merker*/; on({id: Merker_L01, change: "ne"}, (obj) => { const status = obj.state.val; if (status === true) { setState(Wohnen_L01, 256); } else { setState(Wohnen_L01, 512); } });und dies hier funktioniert nicht
const Wohnen_L01 = 'modbus.0.holdingRegisters.Ausgang-01'/*Output*/; const Merker_L01 = 's7.0.Markers.25.Wohnen_L01'/*Merker*/; on({id: Merker_L01, change: "ne"}, (obj) => { if (Merker_L01 === true) { setState(Wohnen_L01, 256); } else { setState(Wohnen_L01, 512); } });beim zweiten habe ich hinter dem if direkt den DP geschrieben und nicht die Variable Status. Der zweite Code funktioniert nicht. Ich möchte gern verstehen warum?
-
Ich möchte nicht extra noch einen Thread aufmachen für eine kurze Frage.
Warum funktioniert dies hier:const Wohnen_L01 = 'modbus.0.holdingRegisters.Ausgang-01'/*Output*/; const Merker_L01 = 's7.0.Markers.25.Wohnen_L01'/*Merker*/; on({id: Merker_L01, change: "ne"}, (obj) => { const status = obj.state.val; if (status === true) { setState(Wohnen_L01, 256); } else { setState(Wohnen_L01, 512); } });und dies hier funktioniert nicht
const Wohnen_L01 = 'modbus.0.holdingRegisters.Ausgang-01'/*Output*/; const Merker_L01 = 's7.0.Markers.25.Wohnen_L01'/*Merker*/; on({id: Merker_L01, change: "ne"}, (obj) => { if (Merker_L01 === true) { setState(Wohnen_L01, 256); } else { setState(Wohnen_L01, 512); } });beim zweiten habe ich hinter dem if direkt den DP geschrieben und nicht die Variable Status. Der zweite Code funktioniert nicht. Ich möchte gern verstehen warum?
-
@TOBO [sagte]: verstehen warum?
Merker_L01 enthält einen konstanten String (die ID), kann also nicht true werden.
-
@TOBO [sagte]: gibt es keine andere Möglichkeit den DP
direkt in der IF Abfrage auszuwerten ?Zwei Möglichkeiten, wobei die zweite mehr Ressourcen verbraucht.
if(obj.state.val) if(getState(Merker_L01).val)Bessere Version, die mit nur einem setState() noch weniger Ressourcen verbraucht:
on(Merker_L01, (dp) => { // triggert auf Wertänderung setState(Wohnen_L01, dp.state.val ? 256 : 512); }); -
Ich habe mehrmals den Merker in der SPS getoggelt und es gibt keinen Eintrag im Log.
Um zu testen, ob die richtige Merker-ID gewählt wurde, kann man auf alle Merker triggern:
const ids = $('s7.0.Markers.*').toArray(); // Überwachung aller Merker on({id: ids}, (dp) => { // triggert auf jede Aktualisierung log(dp.id + ': ' + dp.state.val); });const ids = $('s7.0.Markers.*').toArray();
// Überwachung aller Merker
on({id: ids}, (dp) => { // triggert auf jede Aktualisierung
log(dp.id + ': ' + dp.state.val);
});Du hast damit eine sehr interessante Frage bei mir generiert. Ich habe 24 Relais welche über die Merker geschaltet werden. Kann man über den obigen Ansatz von Dir auch 24 DP gleichzeitig schreiben?
setState(Wohnen_L01, 512);Wohnen_L01 bis Wohnen_L24 in einem Rutsch auf 512 schreiben? Bzw. heissen die Datenpunkte so wie im Bild.

Modbus.0.hodingRegisters.Ausgang-01 bis Ausgang 24
-
const ids = $('s7.0.Markers.*').toArray();
// Überwachung aller Merker
on({id: ids}, (dp) => { // triggert auf jede Aktualisierung
log(dp.id + ': ' + dp.state.val);
});Du hast damit eine sehr interessante Frage bei mir generiert. Ich habe 24 Relais welche über die Merker geschaltet werden. Kann man über den obigen Ansatz von Dir auch 24 DP gleichzeitig schreiben?
setState(Wohnen_L01, 512);Wohnen_L01 bis Wohnen_L24 in einem Rutsch auf 512 schreiben? Bzw. heissen die Datenpunkte so wie im Bild.

Modbus.0.hodingRegisters.Ausgang-01 bis Ausgang 24
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden