F171_PulseOutput_Trapezoidal

AUTO-TRAPEZ-Funktion

Anhand der Parameter im angegebenen strukturierten Datentyp wird eine AUTO-TRAPEZ-Steuerung durchgeführt. Die Pulse werden vom angegebenen Kanal ausgegeben, wenn der Kontrollmerker für diesen Kanal FALSE und die Ausführungsbedingung TRUE ist.

Eingang

s_dutDataTable (SDT)

Anfangsadresse des Bereiches, der die Datentabelle enthält

  • FP-S, FP-X:

    F171_PulseOutput_Trapezoidal_DUT

  • FP0R:

    F171_PulseOutput_Trapezoidal_Type0_DUT

    F171_PulseOutput_Trapezoidal_Type1_DUT

n_iPulseOutputChannel (Dezimalkonstante)

Pulsausgabekanal:

FP-XH C30 T/P: 0–3

FP-XH C60 T/P: 0–5

FP-S0, 2

FP-X R0, 1

FP-XC14T0, 1, 2

FP-X C30T/C60T0, 1, 2, 3

FP0R0, 1, 2, 3

Beschreibung für FP-Sigma, FP-X

Verwenden Sie folgende, vordefinierte strukturierte Datentypen: F171_PulseOutput_Trapezoidal_DUT.

Im SDT lassen sich folgende Parameter festlegen:

  • Steuercode
  • Anfangs- und Restgeschwindigkeit
  • Sollgeschwindigkeit
  • Beschleunigungs-/Bremszeit
  • Sollwert
  • Ende der Pulsausgabe
Merkmale der Pulsausgabe
  1. Anfangs- und Restgeschwindigkeit

  2. Sollgeschwindigkeit

  3. Beschleunigungs-/Bremszeit

  4. Sollwert

  5. Kontrollmerker für Pulsausgabe

  6. Ausführungsbedingung

Die Pulsausgabefrequenz ändert sich entsprechend der festgelegten Beschleunigungs- und Bremszeit.Der Unterschied zwischen der Soll- und Anfangsgeschwindigkeit bestimmt die Steigung der Rampen..

  • Wenn sowohl das Hauptprogramm als auch das Interrupt-Programm Code für denselben Kanal enthalten, dürfen die Programme nicht gleichzeitig ausgeführt werden.
  • FP-X: Während der Ausführung eines Pulsausgabefehls und der Ausgabe von Pulsen steht der Kontrollmerker "Pulsausgabe" des entsprechenden Kanals (z.B. sys_bIsPulseChannel0Active) auf TRUE. Solange der Merker auf TRUE steht, kann kein anderer Pulsausgabebefehl ausgeführt werden.

  • FPS: 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.

  • FPS: 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.

  • Wenn Sie Programme im RUN-Modus bearbeiten, wird die Pulsausgabe gestoppt und erst nach der Übertragung der Programmänderungen fortgesetzt.
  • FPS: Setzen Sie einen schnellen Zähler, der einem Pulsausgabekanal zugeordnet ist, in den Systemregistern auf "Unbenutzt".

  • FP-X: Setzen Sie den gewünschten Kanal im Systemregister auf "Pulsausgabe".

  • 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.

Beschreibung für FP0R

Verwenden Sie folgende, vordefinierte strukturierte Datentypen: F171_PulseOutput_Trapezoidal_Type0_DUT (Maximalgeschwindigkeit = erste Sollgeschwindigkeit) oder F171_PulseOutput_Trapezoidal_Type1_DUT (Maximalgeschwindigkeit = 50kHz).

Die Sollgeschwindigkeit lässt sich während der Pulsausgabe ändern.

Es gibt zwei verschiedene Betriebsarten:

  • Typ 0: Die Geschwindigkeit lässt sich nur innerhalb des zuvor festgelegten Bereichs für die Sollgeschwindigkeit ändern.

  • Typ 1: Die Geschwindigkeit lässt sich nur innerhalb des zuvor festgelegten Bereichs für die Sollgeschwindigkeit ändern (50kHz).

