HOME > ソフテックだより > 第15号(2006年4月5日発行) 現場の声編「はじめてのPLCソフト開発」

「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。

ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ


ソフテックだより 第15号(2006年4月5日発行)
現場の声編

「はじめてのPLCソフト開発」

私は、ちょうど昨年の4月にソフテックに入社した新米PLCソフト開発者です。シーケンス制御(※1)と密接な関係にあるPLC(Programmable Logic Controller)に関しては、出版図書等も少なく、ソフト開発の前段階としてその知識を得ようとしても難しいというのが現状です。実際にソフテックの新入社員においても、学生時代にPLCソフト開発を経験しているというケースは非常に稀です。
私もその例に漏れず、ソフテックに入社するまでPLCについては見たことも聞いたこともありませんでした。そんな私がソフテック入社後PLCソフト開発に携わった際に感じたことなどについて綴っていきたいと思います。

1.PLCソフト開発

1.1 ラダープログラム作成

PLCは、従来の自動化システムで使われていた数百・数千の電磁リレーを置き換える代替品として発明されたものであるため、リレー回路に近い表現でプログラムが組めるようになっています。このリレー回路に近いプログラムを『ラダープログラム』といいます。
Cなどの高級言語のプログラムに慣れ親しんだ人間には、ラダープログラムはとっつきにくいものと思います。私自身がそうであったため、初めてラダープログラムを見たときは「え?この回路図みたいなものがプログラムなの?」と違和感を覚えました。
さて、何とかラダープログラムがプログラムの一種であることを理解し、ラダープログラムについて勉強をしてみると、ラダープログラムは入門しやすいプログラム言語であることが分かってきました。「結局は信号のやりとりなんだ。ここの接点がONすると、ここのコイルがONしてタイマが働き、タイマがタイムアップして・・・」と試しに自分でソフトを作成し、完成したソフトをPLCにインストールしてみると・・・動いてしまいます。(図1)

図1.初めて作成したラダー

1行目:
X1の接点がONすると、Y1のコイルがONする。
2行目:
Y1のコイルがONしたことによりY1の接点がONし、10秒後にタイマ(T1)がタイムアップ。
3行目:
T1がタイムアップしたことによりT1の接点がONし、Y2のコイルがON。

図 1. 初めて作成したラダー

そこで私は「ラダーって分かりやすい、割と簡単なものだなぁ」と思いました。しかしその浅はかな考えは、もう少しラダープログラムについて勉強していくうちに、大きな間違いであることに気付きます。
ラダープログラムのひとつひとつの回路は実に単純なものです。世に出ているソフトはそれらが何千行、何万行と組み合わさることにより、シーケンス制御を実現しています。さらにそれら中には、信号のやりとりの他に、データの管理の回路であるとか、条件分岐の回路であるとか、実に様々な意味を持つ回路が含まれています。私が初めて作成したお粗末なソフトはその単なる一部分の機能でしかなく、「ラダーって簡単だ」との考えは雲の彼方に吹き飛び、まさに「木を見て森を見ず」ということだったと痛感した記憶があります。世の中そんなに甘くありません。

1.2 スキャン動作

PLCは通常先頭のステップから最後のステップまでの処理を実行し終わると、再度先頭のステップから処理を実行します。この動作を繰り返し行うことを『スキャン動作』といいます。

PLCソフト開発に携わって間もない頃は、このスキャン動作というものが理解しづらいものです。私の場合、それまで「1回の実行で完結する」プログラムしか作成したことがないため、なおさらスキャン動作という考えは理解しづらいものでした。従って入社後の研修でソフト作成していた頃には、スキャン動作の考慮不足で不具合が発生することが少なくありませんでした。その都度「またスキャンのせいか」と自分が悪いことを棚に上げて一方的にスキャン動作を憎んでいましたが、ソフト作成を重ねていくうちにそういうことも少なくなり、先輩方の熱心な指導も手伝って、現在ではスキャン動作という考えを特に意識しなくてもいいようなほど、体に染み付いています。

1.3 ソフト改造

これは現在でも感じていることですが、ラダープログラムというものは、既存のソフトを改造するということに苦労する言語であると思います。
ある案件で、既存ソフトの改造作業に携わったことがありますが、その際にお客様より渡されたソフトが、非常に処理の流れが追いづらく、かつそれまで複数人による改造が施されていたということもあり、大変苦労した経験があります。
保守性という面から見ても理解しやすいラダープログラムを作成するということは重要なことであると思います。しかしラダープログラムは比較的プログラミングの自由度が高いため、ソフト作成者各々の考えというかクセがプログラムに表れやすいという側面があります。そのため「万人が見て分かりやすいプログラム」を作るということはなかなか難しいものです。万人に分かりやすいプログラムとはどういうものなのでしょうか?
そのヒントはソフテックだよりのバックナンバーにあります。

→第5号
「見やすい・わかりやすい」ラダーにするために
→第13号
「見やすい・わかりやすいラダーにするために2 〜実践編〜」

1.4 資料作りの重要性

