PLCとGOTを用いて空気圧自動制御システムを作った話

職業訓練校の中間課題として制作したものの、備忘録となる。
4月入所してから6月まででひと段落したので、その復習も兼ねて何かを作りましょうよということらしい。
ちなみにこれまでやってきた内容は大まかに、第二種電気工事士の学習（筆記・実技）、有接点シーケンス、ケーブル配線、金属管・プラスチック管加工、PLC制御（三菱FXシリーズ・MELSEC-Qシリーズ）、GOT、空気圧制御などがある。とはいっても具体的にどのようなことをやっていたかはここでは割愛する。機会があれば別記事として投稿したい。


中間課題のテーマは先述したように復習を兼ねていれば自由とのことだったので、筆者は空気圧制御を選択した。
理由としては主に三つほど

1:最後に扱っていた空気圧制御の機械がすでにセッティングされた状態で机上にあり、新たに過去の機材を準備する手間が省けた。他機材を使う場合は再度セッティング・配線し直し。

2:（他単元も同様だが）その機材の機能を最大限使う前に次の単元に進んでしまうので、本質的な理解に至らず紹介で終わってしまっていた。空気圧制御の単元では、最後にやった応用課題ですら、中途半端と思われる動作までに留まっているように感じたため、自分の納得のいく動作を実現したいと思った。さらに、（とある理由で途中で頓挫するが）中途半端なところまでの動作は、授業ですでに作られたものを転用できるので、新たに何かのプログラムを組むよりも消費カロリーが低いと図った。

3:過去の卒業生たちも、そして今回の受講生たちも、GOTのみを使って作品を作るケースが大半だという話であったが、GOTで出来ることはPCやスマホで再現出来るだろうし、それを業務用のタッチパネルを使ってまでやることは無いと考えたからです。
だからといってGOTを使う人をどうこういうつもりはないし、最終的に出来上がった成果物を見比べてみても、筆者の作ったそれと、彼らの作ったそれではそもそもの技術的な考え方や出来が違ったので、そのような傲慢な考えを改める杞憂であった。

…上記三つの理由により、選択した空気圧制御だが、特定の資格試験での出題や、製品として存在するものではないので、実物を紹介する。

![空気圧制御.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3828586/281a5335-eeab-fa05-062b-24b85e3156cc.png)

上の画像は、動画の一部分を切り取ったものだが、当記事をご覧になっているエンジニアの方にはこれだけでも凡その構造は理解していただけるだろう。
・念のため捕捉を付け足すと、画面右上部に移っているのが、ご存じ三菱Melsec-QのPLCで、数本の線で制御器と接続されている。
・画面上部左寄りのアームは、前後進、回転、アーム押し出し引き戻し、上昇下降、吸引・解除が出来るもので、各機能に合わせた、シングル・ダブルソレノイドのバルブが接続されている。
・画面左側の青い板に乗っている黒いワークは、その右側にある透明なシリンダから、アームを使って運んだものである。後から付け足したい機能として用いるために、透過形光電センサ(E3Z-D61)をテープで張り付けてある。

![空気.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3828586/da73b823-5bc2-ef3d-3cdf-5da03174c8d6.png)

先ほどの空気圧制御器を単純化したのがこの図である。
0⃣は供給シリンダ、①②は移動先、③は回収シリンダと呼称している。図の矢印はワークの移動可能経路を表している。

しかし授業で扱った内容ではこれらすべてを網羅していなかった。
具体的には0から3までの移動を、一動作ずつやっており、最後の応用問題として、隣の人とペアプログラミング的な形式で、0から1と0から2を分担して動作するラダーを組み、二人分を合わせて「やあ、動きますね」と確認して終わり、という様子であった。

つまり、この図にあるように、0から1、0から2へ移動させた後に、本来行われるべき動作である、1から3、2から3、そして1から2、2から1の動作をやっていなかったのだ。

この空気圧制御が、仮に、100、1000倍の大きさだとしたら、1の工程で加工したものがどこにも移動できない状態で放っておかれるということになる。その状況を見過ごすわけにはいかないので、今回の作業に着手した。という筋書きである。


![空気2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3828586/bb03046a-91db-75ef-3c9d-b744d7e1a225.png)

先ほどの移動経路を網羅した表はこのようになる。厳密にはフローチャートなどを作成することでもう少しわかりやすい説明が出来たと思われるが、発表時はこの表を用いて、聴衆のコンテクストに委ねることになった。自分より頭の良い人はこれで理解してもらえるので、最早これで十分なのである。

また、操作画面としてGOTを用いたため、その画面がこちらである。
![画像３.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3828586/feed949d-b015-ce6a-e58b-f7c5fb5ddf88.png)

・左側の画面が初期画面として設定されており、左下の開始ボタンを押下することで右側の選択ダイアログが表示される。
・「取」で最初にワークを吸着する座標、「送」でワークを置く座標を指定する。
・「取」は0、1、2、「送」は1、2、3の範囲で数字が選択出来る。
・また、先述した光電センサによって、1から1、2から2、といった具合に、ワークが移動し得ない選択肢が実行された際には「選択が不適切です」と表示される。
・さらに、0や1、2が空（ワークが無い）状態でその座標を「取」にした命令が実行されるときや、逆に作業中のランプが点灯している（ワークがある）状態では、それぞれ「ワークがありません」「ワークがあります」といった警告が表示される仕様とした。
　警告表示中の画面をスクショし忘れてしまったorz

ラダー構築は当初の予定では、0-3、0-1、0-2が授業で扱った内容をそのまま利用出来ると思っていたため、1-2、2-1、1-3、2-3の動作をするラダーを組めば終わりであった。
しかしいざ組み始めると、ダブルコイルの不具合が頻発し、複雑な回路になるにつれてどのコイルや接点がどこの動作なのかが全く分からなくなった。
これはエンジニアあるある話の一種で、要は「人の組んだプログラムほど怖いものは無い」というものである。
筆者の好きな作品に「なれるSE」というものがあるが、その主人公が入社後にやらかしたそれとほぼ同じことをやったのである。
どういうことかというと、人の組んだラダーは、その人が考えたデバイスによって動作がなされるので、それを知らない人が触ると、知らず知らずのうちに同じ番号のデバイスを使用したり、あるいは消してしまったりするのである。
あとからバグが発生し、「この接点はどんな動作で作動するんですか」と問われても答えられないということが、エンジニアにどうして出来るのだろうか。という話である。
そのため、前述した理由から、デバイスはもちろんのこと、ラダーを一から組み直すハメになったので、とってもタイムロスになったのだ。
　GOTのUIセンスが死んでいるのもこれが理由、筆者にデザインのセンスが無いことももちろんのことだが。


筆者がQiitaに記事を投稿するのは、記憶している限りおそらくこれが最初だと思われるので、まだ機能を対して知らないが、ggrながらもここでラダーを表示するには

```
(+)                                               (-)
|    X001                                  Y001     |
+----| |----------------------------------(    )----+
|                                                   |
```

このように表現するらしい。
が、作成したラダーをコピペ出来るならまだしも、再度このように点と記号で記述しろというと時間がいくらあっても足りないので、動作している動画や、ラダーのPDFを貼り付けて筆を置くことにしたい。


動画
<iframe width="560" height="315" src="https://youtu.be/wKfRa8XyUsE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>


ラダー
https://drive.google.com/file/d/1A8ghFtM86R258UIT3rax0wAEYYCPYdQ7/view?usp=sharing