(57)【要約】【課題】制御プログラムを設計するエンジニア等が、ノード間における変数の送受信の全体的な流れを容易に把握可能とする。【解決手段】実施形態のエンジニアリングツールは、プロセッサ、を備える。プロセッサは、通信用ＦＢを含む制御プログラムに基づいて、通信用ＦＢ毎に、当該通信用ＦＢによってノード間で送受信する変数の変数名、当該変数の送信先、当該変数の送受信に用いる通信プロトコル、当該変数の送受信の通信速度、当該変数のサイズである送信メッセージ長、および当該変数の送受信によるネットワーク負荷を含む変数管理データベースと、ノードの名称および当該ノードのＩＰアドレスを含むノード管理データベースと、変数名、および当該変数名の変数の送信が許可されているノードを示す送信権限情報を含む送信権限データベースと、を生成する。【選択図】図１
2020144812.tif 000002
【特許請求の範囲】
【請求項１】
通信用ＦＢを含む制御プログラムに基づいて、前記通信用ＦＢ毎に、当該通信用ＦＢによってノード間で送受信する変数の変数名、当該変数の送信先、当該変数の送受信に用いる通信プロトコル、当該変数の送受信の通信速度、当該変数のサイズである送信メッセージ長、および当該変数の送受信によるネットワーク負荷を含む変数管理データベースと、前記ノードの名称および当該ノードのＩＰアドレスを含むノード管理データベースと、前記変数名、および当該変数名の変数の送信が許可されている前記ノードを示す送信権限情報を含む送信権限データベースと、を生成するプロセッサ、
を備えるエンジニアリングツール。
【請求項２】
前記プロセッサは、前記制御プログラムを記憶部に保存する際に、前記変数管理データベース、前記ノード管理データベース、および前記送信権限データベースを生成する請求項１に記載のエンジニアリングツール。
【請求項３】
前記プロセッサは、前記制御プログラムを前記記憶部に保存し直す度に、前記変数管理データベース、前記ノード管理データベース、および前記送信権限データベースを生成し直す請求項２に記載のエンジニアリングツール。
【請求項４】
前記プロセッサは、前記変数管理データベース、前記ノード管理データベース、および前記送信権限データベースに基づいて、前記変数毎に、前記変数の送信が許可されていない前記ノードへ変数が送信されていないか否かを判断し、全ての前記変数について、前記変数の送信が許可されていない前記ノードへ変数が送信されていないと判断した場合、前記制御プログラムを前記コントローラに対してダウンロード可能な状態とする請求項１から３のいずれか一に記載のエンジニアリングツール。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、エンジニアリングツールに関する。
【背景技術】
【０００２】
制御システムにおいても、クラウドやエッジコンピューティング技術が採用され始めている。制御システム内のコントローラは、組み込み型であるため、リソースの制約が多く、大量のデータの収集や、蓄積、処理等に向かないという背景がある。そのため、クラウドやエッジコンピュータ（上位層）が、制御システム（下位層）において用いられるデータの収集や、蓄積、処理等を行うことで、当該データの新たな価値の発見や当該データの新たな活用方法を見出すことが求められている。
【０００３】
例えば、制御システム内にエッジコンピュータを配置し、当該エッジコンピュータにおいて、ＬＡＮ（Local  Area  Network）内のコントローラのデータの収集や、蓄積、処理等を行い、そのデータの一部をクラウドに送信する技術が開発されている。
【０００４】
また、エッジコンピュータとコントローラを１台の機器にまとめ、その機器において、ＬＡＮ内のコントローラのデータの収集や、蓄積、処理等を行い、そのデータの一部をクラウドに送信する技術も開発されている。このような技術は、組み込み型のコントローラにおいては採用できないが、ソフトウェアにより動作するコントローラにおいては実現可能である。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１６／１９９２０６号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、制御システムにおけるノード（例えば、コントローラ、エッジコンピュータ、クラウド）間における通信設定（例えば、通信相手、通信データ）は、コントローラにおいて実行されるＰＯＵ（制御プログラム）の設計において実行される。そして、各コントローラにおいて実行される制御プログラムの集合が制御システムとして機能する。そのため、ノード間におけるデータの全体的な流れを把握することは、制御プログラムを設計するエンジニアであっても困難な場合がある。
【課題を解決するための手段】
【０００７】
実施形態のエンジニアリングツールは、プロセッサ、を備える。プロセッサは、通信用ＦＢに基づいて、通信用ＦＢ毎に、当該通信用ＦＢによってノード間で送受信する変数の変数名、当該変数の送信先、当該変数の送受信に用いる通信プロトコル、当該変数の送受信の通信速度、当該変数のサイズである送信メッセージ長、および当該変数の送受信によるネットワーク負荷を含む変数管理データベースと、ノードの名称および当該ノードのＩＰアドレスを含むノード管理データベースと、変数名、および当該変数名の変数の送信が許可されているノードを示す送信権限情報を含む送信権限データベースと、を生成する。
【図面の簡単な説明】
【０００８】
【図１】図１は、本実施形態にかかる制御システムの全体構成の一例を示す図である。
【図２】図２は、本実施形態にかかるコントローラにより実行されるタスクの構成の一例を示す図である。
【図３】図３は、本実施形態にかかるコントローラにおけるタスクの実行するタイミングチャートの一例である。
【図４】図４は、本実施形態にかかるコントローラにおいて実行される制御プログラムで用いられる情報の一例を説明するための図である。
【図５】図５は、本実施形態にかかるコントローラにおいて実行される制御プログラムの一例を説明するための図である。
【図６】図６は、本実施形態にかかるエンジニアリングツールにおいて表示される変数管理画面の一例を示す図である。
【図７】図７は、本実施形態にかかるエンジニアリングツールにおいて表示される変数一覧画面の一例を示す図である。
【図８】図８は、本実施形態にかかるエンジニアリングツールにおいて表示される変数参照画面の一例を示す図である。
【図９】図９は、本実施形態にかかるエンジニアリングツールによるコントローラへの制御プログラムのダウンロード処理の流れの一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、添付の図面を用いて、本実施形態にかかるエンジニアリングツールを適用した制御システムについて説明する。
【００１０】
図１は、本実施形態にかかる制御システムの全体構成の一例を示す図である。図１に示すように、本実施形態にかかる制御システムは、コントローラ２ａ〜２ｎと、ＨＭＩ（Human  Machine  Interface）１ａ〜１ｎと、エンジニアリングツール３と、を有する。コントローラ２ａ〜２ｎと、ＨＭＩ１ａ〜１ｎと、エンジニアリングツール３とは、ＬＡＮ（Local  Area  Network）５を介して通信可能に接続されている。
【００１１】
コントローラ２ａ〜２ｎは、制御システム（ＤＣＳ）用のコントローラである。具体的には、コントローラ２ａ〜２ｎは、プラントのセンサ等から入力される各種入力情報に基づいてＰＯＵ（制御プログラム）を実行し、制御対象であるバルブ等の制御対象機器に対して、制御プログラムの実行結果を含む出力情報を出力することによって、制御対象機器を制御する。
【００１２】
ここで、制御プログラムは、プラントの特性に応じて、エンジニアリングツール３によって生成および更新される。一般に、１つの制御システムには、複数のコントローラ２ａ〜２ｎが含まれる。以下の説明では、コントローラ２ａ〜２ｎを区別する必要がない場合には、単に、コントローラ２と記載する。
【００１３】
コントローラ２は、ＣＰＵ（Central  Processing  Unit）２０１と、ＲＡＭ（Random  Access  Memory）２０２と、ツールインタフェース２０３と、ＦＲＯＭ（Flash  Read  Only  Memory）２０４と、Ｉ／Ｏインタフェース２０５と、バス２０６と、を備えるコンピュータである。
【００１４】
ＲＡＭ２０２は、ＣＰＵ２０１が制御プログラム等の各種プログラムを実行する際に作業領域として用いられる。ＦＲＯＭ２０４は、制御プログラム等の各種情報を記憶する記憶媒体である。
【００１５】
ＣＰＵ２０１は、コントローラ２全体を制御する制御部である。本実施形態では、ＣＰＵ２０１は、ＲＡＭ２０２を作業領域として用いて、ＦＲＯＭ２０４に記憶される制御プログラム等の各種プログラムを実行する。
【００１６】
ツールインタフェース２０３は、他のコントローラ２や、ＨＭＩ１ａ〜１ｎ、エンジニアリングツール３との間で各種情報を送受信するためのインタフェースである。Ｉ／Ｏインタフェース２０５は、制御対象機器や、各種のセンサ等との間で各種情報を送受信するためのインタフェースである。バス２０６は、ＣＰＵ２０１、ＲＡＭ２０２、ツールインタフェース２０３、ＦＲＯＭ２０４、およびＩ／Ｏインタフェース２０５を互いに接続する。
【００１７】
ＨＭＩ１ａ〜１ｎは、コントローラ２で実行される処理の状況等を、オペレータが監視するために用いられる装置である。一般に、１つの制御システムには、複数のＨＭＩ１ａ〜１ｎが含まれる。以下の説明では、ＨＭＩ１ａ〜１ｎを区別する必要がない場合には、単に、ＨＭＩ１と記載する。
【００１８】
エンジニアリングツール３は、ＰＣ（Personal  Computer）等であり、コントローラ２において実行される制御プログラムやタスクの生成等を行う。エンジニアリングツール３は、当該エンジニアリングツール３のユーザであるエンジニアによって操作され、制御プログラム等を生成する。そして、エンジニアリングツール３により生成される制御プログラム等がＬＡＮ５を介してコントローラ２にダウンロードされることにより、コントローラ２がプラントを制御するための処理を実行可能となる。
【００１９】
具体的には、エンジニアリングツール３は、ＣＰＵ３０１と、ＲＡＭ３０２と、ＨＤＤ（Hard  Disk  Drive）３０３と、ＦＲＯＭ３０４と、ディスプレイ３０５と、入力装置３０６と、通信インタフェース３０７と、バス３０８と、を備える。通信インタフェース３０７は、コントローラ２、ＨＭＩ１、他のエンジニアリングツール３等の外部装置との間で各種情報を送受信するためのインタフェースである。
【００２０】
ＲＡＭ３０２は、ＣＰＵ３０１が各種のプログラムを実行する際に作業領域として用いられる。ＦＲＯＭ３０４は、ＣＰＵ３０１により実行されるプログラム等の各種情報を記憶する。ＨＤＤ３０３は、ＣＰＵ３０１により生成される制御プログラムやタスク等の各種情報を記憶する。
【００２１】
ＣＰＵ３０１は、エンジニアリングツール３全体を制御する制御部である。本実施形態では、ＣＰＵ３０１は、ＲＡＭ３０２を作業領域として用いて、ＦＲＯＭ３０４に記憶される各種のプログラムを実行することによって、制御プログラムやタスクの生成等を行う。
【００２２】
ディスプレイ３０５は、ＬＣＤ（Liquid  Crystal  Display）等であり、各種情報を表示可能な表示部である。入力装置３０６は、マウスやキーボード等であり、エンジニアリングツール３のオペレータが各種情報を入力可能とする。通信インタフェース３０７は、ＨＭＩ１、コントローラ２、他のエンジニアリングツール３等との間で各種情報を送受信するためのインタフェースである。バス３０８は、ＣＰＵ３０１、ＲＡＭ３０２、ＨＤＤ３０３、ＦＲＯＭ３０４、ディスプレイ３０５、入力装置３０６、および通信インタフェース３０７を互いに接続する。
【００２３】
図２は、本実施形態にかかるコントローラにより実行されるタスクの構成の一例を示す図である。制御プログラムは、コントローラ２のタスクに配置されたタスクエントリにおいて実行される。エンジニアリングツール３のオペレータであるエンジニアは、コントローラ２のタスク毎に、その応答性（制御プログラムが実行されるまでの時間。言い換えると、スキャン周期。）を予め設定する。したがって、エンジニアは、スキャン周期を考慮して制御プログラムを生成する。
【００２４】
例えば、図２に示すように、コントローラ２がメインスキャンタスク（以下、ＭＳタスクと言う）およびハイスピードタスク（以下、ＨＳタスクと言う）を実行する場合、エンジニアは、それぞれのタスクのスキャン周期を考慮して制御プログラムを作成する。ここで、ＭＳタスクは、タスクの実行に許容される最大の時間（例えば、１０００ｍｓ。以下、最大許容実行時間と言う）が長いタスクである。一方、ＨＳタスクは、最大許容実行時間（例えば、１００ｍｓ）が短いタスクである。
【００２５】
そして、図２に示すように、ＭＳタスクのタスクエントリ１〜３では、制御プログラム１〜３を実行し、ＭＳタスクのタスクエントリ４は、空である（言い換えると、制御プログラムを実行しない）。ここで、タスクにおいて制御プログラムが実行される順番は、タスクエントリの昇順である。また、図２に示すように、ＨＳタスクのタスクエントリ１，２では、制御プログラム４，５を実行し、ＭＳタスクのタスクエントリ３，４は、空である。コントローラ２が有するＣＰＵ２０１がシングルコアである場合、タスク間に優先順位を設定し、当該優先順位に従ってタスクを実行する。例えば、ＣＰＵ２０１は、スキャン周期の短いタスク（例えば、ＨＳタスク）を優先的に実行する。
【００２６】
図３は、本実施形態にかかるコントローラにおけるタスクの実行するタイミングチャートの一例である。ここでは、ＭＳタスク、ＨＳタスク、Ｉ／Ｏ割込タスクの順に優先順位が高い例について説明する。図３に示すように、ＨＳタスクの実行中に、ＭＳタスクを実行するタイミングｔ１となった場合、ＣＰＵ２０１は、ＨＳタスクの実行を一時中断して、ＭＳタスクを実行する。また、図３に示すように、ＨＳタスクの実行中に、Ｉ／Ｏ割込タスクを実行するタイミングｔ２となった場合、ＣＰＵ２０１は、ＨＳタスクの実行を一時中断して、Ｉ／Ｏ割込タスクを実行する。また、図３に示すように、ＭＳタスクの実行中にＩ／Ｏ割込タスクを実行するタイミングｔ３となった場合、ＣＰＵ２０１は、ＭＳタスクの実行を一時中断して、Ｉ／Ｏ割込タスクを実行する。なお、各タスクのスキャン周期内において、各タスク内の全ての制御プログラムが実行された後は、各タスクは、待機状態となる。
【００２７】
図４は、本実施形態にかかるコントローラにおいて実行される制御プログラムで用いられる情報の一例を説明するための図である。制御プログラムで使用される情報（例えば、プラント内のセンサ等から入力される入力情報）は、制御プログラムの変数として扱われる。変数の実体は、コントローラ２内のメモリであり、当該メモリに変数を割り当てて（定義して）、制御プログラムにおいて使用される。そのメモリには、制御プログラムがローカルで使用するローカル変数、制御プログラム間で共有するグローバル変数がある。また、制御プログラムの設計には、ファンクションブロック（ＦＢ）と呼ばれるベンダまたはエンジニアによって予め用意される機能（関数）を用いる。
【００２８】
ファンクションブロックは、図４に示すように、入力情報が入力変数１および入力変数２として与えられると、所定の演算を行い、その演算結果である出力変数１を出力情報として出力する。例えば、ファンクションブロックが積演算である場合、ファンクションブロックは、入力変数１：「５」および入力変数２：「５」が与えられると、出力変数１：「２５」を出力する。ファンクションブロックに与える入力変数の数やファンクションブロックから出力する出力変数の数は任意に設定可能である。また、ファンクションブロックから出力される出力変数を、出力変数以外の変数に格納することも可能である。
【００２９】
図５は、本実施形態にかかるコントローラにおいて実行される制御プログラムの一例を説明するための図である。例えば、コントローラ２のタスクにおいて実行される制御プログラム（例えば、ＰＯＵ１）は、図５に示すように、ファンクションブロック２０ａ〜２０ｅを含む。コントローラ２のエンジニアリング（例えば、コントローラ２の登録、制御プログラムの設計、変数の割当）は、専用のツールを使用して、エンジニアリングツール３から制御プログラム（例えば、ＰＯＵ１）をダウンロードすることにより実現する。
【００３０】
ところで、上述した制御システムにおいても、クラウドやエッジコンピューティング技術が採用され始めている。制御システム内のコントローラ２は、組み込み型であるため、リソースの制約が多く、大量のデータの収集や、蓄積、処理等に向かないという背景がある。そのため、クラウドやエッジコンピュータ（上位層）が、制御システム（下位層）において用いられるデータの収集や、蓄積、処理等を行うことで、当該データの新たな価値の発見や当該データの新たな活用方法を見出すことが求められている。
【００３１】
例えば、制御システム内にエッジコンピュータを配置し、当該エッジコンピュータにおいて、ＬＡＮ５内のコントローラ２のデータの収集や、蓄積、処理等を行い、そのデータの一部をクラウドに送信する技術が開発されている。
【００３２】
また、エッジコンピュータとコントローラ２を１台の機器にまとめ、その機器において、ＬＡＮ５内のコントローラ２のデータの収集や、蓄積、処理等を行い、そのデータの一部をクラウドに送信する技術も開発されている。このような技術は、組み込み型のコントローラ２においては採用できないが、ソフトウェアにより動作するコントローラ２においては実現可能である。
【００３３】
しかしながら、ノード（例えば、コントローラ２、エッジコンピュータ、クラウド）間における通信設定（例えば、通信相手、通信データ）は、コントローラ２において実行される制御プログラムの設計において実行される。そして、各コントローラ２において実行される制御プログラムの集合が制御システムとして機能する。そのため、ノード間におけるデータの全体的な流れを把握することは、制御プログラムを設計するエンジニアであっても困難な場合がある。
【００３４】
また、ノード間におけるデータの送受信によるネットワーク負荷を把握することは、制御システムの運用コストの見積に役立ち、かつ制御プログラムの柔軟な設計変更が可能となる。また、制御システム内のデータをクラウドに送信する場合、データの外部への流出を想定する必要がある。そのため、制御システムから何のデータをどこへ送信するかを一元的に管理すると共に、クラウドへの意図しないデータの送信を防止するメカニズムが求められている。
【００３５】
そこで、本実施形態では、エンジニアリングツール３は、ノード間において変数を送受信する通信用のＦＢ（以下、通信用ＦＢと言う）を含む制御プログラムに基づいて、ノード間での変数の送受信の全体的な流れを管理するデータベース（後述する変数管理データベース３０３ａ、ノード管理データベース３０３ｂ、および送信権限データベース３０３ｃ）を生成する。
【００３６】
これにより、ノード間における変数の送受信の全体的な流れを把握するために、制御プログラムを解析する必要がなくなる。その結果、制御プログラムを設計するエンジニア等が、制御プログラムが含む通信用ＦＢによる、ノード間における変数の送受信の全体的な流れを容易に把握することができる。
【００３７】
また、ノード間における変数の送受信によるネットワーク負荷を容易に把握することができるので、制御システムの運用コストの見積が容易になり、かつ制御プログラムの柔軟な設計変更が可能となる。さらに、どの変数がどこへ送信されるかを一元的に管理可能となり、かつクラウド等への意図しない変数の送信を防止することができる。
【００３８】
具体的には、エンジニアリングツール３のＣＰＵ３０１（プロセッサの一例）は、制御システム内のコントローラ２において実行される制御プログラムを生成または更新する。次いで、ＣＰＵ３０１は、生成または更新した制御プログラムを、ＨＤＤ３０３等の記憶部に書き込む。
【００３９】
そして、ＣＰＵ３０１は、制御プログラムをＨＤＤ３０３等の記憶部に書き込む（保存する）際、変数管理データベース３０３ａ、ノード管理データベース３０３ｂ、および送信権限データベース３０３ｃを、ノード間での変数の送受信の全体的な流れを管理するデータベースとして生成する。本実施形態では、制御プログラムを記憶部に書き込む際に、上記のデータベースを生成しているが、予め設定されたタイミング（例えば、制御プログラムが生成または更新された場合等）に、上記のデータベースを生成するものであれば、これに限定するものではない。そして、ＣＰＵ３０１は、生成した変数管理データベース３０３ａ、ノード管理データベース３０３ｂ、および送信権限データベース３０３ｃを、ＨＤＤ３０３等の記憶部に書き込む。
【００４０】
これにより、変数管理データベース３０３ａ、ノード管理データベース３０３ｂ、および送信権限データベース３０３ｃを参照することで、ノード間における変数の送受信の全体的な流れを把握するために、制御プログラムを解析する必要が無くなる。その結果、制御プログラムを設計するエンジニア等が、ノード間における変数の送受信の全体的な流れを容易に把握することができる。
【００４１】
ここで、変数管理データベース３０３ａは、制御プログラムによるノード間での変数の送受信によるネットワーク負荷を示すデータベースである。本実施形態では、変数管理データベース３０３ａは、下記の表１に示すように、ＰＯＵ番号、ＦＢ番号、変数名、送信先、通信プロトコル、送信頻度（スキャン周期）、送信メッセージ長、およびネットワーク負荷を含むデータベースである。
【表１】
2020144812.tif 000003
【００４２】
ここで、ＰＯＵ番号は、通信用ＦＢを含む制御プログラムを識別する番号（例えば、ＰＯＵ１）である。
【００４３】
ＦＢ番号は、通信用ＦＢを識別する番号（例えば、「ＦＢ１」）である。
【００４４】
変数名は、変数の名称（例えば、「変数１」）である。本実施形態では、ＣＰＵ３０１は、変数名と、ＨＤＤ３０３等の記憶部上における変数の記憶領域のメモリアドレスと、当該記憶領域のサイズと、を対応付けるテーブルを、ＨＤＤ３０３等の記憶部に予め書き込んでおくものとする。そして、変数を読み出す場合、ＣＰＵ３０１は、当該テーブルから、読み出す変数の変数名と対応付けられるメモリアドレスおよびサイズを抽出する。そして、ＣＰＵ３０１は、抽出したメモリアドレスおよびサイズに基づいて、ＨＤＤ３０３等の記憶部から、変数を読み出すものとする。
【００４５】
送信先は、変数が送信されるノードのＩＰアドレス（例えば、１７２．１６．６４．２）である。
【００４６】
通信プロトコルは、変数の送受信に用いる通信プロトコル（例えば、ＵＤＰ：User  Datagram  Protocol）である。
【００４７】
送信頻度は、変数の送受信の頻度（例えば、１０００ｍｓ）であり、サイクリックスキャン伝送によってノード間において変数が送受信される場合にはスキャン周期である。
【００４８】
送信メッセージ長は、変数のサイズ（例えば、１５００ｂｙｔｅ）である。ネットワーク負荷は、単位時間（例えば、１０００ｍｓ）当たりに送受信される変数のデータ量（例えば、１５００ｂｙｔｅ／ｓｅｃ）である。
【００４９】
すなわち、変数管理データベース３０３ａは、各制御プログラムが含む通信用ＦＢ毎に、変数名、送信先、通信プロトコル、送信頻度、送信メッセージ長、およびネットワーク負荷を示すデータベースである。
【００５０】
また、ノード管理データベース３０３ｂは、制御プログラムが含む通信用ＦＢによって変数を送受信するノードのＩＰアドレスを示すデータベースである。本実施形態では、ノード管理データベース３０３ｂは、下記の表２に示すように、ノード番号、ノード名、およびＩＰアドレスを含むデータベースである。
【表２】
2020144812.tif 000004
【００５１】
ここで、ノード番号は、ノードを識別する番号である。
【００５２】
ノード名は、ノードの名称（例えば、「コントローラ１」、「エッジコンピュータ１」）である。
【００５３】
ＩＰアドレスは、ノードのＩＰアドレス（例えば、１７２．１６．６４．１）である。
【００５４】
また、送信権限データベース３０３ｃは、変数毎に、当該変数の送信が許可されているノードを示すデータベースである。本実施形態では、送信権限データベース３０３ｃは、下記の表３に示すように、変数名、および送信権限情報を含むデータベースである。
【表３】
2020144812.tif 000005
【００５５】
ここで、変数名は、変数の名称である。
【００５６】
送信権限情報は、変数毎に、当該変数の送信が許可されているノードを示す情報である。
【００５７】
本実施形態では、送信権限情報は、各ノードに対応するビットを有する情報である。例えば、送信権限情報が含むビットのうち右から起算して１番目のビット（言い換えると、送信権限情報が含むビットのうち１の位のビット）は、ノード管理データベース３０３ｂにおいてノード番号が１のノードに対応するビットである。また、送信権限情報が含むビットのうち右から起算して２番目のビットは、ノード管理データベース３０３ｂにおいてノード番号が２のノードに対応するビットである。すなわち、送信権限情報が含むビットを右から起算した順序と、ノード管理データベース３０３ｂにおけるノード番号と、が対応している。
【００５８】
そして、送信権限情報が含むビットが１の場合には、当該ビットに対応するノードへの変数の送信が許可されていることを示す。一方、送信権限情報が含むビットが０の場合には、当該ビットに対応するノードへの変数の送信が許可されていないことを示す。
【００５９】
例えば、表３に示すように、変数名：「変数１」の変数は、その送信権限情報：「１１１１  １１１１  １１１１  １１０１」が含むビットのうち右から起算して２番目のビットが０であるため、ノード番号が２のノード（表２に示すノード管理データベース３０３ｂが含むノード番号：「２」のノード（「エッジコンピュータ１」）への送信が許可されていない。
【００６０】
また、表３に示すように、変数名：「変数１」の変数は、その送信権限情報：「１１１１  １１１１  １１１１  １１０１」が含むビットのうち右から起算して２番目のビット以外のビットが１であるため、ノード番号が２以外のノード（表２に示すノード管理データベースが含むノード番号：「１」，「３」〜「１６」のノードへの送信が許可されている。
【００６１】
本実施形態では、送信権限データベース３０３ｃが生成された時点の送信権限情報には、全てのノードへの変数の送信が許可されていないことを示す情報（すなわち、全てのビットが０を示す送信権限情報）がデフォルト値として設定される。エンジニアリングツール３のオペレータは、ＨＤＤ３０３等の記憶部に記憶される変数管理データベース３０３ａ、ノード管理データベース３０３ｂ、および送信権限データベース３０３ｃを参照しながら、各変数について、各ノードへの送信を許可して良いか否かを判断する。そして、エンジニアリングツール３のオペレータは、入力装置３０６等を介して、各変数の送信権限情報が含むビットのうち、当該変数の送信を許可するノードに対応するビットを１に設定していくものとする。
【００６２】
また、ＣＰＵ３０１は、制御プログラムを記憶部（例えば、ＨＤＤ３０３）に書き込み直す度に（再度保存する度に）、変数管理データベース３０３ａ、ノード管理データベース３０３ｂ、および送信権限データベース３０３ｃを生成し直す。そして、ＣＰＵ３０１は、生成し直した変数管理データベース３０３ａ、ノード管理データベース３０３ｂ、および送信権限データベース３０３ｃを、ＨＤＤ３０３等の記憶部に書き込む。
【００６３】
また、ＣＰＵ３０１は、入力装置３０６等を介して、ＨＤＤ３０３等の記憶部に記憶される制御プログラムのコントローラ２へのダウンロードの要求が入力されると、ＨＤＤ３０３等の記憶部に記憶される変数管理データベース３０３ａ、ノード管理データベース３０３ｂ、および送信権限データベース３０３ｃに基づいて、ノード間における変数の全体的な流れを把握可能な画面を、ディスプレイ３０５に表示させる。
【００６４】
さらに、ＣＰＵ３０１は、入力装置３０６等を介して、ＨＤＤ３０３等の記憶部に記憶される制御プログラムのコントローラ２へのダウンロードの要求が入力されると、変数管理データベース３０３ａ、ノード管理データベース３０３ｂ、および送信権限データベース３０３ｃに基づいて、制御プログラムが含む通信用ＦＢにより送受信される変数毎に、変数の送信が許可されていないノードへ変数が送信されていないか否かを判断する。
【００６５】
そして、ＣＰＵ３０１は、全ての変数について、変数の送信が許可されていないノードへ変数が送信されていないと判断した場合、コントローラ２に対して制御プログラムをダウンロード可能な状態とする。本実施形態では、ＣＰＵ３０１は、全ての変数について、変数の送信が許可されていないノードへ変数が送信されていないと判断した場合、制御プログラムのダウンロードの実行を指示するダウンロード実行ボタンをディスプレイ３０５に対して表示する。その後、ＣＰＵ３０１は、ダウンロード実行ボタンによって、制御プログラムのダウンロードの実行が指示された場合、当該制御プログラムをコントローラ２に対してダウンロードする。
【００６６】
一方、ＣＰＵ３０１は、少なくとも１つの変数について、変数の送信が許可されていないノードへ変数が送信されていると判断した場合、コントローラ２への制御プログラムのダウンロードを実行しない。本実施形態では、ＣＰＵ３０１は、少なくとも１つの変数について、変数の送信が許可されていないノードへ変数が送信されていると判断した場合、ダウンロード実行ボタンをディスプレイ３０５に対して表示しない。
【００６７】
図６は、本実施形態にかかるエンジニアリングツールにおいて表示される変数管理画面の一例を示す図である。次に、図６を用いて、本実施形態にかかるエンジニアリングツール３において表示される変数管理画面Ｇ１の一例について説明する。
【００６８】
本実施形態では、入力装置３０６等を介して、ＨＤＤ３０３等の記憶部に記憶される制御プログラムのコントローラ２へのダウンロードの要求が入力されると、ＣＰＵ３０１は、まず、図６に示すように、変数管理データベース３０３ａに基づいて、変数管理画面Ｇ１をディスプレイ３０５に表示させる。
【００６９】
具体的には、ＣＰＵ３０１は、上記の表１に示す変数管理データベースから、制御プログラムの通信用ＦＢによる変数の送信先毎に、ネットワーク負荷を抽出する。次いで、ＣＰＵ３０１は、送信先毎に、当該抽出したネットワーク負荷を積算する。
【００７０】
そして、ＣＰＵ３０１は、図６に示すように、送信先６０１、当該送信先６０１毎に積算したネットワーク負荷６０２、および当該送信先６０１に送信する変数名の表示を指示可能な変数一覧ボタン６０３を含む変数管理画面Ｇ１を、ディスプレイ３０５に表示させる。これにより、エンジニアリングツール３のオペレータは、変数が送信されるノード、および当該変数のノードへの送信によるネットワーク負荷を容易に認識することができる。
【００７１】
その際、ＣＰＵ３０１は、上記の表１に示す変数管理データベース３０３ａから、制御プログラムの通信用ＦＢにより送信する変数の変数名（例えば、変数１、変数２）および送信先（例えば、１７２．１６．６４，２、１７２．１６．６４．３）を抽出する。また、ＣＰＵ３０１は、ノード管理データベース３０３ｂから、抽出した送信先（ＩＰアドレス）に対応するノード番号（例えば、１，２）を抽出する。次いで、ＣＰＵ３０１は、上記の表３に示す送信権限データベース３０３ｃにおいて当該抽出した変数名と対応付けられる送信権限情報が含むビットのうち、抽出したノード番号に対応するビットに基づいて、当該抽出した変数名の各変数について、送信先６０１への送信が許可されているか否かを判断する。
【００７２】
そして、ＣＰＵ３０１は、図６に示すように、変数管理画面Ｇ１に含める変数一覧ボタン６０３のうち、送信先６０１への送信が許可されていない変数名の表示を指示可能な変数一覧ボタン６０３を、予め設定された表示態様とは異なる表示態様（例えば、網掛け）で表示させる。これにより、エンジニアリングツール３のオペレータ（エンジニア）は、制御プログラムの通信用ＦＢによる変数の送信先に、変数の送信が許可されていないノードが含まれることを容易に認識することができる。
【００７３】
図７は、本実施形態にかかるエンジニアリングツールにおいて表示される変数一覧画面の一例を示す図である。次に、図７を用いて、本実施形態にかかるエンジニアリングツール３において表示される変数一覧画面Ｇ２の一例について説明する。
【００７４】
本実施形態では、入力装置３０６等を介して、図６に示す変数管理画面Ｇ１が含む変数一覧ボタン６０３が押下されると、ＣＰＵ３０１は、変数管理データベース３０３ａから、変数一覧ボタン６０３により表示が指示された変数名、および当該変数名と対応付けられるネットワーク負荷を抽出する。そして、ＣＰＵ３０１は、図７に示すように、変数名７０１、ネットワーク負荷７０２、および参照ボタン７０３を含む変数一覧画面Ｇ２をディスプレイ３０５に表示させる。これにより、エンジニアリングツール３のオペレータは、ノード間での各変数の送受信によるネットワーク負荷を容易に認識することができる。ここで、参照ボタン７０３は、変数名７０１の変数を送信する通信用ＦＢ、および当該通信用ＦＢを含む制御プログラムの表示を指示可能なボタンである。
【００７５】
その際、ＣＰＵ３０１は、図６に示す変数管理画面Ｇ１の変数一覧ボタン６０３を表示する処理と同様にして、変数管理データベース３０３ａ、ノード管理データベース３０３ｂ、および送信権限データベース３０３ｃに基づいて、変数名７０１の各変数について、変数の送信が許可されていないノードへの送信が許可されていないか否かを判断する。そして、ＣＰＵ３０１は、図７に示すように、変数一覧画面Ｇ２に含める参照ボタン７０３のうち、変数の送信が許可されていないノードへ変数（例えば、変数１）を送信する通信用ＦＢおよび制御プログラムの表示を指示可能な参照ボタン７０３を、予め設定された表示態様とは異なる表示態様（例えば、網掛け）で表示させる。これにより、エンジニアリングツール３のオペレータは、変数の送信が許可されていないノードへ送信される変数を容易に認識することができる。
【００７６】
図８は、本実施形態にかかるエンジニアリングツールにおいて表示される変数参照画面の一例を示す図である。次に、図８を用いて、本実施形態にかかるエンジニアリングツールにおいて表示される変数参照画面Ｇ３の一例について説明する。
【００７７】
本実施形態では、入力装置３０６等を介して、図７に示す変数一覧画面Ｇ２が含む参照ボタン７０３が押下されると、ＣＰＵ３０１は、変数管理データベース３０３ａから、参照ボタン７０３により通信用ＦＢおよび制御プログラムの表示が指示された変数名と対応付けられるＰＯＵ番号およびＦＢ番号を抽出する。そして、ＣＰＵ３０１は、図８に示すように、抽出したＰＯＵ番号８０１およびＦＢ番号８０２を含む変数参照画面Ｇ３をディスプレイ３０５に表示させる。これにより、エンジニアリングツール３のオペレータは、ノード間で送受信される変数が、いずれの制御プログラムおよび通信用ＦＢにより送受信されるかを容易に認識することができる。
【００７８】
図９は、本実施形態にかかるエンジニアリングツールによる制御プログラムのコントローラへのダウンロード処理の流れの一例を示す図である。次に、図９を用いて、本実施形態にかかるエンジニアリングツール３によるコントローラ２への制御プログラムのダウンロード処理の流れの一例について説明する。
【００７９】
上述したように、ＣＰＵ３０１は、制御プログラムが生成または更新され、当該制御プログラムを記憶部に保存し直す度に、変数管理データベース３０３ａ、ノード管理データベース３０３ｂ、および送信権限データベース３０３ｃを生成する。
【００８０】
また、ＣＰＵ３０１は、入力装置３０６等を介して、ＨＤＤ３０３等の記憶部に記憶される制御プログラムのコントローラ２へのダウンロードの要求が入力されると、変数管理データベース３０３ａ、ノード管理データベース３０３ｂ、および送信権限データベース３０３ｃを参照して、各変数について、変数の送信が許可されていないノードへ変数が送信されていないか否かを判断する（ステップＳ９０１）。
【００８１】
具体的には、ＣＰＵ３０１は、変数管理データベース３０３ａから、制御プログラムの通信用ＦＢにより送信する各変数の変数名および送信先を抽出する。また、ＣＰＵ３０１は、ノード管理データベース３０３ｂから、抽出した送信先に対応するノード番号を抽出する。次いで、ＣＰＵ３０１は、送信権限データベース３０３ｃにおいて当該抽出した変数名と対応付けられる送信権限情報が含むビットのうち、抽出したノード番号に対応するビットに基づいて、当該抽出した変数名の各変数について、抽出した送信先への送信が許可されているか否かを判断する。これにより、ＣＰＵ３０１は、各変数について、変数の送信が許可されていないノードへ変数が送信されていないか否かを判断する。
【００８２】
その際、ＣＰＵ３０１は、ディスプレイ３０５に対して、図６に示す変数管理画面Ｇ１、図７に示す変数一覧画面Ｇ２、および図８に示す変数参照画面Ｇ３を表示させても良い。
【００８３】
少なくとも１つの変数について、変数の送信が許可されていないノードへ変数が送信される場合（ステップＳ９０１：Ｎｏ）、ＣＰＵ３０１は、ディスプレイ３０５に対して、ダウンロード実行ボタンを表示させない。
【００８４】
その際、ディスプレイ３０５に対して変数管理画面Ｇ１が表示されている場合、ＣＰＵ３０１は、変数管理画面Ｇ１に含める変数一覧ボタン６０３のうち、変数の送信が許可されていないノードへ送信される変数の変数名の表示を指示可能な変数一覧ボタン６０３を、予め設定された表示態様とは異なる表示態様に変更する（ステップＳ９０２）。
【００８５】
または、ディスプレイ３０５に対して変数一覧画面Ｇ２が表示されている場合、ＣＰＵ３０１は、変数一覧画面Ｇ２に含める参照ボタン７０３のうち、変数の送信が許可されていないノードへ変数を送信する通信用ＦＢおよび制御プログラムの表示を指示可能な参照ボタン７０３を、予め設定された表示態様とは異なる表示態様に変更する（ステップＳ９０２）。
【００８６】
その後、ＣＰＵ３０１は、制御プログラムが生成または更新されて、再度、制御プログラムのコントローラ２へのダウンロードの要求が入力されるのを待つ。
【００８７】
一方、全ての変数について、変数の送信が許可されていないノードへ変数が送信されない場合（ステップＳ９０１：Ｙｅｓ）、ＣＰＵ３０１は、ディスプレイ３０５に対して、ダウンロード実行ボタンを表示させて、制御プログラムをコントローラ２に対してダウンロード可能な状態とする（ステップＳ９０３）。そして、入力装置３０６等を介して、ディスプレイ３０５に表示されるダウンロード実行ボタンが押下されると（ステップＳ９０４：Ｙｅｓ）、ＣＰＵ３０１は、ＨＤＤ３０３等の記憶部に記憶される制御プログラムのコントローラ２へのダウンロードを実行する（ステップＳ９０５）。
【００８８】
このように、本実施形態にかかるエンジニアリングツール３によれば、変数管理データベース３０３ａ、ノード管理データベース３０３ｂ、および送信権限データベース３０３ｃを参照することで、ノード間における変数の送受信の全体的な流れを把握するために、制御プログラムを解析する必要が無くなる。その結果、制御プログラムを設計するエンジニア等が、ノード間における変数の送受信の全体的な流れを容易に把握することができる。
【００８９】
また、ノード間における変数の送受信によるネットワーク負荷を把握することができるので、制御システムの運用コストの見積が容易になり、かつ制御プログラムの柔軟な設計変更が可能となる。さらに、どの変数がどこへ送信されるかを一元的に管理可能となり、かつクラウド等への意図しない変数の送信を防止することができる。
【００９０】
なお、本実施形態のエンジニアリングツール３で実行されるプログラムは、ＲＯＭ等に予め組み込まれて提供される。本実施形態のエンジニアリングツール３で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
【００９１】
さらに、本実施形態のエンジニアリングツール３で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態のエンジニアリングツール３で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【００９２】
本実施形態のエンジニアリングツール３で実行されるプログラムは、上述した各処理（制御プログラムの生成および更新、各種データベース３０３ａ，３０３ｂ，３０３ｃの生成、各種画面Ｇ１，Ｇ２，Ｇ３の表示制御、制御プログラムのダウンロード等）を実行するモジュール構成となっており、実際のハードウェアとしてはＣＰＵ３０１（プロセッサ）が上記ＲＯＭからプログラムを読み出して実行することにより、上述の各処理を実行するモジュールが主記憶装置上に生成されるようになっている。
【００９３】
本発明の実施形態を説明したが、この実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。この新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９４】
１  ＨＭＩ
２  コントローラ
３  エンジニアリングツール
３０１  ＣＰＵ
３０２  ＲＡＭ
３０３  ＨＤＤ
３０３ａ  変数管理データベース
３０３ｂ  ノード管理データベース
３０３ｃ  送信権限データベース
３０４  ＦＲＯＭ
３０５  ディスプレイ
３０６  入力装置
３０７  通信インタフェース
３０８  バス
Ｇ１  変数管理画面
Ｇ２  変数一覧画面
Ｇ３  変数参照画面
【図１】
2020144812.tif 000006
【図２】
2020144812.tif 000007
【図３】
2020144812.tif 000008
【図４】
2020144812.tif 000009
【図５】
2020144812.tif 000010
【図６】
2020144812.tif 000011
【図７】
2020144812.tif 000012
【図８】
2020144812.tif 000013
【図９】
2020144812.tif 000014