Operazione JOG e posizionamento
Il numero di impulsi impostato viene inviato in uscita dopo che l'ingresso per inizio controllo di posizione viene portato a TRUE. Prima che il valore target venga raggiunto e che l'uscita ad impulsi si fermi viene effettuata una decelerazione. Gli impulsi vengono emessi dal canale specificato quando il flag di controllo per tale canale è FALSE e la condizione di esecuzione è TRUE.
Ingresso
Indirizzo di partenza dell'area contenente la tabella dati
F171_PulseOutput_Jog_Positioning_Type0_DUT o F171_PulseOutput_Jog_Positioning_Type1_DUTCanale uscita ad impulsi:0–3
Selezionate una delle due diverse modalità operative:
Tipo 0: La velocità può essere variata entro il campo della velocità target determinata.
Tipo 1: La velocità target può essere cambiata una volta quando l'ingresso per inizio controllo di posizione passa a TRUE.
Caratteristiche dell’uscita ad impulsi
La frequenza dell'uscita ad impulsi cambia secondo il tempo di accelerazione specificato e il tempo di decelerazione specificato.
La differenza fra velocità target e velocità iniziale determina la pendenza della rampa di accelerazione.
La differenza fra velocità target e velocità finale determina la pendenza della rampa di decelerazione.
Dopo che l'ingresso per inizio controllo di posizione è passato a TRUE, l'emissione di impulsi continua, poi decelera e si ferma una volta raggiunto il valore target.
L'emissione di impulsi può essere arrestata con una delle seguenti operazioni:
Impostazione del trigger di controllo posizionamento su TRUE (l'emissione di impulsi continua fino al raggiungimento del valore target e al completamento della decelerazione): Il trigger di controllo del posizionamento può essere avviato mettendo un ingresso per inizio controllo di posizione su TRUE o mettendo il bit 6 del registro dati che memorizza il codice di controllo dell'uscita ad impulsi da FALSE a TRUE (p.es. MOVE(16#140, sys_wHscOrPulseControlCode);
).
Richiesta di uno stop decelerato: Per eseguire uno stop decelerato, impostate il bit 5 del registro dati che memorizza il codice di controllo dell’uscita impulsi da FALSE a TRUE (p.es. MOVE(16#120, sys_wHscOrPulseControlCode);
).Se durante l'accelerazione viene richiesto uno stop decelerato, la decelerazione viene eseguita con lo stesso tipo di rampa della decelerazione dalla velocità target.
Esecuzione di uno stop di emergenza: Per eseguire uno stop di emergenza, impostate il bit 3 del registro dati che memorizza il codice di controllo dell'uscita impulsi da FALSE a TRUE (p.es. MOVE(16#108, sys_wHscOrPulseControlCode);
).
Al momento dell'arresto, disabilitate tutte le funzioni di uscita ad impulsi per il canale utilizzato nel programma.
Utilizzare la seguente DUT predefinita: F171_PulseOutput_Jog_Positioning_Type0_DUT
Nella DUT possono essere specificati i seguenti parametri:
Codice di controllo
Velocità iniziale e finale
Velocità target
Tempo di accelerazione
Tempo di decelerazione
Valore target
La velocità target può essere cambiata durante l’uscita ad impulsi.Cambiamento della velocità target durante l’uscita ad impulsi
Senza cambio della velocità target: |
Con cambio della velocità target: |
Velocità iniziale e finale
Velocità target
Valore target
Tempo di accelerazione
Tempo di decelerazione
Condizione di esecuzione
Ingresso per inizio controllo di posizione
Flag di controllo dell'uscita ad impulsi
Per modificare la velocità, mantenere la condizione di esecuzione su TRUE.
Se la velocità target viene impostata su un valore maggiore di 50kHz, essa verrà corretta a 50kHz.
Se il valore corrente supera la posizione iniziale dell'area vietata di accelerazione (p.es. sys_diPulseChannel0AccelerationForbiddenAreaStartingPosition) durante l'accelerazione, la stessa non potrà essere eseguita.
La velocità di decelerazione non può essere inferiore alla velocità finale corretta.
La modifica della velocità target non è possibile se l'istruzione viene eseguita in un programma di interrupt.
Utilizzare la seguente DUT predefinita: F171_PulseOutput_Jog_Positioning_Type1_DUT
Nella DUT possono essere specificati i seguenti parametri:
Codice di controllo
Velocità iniziale e finale
Velocità target1
Tempo di accelerazione
Velocità target2
Tempo di cambiamento
Tempo di decelerazione
Valore target
Velocità target 1 < velocità target 2: |
Velocità target 1 > velocità target 2: |
Velocità iniziale e finale
Velocità target
Velocità target
Valore target
Tempo di accelerazione
Tempo di cambiamento
Tempo di decelerazione
Condizione di esecuzione
Ingresso per inizio controllo di posizione
Dopo che l'ingresso per inizio controllo di posizione è passato a TRUE, la frequenza dell'uscita ad impulsi cambierà utilizzando il tempo di modifica per accelerare o decelerare alla velocità target 2. Ulteriori modifiche alla velocità target non sono possibili. L'ingresso per inizio controllo di posizione non verrà considerato se impostato su TRUE durante l'accelerazione.
Non appena si inizia a modificare un programma online (ossia in modalità RUN) utilizzando questa istruzione, l’emissione di impulsi si arresta.
Se sia il programma principale sia il programma di interrupt contengono un codice per lo stesso canale, essi non devono poter esser eseguiti contemporaneamente.
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.
Impostate l'ingresso per inizio controllo di posizione (X0, X1, X2, X3) nel registro di sistema 402.
Per l'ingresso per inizio controllo di posizione viene rilevato solo il fronte di salita (TRUE).
L'istruzione non può essere avviata nel caso in cui sia stato richiesto uno stop decelerato.
Per effettuare il riavvio dopo aver arrestato l'operazione, impostare la condizione di esecuzione su FALSE e poi nuovamente su TRUE.
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.
F171_PulseOutput_Jog_Positioning_Type0_DUT
F171_PulseOutput_Jog_Positioning_Type1_DUT
Modalità di programmazione in RUN
Scrittura del codice di controllo dell'uscita impulsi
PulseOutput_Jog_Positioning0_FB Operazione JOG e posizionamento
PulseOutput_Jog_Positioning1_FB Operazione JOG e posizionamento
PulseControl_JogPositionControl Avvia il controllo posizionamento
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
Start: BOOL:=FALSE;
dutJog: F171_PulseOutput_Jog_Positioning_Type0_DUT:=dwControlCode := 16#010,
diInitialAndFinalSpeed := 1000,
diTargetSpeed := 7000,
diAccelerationTime := 300,
diDecelerationTime := 450,
diTargetValue := 10000;
(*Digit3: 0=Pulse output
Digit2: 1=Fixed
Digit0: 0=CW/CCW2*)
diInitialAndFinalSpeed: DINT:=1000;
@'': @'';
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_F,E_MOVE!,Instance,13,0,19,4,,?DEN?D?AENO?C);
B(B_VARIN,,diInitialAndFinalSpeed,11,2,13,4,);
B(B_VAROUT,,dutJog.diInitialAndFinalSpeed,19,2,21,4,);
B(B_CONTACT,,Start,6,1,8,3,);
L(1,2,6,2);
L(8,2,13,2);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_F,F171_PulseOutput_Jog_Positioning!,Instance,8,0,24,5,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
B(B_VARIN,,dutJog,6,2,8,4,);
B(B_VARIN,,0,6,3,8,5,);
B(B_CONTACT,,Start,2,1,4,3,);
L(1,2,2,2);
L(4,2,8,2);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF (Start) then
dutJog.diInitialAndFinalSpeed:=diInitialAndFinalSpeed;
END_IF;
IF (Start) then
F171_PulseOutput_Jog_Positioning(s_dutDataTable := dutJog, 0);
END_IF;