Home Return (ritorno alla posizione iniziale)
Ingresso
Indirizzo di partenza dell'area contenente la tabella dati
Canale uscita ad impulsi:
FP-S: 0,2
FP-X R: 0,1
FP-XC14T: 0,1,2
FP-X C30T/C60T: 0,1,2,3
Dopo che sistema di azionamento è stato attivato, vi è una differenza tra posizione interna (valore corrente) e la posizione meccanica dell’asse; questa differenza non può essere determinata anticipatamente. Per avere corrispondenza tra il valore interno dell’asse e la posizione reale è necessario eseguire un’operazione di sincronizzazione. La sincronizzazione si effettua mediante un’istruzione di Home Return, durante il quale il valore della posizione viene registrato (azzerato) in una determinata posizione (Home).Con l’istruzione di Home Return vengono emessi impulsi finché non viene attivato l’ingresso di home. L'allocazione I/O dipende dal canale.Per decelerare il moto durante l'avvicinamento alla posizione di home, si deve stabilire un ingresso near home e mettere il bit 4 del registro dati speciali nel quale è memorizzato il codice di controllo per l'uscita degli impulsi (sys_wHscOrPulseControlCode) prima su TRUE e poi di nuovo su FALSE.L'uscita reset deviazione conteggio su servo driver può essere messa su TRUE una volta completato lo Home Return.Il valore nell'area valore corrente durante un Home Return (ritorno alla posizione iniziale) differisce rispetto al valore attuale. Quando il return è completato, il valore corrente cambia in 0.
Selezionate una delle due diverse modalità operative:
Tipo 1: L'ingresso home può essere attivato indipendentemente dal fatto che vi sia o no un ingresso near home, che la decelerazione stia avendo luogo o che la decelerazione sia stata completata.
Senza ingresso near home:
Con ingresso near home:
Tipo 2: L'ingresso home può essere attivato solo dopo che una decelerazione (iniziata da un ingresso near home) è stata completata.
Utilizzare la seguente DUT predefinita:
F171_PulseOutput_Home_DUT
Nella DUT possono essere specificati i seguenti parametri:
Codice di controllo
Velocità iniziale e finale
Velocità target
Tempo di accelerazione/decelerazione
Segnale reset deviazione conteggio su servo driver
Caratteristiche dell’uscita ad impulsi
La frequenza dell'uscita ad impulsi cambia secondo il tempo di accelerazione/decelerazione.
La differenza fra velocità target e velocità iniziale determina il tipo di rampa.
Informazione generale di programmazione
Anche in presenza dell’ingresso home, l’esecuzione di questa istruzione provoca l’avvio dell’emissione di impulsi.
Se l’ingresso near home viene abilitato mentre l’accelerazione è in corso, verrà avviata la decelerazione.
Se sia il programma principale sia il programma di interrupt contengono un codice per lo stesso canale, essi non devono poter esser eseguiti contemporaneamente.
Il segnale reset deviazione conteggio su servo driver viene allocato a indirizzi di uscita dedicati specifici per ciascun tipo di PLC.
Durante il lavoro ai programmi nella modalità operativa RUN l’uscita ad impulsi si arresta, ma riprende dopo che sono state scaricate le modifiche al programma.
FP-X: Mentre viene eseguita un'istruzione uscita ad impulsi e gli impulsi vengono emessi, il flag di controllo dell'uscita ad impulsi (p.es. sys_bIsPulseChannel0Active) del rispettivo canale è TRUE. Finché questo flag è TRUE non può essere eseguita nessun'altra istruzione uscita ad impulsi.
FPS: Il flag di controllo del contatore veloce (p.es. sys_bIsHscChannel0ControlActive) e il flag di controllo dell’uscita ad impulsi (p.es. sys_bIsPulseChannel0Active) vengono allocati allo stesso numero di flag interno speciale (p.es. R903A). Pertanto, quando viene eseguita un'istruzione contatore veloce o un'istruzione uscita ad impulsi, il flag di controllo del contatore veloce (p.es. sys_bIsHscChannel0ControlActive) e il flag di controllo dell'uscita ad impulsi (p.es. sys_bIsPulseChannel0Active) per il canale utilizzato sono TRUE. Finché questo flag è TRUE non può essere eseguita nessun’altra istruzione contatore veloce o istruzione uscita ad impulsi.
FPS: Nei registri di sistema impostare un contatore veloce assegnato ad un canale di uscita ad impulsi su "Non utilizzato".
FP-X: Nei registri di sistema impostare "uscita ad impulsi" per il canale desiderato.
FPS: L’esecuzione dell’istruzione di controllo di interpolazione circolare F176_PulseOutput_Center imposta il flag controllo interpolazione circolare (sys_bIsCircularInterpolationActive) su TRUE. Lo stato di questo flag viene mantenuto fino a quando viene raggiunto il valore target (anche se la condizione di esecuzione non è più TRUE). Durante questo lasso di tempo non è possibile eseguire altre istruzioni uscita ad impulsi
Si raccomanda vivamente di incorporare un'opzione di stop uscita impulsi nel proprio programma di posizionamento.
Lo stato del flag di controllo del contatore veloce o del flag di controllo dell'uscita ad impulsi può variare durante lo svolgimento di una scansione. For example, if the number of received bytes is read more than once different statuses may exist within one scan.
Canale n.° |
Uscita reset deviazione conteggio su servo driver |
Ingresso home |
0 | Y2 | X2 |
2 | Y5 | X5 |
La funzione di uscita ad impulsi è disponibile solo se è installato il cassetto I/O uscita a treno d'impulsi (AFPX-PLS).
Canale n.° |
Uscita reset deviazione conteggio su servo driver |
Ingresso home |
0 | ||
(montaggio cassetto parte 1) | Y102 | X102 |
1 | ||
(montaggio cassetto parte 2) | ||
(solo C30/60R) | Y202 | X202 |
Canale n.° |
Uscita reset deviazione conteggio su servo driver |
Ingresso home |
0 | Y4 o Y8 | X4 |
1 | Y5 o Y9 | X5 |
2 | – | X6 |
3 (solo C30/60R) | – | X7 |
Nella lista variabili globali si definiscono variabili alle quali possono accedere tutti i POU del progetto.
La DUT F171_PulseOutput_Home_DUT è predefinita nella FP Library.
Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU. La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.
VAR_EXTERNAL
X0_bMotorSwitch: BOOL:=FALSE;
(*at X0*)
END_VAR
VAR
dutHome: F171_PulseOutput_Home_DUT:=dwControlCode := 16#1125;
(*Control code:
Digit 3: 1= Duty ratio 25%
Digit 2: 1= Frequency range 48Hz-100kHz
Digit 1: 2 =Operation mode type 1
Ditig 0: 5= CCW + deviation counter clear signal*)
diInitialSpeed: DINT:=100;
diTargetSpeed: DINT:=2000;
diAccelerationTime: DINT:=300;
@'': @'';
END_VAR
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,,X0_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,,dutHome.diTargetSpeed,23,6,25,8,);
B(B_VARIN,,diTargetSpeed,15,6,17,8,);
B(B_VAROUT,,dutHome.diAccelerationDecelerationTime,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,,dutHome.diDeviationCounterClearSignalOutputTime,23,14,25,16,);
B(B_VARIN,,10,15,14,17,16,);
B(B_F,E_MOVE!,Instance,17,0,23,4,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHome.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 := 8 ;
NETWORK_BODY
B(B_CONTACT,,X0_bMotorSwitch,6,3,8,5,R);
B(B_VARIN,,dutHome,15,4,17,6,);
B(B_VARIN,,0,15,5,17,7,);
B(B_F,F171_PulseOutput_Home!,Instance,17,2,30,7,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
B(B_COMMENT,,Example for home position return,1,1,18,2,);
L(1,4,6,4);
L(8,4,17,4);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF DF(X0_bMotorSwitch) then
dutHome.diInitialAndFinalSpeed:=diInitialSpeed;
dutHome.diTargetSpeed:=diTargetSpeed;
dutHome.diAccelerationDecelerationTime:=diAccelerationTime;
dutHome.diDeviationCounterClearSignalOutputTime:=10;
END_IF;
(*Example for home position return*)
IF DF(X0_bMotorSwitch) then
F171_PulseOutput_Home(s_dutDataTable := dutHome,
n_iPulseOutputChannel :=0);
END_IF;