工場の巨大なコントロール パネルの前に立って、光るタッチスクリーンを押してコンベアの速度を調整したり、ポンプの温度をチェックしたりしたことがあるなら、産業用 HMI (ヒューマン マシン インターフェイス) を使用したことがあるでしょう。これは、工場の複雑な機械データを、私たち人間が実際に理解して行動できるものに変換するものです。これらのデバイスのサプライヤーとして、「これらの HMI を実際に動作させるプログラミング言語は何ですか?」という質問をよく受けます。これは画一的な答えではなく、適切な言語を選択することが、HMI が確実に動作するか、工場のニーズに合わせて拡張できるか、さらには作業員の安全を確保できるかどうかを左右します。教科書的なものだけでなく、実際の産業現場で実際に使用されているものを詳しく見てみましょう。
まず明確にしましょう。産業用 HMI は、私たちのほとんどが毎日使用しているスマートフォンやラップトップの HMI とは大きく異なります。私たちが作る製品は、埃っぽく、高温で、振動する工場内で、クラッシュすることなく 24 時間年中無休で稼働しなければなりません。彼らは、PLC (プログラマブル ロジック コントローラー)、センサー、モーター、および何十年も前から存在するあらゆる種類のレガシー機器と通信します。したがって、ここで紹介するプログラミング言語は、アプリ開発でよく見かける流行の新しい言語ではありません。これらは、十分にテストされ、安定しており、産業オートメーションの特定の要求に合わせて最適化されています。


