Abgelaufene Zeit anzeigen

settelma

Level-1
Beiträge
356
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich bräucht mal wieder Hilfe.
Ich will mir eine Zeit am TP177A anzeigen lassen. Heißt ich will "messen" wie lange ich eine Taste am TP gedrückt halte.
Wenn ich die Taste loslasse soll die Zeit anhalten, wenn ich die Taste nochmal drücke soll die Zeit an der vorherigen Stelle weiterlaufen.
Die angezeigte Zeit will ich mit einer separaten Taste zurücksetzten.
Hat jemand ne Idee wie ich sowas machen könnte?

Vielen Dank

Gruß Markus
 
Hi,

ungefähr so würde ich das machen:

U Taste-Panel
U Sekundentakt
FP M20.0 // Flankenmerker
= M20.1 // Impuls
U M20.1
SPBNB Ende // wenn M20.1 = 0 dann nichts machen
L 1.0 //Sekunde
L DB20.DBD0 // DB als Beispiel
+R
T DB20.DBD0 // jede sekunde +1
U Reset-Panel
SPBNB Ende
L 0.0 // Reset-Wert
T DB20.DBD0
Ende: NOP 0

Das wars
Gruss
Move
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank für die Antwort.
Ich habs direkt mit nem Zähler und dem Taktmerker gemacht. In der Simulation funktioniert das auch.
Wenn ich das Programm aber auf die Steuerung spiele läuft die Zeit viel zu langsam ab. Kann das sein das
das mit dem Taktmerker zu tun hat. Ist die Steuerung zu langsam? Ich hab keine Ahnung.
 
Was für eine Zykluszeit hat dein Programm? Wo rufst du dein Programm auf (OB1/OB3x/OBxx)?
Welche Abtastzeit hast du im HMI für die Variable eingestellt?
 
Eine etwas aufwendigere Alternative wäre der SFC64(?) TIME_TCK heißt der glaub ich, hab länger nicht mehr mit Step7 gearbeitet.
Der liefert dir die Systemzeit seit Start in ms, dann Startzeit merken und dann nur noch Differenz bilden.
Oder du verwendest die vom OB1 bereitgestellte Zykluszeit, da brauchst nur hochrechnen ;).

@borromeus: Er braucht eine Auflösung von 0.1sek.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Zykluszeit kann ich gerade nicht sagen da ich nicht an der Anlage bin. Ich rufe das Programm im OB1 auf. Die Abtastzeit der Variable im HMI ist bei 500ms.

Das passt aber nicht zu Deiner Aussage, dass Du eine Genauigkeit im Zehntelbereich benötigst. Ggf. die Abtastrate auf 100ms stellen.
Trotzdem "muss" das auch so funktionieren. Taste auswerten, Flanke des Merkers (Bit 0) aus dem Taktmerkerbyte bilden und hochzählen. (Für eine korrekte Darstellung die Variable für die Zeitausgabe auch auf 100ms Abtastrate einstellen.) Wenn das nicht funktioniert, ist das Problem wonaders zu suchen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
0.01s ?
Viel Spass!
Halt ich für technisch nicht lösbar, da die Kommunikation zum TP das nicht hinbekommt.
In der SPS würde ich einen WeckOB verwenden und den auf die kleinste Zeit stellen.
Man kann dort den Zeitwert einfachst aufintegrieren oder eben bei Flanke ein die Systemzeit auslesen und bei Flanke aus ebenfalls und diese dann subtrahieren.
Das Integrieren wird m.E. ausreichen, weil das begrenzende Glied der Genauigkeit in der S7-TP-Kopplung liegt.
 
So ist es, ich brauche zehntel Sekunden. Das würde mir reichen.
Was mich wundert, wenn ich das ganze in der Simulation ausprobiere funktionierts, wenn ich das Programm aber auf
die Steuerung lade funktionierts nicht. Wenn ich z.B. die Taste 5 Sekunden halte, zeigt es mir im TP ca. 2,5 Sekunden an. Ich verwende eine S7 315. Das sollte doch für die Steuerung kein
Problem sein oder. Ich kenn mich da aber nicht so aus. Oder muss ich den FB in dem ich die Zähler habe nicht im OB1 aufrufen sodern in einem anderen OB?
 
Einen Zyklus von 100ms "sollte" die 315 selbst dann noch schaffen, wenn ein paar Codezeilen mehr darin stehen. Schau doch mal online auf den Baugruppenzustand der SPS. Dort findest Du Angaben zur Zykluszeit.
 
Ich meine die Zykluszeit war bei 80ms. Dann versteh ich aber nicht warum ich den komplett falschen Wert im TP angezeigt bekommen. In der Simulation gehts ja.
 
Zurück
Oben