このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン 最新のリビジョン 両方とも次のリビジョン | ||
howto:open_plc:digitally_analogout [2022/09/20 13:23] Staff_Ujiie [ON/OFF動作の設定1] |
howto:open_plc:digitally_analogout [2022/09/20 13:53] Staff_Ujiie [今後の対応] |
||
---|---|---|---|
行 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/ | + | * アナログ出力チャンネルでON/ |
\\ | \\ |