Summary
本研究は、メッセージキューテレメトリトランスポート(MQTT)と呼ばれるメッセージプロトコルに基づくフィルム押出システムと監視装置との間のデータ通信のための柔軟な方法を提案する。
Abstract
本研究は,TCP/IP上で動作するメッセージキュー遠隔測定トランスポート(MQTT)と呼ばれるパブリッシャ-サブスクライバベースのプロトコルを採用することにより,高分子加工機の柔軟なデータ通信構造を構築することを目的とする.従来の機器を使用する場合でも、インターネット通信を通じて、処理データをどこでも様々な機器で計測・記録することができます。メッセージベースのプロトコルは、既存のサーバー/クライアントプロトコルの欠点を克服する柔軟な通信を可能にします。複数のデバイスが、ソース・デバイスによってパブリッシュされた処理データをサブスクライブできます。提案手法は,複数のパブリッシャーとサブスクライバー間のデータ通信を容易にする.この作業では、機器と追加のセンサーからのデータをメッセージブローカーに公開するシステムを実装しました。サブスクライバーは、ブローカーによって中継されたプロセス・データをモニターおよび保管できます。このシステムは、有効性を実証するためにフィルム押出ライン用に展開および実行されています。
Introduction
第4次産業革命の波の中で、各種処理データの取得・監視が重要な課題となっています1.特に、プロセスデータを用いた製造プロセスの改善と効率的な運用計画の確立は、すべての製造施設2,3の重要な目標となります。ダウンタイムは、アラームを工場から送信できる場合、または予測メンテナンスを時間内に実行できる場合4 に大幅に短縮できます。最近、ポリマープロセスにおけるデータ分析のために多くの努力がなされている5,6。しかしながら、既存のシステム7からこのようなデータを取得することが困難であるため、これらのタスクを実行することは容易ではない。制御と計測の階層構造により、データの集録と通信が困難になります。
まず第一に、異なる製造日を持つ異なる機械からデータを取得することは不可能です。異なるマシン間の通信を実現するには、独自の形式の異なるフィールドバス間の相互運用性が必要であるため、困難です。このようにして、通信方法とデータ形式はプライベートに保たれます。これにより、データセキュリティを簡単に維持できますが、ユーザーはサービスや将来の開発についてマシンビルダーに依存するようになります。近年の高分子加工機に搭載されたヒューマンマシンインタフェース(HMI)などの制御コンピュータは、ほとんどがWindowsベースですが、独自の開発環境で作成されたソフトウェアが搭載されています。センサまたはアクチュエータと通信するために異なる企業のプログラマブルロジックコントローラ(PLC)を使用することが可能であるが、多くの場合、上部監視制御およびデータ収集(SCADA)システムは、制御コンピュータ8に依存する。この慣行により、多数のプロトコル、フィールドバス、および制御システムが市場で競合しています。この複雑さは時間の経過とともに少しずつ緩和されましたが、多くの種類のフィールドバスとプロトコルがまだ活発に使用されています。
一方、制御装置とSCADA間の通信は、Open Platform Communications United Architecture(OPCUA)9によって標準化されています。さらに、SCADAと製造実行システム(MES)との間の通信も、主にOPCUAを介して行われています。このようなタイトな階層構造では、プロセスの監視と分析のためにデータを自由に抽出することは容易ではありません。通常、データはSCADAまたはMES10から抽出する必要があります。前述のように、これらのシステムはベンダー固有であり、データ形式が開かれることはめったにありません。その結果、データ抽出には、元の情報技術/運用技術(IT/OT)ソリューションベンダーからの実質的なサポートが必要です。これにより、監視と分析のためのデータ取得が妨げられる可能性があります。
フィルム押出ラインにおいて、制御PCはSCADAシステム11によって監視される。SCADAシステムは、簡単に変更できないコンピュータプログラムによって操作されます。コンピュータプログラムは編集可能かもしれませんが、編集は非常に高価で時間がかかります。処理データを簡単に監視および分析するには、任意の場所からデータにアクセスできる必要があります。サイトから離れたところで処理データを監視するために、コンピュータプログラムは、処理データをインターネット12にストリーミングすることができるべきである。また、オープンフリー方式は、データ取得13のためのコストを低減する。このアプローチにより、商用ITソリューションに投資する余裕のない小規模工場でもデータ分析を実行できます14。
この研究では、パブリッシャー-加入者モデルに基づくメッセージプロトコルが採用されている。メッセージ キュー テレメトリ トランスポート (MQTT) は、複数のデータ プロバイダーとコンシューマー間のメッセージングを可能にするオープンで標準的なプロトコルです15。ここでは、既存の製造設備について、MQTTを用いてデータを取得・送信・監視するシステムを提案します。システムは、性能を検証するためにフィルム押出ラインでテストされます。元のコントローラからのデータは、Modbusプロトコル を介して エッジデバイスに送信されます。その後、データがブローカーにパブリッシュされます。その間、2つのラズベリーピスは、測定された温度と照度を同じブローカーに公開します。その後、インターネット上の任意のデバイスがデータをサブスクライブし、その後、 図 1 に示すようにデータを監視および記録できます。この作業のプロトコルは、手順全体を実行する方法を示しています。
Subscription Required. Please recommend JoVE to your librarian.
Protocol
1. ブローカーのインストール
メモ: インターネット 経由で 処理データを監視および記録するには、データを中継するコンピュータシステムを準備する必要があります。 図 2 に示すように、システムはパブリッシャーとサブスクライバーの両方からアクセス可能である必要があります。したがって、通信の前に認識されているパブリックIPアドレスが必要です。Eclipse Mosquitto と呼ばれるオープンな MQTT ブローカーがシステム13 にインストールされます。
- パブリックIPアドレスを指定してコンピュータをインターネットに接続します。オペレーティングシステムのIP設定でアドレスを指定します。
- Eclipse Mosquitto などのブローカー・ソフトウェアをコンピューターにインストールします。ブラウザを使用してインストールファイルをダウンロードし、実行します。
- MQTT Lens などのテスト・プログラムを使用してブローカーをテストします。ブラウザーを使用して MQTT レンズをダウンロードし、インストールします。次に、パブリッシュされたメッセージがサブスクライブされていることを確認します。
2. 主な出版社の準備
メモ: このコンピュータは、TCP 経由で MQTT 経由で マシンデータをブローカーに公開します。レガシーデータは、送信するために解釈して再パッケージ化する必要があります。これは通常RS485かイーサネットによって行うことができる。ハードウェア・レベルでの接続は、バス・タイプに応じて検証する必要があります。押出成形機は、イーサネットポートを介してModbus 経由で データを送信します。
- コンピューターをコンピューター サイトに物理的に配置し、メインの発行元としてセットアップします。
注:義務ではありませんが、この作品では産業用コンピュータが選択されました。 - コンピュータに Python3 をインストールします。ブラウザを使用してインストーラファイルをダウンロードし、実行します。
- PyModbus16 をインストールします。ブラウザを使用してインストーラファイルをダウンロードし、実行します。
- HMIがマシンを制御している押出コントローラを調べ、押出コントローラをメインの発行元に接続します。
- ModbusPoll や QModMaster などの Modbus ツールを使用して、マシンから Modbus プロトコルのデータと対応するアドレスを完全に識別します。送信されたマシンデータがModbusツールの対応するセルに表示されていることを確認します。
- パブリッシャー PC に、押し出しコントローラーからデータを取得する Python コードを記述します。
メモ: コード例を次に示します。
から pyModbusTCP.client import ModbusClient
client = ModbusClient(host="192.168.1.***", port=***, unit_id=***)
クライアント.open()
ExtrusionData = str(client.read_holding_registers(1000, 58)) - PCIe、USB、RS232、RS485 を介して 他のデバイスからの追加のデータストリームをマージします。
注: これは簡単です。追加のデータ文字列が取得されたら、既存のデータストリームにデータを追加するだけです。これは、次のコードで行います。
押出データ += 追加データ - paho.mqtt.client をートするには、paho-mqtt をインストールした後、pip install paho-mqtt17 を使用します 。
- ブローカーに接続してデータをパブリッシュするコードを実装します。
メモ: 次のコード例を参照してください。
url="117.xx.xxx.xx";ポート = 1883;ユーザー名 = "****";パスワード = "xxxxx";トピック = "押出機"
mqttc = mqtt.クライアント()
mqttc.username_pw_set(ユーザー名、パスワード)
mqttc.connect(host=url, port=port)
mqttc.loop_start()
ExtrusionData = str(client.read_holding_registers(1000, 58))
Pub1= mqttc.publish(topic, ExtrusionData))
Pub1.wait_for_publish()
3. パブリッシャーの追加準備
メモ: このコンピュータは、TCP 経由で MQTT 経由で ブローカーにマシンデータを公開します。場合によっては、メインパブリッシャーでは実行できない追加の測定が必要になることがあります。Raspberry PiやArduinoなどのモノのインターネット(IoT)デバイスがその役割を果たすことができます。本研究では、温度データや照度データにラズベリーパイを採用した。この手順は、プロトコル・セクション 2 に似ています。
- センサーの位置の近くにラズベリーパイを置きます。
メモ:配線距離が限られているため、ラズベリーパイを測定場所から非常に遠くに配置することはできません。ただし、押出機の近傍は非常に高温であるため、装置は測定場所から少なくとも1m離して配置する必要があります。 - コマンドラインで次のコマンドを実行して、ラズベリーパイにPython3をインストールします。
sudo apt update
sudo apt install Python3 idle3 - センサー データを取得するコードを実装します。センサデータは、I2CまたはGPIOを介して送信することができる。
メモ: GPIO による追加の温度データについては 、 次のコード例を参照してください。
max6675からMAX6675をート
cs_pin1 = 24;clock_pin1 = 25;data_pin1 = 18
cs_pin2 = 9;clock_pin2 = 11;data_pin2 = 19
単位 = "C"
熱電対1 = MAX6675(cs_pin1、clock_pin1、data_pin1、ユニット)
熱電対2 = MAX6675(cs_pin2、clock_pin2、data_pin2、ユニット)
T1 = 熱電対1.get()
T2 = 熱電対2.get() - Import paho.mqtt.client.
- セクション 2 のコードを再利用して、ブローカーに接続してデータをパブリッシュします。
4. 購読者の設定
注: インターネット上のどのデバイスも、ブローカー を介して 処理データを受け取ることができます。データは Python コードによっても処理および視覚化されます。開発が困難な場合は、Google Play の MQTT Client や App Store の MQT Tool などの利用可能なアプリケーションを使用できます。ユーザー インターフェイスの実装は非常に長いため、ここでは詳細を説明できません。また、App Store の MQT Tool などの既存のアプリケーションがデータを受信できることにも注意してください。
- インターネットへのサブスクリプションのためにデバイスをエンゲージします。物理的なケーブル接続を確認し、コマンド行でブローカー IP への ping を実行します (例えば、ping 117.xx.xxx.xx)。
- デバイスとOSに応じて適切なPython環境をインストールします。たとえば、Google Play の Python3 の代わりに Pydroid3 をアンドロイドデバイスにインストールします。
- paho.mqtt.client と paho.mqtt.subscribe の両方をートして、ブローカーに接続してブローカーからデータを受信します。
メモ: 次のコード例を参照してください。
paho.mqtt.client を mqtt としてートする
paho.mqtt.subscribe を subscribe としてートする
url="117.xx.xxx.xx";ポート = 1883;ユーザー名 = "****";パスワード = "xxxxx";トピック = "押出機"
mqttc.username_pw_set(ユーザー名、パスワード)
mqttc.connect(host=url, port=port)
mqttc.subscribe(topic, 0)
mqttc.loop_start()
Sub1 = subscribe.simple(topic, hostname=url)
ExtruderData = Sub1.payload.decode("utf-8") - 必要に応じてPyQT5を使用してユーザーインターフェイスを構築します。
注:この部分は非常に長く、通信ではなく受信データのグラフィカル表現に焦点を当てています。対応するコードは、補足データとして提供されます。 - ビルドされたコードを実行して、GUIに受信データを表示します。
5. データロギング
メモ: 処理データは、監視中にデータベースに書き込むことができます。この研究では、ラボ規模のデータベースが選ばれました。データは Access ファイルに接続され、ユーザーのコンピューターから簡単に書き込んだり取得したりできます。さらに、クエリによってテーブルを即座に作成し、Microsoft Excel などのスプレッドシート内のデータを分析できます。
- データを記録するサブスクライバー デバイスを選択します。
- 図 318 に示すように、Python コードのコマンドラインで "pip install pyodbc" を実行して pyodbc をートします。
- 処理データを記録するための Python コードによってデータベースにクエリを送信します。このメソッドについては、 図 3 の Python コードを参照してください。
- 記録されたデータを取得するためのクエリをデータベースに送信します。
注: データ取得のコード例を以下に示します。
ート pyodbc
x for x in pyodbc.drivers() if x.startswith('Microsoft Access Driver')]
conn_str = (
r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
r'DBQ=C:\Users\data_analysis\db1.accdb;'
)
cnxn = pyodbc.connect(conn_str)
crsr = cnxn.cursor()
crsr.tables(tableType='TABLE') のtable_infoの場合:
print(table_info.table_name)
sql = """\
Process_Conditionから*を選択
"""
crsr = cnxn.execute(sql)
crsrの行の場合:
取得されたデータ = pd.read_sql(sql, cnxn)
crsr.close()
cnxn.close()
6. 展開
メモ: すべてのデバイスをインターネットに接続できる場合、セットアップは簡単です。ただし、コンピューター側のデータをセキュリティで保護するために、発行元はイントラネットにのみ存在できます。この場合、ブローカーはインターネットへのゲートウェイになることができます。そのためには、ブローカーに2つのイーサネットアダプタを装備する必要があり、そのうちの1つはパブリックIPアドレスを持っている必要があります。すべての項目が開発されたら、 図 4 に示すように、コードを各デバイスに展開する必要があります。有線または無線の接続モードは重要ではありませんが、各デバイスがブローカーにアクセスできるように保護する必要があります。これは、ブローカーがセキュリティ上の目的でイントラネットとインターネットの境界にあるゲートウェイとして動作できることを意味します。もちろん、すべての機器がインターネットに公開されていても、通信の観点からは問題ありません。
- エクストルージョン コントローラー、メイン パブリッシャー、および追加のパブリッシャーをイーサネット 経由で イントラネット ポートに接続します。
- ブローカーの 1 つのイーサネット・ポートをイントラネットに接続し、もう 1 つのイーサネット・ポートをインターネットに接続します。
- サブスクライバーをインターネットに接続するには、すべてのサブスクライバーに対して手順 4.1 を繰り返します。
7. 実行
注:システム全体をテストするために、押出ラインを開始し、すべてのPythonコードとMosquittoを実行しました。
- 押出プロセスを開始します。機械のHMIで、温度を設定し、HMI画面のボタンをタッチしてヒーターをオンにします。必要な温度に達したら、スクリュー回転を開始してポリマー溶融物を押し出します。
- すべてのコンピュータの電源を入れ、"net start mosquitto" コマンドでブローカー デバイス上のブローカー ソフトウェアを起動し、Python コードを実行して、必要に応じて処理データを監視および記録します。
メモ: 手順 7.1 と手順 7.2 の順序は逆にできます。Python コードは、コマンドラインで "python3 xxxxx.py" と入力し、その後に Enter キーを押すだけで実行できます。このコマンドをスタートアッププログラムに追加して、デバイスが再起動するたびにコマンドを入力しないようにします。
Subscription Required. Please recommend JoVE to your librarian.
Representative Results
HMIに示され、ラズベリーピスによって測定されたデータは、 図5に示すように加入者に監視および記録されたことが判明した。ビデオで示されているように、処理データはデータベースに記録されます。
図 1: MQTT プロトコルを使用したデータ伝送の概要 ブローカーは、パブリッシャーからサブスクライバーにメッセージを中継します。この図の発行元は、メインの発行元と追加の発行元 (Raspberry Pi) です。メインパブリッシャーは、データを受信するために押出成形機に直接接続されます。加入者数は、ネットワーク容量が許す限り制限されません。サブスクライバーは、データを他のサブスクライバーに再発行して、Access などのデータベースに記録できます。 この図の拡大版を表示するには、ここをクリックしてください。
図2:フィルム押出ラインにおける出版、仲介、および購読によるデータフロー。 処理データは、左上のボックスに表示される物理システムによって公開されます。サブスクライバーの場合、PyQt5 に基づいてグラフィックユーザーインターフェイスを作成する Python コードが記述され、受信したデータが画面に表示されます。 この図の拡大版を表示するには、ここをクリックしてください。
図 3: サブスクライブしたデータを ODBC 経由で MS Access ファイルに記録する。 Microsoft Access への接続を確立するために、ODBC が採用されました。pyodbc を使用した Python コードは接続用に記述されており、ユーザーが生成したクエリを送信することでログ記録と分析を行うことができます。 この図の拡大版を表示するには、ここをクリックしてください。
図 4: システム全体の展開 建物 2 のブローカー・デバイスには、イントラネットとインターネットへの 2 つのイーサネット・ポートが必要です。セキュリティのため、発行元はイントラネットに接続され、サブスクライバーはインターネットに接続されます。ブローカーは、キャンパス外にアクセスするためにパブリックIPアドレスを必要とします。その結果、インターネット上のすべてのデバイスが公開されたデータをサブスクライブできます。 この図の拡大版を表示するには、ここをクリックしてください。
図5:フィルム押出ラインを操作しながらデータ監視システムを実行する。 処理データは、システム全体が展開されると、押出操作中(右下)に監視できます。HMI(右上)に示されているデータは外部に公開されています。ブローカーが開始されたら、パブリッシャー・デバイスとサブスクライバー・デバイスのコードを実行する必要があります。その後、データフローはシステムで計画どおりに開始されます。入力データを使用して、フィルムされた押出ラインを監視および表示することができます(左下)。 この図の拡大版を表示するには、ここをクリックしてください。
Subscription Required. Please recommend JoVE to your librarian.
Discussion
提示されたプロトコルに従うことによって、MESのような高価なITソリューションなしで処理データを監視および記録することができる。IoT技術により、従来の機械からのデータの取得と配信が容易になります。メッセージベースのプロトコルであるMQTTは、ポリマー処理ラインのデータ通信のプラットフォームとしてうまく機能することが示されています。さらに、追加のデータを柔軟に測定して一緒に送信することができます。この作品で雇われた追加の出版社はラズベリーパイスでした。特に、産業用ラズベリーパイエンクロージャに収納することでさらに保護し、過酷な条件下での堅牢な動作を確保できます。サブスクライバーは、任意のオペレーティング システムを持つ任意のデバイスになります。加入者デバイスは、加入するトピックを選択することによって、必要なデータのみを受信することができる。この研究は、MQTTとIoTデバイスを組み合わせることで、ポリマー加工ラインのデータ監視を非常に困難なく実現できることを示しています。現代の産業用通信アーキテクチャは、パデューモデルのようなピラミッドアーキテクチャから逸脱する傾向があり、提案された方法もこの傾向が正当化されることを示している。
Pythonを使用してソフトウェアを実装することにより、コードをさまざまなプラットフォーム19で再利用することができます。その結果、異なるプラットフォームを持つデバイスは、処理データの公開と購読に参加できます。さらに、PyModbus、pyodbc、paho.mqtt、PyQT5 などのいくつかのビルド済みコードをートすることで、コーディングの負荷を大幅に軽減できます。MQTT に関する開発は単純で単純明快であったため、デバッグにそれほど困難はありませんでした。ただし、レガシ コントローラーから発行元デバイスに処理データを取り込むには、かなりの労力が必要でした。データ形式とプロトコルが明確にわからない場合は、データパケットを慎重に分析する必要があります。また、サイバーセキュリティの問題は、不要なデータ漏洩を防ぐために検討する必要があります。
多くの機械を持つ大規模な工場では、おそらくOPCUA通信を使用して、従来のMESベースのデータ集録が必要になる場合があります。このような場合、ITシステムへの投資は、りリスクを冒すことなく行うことができます。しかし、予算が厳しい小規模工場の場合、提案されたモデルは有望な代替案20です。したがって、MESとIoTは、かなりの期間にわたって共存し、発展することが期待されています。射出成形や押出成形などのポリマープロセスに加えて、このアプローチは、データ通信を必要とするあらゆる製造プロセスに適用できます。
Subscription Required. Please recommend JoVE to your librarian.
Disclosures
著者らは利益相反がないと宣言しています。
Acknowledgments
本研究は、ソウルテック(ソウル科学技術大学)が資金提供する研究プログラムの支援を受けた。
Materials
Name | Company | Catalog Number | Comments |
Edge Device | Adavantech | UNO 420 | Intel Atom E3815 Fanless |
Film Extrusion Machine | EM Korea | Not Available | For production of 450 mm film |
Pydroid | IIEC | Not Available | Android Devices |
Python3 | Python Software Foundataion | Not Available | Windows, Linux |
Raspberry Pi 4 | CanaKit | Not Available | Standard Kit |
References
- Shafiq, S. I., Szczerbicki, E., Sanin, C. Proposition of the methodology for Data Acquisition, Analysis and Visualization in support of Industry 4.0. Procedia Computer Science. 159, 1976-1985 (2019).
- Dilda, V., et al. Manufacturing: Analytics unleashes productivity and profitability. McKinsey & Company. , https://www.mckinsey.com/business-functions/operations/our-insights/manufacturing-analytics-unleashes-productivity-and-profitability (2017).
- Ismail, A., Truong, H. L., Kastner, W. Manufacturing process data analysis pipelines: A requirements analysis and survey. Journal of Big Data. 6, 1 (2019).
- Nwanya, S. C., Udofia, J. I., Ajayi, O. O. Optimization of machine downtime in the plastic manufacturing. Cogent Engineering. 4 (1), 1335444 (2017).
- Zhou, T., Song, Z., Sundmacher, K. Big data creates new opportunities for materials research: A review on methods and applications of machine learning for materials design. Engineering. 5 (6), 1017-1026 (2019).
- Rousopoulou, V., Nizamis, A., Thanasis, V., Ioannidis, D., Tzovaras, D. Predictive maintenance for injection molding machines enabled by cognitive analytics for Industry 4.0. Frontiers in Artificial Intelligence. 3, 578152 (2020).
- Mamo, F. T., Sikora, A., Rathfelder, C. Legacy to Industry 4.0: A Profibus Sniffer. Journal of Physics: Conference Series. 870, 012002 (2017).
- Figueroa-Lorenzo, S., Añorga, J., Arrizabalaga, S. A role-based access control model in Modbus SCADA systems. A centralized model approach. Sensors. 19 (20), 4455 (2019).
- Schleipen, M., Gilani, S. -S., Bischoff, T., Pfrommer, J. OPC UA & Industrie 4.0 - Enabling technology with high diversity and variability. Procedia CIRP. 57, 315-320 (2016).
- Nițulescu, I. -V., Korodi, A. Supervisory control and data Acquisition approach in node-RED: Application and discussions. IoT. 1, 76-91 (2020).
- Perez-Lopez, E.
SCADA systems in the industrial automation. Tecnología en Marcha. 28 (4), 3-14 (2015). - Andersen, D. L., Ashbrook, C. S. A., Karlborg, N. B. Significance of big data analytics and the internet of things (IoT) aspects in industrial development, governance and sustainability. International Journal of Intelligent Networks. 1, 107-111 (2020).
- Kashyap, M., Sharma, V., Gupta, N. Taking MQTT and NodeMcu to IOT: Communication in Internet of Things. Procedia Computer Science. 132, 1611-1618 (2018).
- Connet, J. Mythbusting the MES. Systema. , Available from: https://www.systema.com/blog/mythbusting-the-mes (2021).
- Yeh, C. -S., Chen, S. -L., Li, I. -C. Implementation of MQTT protocol based network architecture for smart factory. Proceedings of the Institution of Mechanical Engineers, Part B: Journal of Engineering Manufacture. 235 (13), 2132-2142 (2021).
- Parian, C., Guldimann, T., Bhatia, S. Fooling the master: Exploiting weaknesses in the Modbus protocol. Procedia Computer Science. 171, 2453-2458 (2020).
- Mishra, B., Kertesz, A. The use of MQTT in M2M and IoT systems: A survey. IEEE Access. 8, 201071-201086 (2020).
- pyodbc 4.0.34. , Available from: https://pypi.org/project/pyodbc/ (2021).
- Ayer, V., Miguez, S., Toby, B. Why scientists should learn to program in Python. Powder Diffraction. 29 (2), 48-64 (2014).
- Boyes, H., Hallaq, B., Cunningham, J., Watson, T. The industrial internet of things (IIoT): An analysis framework. Computers in Industry. 101, 1-12 (2018).