NEWS
Blockly Lese- und Schreiberfolg
-
Hallo Matthias @haus-automatisierung
Ich bin gerade dabei meine Scripte mit Blockly mal etwas "operationell zu festigen", d.h. ich würde gerne einbauen, dass er bei jedem Datenpunkt, auf den er versucht lesend zuzugreifen, eine Prüfung durchführt, ob dies erfolgreich war, wenn nicht dann möchte ich weitere Aktionen durchführen (z.B. Text ins Log, Telegramm etc.).
Ebenso würde ich gerne eine Prüfung nach x ms durchführen, ob das Schreiben eines Datenpunktes erfolgreich war. Leider kommt es hin- und wieder vor, dass DP z.B. mit Modbus nicht erfolgreich ins Gerät übertragen werden, weshalb ich gerne eine Prüfung nach x ms durchführen würde, ob es geklappt hat.
Das sind eigentlich sehr rudimentäre Funktionen, weshalb ich dachte, ob man das nicht in die Bausteine mit aufnehmen kann?
Der Aufwand das für jeden einzelnen Punkt, bei jedem Lese- oder Schreibvorgang manuell zu basteln, ist enorm hoch. Es würde aber eine gewaltige Qualitätssteigerung bedeuten.Gruß
Jörg
-
Ich denke, dass der richtige Weg ein feature request beim javascript-Adapter auf github wäre.
-
@joergh sagte: versucht lesend zuzugreifen, eine Prüfung durchführt, ob dies erfolgreich war
Die Prüfung erfolgt bereits: Es gibt eine Warnung, wenn der Zugriff nicht erfolgreich war.
-
@paul53 ... und wie nutze ich die um dann eine Aktion auszulösen?
Ich muss dann wohl bei jedem Lese- oder Schreibvorgang extra mit einer "falls" Abfrage arbeiten, oder gibt es einen anderen Weg?
Beim Schreiben geht das sowieso nicht, weil ich hier manchmal auf die Reaktion eines externen Gerätes angewiesen bin, d.h. ich schreibe den DP und er führt das erfolgreich aus, aber beim Übertragen zum Gerät klappt etwas nicht und beim nächsten Abgleich steht der alte Wert wieder drin. Da braucht man dann ein zeitliches Delay, um dann zu prüfen ob das Ergebnis tatsächlich vorhanden ist....
-
@joergh sagte: wie nutze ich die um dann eine Aktion auszulösen?
Was für eine Aktion soll ausgelöst werden, wenn das Lesen nicht erfolgreich war?
-
@paul53 Am besten eben frei definierbar. Ich möchte dann z.B. eine Fehlermeldung in dem der Skriptname und der DP-Name auftaucht nicht nur ins Log, sondern an Telegramm, eventuell ein Wiederholen des Lesevorgangs oder auch Anlegen eines DP auslösen.
-
@joergh sagte: Wiederholen des Lesevorgangs
Das ist sinnlos, denn der DP wird gelesen, wenn der Zustand existiert. Mann kann die Existenz prüfen:
if(!existsState(id)) Aktionen(id) else return getState(id).val
-
@paul53 sagte in Blockly Lese- und Schreiberfolg:
@joergh sagte: Wiederholen des Lesevorgangs
Das ist sinnlos, denn der DP wird gelesen, wenn der Zustand existiert. Mann kann die Existenz prüfen:
if(existsState(id) getState(id).val else Aktionen(id)
Das muss durchaus nicht sinnlos sein, denn dazwischen können ja weitere Aktionen liegen, z.B. der Start eines Gerätes, dass den DP bereit stellt, etc.
Ich muss jetzt jedes Mal einen manuellen Check des Erfolgs programmieren und deswegen macht es Sinn die Erfolgsprüfung so zu gestalten, dass die "falls...dann" Prüfung schon enthalten ist. Beim Schreiben am besten mit einem definierbaren Delay versehen.