2008
03.05

普通のソフト開発屋さんがシーケンス制御ソフトを作るとこんな事件が発生するかもしれません

制御・設計・ソフト・ハード

ちまたでは、電気屋と呼ばれる制御の設計や調整運転などに関わる人材が少ないようです。各メーカーさんも設計者集めに非常に苦労していらっしゃいます。他府県で募集して宿泊施設も準備してやっと来てくれるという場合もありますが、それでも激しい争奪戦のため、制御設計や運転調整のプロは思ったように集まらないのが現状です。
そんな事もあるせいか、普通のPC(パソコン)のソフト屋さんを連れてきてソフト(ラダー)を作ってもらう場合もあるようです。依頼主からすればラダーもコンピュータのソフトなんだから、ソフト屋さんにやらせてもいいだろう・・・と、思うようです。ところが経験の無い、あるいは極端に経験が少ない人にラダーを作ってもらう事と、後でとんでもないことになるんです。いったいどうなるのでしょう?
私も以前、経験したことがありますが(十数年前?)最近、また似たような話を聞いたので紹介しておきます。この例ではソフト屋さんが作ったソフト(ラダー)では、最初それなりに機械を動かすことができたそうです。手動操作を行い、自動運転をしてとりあえずワーク1個はなんとか流れたらしいのです。機械は複数の作業ステーションがあって機内には複数個のワークが順番に入口から入って処理され、出口へ出て行くものです。生産ラインになっている工場であれば、どこでもよく見られるスタイルです。
さて、この後何が起きたのか? 
1個のワークが流れたので、それじゃあ順番に・・・ということで次々にワークを流そうとしたところ、機内からワークが排出されなければ次のワークが搬入されないという事態がおきたそうです。プログラムの処理の方法について話を聞くと、ワーク状態はデータメモリにビット情報で格納されて、ワークが移動するごとにビットもシフトして・・・というのはよくあるパターンだったようですが、ワークが機内にあるときに次のワークを投入するとビット状態が崩れるのでそれはできませんという事らしい。
どうやら、彼(ソフト屋さん)の頭の中には、コンピュータの処理手順を書くときに使う「フローチャート」が存在していて、その流れに従ってラダーが処理しているという発想だったようです。なので、フローチャートのどこかの処理をしている途中で、また入口からの処理を始める。なんて発想がなかったのです。
通常、機械・設備の制御は「シーケンス制御」というように順番に処理されていくので、彼の発想はある意味、間違いではなかったのです。しかし、実際に機械・設備を制御しようとすると、入口にワークが入って、処理され次へ送られ、そこで処理されている間にまた入口に入ったワークを処理して、・・・というような、あらゆる部分での「同時動作」が必要になります。単なるフローチャートではなく、各部を個別に制御するフローチャートが同時に並行して処理されていて、更にそれらを統合する処理も同時平行して実行されている。といったイメージです。
結局、シーケンサのソフト(ラダー)はソフトウェアとして存在していますが、結局のところリレー制御の延長と考えるべきもので、普通のソフト屋さんが取り組むにはその辺のことを理解しておかないと、後で全部作り直し・・・という羽目になります。シーケンス制御としてのソフトウェアの考え方と、コンピュータソフトとしての考え方の両方を学べたら、まさに鬼に金棒(?)かもしれませんね。

コメントは利用できません