Im SDT lassen sich folgende Parameter festlegen:

  • Steuercode
  • Anfangs- und Restgeschwindigkeit
  • Sollgeschwindigkeit
  • Beschleunigungszeit
  • Bremszeit
  • Sollwert

Merkmale der Pulsausgabe

  1. Anfangs- und Restgeschwindigkeit

  2. Sollgeschwindigkeit

  3. Beschleunigungszeit

  4. Bremszeit

  5. Sollwert

  6. Kontrollmerker für Pulsausgabe

  7. Ausführungsbedingung

  8. Signal für gebremsten Halt

  • Typ 0:

    Der Unterschied zwischen der Soll- und Anfangsgeschwindigkeit bestimmt die Steigung der Beschleunigungsrampe.Der Unterschied zwischen der Soll- und Endgeschwindigkeit bestimmt die Steigung der Bremsrampe.

  • Typ 1:

    Der Unterschied zwischen der Maximalgeschwindigkeit von 50kHz und der Anfangsgeschwindigkeit bestimmt die Steigung der Beschleunigungsrampe.Der Unterschied zwischen der Maximalgeschwindigkeit von 50kHz und der Endgeschwindigkeit bestimmt die Steigung der Bremsrampe.

Die Pulse werden mit einem Puls-Pausenverhältnis von 25% ausgegeben.Bei der Verwendung der Methode Pulsausgabe/Richtungsanzeige werden die Pulse ca. 300ms nach der Ausgabe des Richtungsanzeigesignals ausgegeben; das Verhalten des Motorantriebs wird gleichzeitig berücksichtigt.

Gebremster Halt

