Stromzähler mit Wago auslesen

Sorry … aber das verstehe ich jetzt nicht ! :confused:

Womit oder wie beschreibe ich die Merker mit den Tasklaufzeiten???

In deiner Konfiguration globaler Variablen gibt’s schon sowas :
Dat_Merk1 AT %MD0 :DWORD;
also mußt Du ergänzen :
ActCycle AT %MW??? :TIME;
Die Adresse ist entsprechend einzusetzen.
Im Programm steht dann :
ActCycle := GET_ACT_CYCLE(FALSE);

Also das mit den Merkern ist mir klar, aber wie bekomme ich die Zeilen in das Programm rein ?
Ich habe da nur die Funktionsbausteine … :confused:

Also in der Variante die Du hochgeladen hattest, da war Dein PLC_PRG in ST, da könntest Du nach der Zeile Windfang(); fortsetzen .

Also ich habe das jetzt mal in meinen 2. Programmaufruf eingefügt, der das Stromzählerprogramm aufruft und bekomme folgende Werte:

AktCycle: 466min23s873ms
MaxCycle: 427ms
MinCycle: 0 bzw. 1min5s537ms
PlcActCycle: 7min38s752ms
PlcActMax: 7ms
PlcActMin: 0ms

Die Firmwarevesion steht übrigens weiter oben …

Da ist irgendwas oberfaul. Ich weiß nicht mehr weiter.

:confused:

Was genau is oberfaul ?

@Jens,

wenn Du nicht weiterkommst, frag doch mal Joachim(boXer) er sollte Dir da behilflich sein können. :wink:

Hallo,

kannst Du bitte Deine Applikation einmal als Archiv speichern und hochladen.
Wichtig ist das Deine verwendeten Bibliotheken dabei sind.
Eventuell kann ich am Wochenende mal reinschauen.

Hallo Joachim,

vielen Dank für das Angebot da mal rein zu sehen.
Ich hoffe ich habe das mit dem Archiv jetzt korrekt gemacht !?

Gruß
Jens

Tastertest_30nov.zip (708 KB)

Hallo Jens,

könntest Du deine SPS bitte mal gemäß der beiden Task Bilder einstellen.
Mit der von Dir gewählten Prio 0 wird die SPS nicht glücklicher. Der Hauptgrund ist das es die gleiche Prio ist, mit der normalerweise interne Abfragen realisiert werden.
Hast Du einen Überblick in welcher Minimal Zeit die Impulse kommen?
Falls Du die Einstellungen der SPS gemäß des Vorschlags vornimmst sollten eigentlich Impulse mit einem Puls-pausen Verhältnis von ungefähr 40ms erfasst werden können (Gesamtzeit zwischen 2 Impulsen 80ms).
Grundsätzlich muss die Programm-Zykluszeit kleiner sein als die Zeit zwischen zwei Impulsen. Eine zu große Impulsfrequenz führt sonst zwangsläufig zu einem falschen Ergebniss, da die SPS nicht mehr alle Impulse erfassen kann.
Dann hilft nur noch eine Zählerklemme die unabhängig von der SPS Zykluszeit arbeitet und die nur noch die zuletzt erfassten Daten an der Impulsschnittstelle während der Programmverarbeitung übergibt. Die erfassten Daten an der Zählerschnittstelle arbeiten dadurch komplett unabhängig vom SPS Task.

Teste die Taskkonfig und gib bitte eine Rückmeldung.

Hallo Joachim, danke fürs rein sehen, ich werde den Vorschlag gleich mal umsetzen.

Die Impulse kommen eher nicht so schnell hintereinander, da der Zähler 100 Impulse pro kwh liefert … und da sollten die Zeiten zwischen den Impulsen locker groß genug sein.

Gruß
Jens

Sooo … also bis jetzt läuft es einwandfrei! Bisher noch keine Abweichung … werde das mal weiter beobachten, aber scheinbar gehts jetzt :slight_smile: freu

Sooooo … ich habe da ein neues Problem :rolleyes:

