予約ストック回路とは、実行中の処理とは別に「次に行う処理を溜めておく」回路のことです。次に行う処理を予約としてストックしておくことから予約ストック回路と呼んでいます。※私が勝手に付けたので一般的な名称ではありません。
この記事では、簡単な予約ストック回路を用いてデバイスデータを目標値に追従させるラダープログラム例を解説します。
インターロックが不十分な部分もありますがご了承くださいm(__)m
この記事中のラダープログラムはGX Works2で作成しており、プロジェクトのPCシリーズはFXCPU、PCタイプはFX3G/FX3GCに設定してあります。
目次
1. 予約ストック回路の仕様説明とGOT
作成したGOTの仕様やラダープログラムについて解説します。
作成した予約ストック回路の仕様
仕様は以下のようになります。
目標値(D200)の値に対して、現在値(D210)の値を追従させる。
追従する方法は現在値を0.2秒毎に1ずつ加算または減算する。
現在値が目標値と一致すると、3秒間停止して処理完了とする。
【予約ストック部分】
目標値はストック(D100)~(D107)しておき、最初のストック(D100)を目標値に常時転送する。
処理が完了すると、ストック(D100)~(D107)の値は一つずつシフトして【処理部分】の動作を繰り返す。
シフトした際、最後のストック(D107)は”0”になる。
【起動と停止】
上記の処理は起動スイッチ(M110)が押されると起動して、停止スイッチ(M120)が押されるとその場で停止する。
【ランプ表示】
現在値を加算している時は、上昇ランプ(M30)を点灯させる。
現在値を減算している時は、下降ランプ(M50)を点灯させる。
現在値が目標値と一致すると、一致ランプ(M41)を点滅させる。
「おいおい…これは何を言っているんだい?」と思った方、安心してください。私の文章力が足りないからです。
後ほど解説する「GOTの動作イメージ」で動きを見て頂いた方が間違いなくわかりやすいかと思います。
GOTの画面構成
GOTの画面構成は以下のようになります。
各デバイスの左上に記載されている番号がデバイスのアドレスになります。
GOTの動作イメージ
GOTの動作イメージは以下のようになります。今回は長いのでgif画像を4ヶに分けます。
【数値入力と現在値の追従】
画面左側の「実行」と「ストック1~7」は数値入力で、GOTからストックの数値を入力します。
起動スイッチを押すことにより現在値が目標値に向かって0.2秒毎に加算します。
現在値が目標値に到達すると、3秒間停止して処理を完了とします。
現在値が加算中は上昇中ランプが点灯して、目標値と一致すると一致ランプが点滅します。
【予約ストックのシフト】
処理が完了すると、ストック1~7の値が一つずつシフトして現在値を目標値に加算/減算する処理を繰り返します。
シフトした際、最後の「ストック7」の値は”0”になります。
【予約ストックの途中変更】
「ストック1~7」の値を処置中に変更することができます。
【起動と停止】
停止スイッチを押すことにより、現在値の加算/減算はその場で停止します。
その後、起動スイッチを押すことで処理が再開します。
2. ラダープログラム
予約ストック回路のラダープログラムは以下のようになります。
解説は次項で行います。
別のプログラムでも動作が同じであれば問題ありません。
3. ラダープログラムの解説(6分割)
先ほどのラダープログラムを①~⑥の6ヶに分けて解説をします。
① 自己保持回路で起動中を保持する
上のラダープログラムの「①水色枠」の部分です。
処理を実行するための「起動中」の自己保持回路を用意します。
この自己保持回路は起動ボタン(M110)をON条件、停止ボタン(M120)をOFF条件とするものです。(OFF優先)
自己保持回路については以下のページで解説しておりますので、宜しければご覧ください。
【ラダープログラム回路】自己保持回路のラダープログラム例【三菱FX】② ストック実行を目標値に転送
上のラダープログラムの「②オレンジ色枠」の部分です。
GOT左上のストック実行(D100)をそのまま目標値(D200)に転送命令(MOV)を用いて転送します。
M8000とは、三菱電機製FXシリーズの特殊デバイス「PLCがRUN中は常時ONする」接点です。
つまりこのラダープログラムは常時、データレジスタ(D100)の値を(D200)に転送し続けていることになります。
転送命令(MOV)については以下のページで解説しておりますので、宜しければご覧ください。
【三菱FXシリーズ】転送(MOV)命令の指令方法とラダープログラム例③ 目標値(D200)と現在値(D210)の比較
上のラダープログラムの「③緑枠」の部分です。
接点形比較命令を用いて目標値(D200)と現在値(D210)を比較します。
比較した結果は必ず目標値>現在値、目標値=現在値、目標値<現在値のいずれかになります。
接点形比較命令を使用して上記3ヶの比較結果に応じて補助リレーM30・M40・M50をONします。
接点形比較命令については以下のページで解説しておりますので、宜しければご覧ください。
【三菱FXシリーズ】接点形比較命令の指令方法とラダープログラム例④ 現在値(D210)を0.2秒周期で加算/減算をする
上のラダープログラムの「④紫枠」の部分です。
目標値>現在値(M30)のとき、現在値(D210)を加算命令で1ずつ加算します。
目標値<現在値(M50)のとき、現在値(D210)を減算命令で1ずつ減算します。
インクリメント命令(INC)とデクリメント命令(DEC)の入力条件には0.2秒周期で1スキャンのみONするタイマを使用しています。私はこのタイマを自滅タイマ回路と呼んでいます。
インクリメント命令(INC)とデクリメント命令(DEC)、自滅タイマ回路については以下のページで解説しておりますので、宜しければご覧ください。
【三菱FXシリーズ】インクリメント(INC)・デクリメント(DEC)命令の指令方法とラダープログラム例 自滅タイマ回路⑤ 目標値(D200)と現在値(D210)が一致すると予約ストックをシフト
上のラダープログラムの「⑤赤枠」の部分です。
目標値=現在値(M40)のとき、タイマ(T40)で3秒間停止した後にワード右シフト命令(WSFR)でストック(D100)から8ワード長を1ワードずつシフトします。
これにより実行(D100)にはストック(D101)の値が挿入されます。すると目標値(D200)が新たに変わり現在値の加算または減算を行います。
ストック7(D107)にはD108の値が挿入されます。D108にはラダープログラムで使用していないため、”0”が格納されています。よってストック7(D107)には”0”が転送されます。
ワード右シフト命令(WSFR)については後日記事にしたいと思います。
⑥ 目標値(D200)と現在値(D210)が一致中はランプを点滅させる
上のラダープログラムの「⑥黒枠」の部分です。
目標値=現在値(M40)のとき、 一致中ランプを点滅させるためにフリッカー回路を使用します。
このフリッカー回路は「M40がONしている間、M41が1秒周期でON/OFFを繰り返す。(ONとOFFともに0.5秒)」ものです。
M41はGOTの一致中ランプなので、1秒周期で一致中ランプ(M41)が点滅します。
フリッカー回路については以下のページで解説しておりますので、宜しければご覧ください。
【ノウハウ初級】フリッカー回路(点滅回路)のラダープログラム例【三菱FX】4. おわりに
予約ストック回路で指令を次々と実行するラダープログラム例を解説しました。
色々な命令を用いることで、複雑そうな処理も短いラダープログラムで作成できることがよくあります。
私もこの記事用で初めてワード右シフト命令を使用しました。
以下の参考書はラダープログラムの色々な「定石」が記載されており、実務で使用できるノウハウが多く解説されています。私がラダープログラムの参考書として自信をもってオススメできるものです。
ただし、ラダープログラムやPLCといった電気・制御設計は参考書やWebサイトのみでの学習には必ずどこかで限界が来ます。
各メーカが販売しているPLCやプログラム作成のアプリケーションを揃えるには安くても十万円以上の大きな費用が掛かり、独学は現実的ではありません。
ラダープログラムの一番現実的な学習方法は「実務で経験を積む」ことです。電気・制御設計者はこれから更に必要な人材になり続けますので、思い切って転職する選択肢もあります。
『doda』といった大手求人(転職)サイトには電気・制御設計の求人が数多く紹介されています。※登録は無料です。
「スキルこそ今後のキャリアを安定させる最も大切な材料」と考える私にとって電気・制御設計はとても良い職業だと思います。キャリアの参考になれば幸いです。
ほぼ素人で、見様見真似でシーケンサを少し触っています。
NG信号(X0)を受けて、それから8ポケット移動後(カウント入力はX1)にブザー(Y0)を鳴らしたい。これは、何とか作れました。
しかし、NG信号は、連続で入力される場合もあり、間欠かもしれません。
兎に角、X0が入った場合に、8ポケット後ろの位置でY0を出力させる回路を作りたくてもできませんでした。
単発が出来たのでもう少しな気もしているのですが自力では無理です。
お知恵、拝借できませんか。よろしくお願いします。
コメント拝見させて頂きました。
NG信号(X0)がONすると『NG動作中』となり、NG動作中にカウント入力(X1)が8回ONすると
ブザー(Y0)をONさせる。
ブザーが一定時間鳴動すると、NG動作中はOFFとなる。
※NG動作中、NG信号(X0)が新たに入力されても無視される。
このような認識で宜しいでしょうか?