8点の接点を監視し、最初にONした接点の番号を得るには?


下記のようなファンクションをST言語で作成します。

パラメータ


プログラムコード
if X0 <> 0 then (* すでに判定済み *)
getfast := X0; (* その値を返す *)
else
if in1 then getfast:=1;
elsif in2 then getfast:=2;
elsif in3 then getfast:=3;
elsif in4 then getfast:=4;
elsif in5 then getfast:=5;
elsif in6 then getfast:=6;
elsif in7 then getfast:=7;
elsif in8 then getfast:=8;
end_if;
end_if;

解説
このファンクションの入力パラメータ X0 には,前回の判定結果を整数値で入力します。その値が0であれば初めて判定する、という意味ですし、0でなければいずれかの接点がすでにオンしているということになります。
ファンクションでは入力されている接点を順に見てゆき,TRUEになっているものがあればその番号を返します。
なお、このファンクションはISaGRAFのサイクルタイムより短い時間で変化するI/Oでは検出結果に信頼性はありません。

プログラムの使い方
例えば、下記のようになります。
最終更新:
2009-03-19 12:15
改訂:
1.0
評価点数:0 (0 件の投票)
Chuck Norris has counted to infinity. Twice.

最も人気の FAQ RSS

  1. LD言語で、ある接点がFALSEの場合、それ以降のファンクションブロックを実行しないように出来るか? (44518 回の閲覧)
  2. SFC要素の「ステップ」と「トランジション」の意味と役割を教えてください。 (43450 回の閲覧)
  3. ISaGRAF WorkbenchをWindows 7で使用するにはどうしたらよいでしょうか? (40942 回の閲覧)
  4. ISaGRAFはIEC1131-3のシステム定義に準拠しているか? (38994 回の閲覧)
  5. PLCプログラムをより早く動かすにはどうすればよいですか? (38830 回の閲覧)
  6. LD言語で、立ち上がり・立ち下がりの出力はあるか? (36890 回の閲覧)
  7. VxWorksターゲットにおける変数管理の留意点について (36389 回の閲覧)
  8. 日立製作所製SHマイコン用コンパイラ使用時の注意事項 (35595 回の閲覧)
  9. Cファンクション/ファンクションブロックの"Hidden" パラメータとはどのようなものか (35530 回の閲覧)
  10. FBD/LD言語で同じ行に複数の演算がある場合の実行順序は? (33527 回の閲覧)

最近の FAQ RSS

  1. ファンクションブロックはネストできますか。 (2016-08-05 15:07)
  2. Cファンクション/ファンクションブロックの"Hidden" パラメータとはどのようなものか (2015-01-30 14:24)
  3. 前のISaGRAFで作成したプロジェクトをインポートしたら、コメントが文字化けを起こしています。 (2014-05-07 06:52)
  4. 前のバージョンで作成したプロジェクトは読み込めますか。 (2014-03-07 07:46)
  5. ISaGRAFでコンフィグレーション、リソースそれにPOUはそれぞれいくつ作成できますか。 (2014-03-07 02:06)