(57)【要約】【課題】制御プログラムと情報プログラムが適切に共存するプログラマブルコントローラを提供する。【解決手段】プログラマブルコントローラが、１以上の制御プログラムと１以上の情報プログラムであり当該プログラマブルコントローラのプロセッサ部により実行される２以上のプログラムを格納する。２以上のプログラムの各々又はその実行環境について、当該プログラム又はその実行環境についての複数のパラメータであるパラメータ群が、当該プログラム又はその実行環境の実行優先度を含む。少なくとも１つの情報プログラム又はその実行環境について指定可能な実行優先度が、少なくとも１つの制御プログラム又はその実行環境について指定可能な実行優先度のうちの最低の実行優先度以上である。【選択図】図２
2019057212.tif 000002
【特許請求の範囲】
【請求項１】
１以上のインターフェースを含むインターフェース部と、
１以上のメモリを含む記憶部と、
前記インターフェース部及び前記記憶部に接続された１以上のプロセッサを含むプロセッサ部と
を有し、
前記記憶部が、前記プロセッサ部により実行される複数のプログラムを格納し、
前記複数のプログラムが、１以上の制御プログラムと１以上の情報プログラムである２以上のプログラムを含み、
前記２以上のプログラムの各々又はその実行環境について、当該プログラム又はその実行環境についての複数のパラメータであるパラメータ群が、当該プログラム又はその実行環境の実行優先度を含み、
少なくとも１つの情報プログラム又はその実行環境について指定可能な実行優先度のうちの最高の実行優先度が、少なくとも１つの制御プログラム又はその実行環境について指定可能な実行優先度のうちの最低の実行優先度以上である、
プログラマブルコントローラ。
【請求項２】
前記プロセッサ部が、
前記少なくとも１つの情報プログラム又はその実行環境について、当該情報プログラム又はその実行環境のパラメータ群のうちの１以上のパラメータのＵＩ（ユーザインターフェース）を、前記インターフェース部を介して表示し、
前記少なくとも１つの情報プログラム又はその実行環境について、実行優先度を含む特定の種類の１以上のパラメータである特定パラメータ群に関して、設定要求を、前記インターフェース部を介して受け付けた場合に、当該特定パラメータ群の設定がいずれかの制御プログラム又はその実行環境による制御に影響を与え得ることを意味する警告を、前記インターフェース部を介して表示し、
前記警告に対する承認を前記インターフェース部を介して受け付けた場合に、前記特定パラメータ群の少なくとも実行優先度のＵＩをイネーブルにする、
請求項１に記載のプログラマブルコントローラ。
【請求項３】
前記２以上のプログラムの各々について、当該プログラムの実行環境は、コンテナ型仮想化に従うコンテナであり、
前記プロセッサ部が、
２以上のコンテナの状態を前記インターフェース部を介して表示し、
前記２以上のコンテナのうち、いずれのプログラムも格納されていない空きのコンテナについて、設定要求を前記インターフェース部を介して受け付けた場合に、当該空きのコンテナに格納される前記少なくとも１つの情報プログラム又はそのコンテナについて、前記１以上のパラメータのＵＩを表示する、
請求項２に記載のプログラマブルコントローラ。
【請求項４】
前記２以上のプログラムは、前記インターフェース部を介してロードされたプログラムであり、
前記２以上のプログラムは、制御プログラムと情報プログラムの関係を示した情報であるプログラム関係情報に基づく提示からロード対象として選択されたプログラムを含み、
前記提示は、制御プログラムと当該制御プログラムと関係する情報プログラムとを示す情報の提示である、
請求項１に記載のプログラマブルコントローラ。
【請求項５】
プログラマブルコントローラと、
前記プログラマブルコントローラにプログラムをロードするプログラム配布装置と
を有し、
前記プログラマブルコントローラは、複数のプログラムを格納し、
前記複数のプログラムが、１以上の制御プログラムと１以上の情報プログラムであり前記プログラム配布装置からロードされた２以上のプログラムを含み、
前記２以上のプログラムの各々又はその実行環境について、当該プログラム又はその実行環境についての複数のパラメータであるパラメータ群が、当該プログラム又はその実行環境の実行優先度を含み、
少なくとも１つの情報プログラム又はその実行環境について指定可能な実行優先度が、少なくとも１つの制御プログラム又はその実行環境について指定可能な実行優先度のうちの最低の実行優先度以上である、
コントロールシステム。
【請求項６】
プログラマブルコントローラで実行されるプログラムのパラメータの設定を制御する方法であって、
プログラマブルコントローラに格納される１以上の制御プログラムと１以上の情報プログラムである２以上のプログラムのうち少なくとも１つの情報プログラム又はその実行環境について、当該情報プログラム又はその実行環境のパラメータ群のうちの少なくとも１つのパラメータのＵＩ（ユーザインターフェース）を表示し、
プログラムの実行優先度を含む特定の種類の１以上のパラメータである特定パラメータ群に関して、設定要求を受け付けた場合に、当該特定パラメータ群の設定がいずれかの制御プログラム又はその実行環境による制御に影響を与え得ることを意味する警告を表示し、
前記警告に対する承認を受け付けた場合に、前記少なくとも１つの情報プログラム又はその実行環境について指定可能な実行優先度が、少なくとも１つの制御プログラム又はその実行環境について指定可能な実行優先度のうちの最低の実行優先度以上であるように、前記特定パラメータ群の少なくとも実行優先度のＵＩをイネーブルにする、
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、プログラマブルコントローラに関する。
【背景技術】
【０００２】
プログラマブルコントローラは、プログラムで定められた順序や条件などに従って制御対象を制御する装置であり、一般に、シーケンス制御装置、モーション制御装置及びプログラマブル・ロジック・コントローラ（ＰＬＣ）のうちのいずれか（又は、それらのうちの２以上の装置が一体化された装置）である。
【０００３】
そのような制御のための制御プログラムは、一般に、ラダー・ロジック（ＬＤ言語）、シーケンシャル・ファンクション・チャート（ＳＦＣ言語）、ファンクション・ブロック（ＦＢＤ言語）、ストラクチャード・テキスト（ＳＴ言語）、又は、インストラクション・リスト（ＩＬ言語）のような制御系特有のプログラミング言語を用いて記述される。
【０００４】
一方、プログラミング開発環境やプログラミング言語などのオープン化や標準化により、制御系特有のプログラミング言語に加えて、Ｃ言語などの汎用のプログラミング言語を採用することが考えられている。特許文献１及び２には、制御系特有のプログラミング言語で記述されたプログラムと汎用のプログラミング言語で記述されたプログラムが共存する環境が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−１７８８１８号公報
【特許文献２】特開２００２−１８９５０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
制御に必要な情報（例えば、センサによる測定値）を取得するための通信を制御プログラムによる制御の一部とすること（すなわち、通信について制御プログラムに記述されていること）が考えられるが、通信のような情報処理は制御プログラムによる制御とは分離しておくことが望ましいケースがあると考えられる。そのように考えられる１つの理由は、プログラマブルコントローラは、通常、工作機械、自動組み立て装置又は自動搬送装置のような自動機械や生産設備の制御に使用され、高い安定性が求められるためである。
【０００７】
そこで、制御プログラムに加えて、通信のような情報処理について記述されたプログラムである情報プログラムを用意しておくことが考えられる。高い安定性を維持するために制御プログラムを優先するべく、情報プログラムをプログラマブルコントローラとは別の装置で実行することが考えられるが、計算リソース節約の観点から、制御プログラムと情報プログラムの両方をプログラマブルコントローラで実行するニーズが考えられる。このようなニーズに応えたプログラマブルコントローラでは、制御プログラムと情報プログラムが適切に共存することが求められると考えられる。特許文献１及び２は、制御系特有のプログラミング言語と汎用のプログラミング言語といった異なるプログラミング言語で記述された制御プログラムの共存を開示しているにすぎず、制御プログラムと情報プログラムの適切な共存のための技術を開示も示唆もしていない。
【課題を解決するための手段】
【０００８】
プログラマブルコントローラが、１以上の制御プログラムと１以上の情報プログラムであり当該プログラマブルコントローラのプロセッサ部により実行される２以上のプログラムを格納する。２以上のプログラムの各々又はその実行環境について、当該プログラム又はその実行環境についての複数のパラメータであるパラメータ群が、当該プログラム又はその実行環境の実行優先度を含む。少なくとも１つの情報プログラム又はその実行環境について指定可能な実行優先度のうちの最高の実行優先度が、少なくとも１つの制御プログラム又はその実行環境について指定可能な実行優先度のうちの最低の実行優先度以上である。
【発明の効果】
【０００９】
高い安定性を維持するために、全ての情報プログラム（又はその実行環境）について、指定可能な実行優先度のうちの最高の実行優先度を、いずれの制御プログラム（又はその実行環境）の指定可能な実行優先度のうちの最低の実行優先度よりも低くしておくことが考えられる。しかし、全ての制御プログラム（又はその実行環境）が、いずれも、頻繁に又は長時間、プロセッサ部のような計算リソースを使用するとは限らない。このため、一律に、全ての情報プログラム（又はその実行環境）について、指定可能な実行優先度のうちの最高の実行優先度を、いずれの制御プログラム（又はその実行環境）の指定可能な実行優先度のうちの最低の実行優先度よりも低いとしておくと、プログラマブルコントローラの処理性能が無駄に下がることが生じ得る。本発明によれば、そのような可能性が低減し、プログラマブルコントローラにおいて制御プログラムと情報プログラムとが適切に共存する。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施形態に係るプログラマブルコントローラを含んだシステム全体のハードウェア構成を示す。
【図２】コントロールシステムの機能ブロックを示す。
【図３】コンテナ管理テーブルの構成を示す。
【図４】ＡＰＰ管理テーブルの構成を示す。
【図５】ＡＰＰ関係テーブルの構成を示す。
【図６】実施形態に係るPRIOROTY設定の概要を示す。
【図７】PRIOROTY設定の一比較例を示す。
【図８】状態画面を示す。
【図９】設定画面を示す。
【図１０】Advanced settingsの要求前のAdvanced settings用のＵＩの状態を示す。
【図１１】Advanced settingsの要求時の警告を示す。
【図１２】警告の承認後のAdvanced settings用のＵＩの状態を示す。
【図１３】ロード処理の流れを示す。
【図１４】実行制御処理の流れを示す。
【図１５】設定制御処理の流れを示す。
【発明を実施するための形態】
【００１１】
以下、本発明の一実施形態を説明する。
【００１２】
以下の説明では、「インターフェース部」は、１以上のインターフェースを含み、当該１以上のインターフェースは、ユーザインターフェース部と、通信インターフェース部とのうちの少なくとも１つを含んでよい。ユーザインターフェース部は、１以上のＩ／Ｏデバイス（例えば入力デバイス（例えばキーボード及びポインティングデバイス）と出力デバイス（例えば表示デバイス））と表示用計算機とのうちの少なくとも１つのＩ／Ｏデバイスに対するインターフェースデバイスを含んでよい。通信インターフェース部は、１以上の通信インターフェースデバイスを含んでよい。１以上の通信インターフェースデバイスは、１以上の同種の通信インターフェースデバイス（例えば１以上のＮＩＣ（Network Interface Card））であってもよいし２以上の異種の通信インターフェースデバイス（例えばＮＩＣとＨＢＡ（Host Bus Adapter））であってもよい。
【００１３】
また、以下の説明では、「記憶部」は、１以上のメモリを含む。記憶部に関して少なくとも１つのメモリは、揮発性メモリでよい。記憶部は、主に、プロセッサ部による処理の際に使用される。記憶部は、メモリの他に、１以上の不揮発性の記憶デバイス（例えば、ＨＤＤ（Hard Disk Drive）又はＳＳＤ（Solid State Drive））を含んでもよい。
【００１４】
また、以下の説明では、「プロセッサ部」は、１以上のプロセッサを含む。少なくとも１つのプロセッサは、典型的には、ＣＰＵ（Central Processing Unit）のようなマイクロプロセッサであるが、GPU（Graphics Processing Unit）のような他種のプロセッサでもよい。１以上のプロセッサの各々は、シングルコアでもよいしマルチコアでもよい。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
【００１５】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部（例えばメモリ）及び／又はインターフェース部（例えば通信ポート）等を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサ部あるいはそのプロセッサ部を有する装置が行う処理としてもよい。また、プロセッサ部は、処理の一部又は全部を行うハードウェア回路（例えばＦＰＧＡ（Field-Programmable Gate Array）又はＡＳＩＣ（Application Specific Integrated Circuit））を含んでもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記録媒体（例えば非一時的な記録媒体）であってもよい。また、以下の説明において、２以上のプログラムが１つのプログラムとして実現されてもよいし、１つのプログラムが２以上のプログラムとして実現されてもよい。
【００１６】
また、以下の説明では、「ｘｘｘテーブル」といった表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「ｘｘｘテーブル」を「ｘｘｘ情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、１つのテーブルは、２以上のテーブルに分割されてもよいし、２以上のテーブルの全部又は一部が１つのテーブルであってもよい。
【００１７】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別する場合は、参照符号を使用することがある。
【００１８】
また、以下の説明では、「ＡＰＰ」は、アプリケーションプログラムの略である。制御ＡＰＰは、制御プログラムの一例であり、情報ＡＰＰは、情報プログラムの一例である。以下の説明において、「ＡＰＰ」は、制御ＡＰＰと情報ＡＰＰの総称である。
【００１９】
図１は、本発明の一実施形態に係るプログラマブルコントローラを含んだシステム全体のハードウェア構成を示す。
【００２０】
プログラム配布装置１０１、プログラマブルコントローラ１０９、管理ユーザ計算機１５１Ｍ及び一般ユーザ計算機１５１Ｇがネットワーク１０８に接続されている。これらの装置のうちの１以上の装置（例えば、管理ユーザ計算機１５１Ｍ及び一般ユーザ計算機１５１Ｇ）の各々が、複数存在してもよい。また、プログラム配布装置１０１及びプログラマブルコントローラ１０９によりコントロールシステムが構成されてよい。また、コントロールシステムは、更に他の構成要素を含んでもよい。
【００２１】
管理ユーザ計算機１５１Ｍは、少なくとも管理ユーザが操作する計算機である。一般ユーザ計算機１５１Ｇは、少なくとも一般ユーザが操作する計算機である。いずれの計算機も、プログラム配布装置１０１及びプログラマブルコントローラ１０９の少なくとも１つに対する入出力コンソールとして機能する。具体的には、例えば、いずれの計算機も、キーボード及びポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとを有する。「管理ユーザ」は、制御ＡＰＰを記述するユーザ（例えば、自動機械や生産設備といった制御対象に関して深い知識を有する技術者）であり、「一般ユーザ」は、情報ＡＰＰを記述するユーザ（例えば、制御対象に関して深い知識を持たない一般的なシステムエンジニア）である。本実施形態では、プログラマブルコントローラ１０９が、管理ユーザ計算機１５１Ｍ及び一般ユーザ計算機１５１Ｇから制御ＡＰＰ又は情報ＡＰＰの記述（パラメータ群の設定を含む）を受け付けるが、プログラマブルコントローラ１０９に代えて又は加えて、プログラム配布装置１０１が、当該記述を受け付けてもよい。
【００２２】
プログラム配布装置１０１は、プログラマブルコントローラ１０９にロードされる制御プログラム及び情報プログラムを管理している。プログラム配布装置１０１は、ＥＰＲＯＭ２０１、ＣＰＵ２０２、メインメモリ２０３、周辺制御デバイス２０５、不揮発性記憶デバイス２０６、ネットワークＩ／Ｆ（インターフェース）２０７、及びそれらが接続されたバス２０４を備える。プログラム配布装置１０１は、ネットワークＩ／Ｆ２０７を介してネットワーク１０８に接続される。プログラム配布装置１０１は、周辺制御デバイス２０５の制御によってネットワーク１０８を経由してプログラマブルコントローラ１０９に対して制御プログラムを提供したり情報プログラムを提供したりする。プログラム配布装置１０１では、ＣＰＵ２０２の制御によって、不揮発性記憶デバイス２０６に格納されている制御プログラム及び情報プログラムを要求に応じてロード（提供）する。周辺制御デバイス２０５は、バス２０４を介して、ＥＰＲＯＭ２０１、ＣＰＵ２０２及びメインメモリ２０３に接続されている。ＣＰＵ２０２は、ＥＰＲＯＭ２０１に格納されているプログラムをメインメモリ２０３に読み出して実行する。
【００２３】
プログラマブルコントローラ１０９は、ＥＰＲＯＭ２０８、ＣＰＵ２０９、メインメモリ２１０、周辺制御デバイス２１２、Ｉ／Ｏ制御デバイス２１４、不揮発性記憶デバイス２１５、ネットワークＩ／Ｆ２１３、及び、それらが接続されたバス２１１を備えている。ネットワークＩ／Ｆ２１３、周辺制御デバイス２１２及びＩ／Ｏ制御デバイス２１４が、インターフェース部の一例である。ＥＰＲＯＭ２０８、メインメモリ２１０及び不揮発性記憶デバイス２１５が、記憶部の一例である。ＣＰＵ２０９が、プロセッサ部の一例である。周辺制御デバイス２１２は、ネットワークＩ／Ｆ２１３、Ｉ／Ｏ制御デバイス２１４、不揮発性記憶デバイス２１５及びバス２１１に接続されている。ＥＰＲＯＭ２０８には、プログラム（例えば、ファームウェアや、ロードされた制御プログラム及び情報プログラム）が格納される。ＣＰＵ２０９は、ＥＰＲＯＭ２０８に格納されているプログラムをメインメモリ２１０に読み出して実行する。
【００２４】
プログラマブルコントローラ１０９は、１以上のＩ／Ｏモジュール１１９と通信可能に接続される。Ｉ／Ｏモジュール１１９は、周辺機器１２０に対するインターフェースデバイス（例えばバススロット）である。プログラマブルコントローラ１０９の周辺機器１２０は、例えば、センサ及び外付け記憶デバイスである。ＣＰＵ２０９は、周辺制御デバイス２１２を制御して、Ｉ／Ｏ制御デバイス２１４及びＩ／Ｏモジュール１１９を介して、周辺機器１２０を制御する。
【００２５】
図２は、コントロールシステムの機能ブロックを示す。
【００２６】
プログラム配布装置１０１の記憶部に基づく記憶領域（例えば、不揮発性記憶デバイス２０６に基づく論理的な記憶領域）として、ＡＰＰストア１０４がある。ＡＰＰストア１０４に、１以上の制御ＡＰＰ１０５、１以上の情報ＡＰＰ１０６、及び、各ＡＰＰに関する情報（例えば、パラメータ）を含んだＡＰＰ情報１０７が格納される。
【００２７】
プログラム配布装置１０１で実行されるプログラムとして、ロード制御プログラム１０２がある。ロード制御プログラム１０２は、ＡＰＰストア１０４内のＡＰＰ（及び、当該ＡＰＰに関する情報（ＡＰＰ情報１０７における情報））を、プログラマブルコントローラ１０９にロードする。
【００２８】
プログラマブルコントローラ１０９では、図１に示した複数の物理リソース（例えば、メインメモリ２１０及びＣＰＵ２０９）を含んだ物理リソース集合２５１上で、ＯＳ（Operating System）２５２が実行される。ＯＳ２５２は、例えば、ＲＴＯＳ（リアルタイムＯＳ）が用いられる。なお、これに限定されること後述の制御コンテナと情報コンテナの機能を実施できるＯＳであればよい。
【００２９】
プログラマブルコントローラ１０９にロードされた制御ＡＰＰ１０５及び情報ＡＰＰ１０６の各々は、ＡＰＰの単位で実行されてもよいし、ＡＰＰの実行環境の単位で実行されてもよい。本実施形態では、ＡＰＰは実行環境の単位で実行される。また、ＡＰＰの実行環境として、本実施形態では、コンテナ型仮想化に従うコンテナが採用される。すなわち、ＡＰＰが、コンテナ２５３に設定され、ＯＳ２５２上で、コンテナ２５３の単位で実行される。本実施形態では、コンテナ２５３は、制御コンテナ２５３Ａと情報コンテナ２５３Ｂの２種類のコンテナがある。
【００３０】
制御コンテナ２５３Ａは、制御ＡＰＰ１０５が格納され実行されるコンテナである。「制御ＡＰＰ」は、自動機械又は生産設備といった制御対象を制御するためのプログラムである。本実施形態において、制御ＡＰＰは、特に、ソフトウェアＰＬＣ系ランタイム２６１上で実行されるＡＰＰである。「ソフトウェアＰＬＣ」を採用することができる。従って、ソフトウェアＰＬＣ系ランタイム２６１は、後述の機能が実施できるものを採用するとよい。制御ＡＰＰ１０５の少なくとも一部がＣ言語のような汎用のプログラミング言語で記述されてもよいが、主に、制御ＡＰＰ１０５は、ラダー・ロジック（ＬＤ言語）のような制御系特有のプログラミング言語で記述される。制御ＡＰＰ１０５は、制御系通信を行ってもよい。なお、制御系通信はシリアルまたはパラレルの有線通信であっても、無線通信であってもよい。
【００３１】
情報コンテナ２５３Ｂは、情報ＡＰＰ１０６が格納され実行されるコンテナである。「情報ＡＰＰ」は、通信（例えば、ＳＣＡＤＡ、ＭＥＳ、クラウドシステムとの情報の送受信）のような情報処理のためのプログラムである。情報ＡＰＰ１０６は、典型的には、汎用のプログラミング言語で記述される。少なくとも１つの情報ＡＰＰ１０６は、情報系通信を行うことができる。
【００３２】
プログラマブルコントローラ１０９で実行されるプログラムとして、上述のロードされたＡＰＰに加えて、他のプログラム、例えば、Ｗｅｂサーバプログラム２５６及び実行制御プログラム２５７がある。
【００３３】
Ｗｅｂサーバプログラム２５６は、Ｗｅｂサーバとして機能するためのプログラムである。Ｗｅｂサーバプログラム２５６が、管理ユーザ計算機１５１Ｍ及び一般ユーザ計算機１５１Ｇの各々（クライアント）と通信する。Ｗｅｂサーバプログラム２５６が、１以上の情報ＡＰＰ１０６のうちの少なくとも１つが格納されるコンテナについて、PRIORITY（実行優先度）を含む１以上のパラメータであるパラメータ群の設定を受け付けるユーザインターフェースプログラムの一例である。
【００３４】
実行制御プログラム２５７は、コンテナ２５３に関して設定されているパラメータ群（例えばPRIORITY）を基に、コンテナ２５３（正確には、コンテナ２５３におけるＡＰＰ）の実行を制御する。１つのコンテナ２５３（ＡＰＰを格納したコンテナ）を例に取ると（この段落で「対象コンテナ２５３」）、実行制御の一例は、下記である。
（ａ）対象コンテナ２５３について設定された実行周期で対象コンテナ２５３を実行する。
（ｂ）（ａ）の際、もし、対象コンテナ２５３のPRIORITYよりも高いPRIORITYのコンテナ２５３の実行中であれば、対象コンテナ２５３の実行を待つ。
（ｃ）（ａ）の際、もし、対象コンテナ２５３のPRIORITYよりも低いPRIORITYのコンテナ２５３の実行中であれば、当該コンテナ２５３の実行を一時停止し、対象コンテナ２５３を実行する。
（ｄ）対象コンテナ２５３の実行中に、対象コンテナ２５３の状況に関する値が所定値を超えた場合（例えば、メモリ使用量が上限を超えた場合）、対象コンテナ２５３の実行を一時停止する。
【００３５】
プログラマブルコントローラ１０９の記憶部に格納される情報として、管理情報２５５がある。管理情報２５５は、プログラマブルコントローラ１０９において管理される情報であり、例えば、図３〜図５に示すテーブルを含む。
【００３６】
図３は、コンテナ管理テーブルの構成を示す。
【００３７】
コンテナ管理テーブル２５５１は、コンテナ２５３に関する情報を格納する。コンテナ管理テーブル２５５１は、コンテナ２５３毎にレコードを有する。各レコードは、コンテナＩＤ３０１、ＡＰＰ  ＩＤ３０２、ステータス３０３、非特定情報要素群３０４及び特定パラメータ群３０５といった情報を格納する。以下、１つのコンテナ２５３（図３の説明において「対象コンテナ２５３」）を例に取る。
【００３８】
コンテナＩＤ３０１は、対象コンテナ２５３のＩＤを示す。
【００３９】
ＡＰＰ  ＩＤ３０２は、対象コンテナ２５３に格納されているＡＰＰのＩＤを示す。１つのコンテナ２５３に同種の２以上のＡＰＰが格納されてもよい。言い換えれば、１つのコンテナ２５３に制御ＡＰＰ１０５及び情報ＡＰＰ１０６は混在しない。
【００４０】
ステータス３０３は、対象コンテナ２５３のステータスを示す。ステータス３０３の値として、“Empty”（対象コンテナ２５３にいずれのＡＰＰも格納されていない）、“Stop”（実行停止）、及び、“Running”（実行中）がある。
【００４１】
非特定情報要素群３０４は、対象コンテナ２５３に関して特定パラメータ群に属する情報要素以外の情報要素の全て又は一部である。具体的には、例えば、非特定情報要素群３０４は、対象コンテナ２５３に関して図９の設定画面９００に表示される情報要素のうち、特定パラメータ群（PRIORITY、及び、Device）以外の情報要素の全部又は一部（言い換えれば、第１のプレーン９１０と第３のプレーン９３０に表示される情報要素のうちの全部又は一部）である。
【００４２】
特定パラメータ群３０５は、１以上の特定パラメータの一例であるPRIORITY３０４１、及び、Device３０４２で構成される。
【００４３】
PRIORITY３０４１は、対象コンテナ２５３の実行優先度、具体的には、リアルタイム動作の優先度を示す。「リアルタイム動作」とは、実行開始予定時刻（実行周期に従う開始予定時刻）通りに実行開始することを意味する。PRIORITYが低いほど、リアルタイム動作できる可能性が下がる。例えば、PRIORITYが低いほど、実行開始予定時刻と実際の実行開始時刻との差が大きい可能性がある。
【００４４】
Device３０４２は、使用されるデバイス（例えば、通信インターフェースデバイスとしての周辺機器１２０の種類又はＩＤ）の有無を示す。
【００４５】
図４は、ＡＰＰ管理テーブルの構成を示す。
【００４６】
ＡＰＰ管理テーブル２５５２は、ＡＰＰに関する情報を格納する。ＡＰＰ管理テーブル２５５２は、ＡＰＰ毎にレコードを有する。各レコードは、ＡＰＰ  ＩＤ４０１及びＡＰＰ種別４０２といった情報を格納する。以下、１つのＡＰＰ（図４の説明において「対象ＡＰＰ」）を例に取る。
【００４７】
ＡＰＰ  ＩＤ４０１は、対象ＡＰＰのＩＤを示す。ＡＰＰ種別４０２は、ＡＰＰの種別を示す。“制御”は、制御ＡＰＰを意味し、“情報”は、情報ＡＰＰを意味する。
【００４８】
図５は、ＡＰＰ関係テーブルの構成を示す。
【００４９】
ＡＰＰ関係テーブル２５５３は、制御プログラムと情報プログラムの関係を示したプログラム関係情報の一例である。ＡＰＰ関係テーブル２５５３は、制御プログラムと情報プログラムとの組毎にレコードを有する。各レコードは、制御ＡＰＰ  ＩＤ５０１及び情報ＡＰＰ  ＩＤ５０２といった情報を格納する。１つのレコードを例に取ると、次の通りである。
【００５０】
すなわち、制御ＡＰＰ  ＩＤ５０１は、制御ＡＰＰ１０５のＩＤを示す。情報ＡＰＰ  ＩＤ５０２は、当該制御ＡＰＰと関係すると定義された情報ＡＰＰ１０６のＩＤを示す。
【００５１】
ＡＰＰ関係テーブル２５５３を用いて、例えば次のようにＡＰＰをプログラマブルコントローラ１０９にロードすることができる。すなわち、ロード制御プログラム１０２（又はＷｅｂサーバプログラム２５６）が、ＡＰＰ関係テーブル２５５３を基に、制御ＡＰＰと当該制御ＡＰＰと関係する情報ＡＰＰとを示す情報を、計算機１５１（管理ユーザ計算機１５１Ｍ及び一般ユーザ計算機１５１Ｇの少なくとも１つ）に提示し、ユーザから、ロード対象の選択を受ける。この提示では、制御ＡＰＰと当該制御ＡＰＰと関係する情報ＡＰＰが示されているので、いずれのＡＰＰ（例えば制御ＡＰＰ）をロード対象として選択するのであればいずれのＡＰＰ（例えば情報ＡＰＰ）を選択するべきであるかをユーザが迅速に把握できる。選択されたロード対象のＡＰＰを、ロード制御プログラム１０２（又はＷｅｂサーバプログラム２５６）が、プログラム配布装置１０１からプログラマブルコントローラ１０９にロードする。
【００５２】
図６は、本実施形態に係るPRIOROTY設定の概要を示す。図６（及び図７）において、各PRIOROTYについて、“有効”は、指定可能なPRIOROTY（値）であることを意味し、“無効”は、指定不可能なPRIOROTYであることを意味する。本実施形態において、PRIOROTYとしての値が小さいほど、PRIOROTYは高い。
【００５３】
本実施形態では、少なくとも１つの情報コンテナ２５３Ｂについて指定可能なPRIOROTYのうちの最高のPRIOROTY（例えば“０４”）が、少なくとも１つの制御コンテナ２５３Ａについて指定可能なPRIOROTYのうちの最低のPRIOROTY“０５”以上である。
【００５４】
図６の例によれば、制御コンテナ２５３Ａ及び情報コンテナ２５３Ｂのいずれについても、PRIOROTYゾーン（指定可能なPRIOROTYのゾーン）は、連続した範囲である。情報コンテナ２５３ＢのPRIOROTYゾーンの少なくとも一部が、制御コンテナ２５３ＡのPRIOROTYゾーンと重複する。
【００５５】
なお、図６は一例である。例えば、制御コンテナ２５３Ａ及び情報コンテナ２５３Ｂの少なくとも１つについて、PRIOROTYゾーンは、非連続の範囲でもよい。また、情報コンテナ２５３ＢのPRIOROTYゾーンは、必ずしも制御コンテナ２５３ＡのPRIOROTYゾーンと重複しなくてもよい。
【００５６】
高い安定性を維持するためには、図７が示す一比較例のように、全ての情報コンテナについて、指定可能なPRIOROTYのうちの最高のPRIOROTYを、いずれの制御コンテナの指定可能なPRIOROTYのうちの最低のPRIOROTYよりも低くしておくことが考えられる。しかし、全ての制御コンテナが、いずれも、頻繁に又は長時間、ＣＰＵ２０９を使用するとは限らない。このため、一律に図７に例示のようにしておくと、プログラマブルコントローラの処理性能が無駄に下がることが生じ得る。
【００５７】
本実施形態によれば、そのような可能性が低減し、プログラマブルコントローラ１０９において制御ＡＰＰと情報ＡＰＰとが適切に共存する。
【００５８】
本実施形態では、ユーザ（典型的に一般ユーザ）は、コンテナの状態を見て、コンテナについてパラメータを設定することができる。
【００５９】
図８は、状態画面を示す。
【００６０】
状態画面８００は、コンテナ管理テーブル２５５１を基にＷｅｂサーバプログラム２５６により計算機１５１（典型的には一般ユーザ計算機１５１Ｇ）のＷｅｂブラウザ（図示せず）を通じて表示される画面（典型的にはＧＵＩ（Graphical User Interface））である。状態画面８００は、各コンテナ２５３の状態を表示する。具体的には、例えば、状態画面８００は、更新ボタン８０１、状態表示マトリクス８０２、現在情報コンテナ数８２１、リセットコンテナ数指定ＵＩ８２２、リセットボタン８２３を有する。なお、「ＵＩ」は、ユーザインターフェースの略であり、ユーザ操作可能なツール、例えば、テキストボックスやプルダウンメニューのようなＧＵＩ部品である。ユーザはＵＩを通じて所望の情報を入力できる。
【００６１】
更新ボタン８０１は、状態画面８００の表示内容を最新の表示内容に更新することを要求するためのボタンである。
【００６２】
状態表示マトリクス８０２は、コンテナ毎に列を有し、各コンテナに関する所定種類の情報要素毎に行を有する。
【００６３】
情報要素“種別”８１１は、コンテナの種別（制御コンテナか情報コンテナか）を示す。情報要素“ＡＰＰ名”８１２は、コンテナに格納されているＡＰＰの名前を示す。
【００６４】
情報要素“状態”８１３は、コンテナの状態を示す。具体的には、情報要素“状態”８１３に対応したセル（各コンテナに対応したセル）には、コンテナオブジェクト（例えば図形）８３０と、ＡＰＰオブジェクト１８３１とが表示される。コンテナオブジェクト８３０の表示態様（例えば色）が、コンテナ種別を意味する。ＡＰＰオブジェクト１８３１上の文字列が、コンテナの状態（例えば、図３のステータス３０３）を示す。空きのコンテナについては、コンテナの状態を示す文字列が表示されるものの、ＡＰＰオブジェクト１８３１は表示されない。
【００６５】
情報要素“コンテナ名”８１４は、コンテナの名前を示す。
【００６６】
“ボタン”８１５に対応したセル（各コンテナに対応したセル）に、停止ボタン８３１、削除ボタン８３２、開始ボタン８３３及び設定ボタン８３４のうちの少なくとも１つが表示される。停止ボタン８３１は、コンテナの実行を停止することを要求するためのボタンである。削除ボタン８３２は、コンテナからＡＰＰを削除することを要求するためのボタンである。開始ボタン８３３は、コンテナの実行を開始することを要求するためのボタンである。設定ボタン８３４は、コンテナについてパラメータを設定することを要求するためのボタンである。表示されるボタンの種類は、コンテナの状態に依存する。例えば、“Running”のコンテナについては、停止ボタン８３１及び削除ボタン８３２が表示される。“Stop”のコンテナについては、開始ボタン８３３及び削除ボタン８３２が表示される。“Empty”のコンテナについては、設定ボタン８３４及び削除ボタン８３２が表示される。
【００６７】
現在情報コンテナ数８２１は、現在の情報コンテナの数を示す。
【００６８】
リセットコンテナ数ＵＩ８２２は、リセットするコンテナの数の入力用ＵＩである。リセットボタン８２３は、コンテナの数がリセットコンテナ数ＵＩ８２２に入力された数となるようリセットすることを要求するためのボタンである。
【００６９】
例えば設定ボタン８３４が押された場合、Ｗｅｂサーバプログラム２５６により、計算機１５１（典型的には一般ユーザ計算機１５１Ｇ）のＷｅｂブラウザ（図示せず）を通じて、図９に示す設定画面が表示される。ユーザは、状態画面８００の表示内容を基に、空きのコンテナについて設定するパラメータを決定できる。また、状態画面８００の表示内容を基に、ＡＰＰが格納されている制御コンテナ及び情報コンテナのうちの少なくとも１つについてパラメータが変更されてもよい。
【００７０】
図９は、設定画面を示す。
【００７１】
設定画面９００は、コンテナについてパラメータを設定するための画面（例えばＧＵＩ）である。設定画面９００の表示領域は、第１のプレーン９１０、第２のプレーン９２０及び第３のプレーン９３０といった３つのプレーンに大別できる。
【００７２】
まず、設定画面９００に、パラメータが設定されるコンテナについて表示される情報の一例を下記のように記載し、その後に、いずれの情報要素がいずれのプレーンに表示されるかを記載する。
（１）コンテナ名：コンテナの名前
（２）バックボタン：所定画面（例えば直前の画面）に戻るためのボタン
（３）コンテナ番号：コンテナの番号（ＩＤ）
（４）状態：コンテナの状態（図３のステータス３０３）
（５）コンテナ名：コンテナの名前（（１）と同じ）
（６）ＡＰＰパス：ＡＰＰのフルパス（実行ＡＰＰファイル名を含む）
（７）コマンドパス：ＡＰＰを実行させるコマンドのフルパス（コマンドファイル名を含む）
（８）ＡＰＰ名：ＡＰＰの名前
（９）プロジェクトＩＤ：所定のプログラムを用いてプロジェクトがビルドされた場合に付加されるプロジェクトＩＤ
（１０）ビルド時間：プロジェクトのビルドに要した時間
（１１）転送方式選択ボックス：複数種類の
転送方式のうちの任意の転送方式を選択するためのＵＩ
（１２）プロトコルやポートを設定するためのＵＩと、コンテナのＩＰアドレスを設定するためのＵＩ
（１３）メモリ制限：コンテナで使用するメモリ容量の最大値
（１４）Advanced settingsチェックボックス９４１：Advanced settings（高度設定）を行うか否かを指定するためのＵＩ
（１５）PRIORITYのＵＩ９５１：PRIORITYを入力するためのＵＩ
（１６）デバイス使用有無チェックボックス９５２：コンテナに関連付けられているデバイスを使用するか否かを指定するためのＵＩ
（１７）“Restore Value”ボタン９５３：入力値を元に戻すボタン
（１８）“Set Parameters Only”ボタン９５４：入力値（設定）を反映する（コンテナ管理テーブル２５５１に登録する）ことを要求するためのボタン
（１９）ダウンロードファイル選択ボタン：ＡＰＰ本体、コマンドファイル又はその他ファイル等、コンテナに持たせたいファイルを選択するためのボタン
（２０）ダウンロードボタン：（２１）のボタンにより選択したファイルをロード（例えばプログラム配布装置１０１からプログラマブルコントローラ１０９におけるコンテナにロード）するためのボタン
（２１）ダウンロードファイル一覧：（２２）のボタンにてロードしたファイルの一覧
（２２）ファイル削除ボタン：（２３）の一覧から選択したファイルを削除するためのボタン
（２３）コンテナ生成ボタン：コンテナを作り直すボタン
なお、上記フルパスとして説明した部分は所望のファイルが特定できればフルパスに限らず一部のパスであってもよい。
【００７３】
（１）〜（１３）は、第１のプレーン９１０に表示される第１の情報要素群９６０に含まれる。（１５）〜（１８）は、図９に明示の通り、第２のプレーン９２０に表示される。（１９）〜（２３）は、第３のプレーン９３０に表示される第２の情報要素群９７０に含まれる。
【００７４】
Advanced settingsでは、特定パラメータ群（少なくともPRIORITY）の設定が可能である。しかし、情報コンテナについて、PRIORITY（及びその他の特定パラメータ）の設定は、制御コンテナ（制御ＡＰＰによる制御）に影響を与え得る。
【００７５】
そこで、本実施形態では、次のような制御を、例えばＷｅｂサーバプログラム２５６が行う。
【００７６】
すなわち、Ｗｅｂサーバプログラム２５６は、設定画面９００の表示時点（初期状態）では、図１０に示すように、Advanced settingsチェックボックス９４１にチェックマーク無しの状態とし、且つ、Advanced settingsに関するＵＩ９５１〜９５２をディスエーブル（入力不可）の状態としておく（図１０のグレー表示を参照）。
【００７７】
次に、Ｗｅｂサーバプログラム２５６は、図１１に示すように、パラメータの設定が情報コンテナについてであり、且つ、Advanced settingsチェックボックス９４１にチェックマークが入力された場合（すなわち、Advanced settingsの要求を受けた場合）、特定パラメータ群の設定がいずれかの制御コンテナによる制御に影響を与え得ることを意味する警告を表示する。具体的には、例えば、ダイアログボックス１１００がポップアップ表示される。当該ボックス１１００に、警告を示すメッセージ１２００が表示される。当該ボックス１１００は、警告を承認しAdvanced settingsの設定に進むためのＯＫボタン１１０１と、Advanced settingsの設定に進むことをキャンセルするためのキャンセルボタン１１０２とを有する。
【００７８】
ＯＫボタン１１０１が押された場合に、Ｗｅｂサーバプログラム２５６は、図１２に示すように、Advanced settingsに関するＵＩ９５１〜９５２をイネーブルとする。これにより、ユーザは、Advanced settingsを行うことができる。
【００７９】
以下、本実施形態で行われる処理の一例を説明する。
【００８０】
図１３は、ロード処理の流れを示す。
【００８１】
Ｗｅｂサーバプログラム２５６（又はロード制御プログラム１０２）が、ＡＰＰ一覧画面を計算機１５１（１５１Ｍ又は１５１Ｇ）に表示する（Ｓ１３０１）。ここでは、例えば、Ｗｅｂサーバプログラム２５６（又はロード制御プログラム１０２）は、ユーザによりいずれかのＡＰＰ（例えば制御ＡＰＰ）が選択された場合、ＡＰＰ関係テーブル２５５３を基に、当該選択されたＡＰＰと関係のある全てのＡＰＰの情報を表示してもよい。
【００８２】
Ｗｅｂサーバプログラム２５６（又はロード制御プログラム１０２）は、ユーザからＡＰＰの選択を受け（Ｓ１３０２）、選択されたＡＰＰを、プログラム配布装置１０１からプログラマブルコントローラ１０９にロードする（Ｓ１３０３）。ロード先のコンテナは、Ｗｅｂサーバプログラム２５６又は実行制御プログラム２５７により、ＡＰＰの種別やＡＰＰに関する要件（例えば性能）に応じて自動で決められてもよい。また、ロード対象のＡＰＰは、Ｗｅｂサーバプログラム２５６（又はロード制御プログラム１０２）により、ユーザに選択されたＡＰＰ（例えば制御ＡＰＰ）に関係する全てのＡＰＰ（例えば情報ＡＰＰ）（ＡＰＰ関係テーブル２５５３を基に特定されたＡＰＰ）がロードされてもよい。また、Ｓ１３０３では、ＡＰＰと共に、ＡＰＰに関係する情報（例えばＡＰＰ情報１０７内の情報（例えばパラメータ））もロードされてもよい。
【００８３】
図１４は、実行制御処理の流れを示す。
【００８４】
実行制御プログラム２５７が、各コンテナのパラメータ群（特定パラメータ群を含む）を参照する（Ｓ１４０１）。
【００８５】
実行中（“Running”）のコンテナについて、状況（例えばメモリ容量）がその上限値を超える場合（Ｓ１４０２：Ｙｅｓ）、実行制御プログラム２５７が、当該コンテナを停止する（Ｓ１４０５）。
【００８６】
開始予定時刻となったコンテナがある場合（Ｓ１４０３：Ｙｅｓ）、実行制御プログラム２５７が、当該コンテナのPRIORITYに応じた制御を行う（Ｓ１４０４）。例えば、実行制御プログラム２５７は、当該コンテナのPRIORITYよりも低いPRIORITYのコンテナが実行中の場合、当該コンテナを、当該実行中のコンテナを停止してから実行する。一方、例えば、実行制御プログラム２５７は、当該コンテナのPRIORITY以上のPRIORITYのコンテナが実行中（又は実行待ち）の場合（Ｓ１４０３：Ｎｏ）、当該コンテナのPRIORITY以上のPRIORITYのコンテナの実行が終了するまで待つ。
【００８７】
図１５は、設定制御処理の流れを示す。
【００８８】
Ｗｅｂサーバプログラム２５６は、情報コンテナについての設定画面９００を表示する（Ｓ１５０１）。Ｓ１５０１の時点では、ＵＩ９５１〜９５２は、図１０に例示した通り、ディスエーブルである。
【００８９】
Ｗｅｂサーバプログラム２５６は、Advanced Settingsの要求を受けた場合（チェックボックス９４１にチェックマークが入力された場合）（Ｓ１５０２：Ｙｅｓ）、図１１に例示した通り警告を表示する（Ｓ１５０３）。
【００９０】
警告に対する承認が入力された場合（Ｓ１５０４：Ｙｅｓ）、Ｗｅｂサーバプログラム２５６は、ＵＩ９５１〜９５２を、図１２に例示した通り、イネーブルにする（Ｓ１５０５）。
【００９１】
Ｗｅｂサーバプログラム２５６は、Advanced Settingsが行われ“Set Parameters Only”ボタン９５４が押された場合（Ｓ１５０６：Ｙｅｓ）、設定を反映する（コンテナ管理テーブル２５５１に登録する）（Ｓ１５０７）。
【００９２】
設定画面９００を閉じる操作がされた場合（Ｓ１５０８：Ｙｅｓ）、Ｗｅｂサーバプログラム２５６は、設定画面９００を閉じて、処理を終了する。
【００９３】
以上、本発明の一実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。
【００９４】
例えば、Ｗｅｂサーバプログラム２５６は、特定パラメータ群のうちの少なくとも１つのパラメータ（例えばPRIORITY）に関して、入力可能な値の範囲を、制御コンテナ（又は制御ＡＰＰ）の数（例えば、“Running”の制御コンテナ（又は制御ＡＰＰ）の数）に基づいて制御してもよい。
【符号の説明】
【００９５】
１０９…プログラマブルコントローラ
【図１】
2019057212.tif 000003
【図２】
2019057212.tif 000004
【図３】
2019057212.tif 000005
【図４】
2019057212.tif 000006
【図５】
2019057212.tif 000007
【図６】
2019057212.tif 000008
【図７】
2019057212.tif 000009
【図８】
2019057212.tif 000010
【図９】
2019057212.tif 000011
【図１０】
2019057212.tif 000012
【図１１】
2019057212.tif 000013
【図１２】
2019057212.tif 000014
【図１３】
2019057212.tif 000015
【図１４】
2019057212.tif 000016
【図１５】
2019057212.tif 000017