22.10.1 Dスクリプト / グローバルDスクリプトの制限事項

*1 通信サイクルタイムとは、表示器から接続機器にデータを要求して取り込むまでの時間です。内部デバイスのLS2037にBin形式で格納されます。単位は10msです。±10msの誤差があります。
複数の接続機器を使用している場合の各通信サイクルタイムは、[システム設定]-[周辺機器一覧]の[接続機器管理アドレス一覧]に表示される内部デバイスアドレスで確認できます。
5.4.14 システム設定[周辺機器一覧]の設定ガイド

*2 表示スキャンタイムとは、1画面の表示と演算処理にかかる時間です。内部デバイスのLS2036にBin形式で格納されます。単位はmsです。±10msの誤差があります。

メモリリンクとそれ以外のデバイスを使用した場合の起動条件の動作一覧

起動条件に指定したデバイスによって、画面切り替え直後または電源投入直後のDスクリプトの実行詳細は次の様になります。

O : 画面切替直後または電源投入直後に処理を実行します。

X : 画面切替直後または電源投入直後に処理を実行しません。

グローバルDスクリプト特有の制限事項

SIOポート操作の制限事項

BCD設定時の制限事項

演算中にBCDに変換できないデータ(Hex のA ~ F)がある場合は、実行を中止します。

A~Fのデータを扱わないようにしてください。

本原因で実行を中止した場合表示器内の共通リレー情報(LS2032)のビット7がONします。本ビットは電源をOFFにするかオフラインモードになるまで保持します。

例)

[w:[PLC1]D0200]=([w:[PLC1]D0300]<<2)+80

D300が3の場合、2ビット左にシフトすると0x000CとなりBCDとして扱うことができなくなり、プログラムの実行を中断します。

[w:[PLC1]D0200]=[w:[PLC1]D0300]<<2

D300が3の場合、2ビット左にシフトすると0x000Cとなりますが、演算を終了した結果なので0x000Cを格納して中断されません。

ゼロ割算に関する制限事項

演算子の割算"/"、剰余算"%"において0(ゼロ)で割る場合は、実行を中止します。ゼロで割らないようにしてください。

本原因で実行を中止した場合表示器内の共通リレー情報(LS2032)のビット8がONします。本ビットは電源をOFFにするかオフラインモードになるまで保持します。

代入の遅延に関する注意事項

代入にデバイスアドレスを使用する場合、表示器と接続機器は通信を行っているため、書き込みが遅延します。以下のような注意が必要です。

例)

[w:[PLC1]D0200]=[w:[PLC1]D0300]+1 // ...1
[w:[PLC1]D0201]=[w:[PLC1]D0200]+1 // ...2

1の命令文でD0200に(D0300+1)を代入しますが通信を行っているため時間がかかり、2の命令文ではD0200には1の演算結果はまだ代入されていません。このような場合は1の演算結果を1度LSエリアもしくはテンポラリワークアドレスに格納して実行するようプログラミングしてください。

[w:[#INTERNAL]LS0100]=[w:[PLC1]D0300]+1
[w:[PLC1]D0200]=[w:[#INTERNAL]LS0100]
[w:[PLC1]D0201]=[w:[#INTERNAL]LS0100]+1

負の数の扱いに関する注意事項

関数において、負の数を取り得ない引数*3に負の値を入力した場合、符号無し*4として動作します。

*3 例えば_CF_read()引数の「バイト数」の場合はデータを読み出すサイズの為、負の数を取り得ません。

*4 例えば-1の場合、16ビットでは65535、32ビットでは4294967295として扱われます。

同一Dスクリプト内の同一デバイスアドレス読み出しに関する注意事項

同じDスクリプト/グローバルDスクリプトで同一のデバイスアドレスを使用していても、Dスクリプト/グローバルDスクリプトが処理されるタイミングによって、デバイスアドレスに読み出される値が異なる場合があります。

この現象を回避するには、内部デバイスやテンポラリアドレスに一時的にデータを格納するように実行式をプログラミングしてください。

例)

内部デバイス(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]