(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-02
(45)【発行日】2023-10-11
(54)【発明の名称】制御システムにおいて実施される方法
(51)【国際特許分類】
G05B 19/05 20060101AFI20231003BHJP
【FI】
G05B19/05 L
(21)【出願番号】P 2021208133
(22)【出願日】2021-12-22
(62)【分割の表示】P 2019046796の分割
【原出願日】2019-03-14
【審査請求日】2022-03-10
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】米田 光宏
(72)【発明者】
【氏名】阪谷 信幸
(72)【発明者】
【氏名】赤井 亮太
(72)【発明者】
【氏名】新實 太雅
(72)【発明者】
【氏名】澤田 成憲
【審査官】影山 直洋
(56)【参考文献】
【文献】国際公開第2014/108999(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/05
(57)【特許請求の範囲】
【請求項1】
1以上の制御装置および情報処理装置を備える制御システムにおいて実施される方法であって、
前記情報処理装置と前記1以上の制御装置は、通信可能に接続されて互いに時刻同期され、
前記方法は、
前記情報処理装置に含まれる処理部が、
各前記1以上の制御装置から受信するデータに基づく制御演算に従う制御データを算出する制御演算処理を実行すること、および、
前記各制御装置に含まれる制御部が、
フィールド装置からの入来データを前記情報処理装置へ転送し、前記情報処理装置から受信する前記制御データを前記フィールド装置に出力する入出力処理を実行することを、含み、
前記各制御装置と前記情報処理装置は、共通のトリガを受付けたとき、前記時刻同期に基づく時間であって前記各制御装置と前記情報処理装置との間で共有される時間の開始または終了を検知し、
前記制御演算処理および前記入出力処理は、前
記共有される時間内で実行され、
前記フィールド装置は、前記共有される時間内において、予め定められたトリガが与えられたとき前記制御データに基づく処理を実施し、処理に基づくデータを前記制御装置に出力する、制御システムにおいて実施される方法。
【請求項2】
前記方法は、さらに、前記処理部が、
前記共有される時間内で、前記制御演算処理を実行するための時間が不足するとき、前記共有される時間を長くすることを含む、請求項1に記載の制御システムにおいて実施される方法。
【請求項3】
前記共有される時間は制御周期を含み、
前記入出力処理は、
制御周期において、当該制御周期以前の複数の制御周期に対応する前記入来データを前記情報処理装置へ転送し、前記情報処理装置から受信する前記複数の制御周期に対応する前記制御データを前記フィールド装置に出力する処理を含む、請求項1または2に記載の制御システムにおいて実施される方法。
【請求項4】
前記共有される時間は制御周期を含み、
前記入出力処理は、
1の制御周期に対応する前記入来データを前記情報処理装置へ転送し、前記情報処理装置から受信する当該入来データに基づく複数の制御周期に対応する制御データを、前記フィールド装置に出力する処理を含む、請求項1または2に記載の制御システムにおいて実施される方法。
【請求項5】
前記入出力処理は、
制御周期において、前記情報処理装置から前記複数の制御周期に対応する制御データを受信したとき、当該複数の制御周期に対応する制御データを、それぞれ、当該制御周期よりも後の複数の制御周期において、前記フィールド装置に出力する処理を含む、請求項3または4に記載の制御システムにおいて実施される方法。
【請求項6】
前記情報処理装置と前記各制御装置は、
前記共通のトリガを受付たとき処理を開始し、
前記方法は、さらに、前記情報処理装置が、
前記
共通のトリガの受付け時間と前記入出力処理にかかる時間とに基づき予測される前記データの受信開始時間から遡る一定時間内において、前記制御演算処理のための準備処理を実行することを含む、請求項1から5のいずれか1項に記載の制御システムにおいて実施される方法。
【請求項7】
前記準備処理は、前記制御演算処理を除く情報処理の実行を禁止する処理を含む、請求項6に記載の制御システムにおいて実施される方法。
【請求項8】
前記情報処理装置に複数の前記制御装置が通信可能に接続されて、
前記制御演算処理は、それぞれが各前記複数の制御装置に対応する複数の制御演算処理を含み、
前記処理部は、
前記複数の制御装置からデータを受信したとき前記複数の制御演算処理を実行開始する第1モード、または、前記複数の制御装置のうちの1つからデータを受信したとき当該1の制御装置に対応する前記制御演算を実行開始する第2モードを備える、請求項1から7のいずれか1項に記載の制御システムにおいて実施される方法。
【請求項9】
前記処理部は、前記第1モードおよび前記第2モードを備える場合、前記方法は、さらに、前記処理部が、外部指示に従い前記第1モードおよび前記第2モードの一方を実施することを含む、請求項8に記載の制御システムにおいて実施される方法。
【請求項10】
複数の前記フィールド装置がフィールドネットワークを介して前記制御装置に接続され、
前記方法は、さらに、前記制御部が、
前記入出力処理において、前記フィールドネットワークを介して、前記複数のフィールド装置から入来データを収集し、および前記情報処理装置から受信する前記制御データを前記複数のフィールド装置へ転送することを含む、請求項1から9のいずれか1項に記載の制御システムにおいて実施される方法。
【請求項11】
前記情報処理装置に複数の前記制御装置が通信可能に接続されて、
前記複数の制御装置は稼働系として動作する制御装置と、待機系として動作する制御装置とを含み、
前記待機系の制御装置は、所定タイミングに応じて稼働を開始し、
前記方法は、さらに、前記情報処理装置が、前記所定タイミングに応じて、前記稼働系の制御装置とのデータ通信を、前記待機系との制御装置とのデータ通信に切替えることを含む、請求項1から10のいずれか1項に記載の制御システムにおいて実施される方法。
【請求項12】
1以上の制御装置および情報処理装置を備える制御システムにおいて実施される方法であって、
前記情報処理装置と前記1以上の制御装置は、通信可能に接続されて互いに時刻同期され、
前記方法は、
前記情報処理装置に含まれる処理部が、
各前記1以上の制御装置から受信するデータに基づく制御演算に従う制御データを算出する制御演算処理を実行すること、および、
前記各制御装置に含まれる制御部が、
フィールド装置からの入来データを前記情報処理装置へ転送し、前記情報処理装置から受信する前記制御データを前記フィールド装置に出力する入出力処理を実行することを、含み、
前記制御演算処理および前記入出力処理は、前記時刻同期に基づく時間であって前記各制御装置と前記情報処理装置との間で共有される時間内で実行され、
前記共有される時間は制御周期を含み、
前記入出力処理は、
制御周期において、当該制御周期以前の複数の制御周期に対応する前記入来データを前記情報処理装置へ転送し、前記情報処理装置から受信する前記複数の制御周期に対応する前記制御データを前記フィールド装置に出力する処理を含む
、制御システムにおいて実施される方法。
【請求項13】
1以上の制御装置および情報処理装置を備える制御システムにおいて実施される方法であって、
前記情報処理装置と前記1以上の制御装置は、通信可能に接続されて互いに時刻同期され、
前記方法は、
前記情報処理装置に含まれる処理部が、
各前記1以上の制御装置から受信するデータに基づく制御演算に従う制御データを算出する制御演算処理を実行すること、および、
前記各制御装置に含まれる制御部が、
フィールド装置からの入来データを前記情報処理装置へ転送し、前記情報処理装置から受信する前記制御データを前記フィールド装置に出力する入出力処理を実行することを、含み、
前記制御演算処理および前記入出力処理は、前記時刻同期に基づく時間であって前記各制御装置と前記情報処理装置との間で共有される時間内で実行され、
前記共有される時間は制御周期を含み、
前記入出力処理は、
1の制御周期に対応する前記入来データを前記情報処理装置へ転送し、前記情報処理装置から受信する当該入来データに基づく複数の制御周期に対応する制御データを、前記フィールド装置に出力する処理を含む
、制御システムにおいて実施される方法。
【請求項14】
1以上の制御装置および情報処理装置を備える制御システムにおいて実施される方法であって、
前記情報処理装置と前記1以上の制御装置は、通信可能に接続されて互いに時刻同期され、
前記方法は、
前記情報処理装置に含まれる処理部が、
各前記1以上の制御装置から受信するデータに基づく制御演算に従う制御データを算出する制御演算処理を実行すること、および、
前記各制御装置に含まれる制御部が、
フィールド装置からの入来データを前記情報処理装置へ転送し、前記情報処理装置から受信する前記制御データを前記フィールド装置に出力する入出力処理を実行することを、含み、
前記制御演算処理および前記入出力処理は、前記時刻同期に基づく時間であって前記各制御装置と前記情報処理装置との間で共有される時間内で実行され、
前記情報処理装置と前記各制御装置は、前記共有される時間内で受付ける共通のトリガに応じて処理を開始し、
前記方法は、さらに、前記情報処理装置が、
前記トリガの受付け時間と前記入出力処理にかかる時間とに基づき予測される前記データの受信開始時間から遡る一定時間内において、前記制御演算処理のための準備処理を実行することを含む
、制御システムにおいて実施される方法。
【請求項15】
1以上の制御装置および情報処理装置を備える制御システムにおいて実施される方法であって、
前記情報処理装置と前記1以上の制御装置は、通信可能に接続されて互いに時刻同期され、
前記方法は、
前記情報処理装置に含まれる処理部が、
各前記1以上の制御装置から受信するデータに基づく制御演算に従う制御データを算出する制御演算処理を実行すること、および、
前記各制御装置に含まれる制御部が、
フィールド装置からの入来データを前記情報処理装置へ転送し、前記情報処理装置から受信する前記制御データを前記フィールド装置に出力する入出力処理を実行することを、含み、
前記制御演算処理および前記入出力処理は、前記時刻同期に基づく時間であって前記各制御装置と前記情報処理装置との間で共有される時間内で実行され、
前記情報処理装置に複数の前記制御装置が通信可能に接続されて、
前記制御演算処理は、それぞれが各前記複数の制御装置に対応する複数の制御演算処理を含み、
前記処理部は、
前記複数の制御装置からデータを受信したとき前記複数の制御演算処理を実行開始する第1モード、または、前記複数の制御装置のうちの1つからデータを受信したとき当該1の制御装置に対応する前記制御演算を実行開始する第2モードを備える
、制御システムにおいて実施される方法。
【請求項16】
1以上の制御装置および情報処理装置を備える制御システムにおいて実施される方法であって、
前記情報処理装置と前記1以上の制御装置は、通信可能に接続されて互いに時刻同期され、
前記方法は、
前記情報処理装置に含まれる処理部が、
各前記1以上の制御装置から受信するデータに基づく制御演算に従う制御データを算出する制御演算処理を実行すること、および、
前記各制御装置に含まれる制御部が、
フィールド装置からの入来データを前記情報処理装置へ転送し、前記情報処理装置から受信する前記制御データを前記フィールド装置に出力する入出力処理を実行することを、含み、
前記制御演算処理および前記入出力処理は、前記時刻同期に基づく時間であって前記各制御装置と前記情報処理装置との間で共有される時間内で実行され、
複数の前記フィールド装置がフィールドネットワークを介して前記制御装置に接続され、
前記方法は、さらに、前記制御部が、
前記入出力処理において、前記フィールドネットワークを介して、前記複数のフィールド装置から入来データを収集し、および前記情報処理装置から受信する前記制御データを前記複数のフィールド装置へ転送することを含む
、制御システムにおいて実施される方法。
【請求項17】
1以上の制御装置および情報処理装置を備える制御システムにおいて実施される方法であって、
前記情報処理装置と前記1以上の制御装置は、通信可能に接続されて互いに時刻同期され、
前記方法は、
前記情報処理装置に含まれる処理部が、
各前記1以上の制御装置から受信するデータに基づく制御演算に従う制御データを算出する制御演算処理を実行すること、および、
前記各制御装置に含まれる制御部が、
フィールド装置からの入来データを前記情報処理装置へ転送し、前記情報処理装置から受信する前記制御データを前記フィールド装置に出力する入出力処理を実行することを、含み、
前記制御演算処理および前記入出力処理は、前記時刻同期に基づく時間であって前記各制御装置と前記情報処理装置との間で共有される時間内で実行され、
前記情報処理装置に複数の前記制御装置が通信可能に接続されて、
前記複数の制御装置は稼働系として動作する制御装置と、待機系として動作する制御装置とを含み、
前記待機系の制御装置は、所定タイミングに応じて稼働を開始し、
前記方法は、さらに、前記情報処理装置が、前記所定タイミングに応じて、前記稼働系の制御装置とのデータ通信を、前記待機系との制御装置とのデータ通信に切替えることを含む
、制御システムにおいて実施される方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、制御対象を制御する制御システムに関する。
【背景技術】
【0002】
生産ラインに備えられるFA(Factory Automation)には、PLC(プログラマブルロジックコントローラ)などの制御装置が用いられる。このような制御装置は、生産ラインに設けられた1または複数のフィールド装置である制御対象との間でバスまたはネットワークを介してデータを送受信する。制御装置は、フィールド装置から受信したデータをユーザプログラム(User Program、以下UPGと略する場合がある)に従う制御演算処理を実行し、処理結果に基づく制御データをフィールド装置に送信する。フィールド装置は制御データに従い制御されて、制御結果によるデータを制御装置に出力する。
【0003】
近年は、FAシステムの高機能化に伴い、効率的なシステムの運用が望まれている。例えば、特開2018-73436号公報(特許文献1)は、制御機器毎のパラメータ設定を、制御機器とネットワークを介して通信可能に接続されるサーバにより実施することで、パラメータの簡単な管理を可能にしている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
また、FAシステムの高機能化に伴い、UPGに従う制御演算処理にかかる処理量または処理時間が増加している。したがって、UPGの制御演算処理にかかる処理量または処理時間の増加に伴う効率的なシステム運用の対策が望まれている。しかし、特許文献1は、パラメータ設定に関する構成を開示するが、UPGの制御演算処理にかかる処理量または処理時間の増加に伴う効率的なシステム運用のための技術は提案しない。
【0006】
本開示の1つの目的は、制御演算処理に関して効率的なシステムの運用を可能にする制御システムを提供することである。
【課題を解決するための手段】
【0007】
本開示の一例は、1以上の制御装置および情報処理装置を備える制御システムであって、情報処理装置と1以上の制御装置は、通信可能に接続されて互いに時刻同期され、情報処理装置は、各1以上の制御装置から受信するデータに基づく制御演算に従う制御データを算出する制御演算処理を実行する処理部を、含み、各制御装置は、フィールド装置からの入来データを情報処理装置へ転送し、情報処理装置から受信する制御データをフィールド装置に出力する入出力処理を実行する制御部を、含み、制御演算処理および入出力処理は、時刻同期に基づく時間であって各制御装置と情報処理装置との間で共有される時間内で実行される。
【0008】
上述の開示によれば、互いに時刻同期される情報処理装置と制御装置を備える制御システムにおいて、情報処理装置の制御演算処理と、制御装置の入出力処理とを共有される時間内で協調して実行する環境が提供される。ここでは、制御装置は制御演算処理の実行環境を備える必要はないので、制御装置は制御演算処理に要求される処理量または処理時間の制約を受けずに(独立に)フィールド装置を制御することができる。
【0009】
上述の開示において処理部が実行する処理は、さらに、共有される時間内で、制御演算処理を実行するための時間が不足するとき、共有される時間を長くする処理を含む。
【0010】
上述の開示によれば、共有される時間内において制御演算処理を実行するための時間を確保することができる。
【0011】
上述の開示において、共有される時間は制御周期を含み、入出力処理は、制御周期において、当該制御周期以前の複数の制御周期に対応する入来データを情報処理装置へ転送し、情報処理装置から受信する複数の制御周期に対応する制御データをフィールド装置に出力する処理を含む。
【0012】
上述の開示によれば、制御装置は、複数の制御周期の入来データをまとめて、情報処理装置に送信することで、制御周期毎に送信する場合に比較して、情報処理装置と制御装置との間の通信時間を節約できる。また、複数制御周期分のデータが通信されるので、ある制御周期のデータ落ち(喪失)があっても、他の制御周期のデータで補完することが可能となる。
【0013】
上述の開示において、共有される時間は制御周期を含み、入出力処理は、1の制御周期に対応する入来データを前記情報処理装置へ転送し、情報処理装置から受信する当該入来データに基づく複数の制御周期に対応する制御データを、フィールド装置に出力する処理を含む。
【0014】
上述の開示によれば、制御装置は、1の制御周期の入来データを情報処理装置に送信することで、複数の制御周期に対応する制御データを取得することができる。
【0015】
上述の開示において、入出力処理は、制御周期において、情報処理装置から複数の制御周期に対応する制御データを受信したとき、当該複数の制御周期に対応する制御データを、それぞれ、当該制御周期よりも後の複数の制御周期において、フィールド装置に出力する処理を含む。
【0016】
上述の開示によれば、情報処理装置は、その後の複数の制御周期の制御データをまとめて、制御装置に送信することで、制御周期毎に送信する場合に比較して、情報処理装置と制御装置との間の通信時間を節約できる。また、複数制御周期分のデータが通信されるので、ある制御周期のデータ落ち(喪失)があっても、他の制御周期のデータで補完することが可能となる。
【0017】
上述の開示において、情報処理装置と各制御装置は、共有される時間内で受付ける共通のトリガに応じて処理を開始し、情報処理装置は、トリガの受付け時間と入出力処理にかかる時間とに基づき予測されるデータの受信開始時間から遡る一定時間内において、制御演算処理のための準備処理を実行する。
【0018】
上述の開示によれば、制御演算処理が開始される前に、準備処理を実行する時間を確保することができる。
【0019】
上述の開示において、準備処理は、制御演算処理を除く情報処理の実行を禁止する処理を含む。
【0020】
上述の開示によれば、制御演算処理が開始される前は他の情報処理の実行を禁止することで、その後の制御演算処理のためのリソースを確実に準備することができる。
【0021】
上述の開示において、情報処理装置に複数の制御装置が通信可能に接続されて、制御演算処理は、それぞれが各複数の制御装置に対応する複数の制御演算処理を含み、処理部は、複数の制御装置からデータを受信したとき複数の制御演算処理を実行開始する第1モード、または、複数の制御装置のうちの1つからデータを受信したとき当該1の制御装置に対応する制御演算を実行開始する第2モードを備える。
【0022】
上述の開示によれば、情報処理装置において、複数の制御演算処理を実行開始するモードとして、同期して開始させるような上記の第1モード、または、同期せずに非同期に(対応の制御装置からデータと受信した時に)開始させるような上記の第2モードが提供される。
【0023】
上述の開示において、処理部は、第1モードおよび第2モードを備える場合、外部指示に従い第1モードおよび第2モードの一方を実施する。
【0024】
上述の開示によれば、外部からの指示により、情報処理装置に第1モードおよび第2モードのいずれかを実行させることができる。
【0025】
上述の開示において、複数のフィールド装置がフィールドネットワークを介して制御装置に接続され、制御部は、入出力処理において、フィールドネットワークを介して、複数のフィールド装置から入来データを収集し、および情報処理装置から受信する制御データを複数のフィールド装置へ転送する。
【0026】
上述の開示によれば、制御装置は、入出力処理において、フィールド装置からの入来データを収集し、および情報処理装置から受信する制御データを複数のフィールド装置へ転送することができる。
【0027】
上述の開示において、情報処理装置に複数の制御装置が通信可能に接続されて、複数の制御装置は稼働系として動作する制御装置と、待機系として動作する制御装置とを含み、待機系の制御装置は、所定タイミングに応じて稼働を開始し、情報処理装置は、所定タイミングに応じて、稼働系の制御装置とのデータ通信を、待機系との制御装置とのデータ通信に切替える。
【0028】
上述の開示によれば、制御システムが備える複数の制御装置を、稼働系または待機系として動作させて、所定タイミングに応じて待機系の制御装置を稼働系に切替えることができる。所定タイミングが故障発生を含む場合は、故障発生後であっても制御システムを継続して運転することが可能となる。
【発明の効果】
【0029】
本開示によれば、制御演算処理に関して効率的なシステムの運用を可能にする制御システムを提供できる。
【図面の簡単な説明】
【0030】
【
図1】本実施の形態にかかる制御システム1の構成の一例を模式的に示す図である。
【
図2】本実施の形態に従う制御システム1のネットワーク構成例を示す模式図である。
【
図3】本実施の形態にかかるPLC100の構成例を示すブロック図である。
【
図4】本実施の形態にかかるサーバ600の構成例を示す図である。
【
図5】本実施の形態にかかるPLC100のソフトウェア構成例を示すブロック図である。
【
図6】本実施の形態にかかるサーバ600のソフトウェア構成例を示す図である。
【
図7】本実施の形態にかかる制御システム1の基本系を模式的に示す図である。
【
図8】本実施の形態にかかる基本系のタイミングチャートの一例を模式的に示す図である。
【
図9】本実施の形態にかかる基本系における処理のフローチャートの一例を示す図である。
【
図10】本実施の形態にかかる基本系における処理のフローチャートの変形例を示す図である。
【
図11】本実施の形態にかかる制御システム1の多重化系を模式的に示す図である。
【
図12】本実施の形態にかかる多重化系のタイミングチャートの一例を模式的に示す図である。
【
図13】本実施の形態にかかる多重化系のタイミングチャートの他の例を模式的に示す図である。
【
図14】本実施の形態にかかる多重化系における処理のフローチャートの一例を示す図である。
【
図15】本実施の形態にかかる多重化系の応用例を模式的に示す図である。
【
図16】本実施の形態にかかる多重化系の他の応用例を模式的に示す図である。
【
図17】本実施の形態にかかるオーバサンプリングの一例を模式的に説明する図である。
【
図18】
図17のオーバサンプリングにより格納されるデータの一例を模式的に示す図である。
【
図19】本実施の形態にかかるオーバサンプリングの他の例を模式的に説明する図である。
【
図20】本実施の形態にかかる基本系における処理のフローチャートの変形例を示す図である。
【
図21】本実施の形態にかかる多重化系の処理のフローチャートの変形例を示す図である。
【発明を実施するための形態】
【0031】
本実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0032】
<A.適用例>
まず、本発明が適用される場面の一例について説明する。
図1は、本実施の形態にかかる制御システム1の構成の一例を模式的に示す図である。
図1を参照して、FAに適用され得る制御システム1では、例えば「制御装置」の一実施例であるPLC100A,100Bおよび100Cおよび「情報処理装置」の一実施例であるサーバ600を備える。PLC100A,100Bおよび100Cは同様の機能を備えており、これらを区別しない場合はPLC100と総称する。サーバ600には、有線または無線のネットワーク11を介してPLC100が接続されている。また、ネットワーク11にはサポート装置500を接続することができる。
【0033】
図1では、制御システム1は、PLC100とサーバ600を別体として構成されているが、これに限定されない。例えば、制御システム1は、PLC100の機能とサーバ600の機能を内蔵して備える産業用のコンピュータ(所謂IPC:Industrial Personal Computer)を備えて構成されてもよい。
【0034】
ネットワーク11には、PLC100A、100Bおよび100Cと、サーバ600とが接続されており、ネットワーク11では装置間でデータを遣り取りできる。また、サーバ600には、FAシステム内のサーバ、またはクラウドサーバ等のようなFAシステム外のサーバを適用することもできる。サーバ600が外部サーバである場合、ネットワーク11はインターネットなどの外部ネットワークを含む。
【0035】
PLC100には、センサ、アクチュエータといった各種のフィールド装置90が接続される。フィールド装置90は、「制御対象」の一例である。これらのフィールド装置90は、PLC100に装着される入出力ユニットを介してPLC100に直接接続される場合もあるが、フィールド側のネットワーク110を介してPLC100に接続されることもある。
図1では、PLC100は、1または複数のネットワーク110に接続される。各ネットワーク110には、1または複数のフィールド装置90が接続される。1または複数のフィールド装置90の各々は、製造装置または生産ラインなど(以下、「フィールド」とも総称する。)に対して何らかの物理的な作用を与えるアクチュエータ、およびフィールドとの間で情報を遣り取りする入出力装置などを含む。
【0036】
ネットワーク110を介して、PLC100とフィールド装置90との間で遣り取りされるデータは、数100μsecオーダ~数10msecオーダのごく短い周期で更新されることになる。なお、このような遣り取りされるデータの更新処理は、IOリフレッシュ処理72により実現される。IOリフレッシュ処理72は、「入出力処理」の一実施例である。
【0037】
具体的には、本実施の形態では、PLC100は、指定された観測値を含むフレームを生成する機能を有する。PLC100は、生成されるフレームを、ネットワーク11を介してサーバ600に転送(送信)する。観測値の概念は、任意の制御対象についてのデータ(観測値)の時間的な変化を連続的(あるいは、一定間隔をおいて不連続)に観測して得られる一連の値も含み得る。
【0038】
本明細書において「観測値」は、PLC100での制御演算において利用可能な値(実値)を総称する概念であり、典型的には、制御対象から取得されて制御演算に入力される値(フィールドから取得された測定値など)などを含み得る。
【0039】
制御システム1では、サーバ600のタイマ601とPLC100Aのタイマ101A、PLC100Bのタイマ101BおよびPLC100Cのタイマ101Cは、互いに時刻同期されている。サーバ600は、PLC100A、100Bおよび100Cから受信する観測値に相当する入力データ(送信)182を用いてUPG(User Program)69を実行することにより、入力データ(送信)182に基いた制御演算処理を実行する。サーバ600は、制御演算処理による算出値である出力データ(受信)183をPLC100に送信する。算出値は、フィールド装置90の「制御データ」の一実施例に相当し、例えば指令値、制御量などを示す。各PLC100は、フィールド装置90からの観測値に相当の入来データを収集しサーバ600へ転送し、サーバ600から受信する制御データをフィールド装置90に出力するIOリフレッシュ処理72を実行する。サーバ600におけるUPG69の実行による制御演算処理および各PLC100におけるIOリフレッシュ処理72は、上記した時刻同期に基づく時間であって各PLC100とサーバ600との間で共有される時間内で実行される。
【0040】
図1では、時刻同期に基く共有される時間内においてサーバ600とPLC100がデータを遣り取りしながら協調制御が実施される。具体的には、この共有される時間内において、(i)PLC100はIOリフレッシュ処理72によりフィールド装置90からの出力データ(観測値)を収集し、(ii)サーバ600はIOリフレッシュ処理72により収集されたフィールド装置90からの出力データに基づく制御演算処理を実施し、(iii)PLC100はIOリフレッシュ処理72によりサーバ600からの算出値(指令値、制御量)を効果)をフィールド装置90に出力する、一連の処理が実施される。制御システム1では、UPG69の実行環境はPLC100ではなくサーバ600に備えられる。したがって、協調制御では、PLC100の処理能力(所謂スペック)を超える演算量、演算速度が要求されるUPG69を実行し、その実行結果を用いてフィールド装置90を制御することが可能となる。
【0041】
以下、本実施の形態のより具体的な応用例について説明する。
【0042】
<B.制御システム1のネットワーク構成>
再び
図1を参照して、制御システム1のネットワーク11に接続されるPLC100A、100Bおよび100Cは、それぞれ、工程3A、3Bおよび3Cに備えられる。限定されないが、工程3A,3Bおよび3Cは、同じ工程(例えば、ワークを製品に組立てる工程等)であってもよく、または異なる工程(ワークの組立工程、組立てられた製品の塗装工程、塗装された製品の検査工程等)であってもよい。
【0043】
ネットワーク11のプロトコルとしては、限定されないが、例えば汎用的なEthernet(登録商標)上に制御用プロトコルを実装した産業用オープンネットワークであるEtherNet/IP(登録商標)を用いてもよい。また、ネットワーク110のプロトコルとしては、限定されないが、マシンコントロール用ネットワークの一例であるEtherCAT(登録商標)を採用してもよい。なお、ネットワーク11のプロトコルとネットワーク110のプロトコルとは、同じであってもよいし、異なっていてもよい。また、ネットワーク110は、データバスで構成することもできる。
【0044】
また、サポート装置500は、ユーザが制御システム1を運用するのを支援する支援ツールを提供する。支援ツールは、サーバ600におけるUPG69の実行環境,PLC100との通信環境等の準備の設定等を支援するツールを含む。サポート装置500は、ネットワーク11に接続され得るが、サーバ600に脱着自在に接続されてもよく、またはサーバ600に支援ツールが内蔵されてもよい。また、支援ツールは、PLC100がフィールド装置90を制御するために必要な準備の設定,サーバ600との通信環境等の準備の設定等を支援するツールを含んでもよく、その場合、サポート装置500は、PLC100に脱着自在に接続され得る。なお、支援ツールは、例えばUI(User Interface)によりユーザに提供される。
【0045】
<C.制御システム1における時刻同期>
図1の制御システム1では、ネットワーク11に接続される複数のPLC100A,100Bおよび100Cは、それぞれ、ネットワーク110を介して接続される1または複数のフィールド装置90とのデータを送受信する。具体的には、PLC100は、フィールド装置90から入来するデータをサーバ600へ転送し、サーバ600から受信する制御データをフィールド装置90に出力する入出力処理(IOリフレッシュ処理72)を実行する。
【0046】
また、ネットワーク110では、データの到着時間が保証される必要がある。そのため、PLC100は、データ伝送のタイミングを規定する、データが送受信される主体(すなわち、1または複数のフィールド装置90およびサーバ600)の間で互いに時刻同期されたタイマを有している。
【0047】
また、本実施の形態に従う制御システム1においては、複数のPLC100の各々が有するタイマを互いに時刻同期させる。これにより、互いに異なるPLC100に接続される、すなわち異なる工程間において複数のフィールド装置90の協調制御が実現され得る。
【0048】
以下、本実施の形態にかかる制御システム1が提供する時刻同期機能について説明する。
【0049】
(c1.時刻同期)
図2は、本実施の形態に従う制御システム1のネットワーク構成例を示す模式図である。
図2を参照して、本実施の形態に従う制御システム1における時刻同期を説明する。
【0050】
図2に示す制御システム1は、複数のPLC100A,100Bおよび100Cと、複数のフィールド装置90A~90Iとを備える。制御システム1では、PLC100A、100Bおよび100Cは、それぞれ、対応するネットワーク110内のデータ伝送を管理するマスタとして機能する。フィールド装置90A~90Iは、対応するマスタからの指令に従ってデータ伝送を行なうスレーブ(Slave)として機能する。
【0051】
本実施の形態に従う制御システム1において、ネットワーク110に接続される複数の装置、すなわちPLC100および1または複数のフィールド装置90の間では、送受信タイミングが同期されている(図中の時刻同期(3)に相当)。具体的には、PLC100およびフィールド装置90の各々は、互いに時刻同期されたタイマを備える。このタイマは、同期してインクリメントまたはデクリメントされるカウンタに相当する。PLC100およびフィールド装置90の各々は、それらの時刻同期されたタイマに従って、データの送信または受信のタイミングを決定する。
【0052】
なお、本実施の形態では「タイミング」は何らかの事象が生じる時期、時間または時刻の概念を表す。また、「時刻同期」とはお互いの装置が有するタイマ,時間データ等を同期させることを示す。本実施の形態では、この時刻同期は、例えば、ネットワーク11、110においてTSN(Time-Sensitive Networking)に従うデータ通信が実施されることで実現され得る。
【0053】
図2に示す例においては、PLC100Aはタイマ102Aを備え、フィールド装置90A~90Cはそれぞれタイマ91A~91Cを備える。PLC100Aのタイマ102Aがマスタとして機能し、フィールド装置90A~90Cのタイマ91A~91Cがこのマスタを基準として、タイマ102Aのタイマ値に基づく値が、タイマ91A~91Cに設定される(時刻同期がとられる)。
【0054】
PLC100Aと同様に、PLC100Bが備えるタイマ102Bと、フィールド装置90D~90Fが備えるタイマ91D~91Fとの間で時刻同期がとられる。また、PLC100Aと同様に、PLC100Cが備えるタイマ102Cと、フィールド装置90G~90Iが備えるタイマ91G~91Iとの間で時刻同期がとられる。
【0055】
これにより、ネットワーク110を構成するPLC100とフィールド装置90との間でデータの伝送タイミングなどを互いに一致させることができる。
【0056】
図2に示す例において、PLC100Aは、タイマ102Aと時刻同期されたタイマ101Aを備え、また、PLC100Bは、タイマ102Bと時刻同期されたタイマ101Bを備え、また、PLC100Cは、タイマ102Cと時刻同期されたタイマ101Cを有している(図中の時刻同期(2)に相当)。
【0057】
また、制御システム1においては、サーバ600のタイマ601がマスタとして機能し、PLC100Aのタイマ101A、PLC100Bのタイマ101BおよびPLC100Cのタイマ101Cは、それぞれ、マスタのタイマ601と時刻同期する。これにより、各PLC100はサーバ600と相互に時刻同期する(図中の時刻同期(1)に相当)。
【0058】
また、PLC100Aのタイマ101Aは、サーバ600のタイマ601と時刻同期し、他のPLC100B,100Cのタイマ101B,101Cが、タイマ101Aと時刻同期してもよい。
【0059】
これにより、制御システム1では、各PLC100とサーバ600とは互いに時刻同期され、さらに各PLC100と、自PLC100に接続されるフィールド装置90とは互いに時刻同期される。
【0060】
<D.各装置の構成>
制御システム1が備える各装置の構成を説明する。
【0061】
(d1.PLC100の構成)
図3は、本実施の形態にかかるPLC100の構成例を示すブロック図である。
図3を参照して、PLC100は、プロセッサ102と、チップセット104と、主記憶装置106と、二次記憶装置108と、NIC(Network Interface Card)等のネットワークコントローラ105と、USB(Universal Serial Bus)コントローラ107と、メモリカードインターフェイス114と、ローカルバスコントローラ120と、フィールドネットワークコントローラ118と、カウンタ126とを含む。
【0062】
プロセッサ102は、CPU(Central Processing Unit)、MPU(microprocessor unit)、UPG(Graphics Processing Unit)などで構成される。プロセッサ102は、二次記憶装置108に格納された各種プログラムを読出して、読出されたプログラムを主記憶装置106に展開して実行することで、制御対象に応じた制御、および、後述するような各種処理を実現する。二次記憶装置108は、例えば、HDD(Hard Disk Drive)またはSSD(Solid State Drive)などの不揮発性記憶装置などで構成される。主記憶装置106は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。
【0063】
チップセット104は、プロセッサ102と各デバイスを制御することで、PLC100全体としての処理を実現する。
【0064】
二次記憶装置108には、基本的な機能を実現するためのシステムプログラムに加えて、制御対象の製造装置や設備に応じて作成されるユーザプログラムが格納される。
【0065】
ネットワークコントローラ105は、ネットワーク11を介して、サーバ600との間のデータを遣り取りする。USBコントローラ107は、USB接続を介してサポート装置500との間のデータの遣り取りを制御する。
【0066】
メモリカードインターフェイス114は、メモリカード116を脱着可能(detachable)に構成されており、メモリカード116に対してデータを書込み、メモリカード116から各種データ(ユーザプログラムやトレースデータなど)を読出すことが可能になっている。
【0067】
カウンタ126は、一種のタイマである。カウンタ126は、PLC100における各種処理の実行タイミングを管理するための時刻基準として用いられる。カウンタ126は、典型的には、所定周期毎にカウンタ値をインクリメントまたはデクリメントする。カウンタ126として、プロセッサ102を駆動するシステムバス上に配置された、ハードウェアタイマが実装されてもよく、あるいは、ASIC(Application Specific Integrated Circuit)やFPGA(Field-Programmable Gate Array)などの専用回路を用いて実装されてもよい。
図2で示したタイマ101A、101Bおよび101Cは、それぞれ、カウンタ126に対応する。
【0068】
フィールドネットワークコントローラ118は、ネットワーク110を介したフィールド装置90を含む他のデバイスとの間のデータの遣り取りを制御する。フィールドネットワークコントローラ118は、他のデバイスとの間でタイミングを管理するための時刻基準として用いられるカウンタ119を有している。
図2に示したタイマ102A、102Bおよび102Cは、それぞれ、カウンタ119に対応する。
【0069】
ローカルバスコントローラ120は、PLC100に接続され得る図示しない機能ユニットとの間でデータを遣り取りするインターフェイスである。
【0070】
また、ネットワーク110上の各フィールド装置90も、フィールドネットワークコントローラ118との間でタイミングを管理するための時刻基準として用いられるカウンタ91を有している。
図2のタイマ91A~91Iは、それぞれ、カウンタ91に対応する。
【0071】
カウンタ119および各フィールド装置90が有するカウンタについては、上述のカウンタ126と同様の構成を採用できる。
【0072】
フィールドネットワークコントローラ118は、ネットワーク110を介した定周期通信を行うための通信マスタとして動作する。フィールドネットワークコントローラ118は、フィールド装置90のカウンタ91が示すカウンタ値をカウンタ119が示すカウンタ値と一致させるよう同期管理を実施する。
【0073】
図3のPLC100では、上記に述べた時刻同期により、カウンタ119は、カウンタ126と同期する。
【0074】
図3には、プロセッサ102がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。あるいは、PLC
100の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、マルチプロセッサを備えて並列実行可能な環境が提供される。また、仮想化技術を用いて、用途の異なる複数のOS(Operating System)を並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
【0075】
(d2.サーバ600の構成)
図4は、本実施の形態にかかるサーバ600の構成例を示す図である。サーバ600は、汎用のコンピュータの構成を備える。
図4を参照して、サーバ600は、タイマ601、CPUまたはMPUなどのプロセッサ603、記憶装置、PLC100を含む他の装置との間でデータを遣り取りするためのネットワークコントローラ620を備える。ネットワークコントローラ620は、例えばNICを備えて構成されてもよい。これらのコンポーネントは、内部バス602を介して互いにデータ通信可能に接続されている。この記憶装置は、ROM(Read Only Memory)604、RAM(Random Access Memory)605およびHDD(Hard Disk Drive)606を含む。プロセッサ603は、マルチプロセッサを備えて、UPG69を並列に実行できるよう構成されてもよい。
【0076】
HDD606は、OS(Operating System)を含むシステムプログラム71、サーバプログラム68、制御演算処理のためのUPG69A,69B、異常を監視するための監視プログラム65、異常を処理する異常処理プログラム66、上記に述べた時刻同期を実施するための時刻同期プログラム67、スケジューラ63、通信プログラム64、制御演算とは異なる他の処理を実施するための他のプログラム611、および後述する「準備時間」を確保する処理に関するリザーブプログラム612を格納する。プロセッサ603は、これらのプログラムをRAM605に読出して実行する。
【0077】
本実施の形態では、HDD606は、ユーザプログラムとして、PLC100AのUPG69AおよびPLC100BのUPG69Bの2種類を格納するが、UPG69A,69Bに加えて、PLC100CのUPGを格納してもよい。また、ユーザプログラムがPLC100A,100Bおよび100Cに共通する場合には、HDD606に格納されるユーザプログラムは1種類であってもよい。UPG69A,69Bは区別しない場合はUPG69と呼ぶ。UPG69は、MCE(Motion Control Engine)70を含んでも良い。MCE70は、ロボットを目標軌跡に従う移動(駆動)させるための指令値を生成(算出)するプログラムである。
【0078】
RAM605は、後述する入力データ(送信)182を格納する受信用データ領域61と、後述する出力データ(受信)183を格納する送信用データ領域62を含む。入力データ(送信)182と出力データ(受信)183は、データの送信元または宛先であるPLC100の識別子、変数名および当該変数に対応するデータとからなる。プロセッサ603は、ネットワークコントローラ620を介してPLC100から受信する入力データ(送信)182を受信用データ領域61に格納する。また、プロセッサ603は、受信用データ領域61の入力データ(送信)182を用いた制御演算処理を実行し、算出値である出力データ(受信)183を、送信用データ領域62に格納する。入力データ(送信)182の受信と出力データ(受信)183の送信は、プロセッサ603が、通信プログラム64を実行することにより実現される。
【0079】
また、制御演算処理は、プロセッサ603が、UPG69を実行することにより実現される。UPG69は、限定されないが、例えば、ファンクションブロックなどを利用したラダーロジックなどで規定することができる。
【0080】
(d3.PLC100のソフトウェア構成)
次に、本実施の形態にかかるPLC100のソフトウェア構成例について説明する。
図5は、本実施の形態にかかるPLC100のソフトウェア構成例を示すブロック図である。
図5を参照して、PLC100は、制御エンジン150、バッファ180と、ゲートウェイプログラム194とを含む。バッファ180は、典型的には、例えば主記憶装置106または二次記憶装置108内に、または、ネットワークコントローラ105が備えるメモリ内に配置され得る。また、バッファ180は、入力データ(送信)182と、出力データ(受信)183を格納する。
【0081】
制御エンジン150は、各種プログラムの実行環境を提供する。具体的には、PLC100のプロセッサ102が、二次記憶装置108に格納されているシステムプログラム151を読出して主記憶装置106に展開して実行することで制御エンジン150が実現される。
【0082】
制御エンジン150は、制御プログラム152と、変数管理プログラム160と、スケジューラプログラム170と、入力プログラム172と、出力プログラム174と、時刻同期プログラム177を実行する。変数管理プログラム160と、スケジューラプログラム170と、入力プログラム172と、出力プログラム174とについては、システムプログラム151の一部として実装されてもよい。この場合には、これらのプログラムが提供するそれぞれの機能を単一のシステムプログラム151が提供するようにしてもよい。
【0083】
制御プログラム152は、ユーザが提供するプログラムの一例である周辺処理プログラム154、IOリフレッシュ156、転送プログラム158、異常処理プログラム178および監視プログラム179を含む。周辺処理プログラム154は、UPG69により実施される制御演算処理とは異なる処理であって、制御演算処理の周辺で実施される処理であり、例えば表示処理、ロギング処理等を含む。なお、周辺処理は、UPG69が実施する制御演算処理と関連した処理も含み得る概念である。
【0084】
変数管理プログラム160は、制御エンジン150で利用可能な値を変数の形で、例えば主記憶装置106の所定記憶領域において管理する。より具体的には、変数管理プログラム160は、PLC100の状態などを示すシステム変数と、PLC100とネットワーク110を介して接続されるフィールド装置90が保持する値を示すデバイス変数161と、PLC100で実行される周辺処理プログラム154が保持する値を示すユーザ変数とを管理する。デバイス変数161は、フィールド装置90から入来するデータである入力データ162と、フィールド装置90に出力するべきデータである出力データ163の変数を含む。出力データ163の出力変数には、サーバ600から受信した出力データ(受信)183が設定される。入力データ162の入力変数には、出力データ163の制御量、指令値に従い制御されたフィールド装置90からの観測値が設定される。
【0085】
入力プログラム172は、ネットワーク110を介してフィールド装置90から入来する入力データ162を受付けて、変数管理プログラム160に渡す。また、出力プログラム174は、変数管理プログラム160から渡される出力データ163を、ネットワーク110を介してフィールド装置90へ出力する。
【0086】
転送プログラム158は、IOリフレッシュ156からの入力データ162を送信可能な形式に変換することにより入力データ(送信)182を生成し、バッファ180に格納する。また、転送プログラム158は、サーバ600から受信されて格納されたバッファ180の出力データ(受信)183を、処理可能な形式の出力データ163に変換し、変換後の出力データ163をIOリフレッシュ156に出力する。例えば、限定されないが、入力データ(送信)182は、フィールド装置90での時系列順の観測値を含むデータを示し、また、出力データ(受信)183は、フィールド装置90に出力すべき時系列順の制御データを示す。
【0087】
IOリフレッシュ156は、変数管理プログラム160と連携することによりIOリフレッシュ処理72を実施する。具体的には、IOリフレッシュ156は、サーバ600から受信した出力データ(受信)183を、転送プログラム158を介してバッファ180から読出し、変数管理プログラムに160に出力する。また、IOリフレッシュ156は、変数管理プログラム160から、デバイス変数161のうち入力変数の値である入力データ162を受信し、受信した入力データ162を、転送プログラム158を介してバッファ180に入力データ(送信)182として格納する。
【0088】
変数管理プログラム160は、入力プログラム172から渡されたデータを、デバイス変数161のうち入力変数に設定するとともに、入力変数の入力データ162を、IOリフレッシュ156に出力する。また、変数管理プログラム160は、IOリフレッシュ156からの出力データ(受信)183を、デバイス変数161のうち出力データ163の出力変数に設定するとともに、出力変数の出力データ163を出力プログラム174に渡す。
【0089】
上述のIOリフレッシュ156においては、デバイス変数161のうち入力データ162の変数値を、フィールド装置90から入来するデータ(観測値)で更新するとともに、デバイス変数161のうちフィールド装置90への指令値、制御量となる変数値に、出力データ163を反映(設定)する。したがって、IOリフレッシュ156により、PLC100とフィールド装置90との間で、より特定的にはサーバ600とフィールド装置90との間で入力データ162(入力データ(送信)182)と出力データ163(出力データ(受信)183)のデータ遣り取りが実現される。
【0090】
ゲートウェイプログラム194は、サーバ600と通信する。例えば、ゲートウェイプログラム194は、バッファ180の入力データ(送信)182からフレームを生成し、生成されたフレームをサーバ600に送信する。また、ゲートウェイプログラム194は、サーバ600からフレームを受信し、受信したフレームから制御演算処理の算出値(指令値、制御量)を抽出し、抽出値をバッファ180に出力データ(受信)183として格納する。バッファ180およびゲートウェイプログラム194は、ネットワークコントローラ105内に備えられてもよい。
【0091】
時刻同期プログラム177は、上記に述べたサーバ600との時刻同期およびフィールド装置90との時刻同期を実現するとともに、PLC100内の制御プログラム152の実行周期を、時刻同期に基づき管理する。
【0092】
スケジューラプログラム170は、PLC100のプロセスまたはタスクなどに対して、リソース割当てや実行タイミングなどを管理する。このような、プロセスまたはタスクは、制御プログラム152、変数管理プログラム160、入力プログラム172、出力プログラム174、時刻同期プログラム177、異常処理プログラム178および監視プログラム179等がPLC100により実行されることにより生成され得るプロセスまたはタスクが含まれる。スケジューラプログラム170は、例えば予め定められた制御周期に基づく周期で各プログラムの実行タイミングを調整する。
【0093】
これにより、PLC100は、制御プログラム152による周辺処理およびIOリフレッシュ処理を、サーバ600およびフィールド装置90との間で同期した時刻に基づく期で実施することができる。
【0094】
(d4.通信マスタ処理)
PLC100は、通信マスタ処理を実施する。通信マスタ処理では、PLC100が通信マスタとして動作し、IOリフレッシュ処理72において、ネットワーク110を介した、複数のフィールド装置90からの入来データの収集、およびサーバ600から受信する制御データの複数のフィールド装置90への転送を制御する。
【0095】
具体的には、PLC100は、通信マスタ処理において、ネットワーク110を介したPLC100とフィールド装置90との間のデータ通信を制御する。通信マスタ処理では、PLC100は通信フレームを制御周期10に同期した周期でサイクリック(例えば、数~10数msec)にフィールド装置90間を一巡するよう制御する。本実施の形態においては、このような通信フレームをサイクリック伝送させるためのプロトコルの一例として、EtherCATが採用される。
【0096】
フィールド装置90は、ネットワーク110を介して例えばデイジーチェーンで順次に接続されている。通信フレームには、フィールド装置90毎にデータ領域が割り当てられている。例えば、各フィールド装置90は、通信フレームを受信すると、当該受信した通信フレーム内の自装置に割り当てられたデータ領域に現在値(観測値)を書込む、またはデータ領域からPLC100が設定した制御データ(指令値,制御量)を読出し、その後、通信フレームを次段のフィールド装置90に送出する。
【0097】
各フィールド装置90が通信フレームに予め設定されたデータの現在値を書込むことで、ネットワーク110を一巡して通信マスタ(PLC100)に戻る通信フレームには、各フィールド装置90により観測された最新の値が含まれることになる。
【0098】
PLC100による通信マスタ処理は、変数管理プログラム160と、スケジューラプログラム170と、入力プログラム172と、出力プログラム174と、システムプログラム151との少なくとも一部が互いに協働して実行されることで実現され得る。
【0099】
(d5.サーバ600のソフトウェア構成)
図6は、本実施の形態にかかるサーバ600のソフトウェア構成例を示す図である。サーバ600は、処理エンジン610を備える。処理エンジン610は、システムプログラム71のOSの元で、サーバプログラム68が実行されることで実現される。
【0100】
処理エンジン610は、上記に述べたPLC100との時刻同期を実施する時刻同期プログラム67およびスケジューラ63を実行するとともに、スケジューラ63の元で実行のタイミングを管理しながらUPG69A,69B、通信プログラム64、異常処理プログラム66、監視プログラム65、他のプログラム611およびリザーブプログラム612を実行する。スケジューラ63は、システムプログラム71の一部として実装されてもよい。
【0101】
通信プログラム64は、各PLC100とデータの遣り取りを実施する。具体的には、通信プログラム64は、PLC100からの入力データ(送信)182を領域61に格納し、また、UPG69の制御演算処理の算出値である出力データ(受信)183を領域62に格納する。通信プログラム64は、ネットワークコントローラ620が内蔵する通信制御プログラムと協同してデータの遣り取りを実施してもよい。
【0102】
時刻同期プログラム67は、上記に述べた各PLC100との時刻同期を実現するとともに、サーバ600内のプログラムの実行周期を、時刻同期に基づき管理する。これにより、本実施の形態では、サーバ600は、UPG69A,69Bの制御演算処理を、各PLC100との間で同期した時刻に基づいた周期で実施することができる。スケジューラ63は、サーバ600において生成されるプロセスまたはタスクなどに対して、リソース割当てや実行タイミングなどを管理する。このような、プロセスまたはタスクは、異常処理プログラム66、監視プログラム65および時刻同期プログラム67等がサーバ600により実行されることにより生成され得るプロセスまたはタスクが含まれる。スケジューラ63は、例えば予め定められた制御周期に基づく周期で各プログラムの実行タイミングを調整する。
【0103】
<E.基本系>
まず、制御システム1の基本系における、PLC100とサーバ600との間のデータの遣り取りを説明する。
図7は、本実施の形態にかかる制御システム1の基本系を模式的に示す図である。
図7を参照して、基本系ではサーバ600には1台のPLC100(例えばPLC100A)が接続されている。
【0104】
(e1.基本系のタイミングチャート)
図8は、本実施の形態にかかる基本系のタイミングチャートの一例を模式的に示す図である。タイミングチャートの横軸に示す時間経過に従い、サーバ600とPLC100との間での通信を含む処理の開始および終了のタイミングと処理の実施時間の長さが示される。処理の実施時間の長さは、時間軸が延びる方向に延びる帯状の長さで示される。
図8では、PLC100に3台のフィールド装置90(Slave1,Slave2およびSlave3)が接続されるが、接続されるフィールド装置90は3台に限定されない。
【0105】
また、本実施の形態では、PLC100では、スケジューラプログラム170により、IOリフレッシュ156、PLC100がサーバ600と通信するための転送プログラム158、および周辺処理プログラム154が、この順番に実行されるようにスケジューリングされる。これにより、PLC100では、
図8に示すように、同期した時刻に基づく制御周期10毎に、IOリフレッシュ処理72、サーバ通信73および周辺処理74がこの順番で実施される。制御周期10は、互いに時刻同期するPLC100とサーバ600が共有する時間の一例であって、PLC100とサーバ600は、共通のトリガ8が与えられたとき、制御周期10の開始と終了のタイミングを検知する。
【0106】
フィールド装置90では、制御周期10において、観測値である入力データ162をPLC100へ送信する処理「Snd」、PLC100から指令値、制御量を含む出力データ163を受信する処理「Rcv」、および出力データ163に従う対象の「制御」が、この順番で実行される。フィールド装置90における「制御」は、共通のトリガ7の入力に応答して開始される処理であって、この処理では、直前に受信した出力データ163に従い対象が制御される。本実施の形態では、全てのフィールド装置90が出力データ163を受信完了したタイミングでトリガ7が各フィールド装置90に与えられる。これにより、フィールド装置90は、互いに同期したタイミングで制御処理を開始することができる。なお、トリガ7とトリガ8は制御システム1が備える図示しない信号発生回路から供給することができる。
【0107】
図8を参照して、各フィールド装置90が処理「Snd」を実施すると、(n)回目(ただし、n=1,2,3,・・・)の制御周期10は終了し、(n+1)回目の制御周期10が開始される。
【0108】
(n+1)回目の制御周期10が開始するとき、IOリフレッシュ処理72が実施されて、PLC100は直前(n)回目の制御周期10でフィールド装置90から受信したデータを処理する。具体的には、IOリフレッシュ処理72では、デバイス変数161のうち入力データ162の変数値が、フィールド装置90から入来するデータで更新される。これにより、デバイス変数161のうち入力データ162の変数値が収集される。
【0109】
続くサーバ通信73では、直前に収集された入力データ162が、入力データ(送信)182に変換されて、ゲートウェイプログラム194を介してサーバ600に送信される。また、このとき、フィールド装置90は、PLC100の出力プログラム174によって送信された出力データ163を受信する処理「Rcv」を実施し、その後、トリガ7に応答して「制御」を開始する。フィールド装置90では、「制御」を終了すると、処理「Snd」を実施する。
【0110】
また、(n+1)回目の制御周期10では、PLC100とサーバ600との間で互いに同期した処理が実施される。サーバ600は、PLC100からの入力データ(送信)182を受信し、PLC100と同期した時刻に基づくタイミングにおいて、UPG69を実行する。サーバ600は、UPG69による制御演算処理の算出値(すなわち出力データ(受信)183に対応)をPLC100へ送信する。PLC100は、サーバ600からの算出値を受信し、バッファ180の出力データ(受信)183として格納する。その後、PLC100では、周辺処理74が実施される。その後、(n+2)回目の制御周期10では、(n+1)回目の制御周期10と同様に処理が実施される。
【0111】
また、制御周期10において、PLC100では、入力データ(送信)182をサーバ600に送信後、サーバ600から出力データ(受信)183を受信するまでの間は、周辺処理74を実施してもよい。
【0112】
基本系においては、サーバ600とPLC100は互いに時刻同期されて、制御周期10内においてPLC100によるIOリフレッシュ処理72とサーバ600によりUPG69の実行(制御演算処理の実行)が実施(開始)される。
【0113】
(e2.基本系のフローチャート)
図9は、本実施の形態にかかる基本系における処理のフローチャートの一例を示す図である。
図9では、制御周期10においてPLC100で実施される処理とサーバ600で実施される処理とが、関連付けて示されている。
図9では、制御周期10の開始を指示するにトリガ8がPLC100およびサーバ600に供給される。したがって、PLC100およびサーバ600は、共通のトリガ8を受信したとき、当該制御周期10で実施するべき処理を開始する。
【0114】
まず、PLC100は、トリガ8に応じて、IOリフレッシュ処理72を実施する(ステップS3)。PLC100は、IOリフレッシュ処理72により収集した入力データ(送信)182をサーバ600へ送信するサーバ通信73を実施する(ステップS5)。
【0115】
PLC100は、その後、周辺処理74を実施する(ステップS7)。PLC100は、サーバ通信73によりサーバ600から出力データ(受信)183を受信するか否か(受信完了するか否か)を判断する(ステップS9)。未受信と判断する、または受信完了していないと判断すると(ステップS9でNO)、処理はステップS7に戻り、周辺処理74を実施する。
【0116】
一方、PLC100が出力データ(受信)183は受信完了したと判断すると(ステップS9でYES)、次の制御周期10のための準備を実施する(ステップS11)。具体的には、フィールド装置90を制御するために、受信された出力データ(受信)183が、デバイス変数161の出力変数に設定(コピー)される。これにより、次の制御周期10において、フィールド装置90に、サーバ600による制御演算の算出値(指令値、制御量)を出力することができる。その後、次の制御周期10の処理に移行する。
【0117】
また、サーバ600は、トリガ8を受付けると、通信プログラム64によりPLC100から入力データ(送信)182の受信処理を実施する。サーバ600は、入力データ(送信)182の受信が完了したか否かを判断する(ステップR3)。この受信完了の判定は、例えば、トリガ8を受付けてから所定時間が経過したことに基き実施される。入力データ(送信)182の受信完了が判定されないときは(ステップR3でNO)、ステップR3が繰返し実施される。
【0118】
一方、サーバ600は、所定時間が経過した、すなわち入力データ(送信)182の受信が完了したと判定すると(ステップR3でYES)、サーバ600はUPG69を実行する(ステップR5)。これにより、受信した入力データ(送信)182を用いた制御演算処理が実施される。サーバ600は、制御演算の算出値を出力データ(受信)183に反映(設定)し、出力データ(受信)183を、通信プログラム64により、PLC100へ送信する(ステップR7)。その後、次の制御周期10の処理に移行する。
【0119】
図9では、互いに時刻同期されたPLC100とサーバ600との間において、処理は、制御周期10の開始時に供給されるトリガ8に応じて開始されることで、両者の処理を、時刻同期に基づく共有された時間(制御周期10内の時間)において開始することが可能となる。
【0120】
(e3.基本系のフローチャートの変形例)
基本系の
図9の処理は、
図10に示すように異常に対処する異常処理を追加するように変形することもできる。
図10は、本実施の形態にかかる基本系における処理のフローチャートの変形例を示す図である。
図10の処理は、
図9の処理に異常処理(ステップS13、S15、R9、R11)を追加して構成される。
図10の他の処理は、
図9と同様であるので説明は繰返さない。
【0121】
図10を参照して、PLC100は、サーバ600から出力データ(受信)183を受信完了したと判定したとき(ステップS9でYES)、監視プログラム179により異常の有無を判定させる(ステップS13)。監視プログラム179により、ステップS9における受信完了が、トリガ8の入力から一定時間内であったか否かに基き、異常の有無が判定される。監視プログラム179により、この一定時間内に受信完了がなされたと判定されたとき(ステップS13でNO:異常無し)、ステップS11の処理に移行する。また、監視プログラム179により、この一定時間内に受信完了がなされていないと判定されたとき(ステップS13でYES:異常有り)、PLC100は、異常処理プログラム178により、異常処理を実施させる(ステップS15)。その後、この制御周期10の処理は終了する。
【0122】
なお、監視プログラム179は、サーバ600から送信された異常通知の受信の有無判定も含み得る。また、異常処理(ステップS15)では、異常処理プログラム178により、例えば異常検知のログデータを二次記憶装置108に格納する処理、またはサポート装置500に異常通知を出力する処理が含まれ得る。また、異常処理(ステップS15)に続いて、ステップS11の処理が上述と同様に実施されてもよい。
【0123】
また、異常有りが検知された場合(ステップS13でYES)は、サーバ600からの出力データ(受信)183を出力データ163に設定する処理(ステップS11の処理)はスキップされる。この場合、次の制御周期10では、直前の制御周期10の出力データ163を再度用いてフィールド装置90が制御される。
【0124】
また、サーバ600では、PLC100から入力データ(送信)182を受信完了したと判定したとき(ステップR3でYES)、監視プログラム65により異常の有無を判定させる(ステップR11)。監視プログラム65により、ステップR3における受信完了が、トリガ8の入力から一定時間内であったか否かに基き、異常の有無が判定される。監視プログラム65により、この一定時間内に受信完了がなされたと判定されたとき(ステップR11でNO:異常無し)、ステップR5の処理に移行する。また、監視プログラム65により、この一定時間内に受信完了がなされていないと判定されたとき(ステップR11でYES:異常有り)、サーバ600は、異常処理プログラム66により、異常処理を実施させる(ステップR9)。その後、この制御周期10の処理は終了する。
【0125】
ステップR9の異常処理は、異常検知の通知を、PLC100へ送信する処理を含む。また、
図10では、異常処理(ステップR9)を実施後は、この制御周期の処理を終了したが、ステップR7においてUPG69による制御演算処理を実施してもよい。この場合は、先の制御周期10で受信した入力データ(送信)182に基づく制御演算処理が実施されて、その算出値である出力データ(受信)183がPLC100に送信される(ステップR7)。
【0126】
(e4.基本系のフローチャートのさらなる変形例)
図9または
図10の処理においては、宛先で確実にデータを受信できるように、入力データ(送信)182または出力データ(受信)183は、複数回送信されてもよい。
【0127】
具体的には、PLC100の処理(ステップS5)では、入力データ(送信)182を格納した同一のフレームが複数回送信される。同一の入力データ(送信)182を格納したフレームには、同一の識別子(ID)を割当てられる。サーバ600は、受信するフレームのIDに基き、PLC100から同一の入力データ(送信)182が送信されていることを検知することができる。
【0128】
また、サーバ600の処理(ステップR7)では、出力データ(受信)183を格納した同一のフレームが複数回送信される。同一の出力データ(受信)183を格納したフレームには、同一の識別子(ID)を割当てられる。PLC100は、受信するフレームのIDに基き、サーバ600から同一の出力データ(受信)183が送信されていることを検知することができる。なお、ステップR7では、サーバ600は、例えば、同一の出力データ(受信)183を格納したフレームの送信回数を、出力データ(受信)183を送信開始タイミングから次の制御周期10の開始タイミングまでの時間の長さに基き決定することができる。
【0129】
このように、入力データ(送信)182および出力データ(受信)183は複数回送信されることで、ネットワーク11上でデータ落ち(喪失)があっても、受信側においてデータを回復させることができる。また、ネットワーク11上のジッタにより受信側に到着するデータの順番が乱れたとしても、受信側は、データのIDに基きデータを本来の順番で受信することができる。
【0130】
(F.多重化系)
制御システム1は、多重化系で構成されてもよい。多重化系は、サーバ600と、サーバ600にネットワーク11を介して接続された複数のPLC100を備えるよう構成される。
図11は、本実施の形態にかかる制御システム1の多重化系を模式的に示す図である。
図11を参照して、多重化系ではサーバ600には2台のPLC100(例えばPLC100AとPLC100B)が接続されている。なお、サーバ600に接続されるPLC100の台数は、2台に限定されず、3台以上であってもよい。
【0131】
(f1.多重化系のタイミングチャート)
図12は、本実施の形態にかかる多重化系のタイミングチャートの一例を模式的に示す図である。なお、
図12では、フィールド装置90の処理は略されている。
図12では、PLC100Aからの入力データ(送信)182に基づく制御演算処理のための「UPG1」と、PLC100Bからの入力データ(送信)182に基づく制御演算処理のための「UPG2」が実行される。「UPG1」と「UPG2」は、共通のトリガ8に応じて同時に実行開始可能とされる。
【0132】
図12を参照して、制御周期10の開始に同期してPLC100A,100BはIOリフレッシュ処理72を開始するが、各PLC100に接続されるフィールド装置90の台数、または収集するべき入力変数の数、またはネットワーク110の負荷等の差異に起因して、サーバ通信73を開始できる時間(すなわち、IOリフレッシュ処理72により入力データ(送信)182の収集を完了する時間)に差が生じ得る。このように、サーバ通信73を開始できる時間に差が生じることに伴い、サーバ600では、PLC100Aから入力データ(送信)182を受信し領域61に格納するデータ格納時間12と、PLC100Bから入力データ(送信)182を受信し領域61に格納するためのデータ格納時間12とは一致せず、ずれることになる。サーバ600では、この「ずれ」は待ち時間14で調整される。例えば、サーバ600は、PLC100Bの入力データ(送信)182のデータ格納完了後の待ち時間14が経過したときの時間15において、サーバ600は「UPG1」と「UPG2」を同時(並列)に実行開始する。
【0133】
「UPG1」と「UPG2」の並列実行においては、「UPG2」は、「UPG1」の算出値を用いて実行されてもよい。これにより、例えば、PLC100Aに接続されたサーボ装置(フィールド装置90)からの位置データ(出力データ)に基づく算出値を、「UPG2」の制御演算(例えば、PLC100Bに接続されたサーボ装置(フィールド装置90)の指令値を決定するために用いられる。
【0134】
並列実行された「UPG1」と「UPG2」の実行結果である制御演算の算出値(出力データ(受信)183)は領域62にデータ格納時間13で格納される。領域62の出力データ(受信)183は、PLC100A,100Bにそれぞれ送信される。PLC100A,100Bは、それぞれ、次の制御周期10が開始される前に、サーバ600から出力データ(受信)183を受信完了する。
【0135】
図13は、本実施の形態にかかる多重化系のタイミングチャートの他の例を模式的に示す図である。
図12では、サーバ600で実行されるUPG69を異ならせることで、例えばPLC100Aの「UPG1」による制御演算およびPLC100Bの「UPG2」による制御演算を並列に実行する環境を提供した。これに対して、
図13に示すように、サーバ600で実行されるUPG69は1種類であってもよい。これにより、各PLC100からの入力データ(送信)182に基づく制御演算を、PLC100の間で共通化することができる。
【0136】
なお、
図12と
図13においても、PLC100は、入力データ(送信)182をサーバ600へ送信後からサーバ600から出力データ(受信)183を受信するまでの時間は、周辺処理74を実施してもよい。
【0137】
(f2.多重化系のフローチャート)
図14は、本実施の形態にかかる多重化系における処理のフローチャートの一例を示す図である。
図14では、
図12または
図13のタイミングチャートに従い実施される処理であって、PLC100A、PLC100Bおよびサーバ600の各装置で実施される処理が相互に関連付けて示される。PLC100Aでは、ステップS3、S5、S7、S9およびS11の処理が
図9のそれらと同様に実施される。また、PLC100Bでも、ステップSS3、SS5、SS7、SS9およびSS11の処理が、上記のステップS3~S11と同様に実施される。また、サーバ600ではステップRR3、RR5およびRR7の処理が実施される。多重化系では、ステップRR3では、PLC100Aおよび100Bのそれぞれから、入力データ(送信)182を受信する。また、ステップRR7では、PLC100Aおよび100Bのそれぞれに、出力データ(受信)183が送信される。なお、
図14の処理においても、
図10に示した監視処理および異常処理が実施されてもよい。これら処理は、
図9または
図10に示す処理と同様であるので、説明は繰返さない。
【0138】
(f3.多重化系の応用例)
上記に述べた多重化系は、制御システム1のイベント発生時の対応に適用できる。限定されないが、例えば障害発生時の対策に応用することができる。
図15は、本実施の形態にかかる多重化系の応用例を模式的に示す図である。
図15の制御システム1では、サーバ600に接続される複数のPLC100のうちの1つを稼働系として動作させ、および他をバックアップのための待機系として動作させる。待機系のPLC100は、稼働系のPLC100に障害が発生した場合に当該稼働系のPLC100による制御を引き継ぐように構成される。例えば、PLC100Aが稼働系として動作し、PLC100Bは待機系として動作する。PLC100AとPLC100Bは、切替器200を介して、フィールド装置90のネットワーク110に接続されている。障害発生時、切替器200は、指令信号185に応じて、PLC100Aおよび100Bのいずれか一方をネットワーク110に接続する。
【0139】
図15の(A)は制御システム1の正常稼働時を示し、
図15の(B)は障害発生時を示す。指令信号185は、「正常稼働」または「障害発生」のいずれかを示し、切替器200は、指令信号185が「正常稼働」を示すときは、ネットワーク110にPLC100Aを接続し、「障害発生」を示すときは、ネットワーク110にPLC100Bを接続するように構成される。
【0140】
図15の(A)の正常稼働時は、待機系であるPLC100Bは、稼働していないスタンバイ状態にある。サーバ600は、稼働中のPLC100Aの異常停止を検知すると、「障害発生」を示す指令信号185を切替器200に出力するとともに、PLC100Bに稼働指令を出力する。これにより、切替器200は、フィールド装置90に接続されるPLC100を、PLC100AからPLC100Bに切替える。
【0141】
障害が発生すると、
図15の(B)に示すように、PLC100Aは停止するが、待機系のPLC100Bは稼働指令に従い待機モードから稼働モードに切り替わる。PLC100Bが稼働すると、サーバ600は入力データ(送信)182と出力データ(受信)183を遣り取りするPLC100をPLC100AからPLC100Bに切替える。これにより、障害発生時においても、フィールド装置90の制御を継続することができる。
【0142】
なお、待機系のPLC100Bがサーバ600およびフィールド装置90との間で時刻同期をとるタイミングは、PLC100Bが稼働されるときであってよいが、時刻同期をとるタイミングは稼働する時に限定されない。例えば、PLC100Bは、待機中において、サーバ600およびフィールド装置90と時刻同期をとるとしてもよい。
【0143】
図15では、サーバ600においてUPG69を実行する環境が実現されているので、待機系のPLC100Bが稼働されるときであっても、PLC100BにおいてUPG69の実行環境の準備(UPG69のインストール(コピー)など)等を行なう必要はない。したがって、待機系のPLC100Bを稼働状態へ速やかに移行させることができる。
【0144】
(f4.多重化系の他の応用例)
図16は、本実施の形態にかかる多重化系の他の応用例を模式的に示す図である。上記に述べた多重化系を制御システム1の障害対策に応用する他のケースを、
図16を参照して説明する。
図15の構成では、PLC100Aを稼働系、およびPLC100BをPLC100Aに専用の待機系と設定したが、
図16に示すように、待機系となるPLC100は、稼働系である複数のPLC100間で共有することができる。
【0145】
図16では、サーバ600に、PLC100A、PLC100BおよびPLC100Cが接続される。これら3台のPLC100のうち、PLC100Aと100Bは稼働系として動作し、PLC100CはPLC100Aと100Bで共有される待機系として動作する。このように、
図16では、1の待機系のPLC100を、複数台の稼働系のPLC100で共有することができる。
図16では、サーバ600はPLC100Aの制御演算処理のための「UPG1」とPLC100Bの制御演算処理のための「UPG2」とを実行する。
【0146】
例えば、PLC100Aに障害が発生した場合は、待機系のPLC100Cは稼働を開始し、切替器200は、指令信号185に応じて、工程3Aのネットワーク110に接続されるPLC100を、PLC100AからPLC100Cに切替える。また、サーバ600は、「UPG1」の制御演算のための入力データ(送信)182と出力データ(受信)183を遣り取りするPLC100を、PLC100AからPLC100Cに切替える。これにより、PLC100Aに障害が発生したとしても、PLC100Cにより工程3Aのフィールド装置90の制御を継続することができる。
【0147】
同様に、PLC100Bに障害が発生した場合は、待機系のPLC100Cは稼働を開始し、切替器200は、指令信号185に応じて、工程3Bのネットワーク110に接続されるPLC100を、PLC100BからPLC100Cに切替える。また、サーバ600は、「UPG2」の制御演算のための入力データ(送信)182と出力データ(受信)183を遣り取りするPLC100を、PLC100BからPLC100Cに切替える。これにより、PLC100Bに障害が発生したとしても、PLC100Cにより工程3Bのフィールド装置90の制御を継続することができる。
【0148】
なお、
図15と
図16では、稼働系のPLC100に障害が発生したときに、待機系のPLC100を稼働させたが、待機系のPLC100を稼働させる所定のタイミングは、障害発生時に限定されない。
【0149】
(G.オーバサンプリング)
図17は、本実施の形態にかかるオーバサンプリングの一例を模式的に説明する図である。
図18は、
図17のオーバサンプリングにより格納されるデータの一例を模式的に示す図である。上述した実施の形態では、制御周期10毎に、PLC100とサーバ600との間で入力データ(送信)182と出力データ(受信)183を遣り取りするためのサーバ通信73が実施された。これにより、サーバ600は、制御周期10毎に入力データ(送信)182を受信し、且つ出力データ(受信)183を送信する。
【0150】
本実施の形態では、サーバ通信73で遣り取りする入力データ(送信)182および出力データ(受信)183は1回の制御周期10のデータに限定されず、
図17に示すようにN(ただしN>1)回分の制御周期10のデータであってもよい。この場合は、IOリフレッシュ処理72によりN回分の制御周期10の入力データ(送信)182が収集された後に、収集データがサーバ600へ送信される。以下では、PLC100が、サーバ600に1回の通信で送信するべきデータを、制御周期10よりも長い周期で収集することを「オーバサンプリング」と称する場合がある。
【0151】
(g1.オーバサンプリングの一例)
図17を参照して、限定されないが、例えばN=3である場合の「オーバサンプリング」を説明する。
図18では、バッファ180には、3回分の制御周期10収集した入力データ(送信)182を格納するための領域と、サーバ600から受信する3回分の制御周期10の出力データ(受信)183を格納するための領域とが模式的に示される。
【0152】
PLC100は、n番目、n+1番目およびn+2番目の各制御周期10においてIOリフレッシュ処理72により収集した3回分の制御周期10の入力データ(送信)182をバッファ180に格納する。PLC100は、(n+2)番目の制御周期10のサーバ通信73により、バッファ180の3回分の制御周期10の入力データ(送信)182を、サーバ600に送信する(ステップS81)。続く、n+3番目、n+4番目およびn+5番目の各制御周期10においてもIOリフレッシュ処理72により収集した3回分の制御周期10の入力データ(送信)182がバッファ180に格納されて、PLC100は、(n+5)番目の制御周期10のサーバ通信73により、バッファ180の3回分の制御周期10の入力データ(送信)182を、サーバ600に送信する(ステップS81)。このように、PLC100は、3回分の制御周期10毎に、当該3回分の制御周期10において収集した入力データ(送信)182をサーバ600へ送信する。
【0153】
一方、サーバ600は、3回分の制御周期10毎に、PLC100から当該3回分の制御周期10の入力データ(送信)182を受信し、受信した各回の制御周期10の入力データ(送信)182に基づく制御演算を実施する(ステップS82)。これにより、サーバ600は、n+2番目、n+3番目およびn+4番目の制御周期10の各回において、制御演算を実行することで、3回分の制御周期10に対応の出力データ(受信)183を算出し、PLC100に送信する。
【0154】
PLC100は、n+4番目の制御周期10において、サーバ600から、n番目、n+1番目およびn+2番目の3回分の制御周期10の入力データ(送信)182に基づく出力データ(受信)183を受信する。受信された出力データ(受信)183は、バッファ180に格納される。PLC100は、バッファ180の3回分の制御周期10の出力データ(受信)183を、それぞれ、n+5番目、n+6番目およびn+7番目の制御周期10の各回でフィールド装置90に出力されるように、IOリフレッシュ処理72を実施する(ステップS83)。
【0155】
このように、
図17によれば、PLC100は、n番目(例えば、n+2番目)の制御周期10において、その前のN回分の制御周期(すなわち、n番目、n+1番目およびn+2番目の3回分の制御周期)10の入力データ(送信)182を収集して、サーバ600に送信すると、サーバ600から、その後のN回分の制御周期(すなわち、n+5番目、n+6番目およびn+7番目の3回分の制御周期)10の出力データ(受信)183を取得することができる。
【0156】
図17のオーバサンプリングによれば、限定されないが、例えばPLC100とフィールド装置90間のネットワーク110の通信時間が長い、またはPLC100とサーバ600間のネットワーク11の通信時間が長い場合に、利点をもたらす。つまり、このような通信時間が長い場合、待ち時間14が長くなりUPG69の制御演算を制御周期10内に完了できない事態(異常)が頻繁となる。これに対して、オーバサンプリングが実施される場合は、各制御周期10でサーバ通信73を実施する必要はなくなり、各制御周期10で待ち時間14が生じるのを回避することができる。
【0157】
例えば、サーバ600(またはPLC100)はネットワーク11に通信時間(または通信速度)を計測し、またPLC100はネットワーク110の通信時間を計測し、計測した通信時間が閾値を超える場合は、サーバ600およびPLC100は、オーバサンプリングを実施するモードが設定される。
【0158】
(g2.オーバサンプリングの他の例)
図19は、本実施の形態にかかるオーバサンプリングの他の例を模式的に説明する図である。
図19では、PLC100は、各制御周期10のサーバ通信73において、前のN回分の制御周期10で収集した入力データ(送信)182をサーバ600に送信する(ステップS84、S85)。したがって、サーバ600は、各制御周期10において、前のN回分の制御周期10の入力データ(送信)182を受信する。サーバ600は、各制御周期10において、PLC100から受信したN回分の制御周期10の入力データ(送信)182に基き、制御演算を実施することにより、将来のN回分の制御周期10の出力データ(受信)183を算出し、PLC100に送信する。例えば、サーバ600はマルチプロセッシングにより、各制御周期10で受信する入力データ(送信)182を用いたUPG69を並列に実行することにより、制御周期10毎に、将来のN回分の制御周期10の出力データ(受信)183を生成する。
【0159】
図19のオーバサンプリングによれば、PLC100は、同一の制御周期10の入力データ(送信)182をサーバ600に繰返し送信し、また、サーバ600も、同一の制御周期10のための出力データ(受信)183をPLC100に繰返し送信する。したがって、例えばある制御周期10において、ネットワーク11またはネットワーク110を介したデータ通信にエラー(例えば、通信におけるデータ喪失等)が発生したとしても、上記の同一データ(入力データ(送信)182または出力データ(受信)183)の繰返し送信により、当該エラーに対処(エラーをカバー、例えばデータ補完)することができる。
【0160】
<H.制御周期の出力データの予測>
上記のオーバサンプリングとは異なり、1の制御周期10の入力データ(送信)182に基づき将来の複数の制御周期10の出力データ(受信)183が予測(算出)されてもよい。
【0161】
このケースでは、PLC100は、サーバ通信73において、1の制御周期10で収集した入力データ(送信)182をサーバ600に送信し、サーバ600は、PLC100から受信した当該1の制御周期10の入力データ(送信)182に基き、制御演算を実施することにより、将来のN回分の制御周期10の出力データ(受信)183を算出(予測)し、PLC100に送信する。このケースでも、上述のマルチプロセッシングによるUPG69の並列により、制御周期10毎に将来のN回分の制御周期10の出力データ(受信)183を生成することができる。PLC100は、制御周期10毎に、将来のN回分の制御周期10の出力データ(受信)183を取得することができる。これにより、例えば、ある制御周期10においてデータ通信エラーが発生しても、前の制御周期10で受信済みの予測された出力データ(受信)183に基づく出力データ163の制御量、指令値をフィールド装置90に出力することができる。したがって、このケースであっても、当該通信エラーに対処することができる。
【0162】
<I.準備時間の確保>
本実施の形態では、サーバ600は、UPG69の制御演算処理とは異なる他の処理を実施するための他のプログラム611を実行することができる。他の処理は、限定されないが、例えばログデータの管理等を含む。サーバ600では、制御周期10内において、制御演算処理を実施する時間外において他のプログラム611を実行することにより他の処理を実施する。
【0163】
本実施の形態では、サーバ600は、PLC100でIOリフレッシュ処理72が実施される時間において、他の処理を実施する。また、サーバ600は、IOリフレッシュ処理72が終了するとき、PLC100からの入力データ(送信)182を用いてUPG69を実行するためのリソースを確保する準備処理を実施する。ここでは、この準備処理に必要な時間を「準備時間」と称する。なお、準備時間は、予め計測されて設定(格納)されていると想定する。
【0164】
図20は、本実施の形態にかかる基本系における処理のフローチャートの変形例を示す図である。
図20のフローチャートは、
図9のフローチャートの処理に、ステップR1、R1a、R2、R4およびR4aの処理を追加したものである。ここでは、追加された処理を説明し、他の処理は
図9に示した処理と同様であるので詳細は繰返さない。
【0165】
図20を参照して、PLC100では、
図9と同様の処理が実施される。サーバ600では、制御周期10の開始時に受付けるトリガ8に応答して、リザーブプログラム612により、「準備時間9」を確保できるか否かを判断する(ステップR1)。具体的には、リザーブプログラム612により、トリガ8を受付けた時間からIOリフレッシュ処理72が終了するまでの所要時間のうちの残り時間が計測されて、計測された残り時間と上記の準備時間とが比較され、その比較結果に基き(残り時間>準備時間)の条件が満たされるか否かが判断される。本実施の形態では、IOリフレッシュ処理72の所要時間は予め設定(格納)されている。
【0166】
リザーブプログラム612により、上記の条件が満たされると判断される(ステップR1でNO)間は、すなわちIOリフレッシュ処理72が完了するまで十分に余裕があるときは、他のプログラム611は実行可能である(ステップR1a)。一方、リザーブプログラム612により、上記の条件は満たされないと判断されると(ステップR1でNO)、すなわちIOリフレッシュ処理72が終了に近づいていると、サーバ600は準備処理を実施する(ステップR2)。したがって、サーバ600は、この準備処理を、準備時間9において実施することができる。
【0167】
このように、サーバ600では、リザーブプログラム612は、トリガ8の受付け時間とIOリフレッシュ処理72にかかる時間とに基づき入力データ(送信)182の受信開始時間(すなわちIOリフレッシュ処理72の終了時間)を算出(予測)し、この予測される受信開始時間から遡る一定時間内(準備時間9)において、制御演算処理のための準備処理を実行する。
【0168】
準備処理では、具体的には、処理エンジン610は、他の処理の実施が禁止されるように他のプログラム611の実行を停止し、通信プログラム64を起動する。これにより、確保された「準備時間」において、サーバ600のリソースを、その後にUPG69を実行するために確保しておくことが可能となる。
【0169】
起動された通信プログラム64により、PLC100からの入力データ(送信)182を受信し、受信が完了するまで(ステップR3でNO)、ステップR2が実施される。
【0170】
通信プログラム64により、入力データ(送信)182の受信が完了したと判断されると(ステップR3でYES)、処理エンジン610は、当該制御周期10においてUPG69を実行することが可能な時間が残っているか否かを判断する(ステップR4)。処理エンジン610は、この実行可能残り時間を、(A-(B-C)-D-E)の演算式で算出する。なお、変数Aは制御周期10の時間、変数Bはサーバ600が入力データ(送信)182を受信完了した時間、変数Cは制御周期10の開始時間、変数Dはサーバ600からPLC100への出力データ(受信)183の通信時間、および変数EはPLC100の周辺処理74の所用時間を、それぞれ示す。なお、変数Dの通信時間は、予め実験等で算出した値を示す。
【0171】
処理エンジン610は、(実行可能残り時間>UPGによる制御演算処理の時間)の条件が満たされるか否かを判断する(ステップR4)。なお、UPGによる制御演算処理の時間は、予め実験で算出した値を示す。
【0172】
処理エンジン610は、上記の条件が満たされると判断すると(ステップR4でYES)UPG69を実行する(ステップR5)が、条件は満たされないと判断すると(ステップR4でNO)、処理エンジン610は、サーバ600の制御周期10をM倍となるように変更する(ステップR4a)。例えば、処理エンジン610は、
図17に示すように、3回分(M=3のケース)の制御周期10の入力データ(送信)182に基づき、UPG69が1回実行されるように、サーバ600の制御周期を長くする。サーバ600は、制御周期10をM倍に変更する場合は、PLC100に制御周期をM倍にする旨を通知する。PLC100は、受信した通知に応じて、例えば、次の制御周期10から、M回分(ただしM>1)の制御周期10の入力データ(送信)182を収集し、サーバ600に送信する。この値Mは、算出された実行可能残り時間に基き決定されてもよい。なお、
図20において、ステップR4およびR4aの処理はオプションとして備えることができる。
【0173】
このように、サーバ600は、PLC100から入力データ(送信)182が到着する時間を予測できるので、予測到着時間から遡る一定時間である準備時間において、他の処理を実行禁止して、受信する入力データ(送信)182を用いてUPG69を実行するためのリソースを準備しておくことができる。サーバ600は、UPG69を実行するために、「準備時間」を確保するスケジューリングを実施する。したがって、サーバ600でUPGP69が実行されるとしても、PLC100が、各制御周期10内で出力データ(受信)183を確実に取得できる可能性を高めることができる。
【0174】
<J.多重系の処理の変形例>
図21は、本実施の形態にかかる多重化系の処理のフローチャートの変形例を示す図である。上記に述べた
図12~
図14では、サーバ600は、「UPG1」および「UPG2」の両方のUPG69のための入力データ(送信)182を受信完了したときに、UPG69(「UPG1」および「UPG2」)を実行開始した。これに対して、この変形例に示すように、各UPG69についての入力データ(送信)182が受信完了した時点で、当該UPG69を実行開始することもできる。例えば、「UPG1」と「UPG2」が、互いにデータを遣り取りしないよう構成されている場合は、サーバ600は、「UPG1」と「UPG2」を、それぞれ、独立して実行することができる。
【0175】
図21では、PLC100AとPLC100Bの処理は、
図13に示された処理と同様であるので説明は繰返さない。サーバ600では、PLC100Aの制御演算処理を実施するための「UPG1」と、PLC100Bの制御演算処理を実施するための「UPG2」とが並列に実行される。なお、
図21の処理でも、
図20に示す「準備時間」を確保する処理または制御周期10を長くする処理が実施されてもよい。
【0176】
まず、「UPG1」を実行するために、処理エンジン610は、通信プログラム64により、PLC100Aから入力データ(送信)182を受信し(ステップR9)、処理エンジン610は、「UPG1」の変数のための入力データ(送信)182が受信完了しているかを判定する(ステップR11)。具体的には、処理エンジン610は、「UPG1」から入力変数を抽出し、抽出した全ての入力変数に対応するデータを受信完了しているかを判定する。処理エンジン610は、入力データ(送信)182を受信完了していないと判定すると(ステップR11でNO)、ステップR9を繰返す。
【0177】
一方、処理エンジン610は、「UPG1」のための入力データ(送信)182を受信完了したと判定すると(ステップR11でYES)、「UPG1」を実行する(ステップR13)。処理エンジン610は、PLC100Aに必要な出力データ(受信)183が算出されたか否かを判定する(ステップR15)。具体的には、処理エンジン610は、「UPG1」から全ての出力変数を抽出し、抽出された全ての出力変数に対応する値が「UPG1」の実行により算出されたか否かを判定する。処理エンジン610は、PLC100Aに必要な出力データ(受信)183は算出されていないと判定すると(ステップR15でNO)、「UPG1」の実行が継続する(ステップR13)。
【0178】
一方、処理エンジン610は、PLC100Aに必要な出力データ(受信)183が算出されたと判定すると(ステップR15でYES)、算出された出力データ(受信)183を、PLC100Aに送信する(ステップR17)。
【0179】
同様に、PLC100Bの「UPG2」を実行するために、処理エンジン610は、ステップR19、R21、R23、R25およびR27の処理を実施する。これらの処理は、ステップR9、R11、R13、R15およびR17の処理と同様であるので説明は繰返さない。
【0180】
図21の処理によれば、「UPG1」および「UPG2」は、他方のプログラムのための入力データ(送信)182の受信完了を待つことなく、自己の入力データ(送信)182を受信完了した時点で実行開始される。この場合は、
図12に示す待ち時間14をなくすことができるから、サーバ600は、PLC100の制御演算処理を制御周期10内で完了させることが可能となる。
【0181】
(j1.モードの設定)
本実施の形態は、制御システム1は、PLC100Aの「UPG1」とPLC100Bの「UPG2」の実行に関して、
図12のように両UPGの入力データ(送信)182が受信完了したときに両方のUPGを実行開始するモード(第1モードという)と、
図10のように、「UPG1」と「UPG2」は、それぞれ、対応のPLC100から入力データ(送信)182が受信完了したときには実行を開始するモード(第2モードという)を備える。サーバ600は、サポート装置500を介した外部指示(ユーザ指示)に従い第1モードおよび第2モードの一方を実施するように設定される。
【0182】
具体的には、例えば、「UPG1」はPLC100AとPLC100Bからの入力データ(送信)182を使用するのであれば「第1モード」がサーバ600に設定されて、「UPG1」はPLC100Aからの入力データ(送信)182のみを使用するのであれば「第2モード」がサーバ600に設定される。ユーザは、例えば、サポート装置500が提供するUIを介して「第1モード」または「第2モード」を設定することができる。モードの設定に関連して、サポート装置500は、「UPG1」が使用する変数名の一覧と、「UPG2」が使用する変数名の一覧とを比較する。サポート装置500は、比較の結果に基き、一覧に両者に共通する変数名が有ると判定するときは、選択肢として「第1モード」をユーザに提示し、一覧に両者に共通する変数名は無いと判定するときは選択肢として「第1モード」または「第2モード」を提示する。ユーザは、上記の外部指示をサーバ600に設定するために、サポート装置500を操作する。
【0183】
<K.利点>
本実施の形態では、UPG69はPLC100ではなくサーバ600において実行されるので、PLC100がUPG69を実行する場合に比較して、PLC100においてUPG69を実行するためのリソース(メモリ)を節約できる。また、サーバ600にUPG69を実行する環境が備えられるので、PLC100のプロセッサは、UPG69を実行可能なスペックを要求されない。したがって、PLC100にかかるコストを低くしながら、PLC100は自己のプロセッサのスペックを超える制御演算処理の精度(処理量、処理速度等)を得ることができる。
【0184】
また、UPG69の実行環境はサーバ600において構成されるので、例えば各PLC100に対応のUPG69の協調実行(互いにデータを遣り取りする、または互いに同期をとる等)を、PLC100同士のデータ通信を必要とすることなく、実現することができる。
【0185】
また、サーバ600とPLC100とは互いに時刻同期されて、共有される時間である、例えば制御周期内でIOリフレッシュ処理72およびUPG69の制御演算処理が実施されるように、自動的に制御周期10を長くする処理(ステップR4a)が実行される。これにより、制御周期内でIOリフレッシュ処理72およびUPG69の制御演算処理が完了することが保証され得る。
【0186】
また、制御システム1では、サーバ600が、各PLC100と入力データ(送信)182および出力データ(受信)183を遣り取りすることで、UPG69は、それぞれ、複数のPLC100に自動的に対応付けされる。
【0187】
<L.付記>
本開示は、以下のような技術思想を含む。
【0188】
(構成1)
1以上の制御装置(100)および情報処理装置(600)を備える制御システム(1)であって、
前記情報処理装置と前記1以上の制御装置は、通信可能に接続されて互いに時刻同期され、
前記情報処理装置は、
各前記1以上の制御装置から受信するデータ(182)に基づく制御演算に従う制御データ(183)を算出する制御演算処理(69)を実行する処理部(603)を、含み、
前記各制御装置は、
フィールド装置(90)からの入来データを前記情報処理装置へ転送し、前記情報処理装置から受信する前記制御データを前記フィールド装置に出力する入出力処理(72)を実行する制御部(102)を、含み、
前記制御演算処理および前記入出力処理は、前記時刻同期に基づく時間であって前記各制御装置と前記情報処理装置との間で共有される時間(10)内で実行される、制御システム。
【0189】
(構成2)
前記処理部が実行する処理は、さらに、
前記共有される時間内で、前記制御演算処理を実行するための時間が不足するとき、前記共有される時間を長くする処理(R4a)を含む、構成1に記載の制御システム。
【0190】
(構成3)
前記共有される時間は制御周期(10)を含み、
前記入出力処理は、
制御周期において、当該制御周期以前の複数の制御周期に対応する前記入来データを前記情報処理装置へ転送し、前記情報処理装置から受信する前記複数の制御周期に対応する前記制御データを前記フィールド装置に出力する処理(S81、S83)を含む、構成1または2に記載の制御システム。
【0191】
(構成4)
前記入出力処理は、
制御周期において、前記情報処理装置から前記複数の制御周期に対応する制御データを受信したとき、当該複数の制御周期に対応する制御データを、それぞれ、当該制御周期よりも後の複数の制御周期において、前記フィールド装置に出力する処理(S83)を含む、構成3に記載の制御システム。
【0192】
(構成5)
前記共有される時間は制御周期(10)を含み、
前記入出力処理は、
1の制御周期に対応する前記入来データを前記情報処理装置へ転送し、前記情報処理装置から受信する当該入来データに基づく複数の制御周期に対応する制御データを、前記フィールド装置に出力する処理を含む、構成1または2に記載の制御システム。
【0193】
(構成6)
前記情報処理装置と前記各制御装置は、前記共有される時間内で受付ける共通のトリガ(8)に応じて処理を開始し、
前記情報処理装置は、
前記トリガの受付け時間と前記入出力処理にかかる時間とに基づき予測される前記データの受信開始時間から遡る一定時間内において、前記制御演算処理のための準備処理(R2)を実行する、構成1から5のいずれか1に記載の制御システム。
【0194】
(構成7)
前記準備処理は、前記制御演算処理を除く情報処理の実行を禁止する処理を含む、構成6に記載の制御システム。
【0195】
(構成8)
前記情報処理装置に複数の前記制御装置が通信可能に接続されて、
前記制御演算処理は、それぞれが各前記複数の制御装置に対応する複数の制御演算処理を含み、
前記処理部は、
前記複数の制御装置からデータを受信したとき前記複数の制御演算処理を実行開始する第1モード、または、前記複数の制御装置のうちの1つからデータを受信したとき当該1の制御装置に対応する前記制御演算を実行開始する第2モードを備える、構成1から7のいずれか1に記載の制御システム。
【0196】
(構成9)
前記処理部は、前記第1モードおよび前記第2モードを備える場合、外部指示に従い前記第1モードおよび前記第2モードの一方を実施する、構成8に記載の制御システム。
【0197】
(構成10)
複数の前記フィールド装置がフィールドネットワーク(110)を介して前記制御装置に接続され、
前記制御部は、
前記入出力処理において、前記フィールドネットワークを介した、前記複数のフィールド装置から入来データを収集し、および前記情報処理装置から受信する前記制御データを前記複数のフィールド装置へ転送する、構成1から9のいずれか1に記載の制御システム。
【0198】
(構成11)
前記情報処理装置に複数の前記制御装置が通信可能に接続されて、
前記複数の制御装置は稼働系として動作する制御装置と、待機系として動作する制御装置とを含み、
前記待機系の制御装置は、所定タイミングに応じて稼働を開始し、
前記情報処理装置は、前記所定タイミングに応じて、前記稼働系の制御装置とのデータ通信を、前記待機系との制御装置とのデータ通信に切替える、構成1から9のいずれか1に記載の制御システム。
【0199】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0200】
1 制御システム、7,8 トリガ、9 準備時間、10 制御周期、11,110 ネットワーク、12,13 データ格納時間、14 待ち時間、15 時間、61 受信用データ領域、62 送信用データ領域、63 スケジューラ、64 通信プログラム、65,179 監視プログラム、66,178 異常処理プログラム、151 システムプログラム、67,177 時刻同期プログラム、68 サーバプログラム、72 リフレッシュ処理、73 サーバ通信、74 周辺処理、90,90A~90I フィールド装置、91A~91I,101A,101B,101C,102A,102B,102C,601 タイマ、150 制御エンジン、152 制御プログラム、154 周辺処理プログラム、156 IOリフレッシュ、158 転送プログラム、160 変数管理プログラム、161 デバイス変数、162 入力データ、163 出力データ、170 スケジューラプログラム、172 入力プログラム、174 出力プログラム、180 バッファ、185 指令信号、194 ゲートウェイプログラム、200 切替器、500 サポート装置、600 サーバ、610 処理エンジン、612 リザーブプログラム。