betriebszeit anzeigen

Kralle

Member
Beiträge
10
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
kann mir jemand einen baustein und ggf. bibliothek für CoDeSyS nennen, mit der man die betriebszeit messen kann?
es sollte einen BOOL eingang haben und einen TIME eingang. die zeit soll stoppen, wenn am BOOL eingang 2 sekunden lang kein signal mehr ankommt. wenn wieder ein BOOL signal ankommt, soll die zeit weiter laufen (nicht wieder von 0 anfangen). ich schreibe das Programm mit CFC. und bitte sagt nicht, dass ich das selber schreiben soll, weil ich mich erst ein paar wochen mit dem programmieren einer SPS auseinander setze. und dieses über mein können hinaus geht.
 

Nitrozin

Well-known member
Beiträge
70
Punkte Reaktionen
6
Hi,

schau mal auf die Seite http://www.oscat.de, die Bibliothek ist kostenlos und hat mit Sicherheit einen Baustein den du verwenden kannst.
Soweit ich mich erinnere gibts da einen Baustein 'ontime', der sollte für dein Problem der richtige sein.
Gruß Volker
 
OP
K

Kralle

Member
Beiträge
10
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
danke für die schnelle antwort. die bibliothek hab ich mir schon runtergeladen und den baustein ausprobiert, jedoch gibt der baustein ein REAL signal am output aus. und irgendwie funktioniert der converter "real_to_time" nicht. oder gibts irgendeinen anderen weg, wie ich aus dem REAL signal ein TIME signal machen kann?
 

Nitrozin

Well-known member
Beiträge
70
Punkte Reaktionen
6
Du kannst ja den Realwert in Stunden und Minuten umrechnen,
dann das ganze in einen String umwandeln und mit der OSCAT-Funktion FSTRING_TO_DT in Zeitformat (DT) umwandeln.

Gruß Volker
 

Nitrozin

Well-known member
Beiträge
70
Punkte Reaktionen
6
Zuviel Werbung?
->Hier kostenlos registrieren
Moin,

mal eben aus der Hüfte geschossen sollte es so gehen.

Code:
(* Stunden aus Real-Zahl extrahieren *)
strStunden := INT_TO_STRING(TRUNC(Zeitwert_Real));
(* Minuten aus Real-Zahl Rest extrahieren *)
strMinuten := INT_TO_STRING(TRUNC((Zeitwert_Real - TRUNC(Zeitwert_Real)) * 60));
(* String zusammenbauen *)
strTime := CONCAT(CONCAT(strStunden,':'),strMinuten);
(* in DT wandeln *)
MyTime := FSTRING_TO_DT(strTime,'#h:#m');

Gruß Volker
 

Nitrozin

Well-known member
Beiträge
70
Punkte Reaktionen
6
Moin,

Bei Verwendung des ONTIME Bausteins nicht, da dieser ja nur Stunden und Minuten ausgibt. Wenn du einen Betriebstundenzähler hast, der auch die Sekunden auswirft, dann kannst du mit der FSTRING_TO_DT Funktion auch die Sekunden mitkonvertieren. Das steht aber alles auch in der doch sehr guten Hilfe zur OSCAT Bibliothek.

Gruß Volker
 

hugo

Well-known member
Beiträge
197
Punkte Reaktionen
33
Zuviel Werbung?
->Hier kostenlos registrieren
der ontime baustein hat vor release 3 stunden in real ausgegeben. die auflösung war dabei 7 stellen exakt.
das bedeutet das bei 10 stunden betriebszeit noch millisekunden aufgelöst wurden, abewr bei 2 monaten nur noch sekunden usw.

seit der release 3 wurde dieser baustein modifiziert, er gibt nun die betriebszeit in sekunden aus als 32 bit wert.

intern zählt er aber millisekunden. der eingang spricht auch auf millisekunden an.

bei der auflösung von 1 sekunde am ausgang kann der baustein bis zu 136 jahren die betriebszeit ermitteln
 
OP
K

Kralle

Member
Beiträge
10
Punkte Reaktionen
0
hab das mit dem baustein nun mal ausprobiert... der kann mir zwar die umdrehungen anzeigen, aber beim second ausgang bleibt alles bei 0
 

volker

Supermoderator
Teammitglied
Beiträge
5.471
Punkte Reaktionen
935
zu codesys kann ich dir leider nichts sagen.
aber grundsätzlich lässt sich das leicht selbst bauen.

s7-scl
Code:
FUNCTION FC100: void

VAR_INPUT
  IN : BOOL;
  RST : BOOL := FALSE;
END_VAR
VAR_IN_OUT
    SECONDS : DINT;
END_VAR    

BEGIN

seconds := seconds + 1;

IF RST THEN
    SECONDS := 0;
END_IF;

END_FUNCTION

dieser baustein muss 1 mal pro sekunde aufgerufen werden.

also z.b. über eine positiven flanke eines ton-timers
 
OP
K

Kralle

Member
Beiträge
10
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
ich habs endlich hinbekommen...
hab die alte version von oscat nochmal benutzt. dann mit dem ONTIME baustein wieder die zeit messen lassen und dann die REAL ausgabe mit dem HOUR_TO_TIME baustein konvertiert.

nächstes problem:

bei der ausgabe steht jetzt T# und dann die zeit. bekommt man das T# irgendwie weg? und am besten auch noch, dass der nur die sekunden, minuten und stunden anzeigt?
 
Oben