Zählersumme aus An/Aus Zustand eines Pokeys Eingang darstellen

Guten Abend zusammen,

Mein Wunsch ist es, dass die Zeit, die ein PoKeys Eingang bestromt wird, gezählt wird.
Abgekürzt: Ich möchte, wenn sich der Status eines 1-Bit Wertes im Symcon ändert, die Dauer der Veränderung gezählt bekommen.
Die Einheit ist zweitrangig. Es geht darum, über Tage und Wochen hinweg, ein Chart am Ende zu haben, wo man Unterschiede erkennen kann.

Ich bin sehr neu im Symcon Bereich und denke es gibt viele Wege dahin.
Ob es via Script funktioniert, oder sogar einfacher realisierbar ist, würde ich gern hier erfahren:)

Gruß,

Frohes, gesundes neues Jahr

Wenn Du das nur im Webfront haben willst als Chart, einfach 'ne Modbusinstanz mit dem Eingang, nur lesen anhaken, erstellen und beim Wert das Logging anhaken. Probier mal.

Gruß Helmut

Danke Helmut, dir auch ein gesundes '16 !

Soweit habe ich es schon gebracht. Dann ist es zwar visualisiert, aber eine Zahl/Zähler wäre das Ziel.

Wenn ich später Tage, Wochen und Monate vergleichen möchte, wäre das hilfreicher für mich.
Falls das mit ein paar Scriptzeilen funktionieren würde?! Aber wenn der Wert nicht als Zähler am IPS ankommt, müsste man dort ja ein Datenhaushalt anlegen? Das übersteigt mein Horizont aber vollkommen.

Da ich noch etqas mit Sensoren am testen bin, für ein anderes Vorhaben, habe ich einen Sensor aus der Wühlkiste zufällig getestet, der, solanage er schließt, immer weiter hoch zählt am Counter Eingang vom PoKeys. Den würde ich dann anstatt des Pin am Pokeys bestromen und fest wo einbauen, dass er immer Kontakt sieht.
Aber wenn es einen smateren Weg zum Ziel gäbe, bevorzuge ich den gern.

Gute Nacht jetzt

Könnte ich nicht den „onTimer“ in der Pokeys Software dafür verwenden?

Verstehe ich das richtig, dass dieser die Zeit in ms als Shared Data ausgeben könnte, die am Input als „An“ anliegt?

Ich bekomme es nur hin, dass 1/0 als SharedData ausgebeben wird. Interpretiere ich die Funktion falsch, oder geht das schon, wenn man es richtig machen würde?

Was genau willst Du mit dem Eingang machen?
S0 oder das mit Deinem Sensor?

Ich habe mal das Script von Andreas für einen 1Wire Zähler für einen Pokeys57E Zähler installiert, geht auch.

Ich möchte eine Zahl am Ende haben, die ich über Zeiträume hinweg vergleichen kann.

Mein Gedanke war jetzt, dass wenn ein Pokeys Eingang umschaltet, der OnTimer anfängt ms zu zählen und ich diesen Wert via SharedData in IPS übernehmen kann. So verstehe ich den OnTimer?

Wenn ich, wie Du mir schon gezeigt hast hier, nur den True/False Status als Digramm habe, habe ich zwar eine Grafik, aber keinen Wert/Zahl, die ich vergleichen (lassen) kann.

Hoffe Du verstehst…

EDIT: Vl ist der Titel irreführend. Die Zählersumme, die ich möchte, muss irgendwo generiert werden.

Der On-Timer ist aber nix zum Zählen, halte mal die Maus über den On-Timer in der Auswahlleiste.

Da wird Dir aufgemalt wie der Ausgang mit dem Eingang verknüpft ist.

Der PT-Eingang ist zur Eingabe der Verzögerungszeit nachdem der Ausgang dem Eingang folgt.

Da hast Du jetzt quasi eine logische Eins angebastelt, durch das Eingangssignal, wenn es Eins ist.
An Q wäre 'ne Eins, solange er läuft und an ET die abgelaufene Zeit.

Zählen mit Pokeys:

