(57)【要約】コンピュータ実装方法は、アプリケーションおよびハードウェアコンテキストの両方を含み、ハードウェアコンテキストにおいて、アプリケーションを構成する分散型異種コンピューティングおよび制御システムを設計する。方法は、双方向ディスプレイに関連付けられたコンピュータノードにおいて実行され、コンピュータプロセスを利用して双方向環境を確立する設計ソフトウェア命令によって実装される。コンピュータプロセスは、双方向環境において、機能モジュールの組およびプリミティブモジュールの組へのアクセスを提供する。コンピュータプロセスは、デバイスの組の回路図として、分散型コンピューティングおよび制御システムを特徴づける様式において、双方向環境において、機能モジュールおよびプリミティブモジュールの所望のものの選択を受信し、それらを順序付ける。
2021526688.tif 000002
【特許請求の範囲】
【請求項１】
分散型異種コンピューティングおよび制御システムを設計するコンピュータ実装方法であって、前記システムは、アプリケーションおよびハードウェアコンテキストの両方を含み、前記ハードウェアコンテキストにおいて前記アプリケーションを構成し、前記方法は、双方向ディスプレイに関連付けられたコンピュータノードにおいて実行する設計ソフトウェア命令によって実装され、コンピュータプロセスを利用して双方向環境を確立し、前記コンピュータプロセスは、
前記コンピュータノードによって、前記双方向環境において、機能モジュールの組およびプリミティブモジュールの組へのアクセスを提供することであって、前記モジュールのいずれも、ユーザによってグラフィカルに選択されることができる、ことと、
前記コンピュータノードによって、前記双方向環境において、前記機能モジュールおよび前記プリミティブモジュールのうちの所望のものの選択を受信し、デバイスの組の回路図として、前記分散型コンピューティングおよび制御システムを特徴づける様式でそれらを順序付けることと、
前記コンピュータノードによって、前記回路図を解析し、サブ回路図の組を生成することであって、各サブ回路図は、前記分散型コンピューティングおよび制御システムにおけるデバイスの組における異なるデバイスに対応する、ことと、
前記コンピュータノードによって、前記回路図に従って、前記デバイスの各々を特徴づけるために、前記サブ回路図の組を前記デバイスの組に伝送することと、
前記コンピュータノードによって、前記デバイスの内側で起動する対応する制御プログラムを介して、前記サブ回路図を実行するように各デバイスを構成することと
を含む、コンピュータ実装方法。
【請求項２】
前記コンピュータノードは、独立型コンピュータである、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記コンピュータノードは、ネットワーク環境において、クライアント−サーバの組み合わせによって実装される、請求項１に記載のコンピュータ実装方法。
【請求項４】
前記コンピュータプロセスは、
前記コンピュータノードによって、ネットリストによって前記回路図を特徴づけることと、
前記コンピュータノードによって、前記回路図を前記ネットリストとして記憶することと
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項５】
前記コンピュータプロセスは、
前記コンピュータノードによって、前記双方向環境において、記憶されたネットリストを読み出し、処理することによって、前記回路図の表示をレンダリングすることをさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項６】
前記双方向環境は、設計キャンバス、ライブラリマネージャ、およびメニューのグラフィカルコンポーネントを含み、前記グラフィカルコンポーネントのいずれも、ユーザによってグラフィカルに選択されることができる、請求項１に記載のコンピュータ実装方法。
【請求項７】
前記コンピュータプロセスは、
前記コンピュータノードによって、前記設計キャンバスにおいて、前記回路図、対応するネットリスト、およびそれらの組み合わせから成る群から選択されるメンバーを表示することをさらに含む、請求項６に記載のコンピュータ実装方法。
【請求項８】
前記コンピュータプロセスは、
前記コンピュータノードによって、一意のデバイス識別子（ＩＤ）を前記デバイスの組における各デバイスに割り当てることをさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項９】
前記コンピュータプロセスは、
前記コンピュータノードによって、デバイス名を前記デバイスの組における少なくとも１つのデバイスに割り当てることをさらに含み、前記デバイス名は、ユーザによってグラフィカルに記入されることができる、請求項１に記載のコンピュータ実装方法。
【請求項１０】
前記機能モジュールおよび前記プリミティブモジュールのうちの所望のものの前記選択を受信することは、前記所望のものに対応するモジュールインスタンスの作成をもたらし、前記分散型コンピューティングおよび制御システムを前記回路図として特徴づける様式で前記モジュールインスタンスを順序付ける、請求項１に記載のコンピュータ実装方法。
【請求項１１】
前記モジュールインスタンスを順序付けることは、互いに通信すべき一対の前記モジュールインスタンスに対して、仮想ワイヤを前記対間に構成し、そのような通信を示すことを含む、請求項１０に記載のコンピュータ実装方法。
【請求項１２】
前記コンピュータプロセスは、
前記コンピュータノードによって、所与のモジュールのグラフィカル表現を前記双方向環境の設計キャンバスにおいて表示された前記回路図の表示にドラッグし、ドロップする入力を受信することに続いて、前記所与のモジュールのモジュールインスタンスが前記回路図において作成され、順序付けられるようにすることをさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項１３】
前記コンピュータプロセスは、
前記コンピュータノードによって、（ｉ）プロパティテーブルにおける少なくとも１つのプロパティ、（ｉｉ）グラフィカル表現、（ｉｉｉ）少なくとも１つの回路図、（ｉｖ）少なくとも１つのデバイス依存ブロック、および、（ｉｖ）それらの組み合わせから成る群から選択されるグラフィカルに選択可能なコンポーネントを使用して、所与のモジュールのモジュールインスタンスを特徴づけることをさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項１４】
前記プロパティテーブルは、前記少なくとも１つの回路図を特徴づけるためのプロパティを含み、前記プロパティは、タイプおよびバージョンを含む、請求項１３に記載のコンピュータ実装方法。
【請求項１５】
前記所与のモジュールが、プリミティブモジュールであるとき、前記プロパティテーブルは、前記所与のモジュールに関連付けられた各デバイス依存ブロックのためのプロパティを含み、各デバイス依存ブロックのための前記プロパティは、デバイスタイプリストおよびバージョンを含む、請求項１３に記載のコンピュータ実装方法。
【請求項１６】
前記プロパティテーブルは、（ｉ）インスタンス名、（ｉｉ）前記所与のモジュールをインスタンス化するためのインスタンスタイプ、（ｉｉｉ）前記モジュールインスタンスを実行すべき特定のデバイス、（ｉｖ）少なくとも１つのインスタンスパラメータ、および、（ｖ）それらの組み合わせから成る群から選択される前記モジュールインスタンスのためのユーザ選択可能プロパティを含む、請求項１３に記載のコンピュータ実装方法。
【請求項１７】
前記特定のデバイスの少なくとも１つのプロパティは、前記モジュールインスタンスから作成された各子モジュールインスタンスによって継承される、請求項１６に記載のコンピュータ実装方法。
【請求項１８】
前記コンピュータプロセスは、
前記コンピュータノードによって、デバイス依存ブロックを所与のプリミティブモジュールのモジュールインスタンスに関連付けることをさらに含み、前記関連付けることは、
前記モジュールインスタンスのためのプロパティテーブルにおいて、前記モジュールインスタンスに対応するデバイスプロパティを見つけることであって、前記デバイスプロパティは、前記デバイスの組のうちの１つのためのデバイス識別子（ＩＤ）を規定する、ことと、
前記デバイスＩＤをデバイスタイプにマッピングし、前記所与のモジュールのための前記プロパティテーブルにおいて、前記デバイスタイプに関連付けられた前記デバイス依存ブロックを見つけることと、
前記モジュールインスタンスのための前記プロパティテーブルにおいて、前記モジュールインスタンスに対応するタイププロパティを前記デバイス依存ブロックに割り当てられた名称で自動的に更新することと
を含む、請求項１に記載のコンピュータ実装方法。
【請求項１９】
前記タイププロパティを自動的に更新することは、前記タイププロパティのユーザ選択によって上書きされる、請求項１８に記載のコンピュータ実装方法。
【請求項２０】
前記コンピュータプロセスは、
前記コンピュータノードによって、前記双方向環境において、
前記回路図を特徴づけるモジュールインスタンスの階層構造を含むツリーグラフと、
正しく選定されたデバイス依存ブロックのグラフィカル表現と
を表示することをさらに含み、
前記正しく選定されたデバイス依存ブロックのグラフィカル表現は、前記ツリーグラフの下方に位置付けられ、前記ツリーグラフにおける対応するプリミティブモジュールインスタンスにリンクされている、請求項１に記載のコンピュータ実装方法。
【請求項２１】
前記サブ回路図の組を前記デバイスの組に伝送することは、プリミティブモジュールインスタンスを有する各サブ回路図に関して、デバイス依存ブロックを前記サブ回路図に対応する異なるデバイスに伝送することを含む、請求項１に記載のコンピュータ実装方法。
【請求項２２】
前記回路図は、モジュールインスタンスを含むコンポーネントを有し、前記コンピュータプロセスは、
前記コンピュータノードによって、前記回路図の所与のコンポーネントに、（ｉ）デバイスのデバイスＩＤ、（ｉｉ）前記所与のコンポーネントに到達するために前記回路図内で順にトラバースされるべき各コンポーネントの名称を定義するパス、および、（ｉｉｉ）前記所与のコンポーネントの名称の組み合わせに基づいて、異なるアドレスを割り当てることをさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項２３】
前記回路図は、モジュールインスタンスを含むコンポーネントを有し、前記コンピュータプロセスは、
前記コンピュータノードによって、所与のモジュールインスタンスに、（ｉ）デバイスのデバイスＩＤ、および、（ｉｉ）前記所与のモジュールインスタンスのＩＤの組み合わせに基づいて、異なるアドレスを割り当てることと、
前記コンピュータノードによって、モジュールインスタンスではない所与のコンポーネントに、（ｉ）デバイスのデバイスＩＤ、（ｉｉ）前記所与のコンポーネントを含むモジュールインスタンスのＩＤ、および、（ｉｉｉ）前記所与のコンポーネントの名称の組み合わせによって定義される一意のアドレスを割り当てることと
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項２４】
前記回路図を解析することは、
前記デバイスの組における各デバイスのために、前記デバイスのためのサブ回路図を作成することと、
前記回路図の各モジュールインスタンスのために、前記モジュールインスタンスをサブ回路図の中にコピーすることであって、前記サブ回路図において、前記サブ回路図の前記デバイスは、前記モジュールインスタンスのデバイスＩＤに対応している、ことと、
前記回路図おける第１のモジュールインスタンスと第２のモジュールインスタンスとを接続する仮想ワイヤを処理することと
を含み、
前記仮想ワイヤを処理することは、
前記第１のモジュールインスタンスおよび前記第２のモジュールインスタンスの両方が所与のサブ回路図の中にあるとき、前記仮想ワイヤを前記所与のサブ回路図において保存することと、
前記仮想ワイヤが、（ｉ）第１のサブ回路図の中の前記第１のモジュールインスタンスの出力ピンを（ｉｉ）第２のサブ回路図の中の前記第２のモジュールインスタンスの入力ピンに接続するとき、前記第１のサブ回路図と前記第２のサブ回路図との間のｃｏｍｍ接続を作成することと
を含む、請求項１に記載のコンピュータ実装方法。
【請求項２５】
前記ｃｏｍｍ接続を作成することは、
第１のｃｏｍｍモジュールインスタンスを前記第１のサブ回路図に追加し、仮想ワイヤを前記第１のモジュールインスタンスの前記出力ピンと前記第１のｃｏｍｍモジュールインスタンスの入力ピンとの間に追加することと、
第２のｃｏｍｍモジュールインスタンスを前記第２のサブ回路図に追加し、仮想ワイヤを前記第２のｃｏｍｍモジュールインスタンスの出力ピンと前記第２のモジュールインスタンスの前記入力ピンとの間に追加することと、
前記第１のｃｏｍｍモジュールインスタンスに含まれる宛先アドレスを前記第２のモジュールインスタンスの前記入力ピンのアドレスに設定することと、
前記第２のｃｏｍｍモジュール内に含まれる受信アドレスを前記第２のモジュールインスタンスの前記入力ピンのアドレスに設定することと
を含む、請求項２４に記載のコンピュータ実装方法。
【請求項２６】
前記コンピュータプロセスは、
前記コンピュータノードによって、前記宛先アドレスおよび受信アドレスの各々に、（ｉ）デバイスのデバイスＩＤ、（ｉｉ）標的化されたピンに到達するために前記回路図内で順にトラバースされるべき各コンポーネントの名称を定義するパス、および、（ｉｉｉ）前記標的化されたピンの名称の組み合わせに基づいて、異なるアドレスを割り当てることをさらに含む、請求項２５に記載のコンピュータ実装方法。
【請求項２７】
前記コンピュータプロセスは、
前記コンピュータノードによって、前記宛先アドレスおよび受信アドレスの各々に、（ｉ）デバイスのデバイスＩＤ、（ｉｉ）標的化されたピンを含むモジュールインスタンスのＩＤ、および、（ｉｉｉ）前記標的化されたピンの名称の組み合わせに基づいて、異なるアドレスを割り当てることをさらに含む、請求項２５に記載のコンピュータ実装方法。
【請求項２８】
前記ｃｏｍｍモジュールは、複数の機能回路図に関連付けられており、各機能回路図は、異なる通信プロトコルを実装し、前記双方向環境は、（ｉ）所与のｃｏｍｍモジュールインスタンスのためのｃｏｍｍモジュールインスタンスタイプを個々に変更するユーザ選択と、（ｉｉ）各ｃｏｍｍモジュールインスタンスのための前記ｃｏｍｍモジュールインスタンスタイプを大域的に変更するユーザ選択との両方のために構成されている、請求項２５に記載のコンピュータ実装方法。
【請求項２９】
前記コンピュータプロセスは、前記コンピュータノードによって、中央ｃｏｍｍブローカを確立することをさらに含み、前記中央ｃｏｍｍブローカは、第１のｃｏｍｍモジュールインスタンスと第２のｃｏｍｍモジュールインスタンスとの間の通信のためにパブリッシュ−サブスクライブ通信プロトコルを利用し、前記パブリッシュ−サブスクライブ通信プロトコルは、
第２のｃｏｍｍモジュールインスタンスを前記中央ｃｏｍｍブローカにサブスクライブするための要求を受信することであって、前記要求は、前記第２のｃｏｍｍモジュールインスタンスの受信アドレスを規定することを含み、前記受信アドレスは、前記第２のｃｏｍｍモジュールに接続されたモジュールインスタンスの入力ピンのアドレスである、ことと、
データパケットを第１のｃｏｍｍモジュールインスタンスから前記中央ｃｏｍｍブローカに伝送することであって、前記データパケットは、データペイロード、宛先アドレス、ソースアドレス、およびそれらの組み合わせから成る群から選択されるデータを含み、前記ソースアドレスは、前記第１のｃｏｍｍモジュールインスタンスに接続されたモジュールインスタンスの出力ピンのアドレスであり、前記宛先アドレスは、前記意図される宛先モジュールインスタンスの前記入力ピンのアドレスである、ことと、
前記データパケットにおける宛先アドレスが前記第２のｃｏｍｍモジュールインスタンスの前記受信アドレスに合致しているとき、前記ｃｏｍｍブローカに前記データパケットを前記第２のｃｏｍｍモジュールインスタンスに転送させることと
を行うように構成されている、請求項１に記載のコンピュータ実装方法。
【請求項３０】
前記サブ回路図は、伝送パスおよび受信パスを含むｃｏｍｍモジュールインスタンスが前記サブ回路図の複数のモジュールインスタンス間で供給されるように構成され、前記コンピュータプロセスは、
前記コンピュータノードによって、前記デバイスの組のデバイスにおけるｃｏｍｍモジュールインスタンスに前記デバイスの識別を含む宛先アドレスを伴う所与のデータパケットを伝送することをさらに含み、前記ｃｏｍｍモジュールインスタンスは、
前記受信パスを通して、前記デバイスの識別を含む宛先アドレスを有する任意のデータパケットを受信することであって、前記任意のデータパケットは、前記所与のデータパケットを含む、ことと、
前記所与のデータパケットにおける前記宛先アドレスを分析し、前記所与のデータパケットを前記宛先アドレスに対応する受信アドレスを伴う前記サブ回路図のモジュールインスタンスに転送することと
を行うように構成されている、請求項１に記載のコンピュータ実装方法。
【請求項３１】
前記コンピュータプロセスは、
前記コンピュータノードによって、前記デバイスの組のデバイスに前記デバイス上にロードされた新しい回路図を実行させることをさらに含み、前記デバイスは、制御プログラムと、ｓｙｓモジュールインスタンスに接続されたｃｏｍｍモジュールインスタンスを有するｉｎｉｔ回路図とを事前にロードされ、前記ｃｏｍｍモジュールインスタンスの受信アドレスは、前記宛先アドレスが前記デバイスの識別および前記ｓｙｓモジュールを含む任意のデータパケットを受信するように設定され、
前記コンピュータプロセスは、
前記コンピュータノードによって、前記デバイスに、新しいサブ回路図と、前記デバイスの識別および前記ｓｙｓモジュールを含む宛先アドレスとを含むデータペイロードを有するデータパケットを伝送することを含み、
前記宛先アドレスは、（ｉ）前記データパケットを受信することと、（ｉｉ）前記デバイス上に前記新しいサブ回路図をロードすることと、（ｉｉｉ）前記制御プログラムに前記新しいサブ回路図を実行するように要求することとを前記ｓｙｓモジュールインスタンスに行わせる、請求項１に記載のコンピュータ実装方法。
【請求項３２】
前記コンピュータプロセスは、
前記コンピュータノードによって、デバイスに回路図を実行させることをさらに含み、前記デバイスは、
制御プログラムおよびｉｎｉｔ回路図を事前にロードすることと、
前記デバイスの電源がオンにされると、前記制御プログラムによる前記ｉｎｉｔ回路図の実行を引き起こすことと、
前記ｉｎｉｔ回路図を使用して、新しいサブ回路図を受信し、ロードすることと、
前記制御プログラムによる前記新しいサブ回路図の実行を引き起こす再ロードコマンドを受信することと
を行うように構成されている、請求項１に記載のコンピュータ実装方法。
【請求項３３】
サブ回路図における各プリミティブモジュールインスタンスに関して、前記デバイスにおいて、前記プリミティブモジュールインスタンスに関連付けられたデバイス依存ブロックを実行し、前記デバイス依存ブロックは、前記関連付けられたプリミティブモジュールインスタンスの前記タイプモジュールインスタンスプロパティを使用して、前記制御プログラムによってロードされる、請求項３２に記載のコンピュータ実装方法。
【請求項３４】
前記コンピュータプロセスは、
前記コンピュータノードによって、サブ回路図をバイナリコードに変換するコンパイラを実行することと、
前記コンピュータノードによって、前記回路図に対応する低能力デバイスに前記デバイス上での実行のためのバイナリコードを伝送することと
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項３５】
前記コンピュータプロセスは、
前記コンピュータノードによって、前記双方向環境において、前記分散型コンピューティングおよび制御システムを前記回路図としてさらに特徴づけるための可視化モジュールインスタンスの選択を受信することと、
前記コンピュータノードによって、前記回路図における前記可視化モジュールインスタンスのデバイスプロパティをシミュレーションコンテキストを示す値に設定することと、
前記コンピュータノードによって、前記回路図を解析し、前記サブ回路図の組を生成することであって、前記サブ回路図の組を生成することは、仮想デバイスのためのサブ回路図を生成することを含む、ことと、
前記コンピュータノードによって、前記仮想デバイスを通して、前記シミュレーションコンテキストにおいて、前記サブ回路図を実行することと
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項３６】
前記可視化モジュールインスタンスの前記デバイスプロパティは、少なくとも１つのデバイスのＩＤに設定され、前記コンピュータプロセスは、前記可視化モジュールが実行のために前記少なくとも１つのデバイスに伝送されるようにすることをさらに含む、請求項３５に記載のコンピュータ実装方法。
【請求項３７】
前記コンピュータプロセスは、
前記コンピュータノードによって、前記双方向環境において、シミュレーションメニューオプションの選択を受信することと、
前記回路図における各モジュールインスタンスに関して、
前記コンピュータノードによって、前記モジュールインスタンスのデバイスプロパティをシミュレーションコンテキストにおける前記モジュールインスタンスの実行を示す値に設定することと、
デフォルト挙動回路図が前記モジュールインスタンスに関連付けられているとき、前記モジュールインスタンスのタイププロパティをデフォルト挙動回路図を示すコンポーネント名に設定することと、
前記回路図を解析し、仮想デバイスのための１つのみのサブ回路図を生成することと、
前記コンピュータノードによって、前記仮想デバイスを通して、前記シミュレーションコンテキストにおいて、前記サブ回路図の各モジュールインスタンスを実行することと
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項３８】
前記モジュールインスタンスのタイププロパティは、前記デフォルト挙動回路図の前記コンポーネント名と異なる値にユーザ選択可能である、請求項３７に記載のコンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（優先権）
本特許出願は、２０１８年６月６日に出願された米国仮特許出願６２／６８１，３９７号、および２０１８年１０月４日に出願された米国仮特許出願６２／７４１，３２６号の利益を主張する。これらの出願の各々は、参照することによってその全体として本明細書に組み込まれる。
（技術分野）
【０００２】
本発明は、分散型異種コンピューティングシステムのためのアプリケーションを設計する方法に関する。
【背景技術】
【０００３】
ハードウェアおよびソフトウェアコンポーネントの両方を有するコンピューティングおよび制御システムの概念が、当技術分野において公知である。コンピューティングおよび制御システムは、機器、デバイス、およびコンピュータプロセスの協調制御を提供するために使用される。また、そのような機器、デバイス、およびシステムの内側のコンピュータプロセスによって収集されたデータ上にデータ処理能力を提供する。コンピューティングおよび制御システムは、複数のデバイスが、システム内に存在し、ある協調が、これらのデバイス間に生じる場合、分散型と見なされる。デバイスは、概して、別個に位置し、通信ネットワークを通して、互いに通信する。コンピューティングおよび制御システムは、複数のデバイスが、システム内に存在し、デバイスのうちの少なくとも１つが、他のデバイスのうちの少なくとも１つと異なるハードウェア構成、ソフトウェア構成、オペレーティングシステム、プログラミング方法、開発ツール等を有する場合、異種である。
【０００４】
例示的分散型異種コンピューティングおよび制御システムは、その中に、概して、少なくとも１つのサーバコンピュータおよび複数のエッジデバイスが存在する、モノのインターネット（ＩｏＴ）システムである。少なくとも１つのサーバコンピュータが、概して、強力なハードウェアリソースを有する一方、エッジデバイスの各々は、概して、制約されたハードウェアリソースを有する。エッジデバイスはまた、ハードウェアリソース、ソフトウェア構成、オペレーティングシステム、プログラミング方法等において互いに異なり得る。
【０００５】
そのような分散型異種コンピューティングおよび制御システムのためのアプリケーションを設計することは、システムの分散型および異種性質に起因して、困難である。従来的プログラミング方法は、通常、それらが、シングルデバイス上で起動するように意図されるアプリケーションプログラムを生成するので、分散型異種システムにあまり好適ではない。すなわち、従来的プログラミング方法は、異なるハードウェア構成、ソフトウェア構成、オペレーティングシステム等を有する複数のデバイス上で起動するアプリケーションプログラムの生成をサポートしない。
【０００６】
例えば、開発チームは、以下の分散型異種システムのためにアプリケーションを実装する必要があり得る。システムの第１のエッジデバイスが、産業機械の本体に取り付けられる、温度センサを有し、第１のエッジデバイスは、温度をセンサから周期的に読み取る。温度が、閾値を上回る場合、第１のエッジデバイスは、アラートメッセージをサーバコンピュータに送信する。第２のエッジデバイスが、シリアルポートを通して、産業機械と通信し、産業機械の内部レジスタから読み取ること、またはそれに書き込むことができる。第２のエッジデバイスは、産業機械の内部ステータスレジスタを周期的に読み取る。ステータスが、異常になる場合、第２のエッジデバイスは、アラートメッセージをサーバコンピュータに送信する。第３のエッジデバイスが、ビデオカメラに取り付けられ、それは、産業機械を包囲するエリアの写真またはビデオを撮影することができる。サーバコンピュータが、アラートメッセージを第１のエッジデバイスまたは第２のエッジデバイスのいずれかから受信する場合、サーバコンピュータは、第３のエッジデバイスが写真を撮影することを要求する。サーバコンピュータは、アラートメッセージおよび写真の両方をクライアントデバイスに送信する。オペレータが、クライアントデバイス上のアラートメッセージおよび写真をチェックし、オペレータが、状況が緊急であることを決定する場合、オペレータは、コマンドを第２のエッジデバイスに送信し、産業機械をシャットダウンする。
【０００７】
上記の例を従来的アプリケーション内に実装するために、少なくとも５つの別個のアプリケーションプログラム、すなわち、第１のエッジデバイスのための１つのプログラム、第２のエッジデバイスのための１つのプログラム、第３のエッジデバイスのための１つのプログラム、およびサーバコンピュータのための２つのプログラムが、実装される必要がある。サーバコンピュータのための第１のプログラムは、第１、第２、および第３のエッジデバイスから生じるデータを処理し得、サーバコンピュータのための第２のプログラムは、クライアントデバイスのためのウェブアプリケーションであり得る。本例示的アプリケーションを従来的プログラミング方法を使用して異なるデバイス上に実装することは、複雑かつインコヒーレントなプロセスである。
【０００８】
例えば、アプリケーションプログラムが、互いに通信する分散型異種システムの異なるデバイス上で実行されると、アプリケーションプログラムは、データフォーマット適合性に非常に慎重である必要がある。上記の例において、第１のエッジデバイスのプログラム内の温度は、浮動小数点数として表され得、典型的に、通信インターフェースを通して送信されるために、文字（ｃｈａｒ）に変換される必要がある。温度を受信するサーバコンピュータ上で実行されるアプリケーションプログラムは、次いで、文字を浮動小数点数に逆変換しなければならない。この変換プロセスは、複数の分散型アプリケーションプログラムが関わるとき、非常にエラーを被りやすい。さらに、異なるデバイスは、イーサネット（登録商標）、ＷｉＦｉ、セルラー、Ｚｉｇｂｅｅ（登録商標）等の異なるネットワークインターフェースを使用し得る。したがって、各デバイスは、１つ以上のネットワークデバイスドライバをインストールし、１つ以上の通信データフォーマットを使用する必要があり得る。異なるデバイス上で実行されるアプリケーションプログラムはまた、異なるアプリケーションプログラムを実装し、ネットワークインターフェースに応じて、異なる通信データフォーマット間で伝送されるデータを変換する必要があり得る。
【０００９】
異なるデバイス上で実行されるアプリケーションプログラムはまた、異なるプログラミング言語で実装され得る。上記の例において、第１のエッジデバイスは、Ｐｙｔｈｏｎで実装されるアプリケーションプログラムを実行し得、第２のエッジデバイスは、Ｌｕａで実装されるアプリケーションプログラムを実行し得、第３のエッジデバイスは、Ｃ＋＋で実装されるアプリケーションプログラムを実行し得、サーバコンピュータは、ＪＡＶＡ（登録商標）Ｓｃｒｉｐｔで実装されるアプリケーションプログラムを実行し得る。異なるプログラミング言語は、異なる性能パラメータを最適化し、それは、これらの異なるプログラミング言語を使用する実装を非常に複雑にする。さらに、異なるデバイス上で実行される異なるアプリケーションプログラムは、遠隔で更新される。例えば、アプリケーションプログラムは、概して、開発チームによってアクセス可能な１つ以上のコンピュータ内で開発され、開発されたプログラムは、次いで、オリジナルフォーマットまたはコンパイルされたフォーマットのいずれかにおいて、それぞれのデバイスにプッシュ配信される。より多くのアプリケーションプログラムが、異なるデバイス間に存在するほど、更新プロセスは、より複雑になる。
【００１０】
これらの課題に起因して、分散型異種システムのためのアプリケーションプログラムを実装することは、複雑で、冗漫、かつエラーを被りやすいプロセスである。概して、複数の開発ツール、複数の開発プロセス、および異なる技能セットを伴う複数の開発者が、これらのアプリケーションプログラムを実装するために要求され、それは、分散型異種システムを実装することを高価かつ時間がかかるプロセスにする。
【発明の概要】
【課題を解決するための手段】
【００１１】
本発明の一実施形態によると、コンピュータ実装方法は、アプリケーションおよびハードウェアコンテキストの両方を含み、ハードウェアコンテキストにおいて、アプリケーションを構成する、分散型異種コンピューティングおよび制御システムを設計する。本方法は、双方向ディスプレイに関連付けられたコンピュータノードにおいて実行され、コンピュータプロセスを利用して双方向環境を確立する設計ソフトウェア命令によって実装される。コンピュータプロセスは、コンピュータノードによって、双方向環境において、機能モジュールの組およびプリミティブモジュールの組へのアクセスを提供することであって、モジュールのいずれも、ユーザによってグラフィカルに選択されることができる、ことを含む。コンピュータプロセスはさらに、コンピュータノードによって、双方向環境において、デバイスの組の回路図として、分散型コンピューティングおよび制御システムを特徴づける様式において、機能モジュールおよびプリミティブモジュールのうちの所望のものの選択を受信し、それらを順序付けることを含む。コンピュータプロセスはまた、コンピュータノードによって、回路図を解析し、サブ回路図の組を生成することであって、各サブ回路図は、分散されるコンピューティングおよび制御システムにおけるデバイスの組における異なるデバイスに対応することを含む。コンピュータプロセスはさらに、コンピュータノードによって、回路図に従って、デバイスの各々を特徴づけるように、サブ回路図の組をデバイスの組に伝送することを含む。コンピュータプロセスはまた、コンピュータノードによって、デバイスの内側で起動する対応する制御プログラムを介してサブ回路図を実行するように、各デバイスを構成することを含む。
【００１２】
随意に、コンピュータノードは、独立型コンピュータである。代替として、または加えて、コンピュータノードは、ネットワーク環境において、クライアント−サーバの組み合わせによって実装される。代替として、または加えて、コンピュータプロセスは、コンピュータノードによって、ネットリストによって回路図を特徴づけることと、コンピュータノードによって、回路図をネットリストとして記憶することとを含む。代替として、または加えて、コンピュータプロセスはさらに、コンピュータノードによって、双方向環境において、記憶されたネットリストを読み出し、処理することによって、回路図の表示をレンダリングすることを含む。代替として、または加えて、双方向環境は、設計キャンバス、ライブラリマネージャ、およびメニューのグラフィカルコンポーネントを含み、グラフィカルコンポーネントのいずれも、ユーザによってグラフィカルに選択されることができる。代替として、または加えて、コンピュータプロセスはさらに、コンピュータノードによって、設計キャンバスにおいて、回路図、対応するネットリスト、およびそれらの組み合わせから成る群から選択されるメンバーを表示することを含む。
【００１３】
代替として、または加えて、コンピュータプロセスはさらに、コンピュータノードによって、一意のデバイス識別子（ＩＤ）をデバイスの組における各デバイスに割り当てることを含む。代替として、または加えて、コンピュータプロセスはさらに、コンピュータノードによって、デバイス名をデバイスの組における少なくとも１つのデバイスに割り当てることであって、デバイス名は、ユーザによってグラフィカルに記入されることができることを含む。
【００１４】
代替として、または加えて、機能モジュールおよびプリミティブモジュールのうちの所望のものの選択を受信することが、所望されるものに対応するモジュールインスタンスの作成をもたらし、分散型コンピューティングおよび制御システムを回路図として特徴づける様式でモジュールインスタンスを順序付ける。代替として、または加えて、モジュールインスタンスを順序付けることは、互いに通信すべき一対のモジュールインスタンスに対して、仮想ワイヤを対間に構成し、そのような通信を示すことを含む。代替として、または加えて、コンピュータプロセスはさらに、コンピュータノードによって、所与のモジュールのグラフィカル表現を双方向環境の設計キャンバスにおいて表示される回路図の表示にドラッグし、ドロップする入力を受信することに続いて、所与のモジュールのモジュールインスタンスが回路図において作成され、順序付けられるようにすることを含む。
【００１５】
代替として、または加えて、コンピュータプロセスはさらに、コンピュータノードによって、（ｉ）プロパティテーブルにおける少なくとも１つのプロパティ、（ｉｉ）グラフィカル表現、（ｉｉｉ）少なくとも１つの回路図、（ｉｖ）少なくとも１つのデバイス依存ブロック、および、（ｉｖ）それらの組み合わせから成る群から選択されるグラフィカルに選択可能なコンポーネントを使用して、所与のモジュールのモジュールインスタンスを特徴づけることを含む。代替として、または加えて、プロパティテーブルは、タイプおよびバージョンを含む、少なくとも１つの回路図を特徴づけるためのプロパティを含む。代替として、または加えて、所与のモジュールが、プリミティブモジュールであるとき、プロパティテーブルは、所与のモジュールに関連付けられた各デバイス依存ブロックのためのプロパティを含み、各デバイス依存ブロックのためのプロパティは、デバイスタイプリストおよびバージョンを含む。代替として、または加えて、プロパティテーブルは、（ｉ）インスタンス名、（ｉｉ）所与のモジュールをインスタンス化するためのインスタンスタイプ、（ｉｉｉ）モジュールインスタンスを実行すべき特定のデバイス、（ｉｖ）少なくとも１つのインスタンスパラメータ、および、（ｖ）それらの組み合わせから成る群から選択されるモジュールインスタンスのためのユーザ選択可能プロパティを含む。代替として、または加えて、特定のデバイスの少なくとも１つのプロパティは、モジュールインスタンスから作成された各子モジュールインスタンスによって継承される。
【００１６】
代替として、または加えて、コンピュータプロセスはさらに、コンピュータノードによって、デバイス依存ブロックを所与のプリミティブモジュールのモジュールインスタンスに関連付けることを含み、その中で、コンピュータプロセスは、以下を含む。コンピュータプロセスは、モジュールインスタンスのためのプロパティテーブルにおいて、モジュールインスタンスに対応するデバイスプロパティを見つけることであって、デバイスプロパティは、デバイスの組のうちの１つのためのデバイス識別子（ＩＤ）を規定する、ことを含む。コンピュータプロセスはまた、デバイスＩＤをデバイスタイプにマッピングし、所与のモジュールのためのプロパティテーブルにおいて、デバイスタイプに関連付けられたデバイス依存ブロックを見つけることを含む。コンピュータプロセスはさらに、モジュールインスタンスのためのプロパティテーブルにおいて、モジュールインスタンスに対応するタイププロパティをデバイス依存ブロックに割り当てられた名称で自動的に更新することを含む。随意に、タイププロパティを自動的に更新することは、タイププロパティのユーザ選択によって上書きされる。
【００１７】
代替として、または加えて、コンピュータプロセスはさらに、コンピュータノードによって、双方向環境において、回路図を特徴づけるモジュールインスタンスの階層構造を含むツリーグラフと、ツリーグラフの下方に位置付けられ、ツリーグラフにおける対応するプリミティブモジュールインスタンスにリンクされている、正しく選定されたデバイス依存ブロックのグラフィカル表現とを表示することを含む。代替として、または加えて、サブ回路図の組をデバイスの組に伝送することは、プリミティブモジュールインスタンスを有する各サブ回路図に関して、デバイス依存ブロックをサブ回路図に対応する異なるデバイスに伝送することを含む。代替として、または加えて、回路図は、モジュールインスタンスを含むコンポーネントを有し、コンピュータプロセスはさらに、コンピュータノードによって、回路図の所与のコンポーネントに、（ｉ）デバイスのデバイスＩＤ、（ｉｉ）所与のコンポーネントに到達するために回路図内で順にトラバースされるべき各コンポーネントの名称を定義するパス、および、（ｉｉｉ）所与のコンポーネントの名称の組み合わせに基づいて、異なるアドレスを割り当てることを含む。代替として、または加えて、回路図は、モジュールインスタンスを含むコンポーネントを有し、コンピュータプロセスはさらに、コンピュータノードによって、所与のモジュールインスタンスに、（ｉ）デバイスのデバイスＩＤ、および、（ｉｉ）所与のモジュールインスタンスのＩＤの組み合わせに基づいて、異なるアドレスを割り当てることと、コンピュータノードによって、モジュールインスタンスではない所与のコンポーネントに、（ｉ）デバイスのデバイスＩＤ、（ｉｉ）所与のコンポーネントを含むモジュールインスタンスのＩＤ、および、（ｉｉｉ）所与のコンポーネントの名称の組み合わせによって定義される一意のアドレスを割り当てることとを含む。
【００１８】
代替として、または加えて、回路図を解析することは、以下を含む。デバイスの組における各デバイスのために、コンピュータプロセスはさらに、デバイスのためのサブ回路図を作成することを含む。回路図の各モジュールインスタンスのために、コンピュータプロセスはさらに、モジュールインスタンスを、サブ回路図のデバイスがモジュールインスタンスのデバイスＩＤに対応するサブ回路図の中にコピーすることを含む。コンピュータプロセスはさらに、回路図内において第１のモジュールインスタンスと第２のモジュールインスタンスとを接続する仮想ワイヤを処理することを含み、それは、以下を含む。第１のモジュールインスタンスおよび第２のモジュールインスタンスの両方が、所与のサブ回路図の中にあるとき、コンピュータプロセスはさらに、仮想ワイヤを所与のサブ回路図において保存することを含む。仮想ワイヤが、（ｉ）第１のサブ回路図内の第１のモジュールインスタンスの出力ピンを（ｉｉ）第２のサブ回路図内の第２のモジュールインスタンスの入力ピンに接続するとき、コンピュータプロセスはさらに、第１のサブ回路図と第２のサブ回路図との間のｃｏｍｍ接続を作成することを含む。
【００１９】
代替として、または加えて、ｃｏｍｍ接続を作成することは、以下を含む。コンピュータプロセスはさらに、第１のｃｏｍｍモジュールインスタンスを第１のサブ回路図に追加し、仮想ワイヤを第１のモジュールインスタンスの出力ピンと第１のｃｏｍｍモジュールインスタンスの入力ピンとの間に追加することを含む。コンピュータプロセスはさらに、第２のｃｏｍｍモジュールインスタンスを第２のサブ回路図に追加し、仮想ワイヤを第２のｃｏｍｍモジュールインスタンスの出力ピンと第２のモジュールインスタンスの入力ピンとの間に追加することを含む。コンピュータプロセスはさらに、第１のｃｏｍｍモジュールインスタンスに含まれる宛先アドレスを第２のモジュールインスタンスの入力ピンのアドレスに設定することを含む。コンピュータプロセスはさらに、第２のｃｏｍｍモジュール内に含まれる受信アドレスを第２のモジュールインスタンスの入力ピンのアドレスに設定することを含む。代替として、または加えて、コンピュータプロセスはさらに、コンピュータノードによって、宛先アドレスおよび受信アドレスの各々に、（ｉ）デバイスのデバイスＩＤ、（ｉｉ）標的化されたピンに到達するために回路図内で順にトラバースされるべき各コンポーネントの名称を定義するパス、および、（ｉｉｉ）標的化されたピンの名称の組み合わせに基づいて、異なるアドレスを割り当てることを含む。代替として、または加えて、コンピュータプロセスはさらに、コンピュータノードによって、宛先アドレスおよび受信アドレスの各々に、（ｉ）デバイスのデバイスＩＤ、（ｉｉ）標的化されたピンを含むモジュールインスタンスのＩＤ、および、（ｉｉｉ）標的化されたピンの名称の組み合わせに基づいて、異なるアドレスを割り当てることを含む。代替として、または加えて、ｃｏｍｍモジュールは、複数の機能回路図に関連付けられ、各機能回路図は、異なる通信プロトコルを実装し、双方向環境は、（ｉ）所与のｃｏｍｍモジュールインスタンスのためのｃｏｍｍモジュールインスタンスタイプを個々に変更するユーザ選択と、（ｉｉ）各ｃｏｍｍモジュールインスタンスのためのｃｏｍｍモジュールインスタンスタイプを大域的に変更するユーザ選択の両方のために構成される。
【００２０】
代替として、または加えて、コンピュータプロセスはさらに、コンピュータノードによって、第１のｃｏｍｍモジュールインスタンスと第２のｃｏｍｍモジュールインスタンスとの間の通信のためにパブリッシュ−サブスクライブ通信プロトコルを利用する、中央ｃｏｍｍブローカを確立することを含む。パブリッシュ−サブスクライブ通信プロトコルは、中央ｃｏｍｍブローカを用いて、第２のｃｏｍｍモジュールインスタンスをサブスクライブするための要求を受信するように構成され、要求は、第２のｃｏｍｍモジュールインスタンスのための受信アドレスを規定することを含み、受信アドレスは、第２のｃｏｍｍモジュールに接続されるモジュールインスタンスの入力ピンのアドレスである。パブリッシュ−サブスクライブ通信プロトコルはさらに、データパケットを第１のｃｏｍｍモジュールインスタンスから中央ｃｏｍｍブローカに伝送するように構成され、データパケットは、データペイロード、宛先アドレス、ソースアドレス、およびそれらの組み合わせから成る群から選択されるデータを含み、ソースアドレスは、第１のｃｏｍｍモジュールインスタンスに接続される、モジュールインスタンスの出力ピンのアドレスであって、宛先アドレスは、意図される宛先モジュールインスタンスの入力ピンのアドレスである。データパケットにおける宛先アドレスが、第２のｃｏｍｍモジュールインスタンスの受信アドレスに合致しているとき、パブリッシュ−サブスクライブ通信プロトコルはまた、ｃｏｍｍブローカに、データパケットを第２のｃｏｍｍモジュールインスタンスに転送させるように構成される。
【００２１】
代替として、または加えて、サブ回路図は、伝送パスおよび受信パスを含むｃｏｍｍモジュールインスタンスが、サブ回路図の複数のモジュールインスタンス間で供給されるように構成され、コンピュータプロセスはさらに、コンピュータノードによって、デバイスの組のデバイスにおけるｃｏｍｍモジュールインスタンスに、デバイスの識別を含む宛先アドレスを伴う所与のデータパケットを伝送することを含む。ｃｏｍｍモジュールインスタンスは、受信パスを通して、所与のデータパケットを含む、デバイスの識別を含む宛先アドレスを有する任意のデータパケットを受信するように構成される。ｃｏｍｍモジュールインスタンスはさらに、所与のデータパケットにおける宛先アドレスを分析し、所与のデータパケットにおける宛先アドレスを分析し、所与のデータパケットを、宛先アドレスに対応する受信アドレスを伴うサブ回路図のモジュールインスタンスに転送するように構成される。
【００２２】
代替として、または加えて、コンピュータプロセスはさらに、コンピュータノードによって、デバイスの組のデバイスにデバイス上にロードされた新しい回路図を実行させることを含み、デバイスは、制御プログラムと、ｓｙｓモジュールインスタンスに接続されるｃｏｍｍモジュールインスタンスを有するｉｎｉｔ回路図とを事前にロードされ、ｃｏｍｍモジュールインスタンスの受信アドレスは、以下のように、宛先アドレスが、デバイスの識別およびｓｙｓモジュールを含む任意のデータパケットを受信するように設定される。コンピュータプロセスは、コンピュータノードによって、デバイスに、新しいサブ回路図と、デバイスの識別およびｓｙｓモジュールを含む宛先アドレスとを含むデータペイロードを有するデータパケットを伝送することであって、宛先アドレスは、ｓｙｓモジュールインスタンスに、（ｉ）データパケットを受信させ、（ｉｉ）デバイス上に、新しいサブ回路図をロードさせ、（ｉｉｉ）制御プログラムに、新しいサブ回路図を実行するように要求させる、ことを含む。
【００２３】
代替として、または加えて、コンピュータプロセスはさらに、コンピュータノードによって、デバイスに、回路図を実行させることを含み、デバイスは、制御プログラムおよびｉｎｉｔ回路図を事前にロードするように構成される。デバイスの電源が、オンになると、デバイスはさらに、制御プログラムによってｉｎｉｔ回路図の実行を生じさせるように構成される。デバイスはまた、ｉｎｉｔ回路図を使用して、新しいサブ回路図を受信およびロードするように構成される。デバイスはさらに、制御プログラムによって新しいサブ回路図の実行を生じさせる、再ロードコマンドを受信するように構成される。代替として、または加えて、サブ回路図における各プリミティブモジュールインスタンスに関して、デバイスにおいて、プリミティブモジュールインスタンスに関連付けられたデバイス依存ブロックを実行し、デバイス依存ブロックは、関連付けられたプリミティブモジュールインスタンスのタイプモジュールインスタンスプロパティを使用して、制御プログラムによってロードされる。
【００２４】
代替として、または加えて、コンピュータプロセスはさらに、コンピュータノードによって、サブ回路図をバイナリコードに変換するコンパイラを実行することと、コンピュータノードによって、回路図に対応する低能力デバイスに、デバイス上での実行のためのバイナリコードを伝送することとを含む。代替として、または加えて、コンピュータプロセスはさらに、以下を含む。コンピュータプロセスはさらに、コンピュータノードによって、双方向環境において、可視化モジュールインスタンスの選択を受信し、さらに、分散型コンピューティングおよび制御システムを回路図として特徴づけることを含む。コンピュータプロセスはさらに、コンピュータノードによって、回路図内の可視化モジュールインスタンスのデバイスプロパティをシミュレーションコンテキストを示す値に設定することを含む。コンピュータプロセスはさらに、コンピュータノードによって、仮想デバイスのためのサブ回路図を生成することを含む、回路図を解析し、サブ回路図の組を生成することを含む。コンピュータプロセスはさらに、コンピュータノードによって、仮想デバイス上で、シミュレーションコンテキストにおいて、サブ回路図を実行することを含む。代替として、または加えて、可視化モジュールインスタンスのデバイスプロパティは、少なくとも１つのデバイスのＩＤに設定され、コンピュータプロセスはさらに、可視化モジュールを実行のために少なくとも１つのデバイスに伝送させることを含む。
【００２５】
代替として、または加えて、コンピュータプロセスはさらに、以下を含む。コンピュータプロセスはさらに、コンピュータノードによって、双方向環境において、シミュレーションメニューオプションの選択を受信することを含む。回路図における各モジュールインスタンスに関して、コンピュータプロセスはさらに、コンピュータノードによって、モジュールインスタンスのデバイスプロパティをシミュレーションコンテキストにおけるモジュールインスタンスの実行を示す値に設定することを含む。回路図における各モジュールインスタンスに関して、コンピュータプロセスはさらに、デフォルト挙動回路図が、モジュールインスタンスに関連付けられているとき、モジュールインスタンスのタイププロパティをデフォルト挙動回路図を示すコンポーネント名に設定することを含む。コンピュータプロセスはさらに、回路図を解析し、仮想デバイスのための１つのみのサブ回路図を生成することを含む。コンピュータプロセスはさらに、コンピュータノードによって、仮想デバイスを通して、シミュレーションコンテキストにおいて、サブ回路図の各モジュールインスタンスを実行することを含む。代替として、または加えて、モジュールインスタンスのタイププロパティは、デフォルト挙動回路図のコンポーネント名と異なる値にユーザ選択可能である。
【図面の簡単な説明】
【００２６】
前述の実施形態の特徴は、付随の図面の参照と併せて、以下の詳細な説明を参照することによって、より容易に理解されるであろう。
【００２７】
【図１】図１は、本発明のある実施形態による、分散型異種コンピューティングおよび制御のためのシステムのブロック図であり、そのためにアプリケーションが設計される。
【００２８】
【図２】図２は、従来技術における分散型異種コンピューティングおよび制御システムのためのアプリケーションを設計する方法を図示するフローチャートである。
【００２９】
【図３】図３は、本発明のある実施形態による、分散型異種コンピューティングおよび制御システムのためのアプリケーションを設計する方法を図示するフローチャートである。
【００３０】
【図４】図４は、本発明のある実施形態による、設計ソフトウェアを実行するために使用されるシステムのブロック図である。
【００３１】
【図５】図５は、本発明のある実施形態による、分散型異種コンピューティングおよび制御システムのためのアプリケーションを設計するために使用されるグラフィカルユーザインターフェースである。
【００３２】
【図６】図６は、本発明のある実施形態による、図５のグラフィカルユーザインターフェース内の回路図および対応するネットリストのディスプレイを図示する。
【００３３】
【図７】図７は、本発明のある実施形態による、モジュールコンポーネントのブロック図である。
【００３４】
【図８】図８は、本発明のある実施形態による、モジュールプロパティを定義するプロパティテーブルのブロック図である。
【００３５】
【図９】図９は、本発明のある実施形態による、異なるタイプのデバイスにおける回路図の実行を図示するブロック図である。
【００３６】
【図１０】図１０は、本発明のある実施形態による、モジュールプロパティを定義する別のプロパティテーブルのブロック図である。
【００３７】
【図１１】図１１は、本発明のある実施形態による、適合性があるデバイスにおけるデバイス依存ブロックの実行を図示するブロック図である。
【００３８】
【図１２】図１２は、本発明のある実施形態による、モジュールのグラフィカル表現のブロック図である。
【００３９】
【図１３】図１３は、本発明のある実施形態による、回路図のブロック図である。
【００４０】
【図１４】図１４は、本発明のある実施形態による、モジュールインスタンスのためのプロパティを定義するプロパティテーブルを提示するグラフィカルユーザインターフェースである。
【００４１】
【図１５】図１５は、本発明のある実施形態による、回路図の階層構造を表すツリーグラフである。
【００４２】
【図１６】図１６は、本発明のある実施形態による、回路図を利用して、分散型異種コンピューティングおよび制御システムのためのアプリケーションを設計する方法３５を図示するフローチャートである。
【００４３】
【図１７】図１７は、本発明のある実施形態による、図１３の回路図から解析されたサブ回路図のブロック図である。
【００４４】
【図１８】図１８は、本発明のある実施形態による、回路図をサブ回路図に解析する方法を図示するフローチャートである。
【００４５】
【図１９】図１９は、本発明のある実施形態による、回路図のコンポーネントをアドレスするための論理フローを図示するブロック図である。
【００４６】
【図２０】図２０は、本発明のある実施形態による、回路図をサブ回路図に解析するときに使用されるアドレスの方法を図示するブロック図である。
【００４７】
【図２１】図２１は、本発明のある実施形態による、ｃｏｍｍモジュールのコンポーネントのブロック図である。
【００４８】
【図２２】図２２は、本発明のある実施形態による、パプリッシュ／サブスクライブプロトコルを使用してデータを通信する方法を図示するフローチャートである。
【００４９】
【図２３】図２３は、本発明のある実施形態による、モジュールインスタンス間の仮想ワイヤを置換する論理フローを図示するブロック図である。
【００５０】
【図２４】図２４は、本発明のある実施形態による、デバイスにおける実行のためのサブ回路図を更新する方法を図示するフローチャートである。
【００５１】
【図２５】図２５は、本発明のある実施形態による、ｉｎｉｔ回路図のブロック図である。
【００５２】
【図２６】図２６は、本発明のある実施形態による、インスタンス化されたｓｙｓモジュールを図示するブロック図である。
【００５３】
【図２７】図２７は、本発明のある実施形態による、デバイスにおいて制御プログラムを実行する方法を図示するフローチャートである。
【００５４】
【図２８】図２８は、本発明のある実施形態による、低能力デバイスのための実行可能コードを提供する方法を図示するフローチャートである。
【００５５】
【図２９】図２９は、本発明のある実施形態による、分散型異種システムのためのデータ可視化を提供するモジュールインスタンスを含む回路図のブロック図である。
【００５６】
【図３０】図３０は、本発明のある実施形態による、データ可視化を実施するためのサブ回路図のブロック図である。
【００５７】
【図３１】図３１は、本発明のある実施形態による、仮想デバイスを通したシミュレーションコンテキストにおける実行のための回路図を更新する方法を図示するフローチャートである。
【発明を実施するための形態】
【００５８】
定義。本説明および付随の請求項において使用されるように、以下の用語は、文脈によって別様に要求されない限り、示される意味を有するものとする。
「セット」は、少なくとも１つのメンバーを含む。
システムは、物理的に異なる場所に、ネットワークを経由して互いに通信する、複数のノードを含む場合、「分散型」である。
システムは、システム内の１つ以上のデバイスが、ハードウェア構成またはソフトウェア構成における差異に起因して、異なるアプリケーションプログラミングコードを要求する場合、「異種」である。
「アプリケーション」は、デバイスまたはシステムが遂行する必要がある、タスクまたはタスクの組である。
「アプリケーションコード」のブロックは、ソフトウェアアプリケーションが１つ以上のデバイス内で実行されるために書き込まれる、ソフトウェアプログラムコードのブロックである。
「デバイス」は、ハードウェアのアイテムのインスタンスであってハードウェアの構成だけではなく、また、ハードウェアに関連付けられる任意のソフトウェア環境も含む。
「実デバイス」は、物理的に異なる、デバイスである。
「仮想デバイス」は、動作上異なる、デバイスである。
「通信ネットワーク」または「ネットワーク」は、分散型デバイスをともに接続するために使用される媒体である。これは、インターネット、または産業イーサネット（登録商標）等の特殊ネットワークプロトコル、または複数のネットワークプロトコルの組み合わせであることができる。これは、有線、無線、または有線および無線の組み合わせであることができる。
「サーバ」は、ソフトウェアプログラムを起動するために使用されるコンピュータである。これは、ローカルまたはクラウド内にあることができる。
「データベース」は、電子的に記憶およびアクセスされる、編成されたデータの集合である。
「クライアントデバイス」は、人物がソフトウェアプログラムと相互作用するために使用されるデバイスである。これは、コンピュータまたはスマートフォン等のモバイルデバイスであることができる。
「エッジコンピュータ」または「エッジデバイス」は、複数のＩ／Ｏ接続端末を有するコンピュータまたはマイクロコントローラデバイスであって、種々のセンサ、スイッチ、オーディオ／ビデオデバイス、機器、または測定デバイスに接続するために使用され、一方向性または双方向性に、これらのデバイスと通信することができる。
「開発者」は、システムのためのアプリケーションを設計する人物である。
「設計ソフトウェア」は、ユーザが、システムのためのアプリケーションを設計および管理することを可能にするソフトウェアプログラムである。本発明において、「設計ソフトウェア」は、分散型異種コンピューティングおよび制御システムのためのアプリケーションを設計するためのソフトウェアプログラム実施形態を指す。
「ユーザ」は、設計ソフトウェアを使用して、システムのためのアプリケーションを設計または管理する、人物である。
「回路図」は、特定の機能の仮想化されたグラフィカル表現であって、ハードウェアコンテキストおよびソフトウェア構成から独立する。仮想化は、階層であることができる。
「機能回路図」は、特定のアプリケーション機能を実施するように構成される回路図であり、ハードウェアコンテキストおよびソフトウェア構成から独立する。
「挙動回路図」は、簡略化されたモデルまたは統計的モデル等、「機能回路図」をモデル化するように構成される回路図である。
「システム回路図」は、分散型異種コンピューティングおよび制御システム全体のアプリケーションを表す設計ソフトウェア内に実装される回路図である。システム回路図は、階層であり、全ての階層内に全ての要素を含む。
「サブ回路図」は、システム回路図から解析され、分散型異種コンピューティングおよび制御システム内の特定の実または仮想デバイスのアプリケーションを表す回路図である。追加のモジュールおよび他の要素が、サブ回路図の中に追加され、機能性を完成または向上させることができる。
「ネットリスト」は、回路図のテキスト表現である。ネットリストおよびその対応する回路図は、機能的に均等物である。
「モジュール」または「設計モジュール」は、以下のコンポーネント、すなわち、プロパティテーブル、シンボル、機能回路図、挙動回路図、および「デバイス依存」ブロックのうちの１つ以上のものを含む構造である。
「モジュールシンボル」は、モジュールのブロック形状表現である。これは、回路図内で使用される。
「モジュールインスタンス」は、回路図内のモジュールのインスタンス化である。これは、回路図内のモジュールシンボルとして現れ、対応するモジュールの回路図コンポーネントまたはデバイス依存ブロックコンポーネントのいずれかの中にインスタンス化する。回路図は、同一モジュールから複数のモジュールインスタンスを含むことができる。
「デバイス依存」ブロックは、デバイスのために書き込まれるアプリケーションコードのブロックであって、コードの構造およびコンテンツは、デバイスのハードウェア環境、コードのためのソフトウェア環境、およびそれらの組み合わせから成る群から選択されるメンバーの構成に依存し、典型的に、異なるタイプのデバイスのために異なる。
「機能モジュールインスタンス」または「機能モジュール」は、機能回路図の中にインスタンス化するモジュールインスタンスである。
「挙動モジュールインスタンス」または「挙動モジュール」は、挙動回路図の中にインスタンス化するモジュールインスタンスである。
「プリミティブモジュールインスタンス」または「プリミティブモジュール」または「プリミティブ」は、デバイス依存ブロックの中にインスタンス化するモジュールインスタンスである。
モジュールの「ピン」は、モジュールの入力、または出力、または双方向性ポートを表す。これは、外部信号が接続され得る場所である。モジュールは、複数のピンを有することができ、それは、典型的に、回路図およびシンボルの両方において、小正方形または他の形状として描かれる。
「仮想ワイヤ」は、２つのモジュール間の接続を表す。これは、データが、第１のモジュールの出力ピンから第２のモジュールの入力ピンの中にフローすることを示す。仮想ワイヤはまた、複数のモジュールを接続して、マルチセグメント化されることができる。
回路図の「要素」は、回路図の内側の任意の個々のエンティティを指す。これは、プロパティ、ピン、インスタンスシンボル、仮想ワイヤ、パラメータ等を含むことができる。
回路図内の要素の「アドレス」は、その要素のための一意の識別子である。
「デバイスタイプ」は、物理的または仮想デバイスのタイプのための識別子である。各「デバイス依存」ブロックは、１つ以上のデバイスタイプに結び付けられ、適合性を示す。
「デバイスＩＤ」または「デバイス＿ｉｄ」は、システム内のデバイスのための一意の識別子である。
「モジュールＩＤ」または「モジュール＿ｉｄ」は、回路図の内側のモジュールインスタンスのための一意の識別子である。モジュールインスタンスの「モジュールＩＤ」は、モジュールインスタンスの「アドレス」と同一である必要はない。
「解析」は、サブ回路図をシステム回路図から抽出するためのプロセスである。追加のモジュールおよび他の要素が、プロセスにおいてサブ回路図に追加されることができる。
「通信モジュール」または「ｃｏｍｍモジュール」は、その一次機能が、ネットワークを介して、データをその入力ピンから遠隔宛先に送信する、またはネットワークを介して、データを遠隔宛先から受信し、そのデータをその出力ピンに送達することであるモジュールである。ｃｏｍｍモジュールはまた、伝送モジュールおよび受信モジュールとして別個に実装されることができることに留意されたい。
「通信ブローカ」または「ｃｏｍｍブローカ」は、ネットワークを経由した複数のデバイス間の双方向性通信を管理する、ソフトウェアプログラムである。全てのデバイスが、ｃｏｍｍブローカを用いて、１つ以上のメッセージトピックをサブスクライブする。各デバイスは、データペイロード＋メッセージトピックをｃｏｍｍブローカに送信することができ、ｃｏｍｍブローカは、データペイロードを、該メッセージトピックをサブスクライブする、デバイスに転送するであろう。
「ｉｎｉｔ回路図」は、デバイスの中に事前にロードされ、制御プログラムによって実行される、回路図である。その機能は、限定ではないが、サブ回路図更新およびシステムコマンド実行を含む。
「ｓｙｓモジュール」は、その機能が、限定ではないが、サブ回路図更新およびシステムコマンド実行を含む、モジュールである。
「制御プログラム」は、サブ回路図およびｉｎｉｔ回路図をロードおよび実行することが可能であるデバイス内で起動されるソフトウェアプログラムである。制御プログラムの異なる実装が、異なるデバイスまたはさらに同一デバイスに関して存在し得る。
「コンパイラ」は、意図されるデバイス上で実行されるために、プログラムコードを機械コードまたはより低次のコードに変換する、ソフトウェアプログラムである。
「チャート」は、その入力ピンに関するデータのプロットを生成する、モジュールである。データは、回路図ウィンドウとともに、または異なるウィンドウ内で、プロットされることができる。プロットは、時系列プロット、ヒストグラム、円グラフ等であるように選定されることができる。
「プローブ」は、その入力ピンに到着するデータを印刷するモジュールである。データは、回路図ウィンドウの内側、別のウィンドウ内、またはファイルに印刷されることができる。
「コンピュータプロセス」は、ソフトウェアまたはファームウェアまたはこれらのいずれかの組み合わせの制御下で動作する、または前述のいずれかの制御外で動作し得る、コンピュータハードウェア（プロセッサ、フィールドプログラマブルゲートアレイまたは他の電子組み合わせ論理、または類似デバイス等）を使用するコンピュータ内の説明される機能の実施である。説明される機能の全部または一部は、トランジスタまたは抵抗器等の能動または受動電子コンポーネントによって実施され得る。用語「コンピュータプロセス」を使用する際、必ずしも、スケジュール可能エンティティまたはコンピュータプログラムもしくその一部の動作を要求するわけではないが、いくつかの実施形態において、コンピュータプロセスは、スケジュール可能エンティティまたはコンピュータプログラムもしくその一部の動作によって実装され得る。さらに、文脈によって別様に要求されない限り、「プロセス」は、２つ以上のプロセッサまたは２つ以上の（シングルまたはマルチプロセッサ）コンピュータを使用して実装され得る。
【００５９】
本発明の実施形態は、分散型異種システムにおいて実行されるためのアプリケーションを設計するためのシステムおよび方法を提供する。これらの実施形態において、ユーザは、システムの分散型または異種性質のいずれも懸念する必要がない。代わりに、ユーザは、分散型異種システムにおいて実行されるためのアプリケーションを定義する、システム回路図を実装することができ、システム回路図は、分散型異種システムの対応するデバイス内での実行のためのサブ回路図に解析される。これは、ユーザが、通信、データ変換、遠隔更新等の複雑な問題点の代わりに、そのようなアプリケーションを実装する際に重要であるデバイス間のデータ処理およびデータフローに焦点を当て、システムのためのアプリケーションを実装することを可能にする。
【００６０】
図１は、本発明のある実施形態による、そのためにアプリケーションが設計される、分散型異種コンピューティングおよび制御システム１０のブロック図である。システム１０は、通信ネットワーク１４を通して、クライアントデバイス１７、エッジコンピュータ１１、１２、１３、およびデータベース１５に通信可能に結合される、集中型サーバ１６を含む。デバイス１１、１２、１３、１５、１６、１７の各々は、物理的デバイスまたは仮想デバイスであり得、デバイス１１、１２、１３、１５、１６、１７のいくつかまたは全ては、異種であり得る（可変デバイスタイプ、デバイスアプリケーション等を伴う）。通信ネットワーク１４は、１つ以上のタイプのネットワークデバイスおよび１つ以上のネットワークプロトコルを用いて構成され得る。例示的実施形態において、システム１０は、全て同一デバイスタイプであるデバイスを用いて構成される特殊な例の分散型コンピューティングおよび制御システムである。
【００６１】
いくつかの実施形態において、分散型システムとして、システム１０は、集中型サーバ１６、クライアントデバイス１７、エッジコンピュータ１１、１２、１３、およびデータベース１５を横断して実装される、アプリケーションを実行し、これらのデバイス間に協調を要求する。例えば、システム１０は、デバイス１１、１２、１３、１５、１６、１７間の協調を要求する、産業機械を監視するためのアプリケーションを実行し得る。本アプリケーションを実行するために、アプリケーションコードが、各エッジコンピュータ１１、１２、１３内に実装され、読取値を産業機械の異なるセンサから求め、読取値がそのセンサのための閾値を上回ると、アラートを集中型サーバ１６に送信する。エッジコンピュータ１１、１２、１３内に実装されるアプリケーションコードは、センサのための閾値にデータベース１５からアクセスし得る。アプリケーションコードはまた、集中型サーバ１６内に実装され、アラートを各エッジコンピュータ１１、１２、１３から受信し、協調させ、産業機械のエラー条件を決定する。集中型サーバ１６のアプリケーションコードはさらに、クライアントデバイス１７に、エラー条件を送信し、クライアントデバイス１７上に実装されるアプリケーションコードは、エラー条件を受信し、産業機械のオペレータに提示する。
【００６２】
異種システムとして、エッジコンピュータ１１、１２、１３の各々は、異なるハードウェア構成、ソフトウェア構成、オペレーティングシステム、プログラミング方法、開発ツール等を有し得る。例えば、エッジコンピュータ１１１は、低能力マイクロコントローラ（ＭＣＵ）であり得、エッジコンピュータ２１２は、Ｌｉｎｕｘ（登録商標）オペレーティングシステムを起動させる、シングルボードコンピュータであり得る。別の例に関して、エッジコンピュータ２およびエッジコンピュータ３  １３は、同一ハードウェア構成を有し得るが、エッジコンピュータ２  １２は、Ｃプログラミング言語でアプリケーションを実装し得る一方、エッジコンピュータ３  １３は、Ｐｙｔｈｏｎプログラミング言語でアプリケーションを実装し得る。慣例上、システム１０のデバイス１１、１２、１３、１５、１６、１７間のハードウェア構成、ソフトウェア構成等における差異は、異なるプログラミング言語、ソフトウェア開発ツール等が、デバイス１１、１２、１３、１５、１６、１７を横断して実装されるためにアプリケーションを設計することにおいて使用されることを要求し、それは、同一アプリケーション機能を異なるデバイス上に実施するためのアプリケーション内に異なるコード構造をもたらす。当業者によって公知であるように、慣例上、異種システムは、シングルプログラミング言語またはソフトウェア開発ツールで設計されることができない。
【００６３】
本発明の実施形態において、ユーザは、デバイス１１、１２、１３、１５、１６、１７毎にサブ回路図に解析される、アプリケーション機能のシステム回路図を定義することによって、システム１０のデバイス１１、１２、１３、１５、１６、１７を横断して実装されるようにアプリケーションを設計する。いくつかの実施形態において、各サブ回路図は、その対応するデバイスのために実装される制御プログラムによって、対応するデバイス１１、１２、１３、１５、１６、１７内にロードされ、実行される。他の実施形態において、各サブ回路図は、対応するデバイス内にロードされ、実行される、バイナリコードにコンパイルされる。
【００６４】
図２は、先行技術における、分散型異種コンピューティングおよび制御システムのためのアプリケーションを設計する方法２０を図示するフローチャートである。方法２０の第１のプロセス２１において、開発者は、それぞれ、システム内の特定のデバイスタイプ、特定のデバイスアプリケーション等に対応する複数の別個のアプリケーションコードプログラムを実装することによって、アプリケーションを設計する。アプリケーションコードプログラムの実装は、典型的に、異なるプログラミング言語、開発ツール、および開発フレームワークを要求し、それは、設計を複雑かつ困難にする。複数のアプリケーションコードプログラムの存在により、第２のプロセス２２において、開発者は、各アプリケーションコードプログラムを実装し、システム内の異なるデバイスによって使用される通信プロトコルおよびデータ通信フォーマットを協調させなければならず、それは、エラーを被りやすいプロセスである。第３のプロセス２３において、開発者は、アプリケーションコードプログラムを別個のファイルまたはリポジトリ内に記憶する。第４のプロセス２４において、開発者は、別個のプログラム更新プロシージャを実装し、各アプリケーションコードプログラムを、アプリケーションコードプログラムに対応するデバイスタイプ、デバイスアプリケーション等を有するシステム内の１つ以上のデバイスに分散させる。
【００６５】
図３は、本発明のある実施形態による、分散型異種コンピューティングおよび制御システムのためのアプリケーションを設計する方法３０を図示するフローチャートである。方法３０の第１のプロセス３１において、ユーザは、設計ソフトウェア内の分散型異種コンピューティングおよび制御システムを横断して実行するためのアプリケーションの回路図表現であるシステム回路図を実装することによって、アプリケーションを設計する。ユーザは、設計ソフトウェアと通信するように構成されるユーザインターフェースを通して、システム回路図を実装し得る。システム回路図の使用は、アプリケーションを設計するための複数のプログラミング言語、開発ツール、および開発フレームワークを介して別個のアプリケーションコードプログラムを実装することを排除する。
【００６６】
第２のプロセス３２において、ユーザは、分散型異種コンピューティングおよび制御システムを横断して、設計ソフトウェア内にシステム回路図を展開する。システム回路図は、各サブ回路図が、デバイスの組の１つ以上のデバイスに対応し、それらのデバイスに伝送されるように、サブ回路図の組として展開される。第３のプロセス３３において、設計ソフトウェアは、展開されるサブ回路図を通して、通信プロトコル、データ通信フォーマット、およびハードウェア依存性をハンドリングする。第４のプロセス３４において、設計ソフトウェアは、分散型異種コンピューティングおよび制御システムを横断して、デバイス内のサブ回路図の分布および同期を管理する。
【００６７】
図４は、本発明のある実施形態による、設計ソフトウェアを実行するために使用されるシステム４０のブロック図である。システム４０は、コンピュータノードとも称される。図４のシステム４０は、ネットワーク環境内のクライアント−サーバ組み合わせであって、それは、ネットワーク４３を通してクライアントデバイス４２に通信可能に結合されるサーバ４４を含む。クライアントデバイス４２は、ユーザ４１によって動作される。設計ソフトウェアは、サーバ４４が、ディスプレイユーザ４１に、クライアントデバイス４２上で表示させるグラフィカルユーザインターフェースに関連付けられる。クライアントデバイス４２は、ウェブブラウザまたはローカルソフトウェアプログラムを実行するコンピュータ、アプリを実行するモバイルデバイス等であり得る。他の実施形態において、システムは、独立型コンピュータであり得る。
【００６８】
サーバ４４は、設計ソフトウェアを実行し、分散型異種コンピューティングおよび制御システムのためのアプリケーションのシステム回路図を実装する、割り振る、展開する、および実行する。ユーザは、クライアントデバイス４２上の、グラフィカルユーザインターフェースを通して、入力を設計ソフトウェアに提供し得る。サーバ４４は、完全または部分的に、設計ソフトウェアを記憶し得る。クライアントデバイス４２がウェブブラウザである実施形態において、サーバ４４は、完全設計ソフトウェアを記憶し、ネットワーク４３を通して、設計ソフトウェアの一部をクライアントデバイス４２に提供する。クライアントデバイス４２がローカルソフトウェアプログラムまたはアプリである実施形態において、サーバ４４は、設計ソフトウェアの一部を記憶し、クライアントデバイス４２は、設計ソフトウェアの残りを記憶する。他の実施形態において、完全設計ソフトウェアは、サーバに接続されずに、クライアントデバイス上に記憶される。
【００６９】
図５は、本発明のある実施形態による、分散型異種コンピューティングおよび制御システムのためのアプリケーションを設計するために使用されるグラフィカルユーザインターフェース５０である。本発明の実施形態において、ユーザは、回路図を設計し、アプリケーション機能を表すことによって、分散型異種システムのためのアプリケーションを設計する。グラフィカルユーザインターフェース５０は、回路図を設計および展開するために、双方向環境をユーザに提供する。グラフィカルユーザインターフェース５０は、限定ではないが、以下のコンポーネント、すなわち、設計キャンバス５２、ライブラリマネージャサブパネル５４、およびメニューバー５６を含む。設計キャンバス５２において、ユーザは、分散型異種システムのための回路図を形成する。形成されるシステム回路図は、ライブラリ内に、将来的回路図を設計することにおいて使用するための新しいモジュールとして保存され得る。設計キャンバス５２において、複数の回路図タブが、同時に、複数の回路図を設計するために開かれることができる。
【００７０】
ライブラリマネージャサブパネル５４は、ライブラリ内にグループ化される、設計モジュール（例えば、機能モジュール、プリミティブモジュール、挙動モジュール等）を表示する。各ライブラリは、１つのライブラリ名下にグループ化されるモジュールの組である。ユーザは、設計キャンバス内に開かれる、または設置されるためのモジュールをライブラリマネージャから選択することができる。例えば、ユーザは、モジュールをライブラリマネージャサブパネル５４からドラッグし、モジュールを設計キャンバス５２の中にドロップすることができる。モジュールのそのような選択は、モジュールのインスタンスを作成し得る。ユーザは、作成されたモジュールインスタンスを設計キャンバス５２内で順序付け、構造化し、分散型異種システムのための回路図を設計し得る。メニューバー５６は、複数のメニューオプションおよびプルダウンメニューから成り、それは、回路図を設計するシミュレートする、および展開するためのユーザオプションを提供する。
【００７１】
図６は、本発明のある実施形態による、グラフィカルユーザインターフェース６０内の回路図６２および対応するネットリスト６４のディスプレイを図示する。回路図６２内のグラフィカルに表されるアプリケーション機能およびデバイスは、分散型異種システムを横断して実行されるアプリケーションを備え得る。回路図６２は、対応するテキストベースのネットリスト６４に機能的に匹敵する。図６において、ネットリスト６４の一部が、回路図６２内の「クラウド論理」モジュールインスタンスのために表示され、それは、識別子、名称、タイプ、設計キャンバス内の座標、およびこのモジュールインスタンスを他のモジュールインスタンスに接続する仮想ワイヤの識別子を含むこのモジュールインスタンスのためのパラメータを示す。ある実施形態において、回路図は、メモリ内に、ネットリスト６４として記憶され、設計ソフトウェアは、記憶されたネットリスト６４をグラフィカルユーザインターフェース６０内に表示される回路図６２の形態の中にレンダリングする。ユーザは、グラフィカルユーザインターフェース６０を通して、回路図６２またはネットリスト６４の一方または両方を可視化および編集し得る。回路図６２またはネットリスト６４のうちの一方が、編集されると、設計ソフトウェアは、編集に従って、他方を自動的に更新する。
【００７２】
グラフィカルユーザインターフェースに関連付けられる、設計ソフトウェアは、当技術分野において公知である。しかしながら、既存の設計ソフトウェアは、分散型異種システムの設計をサポートしない。大部分の既存の設計ソフトウェアは、同一コンピュータ内で起動され、設計を実行する。本発明による設計ソフトウェアは、設計（例えば、回路図として）をコンポーネント（例えば、サブ回路図）に解析し、コンポーネントを分散型異種デバイスの組に伝送し、コンポーネントをこれらの分散型異種デバイス内で実行する。
【００７３】
図７は、本発明のある実施形態による、モジュールコンポーネント７０のブロック図である。モジュールは、分散型異種システムの１つ以上のアプリケーション機能を含む、ユニットである。モジュールは、システム回路図内に設置され、順序付けられる、モジュールインスタンスの中にインスタンス化され得る。図７に示されるように、モジュールのコンポーネントは、プロパティテーブル７１、グラフィカル表現（モジュールシンボルとも称される）７２、回路図７３、７４、およびデバイス依存ブロック７５、７６（プリミティブモジュールまたはプリミティブモジュールインスタンスの場合）を含む。回路図は、機能回路図、挙動回路図等であり得る。モジュールは、限定ではないが、他のタイプのコンポーネントを含み得る。
【００７４】
図８は、本発明のある実施形態による、モジュールプロパティを定義する、プロパティテーブル８０のブロック図である。プロパティテーブル８０は、モジュール名、モジュールライブラリ、およびコンポーネントプロパティのモジュールプロパティを含む。プロパティテーブル８０は、モジュール「モジュール１」のためのものである。プロパティテーブル８０において、モジュールプロパティ名は、「モジュール１」に設定され、ライブラリは、「Ｌｉｂ２」に設定され、「モジュール１」が、「Ｌｉｂ２」と命名されたライブラリ内に記憶されることを示す。プロパティテーブル８０のコンポーネントプロパティは、「モジュール１」内に含まれる２つの回路図を含む。第１の回路図は、「回路図」と命名され、第１の回路図が機能回路図であることを示す、「機能」に設定されたタイププロパティを有し、「２．１」に設定されたバージョンプロパティを有する。第２の回路図は、「回路図２」と命名され、第２の回路図が挙動回路図であることを示す、「挙動」に設定されるタイププロパティを有し、「１．０」に設定されたバージョンプロパティを有する。
【００７５】
図９は、本発明のある実施形態による、異なるタイプのデバイス内の回路図の実行９０を図示するブロック図である。本発明の実施形態における回路図（例えば、機能回路図および挙動回路図）は、デバイス独立性であって、それは、同一回路図が、異なるタイプのデバイス内で実行されることができることを意味する。図９は、回路図９２を含む、「モジュール１」と命名されたモジュールインスタンスを示す。図９はまた、それぞれ、異なるタイプのデバイスである３つの異種デバイス９３、９４、９５を含む、分散型異種システムを示す。具体的に、デバイス１  ９３は、タイプ「ＭＣＵ１」であって、デバイス２  ９４は、タイプ「ＰＥＣ１」であり、およびデバイス３は、タイプ「ＰＥＣ２」である。回路図９２は、デバイス独立性であるので、デバイスの各々が、異なるタイプのデバイスである場合でも、異種デバイス９３、９４、９５のそれぞれ上にロードされ、実行されることができる。
【００７６】
制御プログラムは、回路図を実行する各デバイス上で起動されるように実装される。具体的に、制御プログラム１は、デバイス１  ９３上に実装され、制御プログラム２は、デバイス２  ９４上に実装され、制御プログラム３は、デバイス３  ９５上に実装される。異なるタイプのデバイス９３、９４、９５との適合性のために、各制御プログラムは、異なるプログラミング言語で実装される、異なる開発ツールを使用する、異なるハードウェアアーキテクチャ内に実装されること等ができる。制御プログラムは、そのデバイスタイプに基づいて、異なる実装を有するが、それぞれ、同一回路図９２を実行することが可能である（デバイス９３、９４、９５毎に異なる回路図を要求するのではなく）。
【００７７】
図１０は、本発明のある実施形態による、モジュールプロパティを定義するプロパティテーブル１００のブロック図である。プロパティテーブル１００は、モジュール名、モジュールライブラリ、およびコンポーネントプロパティのモジュールプロパティを含む。プロパティテーブル８０は、プリミティブモジュールであるモジュール「モジュール２」のものである。プロパティテーブル１００において、名称のモジュールプロパティは、「モジュール２」に設定され、ライブラリのモジュールプロパティは、「Ｌｉｂ２」に設定され、「モジュール２」が、「Ｌｉｂ２」と命名されたライブラリ内に記憶されることを示す。プロパティテーブル８０のコンポーネントプロパティは、「モジュール２」内に含まれる、２つのデバイス依存ブロックを含む。第１のデバイス依存ブロックは、「依存」と命名され、「ＰＥＣ１」および「ＰＥＣ２」に設定されたデバイスタイププロパティを有し、「３．４」に設定されたバージョンプロパティを有する。本デバイスタイププロパティ設定は、デバイス依存ブロック「依存」が、２つのタイプのデバイス「ＰＥＣ１」および「ＰＥＣ２」と適合性があることを示す。第２のデバイス依存ブロックは、「依存２」と命名され、「ＭＣＵ１」に設定されたデバイスタイププロパティを有し、「２．７」に設定されたバージョンプロパティを有する。本デバイスタイププロパティ設定は、依存ブロック「依存２」が、１つのタイプのデバイス「ＭＣＵ１」と適合性があることを示す。
【００７８】
図１０に示されるように、「モジュール２」等のモジュールは、１つ以上のタイプのデバイスと適合性がある、複数のデバイス依存ブロックを含むことができる。いくつかの実施形態において、モジュール内の異なるデバイス依存ブロックは、同一アプリケーション機能であるが、異なるデバイスのコンテキストにおいて実施する。他の実施形態において、モジュール内のデバイス依存ブロックのいくつかまたは全ては、異なるデバイスのコンテキストにおいて、異なるアプリケーション機能を実施する。
【００７９】
図１１は、本発明のある実施形態による、適合性があるデバイス１１４、１１５、１１６内におけるデバイス依存ブロック１１２、１１３の実行を図示するブロック図である。デバイス依存ブロックは、その名称の通り、デバイス依存性であって、それは、デバイス依存ブロックが、デバイス依存ブロックと適合性があるデバイスのタイプ内においてのみ実行することを意味する。図１０に示されるように、デバイス依存ブロックは、デバイス依存ブロックと適合性があるデバイスタイプに設定される、デバイスタイププロパティを有する。図１１は、「モジュール２」と命名されたモジュール１１１を示し、それは、デバイス依存ブロック「依存」１１２および「依存２」１１３を含む。図１０に示されるように、デバイス依存ブロック「依存」１１２は、「ＰＥＣ１」および「ＰＥＣ２」のデバイスタイプと適合性があり、デバイス依存ブロック「依存２」１１３は、デバイスタイプ「ＭＣＵ１」と適合性がある。
【００８０】
図１１はまた、それぞれ、異なるタイプのデバイスである３つの異種デバイス１１４、１１５、１１６を含む、分散型異種システムを示す。具体的に、デバイス１  １１４は、タイプ「ＭＣＵ１」であって、デバイス２  １１５は、タイプ「ＰＥＣ１」であって、デバイス３  １１６は、タイプ「ＰＥＣ２」である。デバイス依存ブロック「依存」は、「ＰＥＣ１」および「ＰＥＣ２」のデバイスタイプのみと適合性があるので、デバイス２  １１５およびデバイス３  １１６上にのみロードされ、実行されることができる。さらに、デバイス依存ブロック「依存２」は、「ＭＣＵ１」のデバイスタイプのみと適合性があるので、デバイス１  １１４上にのみロードされ、実行される。したがって、モジュールインスタンス「モジュール２」１１１をこれらのデバイス１１４、１１５、１１６内で使用するために、デバイス依存ブロック「依存」は、デバイス２  １１５およびデバイス３  １１６上にロードするために選択され、ブロック「依存２」は、デバイス１  １１４上にロードするために選択される。デバイス依存ブロック「依存」は、デバイス１  １１４内では正しく実行されず、デバイス依存ブロック「依存２」は、デバイス２  １１５およびデバイス３  １１６内では正しく実行されないであろうことに留意されたい。
【００８１】
制御プログラムは、適合性があるデバイス依存ブロックを実行する各デバイス上で起動するように実装される。具体的に、制御プログラム１は、デバイス１  １１４上に実装され、制御プログラム２は、デバイス２  １１５上に実装され、制御プログラム３は、デバイス３  １１６上に実装される。異なるタイプのデバイス１１４、１１５、１１６との適合性のために、各制御プログラムは、異なるプログラミング言語で実装される、異なる開発ツールを使用する、異なるハードウェアアーキテクチャ内に実装されること等ができる。
【００８２】
図１２は、本発明のある実施形態による、モジュールのグラフィカル表現のブロック図である。本同一グラフィカル表現は、モジュールおよびモジュールのインスタンスのために使用され得る。グラフィカル表現（モジュールシンボルとも称される）は、縁に位置付けられる正方形形状の入力および出力ピンを伴う矩形ブロックである。他の実施形態において、グラフィカル表現およびピンは、他の形状として提示されることができる。
【００８３】
図１３は、本発明のある実施形態による、回路図１３０のブロック図である。本回路図１３０は、分散型異種コンピューティングおよび制御システム１０を表すシステム回路図である。回路図１３０は、それぞれ、モジュールのインスタンスをグラフィカルに表す複数のモジュールシンボルを含む。所与のモジュールのモジュールシンボルは、各使用が、所与のモジュールのインスタンス化またはインスタンスであるように、複数回、回路図内で使用され得る。モジュールインスタンスは、仮想ワイヤによって互いに接続され、モジュールインスタンス間のデータフローおよび通信を表す。例えば、回路図１３０は、データベースモジュールインスタンス１３５、ダッシュボードモジュールインスタンス１３６、クラウド論理モジュールインスタンス１３４、エッジ論理１モジュールインスタンス１３１、エッジ論理２モジュールインスタンス１３２、およびエッジ論理３モジュールインスタンス１３３を含む、システム回路図であって、これの各々は、モジュールシンボルとして提示される。モジュールインスタンス１３１、１３２、１３３、１３４、１３５、１３６は、階層的に構造化され、分散型異種コンピューティングおよび制御システム内で実行されるためのアプリケーション機能を定義する。回路図１３０は、クラウド論理モジュールインスタンス１３４とエッジ論理１モジュールインスタンス１３１との間等の対のモジュールインスタンス間に仮想ワイヤを含み、対間のデータフローまたは通信を表す。
【００８４】
図１４は、本発明のある実施形態による、モジュールインスタンスのためのプロパティ１４１、１４２、１４３、１４４を定義するプロパティテーブル１４０を提示するグラフィカルユーザインターフェースである。モジュールの各インスタンスは、インスタンスプロパティを定義する、対応するプロパティテーブル１４０を有する。ある実施形態において、図１４に示されるように、モジュールインスタンスプロパティテーブルは、グラフィカルユーザインターフェース内に表示されるポップアップウィンドウとして実装される。グラフィカルユーザインターフェースは、ユーザが、プロパティテーブル１４０内のモジュールインスタンスのプロパティおよびパラメータを修正することを可能にする。グラフィカルユーザインターフェースはまた、ユーが、カスタムプロパティおよびパラメータをプロパティテーブル１４０に追加することを可能にする。プロパティテーブル１４０は、モジュールインスタンス「クラウド論理」のための名称１４１、タイプ１４２、デバイス１４３、およびパラメータ１４４のモジュールインスタンスプロパティを含む。プロパティテーブル１４０において、名称１４１のモジュールインスタンスプロパティは、「クラウド論理」に設定され、タイプ１４２のモジュールインスタンスプロパティは、「Ｌｉｂ２／モジュール１／回路図」に設定される。
【００８５】
タイププロパティは、モジュールインスタンスを作成することにおいて使用される親モジュールから選択されるインスタンス化のタイプを定義する。例えば、親モジュールは、機能回路図、挙動回路図、およびデバイス依存ブロック等のコンポーネントを含有し得る（図８における「モジュール１」および図１０におけるモジュール２に関して示されるように）。モジュールインスタンスタイププロパティは、ユーザによって、親モジュールのコンポーネントから選択され、モジュールインスタンスのためのインスタンス化タイプを定義し得る。図１４において、モジュールインスタンス「クラウド論理」は、図８の親モジュール「モジュール１」からインスタンス化され、そのプロパティタイプ１４２は、「Ｌｉｂ２」内に位置する、「回路図」と命名された１つの回路図を含む。したがって、モジュールインスタンス「クラウド論理」のためのタイププロパティは、「Ｌｉｂ２／モジュール１／回路図」に設定される。モジュールインスタンスのためのタイプセットが、図１４におけるように、機能回路図であるとき、モジュールインスタンスは、機能モジュールインスタンスとして構成される。モジュールインスタンスのためのタイプセットが、挙動回路図であるとき、モジュールインスタンスは、挙動モジュールインスタンスとして構成される。モジュールインスタンスのためのタイプセットが、デバイス依存ブロックであるとき、モジュールインスタンスは、プリミティブモジュールインスタンスとして構成される、（また、単に、「プリミティブ」と呼ばれる）。
【００８６】
機能モジュールインスタンスは、システム回路図であり得る、タイププロパティ１４２内に設定される機能回路図に対してインスタンス化される。システム回路図等の回路図は、複数の機能モジュールインスタンスを含有し得、これの各々は、１つ以上の機能回路図を含有し得る。したがって、システム回路図に対してインスタンス化されるモジュールインスタンスは、機能回路図の階層構造（階層）を含有し得る。プリミティブモジュールインスタンスは、そのような階層構造を有していない、デバイス依存ブロックに対してインスタンス化される。本発明の実施形態の文脈において参照される、「階層」または「階層構造」は、（本発明のいくつかの実施形態で使用されるような）デバイス依存ブロックの内側の階層コード構造ではなく、モジュールインスタンスに対する設計階層を意味することに留意されたい。システム回路図の最低階層レベルは、全てのモジュールインスタンスパスをプリミティブモジュールインスタンス内で終了させる。
【００８７】
プロパティテーブル１４０において、デバイス１４３のモジュールインスタンスプロパティは、「サーバ５」に設定され、その中でモジュールインスタンスが実行されるべき、デバイスを示す。設計ソフトウェアは、システム回路図の解析の間、デバイスプロパティを使用して、モジュールインスタンスを伝送する（およびモジュールインスタンスをそのデバイスのための関連付けられるサブ回路図に配分する）ための標的デバイスを決定する。いくつかの実施形態において、モジュールインスタンスのデバイスプロパティは、デフォルトによって、モジュールインスタンスが、その親モジュールと同一デバイスプロパティを有するように、インスタンス化時のその親モジュールから継承される。これらの実施形態において、ユーザは、グラフィカルユーザインターフェースを通して、モジュールインスタンスのためのデバイスプロパティを手動で設定することによって、デフォルト設定をオーバライドすることができる。
【００８８】
プロパティテーブル１４０において、パラメータのモジュールインスタンスプロパティは、モジュールプロパティのための２つのパラメータ、すなわち、「雑音」および「ｐｉ」に設定される。パラメータ「雑音」は、モジュールインスタンス「クラウド論理」のために、「２．５」のデフォルト値に設定され、パラメータ「ｐｉ」は、「３．１４」のデフォルト値に設定される。ユーザは、グラフィカルユーザインターフェースを通して、パラメータのための値を手動で設定することによって、デフォルト値を変更させることができる。
【００８９】
図１５は、本発明のある実施形態による、システム回路図１５１の階層構造を表すツリーグラフ１５０である。図１５に示されるように、システム回路図１５１は、モジュールインスタンスの階層であって、それは、回路図、機能モジュールインスタンス、およびプリミティブモジュールインスタンスを含むが、デバイス依存ブロックを含有しない。ツリーグラフ１５０内の本構造は、システム回路図１５１が、デバイス独立性であることを可能にする。構造内の識別された上位レベル回路図は、システム回路図１５１の上位レベル階層における回路図である。上位レベル回路図は、３つのモジュールインスタンス、すなわち、「デバイス１」内の実行のための機能モジュールインスタンスであるＦ１、「デバイス２」内の実行のための機能モジュールインスタンスであるＦ２、および「デバイス３」内の実行のためのプリミティブモジュールインスタンスであるＰ１を含む。「デバイス１」、「デバイス２」、および「デバイス３」の各々は、異なるデバイスである。
【００９０】
第２のレベルの階層において、機能モジュールインスタンスＦ１は、２つのモジュールインスタンス、すなわち、プリミティブモジュールインスタンスであるＰ２、および機能モジュールインスタンスであるＦ４を含む。機能モジュールインスタンスＦ２は、２つのモジュールインスタンス、すなわち、プリミティブモジュールインスタンスの両方であるＰ２およびＰ４を含む。プリミティブモジュールインスタンスＰ２は、機能モジュールＦ１およびＦ２の両方内にあることに留意されたい。第３のレベルの階層において、機能モジュールインスタンスＦ４は、シングルプリミティブモジュールインスタンスＰ３を含む。Ｐ１、Ｐ２、Ｐ３、およびＰ４は、リーフモジュールインスタンスであって、それは、任意の子モジュールインスタンスを有していない。モジュールインスタンスＰ２、Ｆ４、およびＰ３は全て、モジュールインスタンスＦ１の子モジュールインスタンスであるので、それらの各々は、Ｆ１のデバイスプロパティ「デバイス１」を継承する。モジュールインスタンスＰ２およびＰ４は全て、モジュールインスタンスＦ２の子モジュールインスタンスであるので、それらの各々は、Ｆ２のデバイスプロパティ「デバイス２」を継承する。ユーザは、これらのモジュールインスタンスに対応するインスタンスプロパティテーブル内のデバイスプロパティの手動選択を行うことによって、Ｐ２、Ｆ４、Ｐ３、Ｐ４のためのデバイスプロパティをオーバライドし得る。
【００９１】
システム回路図１５１の構造において、各階層パスは、１５２によって示されるように、デバイス依存ブロックに関連付けられたプリミティブモジュールインスタンス（リーフモジュールインスタンスＰ１、Ｐ２、Ｐ３、およびＰ４）内で終了する。すなわち、Ｐ１は、デバイス依存ブロックＤ１．３に関連付けられ、Ｐ２は、デバイス依存ブロックＤ２．１およびＤ２．２に関連付けられ、Ｐ３は、デバイス依存ブロックＤ３．１に関連付けられ、Ｐ４は、デバイス依存ブロックＤ４．２に関連付けられる。実施形態において、デバイス依存ブロックは、プリミティブモジュールインスタンス毎に構成されなければならない。システム回路図１５１において、プリミティブモジュールインスタンスＰ２は、機能モジュールインスタンスＦ１内で１回および機能モジュールインスタンスＦ２内で１回の２回、使用されることに留意されたい。Ｆ１およびＦ２は、異なるタイプのデバイス、すなわち、それぞれ、デバイス１およびデバイス２内で実行されるため、２つの異なるデバイス依存ブロック、すなわち、Ｄ２．１およびＤ２．２が、Ｐ２内に含まれなければならない。Ｆ１が、「デバイス１」にロードされると、デバイス１のデバイスタイプのためのデバイス依存ブロックＤ２．１もまた、デバイス１内にロードされる。Ｆ２が、「デバイス２」にロードされると、デバイス２のデバイスタイプのためのデバイス依存ブロックＤ２．２もまた、「デバイス２」内にロードされる。
【００９２】
システム回路図１５１が、デバイス独立性（すなわち、デバイス依存ブロックが、１５２によって示されるように、システム回路図１５１内の階層構造内に含まれない）場合でも、設計ソフトウェアおよびデバイスは両方とも、分散型異種コンピューティングおよび制御システムにおけるデバイスのための正しいデバイス依存ブロックを見つけるための十分なコンテキストを有する。分散型異種システム内の各デバイスは、設計ソフトウェアを実行するコンピュータノードによって、一意の識別子（ＩＤ）を割り当てられ、また、対応するデバイス名（グラフィカルインターフェースを通して、ユーザによってグラフィカルに記入され得る）を割り当てられ得る。デバイス依存ブロックの正しい選択が、そのプロパティテーブル内のモジュールインスタンス毎に規定されたデバイスプロパティに基づいて行われる。デバイスプロパティは、デバイスのデバイスＩＤまたはデバイス名を含む。デバイス名が、デバイスプロパティ内に規定されるとき、設計ソフトウェアは、対応するデバイスＩＤを特定することができる。デバイスＩＤを使用して、設計ソフトウェアは、そのデバイスＩＤに対応するデバイスタイプをルックアップすることができる。デバイスタイプが、見出されると、設計ソフトウェアは、そのデバイスタイプに対応するデバイス依存ブロックを見つけることができる。
【００９３】
本発明のいくつかの実施形態において、システム回路図１５１内に含まれるモジュールインスタンスが、デバイスに関連付けられるとき、デバイスのためのデバイス依存ブロックは、デバイス内に事前にロードされる。いくつかの実施形態において、システム回路図内に含まれるモジュールインスタンスが、デバイスに関連付けられるとき、設計ソフトウェアは、対応するデバイス依存ブロックをデバイスに伝送する。
【００９４】
図１６は、本発明のある実施形態による、回路図を利用して、分散型異種コンピューティングおよび制御システムのためのアプリケーションを設計する方法１６０を図示するフローチャートである。ユーザは、コンピュータノードにおいて実行され、関連付けられるユーザインターフェースを通してユーザにアクセス可能である設計ソフトウェア命令を使用して、システムのための回路図を実装し、ユーザのための双方向環境を確立する。システム回路図の実装を通して、ユーザは、システムの各デバイスのハードウェアがシステム回路図内で表されるように、ハードウェアコンテキストにおいて、アプリケーションを設計する。
【００９５】
システム回路図を実装するために、方法１６０の第１のプロセス１６１において、コンピュータノードが、設計ソフトウェアを実行し、システム回路図を実装する。そのために、コンピュータノードは、双方向環境において、システム回路図を定義するための機能モジュールの組およびプリミティブモジュールの組へのユーザアクセスを提供する。機能モジュールの組は、１つ以上の機能回路図を含む。各機能回路図は、アプリケーション機能のグラフィカル表現であって、ハードウェアコンテキストおよびソフトウェア構成から独立する。プリミティブモジュールの組は、１つ以上のデバイス依存ブロックを含む。各デバイス依存ブロックは、分散型異種コンピューティングおよび制御システムの特定のデバイスのために書き込まれるアプリケーションコードであって、コードの構造およびコンテンツは、デバイスのためのハードウェア環境、コードのためのソフトウェア環境、およびそれらの組み合わせから成る群から選択されるメンバーの構成に依存し、典型的に、異なるタイプのデバイスに関して異なる。
【００９６】
実施形態において、挙動回路図と称される、特殊タイプの回路図もまた、存在する。挙動回路図は、典型的に、簡略化されたモデルまたは統計的モジュール等の機能回路図またはデバイス依存ブロックのモデルである。機能回路図と異なり、挙動回路図は、分散型異種システムの物理的デバイス上での実行のためではなく、シミュレーションコンテキストにおいて使用される。シミュレーションコンテキストは、典型的に、統計的変動、コーナーケース、および特殊入力条件等の分散型異種システムに関連付けられる問題点を理解するために、設計ソフトウェア内で実施される。ユーザはまた、１つ以上の挙動回路図を含む、挙動モジュールの組へのアクセスを提供され得る。ユーザはまた、システム回路図を実装することにおいて使用される他のコンポーネントへのアクセスを提供され得る。モジュールおよびコンポーネントのいずれも、双方向環境を通して、ユーザによってグラフィカルに選択されることができる。
【００９７】
コンピュータノードは、双方向環境において、機能モジュールと、プリミティブモジュールと、それらを順序付け、システム回路図を実装する、入力との一連の所望のものを受信する。コンピュータノードはまた、双方向環境において、挙動モジュールと、それらを順序付け、システム回路図を実装する、入力との一連の所望のものを受信し得る。いくつかの実施形態において、一連の所望のものは、対応する機能モジュールおよびプリミティブモジュールと、モジュールインスタンスを順序付け、システム回路図を実装する、入力とのモジュールインスタンスを作成する。コンピュータノードはまた、双方向環境において、一連の仮想ワイヤと、システム回路図内において、仮想ワイヤをシステム内で互いに通信することになる一対のモジュール（またはモジュールインスタンス）間に構成するための入力とを受信し得る。
【００９８】
第２のプロセス１６２において、コンピュータノードは、各サブ回路図が、分散型異種コンピューティングおよび制御システムにおけるデバイスの組のデバイスに対応するように、システム回路図を解析し、サブ回路図の組を生成する。第３のプロセス１６３において、コンピュータノードは、デバイスが、サブ回路図内のデバイスに配分される、設計されるアプリケーションのアプリケーション機能を実行し得るように、各サブ回路図をその対応するデバイスに伝送する。第４のプロセス１６３において、コンピュータノードは、各デバイスを構成し、デバイスの内側で起動する対応する制御プログラムを介して、その対応するサブ回路図を実行する。
【００９９】
図１７は、本発明のある実施形態による、図１３のシステム回路図１３０から解析される、サブ回路図のブロック図である。システム回路図１３０等のシステム回路図が、設計されると、システム回路図は、サブ回路図に解析されなければならない。解析されたサブ回路図の各々は、特定の分散型異種デバイスのために標的化されたシステム回路図の一部である。設計ソフトウェアは、サブ回路図をその分散型異種デバイスに伝送し、サブ回路図は、それぞれのデバイス内で起動される制御プログラムを介して実行される。
【０１００】
図１７は、システム回路図１３０に対応する例示的解析されたサブ回路図を示す。図１３のモジュールインスタンスは、分散型異種システム内の４つのデバイス、すなわち、サーバ、エッジコンピュータ１、エッジコンピュータ２、およびエッジコンピュータ３に関連付けられる。サブ回路図は、４つのデバイス毎に、システム回路図から解析される。すなわち、サブ回路図１７１は、サーバのためにシステム回路図から解析され、サブ回路図１７２は、エッジコンピュータ１のためにシステム回路図から解析され、サブ回路図１７３は、エッジコンピュータ２のためにシステム回路図から解析され、サブ回路図１７４は、エッジコンピュータ３のためにシステム回路図から解析される。
【０１０１】
解析の間、システム回路図１３０内のモジュールインスタンスは、これらのモジュールインスタンスが実行されるべきデバイスに関連付けられる、サブ回路図に割り当てられる。具体的に、モジュールインスタンスデータベース、ダッシュボード、およびクラウド論理が、デバイスサーバのために、サブ回路図１７１に割り当てられる。他の実施形態において、「データベース」および「ダッシュボード」のモジュールインスタンスは、「クラウド論理」と同一サーバデバイス内で実行されないこともあることに留意されたい。さらに、モジュールインスタンスエッジ論理１は、デバイスエッジコンピュータ１のために、サブ回路図１７２に割り当てられ、モジュールインスタンスエッジ論理２は、デバイスエッジコンピュータ２のために、サブ回路図１７３に割り当てられ、モジュールインスタンスエッジ論理３は、デバイスエッジコンピュータ３のために、サブ回路図１７４に割り当てられる。仮想ワイヤが、システム回路図１３０内の一対のモジュールインスタンス間に存在するが、対の各モジュールインスタンスが、２つの別個のサブ回路図に解析される場合、仮想ワイヤが、２つのサブ回路図の各々内のｃｏｍｍモジュールインスタンスによって置換される。ｃｏｍｍモジュールインスタンスは、２つの別個のサブ回路図間に通信およびデータフローを提供するように構成される。例えば、システム回路図１３０において、クラウド論理が、仮想ワイヤを介して、エッジ論理１に接続されるクラウド論理は、ｃｏｍｍモジュールとともにサブ回路図１７１に解析され、エッジ論理１は、ｃｏｍｍモジュールとともにサブ回路図１７２に解析される。サブ回路図１７１および１７２内のｃｏｍｍモジュールは、サブ回路図１７１および１７２間の通信およびデータフローを促進するように構成される。
【０１０２】
図１８は、本発明のある実施形態による、回路図をサブ回路図に解析する方法１８０を図示するフローチャートである。図１７に示されるように、解析プロセスは、２つの別個のプロセス、すなわち、モジュールインスタンスの解析および仮想ワイヤの解析を伴う。方法１８０の第１のプロセス１８１において、設計ソフトウェアを実行するコンピュータノードは、回路図内のモジュールインスタンスをサブ回路図に解析する。本第１のプロセス１８１において、コンピュータノードは、そのデバイスプロパティに基づいて、モジュールインスタンスをサブ回路図に解析する。各サブ回路図は、分散型異種システム内の特定のデバイスのために構成される。各モジュールインスタンスは、モジュールインスタンスに関連付けられるデバイスを示す一意のデバイス識別子（ＩＤ）に設定されるデバイスプロパティを含む。同一デバイスに関連付けられる各モジュールインスタンスは、そのデバイスのための同一サブ回路図に解析される。このプロシージャは、全ての階層レベルのシステム回路図を横断して、全てのモジュールインスタンスに適用される。
【０１０３】
第２のプロセス１８２において、コンピュータノードは、システム回路図内の仮想ワイヤ毎に解析する。仮想ワイヤを解析する際、システム回路図内の各仮想ワイヤが、検査される。仮想ワイヤが、２つのモジュールインスタンスを同一デバイスプロパティと接続する（すなわち、２つのモジュールインスタンスが、同一サブ回路図に解析される）場合、第３のプロセス１８３において、コンピュータノードは、仮想ワイヤをサブ回路図内の２つのモジュールインスタンス間の場所に保存する。仮想ワイヤが、２つのモジュールインスタンスを異なるデバイスプロパティと接続する（すなわち、２つのモジュールインスタンスは、別個のサブ回路図に解析される）場合、第４のプロセス１８４において、コンピュータノードは、ｃｏｍｍモジュールインスタンスを別個のサブ回路図の各々に追加する。各モジュールインスタンスは、次いで、その対応するサブ回路図に追加される、ｃｏｍｍモジュールインスタンスに接続される。すなわち、仮想ワイヤは、システム回路図内において、第１のモジュールインスタンスの出力を第２のモジュールインスタンスの入力に接続する。第１のモジュールインスタンスは、第１のサブ回路図に解析され、第２のモジュールインスタンスは、第２のサブ回路図に解析される。第１のｃｏｍｍモジュールインスタンスが、第１のサブ回路図内で作成され、仮想ワイヤが、第１のモジュールインスタンスの出力から第１のｃｏｍｍモジュールインスタンスの入力に追加される。第２のｃｏｍｍモジュールインスタンスが、第２のサブ回路図内で作成され、仮想ワイヤが、第２のｃｏｍｍモジュールインスタンスの出力から第２のモジュールインスタンスの入力に追加される。
【０１０４】
第４のプロセス１８５において、コンピュータノードは、第１のモジュールインスタンスに接続される第１のｃｏｍｍモジュールインスタンスの宛先アドレスを第２のモジュールインスタンスのアドレスに設定する。第５のプロセス１８６において、コンピュータノードは、第２のモジュールインスタンスに接続される第２のｃｏｍｍモジュールインスタンスの受信アドレスを第２のモジュールインスタンスのアドレスに設定する。本アドレス指定に基づいて、第１のｃｏｍｍモジュールは、第１のモジュールインスタンスから受信されたデータを、データを第２のモジュールインスタンスに伝送する異なるサブ回路図およびデバイス内の第２のｃｏｍｍモジュールに通信し得る。
【０１０５】
図１９は、本発明のある実施形態による、回路図のコンポーネントをアドレス指定するための論理フロー１９０を図示するブロック図である。システム回路図において、コンピュータノードは、各コンポーネント（例えば、モジュール、ピン、仮想ワイヤ等）に、一意のアドレスを割り当てる。割り当てられたアドレスは、システム回路図内のコンポーネントの精密な場所を識別するために使用される。後に説明されるであろうように、本アドレスはまた、サブ回路図に解析されるとき、コンポーネントの精密な場所を識別し、コンポーネントのための通信アドレスを設定するために使用される。
【０１０６】
本発明におけるアドレス指定方法の実施形態は、（ｉ）デバイスＩＤ、（ｉｉ）コンポーネントへのパス、および、（ｉｉｉ）コンポーネントの名称の組み合わせとして、回路図のコンポーネントをアドレス指定する。システム回路図において、デバイスＩＤは、設計者のシミュレーション仮想デバイスＩＤに設定される。サブ回路図において、デバイスＩＤは、サブ回路図に関連付けられる分散型異種システム内のデバイスを識別する。コンポーネントのパスは、パスが、所与のコンポーネントに到達するシステム回路図またはサブ回路図内の階層順序でトラバースされるために各モジュールインスタンスの名称を定義するように、階層パスとして定義される。図１９は、モジュールインスタンスであるモジュール＿１を含む、システム回路図を図示する。モジュールインスタンスであるモジュール＿１は、デバイス＿Ａ内で実行されるように構成される。システム回路図において、モジュール＿１は、２つのモジュールインスタンス、すなわち、モジュール＿２およびモジュール＿３を含む、回路図の中にインスタンス化される。システム回路図において、モジュール＿２はさらに、２つのモジュールインスタンス、すなわち、モジュール＿５およびモジュール＿６を含む、回路図の中にインスタンス化される。モジュール＿６は、「入力」と命名された入力ピンと、「出力」と命名された出力ピンとを有する。
【０１０７】
システム回路図において、シミュレーション仮想デバイスのデバイスＩＤは、「設計者」であって、ピン「入力」への階層パスは、「モジュール＿１／モジュール＿２／モジュール＿６」である。したがって、システム回路図において、ピン「入力」のアドレスは、「設計者／モジュール＿１／モジュール＿２／モジュール＿６／入力である。システム回路図をサブ回路図に解析する結果として、「モジュール＿１」（全てのその子とともに）は、「デバイス＿Ａ」に対応するサブ回路図の中に設置される。本サブ回路図において、デバイスＩＤは、「デバイス＿Ａ」であって、ピン「入力」への階層パスは、依然として、「モジュール＿１／モジュール＿２／モジュール＿６」である。したがって、本サブ回路図において、ピン「入力」のアドレスは、「デバイス＿Ａ／モジュール＿１／モジュール＿２／モジュール＿６／入力」である。システム回路図およびサブ回路図におけるピン「入力」間のアドレスの唯一の変更は、デバイスＩＤである一方、アドレスの残りは、保存されることに留意されたい。これは、システム回路図内の任意のコンポーネントが対応するサブ回路図内で容易に特定されることを可能にするので、本アドレス指定方法の大きな利点である。
【０１０８】
図２０は、本発明のある実施形態による、回路図２０１をサブ回路図２０２、２０３に解析するときに使用されるアドレス指定の方法２００を図示するブロック図である。例えば、図２０は、回路図２０１を解析するときの図１９の一意のアドレス指定方法の使用を図示する。図２０は、２つのモジュールインスタンス、すなわち、「エッジ論理１」および「クラウド論理」を含む例示的システム回路図２０１を示す。これらの２つのモジュールインスタンスは、２つの異なるデバイス、すなわち、それぞれ、「エッジコンピュータ１」および「サーバ」内で実行されるように構成される。これらの２つのモジュールインスタンスは、「エッジ論理１」の出力が、「クラウド論理」の入力に接続されるように構成される。
【０１０９】
システム回路図２０１は、エッジコンピュータ１のための第１のサブ回路図２０２およびサーバ２０３のための第２のサブ回路図２０３に解析される。第１のサブ回路図２０２は、モジュールインスタンス「エッジ論理１」およびｃｏｍｍモジュールインスタンスを含み、システム回路図２０１内の「クラウド論理」モジュールインスタンスと「エッジ論理１」モジュールインスタンスとの間の仮想ワイヤを置換する。第１のサブ回路図２０２において、仮想ワイヤは、「エッジ論理１」モジュールインスタンスの出力をｃｏｍｍモジュールインスタンスの入力に接続する。第２のサブ回路図２０３は、モジュールインスタンス「クラウド論理」およびｃｏｍｍモジュールインスタンスを含む。第２のサブ回路図２０３において、仮想ワイヤは、ｃｏｍｍモジュールインスタンスの出力を「クラウド論理」モジュールインスタンスの入力に接続し、回路図２０１内の「クラウド論理」モジュールインスタンスと「エッジ論理１」モジュールインスタンスシステムとの間の仮想ワイヤを置換する。図１９のアドレス指定方法を使用して、「クラウド論理」モジュールインスタンスの入力ピンは、「／サーバ／クラウド論理／入力」となる。
【０１１０】
第１のサブ回路図２０２において、ｃｏｍｍモジュールインスタンスの宛先アドレスは、「クラウド論理」モジュールインスタンスの入力ピンのアドレス「／サーバ／クラウド論理／入力」に設定される。第２のサブ回路図２０２において、ｃｏｍｍモジュールの受信アドレスもまた、「クラウド論理」モジュールインスタンスの入力ピンのアドレス「／サーバ／クラウド論理／入力」に設定される。このアドレス指定に基づいて、ｃｏｍｍモジュールは、異なるサブ回路図およびデバイスにおいて、データを「クラウド論理」モジュールインスタンスと「エッジ論理１」モジュールインスタンスとの間で通信し得る。本実施形態において、第１のサブ回路図２０２の宛先アドレスおよび第２のサブ回路図の受信アドレスは両方とも、受信モジュールインスタンス（「クラウド論理」）上の入力ピンのアドレスである。図１９に示されるように、このアドレスは、入力ピンのアドレスおよび受信モジュールインスタンスのデバイスプロパティに基づいて、容易に生成される。さらに、本アドレスを使用したアドレス指定方法は、システム回路図が、複雑な階層構造を伴う多数のモジュールインスタンスを含む場合でも、良好に機能する。
【０１１１】
本発明におけるアドレス指定方法の別の実施形態は、（ｉ）デバイスＩＤ、（ｉｉ）モジュールインスタンスＩＤ、および、（ｉｉ）コンポーネント名の組み合わせとして、回路図のコンポーネントをアドレス指定する。コンポーネントが、モジュールインスタンスである場合、コンポーネント名は、アドレスから省略されることができる。システム回路図において、デバイスＩＤは、「設計者」のシミュレーション仮想デバイスＩＤに設定される。サブ回路図において、デバイスＩＤは、サブ回路図に関連付けられる分散型異種コンピューティングおよび制御システムにおけるデバイスを識別する。コンポーネントが、モジュールインスタンスである場合、モジュールインスタンスＩＤは、そのモジュールインスタンスのためのものである。コンポーネントが、モジュールインスタンスではない場合、モジュールインスタンスＩＤは、コンポーネントに関連付けられるモジュールインスタンスのためのものである。モジュールインスタンスＩＤは、システム回路図内のモジュールインスタンスのための一意の識別子であって、典型的に、設計ソフトウェアによって自動生成され、ランダムストリングまたは数である。モジュールインスタンスＩＤは、モジュールインスタンス名がシステム回路図内で一意である必要がないという点で、モジュールインスタンス名と異なる。モジュールインスタンス名は、典型的に、ユーザによって定義され、人間によって可読である。
【０１１２】
本アドレス指定方法を図１９のシステム回路図に適用すると、「モジュール＿６」のピン「入力」のアドレスは、「／デバイス＿Ａ／２９ｆ．ａｂ２／入力」に設定され、「２９ｆ．ａｂ２」は、「モジュール＿６」の一意のモジュールインスタンスＩＤである。本アドレス指定方法の利点は、システム回路図が、多くの階層レベルを有するとき、アドレスがはるかに短くなり得ることである。本発明の別の実施形態において、設計ソフトウェアは、図１９のパスベースのアドレス指定方法およびこのモジュールインスタンスＩＤベースの方法の両方を使用し得る。アドレス指定方法のそのような適用は、モジュールインスタンスＩＤベースのアドレスがパスベースのアドレスと区別され得るように、モジュールインスタンスＩＤが、一意の規則的表現、例えば、３つの英数字の後にドットが続き、その後に３つのさらなる英数字を有するとき、可能性として考えられる。
【０１１３】
図２１は、本発明のある実施形態による、ｃｏｍｍモジュール２１０のコンポーネント２１１、２１２、２１３、２１４のブロック図である。コンポーネント２１１、２１２、２１３、２１４は、ｃｏｍｍモジュール２１０の機能回路図を形成する、モジュールインスタンスである。機能回路図は、ネットワークを経由して、異なるデバイス内で実行されるｃｏｍｍモジュール２１０の２つのインスタンス間の通信およびデータフローを可能にする。
【０１１４】
ｃｏｍｍモジュール２１０の機能回路図は、受信パスを有し、それは、ｃｏｍｍ受信モジュールインスタンス２１１および受信処理モジュールインスタンス２１２を含む。ｃｏｍｍ受信モジュールインスタンス２１１は、ネットワークを経由してｃｏｍｍモジュール２１０に結合されるモジュールインスタンスに伝送される、データを受信する。受信処理モジュールインスタンス２１２は、受信されたデータを後処理する（例えば、ｃｏｍｍモジュール２１０に結合されるモジュールインスタンスによる使用のためのデータを準備する）。ｃｏｍｍモジュール２１０の機能回路図はまた、伝送パスを有し、それは、ｃｏｍｍ伝送モジュールモジュールインスタンス２１４および伝送処理モジュールインスタンス２１３を含む。伝送処理モジュールインスタンス２１３は、ネットワークを経由した伝送のためにデータを前処理する（例えば、ネットワークを経由した通信のために、ｃｏｍｍモジュール２１０に結合されるモジュールインスタンスからのデータを準備する）。ｃｏｍｍ伝送モジュールモジュールインスタンス２１４は、ネットワークを経由して、結合されるモジュールインスタンスからのデータを伝送する。
【０１１５】
実施形態において、ｃｏｍｍモジュール２１０の複数の機能回路図は、ネットワークを経由してデータを通信するために、ＴＣＰ、ＨＴＴＰ、ＭＱＴＴ等の異なる通信プロトコルをサポートするために実装されることができる。実施形態において、ユーザは、ｃｏｍｍモジュールインスタンスプロパティテーブル内のｃｏｍｍモジュールインスタンスタイププロパティを使用して、ｃｏｍｍモジュール２１０のインスタンスのための通信プロトコルを設定することができる。実施形態において、設計ソフトウェアに関連付けられるグラフィカルユーザインターフェースを通して、ユーザは、所与のｃｏｍｍモジュールインスタンスのためのｃｏｍｍモジュールインスタンスタイプを変更させることができる。実施形態において、設計ソフトウェアに関連付けられるグラフィカルユーザインターフェースを通して、ユーザは、全てのｃｏｍｍモジュールインスタンスのためのモジュールインスタンスタイプを大域的に変更させることができる。そのような様式においてｃｏｍｍモジュールインスタンスタイプを変更させることは、ユーザが、通信プロトコルを容易に切り替えることを可能にする。
【０１１６】
図２２は、本発明のある実施形態による、パプリッシュ／サブスクライブプロトコルを使用してデータを通信する方法２２０を図示するフローチャートである。実施形態において、コンピュータノードは、コンピューティングデバイス上に、中央通信（ｃｏｍｍ）ブローカを構成し、それは、ソースｃｏｍｍモジュールインスタンスと宛先ｃｏｍｍモジュールインスタンスとの間の通信のために、パプリッシュ／サブスクライブプロトコルを利用する。ｃｏｍｍモジュールインスタンスは、パプリッシュ機能を通信の伝送側上で実施し、サブスクライブ機能を受信側上で実施する。方法２２０の実行に先立って、宛先ｃｏｍｍモジュールインスタンスは、中央ｃｏｍｍブローカに、宛先ｃｏｍｍモジュールインスタンスの少なくとも１つの受信アドレスを規定する、サブスクリプション要求を伝送することによって、中央ｃｏｍｍブローカとサブスクライブする。
【０１１７】
方法２２０の第１のプロセス１２１において、ソースｃｏｍｍモジュールインスタンスは、ネットワークを経由して、伝送のためのデータパケットをアセンブルする。データパケットは、データペイロードと、宛先アドレスと、随意に、ソースアドレスとを含む。実施形態において、ソースアドレスは、ソースｃｏｍｍモジュールインスタンスに結合される、モジュールインスタンスの出力ピンのアドレスである。第２のプロセス２２２において、ソースｃｏｍｍモジュールインスタンスは、データパケットを中央ｃｏｍｍブローカに送信する。データパケットにおける宛先アドレスが、宛先ｃｏｍｍモジュールインスタンスの受信アドレスに合致しているとき、第３のプロセス２２３において、中央ｃｏｍｍブローカは、処理するために、データパケットを宛先ｃｏｍｍモジュールインスタンスに転送する。
【０１１８】
図２２の「パプリッシュ／サブスクライブ」通信プロトコルは、図１８に説明される仮想ワイヤ置換方法の代替として使用され得る。実施形態において、図１９および２０に説明されるアドレス指定方法は、データパケットにおける宛先アドレスおよびソースアドレスおよび宛先ｃｏｍｍモジュールインスタンスの受信アドレスを構成するために使用され得る。
【０１１９】
図２３は、本発明のある実施形態による、モジュールインスタンス間の仮想ワイヤを置換する論理フロー２３０を図示するブロック図である。図２３の仮想ワイヤ置換方法は、図１８に説明される方法の代替である。図１８に示される方法１８０において、各サブ回路図において、設計ソフトウェアは、仮想ワイヤ毎に、一対のｃｏｍｍモジュールインスタンスを構成し、それは、システムアプリケーションへの多数のｃｏｍモジュールインスタンスの追加をもたらす。図２３に示される方法において、所与のサブ回路図のために、設計ソフトウェアは、複数のモジュールインスタンス間で共有される、ｃｏｍｍモジュールインスタンスを構成する。
【０１２０】
図２３は、３つのモジュールインスタンス、すなわち、モジュール＿１  ２３１、モジュール＿２  ２３２、およびモジュール＿３  ２３３、ｃｏｍｍモジュールインスタンス２３４、およびアドレス解析モジュールインスタンス２３５を有する、サブ回路図を示す。設計ソフトウェアは、モジュールインスタンス（モジュール＿１  ２３１、モジュール＿２  ２３２、およびモジュール＿３  ２３３）を構成し、ｃｏｍｍモジュールインスタンス２３４の伝送パスを共有する。具体的に、モジュールインスタンス（モジュール＿１  ２３１、モジュール＿２  ２３２、およびモジュール＿３  ２３３）が、仮想ワイヤ接続を経由して、データを伝送する必要があるとき、モジュールインスタンスは、その宛先アドレスおよびデータペイロードを同一ｃｏｍｍモジュールインスタンス２３４に伝送する。ｃｏｍｍモジュールインスタンス２３４は、次いで、宛先アドレスおよびデータペイロードを含む、データパケットを形成し、ネットワークを経由して、データパケットを伝送する。
【０１２１】
設計ソフトウェアは、ｃｏｍｍモジュールインスタンス２３４の受信パスを構成し、モジュールインスタンス（モジュール＿１  ２３１、モジュール＿２  ２３２、およびモジュール＿３  ２３３）を宛先とする、全てのデータパケットを受信する。具体的に、設計ソフトウェアは、ｃｏｍｍモジュールインスタンス２３４の受信アドレスを構成し、モジュールインスタンス（モジュール＿１  ２３１、モジュール＿２  ２３２、およびモジュール＿３  ２３３）の入力ピンを宛先とするものを含む、サブ回路図を実行するデバイス内の任意のサブ回路図コンポーネントを宛先とする、全てのデータパケットを受信する。例えば、サブ回路図を実行するデバイスが、「デバイス＿Ａ」である場合、設計ソフトウェアは、ｃｏｍｍモジュールインスタンス２３４が、アドレス「／デバイス＿Ａ／モジュール＿１／入１」、「／デバイス＿Ａ／モジュール＿２／入２」、「／デバイス＿Ａ／モジュール＿３／入３」等の「デバイス＿Ａ」内のサブ回路図のコンポーネントに合致する宛先アドレスを用いて、任意のデータパケットを受信するように、ｃｏｍｍモジュールインスタンス２３４の受信アドレスを「／デバイス＿Ａ／＊」に設定する。
【０１２２】
ｃｏｍｍモジュールインスタンス２３４は、次いで、データパケットをアドレス解析モジュール２３５に転送する。アドレス解析モジュール２３５は、データパケットの完全宛先アドレスを検査し、サブ回路図内のデータパケットの意図される宛先を決定し、データパケットをその意図される宛先に転送する。例えば、パケットの宛先アドレスが、「／デバイス＿Ａ／モジュール＿２／入２」であるとき、アドレス解析モジュール２３５は、データパケットをモジュール＿２の入力ピン（「入２」）に転送する。
【０１２３】
図２４は、本発明のある実施形態による、デバイス内で実行するためのサブ回路図を更新する方法２４０を図示するフローチャートである。方法２４０の実行に先立って、分散型異種システム内のデバイスの組の各デバイスは、制御プログラムおよびｉｎｉｔ回路図を事前にロードされる。ｉｎｉｔ回路図は、ｓｙｓモジュールインスタンスに結合される、ｃｏｍｍモジュールインスタンスを有し、これはさらに、更新モジュールインスタンスに結合される。更新モジュールインスタンスは、デバイス上で実行されるサブ回路図の更新を実施するように構成される。各デバイスにおいて、デバイスの電源が、オンになると、制御プログラムは、デバイス上に事前にロードされたｉｎｉｔ回路図を実行する。
【０１２４】
設計ソフトウェアが、システム回路図をサブ回路図に解析すると、設計ソフトウェアは、実行のために、サブ回路図をその対応するデバイスに送信する。サブ回路図毎に、方法２４０の第１のプロセス２４１において、設計ソフトウェアを実行するコンピュータノードは、データパケットを対応するデバイスに送信する。データパケットは、サブ回路図と、対応するデバイス上で実行される更新モジュールインスタンスに設定される宛先アドレスとを含むデータペイロードを有する。例えば、サブ回路図が、「デバイス＿ｉｄ」に設定されたデバイスＩＤを伴う対応するデバイス上での実行のためのものである場合、宛先アドレスは、「／デバイス＿ｉｄ／ｓｙｓ／更新」に設定される。ある実施形態において、サブ回路図を表す回路図のテキスト表現であるネットリストが、データパケット内のデータペイロードとして使用される。第２のプロセス２４２において、各デバイスは、デバイスに合致するデバイス＿ｉｄを含む宛先アドレスを含む、それぞれのデータパケットを受信する。宛先アドレスに基づいて、デバイスは、受信されたデータパケットをｉｎｉｔ回路図のｓｙｓモジュールインスタンスに結合される更新モジュールインスタンスに転送する。更新モジュールインスタンスは、データパケットのデータペイロードとして含まれるサブ回路図をロードし、制御プログラムにロードされたサブ回路図を実行させることによって、更新をデバイスに実施する。
【０１２５】
変更が、システム回路図に行われる場合、設計ソフトウェアが、変更されたシステム回路図をサブ回路図に解析すると、方法２４０（プロセス２４１および２４２）は、繰り返され、対応するデバイスを変更されたシステム回路図で更新する。実施形態において、ロードされたサブ回路図はまた、ｓｙｓモジュールインスタンスに結合されるｃｏｍｍモジュールインスタンスを有し得、これはさらに、更新モジュールインスタンスに結合される。これらの実施形態のうちのいくつかにおいて、方法２４０を繰り返す際、デバイスは、受信されたデータパケットを、サブ回路図を実行するｓｙｓモジュールインスタンスに結合される、更新モジュールインスタンスに転送する。
【０１２６】
図２５は、本発明のある実施形態による、ｉｎｉｔ回路図２５０のブロック図である。ｉｎｉｔ回路図２５０は、分散型異種システムのデバイス内にロードされ、実行される。ある実施形態において、ｉｎｉｔ回路図は、デバイスの電源が、オンにされると、デバイスが、ｉｎｉｔ回路図を実行するように、各デバイスの中に事前にロードされる。そのような実行は、デバイスが、サブ回路図が、デバイス内にまだロードされず、実行されないときでも、設計ソフトウェアからサブ回路図更新を受信することを可能にする。
【０１２７】
図２５に示されるように、ｉｎｉｔ回路図２５０は、ｓｙｓモジュールインスタンス２５１と結合される、ｃｏｍｍモジュールインスタンス２５２を含む。デバイスＩＤ「デバイス＿ｉｄ」を伴う所与のデバイス上で実行される、結合されるｓｙｓモジュールインスタンス２１５（ｃｏｍｍモジュールインスタンス２５２と結合される）の受信アドレスは、「／デバイス＿ｉｄ／ｓｙｓ／＊」に設定される。ｉｎｉｔ回路図２５０において、本受信アドレスを宛先とするサブ回路図更新が、ｓｙｓモジュールインスタンス２５１によって受信され、それは、サブ回路図更新を実施し、更新内に含まれるサブ回路図をロードし、実行する。
【０１２８】
図２６は、本発明のある実施形態による、インスタンス化されたｓｙｓモジュール２６０を図示するブロック図である。ある実施形態において、インスタンス化されたｓｙｓモジュール２６０は、図２５のｓｙｓモジュールインスタンス２５１である。図２６のインスタンス化されたｓｙｓモジュール２６０（ｓｙｓモジュールインスタンスとも呼ばれる）は、前処理モジュールインスタンス２６１を含む。データパケットは、データパケットの宛先アドレスがアドレス「／デバイス＿ｉｄ／ｓｙｓ／＊」に合致するとき、ｓｙｓモジュールインスタンス２６０によって受信され、デバイス＿ｉｄは、ｓｙｓモジュールインスタンス２６０を実行するデバイスの識別子である。前処理モジュールインスタンス２６０は、受信されたデータをｓｙｓモジュールインスタンス２６０内に含まれる処理モジュールインスタンス（例えば、更新モジュールインスタンス２６２、ｃｍｄモジュールインスタンス、２６３等）にルーティングする。処理モジュールインスタンス２６２、２６３等の各々は、受信アドレスを有し、データパケットの具体的処理を実施するように構成される。例えば、更新モジュールインスタンス２６２の受信アドレスは、「／デバイス＿ｉｄ／ｓｙｓ／更新」であって、サブ回路図更新を実施するように構成される。別の例に関して、ｃｍｄモジュールインスタンス２６３の受信アドレスは、「／デバイス＿ｉｄ／ｓｙｓ／ｃｍｄ」であって、データパケットのデータペイロード内に含まれる１つ以上のシステムコマンドを実施するように構成される。
【０１２９】
前処理モジュールインスタンス２６１は、処理モジュールインスタンスに合致するデータパケットにおける宛先アドレスに基づいて、受信されたデータパケットを処理モジュールインスタンスにルーティングする。例えば、データパケットにおける宛先アドレスが、「／デバイス＿ｉｄ／ｓｙｓ／更新」に合致するとき、前処理モジュール２６１は、受信されたデータパケットを更新モジュールインスタンス２６２に転送し、それは、サブ回路図更新を実施する。本発明の一実施形態において、更新モジュールインスタンス２６２は、データパケットのデータペイロード内に含まれる、受信されたサブ回路図を、ファイルとして、デバイスのハードドライブ上に保存する。更新モジュールインスタンス２６２は、次いで、デバイス内で起動される制御プログラムに、サブ回路図を実行するように要求する（例えば、再ロード要求を介して）。別の例に関して、データパケットにおける宛先アドレスが、「／デバイス＿ｉｄ／ｓｙｓ／ｃｍｄ」に合致するとき、前処理モジュール２６１は、受信されたデータパケットをｃｍｄモジュールインスタンス２６３に転送し、それは、データパケット内に含まれる１つ以上のシステムコマンドを実行する。
【０１３０】
図２７は、本発明のある実施形態による、デバイス内で制御プログラムを実行する方法２７０を図示するフローチャートである。制御プログラムは、特定のタイプのデバイスにロードされ、そのデバイス内でサブ回路図を実行するデバイス依存ソフトウェアプログラムである。デバイスの電源が、オンにされると、方法２７０の第１のプロセス２７１において、制御プログラムは、デバイス上に事前にロードされたｉｎｉｔ回路図を開始および実行する。第２のプロセス２７２において、制御プログラムは、次いで、サブ回路図がデバイス上に存在するかどうかをチェックする。ある実施形態において、サブ回路図が、存在する場合、ファイルとして、デバイスのハードドライブ上に保存される。制御プログラムが、そのようなサブ回路図を特定する場合、第３のプロセス２７３において、制御プログラムは、サブ回路図を実行する。制御プログラムが、そのようなサブ回路図を特定しない場合、第４のプロセス２７４において、制御プログラムは、追加のアクションを行わない。制御プログラムは、次いで、実行を継続する。
【０１３１】
制御プログラムが、再ロードコマンドを受信すると、第５のプロセス２７５において、制御プログラムは、新しいサブ回路図を再ロードし、再ロードされたサブ回路図を実行する。制御プログラムは、典型的に、再ロードコマンドを更新モジュールインスタンス（例えば、図２６の更新モジュールインスタンス２６２）から受信するが、再ロードコマンドは、デバイスの内外の他のソースから受信され得る。制御プログラムが、サブ回路図を実行すると、また、任意のプリミティブモジュールインスタンスに関連付けられたデバイス依存ブロックをサブ回路図内にロードする。制御プログラムは、サブ回路図内の各プリミティブモジュールインスタンスに関連付けられるタイププロパティに基づいて、正しいデバイス依存ブロックを選択することが可能である。
【０１３２】
図２８は、本発明のある実施形態による、低能力デバイスのための実行可能コードを提供する方法２８０を図示するフローチャートである。分散型異種システム内に、回路図を実行するための制御プログラムを起動する能力（例えば、処理能力、メモリ能力等）を有していない、いくつかの低能力デバイスが存在する。そのような低能力デバイスの例は、オペレーティングシステムを伴わずに構成される低電力マイクロコントローラである。
【０１３３】
そのようなデバイスに関して、設計ソフトウェアは、図２８の方法２８０に示されるように、制御プログラムを伴わずにこれらのデバイス上で実行可能な形態に、サブ回路図をさらに処理する。方法２８０の第１のプロセス２８１において、設計ソフトウェアを実行するコンピュータノードは、そのようなデバイスのためのサブ回路図を生成する。第２のプロセス２８２において、コンピュータノードは、次いで、サブ回路図をコンパイラと適合性があるコードに処理する。ある実施形態において、サブ回路図は、設計ソフトウェアによって内部から処理され、別の実施形態において、サブ回路図は、外部コンバータソフトウェアを通して処理される。第３のプロセス２８３において、コンピュータノードは、外部コンパイラソフトウェアを起動し、コンパイラと適合性があるコードをデバイスコードの中にコンパイルし、それは、サブ回路図に対応する標的低能力デバイス内で実行されることができる。第４のプロセス２８４において、コンピュータノードは、デバイスコードを標的デバイスに送信し、それは、デバイスコードをロードおよび実行し得る、ブートローダとともに構成される。
【０１３４】
図２９は、本発明のある実施形態による、分散型異種システムのためのデータ可視化を提供するモジュールインスタンスを含む回路図のブロック図である。当業者によって公知のように、従来的設計ソフトウェアは、非分散型システムのためのデータ可視化能力を提供し得、データの可視化は、中央場所において実施されることができる。しかしながら、データ可視化は、分散型異種システムにおいて、それほど簡単ではない。分散型異種システムにおいて、可視化コンポーネントは、そのような中央場所がそのようなシステム内でデータを可視化するために存在しない、分散型デバイス内で実行されなければならない。本発明の設計ソフトウェアは、可視化のために、分散型デバイスからの全ての可視化コンポーネントを設計ソフトウェアの中に集中させる様式において、可視化機能性を提供する。
【０１３５】
本発明の設計ソフトウェアにおいて、ユーザは、設計ソフトウェアに関連付けられるグラフィカルユーザインターフェースを通して、可視化モジュールインスタンスを回路図内のモジュールインスタンスのピンおよび仮想ワイヤに追加するためのオプションを提供される。図２９は、システム回路図２９０を示し、それは、２つの可視化モジュールインスタンス、すなわち、プローブモジュールインスタンス２９１およびチャートモジュールインスタンス２９２の追加を伴う図１３のシステム回路図１３０である。プローブモジュールインスタンス２９１は、「クラウド論理」モジュールインスタンスおよび「エッジ論理１」モジュールインスタンスを接続する第１の仮想ワイヤに結合されて追加される。プローブモジュールインスタンス２９１は、第１の仮想ワイヤ上で通信されるデータを捕捉および印刷する。チャートモジュールインスタンス２９２は、「クラウド論理」モジュールインスタンスおよび「エッジ論理３」モジュールインスタンスを接続する第２の仮想ワイヤに結合されて追加される。チャートモジュールインスタンス２９２は、第２の仮想ワイヤ上で通信されるデータを捕捉およびプロットする。チャートモジュールインスタンス２９２は、設計ソフトウェアに関連付けられるグラフィカルユーザインターフェースからユーザ選択可能なあるフォーマットでデータをプロットし得る。モジュールインスタンス２９１および２９２がデータを受信した、仮想ワイヤは、実際に、分散型異種デバイス上の実行されるサブ回路図内に存在しないので、プローブおよびチャートモジュールインスタンス２９１、２９２は、従来的設計ソフトウェアにおけるものと同一様式で機能しない。そのような可視化モジュールインスタンスの構成および機能はさらに、図３０に説明される。
【０１３６】
図３０は、本発明のある実施形態による、データ可視化を実施するためのサブ回路図３００のブロック図である。実施形態において、本発明の設計ソフトウェアは、「設計者」に設定されたデバイス＿ｉｄを伴う仮想デバイスを作成する。ユーザが、回路図内において、プローブモジュールインスタンス３０１およびチャートモジュールインスタンス３０２を仮想ワイヤに接続することを選択すると、設計ソフトウェアは、これらのモジュールインスタンス２９１、２９２のためのデバイスプロパティを「設計者」のデバイス＿ｉｄに設定する。解析プロセス中、設計ソフトウェアは、設計者デバイスのために、図３０のサブ回路図３００を生成し、このデバイスプロパティに設定される全てのモジュールを、プローブモジュールインスタンス３０１およびチャートモジュールインスタンス３０２を含む、サブ回路図３００に解析する。解析プロセス中、設計ソフトウェアはまた、図１８に説明されるようなｃｏｍｍモジュールインスタンス３０３、３０４を追加し、それに対してプローブおよびプロットモジュールインスタンス３０１、３０２が接続される、仮想ワイヤを置換する。設計ソフトウェアは、プローブモジュールインスタンス３０１を追加されたｃｏｍｍモジュールインスタンス３０３に結合し、チャートモジュールインスタンスを追加されたｃｏｍｍモジュールインスタンス３０４に結合する。
【０１３７】
ある実施形態において、設計者デバイスのためのサブ回路図は、ユーザが設計ソフトウェアの内側のデータを可視化することを可能にするシミュレーションコンテキストにおいて、設計ソフトウェアによって実行される。本実施形態において、設計者デバイスは、デバイスが、設計ソフトウェアの内側で実行され、分散型異種システム内の実デバイスを表さないため、仮想デバイスと呼ばれる。しかしながら、仮想化能力を実行するためのデバイスのタイプに関する設計ソフトウェア内に、制限が存在しない。別の実施形態において、仮想デバイス識別子は、実デバイス識別子によって置換され得、サブ回路図３００は、その実デバイス内で実行されることができる。
【０１３８】
図３１は、本発明のある実施形態による、仮想デバイスを通したシミュレーションコンテキストにおける実行のために回路図を更新する方法３１０を図示するフローチャートである。実施形態において、挙動回路図と称される、特殊タイプの回路図もまた、存在する。挙動回路図は、典型的に、簡略化されたモデルまたは統計的モジュール等の機能回路図またはデバイス依存ブロックのモデルである。機能回路図と異なり、挙動回路図は、分散型異種システムの物理的デバイス上での実行のためではなく、シミュレーションコンテキストにおいて使用される。シミュレーションコンテキストは、典型的に、統計的変動、コーナーケース、および特殊入力条件等の分散型異種システムに関連付けられる問題点を理解するために、設計ソフトウェア内で実施される。
【０１３９】
方法３１０の第１のプロセス３１１において、設計ソフトウェアを実行するコンピュータノードは、システム回路図内の各モジュールインスタンスを特定する。第２のプロセス３１２において、コンピュータノードは、各特定されたモジュールインスタンスのデバイスプロパティを「設計者」の値に設定する。設計者デバイスは、シミュレーションコンテキストにおいて設計ソフトウェアの内側で実行される、仮想デバイスである。第３のプロセス３１３において、システム回路図内にインスタンスを伴うモジュール毎に、コンピュータノードは、モジュールが、「回路図２」と命名された挙動回路図に設定されるコンポーネントを含むかどうかを決定する。方法３１０において、「回路図２」は、挙動回路図のためのデフォルト名称であるが、他の方法において、挙動回路図のデフォルト名称は、限定ではないが、任意の他の名称であり得る。「回路図２」が、所与のモジュール内に含まれる場合、第４のプロセス３１４において、設計ソフトウェアは、システム回路図内の所与のモジュールのインスタンス毎のモジュールインスタンスタイプを「回路図２」に設定する。「回路図２」が、所与のモジュール内に含まれない場合、第５のプロセス３１５において、設計ソフトウェアは、システム回路図内のそのモジュールのインスタンスにアクションを行わない。
【０１４０】
設計ソフトウェアが、システム回路図を解析すると、仮想設計者デバイスに対応する１つのみのサブ回路図が、生成され、各モジュールインスタンスは、「回路図２」コンポーネントが利用可能である場合、「回路図２」に設定される。１つのサブ回路図が、設計ソフトウェアの内部で展開され、設計ソフトウェアが、本サブ回路図を実行すると、シミュレーションコンテキスト内で起動される。方法３１０は、種々の他の実施形態において実装され得る。ある実施形態において、挙動回路図は、設計ソフトウェアの内側のシミュレーションコンテキストにおける実行に制限される必要はない。本実施形態において、ユーザは、設計ソフトウェアに関連付けられるグラフィカルユーザインターフェースを通して、１つ以上のデバイスタイプを手動で選択し得、挙動回路図は、シミュレーションコンテキストにおいて、デバイス内において実行される、または選択された１つまたはそれを上回るデバイスタイプに対応する複数のデバイスを通して分散されることができる。別の実施形態において、ユーザは、「回路図２」以外の挙動回路図を選択することができ、それは、複数の挙動回路図を要求する、複数の挙動がシミュレートされる必要があるとき、有用である。
【０１４１】
本発明は、プロセッサ（例えば、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、または汎用コンピュータ）とともに使用するためのコンピュータプログラム論理、プログラム可能論理デバイス（例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）または他のＰＬＤ）とともに使用するためのプログラム可能論理、離散構成要素、集積回路（例えば、特定用途向け集積回路（ＡＳＩＣ））、またはそれらの任意の組み合わせを含む任意の他の手段を含むが、決してそれらに限定されない、多くの異なる形態で具現化され得る。
【０１４２】
本明細書で以前に説明されている機能性の全体または一部を実装するコンピュータプログラム論理は、ソースコード形態、コンピュータ実行可能形態、および種々の中間形態（例えば、アセンブラ、コンパイラ、ネットワーカ、またはロケータによって生成される形態）を含むが、決してそれらに限定されない、種々の形態で具現化され得る。ソースコードは、種々のオペレーティングシステムまたはオペレーティング環境とともに使用するための種々のプログラミング言語（例えば、オブジェクトコード、アセンブリ言語、またはＦｏｒｔｒａｎ、Ｃ、Ｃ＋＋、ＪＡＶＡ（登録商標）、あるいはＨＴＭＬ等の高レベル言語）のうちのいずれかで実装される、一連のコンピュータプログラム命令を含み得る。ソースコードは、種々のデータ構造および通信メッセージを定義し、使用し得る。ソースコードは、（例えば、インタープリタを介した）コンピュータ実行可能形態であり得、またはソースコードは、（例えば、翻訳装置、アセンブラ、またはコンパイラを介して）コンピュータ実行可能形態に変換され得る。
【０１４３】
コンピュータプログラムは、半導体メモリデバイス（例えば、ＲＡＭ、ＲＯＭ、ＰＲＯＭ、ＥＥＰＲＯＭ、またはフラッシュプログラマブルＲＡＭ）、磁気メモリデバイス（例えば、ディスケットまたは固定ディスク）、光学メモリデバイス（例えば、ＣＤ−ＲＯＭ）、ＰＣカード（例えば、ＰＣＭＣＩＡカード）、または他のメモリデバイス等の、有形記憶媒体の中で永久的または一時的に、任意の形態（例えば、ソースコード形態、コンピュータ実行可能形態、または中間形態）で固定され得る。コンピュータプログラムは、アナログ技術、デジタル技術、光学技術、無線技術、ネットワーキング技術、およびインターネットワーキング技術を含むが、決してそれらに限定されない、種々の通信技術のうちのいずれかを使用してコンピュータに伝送可能である信号の中で、任意の形態で固定され得る。コンピュータプログラムは、添付印刷または電子文書（例えば、収縮包装されたソフトウェアまたは磁気テープ）を伴う可撤性記憶媒体として任意の形態で配信され、（例えば、システムＲＯＭまたは固定ディスク上で）コンピュータシステムに事前搭載され、または通信システム（例えば、インターネットまたはワールドワイドウェブ）上でサーバまたは電子掲示板から配信され得る。
【０１４４】
本明細書で以前に説明されている機能性の全体または一部を実装するハードウェア論理（プログラム可能論理デバイスとともに使用するためのプログラム可能論理を含む）は、従来の手動方法を使用して設計され得、あるいは、コンピュータ支援設計（ＣＡＤ）、ハードウェア記述言語（例えば、ＶＨＤＬまたはＡＨＤＬ）、またはＰＬＤプログラミング言語（例えば、ＰＡＬＡＳＭ、ＡＢＥＬ、またはＣＵＰＬ）等の種々のツールを使用して、設計され、捕捉され、シミュレートされ、または電子的に文書化され得る。
【０１４５】
本発明は、具体的実施形態を参照して具体的に示され、説明されているが、添付請求項によって定義されるような本発明の精神および範囲から逸脱することなく、形態および詳細の種々の変更が行われてもよいことが、当業者によって理解されるであろう。これらの実施形態のいくつかは、請求項ではプロセスステップによって説明されているが、下記の請求項におけるプロセスステップを実行することが可能な関連ディスプレイを伴うコンピュータを備える装置も、本発明に含まれる。同様に、以下の請求項におけるプロセスステップを実行するためのコンピュータ実行可能命令を含み、コンピュータ可読媒体上に記憶される、コンピュータプログラム製品が、本発明内に含まれる。
【０１４６】
上記に説明される本発明の実施形態は、単に、例示的であることが意図される。多数の変形例および修正が、当業者に明白となるであろう。全てのそのような変形例および修正は、任意の添付の請求項に定義される本発明の範囲内であることが意図される。
【図１】
2021526688.tif 000003
【図２】
2021526688.tif 000004
【図３】
2021526688.tif 000005
【図４】
2021526688.tif 000006
【図５】
2021526688.tif 000007
【図６】
2021526688.tif 000008
【図７】
2021526688.tif 000009
【図８】
2021526688.tif 000010
【図９】
2021526688.tif 000011
【図１０】
2021526688.tif 000012
【図１１】
2021526688.tif 000013
【図１２】
2021526688.tif 000014
【図１３】
2021526688.tif 000015
【図１４】
2021526688.tif 000016
【図１５】
2021526688.tif 000017
【図１６】
2021526688.tif 000018
【図１７】
2021526688.tif 000019
【図１８】
2021526688.tif 000020
【図１９】
2021526688.tif 000021
【図２０】
2021526688.tif 000022
【図２１】
2021526688.tif 000023
【図２２】
2021526688.tif 000024
【図２３】
2021526688.tif 000025
【図２４】
2021526688.tif 000026
【図２５】
2021526688.tif 000027
【図２６】
2021526688.tif 000028
【図２７】
2021526688.tif 000029
【図２８】
2021526688.tif 000030
【図２９】
2021526688.tif 000031
【図３０】
2021526688.tif 000032
【図３１】
2021526688.tif 000033
【国際調査報告】
2021526688.tif 000034
2021526688.tif 000035
2021526688.tif 000036
2021526688.tif 000037