Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 4 von 4

Thema: Zählerwerte speichern

  1. #1
    Registriert seit
    12.12.2011
    Beiträge
    90
    Danke
    4
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich zähle die Impulse von unserem GAS Anschluss.

    Ipmuls = 0,01m³GAS

    Die Möchte ich folgt an zeigen.

    Vervrauch letzte Stund
    Verbrauch Heute
    Verbrauch Gerstern
    Verbrauch Woche
    Verbrauch Monat
    Verbrauch Jahr

    Das ganze sollte auch nach einem Rest wieder geladen werden.

    WAGO 750-880 mit SD Karte

    Gruß
    Geändert von mfreye (08.10.2016 um 20:59 Uhr)
    Zitieren Zitieren Zählerwerte speichern  

  2. #2
    Registriert seit
    13.12.2015
    Beiträge
    13
    Danke
    10
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo,
    hier ist eine Exportdatei mit einem Zählerbaustein. Ich hab ihn so modifiziert, dass er für deine Problemstellung passen könnte.
    Gruss
    MP47

    Code:
    (* @NESTEDCOMMENTS := 'Yes' *)
    (* @PATH := '' *)
    (* @OBJECTFLAGS := '0, 8' *)
    (* @SYMFILEFLAGS := '2048' *)
    FUNCTION_BLOCK MultiZaehler
    VAR_INPUT
     Impuls: BOOL; (*Zählimpuls - pos.Flanke wird gezählt*)
    END_VAR
    VAR_OUTPUT RETAIN PERSISTENT
     LetzteStundeZw: REAL; (*Zw = Zählerwert*)
      HeuteZw: REAL;
      GesternZw: REAL;
     WocheZw: REAL;
      MonatZw: REAL;
      JahrZw: REAL;
    END_VAR
    VAR
     AktuelleStundeZw: REAL;
     PFlanke: BOOL;
     FBSystZeit: CurTimeEx;
     SysZeit : SysTime64;
     SysZeitDat: SystemTimeDate;
     Stunde: UINT;  (*Stundenwert aus Systemzeit*)
     StundeAlt: UINT; (*Stundenwert beim letzten Zyklus*)
     WTag: UINT;  (*Wochentag aus Systemzeit*)
     Tag: UINT;   (*Tag (1..31) aus Systemzeit*)
     Monat : UINT;  (*Monat aus Systemzeit*)
    END_VAR
    (* @END_DECLARATION := '0' *)
    IF Impuls AND NOT PFlanke THEN (*Zählerwerte erhöhen*)
     AktuelleStundeZw := AktuelleStundeZw +0.01;
      HeuteZw := HeuteZw +0.01;
      WocheZw := WocheZw +0.01;
      MonatZw := MonatZw +0.01;
     JahrZw  := JahrZw +0.01;
    END_IF;
    PFlanke := Impuls; (*Merken, dass die positive Flanke schon gezählt wurde*)
    (* FBSystZeit(SystemTime:= SysZeit , TimeDate:= SysZeitDat ); *)
    Stunde := SysZeitDat.Hour;
    IF  StundeAlt <> Stunde THEN (*Stundenwechsel*)
     StundeAlt := Stunde;
     LetzteStundeZw := AktuelleStundeZw;
     AktuelleStundeZw := 0;
     IF Stunde = 1 THEN (*Neuer Tag*)
      GesternZw :=  HeuteZw;
      HeuteZw:=0;
      WTag := SysZeitDat.DayOfWeek; (*Wochentag 0=So, 6=Sa*)
      IF WTag = 1 THEN
       WocheZw := 0;  (*1=Montag: Wochenzähler Reset *)
       END_IF; (*Wochenwechsel*)
      Tag := SysZeitDat.Day;
      IF Tag = 1 THEN (*Neuer Monat*)
       MonatZw := 0;
       Monat := SysZeitDat.Month;
       IF Monat = 1 THEN JahrZw := 0; END_IF; (*Jahreswechsel*)
      END_IF;  (*Neuer Monat*)
     END_IF; (*Neuer Tag*)
    END_IF;  (*Stundenwechsel*)
    (* Komponente  Datentyp  Beschreibung
     
    dwLowMSecs   DWORD   Die Angabe der Echtzeit in Mikrosekunden erfolgt über ein Low DWORD + ein High DWORD, siehe entsprechend die Struktur SysTime64 
     
    dwHighMsec  DWORD 
     
    Year  UINT  Jahr, z.B. "2002"
     
    Month  UINT  Monat, z.B. "12"
     
    Day  UINT  Tag im Monat, z.B. "3"
     
    Hour  UINT  Stunden des laufenden Tages, z.B. "13"
     
    Minute  UINT  Minuten der laufenden Stunde, z.B. "43"
     
    Second  UINT  Sekunden der laufenden Minute, z.B. "15"
     
    Milliseconds  UINT  Millisekunden der laufenden Sekunde, z.B. "649" 
     
    DayOfWeek  UINT  Wochentag, z.B. "2" (Sonntag=0, Montag = 1...)
     *)
    END_FUNCTION_BLOCK

  3. Folgender Benutzer sagt Danke zu MP47 für den nützlichen Beitrag:

    mfreye (16.10.2016)

  4. #3
    Registriert seit
    05.04.2015
    Beiträge
    8
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo,

    sieh dir auch mal die "Oscat_basic_333" Bibliotheksammlung unter http://www.oscat.de an, ich verwende den Baustein "METER_STAT" für die Zählung der Impulse der Regemenge.
    Ich verwende diesen seit mehreren Monaten auf einer WAGO 750-880 und habe schon einige "Reset" hinter mir. Es ist nachträglich möglich, selbst nach einem Reset Ursprung die Werte durch forcen der entsprechenden Variablen wieder herzustellen. Voraussetzung ist natürlich, dir ist noch bekannt was urprünglich angezeigt wurde.
    Wenn du die entsprechenden Variablen "RETAIN PERSISTENT" setzt, so sind alle Werte nach einem Reset (Spannungsausfall) noch vorhanden.

    Gruß Reinhard Wechsler

  5. Folgender Benutzer sagt Danke zu Rewe2000 für den nützlichen Beitrag:

    mfreye (16.10.2016)

  6. #4
    mfreye ist offline Benutzer
    Themenstarter
    Registriert seit
    12.12.2011
    Beiträge
    90
    Danke
    4
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo und Danke für die Antworten.

    Ich habe es jetzt ähnlich gemacht wieMP47. Siehe Exportdatei.

    Evtl. kann jemand damit ja etwas anfangen. Geht bestimmt noch besser und schöner
    Angehängte Dateien Angehängte Dateien

Ähnliche Themen

  1. Zählerwerte einstellen bei S5 101U
    Von Jochen123 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 11.02.2013, 16:16
  2. Mehrere Zählerwerte in DB speichern
    Von bastler im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 21.02.2010, 18:49
  3. Zählerwerte digital kodiert ausgeben S7 312
    Von Christian_Paetzold im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 22.09.2008, 16:54
  4. Zählerwerte richtig setzen
    Von CheGuevara83 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 18.04.2007, 07:43
  5. Antworten: 6
    Letzter Beitrag: 20.04.2006, 20:47

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •