F176_PulseOutput_Pass

Kreisinterpolation (Drei-Punkte-Verfahren)

Durch eine zweikanalige Pulsausgabe wird eine bogenförmige Verfahrstrecke erzeugt. Die Parameter für die Pulsausgabe werden in einem SDT festgelegt. Der Radius des Kreisbogens wird aus dem angegebenen Mittelpunkt und der Endposition berechnet. Die Pulse werden vom angegebenen Kanal ausgegeben, wenn der Kontrollmerker für diesen Kanal FALSE und die Ausführungsbedingung TRUE ist.

Parameter

Eingang

n_iPulseOutputChannel* (Dezimalkonstante)

Pulsausgabekanal: 0, 2

Ein-/Ausgang

s_dutDataTable (F176_PulseOutput_Pass_DUT)

Anfangsadresse des Bereiches, der die Datentabelle enthält

Anmerkungen

Verwenden Sie folgende, vordefinierte strukturierte Datentypen: F176_PulseOutput_Pass_DUT

Im SDT lassen sich folgende Parameter festlegen:

  • Steuercode

  • Resultierende Geschwindigkeit

  • Sollwert (x-Achse)

  • Sollwert (y-Achse)

  • Position auf Kreisbogen (x-Achse)

  • Position auf Kreisbogen (y-Achse)

Die folgenden Parameter für jede Achse werden bei der Befehlsausführung berechnet und im Speicherbereich für Rechenergebnisse des SDT gespeichert.

  • Radius

  • Mittelpunkt (x-Achse)

  • Mittelpunkt (y-Achse)

Merkmale der Pulsausgabe

(1)

Drehrichtung: von Kanal 0 (x-Achse) zu Kanal 2 ( y-Achse) (bei positiver Drehrichtung auf beiden Kanälen)

(2)

Drehrichtung: von Kanal 2 (y-Achse) zu Kanal 0 ( x-Achse) (bei positiver Drehrichtung auf beiden Kanälen)

Fv:

Resultierende Geschwindigkeit

O (Xo,Yo):

Mittelpunkt

Fx:

Geschwindigkeit (x-Achse)

S (Xs,Ys):

Istposition (Start)

Fy:

Geschwindigkeit (y-Achse)

P (Xp,Yp)

Position auf Kreisbogen

r:

Radius

E (Xe,Ye)

Sollposition (Ende)

Beispiel

Kanal 0 sei die x-Achse, Kanal 2 die Y-Achse.Die Positionierung soll als Absolutwertpositionierung durchgeführt werden.

Die Istposition ist (q=60°, Xs=5000, Ys=8660). Der Mittelpunkt O (Xo=0, Yo=0) wird als Referenzpunkt verwendet. Die Pulse werden von Kanal 0 (x-Achse) und Kanal 2 (y-Achse) mit einer Geschwindigkeit von Fv=2000Hz ausgegeben, bis die Endposition (q=-30°, Xe=8660, Ye=-5000) erreicht ist.

Allgemeine Programmierhinweise

  • Die Ausführungsbedingung für diesen Befehl muss kontinuierlich TRUE sein. Wenn die Ausführungsbedingung FALSE ist, wird die Pulsausgabe beendet.

  • Der Kontrollmerker "Schneller Zähler" (z.B. sys_bIsHscChannel0ControlActive) und der Kontrollmerker "Pulsausgabe" (z.B. sys_bIsPulseChannel0Active) sind derselben Sondermerker-Nummer zugeordnet (z.B. R903A). Daher ist sowohl der Kontrollmerker für den schnellen Zähler (z.B. sys_bIsHscChannel0ControlActive) als auch der Kontrollmerker für die Pulsausgabe (z.B. sys_bIsPulseChannel0Active) für den betreffenden Kanal TRUE, wenn ein schneller Zählerbefehl oder ein Pulsausgabebefehl ausgeführt wird. Solange dieser Merker auf TRUE steht, kann kein anderer schneller Zählerbefehl oder Pulsausgabebefehl ausgeführt werden.

  • Wennn der Kreisinterpolationsbefehl F176_PulseOutput_Center ausgeführt wird, wird der Kontrollmerker "Kreisinterpolation" (sys_bIsCircularInterpolationActive) auf TRUE gesetzt, Der Status dieses Merkers bleibt erhalten, bis der Zielwert erreicht ist (auch wenn die Ausführungsbedingung nicht mehr TRUE ist). In dieser Zeit lassen sich keine anderen Pulsausgabebefehle ausführen. Für einen Neustart der Kreisinterpolation führen Sie einen erzwungenen Stopp (Pulsausgabe beenden) aus. Der Kontrollmerker Kreisinterpolation (sys_bIsCircularInterpolationActive) wird hiermit auf FALSE gesetzt.

  • Wurde für den Verkettungsmodus "Fortsetzen" gewählt, verwenden Sie einen Sondermerker (sys_bIsCircularInterpolationOverwritingPossible), um das Überschreiben des Sollwerts zuzulassen. Dieser Merker ist für die Dauer eines SPS-Zyklus TRUE, wenn der Kreisinterpolationsbefehl ausgeführt wird.

  • Der Sollwert für jede Achse muss innerhalb des Bereichs -8388608–8388607 liegen. Wenn dieser Befehl zusammen mit anderen Pulsausgabebefehlen verwendet wird, z.B. F171_PulseOutput_Trapezoidal, muss der Sollwert in diesen Befehlen ebenfalls innerhalb desselben Bereichs liegen.

  • Die Genauigkeit der Kreisinterpolation kann abnehmen, wenn die SPS-Zykluszeit zu lange dauert.

  • Programmänderungen im RUN-Modus (Online-Editieren) sind bei diesem Befehl nicht möglich.

  • Wenn sowohl das Hauptprogramm als auch das Interrupt-Programm Code für denselben Kanal enthalten, dürfen die Programme nicht gleichzeitig ausgeführt werden.

  • Da es für Referenzpunktfahrten keine Interpolationsfunktion gibt, müssen Sie die Referenzpunktfahrt für jeden Kanal einzeln durchführen.

  • Prüfen Sie bei Präzisionsanwendungen, ob die Mechanik der Maschine die geforderte Genauigkeit unterstützt.

  • Setzen Sie einen schnellen Zähler, der einem Pulsausgabekanal zugeordnet ist, in den Systemregistern auf "Unbenutzt".

  • Es ist unbedingt empfehlenswert, die Möglichkeit eines erzwungenen Stopps in Ihrem Positionierprogramm vorzusehen.

  • Der Status des Kontrollmerkers für den schnellen Zähler oder den Pulsausgang kann sich innerhalb eines Zyklus ändern.

Verhalten der Merker während der Befehlsausführung

(1)

Ausführungsbedingung X0

(2)

Kontrollmerker für Pulsausgabe, Kanal 0 (sys_bIsPulseChannel0Active)

(3)

Kontrollmerker für Pulsausgabe, Kanal 2 (sys_bIsPulseChannel2Active)

(4)

Kontrollmerker "Kreisinterpolation" (sys_bIsCircularInterpolationActive)

(5)

Merker "Sollwertänderung" (sys_bIsCircularInterpolationOverwritingPossible)

a

Start

b

Ausführungsbedingung FALSE

c

Sollwert erreicht

d

Verkettungsmodus "Fortsetzen" starten

e

1 SPS-Zyklus

Beispiel

POE-Kopf

Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden.Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.

	VAR
		Trigger: BOOL:=FALSE;
		dutPassData: F176_PulseOutput_Pass_DUT:=dwControlCode := 16#1000,
diSpeed := 2000,
diTargetPos_X := 8660,
diTargetPos_Y := -5000,
diPassPos_X := 9396,
diPassPos_Y := -3420;
			(*Control code:
Digit 4: 0=Operation connection mode: stop
Digit 3: 1=Rotation direction: CCW (left)  
Digit 2: 0=Fixed
Digit 1: 0=Relative value control
Digit 0: 2=Pulse/direction (Forward FALSE)
*)
		@'': @'';
	END_VAR

KOP-Rumpf

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
B(B_CONTACT,,Trigger,4,2,6,4,R);
B(B_VARIN,,dutPassData,10,4,12,6,);
B(B_VARIN,,0,10,3,12,5,);
B(B_F,F176_PulseOutput_Pass!,Instance,12,1,27,6,,?DEN?Hn_iPulseOutputChannel?Ds_dutDataTable?As_dutDataTable?AENO);
L(1,3,4,3);
L(6,3,12,3);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

IF DF(Trigger) then
    F176_PulseOutput_Pass(n_iPulseOutputChannel := 0, 
        s_dutDataTable := dutPassData);
END_IF;

Letzte Änderung am: 2023-03-14Feedback zu dieser SeitePanasonic Hotline