Autor Thema: Betriebsstunden mit RTC  (Gelesen 10197 mal)

Offline richardwith

  • Newbie
  • *
  • Beiträge: 10
Betriebsstunden mit RTC
« am: März 28, 2007, 11:24:33 Vormittag »
Hallo!

Ich habe ein kleines (Anfänger?)-Problem.

Ich möchte die Zeit (Betriebsstunden) zählen, solange ein Ausgang gesetzt ist. Wenn ich den Ausgang am RTC auf EN lege, dann zählt dieser prima, sobald ich aber den Ausgang auf 0 setze wird der Stundenzähler zurück gesetzt.

Welche Lösung gibt es da?

Danke!

Grüße
Frank

P.S. Das Easy-Control Starter-Kit finde ich nicht gerade "gelungen". Zu einem Starterset gehört meiner Meinung nach mehr Infomaterial für Einsteiger. Ich bin "Wiedereinsteiger" (habe mal auf der SUCOSOFT mit PS3 gelernt)  und hab so die Kiste zum laufen gebracht, aber ich bin der Meinung, dass ein richtiger Einsteiger so seine Probleme hat - trotz Moeller-Trainingscenter und Online-Hilfe  oder sehe ich das falsch?




Offline DieterB

  • Full Member
  • ***
  • Beiträge: 119
Re: Betriebsstunden mit RTC
« Antwort #1 am: März 28, 2007, 14:51:31 Nachmittag »
Hallo Frank,

um einen Betriebsstundenzähler zu realisieren ist der RTC nicht der richtige Baustein. Es gibt in der Librarie "easy800_d.lib" einen fertigen Funktionsbaustein (OT) der diese Funktion übernimmt. Er zählt, solange er aktiviert ist, die Minuten. Er benötigt als VAR_IN_OUT Parameter   "udiMinuteCounter"  eine Variable von Typ UDINT. in dieser Variablen werden die Minuten abgelegt. Diese Variable muss als VAR RETAIN deklariert werden, da sie sonst bei jedem RESET (z.B. bei Power-On) wieder auf 0 gesetzt wird.
Einen Haken gibt's aber noch: Retain Variablen werden bei RESET-KALT gelöscht.

P.S. Das Easy-Control Starter-Kit finde ich nicht gerade "gelungen". Zu einem Starterset gehört meiner Meinung nach mehr Infomaterial für Einsteiger. Ich bin "Wiedereinsteiger" (habe mal auf der SUCOSOFT mit PS3 gelernt)  und hab so die Kiste zum laufen gebracht, aber ich bin der Meinung, dass ein richtiger Einsteiger so seine Probleme hat - trotz Moeller-Trainingscenter und Online-Hilfe  oder sehe ich das falsch?

Du hast schon Recht, für einen Einsteiger ist es schwierig, die ganzen Informationen zu finden. Es ist meiner Meinung aber auch unmöglich, alles detailliert in irgendwelchen Handbüchern zu beschreiben, zumal ich die Erfahrung gemacht habe, das die wenigsten Anwender sich überhaupt die Mühe machen ein Handbuch zu lesen.

Das Trainingscenter und das Handbuch können hier nur eine kleine Hilfe sein. 
Die Kunst ist, zu wissen wo man die benötigten Infos findet, aber da warst du hier im Forum ja schonmal an der richtigen Stelle.

Viele Grüße
Dieter

Offline richardwith

  • Newbie
  • *
  • Beiträge: 10
Re: Betriebsstunden mit RTC
« Antwort #2 am: März 28, 2007, 15:30:44 Nachmittag »
Hallo Dieter,

danke für die schnelle Antwort!

Woher bekomme ich die easy800_d.lib?

Ich habe eine easy Control und CoDeSys.

Danke!

Grüße
Frank

Offline DieterB

  • Full Member
  • ***
  • Beiträge: 119
Re: Betriebsstunden mit RTC
« Antwort #3 am: März 28, 2007, 18:47:56 Nachmittag »
Hallo Frank,

die müsste eigentlich schon Bestandteil deiner easySoft CoDeSys sein.

Ansonsten musst Du das letzte Update runterladen und installieren.

ftp://ftp.moeller.net/AUTOMATION/DOWNLOAD/SOFTWARE_UPDATES/EASYSOFT_CODESYS/V2.3.5/

oder schau mal unter "Downloadbereich easyControl" da gibt's sie auch.

Viele Grüße
Dieter
« Letzte Änderung: März 28, 2007, 18:51:28 Nachmittag von DieterB »

Offline richardwith

  • Newbie
  • *
  • Beiträge: 10
Re: Betriebsstunden mit RTC
« Antwort #4 am: März 29, 2007, 08:54:49 Vormittag »
Hallo Dieter,

vielen Dank - die easy800_d.lib war nach dem Update vorhanden.

Inzwischen zählt der OT ....

Was mir nicht ganz klar ist:

