NEWS
Werte in ein Register Schreiben
-
Hallo zusammen,
ich habe folgenden Code. Leider tut sich nichts.
Von einer SPS wird ein Merker gesetzt. Bei True soll 256 in ein Modbus Register geschrieben werden und der Merker selbst wieder zurück gesetzt. Bei Status false soll 512 in das Register geschreiben werden. Hier mein Code.const Wohnen_L01 = 'modbus.0.holdingRegisters.Ausgang-01'/*Output*/; const Merker_L01 = 's7.0.Markers.25.Wohnen_L01'/*Merker*/; // Überwachung des Merkers on({id: Merker_L01, change: "ne"}, (obj) => { // Holen des aktuellen Status (true/false) const status = obj.state.val; if (status === true) { setState(Wohnen_L01, 256); setState(Merker_L01, false); console.log("Merker ist TRUE: Schreibe 256"); } else { setState(Wohnen_L01, 512); console.log("Merker ist FALSE: Schreibe 512"); } }); -
Hallo zusammen,
ich habe folgenden Code. Leider tut sich nichts.
Von einer SPS wird ein Merker gesetzt. Bei True soll 256 in ein Modbus Register geschrieben werden und der Merker selbst wieder zurück gesetzt. Bei Status false soll 512 in das Register geschreiben werden. Hier mein Code.const Wohnen_L01 = 'modbus.0.holdingRegisters.Ausgang-01'/*Output*/; const Merker_L01 = 's7.0.Markers.25.Wohnen_L01'/*Merker*/; // Überwachung des Merkers on({id: Merker_L01, change: "ne"}, (obj) => { // Holen des aktuellen Status (true/false) const status = obj.state.val; if (status === true) { setState(Wohnen_L01, 256); setState(Merker_L01, false); console.log("Merker ist TRUE: Schreibe 256"); } else { setState(Wohnen_L01, 512); console.log("Merker ist FALSE: Schreibe 512"); } }); -
Stimmt, in Zeile 12 wird der Merker wieder zurück gesetzt. Das ist ein Denkfehler. Allerdings wird er gar nicht zurück gesetzt. Ich setze ihn in der SPS und er sollte dann beim durchlaufen des Scripts wieder zurück gesetzt werden. Unabhängig davon das es so nicht funktioniert, wird der Merker aber nicht gelöscht. Ich setze ihn in der SPS und er bleibt immer auf true stehen. Kann ich das Status nicht ganz weglassen und die If Abfrage direkt auf den Merker_L01 setzen?
-
Stimmt, in Zeile 12 wird der Merker wieder zurück gesetzt. Das ist ein Denkfehler. Allerdings wird er gar nicht zurück gesetzt. Ich setze ihn in der SPS und er sollte dann beim durchlaufen des Scripts wieder zurück gesetzt werden. Unabhängig davon das es so nicht funktioniert, wird der Merker aber nicht gelöscht. Ich setze ihn in der SPS und er bleibt immer auf true stehen. Kann ich das Status nicht ganz weglassen und die If Abfrage direkt auf den Merker_L01 setzen?
@TOBO [sagte]: Ich setze ihn in der SPS und er bleibt immer auf true stehen.
Zeile 12 ist wirkungslos?
Der Merker aktualisiert nur den Zeitstempel, ist also eine Taste? In dem Fall versuche es mal so:const Wohnen_L01 = 'modbus.0.holdingRegisters.Ausgang-01'/*Output*/; const Merker_L01 = 's7.0.Markers.25.Wohnen_L01'/*Merker*/; // Überwachung des Merkers on({id: Merker_L01}, () => { // Holen des aktuellen Status (true/false) const status = getState(Wohnen_L01).val; setState(Wohnen_L01, status == 256 ? 512 : 256); }); -
Mit dem Modbus Register kann man gar nichts machen, bzw. den Status abfragen ist sinnlos. Dies wird nach dem Schreiben von der Modbus Karte selbständig wieder zurück gesetzt auf 0. Lediglich das Schreiben der Werte 256 und 512 bewirkt das ein Relais auf dieser Karte gesetzt und wieder zurück gesetzt wird.
Der Merker wird in der sps durch die dort prigrammierte Logig gesetzt, oder zurück gesetzt. Wird der Merker 1 soll 256 ins Register geschrieben werden und wird der Merker wieder 0, dann einmal 512 ins Register schreiben.
-
Mit dem Modbus Register kann man gar nichts machen, bzw. den Status abfragen ist sinnlos. Dies wird nach dem Schreiben von der Modbus Karte selbständig wieder zurück gesetzt auf 0. Lediglich das Schreiben der Werte 256 und 512 bewirkt das ein Relais auf dieser Karte gesetzt und wieder zurück gesetzt wird.
Der Merker wird in der sps durch die dort prigrammierte Logig gesetzt, oder zurück gesetzt. Wird der Merker 1 soll 256 ins Register geschrieben werden und wird der Merker wieder 0, dann einmal 512 ins Register schreiben.
@TOBO [sagte]: Wird der Merker 1 soll 256 ins Register geschrieben werden und wird der Merker wieder 0, dann einmal 512 ins Register schreiben.
// Überwachung des Merkers on(Merker_L01, (dp) => { // triggert auf Wertänderung setState(Wohnen_L01, dp.state.val ? 256 : 512); }); -
// Überwachung des Merkers
on(Merker_L01, (dp) => { // triggert auf Wertänderung
setState(Wohnen_L01, dp.state.val ? 256 : 512);
});Ich habe Deinen Code 1:1 kopiert und es geht nicht.
Kann es an der Zuweisung ganz oben liegen ?
So sieht das jetzt bei mir aus. Schreibe ich die Werte von Hand über Objekte in das Register funktioniert es.
-
// Überwachung des Merkers
on(Merker_L01, (dp) => { // triggert auf Wertänderung
setState(Wohnen_L01, dp.state.val ? 256 : 512);
});Ich habe Deinen Code 1:1 kopiert und es geht nicht.
Kann es an der Zuweisung ganz oben liegen ?
So sieht das jetzt bei mir aus. Schreibe ich die Werte von Hand über Objekte in das Register funktioniert es.
@TOBO [sagte]:
Dann logge mal den Merker-Wert:
// Überwachung des Merkers on(Merker_L01, (dp) => { // triggert auf Wertänderung log('Merker: ' + dp.state.val); setState(Wohnen_L01, dp.state.val ? 256 : 512); });EDIT: Gibt es überhaupt eine Wertänderung des Merkers? Das kann man so überprüfen:
// Überwachung des Merkers on({id: Merker_L01}, (dp) => { // triggert auf jede Aktualisierung log('Merker: ' + dp.state.val); }); -
Da tut sich gar nichts im Log. Ich habe mehrmals den Merker in der SPS getoggelt und es gibt keinen Eintrag im Log. Kann es mit der Konfiguration des Adapter zu tun haben?
Es dauert auch sehr lange bis die Meldung "Instanz ist deaktiviert" verschwindet. -
Da tut sich gar nichts im Log. Ich habe mehrmals den Merker in der SPS getoggelt und es gibt keinen Eintrag im Log. Kann es mit der Konfiguration des Adapter zu tun haben?
Es dauert auch sehr lange bis die Meldung "Instanz ist deaktiviert" verschwindet. -
Der S7 Adapter funktioniert einwandfrei. Ich meine den JS Adapter. Ich kann ja alle Werte problemlos von Hand in den Objekten Schreiben, bzw. setzen.

