どうもこんにちは、エンジニアの筑紫です。
前回、レンタカーの無人機についてざっくりとご紹介させていただきました。
今回はその無人機の開発過程で苦労した点について、遠い記憶を辿りながらお話しさせていただこうかと思います。
もっとも、苦労のない開発なんてものは無いんでしょうけどね。。(遠い目)
最初の躓き、PLC制御
さて、無人機において重要な機能として鍵の貸出し機能がございますが、
開発を進めていくうちにまず最初に躓いたのが
この鍵の貸出しの部分だったと記憶しております。
鍵の貸出しには電磁ロッカーを使用します。
電磁ロッカーは6個単位のボックスに分かれており、
それぞれ開閉できる扉が設置されています。(最大30ボックスまで増設可能)
このボックス内にあらかじめ車の鍵を投入しておくのですが、ここで必要となる制御が
・任意の扉を開ける
・鍵が投入されているかセンサーによる判定
・扉がきちんと閉まっているかの判定
主にこの3つになります。
これらの制御をおこなっているのが PLC制御 になります。
PLC制御とは
PLC(Programmable Logic Controller)とは、機械の自動制御を行う装置
つまり、あらかじめ想定された動作プログラムをもとに、機器に対し指示を出す装置という事になります。
PLC制御は、例えば自動販売機や自動ドア、エアコン等々日常のあらゆるものに使用されています。
PLCの制御で使用するプログラムは下図のようなもので、梯子に似ていることから ラダー図 または ラダープログラム などと呼ばれます。
こちらは、ハードウェアメーカー様の方であらかじめ組み込んでいただいたので、自分で扱う事は無かったのですが、
初めて見た時はなんじゃこりゃ!?と頭に?マークが3つぐらい浮かんだものです。
MEWTOCOL通信
アプリ側からPLCを操作する際には、下記のような通信プロトコルが存在します。
・MODBUS:Modicon IncがPLC用に開発した通信プロトコル
・MEWTOCOL:パナソニックが開発した通信プロトコル
無人機で採用されているPLCはパナソニック製の機器になりますので、MEWTOCOL通信を使用しています。
このMEWTOCOL通信を使用したPLC制御、個人的にそれまで関わりのなかった分野という事もありますが、、
初めて資料を見た時は、な、な、なんじゃこりゃ!?と頭に?マークが9つぐらい浮かんだものです。。。
基本的には、アプリ側から仕様に沿ったコマンドをPLCに送信⇒PLCからのレスポンスを解析、という流れになります。
例えば、1番の扉を開ける時は
%01#WCCR000000000100**
この様なコマンドを投げています。
そして16進数のレスポンスが返ってきて、それを10進数に変換したり、
コマンドによっては○桁目と○桁目を入れ替える等々ややこしい処理を行い、
アプリ側で正常に動作したかどうかを判定し、次の処理に進む、というような形です。
初めはコマンドの規則性が全くわからず、コマンドを送っても電磁ロッカーちゃんはウンともスンとも言ってくれませんでした。
あまりにも無反応なためこの機械おかしいんじゃないかと疑ったりもしましたが、おかしかったのは自分のプログラムの方でした。(申し訳ありませんでした。)
その後、メーカーの方々に何度か来社いただき、手取り足取りレクチャーしていただいたおかげで、何とか法則性を理解し、無事制御できるまでに至りました。
その時のメモは今でも大事に保管しています。
初めて扉がパカッと開いたときには、そりゃあもう感動しましたよね。うん。
・・・おや、なんだか少し目から汗が滲んで、、、
少々画面が見辛くなってきたので、今回はこのあたりで失礼致します。
それでは、また!