Was ist I1, QV, Q1?
Wo kann man die Fuktionen nachlesen?
Die "Beschreibung" in der Bibliotheksverwaltung finde ich nicht so hilfreich.
Bei moeller habe ich im Inet nur die Beschreibung der standard.lib gefunden.

Danke!

Viele Grüße
Frank

Offline DieterB

  • Full Member
  • ***
  • Beiträge: 119
Re: Betriebsstunden mit RTC
« Antwort #5 am: März 29, 2007, 12:38:28 Nachmittag »
Hallo Frank,
die Bausteine der easy800-Lib stammen ursprünglich aus der easy800. Die Beschreibung findest du daher im Handbuch der easy800.

http://www.moeller.net/de/industry/switchgear/switch_control/easy/download.jsp

Gruß
Dieter
« Letzte Änderung: März 29, 2007, 12:44:11 Nachmittag von DieterB »

Offline richardwith

  • Newbie
  • *
  • Beiträge: 10
Re: Betriebsstunden mit RTC
« Antwort #6 am: März 29, 2007, 16:30:20 Nachmittag »
Hallo!

Muss mich leider noch mal melden ...

Was ist hier falsch - es kommt die Meldung, dass:

VAR_IN_OUT in Top-Level-Baustein nicht erlaubt, wenn keine Taskkonfiguration vorhanden ist.

----------------------------------------------
PROGRAM PLC_PRG
VAR
   Betriebsstunden: OT;
   Ausgang_Q1 AT %QX0.0: BOOL;
END_VAR
VAR_OUTPUT
   Ausgang_QV: UDINT;
END_VAR
VAR_IN_OUT RETAIN
   Minutenzaehler: UDINT;
END_VAR
VAR_INPUT
   Eingang_RE AT %IX0.0: BOOL;
   Eingang_EN AT %IX0.4: BOOL;
   SOLL_I1: UDINT;
END_VAR
----------------------------------------------


Danke!

Grüße
Frank

Offline DieterB

  • Full Member
  • ***
  • Beiträge: 119
Re: Betriebsstunden mit RTC
« Antwort #7 am: März 29, 2007, 18:10:05 Nachmittag »
Hallo Frank,

hier sind mehrere Punkte nicht OK.

Das Program "PLC_PRG", wie eigentlich auch jeder andere Baustein vom Typ "PROGRAM", hat
normalerweise keine Variablen vom Typ VAR_INPUT, VAR_OUTPUT und VAR_IN_OUT.
Diese Variablen verwendet man in Funktionsbausteinen bzw. Funktionen.

VAR_INPUT -> Eingangsparameter eines Bausteins / Funktion, der Wert der Variablen wird übergeben.

VAR_OUTPUT -> Ausgangsvariablen eines Bausteins, der Wert der Variablen wird übergeben.

VAR_IN_OUT -> Variable die als Referenz (Zeiger auf die eigentliche Variable) übergeben wird.
zB. die Variable "Minutenzähler" liegt eigentlich im Speicherbereich von  PLC_PRG, dem OT-Baustein wird über den VAR_IN_OUT Parameter die Adresse der Variablen übergeben, und er kann sowohl lesend als auch schreibend auf die Variable zugreifen. 

Der Deklarationsteil muss so aussehen:

PROGRAM PLC_PRG
VAR
   Betriebsstunden: OT;
   Ausgang_Q1 AT %QX0.0: BOOL;
   Ausgang_QV: UDINT;
   Eingang_RE AT %IX0.0: BOOL;
   Eingang_EN AT %IX0.4: BOOL;
   SOLL_I1: UDINT;
END_VAR

VAR RETAIN
   Minutenzaehler: UDINT;
END_VAR


Der Programmteil sieht dann so aus:

Betriebsstunden(
   EN:= Eingang_EN ,
   I1:= SOLL_I1,
   RE:= Eingang_RE,
   udiMinuteCounter:=Minutenzaehler ,
   Q1=>Ausgang_Q1 ,
   QV=>Ausgang_QV );

Ich hoffe das war einigermassen verständlich...  ??? 

Viele Grüße
Dieter
 

Offline richardwith

  • Newbie
  • *
  • Beiträge: 10
Re: Betriebsstunden mit RTC
« Antwort #8 am: März 30, 2007, 10:48:20 Vormittag »
Hallo Dieter,

vielen Dank für Deine Antworten - ich hoffe ich nerve nicht zu sehr  ;)
Auf VAR_IN_OUT bin ich nur gekommen, da Du das oben erwähnt hast und auch in dem Beispiel in der Bibliothek aufgeführt war.

2 Dinge habe ich noch:

1.
Laut Anleitung ist es doch so, dass wenn der Ausgang QV größer oder gleich I1 ist, der Ausgang Q1 geschaltet wird - ich hoffe, ich habe das so richtig verstanden. Wie geht man nun mit I1 und QV um? Mit einen Doppelklick auf I1 kann ich eine Zahl eingeben und diese dann mit STRG-F7 schreiben. Wenn ich das selbe bei QV mache, dann steht am Ende wieder die 0 da - was mache ich da falsch?
siehe Bild - warum erscheinhen bei udiMinuteCounter 3 Fragezeichen?



