(57)【要約】      （修正有）【課題】制御演算処理に関して効率的なシステムの運用を可能にする。【解決手段】互いに時刻同期される情報処理装置６００と制御装置１００を備える制御システム１において、情報処理装置は制御装置からの受信データに基づく制御演算に従う制御データを算出する制御演算処理を実行する。制御装置は、フィールド装置９０からの入来データを情報処理装置へ転送し、情報処理装置から受信する制御データをフィールド装置に出力する入出力処理を実行する。制御演算処理および入出力処理は、時刻同期に基づく時間であって制御装置と情報処理装置との間で共有される時間内で実行される。【選択図】図１
2020149402.tif 000002
【特許請求の範囲】
【請求項１】
１以上の制御装置および情報処理装置を備える制御システムであって、
前記情報処理装置と前記１以上の制御装置は、通信可能に接続されて互いに時刻同期され、
前記情報処理装置は、
各前記１以上の制御装置から受信するデータに基づく制御演算に従う制御データを算出する制御演算処理を実行する処理部を、含み、
前記各制御装置は、
フィールド装置からの入来データを前記情報処理装置へ転送し、前記情報処理装置から受信する前記制御データを前記フィールド装置に出力する入出力処理を実行する制御部を、含み、
前記制御演算処理および前記入出力処理は、前記時刻同期に基づく時間であって前記各制御装置と前記情報処理装置との間で共有される時間内で実行される、制御システム。
【請求項２】
前記処理部が実行する処理は、さらに、
前記共有される時間内で、前記制御演算処理を実行するための時間が不足するとき、前記共有される時間を長くする処理を含む、請求項１に記載の制御システム。
【請求項３】
前記共有される時間は制御周期を含み、
前記入出力処理は、
制御周期において、当該制御周期以前の複数の制御周期に対応する前記入来データを前記情報処理装置へ転送し、前記情報処理装置から受信する前記複数の制御周期に対応する前記制御データを前記フィールド装置に出力する処理を含む、請求項１または２に記載の制御システム。
【請求項４】
前記共有される時間は制御周期を含み、
前記入出力処理は、
１の制御周期に対応する前記入来データを前記情報処理装置へ転送し、前記情報処理装置から受信する当該入来データに基づく複数の制御周期に対応する制御データを、前記フィールド装置に出力する処理を含む、請求項１または２に記載の制御システム。
【請求項５】
前記入出力処理は、
制御周期において、前記情報処理装置から前記複数の制御周期に対応する制御データを受信したとき、当該複数の制御周期に対応する制御データを、それぞれ、当該制御周期よりも後の複数の制御周期において、前記フィールド装置に出力する処理を含む、請求項３または４に記載の制御システム。
【請求項６】
前記情報処理装置と前記各制御装置は、前記共有される時間内で受付ける共通のトリガに応じて処理を開始し、
前記情報処理装置は、
前記トリガの受付け時間と前記入出力処理にかかる時間とに基づき予測される前記データの受信開始時間から遡る一定時間内において、前記制御演算処理のための準備処理を実行する、請求項１から５のいずれか１項に記載の制御システム。
【請求項７】
前記準備処理は、前記制御演算処理を除く情報処理の実行を禁止する処理を含む、請求項６に記載の制御システム。
【請求項８】
前記情報処理装置に複数の前記制御装置が通信可能に接続されて、
前記制御演算処理は、それぞれが各前記複数の制御装置に対応する複数の制御演算処理を含み、
前記処理部は、
前記複数の制御装置からデータを受信したとき前記複数の制御演算処理を実行開始する第１モード、または、前記複数の制御装置のうちの１つからデータを受信したとき当該１の制御装置に対応する前記制御演算を実行開始する第２モードを備える、請求項１から７のいずれか１項に記載の制御システム。
【請求項９】
前記処理部は、前記第１モードおよび前記第２モードを備える場合、外部指示に従い前記第１モードおよび前記第２モードの一方を実施する、請求項８に記載の制御システム。
【請求項１０】
複数の前記フィールド装置がフィールドネットワークを介して前記制御装置に接続され、
前記制御部は、
前記入出力処理において、前記フィールドネットワークを介して、前記複数のフィールド装置から入来データを収集し、および前記情報処理装置から受信する前記制御データを前記複数のフィールド装置へ転送する、請求項１から９のいずれか１項に記載の制御システム。
【請求項１１】
前記情報処理装置に複数の前記制御装置が通信可能に接続されて、
前記複数の制御装置は稼働系として動作する制御装置と、待機系として動作する制御装置とを含み、
前記待機系の制御装置は、所定タイミングに応じて稼働を開始し、
前記情報処理装置は、前記所定タイミングに応じて、前記稼働系の制御装置とのデータ通信を、前記待機系との制御装置とのデータ通信に切替える、請求項１から１０のいずれか１項に記載の制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、制御対象を制御する制御システムに関する。
【背景技術】
【０００２】
生産ラインに備えられるＦＡ（Factory  Automation)には、ＰＬＣ（プログラマブルロジックコントローラ）などの制御装置が用いられる。このような制御装置は、生産ラインに設けられた１または複数のフィールド装置である制御対象との間でバスまたはネットワークを介してデータを送受信する。制御装置は、フィールド装置から受信したデータをユーザプログラム（User  Program、以下ＵＰＧと略する場合がある）に従う制御演算処理を実行し、処理結果に基づく制御データをフィールド装置に送信する。フィールド装置は制御データに従い制御されて、制御結果によるデータを制御装置に出力する。
【０００３】
近年は、ＦＡシステムの高機能化に伴い、効率的なシステムの運用が望まれている。例えば、特開２０１８−７３４３６号公報（特許文献１）は、制御機器毎のパラメータ設定を、制御機器とネットワークを介して通信可能に接続されるサーバにより実施することで、パラメータの簡単な管理を可能にしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１８−７３４３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
また、ＦＡシステムの高機能化に伴い、ＵＰＧに従う制御演算処理にかかる処理量または処理時間が増加している。したがって、ＵＰＧの制御演算処理にかかる処理量または処理時間の増加に伴う効率的なシステム運用の対策が望まれている。しかし、特許文献１は、パラメータ設定に関する構成を開示するが、ＵＰＧの制御演算処理にかかる処理量または処理時間の増加に伴う効率的なシステム運用のための技術は提案しない。
【０００６】
本開示の１つの目的は、制御演算処理に関して効率的なシステムの運用を可能にする制御システムを提供することである。
【課題を解決するための手段】
【０００７】
本開示の一例は、１以上の制御装置および情報処理装置を備える制御システムであって、情報処理装置と１以上の制御装置は、通信可能に接続されて互いに時刻同期され、情報処理装置は、各１以上の制御装置から受信するデータに基づく制御演算に従う制御データを算出する制御演算処理を実行する処理部を、含み、各制御装置は、フィールド装置からの入来データを情報処理装置へ転送し、情報処理装置から受信する制御データをフィールド装置に出力する入出力処理を実行する制御部を、含み、制御演算処理および入出力処理は、時刻同期に基づく時間であって各制御装置と情報処理装置との間で共有される時間内で実行される。
【０００８】
上述の開示によれば、互いに時刻同期される情報処理装置と制御装置を備える制御システムにおいて、情報処理装置の制御演算処理と、制御装置の入出力処理とを共有される時間内で協調して実行する環境が提供される。ここでは、制御装置は制御演算処理の実行環境を備える必要はないので、制御装置は制御演算処理に要求される処理量または処理時間の制約を受けずに（独立に）フィールド装置を制御することができる。
【０００９】
上述の開示において処理部が実行する処理は、さらに、共有される時間内で、制御演算処理を実行するための時間が不足するとき、共有される時間を長くする処理を含む。
【００１０】
上述の開示によれば、共有される時間内において制御演算処理を実行するための時間を確保することができる。
【００１１】
上述の開示において、共有される時間は制御周期を含み、入出力処理は、制御周期において、当該制御周期以前の複数の制御周期に対応する入来データを情報処理装置へ転送し、情報処理装置から受信する複数の制御周期に対応する制御データをフィールド装置に出力する処理を含む。
【００１２】
上述の開示によれば、制御装置は、複数の制御周期の入来データをまとめて、情報処理装置に送信することで、制御周期毎に送信する場合に比較して、情報処理装置と制御装置との間の通信時間を節約できる。また、複数制御周期分のデータが通信されるので、ある制御周期のデータ落ち（喪失）があっても、他の制御周期のデータで補完することが可能となる。
【００１３】
上述の開示において、共有される時間は制御周期を含み、入出力処理は、１の制御周期に対応する入来データを前記情報処理装置へ転送し、情報処理装置から受信する当該入来データに基づく複数の制御周期に対応する制御データを、フィールド装置に出力する処理を含む。
【００１４】
上述の開示によれば、制御装置は、１の制御周期の入来データを情報処理装置に送信することで、複数の制御周期に対応する制御データを取得することができる。
【００１５】
上述の開示において、入出力処理は、制御周期において、情報処理装置から複数の制御周期に対応する制御データを受信したとき、当該複数の制御周期に対応する制御データを、それぞれ、当該制御周期よりも後の複数の制御周期において、フィールド装置に出力する処理を含む。
【００１６】
上述の開示によれば、情報処理装置は、その後の複数の制御周期の制御データをまとめて、制御装置に送信することで、制御周期毎に送信する場合に比較して、情報処理装置と制御装置との間の通信時間を節約できる。また、複数制御周期分のデータが通信されるので、ある制御周期のデータ落ち（喪失）があっても、他の制御周期のデータで補完することが可能となる。
【００１７】
上述の開示において、情報処理装置と各制御装置は、共有される時間内で受付ける共通のトリガに応じて処理を開始し、情報処理装置は、トリガの受付け時間と入出力処理にかかる時間とに基づき予測されるデータの受信開始時間から遡る一定時間内において、制御演算処理のための準備処理を実行する。
【００１８】
上述の開示によれば、制御演算処理が開始される前に、準備処理を実行する時間を確保することができる。
【００１９】
上述の開示において、準備処理は、制御演算処理を除く情報処理の実行を禁止する処理を含む。
【００２０】
上述の開示によれば、制御演算処理が開始される前は他の情報処理の実行を禁止することで、その後の制御演算処理のためのリソースを確実に準備することができる。
【００２１】
上述の開示において、情報処理装置に複数の制御装置が通信可能に接続されて、制御演算処理は、それぞれが各複数の制御装置に対応する複数の制御演算処理を含み、処理部は、複数の制御装置からデータを受信したとき複数の制御演算処理を実行開始する第１モード、または、複数の制御装置のうちの１つからデータを受信したとき当該１の制御装置に対応する制御演算を実行開始する第２モードを備える。
【００２２】
上述の開示によれば、情報処理装置において、複数の制御演算処理を実行開始するモードとして、同期して開始させるような上記の第１モード、または、同期せずに非同期に（対応の制御装置からデータと受信した時に）開始させるような上記の第２モードが提供される。
【００２３】
上述の開示において、処理部は、第１モードおよび第２モードを備える場合、外部指示に従い第１モードおよび第２モードの一方を実施する。
【００２４】
上述の開示によれば、外部からの指示により、情報処理装置に第１モードおよび第２モードのいずれかを実行させることができる。
【００２５】
上述の開示において、複数のフィールド装置がフィールドネットワークを介して制御装置に接続され、制御部は、入出力処理において、フィールドネットワークを介して、複数のフィールド装置から入来データを収集し、および情報処理装置から受信する制御データを複数のフィールド装置へ転送する。
【００２６】
上述の開示によれば、制御装置は、入出力処理において、フィールド装置からの入来データを収集し、および情報処理装置から受信する制御データを複数のフィールド装置へ転送することができる。
【００２７】
上述の開示において、情報処理装置に複数の制御装置が通信可能に接続されて、複数の制御装置は稼働系として動作する制御装置と、待機系として動作する制御装置とを含み、待機系の制御装置は、所定タイミングに応じて稼働を開始し、情報処理装置は、所定タイミングに応じて、稼働系の制御装置とのデータ通信を、待機系との制御装置とのデータ通信に切替える。
【００２８】
上述の開示によれば、制御システムが備える複数の制御装置を、稼働系または待機系として動作させて、所定タイミングに応じて待機系の制御装置を稼働系に切替えることができる。所定タイミングが故障発生を含む場合は、故障発生後であっても制御システムを継続して運転することが可能となる。
【発明の効果】
【００２９】
本開示によれば、制御演算処理に関して効率的なシステムの運用を可能にする制御システムを提供できる。
【図面の簡単な説明】
【００３０】
【図１】本実施の形態にかかる制御システム１の構成の一例を模式的に示す図である。
【図２】本実施の形態に従う制御システム１のネットワーク構成例を示す模式図である。
【図３】本実施の形態にかかるＰＬＣ１００の構成例を示すブロック図である。
【図４】本実施の形態にかかるサーバ６００の構成例を示す図である。
【図５】本実施の形態にかかるＰＬＣ１００のソフトウェア構成例を示すブロック図である。
【図６】本実施の形態にかかるサーバ６００のソフトウェア構成例を示す図である。
【図７】本実施の形態にかかる制御システム１の基本系を模式的に示す図である。
【図８】本実施の形態にかかる基本系のタイミングチャートの一例を模式的に示す図である。
【図９】本実施の形態にかかる基本系における処理のフローチャートの一例を示す図である。
【図１０】本実施の形態にかかる基本系における処理のフローチャートの変形例を示す図である。
【図１１】本実施の形態にかかる制御システム１の多重化系を模式的に示す図である。
【図１２】本実施の形態にかかる多重化系のタイミングチャートの一例を模式的に示す図である。
【図１３】本実施の形態にかかる多重化系のタイミングチャートの他の例を模式的に示す図である。
【図１４】本実施の形態にかかる多重化系における処理のフローチャートの一例を示す図である。
【図１５】本実施の形態にかかる多重化系の応用例を模式的に示す図である。
【図１６】本実施の形態にかかる多重化系の他の応用例を模式的に示す図である。
【図１７】本実施の形態にかかるオーバサンプリングの一例を模式的に説明する図である。
【図１８】図１７のオーバサンプリングにより格納されるデータの一例を模式的に示す図である。
【図１９】本実施の形態にかかるオーバサンプリングの他の例を模式的に説明する図である。
【図２０】本実施の形態にかかる基本系における処理のフローチャートの変形例を示す図である。
【図２１】本実施の形態にかかる多重化系の処理のフローチャートの変形例を示す図である。
【発明を実施するための形態】
【００３１】
本実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００３２】
＜Ａ．適用例＞
まず、本発明が適用される場面の一例について説明する。図１は、本実施の形態にかかる制御システム１の構成の一例を模式的に示す図である。図１を参照して、ＦＡに適用され得る制御システム１では、例えば「制御装置」の一実施例であるＰＬＣ１００Ａ，１００Ｂおよび１００Ｃおよび「情報処理装置」の一実施例であるサーバ６００を備える。ＰＬＣ１００Ａ，１００Ｂおよび１００Ｃは同様の機能を備えており、これらを区別しない場合はＰＬＣ１００と総称する。サーバ６００には、有線または無線のネットワーク１１を介してＰＬＣ１００が接続されている。また、ネットワーク１１にはサポート装置５００を接続することができる。
【００３３】
図１では、制御システム１は、ＰＬＣ１００とサーバ６００を別体として構成されているが、これに限定されない。例えば、制御システム１は、ＰＬＣ１００の機能とサーバ６００の機能を内蔵して備える産業用のコンピュータ（所謂ＩＰＣ：Industrial  Personal  Computer）を備えて構成されてもよい。
【００３４】
ネットワーク１１には、ＰＬＣ１００Ａ、１００Ｂおよび１００Ｃと、サーバ６００とが接続されており、ネットワーク１１では装置間でデータを遣り取りできる。また、サーバ６００には、ＦＡシステム内のサーバ、またはクラウドサーバ等のようなＦＡシステム外のサーバを適用することもできる。サーバ６００が外部サーバである場合、ネットワーク１１はインターネットなどの外部ネットワークを含む。
【００３５】
ＰＬＣ１００には、センサ、アクチュエータといった各種のフィールド装置９０が接続される。フィールド装置９０は、「制御対象」の一例である。これらのフィールド装置９０は、ＰＬＣ１００に装着される入出力ユニットを介してＰＬＣ１００に直接接続される場合もあるが、フィールド側のネットワーク１１０を介してＰＬＣ１００に接続されることもある。図１では、ＰＬＣ１００は、１または複数のネットワーク１１０に接続される。各ネットワーク１１０には、１または複数のフィールド装置９０が接続される。１または複数のフィールド装置９０の各々は、製造装置または生産ラインなど（以下、「フィールド」とも総称する。）に対して何らかの物理的な作用を与えるアクチュエータ、およびフィールドとの間で情報を遣り取りする入出力装置などを含む。
【００３６】
ネットワーク１１０を介して、ＰＬＣ１００とフィールド装置９０との間で遣り取りされるデータは、数１００μｓｅｃオーダ〜数１０ｍｓｅｃオーダのごく短い周期で更新されることになる。なお、このような遣り取りされるデータの更新処理は、ＩＯリフレッシュ処理７２により実現される。ＩＯリフレッシュ処理７２は、「入出力処理」の一実施例である。
【００３７】
具体的には、本実施の形態では、ＰＬＣ１００は、指定された観測値を含むフレームを生成する機能を有する。ＰＬＣ１００は、生成されるフレームを、ネットワーク１１を介してサーバ６００に転送（送信）する。観測値の概念は、任意の制御対象についてのデータ（観測値）の時間的な変化を連続的（あるいは、一定間隔をおいて不連続）に観測して得られる一連の値も含み得る。
【００３８】
本明細書において「観測値」は、ＰＬＣ１００での制御演算において利用可能な値（実値）を総称する概念であり、典型的には、制御対象から取得されて制御演算に入力される値（フィールドから取得された測定値など）などを含み得る。
【００３９】
制御システム１では、サーバ６００のタイマ６０１とＰＬＣ１００Ａのタイマ１０１Ａ、ＰＬＣ１００Ｂのタイマ１０１ＢおよびＰＬＣ１００Ｃのタイマ１０１Ｃは、互いに時刻同期されている。サーバ６００は、ＰＬＣ１００Ａ、１００Ｂおよび１００Ｃから受信する観測値に相当する入力データ（送信）１８２を用いてＵＰＧ（User  Program)６９を実行することにより、入力データ（送信）１８２に基いた制御演算処理を実行する。サーバ６００は、制御演算処理による算出値である出力データ（受信）１８３をＰＬＣ１００に送信する。算出値は、フィールド装置９０の「制御データ」の一実施例に相当し、例えば指令値、制御量などを示す。各ＰＬＣ１００は、フィールド装置９０からの観測値に相当の入来データを収集しサーバ６００へ転送し、サーバ６００から受信する制御データをフィールド装置９０に出力するＩＯリフレッシュ処理７２を実行する。サーバ６００におけるＵＰＧ６９の実行による制御演算処理および各ＰＬＣ１００におけるＩＯリフレッシュ処理７２は、上記した時刻同期に基づく時間であって各ＰＬＣ１００とサーバ６００との間で共有される時間内で実行される。
【００４０】
図１では、時刻同期に基く共有される時間内においてサーバ６００とＰＬＣ１００がデータを遣り取りしながら協調制御が実施される。具体的には、この共有される時間内において、（ｉ）ＰＬＣ１００はＩＯリフレッシュ処理７２によりフィールド装置９０からの出力データ（観測値）を収集し、（ii）サーバ６００はＩＯリフレッシュ処理７２により収集されたフィールド装置９０からの出力データに基づく制御演算処理を実施し、（iii）ＰＬＣ１００はＩＯリフレッシュ処理７２によりサーバ６００からの算出値（指令値、制御量）を効果）をフィールド装置９０に出力する、一連の処理が実施される。制御システム１では、ＵＰＧ６９の実行環境はＰＬＣ１００ではなくサーバ６００に備えられる。したがって、協調制御では、ＰＬＣ１００の処理能力（所謂スペック）を超える演算量、演算速度が要求されるＵＰＧ６９を実行し、その実行結果を用いてフィールド装置９０を制御することが可能となる。
【００４１】
以下、本実施の形態のより具体的な応用例について説明する。
＜Ｂ．制御システム１のネットワーク構成＞
再び図１を参照して、制御システム１のネットワーク１１に接続されるＰＬＣ１００Ａ、１００Ｂおよび１００Ｃは、それぞれ、工程３Ａ、３Ｂおよび３Ｃに備えられる。限定されないが、工程３Ａ，３Ｂおよび３Ｃは、同じ工程（例えば、ワークを製品に組立てる工程等）であってもよく、または異なる工程（ワークの組立工程、組立てられた製品の塗装工程、塗装された製品の検査工程等）であってもよい。
【００４２】
ネットワーク１１のプロトコルとしては、限定されないが、例えば汎用的なＥｔｈｅｒｎｅｔ（登録商標）上に制御用プロトコルを実装した産業用オープンネットワークであるＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）を用いてもよい。また、ネットワーク１１０のプロトコルとしては、限定されないが、マシンコントロール用ネットワークの一例であるＥｔｈｅｒＣＡＴ（登録商標）を採用してもよい。なお、ネットワーク１１のプロトコルとネットワーク１１０のプロトコルとは、同じであってもよいし、異なっていてもよい。また、ネットワーク１１０は、データバスで構成することもできる。
【００４３】
また、サポート装置５００は、ユーザが制御システム１を運用するのを支援する支援ツールを提供する。支援ツールは、サーバ６００におけるＵＰＧ６９の実行環境，ＰＬＣ１００との通信環境等の準備の設定等を支援するツールを含む。サポート装置５００は、ネットワーク１１に接続され得るが、サーバ６００に脱着自在に接続されてもよく、またはサーバ６００に支援ツールが内蔵されてもよい。また、支援ツールは、ＰＬＣ１００がフィールド装置９０を制御するために必要な準備の設定，サーバ６００との通信環境等の準備の設定等を支援するツールを含んでもよく、その場合、サポート装置５００は、ＰＬＣ１００に脱着自在に接続され得る。なお、支援ツールは、例えばＵＩ（User  Interface）によりユーザに提供される。
【００４４】
＜Ｃ．制御システム１における時刻同期＞
図１の制御システム１では、ネットワーク１１に接続される複数のＰＬＣ１００Ａ，１００Ｂおよび１００Ｃは、それぞれ、ネットワーク１１０を介して接続される１または複数のフィールド装置９０とのデータを送受信する。具体的には、ＰＬＣ１００は、フィールド装置９０から入来するデータをサーバ６００へ転送し、サーバ６００から受信する制御データをフィールド装置９０に出力する入出力処理（ＩＯリフレッシュ処理７２）を実行する。
【００４５】
また、ネットワーク１１０では、データの到着時間が保証される必要がある。そのため、ＰＬＣ１００は、データ伝送のタイミングを規定する、データが送受信される主体（すなわち、１または複数のフィールド装置９０およびサーバ６００）の間で互いに時刻同期されたタイマを有している。
【００４６】
また、本実施の形態に従う制御システム１においては、複数のＰＬＣ１００の各々が有するタイマを互いに時刻同期させる。これにより、互いに異なるＰＬＣ１００に接続される、すなわち異なる工程間において複数のフィールド装置９０の協調制御が実現され得る。
【００４７】
以下、本実施の形態にかかる制御システム１が提供する時刻同期機能について説明する。
【００４８】
（ｃ１．時刻同期）
図２は、本実施の形態に従う制御システム１のネットワーク構成例を示す模式図である。図２を参照して、本実施の形態に従う制御システム１における時刻同期を説明する。
【００４９】
図２に示す制御システム１は、複数のＰＬＣ１００Ａ，１００Ｂおよび１００Ｃと、複数のフィールド装置９０Ａ〜９０Ｉとを備える。制御システム１では、ＰＬＣ１００Ａ、１００Ｂおよび１００Ｃは、それぞれ、対応するネットワーク１１０内のデータ伝送を管理するマスタとして機能する。フィールド装置９０Ａ〜９０Ｉは、対応するマスタからの指令に従ってデータ伝送を行なうスレーブ（Slave）として機能する。
【００５０】
本実施の形態に従う制御システム１において、ネットワーク１１０に接続される複数の装置、すなわちＰＬＣ１００および１または複数のフィールド装置９０の間では、送受信タイミングが同期されている（図中の時刻同期（３）に相当）。具体的には、ＰＬＣ１００およびフィールド装置９０の各々は、互いに時刻同期されたタイマを備える。このタイマは、同期してインクリメントまたはデクリメントされるカウンタに相当する。ＰＬＣ１００およびフィールド装置９０の各々は、それらの時刻同期されたタイマに従って、データの送信または受信のタイミングを決定する。
【００５１】
なお、本実施の形態では「タイミング」は何らかの事象が生じる時期、時間または時刻の概念を表す。また、「時刻同期」とはお互いの装置が有するタイマ，時間データ等を同期させることを示す。本実施の形態では、この時刻同期は、例えば、ネットワーク１１、１１０においてＴＳＮ（Time-Sensitive  Networking）に従うデータ通信が実施されることで実現され得る。
【００５２】
図２に示す例においては、ＰＬＣ１００Ａはタイマ１０２Ａを備え、フィールド装置９０Ａ〜９０Ｃはそれぞれタイマ９１Ａ〜９１Ｃを備える。ＰＬＣ１００Ａのタイマ１０２Ａがマスタとして機能し、フィールド装置９０Ａ〜９０Ｃのタイマ９１Ａ〜９１Ｃがこのマスタを基準として、タイマ１０２Ａのタイマ値に基づく値が、タイマ９１Ａ〜９１Ｃに設定される（時刻同期がとられる）。
【００５３】
ＰＬＣ１００Ａと同様に、ＰＬＣ１００Ｂが備えるタイマ１０２Ｂと、フィールド装置９０Ｄ〜９０Ｆが備えるタイマ９１Ｄ〜９１Ｆとの間で時刻同期がとられる。また、ＰＬＣ１００Ａと同様に、ＰＬＣ１００Ｃが備えるタイマ１０２Ｃと、フィールド装置９０Ｇ〜９０Ｉが備えるタイマ９１Ｇ〜９１Ｉとの間で時刻同期がとられる。
【００５４】
これにより、ネットワーク１１０を構成するＰＬＣ１００とフィールド装置９０との間でデータの伝送タイミングなどを互いに一致させることができる。
【００５５】
図２に示す例において、ＰＬＣ１００Ａは、タイマ１０２Ａと時刻同期されたタイマ１０１Ａを備え、また、ＰＬＣ１００Ｂは、タイマ１０２Ｂと時刻同期されたタイマ１０１Ｂを備え、また、ＰＬＣ１００Ｃは、タイマ１０２Ｃと時刻同期されたタイマ１０１Ｃを有している（図中の時刻同期（２）に相当）。
【００５６】
また、制御システム１においては、サーバ６００のタイマ６０１がマスタとして機能し、ＰＬＣ１００Ａのタイマ１０１Ａ、ＰＬＣ１００Ｂのタイマ１０１ＢおよびＰＬＣ１００Ｃのタイマ１０１Ｃは、それぞれ、マスタのタイマ６０１と時刻同期する。これにより、各ＰＬＣ１００はサーバ６００と相互に時刻同期する（図中の時刻同期（１）に相当）。
【００５７】
また、ＰＬＣ１００Ａのタイマ１０１Ａは、サーバ６００のタイマ６０１と時刻同期し、他のＰＬＣ１００Ｂ，１００Ｃのタイマ１０１Ｂ，１０１Ｃが、タイマ１０１Ａと時刻同期してもよい。
【００５８】
これにより、制御システム１では、各ＰＬＣ１００とサーバ６００とは互いに時刻同期され、さらに各ＰＬＣ１００と、自ＰＬＣ１００に接続されるフィールド装置９０とは互いに時刻同期される。
【００５９】
＜Ｄ．各装置の構成＞
制御システム１が備える各装置の構成を説明する。
【００６０】
（ｄ１．ＰＬＣ１００の構成）
図３は、本実施の形態にかかるＰＬＣ１００の構成例を示すブロック図である。図３を参照して、ＰＬＣ１００は、プロセッサ１０２と、チップセット１０４と、主記憶装置１０６と、二次記憶装置１０８と、ＮＩＣ（Network  Interface Card）等のネットワークコントローラ１０５と、ＵＳＢ（Universal  Serial Bus）コントローラ１０７と、メモリカードインターフェイス１１４と、ローカルバスコントローラ１２０と、フィールドネットワークコントローラ１１８と、カウンタ１２６とを含む。
【００６１】
プロセッサ１０２は、ＣＰＵ（Central  Processing Unit）、ＭＰＵ（microprocessor unit）、ＵＰＧ（Graphics  Processing  Unit）などで構成される。プロセッサ１０２は、二次記憶装置１０８に格納された各種プログラムを読出して、読出されたプログラムを主記憶装置１０６に展開して実行することで、制御対象に応じた制御、および、後述するような各種処理を実現する。二次記憶装置１０８は、例えば、ＨＤＤ（Hard  Disk  Drive）またはＳＳＤ（Solid  State  Drive）などの不揮発性記憶装置などで構成される。主記憶装置１０６は、ＤＲＡＭ（Dynamic  Random  Access  Memory）やＳＲＡＭ（Static  Random  Access  Memory）などの揮発性記憶装置などで構成される。
【００６２】
チップセット１０４は、プロセッサ１０２と各デバイスを制御することで、ＰＬＣ１００全体としての処理を実現する。
【００６３】
二次記憶装置１０８には、基本的な機能を実現するためのシステムプログラムに加えて、制御対象の製造装置や設備に応じて作成されるユーザプログラムが格納される。
【００６４】
ネットワークコントローラ１０５は、ネットワーク１１を介して、サーバ６００との間のデータを遣り取りする。ＵＳＢコントローラ１０７は、ＵＳＢ接続を介してサポート装置５００との間のデータの遣り取りを制御する。
【００６５】
メモリカードインターフェイス１１４は、メモリカード１１６を脱着可能（detachable）に構成されており、メモリカード１１６に対してデータを書込み、メモリカード１１６から各種データ（ユーザプログラムやトレースデータなど）を読出すことが可能になっている。
【００６６】
カウンタ１２６は、一種のタイマである。カウンタ１２６は、ＰＬＣ１００における各種処理の実行タイミングを管理するための時刻基準として用いられる。カウンタ１２６は、典型的には、所定周期毎にカウンタ値をインクリメントまたはデクリメントする。カウンタ１２６として、プロセッサ１０２を駆動するシステムバス上に配置された、ハードウェアタイマが実装されてもよく、あるいは、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field-Programmable  Gate  Array）などの専用回路を用いて実装されてもよい。図２で示したタイマ１０１Ａ、１０１Ｂおよび１０１Ｃは、それぞれ、カウンタ１２６に対応する。
【００６７】
フィールドネットワークコントローラ１１８は、ネットワーク１１０を介したフィールド装置９０を含む他のデバイスとの間のデータの遣り取りを制御する。フィールドネットワークコントローラ１１８は、他のデバイスとの間でタイミングを管理するための時刻基準として用いられるカウンタ１１９を有している。図２に示したタイマ１０２Ａ、１０２Ｂおよび１０２Ｃは、それぞれ、カウンタ１１９に対応する。
【００６８】
ローカルバスコントローラ１２０は、ＰＬＣ１００に接続され得る図示しない機能ユニットとの間でデータを遣り取りするインターフェイスである。
【００６９】
また、ネットワーク１１０上の各フィールド装置９０も、フィールドネットワークコントローラ１１８との間でタイミングを管理するための時刻基準として用いられるカウンタ９２を有している。図２のタイマ９１Ａ〜９１Ｉは、それぞれ、カウンタ９２に対応する。
【００７０】
カウンタ１１９および各フィールド装置９０が有するカウンタについては、上述のカウンタ１２６と同様の構成を採用できる。
【００７１】
フィールドネットワークコントローラ１１８は、ネットワーク１１０を介した定周期通信を行うための通信マスタとして動作する。フィールドネットワークコントローラ１１８は、フィールド装置９０のカウンタ９１が示すカウンタ値をカウンタ１１９が示すカウンタ値と一致させるよう同期管理を実施する。
【００７２】
図３のＰＬＣ１００では、上記に述べた時刻同期により、カウンタ１１９は、カウンタ１２６と同期する。
【００７３】
図３には、プロセッサ１０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）またはＦＰＧＡ（Field-Programmable  Gate  Array）など）を用いて実装してもよい。あるいは、ＰＬＣ１００の主要部を、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、マルチプロセッサを備えて並列実行可能な環境が提供される。また、仮想化技術を用いて、用途の異なる複数のＯＳ（Operating  System）を並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【００７４】
（ｄ２．サーバ６００の構成）
図４は、本実施の形態にかかるサーバ６００の構成例を示す図である。サーバ６００は、汎用のコンピュータの構成を備える。図４を参照して、サーバ６００は、タイマ６０１、ＣＰＵまたはＭＰＵなどのプロセッサ６０３、記憶装置、ＰＬＣ１００を含む他の装置との間でデータを遣り取りするためのネットワークコントローラ６２０を備える。ネットワークコントローラ６２０は、例えばＮＩＣを備えて構成されてもよい。これらのコンポーネントは、内部バス６０２を介して互いにデータ通信可能に接続されている。この記憶装置は、ＲＯＭ（Read  Only  Memory）６０４、ＲＡＭ（Random  Access  Memory）６０５およびＨＤＤ（Hard  Disk  Drive）６０６を含む。プロセッサ６０３は、マルチプロセッサを備えて、ＵＰＧ６９を並列に実行できるよう構成されてもよい。
【００７５】
ＨＤＤ６０６は、ＯＳ（Operating  System）を含むシステムプログラム７１、サーバプログラム６８、制御演算処理のためのＵＰＧ６９Ａ，６９Ｂ、異常を監視するための監視プログラム６５、異常を処理する異常処理プログラム６６、上記に述べた時刻同期を実施するための時刻同期プログラム６７、スケジューラ６３、通信プログラム６４、制御演算とは異なる他の処理を実施するための他のプログラム６１１、および後述する「準備時間」を確保する処理に関するリザーブプログラム６１２を格納する。プロセッサ６０３は、これらのプログラムをＲＡＭ６０５に読出して実行する。
【００７６】
本実施の形態では、ＨＤＤ６０６は、ユーザプログラムとして、ＰＬＣ１００ＡのＵＰＧ６９ＡおよびＰＬＣ１００ＢのＵＰＧ６９Ｂの２種類を格納するが、ＵＰＧ６９Ａ，６９Ｂに加えて、ＰＬＣ１００ＣのＵＰＧを格納してもよい。また、ユーザプログラムがＰＬＣ１００Ａ，１００Ｂおよび１００Ｃに共通する場合には、ＨＤＤ６０６に格納されるユーザプログラムは１種類であってもよい。ＵＰＧ６９Ａ，６９Ｂは区別しない場合はＵＰＧ６９と呼ぶ。ＵＰＧ６９は、ＭＣＥ（Motion  Control  Engine）７０を含んでも良い。ＭＣＥ７０は、ロボットを目標軌跡に従う移動（駆動）させるための指令値を生成（算出）するプログラムである。
【００７７】
ＲＡＭ６０５は、後述する入力データ（送信）１８２を格納する受信用データ領域６１と、後述する出力データ（受信）１８３を格納する送信用データ領域６２を含む。入力データ（送信）１８２と出力データ（受信）１８３は、データの送信元または宛先であるＰＬＣ１００の識別子、変数名および当該変数に対応するデータとからなる。プロセッサ６０３は、ネットワークコントローラ６２０を介してＰＬＣ１００から受信する入力データ（送信）１８２を受信用データ領域６１に格納する。また、プロセッサ６０３は、受信用データ領域６１の入力データ（送信）１８２を用いた制御演算処理を実行し、算出値である出力データ（受信）１８３を、送信用データ領域６２に格納する。入力データ（送信）１８２の受信と出力データ（受信）１８３の送信は、プロセッサ６０３が、通信プログラム６４を実行することにより実現される。
【００７８】
また、制御演算処理は、プロセッサ６０３が、ＵＰＧ６９を実行することにより実現される。ＵＰＧ６９は、限定されないが、例えば、ファンクションブロックなどを利用したラダーロジックなどで規定することができる。
【００７９】
（ｄ３．ＰＬＣ１００のソフトウェア構成）
次に、本実施の形態にかかるＰＬＣ１００のソフトウェア構成例について説明する。図５は、本実施の形態にかかるＰＬＣ１００のソフトウェア構成例を示すブロック図である。図５を参照して、ＰＬＣ１００は、制御エンジン１５０、バッファ１８０と、ゲートウェイプログラム１９４とを含む。バッファ１８０は、典型的には、例えば主記憶装置１０６または二次記憶装置１０８内に、または、ネットワークコントローラ１０５が備えるメモリ内に配置され得る。また、バッファ１８０は、入力データ（送信）１８２と、出力データ（受信）１８３を格納する。
【００８０】
制御エンジン１５０は、各種プログラムの実行環境を提供する。具体的には、ＰＬＣ１００のプロセッサ１０２が、二次記憶装置１０８に格納されているシステムプログラム１５１を読出して主記憶装置１０６に展開して実行することで制御エンジン１５０が実現される。
【００８１】
制御エンジン１５０は、制御プログラム１５２と、変数管理プログラム１６０と、スケジューラプログラム１７０と、入力プログラム１７２と、出力プログラム１７４と、時刻同期プログラム１７７を実行する。変数管理プログラム１６０と、スケジューラプログラム１７０と、入力プログラム１７２と、出力プログラム１７４とについては、システムプログラム１５１の一部として実装されてもよい。この場合には、これらのプログラムが提供するそれぞれの機能を単一のシステムプログラム１５１が提供するようにしてもよい。
【００８２】
制御プログラム１５２は、ユーザが提供するプログラムの一例である周辺処理プログラム１５４、ＩＯリフレッシュ１５６、転送プログラム１５８、異常処理プログラム１７８および監視プログラム１７９を含む。周辺処理プログラム１５４は、ＵＰＧ６９により実施される制御演算処理とは異なる処理であって、制御演算処理の周辺で実施される処理であり、例えば表示処理、ロギング処理等を含む。なお、周辺処理は、ＵＰＧ６９が実施する制御演算処理と関連した処理も含み得る概念である。
【００８３】
変数管理プログラム１６０は、制御エンジン１５０で利用可能な値を変数の形で、例えば主記憶装置１０６の所定記憶領域において管理する。より具体的には、変数管理プログラム１６０は、ＰＬＣ１００の状態などを示すシステム変数と、ＰＬＣ１００とネットワーク１１０を介して接続されるフィールド装置９０が保持する値を示すデバイス変数１６１と、ＰＬＣ１００で実行される周辺処理プログラム１５４が保持する値を示すユーザ変数とを管理する。デバイス変数１６１は、フィールド装置９０から入来するデータである入力データ１６２と、フィールド装置９０に出力するべきデータである出力データ１６３の変数を含む。出力データ１６３の出力変数には、サーバ６００から受信した出力データ（受信）１８３が設定される。入力データ１６２の入力変数には、出力データ１６３の制御量、指令値に従い制御されたフィールド装置９０からの観測値が設定される。
【００８４】
入力プログラム１７２は、ネットワーク１１０を介してフィールド装置９０から入来する入力データ１６２を受付けて、変数管理プログラム１６０に渡す。また、出力プログラム１７４は、変数管理プログラム１６０から渡される出力データ１６３を、ネットワーク１１０を介してフィールド装置９０へ出力する。
【００８５】
転送プログラム１５８は、ＩＯリフレッシュ１５６からの入力データ１６２を送信可能な形式に変換することにより入力データ（送信）１８２を生成し、バッファ１８０に格納する。また、転送プログラム１５８は、サーバ６００から受信されて格納されたバッファ１８０の出力データ（受信）１８３を、処理可能な形式の出力データ１６３に変換し、変換後の出力データ１６３をＩＯリフレッシュ１５６に出力する。例えば、限定されないが、入力データ（送信）１８２は、フィールド装置９０での時系列順の観測値を含むデータを示し、また、出力データ（受信）１８３は、フィールド装置９０に出力すべき時系列順の制御データを示す。
【００８６】
ＩＯリフレッシュ１５６は、変数管理プログラム１６０と連携することによりＩＯリフレッシュ処理７２を実施する。具体的には、ＩＯリフレッシュ１５６は、サーバ６００から受信した出力データ（受信）１８３を、転送プログラム１５８を介してバッファ１８０から読出し、デバイス変数プログラムに１６１に出力する。また、ＩＯリフレッシュ１５６は、変数管理プログラム１６０から、デバイス変数１６１のうち入力変数の値である入力データ１６２を受信し、受信した入力データ１６２を、転送プログラム１５８を介してバッファ１８０に入力データ（送信）１８２として格納する。
【００８７】
変数管理プログラム１６０は、入力プログラム１７２から渡されたデータを、デバイス変数１６１のうち入力変数に設定するとともに、入力変数の入力データ１６２を、ＩＯリフレッシュ１５６に出力する。また、変数管理プログラム１６０は、ＩＯリフレッシュ１５６からの出力データ（受信）１８３を、デバイス変数１６１のうち出力データ１６３の出力変数に設定するとともに、出力変数の出力データ１６３を出力プログラム１７４に渡す。
【００８８】
上述のＩＯリフレッシュ１５６においては、デバイス変数１６１のうち入力データ１６２の変数値を、フィールド装置９０から入来するデータ（観測値）で更新するとともに、デバイス変数１６１のうちフィールド装置９０への指令値、制御量となる変数値に、出力データ１６３を反映（設定）する。したがって、ＩＯリフレッシュ１５６により、ＰＬＣ１００とフィールド装置９０との間で、より特定的にはサーバ６００とフィールド装置９０との間で入力データ１６２（入力データ（送信）１８２）と出力データ１６３（出力データ（受信）１８３）のデータ遣り取りが実現される。
【００８９】
ゲートウェイプログラム１９４は、サーバ６００と通信する。例えば、ゲートウェイプログラム１９４は、サーバ６００にバッファ１８０の入力データ（送信）１８２からフレームを生成し、生成されたフレームをサーバ６００に送信する。また、ゲートウェイプログラム１９４は、サーバ６００からフレームを受信し、受信したフレームから制御演算処理の算出値（指令値、制御量）を抽出し、抽出値をバッファ１８０に出力データ（受信）１８３として格納する。バッファ１８０およびゲートウェイプログラム１９４は、ネットワークコントローラ１０５内に備えられてもよい。
【００９０】
時刻同期プログラム１７７は、上記に述べたサーバ６００との時刻同期およびフィールド装置９０との時刻同期を実現するとともに、ＰＬＣ１００内の制御プログラム１５２の実行周期を、時刻同期に基づき管理する。
【００９１】
スケジューラプログラム１７０は、ＰＬＣ１００のプロセスまたはタスクなどに対して、リソース割当てや実行タイミングなどを管理する。このような、プロセスまたはタスクは、制御プログラム１５２、変数管理プログラム１６０、入力プログラム１７２、出力プログラム１７４、時刻同期プログラム１７７、異常処理プログラム１７８および監視プログラム１７９等がＰＬＣ１００により実行されることにより生成され得るプロセスまたはタスクが含まれる。スケジューラプログラム１７０は、例えば予め定められた制御周期に基づく周期で各プログラムの実行タイミングを調整する。
【００９２】
これにより、ＰＬＣ１００は、制御プログラム１５２による周辺処理およびＩＯリフレッシュ処理を、サーバ６００およびフィールド装置９０との間で同期した時刻に基づく期で実施することができる。
【００９３】
（ｄ４．通信マスタ処理）
ＰＬＣ１００は、通信マスタ処理を実施する。通信マスタ処理では、ＰＬＣ１００が通信マスタとして動作し、ＩＯリフレッシュ処理７２において、ネットワーク１１０を介した、複数のフィールド装置９０からの入来データの収集、およびサーバ６００から受信する制御データの複数のフィールド装置９０への転送を制御する。
【００９４】
具体的には、ＰＬＣ１００は、通信マスタ処理において、ネットワーク１１０を介したＰＬＣ１００とフィールド装置９０との間のデータ通信を制御する。通信マスタ処理では、ＰＬＣ１００は通信フレームを制御周期１０に同期した周期でサイクリック（例えば、数〜１０数ｍｓｅｃ）にフィールド装置９０間を一巡するよう制御する。本実施の形態においては、このような通信フレームをサイクリック伝送させるためのプロトコルの一例として、ＥｔｈｅｒＣＡＴが採用される。
【００９５】
フィールド装置９０は、ネットワーク１１０を介して例えばデイジーチェーンで順次に接続されている。通信フレームには、フィールド装置９０毎にデータ領域が割り当てられている。例えば、各フィールド装置９０は、通信フレームを受信すると、当該受信した通信フレーム内の自装置に割り当てられたデータ領域に現在値（観測値）を書込む、またはデータ領域からＰＬＣ１００が設定した制御データ（指令値，制御量）を読出し、その後、通信フレームを次段のフィールド装置９０に送出する。
【００９６】
各フィールド装置９０が通信フレームに予め設定されたデータの現在値を書込むことで、ネットワーク１１０を一巡して通信マスタ（ＰＬＣ１００）に戻る通信フレームには、各フィールド装置９０により観測された最新の値が含まれることになる。
【００９７】
ＰＬＣ１００による通信マスタ処理は、変数管理プログラム１６０と、スケジューラプログラム１７０と、入力プログラム１７２と、出力プログラム１７４と、システムプログラム１５１との少なくとも一部が互いに協働して実行されることで実現され得る。
【００９８】
（ｄ５．サーバ６００のソフトウェア構成）
図６は、本実施の形態にかかるサーバ６００のソフトウェア構成例を示す図である。サーバ６００は、処理エンジン６１０を備える。処理エンジン６１０は、システムプログラム７１のＯＳの元で、サーバプログラム６８が実行されることで実現される。
【００９９】
処理エンジン６１０は、上記に述べたＰＬＣ１００との時刻同期を実施する時刻同期プログラム６７およびスケジューラ６３を実行するとともに、スケジューラ６３の元で実行のタイミングを管理しながらＵＰＧ６９Ａ，６９Ｂ、通信プログラム６４、異常処理プログラム６６、監視プログラム６５、他のプログラム６１１およびリザーブプログラム６１２を実行する。スケジューラ６３は、システムプログラム７１の一部として実装されてもよい。
【０１００】
通信プログラム６４は、各ＰＬＣ１００とデータの遣り取りを実施する。具体的には、通信プログラム６４は、ＰＬＣ１００からの入力データ（送信）１８２を領域６１に格納し、また、ＵＰＧ６９の制御演算処理の算出値である出力データ（受信）１８３を領域６２に格納する。通信プログラム６４は、ネットワークコントローラ６２０が内蔵する通信制御プログラムと協同してデータの遣り取りを実施してもよい。
【０１０１】
時刻同期プログラム６７は、上記に述べた各ＰＬＣ１００との時刻同期を実現するとともに、サーバ６００内のプログラムの実行周期を、時刻同期に基づき管理する。これにより、本実施の形態では、サーバ６００は、ＵＰＧ６９Ａ，６９Ｂの制御演算処理を、各ＰＬＣ１００との間で同期した時刻に基づいた周期で実施することができる。スケジューラ６３は、サーバ６００において生成されるプロセスまたはタスクなどに対して、リソース割当てや実行タイミングなどを管理する。このような、プロセスまたはタスクは、異常処理プログラム６６、監視プログラム６５および時刻同期プログラム６７等がサーバ６００により実行されることにより生成され得るプロセスまたはタスクが含まれる。スケジューラ６３は、例えば予め定められた制御周期に基づく周期で各プログラムの実行タイミングを調整する。
【０１０２】
＜Ｅ．基本系＞
まず、制御システム１の基本系における、ＰＬＣ１００とサーバ６００との間のデータの遣り取りを説明する。図７は、本実施の形態にかかる制御システム１の基本系を模式的に示す図である。図７を参照して、基本系ではサーバ６００には１台のＰＬＣ１００（例えばＰＬＣ１００Ａ）が接続されている。
【０１０３】
（ｅ１．基本系のタイミングチャート）
図８は、本実施の形態にかかる基本系のタイミングチャートの一例を模式的に示す図である。タイミングチャートの横軸に示す時間経過に従い、サーバ６００とＰＬＣ１００との間での通信を含む処理の開始および終了のタイミングと処理の実施時間の長さが示される。処理の実施時間の長さは、時間軸が延びる方向に延びる帯状の長さで示される。図８では、ＰＬＣ１００に３台のフィールド装置９０（Slave1，Slave2およびSlave3）が接続されるが、接続されるフィールド装置９０は３台に限定されない。
【０１０４】
また、本実施の形態では、ＰＬＣ１００では、スケジューラプログラム１７０により、ＩＯリフレッシュ１５６、ＰＬＣ１００がサーバ６００と通信するための転送プログラム１５８、および周辺処理プログラム１５４が、この順番に実行されるようにスケジューリングされる。これにより、ＰＬＣ１００では、図８に示すように、同期した時刻に基づく制御周期１０毎に、ＩＯリフレッシュ処理７２、サーバ通信７３および周辺処理７４がこの順番で実施される。制御周期１０は、互いに時刻同期するＰＬＣ１００とサーバ６００が共有する時間の一例であって、ＰＬＣ１００とサーバ６００は、共通のトリガ８が与えられたとき、制御周期１０の開始と終了のタイミングを検知する。
【０１０５】
フィールド装置９０では、制御周期１０において、観測値である入力データ１６２をＰＬＣ１００へ送信する処理「Snd」、ＰＬＣ１００から指令値、制御量を含む出力データ１６３を受信する処理「Rcv」、および出力データ１６３に従う対象の「制御」が、この順番で実行される。フィールド装置９０における「制御」は、共通のトリガ７の入力に応答して開始される処理であって、この処理では、直前に受信した出力データ１６３に従い対象が制御される。本実施の形態では、全てのフィールド装置９０が出力データ１６３を受信完了したタイミングでトリガ７が各フィールド装置９０に与えられる。これにより、フィールド装置９０は、互いに同期したタイミングで制御処理を開始することができる。なお、トリガ７とトリガ８は制御システム１が備える図示しない信号発生回路から供給することができる。
【０１０６】
図８を参照して、各フィールド装置９０が処理「Snd」を実施すると、（ｎ）回目（ただし、ｎ＝１，２，３，・・・）の制御周期１０は終了し、（ｎ+１）回目の制御周期１０が開始される。
【０１０７】
（ｎ+１）回目の制御周期１０が開始するとき、ＩＯリフレッシュ処理７２が実施されて、ＰＬＣ１００は直前（ｎ）回目の制御周期１０でフィールド装置９０から受信したデータを処理する。具体的には、ＩＯリフレッシュ処理７２では、デバイス変数１６１のうち入力データ１６２の変数値が、フィールド装置９０から入来するデータで更新される。これにより、デバイス変数１６１のうち入力データ１６２の変数値が収集される。
【０１０８】
続くサーバ通信７３では、直前に収集された入力データ１６２が、入力データ（送信）１８２に変換されて、ゲートウェイプログラム１９４を介してサーバ６００に送信される。また、このとき、フィールド装置９０は、ＰＬＣ１００の出力プログラム１７４によって送信された出力データ１６３を受信する処理「Rcv」を実施し、その後、トリガ７に応答して「制御」を開始する。フィールド装置９０では、「制御」を終了すると、処理「Snd」を実施する。
【０１０９】
また、（ｎ+１）回目の制御周期１０では、ＰＬＣ１００とサーバ６００との間で互いに同期した処理が実施される。サーバ６００は、ＰＬＣ１００からの入力データ（送信）１８２を受信し、ＰＬＣ１００と同期した時刻に基づくタイミングにおいて、ＵＰＧプログラム６９を実行する。サーバ６００は、ＵＰＧ６９による制御演算処理の算出値（すなわち出力データ（受信）１８３に対応）をＰＬＣ１００へ送信する。ＰＬＣ１００は、サーバ６００からの算出値を受信し、バッファ１８０の出力データ（受信）１８３として格納する。その後、ＰＬＣ１００では、周辺処理７４が実施される。その後、（ｎ+２）回目の制御周期１０では、（ｎ+１）回目の制御周期１０と同様に処理が実施される。
【０１１０】
また、制御周期１０において、ＰＬＣ１００では、入力データ（送信）１８２をサーバ６００に送信後、サーバ６００から出力データ（受信）１８３を受信するまでの間は、周辺処理７４を実施してもよい。
【０１１１】
基本系においては、サーバ６００とＰＬＣ１００は互いに時刻同期されて、制御周期１０内においてＰＬＣ１００によるＩＯリフレッシュ処理７２とサーバ６００によりＵＰＧ６９の実行（制御演算処理の実行）が実施（開始）される。
【０１１２】
（ｅ２．基本系のフローチャート）
図９は、本実施の形態にかかる基本系における処理のフローチャートの一例を示す図である。図９では、制御周期１０においてＰＬＣ１００で実施される処理とサーバ６００で実施される処理とが、関連付けて示されている。図９では、制御周期１０の開始を指示するにトリガ８がＰＬＣ１００およびサーバ６００に供給される。したがって、ＰＬＣ１００およびサーバ６００は、共通のトリガ８を受信したとき、当該制御周期１０で実施するべき処理を開始する。
【０１１３】
まず、ＰＬＣ１００は、トリガ８に応じて、ＩＯリフレッシュ処理７２を実施する（ステップＳ３）。ＰＬＣ１００は、ＩＯリフレッシュ処理７２により収集した入力データ（送信）１８２をサーバ６００へ送信するサーバ通信７３を実施する（ステップＳ５）。
【０１１４】
ＰＬＣ１００は、その後、周辺処理７４を実施する（ステップＳ７）。ＰＬＣ１００は、サーバ通信７３によりサーバ６００から出力データ（受信）１８３を受信するか否か(受信完了するか否か）を判断する（ステップＳ９）。未受信と判断する、または受信完了していないと判断すると（ステップＳ９でＮＯ）、処理はステップＳ７に戻り、周辺処理７４を実施する。
【０１１５】
一方、ＰＬＣ１００が出力データ（受信）１８３は受信完了したと判断すると（ステップＳ９でＹＥＳ）、次の制御周期１０のための準備を実施する（ステップＳ１１）。具体的には、フィールド装置９０を制御するために、受信された出力データ（受信）１８３が、デバイス変数１６１の出力変数に設定（コピー）される。これにより、次の制御周期１０において、フィールド装置９０に、サーバ６００による制御演算の算出値（指令値、制御量）を出力することができる。その後、次の制御周期１０の処理に移行する。
【０１１６】
また、サーバ６００は、トリガ８を受付けると、通信プログラム６４によりＰＬＣ１００から入力データ（送信）１８２の受信処理を実施する。サーバ６００は、入力データ（送信）１８２の受信が完了したか否かを判断する（ステップＲ３）。この受信完了の判定は、例えば、トリガ８を受付けてから所定時間が経過したことに基き実施される。入力データ（送信）１８２の受信完了が判定されないときは（ステップＲ３でＮＯ）、ステップＲ３が繰返し実施される。
【０１１７】
一方、サーバ６００は、所定時間が経過した、すなわち入力データ（送信）１８２の受信が完了したと判定すると（ステップＲ３でＹＥＳ）、サーバ６００はＵＰＧ６９を実行する（ステップＲ５）。これにより、受信した入力データ（送信）１８２を用いた制御演算処理が実施される。サーバ６００は、制御演算の算出値を出力データ（受信）１８３に反映（設定）し、出力データ（受信）１８３を、通信プログラム６４により、ＰＬＣ１００へ送信する（ステップＲ７）。その後、次の制御周期１０の処理に移行する。
【０１１８】
図９では、互いに時刻同期されたＰＬＣ１００とサーバ６００との間において、処理は、制御周期１０の開始時に供給されるトリガ８に応じて開始されることで、両者の処理を、時刻同期に基づく共有された時間（制御周期１０内の時間）において開始することが可能となる。
【０１１９】
（ｅ３．基本系のフローチャートの変形例）
基本系の図９の処理は、図１０に示すように異常に対処する異常処理を追加するように変形することもできる。図１０は、本実施の形態にかかる基本系における処理のフローチャートの変形例を示す図である。図１０の処理は、図９の処理に異常処理（ステップＳ１３、Ｓ１５、Ｒ９、Ｒ１１）を追加して構成される。図１０の他の処理は、図９と同様であるので説明は繰返さない。
【０１２０】
図１０を参照して、ＰＬＣ１００は、サーバ６００から出力データ（受信）１８３を受信完了したと判定したとき（ステップＳ９でＹＥＳ）、監視プログラム１７９により異常の有無を判定させる（ステップＳ１３）。監視プログラム１７９により、ステップＳ９における受信完了が、トリガ８の入力から一定時間内であったか否かに基き、異常の有無が判定される。監視プログラム１７９により、この一定時間内に受信完了がなされたと判定されたとき（ステップＳ１３でＮＯ:異常無し）、ステップＳ１１の処理に移行する。また、監視プログラム１７９により、この一定時間内に受信完了がなされていないと判定されたとき（ステップＳ１３でＹＥＳ：異常有り）、ＰＬＣ１００は、異常処理プログラム１７８により、異常処理を実施させる（ステップＳ１５）。その後、この制御周期１０の処理は終了する。
【０１２１】
なお、監視プログラム１７９は、サーバ６００から送信された異常通知の受信の有無判定も含み得る。また、異常処理（ステップＳ１５）では、異常処理プログラム１７８により、例えば異常検知のログデータを二次記憶装置１０８に格納する処理、またはサポート装置５００に異常通知を出力する処理が含まれ得る。また、異常処理（ステップＳ１５）に続いて、ステップＳ１１の処理が上述と同様に実施されてもよい。
【０１２２】
また、異常有りが検知された場合（ステップＳ１３でＹＥＳ）は、サーバ６００からの出力データ（受信）１８３を出力データ１６３に設定する処理（ステップＳ１１の処理）はスキップされる。この場合、次の制御周期１０では、直前の制御周期１０の出力データ１６３を再度用いてフィールド装置９０が制御される。
【０１２３】
また、サーバ６００では、ＰＬＣ１００から入力データ（送信）１８２を受信完了したと判定したとき（ステップＲ３でＹＥＳ）、監視プログラム６５により異常の有無を判定させる（ステップＲ１１）。監視プログラム６５により、ステップＲ３における受信完了が、トリガ８の入力から一定時間内であったか否かに基き、異常の有無が判定される。監視プログラム６５により、この一定時間内に受信完了がなされたと判定されたとき（ステップＲ１１でＮＯ:異常無し）、ステップＲ５の処理に移行する。また、監視プログラム１７９により、この一定時間内に受信完了がなされていないと判定されたとき（ステップＲ１１でＹＥＳ：異常有り）、サーバ６００は、異常処理プログラム６６により、異常処理を実施させる（ステップＲ９）。その後、この制御周期１０の処理は終了する。
【０１２４】
ステップＲ９の異常処理は、異常検知の通知を、ＰＬＣ１００へ送信する処理を含む。また、図１０では、異常処理（ステップＲ９）を実施後は、この制御周期の処理を終了したが、ステップＲ７においてＵＰＧ６９による制御演算処理を実施してもよい。この場合は、先の制御周期１０で受信した入力データ（送信）１８２に基づく制御演算処理が実施されて、その算出値である出力データ（受信）１８３がＰＬＣ１００に送信される（ステップＲ７）。
【０１２５】
（ｅ４．基本系のフローチャートのさらなる変形例）
図９または図１０の処理においては、宛先で確実にデータを受信できるように、入力データ（送信）１８２または出力データ（受信）１８３は、複数回送信されてもよい。
【０１２６】
具体的には、ＰＬＣ１００の処理（ステップＳ５）では、入力データ（送信）１８２を格納した同一のフレームが複数回送信される。同一の入力データ（送信）１８２を格納したフレームには、同一の識別子（ＩＤ）を割当てられる。サーバ６００は、受信するフレームのＩＤに基き、ＰＬＣ１００から同一の入力データ（送信）１８２が送信されていることを検知することができる。
【０１２７】
また、サーバ６００の処理（ステップＲ７）では、出力データ（受信）１８３を格納した同一のフレームが複数回送信される。同一の出力データ（受信）１８３を格納したフレームには、同一の識別子（ＩＤ）を割当てられる。ＰＬＣ１００は、受信するフレームのＩＤに基き、サーバ６００から同一の出力データ（受信）１８３が送信されていることを検知することができる。なお、ステップＲ７では、サーバ６００は、例えば、同一の出力データ（受信）１８３を格納したフレームの送信回数を、出力データ（受信）１８３を送信開始タイミングから次の制御周期１０の開始タイミングまでの時間の長さに基き決定することができる。
【０１２８】
このように、入力データ（送信）１８２および出力データ（受信）１８３は複数回送信されることで、ネットワーク１１上でデータ落ち（喪失）があっても、受信側においてデータを回復させることができる。また、ネットワーク１１上のジッタにより受信側に到着するデータの順番が乱れたとしても、受信側は、データのＩＤに基きデータを本来の順番で受信することができる。
【０１２９】
（Ｆ．多重化系）
制御システム１は、多重化系で構成されてもよい。多重化系は、サーバ６００と、サーバ６００にネットワーク１１を介して接続された複数のＰＬＣ１００を備えるよう構成される。図１１は、本実施の形態にかかる制御システム１の多重化系を模式的に示す図である。図１１を参照して、多重化系ではサーバ６００には２台のＰＬＣ１００（例えばＰＬＣ１００ＡとＰＬＣ１００Ｂ）が接続されている。なお、サーバ６００に接続されるＰＬＣ１００の台数は、２台に限定されず、３台以上であってもよい。
【０１３０】
（ｆ１．多重化系のタイミングチャート）
図１２は、本実施の形態にかかる多重化系のタイミングチャートの一例を模式的に示す図である。なお、図１２では、フィールド装置９０の処理は略されている。図１２では、ＰＬＣ１００Ａからの入力データ（送信）１８２に基づく制御演算処理のための「ＵＰＧ１」と、ＰＬＣ１００Ｂからの入力データ（送信）１８２に基づく制御演算処理のための「ＵＰＧ２」が実行される。「ＵＰＧ１」と「ＵＰＧ２」は、共通のトリガ８に応じて同時に実行開始可能とされる。
【０１３１】
図１２を参照して、制御周期１０の開始に同期してＰＬＣ１００Ａ，１００ＢはＩＯリフレッシュ処理７２を開始するが、各ＰＬＣ１００に接続されるフィールド装置９０の台数、または収集するべき入力変数の数、またはネットワーク１１０の負荷等の差異に起因して、サーバ通信７３を開始できる時間（すなわち、ＩＯリフレッシュ処理７２により入力データ（送信）１８２の収集を完了する時間）に差が生じ得る。このように、サーバ通信７３を開始できる時間に差が生じることに伴い、サーバ６００では、ＰＬＣ１００Ａから入力データ（送信）１８２を受信し領域６１に格納するデータ格納時間１２と、ＰＬＣ１００Ｂから入力データ（送信）１８２を受信し領域６１に格納するためのデータ格納時間１２とは一致せず、ずれることになる。サーバ６００では、この「ずれ」は待ち時間１４で調整される。例えば、サーバ６００は、ＰＬＣ１００Ｂの入力データ（送信）１８２のデータ格納完了後の待ち時間１４が経過したときの時間１５において、サーバ６００は「ＵＰＧ１」と「ＵＰＧ２」を同時（並列）に実行開始する。
【０１３２】
「ＵＰＧ１」と「ＵＰＧ２」の並列実行においては、「ＵＰＧ２」は、「ＵＰＧ１」の算出値を用いて実行されてもよい。これにより、例えば、ＰＬＣ１００Ａに接続されたサーボ装置（フィールド装置９０）からの位置データ（出力データ）に基づく算出値を、「ＵＰＧ２」の制御演算（例えば、ＰＬＣ１００Ｂに接続されたサーボ装置（フィールド装置９０）の指令値を決定するために用いられる。
【０１３３】
並列実行された「ＵＰＧ１」と「ＵＰＧ２」の実行結果である制御演算の算出値（出力データ（受信）１８３）は領域６２にデータ格納時間１３で格納される。領域６２の出力データ（受信）１８３は、ＰＬＣ１００Ａ，１００Ｂにそれぞれ送信される。ＰＬＣ１００Ａ，１００Ｂは、それぞれ、次の制御周期１０が開始される前に、サーバ６００から出力データ（受信）１８３を受信完了する。
【０１３４】
図１３は、本実施の形態にかかる多重化系のタイミングチャートの他の例を模式的に示す図である。図１２では、サーバ６００で実行されるＵＰＧ６９を異ならせることで、例えばＰＬＣ１００Ａの「ＵＰＧ１」による制御演算およびＰＬＣ１００Ｂの「ＵＰＧ２」による制御演算を並列に実行する環境を提供した。これに対して、図１３に示すように、サーバ６００で実行されるＵＰＧ６９は１種類であってもよい。これにより、各ＰＬＣ１００からの入力データ（送信）１８２に基づく制御演算を、ＰＬＣ１００の間で共通化することができる。
【０１３５】
なお、図１２と図１３においても、ＰＬＣ１００は、入力データ（送信）１８２をサーバ６００へ送信後からサーバ６００から出力データ（受信）１８３を受信するまでの時間は、周辺処理７４を実施してもよい。
【０１３６】
（ｆ２．多重化系のフローチャート）
図１４は、本実施の形態にかかる多重化系における処理のフローチャートの一例を示す図である。図１４では、図１２または図１３のタイミングチャートに従い実施される処理であって、ＰＬＣ１００Ａ、ＰＬＣ１００Ｂおよびサーバ６００の各装置で実施される処理が相互に関連付けて示される。ＰＬＣ１００Ａでは、ステップＳ３、Ｓ５、Ｓ７、Ｓ９およびＳ１１の処理が図９のそれらと同様に実施される。また、ＰＬＣ１００Ｂでも、ステップＳＳ３、ＳＳ５、ＳＳ７、ＳＳ９およびＳＳ１１の処理が、上記のステップＳ３〜Ｓ１１と同様に実施される。また、サーバ６００ではステップＲＲ３、ＲＲ５およびＲＲ７の処理が実施される。多重化系では、ステップＲＲ３では、ＰＬＣ１００Ａおよび１００Ｂのそれぞれから、入力データ（送信）１８２を受信する。また、ステップＲＲ７では、ＰＬＣ１００Ａおよび１００Ｂのそれぞれに、出力データ（受信）１８３が送信される。なお、図１４の処理においても、図１０に示した監視処理および異常処理が実施されてもよい。これら処理は、図９または図１０に示す処理と同様であるので、説明は繰返さない。
【０１３７】
（ｆ３．多重化系の応用例）
上記に述べた多重化系は、制御システム１のイベント発生時の対応に適用できる。限定されないが、例えば障害発生時の対策に応用することができる。図１５は、本実施の形態にかかる多重化系の応用例を模式的に示す図である。図１５の制御システム１では、サーバ６００に接続される複数のＰＬＣ１００のうちの１つを稼働系として動作させ、および他をバックアップのための待機系として動作させる。待機系のＰＬＣ１００は、稼働系のＰＬＣ１００に障害が発生した場合に当該稼働系のＰＬＣ１００による制御を引き継ぐように構成される。例えば、ＰＬＣ１００Ａが稼働系として動作し、ＰＬＣ１００Ｂは待機系として動作する。ＰＬＣ１００ＡとＰＬＣ１００Ｂは、切替器２００を介して、フィールド装置９０のネットワーク１１０に接続されている。障害発生時、切替器２００は、指令信号１８５に応じて、ＰＬＣ１００Ａおよび１００Ｂのいずれか一方をネットワーク１１０に接続する。
【０１３８】
図１５の（Ａ）は制御システム１の正常稼働時を示し、図１５の（Ｂ）は障害発生時を示す。指令信号１８５は、「正常稼働」または「障害発生」のいずれかを示し、切替器２００は、指令信号１８５が「正常稼働」を示すときは、ネットワーク１１０にＰＬＣ１００Ａを接続し、「障害発生」を示すときは、ネットワーク１１０にＰＬＣ１００Ｂを接続するように構成される。
【０１３９】
図１５の（Ａ）の正常稼働時は、待機系であるＰＬＣ１００Ｂは、稼働していないスタンバイ状態にある。サーバ６００は、稼働中のＰＬＣ１００Ａの異常停止を検知すると、「障害発生」を示す指令信号１８５を切替器２００に出力するとともに、ＰＬＣ１００Ｂに稼働指令を出力する。これにより、切替器２００は、フィールド装置９０に接続されるＰＬＣ１００を、ＰＬＣ１００ＡからＰＬＣ１００Ｂに切替える。
【０１４０】
障害が発生すると、図１５の（Ｂ）に示すように、ＰＬＣ１００Ａは停止するが、待機系のＰＬＣ１００Ｂは稼働指令に従い待機モードから稼働モードに切り替わる。ＰＬＣ１００Ｂが稼働すると、サーバ６００は入力データ（送信）１８２と出力データ（受信）１８３を遣り取りするＰＬＣ１００をＰＬＣ１００ＡからＰＬＣ１００Ｂに切替える。これにより、障害発生時においても、フィールド装置９０の制御を継続することができる。
【０１４１】
なお、待機系のＰＬＣ１００Ｂがサーバ６００およびフィールド装置９０との間で時刻同期をとるタイミングは、ＰＬＣ１００Ｂが稼働されるときであってよいが、時刻同期をとるタイミングは稼働する時に限定されない。例えば、ＰＬＣ１００Ｂは、待機中において、サーバ６００およびフィールド装置９０と時刻同期をとるとしてもよい。
【０１４２】
図１５では、サーバ６００においてＵＰＧ６９を実行する環境が実現されているので、待機系のＰＬＣ１００Ｂが稼働されるときであっても、ＰＬＣ１００ＢにおいてＵＰＧ６９の実行環境の準備（ＵＰＧ６９のインストール（コピー）など）等を行なう必要はない。したがって、待機系のＰＬＣ１００Ｂを稼働状態へ速やかに移行させることができる。
【０１４３】
（ｆ４．多重化系の他の応用例）
図１６は、本実施の形態にかかる多重化系の他の応用例を模式的に示す図である。上記に述べた多重化系を制御システム１の障害対策に応用する他のケースを、図１６を参照して説明する。図１５の構成では、ＰＬＣ１００Ａを稼働系、およびＰＬＣ１００ＢをＰＬＣ１００Ａに専用の待機系と設定したが、図１６に示すように、待機系となるＰＬＣ１００は、稼働系である複数のＰＬＣ１００間で共有することができる。
【０１４４】
図１６では、サーバ６００に、ＰＬＣ１００Ａ、ＰＬＣ１００ＢおよびＰＬＣ１００Ｃが接続される。これら３台のＰＬＣ１００のうち、ＰＬＣ１００Ａと１００Ｂは稼働系として動作し、ＰＬＣ１００ＣはＰＬＣ１００Ａと１００Ｂで共有される待機系として動作する。このように、図１６では、１の待機系のＰＬＣ１００を、複数台の稼働系のＰＬＣ１００で共有することができる。図１６では、サーバ６００はＰＬＣ１００Ａの制御演算処理のための「ＵＰＧ１」とＰＬＣ１００Ｂの制御演算処理のための「ＵＰＧ２」とを実行する。
【０１４５】
例えば、ＰＬＣ１００Ａに障害が発生した場合は、待機系のＰＬＣ１００Ｃは稼働を開始し、切替器２００は、指令信号１８５に応じて、工程３Ａのネットワーク１１０に接続されるＰＬＣ１００を、ＰＬＣ１００ＡからＰＬＣ１００Ｃに切替える。また、サーバ６００は、「ＵＰＧ１」の制御演算のための入力データ（送信）１８２と出力データ（受信）１８３を遣り取りするＰＬＣ１００を、ＰＬＣ１００ＡからＰＬＣ１００Ｃに切替える。これにより、ＰＬＣ１００Ａに障害が発生したとしても、ＰＬＣ１００Ｃにより工程３Ａのフィールド装置９０の制御を継続することができる。
【０１４６】
同様に、ＰＬＣ１００Ｂに障害が発生した場合は、待機系のＰＬＣ１００Ｃは稼働を開始し、切替器２００は、指令信号１８５に応じて、工程３Ｂのネットワーク１１０に接続されるＰＬＣ１００を、ＰＬＣ１００ＢからＰＬＣ１００Ｃに切替える。また、サーバ６００は、「ＵＰＧ２」の制御演算のための入力データ（送信）１８２と出力データ（受信）１８３を遣り取りするＰＬＣ１００を、ＰＬＣ１００ＢからＰＬＣ１００Ｃに切替える。これにより、ＰＬＣ１００Ｂに障害が発生したとしても、ＰＬＣ１００Ｃにより工程３Ｂのフィールド装置９０の制御を継続することができる。
【０１４７】
なお、図１５と図１６では、稼働系のＰＬＣ１００に障害が発生したときに、待機系のＰＬＣ１００を稼働させたが、待機系のＰＬＣ１００を稼働させる所定のタイミングは、障害発生時に限定されない。
【０１４８】
（Ｇ．オーバサンプリング）
図１７は、本実施の形態にかかるオーバサンプリングの一例を模式的に説明する図である。図１８は、図１７のオーバサンプリングにより格納されるデータの一例を模式的に示す図である。上述した実施の形態では、制御周期１０毎に、ＰＬＣ１００とサーバ６００との間で入力データ（送信）１８２と出力データ（受信）１８３を遣り取りするためのサーバ通信７３が実施された。これにより、サーバ６００は、制御周期１０毎に入力データ（送信）１８２を受信し、且つ出力データ（受信）１８３を送信する。
【０１４９】
本実施の形態では、サーバ通信７３で遣り取りする入力データ（送信）１８２および出力データ（受信）１８３は１回の制御周期１０のデータに限定されず、図１７に示すようにＮ（ただしＮ＞１）回分の制御周期１０のデータであってもよい。この場合は、ＩＯリフレッシュ処理７２によりＮ回分の制御周期１０の入力データ（送信）１８２が収集された後に、収集データがサーバ６００へ送信される。以下では、ＰＬＣ１００が、サーバ６００に１回の通信で送信するべきデータを、制御周期１０よりも長い周期で収集することを「オーバサンプリング」と称する場合がある。
【０１５０】
（ｇ１．オーバサンプリングの一例）
図１７を参照して、限定されないが、例えばＮ＝３である場合の「オーバサンプリング」を説明する。図１８では、バッファ１８０には、３回分の制御周期１０収集した入力データ（送信）１８２を格納するための領域と、サーバ６００から受信する３回分の制御周期１０の出力データ（受信）１８３を格納するための領域とが模式的に示される。
【０１５１】
ＰＬＣ１００は、ｎ番目、ｎ+１番目およびｎ+２番目の各制御周期１０においてＩＯリフレッシュ処理７２により収集した３回分の制御周期１０の入力データ（送信）１８２をバッファ１８０に格納する。ＰＬＣ１００は、（ｎ+２）番目の制御周期１０のサーバ通信７３により、バッファ１８０の３回分の制御周期１０の入力データ（送信）１８２を、サーバ６００に送信する（ステップＳ８１）。続く、ｎ+３番目、ｎ+４番目およびｎ+５番目の各制御周期１０においてもＩＯリフレッシュ処理７２により収集した３回分の制御周期１０の入力データ（送信）１８２がバッファ１８０に格納されて、ＰＬＣ１００は、（ｎ+５）番目の制御周期１０のサーバ通信７３により、バッファ１８０の３回分の制御周期１０の入力データ（送信）１８２を、サーバ６００に送信する（ステップＳ８１）。このように、ＰＬＣ１００は、３回分の制御周期１０毎に、当該３回分の制御周期１０において収集した入力データ（送信）１８２をサーバ６００へ送信する。
【０１５２】
一方、サーバ６００は、３回分の制御周期１０毎に、ＰＬＣ１００から当該３回分の制御周期１０の入力データ（送信）１８２を受信し、受信した各回の制御周期１０の入力データ（送信）１８２に基づく制御演算を実施する（ステップＳ８２）。これにより、サーバ６００は、ｎ+２番目、ｎ+３番目およびｎ+４番目の制御周期１０の各回において、制御演算を実行することで、３回分の制御周期１０に対応の出力データ（受信）１８３を算出し、ＰＬＣ１００に送信する。
【０１５３】
ＰＬＣ１００は、ｎ+４番目の制御周期１０において、サーバ６００から、ｎ番目、ｎ+１番目およびｎ+２番目の３回分の制御周期１０の入力データ（送信）１８２に基づく出力データ（受信）１８３を受信する。受信された出力データ（受信）１８３は、バッファ１８０に格納される。ＰＬＣ１００は、バッファ１８０の３回分の制御周期１０の出力データ（受信）１８３を、それぞれ、ｎ+５番目、ｎ+６番目およびｎ+７番目の制御周期１０の各回でフィールド装置９０に出力されるように、ＩＯリフレッシュ処理７２を実施する（ステップＳ８３）。
【０１５４】
このように、図１７によれば、ＰＬＣ１００は、ｎ番目（例えば、ｎ+２番目）の制御周期１０において、その前のＮ回分の制御周期（すなわち、ｎ番目、ｎ+１番目およびｎ+２番目の３回分の制御周期）１０の入力データ（送信）１８２を収集して、サーバ６００に送信すると、サーバ６００から、その後のＮ回分の制御周期（すなわち、ｎ+５番目、ｎ+６番目およびｎ+７番目の３回分の制御周期）１０の出力データ（受信）１８３を取得することができる。
【０１５５】
図１７のオーバサンプリングによれば、限定されないが、例えばＰＬＣ１００とフィールド装置９０間のネットワーク１１０の通信時間が長い、またはＰＬＣ１００とサーバ６００間のネットワーク１１の通信時間が長い場合に、利点をもたらす。つまり、このような通信時間が長い場合、待ち時間１４が長くなりＵＰＧ６９の制御演算を制御周期１０内に完了できない事態（異常）が頻繁となる。これに対して、オーバサンプリングが実施される場合は、各制御周期１０でサーバ通信７３を実施する必要はなくなり、各制御周期１０で待ち時間１４が生じるのを回避することができる。
【０１５６】
例えば、サーバ６００（またはＰＬＣ１００）はネットワーク１１に通信時間（または通信速度）を計測し、またＰＬＣ１００はネットワーク１１０の通信時間を計測し、計測した通信時間が閾値を超える場合は、サーバ６００およびＰＬＣ１００は、オーバサンプリングを実施するモードが設定される。
【０１５７】
（ｇ２．オーバサンプリングの他の例）
図１９は、本実施の形態にかかるオーバサンプリングの他の例を模式的に説明する図である。図１９では、ＰＬＣ１００は、各制御周期１０のサーバ通信７３において、前のＮ回分の制御周期１０で収集した入力データ（送信）１８２をサーバ６００に送信する（ステップＳ８４、Ｓ８５）。したがって、サーバ６００は、各制御周期１０において、前のＮ回分の制御周期１０の入力データ（送信）１８２を受信する。サーバ６００は、各制御周期１０において、ＰＬＣ１００から受信したＮ回分の制御周期１０の入力データ（送信）１８２に基き、制御演算を実施することにより、将来のＮ回分の制御周期１０の出力データ（受信）１８３を算出し、ＰＬＣ１００に送信する。例えば、サーバ６００はマルチプロセッシングにより、各制御周期１０で受信する入力データ（送信）１８２を用いたＵＰＧ６９を並列に実行することにより、制御周期１０毎に、将来のＮ回分の制御周期１０の出力データ（受信）１８３を生成する。
【０１５８】
図１９のオーバサンプリングによれば、ＰＬＣ１００は、同一の制御周期１０の入力データ（送信）１８２をサーバ６００に繰返し送信し、また、サーバ６００も、同一の制御周期１０のための出力データ（受信）１８３をＰＬＣ１００に繰返し送信する。したがって、例えばある制御周期１０において、ネットワーク１１またはネットワーク１１０を介したデータ通信にエラー（例えば、通信におけるデータ喪失等）が発生したとしても、上記の同一データ（入力データ（送信）１８２または出力データ（受信）１８３）の繰返し送信により、当該エラーに対処（エラーをカバー、例えばデータ補完）することができる。
【０１５９】
＜Ｈ．制御周期の出力データの予測＞
上記のオーバサンプリングとは異なり、１の制御周期１０の入力データ（送信）１８２に基づき将来の複数の制御周期１０の出力データ（受信）１８３が予測（算出）されてもよい。
【０１６０】
このケースでは、ＰＬＣ１００は、サーバ通信７３において、１の制御周期１０で収集した入力データ（送信）１８２をサーバ６００に送信し、サーバ６００は、ＰＬＣ１００から受信した当該１の制御周期１０の入力データ（送信）１８２に基き、制御演算を実施することにより、将来のＮ回分の制御周期１０の出力データ（受信）１８３を算出（予測）し、ＰＬＣ１００に送信する。このケースでも、上述のマルチプロセッシングによるＵＰＧ６９の並列により、制御周期１０毎に将来のＮ回分の制御周期１０の出力データ（受信）１８３を生成することができる。ＰＬＣ１００は、制御周期１０毎に、将来のＮ回分の制御周期１０の出力データ（受信）１８３を取得することができる。これにより、例えば、ある制御周期１０においてデータ通信エラーが発生しても、前の制御周期１０で受信済みの予測された出力データ（受信）１８３に基づく出力データ１６３の制御量、指令値をフィールド装置９０に出力することができる。したがって、このケースであっても、当該通信エラーに対処することができる。
【０１６１】
＜Ｉ．準備時間の確保＞
本実施の形態では、サーバ６００は、ＵＰＧ６９の制御演算処理とは異なる他の処理を実施するための他のプログラム６１１を実行することができる。他の処理は、限定されないが、例えばログデータの管理等を含む。サーバ６００では、制御周期１０内において、制御演算処理を実施する時間外において他のプログラム６１１を実行することにより他の処理を実施する。
【０１６２】
本実施の形態では、サーバ６００は、ＰＬＣ１００でＩＯリフレッシュ処理７２が実施される時間において、他の処理を実施する。また、サーバ６００は、ＩＯリフレッシュ処理７２が終了するとき、ＰＬＣ１００からの入力データ（送信）１８２を用いてＵＰＧ６９を実行するためのリソースを確保する準備処理を実施する。ここでは、この準備処理に必要な時間を「準備時間」と称する。なお、準備時間は、予め計測されて設定（格納）されていると想定する。
【０１６３】
図２０は、本実施の形態にかかる基本系における処理のフローチャートの変形例を示す図である。図２０のフローチャートは、図９のフローチャートの処理に、ステップＲ１、Ｒ１ａ、Ｒ２、Ｒ４およびＲ４ａの処理を追加したものである。ここでは、追加された処理を説明し、他の処理は図９に示した処理と同様であるので詳細は繰返さない。
【０１６４】
図２０を参照して、ＰＬＣ１００では、図９と同様の処理が実施される。サーバ６００では、制御周期１０の開始時に受付けるトリガ８に応答して、リザーブプログラム６１２により、「準備時間９」を確保できるか否かを判断する（ステップＲ１）。具体的には、リザーブプログラム６１２により、トリガ８を受付けた時間からＩＯリフレッシュ処理７２が終了するまでの所要時間のうちの残り時間が計測されて、計測された残り時間と上記の準備時間とが比較され、その比較結果に基き（残り時間＞準備時間）の条件が満たされるか否かが判断される。本実施の形態では、ＩＯリフレッシュ処理７２の所要時間は予め設定（格納）されている。
【０１６５】
リザーブプログラム６１２により、上記の条件が満たされると判断される（ステップＲ１でＮＯ）間は、すなわちＩＯリフレッシュ処理７２が完了するまで十分に余裕があるときは、他のプログラム６１１は実行可能である（ステップＲ１ａ）。一方、リザーブプログラム６１２により、上記の条件は満たされないと判断されると（ステップＲ１でＮＯ）、すなわちＩＯリフレッシュ処理７２が終了に近づいていると、サーバ６００は準備処理を実施する（ステップＲ２）。したがって、サーバ６００は、この準備処理を、準備時間９において実施することができる。
【０１６６】
このように、サーバ６００では、リザーブプログラム６１２は、トリガ８の受付け時間とＩＯリフレッシュ処理７２にかかる時間とに基づき入力データ（送信）１８２の受信開始時間（すなわちＩＯリフレッシュ処理７２の終了時間）を算出（予測）し、この予測される受信開始時間から遡る一定時間内（準備時間９）において、制御演算処理のための準備処理を実行する。
【０１６７】
準備処理では、具体的には、処理エンジン６１０は、他の処理の実施が禁止されるように他のプログラム６１１の実行を停止し、通信プログラム６４を起動する。これにより、確保された「準備時間」において、サーバ６００のリソースを、その後にＵＰＧ６９を実行するために確保しておくことが可能となる。
【０１６８】
起動された通信プログラム６４により、ＰＬＣ１００からの入力データ（送信）１８２を受信し、受信が完了するまで（ステップＲ３でＮＯ）、ステップＲ２が実施される。
【０１６９】
通信プログラム６４により、入力データ（送信）１８２の受信が完了したと判断されると（ステップＲ３でＹＥＳ）、処理エンジン６１０は、当該制御周期１０においてＵＰＧ６９を実行することが可能な時間が残っているか否かを判断する（ステップＲ４）。処理エンジン６１０は、この実行可能残り時間を、（Ａ-（Ｂ-Ｃ）-Ｄ−Ｅ）の演算式で算出する。なお、変数Ａは制御周期１０の時間、変数Ｂはサーバ６００が入力データ（送信）１８２を受信完了した時間、変数Ｃは制御周期１０の開始時間、変数Ｄはサーバ６００からＰＬＣ１００への出力データ（受信）１８３の通信時間、および変数ＥはＰＬＣ１００の周辺処理７４の所用時間を、それぞれ示す。なお、変数Ｄの通信時間は、予め実験等で算出した値を示す。
【０１７０】
処理エンジン６１０は、（実行可能残り時間＞ＵＰＧによる制御演算処理の時間）の条件が満たされるか否かを判断する（ステップＲ４）。なお、ＵＰＧによる制御演算処理の時間は、予め実験で算出した値を示す。
【０１７１】
処理エンジン６１０は、上記の条件が満たされると判断すると（ステップＲ４でＹＥＳ）ＵＰＧ６９を実行する（ステップＲ５）が、条件は満たされないと判断すると（ステップＲ４でＮＯ）、処理エンジン６１０は、サーバ６００の制御周期１０をＭ倍となるように変更する（ステップＲ４ａ）。例えば、処理エンジン６１０は、図１７に示すように、３回分（Ｍ＝３のケース）の制御周期１０の入力データ（送信）１８２に基づき、ＵＰＧ６９が１回実行されるように、サーバ６００の制御周期を長くする。サーバ６００は、制御周期１０をＭ倍に変更する場合は、ＰＬＣ１００に制御周期をＭ倍にする旨を通知する。ＰＬＣ１００は、受信した通知に応じて、例えば、次の制御周期１０から、Ｍ回分（ただしＭ＞１）の制御周期１０の入力データ（送信）１８２を収集し、サーバ６００に送信する。この値Ｍは、算出された実行可能残り時間に基き決定されてもよい。なお、図２０において、ステップＲ４およびＲ４ａの処理はオプションとして備えることができる。
【０１７２】
このように、サーバ６００は、ＰＬＣ１００から入力データ（送信）１８２が到着する時間を予測できるので、予測到着時間から遡る一定時間である準備時間において、他の処理を実行禁止して、受信する入力データ（送信）１８２を用いてＵＰＧ６９を実行するためのリソースを準備しておくことができる。サーバ６００は、ＵＰＧ６９を実行するために、「準備時間」を確保するスケジューリングを実施する。したがって、サーバ６００でＵＰＧＰ６９が実行されるとしても、ＰＬＣ１００が、各制御周期１０内で出力データ（受信）１８３を確実に取得できる可能性を高めることができる。
【０１７３】
＜Ｊ．多重系の処理の変形例＞
図２１は、本実施の形態にかかる多重化系の処理のフローチャートの変形例を示す図である。上記に述べた図１２〜図１４では、サーバ６００は、「ＵＰＧ１」および「ＵＰＧ２」の両方のＵＰＧ６９のための入力データ（送信）１８２を受信完了したときに、ＵＰＧ６９（「ＵＰＧ１」および「ＵＰＧ２」）を実行開始した。これに対して、この変形例に示すように、各ＵＰＧ６９についての入力データ（送信）１８２が受信完了した時点で、当該ＵＰＧ６９を実行開始することもできる。例えば、「ＵＰＧ１」と「ＵＰＧ２」が、互いにデータを遣り取りしないよう構成されている場合は、サーバ６００は、「ＵＰＧ１」と「ＵＰＧ２」を、それぞれ、独立して実行することができる。
【０１７４】
図２１では、ＰＬＣ１００ＡとＰＬＣ１００Ｂの処理は、図１３に示された処理と同様であるので説明は繰返さない。サーバ６００では、ＰＬＣ１００Ａの制御演算処理を実施するための「ＵＰＧ１」と、ＰＬＣ１００Ｂの制御演算処理を実施するための「ＵＰＧ２」とが並列に実行される。なお、図２１の処理でも、図２０に示す「準備時間」を確保する処理または制御周期１０を長くする処理が実施されてもよい。
【０１７５】
まず、「ＵＰＧ１」を実行するために、処理エンジン６１０は、通信プログラム６４により、ＰＬＣ１００Ａから入力データ（送信）１８２を受信し（ステップＲ９）、処理エンジン６１０は、「ＵＰＧ１」の変数のための入力データ（送信）１８２が受信完了しているかを判定する（ステップＲ１１）。具体的には、処理エンジン６１０は、「ＵＰＧ１」から入力変数を抽出し、抽出した全ての入力変数に対応するデータを受信完了しているかを判定する。処理エンジン６１０は、入力データ（送信）１８２を受信完了していないと判定すると（ステップＲ１１でＮＯ）、ステップＲ９を繰返す。
【０１７６】
一方、処理エンジン６１０は、「ＵＰＧ１」のための入力データ（送信）１８２を受信完了したと判定すると（ステップＲ１１でＹＥＳ）、「ＵＰＧ１」を実行する（ステップＲ１３）。処理エンジン６１０は、ＰＬＣ１００Ａに必要な出力データ（受信）１８３が算出されたか否かを判定する（ステップＲ１５）。具体的には、処理エンジン６１０は、「ＵＰＧ１」から全ての出力変数を抽出し、抽出された全ての出力変数に対応する値が「ＵＰＧ１」の実行により算出されたか否かを判定する。処理エンジン６１０は、ＰＬＣ１００Ａに必要な出力データ（受信）１８３は算出されていないと判定すると（ステップＲ１５でＮＯ）、「ＵＰＧ１」の実行が継続する（ステップＲ１３）。
【０１７７】
一方、処理エンジン６１０は、ＰＬＣ１００Ａに必要な出力データ（受信）１８３が算出されたと判定すると（ステップＲ１５でＹＥＳ）、算出された出力データ（受信）１８３を、ＰＬＣ１００Ａに送信する（ステップＲ１７）。
【０１７８】
同様に、ＰＬＣ１００Ｂの「ＵＰＧ２」を実行するために、処理エンジン６１０は、ステップＲ１９、Ｒ２１、Ｒ２３、Ｒ２５およびＲ２７の処理を実施する。これらの処理は、ステップＲ９、Ｒ１１、Ｒ１３、Ｒ１５およびＲ１７の処理と同様であるので説明は繰返さない。
【０１７９】
図２１の処理によれば、「ＵＰＧ１」および「ＵＰＧ２」は、他方のプログラムのための入力データ（送信）１８２の受信完了を待つことなく、自己の入力データ（送信）１８２を受信完了した時点で実行開始される。この場合は、図１２に示す待ち時間１４をなくすことができるから、サーバ６００は、ＰＬＣ１００の制御演算処理を制御周期１０内で完了させることが可能となる。
【０１８０】
（ｊ１．モードの設定）
本実施の形態は、制御システム１は、ＰＬＣ１００Ａの「ＵＰＧ１」とＰＬＣ１００Ｂの「ＵＰＧ２」の実行に関して、図１２のように両ＵＰＧの入力データ（送信）１８２が受信完了したときに両方のＵＰＧを実行開始するモード（第１モードという）と、図１０のように、「ＵＰＧ１」と「ＵＰＧ２」は、それぞれ、対応のＰＬＣ１００から入力データ（送信）１８２が受信完了したときには実行を開始するモード（第２モードという）を備える。サーバ６００は、サポート装置５００を介した外部指示（ユーザ指示）に従い第１モードおよび第２モードの一方を実施するように設定される。
【０１８１】
具体的には、例えば、「ＵＰＧ１」はＰＬＣ１００ＡとＰＬＣ１００Ｂからの入力データ（送信）１８２を使用するのであれば「第１モード」がサーバ６００に設定されて、「ＵＰＧ１」はＰＬＣ１００Ａからの入力データ（送信）１８２のみを使用するのであれば「第２モード」がサーバ６００に設定される。ユーザは、例えば、サポート装置５００が提供するＵＩを介して「第１モード」または「第２モード」を設定することができる。モードの設定に関連して、サポート装置５００は、「ＵＰＧ１」が使用する変数名の一覧と、「ＵＰＧ２」が使用する変数名の一覧とを比較する。サポート装置５００は、比較の結果に基き、一覧に両者に共通する変数名が有ると判定するときは、選択肢として「第１モード」をユーザに提示し、一覧に両者に共通する変数名は無いと判定するときは選択肢として「第１モード」または「第２モード」を提示する。ユーザは、上記の外部指示をサーバ６００に設定するために、サポート装置５００を操作する。
【０１８２】
＜Ｋ．利点＞
本実施の形態では、ＵＰＧ６９はＰＬＣ１００ではなくサーバ６００において実行されるので、ＰＬＣ１００がＵＰＧ６９を実行する場合に比較して、ＰＬＣ１００においてＵＰＧ６９を実行するためのリソース（メモリ）を節約できる。また、サーバ６００にＵＰＧ６９を実行する環境が備えられるので、ＰＬＣ１００のプロセッサは、ＵＰＧ６９を実行可能なスペックを要求されない。したがって、ＰＬＣ１００にかかるコストを低くしながら、ＰＬＣ１００は自己のプロセッサのスペックを超える制御演算処理の精度（処理量、処理速度等）を得ることができる。
【０１８３】
また、ＵＰＧ６９の実行環境はサーバ６００において構成されるので、例えば各ＰＬＣ１００に対応のＵＰＧ６９の協調実行（互いにデータを遣り取りする、または互いに同期をとる等）を、ＰＬＣ１００同士のデータ通信を必要とすることなく、実現することができる。
【０１８４】
また、サーバ６００とＰＬＣ１００とは互いに時刻同期されて、共有される時間である、例えば制御周期内でＩＯリフレッシュ処理７２およびＵＰＧ６９の制御演算処理が実施されるように、自動的に制御周期１０を長くする処理（ステップＲ４ａ）が実行される。これにより、制御周期内でＩＯリフレッシュ処理７２およびＵＰＧ６９の制御演算処理が完了することが保証され得る。
【０１８５】
また、制御システム１では、サーバ６００が、各ＰＬＣ１００と入力データ（送信）１８２および出力データ（受信）１８３を遣り取りすることで、ＵＰＧ６９は、それぞれ、複数のＰＬＣ１００に自動的に対応付けされる。
【０１８６】
＜Ｌ．付記＞
本開示は、以下のような技術思想を含む。
【０１８７】
（構成１）
１以上の制御装置（１００）および情報処理装置（６００）を備える制御システム（１）であって、
前記情報処理装置と前記１以上の制御装置は、通信可能に接続されて互いに時刻同期され、
前記情報処理装置は、
各前記１以上の制御装置から受信するデータ（１８２）に基づく制御演算に従う制御データ（１８３）を算出する制御演算処理（６９）を実行する処理部（６０３）を、含み、
前記各制御装置は、
フィールド装置（９０）からの入来データを前記情報処理装置へ転送し、前記情報処理装置から受信する前記制御データを前記フィールド装置に出力する入出力処理（７２）を実行する制御部（１０２）を、含み、
前記制御演算処理および前記入出力処理は、前記時刻同期に基づく時間であって前記各制御装置と前記情報処理装置との間で共有される時間（１０）内で実行される、制御システム。
【０１８８】
（構成２）
前記処理部が実行する処理は、さらに、
前記共有される時間内で、前記制御演算処理を実行するための時間が不足するとき、前記共有される時間を長くする処理（Ｒ４ａ）を含む、構成１に記載の制御システム。
【０１８９】
（構成３）
前記共有される時間は制御周期（１０）を含み、
前記入出力処理は、
制御周期において、当該制御周期以前の複数の制御周期に対応する前記入来データを前記情報処理装置へ転送し、前記情報処理装置から受信する前記複数の制御周期に対応する前記制御データを前記フィールド装置に出力する処理（Ｓ８１、Ｓ８３）を含む、構成１または２に記載の制御システム。
【０１９０】
（構成４）
前記入出力処理は、
制御周期において、前記情報処理装置から前記複数の制御周期に対応する制御データを受信したとき、当該複数の制御周期に対応する制御データを、それぞれ、当該制御周期よりも後の複数の制御周期において、前記フィールド装置に出力する処理（Ｓ８３）を含む、構成３に記載の制御システム。
【０１９１】
（構成５）
前記共有される時間は制御周期（１０）を含み、
前記入出力処理は、
１の制御周期に対応する前記入来データを前記情報処理装置へ転送し、前記情報処理装置から受信する当該入来データに基づく複数の制御周期に対応する制御データを、前記フィールド装置に出力する処理を含む、構成１または２に記載の制御システム。
【０１９２】
（構成６）
前記情報処理装置と前記各制御装置は、前記共有される時間内で受付ける共通のトリガ（８）に応じて処理を開始し、
前記情報処理装置は、
前記トリガの受付け時間と前記入出力処理にかかる時間とに基づき予測される前記データの受信開始時間から遡る一定時間内において、前記制御演算処理のための準備処理（Ｒ２）を実行する、構成１から５のいずれか１に記載の制御システム。
【０１９３】
（構成７）
前記準備処理は、前記制御演算処理を除く情報処理の実行を禁止する処理を含む、構成６に記載の制御システム。
【０１９４】
（構成８）
前記情報処理装置に複数の前記制御装置が通信可能に接続されて、
前記制御演算処理は、それぞれが各前記複数の制御装置に対応する複数の制御演算処理を含み、
前記処理部は、
前記複数の制御装置からデータを受信したとき前記複数の制御演算処理を実行開始する第１モード、または、前記複数の制御装置のうちの１つからデータを受信したとき当該１の制御装置に対応する前記制御演算を実行開始する第２モードを備える、構成１から７のいずれか１に記載の制御システム。
【０１９５】
（構成９）
前記処理部は、前記第１モードおよび前記第２モードを備える場合、外部指示に従い前記第１モードおよび前記第２モードの一方を実施する、構成８に記載の制御システム。
【０１９６】
（構成１０）
複数の前記フィールド装置がフィールドネットワーク（１１０）を介して前記制御装置に接続され、
前記制御部は、
前記入出力処理において、前記フィールドネットワークを介した、前記複数のフィールド装置から入来データを収集し、および前記情報処理装置から受信する前記制御データを前記複数のフィールド装置へ転送する、構成１から９のいずれか１に記載の制御システム。
【０１９７】
（構成１１）
前記情報処理装置に複数の前記制御装置が通信可能に接続されて、
前記複数の制御装置は稼働系として動作する制御装置と、待機系として動作する制御装置とを含み、
前記待機系の制御装置は、所定タイミングに応じて稼働を開始し、
前記情報処理装置は、前記所定タイミングに応じて、前記稼働系の制御装置とのデータ通信を、前記待機系との制御装置とのデータ通信に切替える、構成１から９のいずれか１に記載の制御システム。
【０１９８】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１９９】
１  制御システム、７，８  トリガ、９  準備時間、１０  制御周期、１１，１１０  ネットワーク、１２，１３  データ格納時間、１４  待ち時間、１５  時間、６１  受信用データ領域、６２  送信用データ領域、６３  スケジューラ、６４  通信プログラム、６５，１７９  監視プログラム、６６，１７８  異常処理プログラム、１５１  システムプログラム、６７，１７７  時刻同期プログラム、６８  サーバプログラム、７２  リフレッシュ処理、７３  サーバ通信、７４  周辺処理、９０，９０Ａ〜９０Ｉ  フィールド装置、９１Ａ〜９１Ｉ，１０１Ａ，１０１Ｂ，１０１Ｃ，１０２Ａ，１０２Ｂ，１０２Ｃ，６０１  タイマ、１５０  制御エンジン、１５２  制御プログラム、１５４  周辺処理プログラム、１５６  ＩＯリフレッシュ、１５８  転送プログラム、１６０  変数管理プログラム、１６１  デバイス変数、１６２  入力データ、１６３  出力データ、１７０  スケジューラプログラム、１７２  入力プログラム、１７４  出力プログラム、１８０  バッファ、１８５  指令信号、１９４  ゲートウェイプログラム、２００  切替器、５００  サポート装置、６００  サーバ、６１０  処理エンジン、６１２  リザーブプログラム。
【図１】
2020149402.tif 000003
【図２】
2020149402.tif 000004
【図３】
2020149402.tif 000005
【図４】
2020149402.tif 000006
【図５】
2020149402.tif 000007
【図６】
2020149402.tif 000008
【図７】
2020149402.tif 000009
【図８】
2020149402.tif 000010
【図９】
2020149402.tif 000011
【図１０】
2020149402.tif 000012
【図１１】
2020149402.tif 000013
【図１２】
2020149402.tif 000014
【図１３】
2020149402.tif 000015
【図１４】
2020149402.tif 000016
【図１５】
2020149402.tif 000017
【図１６】
2020149402.tif 000018
【図１７】
2020149402.tif 000019
【図１８】
2020149402.tif 000020
【図１９】
2020149402.tif 000021
【図２０】
2020149402.tif 000022
【図２１】
2020149402.tif 000023