NEWS
Werte in ein Register Schreiben
-

Ich steuer den per Hand um grundsĂ€tzlich zu sehen ob JS ĂŒberhaupt etwas mach und das tut es wohl nicht.
-
@TOBO [sagte]: es passiert absolut nichts.
Bei Skriptstart hĂ€tte eine rote 256 in den DP "StatusTest" geschrieben werden mĂŒssen.
Es ist nicht der Debug-Modus (Skript-Editor ganz rechts oben) aktiviert? -
-
Debug ausschalten!
Script nicht unter global!
-
-
@tobo
...und dann ist es kein Wunder dass der Neustart ewig dauert -
@Homoran [sagte]: Script nicht unter global!
Unter "global" dĂŒrfen nur Skripte liegen, die hĂ€ufig verwendete eigene Funktionen enthalten, denn sie werden in jedes andere Skript kopiert und dort bei Aufruf ausgefĂŒhrt.
-
-
-
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
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


