Autor Thema: einfacher Betriebsstundenzähler  (Gelesen 7303 mal)

Offline radar17892

  • Sr. Member
  • ****
  • Beiträge: 788
  • Think easy!
    • mollgruppe
einfacher Betriebsstundenzähler
« am: Januar 01, 2015, 13:03:30 Nachmittag »
Hallo,
heute möchte ich euch einen Betriebsstundenzähler vorstellen.
Er zählt sekundengenau auf über 127Jahre hoch ;) und gibt Stunden aus.
Einfach einen neuen FB in ST erstellen, Deklarations- und Programmteil hineinkopieren, E/A Variable erstellen, fertig. Die E/A Variable muss zB in der global_var persistent remanent deklariert werden.
Getestet auf einer XV100.

FUNCTION_BLOCK FB_C_Bh
(*
##################################################################################
Programmbeschreibung:
instanzierbarer Betriebsstundenzähler, Sekundengenau, Ausgabe in Stunden
Die E/A Variable Betrsec ist extern remanent persistent zu deklarieren
##################################################################################
Änderungsindex
Name:TL Datum: 30.11.14 Grund:   neu
##################################################################################
*)
VAR_INPUT
IN: BOOL; (*Betrieb*)
Takt: BOOL; (*1Hz Systemtakt*)
END_VAR
VAR_OUTPUT
Betrstd: UINT; (*Ausgabe Betriebsstunden*)
END_VAR
VAR
Flanke: R_TRIG; (*Erkennung Taktflanke*)
END_VAR
VAR_IN_OUT
Betrsec: UDINT; (*Ein/Ausgangsvariable Betriebssekunden*)
END_VAR

############################################

Flanke(CLK:= Takt, Q=> ); (*Erkennung Taktflanke*)
IF (IN AND Flanke.Q) THEN (*Sekunden hochzählen*)
Betrsec:= Betrsec + 1;
Betrstd:= (Betrsec / 3600);
END_IF;

have a lot of fun
Weil Einfach einfach Einfach ist!