Zeitmessung (#TIMER)

Der NC-Befehl #TIMER bietet die Möglichkeit der Zeitmessung im NC-Programm. Die erfasste Zeit wird in der Einheit Millisekunden (ms) dargestellt.

Achtung

attention

Die Timerzähler stehen kanalübergreifend (global) zur Verfügung. Dies ermöglicht z.B. die Messung von Signallaufzeiten zwischen Kanälen.

Bei parallelen unabhängigen Zeitmessungen in verschiedenen Kanälen ist darauf zu achten, unterschiedliche Zählernummern (ID's) zu verwenden. Ansonsten beeinflussen sich die Messungen gegenseitig!

Syntax:

#TIMER <Aktion> [<Modus>] [ID=..]

<Aktion>

Bestimmt die Aktion mit dem bezeichneten Zähler (ID).

START: Starten des Zählers (ID).

STOP: Stoppen des Zählers (ID).

READ: Auslesen des Zählers (ID).

Der Zählerstand wird gelatcht und in der zugeordneten V.G.TIMER[ID]-Variable in Millisekunden (ms) ab-gelegt.

CLEAR: Rücksetzen und Stoppen des Zählers (ID).

Die zugeordnete V.G.TIMER-Variable wird dabei nicht gelöscht sondern bleibt bis zu einer erneuten READ-Aktion des zugehörigen Zählers erhalten.

Achtung

attention

Mit der Timerfunktion können Zeiten bis maximal 1193 Stunden erfasst werden.

<Modus>

Synchronisationsart:

---: Zeitmessung asynchron zum Interpolator auf Decodier-Ebene (Grundeinstellung). Die Zeitmessung beginnt direkt nach der Decodierung.

SYN: Zeitmessung auf Interpolator-Ebene. Der bezeichnete Zähler wird synchron zu Bearbeitungsvorgängen der NC–Maschine gesetzt. Beim synchronen Lesen (<SYN>) im Interpolator wird die Decodierung unterbrochen, bis der Zählerstand auf Decodier-Ebene in die Timervariable übernommen worden ist.

Hinweis

notice

Zur Messung von Programmlaufzeiten müssen die Timer immer mit dem Schlüsselwort SYN verwendet werden.

ID=..

Zählernummer:

0...127: Es können maximal 128 kanalübergreifende Zähler programmiert werden. Pro Timerbefehl kann jedoch immer nur ein Zähler (ID) programmiert werden.

Programmierbeispiel

prg_example

Zeitmessung

:

#FILE NAME[ MSG="C:\timer.txt" ] Dateiname für Zeitprotokollierung

:

#TIMER START [ID=10]                 Zähler 10 (Decodier-Ebene) starten

#TIMER START SYN [ID11]              Zähler 11 (Interpolator-Ebene) starten

:

:

#TIMER READ [ID10]                   Zählerstand ablegen in V.G.TIMER[10]

#TIMER READ SYN [ID11]               Zählerstand ablegen in V.G.TIMER[11]

#MSG SAVE["T10 = %d",V.G.TIMER[10]]  Zählerstand in Datei protokollieren

#MSG SAVE["T11 = %d",V.G.TIMER[11]]  Zählerstand in Datei protokollieren

#TIMER STOP [ID10]                   Zähler 10 stoppen

#TIMER CLEAR [ID10]                  Zähler 10 zurücksetzen

:

:

#TIMER READ SYN [ID11]               Zählerstand ablegen in V.G.TIMER[11]

#MSG SAVE["T11 = %d",V.G.TIMER[11]]  Zählerstand in Datei protokollieren

:

:

#TIMER READ SYN [ID11]               Zählerstand ablegen in V.G.TIMER[11]

#MSG SAVE["T11 = %d",V.G.TIMER[11]]  Zählerstand in Datei protokollieren

:

:

#TIMER READ SYN [ID11]               Zählerstand ablegen in V.G.TIMER[11]

#MSG SAVE["T11 = %d",V.G.TIMER[11]]  Zählerstand in Datei protokollieren

#TIMER STOP SYN [ID11]               Zähler 11 stoppen

#TIMER CLEAR SYN [ID11]              Zähler 11 zurücksetzen

:

:

:

#TIMER START [ID=10, ID11]           Fehler, nur ein Zähler pro Timerbefehl

                                     erlaubt!

:

: