(57)【要約】【課題】多段階または高度にネットワーク化された制御システムであっても、効率的なプログラミングを実現できる構成が要望されている。【解決手段】制御システムは、ユーザプログラムを実行する処理ユニットと、１または複数の機能ユニットと、処理ユニットと１または複数の機能ユニットとの間でデータを中継する１または複数の通信ユニットと、ユーザプログラムにおいて、機能ユニットが保持するいずれかのデータに関連付けられた当該データの有効性を示す変数が指定されると、指定されたデータを保持する機能ユニットから処理ユニットまでの伝送経路に存在する通信ユニットの各々の状態を集合させた結果を当該変数が示す値として反映する反映手段とを含む。【選択図】図６
2018136745.tif 000002
【特許請求の範囲】
【請求項１】
ユーザプログラムを実行する処理ユニットと、
１または複数の機能ユニットと、
前記処理ユニットと１または複数の機能ユニットとの間でデータを中継する１または複数の通信ユニットと、
前記ユーザプログラムにおいて、前記機能ユニットが保持するいずれかのデータに関連付けられた当該データの有効性を示す変数が指定されると、指定されたデータを保持する機能ユニットから前記処理ユニットまでの伝送経路に存在する通信ユニットの各々の状態を集合させた結果を当該変数が示す値として反映する反映手段とを備える、制御システム。
【請求項２】
前記反映手段は、
前記変数が指定されたユーザプログラムのソースコードを解析して、当該変数が示す値の決定に関連する１または複数の通信ユニットを特定する手段と、
前記特定した１または複数の通信ユニットの状態を示す値の集合から前記変数が示す値を決定するための命令を前記ソースコードに追加した上で、前記ユーザプログラムのオブジェクトコードを生成する手段とを含む、請求項１に記載の制御システム。
【請求項３】
前記処理ユニットに接続されるサポート装置をさらに備え、
前記反映手段は、前記サポート装置に実装される、請求項２に記載の制御システム。
【請求項４】
前記反映手段は、
前記変数が指定されたユーザプログラムのソースコードを解析して、当該変数が示す値の決定に関連する１または複数の通信ユニットを特定する手段と、
前記処理ユニットにおいて、前記特定された情報に基づいて、前記変数が示す値を更新および保持する機能を追加する手段とを含む、請求項１に記載の制御システム。
【請求項５】
前記処理ユニットに接続されるサポート装置をさらに備え、前記サポート装置は、前記ユーザプログラムのソースコードの解析を実施するとともに、当該解析によって特定された情報を処理ユニットへ送信する、請求項４に記載の制御システム。
【請求項６】
前記反映手段は、
前記処理ユニットにおいて、対象のデータおよび当該対象のデータに関連付けられる変数名に応答して、前記対象のデータを保持する機能ユニットを特定するとともに、当該特定した機能ユニットから前記処理ユニットまでの伝送経路を特定する手段と、
前記特定した伝送経路に存在する通信ユニットの各々の状態を集合させた結果を指定された変数が示す値として所定周期毎に更新するための命令を追加する手段とを含む、請求項１に記載の制御システム。
【請求項７】
前記変数が示す値は、処理ユニットに接続される外部装置からアクセス可能に構成される、請求項６に記載の制御システム。
【請求項８】
前記通信ユニットの間は、所定のプロトコルに従うネットワークが構成されている、請求項１〜７のいずれか１項に記載の制御システム。
【請求項９】
制御装置であって、
ユーザプログラムを実行する処理ユニットと、
１または複数の機能ユニットと通信するための通信インターフェイスとを備え、前記処理ユニットと１または複数の機能ユニットとの間には、データを中継する１または複数の通信ユニットが配置されており、前記制御装置は
前記ユーザプログラムにおいて、前記機能ユニットが保持するいずれかのデータに関連付けられた当該データの有効性を示す変数が指定されると、指定されたデータを保持する機能ユニットから前記処理ユニットまでの伝送経路に存在する通信ユニットの各々の状態を集合させた結果を当該変数が示す値として反映する反映手段を備える、制御装置。
【請求項１０】
コンピュータで実行される制御プログラムであって、前記コンピュータは、ユーザプログラムを実行する処理ユニットと、１または複数の機能ユニットと通信するための通信インターフェイスとを備え、前記処理ユニットと１または複数の機能ユニットとの間には、データを中継する１または複数の通信ユニットが配置されており、
前記制御プログラムは前記コンピュータに
前記ユーザプログラムにおいて、前記機能ユニットが保持するいずれかのデータに関連付けられた当該データの有効性を示す変数が指定されると、指定されたデータを保持する機能ユニットから前記処理ユニットまでの伝送経路、および、前記特定された伝送経路に存在する通信ユニットを特定するステップと、
前記特定された各通信ユニットの状態を集合させた結果を当該変数が示す値として反映するステップとを実行させる、制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク化された制御システム、そのような制御システムに含まれる制御装置、およびそのような制御装置に向けられた制御プログラムに関する。
【背景技術】
【０００２】
近年の情報通信技術（ＩＣＴ：Information and Communication Technology）の進歩に伴って、製造現場で用いられる各種装置のネットワーク化および多機能化が進んでいる。一例として、ＰＬＣ（プログラマブルコントローラ）などの制御装置、センサやリレーなどのＩ／Ｏ（Input/Output）デバイス、および、インバータやモータドライバなどのアクチュエータなどをネットワークで接続して一体化するようなシステムが実用化されている。
【０００３】
一方で、制御装置で実行されるユーザプログラムにおいては、センサなどの健全性を確認しつつ、処理を実行しなければならないといった要求もある。ネットワーク化された制御システムにおいては、ネットワークに接続されている各機器の状態を収集および監視する必要がある。例えば、特開２００７−１０８９２３号公報（特許文献１）は、１つのマスタユニットとフィールドバスに接続されるスライス通信ユニットとからなる構成を開示しており、各スライス通信ユニットの状態を状態フラグにより監視可能になっている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１０８９２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
制御システムのネットワーク化が高度化するにつれて、監視対象のユニットなどが増加し、監視対象のすべての健全性を考慮する必要があり、ユーザプログラムの作成効率が低下するといった課題がある。
【０００６】
多段階または高度にネットワーク化された制御システムであっても、効率的なプログラミングを実現できる構成が要望されている。
【課題を解決するための手段】
【０００７】
本発明のある実施の形態に係る制御システムは、ユーザプログラムを実行する処理ユニットと、１または複数の機能ユニットと、処理ユニットと１または複数の機能ユニットとの間でデータを中継する１または複数の通信ユニットと、ユーザプログラムにおいて、機能ユニットが保持するいずれかのデータに関連付けられた当該データの有効性を示す変数が指定されると、指定されたデータを保持する機能ユニットから処理ユニットまでの伝送経路に存在する通信ユニットの各々の状態を集合させた結果を当該変数が示す値として反映する反映手段とを含む。
【０００８】
好ましくは、反映手段は、変数が指定されたユーザプログラムのソースコードを解析して、当該変数が示す値の決定に関連する１または複数の通信ユニットを特定する手段と、特定した１または複数の通信ユニットの状態を示す値の集合から変数が示す値を決定するための命令をソースコードに追加した上で、ユーザプログラムのオブジェクトコードを生成する手段とを含む。
【０００９】
好ましくは、制御システムは、処理ユニットに接続されるサポート装置をさらに含み、反映手段は、サポート装置に実装される。
【００１０】
好ましくは、反映手段は、変数が指定されたユーザプログラムのソースコードを解析して、当該変数が示す値の決定に関連する１または複数の通信ユニットを特定する手段と、処理ユニットにおいて、特定された情報に基づいて、変数が示す値を更新および保持する機能を追加する手段とを含む。
【００１１】
好ましくは、制御システムは、処理ユニットに接続されるサポート装置をさらに含み、サポート装置は、ユーザプログラムのソースコードの解析を実施するとともに、当該解析によって特定された情報を処理ユニットへ送信する。
【００１２】
好ましくは、反映手段は、処理ユニットにおいて、対象のデータおよび当該対象のデータに関連付けられる変数名に応答して、対象のデータを保持する機能ユニットを特定するとともに、当該特定した機能ユニットから処理ユニットまでの伝送経路を特定する手段と、特定した伝送経路に存在する通信ユニットの各々の状態を集合させた結果を指定された変数が示す値として所定周期毎に更新するための命令を追加する手段とを含む。
【００１３】
好ましくは、変数が示す値は、処理ユニットに接続される外部装置からアクセス可能に構成される。
【００１４】
好ましくは、通信ユニットの間は、所定のプロトコルに従うネットワークが構成されている。
【００１５】
本発明のある実施の形態に係る制御装置は、ユーザプログラムを実行する処理ユニットと、１または複数の機能ユニットと通信するための通信インターフェイスとを含む。処理ユニットと１または複数の機能ユニットとの間には、データを中継する１または複数の通信ユニットが配置されている。制御装置は、ユーザプログラムにおいて、機能ユニットが保持するいずれかのデータに関連付けられた当該データの有効性を示す変数が指定されると、指定されたデータを保持する機能ユニットから処理ユニットまでの伝送経路に存在する通信ユニットの各々の状態を集合させた結果を当該変数が示す値として反映する反映手段を含む。
【００１６】
本発明のある実施の形態によれば、コンピュータで実行される制御プログラムが提供さえる。コンピュータは、ユーザプログラムを実行する処理ユニットと、１または複数の機能ユニットと通信するための通信インターフェイスとを含む。処理ユニットと１または複数の機能ユニットとの間には、データを中継する１または複数の通信ユニットが配置されている。制御プログラムはコンピュータに、ユーザプログラムにおいて、機能ユニットが保持するいずれかのデータに関連付けられた当該データの有効性を示す変数が指定されると、指定されたデータを保持する機能ユニットから処理ユニットまでの伝送経路、および、特定された伝送経路に存在する通信ユニットを特定するステップと、特定された各通信ユニットの状態を集合させた結果を当該変数が示す値として反映するステップとを実行させる。
【発明の効果】
【００１７】
本発明の実施の形態によれば、多段階または高度にネットワーク化された制御システムであっても、効率的なプログラミングを実現できる。
【図面の簡単な説明】
【００１８】
【図１】本実施の形態に係る制御システムの構成例を示す模式図である。
【図２】本実施の形態に係る制御システムのＰＬＣを構成するＣＰＵユニットの装置構成の一例を示す模式図である。
【図３】本実施の形態に係る制御システムのリモートＩ／Ｏ装置を構成するカプラユニット１６０の装置構成の一例を示す模式図である。
【図４】本実施の形態に係る制御システムのサポート装置の装置構成の一例を示す模式図である。
【図５】本実施の形態に係る制御システムのリモートＩ／Ｏ装置を介して入力データを収集する状態の一例を示す図である。
【図６】図５に示す入力データを利用するユーザプログラムの一例を示す図である。
【図７】本実施の形態に係る制御システムのサポート装置におけるユーザプログラムの作成に係る機能を説明するための模式図である。
【図８】本実施の形態に係る制御システムにおける有効確認データを提供するための第１の実装方法を説明するための模式図である。
【図９】本実施の形態に係る制御システムにおける有効確認データを提供するための第１の実装方法に係る処理手順を示すフローチャートである。
【図１０】本実施の形態に係る制御システムのサポート装置における第２の実装方法に関する処理を説明するための模式図である。
【図１１】本実施の形態に係る制御システムにおける第２の実装方法に関する処理を説明するための模式図である。
【図１２】本実施の形態に係る制御システムにおける有効確認データを提供するための第２の実装方法に係る処理手順を示すフローチャートである。
【図１３】本実施の形態に係る制御システムにおける有効確認データを提供するための第３の実装方法を説明するための模式図である。
【図１４】本実施の形態に係る制御システムにおける有効確認データを提供するための第３の実装方法に係る処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１９】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００２０】
＜Ａ．制御システムの構成例＞
まず、本実施の形態に係る制御システムの構成例について説明する。図１は、本実施の形態に係る制御システム１の構成例を示す模式図である。図１を参照して、制御システム１は、複数のネットワークを有しており、いずれかのネットワークに接続された複数の装置を含む。
【００２１】
一例として、制御システム１は、制御装置の典型例であるＰＬＣ（プログラマブルコントローラ）２と、ＰＬＣ２とフィールドネットワークを介して接続されるリモートＩ／Ｏ装置３Ａ，３Ｂ，３Ｃ，３Ｄ（以下、「リモートＩ／Ｏ装置３」とも総称する。）とを含む。ＰＬＣ２は、さらに上位ネットワーク４に接続されていてもよい。上位ネットワーク４には、他のＰＬＣが接続されていてもよいし、ゲートウェイサーバやデータベースサーバといった任意の情報処理装置が接続されていてもよい。
【００２２】
より具体的には、リモートＩ／Ｏ装置３Ａ，３Ｂ，３Ｃは、フィールドネットワーク５を介してＰＬＣ２と接続されている。リモートＩ／Ｏ装置３Ａは別のフィールドネットワーク６を提供しており、フィールドネットワーク６を介して、リモートＩ／Ｏ装置３ＡとリモートＩ／Ｏ装置３Ｄとが接続されている。フィールドネットワーク６は、リモートＩ／Ｏ装置３Ａに装着された通信ユニット１５２によって管理される。ＰＬＣ２は、フィールドネットワーク５およびフィールドネットワーク６を介してリモートＩ／Ｏ装置３Ｄへアクセス可能になっている。
【００２３】
フィールドネットワーク５，６としては、典型的には、ネットワーク内のノード間の通信時間が保証されるプロトコルが採用される。つまり、通信ユニットの間は、所定のプロトコルに従うネットワークが構成される。このようなノード間の通信時間が保証されるプロトコルとしては、例えば、ＥｔｈｅｒＣＡＴ（登録商標）、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）、ＤｅｖｉｃｅＮｅｔ（登録商標）、ＣｏｍｐｏＮｅｔ（登録商標）などを採用できる。なお、フィールドネットワーク５とフィールドネットワーク６として、同一のプロトコルを採用する必要はなく、それぞれの装置やユニットに適したプロトコルを採用すればよい。
【００２４】
典型的には、ＰＬＣ２は、ＣＰＵユニット１００と、ＣＰＵユニット１００に装着される１または複数の機能ユニット１５０とから構成される。また、リモートＩ／Ｏ装置３は、通信機能を有するカプラユニット１６０と、カプラユニット１６０に装着される１または複数の機能ユニット１５０とから構成される。
【００２５】
機能ユニット１５０は、制御対象の設備や機械などとの間で各種情報を遣り取りするための装置である。機能ユニット１５０は、例えば、デジタル信号を受け取るＤＩ（Digital Input）機能、デジタル信号を出力するＤＯ（Digital Output）機能、アナログ信号を受け取るＡＩ（Analog Input）機能、アナログ信号を出力するＡＯ（Analog Output）機能のうち１または複数の機能を有している。あるいは、機能ユニット１５０としては、ＰＩＤ（Proportional Integral Derivative）制御やモーション制御といった特殊機能を実装したものを含む。
【００２６】
＜Ｂ．各装置の装置構成＞
次に、制御システム１を構成する各装置の装置構成について説明する。
【００２７】
（ｂ１：ＰＬＣ２）
図１に示すＰＬＣ２は、制御装置の一例であり、システムプログラムおよびユーザプログラムを実行することで、設備や機械といった制御対象を制御する。ＰＬＣ２は、典型的には、システムプログラムおよびユーザプログラムを実行する処理ユニットに相当するＣＰＵユニット１００と、ＣＰＵユニット１００に装着される１または複数の機能ユニット１５０とから構成される。
【００２８】
図２は、本実施の形態に係る制御システム１のＰＬＣ２を構成するＣＰＵユニット１００の装置構成の一例を示す模式図である。図２を参照して、ＣＰＵユニット１００は、プロセッサ１０２と、チップセット１０４と、主メモリ１０６と、不揮発性メモリ１０８と、クロック１１０と、通信インターフェイス１１２と、メモリカードインターフェイス１１６と、ネットワークコントローラ１２０，１３０と、内部バスコントローラ１４０とを含む。
【００２９】
プロセッサ１０２は、不揮発性メモリ１０８に格納されているシステムプログラム１０８ａおよびユーザプログラム１０８ｂを読み出して、主メモリ１０６に展開しつつ、クロック１１０から供給されるクロックに応じて、システムプログラム１０８ａおよびユーザプログラム１０８ｂに含まれる命令を順次実行する。主メモリ１０６は、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）などで構成され、ユーザプログラムや一時データなどを保持する記憶装置である。不揮発性メモリ１０８は、フラッシュメモリなどで構成され、システムプログラム１０８ａ、ユーザプログラム１０８ｂ、各種設定情報を格納する。チップセット１０４は、プロセッサ１０２と周辺装置とのデータの遣り取りを支援する。
【００３０】
通信インターフェイス１１２は、サポート装置２００などの外部装置と通信するための回路であり、コネクタ１１４を介して外部装置と接続される。
【００３１】
メモリカードインターフェイス１１６には、メモリカード１１８が装着可能になっており、メモリカード１１８からのデータ読出しおよびメモリカード１１８へのデータ書込みを行う。
【００３２】
ネットワークコントローラ１２０，１３０は、フィールドネットワーク５を介したデータの遣り取りを制御する。ネットワークコントローラ１２０，１３０は、コネクタ１２８，１３８を介してフィールドネットワーク５とそれぞれ接続される。具体的には、ネットワークコントローラ１２０は、バッファメモリ１２２と、転送制御回路１２４と、ダイレクトメモリアクセス（Dynamic Memory Access：ＤＭＡ）を実現するＤＭＡ制御回路１２６とを含む。同様に、ネットワークコントローラ１３０は、バッファメモリ１３２と、転送制御回路１３４と、ＤＭＡ制御回路１３６とを含む。バッファメモリ１２２，１３２は、フィールドネットワーク５を転送されるパケットなどを順次格納する。転送制御回路１２４，１３４は、フィールドネットワーク５上へのパケットの送出、および、フィールドネットワーク５からのパケットの受信などを制御する。ＤＭＡ制御回路１２６，１３６は、バッファメモリ１２２，１３２へのアクセスを制御する。
【００３３】
内部バスコントローラ１４０は、コネクタ１４８を介して内部バスと接続されており、ＣＰＵユニット１００に装着される機能ユニット１５０との間の内部バスを介したデータの遣り取りを仲介する。具体的には、内部バスコントローラ１４０は、バッファメモリ１４２と、転送制御回路１４４と、ＤＭＡ制御回路１４６とを含む。これらの各部位の機能は、ネットワークコントローラ１２０，１３０の対応する部位と同様であるので、詳細な説明は繰返さない。
【００３４】
ネットワークコントローラ１２０，１３０および内部バスコントローラ１４０は、機能ユニット１５０と通信するために通信インターフェイスに相当する。
【００３５】
（ｂ２：リモートＩ／Ｏ装置３）
図１に示すリモートＩ／Ｏ装置３は、ＰＬＣ２から離れた位置に配置可能な一種の中継装置であり、制御対象の設備や機械などの状態を示す情報などを収集し、入力データとして、ＰＬＣ２へ転送するとともに、ＰＬＣ２での演算により決定された制御出力を制御対象の設備や機械へ指令として出力する。具体的には、リモートＩ／Ｏ装置３は、ＣＰＵユニット１００と１または複数の機能ユニット１５０との間でデータを転送する通信ユニットの一例であるカプラユニット１６０と、カプラユニット１６０に装着される１または複数の機能ユニット１５０とを含む。
【００３６】
図３は、本実施の形態に係る制御システム１のリモートＩ／Ｏ装置３を構成するカプラユニット１６０の装置構成の一例を示す模式図である。図３を参照して、カプラユニット１６０は、コントローラ１６１と、通信インターフェイス１６２と、メモリカードインターフェイス１６６と、ネットワークコントローラ１７０，１８０と、内部バスコントローラ１９０とを含む。
【００３７】
コントローラ１６１は、リモートＩ／Ｏ装置３における処理を担当する回路であり、典型的には、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field-Programmable Gate Array）などのハードワイヤードな処理回路を用いて実現される。但し、その全部または一部の機能をソフトウェア実装（プロセッサがプログラムを実行することで実現）してもよい。
【００３８】
通信インターフェイス１６２は、図２に示す通信インターフェイス１１２と同様に、サポート装置２００などの外部装置と通信するための回路であり、コネクタ１６４を介して外部装置と接続される。
【００３９】
ネットワークコントローラ１７０，１８０は、フィールドネットワーク５を介したデータの遣り取りを制御する。より具体的には、ネットワークコントローラ１７０は、バッファメモリ１７２と、転送制御回路１７４と、ＤＭＡ制御回路１７６とを含む。同様に、ネットワークコントローラ１８０は、バッファメモリ１８２と、転送制御回路１８４と、ＤＭＡ制御回路１８６とを含む。ネットワークコントローラ１７０，１８０の機能は、図２に示すネットワークコントローラ１２０，１３０と同様であるので、詳細な説明は繰返さない。
【００４０】
内部バスコントローラ１９０は、コネクタ１９８を介して内部バスと接続されており、カプラユニット１６０に装着される機能ユニット１５０との間の内部バスを介したデータの遣り取りを仲介する。具体的には、内部バスコントローラ１９０は、バッファメモリ１９２と、転送制御回路１９４と、ＤＭＡ制御回路１９６とを含む。これらの各部位の機能は、図２に示す内部バスコントローラ１４０の対応する部位と同様であるので、詳細な説明は繰返さない。
【００４１】
（ｂ３：サポート装置２００）
図１に示すように、ＰＬＣ２またはリモートＩ／Ｏ装置３には、サポート装置２００が接続可能になっている。サポート装置２００は、制御システム１を構成するＰＬＣ２およびリモートＩ／Ｏ装置３が保持しているデータや状態値を確認する機能や、ＰＬＣ２で実行されるプログラムを開発する機能およびデバックする機能などを提供する。サポート装置２００は、典型的には、汎用的なアーキクテチャを有するパーソナルコンピュータ上で、サポートプログラムが実行されることで実現される。
【００４２】
図４は、本実施の形態に係る制御システム１のサポート装置２００の装置構成の一例を示す模式図である。図４を参照して、サポート装置２００は、プロセッサ２０２と、チップセット２０４と、主メモリ２０６と、不揮発性メモリ２０８と、表示インターフェイス２１０と、入力部２１２と、通信インターフェイス２１４とを含む。
【００４３】
プロセッサ２０２は、不揮発性メモリ２０８に格納されているＯＳ（Operating System）２０８ａおよびサポートプログラム２０８ｂを読み出して、主メモリ２０６に展開しつつ、ＯＳ２０８ａおよびサポートプログラム２０８ｂに含まれる命令を順次実行する。主メモリ２０６は、ＤＲＡＭやＳＲＡＭなどで構成され、ユーザプログラムや一時データなどを保持する記憶装置である。不揮発性メモリ２０８は、フラッシュメモリなどで構成され、ＯＳ２０８ａ、サポートプログラム２０８ｂ、各種設定情報を格納する。チップセット２０４は、プロセッサ２０２と周辺装置とのデータの遣り取りを支援する。
【００４４】
表示インターフェイス２１０は、プロセッサ２０２などによる演算結果をディスプレイへ出力する。入力部２１２は、キーボードやメモリなどからなり、ユーザの操作を受付ける。通信インターフェイス２１４は、ＰＬＣ２（ＣＰＵユニット１００）と通信するための回路である。
【００４５】
＜Ｃ．概要＞
次に、本実施の形態に係る制御システム１において提供される機能の概要を説明する。  
【００４６】
図５は、本実施の形態に係る制御システム１のリモートＩ／Ｏ装置３を介して入力データを収集する状態の一例を示す図である。図６は、図５に示す入力データを利用するユーザプログラムの一例を示す図である。
【００４７】
図５に示すように、一例として、制御システム１に含まれるリモートＩ／Ｏ装置３Ｄに装着された１つの機能ユニット１５０を介して、フィールドから入力データ（図中においては、「ＩＮデータ」とも記す。）を収集する場合を考える。なお、ＣＰＵユニット１００においては、機能ユニット１５０が保持する任意のデータを利用可能であり、以下では、典型例として入力データを例に説明するが、これに限られるものではない。
【００４８】
図５に示す例では、機能ユニット１５０で収集された入力データは、リモートＩ／Ｏ装置３Ｄの内部バス（伝送経路３０１）、フィールドネットワーク６および通信ユニット１５２（伝送経路３０２）、リモートＩ／Ｏ装置３Ａの内部バス（伝送経路３０３）、フィールドネットワーク５（伝送経路３０４）とった経路を順に転送されることになる。これらユニットおよびバスが、ＣＰＵユニット１００と１または複数の機能ユニット１５０との間でデータを転送する通信ユニットの少なくとも一部として機能する。
【００４９】
一般的には、ＣＰＵユニット１００において入力データとして収集される値が、現実に機能ユニット１５０に入力される入力信号の値を反映したものであることをユーザプログラム上で確かにしておく必要がある。これは、例えば、入力データが「Ｆａｌｓｅ」を示す場合、対応する機能ユニット１５０に入力される入力信号が現実に「Ｆａｌｓｅ」であることを反映したものであるのか、入力データが伝送経路を順次転送される過程において何らかの異常があって伝送ができないため、入力信号は「Ｔｒｕｅ」であるにもかかわらず、ＣＰＵユニット１００において入力データが誤って「Ｆａｌｓｅ」となっているのかを判断することができないためである。
【００５０】
そこで、一般的には、入力データを用いて何らかの処理（アクション）を実行する命令を記述する際には、入力データの収集経路（伝送経路）が健全であることを示す条件を付加することが一般的である。このような条件となる情報を、以下では「有効確認データ」とも称す。また、本実施の形態においては、基本的には変数プログラミングにてユーザプログラムが作成されるので、「有効確認データ」の値を参照するための変数を「有効確認変数」とも称す。
【００５１】
図６（Ａ）に示すユーザプログラム４００においては、何らかのアクションの実行／停止を入力データに値に関連付けた例を示す。すなわち、入力データの値を示す入力値フラグ４０５を条件として、アクションに対応するファンクションブロック４０６が活性化されるようになっている。
【００５２】
さらに、入力値フラグ４０５の前段には、状態フラグ４０１〜４０４（変数名ＳＴ１〜ＳＴ４）が直列に配置されている。状態フラグ４０１〜４０４は、図５に示す伝送経路３０１〜３０４の有効確認変数にそれぞれ相当する。すなわち、状態フラグ４０１は、リモートＩ／Ｏ装置３Ｄの有効性（または、健全性あるいはステータス）を示し、状態フラグ４０２は、フィールドネットワーク６の有効性を示し、状態フラグ４０３は、リモートＩ／Ｏ装置３Ａの有効性を示し、状態フラグ４０４は、フィールドネットワーク５の有効性を示す。
【００５３】
一方、図６（Ｂ）に示すユーザプログラム４１０においては、入力データをＣＰＵユニット１００に装着された機能ユニットから取り込む場合の例を示す。この例においても、入力データの値を示す入力値フラグ４０５を条件として、アクションに対応するファンクションブロック４０６が活性化されるようになっている。そして、入力データを示す入力値フラグ４０５の前段には、状態フラグ４１１が条件として配置されている。状態フラグ４１１は、ＣＰＵユニット１００の内部バスの有効性（または、健全性あるいはステータス）を示す。
【００５４】
図６（Ａ）と図６（Ｂ）とを比較すると分かるように、対象の入力データがＣＰＵユニット１００に伝送するまでの経路を構成するネットワーク階層数が多くなるほど、有効確認データとして、より多くのフラグを設定する必要が生じる。
【００５５】
制御システムのネットワーク化が高度化するにつれて、各フラグによって何が定義されているかを確かめる必要があり、かつ、ネットワーク構成が変更された場合には、それに応じて、有効確認データとして用いるべきフラグを変更し、ユーザプログラム４１０を更新しなければならなくなる。
【００５６】
このような課題に対して、本実施の形態に係る制御システム１においては、対象となる入力変数の有効性を評価するために必要な条件をまとめた特殊な有効確認データを利用できる環境が提供される。
【００５７】
図６（Ｃ）は、本実施の形態に係る制御システム１において提供される有効確認データを用いた一例としてのユーザプログラム４２０を示す。より具体的には、ユーザプログラム４２０においては、入力データの値を示す入力値フラグ４０５を条件として、アクションに対応するファンクションブロック４０６が活性化されるようになっている。そして、入力データを示す入力値フラグ４０５の前段には、対応する有効確認データを示す特殊フラグ４２１が条件として配置されている。この例においては、特殊フラグ４２１は、入力データを取り込んだ機能ユニットからＣＰＵユニット１００までの経路に存在するデバイスの状態を示すデバイス変数の集合（論理積）となっている。
【００５８】
本実施の形態においては、ユーザプログラムにおいて、機能ユニット１５０が保持するいずれかのデータに関連付けられた当該データの有効性を示す変数（有効確認変数）が指定されると、指定されたデータを保持する機能ユニット１５０からＣＰＵユニット１００までの伝送経路に存在する通信ユニットの各々の状態（各状態フラグの値）を集合させた結果を当該変数が示す値（有効確認データ）として反映する機能が実装される。
【００５９】
このような特殊な有効確認データを利用できることで、ユーザプログラムの開発者は、ＣＰＵユニット１００と内部バスを介して接続された機能ユニットに入力される入力データと、１または複数のネットワークを介して接続された機能ユニットに入力される入力データとの間で、ハードウェア構成およびネットワーク構成の相違を吸収可能な、抽象化された有効確認変数を用いることができるので、プログラミングの作成効率を高めることができるとともに、ネットワーク構成の変更などにもフレキシブルに対応できる。
【００６０】
以下、本実施の形態に係る有効確認データを提供するためのいくつかの実装方法について説明する。
【００６１】
＜Ｄ．第１の実装方法＞
第１の実装方法として、サポート装置２００に搭載される機能のみを用いて有効確認データを提供する方法について説明する。第１の実装方法においては、ユーザプログラム中の有効確認変数が対応の有効確認データとして反映する機能をサポート装置２００で実現する。
【００６２】
図７は、本実施の形態に係る制御システム１のサポート装置２００におけるユーザプログラムの作成に係る機能を説明するための模式図である。図７を参照して、ユーザは、サポート装置２００が提供するエディタを用いてユーザプログラムのソースコード１０を作成する。サポート装置２００は、ユーザ操作を受けて、ユーザプログラムのソースコード１０をパーサ（構文解析）およびコンパイルしてオブジェクトコード１２を生成する。このユーザプログラムのオブジェクトコード１２は、ＰＬＣ２のＣＰＵユニット１００へ転送される。転送された１または複数のオブジェクトコード１２がユーザプログラム１０８ｂ（図２）としてＣＰＵユニット１００に格納され、実行される。
【００６３】
ユーザプログラムのソースコード１０がパースおよびコンパイルされるときに、本実施の形態に係る有効確認データを用いた記述があれば、その有効確認データが意図する内容を既存の命令の組み合わせに分解することで、有効確認データを用いたユーザプログラムの処理を実現するようにしてもよい。ユーザプログラムのソースコード１０に含まれる有効確認データまたは有効確認変数をサポート装置２００がパースして、適切なオブジェクトコード１２を作成するという方法を採用することで、ユーザは、コンパイル時などに特に意識することなく、有効確認データを利用することができる。
【００６４】
図８は、本実施の形態に係る制御システム１における有効確認データを提供するための第１の実装方法を説明するための模式図である。例えば、図８（Ａ）に示すようなユーザプログラム４３０Ａが作成されたとする。ユーザプログラム４３０Ａにおいては、入力データの値を示す入力値フラグ４０５を条件として、アクションに対応するファンクションブロック４０６が活性化されるようになっている。入力値フラグ４０５についての有効確認データを定義するために、ファンクションブロック４３２が用いられている。ファンクションブロック４３２は、本実施の形態に係る有効確認データを構築するための命令を意味する。
【００６５】
より具体的には、ファンクションブロック４３２は、入力（ＥＸＥ）が活性化されると、入力データ（ＩＮ）として定義される変数（図８に示す例では、変数Ｄ１）の伝送経路などが参照されて、必要なフラグの集合に対する論理演算（典型的には、論理積）の結果を示す値を出力する（ＯＵＴ）ことを定義する。
【００６６】
より具体的には、図８（Ａ）に例示されるようなユーザプログラム４３０Ａのソースコードがパースされる際には、その中に含まれるファンクションブロック４３２は、予め定義されている変数テーブル２０およびネットワークコンフィギュレーション２２などが参照されて、指定された変数の伝送経路に応じたデバイス変数の集合が特定される。
【００６７】
変数テーブル２０は、ユーザプログラムで利用可能な変数と現実の機能ユニットのポート番号とを関連付けるものであり、ある機能ユニットのあるポートにて収集される値に対して、任意の変数名の割り当てを定義する。ネットワークコンフィギュレーション２２は、制御システム１におけるＣＰＵユニット１００と各機能ユニット１５０との間の接続関係（ネットワークトポロジー）などを定義する。
【００６８】
典型的には、変数テーブル２０およびネットワークコンフィギュレーション２２が参照されることで、ファンクションブロック４３２の出力値を決定するために必要なフラグを特定することができる。サポート装置２００は、有効確認変数が指定されたユーザプログラムのソースコード１０を解析して、当該有効確認変数が示す値（有効確認データ）の決定に関連する１または複数の通信ユニットを特定する。
【００６９】
このようなファンクションブロック４３２の出力値を決定するために必要なフラグが特定されると、図８（Ｂ）に示すようなユーザプログラム４３０Ｂが生成される。つまり、サポート装置２００は、特定した１または複数の通信ユニットの状態（ステータス）を示す値の集合から有効確認変数が示す値を決定するための命令をソースコードに追加した上で（ユーザプログラム４３０Ｂ）、ユーザプログラムのオブジェクトコードを生成する。
【００７０】
より具体的には、ユーザプログラム４３０Ｂにおいては、ユーザプログラム４３０Ａのファンクションブロック４３２に対応する特殊コイル４３４が導入されており、この特殊コイル４３４には、状態フラグ４０１〜４０４の集合（論理積）の結果が格納される。そして、図８（Ａ）に例示されるようなユーザプログラム４３０Ａは、特殊コイル４３４に格納された値を示す特殊フラグ４３６に置換される。最終的に、図８（Ｂ）に示すようなユーザプログラム４３０Ｂがコンパイルされることで、本実施の形態に係る有効確認データの機能が実現される。
【００７１】
なお、ユーザプログラム４３０Ｂは、内部的に生成すればよく、ユーザが見えるような形態で表示などを行う必要はない。
【００７２】
第１の実装方法によれば、ファンクションブロック４３２を含むユーザプログラムがパースされる際に、変数テーブル２０およびネットワークコンフィギュレーション２２の内容が参照されて、ファンクションブロック４３２に対応する特殊フラグ４３６が意味する内容が動的に決定される。このような有効確認データの内容を動的に決定する処理を採用することで、ユーザは、各変数がいずれの機能ユニットに関連付けられているのか、および、当該変数が関連付けられている機能ユニットがいずれのネットワーク上に存在するのか、といったことを気にすることなく、実行条件とすべき有効確認変数を利用できる。
【００７３】
サポート装置２００には、ＣＰＵユニット１００でのユーザプログラムの実行状態をロギングする機能が実装されている場合もある。このようなロギング機能においては、図８（Ａ）に示すユーザプログラム４３０Ａを表示しつつ、図８（Ｂ）に示す特殊フラグ４３６が示す値をファンクションブロック４３２の値として表示するようにしてもよい。このようなロギング機能を利用することで、ユーザは、特殊フラグ４３６が意味する内容の詳細を意識することなく、入力値フラグ４０５が有効に入力されているか否かを確認できる。
【００７４】
図６（Ｂ）に示すように、入力データがＣＰＵユニット１００に装着された機能ユニットから取り込まれる場合であっても、上述したようなファンクションブロック４３２は機能する。ＣＰＵユニット１００に装着された機能ユニットから入力データが取り込まれる場合には、例えば、変数テーブル２０にて、取り込み先の機能ユニットが指定されているので、特殊コイル４３４には、ＣＰＵユニット１００の内部バスの健全性（ステータス）を示す状態フラグが関連付けられる。
【００７５】
次に、第１の実装方法に係る処理手順について説明する。図９は、本実施の形態に係る制御システム１における有効確認データを提供するための第１の実装方法に係る処理手順を示すフローチャートである。図９に示す各ステップは、典型的には、サポート装置２００のプロセッサ２０２が制御プログラムの一例であるサポートプログラム２０８ｂ（図４参照）を実行することで実施される。
【００７６】
図９を参照して、サポート装置２００は、ユーザ操作に応じて、ユーザプログラムを作成する（ステップＳ１００）。このステップＳ１００は、サポート装置２００が提供するエディタ機能によって実現される。続いて、サポート装置２００は、コンパイルが指示されたか否かを判断する（ステップＳ１０２）。コンパイルが指示されていなければ（ステップＳ１０２においてＮＯ）、ステップＳ１００以下の処理が繰返される。
【００７７】
コンパイルが指示されると（ステップＳ１０２においてＹＥＳ）、サポート装置２００は、ユーザプログラムのソースコードを解析して、有効確認変数の使用を示すファンクションブロックが存在するか否かを判断する（ステップＳ１０４）。有効確認変数の使用を示すファンクションブロックが存在しなければ（ステップＳ１０４においてＮＯ）、ステップＳ１０６〜Ｓ１１０の処理はスキップされる。
【００７８】
有効確認変数の使用を示すファンクションブロックが存在していれば（ステップＳ１０４においてＹＥＳ）、サポート装置２００は、変数テーブルおよびネットワークコンフィギュレーションなどを参照して、ユーザプログラム中のファンクションブロックが示すデバイス変数の集合を特定する（ステップＳ１０６）。つまり、サポート装置２００は、ユーザプログラムにおいて、機能ユニット１５０が保持するいずれかのデータに関連付けられた当該データの有効性を示す変数（有効確認変数）が指定されると、指定されたデータを保持する機能ユニット１５０からＣＰＵユニット１００までの伝送経路、および、特定された伝送経路に存在する通信ユニットを特定する。
【００７９】
そして、サポート装置２００は、ユーザプログラムを当該特定したデバイス変数の集合からなる有効確認データを示す有効確認変数を含むユーザプログラムに変換する（ステップＳ１０８）。これによって、サポート装置２００は、特定された各通信ユニットの状態を集合させた結果を有効確認変数が示す値（有効確認データ）として反映する。
【００８０】
サポート装置２００は、ステップＳ１０８において変換されたユーザプログラム、または、ステップＳ１００において作成されたユーザプログラムをコンパイルして、ユーザプログラムのオブジェクトコードを生成する（ステップＳ１１０）。そして、サポート装置２００は、生成したユーザプログラムのオブジェクトコードをＣＰＵユニット１００へ転送する（ステップＳ１１２）。そして、ユーザプログラムの作成およびコンパイルの処理は終了する。
【００８１】
上述の説明においては、有効確認変数を示すファンクションブロックを用いることで、対象となる有効確認データを動的に決定できる実装例を例示したがこれに限らず、ＣＰＵユニット１００で扱うことのできる入力値フラグ（入力値変数）のすべてについて有効確認変数を予め用意しておいてもよい。例えば、入力値変数「ｄ０００１」に対して、有効確認変数「ｓｓｔ０００１」といったように、変数毎に割当てた識別番号と変数の種類を示す文字列との組み合わせを変数名として利用することで、このような一対一の対応付けが可能になる。あるいは、各変数をオブジェクトとしてみなし、そのプロパティまたはメソッドなどを用いて、各有効確認変数を指定または利用するようにしてもよい。
【００８２】
いずれの方法であっても、プログラミング上の表現方法の違いであり、上述と同様の方法で実装できる。
【００８３】
上述したように、第１の実装方法においては、有効確認変数として定義されるファンクションブロックの内容が解析されて、必要な状態フラグの組み合わせとして有効確認データが解釈される。そして、有効確認データの値は、ＣＰＵユニット１００に格納されている状態フラグなどの値を参照して各制御周期において決定されることになる。このような方法を採用することで、有効確認データを保持するための領域をＣＰＵユニット１００上に用意する必要はないので、ＣＰＵユニット１００のメモリリソースが不足するような事態を回避しつつ、多段階または高度にネットワーク化された制御システムであっても、効率的なプログラミングを実現できる。
【００８４】
＜Ｅ．第２の実装方法＞
第２の実装方法として、ＰＬＣ２のＣＰＵユニット１００とサポート装置２００に搭載された機能とが連携して、有効確認データを提供する方法について説明する。
【００８５】
図１０は、本実施の形態に係る制御システム１のサポート装置２００における第２の実装方法に関する処理を説明するための模式図である。図１０を参照して、ユーザは、サポート装置２００が提供するエディタを用いてユーザプログラム４４０を作成したとする。ここで、入力値フラグ４０５（変数Ｄ１）に対して有効確認変数ＳＳＴ１（特殊フラグ４４２）が割当てられているとする。
【００８６】
図１０に例示されるようなユーザプログラム４４０のソースコードがパースされる際には、その中に定義されている有効確認変数ＳＳＴ１は、予め定義されている変数テーブル２０およびネットワークコンフィギュレーション２２などが参照されて、対応する入力値フラグ４０５（変数Ｄ１）の伝送経路に応じたデバイス変数の集合として解析される。
【００８７】
変数テーブル２０は、ユーザプログラムで利用可能な変数と現実の機能ユニットのポート番号とを関連付けるものであり、ある機能ユニットのあるポートにて収集される値に対して、任意の変数名の割り当てを定義する。ネットワークコンフィギュレーション２２は、制御システム１におけるＣＰＵユニット１００と各機能ユニット１５０との間の接続関係（ネットワークトポロジー）などを定義する。
【００８８】
典型的には、変数テーブル２０およびネットワークコンフィギュレーション２２が参照されることで、有効確認変数（特殊フラグ４４２）の出力値を決定するために必要なステータス情報を特定することができる。有効確認変数の出力値を決定するために必要なフラグが特定されると、対象の特殊フラグ４４２を実現するための有効確認データ設定４４４が生成される。有効確認データ設定４４４は、ＣＰＵユニット１００において指定された有効確認データを提供するための設定情報である。
【００８９】
図１１は、本実施の形態に係る制御システム１における第２の実装方法に関する処理を説明するための模式図である。図１０に示すような処理に従って生成された有効確認データ設定４４４は、図１１（Ａ）に示すように、有効確認変数がＳＳＴ１であるとの定義４４４ａと、有効確認変数を構成するステータス情報の定義４４４ｂとを含む。定義４４４ｂにおいては、例えば、論理積をとる対象となる状態フラグを示す変数名が記述される。このように、サポート装置２００は、有効確認変数が指定されたユーザプログラムのソースコードを解析して、当該有効確認変数が示す値（有効確認データ）の決定に関連する１または複数の通信ユニットを特定する。
【００９０】
ＣＰＵユニット１００においては、入出力データおよびステータスデータが主メモリ１０６上に配置されており、それぞれの値は制御周期毎に入出力リフレッシュ（更新）される。
【００９１】
有効確認データ設定４４４は、サポート装置２００からＣＰＵユニット１００へ転送される。このように、ＣＰＵユニット１００に接続されるサポート装置２００は、ユーザプログラムのソースコードの解析を実施するとともに、当該解析によって特定された情報（有効確認データ設定４４４）をＣＰＵユニット１００へ送信する。
【００９２】
ＣＰＵユニット１００は、サポート装置２００から受信した有効確認データ設定４４４を解釈し、主メモリ１０６上の所定領域に有効確認データを格納するための領域を確保する。この確保された領域上に、有効確認データ設定４４４にて指定された変数名の有効確認データが格納されるようになる。
【００９３】
さらに、図４（Ｂ）に示すように、ＣＰＵユニット１００においては、有効確認データ設定４４４に含まれる状態フラグの定義４４４ｂに従って、有効確認データを更新するためのデータ更新ロジック４４６が形成される。データ更新ロジック４４６は、典型的には、システムプログラム１０８ａ上で実行され、状態フラグの定義４４４ｂに従って対象となる状態値（変数ＳＴ１〜ＳＴ４として参照される値）を参照し、参照した状態値についての論理演算（この例では、論理積）の結果を指定された領域に書込む。この有効確認データの書込み（更新）についても、入出力リフレッシュと実質的に同じ制御周期で繰返されることが好ましい。
【００９４】
このように、ＣＰＵユニット１００は、特定された情報を含む有効確認データ設定４４４に基づいて、有効確認変数が示す有効確認データを更新および保持する機能を追加する。
【００９５】
ユーザプログラム上で指定された有効確認データ（この例では、変数ＳＳＴ１）がＣＰＵユニット１００上に用意されているので、サポート装置２００に実装されるロギング機能４４８は、この指定された有効確認変数を参照して、各タイミングにおける状態値をユーザに提示する。
【００９６】
第２の実装方法によれば、サポート装置２００とＰＬＣ２のＣＰＵユニット１００とが連携して有効確認データを提供することになる。すなわち、ＣＰＵユニット１００は、サポート装置２００から、（１）有効確認変数の変数名、および、（２）有効確認変数を示す状態値および論理演算の定義、を含む有効確認データ設定４４４を収集する。そして、ＣＰＵユニット１００は、収集した有効確認データ設定４４４に従って、有効確認データの保持および更新を行う。
【００９７】
第２の実装方法によれば、ＣＰＵユニット１００が有効確認データを保持および更新することになるので、ユーザプログラム４４０を作成したサポート装置２００に限らず、任意の外部装置から有効確認データを参照でき、より汎用性を高めることができる。また、ＣＰＵユニット１００において有効確認データが更新されるので、入出力データと同様の制御周期で有効確認データを更新でき、当該有効確認データを別のシーケンスプログラムにも利用できる。
【００９８】
次に、第２の実装方法に係る処理手順について説明する。図１２は、本実施の形態に係る制御システム１における有効確認データを提供するための第２の実装方法に係る処理手順を示すフローチャートである。図１２に示す処理手順は、サポート装置２００とＰＬＣ２のＣＰＵユニット１００とが連携することによって実現され、サポート装置２００の各ステップは、サポート装置２００のプロセッサ２０２がサポートプログラム２０８ｂ（図４参照）を実行することで実施され、ＣＰＵユニット１００の各ステップは、プロセッサ１０２がシステムプログラム１０８ａ（図２参照）を実行することで実施される。
【００９９】
図１２を参照して、サポート装置２００は、ユーザ操作に応じて、ユーザプログラムを作成する（ステップＳ２００）。このステップＳ２００は、サポート装置２００が提供するエディタ機能によって実現される。続いて、サポート装置２００は、ＣＰＵユニット１００への反映が指示されたか否かを判断する（ステップＳ２０２）。ＣＰＵユニット１００への反映が指示されていなければ（ステップＳ２０２においてＮＯ）、ステップＳ２００以下の処理が繰返される。
【０１００】
ＣＰＵユニット１００への反映が指示されると（ステップＳ２０２においてＹＥＳ）、サポート装置２００は、ユーザプログラムのソースコードを解析して、有効確認変数が指定されているか否かを判断する（ステップＳ２０４）。有効確認変数が指定されていなければ（ステップＳ２０４においてＮＯ）、ステップＳ２０６〜Ｓ２１０の処理はスキップされる。
【０１０１】
有効確認変数が指定されていれば（ステップＳ２０４においてＹＥＳ）、サポート装置２００は、変数テーブルおよびネットワークコンフィギュレーションなどを参照して、ユーザプログラム中の有効確認変数が示すデバイス変数の集合を特定し（ステップＳ２０６）、有効確認変数を示す有効確認データ設定４４４を生成し（ステップＳ２０８）、ＣＰＵユニット１００へ転送する（ステップＳ２１０）。
【０１０２】
ＣＰＵユニット１００は、サポート装置２００からの有効確認データ設定４４４に応じて、指定された有効確認データを保持するための領域を主メモリ１０６上に確保する（ステップＳ２５０）とともに、有効確認データを更新するためのデータ更新ロジックを形成する（ステップＳ２５２）。そして、ＣＰＵユニット１００は、指定された状態値を参照し、参照した状態値についての論理演算の結果を有効確認データとして確保した領域に書込む（ステップＳ２５４）。ＣＰＵユニット１００は、次の制御周期が到来したか否かを判断し（ステップＳ２５６）、次の制御周期が到来すれば（ステップＳ２５６においてＹＥＳ）、ステップＳ２５４の処理を繰返す。
【０１０３】
サポート装置２００または他の外部装置は、任意のタイミングでＣＰＵユニット１００へアクセスして、有効確認変数を指定することで、対応の有効確認データの値を取得できる。
【０１０４】
なお、上述の説明においては、ユーザプログラムにおいて有効確認変数を用いる例を示したが、これに代えて、上述した第１の実装方法において例示したがファンクションブロックを用いるようにしてもよい。ファンクションブロックを用いる場合には、ＣＰＵユニット１００が指定されたファンクションブロックに対応する変数名を自動的に割当てるようにしてもよい。あるいは、各変数をオブジェクトとしてみなし、そのプロパティまたはメソッドなどを用いて、各有効確認変数を指定または利用するようにしてもよい。
【０１０５】
いずれの方法であっても、プログラミング上の表現方法の違いであり、上述と同様の方法で実装できる。
【０１０６】
上述したように、第２の実装方法においては、サポート装置２００にて作成されたユーザプログラムの情報から生成される有効確認データ設定４４４に基づいて、ＣＰＵユニット１００内部に有効確認データが保持されるので、任意の外部装置から当該有効確認データにアクセスできる。そのため、有効確認データの利用性を高めることができる。また、ＣＰＵユニット１００内部に保持される有効確認データは、通常の入出力データおよび状態値と同様の制御周期で更新されるので、複数の異常処理ロジックの間で共通して利用することもできる。
【０１０７】
＜Ｆ．第３の実装方法＞
第３の実装方法として、実質的にＰＬＣ２のＣＰＵユニット１００に搭載される機能のみを用いて有効確認データを提供する方法について説明する。
【０１０８】
図１３は、本実施の形態に係る制御システム１における有効確認データを提供するための第３の実装方法を説明するための模式図である。図１３を参照して、第３の実装方法においては、サポート装置２００は、有効確認データへの参照に用いられる有効確認変数（この例では、変数ＳＳＴ１）、および、当該有効確認データを決定するために用いられる入力データの特定（この例では、有効確認変数ＩＮ１）をＣＰＵユニット１００へ送信する。
【０１０９】
ＣＰＵユニット１００は、サポート装置２００から指定された対象の入力データに対応するデバイス変数を特定するとともに、特定したデバイス変数のアドレスから、対象の機能ユニットを特定する（図１３の（１））。続いて、ＣＰＵユニット１００は、特定した機能ユニットがいずれのネットワークに属しているのかを判断し、対象の機能ユニットに関連するネットワークを特定する（図１３の（２））。そして、特定したネットワークを管理する機能ユニットのネットワークアドレスおよび状態値アドレスなどに基づいて、有効確認データを算出するために必要な状態値などを特定し、データ更新ロジックを構築する（図１３の（３））。例えば、状態フラグ４０１〜４０４（変数名ＳＴ１〜ＳＴ４）にそれぞれ対応するアドレスの集合に対する論理和の結果が有効確認データとして格納されることが定義される。
【０１１０】
このような手順に従って、サポート装置２００から指定された有効確認データを示す変数名がＣＰＵユニット１００内において定義されるとともに、ＣＰＵユニット１００内では、当該定義された有効確認データを更新するためのロジックが自動的に構築される。上述のようなネットワークアドレスの探索には、ＣＰＵユニット１００に格納されている変数テーブルおよびネットワークコンフィギュレーションなどが参照される。
【０１１１】
サポート装置２００からＣＰＵユニット１００へ送信される、有効確認データとして用いる変数名、および、当該有効確認データの対象となる入力データについては、図８（Ａ）に示すようなユーザプログラム中のファンクションブロックを用いて定義されてもよい。
【０１１２】
次に、第３の実装方法に係る処理手順について説明する。図１４は、本実施の形態に係る制御システム１における有効確認データを提供するための第３の実装方法に係る処理手順を示すフローチャートである。図１４に示す各ステップは、典型的には、ＣＰＵユニット１００のプロセッサ１０２がシステムプログラム１０８ａ（図２参照）を実行することで実施される。
【０１１３】
図１４を参照して、ＰＬＣ２のＣＰＵユニット１００は、サポート装置２００から、有効確認データとして用いる変数名、および、当該有効確認データの対象となる入力データの特定を受信したか否かを判断する（ステップＳ３００）。これらの情報を受信していなければ（ステップＳ３００においてＮＯ）、以下の処理はスキップされる。
【０１１４】
これらの情報を受信すれば（ステップＳ３００においてＹＥＳ）、ＣＰＵユニット１００は、指定された対象の入力データに対応するデバイス変数を特定し（ステップＳ３０２）、特定したデバイス変数のアドレスから、対象の機能ユニットを特定する（ステップＳ３０４）。続いて、ＣＰＵユニット１００は、特定した機能ユニットがいずれのネットワークに属しているのかを判断し（ステップＳ３０６）、対象の機能ユニットに関連するネットワークを特定する（ステップＳ３０８）。
【０１１５】
このように、ＣＰＵユニット１００は、当該有効確認データの対象となるデータおよび当該対象のデータに関連付けられる有効確認データとして用いる変数名に応答して、当該対象のデータを保持する機能ユニットを特定するとともに、当該特定した機能ユニットからＣＰＵユニット１００までの伝送経路を特定する。
【０１１６】
ＣＰＵユニット１００は、特定したネットワークを管理する機能ユニットのネットワークアドレスおよび状態値アドレスなどに基づいて、有効確認データを算出するために必要な状態値などを特定し（ステップＳ３１０）、データ更新ロジックを構築する（ステップＳ３１２）。そして、ＣＰＵユニット１００は、構築したデータ更新ロジックに従って、有効確認データの更新処理を繰返す（ステップＳ３１４）。
【０１１７】
このように、ＣＰＵユニット１００は、特定した伝送経路に存在する通信ユニットの各々の状態を集合させた結果を、指定された有効確認変数が示す値として所定周期毎に更新するための命令を追加する。
【０１１８】
上述したように、第３の実装方法においては、サポート装置２００にて、特定の入力データを指定するとともに、当該入力データに関連付けられる有効確認データを示す有効確認変数を指定すると、ＣＰＵユニット１００にて指定された有効確認データを算出するためのロジックが自動的に構築される。そのため、ユーザは、指定した入力データがいずれのハードウェアを用いて収集されているのかといったことを考慮することなく、ユーザプログラムを作成できる。このような構成を採用することで、ユーザプログラムの作成効率を高めることができる。また、第３の実装方法においては、ＣＰＵユニット１００内部に有効確認データが保持されるので、ＣＰＵユニット１００に接続される任意の外部装置から当該有効確認データにアクセス可能になっている。
【０１１９】
＜Ｇ．その他の実装例＞
上述の第１〜第３の実装例においては、処理が実行されたタイミングにおける制御システム１のハードウェア構成およびネットワーク構成に応じて、有効確認データを算出するためのロジックまたはアルゴリズムを決定する方法について例示したが、そのロジックまたはアルゴリズムを決定した後、何らかのユニットの追加・変更・廃止といった、ハードウェア構成あるいはネットワーク構成の変更が生じた場合には、その変更が生じたことを検知して、ロジックまたはアルゴリズムを再構築するようにしてもよい。このような自動再構築の方法を採用することで、制御システム１の構成変更に対して、必要なアルゴリズムまたはロジックを動的に最適化できる。
【０１２０】
＜Ｈ．利点＞
本実施の形態に係る生産システムおよび当該制御システムを構成する制御装置によれば、何らかの入力データを利用したユーザプログラムを開発するにあたって、ユーザ（典型的には、ユーザプログラムの開発者）は、当該入力データがどのようなハードウェアおよびネットワークを介して収集されるのかを意識する必要がない。ユーザは、ユーザプログラムにおいて使用する入力データに対応する有効確認データを指定すれば、当該指定した入力データの伝送経路などに応じた１または複数のステータス情報を反映した有効確認データを利用することができる。
【０１２１】
また、有効確認データの値は、制御システムのハードウェア構成およびネットワーク構成などに応じて構築されたロジックまたはアルゴリズムに基づいて更新されるので、事後的に構成の変更が生じたとしても、ユーザプログラムを変更することなく、対応が可能になる。
【０１２２】
このように、本実施の形態によれば、多段階または高度にネットワーク化された制御システムであっても、効率的なプログラミングを実現できる。
【０１２３】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１２４】
１  制御システム、２  ＰＬＣ、３，３Ａ，３Ｂ，３Ｃ，３Ｄ  リモートＩ／Ｏ装置、４  上位ネットワーク、５，６  フィールドネットワーク、１０  ソースコード、１２  オブジェクトコード、２０  変数テーブル、２２  ネットワークコンフィギュレーション、１００  ＣＰＵユニット、１０２，２０２  プロセッサ、１０４，２０４  チップセット、１０６，２０６  主メモリ、１０８，２０８  不揮発性メモリ、１０８ａ  システムプログラム、１０８ｂ，４００，４１０，４２０，４３０Ａ，４３０Ｂ，４４０  ユーザプログラム、１１０  クロック、１１２，１６２，２１４  通信インターフェイス、１１４，１２８，１３８，１４８，１６４，１９８  コネクタ、１１６，１６６  メモリカードインターフェイス、１１８  メモリカード、１２０，１３０，１７０，１８０  ネットワークコントローラ、１２２，１３２，１４２，１７２，１８２，１９２  バッファメモリ、１２４，１３４，１４４，１７４，１８４，１９４  転送制御回路、１２６，１３６，１４６，１７６，１８６，１９６  ＤＭＡ制御回路、１４０，１９０  内部バスコントローラ、１５０  機能ユニット、１５２  通信ユニット、１６０  カプラユニット、１６１  コントローラ、２００  サポート装置、２０８ａ  ＯＳ、２０８ｂ  サポートプログラム、２１０  表示インターフェイス、２１２  入力部、３０１，３０２，３０３，３０４  伝送経路、４０１，４０２，４０３，４０４，４１１  状態フラグ、４０５  入力値フラグ、４０６，４３２  ファンクションブロック、４２１，４３６，４４２  特殊フラグ、４３４  特殊コイル、４４４  有効確認データ設定、４４４ａ，４４４ｂ  定義、４４６  データ更新ロジック、４４８  ロギング機能。
【図１】
2018136745.tif 000003
【図２】
2018136745.tif 000004
【図３】
2018136745.tif 000005
【図４】
2018136745.tif 000006
【図５】
2018136745.tif 000007
【図６】
2018136745.tif 000008
【図７】
2018136745.tif 000009
【図８】
2018136745.tif 000010
【図９】
2018136745.tif 000011
【図１０】
2018136745.tif 000012
【図１１】
2018136745.tif 000013
【図１２】
2018136745.tif 000014
【図１３】
2018136745.tif 000015
【図１４】
2018136745.tif 000016