Controllo Cam per FP0H
Tale istruzione esegue il controllo Cam come specificato dai parametri nella DUT specificata con un massimo di 32 valori target secondo il valore corrente del contatore veloce. Per ogni singola uscita cam, il valore target viene impostato come coppia con un valore di impostazione ON e OFF.
Un programma di interrupt può essere eseguito ogni volta che il valore corrente corrisponde a uno dei valori target.
Ingresso
Canale contatore veloce: 0–3
Indirizzo di partenza dell'area contenente la tabella dati
Uscita
Indirizzo iniziale (WR, WL o WY) dell'area contenente l'indirizzo word di uscita, p.es. BOOL32_OVERLAPPING_DUT. Scegliere la dimensione (16 o 32 bit) in base al numero impostato con diNumberOfTargetValuesAndOutputRelays.
Ingresso
Creare la propria DUT usando la seguente DUT come modello: F165_HighSpeedCounter_Cam_8_Values_OnOff_DUT
Nella DUT possono essere specificati i seguenti parametri:
Codice di controllo
Indirizzo word per uscite
Numero di valori target
(Valori di impostazione ON/OFF da F165_HighSpeedCounter_Target_Values_OnOff_DUT)
Maximum target value
Campo di valori: 1–2147483646 (16#1–16#7FFFFFFE)
Uscita
Se il numero dei valori target è nell'intervallo compreso tra 1–16, viene utilizzata una word. Se il numero dei valori target è nell'intervallo compreso tra 17–32, vengono utilizzate due word.
Esempio: Quando l'indirizzo di uscita è impostato su "Flag interno", il numero di word iniziale dell'indirizzo di uscita è impostato su "0" e il numero dei valori target è impostato su"32", da R0 a R1F si ha un'allocazione come indirizzo per uscita cam.
Quando il flag di uscita è stato specificato (Y), i valori vengono emessi sia sull'uscita CPU e che sulle memorie operative.
Esempio
1000–4999 R100: ON
7000–8999 R101: ON
Con F165_HighSpeedCounter_Cam è possibile eseguire il controllo con un target massimo specificato. Le impostazioni per abilitare/disabilitare il controllo valore target massimo e il valore target massimo vengono specificati nella tabella dati.
La tabella varia in un intervallo compreso tra 12 e 138 parole, in base al numero di valori target e all'impostazione prevista per il valore target massimo specificato.
Il valore target massimo della tabella dati è valido solo quando il controllo del valore target è impostato su 16#0010 (con valore massimo) in dwCamControlCode. Questa impostazione può essere omessa quando il controllo del valore target è impostato su 16#0000 (senza valore massimo).
Attivata |
Disattivata |
||
---|---|---|---|
Campo di conteggio |
0 a valore target |
Valore minimo negativo a valore massimo positivo |
|
Operazione quando il campo di conteggio viene superato |
Conteggio avanti: |
Quando il valore corrente supera il valore target viene impostato su 0. |
Quando il valore corrente supera il valore massimo positivo, torna al valore minimo negativo. |
Conteggio indietro: Il puntatore della tabella dati si sposta dall'ultimo valore target al valore target 1. |
Quando il valore corrente scende al di sotto dello 0, viene impostato al valore target. |
Quando il valore corrente scende al di sotto del valore minimo negativo, torna al valore massimo positivo. |
L'uscita varia in base al valore di impostazione ON e al valore di impostazione OFF.
Valore di impostazione OFF > Valore di impostazione ON
Quando il valore corrente è maggiore o uguale al valore di impostazione ON e minore rispetto al valore di impostazione OFF, il bit di uscita corrispondente si attiva. Quando il valore corrente è fuori intervallo, il bit corrispondente si disattiva.
Conteggio avanti: |
Conteggio indietro: |
---|---|
Valore di impostazione OFF (1) > Valore di impostazione ON (2) ![]() |
Valore di impostazione ON > valore di impostazione OFF
Quando il valore corrente è minore rispetto al valore di impostazione ON e maggiore o uguale rispetto al valore di impostazione OFF, il bit di uscita corrispondente si disattiva. Quando il valore corrente è fuori intervallo, il bit corrispondente si attiva.
Conteggio avanti: |
Conteggio indietro: |
---|---|
Valore di impostazione ON (1) > valore di impostazione OFF (2) ![]() |
Valore di impostazione ON = valore di impostazione OFF
Quando il valore corrente è fuori intervallo, il bit corrispondente si disattiva.
Conteggio avanti: |
Conteggio indietro: |
---|---|
Valore di impostazione ON (1) = valore di impostazione OFF (2) ![]() |
Selezionate l'ingresso del contatore veloce per il canale desiderato nei registri di sistema.
Quando viene eseguita un'istruzione contatore veloce, il flag di controllo del contatore veloce (p.es. sys_bIsHscChannel0ControlActive) per il canale utilizzato passa a TRUE. Finché il flag di controllo è TRUE, non è possibile eseguire nessun'altra istruzione contatore veloce utilizzando lo stesso canale.
Questa istruzione può essere eseguita simultaneamente su un massimo di due canali.
L'esecuzione delle istruzioni di uscita ad impulsi si interrompe mettendo il bit 3 del registro dati nel quale è memorizzato il codice di controllo per il contatore veloce (sys_wHscOrPulseControlCode) su TRUE. Allora il flag di controllo del contatore veloce passa a FALSE. Per riabilitare l'esecuzione dell'istruzione del contatore veloce, riportare il bit 3 a FALSE. Quando si imposta il bit 3 di sys_wHscOrPulseControlCode su TRUE, viene disabilitato anche il controllo del valore target massimo. Quando il controllo del valore target massimo viene arrestato, l'uscita cam viene tenuta in sospeso e il contatore veloce continua a contare.
Resettare o preimpostare il valore corrente del contatore veloce prima di attivare l'istruzione.
La riscrittura del valore corrente per il canale utilizzato durante l'esecuzione dell'istruzione può causare un funzionamento imprevisto.
Se l'istruzione viene eseguita nel programma principale, assicuratevi che l'intervallo di tempo minimo tra valori target vicini sia maggiore del tempo di scansione.
Se l'istruzione viene eseguita in un programma di interrupt, assicuratevi che l'intervallo di tempo minimo tra valori target vicini sia maggiore del tempo di esecuzione massimo del programma di interrupt.
In caso di utilizzo di un ingresso di reset o un reset software, assicuratevi che il valore target 1 sia un numero intero e ³ 1.
Quando il controllo del valore target massimo viene utilizzato insieme ad un ingresso di reset o ad un reset software, fate attenzione a non utilizzarli contemporaneamente.
Quando il reset hardware o il reset software viene eseguito durante il controllo del contatore veloce, il valore corrente del contatore ad alta velocità viene riportato a 0. L'uscita assegnata all'uscita cam sarà l'uscita secondo il valore corrente 0.
È possibile inoltre avviare il programma di interrupt INTn ogni volta che il valore corrente raggiunge il valore target. Per questa operazione l'attivazione del programma di interrupt dovrebbe essere permessa dall'istruzione di controllo interrupt ICTL.
se il valore target > valore target massimo.
se il valore target = 0.
se i valori target non sono disposti in ordine crescente
se il valore target > valore target massimo.
se il valore target = 0.
se i valori target non sono disposti in ordine crescente
La DUT F165_HighSpeedCounter_Cam_8_Values_OnOff_DUT è predefinita nella FP Library e può essere utilizzata come esempio.
Nella lista variabili globali si definiscono variabili alle quali possono accedere tutti i POU del progetto.
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
bEnable: BOOL:=FALSE;
dutF165FP0H_CH0: F165_HighSpeedCounter_Cam_8_Values_OnOff_DUT;
END_VAR
VAR_EXTERNAL
g_dutCamControl_WY0: BOOL32_OVERLAPPING_DUT;
END_VAR
Quando la variabile bEnable è impostata su TRUE, la funzione viene eseguita.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_CONTACT,,bEnable,5,1,7,3,);
B(B_F,F165_HighSpeedCounter_Cam!,,14,0,28,5,,?DEN?HiHscChannel?Ds_dutDataTable?AENO?CdutBitOutputs);
B(B_VARIN,,0,12,2,14,4,);
B(B_VAROUT,,g_dutCamControl_WY0,28,2,30,4,);
B(B_VARIN,,dutF165FP0H_CH0,12,3,14,5,);
L(1,0,1,6);
L(1,2,5,2);
L(7,2,14,2);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if (bEnable) then
F165_HighSpeedCounter_Cam(iHscChannel := 0, s_dutDataTable := dutF165FP0H_CH0,
dutBitOutputs => g_dutCamControl_WY0);
end_if;