F5_BTM

ビットデータ転送

実行条件ENがONのとき、sで指定した16ビットデータ中の任意の1ビットデータを、dで指定した16ビットエリア中の任意の1ビットに転送します。ビットの位置は、nの値で指定します。sで指定された16ビットデータは、内部で16ビットバイナリ形式に変換されて実行されます。

パラメータ

入力

s (WORD, INT, UINT)

16ビットエリア(転送元)

n (WORD, INT, UINT)

転送元と転送先のビット位置を指定

出力

d (WORD, INT, UINT)

16ビットエリア(転送先)

ビット2からビット15へデータ転送する前の転送先のデータ例:16#8888

  1.  (1) 転送元: ビット位置
  2.  (2) 転送先: ビット位置
  3.  (3) 演算結果: ビット位置

ビット15のビットが交換されます。この例での転送先の値: 16#7FFF

解説

  • F命令を使用する代わりに、対応するFP7命令を使用することをおすすめします。FP_MOVE_BITS ビットデータ転送

  • 変数 sd は同じデータ型としてください。

  • オペランドnは、以下のようにビットNo.を指定します。

    1.  (1) 転送元のビット位置
    2.  (2) 転送先のビット位置

      ビットNo. 0~3

      転送元ビットNo. (16#0~16#F)

      ビットNo. 4~7

      FP2/FP2SH/FP10SH: 転送ビット数(16#0~16#F)

      FP3: 使用不可

      ビットNo. 8~11

      転送先ビットNo. (16#0~16#F)

      ビットNo. 12~15

      無効

    例えば、n = 16#C01の場合、ビット位置ビット1からビット12 (16#C)へ、1ビットのデータが転送されます。

POUヘッダ

POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。 POUヘッダは全プログラム言語で使用できます。

	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

POUボディ

変数startがON (TRUE)のとき、このファンクションが実行されます。

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

STボディ

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

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 *)

最終修正日: 2019-05-27このページに関するフィードバックお問い合わせ窓口