Die Werte vom Zähler sollen laut Beschreibung ja bei Stromausfall erhalten bleiben. Wenn ich aber das Programm ändere (irgendeinen Teil) und dann wieder hoch lade und starte, dann sind die Werte vom Zähler weg.
Ich muss dann jedes Mal erst wieder zum Zähler und gucken wie der aktuelle Stand ist und den Baustein neu initialisieren.

Hat jemand eine Idee wie man die Werte so zwischenspeichert das die erhalten bleiben? Das Ändern des Programms mache ich ja offline und der Upload geht ruck zuck … da dürften kaum Impulse verloren gehen.

Wäre sonst ein Zählerbaustein von Wago eine Möglichkeit? Ansonsten werde ich das Experiment Wago und Zähler auslesen erst einmal aufgeben und nen S0 Zähler nehmen …

Gruß
Jens

klar geht das - deswegen musst Du das „Experiment“ nicht aufgeben - ich finde die Kombination WAGO und S0-Ausgänge ideal (habe ich für Strom u. Wasser im Einsatz)

  • die aktuellen Werte als permanent resistent speichern
  • als init-Werte nach Neustart genau diese Werte verwenden

jedoch muss ich erstmal das entsprechende WAGO-File suchen (bin derzeit nicht @Home), ggf. kann Jensen helfen („er hat es erfunden“):smiley:

bis später

Tilo

@ Jens: Gib mal in der CoDeSys-Hilfe ‚Retain‘ ein…

Gruß

Anbei mal meine Funktionsblöcke, einmal in Fub, einmal in ST und die zugehörige Visualisierung. Programmdownloads und Stromausfälle überleben die Variablen, allerdings bei der Reset Taste an der Wago waren die Werte auch wieder weg, es gibt also noch Verbesserungsbedarf.
Gruß Jens

FbImpulseCounter.zip (2.38 KB)

Danke für die Antworten, hilft schon mal ein wenig weiter :wink:

Aber dann habe ich noch ne generelle Frage … ich nutze ja den Impulsecounter aus der Bibliothek und dort sind die Variablen zwar als Retain aber nicht als persistent hinterlegt.
Kann ich das irgendwie ändern oder muss ich mir dann selbst so einen Baustein erstellen ??
Oder lass es mich anders formulieren … :

Wenn ich ein neues Objekt einfüge, dann kann ich es als Funktionsblock festlegen. Wie kann ich diesen Funktionsblock dann als Vorlage benutzen und in den Programmen einsetzen?

edit
Kann eine -842 die Variablen nicht als PERSISTENT speichern?
Ich bekomme die Meldung: Das Attribut ‚PERSISTENT‘ wird vom Zielsystem nicht unterstützt

Gruß
Jens

Hallo Jens,

richtig ist das der oder die 750-842 nach meinem Kenntnisstand keine persistenten Variablen unterstützt, damit wird Deine dauerhafte Speicherung bei Download einer neuen Applikation nicht möglich sein. Einer Retain Speicherung steht allerdings nichts im Weg.
Falls Du persistent haben möchtest, müsstest Du aufrüsten auf 750-841 oder 871/881.

Hallo Leute,

Die Beiträge hier sind zwar schon etwas älter, aber ich habe paar Fragen zum Thema s0 über WAGO DI.

Ich habe eine WAGO 750-880 und habe nach der Anleitung hier mein Stromzähler an die WAGO angeschlossen und Inbetriebgenommen. Ich bekomme alle werte. Kurz gesagt: „Es funktuniert“.

Jetzt meine Fragen:
1.Wenn ich den verbraucher abschalte, bekomme ich den letzten gemessenen wert angezeit. Damit meine ich, wenn zb. der Toaster ca.800 Watt zieht und nach ca.10sec abschaltet steht die anzeige auf 800 Watt und geht nicht auf 0 Watt.

2.„Taskkonfiguration“ Wenn ich ein Task „Zyklisch“ erstelle, funktuniert alles. Wenn ich aber auf „Ereignisgesteuert“ oder „Freilaufend“ einstelle, bekomme ich keine impulse mehr. Ich binn bis jetzt nicht schlauer geworden was besser ist! „Zyklisch, Freilaufend, Ereignisgesteuert“.

Ich hoffe Ihr könnt mir helfen.

Gruß

PS: Binn noch ein ziemlicher Anfänger :frowning: