GXWORKS3 - SP.FWRITE, SP.FREADなどのファイルアクセスについて
三菱電機 FX5, IQ-Rにはログ出力機能があるが、制限が多いため"SP.FWITE"を使用することとした。
参考
FX-5 プログラミングマニュアル "jy997d54701w"
○概要
SDカードにcsvファイルを書き込み、または読み出しする方法
"SP.FWRITE", "SP.FREAD", "SP.FSTATUS"
*シミュレーションではエラーが出ます
ログを書き出す際は、以下の手順になると思います。
STATUSにてファイルの有無確認→無いならヘッダー書き込み→ログデータ書き込み
●書き込み "SP.FWRITE" - ページ505
(U) = U1 ←基本U1、複数個使用しエラーが出たらU2, U3に
(s1) = K2 ←SDカードしか使えないため、SDカードの"2"固定
(d1) ←ファイル設定。デバイスメモリを8個使用、例)D100-D107
D100 文字列csv出力なら"0130H(K304)"指定
D101 設定不要。書き込み結果が出力される。"0000H"で成功、その以外エラー
D102 設定不要。書き込みデータ数が出力される。
D103 基本"0"、文字を連続で同セルに書き込む場合のみ"1"
D104 データ追加なら"FFFFH(K-1)"、ファイルの先頭からなら"0"
D105 データ追加なら"FFFFH(K-1)"、ファイルの先頭からなら"0"
D106 何列書き込んで改行するか。A-Cセルなら"K3".A-Gなら"K7"
D107 csvは"K2"指定
(s2) ←ファイル名を格納。記述式 "\folder1\folder...\filename.csv" .csvは省略可。
デバイスアドレス指定なら形式をUnicodeに変換する必要があり、1文字1ワード必要
命令"SJIS2WS D1 D2"にてD1をUnicodeに変換し、D2に格納(下図)。
命令"SJIS2WS D1 D2"にてD1をUnicodeに変換し、D2に格納(下図)。
*"SJIS2WSB"(バイトオーダー有り)を使用すると、最初にスペースが入る。(s3) 書き込みデータ数 + 書き込むデータ
D200 書き込みデータ数。6セルなら"K6"。文字数ではない。
D201以降は書き込むデータ。ASCIIなら文字数(デバイスメモリ使用数)に注意。
2 ASCII(偶数)文字で2ワード必要(2 byte + 終了記号 1byte)となる。
3 ASCII(奇数)文字で2ワード必要(3 byte + 終了記号 1byte)となる。
D200 書き込みデータ数。6セルなら"K6"。文字数ではない。
D201以降は書き込むデータ。ASCIIなら文字数(デバイスメモリ使用数)に注意。
2 ASCII(偶数)文字で2ワード必要(2 byte + 終了記号 1byte)となる。
3 ASCII(奇数)文字で2ワード必要(3 byte + 終了記号 1byte)となる。
(d2) 完了時に1スキャンのみONするデバイス。
エラー時は "(d2) +1"がONする。
エラー時は "(d2) +1"がONする。
例)
●読み出し "SP.FREAD" - ページ545
規格をExcelファイル管理できます。
(U) = U1 ←基本U1、複数個使用しエラーが出たらU2, U3に
(s1) = K2 ←SDカードしか使えないため、SDカードの"2"固定
(d1) ←ファイル設定。デバイスメモリを8個使用、例)D100-D107
D100 文字列csv出力なら"0130H(K304)"指定
D101 設定不要。書き込み結果が出力される。"0000H"で成功、その以外エラー
D102 設定不要。書き込みデータ数が出力される。
D103 最大読み込みセル数。D102よりも大きくすること。D100"0130H"以外なら"0"固定
D104 読み出し開始点。ファイルの先頭からなら"0"、C1からなら"K3"
D105 読み出し開始点。ファイルの先頭からなら"0"、C1からなら"0"
(s1) = K2 ←SDカードしか使えないため、SDカードの"2"固定
(d1) ←ファイル設定。デバイスメモリを8個使用、例)D100-D107
D100 文字列csv出力なら"0130H(K304)"指定
D101 設定不要。書き込み結果が出力される。"0000H"で成功、その以外エラー
D102 設定不要。書き込みデータ数が出力される。
D103 最大読み込みセル数。D102よりも大きくすること。D100"0130H"以外なら"0"固定
D104 読み出し開始点。ファイルの先頭からなら"0"、C1からなら"K3"
D105 読み出し開始点。ファイルの先頭からなら"0"、C1からなら"0"
D106 何列読み込むか。A-Cセルなら"K3".A-Gなら"K7"
D107 csvは"K2"指定
(s2) ←ファイル名を格納。記述式 "\folder1\folder...\filename.csv" .csvは省略可。
D107 csvは"K2"指定
(s2) ←ファイル名を格納。記述式 "\folder1\folder...\filename.csv" .csvは省略可。
デバイスアドレス指定なら形式をUnicodeに変換する必要があり、1文字1ワード必要
命令"SJIS2WS D1 D2"にてD1をUnicodeに変換し、D2に格納(下図)。
命令"SJIS2WS D1 D2"にてD1をUnicodeに変換し、D2に格納(下図)。
*"SJIS2WSB"(バイトオーダー有り)を使用すると、最初にスペースが入る。
(d2) 格納先メモリ指定。先頭はデータ数となります。
(d2) + 1から格納開始。
(d3) 完了時に1スキャンのみONするデバイス。
エラー時は "(d3) +1"がONする。
●ファイル確認 "SP.FSTATUS" - ページ562
(d2) + 1から格納開始。
(d3) 完了時に1スキャンのみONするデバイス。
エラー時は "(d3) +1"がONする。
●ファイル確認 "SP.FSTATUS" - ページ562
(U) = U1 ←基本U1、複数個使用しエラーが出たらU2, U3に
(s1) = K2 ←SDカードしか使えないため、SDカードの"2"固定
(d1) ←ファイル設定。デバイスメモリを2個使用、例)D100-D101
D100 ファイル"0"、フォルダ"1"
D101 書き込み結果が出力される。"0000H"で成功、その以外エラー
(s2) ←ファイル名を格納。記述式 "\folder1\folder...\filename.csv" .csvは省略可。
デバイスアドレス指定なら形式をUnicodeに変換する必要があり、1文字1ワード必要
命令"SJIS2WS D1 D2"にてD1をUnicodeに変換し、D2に格納(下図)。
命令"SJIS2WS D1 D2"にてD1をUnicodeに変換し、D2に格納(下図)。
*"SJIS2WSB"(バイトオーダー有り)を使用すると、最初にスペースが入る。
(d2)
(d2)
コメント
コメントを投稿