外部ストレージを使用する際は、必ず次の制限事項もあわせてご確認ください。
5.6.3 外部ストレージを使用する際の制限事項
使用できるデバイスアドレスは、LSエリアとUSRエリア(拡張ユーザエリア)のみです。
Dスクリプト/グローバルDスクリプトで作成したユーザー定義関数をCallすることはできますが、関数中で内部デバイス以外のデバイスアドレスをアクセスした場合には、正常に動作しない場合があります。また、ユーザー定義関数は、転送時(表示器用のデータ生成時)に、Dスクリプト/グローバルDスクリプト/拡張スクリプトと別々に生成されます。
関数から関数の呼び出しは最大9階層です。
関数呼び出しは、254個です。(Callで使用できる関数の数は254個です。)
拡張スクリプトは部品数のカウントには影響しません。
拡張スクリプトのみ対応の関数(文字列操作関数など)をDスクリプトおよびグローバルDスクリプトで呼び出しても動作しません。
データ形式はBinのみです。BCDは設定できません。
送信バッファは2048バイト、受信バッファは8192バイトあります。フロー制御を行う場合、受信バッファに空き領域が残り少なくなると(受信バッファの使用容量が75%以上)、表示器から接続機器に、送信の一時中断を要求します。空き容量が十分になると(受信バッファの使用容量が30%未満)、送信の再開を要求します。
同時にDスクリプト/グローバルDスクリプト、拡張スクリプトを選択することはできません。下表の組み合わせに注意してください。
拡張SIO設定 |
Dスクリプトまたはグローバル Dスクリプト用の拡張SIO関数 |
拡張スクリプト用の拡張SIO関数 |
---|---|---|
Dスクリプト/グローバルDスクリプト |
O動作可能です |
X動作しません |
拡張スクリプト |
X動作しません |
O動作可能です |
文字列設定の表記について
_strset()命令などで文字列を使用する場合、文字列をダブルクォーテーション(")で囲む表記となります。この文字列にダブルクォーテーション(")自身を表したい場合は、\記号を付加して「\"」という表記にします。\記号単独を表記する方法はありませんので、文字コード形式の設定(_strset (databuf0,92))などを利用してください。
例)
"ABC\"DEF"→ABC"DEF
"ABC\DEF"→ABC\DEF
"ABC\\"DEF"→ABC\"DEF
"ABC\\DEF"→ABC\\DEF
拡張SIOの専用バッファdatabuf0、databuf1、databuf2、databuf3のサイズはすべて1Kバイトになります。
パラメータに使用する文字列では大文字/小文字の区別がありません。
拡張スクリプトでアクセスタイプを指定したデバイスアドレス使用する場合、設定できる命令や演算子は以下のとおりです。
オフセットアドレス
加算(+)、減算(-)、余り(%)、掛け算(*)、割り算(/)、および代入(=)
以下の文字はフォルダ名、ファイル名に指定することはできません。使用した場合エラーとなります。
: , = + / " [ ] | < > ? [スペース]
ただし、ファイルコピー関数の場合は、以下の文字が使用できません。
: , = + / " [ ] | < > ? ~ * \
フォルダ名、ファイル名を設定するときは、システム設定[本体設定]-[表示設定]の[システムの言語設定]で設定した言語を使用してください。システムの言語と異なる言語を使用している場合、指定した文字にならないことがあります。
CFファイル操作、SDファイル操作、SD/CFastファイル操作、USBファイル操作については、以下の制限があります。
ファイル名は、8.3フォーマット(ファイル名8文字、拡張子3文字)のみ使用できます。
ルートフォルダ(ディレクトリ)を指定する場合には、フォルダ名に" "(空文字列)を指定してください。
アクセスするフォルダ内のファイル数は最大100ファイルまでにしてください。その他の機能の動作が遅くなる場合があります。
拡張スクリプトで描画関数を使用する場合は、_wait関数やifなどの記述式を使用したスクリプトを作成してください。
描画関数のみの拡張スクリプトでは、表示更新処理にかかる負荷が大きくなり、スクリプトの処理速度が低下する場合があります。処理速度が低下した時は、LS9101[拡張スクリプトエラーステータス]のビット5がONになります。スクリプトの実行式を修正した上で、再度転送してください。
拡張スクリプト内の同一デバイスアドレス読み出しに関する注意事項
同じ拡張スクリプトで同一のデバイスアドレスを使用していても、拡張スクリプトが処理されるタイミングによって、デバイスアドレスに読み出される値が異なる場合があります。
この現象を回避するには、内部デバイスやテンポラリアドレスに一時的にデータを格納するように実行式をプログラミングしてください。
例)
USRエリアを使用した場合
[w:[#INTERNAL]USR20000]=[w:[#MEMLINK]0100]
[w:[#INTERNAL]USR00000]=[w:[#INTERNAL]USR20000]
[w:[#INTERNAL]USR00001]=[w:[#INTERNAL]USR20000]
テンポラリアドレスを使用した場合
[t:0000]=[w:[#MEMLINK]0100]
[w:[#INTERNAL]USR00000]=[t:0000]
[w:[#INTERNAL]USR00001]=[t:0000]
組込み関数は実行式の処理中に引数の値が書き変わっても影響を受けない関数ですが、以下の関数は影響を受ける場合があります。
これらの関数を使用する場合は実行式の処理中に引数の値が書き変わらないように、実行式をプログラミングしてください。
memring
_memshift
_memsearch