Man(n) definiert in der Pokeys-Software einen Counter.
Welche Counter sein können sieht man im Pokeys-PDF Seite 11, die dann noch ev .auf rising edge anhaken.
Nun in einer Modbusinstance ab Adresse 800, noch den Wert mit IPS abholen fertig.
Mit einem Script den Wert zyklisch verwerten, sprich Stundenwert, Tageswert usw berechnen und entsprechend den Counter über das Schreiben in die Modbusadr auch mal zu „Null“ machen.
Dazu braucht man(n) noch nix im Poblock machen.

Wenn Du eine Zeit ermitteln willst, wie lange ein Eingang High ist, dann könntest Du einen Zähler zählen lassen.

Den würde ich in Abhängigkeit von einem Eingang freigeben, hochzählen lassen, getaktet durch einen Zeitgeber zB 100ms.

Den Wert zwischenspeichern, wenn der Eingang wieder „Null“ geworden ist und den Wert dann über einen S0-Port in IPS holen.
wenn abgeholt, den Wert ev. zu „Null“ setzen

Kommt drauf an welche Zeiten es sind,

Gruß Helmut

Ich dachte es wäre einfacher:)

Die Zeit variert von 1-4 Sekunden bis manchmal 30Sekunden. Es handelt sich um eine Förderschnecke, die mit einem optischen Sensor geschaltet wird. Daher variert die Einschaltdauer.
Das Signal den Sensors kann ich nicht auswerten, weil der mir nur sagt, dass die Schnecke laufen müsste, aber er mir nicht verraten kann, ob sie auch gelaufen ist.

Daher soll (irgendwie) von dem Motoschütz was eingebaut werden, was auf den Pokeys zielt und der mir Zeit/Zahlen hochzählen kann, solange der Motor eingeschlatet war.

Den Wert zwischenspeichern, wenn der Eingang wieder „Null“ geworden ist und den Wert dann über einen S0-Port in IPS holen.
wenn abgeholt, den Wert ev. zu „Null“ setzen

Das verstehe ich, aber kann es nicht umsetzten. Ich versuche mich langsam reinzuarbeiten, aber das ist schweres Neuland für mich.

Vielen Dank für die Infos Helmut!

Hab’ dir mal einen Vorschlag zur Erfassung einer „Einschaltdauer“ in PoBlock gebastelt, weiß nicht ob es Deinen Wünschen entspricht…

In IP-Symcon must Du noch mit einem Script die Werte, so wie Du es brauchst, abspeicher, bzw die S0-Variable mitloggen lassen. Bild erklärt sich selbst

Das zweite File macht es nur mit mehreren Lesestellen zum eventuellen Vergleich.
Beschreibung für die zweite Variante:

eingang Simu = simulierter Eingang der Schnecke
Clock source = Zeitkonstante mit der gezählt wird

S0 = aktuelle Zählwert nicht stabil weil in Arbeit
S1 = 1. Zeitwert
S2 = 2. Zeitwert (Summe aus 1.+2.)
S3 = 3. Zeitwert (Summe aus 2.+3.)
S4 = 4. Zeitwert (Summe aus 3.+4.)
S5 = 5. Zeitwert (Summe aus 4.+5.)

S6 = 1. Zeitwert wird gerade gezählt
S7 = 2. Zeitwert wird gerade gezählt
S8 = 3. Zeitwert wird gerade gezählt
S9 = 4. Zeitwert wird gerade gezählt
S10 = 5. Zeitwert wird gerade gezählt

S6 - S10 dienen dazu IP-Symcon zu informieren
was gerade gemacht wird bzw die Abholung des
vorher gezählten Wert zu veranlassen.
Es sind 5 vergangene Werte lesbar

Gruß Helmut

PoKeys_3168c.zip (2.57 KB)

Danke für deine Mühen Helmut.
Das ist schon leicht übertrieben, die zweite File!

Mir würde ein Zählerwert volkommen reichen.
Wenn ich jetzt noch einen Weg finde, den Zähler im IPS nach dem abholen zu resetten, wäre es für mich perfekt.

Schaffe ich das mit einem SharedBit bzw 16 oder 32, mit dem ich den Referenzwerte setze nach dem auslesen, um dann durch den Wert den reset auszulösen, oder was wäre der einfachste Weg dafür?