Schon der falsche Verweis verursacht keinen Fehler. Ich habe einfach mal die "1" gelöscht und das Script läuft trotzdem. Die Deklaration, bzw. der VErweis auf die Adressen ist nicht in Ordnung.
-
Der S7 Adapter funktioniert einwandfrei. Ich meine den JS Adapter. Ich kann ja alle Werte problemlos von Hand in den Objekten Schreiben, bzw. setzen.

Schon der falsche Verweis verursacht keinen Fehler. Ich habe einfach mal die "1" gelöscht und das Script läuft trotzdem. Die Deklaration, bzw. der VErweis auf die Adressen ist nicht in Ordnung.
-
@TOBO [sagte]: Ich habe da gar nichts geändert.
Mit den Daten sollte sich der JS-Adapter normal verhalten. Es sieht nicht nach einer Überlastung aus.
-
@TOBO zeig doch mal die Objektdaten von dem Merker-Datenpunkt im Adapter
-
Der S7 Adapter funktioniert einwandfrei. Ich meine den JS Adapter. Ich kann ja alle Werte problemlos von Hand in den Objekten Schreiben, bzw. setzen.

Schon der falsche Verweis verursacht keinen Fehler. Ich habe einfach mal die "1" gelöscht und das Script läuft trotzdem. Die Deklaration, bzw. der VErweis auf die Adressen ist nicht in Ordnung.
-
Da tut sich gar nichts im Log. Ich habe mehrmals den Merker in der SPS getoggelt und es gibt keinen Eintrag im Log. Kann es mit der Konfiguration des Adapter zu tun haben?
Es dauert auch sehr lange bis die Meldung "Instanz ist deaktiviert" verschwindet.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); });
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



