概要
デバイスのメモリを一括コピーします。パラメータ2で指定したコピー元アドレスから、パラメータ3で指定したバイト数分のデータをパラメータ1で指定したコピー先アドレスにコピーします。
コピー元アドレスの途中にNULL文字があっても指定バイト数のコピーを行います。コピー先アドレス末尾へのNULL文字の追加は行いません。
メモリコピー(文字列モード)はタグを登録している場合に使用できます。
書式
memcpystr (コピー先アドレス, コピー元アドレス, バイト数)
パラメータ1 : 接続機器アドレス、シンボル変数、内部デバイス
パラメータ2 : 接続機器アドレス、シンボル変数、内部デバイス
パラメータ3 : 数値(パラメータ3に設定できる範囲は1~640です。)
記述例
memcpystr ([w:[PLC1]TagName1], [w:[PLC1]TagName2], 5)
上記の例はPLC1のTagName2から5バイト分読み出して、PLC1のTagName1に書き込みます。
メモリコピー(文字列モード)(memcpystr)関数で内部デバイスに書き込むときは、ユーザーエリアのみ書き込めます。システムエリア(LS0000~LS0019)、特殊エリア(LS2032~LS2047)、予約エリア(LS2048~LS2095)は書き込むことができません。ただし、読み出すことは可能です。
データ型が[DATE_AND_TIME]のデバイスは設定できません。
パラメータ1、パラメータ2に16ビットデバイスを設定した場合、1デバイスを2文字として処理します。また、32ビットデバイスを指定した場合、1デバイスを4文字として処理します。Dスクリプトのビット長の設定には依存しません。
1デバイスあたりの格納文字数で割り切れないバイト数が指定された場合は次のように処理します。
例 memcpystr([w:[PLC1]W30.3000], [w:[PLC1]BD1000], 5)
(パラメータ1(16ビット長)、パラメータ2(32ビット長)、文字列データモード4の場合)
読み出し : 指定バイト数分のデータを読み出します。(0x11から0x55を読み出す)
書き込み : 指定バイト分のデータを書き込み、あまった領域には0を書き込みます。コピーされなかったデバイスはコピー前のデータのままです。(上記例の「0xAA」、「0xBB」)