(57)【要約】【課題】制御装置と別の制御装置とを組み合わせた制御システムであっても制御アプリケーション同士を連係させることが可能な構成を提供する。【解決手段】第１の制御装置は、第１の周期毎に第１の制御指令を出力する第１のプログラム実行部と、第２の周期毎に第１のアプリケーションプログラムの少なくとも一部を解釈して内部コマンドを逐次生成する解釈部と、解釈部により生成された内部コマンドに従って、第１の周期毎に第２の制御指令を出力する指令演算部と、解釈部による解釈処理を管理する調停部とを含む。調停部は、前記第２の制御装置からのタイミングの通知に応答して、前記解釈部により生成される内部コマンドに従う第２の制御指令の出力タイミングを調整する。【選択図】図２
2019067046.tif 000002
【特許請求の範囲】
【請求項１】
第１の制御装置と、
前記第１の制御装置とネットワーク接続された第２の制御装置と、
前記第１の制御装置からの制御指令に従って動作する１または複数のアクチュエータとを備え、
前記第１の制御装置および前記第２の制御装置は、互いに時刻同期されたタイマを有しており、
前記第１の制御装置は、
第１の周期毎にシーケンスプログラムを実行して第１の制御指令を出力する第１のプログラム実行部と、
前記第１の周期と同じまたは前記第１の周期より長い第２の周期毎に第１のアプリケーションプログラムの少なくとも一部を解釈して内部コマンドを逐次生成する解釈部と、
前記解釈部により生成された内部コマンドに従って、前記第１の周期毎に、前記１または複数のアクチュエータのうち少なくとも一部に対する第２の制御指令を出力する指令演算部と、
前記解釈部による解釈処理を管理する調停部とを備え、
前記第２の制御装置は、
第２のアプリケーションプログラムを逐次解釈して対象の可動機械に対する第３の制御指令を出力する第２のプログラム実行部と、
前記第３の制御指令を出力するタイミングを前記第１の制御装置へ事前に通知するタイミング管理部とを備え、
前記調停部は、前記第２の制御装置からのタイミングの通知に応答して、前記解釈部により生成される内部コマンドに従う第２の制御指令の出力タイミングを調整する、制御システム。
【請求項２】
前記調停部は、前記第２の制御装置から通知されるタイミングと、前記第１の制御装置のタイマが示す値とに基づいて、前記第２の制御指令の出力タイミングを決定する、請求項１に記載の制御システム。
【請求項３】
前記第２の制御装置から通知されるタイミングは、前記第２の制御装置のタイマによって管理される値に基づくものである、請求項２に記載の制御システム。
【請求項４】
前記調停部は、前記第２の制御指令の出力タイミングの到来前に、前記解釈部に前記第２の制御指令の生成を指示する、請求項２または３に記載の制御システム。
【請求項５】
前記調停部は、前記第２の制御指令の生成が前記第２の制御指令の出力タイミングに間に合わないと判断されると、前記第２の制御指令の生成に係るタスクの優先度を上げる、請求項４に記載の制御システム。
【請求項６】
前記調停部は、前記第２の制御装置から通知されるタイミングと同時に、前記第２の制御指令の出力が開始されるように、出力タイミングを調整する、請求項１〜５のいずれか１項に記載の制御システム。
【請求項７】
前記調停部は、前記第２の制御装置から通知されるタイミングから予め定められた時間だけずれたタイミングで、前記第２の制御指令の出力が開始されるように、出力タイミングを調整する、請求項１〜５のいずれか１項に記載の制御システム。
【請求項８】
制御アプリケーションとネットワーク接続された制御装置であって、
第１の周期毎にシーケンスプログラムを実行して第１の制御指令を出力する第１のプログラム実行部と、
前記第１の周期と同じまたは前記第１の周期より長い第２の周期毎にアプリケーションプログラムの少なくとも一部を解釈して内部コマンドを逐次生成する解釈部と、
前記解釈部により生成された内部コマンドに従って、前記第１の周期毎に、１または複数のアクチュエータのうち少なくとも一部に対する第２の制御指令を出力する指令演算部と、
前記制御アプリケーションからの制御指令を出力するタイミングの通知に基づいて、前記解釈部による解釈処理を管理する調停部とを備え、
前記調停部は、前記制御アプリケーションからのタイミングの通知に応答して、前記解釈部により生成される内部コマンドに従う第２の制御指令の出力タイミングを調整する、制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御対象を制御する制御システムおよびそれを構成する制御装置に関する。
【背景技術】
【０００２】
生産現場においては、様々なＦＡ（Factory Automation）技術が広く普及している。このようなＦＡシステムは、ＰＬＣ（プログラマブルコントローラ）といった制御装置だけではなく、ＣＮＣ（Computer Numerical Control：コンピュータ数値制御）およびロボットなどの高度な動作が可能な各種装置などを含む。このようなＦＡシステムはますます大規模化する傾向にある。
【０００３】
例えば、特開２００１−０２７９０４号公報（特許文献１）は、複数のＣＮＣ装置を連結させることで、制御する軸数を増大させ、かつ、複数のＣＮＣ装置間の同期を取ることができる数値制御システムを開示する。この数値制御システムにおいて、マスタユニットおよび１または複数のスレーブユニットがケーブルを介して接続されている。マスタユニットおよびスレーブユニットの各々は、ラダープログラムを実行するＰＭＣ用プロセッサおよびＣＮＣ用プロセッサを有している。
【０００４】
また、特開２０１６−０９２５４４号公報（特許文献２）は、マスタ制御装置により第１制御対象物を制御するとともに、当該マスタ制御装置とネットワークを介して接続されるスレーブ制御装置により第１制御対象物と異なる第２制御対象物を制御する制御システムを開示する。この制御システムは、マスタ制御装置およびスレーブ制御装置を含む。マスタ制御装置およびスレーブ制御装置の各々は、演算処理部を有するコントローラとは別に、別の演算処理部を有するロボットコントローラを含んでいる。
【０００５】
近年のＩＣＴ（Information and Communication Technology）の進歩に伴って、制御装置の処理能力も飛躍的に向上しつつある。従来技術においては複数の専用装置を用いて実現されていたＦＡシステムをより少ない数の制御装置で実現したいというニーズも生じている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００１−０２７９０４号公報
【特許文献２】特開２０１６−０９２５４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述した特許文献１および特許文献２に開示される構成においては、複数のプロセッサまたは演算処理部が分散配置された構成が採用されており、それぞれのプロセッサまたは演算処理部の間で同期処理を実現するために構成が冗長になり得る。
【０００８】
一方で、実行形式の異なる複数種類のプログラム（例えば、ラダープログラム、ＣＮＣプログラム、ロボットプログラムなど）のすべてを単一の制御装置で実現できるとは限らず、一部の専用装置での処理を制御装置に取込むとともに、残りの専用装置はそのままといった事態も生じ得る。本発明は、このような、制御装置と別の制御装置とを組み合わせた制御システムであっても、ＣＮＣ工作機械やロボットを連係させることが可能な構成を提供することを一つの目的としている。
【課題を解決するための手段】
【０００９】
本開示の一例に従う制御システムは、第１の制御装置と、第１の制御装置とネットワーク接続された第２の制御装置と、第１の制御装置からの制御指令に従って動作する１または複数のアクチュエータとを含む。第１の制御装置および第２の制御装置は、互いに時刻同期されたタイマを有している。第１の制御装置は、第１の周期毎にシーケンスプログラムを実行して第１の制御指令を出力する第１のプログラム実行部と、第１の周期と同じまたは第１の周期より長い第２の周期毎に第１のアプリケーションプログラムの少なくとも一部を解釈して内部コマンドを逐次生成する解釈部と、解釈部により生成された内部コマンドに従って、第１の周期毎に、１または複数のアクチュエータのうち少なくとも一部に対する第２の制御指令を出力する指令演算部と、解釈部による解釈処理を管理する調停部とを含む。第２の制御装置は、第２のアプリケーションプログラムを逐次解釈して対象の可動機械に対する第３の制御指令を出力する第２のプログラム実行部と、第３の制御指令を出力するタイミングを第１の制御装置へ事前に通知するタイミング管理部とを含む。調停部は、第２の制御装置からのタイミングの通知に応答して、解釈部により生成される内部コマンドに従う第２の制御指令の出力タイミングを調整する。
【００１０】
この開示によれば、第１の制御装置は、第２の制御装置から通知されるタイミングに基づいて、第２の制御指令の出力タイミングを調整するので、第１の制御装置により制御される制御アプリケーションと、第２の制御装置により制御される制御アプリケーションとを連係動作させることができる。
【００１１】
上述の開示において、調停部は、第２の制御装置から通知されるタイミングと、第１の制御装置のタイマが示す値とに基づいて、第２の制御指令の出力タイミングを決定する。
【００１２】
この開示によれば、互いに時刻同期されたタイマが示す値を用いるので、高精度に連係動作を実現できる。
【００１３】
上述の開示において、第２の制御装置から通知されるタイミングは、第２の制御装置のタイマによって管理される値に基づくものである。
【００１４】
この開示によれば、タイマが示す値を用いてタイミングを規定することで、より精度の高いタイミング調整を実現できる。
【００１５】
上述の開示において、
調停部は、第２の制御指令の出力タイミングの到来前に、解釈部に第２の制御指令の生成を指示する。
【００１６】
この開示によれば、第２の制御装置から通知されたタイミングと同時に第２の制御指令を出力することができ、さらに、場合によっては、第２の制御装置から通知されたタイミングより前に第２の制御指令を出力することもできる。
【００１７】
上述の開示において、調停部は、第２の制御指令の生成が第２の制御指令の出力タイミングに間に合わないと判断されると、第２の制御指令の生成に係るタスクの優先度を上げる。
【００１８】
この開示によれば、少なくとも、第２の制御装置から通知されたタイミングと同時に第２の制御指令を出力することを保証できる。
【００１９】
上述の開示において、調停部は、第２の制御装置から通知されるタイミングと同時に、第２の制御指令の出力が開始されるように、出力タイミングを調整する。
【００２０】
この開示によれば、第１の制御装置により制御される制御アプリケーションと、第２の制御装置により制御される制御アプリケーションとを同期動作させることができる。
【００２１】
上述の開示において、調停部は、第２の制御装置から通知されるタイミングから予め定められた時間だけずれたタイミングで、第２の制御指令の出力が開始されるように、出力タイミングを調整する。
【００２２】
この開示によれば、一定の時間的なずれをもって、第１の制御装置により制御される制御アプリケーションと、第２の制御装置により制御される制御アプリケーションとを連係動作せることができる。
【００２３】
本開示の別一例に従えば、制御アプリケーションとネットワーク接続された制御装置が提供される。制御装置は、第１の周期毎にシーケンスプログラムを実行して第１の制御指令を出力する第１のプログラム実行部と、第１の周期と同じまたは第１の周期より長い第２の周期毎にアプリケーションプログラムの少なくとも一部を解釈して内部コマンドを逐次生成する解釈部と、解釈部により生成された内部コマンドに従って、第１の周期毎に、１または複数のアクチュエータのうち少なくとも一部に対する第２の制御指令を出力する指令演算部と、制御アプリケーションからの制御指令を出力するタイミングの通知に基づいて、解釈部による解釈処理を管理する調停部とを含む。調停部は、制御アプリケーションからのタイミングの通知に応答して、解釈部により生成される内部コマンドに従う第２の制御指令の出力タイミングを調整する。
【００２４】
この開示によれば、外部装置から通知されるタイミングに基づいて、第２の制御指令の出力タイミングを調整するので、制御装置により制御される制御アプリケーションと、当該外部装置により制御される制御アプリケーションとを連係動作させることができる。
【発明の効果】
【００２５】
本発明によれば、制御装置と別の制御装置とを組み合わせた制御システムであっても、ＣＮＣ工作機械やロボットを連係させることが可能な構成を提供できる。
【図面の簡単な説明】
【００２６】
【図１】本実施の形態に係る制御システムの全体構成例を示す模式図である。
【図２】本実施の形態に係る制御システムにおける処理の概要を説明するためのタイムチャートである。
【図３】本実施の形態に係る制御装置のハードウェア構成例を示すブロック図である。
【図４】本実施の形態に係る制御装置の機能構成例を示すブロック図である。
【図５】本実施の形態に係る制御装置における内部コマンドの生成処理を説明するための模式図である。
【図６】本実施の形態に係る制御装置におけるタスクの実行スケジュールの一例を示すタイムチャートである。
【図７】本実施の形態に係る制御システムに含まれるＣＮＣ工作機械のハードウェア構成例を示すブロック図である。
【図８】本実施の形態に係る制御システムに含まれるＣＮＣ工作機械の機能構成例を示すブロック図である。
【図９】本実施の形態に係る制御システムにおける動作予定時刻の通知を利用した連係動作に係るシーケンス図である。
【図１０】本実施の形態に係る制御システムにおける動作予定時刻の通知を利用した連係動作を実現するためのプログラム例である。
【図１１】本実施の形態に係る制御装置における優先度変更の効果を説明するための模式図である。
【図１２】本実施の形態に係る制御装置における処理手順の一例を示すフローチャートである。
【図１３】本実施の形態に係る制御システムにおける動作予定時刻の通知を利用した連係動作の一例を示すタイムチャートである。
【発明を実施するための形態】
【００２７】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００２８】
＜Ａ．適用例＞
まず、図１および図２を参照して、本発明が適用される場面の一例について説明する。
【００２９】
図１は、本実施の形態に係る制御システム１の全体構成例を示す模式図である。図１には、本実施の形態に係る制御装置１００を中心とした制御システム１を示す。
【００３０】
図１を参照して、制御装置１００は、各種の設備や装置などの制御対象を制御する産業用コントローラに相当する。制御装置１００は、後述するような制御演算を実行する一種のコンピュータであり、典型的には、ＰＬＣ（プログラマブルコントローラ）として具現化されてもよい。制御装置１００は、フィールドネットワーク２を介して各種のフィールド機器５００と接続されてもよい。制御装置１００は、フィールドネットワーク２などを介して、１または複数のフィールド機器５００との間でデータを遣り取りする。一般的に「フィールドネットワーク」は、「フィールドバス」とも称されるが、説明の簡素化のため、以下の説明においては、「フィールドネットワーク」と総称する。すなわち、本明細書の「フィールドネットワーク」は、狭義の「フィールドネットワーク」に加えて「フィールドバス」を含み得る概念である。
【００３１】
フィールドネットワーク２は、データの到達時間が保証される、定周期通信を行うバスまたはネットワークを採用することが好ましい。このような定周期通信を行うバスまたはネットワークとしては、ＥｔｈｅｒＣＡＴ（登録商標）、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）、ＤｅｖｉｃｅＮｅｔ（登録商標）、ＣｏｍｐｏＮｅｔ（登録商標）などが知られている。
【００３２】
フィールドネットワーク２には、任意のフィールド機器５００を接続することができる。フィールド機器５００は、製造装置や生産ラインなど（以下、「フィールド」とも総称する。）に対して何らかの物理的な作用を与えるアクチュエータ、および、フィールドとの間で情報を遣り取りする入出力装置などを含む。
【００３３】
フィールドネットワーク２として、ＥｔｈｅｒＣＡＴ（登録商標）を採用した場合には、フィールドネットワーク２に接続されるノードのうち少なくとも１つが「マスタ」として機能し、その他のノードが「スレーブ」として機能する。「マスタ」として機能するノードは、フィールドネットワーク２におけるフレームの転送タイミングなどを管理する。
【００３４】
図１に示す例においては、制御装置１００が「マスタ」として機能し、その他のフィールド機器５００が「スレーブ」として機能する。マスタ−スレーブ型の構成を採用するフィールドネットワーク２においては、ノード間で互いに時刻同期されたタイマＴＭＲを有しており、各ノードが有するタイマＴＭＲが示す時刻（実施的には、カウンタ値）に基づいて、フレームの転送タイミングなどが決定される。
【００３５】
図１に示す構成においては、フィールドネットワーク２に接続されるフィールド機器５００は、リモートＩ／Ｏ（Input/Output）装置５１０と、ロボットコントローラ５２２，５２６と、ＣＮＣ工作機械５３０と、サーボドライバ５４０とを含む。
【００３６】
ＣＮＣ工作機械５３０は、後述するように、自身で制御指令を生成する機構を有しており、フィールドネットワーク２を介して受信されるデータに基づいて動作する。すなわち、ＣＮＣ工作機械５３０は、一種の制御装置を内蔵しており、その制御装置から出力される制御指令に従って処理を実行する。
【００３７】
一方、ロボットコントローラ５２２，５２６およびサーボドライバ５４０は、制御装置１００からの制御指令に従って動作する１または複数のアクチュエータに相当する。サーボドライバ５４０に対する制御指令は、制御装置１００においてサイクリック実行されるシーケンスプログラムに含まれるモーション命令に従って生成される。一方、ロボットコントローラ５２２，５２６に対する制御指令は、制御装置１００において逐次実行されるアプリケーションプログラムおよびサイクリック実行される制御指令演算処理によって実現される。
【００３８】
本実施の形態に係る制御装置１００は、制御周期（第１の周期）毎にシーケンスプログラムを実行して制御指令を出力するプログラム実行部（一例として、シーケンスプログラム実行部１５２（詳細については後述する））を有している。
【００３９】
本明細書において、シーケンスプログラムは、実行毎に全体がスキャンされて、実行毎に制御指令を出力できるプログラムを包含する概念である。シーケンスプログラムは、国際電気標準会議（International Electrotechnical Commission：ＩＥＣ）によって規定された国際規格ＩＥＣ６１１３１−３に従って記述された１または複数の命令からなるプログラムを包含する。シーケンスプログラムには、シーケンス命令および／またはモーション命令を含み得る。なお、シーケンスプログラムとしては、国際規格ＩＥＣ６１１３１−３に従って記述された命令に限らず、ＰＬＣ（プログラマブルコントローラ）の製造メーカまたはベンダーなどが独自に規定した命令を含むようにしてもよい。このように、シーケンスプログラムは、即時性および高速性が要求される制御に好適である。
【００４０】
基本的には、シーケンスプログラムは、制御対象やアプリケーションに応じて、ユーザによって任意に作成される。
【００４１】
本明細書において、「シーケンス命令」は、入力値、出力値、内部値などを演算する１または複数の論理回路により記述される１または複数の命令を包含する用語である。１回の制御周期において、「シーケンス命令」は、先頭から最終まで実行され、次の制御周期において、「シーケンス命令」は、先頭から最終までが再度実行される。
【００４２】
本明細書において、「モーション命令」は、サーボモータなどのアクチュエータに対して、位置、速度、加速度、加加速度、角度、角速度、角加速度、角加加速度などの数値を制御指令として演算するための１または複数の命令を包含する用語である。「モーション命令」についても、１回の制御周期において、ファンクションブロックや数値演算式などにより記述されるモーション命令のプログラム（モーションプログラム）の先頭から最終までが実行される。
【００４３】
制御周期毎にシーケンスプログラムを実行することで出力される制御指令は、典型的には、シーケンス命令に従って決定されるデジタル出力のオン／オフ、ならびに、モーション命令に従って演算されるアナログ出力を含む。
【００４４】
また、本実施の形態に係る制御装置１００は、制御周期（第１の周期）と同じまたは制御周期より長いアプリケーション実行周期（第２の周期）毎に１または複数のアプリケーションプログラムの少なくとも一部を解釈して内部コマンドを逐次生成する解釈部（一例として、アプリケーションプログラム解釈部１６０（詳細については後述する））を有している。
【００４５】
本明細書において、「アプリケーションプログラム」は、逐次実行される任意のプログラムを包含する。典型的には、「アプリケーションプログラム」は、１行ずつ逐次実行して実行するインタプリタ方式で実行可能な任意の言語で記述されたプログラムを包含する。以下の説明においては、このような「アプリケーションプログラム」の一例として、ＣＮＣ（Computer Numerical Control：コンピュータ数値制御）における挙動を記述するプログラム（以下、「ＮＣプログラム」とも称する。）がある。また、「アプリケーションプログラム」の別の一例として、ロボットを制御するためのプログラムがある。
【００４６】
ＮＣプログラムは、予め定められた言語に従って記述される。一例として、ＮＣプログラムは「Ｇ言語」を用いて記述され、ロボットを制御するためのプログラムは、専用のロボット言語を用いて記述されることが多い。
【００４７】
以下の説明において、例えば、ＣＮＣ（Computer Numerical Control：コンピュータ数値制御）および／またはおよびロボットを用いた、特定の加工または動作を行う装置または機械ならびにそれらの制御を包含して、「制御アプリケーション」と称することもある。
【００４８】
本明細書において、「内部コマンド」は、アプリケーションプログラムに記述されたコマンドに応じた処理を実現するための、アプリケーションプログラムとは別表現の命令を包含する。「内部コマンド」は、制御周期毎に制御指令を算出できれば、どのような命令であってもよい。上述したようなアプリケーションプログラムは、逐次実行されるため、本来的に一定周期毎に制御指令を出力する処理には不向きである。そのため、制御周期毎の制御指令の出力に適した内部コマンドが生成される。典型的には、「内部コマンド」は、時間を入力変数とする１または複数の関数、あるいは、時間を引数とする１または複数の命令であってもよい。
【００４９】
さらに、本実施の形態に係る制御装置１００は、解釈部により生成された内部コマンドに従って、制御周期（第１の周期）毎に、ロボットコントローラ５２２，５２６およびサーボドライバ５４０（１または複数のアクチュエータ）のうち少なくとも一部に対する制御指令を出力する指令演算部（一例として、制御指令演算部１６４（詳細については後述する））を有している。このような指令演算部を採用することで、シーケンスプログラムの実行により算出される制御指令の出力周期と同じ周期で、アプリケーションプログラムに従う制御指令を出力できる。
【００５０】
制御装置１００およびこれらのフィールド機器５００は、互いに時刻同期されたタイマＴＭＲを有している。そのため、フィールドネットワーク２に接続されているノード同士では、動作タイミングなどを共有できる。例えば、ＣＮＣ工作機械５３０の動作に合せて、制御装置１００から制御指令を出力するタイミングを調整することで、ＣＮＣ工作機械５３０とロボット５２０，５２４との連係動作、および／または、ＣＮＣ工作機械５３０とコンベア５４４との連係動作などを容易に実現できる。
【００５１】
本実施の形態に係る制御システム１においては、ＣＮＣ工作機械５３０のような内蔵の制御装置で実行されるアプリケーションプログラムによって制御される可動機械と、制御装置１００からの制御指令によって制御される可動機械との連係を容易に実現できる構成を提供する。
【００５２】
図２は、本実施の形態に係る制御システム１における処理の概要を説明するためのタイムチャートである。図２には、ＣＮＣ工作機械５３０とロボット５２０とを連係して動作させる場合の処理例を示す。
【００５３】
ロボット５２０を動作させるための制御指令は、制御装置１００において実行されるアプリケーションプログラム３２に従って生成されるものとする。すなわち、図２には、アプリケーションプログラム３２の一例として、ロボットプログラムを示す。
【００５４】
図２を参照して、任意の実行開始タイミングを基準として、ＣＮＣ工作機械５３０およびロボット５２０の動作を開始する場合を想定する。このような連係動作を実現するにあたって、ＣＮＣ工作機械５３０は、実行開始タイミングの到来前に動作を開始する予定の時刻（動作予定時刻）を制御装置１００へ通知する。この動作予定時刻は、典型的には、時刻同期されたタイマＴＭＲが示す時刻（カウンタ値）を用いて指定される。
【００５５】
制御装置１００は、動作予定時刻の通知を受けると、アプリケーションプログラムのうち、対象となるコマンドを解釈して内部コマンドを生成する。そして、予め通知されていた実行開始タイミングが到来すると、ＣＮＣ工作機械５３０は、予め定められた動作を開始し、制御装置１００は、予め生成した内部コマンドに従う制御指令の出力を開始する。この制御指令がロボットコントローラ５２２へ与えられることで、ロボット５２０は、ＣＮＣ工作機械５３０の実行開始タイミングと同じタイミングで動作を開始できる。
【００５６】
このように、ＣＮＣ工作機械５３０の制御装置は、アプリケーションプログラムを逐次解釈して対象の可動機械に対する制御指令を出力するプログラム実行部（一例として、アプリケーションプログラム実行部５８４（詳細については後述する））と、制御指令を出力する実行開始タイミングを制御装置１００へ事前に通知するタイミング管理部（一例として、処理タイミング管理部５９０（詳細については後述する））とを有している。制御装置１００の調停部（一例として、アプリケーション調停部１６２（詳細については後述する））は、ＣＮＣ工作機械５３０の制御装置からの実行開始タイミングの通知に応答して、解釈部により生成される内部コマンドに従う制御指令の出力時期を調整する。
【００５７】
図２に示すような制御装置１００とＣＮＣ工作機械５３０との間の遣り取りを採用することで、制御装置１００により制御されるロボット５２０と、内蔵の制御装置により制御されるＣＮＣ工作機械５３０とを連係動作させることができる。すなわち、本実施の形態に係る制御システム１によれば、制御装置１００からの制御指令によって動作するアクチュエータの間だけではなく、制御装置１００とは独立した制御装置によって動作する制御アプリケーションとの間で、連係動作を実現できる。
【００５８】
説明の便宜上、図２には、実行開始タイミングを基準として、ＣＮＣ工作機械５３０およびロボット５２０が同時に動作を開始する例を示すが、これに限らず、実行開始タイミングを基準として一方または両方が何らかのオフセット時間をもつようにしてもよい。例えば、一方の装置は実行開始タイミングから動作を開始し、他方の装置は実行開始タイミングからあるオフセット時間だけ遅れて動作を開始するようにしてもよい。このようなオフセット時間を設定することで、装置間に一定の遅れ時間を与えた連係動作を実現できる。
【００５９】
図１には、制御装置１００からの制御指令に従って動作する１または複数のアクチュエータについても、フィールドネットワーク２に接続されている例を示すが、これに限らず、制御装置１００からの制御指令を受けることができれば、どのような接続形態であってもよい。例えば、フィールドネットワーク２に接続されたリモートＩ／Ｏ装置５１０から信号線を介して制御指令を与えるようにしてもよい。本実施の形態に係る制御システム１においては、制御装置１００から出力される制御指令が制御対象のフィールド機器５００に与えられるタイミングと、連係動作の対象となる装置に対して対応する制御指令が与えられるタイミングとが実質的に同一になればよく、それぞれの制御指令の伝送形態まで共通にする必要はない。
【００６０】
説明の便宜上、図２には、ＣＮＣ工作機械５３０から制御装置１００に対して実行開始タイミングを通知する場合を例示するが、これに限らず、制御装置１００からＣＮＣ工作機械５３０に対して実行開始タイミングを通知するようにしてもよい。さらに、何らかの実行主体から制御装置１００およびＣＮＣ工作機械５３０に対して、共通の実行開始タイミングを通知するようにしてもよい。いずれの場合においても、実行開始タイミングが到来すると、制御指令を出力できるように、必要な処理が事前に実行される。
【００６１】
以下、本発明のより具体的な応用例として、本実施の形態に係る制御システム１のより詳細な構成および処理について説明する。
【００６２】
＜Ｂ．制御システムの全体構成例＞
まず、図１に示す制御システム１の全体構成例についてより詳細に説明する。
【００６３】
図１に示す構成例において、サーボドライバ５４０は、制御装置１００からの制御指令（例えば、位置指令または速度指令など）に従って、サーボモータ５４２を駆動する。サーボモータ５４２は、コンベア５４４を駆動して、ＣＮＣ工作機械５３０の前に配置されたワークテーブル５４６にワークＷを搬送する。
【００６４】
ＣＮＣ工作機械５３０は、位置や速度などを指定するプログラムに従って、マシニングセンタなどを制御することで、任意の対象物を加工する。ＣＮＣ工作機械５３０は、典型的には、旋盤加工、フライス盤、放電加工などの加工装置を含む。
【００６５】
ロボットコントローラ５２２はロボット５２０を駆動し、ロボットコントローラ５２６はロボット５２４を駆動する。ロボットコントローラ５２２，５２６は、制御装置１００からの制御指令（位置指令または速度指令など）に従って、軌跡計算および各軸の角度計算などを行うとともに、計算結果に従って、ロボット５２０，５２４を構成するサーボモータなどを駆動する。
【００６６】
ロボット５２０，５２４は、ワークテーブル５４６上のワークＷをＣＮＣ工作機械５３０内に配置し、あるいは、ＣＮＣ工作機械５３０での処理済ワークＷを取り出してワークテーブル５４６上に配置する。
【００６７】
リモートＩ／Ｏ装置５１０は、典型的には、フィールドネットワーク２を介して通信を行う通信カプラと、入力データの取得および出力データの出力を行うための入出力部（以下、「Ｉ／Ｏユニット」とも称す。）とを含む。リモートＩ／Ｏ装置５１０には、入力リレーや各種センサ（例えば、アナログセンサ、温度センサ、振動センサなど）などの入力データを収集する装置、および、出力リレー、コンタクタ、サーボドライバ、および、その他任意のアクチュエータなどのフィールドに対して何らかの作用を与える装置が接続される。
【００６８】
フィールド機器５００としては、これらに限られることなく、入力データを収集する任意のデバイス（例えば、視覚センサなど）、ならびに、出力データに従う何らかの作用を与える任意のデバイス（例えば、インバータ装置など）などを採用することができる。
【００６９】
フィールドネットワーク２を介して、制御装置１００とフィールド機器５００との間でデータが遣り取りされることになるが、これらの遣り取りされるデータは、数１００μｓｅｃオーダ〜数１０ｍｓｅｃオーダのごく短い周期で更新されることになる。このようなデータの遣り取りは、フィールド機器５００において収集または生成されたデータ（以下、「入力データ」とも称す。）を制御装置１００へ送信する処理、および、制御装置１００からフィールド機器５００に対する制御指令などのデータ（以下、「出力データ」とも称す。）を送信する処理を含む。このような遣り取りされるデータの更新処理が上述の「入出力リフレッシュ処理」に相当する。
【００７０】
制御装置１００は、上位ネットワーク６を介して、他の装置に接続されていてもよい。上位ネットワーク６には、一般的なネットワークプロトコルであるイーサネット（登録商標）やＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）が採用されてもよい。より具体的には、上位ネットワーク６には、１または複数のサーバ装置３００および１または複数の表示装置４００が接続されてもよい。
【００７１】
サーバ装置３００としては、データベースシステム、製造実行システム（ＭＥＳ：Manufacturing Execution System）などが想定される。製造実行システムは、制御対象の製造装置や設備からの情報を取得して、生産全体を監視および管理するものであり、オーダ情報、品質情報、出荷情報などを扱うこともできる。これに限らず、情報系サービスを提供する装置を上位ネットワーク６に接続するようにしてもよい。情報系サービスとしては、制御対象の製造装置や設備からの情報を取得して、マクロ的またはミクロ的な分析などを行う処理が想定される。例えば、制御対象の製造装置や設備からの情報に含まれる何らかの特徴的な傾向を抽出するデータマイニングや、制御対象の設備や機械からの情報に基づく機械学習を行うための機械学習ツールなどが想定される。
【００７２】
表示装置４００は、ユーザからの操作を受けて、制御装置１００に対してユーザ操作に応じたコマンドなどを出力するとともに、制御装置１００での演算結果などをグラフィカルに表示する。
【００７３】
さらに、制御装置１００には、サポート装置２００が接続可能になっている。サポート装置２００は、制御装置１００が制御対象を制御するために必要な準備を支援する装置である。具体的には、サポート装置２００は、制御装置１００で実行されるプログラムの開発環境（プログラム作成編集ツール、パーサ、コンパイラなど）、制御装置１００および制御装置１００に接続される各種デバイスのパラメータ（コンフィギュレーション）を設定するための設定環境、生成したシーケンスプログラムやアプリケーションプログラムを制御装置１００へ出力する機能、制御装置１００上で実行されるシーケンスプログラムなどをオンラインで修正・変更する機能、などを提供する。
【００７４】
＜Ｃ．制御装置のハードウェア構成例＞
次に、本実施の形態に係る制御装置１００のハードウェア構成例について説明する。図３は、本実施の形態に係る制御装置１００のハードウェア構成例を示すブロック図である。
【００７５】
図３を参照して、制御装置１００は、ＣＰＵユニットと称される演算処理部であり、プロセッサ１０２と、チップセット１０４と、主メモリ１０６と、ストレージ１０８と、上位ネットワークコントローラ１１０と、ＵＳＢ（Universal Serial Bus）コントローラ１１２と、メモリカードインターフェイス１１４と、内部バスコントローラ１２０と、フィールドネットワークコントローラ１３０とを含む。
【００７６】
プロセッサ１０２は、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＧＰＵ（Graphics Processing Unit）などで構成される。プロセッサ１０２としては、複数のコアを有する構成を採用してもよいし、プロセッサ１０２を複数配置してもよい。すなわち、制御装置１００は、１または複数のプロセッサ１０２、および／または、１または複数のコアを有するプロセッサ１０２を有している。チップセット１０４は、プロセッサ１０２および周辺エレメントを制御することで、制御装置１００全体としての処理を実現する。主メモリ１０６は、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）などの揮発性記憶装置などで構成される。ストレージ１０８は、例えば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）などの不揮発性記憶装置などで構成される。
【００７７】
プロセッサ１０２は、ストレージ１０８に格納された各種プログラムを読出して、主メモリ１０６に展開して実行することで、制御対象に応じた制御、および、後述するような各種処理を実現する。ストレージ１０８には、基本的な機能を実現するためのシステムプログラム３４に加えて、制御対象の製造装置や設備に応じて作成されるシーケンスプログラム３０およびアプリケーションプログラム３２が格納される。
【００７８】
上位ネットワークコントローラ１１０は、上位ネットワーク６を介して、サーバ装置３００や表示装置４００（図１参照）などとの間のデータの遣り取りを制御する。ＵＳＢコントローラ１１２は、ＵＳＢ接続を介してサポート装置２００との間のデータの遣り取りを制御する。
【００７９】
メモリカードインターフェイス１１４は、メモリカード１１６が着脱可能に構成されており、メモリカード１１６に対してデータを書込み、メモリカード１１６から各種データ（シーケンスプログラム３０、アプリケーションプログラム３２、トレースデータなど）を読出すことが可能になっている。
【００８０】
内部バスコントローラ１２０は、制御装置１００に装着されるＩ／Ｏユニット１２２との間のデータの遣り取りを制御する。フィールドネットワークコントローラ１３０は、フィールドネットワーク２を介したフィールドデバイスとの間のデータの遣り取りを制御する。
【００８１】
図３には、プロセッサ１０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。あるいは、制御装置１００の主要部を、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳ（Operating System）を並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【００８２】
図３に示す制御システム１においては、制御装置１００、サポート装置２００および表示装置４００がそれぞれ別体として構成されているが、これらの機能の全部または一部を単一の装置に集約するような構成を採用してもよい。
【００８３】
＜Ｄ．制御装置の機能構成例＞
次に、本実施の形態に係る制御装置１００の機能構成例について説明する。図４は、本実施の形態に係る制御装置１００の機能構成例を示すブロック図である。
【００８４】
図４には、制御装置１００が制御アプリケーション１および制御アプリケーション２を制御する構成例を示す。制御アプリケーション１および制御アプリケーション２の各々は、典型的には、リレーやコンタクタなどのＩ／Ｏデバイスおよびサーボモータなどの各種アクチュエータを含む。制御アプリケーション１および制御アプリケーション２に加えて、他のＩ／Ｏデバイスおよび各種センサについても、フィールドネットワーク２を介して制御装置１００と接続されている。
【００８５】
制御装置１００は、上位ネットワーク６を介して接続されているサーバ装置３００などから、生産の開始／終了といった指示を受ける。サーバ装置３００は、レシピ情報３８（生産品種や生産に適したパラメータなどの情報）を制御装置１００に送信することもある。制御装置１００は、図示しない他の制御装置１００とネットワーク接続されていてもよい。
【００８６】
図４を参照して、制御装置１００（第１の制御装置）は、ＰＬＣ処理エンジン１５０と、アプリケーションプログラム解釈部１６０と、アプリケーション調停部１６２と、制御指令演算部１６４と、共有メモリ１７０と、共有メモリ制御部１７２と、表示機能部１７４と、フィールドネットワークインターフェイス１７６と、マスタ処理部１７８と、内部カウンタ１８０と、上位ネットワークインターフェイス１８２と、システムサービス処理部１８４とを含む。
【００８７】
ＰＬＣ処理エンジン１５０は、シーケンスプログラム３０の実行および制御装置１００全体の処理を管理する。より具体的には、ＰＬＣ処理エンジン１５０は、シーケンスプログラム実行部１５２と、スケジューラ１５４とを含む。
【００８８】
シーケンスプログラム実行部１５２は、制御周期Ｔ１毎にシーケンスプログラム３０を実行（スキャン）して制御指令を出力する。
【００８９】
スケジューラ１５４は、制御装置１００において実行される処理の順序を調停するものであり、具体的には、予め設定された優先度に基づいて、１または複数のタスクに対してプロセッサリソースを割当てる。
【００９０】
アプリケーションプログラム解釈部１６０は、制御周期Ｔ１と同じまたは制御周期Ｔ１より長いアプリケーション実行周期Ｔ２毎にアプリケーションプログラム３２の少なくとも一部を解釈して内部コマンド４０を逐次生成する。アプリケーションプログラム解釈部１６０には、異なる種類のアプリケーションプログラム３２が提供されることもある。アプリケーションプログラム解釈部１６０は、予め格納されたアプリケーションプログラム３２を実行するようにしてもよいし、サーバ装置３００から適宜送信されるアプリケーションプログラム３２を実行するようにしてもよい。
【００９１】
制御指令演算部１６４は、シーケンスプログラム３０に含まれるモーション命令に従って、制御指令を制御周期Ｔ１毎に演算する。また、制御指令演算部１６４は、アプリケーションプログラム解釈部１６０により生成された内部コマンド４０に従って、制御指令を制御周期Ｔ１毎に演算する。これらの制御指令は、ロボットコントローラ５２２，５２６およびサーボドライバ５４０の少なくとも一部に向けられたものとなる。
【００９２】
シーケンスプログラム実行部１５２および制御指令演算部１６４は、制御周期Ｔ１毎に処理を実行する（高優先タスク）。一方、アプリケーションプログラム解釈部１６０によるアプリケーションプログラム３２に対する処理は、制御周期Ｔ１の整数倍であるアプリケーション実行周期Ｔ２（第２の周期）毎に実行される（低優先タスク）。
【００９３】
アプリケーション調停部１６２は、アプリケーションプログラム解釈部１６０による解釈処理を管理する。アプリケーション調停部１６２は、外部からの動作予定時刻（実行開始タイミング）の通知に応答して、アプリケーションプログラム解釈部１６０におけるアプリケーションプログラム３２により生成される内部コマンドに従う制御指令の出力タイミングを調整する。
【００９４】
より具体的には、アプリケーション調停部１６２は、処理タイミング管理機能１６３を有している。処理タイミング管理機能１６３は、外部から通知される動作予定時刻（実行開始タイミング）と同時に、アプリケーションプログラム３２に従う制御指令の出力が開始されるように、出力タイミングを調整する。処理タイミング管理機能１６３は、マスタ処理部１７８の内部カウンタ１８０が示すカウンタ値などに基づいて、出力タイミングを決定する。
【００９５】
このとき、アプリケーション調停部１６２は、アプリケーションプログラム解釈部１６０での解釈処理の開始タイミングや優先度などを管理変更する。
【００９６】
共有メモリ１７０は、ＰＬＣ処理エンジン１５０、アプリケーションプログラム解釈部１６０、および制御指令演算部１６４の間で共有されるデータを保持する。共有されるデータは、構造体変数として格納されるようにしてもよい。例えば、アプリケーションプログラム解釈部１６０により逐次生成される内部コマンド４０は、共有メモリ１７０の構造体変数に逐次書込まれる。
【００９７】
共有メモリ制御部１７２は、共有メモリ１７０に対するデータ読書きの排他制御、および、外部からの要求に応じた共有メモリ１７０へのアクセスなどを行う。例えば、共有メモリ制御部１７２は、共有メモリ１７０上のデータをフィールドネットワークインターフェイス１７６へ与えることで、フィールドネットワーク２を介して接続される任意のフィールド機器５００へ送信される。
【００９８】
表示機能部１７４は、共有メモリ１７０に格納されるデータおよびアプリケーションプログラム解釈部１６０による処理結果などをユーザなどへ出力する。
【００９９】
フィールドネットワークインターフェイス１７６は、フィールドネットワーク２を介して接続されているフィールド機器５００との間のデータの遣り取りを仲介する。
【０１００】
マスタ処理部１７８は、フィールドネットワーク２におけるフレームの転送タイミングの管理などを行う。マスタ処理部１７８は、内部カウンタ１８０を有している。内部カウンタ１８０は、フィールドネットワーク２に接続されたノード間で共通に参照される、マスタクロックとして利用されてもよい。すなわち、内部カウンタ１８０のカウンタ値に基づいて、フィールドネットワーク２に接続された各ノードが有しているカウンタの値が揃えられる。
【０１０１】
上位ネットワークインターフェイス１８２は、上位ネットワーク６を介して接続されている装置との間のデータの遣り取りを仲介する。
【０１０２】
システムサービス処理部１８４は、上位ネットワークインターフェイス１８２を介した、１または複数のサーバ装置３００などへのデータ伝送を司る。システムサービス処理部１８４は、典型的には、ＰＬＣ処理エンジン１５０およびアプリケーションプログラム解釈部１６０のいずれもがタスク処理を実行していない期間において、外部との間でデータを遣り取りする。
【０１０３】
＜Ｅ．内部コマンドの一例＞
次に、制御装置１００のアプリケーションプログラム解釈部１６０がアプリケーションプログラム３２を解釈して生成する内部コマンド４０の一例について説明する。アプリケーションプログラム３２としては、インタプリタ方式で実行可能な任意の言語で記述されたどのようなプログラムを採用することもできるが、以下の説明においては、ＮＣプログラムまたはロボットプログラムのように、１または複数のコマンドのより予め軌跡を規定するプログラムを想定する。
【０１０４】
図５は、本実施の形態に係る制御装置１００における内部コマンド４０の生成処理を説明するための模式図である。図５（Ａ）を参照して、アプリケーションプログラム解釈部１６０がアプリケーションプログラム３２を解釈して、アプリケーションプログラム３２に含まれる各命令が解釈される（（１）アプリケーションプログラム解釈）。アプリケーションプログラム３２の解釈によって、規定された軌跡が内部的に生成される（（２）軌跡生成）。アプリケーションプログラム３２は、区間毎に軌跡を規定する命令を含むことが多いので、各命令に対応する区間毎に軌跡が生成される。
【０１０５】
複数の軸からなるグループが規定される場合には、軸毎に軌跡を生成してもよいし、当該グループに属する軸の全体の挙動を規定する軌跡を生成してもよい。
【０１０６】
アプリケーションプログラム解釈部１６０は、生成した軌跡を示す内部コマンド４０（典型的には、１または複数の関数）を生成する（（３）内部コマンド生成）。軌跡が区間毎に規定される場合には、各区間に対応する内部コマンド４０が生成される。
【０１０７】
以上のように、アプリケーションプログラム解釈部１６０は、アプリケーションプログラム３２を解釈して軌跡上の通過点を算出し、算出した通過点に基づいて内部コマンドを生成するようになっている。
【０１０８】
複数の区間を共通の内部コマンド４０で規定してもよいし、１つの区間をさらに分割して個別の内部コマンド４０をそれぞれ生成してもよい。すなわち、アプリケーションプログラム３２の命令または当該命令によって規定される軌跡の区間と、生成される内部コマンド４０の数とを一致させる必要はなく、任意に生成すればよい。また、内部コマンド４０の出力形態についても、要求される制御周期Ｔ１の時間幅などを考慮して、適宜設計されてもよい。
【０１０９】
図５（Ａ）に示すように、内部コマンド４０の一例としては、時間と指令値との関係を規定する関数であってもよい。図５（Ａ）に示す例では、内部的に生成された軌跡は、直線の組合せで規定できる。一例として、Ｘ軸に関して、直線区間毎（区間１〜区間３）の軌跡を時間と速度との関係を示すＦｘ１（ｔ），Ｆｘ２（ｔ），Ｆｘ３（ｔ）を出力できる。同一のグループに属する他の軸（例えば、Ｙ軸およびＺ軸）についても、それぞれ同様に関数が出力されてもよい。
【０１１０】
図５（Ｂ）に示すように、制御指令演算部１６４が、制御周期Ｔ１毎に、生成された内部コマンド４０に従って制御指令を演算することで、制御周期Ｔ１毎に制御指令が出力される（（４）指令値演算）。すなわち、各区間に対応する関数に、各制御周期の時刻を入力することで、当該時刻における指令値を一意に決定できる。何らかのグループが設定されている場合には、当該グループに属する各軸について、指令値を同期して出力することが好ましい。
【０１１１】
上述の図５には、一例として、ＣＮＣで用いられるＧ言語により記述されたコマンドの一例を示すが、これに限らず、任意のインタプリタ方式で実行されるプログラムであれば、どのような言語を用いてもよい。また、処理対象の言語形式に応じて、生成される内部コマンド４０の形式を異ならせてもよい。
【０１１２】
＜Ｆ．タスクの実行スケジュール＞
次に、本実施の形態に係る制御装置１００におけるそれぞれのタスクの実行スケジュールについて説明する。図６は、本実施の形態に係る制御装置１００におけるタスクの実行スケジュールの一例を示すタイムチャートである。
【０１１３】
図６を参照して、高優先タスクとして、第１タスク１０（入出力リフレッシュ処理）および第２タスク１８（シーケンス命令実行処理１２と、アプリケーションプログラムに従う制御指令の出力処理１４と、シーケンスプログラム３０に含まれるモーション命令に従う制御指令の出力処理１６とを含む）が設定されている。低優先タスクとして、第３タスク２０（アプリケーションプログラム３２を解釈して内部コマンド４０を逐次生成する処理）が設定されている。
【０１１４】
高優先タスクは、制御周期Ｔ１毎に実行される。アプリケーションプログラムに従う制御指令の出力処理１４においては、アプリケーションプログラム解釈部１６０により生成される内部コマンド４０が、共有メモリ１７０から内部コマンド４０が読出されて（デキューされて）、当該制御周期Ｔ１における制御指令が算出される。
【０１１５】
低優先タスクは、アプリケーション実行周期Ｔ２毎に実行される。アプリケーション実行周期Ｔ２は、制御周期Ｔ１の整数倍（図６に示す例では、２倍）の単位で設定される。すなわち、アプリケーションプログラム解釈部１６０は、アプリケーション実行周期Ｔ２毎に、アプリケーションプログラム３２の少なくとも一部を解釈して内部コマンド４０を逐次生成する。生成される内部コマンド４０は、逐次、共有メモリ１７０内のバッファにキューイング（エンキュー）される。
【０１１６】
低優先タスクは、アプリケーション実行周期Ｔ２内に処理を完了できればよい。低優先タスクは、高優先タスクが実行される期間中には、プロセッサリソースが割当てられないので、中断（サスペンド）状態で待機する。
【０１１７】
図６に示すようなそれぞれのタスクの実行スケジュール、すなわちプロセッサリソースの割当ては、スケジューラ１５４によって実行される。スケジューラ１５４は、各タスクに設定されている優先度に基づいて、各タスクに対するプロセッサリソースの割当てを行う。
【０１１８】
説明の便宜上、アプリケーション実行周期Ｔ２が制御周期Ｔ１の２倍である場合を例示したが、これに限らず、アプリケーション実行周期Ｔ２は、対象となるアプリケーションプログラムの種類に応じて、制御周期Ｔ１の整数倍として設定でき、制御周期Ｔ１と同じ長さに設定することもできる。
【０１１９】
＜Ｇ．ＣＮＣ工作機械のハードウェア構成例＞
次に、本実施の形態に係る制御システム１に含まれるＣＮＣ工作機械５３０のハードウェア構成例について説明する。図７は、本実施の形態に係る制御システム１に含まれるＣＮＣ工作機械５３０のハードウェア構成例を示すブロック図である。
【０１２０】
図７を参照して、ＣＮＣ工作機械５３０は、制御アプリケーションの一例であり、制御指令が与えられる可動機械を含む。より具体的には、ＣＮＣ工作機械５３０は、メインコントローラ５５０と、フィールドネットワークコントローラ５６２と、バスコントローラ５６４と、入力部５６６と、出力部５６８と、複数のアクチュエータ５７０−１，５７０−２，・・・とを含む。
【０１２１】
メインコントローラ５５０は、制御装置１００とネットワーク接続された別の制御装置に相当し、アプリケーションプログラム５３２を逐次解釈して、制御指令を逐次出力する。より具体的には、メインコントローラ５５０は、プロセッサ５５２と、主メモリ５５４と、ストレージ５５６と、ＲＯＭ（Read Only Memory）５６０とを含む。
【０１２２】
プロセッサ５５２は、ＣＰＵ、ＭＰＵ、ＧＰＵなどで構成される。プロセッサ５５２としては、複数のコアを有する構成を採用してもよいし、プロセッサ５５２を複数配置してもよい。主メモリ５５４は、ＤＲＡＭやＳＲＡＭなどの揮発性記憶装置などで構成される。ストレージ５５６は、例えば、フラッシュメモリ、ＨＤＤ、ＳＳＤなどの不揮発性記憶装置などで構成される。ストレージ５５６には、１または複数のアプリケーションプログラム５３２が格納される。
【０１２３】
ＲＯＭ５６０は、プロセッサ５５２における基本的な処理（例えば、１または複数のアプリケーションプログラム５３２を解釈する処理）を実現するためのシステムプログラムなどを格納する。
【０１２４】
プロセッサ５５２は、ＲＯＭ５６０に格納されたシステムプログラム、および、ストレージ５５６に格納された１または複数のアプリケーションプログラム５３２を読出して、主メモリ５５４に展開して逐次解釈することで、制御指令を逐次出力する。ＣＮＣ工作機械５３０のメインコントローラ５５０においては、１または複数のアプリケーションプログラム５３２が直接解釈されて、制御指令が出力されるため、上述したような内部コマンドは生成されなくてもよい。
【０１２５】
フィールドネットワークコントローラ５６２は、フィールドネットワーク２を介して制御装置１００などとの間でデータを遣り取りする。
【０１２６】
バスコントローラ５６４は、メインコントローラ５５０と、入力部５６６、出力部５６８、複数のアクチュエータ５７０−１，５７０−２，・・・との間でデータを遣り取りする。
【０１２７】
入力部５６６は、操作ボタンやダイヤルなどのユーザ操作を受付けるコンポーネントである。入力部５６６に対するユーザ操作を示す信号は、バスコントローラ５６４を介して、メインコントローラ５５０へ与えられる。
【０１２８】
出力部５６８は、表示灯やブザーなどのユーザに対する通知を行うためのコンポーネントである。メインコントローラ５５０からの指令に応じて、出力部５６８は点灯や鳴動などを行う。
【０１２９】
アクチュエータ５７０−１，５７０−２，・・・は、ＣＮＣ工作機械５３０の各可動部を駆動するためのコンポーネントであり、サーボドライバおよびサーボモータなどを含む。メインコントローラ５５０からの制御指令は、バスコントローラ５６４を介して、対象のアクチュエータ５７０−１，５７０−２，・・・へ与えられる。
【０１３０】
＜Ｈ．ＣＮＣ工作機械の機能構成例＞
次に、本実施の形態に係る制御システム１に含まれるＣＮＣ工作機械５３０の機能構成例について説明する。図８は、本実施の形態に係る制御システム１に含まれるＣＮＣ工作機械５３０の機能構成例を示すブロック図である。
【０１３１】
図８を参照して、ＣＮＣ工作機械５３０は、スレーブ処理部５８０と、内部カウンタ５８２と、アプリケーションプログラム実行部５８４と、入出力データ処理部５８６と、システムサービス処理部５８８と、処理タイミング管理部５９０とを含む。
【０１３２】
スレーブ処理部５８０は、フィールドネットワーク２におけるフレームの送受信を管理する。スレーブ処理部５８０は、内部カウンタ５８２を有している。内部カウンタ５８２は、制御装置１００の内部カウンタ１８０と同期されており、内部カウンタ１８０が示すカウンタ値に基づいて、フレーム転送が制御される。
【０１３３】
アプリケーションプログラム実行部５８４は、１または複数のアプリケーションプログラム５３２を逐次解釈して、対象のアクチュエータ５７０−１，５７０−２，・・・（可動機械に相当）に対する制御指令を出力する。
【０１３４】
入出力データ処理部５８６は、アプリケーションプログラム実行部５８４からの制御指令を対象となるアクチュエータなどへ出力する。また、入出力データ処理部５８６は、入力部からの入力データをアプリケーションプログラム実行部５８４へ出力し、アプリケーションプログラム実行部５８４からの出力データを出力部へ出力する。
【０１３５】
システムサービス処理部５８８は、ＣＮＣ工作機械５３０における付帯的な処理を管理する。
【０１３６】
処理タイミング管理部５９０は、予め定められた条件などに従って、図１に示す実行開始タイミングの通知処理などを担当する。すなわち、処理タイミング管理部５９０は、ＣＮＣ工作機械５３０における制御指令を出力するタイミングを制御装置１００へ事前に通知する。処理タイミング管理部５９０による通知されるタイミングは、アプリケーションプログラム５３２の実行状況などに基づいて決定されてもよい。また、処理タイミング管理部５９０は、外部から実行開始タイミングの通知を受けた場合には、予め定められた条件などに従って、アプリケーションプログラム実行部５８４におけるアプリケーションプログラム５３２の実行開始タイミングなどを制御する。
【０１３７】
＜Ｉ．動作予定時刻の通知を利用した連係動作＞
次に、本実施の形態に係る制御システム１における動作予定時刻の通知を利用した連係動作について説明する。
【０１３８】
（ｉ１：全体シーケンス）
まず、動作予定時刻の通知を利用した連係動作に係る全体シーケンスの一例について説明する。図９は、本実施の形態に係る制御システム１における動作予定時刻の通知を利用した連係動作に係るシーケンス図である。
【０１３９】
図９には、典型例として、制御装置１００の制御指令演算部１６４、アプリケーションプログラム解釈部１６０、および、アプリケーション調停部１６２、ならびに、ＣＮＣ工作機械５３０のアプリケーションプログラム実行部５８４および処理タイミング管理部５９０、が関与する処理を示す。
【０１４０】
図９を参照して、ＣＮＣ工作機械５３０のアプリケーションプログラム実行部５８４において、任意の実行開始条件が成立すると（シーケンスＳＱ２）、アプリケーションプログラム実行部５８４から処理タイミング管理部５９０へ実行開始条件の成立が通知される（シーケンスＳＱ４）。実行開始条件は、ＣＮＣ工作機械５３０において、任意のアプリケーションプログラム５３２の実行を開始させるための条件である。
【０１４１】
実行開始条件の成立の通知を受けると、処理タイミング管理部５９０は、実行開始条件の内容、または、予め定められた設定値などに基づいて、動作を開始する予定の時刻（動作予定時刻）を決定する（シーケンスＳＱ６）。決定された動作予定時刻は、制御装置１００のアプリケーション調停部１６２へ通知される（シーケンスＳＱ８）。
【０１４２】
制御装置１００のアプリケーション調停部１６２は、ＣＮＣ工作機械５３０からの動作予定時刻に基づいて、対応するアプリケーションプログラム３２の実行開始タイミングを決定する（シーケンスＳＱ１０）。この実行開始タイミングは、典型的には、ＣＮＣ工作機械５３０から通知されるタイミング（動作予定時刻）と制御装置１００が管理している内部カウンタ１８０のカウンタ値が示す現在時刻（すなわち、タイマＴＭＲが示す値）との差分に基づいて決定される。
【０１４３】
アプリケーション調停部１６２は、実行開始タイミングの到来前に、アプリケーションプログラム解釈部１６０に制御指令の生成を指示する。すなわち、アプリケーション調停部１６２は、アプリケーションプログラム解釈部１６０に対して、内部コマンドの生成を指示する（シーケンスＳＱ１２）。この指示に応答して、アプリケーションプログラム解釈部１６０は、対象となるアプリケーションプログラム５３２を解釈して内部コマンドを生成する（シーケンスＳＱ１４）。この生成された内部コマンドは、共有メモリ１７０内のバッファに逐次キューイング（エンキュー）されて、制御指令演算部１６４からのアクセスが可能になる（シーケンスＳＱ１６）。
【０１４４】
また、アプリケーション調停部１６２は、シーケンスＳＱ１０において決定した実行開始タイミングが到来すると、アプリケーションプログラム解釈部１６０に対して、生成した内部コマンドに従う制御指令の出力開始を指示する（シーケンスＳＱ１８）。この出力開始の指示を受けて、制御指令演算部１６４は、内部コマンドに従う制御指令の出力を開始する（シーケンスＳＱ２０）。
【０１４５】
一方、ＣＮＣ工作機械５３０のアプリケーションプログラム実行部５８４においても、アプリケーションプログラム５３２に従う制御指令の出力を開始する（シーケンスＳＱ２２）。
【０１４６】
このような一連の手続きによって、動作予定時刻を基準とした、連係動作を実現できる。
【０１４７】
（ｉ２：プログラム例）
次に、動作予定時刻の通知を利用した連係動作を実現するためのプログラム例について説明する。図１０は、本実施の形態に係る制御システム１における動作予定時刻の通知を利用した連係動作を実現するためのプログラム例である。
【０１４８】
図１０に示すシーケンスプログラム３０は、コンベア５４４およびロボット５２０（図１参照）の制御に向けられる。なお、ＣＮＣ工作機械５３０は、内蔵のメインコントローラ５５０がアプリケーションプログラム５３２を実行することで制御される。
【０１４９】
シーケンスプログラム３０は、コンベア５４４を駆動するサーボモータ５４２を制御するためのモーション命令を規定するファンクションブロック３０２と、ＣＮＣ工作機械５３０を制御するためのアプリケーションプログラム３２（ロボットプログラム）の実行開始を指示するファンクションブロック３０４とを含む。
【０１５０】
ファンクションブロック３０２は、運転開始フラグがＴＲＵＥになることで、指定された処理を実行する。
【０１５１】
ファンクションブロック３０４は、ＣＮＣ工作機械５３０から動作予定時刻を受信したことを条件として活性化される。ファンクションブロック３０４には、受信された動作予定時刻が格納される変数ＳｔａｒｔＴｉｍｅがＥｘｅｃＴｉｍｅの値として与えられている。ファンクションブロック３０４は、変数ＳｔａｒｔＴｉｍｅを入力として実行されることで、アプリケーション調停部１６２が実行開始タイミングなどを決定する。そして、決定された実行開始タイミングに従って、指定されたアプリケーションプログラム３２に従う制御指令の出力が開始される。
【０１５２】
図１０に示すように、ユーザは、ＣＮＣ工作機械５３０からの動作予定時刻の通知などを意識することなく、比較的簡単なコーディングによって、ＣＮＣ工作機械５３０との連係動作を実現できる。
【０１５３】
（ｉ３：優先度変更）
上述の図９などを参照して説明したように、予め通知された動作予定時刻から制御指令の出力を開始できるように、制御装置１００においては、アプリケーションプログラム３２を解釈して、内部コマンドを事前に生成しておく必要がある。
【０１５４】
一方で、対象のアプリケーションプログラム３２に含まれるコマンドの数および種類によっては、解釈により多くの時間を要する場合もある。このような場合において、内部コマンドの生成が予め通知された動作予定時刻に間に合わない可能性もある。
【０１５５】
このような場合において、アプリケーションプログラム３２を解釈して内部コマンドを生成する処理に関連付けられる優先度をより高い方向に変更するようにしてもよい。より高い優先度を設定することで、当該処理に割当てられる演算時間あるはプロセッサリソースを増大させることができるので、優先度を維持した場合に比較して、内部コマンドの生成をより短時間で完了させることができる。
【０１５６】
図１１は、本実施の形態に係る制御装置１００における優先度変更の効果を説明するための模式図である。図１１には、優先度の別に４種類の処理（タスク）を並列的に実行する例を示す。より具体的には、優先度の高いタスクとして、第１タスク１０（入出力リフレッシュ処理）および第２タスク１８（シーケンス命令実行処理１２と、アプリケーションプログラムに従う制御指令の出力処理１４と、シーケンスプログラム３０に含まれるモーション命令に従う制御指令の出力処理１６とを含む）が示されている。それに加えて、優先度の低いタスクとして、第３タスク２０（アプリケーションプログラム３２を解釈して内部コマンド４０を逐次生成する処理）と、第４タスク２２と、第５タスク２４とが示されている。
【０１５７】
第４タスク２２は、制御装置１００が提供する任意の処理を含む。第５タスク２４は、制御装置１００と外部装置との間のデータ通信などの処理（システムサービス）を含む。
【０１５８】
図１１に示す例においては、第１タスク１０および第２タスク１８が制御周期Ｔ１毎に繰返し実行される。各制御周期Ｔ１において、第１タスク１０および第２タスク１８が実行されていない期間において、第３〜第５タスクが優先度に応じて実行される。
【０１５９】
図１１（Ａ）に示す例においては、第４タスク２２に対しては、制御周期Ｔ１毎にプロセッサリソースが割当てられている。一方、第３タスク２０に対しては、第１タスク１０、第２タスク１８、第４タスク２２のいずれもが実行されていない期間においてのみ実行されるので、１回の第３タスク２０が実行完了するには、３回の制御周期Ｔ１に相当する時間が必要になっている。すなわち、第３タスク２０がトリガされてから、指定された処理を完了するまでには、制御周期Ｔ１の３倍の時間が必要である。
【０１６０】
一方、図１１（Ｂ）に示す例では、第３タスク２０の優先度は第４タスク２２より高く設定されている。図１１（Ｂ）に示す例においては、第１タスク１０および第２タスク１８のいずれもが実行されていない期間において、第３タスク２０が優先的に実行されることになり、その結果、１回の第３タスク２０の実行は２回の制御周期Ｔ１に相当する時間で処理を完了できる。すなわち、アプリケーションプログラム３２から内部コマンドをより短い時間で生成できる。
【０１６１】
上述の図１１に示したように、事前に通知された動作予定時刻までに内部コマンドの生成が間に合わないと判断された場合には、アプリケーションプログラム３２を解釈して内部コマンドを生成するためのタスクに設定されている優先度を変更するようにしてもよい。このような優先度の変更によって、事前に通知された動作予定時刻までに内部コマンドの生成を間に合わせることができる。
【０１６２】
なお、アプリケーションプログラム解釈部１６０は、アプリケーションプログラム３２に含まれるコマンドをある程度余分に構文解析（先読み（Look Ahead））している。先読み動作においては、アプリケーションプログラム３２に記述されたコマンドから内部コマンドを生成するにあたって、当該内部コマンドの生成対象となるコマンド以降に記述されたコマンドも参照される。そのため、アプリケーションプログラム解釈部１６０は、現在処理中のコマンドだけではなく、次に処理すべきコマンドを事前に知ることができ、動作予定時刻までに内部コマンドの生成を完了できるか否かを事前に判断できる。
【０１６３】
より具体的には、制御装置１００のアプリケーション調停部１６２は、アプリケーションプログラム解釈部１６０の処理状況またはアプリケーションプログラム解釈部１６０からの通知を受けて、事前に通知された動作予定時刻までの内部コマンドの生成が間に合わない状況を知ると、スケジューラ１５４に対して、内部コマンドの生成に係るタスクに設定されている優先度の変更を指示する。この優先度の変更指示に応答して、スケジューラ１５４は、対象のタスクの優先度を変更し、より多くのプロセッサリソースを割当てることで、より早期に内部コマンドを生成完了させる。
【０１６４】
すなわち、アプリケーション調停部１６２は、アプリケーションプログラム３２に従う制御指令の生成が動作予定時刻（実行開始タイミング）に間に合わないと判断されると、アプリケーションプログラム３２に従う制御指令の生成に係るタスクの優先度を上げる。これにより、内部コマンドの生成を動作予定時刻に間に合わせる。
【０１６５】
以上のように、事前に通知された動作予定時刻と内部コマンドの生成状況とを考慮して、内部コマンドを生成するタスクに設定されている優先度を変更するようにしてもよい。このような優先度の動的な変更によって、連係動作を動作予定時刻に開始できないといった事態の発生を回避できる。
【０１６６】
（ｉ４：処理手順）
次に、本実施の形態に係る制御システム１における動作予定時刻の通知を利用した連係動作を実現するための処理手順の一例について説明する。
【０１６７】
図１２は、本実施の形態に係る制御装置１００における処理手順の一例を示すフローチャートである。図１２に示す各ステップは、典型的には、制御装置１００のプロセッサ１０２がアプリケーションプログラム３２およびシステムプログラム３４を実行することで実現される。
【０１６８】
図１２を参照して、制御装置１００は、いずれかの制御アプリケーション（上述の例では、ＣＮＣ工作機械５３０）から動作予定時刻の通知を受けたか否かを判断する（ステップＳ１００）。動作予定時刻の通知を受けると（ステップＳ１００においてＹＥＳ）、制御装置１００は、通知された動作予定時刻と制御装置１００が管理している現在時刻との差分に基づいて、対応するアプリケーションプログラム３２の実行開始タイミングを決定する（ステップＳ１０２）。また、制御装置１００は、対応するアプリケーションプログラム３２の対象となるコマンドを解釈して内部コマンドを生成する（ステップＳ１０４）。
【０１６９】
そして、制御装置１００は、ステップＳ１０２において決定した実行開始タイミングが到来するか否かを判断し（ステップＳ１０６）する。実行開始タイミングが到来すると（ステップＳ１０６においてＹＥＳ）、制御装置１００は、ステップＳ１０４において生成済の内部コマンドに従う制御指令の算出および出力を開始する（ステップＳ１０８）。
【０１７０】
以上のような処理手順によって、動作予定時刻の通知を利用した連係動作を実現できる。
【０１７１】
＜Ｊ．オフセット時間＞
上述の説明においては、事前に通知された動作予定時刻を基準として、同時に動作を開始する例を示したが、これに限らず、共通の動作予定時刻を基準として一方または両方の動作を各オフセット時間経過後に開始するようにしてもよい。
【０１７２】
図１３は、本実施の形態に係る制御システム１における動作予定時刻の通知を利用した連係動作の一例を示すタイムチャートである。図１３を参照して、任意の実行開始タイミングを基準として、ＣＮＣ工作機械５３０およびロボット５２０の動作を開始する場合を想定する。
【０１７３】
制御装置１００は、動作予定時刻の通知を受けると、アプリケーションプログラムのうち、対象となるコマンドを解釈して内部コマンドを生成する。図１３に示す例においては、予め通知されていた実行開始タイミングが到来すると、予め定められた動作開始待ち時間だけ待機した後に、予め生成した内部コマンドに従う制御指令の出力を開始する。一方、ＣＮＣ工作機械５３０は、実行開始タイミングが到来すると、予め定められた動作を開始する。
【０１７４】
このように、アプリケーション調停部１６２は、外部から通知される動作予定時刻（実行開始タイミング）から予め定められた時間だけずれたタイミングで、アプリケーションプログラム３２に従う制御指令の出力が開始されるように、出力タイミングを調整するようにしてもよい。
【０１７５】
この結果、制御装置１００により制御されるロボット５２０は、ＣＮＣ工作機械５３０の動作開始から、予め定められたオフセット時間だけ遅れて動作を開始することになる。このような動作遅れ時間を設定することで、例えば、ロボット５２０とＮＣ工作機械５３０との間の干渉の発生を回避できる。
【０１７６】
このようなオフセット時間は、アプリケーションプログラム３２を起動する際に、シーケンスプログラム３０上で設定しておいてもよいし、事前に任意のパラメータとして設定されていてもよい。
【０１７７】
＜Ｋ．付記＞
上述したような本実施の形態は、以下のような技術思想を含む。
［構成１］
第１の制御装置（１００）と、
前記第１の制御装置とネットワーク接続された第２の制御装置（５５０）と、
前記第１の制御装置からの制御指令に従って動作する１または複数のアクチュエータ（５２２，５２６，５４０）とを備え、
前記第１の制御装置および前記第２の制御装置は、互いに時刻同期されたタイマ（ＴＭＲ）を有しており、
前記第１の制御装置は、
第１の周期毎にシーケンスプログラムを実行して第１の制御指令を出力する第１のプログラム実行部（１５２）と、
前記第１の周期と同じまたは前記第１の周期より長い第２の周期毎に第１のアプリケーションプログラムの少なくとも一部を解釈して内部コマンドを逐次生成する解釈部（１６０）と、
前記解釈部により生成された内部コマンドに従って、前記第１の周期毎に、前記１または複数のアクチュエータのうち少なくとも一部に対する第２の制御指令を出力する指令演算部（１６４）と、
前記解釈部による解釈処理を管理する調停部（１６２）とを備え、
前記第２の制御装置は、
第２のアプリケーションプログラムを逐次解釈して対象の可動機械に対する第３の制御指令を出力する第２のプログラム実行部（５８４）と、
前記第３の制御指令を出力するタイミングを前記第１の制御装置へ事前に通知するタイミング管理部（５９０）とを備え、
前記調停部は、前記第２の制御装置からのタイミングの通知に応答して、前記解釈部により生成される内部コマンドに従う第２の制御指令の出力タイミングを調整する、制御システム。
［構成２］
前記調停部は、前記第２の制御装置から通知されるタイミングと、前記第１の制御装置のタイマが示す値とに基づいて、前記第２の制御指令の出力タイミングを決定する、構成１に記載の制御システム。
［構成３］
前記第２の制御装置から通知されるタイミングは、前記第２の制御装置のタイマ（５８２）によって管理される値に基づくものである、構成２に記載の制御システム。
［構成４］
前記調停部は、前記第２の制御指令の出力タイミングの到来前に、前記解釈部に前記第２の制御指令の生成を指示する、構成２または３に記載の制御システム。
［構成５］
前記調停部は、前記第２の制御指令の生成が前記第２の制御指令の出力タイミングに間に合わないと判断されると、前記第２の制御指令の生成に係るタスクの優先度を上げる、構成４に記載の制御システム。
［構成６］
前記調停部は、前記第２の制御装置から通知されるタイミングと同時に、前記第２の制御指令の出力が開始されるように、出力タイミングを調整する、構成１〜５のいずれか１項に記載の制御システム。
［構成７］
前記調停部は、前記第２の制御装置から通知されるタイミングから予め定められた時間だけずれたタイミングで、前記第２の制御指令の出力が開始されるように、出力タイミングを調整する、構成１〜５のいずれか１項に記載の制御システム。
［構成８］
制御アプリケーションとネットワーク接続された制御装置（１００）であって、
第１の周期毎にシーケンスプログラムを実行して第１の制御指令を出力する第１のプログラム実行部（１５２）と、
前記第１の周期と同じまたは前記第１の周期より長い第２の周期毎にアプリケーションプログラムの少なくとも一部を解釈して内部コマンドを逐次生成する解釈部（１６０）と、
前記解釈部により生成された内部コマンドに従って、前記第１の周期毎に、１または複数のアクチュエータのうち少なくとも一部に対する第２の制御指令を出力する指令演算部（１６４）と、
前記制御アプリケーションからの制御指令を出力するタイミングの通知に基づいて、前記解釈部による解釈処理を管理する調停部（１６２）とを備え、
前記調停部は、前記制御アプリケーションからのタイミングの通知に応答して、前記解釈部により生成される内部コマンドに従う第２の制御指令の出力タイミングを調整する、制御装置。
【０１７８】
＜Ｌ．利点＞
本実施の形態に係る制御装置は、シーケンス命令およびモーション命令を含むシーケンスプログラムに加えて、１または複数のアプリケーションプログラムを並列的に実行できる。このような並列実行において、制御指令を制御周期毎に出力できるので、アプリケーションプログラムに従う制御においても、シーケンスプログラムに従う制御と同じ制御精度を実現できる。
【０１７９】
本実施の形態に係る制御装置は、制御装置からの制御指令により制御される制御アプリケーションと、自身が出力する制御指令により制御される制御アプリケーションとを並列的に実行するにあたって、いずれかの制御アプリケーションから通知された動作予定時刻に基づいて、複数の制御アプリケーション間の連係動作を実現できる。
【０１８０】
複数の制御アプリケーションの実行開始タイミングを互いに一致させることもできるし、制御アプリケーションの間の動作を制御周期の単位で規定されるオフセット時間だけずらして連係動作させることもできる。このような精緻な連係動作を提供することで、設備をより効率的に動作させることもでき、これによって生産効率を高めることもできる。
【０１８１】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１８２】
１  制御システム、２  フィールドネットワーク、６  上位ネットワーク、１０  第１タスク、１２  シーケンス命令実行処理、１４，１６  出力処理、１８  第２タスク、２０  第３タスク、２２  第４タスク、２４  第５タスク、３０  シーケンスプログラム、３２，５３２  アプリケーションプログラム、３４  システムプログラム、３８  レシピ情報、４０  内部コマンド、１００  制御装置、１０２，５５２  プロセッサ、１０４  チップセット、１０６，５５４  主メモリ、１０８，５５６  ストレージ、１１０  上位ネットワークコントローラ、１１２  ＵＳＢコントローラ、１１４  メモリカードインターフェイス、１１６  メモリカード、１２０  内部バスコントローラ、１２２  Ｉ／Ｏユニット、１３０，５６２  フィールドネットワークコントローラ、１５０  処理エンジン、１５２  シーケンスプログラム実行部、１５４  スケジューラ、１６０  アプリケーションプログラム解釈部、１６２  アプリケーション調停部、１６３  処理タイミング管理機能、１６４  制御指令演算部、１７０  共有メモリ、１７２  共有メモリ制御部、１７４  表示機能部、１７６  フィールドネットワークインターフェイス、１７８  マスタ処理部、１８０，５８２  内部カウンタ、１８２  上位ネットワークインターフェイス、１８４，５８８  システムサービス処理部、２００  サポート装置、３００  サーバ装置、３０２，３０４  ファンクションブロック、４００  表示装置、５００  フィールド機器、５１０  リモートＩ／Ｏ装置、５２０，５２４  ロボット、５２２，５２６  ロボットコントローラ、５３０  ＣＮＣ工作機械、５４０  サーボドライバ、５４２  サーボモータ、５４４  コンベア、５４６  ワークテーブル、５５０  メインコントローラ、５６０  ＲＯＭ、５６４  バスコントローラ、５６６  入力部、５６８  出力部、５７０  アクチュエータ、５８０  スレーブ処理部、５８４  アプリケーションプログラム実行部、５８６  入出力データ処理部、５９０  処理タイミング管理部、Ｔ１  制御周期、Ｔ２  アプリケーション実行周期、ＴＭＲ  タイマ、Ｗ  ワーク。
【図１】
2019067046.tif 000003
【図２】
2019067046.tif 000004
【図３】
2019067046.tif 000005
【図４】
2019067046.tif 000006
【図５】
2019067046.tif 000007
【図６】
2019067046.tif 000008
【図７】
2019067046.tif 000009
【図８】
2019067046.tif 000010
【図９】
2019067046.tif 000011
【図１０】
2019067046.tif 000012
【図１１】
2019067046.tif 000013
【図１２】
2019067046.tif 000014
【図１３】
2019067046.tif 000015