On_zeit_1-fach-Speicher.zip (964 Bytes)onTime.png

Dein Titel sagt aber mit Speicher, Du speicherst gar nicht ;-(

Hier meine Erweiterung, in S0 ist der Wert, in S1 steht die Information ob S0 abholbereit ist.

Das Script wird dann getriggert und macht den alte Zeitwert „Wie lange ist die Schnecke an“ zu Null.

Du mußt noch meinen Simutimer mit Deinem Eingang ersetzen:

Edit: Dein Zähler im PoBlock wird nur durch den Vergleich resettet, zählt aber nur weiter hoch, wenn wieder high.
Wenn Dir die Gesamtzeit, wie lange ist die Schnecke am Tag an, kann das ok sein.

Ich ging davon aus, dass das auch wann, wie lange „An“ war.

On_zeit_1-fach-Zähler_m_Speicher.zip (1.12 KB)

Ah, so wird es im Pokeys gespeichert?

Mit der File die ich zuetzt angehangen habe, konnte ich im IPS die Zahl (s0) einfach auslesen und dort loggen.
Damit wäre mein Ziel erreicht gewesen.

Deine letzte File speichert nach Statusänderung am Eingang ab und addiert dann auf - und ich denke, sie würde auch dort dann gespeichert bleiben nun? Also mit Battery im Pokeys…?

Die letzte Frage ist jetzt, ob ich die S0 Zahl ale 24h resette, oder sie einfach ewig hochzählen lasse.

Im Pokyes PDF wird der Schreibbefeh mit „0x05: Write single coil“ angegeben.

Im Script würde ich dann die Instanznummer des Wertes nehmen?

Ah, so wird es im Pokeys gespeichert?
Mit der File die ich zuetzt angehangen habe, konnte ich im IPS die Zahl (s0) einfach auslesen und dort loggen.
Damit wäre mein Ziel erreicht gewesen.
Wenn Du das mit dem Ontimer meinst, das wird immer 1 sein, teste mal.
Deine letzte File speichert nach Statusänderung am Eingang ab und addiert dann auf - und ich denke, sie würde auch dort dann gespeichert bleiben nun? Also mit Battery im Pokeys…?
Immer nur wenn der Eingang auf „Null“ geht wird der neue Wert übernommen. In meinen Beispielen davor hatte ich noch eine „Bereit zur Übernahme“ zu IPS gebastelt.
Die letzte Frage ist jetzt, ob ich die S0 Zahl ale 24h resette, oder sie einfach ewig hochzählen lasse.
Die wird bei jedem High->Low-Übergang addiert, willst Du das? Ich würde den Wert immer wegspeichern und dann mit „0“ schreiben an Modbus-Adresse 1000 den alten Wert löschen.
Im Pokyes PDF wird der Schreibbefeh mit „0x05: Write single coil“ angegeben. Bei Bit-Befehlen, nicht bei DWord
Im Script würde ich dann die Instanznummer des Wertes nehmen? Die Variable meinst Du, ja.

Das bde ist, dass Du hier einem blutigen Anfänger schreibst… Ich habe hier nur eine ganz grobe Ahnung von den Modulen, die du da alle im PoBocks verbaut hast.

Mit der Fie die ich in Beitrag #10 angehangen hatte, konnte ich via Modbus 1000, live den Zähler hochzählen sehen und natürlich mitloggen. Darum meinte ich ja, dass mein Ziel damit eigentlich erreicht ist.

In deinen Files (ich weiss nicht wieso und warum, also welcher Baustein das machte), wird der Wert erst bei Statusänderung des Eingang übernommen und im S0 angezeigt. Daher ging ich davon aus, dass der Baustein den Wert speichert (getestet habe ich das nicht).

Und kleiner Erfolg… ich hab’s geschafft, den Zähler zu resetten bzw den Wert zu schreiben mit ModBus_WriteRegisterWord(24965, 0);

Also vielen Dank lieber Helmut!

Jetzt kann ich mal in Ruhe testen, welches Fie die S0 Werte bei einem evt Stromausfall speichern würde, wobei das nicht soooo wichtig wäre, wenn ich es als Zählerdigramm darstelle nachher.

Gruuuuß!