MOVE_BYTES

バイトデータを移動

このファンクションは、iNumberOfBytesで指定されたバイト数を、SourceDataからDestDataへ転送します。転送元のバイトオフセットはiSourceByteOffset、転送先のバイトオフセットはiDestByteOffsetで指定します。

転送元バイトオフセットおよび転送先バイトオフセットは、最初のバイトを基準にしており、0から始まります。

入力

SourceData (ANY) BOOLデータを含まない、すべての単純なデータ型および派生データ型(ARRAY、DUT)

バイトが取得された転送元データ

iSourceByteOffset (INT, DINT, UINT, UDINT)

転送元データの0から始まる最初のバイトを基準にしたバイトオフセット。0以上である必要があります

iNumberOfBytes (INT, DINT, UINT, UDINT)

転送元データから転送先データに移動されるバイト数。0以上である必要があります

iDestByteOffset (INT, DINT, UINT, UDINT)

転送先データの0から始まる最初のバイトを基準にしたバイトオフセット。0以上である必要があります

入出力

DestData (ANY) BOOLデータを含まない、すべての単純なデータ型および派生データ型(ARRAY、DUT)

バイトが書き込まれる転送先データ

解説

  • Control FPWIN Pro7はアクセスするデータの有効性をチェックしないため、入力データの有効性をチェックしてください。

  • 転送元バイトエリアと転送先バイトエリアが重複していないことを確認してください。

POUヘッダ

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

	VAR
		bMoveToWordBoundary: BOOL:=FALSE;
		awSourceByteData: ARRAY [0..7] OF WORD:=[16#6160,16#6362,16#6564,16#6766,16#6968,16#6b6a,16#6d6c,16#6f6e];
		awDestByteData: ARRAY [0..7] OF WORD:=[8(16#FFFF)];
		iSourceByteOffset3: INT:=3;
		iDestByteOffset9: INT:=9;
		iNumberOfBytes5: INT:=5;
		iNumberOfBytes4: INT:=4;
		bMoveFromWordBoundary: BOOL:=FALSE;
	END_VAR

LDボディ

変数bMoveToWordBoundaryまたはbMoveFromWordBoundaryTRUEに設定されると、ファンクションが実行されます。

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 10 ;
        NETWORK_BODY
B(B_COMMENT,,Move bytes to word boundary:,1,0,29,1,);
B(B_CONTACT,,bMoveToWordBoundary,8,3,10,5,);
B(B_F,E_MOVE_BYTES!,,19,2,30,10,,?DEN?DSourceData?DiSourceByteOffset?DiNumberOfBytes?DiDestByteOffset?DDestData?ADestData?AENO);
B(B_VARIN,,awSourceByteData,17,4,19,6,);
B(B_VARIN,,iSourceByteOffset3,17,5,19,7,);
B(B_VARIN,,iNumberOfBytes5,17,6,19,8,);
B(B_VARIN,,2,17,7,19,9,);
B(B_VARIN,,awDestByteData,17,8,19,10,);
L(1,0,1,10);
L(1,4,8,4);
L(10,4,19,4);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 10 ;
        NETWORK_BODY
B(B_COMMENT,,Move bytes from word boundary:,1,0,29,1,);
B(B_CONTACT,,bMoveFromWordBoundary,8,3,10,5,);
B(B_F,E_MOVE_BYTES!,,19,2,30,10,,?DEN?DSourceData?DiSourceByteOffset?DiNumberOfBytes?DiDestByteOffset?DDestData?ADestData?AENO);
B(B_VARIN,,awSourceByteData,17,4,19,6,);
B(B_VARIN,,2,17,5,19,7,);
B(B_VARIN,,iNumberOfBytes4,17,6,19,8,);
B(B_VARIN,,iDestByteOffset9,17,7,19,9,);
B(B_VARIN,,awDestByteData,17,8,19,10,);
L(1,0,1,10);
L(1,4,8,4);
L(10,4,19,4);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

STボディ

// Move bytes to word boundary:
if (bMoveToWordBoundary) then
	MOVE_BYTES(	SourceData := awSourceByteData, 
				iSourceByteOffset := iSourceByteOffset3, 
				iNumberOfBytes := iNumberOfBytes5, 
				iDestByteOffset := 2, 
				DestData := awDestByteData);
end_if;

// Move bytes from word boundary:
if (bMoveFromWordBoundary) then
	MOVE_BYTES(	SourceData := awSourceByteData, 
				iSourceByteOffset := 2, 
				iNumberOfBytes := iNumberOfBytes4, 
				iDestByteOffset := iDestByteOffset9, 
				DestData := awDestByteData);
end_if;

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