ソフトを開発するときには、仕様等の資料に目を通すこともさることながら、事前準備として自分で資料を作成するということが極めて重要であると感じました。
例えば、PLCソフト開発では事前にフロー図とタイムチャートを書くことが有効な手段であるといえます。よほど単純なものでない限り、頭の中にある処理の流れのイメージをラダープログラムに反映することは簡単なことではないですし、反映したとしてもプログラムのあっちこっちで処理が走る場合には、それらの整合性がとれているか確認することは困難なことです。その際にはフロー図とタイムチャートを作成していれば大変な手助けとなります。
またお客様の立会い時、資料を使いながら「ここではこういう処理をしているのですよ」という風に説明できれば、お客様も分かりやすいでしょうし、円滑に立会いが進行していきます。
資料作成というものは面倒くさいものではありますが、その分返ってくるものも大きく、絶対に必要であることと思います。その後に、改造や不具合発生でソフト変更が生じたときも、資料があるのとないのでは歴然とした差が出てきます。

2.現場での作業

ソフテックで開発するPLCソフトの大部分は、装置の制御や監視用のソフトです。従って製作したソフトを最終的に納めるため、実際に工場などの現場で作業をさせていただくことが多々あります。現場では装置を動かしながらのソフト動作の確認の他に、電気配線の確認、センサの位置調整など、ハード関係の作業を行う場合もあります。

2.1 現場には危険がいっぱい

現場では、装置間の配線や装置の状態を把握し、移動・作業を行うときには足元や頭上など周りに常に注意する必要があります。LANケーブルに足を引っ掛け「危ない危ない」と足元に注意して作業を行っていると、立ち上がるときに装置のでっぱりに頭をぶつけてしまったという苦い経験が私にはあります。それからは「特に死角に気をつける」をスローガンに作業を行うようになりました。
また、いたるところで作業を行っていますので、装置を動かすときには十分に注意が必要です。現場に入って間もない頃、物珍しげに装置を眺めていると、いきなり装置が動き出しビクッとしたことがあります。(小心者なだけなのかもしれませんが…) どちらにせよ自分の思惑の外で装置が動き出すということは勘弁してほしいものです。そのときに「何か作業をするときは、作業者同士声をかけることが重要だな」と思いました。ソフテックでは現場で作業をするときには、最初に先輩社員から「安全確認だけは徹底してほしい。装置を動かす前は必ず周りの作業者に影響がないことを確かめる、装置動作中はすぐに停止させることが出来るよう準備をしておく」ということを教え込まれます。

現場というものは本当に危険がいっぱいです。自分の身も、他人の身も、装置の身も常に気を配りながら作業を行う必要があります。そのため神経を使い、作業を終えたころには疲労感が半端じゃないですが、それと同時に充実感も湧き上がってきます。

2.2 ソフト以外の知識を身につける

PLCソフト開発者に限らずソフテック社員にはソフト面だけでなく、ハード面のスキルも要求されますが、PLCソフト開発者は特にその傾向が強いように思います。
ハード関係の作業を行う際にはどうしても電気の知識やメカの知識が必要となってきます。
私は電気・メカの知識がなかったため、恥ずかしい話しですが、初めての現場作業においては知識以前に、機器の名称であるとか工具の使い方が分からないということもありました。

(先輩社員)
「精密とってちょうだい」
(私)
「精密って精密ドライバーのことですか?」
(お客様)
「マグネット(※2)が入るかどうか見てくれる」
(私)
「・・・マグネットが入る???」

等々、今となっては恥ずかしい話ではありますが、当時は見ること聞くこと全てが初体験のことばかりでした。
またPLCは、単純にON/OFFの信号だけでは制御できない機器も含めて、様々な機器に対して入出力信号のやりとりを行うためソフト開発においてもハードの知識が必須となります。知識不足を補うために、自主勉強をしながらの知識取得を率先して行う姿勢が大事であるといえます。お客様に対しては「新人だからしょうがない」という言い訳は決して出来ません。
…とは言うものの、自主勉強だけでハードの知識を身に着けるということは難しいです。机上での勉強はもちろん必要ですが、やはり実際にモノを見て、モノを触って、直接目で見ないうちは、いまいち自分の中で納得しきれないというのが正直なところです。現場での作業は、知識もさることながら、経験が一番ものを言うと思っております。

これまで書いてきたように、PLCソフト開発に携わってからの一年間、ラダー言語の特殊性に悩み、現場では緊張の連続、毎日がものすごく早く過ぎていった気がします。一年間働いてみて感じたことは、PLCソフト開発は他のソフト開発と少し毛色が違うなということです。そう思うのは、やはり現場での作業が多いからだと思います。入社前の私のイメージでは、ソフト開発というものはほとんどが机上での作業というイメージでした。しかし、ことPLCソフト開発ではそのようなことは一切当てはまらないことが分かりました。現場での作業はきついことも多いですが、それ相応の見返りがあります。それは設備・装置の動きを通じて、「自分が作ったソフトが動いている」ということを実感できる点です。これはなかなか他のソフト開発者には味わえないことだと思います。装置の動きを見ながら「自分の作ったソフトが世の中の役に立つんだなぁ」などとしみじみ思ったりします。

最後にPLCソフト開発者としてではなく、社会人として働いてみて感じたことをひとつ。「働いて分かる親のありがたみ」と言いますが、まさにそのとおりで、家族を養いながら仕事で稼いでくる親の偉大さを改めて感じた一年でもありました。去年の初給料で親にささやかなプレゼントはしましたが、今度はドーンと旅行でもプレゼントしてあげようかと思っています。

(Y.S.)

[注釈]
※1
「あらかじめ定められた順序に従って,制御の各段階を進めて行く制御(JIS C0401)」のことです。
※2
マグネットスイッチのことで、磁力によりon/offするリードスイッチを使ってリレーを動かし、回路のon/offをコントロールするものです。

関連ページへのリンク

関連するソフテックだより

ページTOPへ