F5_BTM

Spostamento del bit di un dato

1 bit del dato o valore costante a 16 bit specificato da s viene copiato in un bit dell'area a 16 bit specificata da d sulla base del contenuto specificato da n se il trigger EN è in stato TRUE. Quando la costante equivalente a 16 bit è specificata da s, l'operazione di spostamento del bit del dato viene eseguita internamente convertendola in un'espressione binaria a 16 bit.

Parametri

Ingresso

s (WORD, INT, UINT)

Area a 16 bit di origine

n (WORD, INT, UINT)

Specifica le posizioni bit di origine e di destinazione

Uscita

d (WORD, INT, UINT)

Area a 16 bit di destinazione

Esempio

Spiegazione con valore source s=16#8888, posizione bit source 02 e posizione bit di destinazione 0F definiti da n=16#0F02

  1.  (1) Valore source 16#8888 con posizione bit source 02
  2.  (2) Valore target 16#FFFF con posizione bit target 15
  3.  (3) Valore risultato 16#7FFF con bit 02 spostato su bit 15

Note

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

  • Le variabili s e d devono presentare lo stesso tipo di dato.

  • L'operando n specifica il numero di bit come segue:

    16#

    0

    F

    0

    2

     

    Posizione bit source

    Posizione bit destinazione

    N. bit da 0 a 3

    N. bit source (da 16#0 a 16#F)

    N. bit da 4 a 7

    FP2/2SH e 10SH: numero di bit da trasferire (da 16#0 a 16#F)

    FP3: non valido

    N. bit da 8 a 11

    N. bit destinazione (da 16#0 a 16#F)

    N. bit da 12 a 15

    Non valido

    Per esempio, leggendo da destra, n = 16#C01 si sposterebbe dalla posizione bit uno, un bit verso la posizione bit 12 (16#C).

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*)
		input_value: WORD:=2#1000100010001000;
		copy_operand: WORD:=16#0F02;
			(*digit no.1 and no.3 are invalid, digit no.0 locates
the position of the source bit (here: 2),
digit no.2 locates the position of the destination bit
(here: 15)*)
		output_value: WORD:=2#1111111111111111;
			(*result after a 0->1 leading
edge from start:
2#0111111111111111*)
	END_VAR

Corpo del POU

Quando la variabile start è impostata su TRUE, la funzione viene eseguita.

Corpo LD

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,F5_BTM,,12,0,19,5,,?DEN?D@'s'?Dn?AENO?Cd);
B(B_CONTACT,,start,8,1,10,3,);
B(B_VARIN,,input_value,10,2,12,4,);
B(B_VARIN,,copy_operand,10,3,12,5,);
B(B_VAROUT,,output_value,19,2,21,4,);
L(1,2,8,2);
L(10,2,12,2);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corpo ST

IF start then
    F5_BTM( s:= input_value,
         n:= copy_operand,
         d=> output_value);
END_IF;

Corpo IL

LD

start

(* EN = start; Starting signal for the F5_BTM function. *)

F5_BTM

input_value, copy_operand, output_value

(* s = input_value (source) *)

(* n = copy_operand; e.g. Var_1 = 16#0A0B *)

(* 11 source bit (B) Þ 10 destination bit (A) *)

(* d = output_value (destination) *)

ST

out

(* option *)

L'ultima revisione: 2024-12-18Feedback su questa paginaPanasonic hotline