Um einen gebremsten Halt auszuführen, setzen Sie Bit 5 des Datenregisters, in dem der Steuercode für die Pulsausgabe gespeichert wird von FALSE auf TRUE (z.B. MOVE(16#120, sys_wHscOrPulseControlCode);).Wenn während der Beschleunigung das Signal für einen gebremsten Halt ausgelöst wird, wird der Bremsvorgang mit derselben Geschwindigkeit ausgeführt wie der normale Bremsvorgang, der von der Sollgeschwindigkeit ausgeht.

Sollgeschwindigkeit während der Pulsausgabe ändern

Typ 1: Die Geschwindigkeit lässt sich nur innerhalb des zuvor festgelegten Bereichs für die Sollgeschwindigkeit ändern (50kHz).

  1. Sollgeschwindigkeit

  2. 1. Änderung der Sollgeschwindigkeit

  3. 2. Änderung der Sollgeschwindigkeit

  4. Beschleunigungszeit

  5. Beschleunigung

  6. Bremsvorgang

  7. Bremszeit

  8. Kontrollmerker für Pulsausgabe

  9. Ausführungsbedingung

Die Geschwindigkeit kann nur geändert werden, wenn die Ausführungsbedingung kontinuierlich TRUE ist.

  • Typ 0:

    Wenn der gewählte Wert außerhalb des zuvor festgelegten Bereichs für die Sollgeschwindigkeit liegt, wird diese Angabe korrigiert und stattdessen die anfangs festgelegte Sollgeschwindigkeit verwendet.

  • Typ 1:

    Wenn für die Sollgeschwindigkeit ein höherer Wert als 50kHz festgelegt wurde, erfolgt eine Korrektur auf 50kHz.

Wenn der Istwert während der Beschleunigung den Beschleunigungswert überschreitet (z.B. sys_diPulseChannel0AccelerationForbiddenAreaStartingPosition), wird die Beschleunigung gestoppt.

  • Die Bremsgeschwindigkeit kann nicht unter der korrigierten Restgeschwindigkeit liegen.

  • Wenn Sie Programme, die diesen Befehl verwenden, im RUN-Modus bearbeiten (Online-Editieren), wird die Pulsausgabe beendet.

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

  • Während der Ausführung eines Pulsausgabefehls und der Ausgabe von Pulsen steht der Kontrollmerker "Pulsausgabe" des entsprechenden Kanals (z.B. sys_bIsPulseChannel0Active) auf TRUE. Solange der Merker auf TRUE steht, kann kein anderer Pulsausgabebefehl ausgeführt werden.
  • Der Befehl kann nicht initiiert werden, wenn das Signal für einen gebremsten Halt ausgelöst wurde.
  • Um nach dem Stopp des Betriebs einen Neustart auszuführen, muss die Ausführungsbedingung zunächst auf FALSE und dann wieder auf TRUE gesetzt werden.
  • Wenn die Positionierungsparameter unverändert bleiben, ist die Befehlsausführung beim zweiten Mal schneller. Dieses Verhalten bleibt bestehen, auch wenn Sie die Freigabe der Ausgänge (Pulsausgabe oder Simulation) ändern.
  • 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.

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
		bMotorSwitch: BOOL:=FALSE;
		dutTrapez: F171_PulseOutput_Trapezoidal_DUT:=dwControlCode := 16#1100;
			(*Control code:
Digit 3: 1=Duty ratio 25%
Digit 2: 1=Frequency range 48Hz-100kHz
Digit 1: 0=Relative value control
Digit 0: 0=CW/CCW*)
	END_VAR
	VAR_EXTERNAL
		X0_bMotorSwitch: BOOL:=FALSE;
			(*at X0*)
	END_VAR
	VAR 
		diInitialSpeed: DINT:=100;
		diTargetSpeed: DINT:=2000;
		diAccelerationTime: DINT:=300;
		diTargetValue: DINT:=10000;
		@'': @'';
	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 := 16 ;
        NETWORK_BODY
B(B_CONTACT,,bMotorSwitch,4,1,6,3,R);
B(B_F,E_MOVE!,Instance,17,4,23,8,,?DEN?D?AENO?C);
B(B_F,E_MOVE!,Instance,17,8,23,12,,?DEN?D?AENO?C);
B(B_VAROUT,,dutTrapez.diTargetSpeed,23,6,25,8,);
B(B_VARIN,,diTargetSpeed,15,6,17,8,);
B(B_VAROUT,,dutTrapez.diAccelerationAndDecelerationTime,23,10,25,12,);
B(B_VARIN,,diAccelerationTime,15,10,17,12,);
B(B_F,E_MOVE!,Instance,17,12,23,16,,?DEN?D?AENO?C);
B(B_VAROUT,,dutTrapez.diTargetValue,23,14,25,16,);
B(B_VARIN,,diTargetValue,15,14,17,16,);
B(B_F,E_MOVE!,Instance,17,0,23,4,,?DEN?D?AENO?C);
B(B_VAROUT,,dutTrapez.diInitialAndFinalSpeed,23,2,25,4,);
B(B_VARIN,,diInitialSpeed,15,2,17,4,);
L(7,2,7,6);
L(7,6,7,10);
L(1,2,4,2);
L(6,2,7,2);
L(7,2,17,2);
L(7,6,17,6);
L(7,10,17,10);
L(7,10,7,14);
L(7,14,17,14);
L(1,0,1,16);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
B(B_CONTACT,,bMotorSwitch,4,2,6,4,R);
B(B_VARIN,,dutTrapez,14,3,16,5,);
B(B_VARIN,,0,14,4,16,6,);
B(B_F,F171_PulseOutput_Trapezoidal!,Instance,16,1,31,6,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
L(6,3,16,3);
L(1,3,4,3);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

IF DF(bMotorSwitch) then
  dutTrapez.diInitialAndFinalSpeed:=diInitialSpeed;
  dutTrapez.diTargetSpeed:=diTargetSpeed;
  dutTrapez.diAccelerationDecelerationTime:=diAccelerationTime;
  dutTrapez.diDeviationCounterClearSignalOutputTime:=10;
END_IF;
IF DF(bMotorSwitch) then
  F171_PulseOutput_Trapezoidal(s_dutDataTable := dutTrapez,
        n_iPulseOutputChannel :=0);
END_IF;

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