このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
howto:open_plc:digitally_analogout [2022/09/20 13:16] Staff_Ujiie [アナログ出力をデジタルに使う] |
howto:open_plc:digitally_analogout [2022/09/20 14:19] Staff_Ujiie [今後の対応] |
||
---|---|---|---|
行 1: | 行 1: | ||
====== アナログ出力をデジタルに使う ====== | ====== アナログ出力をデジタルに使う ====== | ||
- | [[activities/ | + | [[activities/ |
\\ | \\ | ||
行 6: | 行 6: | ||
==== アナログ出力の設定方法 ==== | ==== アナログ出力の設定方法 ==== | ||
- | * さて、OpenPLCでのPLCプログラムのアナログ出力ですが、検索して探してもあまり情報が見つからず、見つかったサンプルの使い方でラダー図に書き加えてみて、はたと困りました。 | + | * さて、OpenPLCでのPLCプログラムのアナログ出力の使い方ですが、検索して探してもあまり情報が見つからず、見つかったサンプルの使い方でラダー図に書き加えてみて、はたと困りました。 |
- | * {{ : | + | * {{ : |
\\ | \\ | ||
==== ON/ | ==== ON/ | ||
行 14: | 行 14: | ||
* {{ : | * {{ : | ||
- | * と思ってそのようにプログラムを作成して、デバッグでチェックしてみると、エディター内のデバッグ用の2つの画面で結果が異なって出ています。イネーブルONで出力もONになるのですが、その後イネーブルOFFになると1つの画面ではMOVEの出力は0になっていますが、もう一方の画面ではアナログ出力が65535のまま。どっちが正しいのかわかりません。\\ \\ <fs small> | + | * と思ってそのようにプログラムを直して、シミュレーションしデバッグ画面でチェックしてみると、エディター内のデバッグ用の2つの画面で結果が異なって出ています。イネーブルONで出力もONになるのですが、その後イネーブルOFFになると、1つの画面ではMOVEの出力は0になっていますがもう一方の画面ではアナログ出力が65535のまま。どっちが正しいのかわかりません。\\ \\ <fs small> |
- | * 一見プログラムのバグにも思えるこの辺の動作については、OpenPLCフォーラムの[[https:// | + | * 一見プログラムのバグにも思えるこの辺の動作については、OpenPLCフォーラムの[[https:// |
+ | |||
+ | * 上記のシミュレーションでも、機能ブロックの停止時にアナログ出力に0が上書きされないので、停止前の値65535が保持されたままになっているということでしょう。 | ||
* 後で実機でもこのプログラムを流して試して見ましたが、LEDは点きっぱなしになり消灯しませんでした。 | * 後で実機でもこのプログラムを流して試して見ましたが、LEDは点きっぱなしになり消灯しませんでした。 | ||
行 27: | 行 29: | ||
* アナログ出力では、送られてきた数値に比例して出力を増減させます。数値が0のときが出力0で、OFFと同じことになります。 | * アナログ出力では、送られてきた数値に比例して出力を増減させます。数値が0のときが出力0で、OFFと同じことになります。 | ||
- | * そのため、別のやり方として**SEL**(2値選択)という機能ブロックを使えばよいのではと思いつき、入力がOFFのときは0(0%)、ONのときは65535(100%)を選んでアナログ出力に送ってやる形にしてみたらうまくいきました。これだと機能ブロックはずっと動作し続けています。\\ こちらの方が処理としても自然であり、採用することにしました。\\ \\ <fs small> | + | * そのため、別のやり方として**SEL**(2値選択)という機能ブロックを使えばよいのではと思いつき、入力がOFFのときは0(0%)、ONのときは65535(100%)を選んでアナログ出力に送ってやる形にしてみたらうまくいきました。これだと機能ブロックはずっと動作し続けています。\\ こちらの方が処理としても自然であり、採用することにしました。\\ \\ <fs small> |
\\ | \\ | ||
- | ===== 今後の対応 ===== | + | ===== 結論と今後の対応 ===== |
+ | |||
+ | * ON/ | ||
+ | |||
+ | * 機能ブロックの**イネーブル制御**を使うときは、出力先の動作に要注意。__機能を停止したからといってその先のアナログ出力が0になるわけではありません。__ | ||
- | * アナログ出力チャンネルでON/ | + | * この先は、アナログ出力に与える数値をいろいろに変化させるやり方を検討します。 |
\\ | \\ |