Stromzähler mit Wago auslesen

@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:

Hallo,

Das hängt damit zusammen das nur die Zeit zwischen zwei Impulsen gemessen wird.
Die Leistung wird aus der gemessenen Zeit und der vorgegebenen Arbeit pro Impuls berechnet, ist halt keine Messung…

Freilaufend sollte eigentlich auch gehen, aber ich würde die Auswertung in einem Zyklischen Task ausführen.
Mit welchem Ereignisse löst Du den den Task aus?

Gruß

Frank

Hallo Frank,

das mit den zyklen war mir schon klar. Ich dachte vielleicht gibt es eine möglichkeit die Anzeige zu nullen.

Ich lösen den Ereignis mit dem DI aus. Mit dem Zyklischen Task funktuniert das.
Welche zeit muss ich da einstellen?

Gruß

Hallo,

das mit dem nullen wirt nichts, außer Du nimmst einen Zähler mit einer Bus-Schnittstelle…

Die Zykluszeit muß auf jeden Fall kleiner wie die Abstände zwischen den Impulsen sein.

Sind das deine ersten Gehversuche mit einer SPS?

Gruß

Frank

Hi,

danke für die Info’s Frank.

Sind das deine ersten Gehversuche mit einer SPS?

Binn noch ein Anfänger :rolleyes:

Gruß

Klar geht das mit dem 0en: Wenn Du 800W hast weißt Du ja, in wievielen Sekunden der nächste Impuls kommen muss. Und wenn der eben nicht kommt, kann man auf 0 stellen.

Hallo Jens,

wie genau hast du die Merker in der SPS eingerichtet? Ich habe mir die hier im Forum verfügbare Liste in die SPS geladen. Ich schaffe es aber leider nicht vernünftige Werte in IPS rein zu bekommen. Welche Merker hast du verwendet? DWORD, REAL etc. und müssen die Werte in der SPS noch umgewandelt werden? Ich stehe da gerade voll auf dem Schlauch.

schöne Grüße
Stephan

Kurze Frage noch zum Wago Baustein FBImpulseCounter

Wie kommt ihr auf die Werte rUnitPerPulse und wBaseTimePeriod

Ich habe einen S0 Zähler der 1000 Impulse pro Kilowatt liefert. Somit würde ich doch 0.001 in rUnitPerPulse und 3600 in wBaseTimePeriod eintragen.

Sehe ich das falsch?

Gruß
Georg