よく耳にする最も一般的なものから始めましょう。ラダー ロジック (ラダー ダイアグラムまたは LAD とも呼ばれます) です。ちなみに、これはテキストベースの言語ではありません。グラフィカルで、電気技師が 100 年間使用してきた電気回路図のように見えるように設計されています。昔ながらの配線図の読み方を知っているなら、ラダー ロジックは完全に理にかなっています。ラダー ロジックには、接点 (センサー トリガーやボタンを押すなど) やコイル (モーターのオン/オフなど) を配置する「段」があります。何十年もの間、これが産業用 HMI や PLC をプログラムする唯一の方法であり、今でもどこでも使用されています。
なぜラダーロジックが根強く残っているのでしょうか? 20 年以上現場で働いている工場労働者やエンジニアは、そのことを隅々まで知っています。ライン作業員が午前 2 時にマシンのトラブルシューティングを行う必要がある場合、HMI のラダー ロジック ビューを一目見て、Python 行を解析するよりも早く、トリップしたスイッチを見つけることができます。また、信頼性も非常に優れています。特別なコンパイラは必要なく、ほとんどの PLC や HMI で余分な遅延なくネイティブに実行されます。とはいえ、複雑でデータ量の多いタスクには適していません。工場全体にわたる 10,000 のデータ ポイントを追跡するダッシュボードを構築しようとしている場合、ラダー ロジックは扱いにくく、拡張が困難になる可能性があります。そこで他の言語が登場します。
次は、構造化テキスト (ST) です。これは、BASIC や C によく似たテキストベースの言語です。これは、現代のニーズに合わせたラダー ロジックのアップグレードと考えてください。 ST では、ループ、if/then ステートメント、変数、さらには基本的な数学関数を作成できるため、ラダー ロジックには複雑すぎるが、完全なプログラミング言語は必要ないタスクに最適です。たとえば、産業用 HMI で 50 個のヒーターの平均温度を 10 分間計算し、高すぎる場合にアラートを送信する場合、ラダー ロジックで 20 段を描画する代わりに、ST で数行でそれを記述することができます。最新の HMI ソフトウェアのほとんどは ST をサポートしているため、使いやすさと機能性のバランスをとるための頼りになるソフトウェアになっています。基本的なコーディングを知っていればラダー ロジックよりも習得が簡単なため、現在、多くの新人自動化エンジニアが最初に ST を学習しています。
次に、C/C++ があります。これは驚かれるかもしれませんが、実際にはカスタム産業用 HMI 開発、特に小型の特殊なデバイスでは非常に一般的です。待てよ、ラダーかSTを使えばいいんじゃないの? C/C++ を使用すると、ハードウェアをより詳細に制御できます。これは、高速センサー データの処理、グラフィックスを多用したインターフェイスの操作、汎用言語がサポートしていないニッチな産業用プロトコルとの通信などを行う必要がある HMI にとって重要です。たとえば、特定のレーザー カッターのデータと同期する必要があるカスタム医療機器ライン用の HMI を構築している場合、C/C++ を使用すると、高水準言語のオーバーヘッドを発生させることなく、インターフェイスのあらゆる部分を調整して、必要に応じて正確に動作させることができます。欠点は? C/C++ コードを作成して保守するには熟練した開発者が必要ですが、注意しないとバグが発生しやすくなります。クラッシュが発生すると数千ドルのダウンタイムが発生する可能性がある 24 時間年中無休の工場ラインには理想的ではありません。
Python は、大規模な C/C++ プロジェクトに投資せずに柔軟性を高めたいと考えている中規模の工場を中心に、産業用 HMI でさらに登場し始めています。現在、多くの HMI ソフトウェアでは、Python スクリプトを埋め込んで、クラウドベースの分析ツールからデータを取得したり、Slack や電子メールでカスタム アラートを送信したり、部品がいつ故障するかを予測するための基本的な機械学習モデルを実行したりすることができます。たとえば、作業台の狭いスペースに最適な [HMI 7 インチ] を備えた小規模な製造工場がある場合、Python を使用してその HMI を、機械の使用頻度を追跡する無料の分析ツールに接続できるため、壊れる前にメンテナンスのスケジュールを立てることができます。ここでの注意点は、Python は解釈されるということです。つまり、C などのコンパイルされた言語よりも少し遅いため、ミリ秒単位で応答する必要があるリアルタイム タスクには適していません。しかし、重要ではないデータ中心のタスクの場合は、工場が大金をかけずに HMI をカスタマイズできるようにする革新的なツールです。
あまり聞いたことがないかもしれませんが、多くの従来の HMI で今でも使用されている言語の 1 つが BASIC です。 40 年以上前から存在するブランドの古い独自の HMI は、多くの場合、カスタム スクリプトに BASIC を使用します。唯一の問題は、これらのシステムのほとんどが時代遅れで、部品を見つけるのが難しく、最新の機器とうまく組み合わせられないことです。そのため、ST、Python、または C をサポートする新しい HMI にアップグレードすることをほぼ常に推奨します。たとえば、工場で BASIC を使用する古い HMI がまだ稼働している場合、新しいセンサーを追加するときに互換性の問題が発生する可能性がはるかに高く、センサーがクラッシュした場合、その修正方法を知っている技術者がそれほど多くありません。
ここで、[産業用 HMI] シリーズなどの HMI を構築するときに使用する言語を選択する方法について説明します。まず、お客様に実際に必要なものを尋ねます。基本的なオン/オフ制御と温度測定だけが必要な、数台の機械を備えた小規模な作業場ですか?その場合、ラダー ロジックまたは ST を備えた [HMI 7 インチ] が最適です。シンプルで信頼性が高く、社内チームにとって使いやすいものです。数百のデータポイントを追跡し、クラウド分析と同期する必要がある組み立てライン全体を備えた大規模な自動車部品工場の場合はどうでしょうか?おそらく、コア マシン コントロール用のラダー ロジックとカスタム データ スクリプト用の Python の両方をサポートする HMI を構築することになります。独自の機器を備えたまったく新しいラインを構築するお客様のために、カスタム C/C++ コードを作成して、HMI が必要な方法で正確に通信できるようにすることができます。
オートメーションの初心者の多くは、「なぜ JavaScript を使用しないのですか?」と疑問に思うかもしれません。 Web アプリでは非常に人気がありますね。真実は、JavaScript が産業用 HMI に使用されることはほとんどありません。これは、JavaScript が HMI に必要な過酷な環境やリアルタイム要件に合わせて最適化されていないためです。 Web ベースの HMI は普及し始めています。一部の工場では、エンジニアがスマートフォンから機械をチェックするために Web ベースの HMI を使用しています。しかし、実際の制御部分については、依然として Ladder や ST などのネイティブ言語が必要です。 Web HMI はリモート監視には最適ですが、ラインを 24 時間 365 日稼働し続けるコアタスクには適していません。
もう 1 つ留意すべき点は、ほとんどの産業用 HMI システムは 1 つの言語だけを使用しているわけではありません。それらを組み合わせて、それぞれの利点を最大限に引き出します。たとえば、基本的なモーター制御 (非常に得意な機能) を処理するラダー ロジック、生産数を計算するための ST、クラウド ダッシュボードにデータを送信するための Python を使用することができます。この「両方の長所」アプローチが、最新の HMI が非常に柔軟である理由です。古いレガシー機器と新しいカスタム ツールを同時に使用できます。
私は HMI サプライヤーとして、間違った言語の選択が大きな問題を引き起こす可能性があることをこの目で見てきました。数年前、JavaScript で構築された Web ベースの HMI を使用して、汎用スマートフォン アプリを使用して包装ラインを制御しようとしたお客様がいました。 JavaScript がリアルタイムのデータ フローを処理できないため、回線が混雑するたびにクラッシュしていました。コア制御用にラダー ロジックを備えたカスタム HMI に切り替える必要がありましたが、これによりダウンタイムが 90% 削減されました。別の顧客である小規模なクラフトビール醸造所は、発酵温度を追跡し、バッチが完了したときにテキストアラートを送信したいと考えていました。私たちは Python スクリプトを備えた [HMI 10 インチ] を使用しました。これにより、別の開発者を雇うことなく、温度センサーからデータを取得してテキストを送信できるようになりました。
それで、ここでのポイントは何でしょうか?産業用 HMI に「最適な」プログラミング言語はありません。それはすべて、工場の規模、設備、HMI が実行する必要があるタスク、およびチームの専門知識によって異なります。あなたが配線図を何年も扱ってきた経験豊富な技術者であれば、おそらくラダー ロジックが頼りになるでしょう。多額の費用をかけずにカスタム データ機能を追加する必要がある場合、Python は優れた選択肢です。複雑なカスタム プロジェクトの場合、C/C++ は必要な制御を提供します。
結局のところ、HMI の目標は、派手なタッチスクリーンを搭載することだけではありません。産業作業をより安全に、より効率的に、現場の人々が使いやすくすることです。そのため、当社は複数のプログラミング言語をサポートする HMI を構築しており、お客様のニーズが何であっても、お客様に合ったソリューションを見つけることができます。
工場の HMI をアップグレードしたり、業務に合わせた新しいシステムを構築したりすることをお考えの場合は、オプションをご案内し、チームやラインに適したツールを選択するお手伝いをさせていただきます。
参考文献
- 国際オートメーション協会 (ISA)。 (2021年)。 IEC 61131-3: 産業オートメーション用のプログラミング言語。
- ロックウェル・オートメーション。 (2023年)。産業用HMI製品ガイド。
- 産業オートメーション用の Python の使用例。 (2022年)。オートメーション ワールド マガジン。
- ラダー ロジックと構造化テキスト: 工場現場のチーム向けの実用的な比較。 (2023年)。制御工学。
