Step 7 RUNTIME: Laufzeitmessung

RvE

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Ich habe mehrere 8 Motoren welche mit 3 Funktionsbausteinen gesteuert werden. Für jeden Motor soll die Laufzeit gemessen werden.
Ich bin auf die Funktion "RUNTIME: Laufzeitmessung" gestoßen aber hätte da noch ein paar Fragen, da ich im Moment nichts zum Testen habe...

1. Wie genau wird das Ergebnis gespeichert? Ich will zumindest auch dass die Minuten oder optional auch die Sekunden angezeigt werden.

2. Kann ich die Funktion in einer "IF" Bedingung verwenden oder muss die Funktion in jeden Programmdurchlauf mindestens 1 mal aufgerufen werden? Denn dann würde ich das im Main in FUP machen, ansonsten würde ich das so machen:
"IF motorAn THEN
RUNTIME(...);
END_IF;

3. In FUP habe ich 4 Ein-/ Ausgänge. Ich weiß aber nicht was der Unterschied zwischen "MEM" und "RET_VAL" ist?
 
Zuletzt bearbeitet:
Hallo ,
ich bin mir nicht sicher das du da den richtigen Baustein rausgesucht hast.
Mit Runtime wird die Laufzeit des PLC Programms oder eines einzelnen Baustein gemessen. Aber nicht die Laufzeit von irgendwelchen Motoren.

wenn du F1 im TIA betätigst kommt auch eine Hilfe zu Runtime .
 
Ja genau das mein ich.
Wieso habe ich "If-Schleife" geschrieben? :icon_confused: Ich bearbeite das sofort.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok danke. Ich glaube das schaff ich ^^
Dann benötige ich also nur eine Funktion (welche bei laufenden Motor aufgerufen wird), welcher ich einen Parameter übergebe (= Zeit in 100ms als DINT (ist genauer als 1 Sekunde, da meine Station immer nur wenige Sekunden läuft)) und auf dieser soll die Funktion dann auch schreiben indem sie einen Timer (TON oder Impuls?) setzt, welcher nach 100ms den Eingangsparameter inkrementiert... Wenn ich das richtig verstanden habe.
Aber funktioniert das dann auch wenn die Funktion mehrmals zur selben Zeit aufgerufen wird?
 
Du erzeugst Dir einen Takt von 100ms oder nimmst den 10Hz-Taktmerker der CPU. Du schreibst Dir eine Funktion, welche alle 100ms aufgerufen wird, oder der Du den 100ms-Takt übergibst. Weiter übergibst Du einen Bool, ob das Betriebsmittel läuft, oder rufst nur auf, wenn das Betriebsmittel läuft. Über IN_OUT übergibst Du einen DINT aus einem globalen DB "Betriebsstundenzaehler", den die Funktion bei steigender Flanke des Taktes und Betriebsmittel_aktiv inkrementiert. Der DINT ist Dein Betriebsstundenzähler in Einheiten von 100ms. Überschlage mal, ob ein DINT für Dich ausreicht (ca. 7 Jahre), falls nicht, dann mit einem weiteren DINT oder INT kaskadieren. Die Funktion rufst Du für jedes Betriebsmittel mit eigenem Zähler-DINT einmal im OB1 auf.

PS: Wenn Du den Betriebsstundenzähler ganz genau brauchst, dann kannst Du auch #OB1_PREV_CYCLE (in ms) addieren.

Harald
 
Zuletzt bearbeitet:
Zurück
Oben