(57)【要約】【課題】制御プログラムをコントローラで実行する際に、制御対象の周辺装置単位に実Ｉ／Ｏと仮想Ｉ／Ｏとを切り替えて制御プログラムのＩ／Ｏ処理を実行できるコントローラを得る。【解決手段】周辺装置の応答を、制御対象の周辺装置単位に構成する模擬応答プログラム３で模擬実行する。模擬応答プログラム３によって仮想Ｉ／Ｏとして実行するＩ／Ｏ一覧を保持する模擬応答Ｉ／Ｏ情報テーブル６を用いて、Ｉ／Ｏアクセス検出部４は制御プログラム２のＩ／Ｏ処理要求を実Ｉ／Ｏとして処理するか仮想Ｉ／Ｏとして処理するかを判定する。Ｉ／Ｏアクセス経路制御部５は、Ｉ／Ｏアクセス検出部４の判定結果に従って、実Ｉ／Ｏと仮想Ｉ／Ｏとを切り替えてＩ／Ｏ処理を実行する。【選択図】図１
2012198636.tif 000002
【特許請求の範囲】
【請求項１】
Ｉ／Ｏ処理によって周辺装置の動作を制御する制御プログラムを実行するコントローラにおいて、
前記制御プログラムはＩ／Ｏ処理要求をＩ／Ｏアクセス検出部に通知する手段を内部に有し、
周辺装置単位に構成されて周辺装置の応答を模擬する模擬応答プログラムと対応して実Ｉ／Ｏから仮想Ｉ／Ｏへ切り替える仮想Ｉ／Ｏ情報を保持する模擬応答Ｉ／Ｏ情報テーブルと、
前記模擬応答Ｉ／Ｏ情報テーブルに保持されている前記仮想Ｉ／Ｏ情報を用いて前記制御プログラムのＩ／Ｏ処理要求を実Ｉ／Ｏとして処理するか仮想Ｉ／Ｏとして処理するかを判定し、かつ要求されたＩ／Ｏ処理の結果が前記模擬応答プログラムの実行条件を満たすかを判定するＩ／Ｏアクセス検出部と、
前記Ｉ／Ｏアクセス検出部の判定結果に従って実Ｉ／Ｏと仮想Ｉ／Ｏとを切り替えてＩ／Ｏ処理を実行するＩ／Ｏアクセス経路制御部とを備えたことを特徴とするコントローラ。
【請求項２】
実Ｉ／Ｏ領域と仮想Ｉ／Ｏ領域とをさらに備え、
前記Ｉ／Ｏアクセス経路制御部が、前記Ｉ／Ｏアクセス検出部の判定結果に従って実Ｉ／Ｏ処理時は前記コントローラと周辺装置との間のＩ／Ｏ処理を中継する前記実Ｉ／Ｏ領域に対するＩ／Ｏ処理を実行する一方、仮想Ｉ／Ｏ処理時は前記仮想Ｉ／Ｏ領域に対するＩ／Ｏ処理を実行し、前記Ｉ／Ｏアクセス検出部により前記仮想Ｉ／Ｏの処理結果が前記模擬応答プログラムの実行条件を満たすと判定された場合は前記模擬応答プログラムを呼び出して対象となる周辺装置の応答を模擬実行することを特徴とする請求項１記載のコントローラ。
【請求項３】
前記模擬応答Ｉ／Ｏ情報テーブルと前記仮想Ｉ／Ｏ領域とを主記憶装置の一部に配置したことを特徴とする請求項２記載のコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、液晶製造装置や半導体製造装置といった大型装置を制御するコントローラに関するものである。
【背景技術】
【０００２】
液晶製造装置や半導体製造装置といった大型装置は、ワーク配給装置やワーク搬送装置などの多種多様な周辺装置と、周辺装置の動作を制御するコントローラとを組み合わせた構成となっている。一般的に、コントローラと接続される周辺装置は、コントローラと周辺装置との間の入出力（Ｉ／Ｏ）処理によって動作が制御される。大型装置の場合は、装置を構成する周辺装置の規模に応じてＩ／Ｏ接続線数が増大する。
【０００３】
Ｉ／Ｏ処理は、コントローラで実行される制御プログラムによって実行される。制御プログラムのＩ／Ｏ処理に不具合があると、周辺装置の破損や誤動作を引き起こす原因となる。このため、制御プログラムのＩ／Ｏ処理に不具合が含まれていないことをＩ／Ｏ処理の動作検証によって確認し、不具合が発見された場合は制御プログラムを修正して周辺装置の破損や誤動作が発生しないようにする。
そこで、従来のＩ／Ｏ処理の動作検証手段として、例えば、コントローラに付属されるユーティリティプログラムを用いて、手動操作でＩ／Ｏ処理を実行する方法がある。
【０００４】
また、別の手段として、例えば特許文献１のように、周辺装置に対するＩ／Ｏ処理をシミュレーション実行する動作検証方法も知られている。この特許文献１では、プログラマブルコントローラで実行するユーザプログラムを改変することなく、プログラマブルコントローラでのユーザプログラムの動作のシミュレーションをパソコン上で実現する方法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平８−１９４５０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
制御プログラムのＩ／Ｏ処理の動作検証は、（１）Ｉ／Ｏ処理をシミュレーション実行できる手段を用いて制御プログラムのＩ／Ｏ処理の結果を確認した後、（２）制御プログラムをコントローラで実行してＩ／Ｏ処理の結果を確認する、という２段階で実施されることが望ましい。（１）を実施する理由は、周辺装置を実際に動作させる前に制御プログラムのＩ／Ｏ処理の不具合を発見して制御プログラムを修正することによって、周辺装置の破損や誤動作を未然に防ぐためである。また、（２）を実施する理由は、周辺装置の（ａ）単動動作の検証、（ｂ）連動動作の検証、（ｃ）動作タイミングの調整、の３項目を実施するためである。単動動作とは、周辺装置の単一動作のことを意味する。例えば、アームが取り付けられたワーク配給装置において、アームを前後方向のみ動かす動作や、上下方向のみ動かす動作を指す。また、連動動作とは、周辺装置の単動動作の組合せで実現される動作のことを意味する。例えば、前述のワーク配給装置において、アームを前後方向と上下方向に動かしてワークを所望の位置に配置する動作を指す。
【０００７】
このような前提において、従来のように、ユーティリティプログラムを用いて手動操作で制御プログラムのＩ／Ｏ処理を動作検証する方法では、例えば、ワーク配給装置に対してワーク投入を指示する入力信号を、ユーティリティプログラムを用いて手動で操作することにより、このワーク投入を指示する信号と対応して、ワーク配給装置の動作を制御するための制御プログラムのＩ／Ｏ処理が正しく動作するかを検証することになる。この際、動作検証の作業者は、周辺装置に対する出力信号線や周辺装置からの入力信号線がコントローラの何番目のＩ／Ｏ接点と接続されているか、というコントローラと周辺装置との接続構成を事前に把握しておく必要がある。
このため、周辺装置を単動動作、あるいは連動動作させて制御プログラムのＩ／Ｏ処理を動作検証する場合、大型装置のようにＩ／Ｏ接続線数が多いと作業者の手動操作を必要とするＩ／Ｏが増加することになり、効率よくＩ／Ｏ処理の動作検証を行うことができない、という課題があった。
【０００８】
また、特許文献１のような従来のＩ／Ｏ処理の動作検証方法においては、プログラムをシミュレーションモードで実行させた場合は、パソコン上でＩ／Ｏ処理を模擬実行してプログラムの動作検証を行い、シミュレーションモードでない場合は、プログラマブルコントローラとコマンド通信を行って実際にＩ／Ｏ処理を実行させてプログラムの動作検証を行う。すなわち、シミュレーションモードか否かに基づいて、Ｉ／Ｏ処理を一括して模擬実行するか周辺装置に対して実際にＩ／Ｏ処理を実行するかを切り替えている。
しかしながら、装置全体のＩ／Ｏ処理を一括してシミュレーションモードにより模擬実行するか、一括して実際のモードに切り替えてプログラムのＩ／Ｏ処理を動作検証するため、個々の周辺装置単位にプログラムのＩ／Ｏ処理を動作検証することができない、という課題があった。
【０００９】
この発明は、上記のような課題を解決するためになされたものであり、制御プログラムのＩ／Ｏ処理をコントローラと周辺装置との間で実際に処理する実Ｉ／Ｏと、Ｉ／Ｏ処理を仮想実行する仮想Ｉ／Ｏとを、周辺装置単位に切り替えて制御プログラムのＩ／Ｏ処理の動作検証を実施できるコントローラを得ることを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、この発明は、Ｉ／Ｏ処理によって周辺装置の動作を制御する制御プログラムを実行するコントローラにおいて、前記制御プログラムはＩ／Ｏ処理要求をＩ／Ｏアクセス検出部に通知する手段を内部に有し、周辺装置単位に構成されて周辺装置の応答を模擬する模擬応答プログラムと対応して実Ｉ／Ｏから仮想Ｉ／Ｏへ切り替える仮想Ｉ／Ｏ情報を保持する模擬応答Ｉ／Ｏ情報テーブルと、前記模擬応答Ｉ／Ｏ情報テーブルに保持されている前記仮想Ｉ／Ｏ情報を用いて前記制御プログラムのＩ／Ｏ処理要求を実Ｉ／Ｏとして処理するか仮想Ｉ／Ｏとして処理するかを判定し、かつ要求されたＩ／Ｏ処理の結果が前記模擬応答プログラムの実行条件を満たすかを判定するＩ／Ｏアクセス検出部と、前記Ｉ／Ｏアクセス検出部の判定結果に従って実Ｉ／Ｏと仮想Ｉ／Ｏとを切り替えてＩ／Ｏ処理を実行するＩ／Ｏアクセス経路制御部とを備えたことを特徴とする。
【発明の効果】
【００１１】
この発明のコントローラによれば、上記のように構成したので、制御プログラムのＩ／Ｏ処理をコントローラと周辺装置との間で実際に処理する実Ｉ／Ｏと、Ｉ／Ｏ処理を仮想実行する仮想Ｉ／Ｏとを、周辺装置単位に切り替えて制御プログラムのＩ／Ｏ処理の動作検証を実施することができる。また、単動動作や連動動作といった周辺装置を段階的に動作させて制御プログラムのＩ／Ｏ処理を動作検証できるという、従来では実現されていない効果を有する。
【図面の簡単な説明】
【００１２】
【図１】この発明の実施の形態１におけるコントローラの基本構成を示す図である。
【図２】この発明の実施の形態１における模擬応答Ｉ／Ｏ情報テーブルの構成例を示す図である。
【図３】この発明の実施の形態１における制御プログラムのＩ／Ｏ処理を示すフローチャートである。
【図４】この発明の実施の形態１における模擬応答プログラムの動作を示すフローチャートである。
【図５】この発明の実施の形態２におけるコントローラの基本構成を示す図である。
【発明を実施するための形態】
【００１３】
以下、この発明の実施の形態について、図面を参照しながら詳細に説明する。
実施の形態１．
図１は、この発明の実施の形態１におけるコントローラの基本構成を示す図である。図１に示されているコントローラ１は、Ｉ／Ｏアクセス検出部４と、Ｉ／Ｏアクセス経路制御部５と、模擬応答Ｉ／Ｏ情報テーブル６と、実Ｉ／Ｏ領域７１と、仮想Ｉ／Ｏ領域７２と、を備え、制御プログラム２と、模擬応答プログラム３を実行する。制御プログラム２は、Ｉ／Ｏアクセス部２１を含む。
【００１４】
実Ｉ／Ｏ領域７１と仮想Ｉ／Ｏ領域７２は、制御プログラム２や模擬応答プログラム３からメモリ読み書きアクセスと同じ手段でＩ／Ｏ処理を実行できるように、メモリアドレス空間７の一部として構成される。すなわち、実Ｉ／Ｏ領域７１に含まれる１つのメモリアドレスは、コントローラ１と周辺装置（図示せず）との間のＩ／Ｏ接続線の１つが一意に特定されるように、メモリアドレス割当てが実施されている。
【００１５】
制御プログラム２は、コントローラ１と周辺装置との間のＩ／Ｏ処理を制御するためのもので、プログラミング言語（例えば、Ｃ言語）を用いて作成される。また、Ｉ／Ｏアクセス部２１は、制御プログラム２に含まれ、制御プログラム２によるＩ／Ｏ処理要求をＩ／Ｏアクセス検出部４を介して実行する手段を備えている。Ｉ／Ｏアクセス部２１を制御プログラム２に含める方法は、制御プログラム２を作成したプログラミング言語で利用可能な方法（例えば、Ｃ言語の場合は関数呼出しやマクロ）を用いればよく、本発明ではその実施形態を問わない。また、図１では、制御プログラム２が１つだけ示されているが、ユーザが所望の動作を得るために、制御プログラム２を１つ以上作成してコントローラ１で実行してもよい。
【００１６】
模擬応答プログラム３は、制御プログラム２によって実行されるコントローラ１と周辺装置との間のＩ／Ｏ処理を模擬実行するためのもので、プログラミング言語（例えば、Ｃ言語）を用いて周辺装置単位に作成される。より具体的には、周辺装置として１つのワーク配給装置と、１つのワーク搬送装置がコントローラ１に接続される場合、ワーク配給装置のＩ／Ｏ処理を模擬実行する１つの模擬応答プログラムと、ワーク搬送装置のＩ／Ｏ処理を模擬実行する別の模擬応答プログラムが、それぞれ個別の模擬応答プログラム３として作成される。すなわち、図１では、模擬応答プログラム３が１つだけ示されているが、複数の周辺装置のＩ／Ｏ処理を周辺装置単位に模擬実行するために、模擬応答プログラム３が１つ以上作成されてコントローラ１で実行される。
【００１７】
Ｉ／Ｏアクセス検出部４は、制御プログラム２または模擬応答プログラム３のＩ／Ｏ処理要求を受け、そのＩ／Ｏ処理を実Ｉ／Ｏとして処理するか、仮想Ｉ／Ｏとして処理するかを模擬応答Ｉ／Ｏ情報テーブル６に基づいて判定する。図２は、模擬応答Ｉ／Ｏ情報テーブル６の構成例を示す図である。Ｉ／Ｏアクセス検出部４は、模擬応答Ｉ／Ｏ情報テーブルの仮想Ｉ／Ｏリストをすべて参照し、要求されたＩ／Ｏが仮想Ｉ／Ｏリストに含まれている場合は、そのＩ／Ｏを仮想Ｉ／Ｏとして判定する。なお、図２に示した模擬応答Ｉ／Ｏ情報テーブル６の構成は一例であり、本発明の効果を制限しない限りこれ以外の構成であっても構わない。
【００１８】
また、Ｉ／Ｏアクセス検出部４は、Ｉ／Ｏ処理が書込みアクセスであった場合、その書込みアクセスの処理結果によって模擬応答プログラム３の実行条件が成立するか否かを模擬応答Ｉ／Ｏ情報テーブル６に基づいて判定する。例えば、要求されたＩ／Ｏ処理がＹ１００に対する書込みアクセスで、かつＩ／Ｏ処理の結果Ｙ１００が１であった場合、識別子がＩＤ０００である模擬応答プログラム３の実行条件が成立したと判定する。
【００１９】
Ｉ／Ｏアクセス経路制御部５は、Ｉ／Ｏアクセス検出部４の判定結果にしたがって、実Ｉ／Ｏの場合は、要求されたＩ／Ｏと対応する実Ｉ／Ｏ領域７１のメモリアドレスを求めて実Ｉ／Ｏとして処理し、仮想Ｉ／Ｏの場合は、要求されたＩ／Ｏと対応する仮想Ｉ／Ｏ領域７２のメモリアドレスを求めて仮想Ｉ／Ｏとして処理する。
【００２０】
図３は、制御プログラム２のＩ／Ｏ処理を説明するためのフローチャートである。制御プログラム２の実行中に、Ｉ／Ｏ処理要求が発生すると（ステップＳＴ１１）、Ｉ／Ｏアクセス部２１を介してＩ／Ｏアクセス検出部４にＩ／Ｏ処理要求が通知される。次に、Ｉ／Ｏアクセス検出部４が、制御プログラム２のＩ／Ｏ処理要求を実Ｉ／Ｏとして処理するか仮想Ｉ／Ｏとして処理するかを判定し（ステップＳＴ１２）、実Ｉ／Ｏであると判定された場合（ステップＳＴ１２のＮＯの場合）は、Ｉ／Ｏアクセス経路制御部５が、要求されたＩ／Ｏ処理に対応する実Ｉ／Ｏ領域７１のメモリアドレスを求める。一方、ステップＳＴ１２において仮想Ｉ／Ｏであると判定された場合（ステップＳＴ１２のＹＥＳの場合）は、Ｉ／Ｏアクセス経路制御部５が、要求されたＩ／Ｏ処理に対応する仮想Ｉ／Ｏ領域７２のメモリアドレスを求める。
【００２１】
そして、ステップＳＴ１３またはステップＳＴ１４で求めたメモリアドレスに対して読出しアクセスまたは書込みアクセスのＩ／Ｏ処理を実行する（ステップＳＴ１５）。すなわち、制御プログラム２のＩ／Ｏ処理要求が読出しアクセスであった場合は、ステップＳＴ１３またはステップＳＴ１４で求めたメモリアドレスに対して読出しアクセスを実行し、制御プログラム２のＩ／Ｏ処理要求が書込みアクセスであった場合は、ステップＳＴ１３またはステップＳＴ１４で求めたメモリアドレスに対して書込みアクセスを実行する。次に、Ｉ／Ｏアクセス検出部４はステップＳＴ１５の処理が書込みアクセスか読出しアクセスかを判定し（ステップＳＴ１６）、読出しアクセスの場合（ステップＳＴ１６のＮＯの場合）は、読出しアクセスの結果を制御プログラム２へ渡し（ステップＳＴ１７）、Ｉ／Ｏ処理を完了する。一方、書込みアクセスの場合（ステップＳＴ１６のＹＥＳの場合）は、さらにステップＳＴ１５の処理が仮想Ｉ／Ｏアクセスかを判定し（ステップＳＴ１８）、実Ｉ／Ｏである場合（ステップＳＴ１８のＮＯの場合）は、Ｉ／Ｏ処理を完了する。また、ステップＳＴ１８において仮想Ｉ／Ｏであると判定された場合（ステップＳＴ１８のＹＥＳの場合）は、後述する図４に示したフローチャートへ進む。
【００２２】
図４は、模擬応答プログラム３の処理を説明するためのフローチャートである。図３のステップＳＴ１６でＩ／Ｏ処理が書込みアクセスであった場合、かつ、ステップＳＴ１５の処理が仮想Ｉ／Ｏアクセスであった場合、Ｉ／Ｏアクセス検出部４は模擬応答プログラム３の実行条件が成立したか否かを判定する（ステップＳＴ２１）。そして、条件成立の場合（ステップＳＴ２１のＹＥＳの場合）は、Ｉ／Ｏアクセス経路制御部５が、条件成立した模擬応答プログラム３を呼び出し（ステップＳＴ２２）、呼び出された模擬応答プログラム３の実行結果に基づいて、仮想Ｉ／Ｏ領域７２のメモリアドレスを求め、このメモリアドレスに対してステップＳＴ２２で呼び出された模擬応答プログラム３の実行結果を書き込み（ステップＳＴ２３）、模擬応答プログラム３の処理を完了する。また、ステップＳＴ２１において条件が成立していない場合（ステップＳＴ２１のＮＯの場合）にも、模擬応答プログラム３の処理を完了する。
このようにして、この模擬応答プログラム３に対応する周辺装置についてのみ、仮想Ｉ／Ｏに切り替えてＩ／Ｏ処理を実行することができるのである。
【００２３】
この実施の形態１に係るコントローラにより、周辺装置ごとに実Ｉ／Ｏと仮想Ｉ／Ｏとを切り替えて制御プログラムのＩ／Ｏ処理を実行する具体例について説明する。一般に、大型装置においては多数の周辺装置がコントローラに接続されているが、ここでは便宜上、周辺装置としてワーク配給装置とワーク搬送装置の２つの装置がコントローラに接続されてＩ／Ｏ処理の制御が行われているものとし、ワーク配給装置の模擬応答プログラムを３ａ、ワーク搬送装置の模擬応答プログラムを３ｂとして説明する。通常、何らかの不具合が発見された場合や、製品の改良、バージョンアップ等の理由により、制御プログラムの修正や変更が行われるが、ここでは、製品の改良のためにワーク配給装置に関する部分についてのみ制御プログラムが変更されたものとする。
【００２４】
そこで、ワーク配給装置についてのみ実Ｉ／Ｏから仮想Ｉ／Ｏに切り替えて制御プログラムの動作をシミュレーションする。この際、Ｉ／Ｏアクセス検出部４が、模擬応答プログラム３ａのＩ／Ｏ処理要求を受け、模擬応答Ｉ／Ｏ情報テーブル６に基づいて、要求されたＩ／Ｏが仮想Ｉ／Ｏリストに含まれていることを確認し、仮想Ｉ／Ｏと判定する。そして、模擬応答プログラム３ａの実行条件が成立しているか否かを判定し、成立している場合には、Ｉ／Ｏアクセス経路制御部５が、模擬応答プログラム３ａを呼び出してＩ／Ｏ処理の模擬実行を開始し、この実行結果に基づいて、仮想Ｉ／Ｏ領域７２に対するＩ／Ｏ処理を実行する。このようにして、模擬応答プログラム３ａに対応する周辺装置であるワーク配給装置についてのみ、仮想Ｉ／Ｏに切り替えてＩ／Ｏ処理を実行することができ、制御プログラムの変更が正しく行われたか否かが検証できる。
【００２５】
なお、ここでは便宜上、ワーク配給装置についてのみ制御プログラムが変更されたものとして説明したが、例えば、すべての周辺装置に関する制御プログラムが変更された場合には、まずはワーク配給装置のみ仮想Ｉ／Ｏに切り替えて動作検証を行い、ＯＫであれば、次にワーク配給装置は実Ｉ／Ｏに切り替えて、ワーク搬送装置のみ仮想Ｉ／Ｏに切り替えて試験を行う。このようにすれば、実行結果が正常でなかった場合に、どの周辺装置の制御プログラムに問題があるかがいち早くわかり、効率良く試験を実行することができる。
【００２６】
また、この実施の形態１に係るコントローラにより、個別の周辺装置における単動動作および連動動作を試験する具体例について説明する。ここでは、周辺装置としてワーク配給装置を例に説明し、説明の便宜上、ワーク配給装置はワークを掴むハンド部分と、ハンド部分を移動させるアーム部分と、から構成され、（１）ハンド開き、（２）アーム押下げ、（３）ハンド閉じ（ワーク捕獲）、（４）アーム押上げ、（５）アーム前移動、（６）アーム押下げ、（７）ハンド開き（ワーク設置）、（８）アーム押上げ、（９）ハンド閉じ、（１０）アーム後移動、の１０個の単動動作を、この順序で実行するものとする。
【００２７】
制御プログラムは、ワーク配給装置との間でＩ／Ｏ処理を行うことによって、ハンド部分やアーム部分を駆動するアクチュエータの動作を制御する。すなわち、単動動作試験では、前述の（１）〜（１０）について、制御プログラムによるＩ／Ｏ処理に従ってハンド部分やアーム部分が所望の動作を得ているか否かを試験する。
例えば、（１），（３）を制御するＩ／Ｏのみ実Ｉ／Ｏとして設定し、それ以外を仮想Ｉ／Ｏとして設定する。この状態で制御プログラムを実行することによって、アーム部分を動作させることなくハンド部分の単動動作を検証できる。他の単動動作も、同様に仮想Ｉ／Ｏと実Ｉ／Ｏとを切り替えることによって個別に検証できる。
【００２８】
上記の手順でワーク配給装置の単動動作試験を終えた後、次にハンド部分とアーム部分の連動動作試験を実施する。例えば、（１），（２），（３），（４）を制御するＩ／Ｏを実Ｉ／Ｏとして設定し、それ以外を仮想Ｉ／Ｏとして設定する。この状態で制御プログラムを実行することによって、ハンド部分の開閉動作とアーム部分の上下動作の連動によってワークを捕獲する動作を検証できる。
ワークを捕獲する動作の試験を終えたら、次に（５）を制御するＩ／Ｏを仮想Ｉ／Ｏから実Ｉ／Ｏに切り替えて制御プログラムを実行し、ワーク捕獲からアーム部分の前移動までの動作を検証できる。最終的に、（１）〜（１０）までの全Ｉ／Ｏを実Ｉ／Ｏとして設定して制御プログラムを動作させて、ワーク配給装置の一連の動作を検証することができる。
【００２９】
また、この実施の形態１に係るコントローラによれば、模擬応答プログラムで意図的にエラー状態を発生させた場合に、制御プログラム側で正しくリカバリ処理が実行されることを確認することもできる。
例えば、上記のワーク配給装置を例に説明すると、アーム前移動と対応する模擬応答プログラムにおいて、アームが所望の位置に達したことを通知する信号を仮想Ｉ／Ｏを介してコントローラに通知するものとする。そして、正常状態の試験を行う場合には、信号を仮想Ｉ／Ｏを介してコントローラに対して入力する模擬応答プログラムを登録し、制御プログラムを動作させて正常に処理が行われることを検証する。一方、異常状態の試験を行う場合には、信号をコントローラに対して入力しない模擬応答プログラムを登録し、リカバリ機能（例えば、装置破壊を防ぐための緊急停止）が動作するか否かを検証する。
このように、装置破壊につながる試験を、実Ｉ／Ｏを使って実際に装置を動作させて行うことは困難であるが、この発明によれば、制御プログラムには変更を加えずに仮想Ｉ／Ｏに切り替えるだけで動作検証することができる。
【００３０】
以上のように、この実施の形態１によれば、コントローラと周辺装置との間で実行されるＩ／Ｏ処理を制御する制御プログラムを実行するコントローラにおいて、周辺装置単位に構成されて当該周辺装置の応答を模擬する模擬応答プログラムと対応して実Ｉ／Ｏから仮想Ｉ／Ｏへ切り替える仮想Ｉ／Ｏ情報を保持する模擬応答Ｉ／Ｏ情報テーブルと、模擬応答Ｉ／Ｏ情報テーブルに保持されている仮想Ｉ／Ｏ情報に基づいて制御プログラムのＩ／Ｏ処理要求を実Ｉ／Ｏとして処理するか仮想Ｉ／Ｏとして処理するかを判定し、かつ要求されたＩ／Ｏ処理の結果が模擬応答プログラムの実行条件を満たすかを判定するＩ／Ｏアクセス検出部と、Ｉ／Ｏアクセス検出部の判定結果に従って実Ｉ／Ｏと仮想Ｉ／Ｏとを切り替えてＩ／Ｏ処理を実行するＩ／Ｏアクセス経路制御部とを備え、制御プログラムのＩ／Ｏ処理要求がＩ／Ｏアクセス検出部に通知されると、模擬応答Ｉ／Ｏ情報テーブルの仮想Ｉ／Ｏ情報に基づいて当該Ｉ／Ｏ処理要求を実Ｉ／Ｏとして処理するか仮想Ｉ／Ｏとして処理するかをＩ／Ｏアクセス検出部が判定し、Ｉ／Ｏアクセス経路制御部は、Ｉ／Ｏアクセス検出部の判定結果が実Ｉ／Ｏであった場合は実Ｉ／Ｏ領域に対してＩ／Ｏ処理を実行する一方、判定結果が仮想Ｉ／Ｏであった場合は仮想Ｉ／Ｏ領域に対してＩ／Ｏ処理を実行し、仮想Ｉ／Ｏの処理結果が模擬応答プログラムの実行条件を満たす場合は模擬応答プログラムを呼び出して周辺装置の応答を模擬実行するようにしたので、周辺装置単位に実Ｉ／Ｏと仮想Ｉ／Ｏと切り替えて制御プログラムのＩ／Ｏ処理を実行することができる。また、単動動作や連動動作といった周辺装置を段階的に動作させて制御プログラムのＩ／Ｏ処理を動作検証することができる。さらに、模擬応答プログラムで意図的にエラー状態を発生させた場合に、制御プログラム側でリカバリ処理が正しく実行されることを確認することもできる。
【００３１】
実施の形態２．
図５は、この発明の実施の形態２におけるコントローラ１０の基本構成を示す図である。図１に示した実施の形態１のコントローラ１との違いは、実施の形態１における模擬応答Ｉ／Ｏ情報テーブル６と仮想Ｉ／Ｏ領域７２が主記憶装置８に含まれるように配置されている点であり、これにより、実施の形態１のコントローラ１より簡素な構成となっている。なお、模擬応答Ｉ／Ｏ情報テーブル６と仮想Ｉ／Ｏ領域７２の構成は実施の形態１における模擬応答Ｉ／Ｏ情報テーブル６と仮想Ｉ／Ｏ領域７２と同様である。また、コントローラ１０におけるその他の構成については実施の形態１と同様であるため、図１に示した構成と同一部分については同一符号を付してその説明を省略する。
【００３２】
主記憶装置８は、制御プログラム２や模擬応答プログラム３を実行する際に、プログラムの変数などを格納するための作業メモリとして利用されるものである。さらに、主記憶装置８によって模擬応答Ｉ／Ｏ情報テーブル６と仮想Ｉ／Ｏ領域７２が含まれるような構成であっても、図３と図４で示した処理手順で実Ｉ／Ｏと仮想Ｉ／Ｏとを切り替えて制御プログラムのＩ／Ｏ処理が実行される。すなわち、コントローラ１０の構成であっても、実施の形態１のコントローラ１と同様のＩ／Ｏ処理が実現される。
【００３３】
以上のように、この実施の形態２のコントローラによれば、実施の形態１と同様の効果に加え、コントローラの構成をより簡素化することができる。
【００３４】
なお、本願発明はその発明の範囲内において、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
【符号の説明】
【００３５】
１，１０  コントローラ、２  制御プログラム、３，３ａ，３ｂ  模擬応答プログラム、４  Ｉ／Ｏアクセス検出部、５  Ｉ／Ｏアクセス経路制御部、  ６  模擬応答Ｉ／Ｏ情報テーブル、  ７  メモリアドレス空間、８  主記憶装置、２１  Ｉ／Ｏアクセス部、７１  実Ｉ／Ｏ領域、７２  仮想Ｉ／Ｏ領域。
【図１】
2012198636.tif 000003
【図２】
2012198636.tif 000004
【図３】
2012198636.tif 000005
【図４】
2012198636.tif 000006
【図５】
2012198636.tif 000007