スマホでGUIプログラミング?〜ラダー言語の思い出

世の中にはFA業界というのがありまして、FAというのは、工場設備の自動化 = Factory automationです。この世界にはPLC、、、plogrammable logic controllerというコンピュータ製品があります。

PLCは、シーケンサーとも呼ばれ、いわゆる順繰り制御 = シーケンス制御を行うコントローラなのです。イメージとしてはエレベータをイメージしてもらうとわかりやすいですが、エレベータは、乗りたい人がボタンを押すと、目の前に降りてきますよね。そこから、N階を押すと、エレベータが移動して、目的の場所に到達しますよね、
また、扉のリミットスイッチをおすと扉が緊急で開いたりしますし、ちゃんとした場所で止まりますよね。しかも、最近は行き先ボタンのダブルクリックでキャンセルできたりもしますよね、こういった一連の流れをインテリジェントに制御するために使われるのがPLCの仕事です。

PLCをプログラミングするための言語の一つにラダー言語というのがあり、なんとGUI上でプログラミングができるんです。

こんな感じで書いていきます。


オムロンさんのWebページより

その昔、制御装置は、物理的なリレーやタイマーデバイスを組み合わせて論理回路を構成していたものを、メタファをそのままに電子化したのが、Programble logic controller =PLC言語です。

10年ぐらい平気で壊れない耐久性と、熱やホコリが当たり前の悪環境でも壊れないコンピュータそのものの安定性、パーツの安定供給がウリの商品で、オムロン、三菱、日立、キーエンスなどの早々たる企業が提供するコンピュータです。

そして、PLCの最も素晴らしいところは、

出張先の営業マンや現地の出張者でも電話で指示を受けることでプログラムを修正できる

ところにあります。このアドレスにこの命令を挿入せよというのを、PLCにつないだ専用のコントローラで操作できるので、電話口で口頭で指示することで、プログラムを修正することができるのです。

なにせ顧客は世界中ですから、出荷した全ての装置の全ての修正を、プログラムが書ける人がその場に行かないと直せないというのでは、身がいくつあっても足りません。

何か問題があった時や、その場で発覚したセンサ追加などの微妙なコード追加であれば、現地の営業マンに電話で指示をしてロジックを足すことができます。生産管理のある会社であれば、お客さんも勝手にソースコードをいじってたりします w

リミットセンサーを一つ追加してより安全に振る、というのであれば、and回路に一つ入力が増えるだけですから、電話口でセンサ入力を司る部分に、プログラム上の入力を一つ増やして、物理的にPLCの入力にセンサを繋いで終了です。

そういう操作をしても、制御自体は簡単にバグで止まることもないし、ちゃんと動くというのがコントローラの素晴らしさなんですよね。また、コードをEPROMにバックアップしておくことで、間違いがあったらすぐ元に戻せます。

しかし、今考えると、ミッションクリティカルな制御装置のプログラムを電話で指示して、プログラムに責任を持たない営業マンに直してもらうなんて、なんて適当な仕事なんだろうと思わなくもないですがw 昔は、それができることで、海外の出荷先で問題が起きても修正ができるわけで、これによるコスト削減効果は、本当に大きかったと思います。

設計思想としては、見える化ができるプログラミングだったと思いますね。

何よりの肝は、現場の作業者がPLCをコントローラでいじるものは簡単なものという感覚があって、いじってもらうことに抵抗感がなかったというのがすごく大きいかも。Webで言うならHTMLレベルの感覚があるかも。

実際は、ニーモニックのCUIのソースコードビューが別に存在していて、ソースコードをうまくビジュアライズしているというのがラダー言語エディタの本質で、それそのものが高いユーザビリティの開発言語とも言えます。その実、中身は、それほどシンプルではないので、もちろんインターネットが使えるようになってからは、ソースコードをメールで送って、PCからインストールできるようにもなってますし。今はそっちが主流でしょうね。PLCも割り込みが使えたりと高度化してますので。

更にクラウドが発達した今だったらgithubを経由して落としてくるとか、自動更新サービスを提供するとか、いろいろできそうですね。お客さんところの生産管理の人がソースコードをいじったら、リポジトリにプルリクしてもらえると、その後の追加装置発注の時とかにモメなくて済みますし、更に、現地で直したコードの自動テストができたら面白いですね。装置のI/Oのテストケースとして作っておけば、装置のデバッグもdiagnosisとして手順化できますもんね。

当時は若くてよくわからなかったですが、FAは最先端の技術を導入しやすい世界だったように思えます。生産技術の元でイノベーションが提案されている世界ですしね。もう少し、業界の情報通になっていれば、いろいろできただろうなぁ。

で、ネタ元としては、TechCrunchの西村編集長がTwitterで、スマホでプログラムができるものがあってもいいよね、というツイートをされていて、ふと、このことを思い出しました。

思い出してみれば、Webプログラミングも、たいていはNon-algorithmicなコードで、シーケンスどころかオープンループ的な思想のまま、データの出し入れだけの仕事になっているケースも少なくないでしょう。

IoTデバイスが標準化&生活必需品になったあかつきには、ラダー言語みたいなもので、プログラムができる環境が出るんだろうなぁ、と思います。素敵なものが出てくるといいですね。

ちょっとしたシーケンス制御の装置ぐらいならラダー言語によるGUIプログラミングで簡単に作れるわけで、きっと素敵なプログラミング言語をMIT出身の人とかが開発して世界を変えることもあるでしょう。

バック・トゥ・ザ・フューチャーで、朝起きると目玉焼きを焼いたり、犬に餌を上げるのを自動化していましたが、あれみたいな感じで、目覚まし時計に連動して、コーヒーを入れて、いい香りに包まれながら自然に起きるというオペレーションをスマホでプログラミングして、バスは無線LANで装置同士が協働するということが容易に期待できます。

「そのデバイスのメイン機能をrunする/stopする」レベルのデバイス間の入出力が、制御盤の配線レベルで標準化されていれば十分に可能です。シンプルな機能の素敵な製品の組み合わせがよさそうですね。

【PR】ご意見、感想などは是非、mstdn.fmのローカルタイムラインでお聞かせください