- LD言語でプログラムするとき、QuickLDエディタを使うと、ファンクションブロックの入力パラメータに"en"、出力パラメータに"eno"という名前のものが自動的につくことがある。これは何か?
ファンクションブロックには最初の入力パラメータがブール型でないものがあります。
この場合でも最初のパラメータは必ずラングに接続される必要があるため、自動的に "en" が生成されます。
この場合、"en"入力がTRUE状態の時のみファンクションブロックが実行されます。
同様に、ファンクションブロックの最初の出力パラメータがブール型でない場合も自動的にパラメータ"eno"が生成され、ラインに接続されます。
...
- LD言語で 何行目、何ステップ目かの表示は可能か?
QuickLDのエディタでは、現在の編集位置の行・列位置が表示されるので、プログラムが何行あるかを知ることはできます。
LD/FBDのエディタは、行数を簡単に調べる方法はありませんが、現在の編集位置が座標で表示されます。
ただ、いずれも今何個目の命令かを表示することは出来ません。
...
- LD言語で、ある接点がFALSEの場合、それ以降のファンクションブロックを実行しないように出来るか?
例を示します。
FBD言語の場合
条件が成立しない場合は実行したい応用命令の次のラベル(L000)までジャンプさせます。
FBD言語では,市販のLD言語のように,接点の値で続く行を実行させる/させないような記述は出来ません。そこで、図のように「ラベルへジャンプ」命令を使用します。
>>記号がジャンプ命令です。○印は論理の反転を表します。
LD言語の場合
代入には"1"(assign)ファンクションを使います。
ファンクション「1」のパラメータenが実行する・しないを決定します。
enoはダミーのパラメータです。
ST言語の場合
条件判断のステートメントIF~END_IFを使用します。
IF (X0 OR X2) AND X1 THEN
D1 := 100;
END_IF;
...
- LD言語で、立ち上がり・立ち下がりの出力はあるか?
立ち上がり検出接点と立ち下がり検出接点を使います。
下図の例では、
IX0_1がTRUEになった1サイクル中,QX1_1がTRUEになります。
IX0_2がFALSEになった1サイクル中,QX1_2がTRUEになります。
...
- LD言語で自己保持回路を記述しているが、値を保持しないことがある
ISaGRAFは一般的なPLCと同様に、サイクルの概念をもっています。I/Oの値は1サイクルのプログラムを実行する直前に取り込むだけです。
つまり、サイクルの周期より短いバルス入力は取りこぼすことがあります。
ISaGRAFの1サイクルは次のようになります。
入力変数のI/Oの値を取り込み、メモリ上にコピーする
↓
シーケンスプログラム実行。I/Oの値はメモリ上にコピーされたものを使う。
↓
プログラム中に書き込みのあった出力変数のI/Oの値を書き込む
...
- LD言語でプログラムするとき、QuickLDエディタを使うと、ファンクションブロックの入力パラメータに"en"、出力パラメータに"eno"という名前のものが自動的につくことがある。これは何か?
ファンクションブロックには最初の入力パラメータがブール型でないものがあります。
この場合でも最初のパラメータは必ずラングに接続される必要があるため、自動的に "en" が生成されます。
この場合、"en"入力がTRUE状態の時のみファンクションブロックが実行されます。
同様に、ファンクションブロックの最初の出力パラメータがブール型でない場合も自動的にパラメータ"eno"が生成され、ラインに接続されます。
...
- LD、FBD、IL、ST言語はどのような場合使うのが良いか?
一概には言えませんが、下記のような使い分けが考えられます。
LD :接点、コイルだけで制御する場合
FBD:ファンクションブロック(複数の戻り値を持つ関数)を利用したい場合
LD言語とあわせて、応用命令を使う場合
IL :高速かつ小さなサイズのプログラムを作る場合
ST :C言語になれている場合
条件判断文が多数現れる場合
タイマー変数のスタート・ストップを行う場合
繰り返し命令を使う場合
...
- LD言語で自己保持回路を記述しているが、値を保持しないことがある
ISaGRAFは一般的なPLCと同様に、サイクルの概念をもっています。I/Oの値は1サイクルのプログラムを実行する直前に取り込むだけです。
つまり、サイクルの周期より短いバルス入力は取りこぼすことがあります。
ISaGRAFの1サイクルは次のようになります。
入力変数のI/Oの値を取り込み、メモリ上にコピーする
↓
シーケンスプログラム実行。I/Oの値はメモリ上にコピーされたものを使う。
↓
プログラム中に書き込みのあった出力変数のI/Oの値を書き込む
...
- LD言語でプログラムするとき、QuickLDエディタを使うと、ファンクションブロックの入力パラメータに"en"、出力パラメータに"eno"という名前のものが自動的につくことがある。これは何か?
ファンクションブロックには最初の入力パラメータがブール型でないものがあります。
この場合でも最初のパラメータは必ずラングに接続される必要があるため、自動的に "en" が生成されます。
この場合、"en"入力がTRUE状態の時のみファンクションブロックが実行されます。
同様に、ファンクションブロックの最初の出力パラメータがブール型でない場合も自動的にパラメータ"eno"が生成され、ラインに接続されます。
...
- LD言語で,ある接点がFALSEの場合、それ以降のファンクションブロックを実行しないように出来るか?
例を示します。
FBD言語の場合
条件が成立しない場合は実行したい応用命令の次のラベル(L000)までジャンプさせます。
FBD言語では,市販のLD言語のように,接点の値で続く行を実行させる/させないような記述は出来ません。そこで、図のように「ラベルへジャンプ」命令を使用します。
>>記号がジャンプ命令です。○印は論理の反転を表します。
LD言語の場合
代入には"1"(assign)ファンクションを使います。
ファンクション「1」のパラメータenが実行する・しないを決定します。
enoはダミーのパラメータです。
ST言語の場合
条件判断のステートメントIF~END_IFを使用します。
IF (X0 OR X2) AND X1 THEN
D1 := 100;
END_IF;
...
- LD言語で立ち上がり・立ち下がりの出力はあるか?
立ち上がり検出接点と立ち下がり検出接点を使います。
下図の例では、
IX0_1がTRUEになった1サイクル中,QX1_1がTRUEになります。
IX0_2がFALSEになった1サイクル中,QX1_2がTRUEになります。
...
- LD言語で 何行目、何ステップ目かの表示は可能か?
QuickLDのエディタでは、現在の編集位置の行・列位置が表示されるので、プログラムが何行あるかを知ることはできます。
LD/FBDのエディタは、行数を簡単に調べる方法はありませんが、現在の編集位置が座標で表示されます。
ただ、いずれも今何個目の命令かを表示することは出来ません。
...