Autor Thema: Stromzählerauswertung S0-Bus  (Gelesen 21351 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline TMHEINE

  • Newbie
  • *
  • Beiträge: 10
  • Anfänger
    • Profil anzeigen
    • E-Mail
Stromzählerauswertung S0-Bus
« am: 16. März 2016, 06:58:11 »
Gibt es jemand, der im S7 schon eine Stromzählerauswertung macht?
Habe hier mehrere Stromzähler mit S0-Bus (Halbleiter-Schalter mit z.B. 400 imp/kWh).
Zur Zeit mache ich die Auswertung mit einem Zähler, welche die Impulse/Minute zählt und daraus die Energie entsprechend berechnet. Ist leider etwas ungenau.
Schöner wäre es, wenn im Niedrig-Energie-Bereich nicht die Impulse, sondern der Abstand der Impulse zueinander ausgewertet werden. Im Hoch-Energie-Bereich sollten dann die Impulse gezählt werden. Die Umschaltung von Impuls-Abstand auf Impuls-Anzahl sollte natürlich automatisch erfolgen.
Hat jemand sowas schon? Gibt´s sowas in der Bibliothek? Kann jemand das entwickeln?

Danke vorab

Gruß

TMHEINE

Offline shrimps

  • Jr. Member
  • **
  • Beiträge: 75
    • Profil anzeigen
    • E-Mail
Re: Stromzählerauswertung S0-Bus
« Antwort #1 am: 16. März 2016, 12:29:24 »
Hi,
habe mir vor kurzem einen für meinen Minizähler gebaut, allerdings in ST fürTwincat.

Sollte aber sehr leicht zu konvertieren sein...

Gruss
Shrimps

FUNCTION_BLOCK _fbStromzaehler
(* Einen S0-Impuls eines Strommessers lesen:
Liefert 1000 Impulse / KWh, 1Imp= 1Wh *)
VAR_INPUT
bSignal : BOOL; (* Unser S0-Impuls *)
END_VAR
VAR_OUTPUT
rLeistung : REAL; (* Die Momentanleistung zw. 2 Messungen *)
dVerbrauch : DWORD; (* Saldierter Verbrauch in Wh *)
dSignalPeriode : DWORD; (* Zeit in ms zwischen zwei Impulsen *)
dSignalDauer : DWORD; (* Laufzeit des Impulses *)
END_VAR
VAR
tx : TIME; (* Aktuelle Systemzeit in ms *)
tStart : TIME; (* Impulsbeginn *)
tEnde1 : TIME; (* Ende einer Periode *)
tEnde2 : TIME; (* Ende eine einzelnen Impulses *)
bInit : BOOL := TRUE; (* Aller Anfang *)
bFlanke : BOOL; (* Flankenmerker als Ersatz für RTRIG *)
END_VAR
(* @END_DECLARATION := '0' *)
tx := TIME(); (* Zeit merken *)

IF bInit  THEN (* Am Anfang: *)
tStart := tx; (* Startzeit einmalig Init *)
bInit := FALSE; (* Init Fertig ! *)
END_IF

IF bSignal AND NOT bFlanke THEN (* Wenn Signal kommt *)

dVerbrauch := dVerbrauch +1; (* Summenverbrauch *)

tEnde1 := tx; (* Periodendauer-Endezeit merken *)
dSignalPeriode := TIME_TO_DWORD(tEnde1) - TIME_TO_DWORD(tStart); (* Delta bilden *)
rLeistung := 3600000.0 / dSignalPeriode; (* Leistung auf WattStunden skalieren *)
rLeistung := DINT_TO_REAL(REAL_TO_DINT(rLeistung * 10)) / 10; (* 1 Stelle nach dem Komma runden *)
tStart := tx; (* Neue Startzeit merken *)

END_IF

IF NOT bSignal AND bFlanke THEN (* Signal fällt ab *)
tEnde2 := tx; (* Endezeit merken *)
dSignalDauer := TIME_TO_DWORD(tEnde2) - TIME_TO_DWORD(tStart);
END_IF

bFlanke := bSignal; (* Merker für Signalflanke *)

END_FUNCTION_BLOCK


Offline TMHEINE

  • Newbie
  • *
  • Beiträge: 10
  • Anfänger
    • Profil anzeigen
    • E-Mail
Re: Stromzählerauswertung S0-Bus
« Antwort #2 am: 11. April 2016, 12:27:40 »
Hallo,

soweit ich das erkannt habe, wertest du die Zeit zwischen den Impulsen aus.
Das ergibt bei vielen Impulsen aber eine hohe Fehlerquote (zumindest auf Nicht-Echtzeit-Systemen).
Ich werte es aktuell mit Impulszählern aus, was im hohen Impuls-Bereich genauer ist.
Bei niedrigem Verbrauch und wenig impulsen wäre aber das Impuls-Pausenverhältnis besser und genauer.

Schön wäre es, wenn es einen Baustein geben würde, der beides vereint.
Also bei wenig Verbrauch die Leistung über das Impuls-Pausen-Verhältnis zur rechnen, und bei höherem Verbrauch über die Impulsanzahl/Zeiteinheit.

Daher meine Anfrage...

GRuß

TMHEINE

Offline tobiaslochner

  • Newbie
  • *
  • Beiträge: 4
    • Profil anzeigen
Re: Stromzählerauswertung S0-Bus
« Antwort #3 am: 17. April 2016, 02:14:18 »
Den Baustein gibt es direkt von Wago. Er heißt "Fb_ImpulseCounter". Dieser ist zu finden in der Lib Building_HVAC_01.lib.

Viel Erfolg damit.

Offline shrimps

  • Jr. Member
  • **
  • Beiträge: 75
    • Profil anzeigen
    • E-Mail
Re: Stromzählerauswertung S0-Bus
« Antwort #4 am: 17. April 2016, 20:04:32 »
Hallo,
wäre ja prima, wenn der eine oder andere das zusätzlich implemtiert.
Bei mir kam nur die Impulszeitmessung zum tragen, da mein Testsystem viel zu wenig Impulse pro Minute bringt,
ggf. alle paar Minuten einen Impuls...

Gerne Feedback

PS: Wago-Lib gut und schön aber wenn man (ich) kein Wago hat ist es wenig prickelnd

LG
Shrimps



Offline mattsches

  • Sr. Member
  • ****
  • Beiträge: 268
    • Profil anzeigen
Re: Stromzählerauswertung S0-Bus
« Antwort #7 am: 22. April 2016, 12:17:22 »
Das wird davon abhängen, ob hardwarespezifische Funktionen genutzt werden. Sobald Netzwerkfunktionen mit im Spiel sind, gehe ich nicht davon aus. Aber ein Zählerbaustein? Warum nicht.

Offline ThorPrez

  • Newbie
  • *
  • Beiträge: 30
    • Profil anzeigen
Re: Stromzählerauswertung S0-Bus
« Antwort #8 am: 06. Mai 2020, 17:40:48 »
Hallo.

Ich muss dieses Thema nochmal aufrollen, da es mich aktuell beschäftigt.
In den Bibliotheken gibt´s ja nix dafür und das o.g. Beispiel von shrimps arbeitet nicht zuverlässig.
Da ist der Verbrauchszähler "Meter" genauer, aber ich würde gerne S0-Signale auswerten.