通常OSでWeb APIからロボットを直接制御すると何が起きるか
物流システムやロボット連携では、上位システムからWeb APIで指示を受け、そのままPC上のアプリケーションからPLCやロボットへ処理を流したくなることがあります。
構成としてはシンプルですが、通常のWindowsやLinuxなどのOSでは、処理が必ず同じ周期・同じタイミングで実行されるわけではありません。

通常OSでは「同じ周期」で動き続けない
通常OSでは、対象アプリケーション以外にも多くの処理が同時に動いています。
そのため、ある処理を100msごとに実行するよう実装しても、
・別プロセスやOS処理が先に実行される
・スレッドの実行待ちが発生する
・ネットワーク処理の完了時間が変動する
・CPU負荷によって実行タイミングがずれる
といったことが起こります。
平均すると十分高速でも、毎回同じタイムスロットで処理できるとは限らないことがポイントです。
Web API自体も、通信や上位システム側の処理によって1回ごとの応答時間が変わります。
この2つが重なると、
Web APIの応答時間の揺らぎ
+
通常OS上のスレッド実行タイミングの揺らぎ
が、そのまま下流の設備制御へ持ち込まれることになります。
起きやすいこと
ロボットやPLC側から見ると、指示の到着間隔が一定ではなくなるため、
・処理周期が不定に1秒以下の停止の頻発
・他設備とのタイミングがずれる
・タイムアウト条件に入りやすくなる
といった問題につながります。
上位から数秒に1回タスクを渡す用途であれば問題にならなくても、設備状態を短い周期で確認しながらロボットを制御する用途では、この差が大きくなります。
結果アームロボットでは、1回あたり0.5秒程度の停止でも、実際の動きとしては意外に不自然に見えます。さらに、その小さな待ち時間が1日に何百回、何千回と積み重なると、想像以上の時間損失になります。こうしたわずかな遅延の積み重ねは、設備全体のサイクルタイムや生産性にも影響します。
通常OS、リアルタイムOS、RTOSの違い
通常OSは、多数のアプリケーションを柔軟に動かすことを重視しています。
一方、リアルタイムOSやRTOSでは、処理の速さそのものだけではなく、必要な処理を決められた時間内に実行しやすいことが重視されます。
つまり、
通常OS:平均的には速いが、実行タイミングには揺らぎがある
RTOS:必要な処理を決められたタイミングで動かしやすい
という違いがあります。
Zephyrも、組込み機器向けに設計されたRTOSの一つです。
Arduino Pro OptaとZephyr
Arduino Pro Optaは産業用途向けのmicro PLCで、Zephyr Projectの公式ドキュメントでもサポート対象ボードとして掲載されています。
PLC・ロボットに近い制御を一つの小型デバイス上で扱える点は、Optaの特徴の一つです。
T-T LABでは、Web API、PLC、ロボットなど、処理速度や通信方式の異なるシステムをどのように分離・接続するかを含め、実機を用いた検証やシステム連携を支援しています。
物流システムと設備をつなぐ開発を支援します
T-T LABでは、物流システム・倉庫管理ソフトウェアの開発、ロボット、自動倉庫などのシステム連携を支援しています。
WMSなどの上位システムと設備の接続方法、物流設備間のインターフェース設計など、システム連携に関するご相談も承ります。
