(57)【要約】  方法は、分散型制御システム（１００）においてレガシー・コントローラ（１０６、１１４、１２２、１３０、１３８）に関連する少なくとも１つのアプリケーション・ソース・コード・ファイル（３０２）を、コントローラ・シミュレーション・コンピューティング・デバイス（３２０、８００）によって実行可能な命令に変換するステップ（７０１）を含み、レガシー・コントローラが、レガシー・オペレーティング・システムに関連付けられ、コントローラ・シミュレーション・コンピューティング・デバイスが、レガシー・オペレーティング・システムとは異なる第２オペレーティング・システムと関連付けられる。また、この方法は、前述の命令、およびコントローラ・シミュレーション・コンピューティング・デバイスにおけるレガシー・オペレーティング・システムのエミュレーション（３２２）を使用して、レガシー・コントローラの動作をシミュレートするステップ（７０３）も含む。更に、この方法は、レガシー・コントローラの動作をシミュレートする間に、レガシー・コントローラに対するコンフィギュレーション・データを決定するステップ（７０５）も含む。加えて、この方法は、コンフィギュレーション・データをコンフィギュレーション・データ・ファイル（３２４）に保存するステップ（７０７）も含む。【選択図】図７
2019518289.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
分散型制御システム（１００）においてレガシー・コントローラ（１０６、１１４、１２２、１３０、１３８）に関連する少なくとも１つのアプリケーション・ソース・コード・ファイル（３０２）を、コントローラ・シミュレーション・コンピューティング・デバイス（３２０、８００）によって実行可能な命令に変換するステップ（７０１）であって、前記レガシー・コントローラがレガシー・オペレーティング・システムに関連付けられ、前記コントローラ・シミュレーション・コンピューティング・デバイスが、前記レガシー・オペレーティング・システムとは異なる第２オペレーティング・システムと関連付けられる、ステップ（７０１）と、
前記命令、および前記コントローラ・シミュレーション・コンピューティング・デバイスにおける前記レガシー・オペレーティング・システムのエミュレーション（３２２）を使用して、前記レガシー・コントローラの動作をシミュレートするステップ（７０３）と、
前記レガシー・コントローラの動作をシミュレートする間に、前記レガシー・コントローラに対するコンフィギュレーション・データを決定するステップ（７０５）と、
前記コンフィギュレーション・データをコンフィギュレーション・データ・ファイル（３２４）に保存するステップ（７０７）と、
を含む、方法。
【請求項２】
請求項１記載の方法において、前記少なくとも１つのアプリケーション・ソース・コード・ファイルを変換するステップが、
前記少なくとも１つのアプリケーション・ソース・コード・ファイルを、前記レガシー・オペレーティング・システムと互換性のある第１アセンブリ言語命令にコンパイルするステップ（３０４）と、
前記第１アセンブリ言語命令を、前記第２オペレーティング・システムと互換性のある第２アセンブリ言語命令に変換するステップ（３０６）と、
前記第２アセンブリ言語命令を、前記第２オペレーティング・システムと互換性のあるオブジェクト・コード命令（３１０）にアセンブルするステップ（３０８）と、
を含む、方法。
【請求項３】
請求項２記載の方法において、前記少なくとも１つのアプリケーション・ソース・コード・ファイルを変換するステップが、更に、
前記少なくとも１つのアプリケーション・ソース・コード・ファイルにおいて１つ以上のビッグエンディアン定数に対してエンディアン補正を行うステップを含む、方法。
【請求項４】
請求項１記載の方法において、前記命令および前記レガシー・オペレーティング・システムのエミュレーションが、前記コントローラ・シミュレーション・コンピューティング・デバイスにおいて異なるスレッドとして実行される、方法。
【請求項５】
請求項１記載の方法において、前記レガシー・オペレーティング・システムが、前記コントローラ・シミュレーション・コンピューティング・デバイスにおいて前記第２オペレーティング・システムの上にある(above)抽象化レイヤにおいてエミュレートされる、方法。
【請求項６】
請求項１記載の方法において、前記レガシー・コントローラの動作をシミュレートするステップが、更に、前記レガシー・オペレーティング・システムと互換性のある１つ以上のスレッド・スケジューリング機能を設けるカスタム・スケジューラを使用するステップを含む、方法。
【請求項７】
装置（３２０、８００）であって、
データを格納するように構成された少なくとも１つのメモリ（８１２）と、
少なくとも１つの処理デバイス（８０４）と、
を含み、前記 少なくとも１つの処理デバイス（８０４）が、
分散型制御システム（１００）においてレガシー・コントローラ（１０６、１１４、１２２、１３０、１３８）に関連する少なくとも１つのアプリケーション・ソース・コード・ファイル（３０２）を、前記装置によって実行可能な命令に変換し、前記レガシー・コントローラがレガシー・オペレーティング・システムと関連付けられ、前記装置が、前記レガシー・オペレーティング・システムとは異なる第２オペレーティング・システムと関連付けられ、
前記命令、および前記レガシー・オペレーティング・システムにおけるエミュレーション（３２２）を使用して、前記レガシー・コントローラの動作をシミュレートし、
前記レガシー・コントローラの動作をシミュレートする間に、前記レガシー・コントローラに対するコンフィギュレーション・データを決定し、
前記コンフィギュレーション・データを、前記少なくとも１つのメモリに格納されたコンフィギュレーション・データ・ファイル（３２４）に保存するように構成される、装置（３２０、８００）。
【請求項８】
請求項７記載の装置において、前記少なくとも１つの処理デバイスが、
前記少なくとも１つのアプリケーション・ソース・コード・ファイルを、前記レガシー・オペレーティング・システムと互換性のある第１アセンブリ言語命令にコンパイルし、
前記第１アセンブリ言語命令を、前記第２オペレーティング・システムと互換性のある第２アセンブリ言語命令に変換し、
前記第２アセンブリ言語命令を、前記第２オペレーティング・システムと互換性のあるオブジェクト・コード命令（３１０）にアセンブルする、
ことによって、前記少なくとも１つのアプリケーション・ソース・コード・ファイルを変換するように構成される、装置。
【請求項９】
請求項８記載の装置において、前記少なくとも１つの処理デバイスが、更に、
前記少なくとも１つのアプリケーション・ソース・コード・ファイルにおいて１つ以上のビッグエンディアン定数に対してエンディアン補正を行うことによって、
前記少なくとも１つのアプリケーション・ソース・コード・ファイルを変換するように構成される、装置。
【請求項１０】
命令を含む非一時的コンピュータ読み取り可能媒体であって、前記命令が少なくとも１つの処理デバイス（３２０、８０４）によって実行されると、前記少なくとも１つの処理デバイスに、
分散型制御システム（１００）においてレガシー・コントローラ（１０６、１１４、１２２、１３０、１３８）に関連する少なくとも１つのアプリケーション・ソース・コード・ファイル（３０２）を、前記少なくとも１つの処理デバイスによって実行可能なコントローラ命令に変換させ、前記レガシー・コントローラが、レガシー・オペレーティング・システムと関連付けられ、前記少なくとも１つの処理デバイスが、前記レガシー・オペレーティング・システムとは異なる第２オペレーティング・システムと関連付けられ、
前記コントローラ命令、および前記少なくとも１つの処理デバイスにおけるレガシー・オペレーティング・システムのエミュレーション（３２２）を使用して、前記レガシー・コントローラの動作をシミュレートさせ、
前記レガシー・コントローラの動作をシミュレートする間に、前記レガシー・コントローラに対するコンフィギュレーション・データを決定させ、
前記コンフィギュレーション・データをコンフィギュレーション・データ・ファイル（３２４）に保存させる、
非一時的コンピュータ読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]  本開示は、一般的には、分散型制御システムに関する。更に特定すると、本開示は、分散型制御システムにおけるレガシー・レベル１コントローラの仮想化システムおよび方法に関する。
【背景技術】
【０００２】
[0002]  工業プロセス制御および自動化システムは、化学工業におけるような、大規模で複雑な工業プロセスを自動化するために使用されることが多い。これらの種類のシステムは、決まって、センサ、アクチュエータ、およびコントローラを含む。コントローラは、通例、センサから測定値を受信し、アクチュエータのために制御信号を生成する。
【０００３】
[0003]  分散型制御システム（ＤＣＳ）は、工業プロセス制御および自動化システムと併せて、またはその一部として実装されることが多い。ＤＳＣは、多くの場合、工業プロセスにおいて１つ以上のモデル予測コントローラ（ＭＰＣ、多変数予測コントローラ、または単に、多変数コントローラとしても知られている）を使用して、経済的に利益がある範囲で動作するように複雑なシステムを管理する。このようなＭＰＣおよびＤＣＳにおけるその他のコントローラは、これらのコントローラがランタイムＤＣＳ環境に実装される前に、設定する(configure)ことが必要となる場合もある。
【発明の概要】
【０００４】
[0004]  本開示は、分散型制御システムにおけるレガシー・レベル１コントローラの仮想化システムおよび方法を提供する。
[0005]  第１実施形態において、方法は、分散型制御システムにおけるレガシー・コントローラに関連する少なくとも１つのアプリケーション・ソース・コード・ファイルを、コントローラ・シミュレーション・コンピューティング・デバイスによって実行可能な命令に変換するステップを含み、レガシー・コントローラは、レガシー・オペレーティング・システムと関連付けられ、コントローラ・シミュレーション・コンピューティング・デバイスは、レガシー・オペレーティング・システムとは異なる第２オペレーティング・システムと関連付けられる。また、この方法は、これらの命令、およびコントローラ・シミュレーション・コンピューティング・デバイスにおけるレガシー・オペレーティング・システムのエミュレーションを使用して、レガシー・コントローラの動作をシミュレートするステップを含む。更に、この方法は、レガシー・コントローラのシミュレーション動作中に、レガシー・コントローラに対してコンフィギュレーション・データを決定するステップを含む。加えて、この方法は、コンフィギュレーション・データをコンフィギュレーション・データ・ファイルに格納するステップを含む。
【０００５】
[0006]  第２実施形態において、装置は、少なくとも１つのメモリと少なくとも１つのプロセッサとを含む。少なくとも１つのメモリは、データを格納するように構成される。少なくとも１つの処理デバイスは、分散型制御システムにおけるレガシー・コントローラに関連する少なくとも１つのアプリケーション・ソース・コード・ファイルを、この装置によって実行可能な命令に変換するように構成され、レガシー・コントローラはレガシー・オペレーティング・システムと関連付けられ、この装置は、レガシー・オペレーティング・システムとは異なる第２オペレーティング・システムと関連付けられる。また、少なくとも１つの処理デバイスは、前述の命令およびレガシー・オペレーティング・システムのエミュレーションを使用して、レガシー・コントローラの動作をシミュレートするように構成される。更に、少なくとも１つの処理デバイスは、レガシー・コントローラのシミュレーション動作中に、レガシー・コントローラに対してコンフィギュレーション・データを決定するように構成される。加えて、少なくとも１つの処理デバイスは、コンフィギュレーション・データを、少なくとも１つのメモリに格納されたコンフィギュレーション・データ・ファイルに保存するように構成される。
【０００６】
[0007]  第３実施形態において、非一時的コンピュータ読み取り可能媒体は、命令を収容し、少なくとも１つの処理デバイスによってこの命令が実行されると、少なくとも１つの処理デバイスに、分散型制御システムにおけるレガシー・コントローラに関連する少なくとも１つのアプリケーション・ソース・コード・ファイルを、少なくとも１つの処理デバイスによって実行可能なコントローラ命令に変換させる。レガシー・コントローラは、レガシー・オペレーティング・システムと関連付けられ、少なくとも１つの処理デバイスは、レガシー・オペレーティング・システムとは異なる第２オペレーティング・システムと関連付けられる。また、この媒体は、命令を収容し、少なくとも１つの処理デバイスによってこの命令が実行されると、少なくとも１つの処理デバイスに、コントローラ命令、および少なくとも１つの処理デバイスにおけるレガシー・オペレーティング・システムのエミュレーションを使用して、レガシー・コントローラの動作をシミュレートさせる。更に、この媒体は、命令を収容し、少なくとも１つの処理デバイスによってこの命令が実行されると、少なくとも１つの処理デバイスに、レガシー・コントローラのシミュレーション動作中に、レガシー・コントローラに対してコンフィギュレーション・データを決定させる。加えて、この媒体は、命令を収容し、少なくとも１つの処理デバイスによってこの命令が実行されると、少なくとも１つの処理デバイスに、コンフィギュレーション・データを、コンフィギュレーション・データ・ファイルに保存させる。
【０００７】
[0008]  以下の図、説明、および特許請求の範囲から、当業者には他の技術的特徴も容易に明白になるであろう。
【図面の簡単な説明】
【０００８】
[0009]  本開示を一層深く理解するために、これより以下の説明を添付図面と合わせて参照する。
【図１】図１は、本開示による工業プロセス制御および自動化システムの一例を示す。
【図２】図２は、本開示にしたがって、分散型制御システムにおいてレガシー・レベル１コントローラを仮想化するためのフレームワークを示す。
【図３】図３は、本開示にしたがって、分散型制御システムにおいてレガシー・レベル１コントローラを仮想化するためのシステム例を示す。
【図４】図４は、本開示によるレガシー・レベル１コントローラ仮想化システムの異なるコンポーネントを示す。
【図５】図５は、本開示によるレガシー・レベル１コントローラ仮想化システムの異なるコンポーネントを実行する操作員端末からの画面例を示す。
【図６】図６は、本開示によるレガシー・レベル１コントローラ仮想化システムの異なるコンポーネントを実行する操作員端末からの画面例を示す。
【図７】図７は、本開示にしたがって、分散型制御システムにおいてレガシー・レベル１コントローラを仮想化する方法例を示す。
【図８】図８は、本開示にしたがって、分散型制御システムにおいてレガシー・レベル１コントローラの仮想化を実行するデバイス例を示す。
【発明を実施するための形態】
【０００９】
[0017]  以下で論ずる図１から図８、ならびに本特許文書において本発明の原理を説明するために使用する種々の実施形態は、例示に過ぎず、本発明の範囲を限定するように解釈しては決してならない。尚、本発明の原理は、適切に構成されたデバイスまたはシステムであれば、いずれの形式でも実施できることは、当業者には理解されよう。
【００１０】
[0018]  図１は、本開示による工業プロセス制御および自動化システム１００の一例を示す。図１に示すように、システム１００は、少なくとも１つの生産物またはその他の材料の生産あるいは処理を容易にする種々のコンポーネントを含む。例えば、ここでは、システム１００は、１つまたは複数のプラント１０１ａ〜１０１ｎにおいてコンポーネントに対する制御を容易にするために使用される。各プラント１０１ａ〜１０１ｎは、少なくとも１つの生産物またはその他の材料を生産するための１つ以上の製造設備というような、１つ以上の処理設備（または１つ以上のその部分）を表す。一般に、各プラント１０１ａ〜１０１ｎが１つ以上のプロセスを実装するのでもよく、個々にまたは纏めてプロセス・システムと呼ぶことができる。プロセス・システムは、全体的に、１つ以上の生産物またはその他の材料を何らかの方法で処理するように構成された任意のシステムまたはその部分を表す。
【００１１】
[0019]  図１において、システム１００は、プロセス制御のＰｕｒｄｕｅモデルを使用して実装される。Ｐｕｒｄｕｅモデルでは、「レベル０」は１つ以上のセンサ１０２ａおよび１つ以上のアクチュエータ１０２ｂを含むことができる。センサ１０２ａおよびアクチュエータ１０２ｂは、プロセス・システムにおいて、多種多様の機能の内任意のものを実行することができるコンポーネントを表す。例えば、センサ１０２ａは、温度、圧力、または流量のような、プロセス・システムにおいて多種多様の特性を測定することができる。また、アクチュエータ１０２ｂは、プロセス・システムにおける多種多様の特性を変更することもできる。センサ１０２ａおよびアクチュエータ１０２ｂは、任意の適したプロセス・システムにおいて任意の他のまたは追加のコンポーネントを表すこともできる。センサ１０２ａの各々は、プロセス・システムにおける１つ以上の特性を測定するのに適した任意の構造を含む。アクチュエータ１０２ｂの各々は、プロセス・システムにおいて１つ以上の状態に動作する(operating)または作用する(affecting)のに適した任意の構造を含む。
【００１２】
[0020]  少なくとも１つのネットワーク１０４が、センサ１０２ａおよびアクチュエータ１０２ｂに結合されている。ネットワーク１０４は、センサ１０２ａおよびアクチュエータ１０２ｂとの相互作用を容易にする。例えば、ネットワーク１０４はセンサ１０２ａからの測定データを移送し、制御信号をアクチュエータ１０２ｂに供給することができる。ネットワーク１０４は、任意の適したネットワークまたはネットワークの複合体(combination)を表すことができる。特定例として、ネットワーク１０４は、イーサネット・ネットワーク、電気信号ネットワーク（ＨＡＲＴまたはＦＯＵＮＤＡＴＩＯＮ  ＦＩＥＬＤＢＵＳネットワーク等）、空気制御信号ネットワーク、あるいは任意のそのほかのまたは追加の形式のネットワーク（１つまたは複数）を表すことができる。
【００１３】
[0021]  Ｐｕｒｄｕｅモデルにおいて、「レベル１」は、ネットワーク１０４に結合された１つ以上のコントローラ１０６を含むことができる。とりわけ、各コントローラ１０６は、１つ以上のセンサ１０２ａからの測定値を使用して、１つ以上のアクチュエータ１０２ｂの動作を制御することができる。例えば、コントローラ１０６は、１つ以上のセンサ１０２ａから測定データを受信し、この測定データを使用して１つ以上のアクチュエータ１０２ｂに制御信号を生成することができる。また、１つのコントローラ１０６が主コントローラとして動作し、一方他のコントローラ１０６がバックアップ・コントローラ（主コントローラと同期し、主コントローラの障害時に、主コントローラの機能を引き継ぐことができる）として動作するときのように、複数のコントローラ１０６が冗長構成で動作することもできる。各コントローラ１０６は、１つ以上のセンサ１０２ａと相互作用し、１つ以上のアクチュエータ１０２ｂを制御するのに適した任意の構造を含む。各コントローラ１０６は、例えば、ロバスト多変数予測制御技術（ＲＭＰＣＴ：Robust Multi variable Predictive Control Technology）コントローラ、あるいはモデル予測制御（ＭＰＣ)または他の高度予測制御（ＡＰＣ）を実現する他の種類のコントローラのような、多変数コントローラを表すことができる。特定例として、各コントローラ１０６は、リアル・タイム・オペレーティング・システムを実行するコンピューティング・デバイスを表すことができる。
【００１４】
[0022]  ネットワーク１０８はコントローラ１０６に結合されている。ネットワーク１０８は、データをコントローラ１０６に移送する、そしてデータをコントローラ１０６から移送することによってというようにして、コントローラ１０６との相互作用を容易にする。ネットワーク１０８は、任意の適したネットワークまたはネットワークの複合体を表すことができる。特定例として、ネットワーク１０８は、ＨＯＮＥＹＷＥＬＬ  ＩＮＴＥＲＮＡＴＩＯＮＡＬ  ＩＮＣ（ハネウェル・インターナショナル社）からのフォールト・トレラント・イーサネット（ＦＴＥ）ネットワークのような、１対のイーサネット・ネットワークまたは冗長対のイーサネット・ネットワークを表すことができる。
【００１５】
[0023]  少なくとも１つのスイッチ／ファイアウォール１１０が、ネットワーク１０８を２つのネットワーク１１２に結合する。スイッチ／ファイアウォール１１０は、１つのネットワークから他方にトラフィックを移送することができる。また、スイッチ／ファイアウォール１１０は、１つのネットワーク上において、トラフィックが他のネットワークに到達するのを阻止することもできる。スイッチ／ファイアウォール１１０は、 ＨＯＮＥＹＷＥＬＬ  ＣＯＮＴＲＯＬ  ＦＩＲＥＷＡＬＬ（ＣＦ９）デバイスのような、ネットワーク間において通信を行うのに適した任意の構造を含む。ネットワーク１１２は、１対のイーサネット・ネットワークまたはＦＴＥネットワークのような、任意の適したネットワークを表すことができる。
【００１６】
[0024]  Ｐｕｒｄｕｅモデルにおいて、「レベル２」は、ネットワーク１１２に結合された１つ以上の機械レベル・コントローラ１１４を含むことができる。機械レベル・コントローラ１１４は、特定の工業用機器（ボイラまたはその他の機械等）の１つ１つと関連付けることができるコントローラ１０６、センサ１０２ａ、およびアクチュエータ１０２ｂの動作および制御をサポートするために種々の監理機能(supervisory functions)を実行する。例えば、機械レベル・コントローラ１１４は、センサ１０２ａからの測定データ、またはアクチュエータ１０２ｂのための制御信号のような、コントローラ１０６によって収集または生成された情報を記録する(log)ことができる。また、機械レベル・コントローラ１１４は、コントローラ１０６の動作を制御するアプリケーションを実行することもでき、これによってアクチュエータ１０２ｂの動作を制御する。加えて、機械レベル・コントローラ１１４はコントローラ１０６への安全なアクセスを付与することができる。機械レベル・コントローラ１１４の各々は、機械またはその他の個々の機器へのアクセスを付与する、これらの制御を行う、あるいはこれらに関係する動作の制御を行うのに適した任意の構造を含む。例えば、機械レベル・コントローラ１１４の各々は、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳオペレーティング・システムを実行するサーバ・コンピューティング・デバイスを表すことができる。加えてまたは代わりに、各コントローラ１１４は、ＲＭＰＣＴコントローラ、あるいはＭＰＣまたは他のＡＰＣを実装する他の種類のコントローラのような、分散型制御システム（ＤＣＳ）に埋め込まれた多変数コントローラを表すこともできる。図示しないが、プロセス・システムにおいて異なる機器を制御するために、異なる機械レベル・コントローラ１１４を使用することができる（この場合、各機器は１つ以上のコントローラ１０６、センサ１０２ａ、およびアクチュエータ１０２ｂと関連付けられる）。
【００１７】
[0025]  １つ以上の操作員端末１１６がネットワーク１１２に結合されている。操作員端末１１６は、機械レベル・コントローラ１１４へのユーザ・アクセスを付与するコンピューティング・デバイスまたは通信デバイスを表し、次いで、機械レベル・コントローラ１１４は、コントローラ１０６（更に、恐らくは、センサ１０２ａおよびアクチュエータ１０２ｂ）へのユーザ・アクセスを付与することができる。特定例として、操作員端末１１６は、コントローラ１０６および／または機械レベル・コントローラ１１４によって収集された情報を使用して、センサ１０２ａおよびアクチュエータ１０２ｂの動作履歴をユーザに検査させる(review)ことができる。また、操作員端末１１６は、センサ１０２ａ、アクチュエータ１０２ｂ、コントローラ１０６、または機械レベル・コントローラ１１４の動作をユーザに調節させることもできる。加えて、操作員端末１１６は、コントローラ１０６または機械レベル・コントローラ１１４によって生成される警告(warning)、警報(alert)、あるいはその他のメッセージまたは表示を受信し表示することができる。操作員端末１１６の各々は、システム１００における１つ以上のコンポーネントのユーザ・アクセスおよび制御をサポートするのに適した任意の構造を含む。操作員端末１１６の各々は、例えば、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳオペレーティング・システムを実行するコンピューティング・デバイスを表すことができる。
【００１８】
[0026]  少なくとも１つのルータ／ファイアウォール１１８が、ネットワーク１１２を２つのネットワーク１２０に結合する。ルータ／ファイアウォール１１８は、セキュア・ルータまたは複合ルータ／ファイアウォールのような、ネットワーク間で通信を行うのに適した任意の構造を含む。ネットワーク１２０は、１対のイーサネット・ネットワークまたはＦＴＥネットワークのような、任意の適したネットワークを表すことができる。
【００１９】
[0027]  Ｐｕｒｄｕｅモデルでは、「レベル３」は、ネットワーク１２０に結合された１つ以上のユニット−レベル・コントローラ(unit-level controller)１２２を含むことができる。各ユニット−レベル・コントローラ１２２は、通例、プロセス・システムにおける１つのユニットと関連付けられ、プロセスの少なくとも一部を実現するために協働する異なる機械の集合体を表す。ユニット−レベル・コントローラ１２２は、それよりも低いレベルにあるコンポーネントの動作および制御をサポートするために、種々の機能を実行する。例えば、ユニット−レベル・コントローラ１２２は、それよりも低いレベルにあるコンポーネントによって収集または生成された情報を記録し、それよりも低いレベルにあるコンポーネントを制御するアプリケーションを実行し、それよりも低いレベルにあるコンポーネントに安全なアクセスを付与することができる。ユニット−レベル・コントローラ１２２の各々は、プロセス・ユニットにおける１つ以上の機械または他の機器にアクセスを付与する、これらの制御を行う、あるいはこれらに関係する動作を行うのに適した任意の構造を含む。ユニット−レベル・コントローラ１２２の各々は、例えば、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳオペレーティング・システムを実行するサーバ・コンピューティング・デバイスを表すことができる。加えてまたは代わりに、各コントローラ１２２は、ＨＯＮＥＹＷＥＬＬ  Ｃ３００コントローラのような、多変数コントローラを表すことができる。図示しないが、プロセス・システムにおける異なるユニットを制御するために、異なるユニット−レベル・コントローラ１２２を使用することができる（各ユニットは、１つ以上の機械−レベル・コントローラ１１４、コントローラ１０６、センサ１０２ａ、およびアクチュエータ１０２ｂと関連付けられる）。
【００２０】
[0028]  ユニット−レベル・コントローラ１２２へのアクセスは、１つ以上の操作員端末１２４によって付与することができる。操作員端末１２４の各々は、システム１００における１つ以上のコンポーネントのユーザ・アクセスおよび制御をサポートするのに適した任意の構造を含む。操作員端末１２４の各々は、例えば、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳオペレーティング・システムを実行するコンピューティング・デバイスを表すことができる。
【００２１】
[0029]  少なくとも１つのルータ／ファイアウォール１２６が、ネットワーク１２０を２つのネットワーク１２８に結合する。ルータ／ファイアウォール１２６は、セキュア・ルータまたは複合ルータ／ファイアウォールのような、ネットワーク間において通信を行うのに適した任意の構造を含む。ネットワーク１２８は、１対のイーサネット・ネットワークまたはＦＴＥネットワークのような、任意の適したネットワークを表すことができる。
【００２２】
[0030]  Ｐｕｒｄｕｅモデルでは、「レベル４」は、ネットワーク１２８に結合された１つ以上のプラント−レベル・コントローラ１３０を含むことができる。各プラント−レベル・コントローラ１３０は、通例、プラント１０１ａ〜１０１ｎの１つと関連付けられ、各プラントは、同じプロセス、同様のプロセス、または異なるプロセスを実現する１つ以上のプロセス・ユニットを含むことができる。プラント−レベル・コントローラ１３０は、それよりも低いレベルにあるコンポーネントの動作および制御をサポートするために、種々の機能を実行する。特定例として、プラント−レベル・コントローラ１３０は、１つ以上の製造実行システム（ＭＥＳ：manufacturing execution system）アプリケーション、スケジューリング・アプリケーション、あるいはその他のまたは追加のプラント制御アプリケーションもしくはプロセス制御アプリケーションを実行することができる。プラント−レベル・コントローラ１３０の各々は、プロセス・プラントにおける１つ以上のプロセス・ユニットにアクセスを付与する、これらの制御を行う、またはこれらに関係する動作を行うのに適した任意の構造を含む。プラント−レベル・コントローラ１３０の各々は、例えば、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳオペレーティング・システムを実行するサーバ・コンピューティング・デバイスを表すことができる。
【００２３】
[0031]  プラント−レベル・コントローラ１３０へのアクセスは、１つ以上の操作員端末１３２によって付与することができる。操作員端末１３２の各々は、システム１００における１つ以上のコンポーネントのユーザ・アクセスおよび制御をサポートするのに適した任意の構造を含む。操作員端末１３２の各々は、例えば、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳオペレーティング・システムを実行するコンピューティング・デバイスを表すことができる。
【００２４】
[0032]  少なくとも１つのルータ／ファイアウォール１３４が、ネットワーク１２８を１つ以上のネットワーク１３６に結合する。ルータ／ファイアウォール１３４は、安全なルータまたは複合ルータ／ファイアウォールのような、ネットワーク間において通信を行うのに適した任意の構造を含む。ネットワーク１３６は、企業規模のイーサネットまたはその他のネットワーク、あるいはもっと大きなネットワーク（インターネット等）の全部または一部のような、任意の適したネットワークを表すことができる。
【００２５】
[0033]  Ｐｕｒｄｕｅモデルでは、「レベル５」は、ネットワーク１３６に結合された１つ以上の企業−レベル・コントローラ１３８を含むことができる。各企業−レベル・コントローラ１３８は、通例、複数のプラント１０１ａ〜１０１ｎのための計画業務を実行し、プラント１０１ａ〜１０１ｎの種々の面(aspect)を制御することができる。また、企業−レベル・コントローラ１３８は、プラント１０１ａ〜１０１ｎにおけるコンポーネントの動作および制御をサポートするために、種々の機能を実行することができる。特定例として、企業−レベル・コントローラ１３８は、１つ以上の命令処理アプリケーション、企業リソース計画（ＥＲＰ：enterprise resource planning）アプリケーション、高度計画およびスケジューリング（ＡＰＳ：advanced planning and scheduling）アプリケーション、あるいは任意のその他のまたは追加の企業用制御アプリケーションを実行することができる。企業−レベル・コントローラ１３８の各々は、１つ以上のプラントにアクセスを付与する、１つ以上のプラントの制御を行う、または１つ以上のプラントの制御に関係する動作を行うに適した任意の構造を含む。企業−レベル・コントローラ１３８の各々は、例えば、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳオペレーティング・システムを実行するサーバ・コンピューティング・デバイスを表すことができる。この文書では、「企業」(enterprise)という用語は、管理すべき１つ以上のプラントまたはその他の処理設備を有する組織を指す。尚、１つのプラント１０１ａを管理しようとする場合、企業−レベル・コントローラ１３８の機能をプラント−レベル・コントローラ１３０に組み込むことができることを注記しておく。
【００２６】
[0034]  企業−レベル・コントローラ１３８へのアクセスは、１つ以上の操作員端末１４０によって付与することができる。操作員端末１４０の各々は、システム１００における１つ以上のコンポーネントのユーザ・アクセスおよび制御をサポートするのに適した任意の構造を含む。操作員端末１４０の各々は、例えば、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳオペレーティング・システムを実行するコンピューティング・デバイスを表すことができる。
【００２７】
[0035]  Ｐｕｒｄｕｅモデルの種々のレベルは、１つ以上のデータベース等の、他のコンポーネントも含むことができる。各レベルと関連付けられたデータベース（１つまたは複数）は、システム１００のそのレベルまたは１つ以上の他のレベルに関連する任意の適した情報を格納することができる。例えば、ヒストリアン(historian)１４１をネットワーク１３６に結合することができる。ヒストリアン１４１は、システム１００についての種々の情報を格納するコンポーネントを表すことができる。ヒストリアン１４１は、例えば、生産スケジューリングおよび最適化の間に使用された情報を格納することができる。ヒストリアン１４１は、情報を格納し、情報の検索(retrieval)を容易にするのに適した任意の構造を表す。ネットワーク１３６に結合された１つの集中コンポーネントとして示されているが、ヒストリアン１４１は、システム１００におけるいずれの場所にも配置することができ、または複数のヒストリアンをシステム１００における異なる場所に分散させることもできる。
【００２８】
[0036]  特定実施形態では、図１における種々のコントローラおよび操作員端末は、コンピューティング・デバイスを表すこともできる。例えば、コントローラおよび操作員端末の各々は、１つ以上の処理デバイスと、これらの処理デバイス（１つまたは複数）によって使用、生成、または収集された命令およびデータを格納する１つ以上のメモリとを含むことができる。また、コントローラおよび操作員端末の各々は、１つ以上のイーサネット・インターフェースまたはワイヤレス・トランシーバのような、少なくとも１つのネットワーク・インターフェースを含むこともできる。
【００２９】
[0037]  本開示によれば、システム１００にインストールする前に、システム１００におけるレベル１コントローラ１０６の内１つ以上のプロパティをシミュレートし、仮想的に設定する(configure)することができる。例えば、センサ１０２ａからのデータを正しく解釈するため、またはアクチュエータ１０２ｂを正しく制御するために、コントローラ１０６を前もって設定する必要があるというのでもよい。この機能に関する更なる詳細を以下に示す。
【００３０】
[0038]  図１は、工業プロセス制御および自動化システム１００の一例を示すが、種々の変更が図１に対してなされてもよい。例えば、制御システムは任意の数のセンサ、アクチュエータ、コントローラ、サーバ、操作員端末、ネットワーク、および安全性マネージャを含むことができる。また、図１におけるシステム１００の構成(makeup)および配置(arrangement)も例示のために過ぎない。個々の必要性に応じて、任意の他の適した構成で、コンポーネントを追加する、省略する、組み合わせる、または配置(place)することができる。更に、特定の機能について、システム１００の特定のコンポーネントによって実行されると説明した。これは、例示のために過ぎない。一般に、プロセス制御システムは、多様に設定可能であり、個々の必要性に応じて任意の適した方法で構成することができる。加えて、図１は、予め設定されたレベル１コントローラを使用することができる環境の一例を示すが、このような予め設定されたレベル１コントローラは、任意の他の適したデバイスまたはシステムにおいても使用することができる。
【００３１】
[0039]  ときの経過につれて、システム１００の構成は変更される可能性が高い。例えば、特定のコンポーネントが時代遅れまたは旧式になると、これらの旧式コンポーネントは、新しいコンポーネントと交換されるのが当然である。このような新しいコンポーネントは、システム１００内で問題なく(successfully)動作するためには、前もって設定しておく必要がある場合もある。注文したが未だ届いていないＤＣＳ機器のようなコンポーネント上で設定作業(configuration activities)を実行できると都合がよい場合が多い。これは特に、上ではレベル２機械レベル・コントローラ１１４に接続し、下ではレベル０センサ１０２ａおよびアクチュエータ１０２ｂに接続する、コントローラ１０６のような、レベル１コントローラに該当する。ある種の機器にとっては、ハードウェア機能のソフトウェア・シミュレーションはさほど難しくない。しかしながら、特にレベル１コントローラについては、コントローラの制御戦略をシミュレートし、更に対応するセンサ、アクチュエータ、およびプラント自体の挙動をシミュレートすることが要求されるため、これは容易な作業ではないのが通例である。
【００３２】
[0040]  コントローラの設定のためにレベル１コントローラのシミュレーションを作成する(create)１つの方法は、実際のレベル１コントローラからソフトウェアを移植し、次いでセンサ、アクチュエータ、およびプラントの挙動をシミュレートするシミュレータ・ツールを追加することである。しかしながら、これは、通例、多数の理由のために遂行するのは非常に困難である。例えば、既存のコントローラ・ソフトウェア・コードがアセンブリ言語で書かれているかもしれず、既存のソフトウェア・コードが特定のオペレーティング・システムの機能に依存するかもしれず、または移植されたコードが特定のタスク・スケジューリング機能(capabilities)に依存するかもしれない。加えて、レガシー・コントローラ・プロパティには、３０年よりも前の設計に基づくものもあり、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳのような現行のオペレーティング・システムよりも前に作られた可能性がある。したがって、これらのコントローラ・プロパティをもっと新しい環境においてシミュレートすることは困難である可能性がある。
【００３３】
[0041]  これらおよびその他の問題に取り組むために、本開示の実施形態は、ランタイム環境に合わせてレガシー・レベル１コントローラを設定するために、レガシー・レベル１コントローラおよびその環境をシミュレートまたは仮想化するシステムならびに方法を提供する。開示するシミュレーションは、多数の有利で新規な技法を使用する。これらの技法には、とりわけ、一意のソース・コード変換、オペレーティング・システムのエミュレーション、およびカスタム・スケジューリング・アルゴリズムが含まれる。開示するシミュレーション技法を使用することによって、レガシー・レベル１コントローラを設定するときに、多大な時間およびコストの節約が得られる。
【００３４】
[0042]  設計が古い(older-design)レガシー・レベル１コントローラには、レベル１通信用に１つのプロセッサ、入力／出力（ＩＯ）通信のために１つのプロセッサ、そして制御アルゴリズム実行のために１つのプロセッサというように、複数のプロセッサを含むものがある。１つ以上のハードウェア／ソフトウェア・インターフェースが、コントローラ内におけるプロセッサ間通信を可能にする。これらのプロセッサの各々は、複数の動作およびタスクを管理および実行する埋め込み型オペレーティング・システムをホストするのでもよい。これに取り組むために、開示する実施形態は、効果的なソフトウェア移植方法(software port methodology)を特徴とし、レガシー・コントローラのランタイム・コンポーネントの全てを、進んだプラットフォーム上で実行する１つのソフトウェア・プロセスの下でシミュレートすることを可能にする。異なるプロセッサによってホストされた別々のオペレーティング・システム上で実行するタスクは、進んだプラットフォームにおける異なる仮想プロパティにおいて管理することができる。
【００３５】
[0043]  図２は、本開示にしたがって、分散型制御システムにおいてレガシー・レベル１コントローラを仮想化（またはシミュレート）するフレームワーク２００を示す。フレームワーク２００は、異なるスレッドとして実行されるが、協働してシミュレーション環境を構成する異なるコンポーネントを表す。フレームワーク２００は、変換されたアプリケーション・コード２０１、レガシー・オペレーティング・システムＡＰＩ２０２、アプリケーション・ランタイム環境２０３、カスタム・スケジューラ２０４、レガシー・オペレーティング・システムをシミュレートするための追加コンポーネント２０５を含む。
【００３６】
[0044]  変換されたアプリケーション・コード２０１は、レガシー・レベル１コントローラに関連するソース・アプリケーション・コードであり、近年のオペレーティング・システムにおいて実行可能となるように、レガシー・コントローラのオペレーティング・システムから変換されたものである。例えば、ＨＯＮＥＹＷＥＬＬ社による「ＰＭ」、「ＡＰＭ」、「ＨＰＭ」、または「ＥＨＰＭ」コントローラのような、一部のレガシー・レベル１コントローラは、ＭＯＴＯＲＯＬＡ社による６８０４０プロセッサ、およびＩＮＴＥＬ×８６（または同等の）プロセッサを有するコンピューティング・デバイスによって一般に使用されるオペレーティング・システム（例えば、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ）と互換性がない、古い(older)レガシー・オペレーティング・システム（例えば、「ＭＴＯＳ」）を使用する。レガシー・レベル１コントローラに開発されたアプリケーション・コード（例えば、Ｐａｓｃａｌまたはその他の高級プログラミング言語で書かれたソフトウェア・コード）は、したがって、ｘ８６系オペレーティング・システムによって実行可能となるように変換される。本文書全体にわたって、ＨＰＭコントローラを一例として使用する。しかしながら、本文書（図面を含む）において見られるＨＰＭに対する引用は、限定することを意図するのではなく、ＨＰＭは他のレガシー・レベル１コントローラも同様に表すことができることは理解されよう。
【００３７】
[0045]  アプリケーション・ランタイム環境２０３は、変換アプリケーション・コード２０１を実行するためのランタイム環境を提供する。ある実施形態では、これはＰａｓｃａｌランタイム環境を含むことができる。
【００３８】
[0046]  レガシー・オペレーティング・システムＡＰＩ２０２は、本来６８０４０アセンブリ言語で開発されたレガシー・オペレーティング・システム用のＡＰＩであるが、Ｃ、Ｐａｓｃａｌ、またはその他の高級プログラミング言語を使用して、シミュレーション・システムにおいて複製される。レガシー・オペレーティング・システム・シミュレーション・コンポーネント２０５は、仮想化レガシー・レベル１コントローラがシミュレーション・システムにおいて動作することを可能にするために採用される追加のサポート機能である。
【００３９】
[0047]  レガシー・オペレーティング・システムＡＰＩ２０２およびレガシー・オペレーティング・システム・シミュレーション・コンポーネント２０５は、レガシー・アプリケーションが実行することが予測されるレガシー・コントローラ・オペレーティング・システム（例えば、ＭＴＯＳ）のカスタム化シミュレーションによって、変換アプリケーション・コード２０１をサポートする。レガシー・オペレーティング・システムＡＰＩ２０２は、シミュレーション・システムのオペレーティング・システムの上にある抽象化レイヤにおいてエミュレートされる。シミュレートされたレガシー・オペレーティング・システムは、全てのレガシー・ソフトウェア命令（ＩＯ（例えば、データ受信、データ表示等を含む）および物理コマンド（例えば、スイッチをオンに切り替える、モータを作動させる等））が正しく実行することを可能にする。
【００４０】
[0048]  カスタム・スケジューラ２０４は、シミュレーション・システムのオペレーティング・システムが通例提供するものよりも強化されたスレッド・スケジューリング能力を提供する、カスタム化されたアプリケーションである。例えば、レガシー・コントローラ・オペレーティング・システムＭＴＯＳは、多数の特定優先順位(specific priorities)を扱うスレッド・スケジューリングを含み、これは、オペレーティング・システムとして、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳが通例では提供しないもの(something)である。カスタム・スケジューラ２０４は、これらのスレッド・スケジューリング動作、およびＷＩＮＤＯＷＳでは見られないその他のレガシーＩＯコマンドのためのサポートを提供する。カスタム・スケジューラ２０４は、レガシー・コントローラ・オペレーティング・システムを熟知する技術者または開発者によって生成することができる。カスタム・スケジューラ２０４は、Ｃまたはその他の高級プログラミング言語で書くことができる。
【００４１】
[0049]  シミュレーション・システムの動作の一部は、レガシー・システム・ハードウェアとの相互作用を扱うためにアドレス・リマッピング(address remapping)を実行し、全てのビッグ・エンディアン定数(big-endian constants)、レガシー（６８０４０）ソース・コードにおいて定義される全てのラベル、またはバイト・スワッピングを必要とする他のあらゆる項目に対して、ランタイム「エンディアン」補正を実行する動作を含む。
【００４２】
[0050]  「エンディアン」(endian)という用語は、コンピュータ・メモリに格納するときにデータ・ワードまたはメッセージを構成する１つ以上のバイトを格納および解釈するために使用される慣例(convention)を指す。メモリにおけるデータの各バイトは、それ自体のアドレスを有する。複数のバイトを含むデータ・ワードを読み出すまたは書き込むとき、メモリに格納されているバイトの順序が、データ・ワードの解釈を決定する。
【００４３】
[0051]  ビッグ・エンディアン・システムは、データ・ワードの最上位バイトを最も小さいアドレスに格納し、最下位バイトを最も大きいアドレスに格納する。対照的に、リトル・エンディアン・システムは、データ・ワードの最下位バイトを最も小さいアドレスに格納する。ビッグ・エンディアン・デバイスまたはシステムからリトル・エンディアン・デバイスまたはシステムに（またはその逆に）データを移動させるとき、データをしかるべき「エンディアンネス」(endianness)に変換する必要があり、そうでなければ、受信デバイスまたはシステムが相違を考慮する必要がある。これをエンディアン補正と呼ぶ。
【００４４】
[0052]  ランタイム・エンディアン補正は、変換アプリケーション・コード２０１が生成されるときに、各変換ｘ８６アセンブリ・ファイルの終端においてエンディアン補正関数コールを含ませることによって行われる。この関数コールは、そのファイルにおいて交換されるべきあらゆる項目に対してエンディアン補正関数を起動し(launch)、エンディアン補正を必要とするメモリ位置へのポインタ、データ型情報、およびサイズを含む関数パラメータを渡す。次いで、エンディアン補正関数は、必要に応じて、バイト交換を実行する。エンディアン補正関数は、Ｃまたはその他の適した高級プログラミング言語で書くことができる。
【００４５】
[0053]  エンディアン補正に関する更なる詳細は、本願と所有者が同じであり、２０１５年１月２３日に出願された米国特許出願第１４／６０４，３４６号において見ることができる。この特許出願をここで引用したことにより、その内容は本願にも含まれるものとする。
【００４６】
[0054]  図２は分散型制御システムにおいてレガシー・レベル１コントローラを仮想化するフレームワーク２００の一例を示すが、図２には種々の変更を行うこともできる。例えば、図２における種々のコンポーネントを組み合わせること、更に細分化すること、または省略することができ、更に、個々の必要性に応じて追加のコンポーネントを追加することもできる。また、仮想化およびシミュレーション環境は、多種多様の構成で組むことができ(come in)、図２は本開示をいずれの特定の構成にも限定しない。
【００４７】
[0055]  図３は、本開示にしたがって分散型制御システムにおいてレガシー・レベル１コントローラを仮想化するシステム例３００を示す。システム３００は、工業プロセス制御および自動化システム１００において使用するためのコントローラを設定するために、フレームワーク２００のコンポーネントの内１つ、一部、または全部を組み込むことができる。
【００４８】
[0056]  図３に示すように、システム３００は、レガシー・レベル１コントローラのために１つ以上のアプリケーション・ソース・コード・ファイル３０２を含み、アプリケーション・ソース・コード・ファイル３０２はＰａｓｃａｌまたはＣのような、互換性がある高級プログラミング言語で書かれている。例えば、ソース・コード・ファイル（１つまたは複数）３０２は、６８０４０プロセッサ系ＨＰＭコントローラ用ソフトウェア・ルーチンのためのＨＯＮＥＹＷＥＬＬ  Ｐａｓｃａｌで書かれた命令を含むことができる。各ソース・コード・ファイル３０２は、任意の適した数の命令を任意の適したプログラミング言語で含むことができる。
【００４９】
[0057]  コンパイラ３０４は、ソース・コード・ファイル（１つまたは複数）３０２を受け取り、各ソース・コード・ファイル３０２における命令を機械実行可能なアセンブリ言語命令にコンパイルする。アセンブリ言語命令は、レガシー・コントローラ処理デバイスと互換性がある。例えば、アセンブリ言語命令は、６８０４０プロセッサ用のアセンブリ・コードとすることができる。
【００５０】
[0058]  変換器３０６は、レガシー・プラットフォームと互換性があるアセンブリ言語命令を受け取り、アセンブリ言語命令を、変換アセンブリ言語命令に変換する。変換アセンブリ言語命令は、シミュレータ３２０のような、ｘ８６プロセッサを有するシミュレーション・デバイスにおける実行のためにアセンブルすることができる。即ち、変換器３０６は命令を６８０４０アセンブリ言語からｘ８６アセンブリ言語に変換することができる。変換器３０６は、カスタム化したアセンブリ言語変換器とすることができ、または、ＭＩＣＲＯＡＰＬ  ＬＴＤによるＰｏｒｔＡＳＭ／６８Ｋ変換器のような、ソフトウェア移行ツール(software migration tool)の一部である既存のアセンブリ・コード変換器とすることができる。
【００５１】
[0059]  アセンブラ３０８は、変換アセンブリ言語命令を受け取り、これらの命令をオブジェクト・コード３１０にアセンブルする。一旦アセンブルされると、オブジェクト・コード３１０は、ｘ８６互換コンピューティング・デバイスによって実行可能になる。アセンブラ３０８は、任意の適したアセンブラ・ユーティリティを表すことができ、システム３００のために特定的に設計またはカスタム化されたもの、あるいは既存の市販されているものを含む。
【００５２】
[0060]  オブジェクト・コード３１０は、Ｃ言語ランタイム・ライブラリ３１２およびｘ８６系起動およびコンフィギュレーション・オブジェクト・コード３１４と組み合わせて、パーソナリティ・ファイル(personality file)３１６にすることができる。パーソナリティ・ファイル３１６は、レガシー・レベル１コントローラのパーソナリティと関連付けられた実行可能ファイルである。このコンテキストでは、パーソナリティとは、ハードウェア・デバイスに異なる機能またはタスクを実行させるプロファイルの一種である。例えば、「ユニバーサル・ステーション」パーソナリティ(universal station personality)は、ディスプレイ、キーボード、およびマウスを管理する(govern)ソフトウェアを表すことができる。「アプリケーション・モジュール」(application module)パーソナリティは、ループ制御を管理するソフトウェアを表すことができる。ここで、レガシー・レベル１コントローラのパーソナリティは、分散型制御システムにおけるレガシー・レベル１コントローラの挙動のシミュレーションである。パーソナリティ・ファイル３１６は、レガシー・レベル１コントローラの機能、およびそのレベル２監理ノード（１つまたは複数）に対するコントローラのインターフェースに関連する機能も含むことができる。
【００５３】
[0061]  シミュレータ３２０は、ＷＩＮＤＯＷＳのような、ｘ８６系オペレーティング・システムを実行する汎用コンピューティング・デバイスである。例えば、シミュレータ３２０は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ノートブック、サーバ、または任意の他の適したコンピューティング・デバイスであってもよい。パーソナリティ・ファイル３１６は、シミュレータ３２０による実行のために、シミュレータ３２０のメモリにロードされる。パーソナリティ・ファイル３１６に加えて、シミュレータ３２０は、レベル２監理ノードの機能を実行するソフトウェア、およびレガシー・レベル１コントローラをレベル２ネットワークに接続するために使用されるハードウェア・インターフェースを制御するソフトウェアをホストすることができる。これらのハードウェア／ソフトウェア・コンポーネントは、物理的に別々にすることができ、または同じ物理ハードウェア上に位置することもできるが、別個の論理エンティティとして管理および実行される。
【００５４】
[0062]  シミュレーションの間、シミュレータ３２０は、パーソナリティ・ファイル３１６内に具体化された仮想化レガシー・レベル１コントローラをシミュレートおよび設定するために、１つ以上のシミュレータ・アプリケーション３２２を動作させる。例えば、シミュレータ３２０によって実行されるシミュレータ・アプリケーション３２２は、レガシー・シミュレーション管理ユーティリティ、シミュレータ・コンフィギュレーション・ユーティリティ、およびコントローラ・コンフィギュレーション・ユーティリティを含むことができる。これらについては、以下で更に詳しく説明する。シミュレータ３２０、パーソナリティ・ファイル３１６、およびシミュレータ・アプリケーション３２２を使用して、ユーザ（例えば、システム・エンジニア）は、コントローラの実際の物理インスタンスがなくても、仮想レガシー・レベル１コントローラを設定することができる。
【００５５】
[0063]  一旦シミュレーションが完了し、仮想レガシー・レベル１コントローラが正しく設定されたなら、コンフィギュレーション・データをコンフィギュレーション・データベース３２４（あるいはフラット・ファイルまたは任意の他の適したデータ構造）に保存する。次いで、一旦コントローラ３２８が使用可能になったなら、コンフィギュレーション・データベース３２４を物理レベル１コントローラ３２８にインポートまたはロードすることができる。
【００５６】
[0064]  コンピュータ・ゲートウェイ３２６は、コントローラ３２８および対応するレガシー・レベル２監理ネットワークにインターフェースするために使用することができる。コンピュータ・ゲートウェイ３２６は、ハードウェア・インターフェースを介した通信を可能にするために、レベル２監理ネットワーク、ハードウェア・インターフェース用デバイス・ドライバ、および１つ以上のソフトウェア・コンポーネントに接続するハードウェア・インターフェース（例えば、周辺素子相互接続（ＰＣＩ）デバイス）を含む。コンピュータ・ゲートウェイ３２６を使用して、仮想レガシー・レベル１コントローラはレガシー・レベル２監理ネットワークと通信することができ、こうして同じユーザ・インターフェースを仮想レガシー・レベル１コントローラおよび物理コントローラの設定のために使用することが可能となる。
【００５７】
[0065]  コンピュータ・ゲートウェイ３２６は、ＩＰプロトコルを使用して、レベル１コントローラ３２８と通信する。コンピュータ・ゲートウェイ３２６およびレベル１ソフトウェア・アプリケーションによって維持されるデータのフォーマットは、コントローラ３２８のそれと同じである。これによって、仮想および埋め込みレベル１コントローラを跨いでデータベース３２４の完全性を保存し、こうして、シミュレータ３２０において生成されたデータベース３２４を実際のハードウェアにインポートすることを可能にする。コンピュータ・ゲートウェイ３２６は、複数の接続をサポートすることができ、必要な数だけのレガシー・レベル１コントローラ３２８に対してインターフェースを有することが可能になる。レガシー・レベル１コントローラ３２８にインターフェースするためにコンピュータ・ゲートウェイ３２６を使用することによって、ＬＬＣ／バス特定通信ハンドラのような、低レベル通信コンポーネントを削減し、こうすることによって、仮想レベル１ソフトウェアのアーキテクチャの複雑さを軽減する。
【００５８】
[0066]  図３はレガシー・レベル１コントローラ仮想化システム３００の一例を示すが、図３に対して種々の変更がなされてもよい。例えば、個々の必要性に応じて、図３における種々のコンポーネントを組み合わせること、更に細分化すること、または省略することができ、更に、追加のコンポーネントを加えることもできる。特定例として、別々のコンポーネントとして示すが、コンパイラ３０４、変換器３０６、アセンブラ３０８、シミュレータ３２０、およびゲートウェイ３２６の内２つ以上を組み合わせて１つのデバイスにすることができる。また、仮想化およびシミュレーション環境は、多種多様の構成で組むことができ(come in)、図３は本開示をいずれの特定の構成にも限定しない。
【００５９】
[0067]  図４は、本開示によるレガシー・レベル１コントローラ仮想化システム４００の異なるコンポーネントを示す。レガシー・レベル１コントローラ仮想化するシステム４００は、本開示によるレガシー・レベル１コントローラ仮想化システム３００を表す(denote)こともできる。
【００６０】
[0068]  図４におけるシステム４００は、コンフィギュレーションに応じて異なる仮想コントローラに対して実行可能なシミュレーションの複数の異なるインスタンスを呼び出し実行する役割を果たす。即ち、各インスタンスは、１つの物理レガシー・レベル１コントローラの機能をシミュレートするように動作する。システム４００は、個々の仮想ノード・インスタンスを割り当てて処理する(handle)。システム４００は、ユーザ定義コンフィギュレーションを読み出す。ユーザ定義コンフィギュレーションは、コントローラ・シミュレーションのインスタンスを実行するために必要とされる入力を含む。システム４００は、設定するだけの数のインスタンスを起動する(launch)。図４に示すように、クライアントＡＰＰ１  ４０１、クライアントＡＰＰ２  ４０２、およびクライアントＡＰＰ３  ４０３は、シミュレーションの異なるインスタンスを表し、異なるコンフィギュレーションおよび異なるデータベースを用いる。
【００６１】
[0069]  システム４００は、シミュレートされるＨＰＭアプリケーションの監理をサポートする。システム４００によって実行されるタスクの一部には以下が含まれる。
・サービス起動中において、コンフィギュレーションにしたがってシミュレートされたレガシー・コントローラ（ＳＩＭ  ＨＰＭ）の起動。
【００６２】
・サービス停止中において、シミュレートされたレガシー・コントローラの閉鎖。
・シミュレートされたレガシー・コントローラに関連するアプリケーションの監視。
[0070]  図５および図６は、本開示によるレガシー・レベル１コントローラ仮想化システムの異なるコンポーネントを実行する操作員端末からの画面例を示す。レガシー・レベル１コントローラ仮想化システムは、本開示によるレガシー・レベル１コントローラ仮想化システム３００を表すこともできる。
【００６３】
[0071]  図５における画面５００は、シミュレータ・コンフィギュレーション・ユーティリティ５０５における表示を示す。シミュレータ・コンフィギュレーション・ユーティリティ５０５は、シミュレーション環境において複数のレベル１仮想コントローラを設定するために使用することができる。新たなＨＰＭＳＩＭＣＯＮＦＩＧメニュー項目５０１がシミュレータ・コンフィギュレーション・ユーティリティ５０５に追加されている。ＨＰＭＳＩＭＣＯＮＦＩＧメニュー項目５０１の選択により、図６に示すＳＩＭ  ＨＰＭコンフィギュレーション・ウィンドウ６０５が現れる(launch)。
【００６４】
[0072]  図６における画面６００は、ＳＩＭ  ＨＰＭコンフィギュレーション・ウィンドウ６０５を示す。ＳＩＭ  ＨＰＭコンフィギュレーション・ウィンドウ６０５は、インスタンス毎にシミュレートされるレガシー・コントローラの数および関連する詳細を、ユーザが設定する(configuration)することを可能にする。ＳＩＭ  ＨＰＭコンフィギュレーション・ウィンドウ６０５は、以下の設定可能な(configurable)選択肢を含む。
【００６５】
・ＳＩＭ  ＨＰＭの数、
・ＨＰＭノード・アドレス、
・ＵＣＮネットワーク番号、
・ＮＩＭアドレス、
・ＴＰＳＩＭサーバ名。
【００６６】
[0073]  これらの設定可能な選択肢は、シミュレートされる各レガシー・コントローラの識別情報(identity)を、レガシー・レベル１コントローラ仮想化システムにおいて一意にする。
【００６７】
[0074]  図５および図６は、レガシー・レベル１コントローラ仮想化システムのコンポーネントを実行する操作員端末からの画面の例を示すが、図５および図６に対して種々の変更がなされてもよい。例えば、画面５００、６００を別々にフォーマットすることができ、更に異なる型式の情報を表示することができる。
【００６８】
[0075]  図７は、本開示にしたがって分散型制御システムにおいてレガシー・レベル１コントローラを仮想化する方法例７００を示す。説明を容易にするために、方法７００は、図３のシステム３００を使用して実行するとして説明する。しかしながら、方法７００は、任意の適したデバイスまたはシステムと共に使用することができる。
【００６９】
[0076]  ステップ７０１において、システム３００は、分散型制御システムにおけるレガシー・コントローラに関連する少なくとも１つのアプリケーション・ソース・コード・ファイルを、コントローラ・シミュレーション・コンピューティング・デバイスによって実行可能な命令に変換する。レガシー・コントローラはレガシー・オペレーティング・システムと関連付けられ、コントローラ・シミュレーション・コンピューティング・デバイスは、レガシー・オペレーティング・システムとは異なる第２オペレーティング・システムと関連付けられる。これは、例えば、コンパイラ３０４が少なくとも１つのアプリケーション・ソース・コード・ファイル３０２をコンパイルすること、次いで変換器３０６がコンパイルされたコードを変換すること、およびアセンブラ３０８が変換されたコードをオブジェクト・コード３１０にアセンブルすることを含むのでもよい。オブジェクト・コード３１０は、Ｃ言語ランタイム・ライブラリ３１２ならびにｘ８６系起動およびコンフィギュレーション・オブジェクト・コード３１４と組み合わせられ、パーソナリティ・ファイル３１６にすることができる。
【００７０】
[0077]  ステップ７０３において、システム３００は、前述の命令を使用して、更にコントローラ・シミュレーション・コンピューティング・デバイスにおけるレガシー・オペレーティング・システムのエミュレーションを使用して、レガシー・コントローラの動作をシミュレートする。これは、例えば、シミュレータ３２０が、パーソナリティ・ファイル３１６を使用して、レガシー・コントローラをシミュレートすることを含むのでもよい。
【００７１】
[0078]  ステップ７０５において、システム３００は、レガシー・コントローラの動作のシミュレーション中に、レガシー・コントローラのコンフィギュレーション・データを決定する。これは、例えば、シミュレータ３２０が、レガシー・コントローラに１つ以上のコンフィギュレーション・パラメータを決定または計算すること、あるいはユーザから１つ以上のコンフィギュレーション・パラメータを受け取ることを含むのでもよい。
【００７２】
[0079]  ステップ７０７において、システム３００はコンフィギュレーション・データをコンフィギュレーション・データ・ファイルに保存する。これは、例えば、シミュレータ３２０がコンフィギュレーション・データベース３２４を生成することを含むのでもよい。
【００７３】
[0080]  ステップ７０９において、システム３００は、ゲートウェイを使用して、コンフィギュレーション・データ・ファイルをレガシー・コントローラにエクスポートする。ゲートウェイは、レガシー・コントローラに対するハードウェア・インターフェースを含む。これは、例えば、ゲートウェイ３２６がコンフィギュレーション・データベース３２４をレガシー・レベル１コントローラ３２８にエクスポートすることを含むのでもよい。
【００７４】
[0081]  図７は、分散型制御システムにおいてレガシー・レベル１コントローラを仮想化する方法７００の一例を示すが、図７に対して種々の変更がなされてもよい。例えば、一連のステップとして示したが、図７に示す種々のステップは、重複すること、並列に行うこと、異なる順序で行うこと、複数回行う事も可能である。更に、個々の必要性に応じて、いくつかのステップを組み合わせるまたは取り除くこともでき、追加のステップを加えることもできる。加えて、工業プロセス制御および自動化システムに関して説明したシステム３００に関して方法７００を説明したが、方法７００は、他の種類のデバイスおよびシステムとでも使用することができる。
【００７５】
[0082]  図８は、本開示にしたがって、分散型制御システムにおいてレガシー・レベル１コントローラの仮想化を実行するデバイス例８００を示す。デバイス８００は、例えば、シミュレータ３２０またはゲートウェイ３２６のような、図３のシステム３００におけるコンピューティング・デバイスを表すことができる。デバイス８００は、分散型制御システムにおいてレガシー・レベル１コントローラの仮想化を実行するのに適した他の任意のデバイスを表すこともできる。
【００７６】
[0083]  図８に示すように、デバイス８００はバス・システム８０２を含むことができる。バス・システム８０２は、少なくとも１つの処理デバイス８０４、少なくとも１つの記憶デバイス８０６、少なくとも１つの通信ユニット８０８、および少なくとも１つの入力／出力（Ｉ／Ｏ）ユニット８１０間における通信をサポートする。処理デバイス８０４は、メモリ８１２にロードすることができる命令を実行する。処理デバイス８０４は、任意の適した数および種類のプロセッサまたはその他のデバイスを、任意の適した構成で含むことができる。処理デバイス８０４の種類の例には、マイクロプロセッサ、マイクロコントローラ、ディジタル信号プロセッサ、フィールド・プログラマブル・ゲート・アレイ、特定用途集積回路、およびディスクリート回路が含まれる。
【００７７】
[0084]  メモリ８１２および永続的ストレージ８１４は、記憶デバイス８０６の例であり、情報（一時的なまたは永続的な、データ、プログラム・コード、および／またはその他の適した情報等）を格納し、検索を容易にすることができる任意の構造（１つまたは複数）を表す。メモリ８１２は、ランダム・アクセス・メモリあるいは任意の他の適した揮発性または不揮発性記憶デバイス（１つまたは複数）を表すことができる。永続的ストレージ８１４は、リード・オンリ・メモリ、ハード・ドライブ、フラッシュ・メモリ、または光ディスクのような、データの長期(longer-term)格納をサポートする１つ以上のコンポーネントまたはデバイスを含むことができる。本開示によれば、メモリ８１２および永続的ストレージ８１４は、ソフトウェア移行の間に絶対アドレスの動的リマッピングを容易にすることに関連する命令を格納するように構成されてもよい。
【００７８】
[0085]  通信ユニット８０８は、他のシステム、デバイス、またはネットワーク１１０〜１２０のようなネットワークとの通信をサポートする。例えば、通信ユニット８０８は、少なくとも１つのイーサネット・ネットワーク上での通信を容易にするネットワーク・インターフェースを含むこともできる。また、通信ユニット８０８は、少なくとも１つのワイヤレス・ネットワーク上での通信を容易にするワイヤレス・トランシーバも含むことができる。通信ユニット８０８は、任意の適した物理またはワイヤレス通信リンク（１つまたは複数）を通じた通信もサポートすることができる。
【００７９】
[0086]  Ｉ／Ｏユニット８１０は、データの入力および出力に対処する。例えば、Ｉ／Ｏユニット８１０は、キーボード、マウス、キーパッド、タッチスクリーン、またはその他の適した入力デバイスを介したユーザ入力のために、接続を設けることができる。また、Ｉ／Ｏユニット８１０は、ディスプレイ、プリンタ、またはその他の適した出力デバイスに出力を送ることもできる。
【００８０】
[0087]  図８は、分散型制御システムにおいてレガシー・レベル１コントローラの仮想化を実行するデバイス８００の一例を示すが、図８には種々の変更がなされてもよい。例えば、個々の必要性に応じて、図８における種々のコンポーネントを組み合わせる、更に細分化する、または省略することもでき、追加のコンポーネントを加えることもできる。また、コンピューティング・デバイスは、多種多様の構成で組むことができ(come in)、図８は本開示をデバイスのいずれの特定の構成にも限定しない。
【００８１】
[0088]  ある実施形態では、本特許文書において説明した種々の機能が、コンピュータ読み取り可能プログラム・コードで形成され、コンピュータ読み取り可能媒体に埋め込まれたコンピュータ・プログラムによって実現またはサポートされる。「コンピュータ読み取り可能プログラム・コード」という語句は、任意の型式のコンピュータ・コードを含み、ソース・コード、オブジェクト・コード、および実行可能コードを含む。「コンピュータ読み取り可能媒体」という語句は、リード・オンリ・メモリ（ＲＯＭ）、ランダム・アクセス・メモリ（ＲＡＭ）、ハード・ディスク・ドライブ、コンパクト・ディスク（ＣＤ）、ディジタル・ビデオ・ディスク（ＤＶＤ）のような、コンピュータによってアクセス可能な任意の種類の媒体、または任意の他の種類のメモリを含む。「非一時的」コンピュータ読み取り可能媒体は、一時的電気信号またはその他の信号を移送する有線、ワイヤレス、光、またはその他の通信リンクを除外する。非一時的コンピュータ読み取り可能媒体には、データを永続的に格納することができる媒体、および書き換え可能光ディスクまたは消去可能メモリ・デバイスのような、データを格納して後に上書きすることができる媒体が含まれる。
【００８２】
[0089]  本特許文書全体において使用した特定の単語および語句の定義を明記することは利点があると考えられる。「アプリケーション」(application)および「プログラム」(program)という用語は、適したコンピュータ・コード（ソース・コード、オブジェクト・コード、または実行可能コードを含む）で実現するために構成された(adapt)１つ以上のコンピュータ・プログラム、ソフトウェア・コンポーネント、命令の集合、手順、関数、オブジェクト、クラス、インスタンス、関連データ、またはその一部を指す。「送信する」(transmit)、「受信する」(receive)、および「通信する」(communicate)という用語、ならびにその派生語は、直接および間接的な通信双方を含む。「含む」(include)および「備える」(comprise)という用語、ならびにその派生語は、限定のない包含を意味する。「または」(or)という用語は、包含的であり、および／またはを意味する。「と関連する」(associated with)という語句、およびその派生語は、含む、内部に含まれる、相互接続する、内蔵する、内部に収容される、〜にまたは〜と接続する、〜にまたは〜と結合する、〜と通信可能である、〜と協働する、交互配置する(interleave)、並置する、近接する、〜にまたは〜と境界を接する、有する、プロパティを有する、〜にまたは〜と関係を有する等を意味することができる。「コントローラ」(controller)という用語は、少なくとも１つの動作を制御する任意のデバイス、システム、またはその一部を意味する。コントローラは、ハードウェア、またはハードウェアおよびソフトウェア／ファームウェアの組み合わせで実装することができる。任意の特定のコントローラに関連する機能は、ローカルかリモートかには関係なく、集中または分散させることもできる。「少なくとも１つの」(at least one)という語句は、項目のリストと共に使用される場合、羅列された項目の内１つ以上の異なる組み合わせを使用できることを意味し、リストにおける１つの項目だけが必要とされればよい。例えば、「Ａ、Ｂ、およびＣの内少なくとも１つ」は、Ａ、Ｂ、Ｃ、ＡおよびＢ、ＡおよびＣ、ＢおよびＣ、ＡおよびＢおよびＣという組み合わせのいずれをも含む。
【００８３】
[0090]  本開示は、特定の実施形態および全体的に関連する方法について説明したが、これらの実施形態および方法の改変(alternation)および置換(permutation)は当業者には明白であろう。したがって、実施形態例についての以上の説明は、本開示を定めるのでも、制約するのでもない。更に、以下の特許請求の範囲によって定められる本開示の主旨および範囲から逸脱することなく、その他の変更(change)、交換(substitution)、および改変も可能である。
【図１】
2019518289.tif 000003
【図２】
2019518289.tif 000004
【図３】
2019518289.tif 000005
【図４】
2019518289.tif 000006
【図５】
2019518289.tif 000007
【図６】
2019518289.tif 000008
【図７】
2019518289.tif 000009
【図８】
2019518289.tif 000010
【手続補正書】
【提出日】平成31年2月15日(2019.2.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
方法であって、
分散型制御システム（１００）においてレガシー・コントローラ（１０６、１１４、１２２、１３０、１３８）に関連する少なくとも１つのアプリケーション・ソース・コード・ファイル（３０２）を、コントローラ・シミュレーション・コンピューティング・デバイス（３２０、８００）によって実行可能な命令に変換するステップ（７０１）であって、前記レガシー・コントローラがレガシー・オペレーティング・システムに関連付けられ、前記コントローラ・シミュレーション・コンピューティング・デバイスが、前記レガシー・オペレーティング・システムとは異なる第２オペレーティング・システムと関連付けられる、ステップ（７０１）と、
前記命令、および前記コントローラ・シミュレーション・コンピューティング・デバイスにおける前記レガシー・オペレーティング・システムのエミュレーション（３２２）を使用して、前記レガシー・コントローラの動作をシミュレートするステップ（７０３）と、
前記レガシー・コントローラの動作をシミュレートする間に、前記レガシー・コントローラに対するコンフィギュレーション・データを決定するステップ（７０５）と、
前記コンフィギュレーション・データをコンフィギュレーション・データ・ファイル（３２４）に保存するステップ（７０７）と、
を含む、方法。
【請求項２】
請求項１記載の方法において、前記少なくとも１つのアプリケーション・ソース・コード・ファイルを変換するステップが、
前記少なくとも１つのアプリケーション・ソース・コード・ファイルを、前記レガシー・オペレーティング・システムと互換性のある第１アセンブリ言語命令にコンパイルするステップ（３０４）と、
前記第１アセンブリ言語命令を、前記第２オペレーティング・システムと互換性のある第２アセンブリ言語命令に変換するステップ（３０６）と、
前記第２アセンブリ言語命令を、前記第２オペレーティング・システムと互換性のあるオブジェクト・コード命令（３１０）にアセンブルするステップ（３０８）と、
を含む、方法。
【請求項３】
請求項２記載の方法において、前記少なくとも１つのアプリケーション・ソース・コード・ファイルを変換するステップが、更に、
前記少なくとも１つのアプリケーション・ソース・コード・ファイルにおいて１つ以上のビッグエンディアン定数に対してエンディアン補正を行うステップを含む、方法。
【請求項４】
装置（３２０、８００）であって、
データを格納するように構成された少なくとも１つのメモリ（８１２）と、
少なくとも１つの処理デバイス（８０４）と、
を含み、前記 少なくとも１つの処理デバイス（８０４）が、
分散型制御システム（１００）においてレガシー・コントローラ（１０６、１１４、１２２、１３０、１３８）に関連する少なくとも１つのアプリケーション・ソース・コード・ファイル（３０２）を、前記装置によって実行可能な命令に変換し、前記レガシー・コントローラがレガシー・オペレーティング・システムと関連付けられ、前記装置が、前記レガシー・オペレーティング・システムとは異なる第２オペレーティング・システムと関連付けられ、
前記命令、および前記レガシー・オペレーティング・システムにおけるエミュレーション（３２２）を使用して、前記レガシー・コントローラの動作をシミュレートし、
前記レガシー・コントローラの動作をシミュレートする間に、前記レガシー・コントローラに対するコンフィギュレーション・データを決定し、
前記コンフィギュレーション・データを、前記少なくとも１つのメモリに格納されたコンフィギュレーション・データ・ファイル（３２４）に保存するように構成される、装置（３２０、８００）。
【請求項５】
命令を含む非一時的コンピュータ読み取り可能媒体であって、前記命令が少なくとも１つの処理デバイス（３２０、８０４）によって実行されると、前記少なくとも１つの処理デバイスに、
分散型制御システム（１００）においてレガシー・コントローラ（１０６、１１４、１２２、１３０、１３８）に関連する少なくとも１つのアプリケーション・ソース・コード・ファイル（３０２）を、前記少なくとも１つの処理デバイスによって実行可能なコントローラ命令に変換させ、前記レガシー・コントローラが、レガシー・オペレーティング・システムと関連付けられ、前記少なくとも１つの処理デバイスが、前記レガシー・オペレーティング・システムとは異なる第２オペレーティング・システムと関連付けられ、
前記コントローラ命令、および前記少なくとも１つの処理デバイスにおけるレガシー・オペレーティング・システムのエミュレーション（３２２）を使用して、前記レガシー・コントローラの動作をシミュレートさせ、
前記レガシー・コントローラの動作をシミュレートする間に、前記レガシー・コントローラに対するコンフィギュレーション・データを決定させ、
前記コンフィギュレーション・データをコンフィギュレーション・データ・ファイル（３２４）に保存させる、
非一時的コンピュータ読み取り可能媒体。
【国際調査報告】
2019518289.tif 000011
2019518289.tif 000012