(57)【要約】【課題】複数の制御対象機器とデータを遣り取りする制御装置において、制御対象機器の数が増加しても制御装置の開発の簡素化を実現する。【解決手段】複数の制御対象機器の少なくとも一部は、各々が複数のグループのいずれかに所属するように分類されている。制御装置は、各グループについて、所属する制御対象機器を特定するための識別情報、および、同一のグループに所属する制御対象機器に異常が検出されたときの残りの制御対象機器の振る舞いに関する情報を保有する。制御装置は、ユーザプログラムが実行されるときに複数の制御対象機器との間で遣り取りされるデータに基づいて複数の制御対象機器の各々の異常を検出し、複数の制御対象機器のいずれかに異常が検出されたときには、識別情報を参照して異常が検出された制御対象機器が所属する異常グループを特定するとともに、振る舞いに関する情報を参照して異常グループの動作を制御する。【選択図】図１
2018200731.tif 000002
【特許請求の範囲】
【請求項１】
複数の制御対象機器との間でデータを遣り取りすることにより前記複数の制御対象機器の動作を制御するための制御装置であって、
前記複数の制御対象機器の少なくとも一部は、各々が複数のグループのいずれかに所属するように分類されており、
前記複数のグループの各々について、所属する制御対象機器を特定するための識別情報、および、同一のグループに所属する制御対象機器に異常が検出されたときの残りの制御対象機器の振る舞いに関する情報を保有する手段と、
前記複数の制御対象機器の動作に係るユーザプログラムが実行されるときに前記複数の制御対象機器との間で遣り取りされるデータに基づいて、前記複数の制御対象機器の各々の異常を検出する手段と、
前記複数の制御対象機器のいずれかに異常が検出されたときに、前記識別情報を参照することにより、異常が検出された制御対象機器が所属するグループである異常グループを特定する手段と、
前記振る舞いに関する情報を参照することにより、前記異常グループの動作を制御する手段とを備える、制御装置。
【請求項２】
前記異常グループの動作を制御する手段は、
前記異常グループに所属する制御対象機器のすべての運転を停止する第１の動作と、
前記異常が検出された制御対象機器の運転を停止するとともに、異常の要因が除去された後に前記制御装置において所定の異常解除条件が成立するまでの間、残りの制御対象機器の運転を継続する第２の動作と、
異常の要因が除去されるまでの間、前記異常が検出された制御対象機器の運転を一時的に停止するとともに、残りの制御対象機器の運転を継続する第３の動作とのうちのいずれかを選択する、請求項１に記載の制御装置。
【請求項３】
前記複数のグループの各々について、自己のグループの動作を別のグループの動作に応じて制御するための依存関係に関する情報を保有する手段と、
前記依存関係に関する情報を参照することにより、前記異常グループの動作に応じて、前記異常グループ以外の残りの制御グループの動作を制御する手段とをさらに備える、請求項１または２に記載の制御装置。
【請求項４】
前記ユーザプログラムは、前記複数のグループの各々について、自己のグループの動作を別のグループの動作に応じて制御するための依存関係をプログラミングすることが可能に構成されており、
前記ユーザプログラムを実行することにより、前記異常グループの動作に応じて、前記異常グループ以外の残りの制御グループの動作を制御する手段をさらに備える、請求項１または２に記載の制御装置。
【請求項５】
前記残りの制御グループの動作を制御する手段は、前記異常グループの運転が停止したときに、前記残りの制御グループの各々について、運転を停止するか継続するかを選択する、請求項３または４に記載の制御装置。
【請求項６】
前記ユーザプログラムを含む複数のタスクに前記複数のグループをそれぞれ割り付ける手段をさらに備える、請求項１から５のいずれか１項に記載の制御装置。
【請求項７】
前記複数の制御対象機器の各々における前記信号の入出力タイミングを、前記グループ単位で制御する手段をさらに備える、請求項１から６のいずれか１項に記載の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の制御対象機器とデータを遣り取りすることにより、複数の制御対象機器の動作を制御するための制御装置に関する。
【背景技術】
【０００２】
多くの生産現場で使用される機械や設備は、典型的には、プログラマブルコントローラ（Programmable  Logic  Controller；以下「ＰＬＣ」とも称す）などの制御装置を主たる構成とした制御システムによって制御される。このような制御装置で実行される制御プログラムは、典型的には、ユーザがサポート装置と称される情報処理装置を操作して設計することで生成される。このようなユーザによって自由に設計・作成されるプログラムをユーザプログラムとも称す。特許文献１は、このようなサポート装置によって提供される機能の一例を開示する。
【０００３】
特許文献１には、ＰＬＣによって使用されるラダープログラムで記述されたインターロック回路を、運転監視用のインターロック画面として表示するために、ＣＳＶ（Comma  Separated  Values）ファイルに変換する技術が開示される。この技術では、インターロック回路のテキスト形式のプログラムから入力要素を抽出し、入力要素毎に、コメント、変数名、接点種別、インターロック画面における表示位置等の情報を特定し、これらの情報からなる画面表示用ＣＳＶファイルを作成する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１１７８０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載される技術では、例えば、ＩＯ（Input／Output）ユニットに入力される値および／または出力される値を変数で定義することができる。このような変数を用いることで、インターロック回路のラダープログラムを容易に作成することができる。
【０００６】
しかしながら、生産設備の高速化および大規模化に伴ない、工程の数や各工程で使用される機構の数が増えると、ＰＬＣとデータを遣り取りする制御対象機器（ＩＯユニットなどのデバイス）が膨大な数となる。このため、ＰＬＣにおいて使用される変数も激増することになり、ユーザ（開発者など）にとって、ユーザプログラムの設計の難易度が著しく高くなるという課題があった。
【０００７】
また、ユーザプログラムを作成した後に、新たなデバイスが追加されたり、ネットワーク構成が変更されたりした場合には、既に作成したユーザプログラムを見直して、対応する部分を変更する必要が生じるため、ユーザプログラムの修正に多大な作業工数が費やされるという課題があった。
【０００８】
さらに、複数の制御システムの間で、対象となる工程または機構の一部が共通している場合であっても、膨大な変数を用いて作成されたユーザプログラムから共通部分を抽出することは容易でないため、ユーザプログラムの設計作業の効率化を図ることが難しいという課題があった。
【０００９】
また、ＰＬＣにおいては、膨大な数のデバイスを一元化して管理しているため、各デバイスがどの工程のどの機構を構成しているのかを特定することが困難となっていた。そのため、いずれかのデバイスに異常が検出された場合において、フェイルセーフ機能やインターロック機能を簡易に実現することができないという課題があった。
【００１０】
この発明は、このような問題点を解決するためになされたものであって、その目的は、複数の制御対象機器とデータを遣り取りする制御装置において、制御対象機器の数が増加しても、制御装置の開発の簡素化を実現することである。
【課題を解決するための手段】
【００１１】
本発明のある局面によれば、複数の制御対象機器との間でデータを遣り取りすることにより複数の制御対象機器の動作を制御するための制御装置であって、複数の制御対象機器の少なくとも一部は、各々が複数のグループのいずれかに所属するように分類されている。制御装置は、複数のグループの各々について、所属する制御対象機器を特定するための識別情報、および、同一のグループに所属する制御対象機器に異常が検出されたときの残りの制御対象機器の振る舞いに関する情報を保有する手段と、複数の制御対象機器の動作に係るユーザプログラムが実行されるときに複数の制御対象機器との間で遣り取りされるデータに基づいて、複数の制御対象機器の各々の異常を検出する手段と、複数の制御対象機器のいずれかに異常が検出されたときに、識別情報を参照することにより、異常が検出された制御対象機器が所属するグループである異常グループを特定する手段と、振る舞いに関する情報を参照することにより、異常グループの動作を制御する手段とを備える。
【００１２】
好ましくは、異常グループの動作を制御する手段は、異常グループに所属する制御対象機器のすべての運転を停止する第１の動作と、異常が検出された制御対象機器の運転を停止するとともに、異常の要因が除去された後に制御装置において所定の異常解除条件が成立するまでの間、残りの制御対象機器の運転を継続する第２の動作と、異常の要因が除去されるまでの間、異常が検出された制御対象機器の運転を一時的に停止するとともに、残りの制御対象機器の運転を継続する第３の動作とのうちのいずれかを選択する。
【００１３】
好ましくは、制御装置は、複数のグループの各々について、自己のグループの動作を別のグループの動作に応じて制御するための依存関係に関する情報を保有する手段と、依存関係に関する情報を参照することにより、異常グループの動作に応じて、異常グループを以外の残りの制御グループの動作を制御する手段とをさらに備える。
【００１４】
好ましくは、ユーザプログラムは、複数のグループの各々について、自己のグループの動作を別のグループの動作に応じて制御するための依存関係をプログラミングすることが可能に構成されている。制御装置は、ユーザプログラムを実行することにより、異常グループの動作に応じて、異常グループ以外の残りの制御グループの動作を制御する手段をさらに備える。
【００１５】
好ましくは、残りの制御グループの動作を制御する手段は、異常グループの運転が停止したときに、残りの制御グループの各々について、運転を停止するか継続するかを選択する。
【００１６】
好ましくは、制御装置は、ユーザプログラムを含む複数のタスクに複数のグループをそれぞれ割り付ける手段をさらに備える。
【００１７】
好ましくは、制御装置は、複数の制御対象機器の各々における信号の入出力タイミングを、グループ単位で制御する手段をさらに備える。
【発明の効果】
【００１８】
この発明によれば、複数の制御対象機器とデータを遣り取りする制御装置において、制御対象機器の数が増加しても、制御装置の開発を簡素化することができる。
【図面の簡単な説明】
【００１９】
【図１】本実施の形態に係る制御システムのシステム構成を示す模式図である。
【図２】本実施の形態に係るＰＬＣの主要部を示すハードウェア構成を示す模式図である。
【図３】本実施の形態に係るＰＬＣのソフトウェア構成を示す模式図である。
【図４】本実施の形態に係るＰＬＣに接続して用いられるサポート装置のハードウェア構成を示す模式図である。
【図５】本実施の形態に係る制御システムにおけるグルーピング機能の概念を説明するための図である。
【図６】本実施の形態に係るサポート装置において設定されるグループ構成情報を説明するための模式図である。
【図７】本実施の形態に係るサポート装置において設定されるグループ振る舞い情報を説明するための図である。
【図８】本実施の形態に係るサポート装置において設定されるグループ振る舞い情報を説明するための模式図である。
【図９】本実施の形態に係るサポート装置において設定されるグループ依存情報を説明するための図である。
【図１０】本実施の形態に係るサポート装置において設定されるグループ依存情報を説明するための図である。
【図１１】本実施の形態に係るサポート装置において設定されるグループ依存情報を説明するための模式図である。
【図１２】本実施の形態に係るサポート装置において生成されるユーザプログラムの一例を示す図である。
【図１３】本実施の形態に係るＰＬＣで実行されるデバイス制御の処理手順を示すフローチャートである。
【図１４】本実施の形態に係るＰＬＣで実行されるデバイス制御の処理手順を示すフローチャートである。
【発明を実施するための形態】
【００２０】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００２１】
＜Ａ．システム構成＞
まず、本実施の形態に係る制御システムのシステム構成について説明する。本実施の形態においては、機械や設備などの制御対象を制御するプログラマブルコントローラ（ＰＬＣ）を制御装置の典型例として説明を行なう。但し、本発明に係る制御装置は、ＰＬＣに限られることなく、各種の制御装置へ適用可能である。
【００２２】
図１は、本実施の形態に係る制御システム１のシステム構成を示す模式図である。図１を参照して、制御システム１は、ＰＬＣ１００と、ＰＬＣ１００に接続されるサポート装置３００とを含む。ＰＬＣ１００は、サポート装置３００によって生成されるユーザプログラムを周期的またはイベント的に実行する。サポート装置３００は、ＰＬＣ１００において実行されるユーザプログラムを生成する情報処理装置の典型例である。
【００２３】
サポート装置３００は、接続ケーブル１１４を介してＰＬＣ１００に接続可能になっている。サポート装置３００は、後述するようなユーザプログラムの生成、ＰＬＣ１００へのユーザプログラムの転送、各種パラメータの設定、モニタ、デバッグなどの機能を提供する。ＰＬＣ１００とサポート装置３００との間は、典型的には、ＵＳＢ（Universal  Serial  Bus）規格に従って通信可能に構成される。
【００２４】
ＰＬＣ１００は、制御演算を実行するＣＰＵユニット１０４と、１つ以上の機能ユニット１０６とを含む。これらの機能ユニットは、典型的には、ＩＯユニット、通信ユニット、サーボユニットなどを含み、ＰＬＣシステムバス（図示しない）を介して、データを互いに遣り取りできるように構成される。また、これらの機能ユニットには、電源ユニット１０２によって適切な電圧の電源が供給される。
【００２５】
制御システム１において、ＰＬＣ１００は、機能ユニット１０６を介して、および／または、フィールドバス１１０を介して、各種のフィールド機器との間でデータを遣り取りする。これらのフィールド機器は、制御対象に対して何らかの処理を行うためのアクチュエータや、制御対象から各種情報を取得するためのセンサなどを含む。図１には、このようなフィールド機器の一例として、検出スイッチ１０およびリレー２０を示す。また、ＰＬＣ１００は、フィールドバス１１０を介して、１つ以上のリモートＩＯ装置２００とも接続されている。リモートＩＯ装置２００は、基本的には、機能ユニット１０６と同様に、一般的な入出力処理に関する処理を行う。
【００２６】
フィールドバス１１０としては、任意の種類のバス方式を採用することができる。例えば、フィールドバス１１０として、各種の産業用イーサネット（登録商標）を用いることができる。産業用イーサネット（登録商標）としては、例えば、ＥｔｈｅｒＣＡＴ（登録商標）、ＰＲＯＦＩＮＥＴ  ＩＲＴ、ＭＥＣＨＡＴＲＯＬＩＮＫ（登録商標）−ＩＩＩ、Ｐｏｗｅｒｌｉｎｋ、ＳＥＲＣＯＳ（登録商標）−ＩＩＩ、ＣＩＰ  Ｍｏｔｉｏｎなどがある。さらに、産業用イーサネット（登録商標）以外のフィールドネットワークを用いてもよい。例えば、ＤｅｖｉｃｅＮｅｔ、ＣｏｍｐｏＮｅｔ（登録商標）などを用いてもよい。
【００２７】
リモートＩＯ装置２００は、ＰＬＣ１００とフィールドバス１１０を介して接続される複数のリモート装置の典型例である。ＰＬＣ１００は、これらのリモートＩＯ装置２００との間でデータを遣り取りする。
【００２８】
より具体的には、リモートＩＯ装置２００は、フィールドバス１１０でのデータ伝送に係る処理を行うための通信カプラ２０２と、１つ以上の機能ユニット２０４とを含む。これらの機能ユニットは、リモートＩＯ装置バス（図示しない）を介して、データを互いに遣り取りできるように構成される。すなわち、ＰＬＣ１００は、リモートＩＯ装置２００に対してバス通信する通信マスタ機能を備えている。また、リモートＩＯ装置２００は、ＰＬＣの通信マスタ機能との間でバス通信機能、つまり、ＰＬＣに従って制御される通信スレーブ機能を備えている。
【００２９】
＜Ｂ．ＰＬＣ１００の構成＞
次に、本実施の形態に係るＰＬＣ１００の構成について説明する。図２は、本実施の形態に係るＰＬＣ１００の主要部を示すハードウェア構成を示す模式図である。図３は、本実施の形態に係るＰＬＣ１００のソフトウェア構成を示す模式図である。
【００３０】
図２を参照して、ＰＬＣ１００のＣＰＵユニット１０４のハードウェア構成について説明する。ＣＰＵユニット１０４は、プロセッサ１２０と、チップセット１２２と、システムクロック１２４と、主メモリ１２６と、不揮発性メモリ１２８と、ＵＳＢコネクタ１３０と、ＰＬＣシステムバスコントローラ１４０と、フィールドバスコントローラ１５０と、メモリカードインターフェイス１７０とを含む。チップセット１２２と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。
【００３１】
プロセッサ１２０およびチップセット１２２は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、プロセッサ１２０は、チップセット１２２から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット１２２は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、プロセッサ１２０に必要な命令コードを生成する。システムクロック１２４は、予め定められた周期のシステムクロックを発生してプロセッサ１２０に提供する。チップセット１２２は、プロセッサ１２０での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
【００３２】
ＣＰＵユニット１０４は、記憶手段として、主メモリ１２６および不揮発性メモリ１２８を有する。主メモリ１２６は、揮発性の記憶領域であり、プロセッサ１２０で実行されるべき各種プログラムを保持するとともに、各種プログラムの実行時の作業用メモリとしても使用される。不揮発性メモリ１２８は、ＯＳ（Operating  System）、システムプログラム、ユーザプログラム、データ定義情報、ログ情報、および後述するグループ情報などを不揮発的に保持する。
【００３３】
ＵＳＢコネクタ１３０は、サポート装置３００とＣＰＵユニット１０４とを接続するためのインターフェイスである。典型的には、サポート装置３００から転送される実行可能なプログラムなどは、ＵＳＢコネクタ１３０を介してＣＰＵユニット１０４に取込まれる。
【００３４】
ＣＰＵユニット１０４は、通信手段として、ＰＬＣシステムバスコントローラ１４０、フィールドバスコントローラ１５０、および上位通信コントローラ１６０を有する。これらの通信回路は、データの送信および受信を行う。
【００３５】
ＰＬＣシステムバスコントローラ１４０は、ＰＬＣシステムバス１０８を介したデータの遣り取りを制御する。より具体的には、ＰＬＣシステムバスコントローラ１４０は、バッファメモリ１４２と、ＰＬＣシステムバス制御回路１４４と、ＤＭＡ（Direct  Memory  Access）制御回路１４６とを含む。ＰＬＣシステムバスコントローラ１４０は、ＰＬＣシステムバスコネクタ１４８を介してＰＬＣシステムバス１０８と接続される。
【００３６】
フィールドバスコントローラ１５０は、バッファメモリ１５２と、フィールドバス制御回路１５４と、ＤＭＡ制御回路１５６とを含む。フィールドバスコントローラ１５０は、フィールドバスコネクタ１５８を介してフィールドバス１１０と接続される。
【００３７】
メモリカードインターフェイス１７０は、ＣＰＵユニット１０４に対して着脱可能なメモリカード１７２とプロセッサ１２０とを接続する。
【００３８】
次に、図３を参照して、本実施の形態に係るＰＬＣ１００が提供する各種機能を実現するためのソフトウェア構成について説明する。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、ＣＰＵユニット１０４のプロセッサ１２０によって実行される。
【００３９】
図３を参照して、ＣＰＵユニット１０４で実行されるソフトウェアとしては、ＯＳ１８０と、システムプログラム１８８と、ユーザプログラム１８６との３階層になっている。
【００４０】
ＯＳ１８０は、プロセッサ１２０がシステムプログラム１８８およびユーザプログラム１８６を実行するための基本的な実行環境を提供する。
【００４１】
システムプログラム１８８は、ＰＬＣ１００としての基本的な機能を提供するためのソフトウェア群である。具体的には、システムプログラム１８８は、シーケンス命令プログラム１９０と、ＤＢ（データベース）アクセス処理プログラム１９２と、入出力処理プログラム１９４と、Ｔｏｏｌインターフェイス処理プログラム１９６と、スケジューラ１９８とを含む。一方、ユーザプログラム１８６は、制御対象に対する制御目的に応じて任意に作成されたプログラムである。
【００４２】
ユーザプログラム１８６は、シーケンス命令プログラム１９０と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム１８６は、シーケンス命令プログラム１９０によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。
【００４３】
データ定義情報１８２は、ユーザプログラム１８６などが実行される際に、参照されるデータ（入力データ、出力データ、内部データ）をユニークな変数として扱うための定義を含む。稼動ログ１８４には、システムプログラム１８８およびユーザプログラム１８６の実行に伴って、予め定められた事象が発生した際に、当該発生した事象の情報が時刻情報と関連付けて格納される。これにより、事象の発生源とともに、事象が発生した順序を特定することができる。
【００４４】
グループ情報１８５は、制御システム１で使用される複数のデバイスをグルーピングすることにより、グループを１制御単位として制御するための情報である。グループ情報１８５の詳細については後述する。
【００４５】
以下、各プログラムについてより詳細に説明する。
シーケンス命令プログラム１９０は、ユーザプログラム１８６の実行に伴って、ユーザプログラム１８６内で指定されているシーケンス命令の実体を呼び出して、その命令の内容を実現するための命令コード群を含む。
【００４６】
ＤＢアクセス処理プログラム１９２は、ユーザプログラム１８６の実行に伴って、データベース装置へアクセスするために必要な処理を実現するための命令コード群を含む。
【００４７】
入出力処理プログラム１９４は、機能ユニット１０６や各種のフィールド機器との間で、入力データの取得および出力データの送信を管理するためのプログラムである。
【００４８】
Ｔｏｏｌインターフェイス処理プログラム１９６は、サポート装置３００との間でデータを遣り取りするためのインターフェイスを提供する。
【００４９】
スケジューラ１９８は、予め定められた優先度やシステムタイマの値などに従って、制御プログラムを実行するためのスレッドやプロシージャを生成する。
【００５０】
ユーザプログラム１８６は、上述したように、ユーザにおける制御目的（たとえば、対象のラインやプロセス）に応じて作成される。ユーザプログラム１８６は、典型的には、ＣＰＵユニット１０４のプロセッサ１２０で実行可能なオブジェクトプログラム形式になっている。ユーザプログラム１８６は、サポート装置３００などにおいて、ラダー形式やファンクションブロック形式、またはＰＬＣ用のプログラム言語であるＩＥＣ６１１３１−３で記述されたソースプログラムがコンパイルされることで生成される。なお、ＩＥＣ６１１３１−３は、ＬＤ（ラダーダイヤグラム）、ＳＦＣ（シーケンシャルファンクションチャート）、ＦＢＤ（ファンクションブロックダイアグラム）、ＳＴ（ストラクチャードテキスト）およびＩＬ（インストラクションリスト）の５種類のプログラム言語である。生成されたオブジェクトプログラム形式のユーザプログラムは、サポート装置３００からＣＰＵユニット１０４へ転送され、不揮発性メモリ１２８などに格納される。
【００５１】
＜Ｃ．リモートＩＯ装置２００の構成＞
次に、本実施の形態に係るリモートＩＯ装置２００の構成について説明する。リモートＩＯ装置２００は、図２に示すＰＬＣ１００のハードウェア構成と類似したハードウェア構成を有している。但し、リモートＩＯ装置２００ではユーザプログラムを実行する必要がないので、プロセッサ１２０などの演算処理を行う部分を簡素化することもできる。
【００５２】
リモートＩＯ装置２００は、通信カプラ２０２と、内部バス（図示しないリモートＩＯ装置バス）を介して通信カプラ２０２と接続される１つ以上の機能ユニット２０４とを含む。機能ユニット２０４は、ＣＰＵユニット１０４に接続される機能ユニット１０６と同様であるので、詳細な説明は繰り返さない。
【００５３】
＜Ｄ．サポート装置３００の構成＞
次に、本実施の形態に係るサポート装置３００について説明する。サポート装置３００は、ＰＬＣ１００のＣＰＵユニット１０４の使用を支援するためのものであり、ＰＬＣ１００との間で各種パラメータの設定、プログラミング、モニタ、デバッグなどの機能を提供する。
【００５４】
図４は、本実施の形態に係るＰＬＣ１００に接続して用いられるサポート装置３００のハードウェア構成を示す模式図である。サポート装置３００は、典型的には、汎用のコンピュータで構成される。
【００５５】
図４を参照して、サポート装置３００は、ＯＳを含む各種プログラムを実行するＣＰＵ３０２と、ＢＩＯＳや各種データを格納するＲＯＭ（Read  Only  Memory）３０４と、ＣＰＵ３０２でのプログラムの実行に必要なデータを格納するための作業領域を提供するＲＡＭ３０６と、ＣＰＵ３０２で実行されるプログラムなどを不揮発的に格納するハードディスク（ＨＤＤ）３０８とを含む。より具体的には、ハードディスク３０８には、サポート装置３００が提供する機能を実現するためのサポートプログラム３３０が格納されている。なお、ハードディスク３０８に代えて、ソリッドステートデバイス（ＳＳＤ）を用いてもよい。
【００５６】
サポート装置３００は、さらに、ユーザからの操作を受け付けるキーボード３１０およびマウス３１２と、情報をユーザに提示するためのモニタ３１４とを含む。さらに、サポート装置３００は、ＰＬＣ１００（ＣＰＵユニット１０４）などと通信するための通信インターフェイス（ＩＦ）３１８を含む。
【００５７】
サポート装置３００で実行されるサポートプログラム３３０などは、光学記録媒体３５０に格納されて流通する。光学記録媒体３５０に格納されたプログラムは、光学ディスク読取装置３１６によって読み取られ、ハードディスク３０８などへ格納される。あるいは、上位のホストコンピュータなどからネットワークを通じてサポートプログラム３３０をダウンロードするように構成してもよい。
【００５８】
＜Ｅ．ユーザプログラムの生成機能＞
次に、本実施の形態に係るサポート装置３００が提供するユーザプログラムの生成機能について説明する。
【００５９】
（ｅ１：概要）
本実施の形態に係る制御システムは、ＰＬＣ１００（ＣＰＵユニット１０４）とデータを遣り取りする複数のデバイス（制御対象機器）をグルーピングすることが可能に構成される。なお、本実施の形態において、「デバイス」とは、ＰＬＣ１００のＣＰＵユニット１０４とＰＬＣシステムバス１０８を介してデータの遣り取りをする機能ユニット１０６や各種フィールド機器、およびＰＬＣ１００にフィールドバス１１０を介して接続されるリモートＩＯ装置２００（機能ユニット２０４）をいう。
【００６０】
本実施の形態においては、複数のデバイスをグルーピングすることにより、ＰＬＣ１００が行なう各デバイスの制御を、グループ単位で行なうことを可能とする。本実施の形態に係るサポート装置３００は、複数のデバイスをグルーピングするためのユーザインターフェイスを提供する。
【００６１】
図５は、本実施の形態に制御システムにおけるグルーピング機能の概念を説明するための図である。
【００６２】
図５を参照して、本実施の形態に係る制御システムが、複数の工程を備えた生産ラインを制御対象とする場合を想定する。複数の工程の各々は、１つまたは複数の機構から構成されている。機構は、生産ラインで使用される機械や設備などを含む。たとえば、第２工程は、第１機構、第２機構、第３機構および第４機構を用いて構成されている。第１機構、第２機構、第３機構、第４機能の順番で運転させることにより、第２工程が実行される。なお、第１機構〜第４機構の各々は、同一の構成を有する機構を複数並行して運転させることも可能である。単一の機構では生産能力が低い場合には、複数の同一の機構を並行して運転させることにより、生産ライン全体の生産能力を維持することができる。
【００６３】
第１機構〜第４機構の各々の運転を制御するために、１つまたは複数のデバイスが使用される。図５では、第１機構および第３機構の各々に使用されるデバイスが代表的に示されている。デバイスは、ＰＬＣ１００の機能ユニット１０６、リモートＩＯ装置２００の機能ユニット２０４、および第１機構に対応して設けられた各種フィールド機器（アクチュエータやセンサなど）を含む。なお、各デバイスは、バスを介してＰＬＣ１００（ＣＰＵユニット１０４）と接続されている。ＰＬＣ１００は、これら複数のデバイスとの間でデータを遣り取りする。
【００６４】
第１機構〜第４機構の各々は、対応する１つまたは複数のデバイスが期待通り（すなわち、設計通り）に動作することによって機構の運転が成立するように構成されている。デバイスが設計通りに動作できない要因（異常要因）には、ＰＬＣ１００との通信に異常が発生したことや、デバイス自体にハードウェアまたはソフトウェアの故障等の異常が発生したことなどがある。なお、一般的に、一時的な通信の異常は、機構の運転を継続できる程度の軽微な異常に該当し、デバイス自体の故障は、機構の運転の継続が不可能となる重大な異常に該当する。
【００６５】
ただし、軽微な異常であっても、機構によっては重大な故障として扱うべき場合がある。たとえば、複数のデバイスから入力される値に基づいて対象物の温度を監視する温度監視装置においては、１つのデバイスに通信異常が生じると監視性能を維持できなくなるため、機構の運転が成立しなくなる。したがって、前記温度監視装置において、通信異常は重大な故障として扱われる。このように、異常が軽微なものか重大なものかについての判断基準は機構ごとに異なってくる。
【００６６】
ここで、機構に使用されるデバイスに重大な異常が生じた場合には、機構の運転を成立させることが困難となるため、当該機構に使用される全てのデバイスの動作を停止させる必要が生じる。一方、機構に使用されるデバイスに軽微な異常が生じた場合には、当該機構に使用される残りのデバイスを動作させることによって機構の運転を継続させることができる。すなわち、異常が発生した後の機構が採るべき振る舞いは、デバイスの異常の内容に左右される。
【００６７】
また、デバイスの重大な故障に起因して機構の運転を停止させたことによって、当該機構を含む工程の実行が困難となる場合がある。この場合には、当該工程が実行停止となるため、当該工程の上流側の工程の運転を停止させることによって二次的な故障を回避する必要が生じる。一方、当該工程の下流側の工程については、仕掛り中の生産物を完成させるために、一定時間運転を継続させる必要がある。ただし、図５の第２機構のように、複数の機構が並行して運転している構成であれば、複数の機構のうちの１つが運転を停止しても他の機構の運転によって工程を継続して実行できる場合がある。
【００６８】
このように、生産ラインの制御システムに使用される複数のデバイスのいずれかに異常が発生した場合には、デバイスの異常の内容（軽微な異常か重大な異常か）や、異常が生じたデバイスの属性（デバイスが使用される機構および工程）に応じて、ＰＬＣ１００が実行すべき制御処理が複数通り想定される。したがって、生産ラインの大規模化によって工程の数および／または各工程を構成する機構の数が増加すると、使用されるデバイスも膨大な数となるため、制御処理がさらに複雑化してしまう。
【００６９】
従来のアプリケーションでは、デバイスの異常の内容やデバイスの属性を考慮して、種々の制御処理を盛り込むようにユーザプログラムを作成する必要があった。そのため、制御システムで使用されるデバイスの数が増えると、ユーザプログラムの設計の難易度が著しく高くなるという課題があった。
【００７０】
そこで、本実施の形態においては、制御システムに使用される複数のデバイスをグルーピングする。これにより、グループを１制御単位としたユーザプログラムの設計、およびＰＬＣ１００におけるグループを１制御単位とした制御処理の実行を可能とする。
【００７１】
具体的には、本実施の形態に係るサポート装置３００は、制御システムに使用される複数のデバイスをグルーピングするためのインターフェイスを提供する。これにより、ユーザは、たとえば、図５に示すように、１つの機構に使用される１つまたは複数のデバイスを１つのグループに設定することができる。あるいは、ユーザは、１つの工程に使用される１つまたは複数のデバイスを１つのグループに設定することができる。すなわち、ユーザは、制御目的（たとえば、対象の生産ラインや工程）に応じて、任意にグループを設定することができる。
【００７２】
このように複数のデバイスをグルーピングすることにより、サポート装置３００では、複数のグループの各々を変数で定義することができる。これにより、ユーザは、グループを示す変数を用いて、ユーザプログラムを作成することができる。
【００７３】
具体的には、１つの機構（または工程）に使用される１つまたは複数のデバイスを１つのグループに設定した場合には、当該機構（または工程）に使用されるデバイスを対象とする処理を、「グループを示す変数」を用いてプログラミングすることができる。この変数によって参照されるグループ情報は、ユーザが設定する制御システムの構成に応じて適宜更新されるようになっている。すなわち、サポート装置３００は、「グループを示す変数」と、変数によって参照されるグループ情報との対応関係を逐次更新する。
【００７４】
これによれば、グループを特定する変数を用いてユーザプログラムを作成しておけば、当該グループに対応する機構（または工程）に使用されるデバイスが変更されたとしても、ユーザプログラムに対する変更が不要となる。
【００７５】
また、複数の制御システムの間で、対象となる機構（または工程）の一部が共通している場合には、ユーザプログラムを設計する際に、他の制御システムのユーザプログラムから共通する部分を流用しやすくなる。これにより、ユーザプログラムの設計作業の効率を高めることができるため、ＰＬＣ１００の開発の簡素化を実現することができる。
【００７６】
（ｅ２：処理手順およびユーザインターフェイス）
次に、本実施の形態に係るサポート装置３００が提供するユーザプログラムの生成機能のより詳細な処理手順について説明する。
【００７７】
サポート装置３００は、ユーザが任意に設計するユーザプログラムを、グループ情報および変数テーブルとともにコンパイルすることで、実行可能なユーザプログラムを生成する。グループ情報は、グループについての構成情報（以下、「グループ構成情報」とも称す）と、グループに所属するデバイスに異常が生じたときのグループとして採るべき振る舞いに関する情報（以下、「グループ振る舞い情報」とも称す）と、自己のグループの動作を別のグループの動作に応じて制御するための依存関係に関する情報（以下、「グループ依存情報」とも称する。）とを含む。グループ情報は、本実施の形態に係るサポート装置３００が提供する複数のデバイスをグルーピングするためのユーザインターフェイスを用いて、ユーザが任意に設定することができる。
【００７８】
（ｅ２．１  グループ構成情報）
図６は、本発明の実施の形態に係るサポート装置３００において設定されるグループ構成情報を説明するための模式図である。グループ構成情報は、各グループについて、グループ名を示す情報、およびグループに所属するデバイスを特定するための識別情報（以下、「デバイス識別情報」とも称する。）を含む。デバイス識別情報は、デバイス名を示す情報と、デバイスを特定するためのアドレス情報とを含む。アドレス情報は、デバイスがどのネットワークに接続されているかを示すネットワークアドレスと、当該デバイスをネットワーク上で特定するためのノードアドレスとから構成される。
【００７９】
この例では、グループ名が「Ｇｒｏｕｐ１」であるグループには、それぞれのデバイス名が「Ｄｅｖｉｃｅ  ａａ」，「Ｄｅｖｉｃｅ  ｂｂ」，「Ｄｅｖｉｃｅ  ｃｃ」である３つのデバイスが所属していることを示している。また、３つのデバイスのうちの、デバイス名が「Ｄｅｖｉｃｅ  ａａ」であるデバイスは、ネットワークアドレスが「Ｎｅｔｗｏｒｋ１」であり、ノードアドレスが「ｎｏｄｅ  ♯１」であることを示している。
【００８０】
なお、ユーザは、サポート装置３００が提供するグループを設定するためのユーザインターフェイス画面において、各グループに所属するデバイスを任意に設定することができる。具体的には、ユーザは、ユーザインターフェイス画面への入力操作によって、デバイスの一覧表示の中から各グループに所属するデバイスを選択し、必要な設定値を入力する。具体的には、ユーザは、少なくとも、グループ名、デバイス名、ネットワークアドレスおよびノードアドレスを設定する。
【００８１】
（ｅ２．２  グループ振る舞い情報）
図７は、本実施の形態に係るサポート装置３００において設定されるグループ振る舞い情報を説明するための図である。
【００８２】
図７を参照して、グループ振る舞い情報は、異常が生じたデバイスの振る舞いに関する情報と、異常が生じたデバイスが所属するグループの残りのデバイスの振る舞いに関する情報と、当該グループを異常状態から復旧させるための条件に関する情報とを含む。以下の説明では、異常が生じたデバイスを「異常デバイス」と表記し、異常デバイスが所属するグループを「異常グループ」と表記する。
【００８３】
異常グループの振る舞いとして、ユーザは、デバイスの異常内容などに応じて、「運転停止」、「縮退運転」および「継続運転」のうちのいずれかを選択することができる。「運転停止」とは、異常デバイスおよび異常グループの残りのデバイスの運転を停止させることを意味する。すなわち、運転停止は、異常グループの所属するすべてのデバイスの運転を停止させることを表わしている。たとえば、１つの機構に使用される複数のデバイスが１つのグループに設定されている構成においては、当該複数のデバイスのいずれかに重大な異常が生じた場合には、異常グループの振る舞いとして運転停止が選択される。なお、運転停止からの復旧の条件としては、異常デバイスから異常要因が除去された後、ユーザによるリセット操作のように、機構の外部から異常解除が明示されたことが定められている。
【００８４】
「縮退運転」とは、異常デバイスの運転を停止させる一方で、異常グループの残りのデバイスの運転を継続させることを意味する。たとえば、１つの機構に使用される複数のデバイスが１つのグループに設定されている構成において、当該複数のデバイスのいずれかに軽微な異常が生じたときには、異常グループである機構の振る舞いとして縮退運転が選択される。なお、縮退運転からの復旧の条件としては、異常デバイスから異常要因が除去された後、所定の異常解除条件が成立したことが定められている。この異常解除条件として、たとえば、ユーザによるリセット操作のように、機構の外部から異常解除が明示されたことが定められている。
【００８５】
「継続運転」とは、上記の縮退運転と同様に、異常デバイスの運転を一時停止させる一方で、異常グループの残りのデバイスの運転を継続させることを意味する。継続運転と縮退運転とは、復旧の条件が異なっている。継続運転からの復旧の条件としては、異常デバイスから異常要因が除去されると、自動的に復旧することが定められている。
【００８６】
上記のように、縮退運転および継続運転はともに、デバイスの異常が発生した後においても、異常グループの残りのデバイスの運転を継続させるものである。縮退運転および継続運転のいずれを選択するかについては、異常グループが構成する機構（または工程）の機能や異常デバイスの異常の内容に応じて決定することができる。たとえば、異常グループが、生産ラインの予め定められたエリアに作業者が立ち入ったときに設備の運転を停止させるための安全機構である場合には、ユーザが、危険源が除去されたことを確認してリセット操作を行なうまでは、設備の運転を復旧させるべきではない。したがって、異常グループの振る舞いとして縮退運転が選択される。
【００８７】
一方、異常の内容が一時的な通信異常であった場合には、通信が正常に戻れば、ユーザのリセット操作を待たずに自動的に復旧させることができる。したがって、異常グループの振る舞いとして継続運転が選択される。
【００８８】
図８は、本発明の実施の形態に係るサポート装置３００において設定されるグループ振る舞い情報を説明するための模式図である。
【００８９】
図８を参照して、グループ振る舞い情報は、各グループについて、グループ名を示す情報、およびグループの振る舞いを示す情報を含む。この例では、グループ名が「Ｇｒｏｕｐ１」であるグループは、当該グループに所属するデバイスに異常が生じたときのグループとして採るべき振る舞いが「Ｆａｉｌ-ｓｏｆｔ  Ｏｐｅｒａｔｉｏｎ（縮退運転）」であることを示している。
【００９０】
ユーザは、サポート装置３００が提供するグループを設定するためのユーザインターフェイス画面において、各グループの振る舞いを任意に設定することができる。具体的には、ユーザは、ユーザインターフェイス画面への入力操作によって、「Ｆａｉｌ−ｓｏｆｔ  ｏｐｅｒａｔｉｏｎ」、「Ｓｔｏｐ」（運転停止）、「Ｃｏｎｔｉｎｉｏｕｓ  ｏｐｅｒａｔｉｏｎ」（継続運転）の中から選択することができる。
【００９１】
（ｅ２．３  グループ依存情報）
図９および図１０は、本実施の形態に係るサポート装置３００において設定されるグループ依存情報を説明するための図である。図９および図１０は、１つの機構に使用される１つまたは複数のデバイスを１つのグループに設定した場合を想定している。
【００９２】
図９を参照して、第１機構〜第５機構は、生産ラインの１つの工程を構成している。第１機構、第２機構および第３機構、第４機能、第５機構の順番で運転させることにより、１つの工程が実行される。
【００９３】
第１機構に使用されるデバイスは、グループ名「Ｇｒｏｕｐ１」のグループに所属し、第２機構に使用されるデバイスは、グループ名「Ｇｒｏｕｐ２」のグループに所属している。なお、第４機構がデバイスを全く使用しない機構である場合、グループ名「Ｇｒｏｕｐ４」のグループに所属するデバイスは１つもない。
【００９４】
上述したように、あるグループに所属するデバイスに重大な異常が発生した場合には、この異常グループの振る舞いとして、異常グループに所属するすべてのデバイスの運転を停止させる。そして、異常グループの運転停止に伴ない、デバイスの異常による被害を最小限に留めるために、異常グループの上流側のグループの運転を停止する必要がある。一方、仕掛りの生産物を完成させるために、異常グループの下流側のグループの運転を継続することが好ましい場合がある。このように、グループ間には、自己のグループの運転状態（運転停止／運転継続）が別のグループの運転状態によって決まるという依存関係が存在する。
【００９５】
図１０は、グループ間の依存関係の一例を示したテーブルである。図１０は、複数のグループから任意に選択された２つのグループについて、一方を「主グループ」とし、他方を「従グループ」としたときの依存関係を示したものである。
【００９６】
図１０を参照して、主グループの運転を停止したときに、従グループの運転も停止する場合を「依存」と定義する。一方、主グループの運転を停止しても、従グループの運転を継続する場合を「独立」と定義する。
【００９７】
図１０によれば、グループ名「Ｇｒｏｕｐ１」のグループの運転を停止したとき、「Ｇｒｏｕｐ１」の下流側のグループ（グループ名「Ｇｒｏｕｐ２」、「Ｇｒｏｕｐ３」、「Ｇｒｏｕｐ」）は運転を継続することができる。これに対して、グループ名「Ｇｒｏｕｐ２」のグループの運転を停止したときには、「Ｇｒｏｕｐ２」の上流側のグループ（グループ名「Ｇｒｏｕｐ１」）は運転を停止しなければならない一方で、「Ｇｒｏｕｐ２」と並列するグループ（グループ名「Ｇｒｏｕｐ３」）および「Ｇｒｏｕｐ２」の下流側のグループ（グループ名「Ｇｒｏｕｐ４」）は運転を継続することができる。
【００９８】
図１１は、本発明の実施の形態に係るサポート装置３００において設定されるグループ依存情報を説明するための模式図である。
【００９９】
図１１を参照して、グループ依存情報は、各グループについて、自己のグループが運転を停止したことに応じて運転を停止しなければならない他のグループを特定するための情報を含んでいる。図１１の例では、グループ名が「Ｇｒｏｕｐ１」であるグループについては、自己の運転が停止したときに運転を停止すべき他のグループが１つもない（「Ｎｏｎｅ」）ことを示している。また、グループ名が「Ｇｒｏｕｐ２」であるグループは、自己の運転が停止したときに、グループ名が「Ｇｒｏｕｐ１」のグループの運転を停止すべきことを示している。
【０１００】
ユーザは、サポート装置３００が提供するグループを設定するためのユーザインターフェイス画面において、図１０に示したグループ間の依存関係に基づいて、グループごとに、運転を停止すべき他のグループを設定することができる。具体的には、ユーザは、ユーザインターフェイス画面への入力操作によって、「Ｎｏｎｅ」もしくは、運転を停止すべき他のグループのグループ名を設定することができる。
【０１０１】
（ｅ．２．４  処理手順）
上述のような手順によって、グループ情報（グループ構成情報、グループ振る舞い情報、グループ依存情報）が設定される。ユーザインターフェイス画面上でユーザが設定したグループ情報は、サポート装置３００のハードディスク３０８に格納されるとともに、ＰＬＣ１００内のＣＰＵユニット１０４の不揮発性メモリ１２８（図２）に格納される。
【０１０２】
ユーザプログラムでは、グループ構成情報において設定されたグループを変数として用いることで、対象のグループを特定することができる。すなわち、サポート装置３００は、「グループを示す変数」を利用してユーザプログラムを生成可能なユーザインターフェイスを提供する。
【０１０３】
本実施の形態に係るサポート装置３００は、グループ構成情報に基づいて、変数テーブルを動的に生成／更新する。すなわち、ユーザは、グループ構成情報を作成すれば、ユーザプログラムにおいて利用される変数についての対応関係を定義する変数テーブルが自動的に生成／更新される。より具体的には、ユーザプログラムのコンパイルが要求されると、サポート装置３００は、グループ構成情報に基づいて変数テーブルを生成／更新した上で、実行可能なユーザプログラムを生成する。
【０１０４】
ここで、本実施の形態によれば、グループを特定する変数を用いてユーザプログラムを作成することができるため、ユーザは、図１０に示したグループ間の依存関係をプログラミングすることが可能となる。これによれば、ＰＬＣ１００は、ユーザプログラムに含まれる所定の命令を実行することによって、グループ間の依存関係に従って、各グループの動作を制御および監視することができる。
【０１０５】
図１２は、本実施の形態に係るサポート装置３００において生成されるユーザプログラムの一例を示す図である。この例は、図１０に示したグループ間の依存関係の一部をプログラミングしたものである。詳細には、変数「Ｇｒｏｕｐ１Ｓｔａｔｕｓ」には、グループ名が「Ｇｒｏｕｐ１」であるグループの運転状態が代入される。ユーザプログラムの生成過程において、サポート装置３００は、変数「Ｇｒｏｕｐ１Ｓｔａｔｕｓ」については、グループ構成情報（図６）におけるグループ名「Ｇｒｏｕｐ１」のグループに所属するデバイスのデバイス名（「Ｄｅｖｉｃｅ  ａａ」、「Ｄｅｖｉｃｅ  ｂｂ、「Ｄｅｖｉｃｅ  ｃｃ」）をその初期値とするオブジェクトを生成する。すなわち、コントローラ（サポート装置３００／ＣＰＵユニット１０４）は、変数「Ｇｒｏｕｐ１Ｓｔａｔｕｓ」に「Ｄｅｖｉｃｅ  ａａ」、「Ｄｅｖｉｃｅ  ｂｂ」、「Ｄｅｖｉｃｅ  ｃｃ」をセットする。
【０１０６】
ファンクションブロック「ＧｒｏｕｐＳｔｏｐ」は、グループの運転を停止するという命令を示している。引数「Ｇｒｏｕｐｓ」には運転を停止させたいグループのグループ名を入力する。すなわち、図１２の上側のファンクションブロック「ＧｒｏｕｐＳｔｏｐ」は、グループ名「Ｇｒｏｕｐ２」のグループおよびグループ名「Ｇｒｏｕｐ３」のグループのいずれかが運転停止状態にあるときに、グループ名「Ｇｒｏｕｐ１」のグループの運転を停止させるという命令を表わしている。また、図１２の下側のファンクションブロック「ＧｒｏｕｐＳｔｏｐ」は、グループ名「Ｇｒｏｕｐ４」のグループが運転停止状態にあるときに、グループ名「Ｇｒｏｕｐ３」のグループの運転を停止させるという命令を表わしている。
【０１０７】
ファンクションブロック「ＧｒｏｕｐＳｔｏｐ」において、引数「Ｇｒｏｕｐｓ」に入力されるグループは、図１０に示したグループ間の依存関係に基づいて設定することができる。そして、コントローラ（サポート装置３００／ＣＰＵユニット１０４）は、グループ構成情報に基づいて、変数「Ｇｒｏｕｐ１」、「Ｇｒｏｕｐ３」の値をセットする。コントローラは、たとえば、変数「Ｇｒｏｕｐ３」については、グループ構成情報におけるグループ名「Ｇｒｏｕｐ３」に所属するデバイスのデバイス名「Ｄｅｖｉｃｅ  ｄｄ」、「Ｄｅｖｉｃｅ  ｅｅ」を初期値にセットする。
【０１０８】
このように、ユーザプログラムのコンパイルにおいては、サポート装置３００は、各変数について、指定された変数と同じ名前を有するグループを検索し、当該検索したグループに所属しているデバイスを当該変数の初期値として内部的にセットする。すなわち、サポート装置３００は、「グループを示す変数」を用いてユーザプログラムを作成できる環境を提供する。あるグループを特定する変数を用いてユーザプログラムを作成しておけば、当該グループの構成が変更されたとしても、すなわち、当該グループに所属するデバイスが変更されたとしても、ユーザプログラムを変更する必要がない。
【０１０９】
サポート装置３００は、変数を利用して作成されたソースプログラムから実行可能なユーザプログラムを生成すると、生成したユーザプログラムをＰＬＣ１００（ＣＰＵユニット１０４）へ送信する。
【０１１０】
なお、一旦設計したグループのデバイス構成を変更する場合がある。このような場合において、ユーザは、基本的には、グループ構成情報を変更して再度コンパイルをするだけでよく、ユーザプログラムを変更する必要はない。サポート装置３００は、変更後のグループ構成情報を参照して、変数テーブルを更新し、その更新された変数テーブルに従って、ユーザプログラムから新たなシステム構成に適合した、実行可能なユーザプログラム（オブジェクトプログラム）を生成する。
【０１１１】
＜Ｆ．ＰＬＣ１００のデバイス制御＞
次に、本実施の形態に係るＰＬＣ１００（ＣＰＵユニット１０４）で実行される複数のデバイスの制御について説明する。ＣＰＵユニット１０４によるデバイスの制御は、グループを示す変数を用いて生成されたユーザプログラム、および不揮発性メモリ１２８に格納されたグループ情報１８５によって実現される。以下に説明するように、ＣＰＵユニット１０４は、グループ構成情報およびグループ振る舞い情報に基づいて、異常デバイスおよび異常グループの動作を制御する。また、ＣＰＵユニット１０４は、グループ依存情報に基づいて、異常グループ以外の他のグループの動作を制御する。
【０１１２】
なお、この他のグループの動作の制御については、ＣＰＵユニット１０４は、グループ依存情報に基づく制御に代えて、図１２に示したように、グループ間の依存関係をプログラミングしておくことにより、ユーザプログラムに含まれる命令に基づいた制御を行なうことも可能である。
【０１１３】
図１３および図１４は、本実施の形態に係るＰＬＣ１００（ＣＰＵユニット１０４）で実行されるデバイス制御の処理手順を示すフローチャートである。
【０１１４】
図１３を参照して、ＣＰＵユニット１０４は、ユーザプログラムの実行中、複数のデバイス（機能ユニット１０６、各種フィールド機器およびリモートＩＯ装置２００）とデータの遣り取りを行なう。ＣＰＵユニット１０４は、複数のデバイスとの間で遣り取りされるデータに基づいて、各デバイスの状態を確認する（ステップＳ０１）。ＣＰＵユニット１０４は、デバイスの状態に基づいて、デバイスに異常が発生しているか否かを判断する（ステップＳ０２）。複数のデバイスのいずれにも異常が発生していない場合（ステップＳ０２においてＮＯ）、ＣＰＵユニット１０４は、デバイス制御に関する処理を終了する。
【０１１５】
これに対して、複数のデバイスのうちの１つのデバイスに異常が発生していると判断された場合（ステップＳ０２においてＹＥＳ）、ＣＰＵユニット１０４は、グループ構成情報（図６）を参照して、異常が発生しているデバイス（異常デバイス）が所属するグループ（異常グループ）を特定する（ステップＳ０３）。
【０１１６】
続いて、ＣＰＵユニット１０４は、グループ振る舞い情報（図８）を参照して、異常グループの振る舞いを判断する（ステップＳ０４）。具体的には、ＣＰＵユニット１０４は、グループ振る舞い情報に基づき、異常グループの振る舞いとして、運転停止、縮退運転および継続運転のうちのいずれかを選択する。
【０１１７】
異常グループの振る舞いとして縮退運転または継続運転が選択された場合、ＣＰＵユニット１０４は、異常デバイスの運転を停止する一方で、異常グループに所属する残りのデバイスの運転を継続させる（ステップＳ０６）。
【０１１８】
一方、異常グループの振る舞いとして運転停止が選択された場合には、ＣＰＵユニット１０４はさらに、グループ依存情報（図１１）を参照して、異常グループの運転停止に伴なって運転を停止すべき他のグループを特定する（ステップＳ０７）。なお、運転を停止すべきグループが１つもない場合には、ＣＰＵユニット１０４は、異常デバイスのみ運転を停止させる。この場合、異常デバイスは、図１４に示すように、運転を停止した後、異常要因が除去されるまでの間、または異常解除が明示されるまでの間、復旧待ちの状態となる。
【０１１９】
運転を停止すべき他のグループが特定されると、ＣＰＵユニット１０４は、グループ構成情報を参照して、当該他のグループに所属するデバイスを特定する（ステップＳ０８）。特定されたデバイスは、異常グループ（異常デバイス）の運転停止に伴なって運転を停止すべきデバイスに該当する。すなわち、運転を停止すべきデバイスには、異常グループに所属する残りのデバイスと、運転を停止すべき他のグループに所属するデバイスとが含まれる。
【０１２０】
ＣＰＵユニット１０４は、異常デバイスの運転、および運転を停止すべきデバイスの運転をそれぞれ停止する（ステップＳ０９）。これらのデバイスは、図１４に示すように、運転を停止した後、異常解除が明示されるまでの間、復旧待ちの状態となる。
【０１２１】
図１４を参照して、ＣＰＵユニット１０４は、運転停止しているデバイスについて、復旧条件が成立しているか否かを判定する。具体的には、ＣＰＵユニット１０４は、最初に、異常デバイスから異常要因が除去されたか否かを判断する（ステップＳ１１）。異常デバイスが異常要因が除去されていない場合（ステップＳ１１においてＮＯ）、ＣＰＵユニット１０４は、復旧のための処理に進まず、運転停止しているデバイスを引き続き復旧待ちの状態に維持する。
【０１２２】
これに対して、異常デバイスから異常要因が除去されたと判断された場合には（ステップＳ１１においてＹＥＳ）、ＣＰＵユニット１０４は、グループ構成情報を参照して、異常グループを特定する。続いて、ＣＰＵユニット１０４は、グループ振る舞い情報を参照して、異常グループの振る舞いを判断する（ステップＳ１３）。具体的には、ＣＰＵユニット１０４は、グループ振る舞い情報に基づき、異常グループの振る舞いとして、運転停止、縮退運転および継続運転のうちのいずれが選択されているかを判断する（ステップＳ１４）。
【０１２３】
異常グループの振る舞いとして運転停止または縮退運転が選択されている場合、ＣＰＵユニット１０４は、異常グループに所属し、かつ運転を停止しているデバイスを復旧待ちの状態とする（Ｓ１５）。この状態において、ユーザのリセット操作などによって異常解除が指示されると（ステップＳ１６）、ＣＰＵユニット１０４は、異常グループに所属する全てのデバイスに異常要因がないか否かを判断する（ステップＳ１７）。異常グループが復帰待ちの状態となっている間に、異常デバイス以外のデバイスに新たに異常要因が生じる可能性を考慮したものである。異常グループの他のデバイスに異常要因がある場合（ステップＳ１７においてＮＯ）、ＣＰＵユニット１０４は、復旧のための処理に進まず、運転停止しているデバイスを引き続き復旧待ちの状態に維持する。
【０１２４】
一方、異常グループの他のデバイスに異常要因がない場合（ステップＳ１７においてＹＥＳ）、ＣＰＵユニット１０４は、グループ依存情報を参照して、異常グループの復旧とともに復旧すべき他のグループを特定する（ステップＳ１８）。この復旧すべき他のグループとは、図１３のステップＳ０７の処理によって運転停止すべきグループに特定されたグループに該当する。なお、異常グループの振る舞いが縮退運転の場合、復旧すべき他のグループは１つもなく、異常グループのみが復旧すべきグループとなる。
【０１２５】
復旧すべきグループが特定されると、ＣＰＵユニット１０４は、グループ構成情報を参照して、復旧すべきデバイスを特定する（ステップＳ１９）。異常グループの振る舞いが縮退運転の場合、復旧すべきデバイスは異常デバイスのみとなる。異常グループの振る舞いが運転停止の場合、復旧すべきデバイスには、異常デバイス、異常グループの他のデバイス、および図１３のステップＳ０８により特定された運転を停止すべきデバイスが含まれる。
【０１２６】
最後に、ＣＰＵユニット１０４は、異常デバイスを含む復旧すべきデバイスを運転停止から復旧させる（ステップＳ２０）。
【０１２７】
＜Ｇ．利点＞
本実施の形態によれば、制御装置とデータを遣り取りする複数のデバイスをグルーピングし、グループを特定する変数を用いてユーザプログラムを作成するプログラミング環境が提供される。そのため、制御システムの高速化および大規模化によって膨大な数のデバイスが使用される場合においても、効率的にユーザプログラムを作成することができる。
【０１２８】
また、ユーザプログラムの作成後に、制御システムの変更によってグループに所属するデバイスが変更された場合であっても、それに伴なってユーザプログラムのソースコードを変更する必要がない。そのため、システム構成の変更に対して柔軟に対応することができる。
【０１２９】
また、本実施の形態では、１つの機構（または工程）に使用される複数のデバイスを１つのグループにまとめることにより、複数の制御システムの間で一部の機構（または工程）が共通する場合には、他の制御システムのユーザプログラムから共通部分を流用しやすくなる。これにより、ユーザプログラムの設計作業を効率化できる。この結果、デバイスの数が増加しても、制御装置の開発を簡素化することができる。
【０１３０】
また、制御装置においては、ユーザが設定したグループ情報を参照することによって、複数のデバイスがそれぞれどの工程のどの機構に用いられるのかを容易に特定することができる。このため、複数のデバイスのいずれかに異常が発生した場合のフェイルセーフ機能やインターロック機能を簡易に実現することができる。
【０１３１】
なお、本実施の形態では、複数のデバイスをグルーピングする方法として、１つの機構（または工程）に使用される複数のデバイスを１つのグループにまとめる構成について説明したが、グルーピングの方法はこの構成に限定されるものではない。本願発明におけるグルーピングとは、協働して１つの機能を実現するように構成された複数のデバイスを１つのグループにまとめるものであって、これにより、当該複数のデバイスを、当該機能を実現するモジュールとして扱うことを可能とするものである。したがって、複数のデバイスをどのようにグルーピングするかについては、ユーザ（開発者など）が自由自在に設定することができる。
【０１３２】
さらに、本実施の形態によれば、ユーザプログラムを含む複数のタスクに複数のグループをそれぞれ割り付けることができる。詳細には、ＰＬＣ１００は、サイクルタイムに従って、ユーザプログラムを周期的に実行する。ＰＬＣ１００は、ユーザプログラムに示される命令を順に実行するとともに、複数のデバイスとの間で遣り取りされるデータを蓄積する。ＰＬＣ１００に蓄積されたデータは、サイクルタイムに従って、ＰＬＣ１００の外部のデータと一括して交換される。本実施の形態においては、ＰＬＣ１００で実行するタスクの優先度に基づいて、複数のグループの各々をタスクに割り付ける。これにより、グループごとにタスクが決定するため、タスクごとのサイクルタイムに従って、ＰＬＣ１００とグループとの間で、入力データの取得および出力データの送信が制御される。すなわち、グループ単位でデータの遣り取りの周期を制御することができる。
【０１３３】
なお、タスクのサイクルタイムは、タスクの優先度に応じてタスク間で異ならせることができる。たとえば、優先度が高いタスクは、優先度が低いタスクよりも、サイクルタイムが短く設定されることもある。そのため、優先度の高いタスクでは、短い周期でデータを遣り取りすることが求められる。本実施の形態によれば、グループごとにデータの遣り取りの周期を制御できるため、タスクの優先度に応じたデータの遣り取りを容易に実現することができる。
【０１３４】
また、本実施の形態によれば、グループ単位で、デバイスに対するデータの入出力タイミングを制御することができる。これによれば、１つのグループに所属する複数のデバイスの間でデータの入出力タイミングを同期させることも、あるいは、当該複数のデバイスの一部の間でデータの入出力タイミングを同期させることも容易に実現することができる。この結果、１つの機構を制御するプログラムを作成することが容易となるため、他の制御システムにおいて類似または同一の機構を開発する際に、ユーザプログラムや制御対象機器を流用しやすくなる。
【０１３５】
なお、上述した実施の形態では、グループ情報として、グループ構成情報、グループ振る舞い情報およびグループ依存情報を設定する構成について説明したが、グループ構成情報およびグループ振る舞い情報を設定する構成としてもよい。あるいは、グループ構成情報およびグループ振る舞い情報を設定するとともに、ユーザプログラムにグループ間の依存関係をプログラミングする構成としてもよい。あるいは、グループ構成情報、グループ振る舞い情報およびグループ依存情報を設定するとともに、ユーザプログラムにグループ間の依存関係をプログラミングする構成としてもよい。ユーザ（開発者）は、実現したい制御システムの構成に応じて、これら４つの構成のうちのいずれを選択することができる。
【０１３６】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１３７】
１  制御システム、１０  検出スイッチ、２０  リレー、１００  ＰＬＣ、１０２  電源ユニット、１０４  ＣＰＵユニット、１０６，２０４  機能ユニット、１０８  ＰＬＣシステムバス、１１０  フィールドバス、１１４  通信ケーブル、１２０  プロセッサ、１２２  チップセット、１２４  システムクロック、１２６  主メモリ、１２８  不揮発性メモリ、１３０  ＵＳＢコネクタ、１４０  ＰＬＣシステムバスコントローラ、１４２，１５２  バッファメモリ、１４４  ＰＬＣシステムバス制御回路、１４６，１５６  ＤＭＡ制御回路、１４８  ＰＬＣシステムバスコネクタ、１５０  フィールドバスコントローラ、１５４  フィールドバス制御回路、１５８  フィールドバスコネクタ、１６０  上位通信コントローラ、１７０  メモリカードインターフェイス、１７２  メモリカード、１８０  ＯＳ、１８２  データ定義情報、１８４  稼働ログ、１８５  グループ情報、１８６  ユーザプログラム、１８８  システムプログラム、１９０  シーケンス命令プログラム、１９２  アクセス処理プログラム、１９４  入出力処理プログラム、１９６  Ｔｏｏｌインターフェイスプログラム、１９８  スケジューラ、２００  リモートＩＯ装置、２０２  通信カプラ、３００  サポート装置、３０２  ＣＰＵ、３０４  ＲＯＭ、３０６  ＲＡＭ、３０８  ハードディスク、３１０  キーボード、３１２  マウス、３１４  モニタ、３１６  光学ディスク読取装置、３１８  通信ＩＦ、３３０  サポートプログラム、３５０  光学記録媒体。
【図１】
2018200731.tif 000003
【図２】
2018200731.tif 000004
【図３】
2018200731.tif 000005
【図４】
2018200731.tif 000006
【図５】
2018200731.tif 000007
【図６】
2018200731.tif 000008
【図７】
2018200731.tif 000009
【図８】
2018200731.tif 000010
【図９】
2018200731.tif 000011
【図１０】
2018200731.tif 000012
【図１１】
2018200731.tif 000013
【図１２】
2018200731.tif 000014
【図１３】
2018200731.tif 000015
【図１４】
2018200731.tif 000016
【手続補正書】
【提出日】平成30年10月25日(2018.10.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
制御システムに接続されるサポート装置であって、
前記制御システムは、複数の機能ユニットと、前記複数の機能ユニットの動作を制御するための制御装置とを含み、
前記サポート装置は、
前記複数の機能ユニットの少なくとも一部を、各々が複数のグループのいずれかに所属するように分類するグルーピング手段と、
前記複数のグループの各々をグループを示す変数で定義することにより、前記変数を用いて前記複数の機能ユニットの動作に係るユーザプログラムを生成するプログラミング手段とを備える、サポート装置。
【請求項２】
前記プログラミング手段は、前記変数を用いたファンクションブロックにより、自己のグループの動作を別のグループの動作に応じて制御するための依存関係をプログラミングする、請求項１に記載のサポート装置。
【請求項３】
前記サポート装置は、グループに所属する機能ユニットを特定するためのグループ構成情報に基づいて、前記変数についての対応関係を定義する変数テーブルを動的に生成および／または更新する、請求項１または２に記載のサポート装置。
【請求項４】
前記グルーピング手段は、前記複数のグループの各々を、１つの機構または１つの工程に使用される１または複数の機能ユニットで構成する、請求項１から３のいずれか１項に記載のサポート装置。
【請求項５】
制御システムに接続されるコンピュータで実行されるサポートプログラムであって、
前記制御システムは、複数の機能ユニットと、前記複数の機能ユニットの動作を制御するための制御装置とを含み、
前記サポートプログラムは、前記コンピュータに
前記複数の機能ユニットの少なくとも一部を、各々が複数のグループのいずれかに所属するように分類するステップと、
前記複数のグループの各々をグループを示す変数で定義することにより、前記変数を用いて前記複数の機能ユニットの動作に係るユーザプログラムを生成するステップとを実行させる、サポートプログラム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、制御システムに用いられるサポート装置およびサポートプログラムに関する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
本発明のある局面によれば、制御システムに接続されるサポート装置であって、制御システムは、複数の機能ユニットと、複数の機能ユニットの動作を制御するための制御装置とを含む。サポート装置は、複数の機能ユニットの少なくとも一部を、各々が複数のグループのいずれかに所属するように分類するグルーピング手段と、複数のグループの各々をグループを示す変数で定義することにより、変数を用いて複数の機能ユニットの動作に係るユーザプログラムを生成するプログラミング手段とを備える。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
好ましくは、プログラミング手段は、変数を用いたファンクションブロックにより、自己のグループの動作を別のグループの動作に応じて制御するための依存関係をプログラミングする。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
好ましくは、サポート装置は、グループに所属する機能ユニットを特定するためのグループ構成情報に基づいて、変数についての対応関係を定義する変数テーブルを動的に生成および／または更新する。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
好ましくは、グルーピング手段は、複数のグループの各々を、１つの機構または１つの工程に使用される１または複数の機能ユニットで構成する。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
本発明の別の局面によれば、制御システムに接続されるコンピュータで実行されるサポートプログラムであって、制御システムは、複数の機能ユニットと、複数の機能ユニットの動作を制御するための制御装置とを含む。サポートプログラムは、コンピュータに、複数の機能ユニットの少なくとも一部を、各々が複数のグループのいずれかに所属するように分類するステップと、複数のグループの各々をグループを示す変数で定義することにより、変数を用いて複数の機能ユニットの動作に係るユーザプログラムを生成するステップとを実行させる。