F108_BITR

Sposta a destra bit multipli di un intervallo dati a 16 bit

La funzione sposta i bit di un intervallo dati specificato, il cui inizio e fine vengono specificati dalle uscite d1 e d2, a destra. Il numero di bit di cui l'intervallo dati deve essere spostato a destra è specificato dal valore allocato all'ingresso n. Il valore può attestarsi tra 0 e 16. I bit cancellati a seguito dello spostamento diventano 0. Quando l'ingresso n = 0, non si verifica alcuno spostamento. Quando l'ingresso n = 16, si verifica uno spostamento di una WORD, ossia avviene lo stesso processo che per la funzione F111_WSHL.

Parametri

Ingresso

n (INT)

Numero di bit su cui eseguire lo spostamento

Uscita

d1_Start (WORD, INT, UINT)

Area a 16 bit iniziale

d2_End (WORD, INT, UINT)

Area a 16 bit finale

Note

  • Anziché utilizzare questa istruzione F, si consiglia di utilizzare l'istruzione FP7 corrispondente:

  • Gli indirizzi delle variabili agli ingressi d1_Start e d2_End devono presentare la medesima tipologia di indirizzo.

  1.  (1) Intervallo dati specificato
  2.  (2) start: TRUE
  3.  (3) n bit vengono rimossi
  4.  (4) n bit

Flag di errore

sys_bIsOperationErrorHold (passa a TRUE e resta TRUE)

se l'indirizzo delle variabili alle uscite d1_Start > d2_End o il valore all'ingresso è n ³ 16.

sys_bIsOperationErrorNonHold (passa a TRUE per una scansione)

se l'indirizzo delle variabili alle uscite d1_Start > d2_End o il valore all'ingresso è n ³ 16.

Esempio

Intestazione del POU

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;
			(*activates the function*)
		data_array: ARRAY [0..2] OF WORD:=[16#1234,16#5678,16#9012];
			(*result after a 0->1 leading edge
from start:
[16#8123,16#0567,16#9012]*)
	END_VAR

In questo esempio viene dichiarata la variabile di ingresso number_bits. Potete tuttavia scrivere una costante direttamente nel contatto di ingresso della funzione.

Corpo del POU

Quando la variabile start passa da FALSE a TRUE, la funzione viene eseguita.

Rimuove 4 bit (corrisponde a una posizione in una rappresentazione esadecimale) verso destra. I 4 bit in data_field[2] risultanti dallo spostamento vengono riempiti con caratteri zero.

Corpo LD

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_VARIN,,number_bits,5,2,7,4,);
B(B_VAROUT,,data field[0],16,2,18,4,);
B(B_VAROUT,,data field[2],16,3,18,5,);
B(B_F,F108_BITR,,7,0,16,5,,?DEN?Dn?AENO?Cd1?Cd2);
B(B_CONTACT,,output,3,1,5,3,R);
L(1,0,1,5);
L(1,2,3,2);
L(5,2,7,2);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corpo ST

IF DF(start) then
    F108_BITR( n:=number_bits,
         d1_Start=> data_field[0],
         d2_End=> data_field[2]);
END_IF;

Corpo IL

L'ultima revisione: 2021-06-21Feedback su questa paginaPanasonic hotline