(57)【要約】【課題】制御対象のデバイスがすべて接続されていない場合でも、動作することができるプログラマブルコントローラおよびプログラマブルコントローラによるデバイス制御方法を提供する。【解決手段】仮想デバイス設定情報記憶部１１は、実デバイスを使用するか、または実デバイスの代わりに実デバイスを模擬した仮想デバイスプログラムを使用するかを定めた設定情報を記憶する。プログラム実行部４１は、設定情報を参照して、仮想デバイスを使用するように定められている場合に、仮想デバイスプログラムを実行する。【選択図】図１
2015176340.tif 000002
【特許請求の範囲】
【請求項１】
実デバイスを使用するか、または前記実デバイスの代わりに前記実デバイスを模擬した仮想デバイスプログラムを使用するかを定めた設定情報を記憶する記憶部と、
前記設定情報を参照して、前記仮想デバイスを使用するように定められている場合に、仮想デバイスプログラムを実行するプログラム実行部とを備えたコントローラ。
【請求項２】
前記設定情報は、複数のデバイスの各々について、前記実デバイスを使用するか、前記実デバイスの代わりに仮想デバイスプログラムを使用するかを定める、請求項１記載のコントローラ。
【請求項３】
前記プログラム実行部は、前記設定情報によって前記仮想デバイスプログラムを使用するように定められている場合に、前記仮想デバイスプログラムが模擬する実デバイスが入力デバイスのときに、仮想の入力信号を用いて前記仮想デバイスプログラムを実行する、請求項２記載のコントローラ。
【請求項４】
前記プログラム実行部は、前記仮想デバイスプログラムの実行結果を前記記憶部に書き込むとともに、前記実デバイスからの信号が前記記憶部に書き込まれないように制御する、請求項３記載のコントローラ。
【請求項５】
前記プログラム実行部は、前記設定情報によって前記仮想デバイスプログラムを使用するように定められている場合に、前記仮想デバイスプログラムが模擬する実デバイスが出力デバイスのときに、前記仮想デバイスプログラムを実行し、前記仮想デバイスプログラムの実行によって得られる結果を仮想の出力信号として前記記憶部に記憶する、請求項２記載のコントローラ。
【請求項６】
前記プログラム実行部は、前記仮想デバイスプログラムの実行によって得られる結果を仮想の出力信号として前記記憶部に記憶するとともに、前記実デバイスへ信号を送信しない、請求項５記載のコントローラ。
【請求項７】
接続される実デバイスの制御と、前記実デバイスの代わりの前記実デバイスを模擬した仮想デバイスプログラムの実行が可能なコントローラによるデバイス制御方法であって、
前記コントローラが、前記実デバイスが前記コントローラに接続されていない場合に、前記実デバイスの代わりに仮想デバイスプログラムを使用するように指定する情報を受信するステップと、
前記コントローラが、前記使用するように指定された仮想デバイスプログラムを実行するステップとを備えた、コントローラによるデバイス制御方法。
【請求項８】
接続される実デバイスの制御と、前記実デバイスの代わりの前記実デバイスを模擬した仮想デバイスプログラムの実行が可能なコントローラによるデバイス制御方法であって、
前記コントローラが、前記実デバイスの動作が正常かどうかの検証を支援するために、前記実デバイスの代わりに仮想デバイスプログラムを使用するように指定する情報を受信するステップと、
前記コントローラが、前記使用するように指定された仮想デバイスプログラムを実行するステップとを備えた、コントローラによるデバイス制御方法。
【請求項９】
接続される実デバイスの制御と、前記実デバイスの代わりの前記実デバイスを模擬した仮想デバイスプログラムの実行が可能なコントローラによるデバイス制御方法であって、
前記コントローラが、実入力デバイスに特定の信号が入力されたときに、ユーザプログラムが正常に動作するかどうかの検証を支援するために、前記実入力デバイスの代わりに仮想デバイスプログラムを使用するように指定する情報を受信するステップと、
前記コントローラが、予め記憶された特定の信号を前記仮想デバイスプログラムへの仮想入力信号として指定する情報を受信するステップと、
前記コントローラが、前記使用するように指定された仮想デバイスプログラムを実行するステップと、
前記コントローラが、前記仮想デバイスプログラムの実行結果に基づいて動作するユーザプログラムを実行するステップとを備えた、コントローラによるデバイス制御方法。
【請求項１０】
接続される実デバイスの制御と、前記実デバイスの代わりの前記実デバイスを模擬した仮想デバイスプログラム、および前記実デバイスで制御される制御対象の代わりに仮想制御対象プログラムの実行が可能なコントローラによるデバイス制御方法であって、
前記コントローラが、ユーザプログラムが正常に動作するかどうかの検証を支援するために、実入力デバイスの代わりに第１の仮想デバイスプログラムを使用し、実出力デバイスの代わりに第２の仮想デバイスプログラムを使用し、前記実出力デバイスで制御される制御対象の代わりに仮想制御対象プログラムを使用するように指定する情報を受信するステップと、
前記コントローラが、前記仮想制御対象プログラムの仮想出力信号を前記第１の仮想デバイスプログラムへの仮想入力信号として指定し、前記仮想制御対象プログラムの仮想入力信号を前記第２の仮想デバイスの仮想出力信号として指定する設定情報を受信するステップと、
前記コントローラが、前記設定情報に基づいて、前記第１の仮想デバイスプログラムを実行するステップと、
前記コントローラが、前記第１の仮想デバイスプログラムの実行結果に基づいて動作するユーザプログラムを実行するステップと、
前記コントローラが、前記設定情報に基づいて、前記第２の仮想デバイスプログラムを実行するステップと、
前記コントローラが、前記設定情報に基づいて、前記仮想制御対象プログラムを実行するステップとを備えた、コントローラによるデバイス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルコントローラおよびプログラマブルコントローラによるデバイス制御方法に関する。
【背景技術】
【０００２】
プログラマブルコントローラと、プログラマブルコントローラによって制御されるデバイスとがバスやネットワークで接続されたシステムが知られている（たとえば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２５７４００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、プログラマブルコントローラによって制御されるデバイスの全てが用意できない場合でも、用意できるデバイスだけをプログラマブルコントローラに接続して、プログラマブルコントローラが正常に動作するかどうかを検証したい場合がある。
【０００５】
しかしながら、特許文献１に記載のようなシステムでは、制御対象のデバイスがすべてプログラマブルコントローラに接続されていないと、エラーを表示し、プログラマブルコントローラが動作しないという問題がある。
【０００６】
それゆえに、本発明の目的は、制御対象のデバイスがすべて接続されていない場合でも、動作することできるプログラマブルコントローラおよびプログラマブルコントローラによるデバイス制御方法を提供することである。
【課題を解決するための手段】
【０００７】
本発明のコントローラは、実デバイスを使用するか、または実デバイスの代わりに実デバイスを模擬した仮想デバイスプログラムを使用するかを定めた設定情報を記憶する記憶部と、設定情報を参照して、仮想デバイスを使用するように定められている場合に、仮想デバイスプログラムを実行するプログラム実行部とを備える。
【０００８】
好ましくは、設定情報は、複数のデバイスの各々について、実デバイスを使用するか、実デバイスの代わりに仮想デバイスプログラムを使用するかを定める。
【０００９】
好ましくは、プログラム実行部は、設定情報によって仮想デバイスプログラムを使用するように定められている場合に、仮想デバイスプログラムが模擬する実デバイスが入力デバイスのときに、仮想の入力信号を用いて仮想デバイスプログラムを実行する。
【００１０】
好ましくは、プログラム実行部は、仮想デバイスプログラムの実行結果を記憶部に書き込むとともに、実デバイスからの信号が記憶部に書き込まれないように制御する。
【００１１】
好ましくは、プログラム実行部は、設定情報によって仮想デバイスプログラムを使用するように定められている場合に、仮想デバイスプログラムが模擬する実デバイスが出力デバイスのときに、仮想デバイスプログラムを実行し、仮想デバイスプログラムの実行によって得られる結果を仮想の出力信号として記憶部に記憶する。
【００１２】
好ましくは、プログラム実行部は、仮想デバイスプログラムの実行によって得られる結果を仮想の出力信号として記憶部に記憶するとともに、実デバイスへ信号を送信しない。
【００１３】
本発明は、接続される実デバイスの制御と、実デバイスの代わりの実デバイスを模擬した仮想デバイスプログラムの実行が可能なコントローラによるデバイス制御方法であって、コントローラが、実デバイスがコントローラに接続されていない場合に、実デバイスの代わりに仮想デバイスプログラムを使用するように指定する情報を受信するステップと、コントローラが、使用するように指定された仮想デバイスプログラムを実行するステップとを備える。
【００１４】
本発明は、接続される実デバイスの制御と、実デバイスの代わりの実デバイスを模擬した仮想デバイスプログラムの実行が可能なコントローラによるデバイス制御方法であって、コントローラが、実デバイスの動作が正常かどうかの検証を支援するために、実デバイスの代わりに仮想デバイスプログラムを使用するように指定する情報を受信するステップと、コントローラが、使用するように指定された仮想デバイスプログラムを実行するステップとを備える。
【００１５】
本発明は、接続される実デバイスの制御と、実デバイスの代わりの実デバイスを模擬した仮想デバイスプログラムの実行が可能なコントローラによるデバイス制御方法であって、コントローラが、実入力デバイスに特定の信号が入力されたときに、ユーザプログラムが正常に動作するかどうかの検証を支援するために、実入力デバイスの代わりに仮想デバイスプログラムを使用するように指定する情報を受信するステップと、コントローラが、予め記憶された特定の信号を仮想デバイスプログラムへの仮想入力信号として指定する情報を受信するステップと、コントローラが、使用するように指定された仮想デバイスプログラムを実行するステップと、コントローラが、仮想デバイスプログラムの実行結果に基づいて動作するユーザプログラムを実行するステップとを備える。
【００１６】
本発明は、接続される実デバイスの制御と、実デバイスの代わりの実デバイスを模擬した仮想デバイスプログラム、および実デバイスで制御される制御対象の代わりに仮想制御対象プログラムの実行が可能なコントローラによるデバイス制御方法であって、コントローラが、ユーザプログラムが正常に動作するかどうかの検証を支援するために、実入力デバイスの代わりに第１の仮想デバイスプログラムを使用し、実出力デバイスの代わりに第２の仮想デバイスプログラムを使用し、実出力デバイスで制御される制御対象の代わりに仮想制御対象プログラムを使用するように指定する情報を受信するステップと、コントローラが、仮想制御対象プログラムの仮想出力信号を第１の仮想デバイスプログラムへの仮想入力信号として指定し、仮想制御対象プログラムの仮想入力信号を第２の仮想デバイスの仮想出力信号として指定する設定情報を受信するステップと、コントローラが、設定情報に基づいて、第１の仮想デバイスプログラムを実行するステップと、コントローラが、第１の仮想デバイスプログラムの実行結果に基づいて動作するユーザプログラムを実行するステップと、コントローラが、設定情報に基づいて、第２の仮想デバイスプログラムを実行するステップと、コントローラが、設定情報に基づいて、仮想制御対象プログラムを実行するステップとを備える。
【発明の効果】
【００１７】
制御対象のデバイスがすべて接続されていない場合でも、動作することできる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態のＰＬＣの構成を表わす図である。
【図２】コンフィギュレーション情報の例を表わす図である。
【図３】仮想デバイス設定情報の例を表わす図である。
【図４】Ｂ−ＵＮＩＴ＃０（アナログ入力ユニット）を模擬するＶＢ−ＵＮＩＴ＃０実行部の動作を説明するための図である。
【図５】Ｎ−ＵＮＩＴ＃０（サーボドライバ）を模擬するＶＮ−ＵＮＩＴ＃０実行部の動作を説明するための図である。
【図６】第１の実施形態のＰＬＣによるデバイスの制御手順を表わすフローチャートである。
【図７】第２の実施形態のＰＬＣによるデバイスの制御手順を表わすフローチャートである。
【図８】実デバイスを使用したときと、仮想デバイスプログラムを実行したときの実行結果の比較の例を表わす図である。
【図９】第３の実施形態のＰＬＣによるデバイスの制御手順を表わすフローチャートである。
【図１０】第４の実施形態のＰＬＣの構成を表わす図である。
【図１１】第４の実施形態のＰＬＣによるデバイスの制御手順を表わすフローチャートである。
【発明を実施するための形態】
【００１９】
以下、本発明の実施の形態について図面を用いて説明する。
［第１の実施形態］
図１は、本発明の第１の実施形態のＰＬＣ（Programmable Logic Controller）１の構成を表わす図である。
【００２０】
このＰＬＣ１は、プログラム実行部４１と、システム制御部４２と、変数／設定情報記憶部５と、デバイスインタフェース６と、通信部４３とを備える。
【００２１】
プログラム実行部４１は、ユーザプログラム実行部２と、仮想デバイスプログラム実行部４とを含む。変数／設定情報記憶部５は、デバイス入出力割付変数記憶部８と、コンフィギュレーション情報記憶部１０と、仮想デバイス設定情報記憶部１１と、仮想入力信号記憶部１２と、仮想出力信号記憶部１３とを含む。
【００２２】
コンフィギュレーション情報記憶部１０内のコンフィギュレーション情報、仮想デバイス設定情報記憶部１１内の仮想デバイス設定情報、仮想入力信号記憶部１２内の仮想入力信号は、ユーザによって、ＰＬＣサポート装置６１で作成されてＰＬＣ１へ送信されたものが用いられる。
【００２３】
デバイス入出力割付変数記憶部８と、デバイス入出力割付変数を記憶する。
ユーザプログラム実行部２は、ＣＰＵ（Central Processing Unit）が、図示しない記憶部に記憶されているユーザプログラムを実行することによって実現される。仮想デバイスプログラム実行部４は、ＣＰＵ（Central Processing Unit）が、図示しない記憶部に記憶されている仮想デバイスプログラムを実行することによって実現される。
【００２４】
システム制御部４２は、ＰＬＣ１で設定された周期で、デバイスインタフェース６を介して、バスまたはネットワークに接続された実デバイスＢ−ＵＮＩＴ＃０（アナログ入力ユニット）、Ｂ−ＵＮＩＴ＃１（アナログ出力ユニット）、実デバイスＮ−ＵＮＩＴ＃０（サーボドライバ）およびＮ−ＵＮＩＴ＃１（エンコーダ入力ユニット）とのデバイス入出力割付変数の値の通信を行なう。
【００２５】
実デバイスＢ−ＵＮＩＴ＃０（アナログ入力ユニット）は、入力デバイスであって、たとえば温度などの温度センサ３１からのアナログ信号を受けて、デジタル信号に変換して、ＰＬＣ１のデバイスインタフェース６を介してシステム制御部４２に出力する。システム制御部４２は、受信したデジタル信号をデバイス入出力割付変数の値としてデバイス入出力割付変数記憶部８に記憶する。
【００２６】
実デバイスＢ−ＵＮＩＴ＃１（アナログ出力ユニット）は、出力デバイスであって、ＰＬＣ１のユーザプログラム実行部２から、システム制御部４２およびデバイスインタフェース６を通じて送られるデバイス入出力割付変数の値であるデジタル信号をアナログ信号に変換して電力調整器５３へ送る。
【００２７】
実デバイスＮ−ＵＮＩＴ＃０（サーボドライバ）は、出力デバイスであって、ＰＬＣ１のユーザプログラム実行部２から、システム制御部４２およびデバイスインタフェース６を通じて送られるデバイス入出力割付変数の値（たとえば、速度指令値）に従って、動作する。
【００２８】
実デバイスＮ−ＵＮＩＴ＃１（エンコーダ入力ユニット）は、入力デバイスであって、エンコーダからの位置情報に対応するカウンタ値をＰＬＣ１のデバイスインタフェース６を介してシステム制御部４２に出力する。システム制御部４２は、受信したフィードバック値をデバイス入出力割付変数の値としてデバイス入出力割付変数記憶部８に記憶する。
【００２９】
ユーザプログラム実行部２は、ユーザプログラムを実行する。ユーザプログラム実行部２は、ユーザプログラム内の命令に従って各種の処理を行なう。ユーザプログラム内の命令は、デバイス入出力割付変数記憶部８内のデバイス入出力割付変数の値の参照およびデバイス入出力割付変数の値のデバイス入出力割付変数記憶部８への書込みを含む。
【００３０】
コンフィギュレーション情報記憶部１０は、ユーザプログラムによる制御対象のデバイスを表わすコンフィギュレーション情報を記憶する。  
【００３１】
図２は、コンフィギュレーション情報の例を表わす図である。
このコンフィギュレーション情報では、ユーザプログラムによる制御対象のデバイスが、実デバイスＢ−ＵＮＩＴ＃０（アナログ入力ユニット），Ｂ−ＵＮＩＴ＃１（アナログ出力ユニット），Ｎ−ＵＮＩＴ＃０（サーボドライバ），Ｎ−ＵＮＩＴ＃１（エンコーダ入力ユニット）であることが定められている。
【００３２】
従来は、システム制御部４２は、コンフィギュレーション情報で定められるデバイスが、ＰＬＣ１に接続されているか否かをデバイスインタフェース６を介してデバイスに問合せる。システム制御部４２は、問合せの結果、１つでも接続されていない実デバイスがあることが確認された場合には、図示しない点灯装置を点灯させて、エラーを通知するとともに、ユーザプログラムを実行できない状態にする。
【００３３】
これに対して、本実施の形態では、仮想デバイスプログラム実行部４が、実デバイスの代わりに動作する。この場合、システム制御部４２は、問合せの結果、１つでも接続されていない実デバイスがあることが確認された場合でも、点灯装置を点灯させず、エラーを通知せず、かつユーザプログラムが実行できる状態にする。
【００３４】
仮想デバイス設定情報記憶部１１は、実デバイスを使用するか、実デバイスの代わりに仮想デバイスプログラムを使用するかを定めた仮想デバイス設定情報を記憶する。
【００３５】
図３は、仮想デバイス設定情報の例を表わす図である。
図３の仮想デバイス設定情報では、仮想デバイスプログラムＶＢ−ＵＮＩＴ＃０がオン、つまり、仮想デバイスプログラムＶＢ−ＵＮＩＴ＃０が使用されることが定められ、仮想デバイスプログラムＶＢ−ＵＮＩＴ＃１，ＶＮ−ＵＮＩＴ＃０，ＶＮ−ＵＮＩＴ＃１がオフ、つまり、実デバイスＢ−ＵＮＩＴ＃１，Ｎ−ＵＮＩＴ＃０，Ｎ−ＵＮＩＴ＃１が使用されることが定められている。
【００３６】
仮想入力信号記憶部１２は、仮想デバイスプログラム実行部４に供給される仮想入力信号を記憶する。
【００３７】
仮想出力信号記憶部１３は、仮想デバイスプログラム実行部４から出力される仮想出力信号を記憶する。
【００３８】
仮想デバイスプログラム実行部４は、ＶＢ−ＵＮＩＴ＃０実行部１４と、ＶＢ−ＵＮＩＴ＃１実行部１５と、ＶＮ−ＵＮＩＴ＃０実行部１６と、ＶＮ−ＵＮＩＴ＃１実行部１７とを含む。
【００３９】
ＶＢ−ＵＮＩＴ＃０実行部１４は、仮想デバイス設定情報によって仮想デバイスプログラムＶＢ−ＵＮＩＴ＃０がオンに設定されている場合に、入力デバイスである実デバイスＢ−ＵＮＩＴ＃０（アナログ入力ユニット）の機能を模擬した仮想デバイスプログラムＶＢ−ＵＮＩＴ＃０を実行する。
【００４０】
ＶＢ−ＵＮＩＴ＃０実行部１４は、仮想入力信号記憶部１２から、その仮想デバイスプログラム用の仮想入力信号を読み出して、仮想デバイスプログラムＶＢ−ＵＮＩＴ＃０を実行する。ＶＢ−ＵＮＩＴ＃０実行部１４は、実行結果をそのデバイス用のデバイス入出力割付変数の値としてデバイス入出力割付変数記憶部８に記憶する。なお、実デバイスから信号（実デバイスの実行結果）がＰＬＣ１に送られても、システム制御部４２は、入力された信号の値をデバイス入出力割付変数記憶部８に書き込まないように制御する。仮想デバイスプログラムの実行結果に加えて、実デバイスの実行結果が重複して書き込まれるのを防止するためである。
【００４１】
ＶＢ−ＵＮＩＴ＃１実行部１５は、仮想デバイス設定情報によって仮想デバイスプログラムＶＢ−ＵＮＩＴ＃１がオンに設定されている場合に、出力デバイスである実デバイスＢ−ＵＮＩＴ＃１（アナログ出力ユニット）の機能を模擬した仮想デバイスプログラムＶＢ−ＵＮＩＴ＃１を実行する。ＶＢ−ＵＮＩＴ＃１実行部１５は、デバイス入出力割付変数記憶部８から、そのデバイス用のデバイス入出力割付変数の値を読み出して、仮想デバイスプログラムＶＢ−ＵＮＩＴ＃１を実行する。ＶＢ−ＵＮＩＴ＃１実行部１５は、実行結果を仮想出力信号記憶部１３に記憶する。システム制御部４２は、デバイス入出力割付変数記憶部８の値をデバイスインタフェース６を通じて実デバイスに出力しないように制御する。
【００４２】
ＶＮ−ＵＮＩＴ＃０実行部１６は、仮想デバイス設定情報によって仮想デバイスプログラムＶＮ−ＵＮＩＴ＃０がオンに設定されている場合に、出力デバイスである実デバイスＮ−ＵＮＩＴ＃０（サーボドライバ）の機能を模擬した仮想デバイスプログラムＶＮ−ＵＮＩＴ＃０を実行する。ＶＮ−ＵＮＩＴ＃０実行部１６は、デバイス入出力割付変数記憶部８から、そのデバイス用のデバイス入出力割付変数の値を読み出して、仮想デバイスプログラムＶＮ−ＵＮＩＴ＃０を実行する。ＶＮ−ＵＮＩＴ＃０実行部１６は、実行結果を仮想出力信号記憶部１３に記憶する。システム制御部４２は、デバイス入出力割付変数記憶部８の値をデバイスインタフェース６を通じて実デバイスに出力しないように制御する。
【００４３】
ＶＮ−ＵＮＩＴ＃１実行部１７は、仮想デバイス設定情報によって仮想デバイスプログラムＶＮ−ＵＮＩＴ＃１がオンに設定されている場合に、入力デバイスである実デバイスＮ−ＵＮＩＴ＃１（エンコーダ入力ユニット）の機能を模擬した仮想デバイスプログラムＶＮ−ＵＮＩＴ＃１を実行する。ＶＮ−ＵＮＩＴ＃１実行部１７は、仮想入力信号記憶部１２から、その仮想デバイスプログラム用の仮想入力信号を読み出して、仮想デバイスプログラムＶＮ−ＵＮＩＴ＃１を実行する。ＶＮ−ＵＮＩＴ＃１実行部１７は、実行結果をそのデバイス用のデバイス入出力割付変数の値としてデバイス入出力割付変数記憶部８に記憶する。なお、実デバイスから信号（実デバイスの実行結果）がＰＬＣ１に送られても、システム制御部４２は、入力された信号の値をデバイス入出力割付変数記憶部８に書き込まないように制御する。仮想デバイスプログラムの実行結果に加えて、実デバイスの実行結果が重複して書き込まれるのを防止するためである。
【００４４】
図４は、Ｂ−ＵＮＩＴ＃０（アナログ入力ユニット）を模擬するＶＢ−ＵＮＩＴ＃０実行部１４の動作を説明するための図である。
【００４５】
ＶＢ−ＵＮＩＴ＃０実行部１４は、仮想入力信号記憶部１２から仮想入力信号を読み出す。この仮想入力信号は、温度センサ３１からの信号を模擬したものであり、時刻０：００、０：０１、０：０２・・・に対応するアナログ値０．００、０．０１、０．３５・・・である。
【００４６】
ＶＢ−ＵＮＩＴ＃０実行部１４は、アナログ値をデジタル値に変換して、変換したデジタル値をデバイス入出力割付変数の値としてデバイス入出力割付変数記憶部８に記憶する。たとえば、Ｂ−ＵＮＩＴ＃０（アナログ入力ユニット）が、アナログ値を平滑化してデジタル値を出力する場合には、Ｂ−ＵＮＩＴ＃０（アナログ入力ユニット）を模擬したＶＢ−ＵＮＩＴ＃０実行部１４によって得られるデバイス入出力割付変数は、時刻０：００、０：０１、０：０２・・・に対応するデジタル値０、８、２９６・・・となる。
【００４７】
図５は、Ｎ−ＵＮＩＴ＃０（サーボドライバ）を模擬するＶＮ−ＵＮＩＴ＃０実行部１６の動作を説明するための図である。
【００４８】
ＶＮ−ＵＮＩＴ＃０実行部１６は、デバイス入出力割付変数記憶部８からデバイス入出力割付変数の値（たとえば、速度指令値）を読み出して、Ｎ−ＵＮＩＴ＃０（サーボドライバ）が出力する信号と同じ信号を仮想出力信号として出力して、仮想出力信号記憶部１３に書き込む。
【００４９】
図６は、第１の実施形態のＰＬＣ１によるデバイスの制御手順を表わすフローチャートである。
【００５０】
ステップＳ２０１において、ＰＬＣサポート装置６１は、コンフィギュレーション情報に設定されている実デバイスがＰＬＣ１に接続されていない場合に、実デバイスの代わりに仮想デバイスプログラムを使用するように指定するユーザの操作を受け付ける。ＰＬＣサポート装置６１は、ユーザの操作に従って、仮想デバイス設定情報を作成して、ＰＬＣ１に送信する。ＰＬＣ１の通信部４３は、仮想デバイス設定情報を受信して、仮想デバイス設定情報記憶部１１に記憶する。たとえば、実デバイスＢ−ＵＮＩＴ＃０がＰＬＣ１に接続されていない場合には、ユーザが、仮想デバイスプログラムＶＢ−ＵＮＩＴ＃０を使用するように指定することによって、図３に示すような仮想デバイス設定情報が作成される。
【００５１】
ステップＳ２０２において、ユーザプログラム実行部２は、ＰＬＣ１で設定された実行周期で、ユーザプログラムを実行する。仮想デバイスプログラム実行部４は、ユーザプログラムが入出力デバイス割付変数を参照している場合、ユーザプログラム実行後に対象の仮想デバイスプログラムを実行する。図３に示すような仮想デバイス設定情報が作成されている場合には、ＶＢ−ＵＮＩＴ＃０実行部１４は、実デバイスＢ−ＵＮＩＴ＃０の機能を模擬した仮想デバイスプログラムＶＢ−ＵＮＩＴ＃０を実行する。
【００５２】
ステップＳ２０３において、ＰＬＣ１の通信部４３は、ユーザプログラムおよび仮想デバイスプログラムの実行結果であるデバイス入出力割付変数記憶部８のデバイス入出力割付変数の値をＰＬＣサポート装置６１へ送信する。ＰＬＣサポート装置６１は、デバイス入出力割付変数の値を受信し、それらを表示する。ユーザは、表示されたデバイス入出力割付変数の値に基づいて、ユーザプログムの動作検証ができる。
【００５３】
以上のように、本実施の形態によれば、コンフィギュレーション情報に設定されている実デバイスがすべてＰＬＣに接続されていない場合でも、その実デバイスに代えて仮想デバイスプログラムを実行することによって、ユーザプログラムにエラーがないかどうかを確かめることができる。
【００５４】
［第２の実施形態］
本実施の形態は、コンフィギュレーション情報に定められている全てのデバイスを実デバイスに設定したときに、異常があった場合に、どの実デバイスに異常があるかどうかを調べる。そのために、コンフィギュレーション情報に定められている全てのデバイスの中から１つずつ順番に選択して、選択した実デバイスの代わりに仮想デバイスプログラムを使用するように設定する。実デバイスの代わりに実行した仮想デバイスプログラムの実行によって異常がなければ、選択した実デバイスに異常があることがわかる。
【００５５】
図７は、第２の実施形態のＰＬＣ１によるデバイスの制御手順を表わすフローチャートである。
【００５６】
ステップＳ４０１において、ＰＬＣサポート装置６１は、コンフィギュレーション情報に定められている全てのデバイスについて実デバイスを使用するように指定するユーザの操作を受け付ける。ＰＬＣサポート装置６１は、ユーザの操作に従って、仮想デバイス設定情報を作成して、ＰＬＣ１に送信する。ＰＬＣ１の通信部４３は、仮想デバイス設定情報を受信して、仮想デバイス設定情報記憶部１１に記憶する。
【００５７】
ステップＳ４０２において、ユーザプログラム実行部２は、ＰＬＣ１で設定された実行周期で、ユーザプログラムを実行する。
【００５８】
ステップＳ４０３において、ＰＬＣ１の通信部４３は、ユーザプログラムの実行結果であるデバイス入出力割付変数記憶部８のデバイス入出力割付変数の値をＰＬＣサポート装置６１へ送信する。ＰＬＣサポート装置６１は、デバイス入出力割付変数の値を受信し、それらを表示する。ユーザは、表示されたデバイス入出力割付変数の値に異常がないかどうかを調べる。ユーザが異常があると判定した場合には、処理がステップＳ４０４に進む。
【００５９】
ステップＳ４０４において、ＰＬＣサポート装置６１は、コンフィギュレーション情報に定められているデバイスの中の１つについて、実デバイスの代わりに仮想デバイスプログラムを使用するように指定するユーザの操作を受け付ける。ＰＬＣサポート装置６１は、ユーザの操作に従って、仮想デバイス設定情報を作成して、ＰＬＣ１に送信する。ＰＬＣ１の通信部４３は、仮想デバイス設定情報を受信して、仮想デバイス設定情報記憶部１１に記憶する。
【００６０】
ステップＳ４０５において、ユーザプログラム実行部２は、ＰＬＣ１で設定された実行周期で、ユーザプログラムを実行する。仮想デバイスプログラム実行部４は、ユーザプログラムが入出力デバイス割付変数を参照している場合、ユーザプログラム実行後に対象の仮想デバイスプログラムを実行する。
【００６１】
ステップＳ４０６において、ＰＬＣ１の通信部４３は、ユーザプログラムおよび仮想デバイスプログラムの実行結果であるデバイス入出力割付変数記憶部８のデバイス入出力割付変数の値をＰＬＣサポート装置６１へ送信する。ＰＬＣサポート装置６１は、デバイス入出力割付変数の値を受信し、ステップＳ４０２で受信したデバイス入出力割付変数の値と、ステップＳ４０５で受信したデバイス入出力割付変数の値とを比較表示する。
【００６２】
図８は、ステップＳ４０６での表示例を表わす図である。
実デバイスＮ−ＵＮＩＴ＃１（エンコーダ入力ユニット）が使用されたときに、デバイス入出力割付変数記憶部８に書き込まれたデバイス入出力割付変数（フィードバック値）と、仮想デバイスプログラムＶＮ−ＵＮＩＴ＃１が実行されたときに、デバイス入出力割付変数記憶部８に書き込まれたデバイス入出力割付変数（フィードバック値）とが比較表示される。
【００６３】
ステップＳ４０７において、ユーザが、仮想デバイスプログラムを実行したことによって、正常な結果が得られたと判断した場合には、処理が終了する。ユーザが、仮想デバイスプログラムを実行しても、正常な結果が得られなかったと判断した場合には、処理がステップＳ４０４に戻り、ＰＬＣサポート装置６１は、別のデバイスについて、実デバイスの代わりに仮想デバイスプログラムを使用するように指定するユーザの操作を受け付ける。ＰＬＣサポート装置６１は、ユーザの操作に従って、仮想デバイス設定情報を作成して、ＰＬＣ１に送信する。ＰＬＣ１の通信部４３は、仮想デバイス設定情報を受信して、仮想デバイス設定情報記憶部１１に記憶する。
【００６４】
図８に示すように、実デバイスＮ−ＵＮＩＴ＃１（エンコーダ入力ユニット）が使用されたときのフィードバック値が異常であり、仮想デバイスプログラムＶＮ−ＵＮＩＴ＃１が実行されたときのフィードバック値が正常の場合に、ユーザは、異常の原因が実デバイスＮ−ＵＮＩＴ＃１にあることがわかり、処理が終了する。
【００６５】
以上のように、本実施の形態によれば、ユーザプログラムの動作に異常がある場合に、１個ずつデバイスを順次選択し、選択しデバイスについて実デバイスの代わりに仮想デバイスプログラムを実行することによって、異常の原因となる実デバイスを特定することができる。
【００６６】
［第３の実施形態］
温度センサ３１からの信号が特定の状況を示す時に、温度センサ３１からの信号に応じて動作するユーザプログラムが正常に動作するかを確認したい場合がある。たとえば、温度センサ３１が高温を示す信号を出力したときに、ユーザプログラムの高温時に必要な処理が正常に実行されるかを確かめたい場合がある。このような場合には、従来は、温度センサ３１の検知対象を実際に高温にして、ユーザプログラムの動作を確認していたが、手間がかかるという問題がある。
【００６７】
本実施の形態では、温度センサ３１に接続されるアナログ入力ユニットを模擬した仮想デバイスプログラムに仮想入力信号を入力して実行することによって、温度センサ３１から高温を示す信号が送られるときと同じ状況を作り出す。
【００６８】
図９は、第３の実施形態のＰＬＣ１によるデバイスの制御手順を表わすフローチャートである。
【００６９】
ステップＳ３０１において、ＰＬＣサポート装置６１は、コンフィギュレーション情報に設定されている実デバイスのうち、実デバイスＢ−ＵＮＩＴ＃０（アナログ入力ユニット）の代わりに、仮想デバイスプログラムＶＢ−ＵＮＩＴ＃０を使用するように指定するユーザの操作を受け付ける。ＰＬＣサポート装置６１は、ユーザの操作に従って、仮想デバイス設定情報を作成して、ＰＬＣ１に送信する。ＰＬＣ１の通信部４３は、仮想デバイス設定情報を受信して、仮想デバイス設定情報記憶部１１に記憶する。
【００７０】
ステップＳ３０２において、ＰＬＣサポート装置６１は、ユーザプログラムの動作の確認が必要な温度センサ３１からの信号の指定を仮想入力信号の指定としてユーザから受け付ける。ＰＬＣサポート装置６１は、ユーザの操作に従って、仮想入力信号を作成して、ＰＬＣ１に送信する。ＰＬＣ１の通信部４３は、仮想入力信号を受信して、仮想入力信号記憶部１２に記憶する。たとえば、温度センサ３１から高温を示す信号が送られるときのユーザプログラムの動作を確認する場合には、高温を示す温度センサ３１からの信号が仮想入力信号として設定される。
【００７１】
ステップＳ３０３において、ユーザプログラム実行部２は、ＰＬＣ１で設定された周期で、温度センサ３１の信号に応じて動作するユーザプログラムを実行する。ＶＢ−ＵＮＩＴ＃０実行部１４は、ＰＬＣ１で設定された周期で、実デバイスＢ−ＵＮＩＴ＃０の機能を模擬した仮想デバイスプログラムＶＢ−ＵＮＩＴ＃０を実行する。ＶＢ−ＵＮＩＴ＃０実行部１４は、入力される信号としてステップＳ３０２で指定された仮想入力信号を用いる。
【００７２】
ステップＳ３０４において、ＰＬＣ１の通信部４３は、ユーザプログラムおよび仮想デバイスプログラムの実行結果であるデバイス入出力割付変数記憶部８のデバイス入出力割付変数の値をＰＬＣサポート装置６１へ送信する。ＰＬＣサポート装置６１は、デバイス入出力割付変数の値を受信し、それらを表示する。ユーザは、表示されたデバイス入出力割付変数に基づいて、温度センサ３１が高温など特定の状況に置かれたときにユーザプログラムが正常に動作するかを調べる。
【００７３】
以上のように、本実施の形態によれば、温度センサに接続されるアナログ入力ユニットを模擬した仮想デバイスプログラムを実行し、その仮想デバイスプログラムの入力して、ユーザプログラムの動作確認したい状況下での温度センサからの仮想信号を用いることによって、温度センサを動作確認したい状況下に実際に置くことなく、ユーザプログラムの動作を確認することができる。
【００７４】
［第４の実施形態］
本実施の形態は、仮想プログラムを用いて、閉ループ制御を模擬して、ユーザプログラムが正常するかどうかを調べる。
【００７５】
本実施の形態で模擬する閉ループ制御では、温度センサ３１からのアナログ信号をＢ−ＵＮＩＴ＃０（アナログ入力ユニット）でデジタル信号に変換してＰＬＣ９０に送信し、ＰＬＣ９０内のユーザプログラムが温度に基づいて制御対象を制御するための目標値を算出し、Ｂ−ＵＮＩＴ＃１（アナログ出力ユニット）を介して制御対象を制御する。
【００７６】
図１０は、第４の実施形態のＰＬＣ９０の構成を表わす図である。
このＰＬＣ９０が、図１のＰＬＣ１と相違する点は、プログラム実行部４１が、仮想制御対象プログラム実行部９１を備える点と、変数／設定情報記憶部５が、仮想制御対象入出力情報記憶部９２を含む点である。
【００７７】
仮想制御対象プログラム実行部９１は、制御対象の動作を模擬した仮想制御対象プログラムを実行する。すなわち、この仮想制御対象プログラムは、電力調整器５３に対して操作量（電流）を与えると、電力調整器５に接続されたヒータが動作して、温度が変化し、温度センサ３１からの信号が変化する動作を模擬したプログラムである。
【００７８】
また、変数／設定情報記憶部５は、仮想制御対象入出力情報記憶部９２を含む。
仮想制御対象入出力情報は、仮想制御対象プログラムの入力および出力を規定する情報である。
【００７９】
図１１は、第４の実施形態のＰＬＣ９０によるデバイスの制御手順を表わすフローチャートである。
【００８０】
ステップＳ５０１において、ＰＬＣサポート装置６１は、コンフィギュレーション情報に設定されている実デバイスのうち、実入力デバイスＢ−ＵＮＩＴ＃０（アナログ入力ユニット）の代わりに、仮想デバイスプログラムＶＢ−ＵＮＩＴ＃０を使用し、実出力デバイスＢ−ＵＮＩＴ＃１（アナログ出力ユニット）の代わりに、仮想デバイスプログラムＶＢ−ＵＮＩＴ＃１を使用するように指定するユーザの操作を受け付ける。また、ＰＬＣサポート装置６１は、制御対象の代わりに仮想制御対象プログラムを使用するように指定するユーザの操作を受け付ける。ＰＬＣサポート装置６１は、ユーザの操作に従って、仮想デバイス設定情報を作成して、ＰＬＣ９０に送信する。ＰＬＣ９０の通信部４３は、仮想デバイス設定情報を受信して、仮想デバイス設定情報記憶部１１に記憶する。
【００８１】
ステップＳ５０２において、ＰＬＣサポート装置６１は、仮想デバイスプログラムＶＢ−ＵＮＩＴ＃１の仮想出力信号を仮想制御対象プログラムの仮想制御対象入力信号として指定し、仮想デバイスプログラムＶＢ−ＵＮＩＴ＃０の仮想入力信号を仮想制御対象プログラムの仮想制御対象出力信号として指定する指定するユーザの操作を受け付ける。ＰＬＣサポート装置６１は、ユーザの操作に従って、仮想制御対象入出力情報を作成して、ＰＬＣ９０に送信する。ＰＬＣ９０の通信部４３は、仮想制御対象入出力情報を受信して、仮想制御対象入出力情報記憶部９２に記憶する。
【００８２】
ステップＳ５０３において、ユーザプログラム実行部２は、ＰＬＣ９０で設定された周期で、温度センサ３１の信号に応じて動作するユーザプログラムを実行する。ＶＢ−ＵＮＩＴ＃０実行部１４は、ＰＬＣ９０で設定された周期で、仮想制御対象入出力情報に基づいて、実デバイスＢ−ＵＮＩＴ＃０（アナログ入力ユニット）の機能を模擬した仮想デバイスプログラムＶＢ−ＵＮＩＴ＃０を実行する。ＶＢ−ＵＮＩＴ＃１実行部１５は、ＰＬＣ９０で設定された周期で、仮想制御対象入出力情報に基づいて、実デバイスＢ−ＵＮＩＴ＃１（アナログ出力ユニット）の機能を模擬した仮想デバイスプログラムＶＢ−ＵＮＩＴ＃１を実行する。仮想制御対象プログラム実行部９５は、ＰＬＣ９０で設定された周期で、仮想制御対象入出力情報に基づいて、制御対象の機能を模擬した仮想制御対象プログラムを実行する。ＶＢ−ＵＮＩＴ＃１実行部１５は、実行結果を仮想出力信号記憶部１３に記憶する。仮想制御対象プログラム実行部９５は、仮想出力信号記憶部１３に記憶されたＶＢ−ＵＮＩＴ＃１実行部１５の実行結果を入力信号として用いる。仮想制御対象プログラム実行部９５は、実行結果を仮想入力信号記憶部１２に書き込む。ＶＢ−ＵＮＩＴ＃０実行部１４は、仮想制御対象プログラム実行部９５によって仮想入力信号記憶部１２に記憶された仮想入力信号を入力信号として用いる。これによって、仮想の閉ループ制御が実現できる。
【００８３】
ステップＳ５０４において、ＰＬＣ９０の通信部４３は、ユーザプログラムおよび仮想デバイスプログラムの実行結果であるデバイス入出力割付変数記憶部８のデバイス入出力割付変数の値をＰＬＣサポート装置６１へ送信する。ＰＬＣサポート装置６１は、デバイス入出力割付変数の値を受信し、それらを表示する。ユーザは、表示されたデバイス入出力割付変数に基づいて、ユーザプログラムが正常に動作するかを調べる。
【００８４】
以上のように、本実施の形態によれば、仮想デバイスプログラムおよび仮想制御対象プログラムによって、仮想の閉ループ制御を実現し、ユーザプログラムの閉ループ制御動作を確認することができる。
【００８５】
（変形例）
本発明は、上記の実施形態に限定されるものではない。たとえば以下のような変形例も含まれる。
（１）本発明の第１の実施形態では、ＰＬＣ１に実デバイスが接続されていない場合に、その実デバイスの代わりに、その実デバイスを模擬した仮想デバイスプログラムを使用することをユーザが指定したが、これに限定するものではない。
【００８６】
たとえば、システム制御部４２が、コンフィギュレーション情報に定められている実デバイスがＰＬＣに接続されているかどうかを実デバイスに問い合わせた結果、ＰＬＣ１に接続されていないこと実デバイスがあることが判明した場合に、その実デバイスの代わりに、その実デバイスを模擬した仮想デバイスプログラムを実行することとしてもよい。
（２）本発明の実施形態では、仮想デバイスプログラムは、ＰＬＣ１で設定された周期で自動的に実行されることとしたが、これに限定するものではない。すなわち、ユーザプログラム実行部が、ユーザプログラムに、ある実デバイスに関連する変数を参照したときに、その実デバイスを模擬した仮想デバイスプログラムを動作させることとしてもよい。あるいは、ユーザプログラム実行部が、ユーザプログラムにある実デバイスに関連する変数を参照し、または更新することを表わす定義記述が含まれている場合に、ユーザプログラムの実行と平行して、その実デバイスを模擬した仮想デバイスプログラムを動作させることとしてもよい。あるいは、ユーザプログラムが入出力デバイス割付変数を参照している場合、ユーザプログラム実行後に、その実デバイスを模擬した仮想デバイスプログラムおよび仮想制御対象プログラムを動作させることとしてもよい。
【００８７】
今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００８８】
１，９０  ＰＬＣ、２  ユーザプログラム実行部、３  モーション制御プログラム実行部、４  仮想デバイスプログラム実行部、５  変数／設定情報記憶部、６  デバイスインタフェース、８  デバイス入出力割付変数記憶部、１０  コンフィギュレーション情報記憶部、１１  仮想デバイス設定情報記憶部、１２  仮想入力信号記憶部、１３  仮想出力信号記憶部、１４  ＶＢ−ＵＮＩＴ＃０実行部（仮想プログラム）、１５  ＶＢ−ＵＮＩＴ＃１実行部（仮想プログラム）、１６  ＶＮ−ＵＮＩＴ＃０実行部（仮想プログラム）、１７  ＶＮ−ＵＮＩＴ＃１実行部（仮想プログラム）、３１  温度センサ、４１  プログラム実行部、４２  システム制御部、４３  通信部、５３  電力調整器、６１  ＰＬＣサポート装置、９１  仮想制御対象プログラム実行部、９２  仮想制御対象入出力情報記憶部。
【図１】
2015176340.tif 000003
【図２】
2015176340.tif 000004
【図３】
2015176340.tif 000005
【図４】
2015176340.tif 000006
【図５】
2015176340.tif 000007
【図６】
2015176340.tif 000008
【図７】
2015176340.tif 000009
【図８】
2015176340.tif 000010
【図９】
2015176340.tif 000011
【図１０】
2015176340.tif 000012
【図１１】
2015176340.tif 000013