接続機器のデバイスへ書き込む場合、起動条件は通信サイクルタイム以上の間隔をあけてください。
表示器内部の特殊リレーの表示スキャンカウンタなどを書き込みのトリガにし、接続機器のデバイスへの書き込みを頻繁に行うと、通信エラーやシステムエラーになる場合があります。
Dスクリプトの起動条件のビットをタッチでセットし、Dスクリプトの処理の中でそのビットをOFFする場合には、連続でタッチするとタイミングによってはビットの立ち上がりを検出できない場合があります。
Dスクリプトの起動条件式は、前回読み出した値と今回読み出した値とを比較して、起動条件が成立しているかを判断します。したがって、起動条件式の中で記憶するビットアドレスの値は、実行式の中で変更したとしても直後に反映されず、変更前の値のままとなっています。次のスキャンで変更後の値を読み出します。
例)タッチでトリガビット(LS010000)をONし、Dスクリプト内でOFFする場合
起動条件 : ビットON[#INTERNAL] LS010000
実行式 : clear([b:[#INTERNAL] LS010000])
Dスクリプト処理 タイミングチャート
例のようなDスクリプトをタッチのタイミングに依存せずに検出する方法として、次のように記述してください。
if()文を用いて起動条件を検出
タッチでセットするビットをif文で判断するようにします。if()文では、実行するたびに値を読み出して比較チェックをしています。
起動条件 : ビットON[#INTERNAL]LS203800 *1])
実行式 : if([b:[#INTERNAL]LS010000]==1)
{
clear([b:[#INTERNAL]LS010000])
:
:
*1 表示器内部のカウンタです。表示画面に設定されている部品処理がひととおり完了するたびにカウントアップします。
上記のようなDスクリプトの場合、連続してタッチ入力が行われても次項のタイミングチャートのように表示スキャンごとに値を読み出して条件が一致するかを判断するため、前回の値とは関係なく条件が一致すれば実行されます。
Dスクリプト処理 タイミングチャート