外部ストレージを使用する際は、必ず次の制限事項もあわせてご確認ください。
5.6.3 外部ストレージを使用する際の制限事項
使用できるデバイスアドレスは、LSエリアとUSRエリア(拡張ユーザエリア)のみです。
Dスクリプト、グローバルDスクリプトのテンポラリアドレスと拡張スクリプトのテンポラリアドレスは別管理となります。このため、Dスクリプトのテンポラリアドレスの内容を変更しても、拡張スクリプトのテンポラリアドレスには反映されません。
Dスクリプト/グローバルDスクリプトで作成したユーザ定義関数をCallすることはできますが、関数中で内部デバイス以外のデバイスアドレスをアクセスした場合には、正常に動作しない場合があります。また、ユーザ定義関数は、転送時(表示器用のデータ生成時)に、Dスクリプト/グローバルDスクリプト/拡張スクリプトと別々に生成されます。
関数から関数の呼び出しは最大9階層です。
関数呼び出しは、254個です。(Callで使用できる関数の数は254個です。)
拡張スクリプトは部品数のカウントには影響しません。
拡張スクリプトのみ対応の関数(文字列操作関数など)をDスクリプトおよびグローバルDスクリプトで呼び出しても動作しません。
データ形式はBinのみです。BCDは設定できません。
送信バッファは2048バイト、受信バッファは8192バイトあります。受信バッファサイズの80%以上のデータを受信すると、ER信号(出力)、RS信号(出力)がOFFになります。
同時に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ファイル操作/USBファイル操作については、以下の制限があります。
ファイル名は、8.3フォーマット(ファイル名8文字、拡張子3文字)のみ使用できます。
ルートフォルダ(ディレクトリ)を指定する場合には、フォルダ名に" "(空文字列)を指定してください。
拡張スクリプト内の同一デバイスアドレス読み出しに関する注意事項
同じ拡張スクリプトで同一のデバイスアドレスを使用していても、拡張スクリプトが処理されるタイミングによって、デバイスアドレスに読み出される値が異なる場合があります。
この現象を回避するには、内部デバイスやテンポラリアドレスに一時的にデータを格納するように実行式をプログラミングしてください。
例)
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