IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オムロン株式会社の特許一覧

<>
  • 特開-制御システムおよび制御方法 図1
  • 特開-制御システムおよび制御方法 図2
  • 特開-制御システムおよび制御方法 図3
  • 特開-制御システムおよび制御方法 図4
  • 特開-制御システムおよび制御方法 図5
  • 特開-制御システムおよび制御方法 図6
  • 特開-制御システムおよび制御方法 図7
  • 特開-制御システムおよび制御方法 図8
  • 特開-制御システムおよび制御方法 図9
  • 特開-制御システムおよび制御方法 図10
  • 特開-制御システムおよび制御方法 図11
  • 特開-制御システムおよび制御方法 図12
  • 特開-制御システムおよび制御方法 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022185645
(43)【公開日】2022-12-15
(54)【発明の名称】制御システムおよび制御方法
(51)【国際特許分類】
   G06F 8/61 20180101AFI20221208BHJP
   G05B 19/05 20060101ALI20221208BHJP
【FI】
G06F8/61
G05B19/05 A
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2021093391
(22)【出願日】2021-06-03
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】重森 弓束
【テーマコード(参考)】
5B376
5H220
【Fターム(参考)】
5B376AA07
5B376AB01
5B376AB11
5B376AC23
5B376AD22
5B376CA68
5B376EA17
5B376GA13
5H220AA06
5H220BB07
5H220BB15
5H220CC09
5H220CX01
5H220CX05
5H220JJ12
5H220JJ17
5H220JJ59
(57)【要約】
【課題】コントローラと簡単な仕組みで通信を実施する。
【解決手段】FA(ファクトリオートメーション)の1または複数のコントローラと、情報処理装置を含む制御システムは、複数種類のプロトコルのそれぞれについて、当該プロトコルに従ったネットワーク通信のためのミドルウェアを含むプロトコルコンテナを管理するリポジトリと、各コントローラについて、当該コントローラがネットワーク通信に用いるプロトコルの種類を取得するプロトコル取得部とを備え、取得された各コントローラのプロトコル種類について、当該プロトコル種類に対応するリポジトリのプロトコルコンテナをデプロイすることで、当該プロトコルコンテナのミドルウェアを起動する。
【選択図】図1
【特許請求の範囲】
【請求項1】
FA(ファクトリオートメーション)の1または複数のコントローラと、前記1または複数のコントローラとネットワーク通信する情報処理装置を含む制御システムであって、
複数種類のプロトコルのそれぞれについて、当該プロトコルに従った前記ネットワーク通信のためのミドルウェアを含むコンテナであるプロトコルコンテナを管理するリポジトリと、
各前記1または複数のコントローラについて、当該コントローラが前記ネットワーク通信に用いるプロトコルの種類を取得するプロトコル取得部と、
前記プロトコル取得部によって取得された前記各コントローラのプロトコル種類について、当該プロトコル種類に対応する前記リポジトリのプロトコルコンテナをデプロイすることで、当該プロトコルコンテナのミドルウェアを起動するコンテナエンジンと、を備える、制御システム。
【請求項2】
前記リポジトリは、さらに、
アプリケーションとデプロイされた各前記プロトコル種類に対応のプロトコルコンテナとの間で通信データを中継するミドルウェアを含むコンテナであるゲートウェイコンテナを管理し、
前記コンテナエンジンは、さらに、前記リポジトリの前記ゲートウェイコンテナをデプロイすることで、当該ゲートウェイコンテナのミドルウェアを起動する、請求項1に記載の制御システム。
【請求項3】
前記通信データは、当該通信データの宛先である前記コントローラを識別するコントローラ識別子を含み、
前記ゲートウェイコンテナのミドルウェアは、中継する前記通信データに基づき、当該通信データの中継先を、前記各コントローラのプロトコル種類に対応するデプロイされた前記プロトコルコンテナのうちから決定する、請求項2に記載の制御システム。
【請求項4】
前記コンテナエンジンは、中継する前記通信データを受付けたとき、前記ゲートウェイコンテナについて前記デプロイを実施する、請求項3に記載の制御システム。
【請求項5】
前記制御システムは、さらに、
前記各コントローラを識別する識別データと、当該コントローラのプロトコル種類に対応するデプロイされた前記プロトコルコンテナの通信アドレスとの関係を示す関係情報を取得する情報取得部を備え、
前記ゲートウェイコンテナのミドルウェアは、前記関係情報における、前記通信データの前記コントローラ識別子を示す前記識別データに対応の前記通信アドレスを前記中継先に決定する、請求項3または4に記載の制御システム。
【請求項6】
前記通信データは、通信シーケンスを示すシーケンスデータを含み、
デプロイされた前記プロトコルコンテナのミドルウェアは、前記ゲートウェイコンテナからの前記通信データに含まれる前記シーケンスデータを、当該プロトコルコンテナに対応する前記プロトコルの種類に従うシーケンスを示すデータに変換する、請求項2から5のいずれか1項に記載の制御システム。
【請求項7】
前記シーケンスデータは、通信接続を制御するコマンドと、前記コントローラに処理を実施させる処理コマンドとを含む、請求項6に記載の制御システム。
【請求項8】
前記各コントローラは、
前記情報処理装置が属するネットワークと接続する第1コネクタと、
前記ネットワークとは異なるネットワークであって、制御対象が属するネットワークを接続する第2コネクタと、
前記異なるネットワークを介して受信する前記制御対象の状態値と、前記制御対象に対する制御指令を格納する格納部と、
格納された前記状態値を用いて前記制御指令を算出する制御演算を実行する演算部と、を備え、
前記処理コマンドは、格納された前記状態値または前記制御指令の読み出しコマンド、または、前記格納部に対する前記状態値または前記制御指令の書込みコマンドを含む、請求項7に記載の制御システム。
【請求項9】
FA(ファクトリオートメーション)の1または複数のコントローラと、前記1または複数のコントローラとネットワーク通信する情報処理装置を含む制御システムにおいて実行される前記通信を制御する方法であって、
前記制御システムは、
複数種類のプロトコルのそれぞれについて、当該プロトコルに従った前記ネットワーク通信のためのミドルウェアを含むコンテナであるプロトコルコンテナを管理するリポジトリを備え、
前記方法は、
各前記1または複数のコントローラについて、当該コントローラが前記ネットワーク通信に用いるプロトコルの種類を取得するステップと、
取得された前記各コントローラのプロトコル種類について、当該プロトコル種類に対応する前記リポジトリのプロトコルコンテナをデプロイすることで、当該プロトコルコンテナの前記ミドルウェアを起動するステップと、を備える、制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は制御システムおよび制御方法に関し、特に、FA(Factory Automation)のコントローラとネットワーク通信のための制御システムおよび制御方法に関する。
【背景技術】
【0002】
FA分野では、PLC(プログラマブルロジックコントローラ)とネットワークを介して通信する情報処理装置は、生産情報を含む各種情報をPLCと遣り取りする。PLCは、当該PLCの供給元(ベンダ、サプライヤ、メーカーなど)が設定したプロトコルに従ってネットワーク通信するための通信ミドルウェアを有する。異なるベンダのPLCがネットワークに接続される場合、各コントローラが有する通信ミドルウェア(供給元が設定のプロトコルに対応の通信ミドルウェア)は他のPLCの通信ミドルウェアと異なってしまう。したがって、互いの通信ミドルウェア(通信プロトコル)が異なる複数のPLCがネットワークに接続される場合は、情報処理装置は、供給元毎の通信ミドルウェア(プロトコル)に対応可能な環境が望まれる。
【0003】
例えば、特開2005-260893号公報(特許文献1)は、ネットワーク上の情報変換サーバを用いることで、この要望に応えている。特許文献1では、情報変換サーバは、ネットワークに接続されるPLCから、当該PLCのプロトコルを定義したプロファイル(アクセス種別とコマンド名、レスポンス名の定義)を受信し格納する。情報変換サーバは、情報処理機器から受信するアクセス種別名に基づき、格納しているプロファイルに従って、当該アクセス種別名をPLCが解釈できるコマンドに変換する。これにより、情報変換サーバは複数のプロトコルをサポートする。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2005-260893号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1の情報変換サーバは、PLCとプロファイル通信する構成であるから、ネットワーク接続されるPLCに設定され得るプロトコルの種類が変化し得る場合は、情報変換サーバは、PLCと通信するアプリケーションを、変化後のプロトコルに従い通信可能となるように再作成する必要がある。
【0006】
本開示の1つの目的は、コントローラが用いる通信プロトコルの種類に変化があるとしても、当該コントローラと簡単な仕組みで通信を実施できる環境を提供することである。
【課題を解決するための手段】
【0007】
この開示に係る制御システムは、FA(ファクトリオートメーション)の1または複数のコントローラと、1または複数のコントローラとネットワーク通信する情報処理装置を含む制御システムであって、複数種類のプロトコルのそれぞれについて、当該プロトコルに従ったネットワーク通信のためのミドルウェアを含むコンテナであるプロトコルコンテナを管理するリポジトリと、各1または複数のコントローラについて、当該コントローラがネットワーク通信に用いるプロトコルの種類を取得するプロトコル取得部と、プロトコル取得部によって取得された各コントローラのプロトコル種類について、当該プロトコル種類に対応するリポジトリのプロトコルコンテナをデプロイすることで、当該プロトコルコンテナのミドルウェアを起動するコンテナエンジンと、を備える。
【0008】
この開示によれば、リポジトリが、異なるプロトコルそれぞれについて、当該プロトコルのミドルウェアを有したコンテナを管理する構成において、プロトコル取得部が各コントローラの通信プロトコルの種類を取得し、取得された各コントローラのプロトコルの種類に対応したコンテナがデプロイされてミドルウェアが起動される。これにより、コントローラが用いる通信プロトコルの種類に変化があるとしても、変化後のプロトコルの種類に対応のプロトコルコンテナをデプロイするだけで済むから、コントローラと簡単な仕組みで通信を実施できる環境を提供できる。
【0009】
上述の開示において、リポジトリは、さらに、アプリケーションとデプロイされた各前記プロトコル種類に対応のプロトコルコンテナとの間で通信データを中継するミドルウェアを含むコンテナであるゲートウェイコンテナを管理し、コンテナエンジンは、さらに、リポジトリの前記ゲートウェイコンテナをデプロイすることで、当該ゲートウェイコンテナのミドルウェアを起動する。
【0010】
この開示によれば、ゲートウェイコンテナがデプロイされて起動されるので、アプリケーションとデプロイされたプロトコルコンテナとの両者間におけるデータ通信を、ゲートウェイコンテナによって中継することができる。
【0011】
上述の開示において、通信データは、当該通信データの宛先であるコントローラを識別するコントローラ識別子を含み、ゲートウェイコンテナのミドルウェアは、中継する通信データに基づき、当該通信データの中継先を、各コントローラのプロトコル種類に対応するデプロイされたプロトコルコンテナのうちから決定する。
【0012】
この開示によれば、ゲートウェイコンテナは、通信データの中継先を、当該通信データコントローラ識別子が示すコントローラのプロトコル種類に対応のプロトコルコンテナに決定できる。
【0013】
上述の開示において、コンテナエンジンは、中継する通信データを受付けたとき、ゲートウェイコンテナについてデプロイを実施する。
【0014】
この開示によれば、コンテナエンジンをデプロイして起動する時期的条件を、コンテナエンジンが中継するべき通信データを受け付けたタイミングに基づき決定できる。
【0015】
上述の開示によれば、通信データは、当該通信データの宛先であるコントローラを識別するコントローラ識別子を含み、制御システムは、さらに、各コントローラを識別する識別データと、当該コントローラのプロトコル種類に対応するデプロイされたプロトコルコンテナの通信アドレスとの関係を示す関係情報を取得する情報取得部を備え、ゲートウェイコンテナのミドルウェアは、関係情報における、通信データのコントローラ識別子を示す識別データに対応の通信アドレスを中継先に決定する。
【0016】
この開示によれば、ゲートウェイコンテナは、取得された関係情報から、通信データの中継先となるプロトコルコンテナの通信アドレスを決定できる。
【0017】
上述の開示において、通信データは、通信シーケンスを示すシーケンスデータを含み、デプロイされたプロトコルコンテナのミドルウェアは、ゲートウェイコンテナからの通信データに含まれるシーケンスデータを、当該プロトコルコンテナに対応するプロトコルの種類に従うシーケンスを示すデータに変換する。
【0018】
この開示によれば、プロトコルコンテナは、通信データに含まれる通信シーケンスのデータを、当該プロトコルに従うシーケンスを示すように変換する。このような変換後の通信シーケンスに従うことで、アプリケーションと当該プロトコルを通信に用いるコントローラとの間で、当該通信データの遣り取りが可能になる。
【0019】
上述の開示において、シーケンスデータは、通信接続を制御するコマンドと、コントローラに処理を実施させる処理コマンドとを含む。
【0020】
この開示によれば、プロトコルコンテナのミドルウェアで変換されるシーケンスデータに、通信接続を制御するコマンドと、コントローラの処理コマンドを含めることができる。
【0021】
上述の開示において、各コントローラは、情報処理装置が属するネットワークと接続する第1コネクタと、ネットワークとは異なるネットワークであって、制御対象が属するネットワークを接続する第2コネクタと、異なるネットワークを介して受信する制御対象の状態値と、制御対象に対する制御指令を格納する格納部と、格納された状態値を用いて制御指令を算出する制御演算を実行する演算部と、を備え、処理コマンドは、格納された状態値または制御指令の読み出しコマンド、または、格納部に対する状態値または制御指令の書込みコマンドを含む。
【0022】
この開示によれば、アプリケーションは、任意のコントローラが通信に用いているプロトコルが何であるかを知らずとも、処理コマンドを用いることで、当該コントローラと通信して、格納部における制御対象の状態値または制御指令の読み出しまたは書込みをすることができる。
【0023】
この開示に係る制御方法は、FA(ファクトリオートメーション)の1または複数のコントローラと、1または複数のコントローラとネットワーク通信する情報処理装置を含む制御システムにおいて実行される通信を制御する方法であって、制御システムは、複数種類のプロトコルのそれぞれについて、当該プロトコルに従ったネットワーク通信のためのミドルウェアを含むコンテナであるプロトコルコンテナを管理するリポジトリを備え、方法は、各1または複数のコントローラについて、当該コントローラがネットワーク通信に用いるプロトコルの種類を取得するステップと、取得された各コントローラのプロトコル種類について、当該プロトコル種類に対応するリポジトリのプロトコルコンテナをデプロイすることで、当該プロトコルコンテナのミドルウェアを起動するステップと、を備える。
【0024】
この開示によれば、リポジトリが、異なるプロトコルそれぞれについて、当該プロトコルのミドルウェアを有したコンテナを管理する構成において、各コントローラの通信プロトコルの種類を取得し、取得された各コントローラのプロトコルの種類に対応したコンテナがデプロイされてミドルウェアが起動される。これにより、コントローラが用いる通信プロトコルの種類に変化があるとしても、変化後のプロトコルの種類に対応のプロトコルコンテナをデプロイするだけで済むから、簡単な仕組みでコントローラと通信可能な環境を提供できる。
【発明の効果】
【0025】
本開示によれば、コントローラが用いる通信プロトコルの種類に変化があるとしても、当該コントローラと簡単な仕組みで通信可能な環境を提供できる。
【図面の簡単な説明】
【0026】
図1】本実施の形態に係る制御システム1の全体構成を模式的に示す図である。
図2図1の制御システム1におけるPLCと通信するためのサーバの構成を模式的に示す図である。
図3】本実施の形態に係る制御システム1を構成するPLC100のハードウェア構成例を示すブロック図である。
図4】本実施の形態に係る制御システム1を構成するサーバ200のハードウェア構成例を示すブロック図である。
図5】本実施の形態に係る制御システム1を構成する端末300のハードウェア構成例を示すブロック図である。
図6図2に示したシーケンスをコンテナ設定テーブル258に関連付けて模式的に示す図である。
図7】本実施の形態に係るコンテナ設定テーブル258の作成シーンの一例を示す図である。
図8図7で作成されたコンテナ設定テーブル258の利用シーンの一例を示す図である。
図9】本実施の形態に係るプロトコルコンテナによる変換処理の一例を模式的に示す図である。
図10】本実施の形態に係るプロトコルコンテナのデプロイの変形例を示す図である。
図11】本実施の形態に係る起動シーケンスのフローチャートである。
図12】本実施の形態に係る利用シーケンスのフローチャートである。
図13】本実施の形態に係るプロトコルコンテナを実装した制御システム1により得られる利点を説明するための図である。
【発明を実施するための形態】
【0027】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0028】
<A.適用例>
まず、本発明が適用される場面の一例について説明する。
【0029】
図1は、本実施の形態に係る制御システム1の全体構成を模式的に示す図である。図2は、図1の制御システム1におけるPLC(Programmable Logic Controller)と通信するためのサーバの構成を模式的に示す図である。図2では、FAに適用され得る制御システム1において、PLCと通信するためのサーバの構成が示される。ここでは、主に、図2を参照して適用例を説明する。
【0030】
図2を参照して、本実施の形態に係る制御システム1は、1または複数のPLCシステム2-1,2-2,2-3(以下、「PLCシステム2」とも総称する。)と、「情報処理装置の」の一実施例であるサーバ200と、制御システム1に開発および保守を担う端末300とを含む。以下の説明において、PLCシステム2-1,2-2,2-3のそれぞれを区別する必要がある場合には、関係する構成要素について、「-1」,「-2」,「-3」といった添え字を付与することもある。
【0031】
PLCシステム2の各々は、ラインとも称され、FAの工場全体を制御するものであってもよいし、工場に設置された特定の製造設備や製造装置を制御するものであってもよい。PLCシステム2-1,2-2,2-3は、主たる構成要素として、制御対象を制御する制御装置の典型例であるPLC100-1,100-2,100-3(以下、「PLC100」とも総称する。)をそれぞれ主体に構成される。
【0032】
PLC100は、フィールドデバイス10に接続される。フィールドデバイス10は、制御対象を制御するために必要な任意の装置を包含する。より具体的には、フィールドデバイス10は、制御対象(例えば、製造設備、製造装置、製造設備あるいは製造装置に含まれるセンサおよびアクチュエータなど)との間で情報をやり取りするための装置を含む。図1に示す例では、フィールドデバイス10はリレー群14とサーボモータ18を含む。フィールドデバイス10は、さらに、図1に示すサーボドライバ16およびリモートI/O(Input/Output)12など、任意のデバイスを含み得る。
【0033】
PLC100は、フィールドデバイス10から情報を取得し、予め作成されたユーザプログラムに従って制御演算を実行することで、フィールドデバイス10へ与えられる情報を生成する。以下では、PLC100がフィールドデバイス10から取得する情報を「入力データ」とも称し、フィールドデバイス10へ与えられる情報を「出力データ」とも称す。また、入力データおよび出力データを「入出力データ」あるいは「I/Oデータ」とも総称する。入力データは、フィールドデバイス10の状態を示す値(例えば、センサの出力値)を含み、出力データは、制御演算の結果に基づき、フィールドデバイス10を制御する指令値を含み得る。
【0034】
図2に示す例では、PLC100とフィールドデバイス10とは、制御系ネットワーク4を介して接続されているが、これに限らず、ハードワイヤーで接続されていてもよい。
【0035】
制御系ネットワーク4としては、産業用の通信プロトコルを採用することが好ましい。このような通信プロトコルとしては、EtherCAT(登録商標)、EtherNet/IP(登録商標)、DeviceNet(登録商標)、CompoNet(登録商標)などが知られている。
【0036】
PLCシステム2の各々は、情報系ネットワーク6およびゲートウェイまたはルータなどの中継装置20を介して、インターネット8上に存在するクラウドベースのサーバ200にアクセス可能になっている。
【0037】
サーバ200は、コンテナをデプロイして実行可能な環境を提供するとともに、コンテナを管理する。本明細書において、コンテナの「デプロイ」は、対象のコンテナの実行可能化を指示する処理、例えばインストールを包含する処理を示す。デプロイは、コンテナのインストールおよび起動を含む、または、インストールのみであって、起動は別のタイミングで実施されるとしてもよい。本実施の形態では、デプロイは、コンテナのインストールおよび起動を含む。
【0038】
サーバ200は、インターネット8を介してクラウド上に配置してもよいし、インターネット8を介することなく、PLCシステム2が存在するローカルネットワーク内に配置してもよい。サーバ200の実装形態としては、要求される性能および機能などに応じて、任意に決定できる。
【0039】
端末300は、サーバ200にアクセスして、後述するような各種処理を実現するためのユーザ操作が可能になっている。本実施の形態では、このユーザ操作は、端末300の後述するアプリケーション311が、端末300からインターネット8で接続されたサーバ200のデスクトップ環境を操作するGUI(Graphical User Interface)を提供することで実現されてもよい。
【0040】
図2を参照して、制御システム1におけるコンテナを利用した処理の概要を説明する。
本明細書においては、「コンテナ」は、後述する「コンテナエンジン」によって実行されるプロセスを構成するコンテナイメージに相当し、コンテナイメージは、コンテナの実行に必要なパッケージ(ミドルウェアおよびライブラリなどのプログラムのファイルまたはメタ情報の集合体)を示す。
【0041】
本実施の形態では、コンテナとして、例えば「プロトコルコンテナ」と「ゲートウェイコンテナ」とを含む。「プロトコルコンテナ」は、プロトコルに従う通信を実現するプロトコルスタックを含むミドルウェアを含む。本実施の形態に係る「プロトコルコンテナ」では、制御システム1を構成し得るPLC100に設定され得る情報系ネットワーク6の通信プロトコルの種類毎に「プロトコルコンテナ」を含む。例えば、PLC100に設定され得る通信プロトコルの種類は、例えばOPC-UA(Object Linking and Embedding for Process Control Unified Architecture)、EIP(Ethernet/IP)、およびHTTPS(Hypertext Transfer Protocol Secure)を含むが、PLC100に設定され得る通信プロトコルの種類は、これらに限定されない。以下の説明では、通信プロトコルを「プロトコル」と称する場合がある。
【0042】
「ゲートウェイコンテナ」は、アプリケーションと複数種類のプロトコルコンテナとの間で通信を中継するミドルウェアを含む。
【0043】
「コンテナエンジン」は、コンテナリポジトリ250に格納されたコンテナ(より特定的にはコンテナイメージ)の実行環境を提供するものであり、コンテナイメージをデプロイ領域280にデプロイする。デプロイすることにより、コンテナエンジンは、コンテナイメージから処理を実行するためのモジュール(インスタンス)を生成し、デプロイされたコンテナを実行(起動)する。
【0044】
サーバ200は、複数のコンテナを格納するコンテナリポジトリ250と、コンテナエンジン270と、コンテナリポジトリ250のコンテナがデプロイされるRAM(Random Access Memory)などの記憶領域を構成するデプロイ領域280と、カーネル291を有するOS(Operating System)212と、各種メモリおよび通信回路などの物理H/W(ハードウェア)292を有する。サーバ200では、複数のコンテナが、その実行基盤としてサーバ200が有する物理H/W292とOS212を共有する。デプロイ領域280にデプロイされたコンテナは、OS212上で動作するコンテナエンジン270によってプロセスとして管理される。各コンテナは、コンテナエンジン270が管理する物理H/W292を含む各種のリソースを、OS212のカーネル291を介して利用しながら、他のコンテナと並列に動作する。
【0045】
端末300は、情報系ネットワーク6に接続されている各PLC100について取得した情報に基づき、各PLC100について、当該PLC100に設定されるプロトコルを示すプロトコル指定データ257を有するコンテナ設定テーブル258を作成する。
【0046】
コンテナリポジトリ250は、コンテナとして、ゲートウェイコンテナ25と、制御システム1を構成し得るPLC100に設定され得る情報系ネットワーク6のプロトコルの種類毎のプロトコルコンテナを含むプロトコルコンテナ群26とを格納する。
【0047】
予め定められたタイミング、例えばサーバ200の起動時に、コンテナエンジン270は、コンテナリポジトリ250のゲートウェイコンテナ25およびプロトコルコンテナ群26の各プロトコルコンテナを、デプロイ領域280においてデプロイする。デプロイの際に、サーバ200のプロトコル取得部260のモジュールは、端末300から受信するコンテナ設定テーブル258のプロトコル指定データ257が示すプロトコルの種類に対応したプロトコルコンテナを、プロトコルコンテナ群26から検索(抽出)し、検索されたプロトコルコンテナをデプロイする。本実施の形態では、例えば、OPC-UAのプロトコルコンテナ261と、EIPのプロトコルコンテナ262と、HTTPSのプロトコルコンテナ263がデプロイされる。デプロイされたコンテナは、相互に通信が可能なようにインターネットプロトコルに従うコンテナIPアドレスが割当てられる。
【0048】
上記に述べた手順に従い、サーバ200の起動シーケンスにおいて、各コンテナがデプロイされる。その後、デプロイされたコンテナを利用する利用シーケンスを実施することができる。
【0049】
起動後の運用シーンにおける利用シーケンスでは、端末300は、アプリケーションからPLC100宛ての通信データ70を受信すると、端末300は、通信データ70を、インターネット8を介してサーバ200に転送する。図2では、通信データ70の転送ルート80が、太い矢印で示される。
【0050】
本実施の形態では、通信データ70は、宛先のPLC100のIPアドレスと、当該PLC100と通信するための通信シーケンスのデータを含む。通信データ70は、例えばフレーム構成を採用するが、パケットの構成を採用してもよい。図2では、通信データ70のフレームの宛先は、例えばPLC100-1を示している。
【0051】
ゲートウェイコンテナ25は、端末300から転送された通信データ70のフレームを受信し、当該フレームの宛先に基づき、プロトコル取得部260によって取得されるコンテナ設定テーブル258から、当該宛先(すなわち、PLC100-1)に対応のプロトコル種類を検索する。検索されたプロトコル種類は、例えばOPCーUAである。ゲートウェイコンテナ25は、検索されたプロトコル種類に対応のプロトコルコンテナ261に、受信データを転送する。
【0052】
プロトコルコンテナ261は、ゲートウェイコンテナ25から転送された通信データ70を、OPC-UAに従い処理し、処理後のOPC-UAに従う通信データ70を、宛先のPLC100-1に転送する。PLC100-1は、転送された通信データ70を受信し、処理し、処理に基づく応答のデータを送信する。応答データは、転送ルート80を逆方向に辿り、アプリケーションに到達する。
【0053】
図2の制御システム1は、異なるプロトコルを実装したミドルウェアをプロトコルコンテナ群26としてコンテナリポジトリ250に管理しており、アプリケーションがアクセス(通信)する対象となり得るPLC100、すなわち情報系ネットワーク6に接続される各PLC100に設定されたプロトコル種類に応じたコンテナを、プロトコルコンテナ群26から検索してデプロイする。これにより、制御システム1は、プロトコルに応じたモジュールを追加実装することなく、アプリケーションはPLC100(および当該PLC100に接続されるフィールドデバイス10)と通信可能な環境を、簡単に提供することができる。
【0054】
以下、本発明のより具体的な応用例として、本実施の形態に係るPLC100のより詳細な構成および処理について説明する。
【0055】
<B.ハードウェア構成>
次に、本実施の形態に係る制御システム1を構成する装置のハードウェア構成の一例について説明する。
【0056】
(b1:PLC100)
図3は、本実施の形態に係る制御システム1を構成するPLC100のハードウェア構成例を示すブロック図である。図4を参照して、PLC100は、CPU(Central Processing Unit)やMPU(Micro-Processing Unit)などのプロセッサ102と、チップセット104と、主メモリ106と、ストレージ110と、物理的回路で構成されるコネクタ121と接続する情報系ネットワークコントローラ120と、物理的回路で構成されるコネクタ123と接続する制御系ネットワークコントローラ122と、USB(Universal Serial Bus)コントローラ124と、メモリカードインターフェイス126とを含む。コネクタ121は、サーバ200が属するネットワークと接続し、コネクタ123は、PLC100が属するネットワークであって、サーバ200が属するネットワークとは異なるネットワークと接続する。
【0057】
プロセッサ102は、ストレージ110に格納された各種プログラムを読み出して、主メモリ106に展開して実行することで、制御対象を制御するための制御演算および外部装置(サーバ200、端末300およびフィールドデバイス10)と通信するための通信処理を実現する。チップセット104は、プロセッサ102と各コンポーネントとのデータ伝送などを制御する。
【0058】
ストレージ110には、OS(Operating System)112と、システムプログラム114と、ユーザプログラム115とが格納される。システムプログラム114は、情報系ネットワーク6を介してサーバ200を含む外部装置と通信するための通信ファームウェアおよび制御系ネットワーク4を介してPLC100を含む外部装置と通信するための通信ファームウェアを含む。
【0059】
ユーザプログラム115は、制御プログラム116、通信プログラム117およびIO(Input/Output)リフレッシュ118を含む。IOリフレッシュ118は、制御対象であるフィールドデバイス10の状態値を制御系ネットワーク4を介して収集しIOリフレッシュ領域113に格納するとともに、IOリフレッシュ領域113に格納された制御指令を制御系ネットワーク4を介して制御対象に送信する。制御プログラム116は、IOリフレッシュ領域113に格納された状態値を用いて制御対象の制御演算を実施して上記の制御指令を算出する制御プログラム116、および通信ファームウェアを用いて通信処理を実施するための通信プログラム117を含む。ユーザプログラム115には、他の各種処理プログラムが含まれてもよい。
【0060】
情報系ネットワークコントローラ120は、コネクタ121に接続される情報系ネットワーク6を介した外部装置(端末300およびサーバ200)などとのデータのやり取りを制御する。
【0061】
制御系ネットワークコントローラ122は、コネクタ123に接続される制御系ネットワーク4を介したフィールドデバイス10とのデータのやり取りを制御する。
【0062】
USBコントローラ124は、USB接続を介した外部装置(例えば、サポート装置)とのデータのやり取りを制御する。
【0063】
メモリカードインターフェイス126は、メモリカード128が脱着自在に構成されており、メモリカード128に対してデータを書き込み、メモリカード128から各種データ(ユーザプログラム115およびデータなど)を読み出すことが可能になっている。
【0064】
PLC100は、光学ドライブを有していてもよい。光学ドライブは、コンピュータ読取可能なプログラムを非一過的に格納する記録媒体(例えば、DVD(Digital Versatile Disc)などの光学記録媒体)からプログラムを読み取って、ストレージ110などに格納する。
【0065】
PLC100で実行される各種プログラムは、コンピュータ読取可能な記録媒体またはメモリカード128を介してインストールされてもよいが、ネットワーク上の任意のコンピュータなどのデバイスからダウンロードする方法でインストールするようにしてもよい。
【0066】
図3には、プロセッサ102がプログラムを実行することで必要な処理が提供される構成例を示したが、これらの提供される処理の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。あるいは、PLC100の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
【0067】
(b2:サーバ200)
図4は、本実施の形態に係る制御システム1を構成するサーバ200のハードウェア構成例を示すブロック図である。図4を参照して、サーバ200は、CPUやMPUなどの1または複数のプロセッサ202と、主メモリ206と、ストレージ210と、1または複数のネットワークコントローラ220と、入力部226と、表示部228とを含む。これらのコンポーネントは、バス208を介して接続される。
【0068】
プロセッサ202は、ストレージ210に格納された各種プログラムを読み出して、主メモリ206に展開して実行することで、後述するような各種処理を実現する。主メモリ206は、一部においてデプロイ領域280を構成する。
【0069】
ストレージ210は、例えば、HDD(Hard Disk Drive)やSSD(Flash Solid State Drive)などで構成される。ストレージ210には、典型的には、基本的な処理を実現するためのOS212と、後述するようなサーバ200が提供する各種処理を実現するためのプログラムおよびデータを含むコンテナアプリケーション214とが格納される。コンテナアプリケーション214は、コンテナリポジトリ250と、実行されるとプロトコル取得部260を構成するプロトコル取得プログラム264と、実行されるとコンテナエンジン270を構成するコンテナエンジンプログラム275を含む。
【0070】
ネットワークコントローラ220は、ネットワークを介した各種装置とのデータのやり取りを制御する。
【0071】
入力部226は、キーボード、マウスなどで構成され、ユーザからの指示を受け付ける。表示部228は、ディスプレイなどで構成され、プロセッサ202からの処理結果などを出力する。
【0072】
サーバ200は、光学ドライブ203を有していてもよい。光学ドライブ203は、コンピュータ読取可能なプログラムを非一過的に格納する記録媒体204(例えば、DVD(Digital Versatile Disc)などの光学記録媒体)からプログラムを読み取って、ストレージ210などに格納する。
【0073】
サーバ200で実行される各種プログラムは、コンピュータ読取可能な記録媒体204またはメモリカードを介してインストールされてもよいが、ネットワーク上の任意のコンピュータなどのデバイスからダウンロードする方法でインストールするようにしてもよい。
【0074】
図4には、プロセッサ202がプログラムを実行することで必要な処理が提供される構成例を示したが、これらの提供される処理の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。
【0075】
(b3:端末300)
図5は、本実施の形態に係る制御システム1を構成する端末300のハードウェア構成例を示すブロック図である。図5を参照して、端末300は、CPUやMPUなどのプロセッサ302と、光学ドライブ304と、主メモリ306と、ストレージ310と、ネットワークコントローラ320と、USBコントローラ324と、入力部326と、表示部328とを含む。これらのコンポーネントは、バス308を介して接続される。
【0076】
プロセッサ302は、ストレージ310に格納された各種プログラムを読み出して、主メモリ306に展開して実行することで、端末300で必要な処理を実現する。
【0077】
ストレージ310は、例えば、HDDやSSDなどで構成される。ストレージ310には、OS312と、アプリケーション311と、後述するような処理を指示などするための開発プログラム314と、ネットワーク400の構成を示すコンフィグ情報256と、プロトコル指定データ257を含むコンテナ設定テーブル258を格納する。アプリケーション311は、UI(User Interface)ツールを提供するUIプログラム316を含むテーブル設定プログラム315と、コンフィグプログラム317とを含む。
【0078】
コンフィグプログラム317は、実行されると、ネットワーク400の構成を走査して、各PLC100から通信に関する情報を収集する。例えば、コンフィグプログラム317は、各PLC00から、情報系ネットワーク6を介してサーバ200を含む外部装置と通信するため当該PLC100に設定されたプロトコルの種類を含む通信ファームウェアに関する情報を受信して収集する。
【0079】
テーブル設定プログラム315は、実行されると、UIプログラム316によって提供されるUIツールを介してユーザから情報を受付け、受付けた情報を用いてコンテナ設定テーブル258を作成する。
【0080】
なお、ストレージ310には、図5に示すプログラム以外の必要なプログラムが格納されてもよい。
【0081】
ネットワークコントローラ320は、情報系ネットワーク6を介した各PLC100およびサーバ200などの機器とのデータのやり取りを制御する。
【0082】
USBコントローラ324は、USB接続を介した外部装置とのデータのやり取りを制御する。
【0083】
入力部326は、マウス、キーボード、タッチパネルなどで構成され、ユーザからの指示を受け付ける。表示部228は、ディスプレイ、各種インジケータなどで構成され、プロセッサ302からの処理結果などを出力する。
【0084】
端末300は、光学ドライブ304を有していてもよい。光学ドライブ304は、コンピュータ読取可能なプログラムを非一過的に格納する記録媒体305(例えば、DVD(Digital Versatile Disc)などの光学記録媒体)からプログラムを読み取って、ストレージ310などに格納する。
【0085】
端末300で実行される各種プログラムは、コンピュータ読取可能な記録媒体305を介してインストールされてもよいが、ネットワーク上の任意のサーバからダウンロードする形でインストールするようにしてもよい。
【0086】
図5には、プロセッサ302がプログラムを実行することで必要な処理が提供される構成例を示したが、これらの提供される処理の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。
【0087】
<C.シーケンスの概要>
図6は、図2に示したシーケンスをコンテナ設定テーブル258に関連付けて模式的に示す図である。図6を参照して、アプリケーション311は、端末300が実施するコンフィギュレーション(ステップT1)の処理において、例えば、UIツールを介して受け付けるユーザ操作に基づきコンテナ設定テーブル258を作成する(ステップT2)。コンテナ設定テーブル258は、情報系ネットワーク6に接続される各PLC100について、当該PLC100のベンダにより付される機種名を表すデバイス名2Aと、IP(インターネットプロトコル)に従うデバイスIPアドレス2Bと、当該PLC100のプロトコルに対応のコンテナを識別するコンテナイメージ名2Cと、当該コンテナのIPアドレス2Dを対応付けて含む。コンテナイメージ名2Cは、プロトコルの名称を示す。コンテナ設定テーブル258は、コンテナイメージ名2Cをプロトコル指定データ257として含む。
【0088】
プロトコル取得部260は、コンテナ設定テーブル258のコンテナイメージ名2Cか、制御システム1を構成しているPLC100に設定されるプロトコルの種類を取得する(ステップT3)。図6のコンテナ設定テーブル258によれば、プロトコルの種類として、OPC-UA、EIPおよびHTTPSが取得される。
【0089】
コンテナエンジン270は、コンテナリポジトリ250のプロトコルコンテナ群26のうちから、取得されたプロトコルの種類に対応するプロトコルコンテナ261、262および263をデプロイする(ステップT4)。
【0090】
端末300のアプリケーション311は、ユーザ操作に基づき、PLC100-1宛ての通信データ70をサーバ200に通信する(ステップR1)。ゲートウェイコンテナ25は、アプリケーション311から転送された通信データ70が示す宛先(デバイスIPアドレス)に基づき、コンテナ設定テーブル258から、当該宛先に一致するデバイスIPアドレス2Bに対応したコンテナIPアドレス2D宛てに、通信データ70を送信する。これにより、ゲートウェイコンテナ25は、デプロイされた複数のプロトコルコンテナ261、262および263のうちから、通信データ70の宛先のPLC100-1に設定されたプロトコルの種類に対応したプロトコルコンテナに、当該通信データ70を振り分ける(ステップR2)。この振り分けにより、例えば、通信データ70は、OPC-UAのプロトコルコンテナ261に送信される。
【0091】
OPC-UAのプロトコルコンテナ261は、ゲートウェイコンテナ25から転送された通信データ70を受信し(ステップR3)、受信した通信データ70をOPC-UAのプロトコルに従い変換処理し、変換後の通信データ70を実行することにより、通信データ70の宛先(デバイスIPアドレス)と通信する(ステップR4)。ステップR4の変換処理の詳細は後述する。これにより、PLC100-1は、PLC100-1のプロトコルに従って、通信データ70に応答することができる。
【0092】
ここでは、PLC100-1宛ての通信データ70の通信を説明したが、EIPに従うPLC100-2またはHTTPSに従うPLC100-3宛ての通信データ70であっても、同様に処理することができる。
【0093】
なお、コンテナ設定テーブル258は、デバイスIPアドレス2Bを有するが、デバイスIPアドレス2Bに代えて、URL(Uniform Resource Locator)であってもよい。
【0094】
このように通信データ70は、当該通信データの宛先であるPLC100を識別するコントローラ識別子(例えば、デバイス名)を含む。情報取得部の一実施例であるテーブル設定プログラム315が実行されることで、アプリケーション311は、各PLC100を識別する識別データ(デバイス名2A、デバイスIPアドレス2Bなど)と、当該PLC100のプロトコル種類に対応するデプロイされたプロトコルコンテナの通信アドレス(コンテナIPアドレス2D)との関係を示す関係情報の一実施例であるコンテナ設定テーブル258を取得する。ゲートウェイコンテナ25のミドルウェアは、当該関係情報における、通信データ70のコントローラ識別子(例えば、デバイス名)を示している識別データ(デバイス名2A)に対応の通信アドレス(コンテナIPアドレス2D)を、通信データ70の中継先に決定する。
【0095】
(c1.コンテナ設定テーブルの作成シーン)
図7は、本実施の形態に係るコンテナ設定テーブル258の作成シーンの一例を示す図である。ユーザは、端末300のUIプログラム316によって提供されるUIツールを操作して、コンテナ設定テーブル258を作成する。例えば、アプリケーション311は、端末300の表示部328にモニタ画面(図7の左下の画面)を表示する。モニタ画面から、ユーザは、各PLC100がフィールドデバイス10から収集する状態値を、状態値が設定される変数名と、状態値の組で監視できる。
【0096】
ユーザは、モニタ画面のモニタ開始を指示するためにボタン330を操作する。テーブル設定プログラム315は、ボタン330の操作に応じて設定画面起動(ステップQ2)を実施する。より具体的には、テーブル設定プログラム315は、UIプログラム316を呼び出し、呼び出されたUIプログラム316が実行されて、コンフィギュレーションT1を用いてコンテナ設定テーブル258の設定処理(ステップQ3)が実施される。表示部328は、ユーザ操作に従った設定内容を有するコンテナ設定テーブル258が表示される。
【0097】
ここでは、ユーザ操作に従って、コンテナ設定テーブル258が作成されるとしたが、他の方法で設定されてもよい。例えば、端末300が格納しているコンフィグ情報256に基づき、コンテナ設定テーブル258が作成されるとしてもよい。コンフィグ情報256は、情報系ネットワーク6に接続されるPLC100から受信した、当該PLC100の構成を示す情報(デバイス名2A、デバイスIPアドレス2B、設定されたプロトコル(コンテナイメージ名)2C)を含む。
【0098】
ユーザは、変換ボタン329を操作する。テーブル設定プログラム315は、ボタン329の操作に応じて、コンテナ設定テーブル258をファイルの形式に変換する。サーバ200または端末300は、ファイル形式のコンテナ設定テーブル258を取り扱うことができる。
【0099】
なお、デバイス名と、デバイスIPアドレスとコンテナIPアドレスとの対応付けを管理する情報を検索することにより、デバイス名2Aから、デバイスIPアドレス2BとコンテナIPアドレス2Dが取得されてもよい。この場合、コンテナIPアドレスは、予め定められたアドレスであってもよく、または、デプロイされたプロトコルコンテナのIPアドレスを指し示すようにしてもよい。
【0100】
(c2.利用シーン)
図8は、図7で作成されたコンテナ設定テーブル258の利用シーンの一例を示す図である。利用シーンとして、ユーザが、PLC100-2のフィールドデバイス10の状態値をモニタするケースを説明する。図8を参照して、ユーザは、表示部328のモニタ画面において矢印B2で示すデバイス名“NX1B”が有する変数名“Variable B”を指定して、モニタ開始のボタンB1を操作すると、アプリケーション311は、デバイス名2Aと、変数読み出しコマンドCMと、“Variable B”を示す変数名Nとを含む通信データ70をサーバ200に送信する(ステップQ7)。
【0101】
サーバ200のゲートウェイコンテナ25は、アプリケーション311から受信した通信データ70のデバイス名2Aに基づき、コンテナ設定テーブル258から、当該デバイス名2Aに対応のデバイスIPアドレス2BとコンテナIPアドレス2Dを検索する(ステップQ8、Q9)。
【0102】
ゲートウェイコンテナ25は、通信データ70のデバイス名2Aを検索されたデバイスIPアドレス2Bで置き換え、置き換え後の通信データ70を、検索されたコンテナIPアドレス2Dを宛先にしてプロトコルコンテナに転送する(ステップQ10)。図8では、通信データ70は、EIPのプロトコルコンテナ262に転送される。
【0103】
プロトコルコンテナ262は、通信データ70に通信シーケンスをEIPに従い変換処理し(ステップQ11)、処理後の通信データ70を、通信データ70が有するデバイスIPアドレス2Bを宛先にして情報系ネットワーク6に送信する(ステップQ11)。
【0104】
情報系ネットワーク6に接続されたPLC100のうち、通信データ70が有するデバイスIPアドレス2Bで指定されるPLC100-2の通信プログラム117は、通信データ70を受信する。PLC100-2のユーザプログラム115は、通信データ70の通信シーケンスが示すコマンドCMを実行して、実行結果に従い、フィールドデバイス10が出力する状態値のうちから、“Variable B”の変数名Nで指定される状態値を、変数値Vとして取得する。
【0105】
PLC100-2によって取得された変数値Vは、プロトコルコンテナ262およびゲートウェイコンテナ25を経由して、通信データ70の送信元であるアプリケーション311に転送される(ステップQ12、Q13、Q14)
アプリケーション311は、PLC100-2から受信した変数値Vを用いて、表示部328のモニタ画面の矢印B2で示される値を変数値Vを示すように更新する(ステップQ15)。
【0106】
(c3.プロトコルコンテナの変換処理)
図9は、本実施の形態に係るプロトコルコンテナによる変換処理の一例を模式的に示す図である。本実施の形態では、プロトコルコンテナは、ゲートウェイコンテナ25から転送された通信データ70の通信シーケンスを、ミドルウェアによって当該プロトコルに従って変換し、変換後の通信シーケンスを実行することにより、当該プロトコルが設定されたPLC100と、通信データ70に従って通信することができる。通信シーケンスは、PLC100と通信するための1または複数のコマンドからなるシーケンスのデータを含む。
【0107】
例えば、通信シーケンスは、通信接続を確立するコマンドと、通信接続確立後にPLC100で実行させる処理の1または複数のコマンドと、処理コマンドの実行後に、確立している通信接続を終了(遮断)するコマンドとを含む。
【0108】
例えば、変数の読出しコマンドCMの通信シーケンスは、変数の読み出しコマンドCMに追加して、通信接続を確立するコマンドCM1と図示しないが通信接続を遮断するコマンドとを含む。まず、プロトコルコンテナは、ゲートウェイコンテナ25から転送された通信データ70の通信シーケンスが示す通信接続確立のコマンドCM1を、当該プロトコルが規定するコマンドに変換するとともに(ステップQ20)、変数の読み出しコマンドCMを当該プロトコルが規定するコマンドに変換する(ステップQ21)。
【0109】
より具体的には、図8のステップQ11では、EIPのプロトコルコンテナ262は、通信データ70のコマンドCM1を、EIPに従う“EstablishClass3Connection()”のコマンドに変換し(ステップQ20)、変数Valiableの読み出しコマンドCMを、EIPに従う“ConnectionObjectGetInstanceTypeForAttribute(variable)”に変換する。OPC-UAのプロトコルコンテナ261およびHTTPSのプロトコルコンテナ263においても、図9に示すように通信シーケンスのシーケンスデータを変換する。
【0110】
このように変換されて、変換後のコマンドからなる通信シーケンスがコンテナプロトコルのミドルウェアおよびPLC100の通信ミドルウェアで実行されることで、カーネル291と物理H/W292を介して、サーバ200(より特定的にはプロトコルコンテナ)とは対応のPLC100と通信接続を確立し、当該PLC100は変換後の変数読み出しコマンドに基づく処理を実行し、その後、コンテナプロトコルのミドルウェアおよびPLC100の通信ミドルウェア間で通信接続を遮断するコマンドが実行される。
【0111】
ここでは、通信シーケンスの処理コマンドとして、変数からデータを読み出すコマンドを示したが、他のコマンドとして例えば変数にデータを書込むコマンドを含めることができる。
【0112】
上記に述べたように、通信シーケンスを示すシーケンスデータは、通信接続制御コマンド(通信接続を確立するコマンドと、当該通信接続を遮断するコマンド)と、当該通信接続の確立と遮断との間でPLC100に処理を実施させる処理コマンドとを含む。本実施の形態では、この処理コマンドに、IOリフレッシュ領域113に格納された状態値または制御指令の読み出しコマンド、または、IOリフレッシュ領域113に対するデータ(状態値または制御指令)の書込みコマンドを含めることができる。
【0113】
(c4.変形例)
図10は、本実施の形態に係るプロトコルコンテナのデプロイの変形例を示す図である。例えば、PLC100がコンテナベースで通信ミドルウェアが提供されてもよい。その場合、図10を参照して、サーバ200のプロトコルコンテナの通信ミドルウェアがコンテナリポジトリ250から動的に、各PLC100に当該PLCに設定されたプロトコルに対応したゲートウェイコンテナと各種のプロトコルに対応のプロトコルコンテナをロード(デプロイ)してもよい。
【0114】
<D.フローチャート>
図11は、本実施の形態に係る起動シーケンスのフローチャートである。図11を参照して、端末300のアプリケーション311は、図6のステップT1に示したようにコンテナ設定テーブル258を作成する(ステップS1)。なお、コンテナ設定テーブル258は、アプリケーション311とは異なる環境で作成されてもよい。
【0115】
サーバ200は、アプリケーション311からの指示に従い、図6のステップT4で示すように、ゲートウェイコンテナ25およびコンテナ設定テーブル258のコンテナイメージ名2Cに対応のプロトコルコンテナをデプロイする(ステップS3)。また、サーバ200は、アプリケーション311からの指示に従い、図6のステップT4で示すように、コンテナ設定テーブル258のコンテナイメージ名2Cに対応のプロトコルコンテナをデプロイする(ステップS5)。
【0116】
図12は、本実施の形態に係る利用シーケンスのフローチャートである。図12を参照して、アプリケーション311は、ユーザが指定したPLC100に通信シーケンスを発行するために、図6のステップR1に示すように、当該通信シーケンスを有した通信データ70をゲートウェイコンテナ25に送信する(ステップS7)。
【0117】
ゲートウェイコンテナ25は、アプリケーション311から受信した通信データ70のデバイス名2Aに基づき、コンテナ設定テーブル258から当該デバイス名2Aに対応のデバイスIPアドレス2BおよびコンテナIPアドレス2Dを検索する(ステップS9)。なお、コンテナ設定テーブル258に、デバイスIPアドレス2Bに代えてURL(Uniform Resource Locator)が設定される場合、ゲートウェイコンテナ25は、URLをDNS(Domain Name System)を利用して、デバイスIPアドレス2Bに変換する。
【0118】
ゲートウェイコンテナ25は、ステップS9の検索結果に基づき、コンテナ設定テーブル258からデバイスIPアドレス2Bが検索できたか否かを判定する(ステップS11)。検索できないときは(ステップS11でNO)、通信エラーの処理を実施するが、検索できたときは(ステップS11でYES)、ゲートウェイコンテナ25は、検索されたコンテナIPアドレス2Dが通信可能であるかを判定する(ステップS13)。より具体的には、ゲートウェイコンテナ25は、予め定められた状態確認のコマンドを実行し、実行結果に基づき、コンテナIPアドレス2Dのコンテナの状態を判定する。状態は、通信可能状態にないと判定されると(ステップS13でNO)、通信エラーの処理を実行するが、状態は、通信可能状態であると判定されると(ステップS13でYES)、ステップS15に移行する。
【0119】
ステップS15では、図6のステップR2に示すように、ゲートウェイコンテナ25は、通信データ70の通信シーケンスおよびデバイスIPアドレス2Bを、コンテナIPアドレス2Dのプロトコルコンテナに送信する(ステップS15)。
【0120】
コンテナIPアドレス2Dのプロトコルコンテナは、図6のステップR3およびR4に示すように、ゲートウェイコンテナ25から通信データ70を受信し、受信した通信データ70に従い、PLC100と通信する(ステップS17)。より具体的には、プロトコルコンテナは、受信した通信データ70の通信シーケンスのコマンドを当該プロトコルコンテナのプロトコルに従うコマンドに変換し、変換後のコマンドからなる通信シーケンスを実行することにより、デバイスIPアドレス2Bによって指定されるPLC100と通信する。
【0121】
上記の実施の形態では、ゲートウェイコンテナ25は、プロトコルコンテナとは異なるタイミングでデプロイされてもよい。例えば、コンテナエンジン270は、中継する通信データ70を受付けたとき、ゲートウェイコンテナ25についてデプロイを実施するよう構成されてもよい。
【0122】
<E.利点>
図13は、本実施の形態に係るプロトコルコンテナを実装した制御システム1により得られる利点を説明するための図である。図13に示すように、一般的にアプリケーションはデバイスと通信するために、アプリケーションに関連付けられるプロトコル毎のミドルウェア(通信ミドルウェア)を呼び出し、呼び出されたミドルウェアを介してPLC100などのデバイスと通信する。すなわち、アプリケーションとミドルウェアとの結合は密結合となる。したがって、アプリケーションが複数のミドルウェアを切り替えて動作させるには、予め複数のミドルウェアを呼び出せるようにアプリケーションを作成する必要がある。また、アプリケーションを新たなプロトコルに対応させるには、新たなミドルウェアを呼び出せるようにアプリケーションを再作成する必要がある。
【0123】
対照的に、本実施の形態では、コンテナリポジトリ250は、異なるプロトコルそれぞれについて、当該プロトコルのミドルウェアを有したコンテナを格納しておき、コンテナエンジン270が制御システム1の情報系ネットワーク6に接続されている各PLC100に、すなわちアプリケーション311の通信相手となり得る各PLC100に設定されたプロトコルに対応したコンテナをデプロイする。これにより、アプリケーション311とミドルウェアとの結合は疎結合となる。
【0124】
したがって、通信相手となるPLC100に設定されるプロトコルが変更または追加されるとしても、コンテナエンジン270が、この変更または追加のプロトコルに対応のコンテナをデプロイするだけでよく、当該プロトコルの変更または追加に伴いアプリケーション311を再作成する必要はなく、アプリケーション311は当該変更および追加の影響を受けない。このように制御システム1では、アプリケーション311がローカルデバイスであるPLC100またはフィールドデバイス10と通信するためのプロトコル対応のミドルウェアは、コンテナエンジン270によって動的にサポートされる環境を提供できる。
【0125】
<F.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
FA(ファクトリオートメーション)の1または複数のコントローラ(100)と、前記1または複数のコントローラとネットワーク通信する情報処理装置(200)を含む制御システム(1)であって、
複数種類のプロトコルのそれぞれについて、当該プロトコルに従った前記ネットワーク通信のためのミドルウェアを含むコンテナであるプロトコルコンテナ(26)を管理するリポジトリ(250)と、
各前記1または複数のコントローラについて、当該コントローラが前記ネットワーク通信に用いるプロトコルの種類を取得するプロトコル取得部(260)と、
前記プロトコル取得部によって取得された前記各コントローラのプロトコル種類について、当該プロトコル種類に対応する前記リポジトリのプロトコルコンテナをデプロイすることで、当該プロトコルコンテナのミドルウェアを起動するコンテナエンジン(270)と、を備える、制御システム。
[構成2]
前記リポジトリは、さらに、
アプリケーション(311)とデプロイされた各前記プロトコル種類に対応のプロトコルコンテナとの間で通信データ(70)を中継するミドルウェアを含むコンテナであるゲートウェイコンテナ(25)を管理し、
前記コンテナエンジンは、さらに、前記リポジトリの前記ゲートウェイコンテナをデプロイすることで、当該ゲートウェイコンテナのミドルウェアを起動する、構成1に記載の制御システム。
[構成3]
前記通信データは、当該通信データの宛先である前記コントローラを識別するコントローラ識別子(2A)を含み、
前記ゲートウェイコンテナのミドルウェアは、中継する前記通信データに基づき、当該通信データの中継先を、前記各コントローラのプロトコル種類に対応するデプロイされた前記プロトコルコンテナのうちから決定する、構成2に記載の制御システム。
[構成4]
前記コンテナエンジンは、中継する前記通信データを受付けたとき、前記ゲートウェイコンテナについて前記デプロイを実施する、構成3に記載の制御システム。
[構成5]
前記制御システムは、さらに、
前記各コントローラを識別する識別データと、当該コントローラのプロトコル種類に対応するデプロイされた前記プロトコルコンテナの通信アドレスとの関係を示す関係情報(258)を取得する情報取得部(260)を備え、
前記ゲートウェイコンテナのミドルウェアは、前記関係情報における、前記通信データの前記コントローラ識別子を示す前記識別データに対応の前記通信アドレスを前記中継先に決定する、構成3または4に記載の制御システム。
[構成6]
前記通信データは、通信シーケンスを示すシーケンスデータを含み、
デプロイされた前記プロトコルコンテナのミドルウェアは、前記ゲートウェイコンテナからの前記通信データに含まれる前記シーケンスデータを、当該プロトコルコンテナに対応する前記プロトコルの種類に従うシーケンスを示すデータに変換する、構成2から5のいずれか1に記載の制御システム。
[構成7]
前記シーケンスデータは、通信接続を制御するコマンド(CM1)と、前記コントローラに処理を実施させる処理コマンド(CM)とを含む、構成6に記載の制御システム。
[構成8]
前記各コントローラは、
前記情報処理装置が属するネットワークと接続する第1コネクタ(121)と、
前記ネットワークとは異なるネットワークであって、制御対象が属するネットワークを接続する第2コネクタ(123)と、
前記異なるネットワークを介して受信する前記制御対象の状態値と、前記制御対象に対する制御指令を格納する格納部(113)と、
格納された前記状態値を用いて前記制御指令を算出する制御演算を実行する演算部(116,102)と、を備え、
前記処理コマンドは、格納された前記状態値または前記制御指令の読み出しコマンド、または、前記格納部に対する前記状態値または前記制御指令の書込みコマンドを含む、構成7に記載の制御システム。
[構成9]
FA(ファクトリオートメーション)の1または複数のコントローラ(100)と、前記1または複数のコントローラとネットワーク通信する情報処理装置(200)を含む制御システム(1)において実行される前記通信を制御する方法であって、
前記制御システムは、
複数種類のプロトコルのそれぞれについて、当該プロトコルに従った前記ネットワーク通信のためのミドルウェアを含むコンテナであるプロトコルコンテナ(26)を管理するリポジトリ(250)を備え、
前記方法は、
各前記1または複数のコントローラについて、当該コントローラが前記ネットワーク通信に用いるプロトコルの種類を取得するステップと、
取得された前記各コントローラのプロトコル種類について、当該プロトコル種類に対応する前記リポジトリのプロトコルコンテナをデプロイすることで、当該プロトコルコンテナの前記ミドルウェアを起動するステップと、を備える、制御方法。
【0126】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0127】
1 制御システム、2A デバイス名、2B デバイスIPアドレス、2C コンテナイメージ名、2D コンテナアドレス、4 制御系ネットワーク、6 情報系ネットワーク、8 インターネット、10 フィールドデバイス、14 リレー群、16 サーボドライバ、18 サーボモータ、20 中継装置、25 ゲートウェイコンテナ、26 プロトコルコンテナ群、70 通信データ、80 転送ルート、102,202,302 プロセッサ、104 チップセット、106,206,306 主メモリ、110,210,310 ストレージ、113 IOリフレッシュ領域、114 システムプログラム、115 ユーザプログラム、116 制御プログラム、117 通信プログラム、118 IOリフレッシュ、120 情報系ネットワークコントローラ、121,123 コネクタ、122 制御系ネットワークコントローラ、124,324 コントローラ、126 メモリカードインターフェイス、127,128 メモリカード、200 サーバ、203,304 光学ドライブ、204,305 記録媒体、208,308 バス、220,320 ネットワークコントローラ、226,326 入力部、228,328 表示部、250 コンテナリポジトリ、256 コンフィグ情報、257 プロトコル指定データ、258 コンテナ設定テーブル、260 プロトコル取得部、261,262,263 プロトコルコンテナ、264 プロトコル取得プログラム、270 コンテナエンジン、275 コンテナエンジンプログラム、280 デプロイ領域、291 カーネル、300 端末、311 アプリケーション、314 開発プログラム、315 テーブル設定プログラム、317 コンフィグプログラム、329 変換ボタン、CM,CM1 コマンド。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13