以下の詳細な説明は、本出願の図面および例示の実装形態の詳細を提供する。図面間の冗長要素の参照番号および説明は、明確のため、省略する。本明細書全体を通して使用される用語は、例として提供されるものであり、限定することを意図するものではない。例えば、「自動」という用語の使用は、本出願の実装形態を実施する当業者の所望の実装形態に応じて、実装形態のいくつかの態様では、ユーザまたは管理者の制御を含む完全自動または半自動の実装を含んでいてもよい。選択は、ユーザインターフェースまたは他の入力手段を介してユーザによって行うことができる、あるいは所望のアルゴリズムを通して実装することができる。本明細書で説明する例示の実装形態は、単独で、または組み合わせて利用することができ、例示の実装形態の機能性は、所望の実装形態に従った任意の手段を介して実装することができる。
図1は、例示の実装形態による、制御システムの例示の構成を示す。制御デバイス120a~120cは、ネットワーク中継デバイス121a~121fおよび制御ネットワーク122を介して、入出力(I/O)制御デバイス123a~123dに接続し、通信を行う。なお、入出力(I/O)制御デバイス123a~123dについては、以下、I/O制御デバイス123a~123dと称する。
制御デバイス120a~120cは、被制御デバイス124a~124dを制御するための制御コマンド値の送信、センサまたはアクチュエータのような被制御デバイス124a~124dの測定値とセンサ情報の取得、およびI/O制御デバイス123a~123dで通信パケットを送受信することによる様々な設定を行う。
制御デバイス120a~120cは、分散型制御システム(DCS)の中央制御ユニットや電力系統の継電器のような形で実装でき、制御システム内でサンプリングデータ、制御コマンド、および状態信号を交換することができる。同じ制御システム内のデータはパケットに統合することができる。
制御デバイス120a~120cはソフトウェア可視化技術またはソフトウェアコンテナ技術をサポートしてもよく、アプリケーションまたはオペレーティングシステム(OS)は可視化によって、コンテナとして管理してもよい。
所望の実装形態に応じて、制御デバイス120a~120cの物理的実装には、専用コントローラ、産業用パーソナルコンピュータ(PC)、制御コンピュータ、DCSコントローラ、マルチアクセスエッジコンピューティング(MEC)、コンピュータクラウド、サーバコンピュータ、SCADA(監視制御およびデータ取得)サーバ、PLC(プログラマブル論理コントローラ)、IED(インテリジェント電子デバイス)、継電器等を含むことができる。
ネットワーク中継デバイス121a~121fは、制御ネットワーク122の中継デバイスである。制御デバイス120a~120c、I/O制御デバイス123a~123d、およびネットワーク中継デバイス121a~121fの間で通信されるパケットは、ルーティングされて転送される。
所望の実装形態に応じて、ネットワーク中継デバイス121a~121fの物理的実装の形態は、タイムセンシティブネットワーク(TSN)対応スイッチ、L2スイッチまたはL3スイッチを含むネットワークスイッチ、ソフトウェア定義ネットワーク(SDN)対応デバイス、ネットワーク関数可視化(NFV)対応デバイス、ブリッジ、ルータ、IEEE1588TC(透明クロック)、BC(境界クロック)、OpenFlowスイッチ、IEC62439-3で定義されているRedBoxおよびQuadBox、光学スイッチ、光学オシレータ、および他の様々なネットワーク中継デバイスなどの形式でもよい。
制御ネットワーク122は、制御デバイス120a~120c、ネットワーク中継デバイス121a~121fおよびI/O制御デバイス123a~123dを接続するためのネットワークである。制御ネットワーク122の物理的実装は、IEEE802.3(イーサネット)、IEC61784、IEC61784-2通信プロファイルファミリー12(以降、EtherCAT(登録商標))、IEC61158で定義された制御ネットワークを含む各種産業ネットワーク、TSNに関連するIEEE通信規格、5G、4G、および6Gのコアネットワークなどのワイヤレスネットワーク、DNP(分散型ネットワークプロトコル)3、IEC61970、HSR(高可用シームレス冗長性)およびIEC62439-3のPRP(パラレル冗長性プロトコル)、リングネットワーク、IEEE802.17RPR、CAN(コントローラエリアネットワーク:登録商標)、DeviceNet、RS-232C、RS-422、RS-485、ZigBee(登録商標)、Bluetooth(登録商標)、IEEE802.15、IEEE802.1、モバイル通信、ECHONET Lite(登録商標)、Open ADR(登録商標)、Wifiおよび5Gのような各種無線通信、および産業ワイヤレスネットワークでもよい。
さらに、IEC61850、OPC UA (統一アーキテクチャ)、DDS(データ配信サービス)、IEC 61850-7-420、IEC 60870-5-104は、上位層プロトコルの例である。あるいは、上記のプロトコルを階層化してもよい。例えば、TSNパケット内にあるデータのコンテンツがOPC UA基準を適用する例として挙げられる。
I/O制御デバイス123a~123dがセンサおよびアクチュエータのような被制御デバイス124a~124dに接続され、制御ネットワーク122を介して制御デバイス120a~120cから受信した制御コマンドに従ってそれらを制御および構成する。さらに、被制御デバイス124a~124dの状態と情報を取得し、それらを制御デバイス120a~120cに制御ネットワーク122を介して送信する。
I/O制御デバイス123a~123dは、センサとして情報を入力するだけ、アクチュエータとして出力するだけに構成することもできるし、あるいは、所望の実装形態に従って入力/出力関数の両方を組み合わせてもよい。
所望の実装形態に応じて、I/O制御デバイス123a~123dの物理的実装は、専用コントローラ、産業用PC、制御コンピュータ、DCSコントローラ、SCADAデバイス、PLC、スマートフォンや無線通信デバイスのような無線通信インターフェースを備えたデバイス、IED、MU(マージユニット)、継電器などの形式でもよい。
被制御デバイス124a~124dは、I/O制御デバイス123a~123dに制御されるデバイスである。被制御デバイス124a~124dの例としては、所望の実装形態によると、モバイルロボット、ヒューマノイド、およびロボットアームなどの産業ロボット、無人搬送車(AGV)、自律移動体、遠隔操作移動体、チップマウンタ、工作機械テーブル、加工装置、工作機械、半導体製造装置、製造デバイスのモータまたはインバータ、回路遮断機や断路器などの電力機器、各種センサ(エンコーダ、温度センサ、圧力センサなど)などが挙げられる。
制御通信ストレージデバイス125は、制御デバイス120およびI/O制御デバイス123の間で通信される制御パケットを制御ネットワーク122を介して受信して、それらを記憶する。また、要求に応じて記憶した情報を提供する。
制御通信ストレージデバイス125の例としては、ネットワーク接続ストレージ(NAS)、コンピュータクラウド、および専用通信デバイスなどのようなファイルサーバまたはストレージサーバが挙げられる。
アクセスポイント126は、無線通信における基地局であり、ワイヤレスネットワーク122cを介して、有線接続を伴わない移動体およびI/O制御デバイス123cおよび123dと通信する。さらに、アクセスポイント126は、制御デバイス120および制御通信ストレージデバイス125とネットワーク122aを介して通信する。アクセスポイント126の例としては、4G、5G、6Gの基地局、WirelessHART、ISA100などのような産業用無線通信が挙げられる。
ところで、図1のネットワーク中継デバイス121a~121fの数は、所望の実装形態によると、いくつでもよく、制御デバイス120a~120cとI/O制御デバイス123a~123dの間の通信経路の数は異なっていてもよい。
さらに、制御デバイス120a~120cおよびI/O制御デバイス123a~123dは、区別されるが、通信デバイスは、所望の実装形態に応じて、1つのデバイスに両方の役割を有していてもよい。
さらに、制御システムには1つ以上の制御デバイス120a~120cがあってもよい。
図1に示す制御システムの例としては、FA(ファクトリーオートメーション)およびPA(プロセスオートメーション)のための分散型制御システム(DCS)、無線通信を使用する遠隔制御システム、電力系統の監視および保護制御システム、産業機器、半導体製造装置、車載システム、建設機械や鉄道車両の制御システム、鉄道地上信号システム、航空機の制御システムなどが挙げられる。あるいは、制御デバイス120a~120cまたはクラウドまたはコンピュータ上の制御ネットワーク122を介して収集した情報に適用される人工知能を使うことによって制御システムの性能を向上させるインターネット・オブ・シングス(IoT)システムも適用可能である。
図2は、例示の実装形態による、制御デバイス120と制御通信ストレージデバイス125のハードウェア構造を示す。中央処理装置(CPU)101は、不揮発性ストレージ媒体105からメモリ104までプログラムを転送して実行する。オペレーティングシステム(以降、OSと称する)およびOS上で動作するアプリケーションプログラムが実行プログラムとして例示される。CPU101上で動作するプログラムは、通信制御集積回路(IC)102の設定を操作し、状態情報を取得する。なお、通信制御集積回路(IC)102を、以下「通信制御IC102」と称する。
通信制御IC102は、送信リクエスト、CPU101上で動作するソフトウェアからの送信データを受信して、物理層(PHY)103を使用して制御ネットワーク122に送信する。また、通信制御IC102は、制御ネットワーク122から受信したデータをCPU101、メモリ104、および不揮発性ストレージ媒体105にバス106を介して転送する。
通信制御IC102は、また、ネットワークを使用した時間同期プロトコルを実行する関数を提供する。すなわち、通信制御IC102は、時間同期パケットの送受信の時間のタイムスタンプの制御、同期パケットへの補正値の設定、および補正値への滞留時間の付加を制御する。
このような同期プロトコルは、所望の実装形態によると、IEEE1588、IEEE802.1AS、NTP、SNTPなどを含む。補正値としては、IEEE1588補正フィールド(CF)が適用可能な例である。さらに、別の実施例では、物理層での送受信のタイムスタンプ関数をサポートして、主にソフトウェア処理によって実行される時間同期プロトコルと比較して正確に同期させることができる。
さらに、別の実施例では、同期時間に基づいて時間管理関数をサポートすることを含む。そのような時間管理関数は、指定された時間における中断、アラーム信号の生成、所定の期間の中断、および他の関数ユニットおよびデバイスに同期時間を提供することを含む。
通信制御IC102の実装形態は、所望の実装形態によると、フィールド・プログラマブル・ゲート・アレイ(FPGA)、結合プログラマブル論理回路(CPLD)、特定用途向け集積回路(ASIC)、ゲートアレイのようなICなどである。あるいは、通信制御IC102は、CPU101と統合することによって構成してもよい。通信制御IC102は、MAC層および/またはPHY層を含むIEEE802.3通信デバイスでもよい。この場合、通信制御IC102の実装例は、IEEE802.3メディアアクセス制御(MAC)チップ、物理層(PHY)チップ、およびMAC/PHY復号チップである。ちなみに、通信制御IC102は、CPU101またはコンピュータ内で情報経路を制御するチップセットに含まれていてもよい。さらに、図2の構造では、単一の通信制御IC102のみを示しているが、通信制御IC102の数は複数でもよい。
PHY103は、制御ネットワーク122との通信関数を実装するトランシーバICである。PHY103が提供する通信規格としてのIEEE802.3は通信関数の例である。図2の構造では、PHY103および通信制御IC102が接続されているので、IEEE802.3メディアアクセス制御(MAC)処理が通信制御IC102内に含まれる。しかし、例示の実装形態の効果は、MAC関数ICを通信制御IC102とPHY103の間に載置するための構造、および通信制御IC102と、MAC関数ICとPHY103を組み合わせる通信ICを接続するための構造のままである。ちなみに、PHY103は通信制御IC102に含まれてもよい。さらに、図2の構造では、1つのPHY103のみが示されているが、所望の実装形態に応じて、PHY103の数は、複数でもよい。
メモリ104は、CPU101が動作するための一時的な記憶領域であり、OSおよび不揮発性ストレージ媒体105から転送されたアプリケーションプログラムを記憶する。
不揮発性ストレージ媒体105は、情報のためのストレージであり、OS、アプリケーション、およびデバイスのドライバなどのようなCPU101を動作させるためのプログラム、およびプログラムの実行結果を記憶するために用いられる。不揮発性ストレージ媒体105の例としては、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、および/またはフラッシュメモリが挙げられる。さらに、不揮発性ストレージ媒体105は、例えば、フロッピーディスク(FD)、CD、DVD、ブルーレイ(tm)、USBメモリ、コンパクトフラッシュ(登録商標)などのような外部の取り外し可能なストレージ媒体として実装することができる。
バス106は、CPU101,通信制御IC102、メモリ104,不揮発性ストレージ媒体105を接続する。バス106の例としては、ペリフェラル コンポーネント インターコネクト(PCI)バス、インダストリ スタンダード アーキテクチャ(ISA)バス、PCIエクスプレスバス、システムバス、メモリバスなどが挙げられる。
図3は、例示の実装形態による、I/O制御デバイス123のハードウェア構造を示す。I/Oユニット107は、被制御デバイス124を制御するための、あるいは、被制御デバイス124の情報を取得するための入出力インターフェースである。I/Oユニット107の例としては、デジタル入出力インターフェースおよびアナログI/OICが挙げられる。I/Oユニット107からの信号線は、1本のように示されているが、被制御デバイス124に応じて複数の線があってもよい。
図4は、例示の実装形態による、ネットワーク中継デバイスのハードウェア構造を示す。通信経路制御IC108は、1つ以上のPHY103とバス106を接続し、受信したパケットの経路制御を実行する。通信経路制御IC108は、バス106と接続し、バス106を介して通信制御IC102と通信する。
通信経路制御IC108の例としては、FPGA、CPLD、ASIC、ゲートアレイなどのようなICを含むことができる。ちなみに、所望の実装形態に応じて、通信経路制御IC108は、CPU101またはコンピュータ内で情報経路を制御するチップセットに含まれていてもよい。さらに、任意の数のPHY103を使用して所望の実装形態を容易にすることができる。
図5は、例示の実装形態による、制御デバイス120またはI/O制御デバイス123の送信関数の関数構造を示す。処理ユニット130は、制御動作や情報処理のような処理を実行する。制御動作の実施例では、制御デバイス120の処理ユニット130は、被制御デバイス124を制御するためのI/O制御デバイス123によって要求されるコマンド値を計算する。処理ユニット130は、コマンド値自体あるいは、I/O制御デバイス123の目標値を計算して、被制御デバイス124を制御してもよい。これらのコマンド値の演算には、処理ユニット130は、I/O制御デバイス123から受信した情報を使用してもよい。この受信情報は、被制御デバイス124の状態情報を含む。
あるいは、I/O制御デバイス123の処理ユニット130は、I/Oユニット107を介して被制御デバイス124の状態情報またはセンサ情報を取得する。別の実施例では、I/O制御デバイス123の処理ユニット130は、取得した情報を処理する。
さらに、別の実施例では、物理層での送受信のタイムスタンプ関数をサポートして、ソフトウェア処理によって実行される時間同期プロトコルと比較して正確に同期させることを含む。
このような処理には、フィードバック制御理論およびフィードフォワード制御理論のような制御理論に基づく制御処理、またはAIに基づく制御操作を含むことができる。例えば、過去の情報および入力に基づいてその状態を変化させるI(インテグラル)制御およびステートマシンベースの制御方法を使用することができる。あるいは、他の処理例として故障検出または危険状態推定などのような資産管理、デバイス管理およびソフトウェアバージョン制御(ソフトウェアバージョン管理および更新など)、予知保全および予防保守、状態ベースの保守(CBM)、およびI/O制御デバイス123および被制御デバイス124の残存耐用年数に関するAIまたは機械学習による統計計算などを挙げることができる。
処理ユニット130は、これらの処理におけるコマンド値、センサ値、および状態値のような計算値を、識別子追加ユニット132に通知する。
処理ユニット130の処理は、時間同期ユニット131によって同期された時間に基づいて行ってもよい。
処理ユニット130は、CPU101またはCPU101で動作するアプリケーションによって円滑に処理できるようになる。
時間同期ユニット131は、時間同期プロトコルを実行し、制御デバイス120の時間、または制御デバイス120上の関数を参照時間に同期させる。実行する時間同期プロトコルは、IEEE802.1AS、IEEE1588、NTP、SNTPなどでよい。
時間同期ユニット131は、CPU101、CPU101上で動作するアプリケーション、通信制御IC102、および/またはPHY103のうちの1つ以上によって円滑に同期できるようになる。
識別子追加ユニット132は、処理ユニット130から通知されたコマンド値のような情報に識別子を付加する。
識別子追加ユニット132が付加する識別子には、処理ユニット130が実行する処理を識別するための関数識別子、少なくとも処理ユニット130から通知された情報に関連付けられた時間を識別するための時間識別子を含む。
関数識別子は、情報が送信されるI/O制御デバイス123の関数の識別子、ソフトウェアアプリケーションの識別子、情報を生成した処理ユニット130の関数またはソフトウェアアプリケーションの識別子でもよい。あるいは、関数識別子は、上記のうちの幾つかを組み合わせた識別子でもよい。
関数識別子は、暗号ハッシュ関数をソースコードや関数を表すプログラムのバイナリに適用したハッシュ値でもよい。オペレータは、関数識別子を手動で定義することもできる。あるいは、コードサイニング証明書などの技術を用いて関数識別子を定義してもよい。さらなる実施例では、関数識別子を割り当てる専用サーバ関数をシステムに設けてもよい。サーバは、所定の識別情報(例えばハッシュ値、コードサイニング証明書など)を使用して関数からの要求に基づいて関数識別子を動的に割り当てる。その関数は、所望の関数識別子の可用性を問い合わせることができる。その関数は、そのサーバが使用を許可するまで、所望の関数識別子候補を変更しながら問い合わせを続けることができる。
時間識別子は、時間同期ユニット131によって同期された時間に基づいた時間である。時間識別子によって示された時間の例として、コマンド値を生成する時間、宛先となるI/O制御デバイス123でコマンド値を使用する予定時間、およびセンサ値を取得する時間であってもよい。
同期時間は、絶対時間でも、または図1に示す制御システムで統一された時間でもよい。
ちなみに、時間識別子は、開始時間、制御処理の時間、および/または関数の実行スケジュールが予め共有されているような状況では、シーケンス番号やインデックス番号であってもよい。
さらに、関数識別子や時間識別子は、標的の関数や時間が一致する場合には、他の識別子追加ユニット132によって付加された識別子と同じである。
さらに、識別子追加ユニット132は、媒体アクセス制御(MAC)アドレスおよびIPアドレス、パケットが送信されるI/O制御デバイス123の識別子、パケットが通過する通信経路の識別子、および通信経路を構成するリンク(例えば、隣接するネットワーク中継デバイス121間の経路)などのようなパケットを送信する制御デバイス120の1つ以上の識別子を付加してもよい。リンク識別子は、リンクの両端に接続された、ネットワーク中継デバイス121の識別子、またはリンクの両端に接続されたネットワーク中継デバイス121の1つまたは両方の通信ポートの識別子によって表してもよい。
識別子追加ユニット132は、CPU101、CPU101上で動作するアプリケーション、通信制御IC102、およびPHY103のうちの1つ以上によって円滑に同期できるようになる。
関数情報共有ユニット133は、識別子追加ユニット132が要求した情報を記憶して、関数識別子、時間識別子、および他の識別子を処理ユニット130から通知された情報に付加する。情報を管理するため、関数情報共有ユニット133は、他の制御デバイス120,I/O制御デバイス123、および制御通信ストレージデバイス125と通信して、必要な情報を共有してもよい。
このような情報は、図1に示すシステムの制御デバイス120およびI/O制御デバイス123によって実行される関数の識別情報、開始時間および各関数における処理の実行時間を含む。あるいは、処理ユニット130を実行するソフトウェア環境に関連する情報の他の例としては、ソフトウェアのバージョン、生成日、およびファイルサイズ、バージョン情報のようなハードウェア環境、演算性能、および記憶容量が挙げられる。他の例としては、トポロジー、通信経路ルーティング、および通信経路冗長性設定のような制御ネットワーク122の構成情報、およびアクチュエータまたはセンサの実行時間のような被制御デバイス124に関する情報が挙げられる。
情報は、不揮発性ストレージ媒体105に記憶されてもよく、また、オペレータが情報をオンラインで入力してもよい。情報は、連続的に更新されてもよい。
関数情報共有ユニット133は、CPU101、CPU101上で動作するアプリケーション、不揮発性ストレージ媒体105、および通信制御IC102のうちの1つ以上によって円滑に共有できるようになる。
通信ユニット134は、制御ネットワーク122に接続され、制御ネットワーク122の通信プロトコルに従って通信する。
通信ユニット134は、PHY103に接続され、送信時にバス106から通知されていたデータまたはパケットを処理する。この処理は、データからフレームを生成すること、データまたはパケットの複製、所定のタグを追加すること、周期的冗長検査(CRC)などのような異常診断データの計算および追加を含んでいてもよい。送信用に付加されたタグの例としては、所望の実装形態により、IEEE802.1Qで定義されたVLANタグ、HSRタグ、およびIEC62439-3に定義されたPRPタグなどが挙げられる。VLANタグ設定は、PCP(優先順位コードポイント)、VID(VLAN識別子)に対する設定を含む。
通信ユニット134は、受信したパケットを、受信するとすぐに処理ユニット130、関数情報共有ユニット133、および/または時間同期ユニット131に転送する。通信ユニット134は、受信したパケットからタグを除去してもよく、また、受信したパケットからデータを抽出してもよい。さらに、通信ユニット134は、ソースアドレスやタグなどのような処理済みパケットの情報を一定期間保持してもよい。通信ユニット134は、CPU101上で動作するアプリケーション、通信制御IC102、およびPHY103のうちの1つ以上によって円滑に通信できるようになる。
図6は、例示の実装形態による、制御デバイス120またはI/O制御デバイス123の受信関数の構成を示す。
受信コンテンツ決定ユニット135は、関数識別子、パケット上の時間識別子、およびパケットの受信時間に基づいて、通信ユニット134から受信したパケットのための処理対象である受信コンテンツを決定する。
例えば、受信コンテンツ決定ユニット135は、同じ関数識別子と時間識別子を有する複数の受信したパケットに対して先着優先または多数決で受信コンテンツを決定する。先着決定の場合、受信コンテンツ決定ユニット135や通信ユニット134は、受信したパケットの受信時間や受信順序を記憶してもよい。あるいは、受信コンテンツ決定ユニット135は、同じコンテンツを持つ受信したパケットの数を記憶して、多数決を行ってもよい。
さらに、受信コンテンツ決定ユニット135は、受信したパケットの受信時間と、受信したパケットに記載された時間識別子で指定された時間との比較に基づいて、受信コンテンツを決定する。例えば、受信コンテンツ決定ユニット135は、パケットに記載された時間識別子で指定された時間が、そのパケットの受信時間を経過していた場合には、その受信したパケットを受信決定の対象パケットから除外する。パケットのコンテンツが制御コマンド値であり、時間識別子で指定された時間が制御コマンド値の使用予定時間を示している場合、パケットの受信時間が使用予定時間を経過したときに、受信したパケットを対象パケットから除外する。
指定された時間とパケットの受信時間を比較する際に、パケット上の時間識別子で指定された時間に所定の時間を加算してもよい。例えば、情報のコンテンツがセンサ値であり、時間識別子がセンサ値の取得時間を示している場合、宛先のデバイスでのパケットの受信時に時間識別子で指定された時間が経過していることになる。したがって、制御ネットワーク122の通信遅延、制御デバイス120やI/O制御デバイス123の処理遅延、制御理論からの許容遅延などを考慮した時間を、パケット上の時間識別子で指定された時間に加算してもよい。受信したパケットは、そのパケットの受信時間が算出した時間を経過したときに、受信判定の対象パケットから除外される。
このような追加時間の必要性と時間を判定するために、パケットに記憶されているコンテンツの種類(例えば、センサ値であれば、所定の時間の追加の必要性を示す情報)および/または追加時間をパケットに記憶してもよい。
同じ関数識別子と時間識別子を含む受信したパケットの数が1つである場合、受信コンテンツ決定ユニット135は、その受信したパケットの情報を利用すると決定する。
あるいは、同じ関数識別子と時間識別子を含む受信したパケットの数が複数である場合、受信コンテンツ決定ユニット135は、対象となる受信したパケット群のコンテンツに対して統計的な計算を行ってもよい。例えば、情報が制御コマンド値である場合、そのような計算値は、平均値、最大値、最小値を含むことができる。また、過去の情報(例えば、同じ関数識別子を持つパケットのコンテンツ)を用いたフィルタ処理により算出された値を使用することも可能である。
受信コンテンツ決定ユニット135は、CPU101、CPU101上で動作するアプリケーション、および通信制御IC102のうちの1つ以上によって円滑に決定できるようになる。
本明細書に記載の例示の実装形態のアプリケーションでは、システム全体の構成が設計されている。一般的な制御システムでは、センサ情報に基づいてコントローラで制御コマンドを算出し、アクチュエータに出力する。これを定期的に繰り返す。
センサ、コントローラ、アクチュエータの物理的および論理的な位置が設計され、制御ネットワーク122で接続される際の冗長性レベルが決定される。センサやアクチュエータは制御対象と物理的に接触しているので、I/O制御デバイス123と被制御デバイス124(センサやアクチュエータ)は位置に関して物理的な制約がある。コントローラ関数は関数やアプリケーションとして構成できるので、制御デバイス120の物理的な存在とは別に構成することが可能である。例えば、同じコントローラ関数を1つの制御デバイス120に冗長な関数として構成してもよいし、同じコントローラ関数を異なる制御デバイス120に冗長な関数として構成してもよい。
制御デバイス120、I/O制御デバイス123は、制御ネットワーク122によって接続され、これらのセンサ、アクチュエータ、コントローラを機能的に接続する。制御ネットワーク122を冗長化して、信頼性を高めることができる。よって、制御ネットワーク122のトポロジーおよび通信経路の冗長性も設計されている。
さらに、DCSやFAなどの1つのサイトに複数の制御関数やAI関数が存在し、それらの関数が多重化されたシステムを共通の制御ネットワーク122で接続するようにしてもよい。
制御システムの各関数間の通信に基づく操作手順を説明する。
図7は、例示の実装形態による、制御デバイス120およびI/O制御デバイス123における送信関数の操作手順を示す。
まず、関数情報共有ユニット133は、制御関数やAI関数などの関数に関する情報を取得し、および/または、他の関数情報共有ユニット133と情報を共有する(S7001)。次に、制御デバイス120および/またはI/O制御デバイス123のコンピュータリソース、ならびにネットワーク中継デバイス121および/または制御ネットワーク122の通信リソースを確保する(S7002)。高い信頼性や、関数間の通信における遅延制約などの制約を満たすためには、このようなコンピュータリソースや通信リソースの確保が有効である。これらの確保は、オペレータ、処理ユニット130、および/または関数情報共有ユニット133が行ってもよい。そして、その関数が、関数の処理に関するあるタイミングが来るまで待機する(S7003)。
時間が経過した場合(S7003のY)、処理ユニット130は、操作を実行する(S7004)。そして、識別子追加ユニット132は、S7004で生成された情報に識別子を付加する(S7005)。これらの識別子は、少なくとも関数識別子と時間識別子を含む。したがって、識別子追加ユニット132は、関数情報共有ユニット133から必要な情報と、時間同期ユニット131によって同期した時間に基づいた時間とを取得し、これらの識別子を決定する。次に、通信ユニット134は、パケットの送信時間を待機する(S7006)。送信時間になると(S7006のY)、通信ユニット134は、パケットを送信する(S7007)。送信時間は、システム設計や制御ネットワーク122の通信リソースの確保状況に応じて決定される。
例えば、確保したタイムスロットのタイミングでパケットの通信経路上にあるネットワーク中継デバイス121にパケットが到着した時間を送信時間に設定してもよい。そして、関数は、終了条件が満たされたかどうかを判定する(S7008)。条件が満たされた場合(S7008のY)、関数は、処理を終了する。条件が満たされなかった場合(S7008のN)、関数は、S7003から処理を繰り返す。終了条件は、オペレータ、他の制御デバイス120、または他のI/O制御デバイス123による明示的な終了指示、所定の反復回数、所定の時間の経過、制御デバイス120における異常の発生の1つ以上であってもよい。
コンピュータリソースや通信リソースの確保に関して、S002では、リソースは、制御デバイス120やI/O制御デバイス123におけるマルチプロセッサまたは仮想マシンの特定のプロセッサの割り当て(アフィニティ)、リアルタイムOSや一般OSのタスクスケジューリングにおける関数の優先順位などの1つ以上であってもよい。他の例としては、メモリ104、不揮発性ストレージ媒体105の指定領域、および/またはバス106の通信帯域および/またはタイムスロットの確保を挙げることができる。あるいは、制御ネットワーク122におけるサービスのクオリティ(QoS)の構成や通信帯域の確保が図示されている。あるいは、TSNを適用する際の制御ネットワーク122におけるIEEE802.1Qbvで定義されるタイムスロット確保が図示されている。
さらに、IEEE802.1CBや、IEC62439-3で定義されているHSRおよびPRPを適用して、複数の通信経路を割り当てる追加の例もある。
通信経路のリソースを確保するために、IEEE802.1Qat、IEEE802.1Qcc、またはIEEE802.1Qcaをリソース確保プロトコルとして使用してもよい。
リソースの一部は、制御デバイス120における複数の関数に共有されてもよい。すなわち、他の関数が既にステップS7001を実行している場合、その関数はステップS7001をスキップしてもよい。
また、所望の実装形態に応じて、この関数でリソースを確保しなくてもよい。
なお、ステップS7001およびS7002について、本関数は、所望の実装形態に応じて、ステップS7002を先に実行してもよいし、ステップS7001およびS7002の両方を並行して実行してもよい。
あるいは、本関数は、ステップS7006での送信タイミングを待たずに、ステップS7005の後にステップS7007の送信処理を実行してもよい。
あるいは、ステップS7003の処理時間は、指定された送信時間以前のステップS7004およびS7005の処理時間の合計時間であってもよい。
図8は、例示の実装形態による、制御デバイス120およびI/O制御デバイス123における受信パケット関数の操作手順を示す。
まず、関数は、パケットが受信されるまで待つ(S8010)。関数が通信ユニット134(S8010でY)でパケットを受信したら、時間同期ユニット131の同期時間を用いて、受信時間を同期時間として取得する(S8011)。
そして、関数は、受信時間と、受信したパケットに記載されている時間識別子で指定された時間とを比較して、そのパケットを受信したかどうかを判定する(S8012)。関数がパケットを受信すると判定した場合(S8012でY)、関数は受信したパケットのコンテンツ(関数識別子、時間識別子、コンテンツ)を受信時間とともに記憶する(S8013)。関数が、パケットを受信しないと判定した場合(S8012でN)は、受信したパケットを破棄する(S8014)。ステップS8013またはS8014の後、処理を終了する。
図9は、例示の実装形態による、制御デバイス120およびI/O制御デバイス123における受信したパケット関数および決定処理関数の操作手順を示す。
ステップS9001とS9002は、図7では共通である。ステップS9002の実行後、指定された処理時間が経過するまで待機する(S9020)。指定された処理時間が経過した場合(S9020のY)、受信コンテンツ決定ユニット135は、受信コンテンツを決定する(S9021)。
この決定方法は、図8のステップS8013で記憶したパケットの受信コンテンツを対象とする。このような方法としては、先着順のパケット、多数決、あるいは受信したパケットが複数ある場合はコンテンツに統計処理を適用するなどの方法が挙げられる。パケットが1つの場合、その関数がパケット情報を選択する。
次に、処理ユニット130は、受信したコンテンツを決定する処理を行う(S9022)。そして、関数が後処理を行う(S9023)。後処理は、図8のステップS8013で記憶した受信したパケットをクリアしてもよいし、所定の期間後に記憶した情報をクリアするようにタイマーを設定してもよい。そして、関数は、終了条件が満たされたかどうかを判定する(S9008)。
ちなみに、図8のS8013に記憶された受信したパケットは、図9のステップS9023の処理後にクリアされてもよいし、制御デバイス120やI/O制御デバイス123の記憶容量が満杯になった時点でクリアされてもよい。この場合、記憶された時間の古い順に削除してもよい。
ちなみに、図9のステップS9001およびS9002は、所望の実装形態に応じて、図8のステップS8010の前に実行してもよい。
なお、図9のステップS9022およびS9023については、所望の実装形態に応じて、ステップS9022をステップS9023の実行後に実行してもよいし、ステップS9022およびS9023を並行して実行してもよい。
図10は、例示の実装形態による、送信処理が続く受信判定処理の操作手順を示す。図7、図8、図9、および図10に示した手順の例を、図1の構造を用いて説明する。
ここでは、以下の3つの制御関数を確立すると想定している。
制御関数 1:
・センサ:被制御デバイス124a、およびI/O制御デバイス123a
・コントローラ:制御デバイス120a、120b、および120c
・アクチュエータ:被制御デバイス124b、およびI/O制御デバイス123b
制御関数2:
・センサ:被制御デバイス124c、およびI/O制御デバイス123c
・コントローラ:制御デバイス120a、120b、120c
・アクチュエータ:被制御デバイス124c、およびI/O制御デバイス123c
制御関数3:
・センサ:被制御デバイス124d、およびI/O制御デバイス123d
・コントローラ:制御デバイス120b、120c
・アクチュエータ:被制御デバイス124d、およびI/O制御デバイス123d
コントローラは、制御関数1と2は三重に、制御関数3は二重に冗長化している。
一例では、被制御デバイス124cは、ロボットでもよく、被制御デバイス124dは、センサとアクチュエータを兼ねることができる無人搬送車(AGV)のような移動体でもよい。
ちなみに、図1の各制御関数では、センサとアクチュエータを想定しているが、所望の実装形態に応じて、冗長化しても構わない。同質的なもの(例えば、位置検出などの同じエンコーダセンサーが複数個設置されている)であっても、異質なものであってもよい。後者の例では、AGVやロボットのセンサの実施例として、対象物自体に取り付けられたセンサに加えて、操作エリアに取り付けられたカメラを例示する。なお、同一のセンサやアクチュエータを同質的に冗長的に使用する場合には、センサ関数やアクチュエータ関数を複数のI/O制御デバイス123のそれぞれで実行し、それらの関数をコントローラ関数140として冗長的に使用するようにしてもよい。
図11は、例示の実装形態による、制御デバイス120a、120bおよび120cのコントローラ関数の構成を示す。制御デバイス120aでは、制御関数1および2のコントローラ関数が実行される。このような構成は、所望の実装形態に応じて、ソフトウェアプログラム、仮想マシン、ソフトウェアコンテナなどの技術を用いて実装される。同様に、制御関数が1、2、3であるコントローラ関数は、制御デバイス120b、120cで実行される。
同じ制御関数を有するコントローラ関数は、基本的に同じソフトウェアプログラムである。また、同じ目的を達成するために、異なるアルゴリズムを使用することもできる。
図7、図9、図10に示すように、ステップS7001、S9001、S10001で、関数の情報を定義し、共有する。
図12は、例示の実装形態による、関数識別子の例示の定義を示す。関数識別子として、送信関数と受信関数の組み合わせに応じた識別子が割り当てられている。識別子は、送信関数と受信関数のそれぞれに割り当ててもよいし、一方の関数(送信関数または受信関数)のみに割り当ててもよい。
ちなみに、関数識別子は、特定の値に対して特別な意味を持つ場合がある。例えば、関数識別子0は全ての関数で有効であり、例えば、一括停止や一括開始に使用することができる。
また、図12には、時間識別子の例も示している。時間識別子が表す時間は、時間同期ユニット131によってシステムに亘って同期された時間に基づいた時間である。さらに、図12では時間をマイクロ秒で示しているが、同じ時間を示すことができるのであれば、他の表現形式であっても構わない。
また、時間をシーケンス番号0から開始し、以降、サイクルごとに増加する番号を時間識別子とすることもできる。例えば、関数識別子1の開始時間が100,000,000マイクロ秒、周期が100マイクロ秒なので、100,000,000マイクロ秒がシーケンス番号0、100,000,100マイクロ秒がシーケンス番号1、100,000,200マイクロ秒がシーケンス番号2となる。時間識別子Tに関連付けられた各期間の開始時間Sは、以下のように計算できる。S=S0+P*T、式中、S0は最初の開始時間、Pは期間を表している。Sは、所望の実装形態に応じて、期間の終了時間とすることができる。
ちなみに、割り当て可能なシーケンス番号の最大値は、パケット上の時間識別子に割り当てられるビット数に依存する。例えば、時間識別子に8ビットを割り当てた場合、シーケンス番号の最大値は255となる。送信周期は100マイクロ秒なので、シーケンス番号が循環する時間は25600マイクロ秒となる。関数の許容遅延時間よりも大きくなるように、時間識別子の割り当て幅を定義する必要がある。
共有情報の追加例としては、通信コンテンツの種類(図12の「種類:センサ値」や「種類:制御」など)および、許容遅延時間(図11の「デッドライン+50マイクロ秒」)を含むことができる。許容遅延時間をパケットに記載された時間識別子で指定された時間に加算した後、図8のステップS8012で現在時間を比較してパケットを受信するかどうかを決定する。例えば、受信コンテンツ決定ユニット135は、その関数識別子が1であり、時間識別子で指定される時間が100,001,000マイクロ秒のパケットを受信する場合、そのパケットの受信時間が100,001,050秒以下であれば、そのパケットを受信すると決定する。
図7、図9、図10のステップS7002、S9002、S10002でリソースが確保される。
コンピュータリソースとして、タスクの優先順位、プロセッサの割り当て、バス、メモリが確保されている。
通信の信頼性を高めるために、通信リソースとして冗長な通信経路が確保されている。以下のルートが設定されている。
制御関数 1:
・I/O制御デバイス123a~コントローラ関数140a
oルート1:ネットワーク中継デバイス121d~ネットワーク中継デバイス121a
oルート2:ネットワーク中継デバイス121e~ネットワーク中継デバイス121b
・I/O制御デバイス123a~コントローラ関数140c
oルート1:ネットワーク中継デバイス121d~ネットワーク中継デバイス121a
oルート2:ネットワーク中継デバイス121e~ネットワーク中継デバイス121b
・I/O制御デバイス123a~コントローラ関数140f
oルート1:ネットワーク中継デバイス121d~ネットワーク中継デバイス121a~ネットワーク中継デバイス121b
oルート2:ネットワーク中継デバイス121e~ネットワーク中継デバイス121f~ネットワーク中継デバイス121c
・コントローラ関数140a~I/O制御デバイス123b
oルート1:ネットワーク中継デバイス121a~ネットワーク中継デバイス121d
oルート2:ネットワーク中継デバイス121b~ネットワーク中継デバイス121e
・コントローラ関数140c~I/O制御デバイス123b
oルート1:ネットワーク中継デバイス121a~ネットワーク中継デバイス121d
oルート2:ネットワーク中継デバイス121b~ネットワーク中継デバイス121e
・コントローラ関数140f~I/O制御デバイス123b
oルート1:ネットワーク中継デバイス121b~ネットワーク中継デバイス121a~ネットワーク中継デバイス121d
oルート2:ネットワーク中継デバイス121c~ネットワーク中継デバイス121f~ネットワーク中継デバイス121e
制御関数2:
・I/O制御デバイス123c~コントローラ関数140b
oルート1:ネットワーク中継デバイス121e~ネットワーク中継デバイス121d~ネットワーク中継デバイス121a
oルート2:ネットワーク中継デバイス121f~ネットワーク中継デバイス121c~ネットワーク中継デバイス121b
・I/O制御デバイス123c~コントローラ関数140d
oルート1:ネットワーク中継デバイス121e~ネットワーク中継デバイス121d~ネットワーク中継デバイス121a
oルート2:ネットワーク中継デバイス121f~ネットワーク中継デバイス121c~ネットワーク中継デバイス121b
・I/O制御デバイス123c~コントローラ関数140g。
oルート1:ネットワーク中継デバイス121e~ネットワーク中継デバイス121b
oルート2:ネットワーク中継デバイス121f~ネットワーク中継デバイス121c
・コントローラ関数140b~I/O制御デバイス123c
oルート1:ネットワーク中継デバイス121a~ネットワーク中継デバイス121d~ネットワーク中継デバイス121e
oルート2:ネットワーク中継デバイス121b~ネットワーク中継デバイス121c~ネットワーク中継デバイス121f
・コントローラ関数140d~I/O制御デバイス123c
oルート1:ネットワーク中継デバイス121a~ネットワーク中継デバイス121d~ネットワーク中継デバイス121e
oルート2:ネットワーク中継デバイス121b~ネットワーク中継デバイス121c~ネットワーク中継デバイス121f
・コントローラ関数140g~I/O制御デバイス123c
oルート1:ネットワーク中継デバイス121b~ネットワーク中継デバイス121e
oルート2:ネットワーク中継デバイス121c~ネットワーク中継デバイス121f
制御関数3:
・I/O制御デバイス123d~コントローラ関数140e。
oルート1:ネットワーク中継デバイス121f~ネットワーク中継デバイス121e~ネットワーク中継デバイス121d~ネットワーク中継デバイス121a
oルート2:ネットワーク中継デバイス121f~ネットワーク中継デバイス121c~ネットワーク中継デバイス121b
・I/O制御デバイス123d~コントローラ関数140h。
oルート1:ネットワーク中継デバイス121f~ネットワーク中継デバイス121e~ネットワーク中継デバイス121b
oルート2:ネットワーク中継デバイス121f~ネットワーク中継デバイス121c
・コントローラ関数140e~I/O制御デバイス123d
oルート1:ネットワーク中継デバイス121a~ネットワーク中継デバイス121d~ネットワーク中継デバイス121e~ネットワーク中継デバイス121f
oルート2:ネットワーク中継デバイス121b~ネットワーク中継デバイス121c~ネットワーク中継デバイス121f
・コントローラ関数140h~I/O制御デバイス123d
oルート1:ネットワーク中継デバイス121b~ネットワーク中継デバイス121e~ネットワーク中継デバイス121f
oルート2:ネットワーク中継デバイス121c~ネットワーク中継デバイス121f。
ちなみに、通信経路は静的に設定されていても、動的に設定されていてもよい。
通信経路を設計した後、例えば、ネットワーク中継デバイス121上の周期のタイムスロットを確保する。
制御関数3では、物理的な制約からI/O制御デバイス123dとアクセスポイント126bのみが通信経路となっており、ネットワーク中継デバイス121fとアクセスポイント126bは単一障害点となっている。
図13は、例示の実装形態による、制御関数1の実行を示す。本例では、I/O制御デバイス123aにおけるセンサ関数と、制御デバイス120a、120b、120cで動作するコントローラ関数140a、140c、140fと、I/O制御デバイス123bにおけるアクチュエータ関数との間の実行を示している。
センサ関数とアクチュエータ関数は、デバイスとしてのI/O制御デバイス123a、123bであるが、実装形態として、ソフトウェアプログラムであるため、「関数」と表現している。
センサ関数は、図12の情報から分かるように、TIME100秒(100,000,000マイクロ秒)で処理を開始し(図13のt0、図7のS7003のY)、センサとして被制御デバイス124aからセンサ値を取得する(図13の150、図7のS7004)。そして、識別子追加ユニット132は、センサ値に識別子を付加して(図13の151、図7のS7005)、送信時間の間待機する。送信時間が経過すると(図13のT1、図7のS7006のY)、通信ユニット134は、パケットを送信する(図13の152、図7のS7007)。コントローラ関数140は冗長化されているので、パケットをコントローラ関数140a、140c、140fに送信する。
図14(a)~図14(c)は、例示の実装形態による、例示のパケットを示す。具体的には、図14(a)はパケットフォーマットを、図14(b)は特定の時間におけるセンサ情報の例を、図14(c)は制御コマンドの例をそれぞれ示している。関数識別子が1、時間識別子がセンサ取得時間を示す100,000,000で、センサ値がデータとして記憶されている。
コントローラ関数140のうち、コントローラ関数140aに着目して説明する。コントローラ関数140aは、センサ関数からセンサ値を受信すると(図13のt2、図8のS8010のY)、受信時間t2を取得する(図13の153、図8のS8011)。そして、コントローラ関数140aは、時間識別子としての100,000,000に、許容遅延時間50マイクロ秒を加算し、100,000,050の和を求める。コントローラ関数140aは、パケット受信時間t2の100,000,050と100,000,020とを比較する。パケット受信時間は、時間識別子で指定された経過時間ではないので、コントローラ関数140aは、パケットを受信することを決定する(図13の154、図8のS8012のY)。そして、コントローラ関数140aは、受信したパケットのコンテンツを、受信時間t2で記憶する(図13の155、図8のS8013)。
そして、所定の時間t3(100,000,050)が来ると(図13のt3、図10のS10020のY)、受信コンテンツ決定ユニット135は、受信したパケットのコンテンツに基づいて、受信コンテンツを決定する(図13の156、図10のS10021)。システムの構成要素に異常がない場合、コントローラ関数140aは、関数識別子1、時間識別子100,000,000のパケットをセンサ関数から受信し、処理ユニット130は、そのパケットのセンサ値を使用する。
次に、処理ユニット130は、決定した受信コンテンツに基づいて、制御コマンド値を算出する(図13の157、図10のS10022)。そして、コントローラ関数140aは、記憶していた受信したパケットをクリアするなどの後処理を行い(図13の158、図10のS10023)、算出した制御コマンド値に識別子を付加して(図13の159、図10のS10005)、送信予定時間(図13のt4、図10のS10006のY)後にパケットを送信する(図13の160、図10のS10007)。
図14(c)は、上記処理後の時点でのパケットフォーマットの一例を示したものである。パケットでは、関数識別子が2、時間識別子が制御コマンド値の使用予定時間として100,000,100となっており、制御コマンド値がデータとして記憶されている。
アクチュエータ関数が、コントローラ関数140から制御コマンド値を受信すると(図13のt5、図8のS8010のY)、受信時間t5を取得する(図13の161、図8のS8011)。そして、アクチュエータ関数は、時間識別子で指定された100,000,100と、受信したパケット時間t5としての100,000,080を比較する。パケット受信時間が時間識別子で指定された経過時間ではないので、アクチュエータ関数はパケットを受信すると決定する(図13の162、図8のS8012のY)。そして、アクチュエータ関数は、受信したパケットのコンテンツを受信時間t5で記憶する(図13の163、図8のS8013)。
そして、所定の時間t6(100,000,100)が来ると(図13のt6、図9のS9020のY)、受信コンテンツ決定ユニット135は、受信したパケットのコンテンツに基づいて、受信コンテンツを決定する(図13の164、図9のS9021)。システムの構成要素に異常がない場合、アクチュエータ関数は、冗長経路を含む合計6つのパケットをコントローラ関数140a、140cから受信しなければならない。各パケットには関数識別子2と時間識別子100,000,100があり、アクチュエータ関数は6つのパケットを記憶しなければならない。受信コンテンツ決定ユニット135は、最も早く受信したパケットの制御コマンド値(図20(a)に例示する先着順)、6つの制御コマンド値で多数決(図20(b))、多数決で同数の場合の先着順パケットの制御コマンド値(図20(c))、コンピュータリソースと通信リソースの組み合わせで決定された優先順位に基づいて選択されたパケットの制御コマンド値、またはこれらのパケットの6つの制御コマンド値の平均値などの統計値のいずれかをとることができる。
ちなみに、制御コマンド値は基本的に一致していることが望ましいが、制御デバイス120や制御ネットワーク122などに異常がある場合は、値が異なることがある。特に、時間識別子に関連付けられた期間内にパケットを受信しなかった場合、オペレータ、他の制御デバイス120、I/O制御デバイス123に通知して、フェイルセーフ処理を行うか、制御デバイス120に再送信を要求する(図20(d))。
どの決定方法を採用するかは、実装の難易度、処理時間、対象となる制御関数の状況などを考慮して決定する。例えば、処理時間の高速化が求められる場合には、高速化が期待できる先着優先方式を採用することがある。計算の確実性が求められる場合には、多数決を採用することもある。コントローラ関数140のアルゴリズムの差(例えば量子化誤差など)から算出値の差が予想される場合は、統計的な計算を行ってもよい。
処理ユニット130は、決定した受信コンテンツに基づいて、被制御デバイス124への出力値を算出する(図13の165、図9のS9022)。そして、アクチュエータ関数は、記憶していた受信したパケットをクリアするなどの後処理を行う(図13の166、図9のS9023)。
その後、これらの処理が定期的に繰り返される。
ちなみに、コントローラ関数の処理開始時間t3は、I/O制御デバイス123aと制御デバイス120との間の通信遅延、コントローラ関数140における一連の処理の処理時間、制御デバイス120とI/O制御デバイス123bとの間の通信遅延、制御関数(ここでは制御関数1)の要件などを考慮して決定される。
所望の実装形態に応じて、開始時間と期間を使用せずに時間識別子を表現することもできる。図15(a)~図15(c)は例示の実装形態による、スケジューリングの態様を示す。具体的には、図15(a)は、スケジュール表の一例である。送信関数と受信関数があらかじめ表を共有していれば、表から識別子付きの時間を取得することができる。
また、関数は、第1の識別子と時間のみを共有し、次の識別子と時間をパケットに記憶することもできる。図15(b)はパケットフォーマットを示し、図15(c)はその実装例を示す。次の時間識別子180は、次の時間識別子を表し、次の時間181は、対応する時間を表す。図15(a)のスケジュールに基づき、時間識別子0と時間識別子100,000,000が共有されていると仮定すると、次の目標時間は時間識別子1であり、時間識別子は100,001,000であるため、これらのパラメータが、図15(c)の182,183に記憶される。
ちなみに、次の時間181,183は絶対的な時間ではなく、前回との差分時間でもよい。
次の時間をあらかじめ知っておくことで、パケットを受信しないまま時間が経過してしまった場合に、迅速な復旧処理を行うことができる。
本明細書における別の例示の実装形態では、既存の通信経路冗長化プロトコルを使用する場合について説明する。
図16(a)~図16(c)は、例示の実装形態によるHSR、PRPのパケットフォーマットを示す図である。これらは、IEC62439-3やIEEE802.1CBで定義されているフォーマットに対応している。これらの規格で定義されたタグは、シーケンス番号190を含んでいる。したがって、図12または図15(a)に示す時間とシーケンス番号をあらかじめ関連付けておき(例えば、最初の時間とシーケンス番号0を関連付けておく)、パケット上に関数識別子191を定義しておけば、既存の通信冗長化プロトコルを利用して本発明を実装することが可能となる。
このような実装を行うことで、標準的な製品を用いて関数の冗長化を図り、高い信頼性を得ることができるようになる。
ちなみに、関数識別子と時間識別子は、パケットや関数ごとに異なる表現形式であってもよい。例えば、時間識別子としての100秒という値は、マイクロ秒で表すと100,000,000という値になり、ミリ秒で表すと100,000という値になる。
なお、受信コンテンツ決定ユニット135は、これらの値を正規化して比較することで、関数の等質性を決定してもよい。なお、表現形式を正規化するために、表現形式を示す情報をパケットに記憶してもよいし、関数情報共有ユニット133であらかじめ情報を共有しておいてもよい。
なお、受信コンテンツ決定ユニット135における受信コンテンツの決定において、受信コンテンツ決定ユニット135は、所定の情報に基づいて優先順位を定義し、優先順位に基づいて受信コンテンツを決定してもよい。優先順位は、パケットを生成する制御デバイス120、パケットが通過する特定のネットワーク中継デバイス121、特定の経路やリンクに基づいて決定してもよい。そのような例として、制御デバイス120の一例である特定制御デバイスは、トラストコンピューティングのような信頼性の高い方式を用い、特定のパスやリンクは、通信ノイズが少ないということを保証してもよい。あるいは、ネットワーク中継デバイス121のホップ数や経路のケーブル長に応じて、優先順位を変更してもよい。これは、ホップ数が少なかったり、ケーブル長が短かったりすると、故障の可能性が低くなると考えられるからである。あるいは、動的情報に基づいて優先順位を決定してもよい。例えば、過去の受信コンテンツの決定における履歴に基づいて、優先順位を決定してもよい。例えば、過去に最も多く採用されていた制御デバイス120からのパケットに高い優先順位を割り当ててもよい。これは、選択数の類似性に応じてネットワーク中継デバイス121、経路、リンクについても同様に適用することができる。選択の代わりに、受信した履歴に基づいていてもよい。
優先順位は、上述の決定方法の組み合わせでもよい。一例として、優先順位の高い各項目の値に所定の重み付け係数を乗じた値の合計を大きい順に並べる。順位の指標は優先順位でもよい。
なお、優先順位による判定は、多数決で受信したコンテンツの数が同じ場合に採用してもよい。
なお、受信コンテンツ決定ユニット135が、複数の受信したパケットの情報に統計的手法を適用する際には、上述の優先順位を考慮してもよい。例えば、制御デバイス120の識別に基づく重み付け係数を、制御デバイス120の値に乗じて算出する。
コントローラ関数140、センサ関数、およびアクチュエータ関数は、複数の同じパケットを送信してもよい。これらは、パケット送信時に連続して送信する場合もあれば、受信側からの要求に応じて送信する場合もある。このようにすることで、制御デバイス120、I/O制御デバイス123、ネットワーク中継デバイス121、制御ネットワーク122の一時的な障害の影響を回避することができる。
あるいは、コントローラ関数140は、算出した制御コマンド値を自ら他のコントローラ関数140に転送してもよい。例えば、コントローラ関数140aは、制御コマンド値を図11のコントローラ関数140b、140cに転送してもよい。
コントローラ関数140b、140cは、自分で計算した制御コマンド値と、受信した制御コマンド値とを比較することで、異常を判定することができる。他の関数がコマンドを転送すると、その関数は異常の有無を判定することができる。2つ以上の関数がコマンドを転送すると、どのコントローラ関数140に異常があるかをその関数は推測することができる。
異常と判定された場合には、所定の方法でオペレータに警告を発したり、および/または故障を回復させるなどの措置をとることができる。オペレータへの通知は、電子メール、ウェブサーバによる情報公開、パイロットランプなどの物理的な表示などを含むことができる。これはコントローラ関数140だけではなく、センサ関数やアクチュエータ関数に冗長性がある場合にも、このような応用が適用可能である。
さらに、受信関数としてのアクチュエータ関数は、コントローラ関数140から受信した複数の制御コマンド値について、図9のステップS9021で決定した受信コンテンツを、関係するコントローラ関数140に転送してもよい。コントローラ関数140は、情報に基づいて、異常を判定することができる。
このような実装形態により、異常の存在、および異常点を推定することができる。オペレータへの通知や障害回復などにより可用性を高め、信頼性の高いシステムにすることができる。
受信関数(例えば、制御コマンド値を受信するアクチュエータ関数)は、複数の制御コマンド値が同じでない場合、パケットの一部が受信されない場合、あるいは受信が間に合わなかったパケットがある場合に、関数は障害が発生したと判定したこと自体をオペレータに通知してもよい。
さらに、故障箇所を推定するために、識別子追加ユニット132は、図7のステップS7005において、送信元となる制御デバイス120の識別子、送信先となるI/O制御デバイス123の識別子、パケットが通過する通信経路の識別子、および通信経路を構成するリンクの識別子のうち、1つ以上をパケットに付加してもよい。
あるいは、パケットを受信した制御デバイス120およびI/O制御デバイス123は、関数識別子、時間識別子、およびその他の識別子を記憶した後、制御通信ストレージデバイス125またはその他の装置(図示せず)に、自動的にまたは要求に応じて情報を送信してもよい。例えば、図8のステップS8012、S8014において、所定の時間が経過したパケットを破棄せずに記憶した後、パケットをオペレータに通知するようにしてもよい。
これらの情報をもとに故障箇所を推定することができる。例えば、I/O制御デバイス123bが、コントローラ関数140a(制御デバイス120a)およびコントローラ関数140f(制御デバイス120c)からのみ制御コマンド値を受信した場合、制御デバイス120bに障害が発生したと判定することができる。同様に、関数間の情報を利用して、ネットワーク中継デバイス121やリンクの障害を判定することができる。
オペレータは、特定制御デバイス、I/O制御デバイス123、ネットワーク中継デバイス121、経路、リンクの異常を見て、即座に故障箇所を判定し、故障を回復することができるので、システムの可用性を向上させ、信頼性の高いシステムを実現することができる。
あるいは、図8のステップS8012、S8014において、所定の時間が経過したパケットの場合、そのパケットの情報に基づいて、システム設計の問題で通信遅延が大きくなっているかどうかを判定することも可能である。例えば、特定の経路を通るパケットに対して、図8のステップS8014の頻度が頻繁に適用される場合には、パケットの通信経路を変更することが例として挙げられる。このようにシステム設計を見直すことで、目標とする制御システムを時間的制約を満たすように変更することができ、制御システムの性能や信頼性を向上させることが可能になるのである。
ちなみに、関数に関する情報は動的に変更されることがある。その場合、関数情報共有ユニット133は、更新された情報(関数識別子、時間識別子、期間など)と、更新のタイミングを他の制御デバイス120、I/O制御デバイス123、センサ関数、コントローラ関数140、アクチュエータ関数と共有してもよい。
関数識別子は、送信関数、受信関数のいずれか、または両方を反映していてもよい。この組み合わせは、動的に変更することができる。例えば、送信関数の識別子と受信関数の識別子の組み合わせで関数識別子が定義されている場合、送信関数の識別子のみに応じて関数識別子が変化する場合がある。
送信関数と受信関数は、関数情報共有ユニット133によってあらかじめ関数の情報を共有しているので、図9および図10のステップS9021およびS10021において、それぞれ、時間が経過するまで送信関数からのパケットを受信しない場合には、関数は何らかの異常が発生したと判定することができる。
このような場合の異常への回復としては、受信関数から送信関数への再送を要求することや、オペレータや他のデバイスに異常を通知すること、所定のフェイルセーフ処理を行うことなどが挙げられる。フェイルセーフ処理の例としては、安全停止が挙げられる。
また、被制御デバイス124が移動体であり、無線通信により制御ネットワーク122に接続されている場合、回復には、別のアクセスポイント126に接続するために移動体を移動させることが含まれる。
また、前回と同じコマンド値を出力することや、デフォルトのコマンド値を出力することで回復する場合もある。
さらに、無線通信で制御ネットワーク122に接続する移動体(図1の被制御デバイス124c、124d)が移動することで、制御ネットワーク122への接続のアクセスポイント126が変更されることもある。そのため、制御デバイス120への通信ルートが変わることがある。このような場合に備えて、移動体との接続のために、あらかじめ複数の通信経路を確保しておくことも例示の実装形態のひとつである。例えば、図1の被制御デバイス124dがその移動によりアクセスポイント126dに新たに接続された場合、制御デバイス120bへの経路として、ネットワーク中継デバイス121e、121d、121aのタイムスロットを確保することが例示されている。
また、制御デバイス120上の冗長関数が動くこともある。被制御デバイス124c、124d用のコントローラ関数140は、コントローラ関数140e、140hとして制御デバイス120b、120cにそれぞれ展開されている。ただし、被制御デバイス124dに接続されているアクセスポイント126がアクセスポイント126aに変更された場合には、例えば、制御デバイス120aにコントローラ関数140が展開されてもよい。この手順は、図18に基づいている。なお、このようなコントローラ関数140の動作を実行するかどうかは、遅延が短くなったかどうか、冗長な通信経路が少なくなったかどうか、制御デバイス120の演算負荷などの情報に基づいて判定してもよい。
さらに、このような実装を実現するために、I/O制御デバイス123は、接続された被制御デバイス124が移動体であるかどうかを知り、関数情報共有ユニット133は、被制御デバイス124が移動体であることを他の関数情報共有ユニット133と共有してもよい。
制御通信ストレージデバイス125は、制御ネットワーク122上のパケットを記録する。パケットの情報は、関数の冗長化に利用したり、AI(人工知能)などの統計解析に利用したりして、制御システムの運用を改善することができる。
図17は、例示の実装形態による、制御通信ストレージデバイス125の関数構造を示す。ストレージターゲット決定ユニット200は、取得したパケットがストレージターゲットであるか否かを判定する。ストレージターゲット決定ユニット200は、CPU101、CPU101上で動作するアプリケーション、および通信制御IC102のうちの1つ以上によって円滑に判定できるようになる。ストレージユニット201は、記憶対象であるパケットを記憶する。ストレージユニット201は、メモリ104および不揮発性ストレージ媒体105のうちの1つ以上によって円滑に記憶できるようになる。情報選択ユニット202は、外部からの要求に応じてストレージユニット201に記憶されている情報を、通信ユニット134を介して要求者に提供する。必要に応じて、その情報を処理してもよい。例として、要求された情報(例えば、時間識別子やデータのコンテンツ)だけを提供したり、複数の情報を組にした形式にしたり、統計値(例えば、指定された条件に合致する情報の数)を算出したりすることが挙げられる。情報選択ユニット202は、CPU101、CPU101上で動作するアプリケーション、および通信制御IC102のうちの1つ以上によって円滑に判定できるようになる。
制御通信ストレージデバイス125は、必要なパケットを受信できる必要がある。したがって、センサ関数、コントローラ関数140、アクチュエータ関数、または制御デバイス120、I/O制御デバイス123は、必要なパケットを制御通信ストレージデバイス125に転送してもよい。このとき、受信関数でパケットの受信時間をパケットに付加してもよい。あるいは、関数間の通信は、制御通信ストレージデバイス125がパケットを受信するためのマルチキャストまたはブロードキャストとして構成される。あるいは、ネットワーク中継デバイス121のポートミラーリング機能を利用して、制御通信ストレージデバイス125が必要なパケットを受信できるようにしてもよい。図1では、制御通信ストレージデバイス125への唯一の通信経路を示しているが、所望の実装形態に応じて、2つ以上の経路を使用してもよい。また、複数のネットワーク中継デバイス121、制御デバイス120、I/O制御デバイス123が、制御通信ストレージデバイス125に接続されてもよい。
制御通信ストレージデバイス125が記憶しているパケットは、所定の関数識別子を有するパケットであってもよいし、所定の期間に通信されるパケットであってもよい。あるいは、時間識別子で指定された時間が所定の期間内にあるパケットを対象パケットとしてもよい。あるいは、データの値が所定の条件に合致したり、変化量や蓄積量などの統計値が所定の条件に合致したパケットを対象パケットとしてもよい。あるいは、送信元や送信先が特定の制御デバイス120やI/O制御デバイス123であるパケットを対象パケットとしてもよい。また、特定のネットワーク中継デバイス121やリンクを経由したパケットを対象パケットとしてもよい。
制御通信ストレージデバイス125から所望のデータを取り出すために、構造化照会言語(Structured Query Language:SQL)などのデータベース言語を定義してもよい。制御通信ストレージデバイス125からの所望のデータの取得要求には、記憶対象のパケットと同じ仕様のものが含まれている。例えば、関数識別子、時間識別子、期間指定などが挙げられる。
制御通信ストレージデバイス125は、検索要求に対して適切な情報を持っている場合、制御通信ストレージデバイス125は、図14に示すパケットで情報を返してもよいし、種別情報(関数識別子や時間識別子などの識別子や受信時間、データコンテンツであれば)を追加してもよい。あるいは、制御通信ストレージデバイス125は、複数の情報をまとめて返してもよい。
また、制御通信ストレージデバイス125は、要求に対応する情報がない場合、要求された情報を保有していないことを示すコードを要求者に返信してもよい。コードは事前に定義しておく必要がある。あるいは、より詳細な情報として、制御通信ストレージデバイス125が対象情報を記憶するように設定されていない場合、制御通信ストレージデバイス125はそのように応答してもよい。例えば、制御デバイス120のパケットを記憶対象としない場合もあり得る。
記憶すべきパケットの情報量が増加し、それによって制御通信ストレージデバイス125の記憶容量を超えた場合、あるいは残りの容量が所定のしきい値を下回った場合には、所望の実装形態に応じてオペレータに通知することができる。あるいは、制御通信ストレージデバイス125は、古いデータを年代順に削除することで容量を得てもよい。
あるいは、制御通信ストレージデバイス125は、個々のパケットの形式ではなく、コンテキストデータの形式に変換してもよい。これは、過去の初期状態や入力によって、関数の状態が変化することに基づいている。コンテキストデータとしては、プログラムが実行時に展開されるメモリ上のデータや、状態が値の組として定義されている場合の変数の組などが挙げられる。これらのコンテキストデータは、制御通信ストレージデバイス125において、対象の関数を表す仮想マシンやプログラムを仮想的に実行し、実際の入力を処理することで取得されてもよい。
コンテキストデータを制御通信ストレージデバイス125に保持するために、1つの例示の実装形態として、対象関数のコンテキストの初期状態を取得することが挙げられる。なお、制御通信ストレージデバイス125がパケットの組をコンテキストデータに変換して記憶する際に、対応する関数識別子と、変換されたコンテキストの時間を記憶してもよい。
ちなみに、制御ネットワーク122で通信するパケット以外の要因でコンテキストが変化する場合には、制御通信ストレージデバイス125がその要因を記憶することもある。例えば、DIPスイッチやプッシュボタン、キーボード、マウスなど、制御デバイス120やI/O制御デバイス123に搭載されたローカル入力手段が例示される。これを実現するために、制御デバイス120およびI/O制御デバイス123は、要因イベントを取得、記憶、および提供してもよい。
あるいは、制御デバイス120やI/O制御デバイス123自身が、指定された時間にコンテキストを取得、記憶、提供する手段を提供してもよい。
ちなみに、コントローラ関数140、センサ関数、アクチュエータ関数は、制御通信ストレージデバイス125と同様の効果を得るために、自身が送信した情報を送信関数として記憶したり、受信した情報を受信関数として記憶したりしてもよい。
そのため、図9および図10のS9023およびS10023の後処理として、受信したパケットをクリアせず、関数がそれらを記憶してもよい。
記憶する情報は、関数識別子、時間識別子、パケットのデータコンテンツ、パケットの受信時間、その他の識別子であってもよい。
このような関数は、CPU101上で動作するアプリケーションによって容易に実現されることが例示されているが、通信制御IC102がパケットを処理する際に、パケットの情報を記憶するようにしてもよい。
図18は、例示の実装形態による、システムの操作中に冗長性関数を追加する際に状態を合わせるための操作手順を示す。
これは、システム運用時に特定の関数の信頼性を高めるために冗長度を高めた場合や、受信したパケットの一部が失われてしまった場合などが当てはまる。
まず、ある関数が初期状態や現在記憶されているコンテキストデータを制御通信ストレージデバイス125に要求する(S18030)。追加された装置は、制御ネットワーク122が制御通信ストレージデバイス125と通信できるように設定する。ちなみに、本関数は、制御通信ストレージデバイス125から取得する代わりに、ストレージ媒体を用いて初期状態やコンテキストデータを取得してもよい。
次に、関数は、初期状態またはコンテキストデータが取得されるまで待機する(S18031)。関数が初期状態やコンテキストデータを取得した場合(S18031のY)、取得したコンテキストデータの時間と現在時間を比較することで、取得した状態が最新のコンテキストデータであるかどうかを判定する(S18032)。最新でない場合(S18032のN)、その関数が現在の時刻に欠落している情報を保持しているかどうかを判定する(S18033)。欠落情報を保持していない場合(S18033のN)、本関数は制御通信ストレージデバイス125に欠落情報提供の要求を送信する(S18034)。そして、関数は、情報が取得されるのを待つ(S18035)。関数が情報を取得した場合(S18035のY)、関数はその情報が要求された欠落情報であるかどうかを判定する(S18036)。その情報が要求された欠落情報であれば(S18036のY)、関数は、その情報を用いて計算を行い、コンテキストを更新する(S18037)。
ステップS18036において、取得した情報が要求された情報でない場合(S18036のN)、その情報は制御ネットワーク122で通信している最新の情報である可能性があるため、関数は必要に応じてその情報を記憶する(S18038)。
このS18038を考慮して、ステップS18033で欠落情報を保持している場合(S18033のY)、関数はステップS18037を実行する。
ステップS18037の処理後は、ステップS18032に戻る。
ステップS18032において、状態が最新であれば(S18032のY)、関数は処理を終了する。
図18に示した手順の一例を図19に示す。図19は、例示の実装形態による、状態回復の一例を示す。
その一例として、コントローラ関数の状態回復について説明する。タイムチャートAは、冗長化対象のメインシステムの動作である。チャートは、初期状態S0からスタートし(210)、関数は、T1でt0のセンサ情報を受信した後、制御動作を実行し(211)、T1で指令値を出力しながら状態S1に変化する。以後、この関数は、この工程を繰り返す。
タイムチャートBは、冗長システムの動作である。ここで、T10で状態回復の処理が始まったと仮定する。まず、本関数は、制御通信ストレージデバイス125に記憶されている最新のコンテキストデータを要求する(図18のステップS18030に対応)。
T11では、本関数は、制御通信ストレージデバイス125から状態S2を取得する(図18のステップS18031に対応)。T11はT3を経過しており、状態S2はタイムチャートAのT2にある状態なので、S2は最新の状態ではないことが判かる(図18のS18032のNに対応)。
さらに、本関数は、センサ情報t2、t3を欠落情報として保持していないため(図18のS18033のNに相当)、T12において、制御通信ストレージデバイス125に欠落センサ情報を要求する(図18のステップS18034に対応)。
このときのリクエストには、関数識別子1と時間識別子情報t2、t3が含まれていてもよいし、関数識別子1と時間識別子t2以降が含まれていてもよい。T13において、関数が、関数識別子が1、時間識別子がt2、t3であることを取得したとする(図18のS18035のYに対応)。
取得した情報は要求された情報であるため(図18のS18036のYに対応)、本関数は制御動作(図19の223、225)を順次実行する(図18のS18037に対応)。T14では、関数識別子1と時間識別子t4のセンサ情報を受信し、記憶する。
これは、図18のS18036のNおよびS18038と同等であるが、パケットの受信は、図18の手順とは非同期に実行してもよい。このように、図18のS18036のNとS18038の処理を、図18の手順と並行して実行してもよい。
制御動作を終了したT15はt4経過しているので、状態S4は最新ではないことが理解でき(図18のS18032のNに対応)、必要なt4のセンサ情報を関数が保持しているので(図18のS18033のY)、関数が再度制御動作を実行すると(図18のS18037のY)、状態はT16でS5となる。ここで、現在の時刻T16は、t4よりも遅く、t5よりも前に、最新の状態になったことがわかる(図18のS18032のY)。以上の処理により、冗長システムはその状態をメインシステムの状態と同期させることができ、回復処理後はメインシステムと同じように動作する。
これらの処理は、システムを停止することなく、冗長システムを追加することができる。また、運転中に冗長システムを追加することができるため、冗長度をダイナミックに変更することができ、オペレータはコストなどのシステム要件に応じて信頼性を変更することができる。
ちなみに、図18および図19のコンテキストおよび情報の要求先として、制御通信ストレージデバイス125を例示したが、制御通信ストレージデバイス125と同じ関数を持つ他の制御デバイス120やI/O制御デバイス123であってもよい。
ちなみに、タイムチャートBの冗長システムでは、状態回復処理を行いながら、関数が最新の状態に同期するまで、古い指令値を出力してもよい。受信側ではパケットの時間識別子を使用して古いと判定しているので、関数の実行に問題はないと思われる。しかし、古いコマンドを受信することで誤った異常判定を行う可能性があるため、1つの例示の実装形態としては、関数が最新の状態に同期するまで出力しないという処理が挙げられる。具体的には、図19の223、225の状態S3、S4が、現在の期間t4に対して古いと判定できるため、それによって出力を制限することができる。
このような出力制限機構は、CPU101、CPU101上で動作するアプリケーション、通信制御IC102、および通信ユニット134の1つ以上によって円滑に出力制限を行うことができる。
所望の実装形態に応じて、監視デバイスを追加してもよい(図1には図示せず)。本デバイスは、関数情報共有ユニット133、制御通信ストレージデバイス125、または制御ネットワーク122と通信するパケットを観測することで、システム全体の障害の有無、障害発生箇所(制御デバイス120、I/O制御デバイス123、ネットワーク中継デバイス121、制御ネットワーク122を構成するリンク)、現在の有効な冗長性(関数の単位、装置の単位)を監視する。
情報が不一致であったり、関数が、受信関数で指定された時間を超えたパケットを受信したりした場合、監視デバイスは障害が発生したと判定してもよい。
監視デバイスは、故障が発生したり、任意の関数、デバイス、経路の冗長度が所定の数(例えば1)になったりしたときに、オペレータや他のデバイスに通知してもよい。
予め、関数の冗長性の要件を定義しておき、要件が満たされない場合は、監視デバイスは、図18の手順で冗長関数を展開してもよい。また、オペレータが手動で冗長関数を展開することも可能である。
物理的または論理的に分離されたドメインを実現するために、ドメイン境界に位置する制御デバイス120、I/O制御デバイス123、または他のデバイスは、関数識別子、時間識別子、または他の識別子を変更してもよい。
上記の例示の実装形態により、複数の制御関数が1つの制御デバイス120またはI/O制御デバイス123に多重化され、冗長関数が異なる制御デバイス120およびI/O制御デバイス123にインスタンス化される。したがって、関数識別子と時間識別子に基づいて受信コンテンツを決定することで、時間的制約のあるリアルタイム制御システムにおいて、連続的な冗長性による高い信頼性を実現することができる。また、上記の実装形態は、複数の制御システムが多重化されたシステムのうちのシステムにおいても有効である。また、その後に冗長システムが追加された場合でも、関数識別子と時間識別子から欠落情報を得ることができるため、冗長系をリアルタイム制御システムに柔軟に追加することができる。冗長システムはシステムを停止することなく追加できるため、可用性を低下させることなく信頼性を向上させることができる。また、ネットワーク上で通信されたパケットの共有情報や識別子をもとに、システムの故障の有無や故障箇所を判定し、システムが冗長性の要件を満たさない場合には、オペレータが自動的または手動で冗長システムを追加することもできる。そのため、システムの稼働率を下げることなく、信頼性を向上させることが可能である。
本明細書に記載するように、例示の実装形態は、1つ以上の時間同期された装置からネットワーク方式を通してデータパケットを管理するシステムおよび方法であって、1つ以上の時間同期された装置から時間識別子を有するデータパケットを受信することと、一定期間内に受信したデータパケットのうちの1つ以上を現在の時刻に基づいて選択することと、選択した1つ以上のデータパケットから、同じ時間識別子と関数識別子を有するパケットを選択することと、同じ時間識別子と関数識別子を有する選択されたパケットを処理して、1つ以上の時間同期された装置のコントローラアプリケーションへの出力を提供することと、を含む、システムおよび方法を含む。
本明細書で説明するように、例示の実装形態は、同じ時間識別子および関数識別子を有する選択されたパケットを処理して1つ以上の時間同期された装置のコントローラアプリケーションに出力を提供することが、同じ時間識別子および関数識別子を有する選択されたパケットのうち最初に受信したパケットから、コントローラアプリケーションによる実行のための制御情報を決定することを含む、システムおよび方法を含む。
本明細書に記載するように、例示の実装形態は、同じ時間識別子および関数識別子を有する選択されたパケットを処理して1つ以上の時間同期された装置のコントローラアプリケーションに出力を提供することが、同じ時間識別子および関数識別子を有する選択されたパケットに対して行った多数決処理から、コントローラアプリケーションによる実行のための制御情報を決定することを含む、システムおよび方法を含む。
本明細書で説明するように、同じ時間識別子および関数識別子を有する選択されたパケットを処理して1つ以上の時間同期された装置のコントローラアプリケーションに出力を提供することが、同じ時間識別子および関数識別子を有する選択されたパケットの各々の制御情報の統計的計算から、コントローラアプリケーションによる実行のための制御情報を決定することを含む、システムおよび方法がある。このような統計的な計算は、平均値や、最大値、最小値、過去の情報を用いたフィルタ処理から得られる値など、所望の実装形態に応じた平均値や他の値を含むことができるが、それに限定されるものではない。
本明細書に記載するように、例示の実装形態では、コントローラアプリケーションの関数識別子に関連付けられた関数が、同じ時間識別子と関数識別子を有する選択されたパケットが一致しないこと、時間識別子に関連付けられた期間後に選択されたパケットを受信すること、または時間識別子に関連付けられた期間が経過したことのいずれかを示す場合、データパケットの再送を要求すること、データパケットの非受信の通知を提供すること、または安全処理を実行することのうちの1つ以上を実施することをさらに含む、システムおよび方法が含まれる。本明細書に記載するように、異常検知および回復処理を起動する条件は、時間識別子に関連付けられた期間後にパケットを受信することである。これらの条件は、時間識別子に関連付けられた期間の経過に似ているが、回復を起動するタイミングは異なる。例えば、一方は期間終了のタイミングであるが、もう一方はパケットの受信のタイミングである。したがって、それらは異なる条件を伴うことがある。
本明細書に記載するように、時間識別子は、例示の実装形態に従って、時間に関連付けられたシーケンス値とすることができる。
本明細書に記載するように、例示の実装形態は、ストレージデバイスに受信したデータパケットを記憶することと、要求に応答して受信したパケットの記憶されたパケット情報を出力することと、を含む、システムおよび方法を含む。
本明細書に記載するように、例示の実装形態は、関数識別子に関連付けられた1つ以上の時間同期された装置のコントローラアプリケーションの第1の関数が、指定された時間に第2の関数のコンテキストと、要求に応答してストレージデバイスから提供される記憶されたパケット情報と、受信されたデータパケットとのうちの1つ以上を介してデータパケットを送信した1つ以上の時間同期された装置の第2の関数に同期する、システムおよび方法を含む。
本明細書に記載するように、例示の実装形態は、第1の関数が、第2の関数のコンテキストへの同期が発生するまで、別の関数に出力しないように構成されているシステムおよび方法を含むことができる。例えば、3つの制御関数(制御関数A、制御関数B、アクチュエータ関数)を含む例では、制御関数Aを回復対象とし、制御関数Bを制御関数Aの回復対象とし、制御関数A、B、およびアクチュエータ関数の間でアプリケーションを確立する。このような実施例では、制御関数Aを第2の関数、つまり回復対象とし、制御関数Bを第1の関数とし、およびアクチュエータ関数を別の関数とすることができる。
本明細書で記載するように、例示の実装形態は、前記1つ以上の時間同期された装置上で冗長関数を実行することを含むシステムおよび方法であって、冗長関数が、同じ時間識別子および関数識別子を有するデータパケットを送信するように構成される、システムおよび方法を含むことができる。
本明細書に記載するように、例示の実装形態は、コントローラアプリケーションの関数が、同じ時間識別子および関数識別子を有する選択されたパケットを、1つ以上の時間同期された装置の冗長関数のうち、コントローラアプリケーションの関数に対して冗長な関数の1つに送信するように構成されるシステムおよび方法を含むことができる。
本明細書に記載するように、例示の実装形態は、ネットワークにおけるコントローラアプリケーションの関数の通信ポイントの変更のために、時間同期した1つ以上の装置のうち、コントローラアプリケーションの関数を動作させる装置、または宛先関数への通信経路を変更することを含む、システムおよび方法を含むことができる。
本明細書に記載するように、例示の実装形態は、1つ以上の時間同期された装置の関数が、冗長な通信経路を持つネットワークを介して接続されるシステムおよび方法を含むことができる。
詳細な説明のうちの一部は、コンピュータ内の操作のアルゴリズムおよび記号表現に関して提示される。これらのアルゴリズム記述および記号表現は、データ処理技術の当業者が使用することにより、他の当業者にそれらの技術革新の本質を伝える手段である。アルゴリズムは、所望の終了状態または結果をもたらす、定義された一連のステップである。例示の実装形態では、実行されるステップは、有形の結果を達成するための有形量の物理的操作を必要とする。
特に記載がない限り、議論から明らかなように、明細書の議論全体を通して「処理する」、「演算する」、「算出する」、「判定する」、「表示する」などの用語を使用する場合は、物理(電子)量で表されるコンピュータシステムのレジスタおよびメモリ内のデータをコンピュータシステムのメモリ、レジスタ、または他の情報ストレージ、伝送もしくは表示デバイス内の物理量として同様に表される他のデータに操作および変換するコンピュータシステム、または他の情報処理デバイスの動作および処理を含むことができることは理解できよう。
例示の実装形態は、本明細書での操作を実行するための装置にも関連する場合もある。この装置は、必要な目的のために特別に構成することができ、あるいは1つ以上のコンピュータプログラムを選択的に起動または再構成する1以上の汎用コンピュータを含んでいてもよい。このようなコンピュータプログラムは、コンピュータ可読ストレージ媒体またはコンピュータ可読信号媒体などのコンピュータ可読媒体に記憶されてもよい。コンピュータ可読ストレージ媒体は、限定されるものではないが、光ディスク、磁気ディスク、読み取り専用メモリ、ランダムアクセスメモリ、ソリッドステートデバイスおよびドライブなどの有形媒体、または電子情報を記憶するのに適切な任意の他の種類の有形もしくは非一時的媒体を含んでいてもよい。コンピュータ読み取り可能な信号媒体は、搬送波のような媒体を含んでいてもよい。本明細書で提示されるアルゴリズムおよび表示は、いかなる特定のコンピュータまたは他の装置にも本質的に関連するものではない。コンピュータプログラムは、所望の実装形態の操作を実行する命令を含む純粋なソフトウェア実装を含むことができる。
様々な汎用システムを、本明細書の実施例に従ってプログラムおよびモジュールと共に使用することができ、または所望の方法ステップを実行するためのより特化された装置を構築することが便利であると証明することができる。さらに、例示の実装形態の説明には、任意の特定のプログラミング言語を参照していない。本明細書に記載された例示の実装形態の技術を実装するために、様々なプログラミング言語を使用することができることは理解できよう。プログラミング言語の命令は、1つ以上の処理デバイス、例えば中央処理装置(CPU)、プロセッサ、またはコントローラによって実行してもよい。
当該技術分野で知られているように、上述した操作は、ハードウェア、ソフトウェア、またはソフトウェアとハードウェアのいくつかの組み合わせによって実行することができる。例示の実装形態の様々な態様は、回路および論理デバイス(ハードウェア)を使用して実装してもよく、他の態様は、プロセッサによって実行される場合、プロセッサに本出願の実装を実行する方法を実行させる、機械可読媒体(ソフトウェア)上に記憶された命令を用いて実装してもよい。さらに、本出願のいくつかの例示の実装形態は、ハードウェアのみで実行してもよく、他の例示の実装形態は、ソフトウェアでのみ実行してもよい。さらに、記載された様々な関数は、単一のユニット内で実行することができ、またはいくつかの方法でいくつかの構成要素にわたって拡散することができる。ソフトウェアによって実行される場合、方法は、コンピュータ可読媒体上に記憶された命令に基づいて、汎用コンピュータなどのプロセッサによって実行してもよい。所望であれば、命令は、圧縮されたフォーマットおよび/または暗号化されたフォーマットで媒体上に記憶することができる。
さらに、本出願の他の実施態様は、本願明細書の検討および本出願の技術の実施から当業者に明らかになるであろう。記載された例示の実装形態の様々な態様および/または構成要素は、単独で、または任意の組み合わせで使用してもよい。本明細書および例示の実装形態は、例示に過ぎず、本出願の真の範囲と精神は、下記の特許請求の範囲によって示されるものである。