2.
Bei der easy800 Anleitung steht, dass der Betriebsstundenzähler auf die Minute genau arbeitet, und wenn innerhalb einer Minute die Freigabe abgesteuert wird, dass dann der Sekundenwert verloren geht.

D.h. wenn ich nun einen Ausgang als EN auf den Betriebstundenzähler lege, damit ich erfahre wie lange z.B. eine Pumpe gelaufen ist, dann bekomme ich nur ein Ergebnis wenn die Pumpe länger als 60 Sekunden läuft - zumindest konnte ich das so nachvollziehen da ich einen Ausgang für nur max. 50 Sekunden gesetzt hatte. So gesehen ist der OT für mich als Betriebsstundenzähler unbrauchbar - gibt es dann eine andere Lösung?

Vielen Dank noch mal!!!

Viele Grüße
Frank



Offline DieterB

  • Full Member
  • ***
  • Beiträge: 119
Re: Betriebsstunden mit RTC
« Antwort #9 am: März 30, 2007, 20:56:03 Nachmittag »
Hallo Frank,

hier sind noch ein paar Infos zu deinen Fragen.

Laut Anleitung ist es doch so, dass wenn der Ausgang QV größer oder gleich I1 ist, der Ausgang Q1 geschaltet wird - ich hoffe, ich habe das so richtig verstanden.

Ja, das ist richtig. Man könnte das z.B. dazu verwenden, um nach einer bestimmten Anzahl Betriebsstunden auf eine anstehende Wartung hinzuweisen. (I1 = 6000 (Minuten)  -> Q1 wird nach 100 Betriebsstunden eingeschaltet)


Mit einen Doppelklick auf I1 kann ich eine Zahl eingeben und diese dann mit STRG-F7 schreiben. Wenn ich das selbe bei QV mache, dann steht am Ende wieder die 0 da - was mache ich da falsch?
siehe Bild - warum erscheinhen bei udiMinuteCounter 3 Fragezeichen?

Mit der Tastenkombination STRG-F7 bzw. F7 kann man Variablen des Programms zwangsweise auf einen bestimmten Wert setzen.  Während man mit STRG-F7 die Variable nur für einen Programmzyklus setzt, wird bei der Betätigung von F7 (ohne STRG) der Wert dauerhaft gesetzt.

Wenn du das bei den Variablen I1 und QV machst, gibt es dabei folgendes zu Beachten:
I1 ist ein Eingang des FBs. Wenn I1 nicht per Programm zugewiesen wird, bleibt der Wert, der eingegeben wurde dort gespeichert bis ein neuer Wert eingetragen wird, bzw. ein Reset des Programms durchgeführt wird.

QV ist ein Ausgang des FBs. Bei jeder Ausführung des Bausteins werden seine Ausgänge am Bearbeitungsende gesetzt. Dabei wird ein mit STRG-F7 oder F7 gesetzter Wert wieder überschrieben.

Die 3 ? werden angezeigt, wenn die Variable des Bausteins in der Zustangsanzeige aufgeklappt wird. Das ist
eine kleine Schwäche von easySoft CoDeSys. Variablen die als VAR_IN_OUT übergeben werden können nicht angezeigt werden. Die dem Baustein zugewiesene Variable wird aber richtig angezeigt.

Bei der easy800 Anleitung steht, dass der Betriebsstundenzähler auf die Minute genau arbeitet, und wenn innerhalb einer Minute die Freigabe abgesteuert wird, dass dann der Sekundenwert verloren geht.

Das ist leider so. QT arbeitet mit einer minimalen Auflösung von 1 Minute. Die Anzeige von Betriebssekunden ist nicht vorgesehen. Wenn die Auflösung von QT nicht ausreichend ist, bleibt dir nur die Möglichkeit selbst einen maßgeschneiderten Funktionsbaustein zu schreiben. Versuchs einfach mal. QT verwendet als Zeitbasis einen einfachen TON - Timer. Der hat eine Auflösung von 1ms.

Viele Grüße
Dieter

Offline richardwith

  • Newbie
  • *
  • Beiträge: 10
Re: Betriebsstunden mit RTC
« Antwort #10 am: April 02, 2007, 07:52:50 Vormittag »
Hallo Dieter,

alles klar - vielen Dank für alle Antworten!!

Viele Grüße
Frank

AndréT

  • Gast
Re: Betriebsstunden mit RTC
« Antwort #11 am: Juli 30, 2007, 10:30:36 Vormittag »
Hallo,

hier ein kleines Beispiel in ST.
 - mit globaler Var für den Wartungsintervall z.B. 2000 Stunden
 - mit globalen Reset des Betriebsstundenzählers
 - wird der Wartungsintervall erreicht wird eine Led gesetzt

Bis zum nächsten mal
André