APDahlen Applications Engineer
PLCプログラミング言語は複雑で、時には議論を引き起こすトピックであるという認識から始めましょう。これまで、「最適な」プログラミング言語についてや、プログラマブルロジックコントローラ(PLC)を学ぶ学生が知るべきこと、知るべきではないことについて、強い意見を持っていない人に出会ったことはありません。
この記事は、バランスのとれた紹介記事を書くために最善を尽くして作成しました。皆様のご協力をお待ちしています。この記事の改善のために、下部のスペースにコメントや提案をお願いいたします。
図1: ディスプレイを搭載したこのCrouzetのEM4シリーズPLC は、定番の「Hello World!」プログラムを実行しています。
PLCとは何でしょうか?
PLCは、産業用機器やプロセスを制御するために設計された産業用コンピュータです。内部では、PLCはミドルからハイエンドのマイクロコントローラによって制御されます。この繊細なロジックは、オプトカプラ、堅牢な半導体出力ドライバ、およびリレーを使用して、過酷な産業環境から切り離されています。
PLCは、コンパクトなオールインワンタイプもあれば、モジュール式設計で出力、入力、アナログなどの機能の専用モジュールを備えたタイプもあります。これらのPLCのうち最大のものは、右側に拡張するモジュールがあり、その結果、時にはPLCの長さが2フィート(約61cm)近くになったものもありました。いずれの場合も、PLCはCPUの速度と計算能力、そして制御対象となる機械やプロセスの具体的な入出力(I/O)要件に基づいて、タスクに合わせて選定されます。
この定義は、原理的には今でも有効ですが、ますます時代遅れになってきています。問題、もしくは将来的な問題と言えるのは、PLCの学際的な側面と、最新の処理に求められる、より高度なネットワーク機能です。「インダストリ4.0」では、ネットワーク機能の高度化が求められるため、インダストリ4.0がPLCの使用方法と種類に変化をもたらしていると言えます。処理能力の高度化も考慮する必要があります。これにより、当初の定義が考案されたときには考えられなかったビジョン機能が可能になります。また、TensorFlowなどのツールを使ったディープラーニングのアプリケーションの可能性も考慮する必要があります。
その結果、PLCの定義は次のように表現するのが適切かもしれません。PLCは、産業機器とプロセスを制御するために設計された、インテリジェントなネットワークプラットフォームです。ただし、単純なスタンドアロンマシンと、工場の調整に使用されるネットワーク化されたPLCの集合体との間には、大きな違いがあります。
使用可能なプログラミング言語は何でしょうか?
従来、標準的なPLCプログラミング言語はIEC 61131-3で定義されていました。これには以下が含まれます。
- ラダーロジック(LL)(あるいはラダーダイアグラム(LD))
- ファンクションブロックダイアグラム(FBD)
- シーケンシャルフローチャート(SFC)(あるいはシーケンシャルファンクションチャート)
- ストラクチャードテキスト(ST)
- インストラクションリスト(IL)
LLとFBDを備えたグラフィカルインターフェースは、アイコンを見るだけでPLCの状態を素早く把握できるため、技術者に大変好評でした。代表的なラダーロジックコードを図2に示します。このModicon PLCプログラムは、プロセスを単一の押ボタンで制御するために使用されます。図3は、FBブロックとSFCブロックが混在するCrouzetのPLCの例です。
図2: SchneiderのModicon PLCに実装されたラダーロジックプログラム
図3: FBブロックとSFCブロックを組み合わせたCrouzetのPLCのデバッグウィンドウ
ネットワーキングと強力なビジョン技術と相まって、処理能力の変化はプログラミング言語の変化を許容し、あるいは要求しています。また、PLCプログラマーは情報科学課程出身の場合が多いことも認識する必要があります。これらのプログラマーは、産業用コンピュータが何をすべきで、何をすべきでないかについて、独自の考えを持っています。
従来のPLCに対抗する魅力的な例がRevolution Pi(Kunbus)です。このデバイスは、PLCハードウェアを深堀りした記事で示したように、従来のPLCの定義に確かに合致しています。また、私たちが改訂した柔軟なネットワークの定義にも適合しています。さらに、これは情報科学専攻の学生にとって魅力的なプラットフォームです。
その名のとおり、Raspberry Piは人気の高いRaspberry Piプロセッサを中心に作られています。レイテンシにいくつかの制限がありますが、その結果、マシンは幅広いアプリケーションを持っています。面白い例として、動画1を考えてみましょう。これはRaspberry Piの工場を最近訪れたときのものです。時間インデックス7:25では、Raspberry PiベースのKunbus PLCがRaspberry Pi自身の製造に使用されているのがわかります。
技術的なヒント: レイテンシとは、PLCが実際のイベントに応答する速さを表す用語です。高速I/Oを備え、内蔵の高性能割り込み駆動マイクロコントローラと結合して、適切にプログラムされた従来のPLCは、高速マシン制御のための最良のソリューションです。しかし、これは特殊なアプリケーションです。多くのマシンや産業用制御プロセスは、10~100msのレイテンシで実行可能です。また、専用モジュールの方が高速プロセスの制御に適している場合もあります。たとえば、回転速度を制御するエンコーダ付きモータドライブです。PLCは、ms単位の制御を処理するのではなく、ドライブに高レベルの(ネットワーク化された)コマンドを送信するだけでよいのです。
Revolution PiをPLCとして分類すると、言語の選択肢がかなり広がります。Revolution PiのようなPLCは、Linuxオペレーティングシステム上で動作するほぼすべての言語でプログラムできるようになりました。これには、CやPythonなどの従来の言語も含まれます。61131-3言語は、CODESYSなどの拡張機能を使用して使用できます。Pi上で動作するArduinoのようなプログラムもあります。MATLABのようなプログラムも利用可能です。Dockerのようなソフトウェア環境管理ツールもあります。
動画1: Raspberry PiベースのKunbusのPLCは、Raspberry Piコンピュータの生産ラインで使用されます。
必須と考えられるPLCプログラミング言語は何でしょうか?
話題を変えて、いくつかの厳然たる事実を冷静に考え、ソフトウェアに対する熱狂を少し冷ましましょう。
-
PLCはツールであることを理解してください。産業用制御とオートメーション用に設計されています。その結果、PLCは企業の最終的な収益に直結しています。
-
問題は発生する可能性があり、実際に発生するため、技術者はPLCベースのシステムを完全に復旧する必要があります。
-
技術者がシステムのトラブルシューティングを行っている間のダウンタイムには、コストがかかります。生産ラインがダウンするごとに、何らかの製品の生産機会損失、従業員の待ち時間、工程を再開するための時間と無駄な材料、失われた生産を補うための残業時間などのコストがかかります。また、顧客の信頼を失うリスクもあります。
結論として、PLCの購入やプログラミングの決定は、システムを保守する現在および将来の労働力に十分な注意を払いながら、包括的に行わなければならないということです。
プログラマーとしての壮大な願望と、確実な日々の運用のための最低要件との間に緊張関係が存在することは明らかです。決して先進的な機能を放棄しろと言っているわけではありませんが、システムと数十年にわたるシステムのライフサイクルを認識する必要があります。
すべてのプログラマーは、ラダーロジックに精通していなければなりません!
技術者と工場内の機器とのインターフェースを詳しく見てみましょう。PLCベースのシステムが試運転され、バグが修正されるのに十分な期間稼働しているとします。技術者のトラブルシューティング時間の大半が、配線、接続、センサ、およびアクチュエータの問題に費やされているとお考えですか?また、ソフトウェアが故障の原因として考えられる割合が低いとお考えですか?
前の2つの説明と、その前の最低限の制約に同意されるならば、技術者的思考が最優先であることに納得するに違いありません。
技術者は、ラダーロジックという概念に基づいて物事を考えます。なぜならば、それが彼らの生活と仕事の場だからです。技術者は、配線図とラダーロジックを用いて、PLC周辺のシステムのトラブルシューティングを行います。なぜならば、それが産業機械を記述するために使用される言語であるからです。技術者の大半の時間は、PLC以外の問題を追うことに費やされます。
私見ですが、PLCプログラマーはラダーロジックを理解する必要があります。これは、PLCがより大きなシステムに物理的にどのように組み込まれているかについての実務知識を必要とする現実的な問題です。また、システムを保守する人たちと共通の考え方、つまり文書化された言語を持つことも必要です。
技術的なヒント: 知的財産(IP)と賠償責任の概念は、プログラミングの議論を複雑にしています。理想的な世界では、すべての技術者がPLCとソフトウェア開発ツールにアクセスできます。これは妥当な仮定ではありません。プログラマーとして自分のIPを保護する場合があるからです。PLC開発プラットフォームによっては、このプログラム保護機能が新しいプログラムを開始する最初のステップになります。また、賠償責任や保証上の理由から、「コード変更のキー」を提供したくない場合もあります。その結果、PLCは技術者にとってブラックボックスになります。技術者が持つ情報は、内蔵のインジケータ LED(必ずしも標準装備ではない)またはPLCにコード化した障害コード、テキスト、または組み込みテスト(BIT)のみです。この制約は、ラダーロジックを学習し、技術者と共通言語を持つという議論をさらに強化します。収益が左右されます。
業界のトレンドは何でしょうか?
このPLCの議論は、マイクロコントローラの状況を思い出させます。派手な32ビットや64ビットの新しいデバイスが登場したことで、人々は8ビットデバイスが絶滅するだろうと予測していました。
いいえ、そうではありませんでした。
8ビットマイクロコントローラは健在です。実際、新しいデバイスの技術的進歩は、古い8ビットデバイスに逆に適用されています。その結果、8ビットマイクロコントローラはより高速で、消費電力も少なくなっています。さらに、ソフトウェアツールの使い勝手が向上するという利点もあります。
PLCにも同じ条件が当てはまります。従来のスタンドアロンPLCは消えることはないと言ってよいでしょう。スタンドアロンPLCは、信頼性も高く、相手先ブランド製造(OEM:Original Equipment Manufacturer)や二次供給元から交換部品が入手可能で、今後何十年にもわたって使用され続けるでしょう。
同時に、計算能力の向上とディープラーニングの可能性が、状況を一変させたことも認識する必要があります。新しいプログラミング言語やネットワーク化されたソフトウェアのデプロイ技術がますます一般的になって行くと言っても過言ではないでしょう。
まとめ
明らかに、PLCプログラミングに関しては考慮すべきことが数多くあります。すべてに適したPLCが存在しないのと同様に、すべてに「最適」で万能なプログラミング言語、というような単純な答えは存在しません。代わりに、アプリケーションごとに微妙な考慮事項があります。
あなたのご意見をTechForumの読者と共有させていただけませんか?どのような困難に直面しましたか?どのように克服しましたか?
あ、それと忘れないでください – ラダーロジックのプログラミングを学ぶことで、将来の技術者と同じ言語を話せるようにしましょう。
ご健闘をお祈りします。
APDahlen
著者について
Aaron Dahlen氏、LCDR USCG(退役)は、DigiKeyでアプリケーションエンジニアを務めています。彼は、技術者およびエンジニアとしての27年間の軍役を通じて構築されたユニークなエレクトロニクスおよびオートメーションのベースを持っており、これは12年間教壇に立ったことによってさらに強化されました(経験と知識の融合)。ミネソタ州立大学Mankato校でMSEEの学位を取得したDahlen氏は、ABET認定EEプログラムで教鞭をとり、EETプログラムのプログラムコーディネーターを務め、軍の電子技術者にコンポーネントレベルの修理を教えてきました。彼はミネソタ州北部の自宅に戻り、このような記事のリサーチや執筆を楽しんでいます。


