Positionierprofil ohne Rampen
Anhand der Parameter im angegebenen strukturierten Datentyp wird eine Rechtecksteuerung durchgeführt. Es können beliebig viele verschiedene Geschwindigkeiten und Sollwerte festgelegt werden. Die Pulse werden vom angegebenen Kanal ausgegeben, wenn der Kontrollmerker für diesen Kanal FALSE und die Ausführungsbedingung TRUE ist.
Eingang
Anfangsadresse des Bereiches, der die Datentabelle enthält
Beispiel: F174_PulseOutput_DataTable_8_Values_DUT
Pulsausgabekanal:
FP-XH C30 T/P: 0–3
FP-XH C60 T/P: 0–5
FPS: 0,2
FP-X R: 0,1
FP-XC14T: 0,1,2
FP-X C30T/C60T: 0,1,2,3
FP0R: 0,1,2,3
Erstellen Sie auf der Basis des folgenden Musters ihren eigenen SDT: F174_PulseOutput_DataTable_8_Values_DUT
Im SDT lassen sich folgende Parameter festlegen:
Steuercode
Frequenz 1
Sollwert 1
Frequenz 2
Sollwert 2
...
Frequenz n
Sollwert n
Ende der Pulsausgabe
Merkmale der Pulsausgabe
x Istwert des schnellen Zählers (Verfahrstrecke)
Die Pulse werden mit der festgelegten Frequenz ausgegeben, bis der Sollwert erreicht ist. Dann wird die Pulsausgabe mit dem zweiten Frequenzwert fortgesetzt, wieder bis der Sollwert erreicht ist usw.
Die Pulsausgabe stoppt, wenn der letzte Sollwert erreicht ist.
Die Frequenz 0 gibt die letzte Frequenz an und hält die Pulsausgabe an.
FP-X, FP0R: 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.
Wenn der angegebene Wert der ersten Frequenz außerhalb des zulässigen Bereichs liegt, tritt ein Operationssfehler auf. (Wenn der Wert der ersten Frequenz 0 ist, wird der Betrieb sofort angehalten; es erfolgt dann keine Pulsausgabe.)
Wenn der angegebene Wert der zweiten Frequenz außerhalb des zulässigen Bereichs liegt oder 0 ist, wird die Pulsausgabe gestoppt.
Wenn der Sollwert außerhalb des zulässigen Bereichs liegt, entspricht die Anzahl der ausgegebenen Pulse eventuell nicht dem festgelegten Wert.
FP0R: Wenn einer der Sollwerte nicht in der Verfahrrichtung liegt, wird die Pulsausgabe angehalten
FPS, FP-X: Wenn einer der Sollwerte nicht in der Verfahrrichtung liegt, wird unendlich weitergezählt.
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.
FPS: Setzen Sie einen schnellen Zähler, der einem Pulsausgabekanal zugeordnet ist, in den Systemregistern auf "Unbenutzt".
FPS, FP-X: Wird der Befehl zusammen mit einem schnellen Zähler, einem Zeit-Interrupt oder der SPS-Kopplung verwendet, benutzen Sie eine Frequenz von max. 80kHz.
FP-X: Setzen Sie den gewünschten Kanal im Systemregister auf "Pulsausgabe".
Wenn Sie Programme im RUN-Modus bearbeiten, wird die Pulsausgabe gestoppt und erst nach der Übertragung der Programmänderungen fortgesetzt.
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.
In der globalen Variablenliste können Sie Variablen festlegen, die von allen POEs des Projekts verwendet werden können.
Der SDT F174_PulseOutput_DataTable_8_Values_DUT ist in der “FP Library” enthalten und kann als Beispiel genutzt werden.
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_EXTERNAL
X0_bMotorSwitch: BOOL:=FALSE;
(*at X0*)
END_VAR
VAR
dutDataTable4: F174_DUT:=ControlCode := 16#1200,
Frequency1 := 1000,
TargetValue1 := 1000,
Frequency2 := 2500,
TargetValue2 := 2000,
Frequency3 := 5000,
TargetValue3 := 5000,
Frequency4 := 1000,
TargetValue4 := 2000,
Termination := 0;
(*Control code:
Digit 3: 1=Duty ratio 25%
Digit 2: 2=Frequency range 48Hz-100kHz
Digit 1: 0=Relative value control
Digit 0: 0=CW*)
@'': @'';
END_VAR
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_F,F174_PulseOutput_DataTable!,Instance,13,0,27,5,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
B(B_VARIN,,dutDataTable4,11,2,13,4,);
B(B_VARIN,,0,11,3,13,5,);
B(B_CONTACT,,X0_bMotorSwitch,5,1,7,3,R);
L(1,2,5,2);
L(7,2,13,2);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF DF(X0_bMotorSwitch) then
F174_PulseOutput_DataTable(s_dutDataTable := dutDataTable4, 4);
END_IF;