F6_DGT

デジットデータ転送

sで指定された16ビットデータを、nで指定された転送方法に従って、dで指定された16ビットエリアに転送します。

パラメータ

入力

s (WORD, INT, UINT)

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

n (WORD, INT, UINT)

転送方法を指定するエリア

出力

d (WORD, INT, UINT)

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

解説

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

  • デジットとは、データを扱う際の 4ビット単位のデータを指します。この命令では、16ビットデータを4つに分割して扱います。下位4ビットから順に、第0デジット、第1デジット、第2デジット、第3デジットと呼びます。

    1. 16ビットデータ

    2. ビット

    3. デジット

  • nは、データを(1)転送先のどのデジットへ、(2)何デジット分、(3)転送元のどのデジットから転送するかを、以下のように指定します。

    1.  (1) 転送先: デジットの先頭位置

      0: 第0デジット

      1: 第1デジット

      2: 第2デジット

      3: 第3デジット

    2.  (2) 転送するデジット数

      0: 1デジット分(4ビット)

      1: 2デジット分(8ビット)

      2: 3デジット分(12ビット)

      3: 4デジット分(16ビット)

    3.  (3) 転送元: デジットの先頭位置

      0: 第0デジット

      1: 第1デジット

      2: 第2デジット

      3: 第3デジット

    下記の例は、nの指定によって変わるデジットデータ転送のパターンを示します。

    • 転送元の第1デジットを、転送先の第1デジットに転送するとき、n: 16#101を指定。

    • 転送元の第3デジットを、転送先の第0デジットに転送するとき、n: 16#003 (短縮形:16#3)を指定。

    • 転送元の複数のデジット(第2、第3デジット)を、転送先の複数のデジット(第2、第3デジット)に転送するとき、n: 16#212を指定。

    • 転送元の複数のデジット(第0、第1デジット)を、転送先の複数のデジット(第2、第3デジット)に転送するとき、n: 16#210を指定。

    • 転送元の4つのデジット(第0~第3デジット)が、転送先の4つののデジット(第0~第3デジット)へ、1デジット分ずらして転送されるとき、n: 16#130を指定。

POUヘッダ

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

	VAR
		start: BOOL:=FALSE;
		source: INT:=329;
			(*decimal 329 = 16#149*)
		specify_n: WORD:=16#111;
			(*Beginning from the end:
1: first hex. digit is digit 1, i.e. 4
1: copies 2 hex. digits, i.e. 14
1: destination is hex. digit 1*)
		output: INT:=0;
			(*16#140 = decimal 320*)
	END_VAR

POUボディ

変数startがON (TRUE)のとき、このファンクションが実行されます。この例では、ラダーダイアグラムボディの「ヘッダモニタ」ウィンドウで、変数のsourceoutputを16進表示でモニタしています。表示形式は、ツールバーのボタンにより変更することができます。

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_F,F6_DGT!,Instance,12,0,18,5,,?DEN?D@'s'?Dn?AENO?Cd);
B(B_VARIN,,source,8,2,10,4,);
B(B_VARIN,,specify_n,8,3,10,5,);
B(B_VAROUT,,output,18,2,20,4,);
B(B_CONTACT,,start,6,1,8,3,);
L(10,3,12,3);
L(10,4,12,4);
L(8,2,12,2);
L(1,2,6,2);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

STボディ

IF start then
    F6_DGT( s:= source,
         n:= specify_n,
         d=> output);
END_IF;

ILボディ

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