機械や家電・リモコンなどの「とある設定値」を変更するため、上下ボタンが用意されているものがあります。その上下ボタンを押し続けることで設定の増減が次第に粗くなっていく機能があります。
FA(ファクトリーオートメーション)業界では、流量センサや圧力センサのしきい値を設定するために用意されているものがあります。
以下のようなイメージです。
上ボタンX0を押し続けると、設定値D2の増加量が次第に粗くなっていきます。逆に、下ボタンX1を押し続けると減少します。
どちらも、一度ボタンを離すと、増減量の粗さはもとに戻ります。
この記事では、上のGIFのような「上下ボタンを長押しすると設定値の増減量が次第に粗くなっていくラダープログラム」の例を解説します。
「こんなラダープログラム朝メシ前だぜ!」という方は記事をご覧になる前にラダープログラムを考えてみてください。
なお。この記事で作成しているラダープログラムは三菱電機製シーケンサFX3Gを想定しています。
目次
1. 仕様を整理する
「そんなのどうでもいいからラダープログラムだけ早く教えてくれ」という方は、 3. 作成したラダープログラム から解説しておりますので、そこまで飛ばして頂いてOKです。
先ほどの回路をこの記事では「長押し増減回路」と呼ぶことにします。
(記事を書いている時に私が考えました。)
先ほどのGOTは各デバイスを以下のように割り振っています。
設定値 | D2 |
上ボタン(設定値を増加) | X0 |
下ボタン(設定値を減少) | X1 |
仕様を整理するため増加部分と減少部分に大別して、まずは増加部分の仕様を整理します。
上ボタンを押している時の時間と増加量は以下のように定めました。
2秒未満 | +1 |
2秒以上・4秒未満 | +2 |
4秒以上・6秒未満 | +5 |
6秒以上・8秒未満 | +10 |
8秒以上 | +20 |
※時間と増加量は私が「こんなもんかなぁ」と適当に決めました。
上ボタンを押している時間をカウントする必要があるので、タイマT0に割り当てます。
タイマT0の入力条件をX0にすることで、上ボタンを押している時間をカウントします。
タイマT0のカウント値を定数を比較することで、押している時間毎に増加量をデータレジスタD0に格納します。
上ボタンX0がONしている間に増加量D0を設定値D2に加算し続けると「長押し増減回路」の増加部分ができます。
しかし、加算する条件をX0にしてしまうとラダープログラムのスキャン毎に加算命令が実行され、高速で設定値D2が増加してしまいます。
この対策として、X0がONしている間に0.3秒周期で1パルスだけONする接点を作ります。これは「自滅タイマ回路」を用いることで簡単に作ることができます。
上ボタンで増加する部分の仕様が明確になりました。下ボタンが押された場合も考え方は同じなので省略します。
文章だけで分かりづらく申し訳ありませんm(__)m
2. 長押し増減回路の仕様(明確なもの)
先ほど整理した仕様をまとめると以下のようになります。
下ボタン:X1を押すと設定値D2の値は減少する。
各ボタンを押し続けたときの増減量は以下のように次第に粗くなる。
<押している時間と増減量>
2秒未満 ⇒ 1
2秒以上・4秒未満 ⇒ 2
4秒以上・6秒未満 ⇒ 5
6秒以上・8秒未満 ⇒ 10
8秒以上 ⇒ 20
増減はボタンを押している間、0.3秒周期で実行される。
この仕様のラダープログラムを以下で解説します。
3. 作成したラダープログラム
それでは「長押し増減回路」のラダープログラムを作成します。
3-1. デバイスの割り当て
以下のようにデバイスを割り当てます。
設定値 | D2 |
上ボタン | X0 |
上ボタン押している時間 | T0 |
上ボタン増加量 | D0 |
上ボタン増加周期 | T1 |
下ボタン | X1 |
下ボタン押している時間 | T10 |
下ボタン減少量 | D10 |
下ボタン減少周期 | T11 |
増減量D0・D10や、周期T1・T11は一つのデバイスでもできますが、今回は別に分けることにしました。
3-2. ラダープログラム
作成したラダープログラムは以下のようになります。増加部分と減少部分の2つに分けています。
<↓増加部分>
<↓減少部分>
3-3. 画面(GOT)
作成したGOTの動作は以下のようになります。記事の冒頭のものと同じですが改めて載せておきます。
4. ラダープログラムの解説
上ボタンの増加部分の解説をします。
タイマT0で上ボタンX0を押している時間をカウントしています。同時に、T1の自滅タイマ回路を作っています。タイマT1の設定はK3なので0.3秒毎にT1のa接点が1スキャンのみONします。
今回の長押し増減回路の場合、押している時間は8秒まで計測できればOKなのでタイマT0の設定値はK80以上にします。
私の場合、タイマの接点を使用せずに現在値のみ使用するものはあえてK9999などの大きい数値を入れるようにしています。
自滅タイマ回路については以下のページで解説しておりますので、宜しければご覧ください。
自滅タイマ回路タイマT0の値と定数を接点形比較命令で比較演算を行い、比較結果に応じてデータレジスタD0に増加量を転送しています。
例えば、上ボタンを押し続けて6秒から8秒の間はD0にK10が転送されます。
三菱FXシリーズでは、M8000は「RUN中は常時ONする」特殊デバイスです。M8000はなくても問題ありませんが、このような類似処理はまとめることがよくあります。(私はこの方が見やすいと感じます。)
接点が比較命令・転送命令については以下のページで解説しておりますので、宜しければご覧ください。
【三菱FXシリーズ】接点形比較命令の指令方法とラダープログラム例 【三菱FXシリーズ】転送(MOV)命令の指令方法とラダープログラム例自滅タイマ回路で作ったT1のa接点は「X0がONしている間、0.3秒周期で1スキャンのみON」します。
0.3秒毎に増減量D0を設定値D2に加算を行います。
下ボタンの減少部分はこの加算命令(ADD)が減算命令(SUB)になります。
加算命令・減算命令については以下のページで解説しておりますので、宜しければご覧ください。
【三菱FXシリーズ】加算(ADD)命令の指令方法とラダープログラム例 【三菱FXシリーズ】減算(SUB)命令の指令方法とラダープログラム例5. おわりに
長押し増減回路について解説しました。
少し長くなってしまいましたが、最後までご覧いただきありがとうございます。
以下の参考書はラダープログラムの色々な「定石」が記載されており、実務で使用できるノウハウが多く解説されています。私がラダープログラムの参考書として自信をもってオススメできるものです。
ただし、ラダープログラムやPLCといった電気・制御設計は参考書やWebサイトのみでの学習には必ずどこかで限界が来ます。
各メーカが販売しているPLCやプログラム作成のアプリケーションを揃えるには安くても十万円以上の大きな費用が掛かり、独学は現実的ではありません。
ラダープログラムの一番現実的な学習方法は「実務で経験を積む」ことです。電気・制御設計者はこれから更に必要な人材になり続けますので、思い切って転職する選択肢もあります。
『doda』といった大手求人(転職)サイトには電気・制御設計の求人が数多く紹介されています。※登録は無料です。
「スキルこそ今後のキャリアを安定させる最も大切な材料」と考える私にとって電気・制御設計はとても良い職業だと思います。キャリアの参考になれば幸いです。