(57)【要約】  本発明の目的は、センサ情報のシミュレーションを、搬送システムの種類に大きく依存せずに容易に、かつ、搬送システムのコントローラを利用して行うことができる、コントローラおよび搬送システムを提供することである。  ワークシミュレーション部（５５０）は、少なくとも１つのアクチュエータ（６１０）のうち拘束条件においてワークを拘束するとされているものに関する駆動情報により、ワークの移動量を推定し、移動量をワークの前回位置に加算することによりワークの現在位置を推定する。センサシミュレーション部（５６１）は、ワークの現在位置を用いることでセンサシミュレーション情報を生成する。入出力切換部（５７０）は、駆動情報をワークシミュレーション部（５５０）へ送り、かつ、センサ情報の代替情報として、センサシミュレーション情報を制御プログラム実行部（５３０）へ送る。
2017138164.tif 000002
【特許請求の範囲】
【請求項１】
ワークを検出する少なくとも１つのセンサからのセンサ信号を参照しながら、ワークを搬送する少なくとも１つのアクチュエータへ駆動信号を出力する搬送システムのためのコントローラにおいて、  前記アクチュエータを制御するための駆動情報を受け付けて前記駆動情報に基づいて前記アクチュエータへ前記駆動信号を送るアクチュエータ出力部と、前記センサから前記センサ信号を受け付けて前記センサ信号に基づいてセンサ情報を生成するセンサ入力部と、を有する外部インターフェース（５１０）と、  前記センサ情報を参照しながら前記駆動情報を生成するための制御プログラムと、前記ワークと前記アクチュエータとの間で想定される拘束条件を変更するために前記制御プログラムに関連付けられる命令情報である拘束条件設定情報と、をユーザから受け付ける設定入力部（５２０）と、  前記制御プログラムを処理するものであって、かつ、前記拘束条件設定情報に基づいて拘束条件変更命令を発行する拘束条件変更命令処理部を有するものである、制御プログラム実行部（５３０）と、  前記拘束条件変更命令処理部によって発行された前記拘束条件変更命令に基づいて前記拘束条件を管理する拘束条件変更部（５４０）と、  前記少なくとも１つのアクチュエータのうち、前記拘束条件変更部によって管理されている前記拘束条件において前記ワークに拘束されるとされているものに関して前記制御プログラム実行部によって生成された前記駆動情報により、前記ワークの移動量を推定し、前記移動量を前記ワークの前回位置に加算することにより前記ワークの現在位置を推定するワークシミュレーション部（５５０、５５０Ｂ、５５０Ｃ）と、  前記ワークシミュレーション部によって推定された前記ワークの前記現在位置の情報を用いることで、前記センサ情報を模擬したセンサシミュレーション情報を生成するセンサシミュレーション部（５６１）と、  動作モードとして少なくともセンサシミュレーションモードを有する入出力切換部（５７０、５７０Ｅ）と、を備え、  前記入出力切換部は前記センサシミュレーションモードにおいて、前記制御プログラム実行部によって生成された前記駆動情報を少なくとも前記ワークシミュレーション部へ送り、かつ、前記センサ情報の代替情報として、前記センサシミュレーション部によって生成された前記センサシミュレーション情報を前記制御プログラム実行部へ送る、コントローラ（５００Ａ〜５００Ｇ）。
【請求項２】
前記入出力切換部は前記センサシミュレーションモードにおいて、前記制御プログラム実行部によって生成された前記駆動情報を前記アクチュエータ出力部へ送る、請求項１に記載のコントローラ。
【請求項３】
前記入出力切換部（５７０Ｅ）は、前記アクチュエータ出力部への前記駆動情報の出力を一時的に無効化することができる出力抑制部（５７１）を有する、請求項２に記載のコントローラ（５００Ｅ）。
【請求項４】
前記入出力切換部はさらにセンサ稼働モードを有し、前記入出力切換部は前記センサ稼働モードにおいて、前記センサ入力部によって生成された前記センサ情報を前記制御プログラム実行部へ送る、請求項１から３のいずれか１項に記載のコントローラ。
【請求項５】
信号比較部（５９０）をさらに備え、  前記入出力切換部はさらに併用モードを有し、前記入出力切換部は前記併用モードにおいて、前記センサ入力部によって生成された前記センサ情報を前記制御プログラム実行部および前記比較部の各々へ送り、かつ、前記センサシミュレーション部によって生成された前記センサシミュレーション情報を前記信号比較部に送り、  前記信号比較部は、前記センサ情報と前記センサシミュレーション情報とを比較する、請求項１から４のいずれか１項に記載のコントローラ（５００Ｇ）。
【請求項６】
前記アクチュエータは、前記ワークへ作用する作用部（６１２ｈ）を有し、  前記設定入力部は、前記アクチュエータの機械構成情報を受け付け、  前記ワークシミュレーション部（５５０Ｂ）は、前記アクチュエータの前記機械構成情報と、制御プログラム実行部によって生成された駆動情報とから、前記アクチュエータの前記作用部が動作する軌跡を算出するアクチュエータ軌跡生成部（５５１）を有する、請求項1から５のいずれか１項に記載のコントローラ（５００Ｂ）。
【請求項７】
前記ワークシミュレーション部（５５０Ｃ）は、前記駆動情報によって表された前記アクチュエータの変位量のうち、前記ワークの前記移動量への寄与が無効となる部分を設定する作用無効区間判定部（５５２）を有する、請求項１から６のいずれか１項に記載のコントローラ（５００Ｃ）。
【請求項８】
前記外部インターフェースは、前記センサおよび前記アクチュエータに加えて他機器に接続可能であり、  前記他機器のシミュレーションを行う他機器シミュレーション部（５６２）をさらに備える、請求項１から７のいずれか１項に記載のコントローラ（５００Ｄ）。
【請求項９】
前記制御プログラム実行部、前記拘束条件変更部、前記ワークシミュレーション部、前記センサシミュレーション部、および前記入出力切換部の少なくともいずれかの内部データを変更する命令を発行する外部シナリオ実行部（５８０）をさらに備える、請求項１から８のいずれか１項に記載のコントローラ（５００Ｆ）。
【請求項１０】
ワークを搬送するアクチュエータ（６１０）と、  前記ワークを検出するセンサ（６２０）と、  前記センサからのセンサ信号を参照しながら、前記アクチュエータへ駆動信号を出力するためのコントローラ（５００Ａ〜５００Ｇ）と、を備え、前記コントローラは、    前記アクチュエータを制御するための駆動情報を受け付けて前記駆動情報に基づいて前記アクチュエータへ前記駆動信号を送るアクチュエータ出力部と、前記センサから前記センサ信号を受け付けて前記センサ信号に基づいてセンサ情報を生成するセンサ入力部と、を有する外部インターフェース（５１０）と、    前記センサ情報を参照しながら前記駆動情報を生成するための制御プログラムと、前記ワークと前記アクチュエータとの間で想定される拘束条件を変更するために前記制御プログラムに関連付けられる命令情報である拘束条件設定情報と、をユーザから受け付ける設定入力部（５２０）と、    前記制御プログラムを処理するものであって、かつ、前記拘束条件設定情報に基づいて拘束条件変更命令を発行する拘束条件変更命令処理部を有するものである、制御プログラム実行部（５３０）と、    前記拘束条件変更命令処理部によって発行された前記拘束条件変更命令に基づいて前記拘束条件を管理する拘束条件変更部（５４０）と、    前記少なくとも１つのアクチュエータのうち、前記拘束条件変更部によって管理されている前記拘束条件において前記ワークに拘束されるとされているものに関して前記制御プログラム実行部によって生成された前記駆動情報により、前記ワークの移動量を推定し、前記移動量を前記ワークの前回位置に加算することにより前記ワークの現在位置を推定するワークシミュレーション部（５５０、５５０Ｂ、５５０Ｃ）と、    前記ワークシミュレーション部によって推定された前記ワークの前記現在位置の情報を用いることで、前記センサ情報を模擬したセンサシミュレーション情報を生成するセンサシミュレーション部（５６１）と、    動作モードとして少なくともセンサシミュレーションモードを有する入出力切換部（５７０、５７０Ｅ）と、を含み、  前記入出力切換部は前記センサシミュレーションモードにおいて、前記制御プログラム実行部によって生成された前記駆動情報を少なくとも前記ワークシミュレーション部へ送り、かつ、前記センサ情報の代替情報として、前記センサシミュレーション部によって生成された前記センサシミュレーション情報を前記制御プログラム実行部へ送る、搬送システム（７００Ａ〜７００Ｇ）。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、コントローラおよび搬送システムに関し、特に、センサからのセンサ信号を参照しながらアクチュエータへ駆動信号を出力するためのコントローラと、それを用いた搬送システムとに関するものである。
【背景技術】
【０００２】  搬送システム、すなわち物を搬送するためのシステム、は、たとえば工場における生産装置など、様々な用途に用いられている。以下、搬送システムにおいて搬送される物を「ワーク」と称する。搬送システムは、通常、ワークを移動させるためのアクチュエータと、ワークを検出するためのセンサと、これらを制御するためのコントローラとを有している。コントローラの動作試験として、従来から、シミュレーション技術が利用されている。【０００３】  特開２０１４−１４８３８９号公報（特許文献１）によれば、搬送機が搬送物を搬送するシミュレーション演算を実行する情報処理装置が開示されている。３次元シミュレーション空間上でワークとリフターとテーブルとが配置される。情報処理装置は、リフターがテーブル上のワークを搬送するシミュレーション演算を実行する。ここで、情報処理装置は、テーブルに配置されたワークをリフターが上方向に移動させる場合、リフターのワークと一体となる度合いを示す優先度をテーブルのワークと一体となる度合いを示す優先度よりも高く設定する。また、情報処理装置は、ワークを搬送中のリフターがテーブルよりも下方向に移動する場合、リフターの優先度をテーブルの優先度よりも低く設定する。【０００４】  特開２０１４−０６３３２７号公報（特許文献２）によれば、シミュレーション装置が開示されている。シミュレーション装置は、対象物を扱う機械の動きを制御するコントローラにおいて実行される制御プログラムのシミュレーションを実行するプロセッサを含む。プロセッサは、制御プログラムに従って、仮想空間において機械に対応する仮想機械を動かすための動作指令に基づいて仮想機械の動きを制御する動作制御手段と、仮想機械によって扱われ対象物に対応する仮想対象物のモデルデータと、仮想機械のモデルデータとに基づいて、仮想機械が作用可能な作用空間と仮想対象物とが重なる領域の体積が予め定められた基準値以上であるか否かを判断する判断手段と、体積が基準値以上である場合に、仮想対象物を動作指令に基づく仮想機械の動きに追従させる追従手段とを含む。【０００５】  特開２００２−３５８１１４号公報（特許文献３）によれば、シーケンサのプログラムによる設備動作のシミュレーションを行なうシミュレーション装置が開示されている。シミュレーション装置は、上記シーケンサからの出力に基づいて上記設備の状態の変化をシミュレートし該設備の変化状態を所定時間毎に算出する状態算出手段と、上記状態算出手段により算出される上記設備の変化状態に応じて上記シーケンサに出力すべき当該状態に関連する擬似信号を生成する擬似信号生成手段とを有している。すなわち、このシミュレーション装置は、２段階でシミュレーションを行なっている。まず、シミュレーション装置は、シーケンサからの出力、つまり動作指令によって設備の状態がどのように変化するかをシミュレートしている。そしてシミュレーション装置は、その設備が擬似信号を生成すべき状態になったか、端的に言えば、設備が動いた結果として、該設備の状態変化を検出する検出器に出力変化があるか否かをシミュレートしている。設備の状態とは、たとえば、アクチュエータおよびワークの状態である。検出器���、たとえば、ワークが所定位置に存在するか否かを検出するものである。【０００６】  特開２００２−３５１５１１号公報（特許文献４）によれば、コントローラにおける入力生成装置が開示されている。コントローラは、ソフトウェア的に機能が定義されて制御アプリケーションを実行するＰＬＣ手段と、実プロセスからの信号をＰＬＣ手段にインターフェースする入力インターフェース手段と、ＰＬＣ手段より実プロセスへの信号をインターフェースする出力インターフェース手段とを有する。コントローラに適用される入力生成装置は、ソフトウェア的に機能が定義された疑似入力生成手段と、実入力／疑似入力切り換え手段と、を有している。疑似入力生成手段は、出力インターフェース手段よりの信号に基づいて模擬的な入力信号を生成する。実入力／疑似入力切り換え手段は、模擬入力信号使用時には、出力インターフェース手段よりの信号を疑似入力生成手段に供給すると共に、疑似入力生成手段の出力信号を上記入力インターフェース手段に供給する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１４−１４８３８９号公報
【特許文献２】特開２０１４−０６３３２７号公報
【特許文献３】特開２００２−３５８１１４号公報
【特許文献４】特開２００２−３５１５１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】  上記特許文献１に記載の技術は、リフターがテーブル上のワークを搬送するという特定の構成にしか適用することができない。つまり、この技術は汎用性に乏しいものである。また、ワークに作用する全てのものに対して優先度の設定が必要であり、その設定は、シミュレーション対象に依存して個別に設計が必要である。このような設計作業は容易なものではない。【０００９】  上記特許文献１の技術と比して上記特許文献２の技術は、より汎用的な技術であるため、より様々な搬送システムに適用できると考えられる。しかしながらこの方法は、作用空間または仮想対象物を複数の単位領域に分割しての計算処理を要することから、計算負荷が大きい。さらに、これら特許文献１および２の技術は、純粋なシミュレーション技術であり、現実の搬送システムの試験に利用することが想定されたものではない。【００１０】  上記特許文献１および２の技術と異なり上記特許文献３に記載の技術は、現実の搬送システムに用いられるシーケンサ（コントローラ）からの出力に基づいて、シーケンサのプログラムの検証を行うことができる。しかしながらこの方法では、搬送システムのコントローラに接続されたシミュレーション装置によってシミュレーションが行われる。このため、コントローラに加えてシミュレーション装置を必要とする。さらに、両者間での通信も必要とする。コントローラとコンピュータとの間の通信は、通信遅れ時間を発生させる。このため、実際のシステムの運転状態と、それをシミュレーションした状態とで、事象が発生するタイミングが異なってしまう。搬送システムのプログラムにおいては、その性能を上げるために、通信および計算処理のリアルタイム性に依存した制御が記述されることも多く、通信遅れによってタイミングがずれてしまっては、正確な試験を実施しにくい。【００１１】  上記特許文献１から３の技術と異なり上記特許文献４の技術は、実際のシステムのコントローラ内でシミュレーションが行われる。しかしながらこの特許文献４において説明されている具体的な応用例はプラント訓練システムのみであり、搬送システムに適用するための具体的方法は開示されていない。仮に、この技術に対して、上記特許文献２の技術のように搬送システムを対象とした汎用性の高いシミュレーション技術を組み合わせようとすると、システムのコントローラは、このシミュレーションを処理するために、大きな計算リソースを必要とする。しかしながら、搬送システムに用いられるコントローラは、典型的には、シミュレーション用途に適したコンピュータとは異なり、大きな計算リソースを有していない。よって、仮に上記のような組み合わせが可能であったとしても、搬送システムの正確な試験を実施することは困難である。【００１２】  本発明は以上のような課題を解決するためになされたものであり、その目的は、センサ情報のシミュレーションを、搬送システムの種類に大きく依存せずに容易に、かつ、搬送システムのコントローラを利用して行うことができる、コントローラおよび搬送システムを提供することである。
【課題を解決するための手段】
【００１３】  本発明のコントローラは、ワークを検出する少なくとも１つのセンサからのセンサ信号を参照しながら、ワークを搬送する少なくとも１つのアクチュエータへ駆動信号を出力する搬送システムのためのものである。コントローラは、外部インターフェースと、設定入力部と、制御プログラム実行部と、拘束条件変更部と、ワークシミュレーション部と、センサシミュレーション部と、入出力切換部とを有する。外部インターフェースは、アクチュエータ出力部と、センサ入力部とを有する。アクチュエータ出力部は、アクチュエータを制御するための駆動情報を受け付けて、駆動情報に基づいてアクチュエータへ駆動信号を送る。センサ入力部は、センサからセンサ信号を受け付けて、センサ信号に基づいてセンサ情報を生成する。設定入力部は、制御プログラムと、拘束条件設定情報とをユーザから受け付ける。制御プログラムは、センサ情報を参照しながら駆動情報を生成するためのものである。拘束条件設定情報は、ワークとアクチュエータとの間で想定される拘束条件を変更するために制御プログラムに関連付けられる命令情報である。制御プログラム実行部は、制御プログラムを処理するものであって、かつ、拘束条件変更命令処理部を有するものである。拘束条件変更命令処理部は、拘束条件設定情報に基づいて拘束条件変更命令を発行する。拘束条件変更部は、拘束条件変更命令処理部によって発行された拘束条件変更命令に基づいて拘束条件を管理する。ワークシミュレーション部は、少なくとも１つのアクチュエータのうち、拘束条件変更部によって管理されている拘束条件においてワークに拘束されるとされているものに関して制御プログラム実行部によって生成された駆動情報により、ワークの移動量を推定し、移動量をワークの前回位置に加算することによりワークの現在位置を推定する。センサシミュレーション部は、ワークシミュレーション部によって推定されたワークの現在位置の情報を用いることで、センサ情報を模擬したセンサシミュレーション情報を生成する。入出力切換部は、動作モードとして少なくともセンサシミュレーションモードを有する。入出力切換部はセンサシミュレーションモードにおいて、制御プログラム実行部によって生成された駆動情報を少なくともワークシミュレーション部へ送り、かつ、センサ情報の代替情報として、センサシミュレーション部によって生成されたセンサシミュレーション情報を制御プログラム実行部へ送る。【００１４】  本発明の搬送システムは、アクチュエータと、センサと、コントローラとを有する。アクチュエータはワークを搬送する。センサはワークを検出する。コントローラは、センサからのセンサ信号を参照しながら、アクチュエータへ駆動信号を出力するためのものである。コントローラは、外部インターフェースと、設定入力部と、制御プログラム実行部と、拘束条件変更部と、ワークシミュレーション部と、センサシミュレーション部と、入出力切換部とを有する。外部インターフェースは、アクチュエータ出力部と、センサ入力部とを有する。アクチュエータ出力部は、アクチュエータを制御するための駆動情報を受け付けて、駆動情報に基づいてアクチュエータへ駆動信号を送る。センサ入力部は、センサ��らセンサ信号を受け付けて、センサ信号に基づいてセンサ情報を生成する。設定入力部は、制御プログラムと、拘束条件設定情報とをユーザから受け付ける。制御プログラムは、センサ情報を参照しながら駆動情報を生成するためのものである。拘束条件設定情報は、ワークとアクチュエータとの間で想定される拘束条件を変更するために制御プログラムに関連付けられる命令情報である。制御プログラム実行部は、制御プログラムを処理するものであって、かつ、拘束条件変更命令処理部を有するものである。拘束条件変更命令処理部は、拘束条件設定情報に基づいて拘束条件変更命令を発行する。拘束条件変更部は、拘束条件変更命令処理部によって発行された拘束条件変更命令に基づいて拘束条件を管理する。ワークシミュレーション部は、少なくとも１つのアクチュエータのうち、拘束条件変更部によって管理されている拘束条件においてワークに拘束されるとされているものに関して制御プログラム実行部によって生成された駆動情報により、ワークの移動量を推定し、移動量をワークの前回位置に加算することによりワークの現在位置を推定する。センサシミュレーション部は、ワークシミュレーション部によって推定されたワークの現在位置の情報を用いることで、センサ情報を模擬したセンサシミュレーション情報を生成する。入出力切換部は、動作モードとして少なくともセンサシミュレーションモードを有する。入出力切換部はセンサシミュレーションモードにおいて、制御プログラム実行部によって生成された駆動情報を少なくともワークシミュレーション部へ送り、かつ、センサ情報の代替情報として、センサシミュレーション部によって生成されたセンサシミュレーション情報を制御プログラム実行部へ送る。
【発明の効果】
【００１５】  本発明によれば、センサ情報を模擬したセンサシミュレーション情報が、ワークの推定された現在位置の情報を用いて生成される。ワークの現在位置は、ワークの推定された移動量をワークの前回位置に加算することにより推定される。ワークの移動量は、少なくとも１つのアクチュエータのうち、拘束条件においてワークに拘束されるとされているものに関して制御プログラム実行部によって生成された前記駆動情報により推測される。拘束条件は拘束条件設定情報に基づいて管理される。拘束条件設定情報は、搬送システムの制御プログラムを参照することにより、搬送システムの種類に大きく依存することなくユーザが容易に作成し得る。これにより、センサ情報のシミュレーションを、搬送システムの種類に大きく依存せずに容易に行うことができる。得られたセンサシミュレーション情報は、センサ情報が欠如した状態での搬送システムの試験における代替情報として、または、搬送システムの実働における参考情報として利用することができる。【００１６】  さらに、ワークの推定移動量は、少なくとも１つのアクチュエータのうち、拘束条件変更部によって管理されている拘束条件においてワークに拘束されるとされているものに関して制御プログラム実行部によって生成された駆動情報に基づいて、容易に得ることができる。この推定移動量をワークの前回位置に加算することでワークの現在位置が推測される。以上のように、ワークの推定移動量は駆動情報から容易に得られ、それを用いた単純な演算により、ワークの現在位置が推測される。これにより、ワークの現在位置を、少ない計算量で推測することができる。よって、シミュレーション用途に適したコンピュータに比して計算リソースが少ないことが通常である搬送システムのコントローラであっても、リアルタイムでのシミュレーションを行うことができる。【００１７】  以上のように本発明によれば、センサ情報のシミュレーションを、搬送システムの種類に大きく依存せずに容易に、かつ、搬送システムのコントローラを利用して行うことができる。【００１８】  この発明の目的、特徴、局面、および利点は、以下の詳細な説明と添付図面とによって、より明白となる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施の形態１における搬送システムの構成を概略的に示すブロック図である。
【図２】図１の設定入力部が受け付ける、ワークの設定情報の例の説明図である。
【図３】図１の設定入力部が受け付ける、アクチュエータの設定情報の例の説明図である。
【図４】図１のアクチュエータおよびセンサの例を示す斜視図である。
【図５】図１のワークシミュレーション部の動作を概略的に示すフローチャートである。
【図６】図１のセンサの設定情報の例の説明図である。
【図７】図１のセンサシミュレーション部の動作を概略的に示すフローチャートである。
【図８】実施の形態１の変形例において設定入力部が受け付ける、アクチュエータとしてのコンベアの設定情報の例の説明図である。
【図９】実施の形態１の変形例において設定入力部が受け付ける、アクチュエータとしてのストッパの設定情報の例の説明図である。
【図１０】実施の形態１の変形例における、姿勢が変更されたワークのサイズを算出する方法の説明図である。
【図１１】本発明の実施の形態２における搬送システムが有するアクチュエータの例を示す斜視図である。
【図１２】本発明の実施の形態２における搬送システムの構成を概略的に示すブロック図である。
【図１３】本発明の実施の形態３における搬送システムが有するアクチュエータと、それが作用するワークとの配置の例を示す斜視図である。
【図１４】本発明の実施の形態３における搬送システムの構成を概略的に示すブロック図である。
【図１５】本発明の実施の形態４における搬送システムの構成を概略的に示すブロック図である。
【図１６】図１５の設定入力部が受け付ける、他機器の設定情報の例の説明図である。
【図１７】本発明の実施の形態５における搬送システムの構成を概略的に示すブロック図である。
【図１８】本発明の実施の形態６における搬送システムの構成を概略的に示すブロック図である。
【図１９】本発明の実施の形態７における搬送システムの構成を概略的に示すブロック図である。
【図２０】コントローラのハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【００２０】  以下、図面に基づいて本発明の実施の形態について説明する。なお、以下の図面において同一または相当する部分には同一の参照番号を付しその説明は繰返さない。
【００２１】  ＜予備的説明＞  後述する実施の形態１〜７におけるコントローラは、たとえば、工場の生産装置の制御に用いられるＦＡ(Factory Automation)用途のものである。この用途の場合、コントローラは、生産装置を流れるワークの動きを模擬する。そしてコントローラは、模擬されたワークの動きに基づいて、ワークの位置を検出するセンサからの入力信号を模擬する。このような動作を行うための設定を、生産装置の作業者（ユーザ）が容易に行うことができる。具体的には、生産装置の構成に合わせたワークの動きのシミュレーション方法を、作業者が、手探りで設計するのではなく、一定の手順に従った汎用的手法により設定することができる。
【００２２】  本実施の形態についての具体的な説明の前に、それに関連する内容として、ＦＡ用途のコントローラと、それを用いた生産装置の立上げ・調整作業とについて、以下に説明する。
【００２３】  主に工場の生産装置に利用されるＦＡ用途のコントローラは、それに接続された複数の外部機器を制御する。これらの外部機器のうち、コントローラと電力線で接続され、ＯＮ／ＯＦＦのデジタル信号でコントローラと通信する機器は、総称してＩ／Ｏ(Input/Output)と呼ばれる。Ｉ／Ｏは、たとえば、センサもしくはスイッチなどの、コントローラへの入力機器、または、表示灯もしくはモータなどの、コントローラからの出力信号に従って何らかの動作をする出力機器である。外部機器の中には、サーボモータを制御するサーボアンプ、または、他のコントローラも含まれる。これら外部機器との通信は、ＯＮ／ＯＦＦ以外の情報も扱うため、通信専用のケーブルおよび専用回路を通して行うことが多く、狭義のＩ／Ｏとは区別されることも多い。外部機器との接続の態様は、典型的なハードウェア構成を有するコントローラ単体で実現されるもの、コントローラに専用機器を接続することで実現されるもの、などがある。以降の説明では、これらを総称してコントローラと呼ぶ。
【００２４】  工場の生産装置は、在荷センサと呼ばれるセンサでワークの位置を検出して、そのセンサからの入力信号をトリガとして装置を動作させるものが多い。また、在荷センサからの入力信号は、トリガ信号として以外にも、部品としてのワークの有無を動作実行前に再確認するための確認信号として使われることも多い。在荷センサは、たとえば、投光器と受光器とが一体化された、反射式の光学式センサである。このセンサによれば、ワークがセンサの前に移動すると、投光器からの光がワークから反射することで受光器に入射される。これによりワークの存在が検知される。生産装置は、人間と異なり、通常、目視確認ができないため、ワークを移動させる度にワークを在荷センサで検出する構成を取ることが多い。
【００２５】  生産装置の立上げ・調整作業時には、多くの場合、いわゆる空運転が行われる。空運転とは、ワークを流さない運転のことである。ワークを流しての運転では、生産装置の機械とワークとの接触が発生するため、搬送システムの運転プログラムなどに不備があった場合には、機械またはワークの破損が発生し得る。よって、空運転での正常な動作が確認された後に、ワークを流しての本格的な試験が行われることが通常である。ワークが高価である場合、または、調整用のワークの準備数が少ない場合など、空運転が必須の場合もある。
【００２６】  空運転は、ワークを流す本来の運転とは異なるため、その実施のためには何らかの工夫を要することが多い。上述したように、生産装置は在荷センサをトリガ信号または確認信号として利用していることが多い。この場合に何らの工夫なしに空運転が行われると、ワークを欠くためにこれらの信号が異常値を取ってしまうことで、試験としての空運転を進めることが困難となる。このため、空運転を目的としたプログラムの変更が行われることがある。具体的には、在荷センサによる確認箇所がコメントアウトされたり、在荷センサからの入力信号を扱う内容が他の信号を扱う内容に書き換えられたりする。このようなプログラムの変更の際には、不注意によるミス、および、意図しない論理変更は、避けられなければならない。そのためには、搬送システムにおける機械の動作と制御プログラムの内容とを十分に理解した上で、装置毎、または、確認したい作業毎に、プログラムの修正・作成の作業を行う必要がある。従来、このような作業には、多くの時間を要していた。
【００２７】  さらに、定常的な運転における挙動だけでなく、コンベア上もしくは部品供給部でワークが詰まってしまうようなエラー、または、センサの検出が安定しないエラーなど、プログラムによる要因ではなく物理的な要因で発生する様々なエラーが発生した場合の挙動を、実働の前に簡単に確認しておくことができれば有益である。なぜならば、実働中にこれらエラーが生じその対処として制御プログラムを修正する必要が生じると、生産装置をしばらくの間停止させなければならず、その結果、大きな損害が生じ得るためである。しかしながら、これらの物理的なエラーの検証は、多くの場合、生産装置の運転時に偶発的に発生するものであるため、立上げ・調整時に全てを確認することは、現状では困難であった。
【００２８】  そこで本発明者は、空運転の実施、および、様々なエラーの検証を可能とすることを主に意図して、ワークの移動と、それに伴う在荷センサのセンサ信号の変化などを、シミュレーションする方法を検討した。在荷センサのセンサ信号を模擬することができれば、それを用いることで、実働に近い状態で空運転を実施することができる。また、検証されるエラーが物理的な要因によるものであるためにその発生が偶発的なものであっても、シミュレーション上であれば、エラーが偶発的に発生するのを待つことなく、すぐに確認することができる。
【００２９】  シミュレーションを実働に近い状態で行うためには、シミュレーションは、搬送システムに追加的に接続されたコンピュータによってではなく、搬送システム自体のコントローラ上で行なわれる必要がある。なぜならば前者においては、コントローラとコンピュータとの連携のための通信に要する時間に遅れが生じ得るため、センサ信号の発生などのタイミングが、実働におけるものと相違し得るためである。特に生産装置においては、搬送システムの性能を上げるために、通信および計算処理のリアルタイム性に依存した制御がプログラム中に記述されることが多く、よって、通信遅れによってタイミングがずれてしまっては、正確な確認作業を実施することが困難である。
【００３０】  以下に述べる各実施の形態は、上述した問題または要望を鑑みて検討されたものである。
【００３１】  ＜実施の形態１＞  （構成）  図１は、本実施の形態における搬送システムの構成を概略的に示すブロック図である。本実施の形態における搬送システム７００Ａは、アクチュエータ６１０と、センサ６２０と、コントローラ５００Ａとを有する。アクチュエータ６１０はワークを搬送する。センサ６２０は、ワークを検出するものを含む。コントローラ５００Ａは、センサ６２０からのセンサ信号を参照しながら、アクチュエータ６１０へ駆動信号を出力するためのものである。駆動信号は、コントローラ５００Ａ内において生成される駆動情報に従って、コントローラ５００Ａから出力される。本実施の形態においては、説明を簡単にするために、主に、この駆動情報が、アクチュエータのサーボモータの絶対位置の指令信号を表すものである場合について説明する。駆動情報に従ってコントローラ５００Ａから出力される駆動信号も、アクチュエータのサーボモータの絶対位置の指令信号を表すものであってよい。駆動信号は、アクチュエータのサーボモータへ電力を供給するサーボアンプに入力される動作指定値を表す指令信号であってもよい。
【００３２】  コントローラ５００Ａは、外部インターフェース５１０と、設定入力部５２０と、制御プログラム実行部５３０と、拘束条件変更部５４０と、ワークシミュレーション部５５０と、センサシミュレーション部５６１と、入出力切換部５７０とを有する。上記各構成について、以下に詳しく説明する。
【００３３】  外部インターフェース５１０は、外部機器６００との通信を行うものである。外部インターフェース５１０は、アクチュエータ６１０出力部と、センサ入力部５１２とを有する。アクチュエータ出力部５１１は、アクチュエータ６１０を制御するための動作指令値である駆動情報を受け付けて、駆動情報に基づいてアクチュエータ６１０へ駆動信号を送る。センサ入力部５１２は、センサ６２０からセンサ信号を受け付けて、センサ信号に基づいてセンサ情報を生成する。外部インターフェース５１０はさらに、アクチュエータ６１０およびセンサ６２０以外の外部機器である他機器６３０が接続される他機器入出力部５１３を有してもよい。これにより外部インターフェース５１０は、センサ６２０およびアクチュエータ６１０に加えて他機器６３０に接続可能である。外部インターフェース５１０の各入出力部の具体的な構成は、それに接続される外部機器６００の種類に依存する。たとえば、外部機器６００が、Ｉ／Ｏ機器なのか、サーボアンプなのか、または他のコントローラなのかによって、入出力部の具体的な構成は異なる。サーボアンプが用いられる場合、その機能がアクチュエータ６１０に含まれていてもよい。あるいはサーボアンプの機能が外部インターフェース５１０に含まれていてもよく、この場合、駆動信号によってサーボモータへの電力供給が行われる。
【００３４】  設定入力部５２０は、通常のコントローラにおけるものと同様に、制御プログラムをユーザから受け付ける。制御プログラムは、センサ情報を参照しながら駆動情報を生成するためのものである。この駆動情報に従ってアクチュエータ６１０は駆動される。本実施の形態における特徴的な点として、設定入力部５２０は、拘束条件設定情報をユーザから受け付ける。拘束条件設定情報は、ワークとアクチュエータ６１０との間で想定される拘束条件を変更するために制御プログラムに関連付けられる命令情報である。
【００３５】  制御プログラム実行部５３０は制御プログラムを処理する。制御プログラム実行部５３０は拘束条件変更命令処理部５３１を有する。拘束条件変更命令処理部５３１は、拘束条件設定情報に基づいて拘束条件変更部５４０へ拘束条件変更命令を発行する。言い換えれば、拘束条件変更命令処理部５３１は、拘束条件を変更するために制御プログラムに関連付けられている命令情報を処理することにより、拘束条件変更部５４０へ指令を行う。
【００３６】  拘束条件変更部５４０は、拘束条件変更命令処理部５３１によって発行された拘束条件変更命令に基づいて拘束条件を管理する。この目的で、拘束条件変更部５４０は、現時点での拘束条件の情報を保持するための拘束条件保持部（図示せず）を有する。
【００３７】  ワークシミュレーション部５５０は、ワークの移動についてのシミュレーションを行うものである。具体的には、ワークシミュレーション部５５０は、少なくとも１つのアクチュエータ６１０のうち、拘束条件変更部５４０によって管理されている拘束条件においてワークに拘束されるとされているものに関して制御プログラム実行部５３０によって生成された駆動情報により、ワークの移動量を推定し、移動量をワークの前回位置に加算することによりワークの現在位置を推定する。
【００３８】  センサシミュレーション部５６１は、センサ６２０の動作についてのシミュレーションを行うものである。具体的には、センサシミュレーション部５６１は、ワークシミュレーション部５５０によって推定されたワークの現在位置の情報を用いることで、センサ情報を模擬したセンサシミュレーション情報を生成する。
【００３９】  入出力切換部５７０は、コントローラ５００Ａの動作モードを選択するために、信号の流れを切り換えるものである。入出力切換部５７０は、動作モードとして少なくともセンサシミュレーションモードを有する。さらに本実施の形態においては、入出力切換部５７０は、動作モードとしてセンサ稼働モードを有する。
【００４０】  第１に、センサシミュレーションモードについて説明する。本モードにおいては、入出力切換部５７０は、制御プログラム実行部５３０によって生成された駆動情報を少なくともワークシミュレーション部５５０へ送る。さらに、入出力切換部５７０は、センサ情報の代替情報として、センサシミュレーション部５６１によって生成されたセンサシミュレーション情報を制御プログラム実行部５３０へ送る。これにより、制御プログラム実行部５３０は、実際のセンサ情報ではなく、それを模擬した情報を利用して動作する。好ましくは、入出力切換部５７０は、制御プログラム実行部５３０によって生成された駆動情報を、ワークシミュレーション部５５０だけでなく、アクチュエータ出力部５１１へも送る。より好ましくは、入出力切換部５７０は本モードにおいて、駆動情報をアクチュエータ出力部５１１へも送るか否か選択可能に構成されている。
【００４１】  第２に、センサ稼働モードについて説明する。本モードにおいて、入出力切換部５７０は、センサ入力部５１２によって生成されたセンサ情報を制御プログラム実行部５３０へ送る。これにより、制御プログラム実行部５３０は、シミュレーションによる情報ではなく、センサ６２０によるセンサ情報を利用して動作する。よって、搬送システム７００Ａが実働する。
【００４２】  （動作）  まずワークシミュレーション部５５０によるシミュレーション動作について説明する。まず、ユーザは設定入力部５２０を介して、制御プログラムと、ワーク、アクチュエータ６１０およびセンサ６２０の各々の設定情報と、外部入力信号切換情報とを入力する。制御プログラムは、制御プログラム実行部５３０へ送られ、そこで保持される。ワーク、アクチュエータ６１０およびセンサ６２０の各々の設定情報は、ワークシミュレーション部５５０へ送られ、そこで保持される。外部入力信号切換情報は、入出力切換部５７０へ送られ、そこで保持される。センサ６２０の設定情報は、外部入力シミュレーション部５６０のセンサシミュレーション部５６１へ送られ、そこで保持される。なおワークの設定情報として設定された情報の一部は、拘束条件変更部５４０へ送られ、そこで保持される。
【００４３】  制御プログラム実行部５３０には、上述したように設定入力部５２０から制御プログラムが送られる。制御プログラムは制御プログラム実行部５３０に格納される。制御プログラムには、実働において外部機器６００を制御するための通常の制御命令に加えて、シミュレーションを可能とするための専用命令が含められている。専用命令は次の２種類のものを有する。第１の命令は、指定されたワークと指定されたアクチュエータ６１０とが互いに拘束されているものと想定する拘束命令である。第２の命令は、指定されたワークと指定されたアクチュエータ６１０との互いの拘束が解除されたものと想定する拘束解除命令である。
【００４４】  専用命令は、ワークとアクチュエータ６１０との間で想定される拘束条件を変更するために制御プログラムに関連付けられる命令情報である。拘束命令は、特定のアクチュエータ動作がワークに対して作用する状況になる制御シーケンスの箇所に追加される。これらの箇所は、たとえば、ロボットがワークを把持する箇所、コンベア上にワークが置かれる箇所、ワークを押すアクチュエータが押す動作を開始する箇所などである。これらの箇所は、プログラム上で、アクチュエータの動作命令が記述されている箇所である。よって拘束命令を追加すべき箇所を判別することは、ユーザにとって容易である。拘束解除命令は、拘束命令とは逆に、特定のアクチュエータ動作が、ワークに対して作用する状況から解放される制御シーケンスの箇所に追加される。これらの箇所は、たとえば、ロボットがワークを設置する箇所、コンベア上からワークが除かれる箇所、ワークを押すアクチュエータの押す動作が完了する箇所などである。これらの箇所は、プログラム上で、通常、アクチュエータ動作命令が記述されている箇所、またはアクチュエータの動作の完了を確認する命令が記述されている箇所である。よって拘束解除命令を追加すべき箇所を判別することは、ユーザにとって容易である。以上のように、ユーザは、通常の制御プログラムに対して、拘束条件設定情報としての専用命令を、容易に付加することができる。
【００４５】  拘束命令および拘束解除命令は、１つのワークと複数のアクチュエータ６１０の各々との関係を表現し得る。このため、１つのワークに関して拘束命令または拘束解除命令が重複して発行される場合がある。たとえば、ワークがコンベアによって移動された後に直動アクチュエータでコンベアから外される場合には、ワークがコンベアに載せられる時点で拘束命令が発令され、直動アクチュエータが押す動作を開始する時点でも、さらに拘束命令が発令される。直動アクチュエータの押す動作が完了した時点で、コンベアおよび直動アクチュエータの両方に関して拘束解除命令が発令される。なお、拘束命令は、直動アクチュエータが押す動作を開始する時点で発令される代わりに、直動アクチュエータがどのワークを押すかが判断された時点で発令されてもよい。
【００４６】  制御プログラム実行部５３０による制御プログラムの実行において、前記拘束命令または拘束解除命令が記述されている箇所が実行されるときには、制御プログラム実行部５３０内の拘束条件変更命令処理部５３１が呼び出される。拘束条件変更命令処理部５３１は、命令の内容を解釈し、ワークの拘束条件を変更する指令を拘束条件変更部５４０へ発行する。
【００４７】  拘束条件変更部５４０には、上述したように設定入力部５２０から設定情報が送られる。この設定情報は拘束条件変更部５４０に格納される。この設定情報には、拘束条件変更部５４０が拘束状態を管理するワークを決めるための設定情報が含まれる。たとえば、ワークの名前などの情報が含まれる。拘束条件変更部５４０は、拘束条件変更命令処理部５３１からの指令に従って、各ワークの拘束条件を管理する。言い換えれば、どのワークがどのアクチュエータ６１０に拘束されていると想定されているかが管理される。そして拘束条件変更部５４０は各ワークの拘束条件をワークシミュレーション部５５０に出力する。
【００４８】  ワークシミュレーション部５５０には、上述したように設定入力部５２０から設定情報が送られる。この設定情報はワークシミュレーション部５５０に格納される。この設定情報には、ワーク、アクチュエータ６１０、およびセンサ６２０の設定情報が含まれる。またワークシミュレーション部５５０には、上述したように、拘束条件変更部５４０から、各ワークの拘束条件が入力される。また、ワークシミュレーション部５５０には、入出力切換部５７０から、アクチュエータ６１０の駆動情報が送られる。この、入出力切換部５７０からの情報信号は、入出力切換部５７０が外部インターフェース５１０へ送るものが入出力切換部５７０内で複製されたものであってもよい。
【００４９】  図２は、ワークシミュレーション部５５０に格納される、ワークの設定情報の例を示す。「番号」および「名前」は、異なるワークを区別するためのものである。「サイズ（Ｘ，Ｙ，Ｚ）」は、ワークの、センサ６２０によって検出される部分のサイズをＸＹＺ直交座標系で表している。「初期位置姿勢（Ｘ，Ｙ，Ｚ，Ｒｘ，Ｒｙ，Ｒｚ）は、初期状態でのワークの位置および姿勢を表している。Ｘ，ＹおよびＺは、位置をＸＹＺ直交座標系で表している。Ｒｘ、ＲｙおよびＲｚのそれぞれは、姿勢をＸ軸、Ｙ軸およびＺ軸周りの回転角で表している。
【００５０】  図３は、ワークシミュレーション部５５０に格納される、アクチュエータ６１０の設定情報の例を示す。「番号」および「名前」は、異なるアクチュエータ６１０を区別するためのものである。「動作方向」は、アクチュエータの変位が生じる方向を表している。「サイズ」は、アクチュエータ６１０の、センサ６２０によって検出される部分の動作方向におけるサイズを表している。「初期位置」は、初期状態での動作方向におけるアクチュエータの位置を表している。
【００５１】  図４は、アクチュエータ６１０およびセンサ６２０（図１）の例としてのアクチュエータ６１１および在荷センサ６２１，６２２を示す斜視図である。アクチュエータ６１１は、固定部６１１ｂと、ロッド部６１１ｒとを有する。固定部６１１ｂはロッド部６１１ｒを駆動する部分である。ロッド部６１１ｒは、ワークに直接作用する部分である。アクチュエータ６１１は、ロッド部６１１ｒが飛び出ている時は、反射式の光学式の在荷センサ６２１によって検出され、ロッドが引っ込んでいる時は、反射式の光学式の在荷センサ６２２によって検出される。この構成において、アクチュエータ６１１のサイズは、ロッド部６１１ｒのうち、在荷センサ６２１および６２２によって検出され得る部分の厚み（図中、横方向の寸法）に相当する。
【００５２】  図５は、ワークシミュレーション部５５０の動作を概略的に示すフローチャートである。以下、図５を参照して、ワークシミュレーション部５５０によるワークの位置のシミュレーション方法について説明する。
【００５３】  まずステップＳ１０１にて、シミュレーション処理が、初回の処理として呼び出されたものであるかが判断される。ＹＥＳと判断された場合には処理がステップＳ１０２に進められる。ステップＳ１０２にて、全てのアクチュエータ６１０に関して、アクチュエータ６１０の前回位置の変数にアクチュエータ６１０の現在位置の数値が代入される。さらに、全てのワークに関して、ワークの前回位置の変数に、ワークの設定情報として入力されたワークの初期位置が代入される。なお図中、「∀」は「全ての」を表す記号である。また「Axis_PrePos」、「Axis_CurPos」、「Work_PrePos」、および「Work_IniPos」のそれぞれは、アクチュエータ６１０の前回位置、アクチュエータ６１０の現在位置、ワークの前回位置、およびワークの初期位置を表している。そして処理が終了される。
【００５４】  その後、シミュレーション処理が再度呼び出される。この場合、ステップＳ１０１にてＮＯとの判断がなされることになる。これにより処理がステップＳ１０３に進められる。ステップＳ１０３にて、全てのアクチュエータ６１０に関して、アクチュエータ６１０の変位量の変数に、アクチュエータ６１０の現在位置からアクチュエータ６１０の前回位置を引いた値が代入される。図中、「Axis_DelPos」はアクチュエータ６１０の変位量を表している。その後、ステップＳ１０４にて、カウンタ変数ｉに「１」の値が代入される。
【００５５】  ステップＳ１０５にて、番号ｉのワークの位置が次のように算出される。アクチュエータ６１０のうち、拘束条件において番号ｉのワークに拘束されるとされている全てのアクチュエータに関して、ステップＳ１０３で計算された変位量に当該アクチュエータの動作方向を乗じた値が算出される。これらの値の合計値が、ワークの前回位置に加算される。図中、「Work_CurPos_i」および「Work_PrePos_i」のそれぞれは、番号ｉのワークの現在位置および前回位置を表している。また「Chain_Cond_i_j」は、番号ｉのワークと番号ｊのアクチュエータとの間の拘束条件を表している。ここで、拘束条件は、拘束されている場合には「１」を、拘束されていない場合には「０」を、値として取るものとする。また「Dir_Axis_j」は番号ｊのアクチュエータ６１０の動作方向を表している。また「AXIS_NUM」はアクチュエータ６１０の総数を表している。
【００５６】  ステップＳ１０６にて、カウンタ変数ｉに１が加算された上で、それがワークの総数より大きいかが判断される。ＮＯと判断された場合には、処理がステップＳ１０５に戻される。なお図中、「++i」は変数ｉに１を加算することを表している。また「WORK_NUM」はワークの総数を表している。
【００５７】  ステップＳ１０５がワークの総数と同じだけ繰り返されれば、ステップＳ１０６にて、ＮＯとの判断がなされることになる。その場合、処理が終了される。ワークシミュレーション部５５０は、上記で説明した処理が終了したら、算出されたワークの位置情報を外部入力シミュレーション部５６０に出力する。
【００５８】  図６は、外部入力シミュレーション部５６０のセンサシミュレーション部５６１に格納される、センサ６２０の設定情報の例を示す。「番号」および「名前」は、異なるセンサ６２０を区別するためのものである。「通常出力」は、「検出対象」を「検出位置」で検出していない状態での出力値を表している。
【００５９】  図７は、センサシミュレーション部５６１の動作を概略的に示すフローチャートである。センサシミュレーション部５６１には、上述したように、設定入力部５２０からセンサ６２０の設定情報が入力され、ワークシミュレーション部５５０からワークの位置情報が入力される。センサシミュレーション部５６１は、この情報を用いて、センサ６２０の状態のシミュレーションを行う。以下、図７を参照して、このシミュレーション方法について説明する。
【００６０】  まずステップＳ２０１にて、カウンタ変数ｉに「１」の値が代入される。ステップＳ２０２にて、番号ｉのセンサ６２０の検出対象がワークであるかが判断される。ＹＥＳと判断された場合には、処理がステップＳ２０３に進められる。
【００６１】  ステップＳ２０３にて、Ｘ、ＹおよびＺの全方向に関して、検出対象のワークの位置にワークのサイズの半分の値を加えた値が番号ｉのセンサの検出位置より大きく、かつ、検出対象のワークの位置からワークのサイズの半分の値を引いた値が番号ｉのセンサの検出位置より小さい、という条件を満たすワークが存在するかが判断される。ここで、ワークのサイズの半分の値を用いるのは、ワークの位置がワークの中点に対応しているためである。図中、「∃」は「存在する」を表す記号であり、「∧」は条件の合接を表している。また「Sensor_ChkPos_i」は番号ｉのセンサの検出位置を表している。また「Work_CurPos」および「Work_Size」のそれぞれは、ワークの位置およびサイズを表している。
【００６２】  ステップＳ２０３においてＹＥＳと判断された場合には、処理がステップＳ２０４に進められる。ステップＳ２０４にて、センサシミュレーション情報として、番号ｉのセンサの出力信号は、通常出力が反転されたものとされる。図中「¬」は論理の否定を表す記号である。また「sig_i」および「sig_nor_i」のそれぞれは、番号ｉのセンサについて、シミュレーション情報としての出力と、通常出力とを表している。ステップＳ２０３においてＮＯと判断された場合には、処理がステップＳ２０５に進められる。ステップＳ２０５にて、センサシミュレーション情報として、番号ｉのセンサの出力信号は、通常出力であるものとされる。いずれの場合においても、その後、処理がステップＳ２１０に進められる。
【００６３】  一方、ステップＳ２０２にてＮＯと判断された場合には、処理がステップＳ２０６に進められる。ステップＳ２０６では、番号ｉのセンサの検出対象がアクチュエータ６１０であるかが判断される。
【００６４】  ステップＳ２０６においてＹＥＳと判断される場合には、処理がステップＳ２０７に進められる。ステップＳ２０７では、検出対象である番号ｊのアクチュエータの位置にアクチュエータのサイズの半分の値を加えた値が番号ｉのセンサ６２０の検出位置より大きく、かつ、検出対象である番号ｊのアクチュエータの位置からアクチュエータのサイズの半分の値を引いた値が番号ｉのセンサ６２０の検出位置より小さい、という条件が満たされるか判断される。図中、「Axis_CurPos_j」および「Axis_Size_j」のそれぞれは、検出対象である番号ｊのアクチュエータの位置およびサイズを表している。
【００６５】  ステップＳ２０７においてＹＥＳと判断された場合には、処理がステップＳ２０８に進められる。ステップＳ２０８にて、センサシミュレーション情報として、番号ｉのセンサの出力信号は、通常出力が反転されたものとされる。ステップＳ２０７においてＮＯと判断された場合には、処理がステップＳ２０９に進められる。ステップＳ２０９にて、センサシミュレーション情報として、番号ｉのセンサの出力信号は、通常出力であるものとされる。いずれの場合においても、その後、処理がステップＳ２１０に進められる。一方、ステップＳ２０６においてＮＯと判断された場合には、処理がステップＳ２１０に進められる。
【００６６】  ステップＳ２１０にて、カウンタ変数ｉに１が加算された上で、それがセンサ６２０の総数より大きいかが判断される。図中、「Sensor_NUM」はセンサ６２０の総数を表している。ＮＯと判断された場合には、処理がステップＳ２０２に戻される。
【００６７】  ステップＳ２０２からの処理がセンサの総数と同じだけ繰り返されれば、ステップＳ２１０にて、ＹＥＳとの判断がなされることになる。その場合、処理が終了される。センサシミュレーション部５６１は、上記で説明した処理が終了したら、上記処理により算出されたセンサの出力信号を表す情報、すなわちセンサ情報を模擬したセンサシミュレーション情報、を入出力切換部５７０に出力する。
【００６８】  入出力切換部５７０は、設定入力部５２０から入力されていた外部入力信号切換情報に従った動作モードに応じて、情報信号の授受を行う。動作モードがシミュレーションモードの場合、入出力切換部５７０は、外部インターフェース５１０のセンサ入力部５１２から入力されたセンサ情報を、上述したセンサシミュレーション情報によって代替し、当該情報を制御プログラム実行部５３０へ出力する。動作モードがセンサ稼働モードの場合、入出力切換部５７０は、上述した代替は行わずに、センサ情報を制御プログラム実行部５３０へ出力する。
【００６９】  なお外部入力信号切換情報は、センサ６２０のすべてに関して、シミュレーションモードかセンサ稼働モードかを一括して指定するものであってよい。あるいは、外部入力信号切換情報は、センサ６２０の各々に関して、シミュレーションモードかセンサ稼働モードかを個別に指定するものであってもよい。個別の指定は、たとえば、設定入力部５２０における一覧表への入力によって行われてもよい。
【００７０】  （効果）  本実施の形態によれば、センサ情報を模擬したセンサシミュレーション情報が、ワークの推定された現在位置の情報を用いて生成される。ワークの現在位置は、ワークの推定された移動量をワークの前回位置に加算することにより推定される。ワークの移動量は、少なくとも１つのアクチュエータ６１０のうち、拘束条件においてワークに拘束されるとされているものに関して制御プログラム実行部５３０によって生成された駆動情報により推測される。拘束条件は拘束条件設定情報に基づいて管理される。拘束条件設定情報は、搬送システムの制御プログラムを参照することにより、搬送システムの種類に大きく依存することなくユーザが容易に作成し得る。これにより、センサ情報のシミュレーションを、搬送システムの種類に大きく依存せずに容易に行うことができる。得られたセンサシミュレーション情報は、センサ情報が欠如した状態での搬送システムの試験における代替情報として、または、搬送システムの実働における参考情報として利用することができる。
【００７１】  ワークの推定移動量は、少なくとも１つのアクチュエータ６１０のうち、拘束条件変更部５４０によって管理されている拘束条件においてワークに拘束されるとされているものに関して制御プログラム実行部５３０によって生成された駆動情報に基づいて、容易に得ることができる。この推定移動量をワークの前回位置に加算することでワークの現在位置が推測される。以上のように、ワークの推定移動量は駆動情報から容易に得られ、それを用いた単純な演算により、ワークの現在位置が推測される。これにより、ワークの現在位置を、少ない計算量で推測することができる。よって、シミュレーション用途に適したコンピュータに比して計算リソースが少ないことが通常である搬送システムのコントローラ５００Ａであっても、リアルタイムでのシミュレーションを行うことができる。
【００７２】  以上のように本実施の形態によれば、センサ情報のシミュレーションを、搬送システム７００Ａの種類に大きく依存せずに容易に、かつ、搬送システム７００Ａのコントローラ５００Ａを利用して行うことができる。
【００７３】  より具体的には、本実施の形態によれば、コントローラを動作させるための通常の情報に加えて、以下の２つの情報を追加するだけで、シミュレーションが可能である。第１の情報として、ワークおよびアクチュエータ６１０のサイズおよび位置関係といった情報が追加される。これらの情報は、搬送システム７００Ａの装置構成から明らかな情報であるため、ユーザは容易に追加することができる。第２の情報として、拘束条件設定情報が追加される。拘束条件設定情報は、通常の制御プログラムに関連付けられる命令情報である。この命令情報は、ワークとアクチュエータ６１０との間で想定される拘束条件を変更する専用命令である。専用命令の追加箇所は、ワークに作用するアクチュエータ６１０の動作に関連した命令の前後であり、そのような箇所を見分けることはユーザにとって容易である。よって、従来は搬送システムの構成に合わせてユーザが手探りで設計する必要があったシミュレーション方法を、本実施の形態によれば、一定の手順に従った汎用的手法により設定することができる。
【００７４】  また、上記で説明したシミュレーションは、拘束条件を基にワークの移動を計算するため、３次元空間内での干渉を利用した方法と異なり、少ない計算負荷で実現することができる。具体的には、ワークの移動量が、拘束条件に応じてアクチュエータ６１０の変位量を加算するだけで算出される。このような単純な算出は、コントローラ５００Ａ内の他の制御処理と比較して、非常に少ない計算負荷で処理可能である。
【００７５】  さらに本実施の形態によれば、入出力切換部５７０はセンサシミュレーションモードにおいて、制御プログラム実行部５３０によって生成された駆動情報をアクチュエータ出力部５１１へ送る。これにより、センサ情報を模擬しつつ、アクチュエータ出力部５１１からの駆動信号の発生をともなう動作が可能となる。これにより、特に、ワークを搬送しないために適切なセンサ情報が得られない場合においても、アクチュエータ６１０へ駆動信号を発生することができる。これにより、ワークを搬送することなく、アクチュエータ６１０への駆動信号の発生を試験することができる。
【００７６】  さらに本実施の形態によれば、入出力切換部５７０はセンサ稼働モードにおいて、センサ入力部５１２によって生成されたセンサ情報を制御プログラム実行部５３０へ送る。これにより、実際のセンサ６２０のセンサ信号を用いてコントローラ５００Ａを実働させることができる。
【００７７】  なお、上記において詳述したセンサおよびアクチュエータの構成は例示であり、他の様々な構成が用いられ得る。
【００７８】  （第１の変形例）  上記では、アクチュエータ６１０として、サーボモータで駆動する直動軸を有するアクチュエータ６１１について詳しく説明した。しかしながら、アクチュエータ６１０の構成は、このようなものに限定されるわけではない。たとえば、アクチュエータ６１０が、コンベアおよびストッパを含んでいてもよい。ここでのストッパは、コンベア上を流れるワークの移動を制限するものである。たとえば、コンベアの末端に設置される固定のストッパ、および、Ｉ／Ｏによって開閉する、スライド方式のストッパが知られている。
【００７９】  図８は、アクチュエータとしてのコンベアの設定情報の例を示す。「スピード」はコンベアのスピードを表している。その他、上述した設定情報（図３）と同様の内容も含まれている。ワークおよびコンベアの間の拘束条件が設定されている場合には、コンベアの変位量をワークの位置に加算することで、ワークの移動が模擬される。コンベアの変位量は、コンベアが駆動中は、設定情報の動作方向にスピードを乗じた値で計算され、コンベアが停止中は０で計算される。逆転動作可能なコンベアであれば、逆転中は、移動方向を反転させての計算がなされればよい。
【００８０】  図９は、アクチュエータとしてのストッパの設定情報の例を示す。ワークおよびストッパの間の拘束条件が設定されている場合には、ワークの位置が次のように計算される。まず、コンベアの変位によるワークの移動が計算される。ストッパの「停止方向」が「１」の値に設定されている方向において、ワークの位置がストッパの「停止位置」を超えている場合には、当該方向におけるワークの位置は、ストッパの「停止位置」によって規定される。ストッパの停止方向が「−１」の値に設定されている方向においては、ワークの位置がストッパの「停止位置」より小さい場合には、当該方向におけるワークの位置は、ストッパの「停止位置」によって規定される。このように、ストッパの「停止方向」の符号は、正負どの方向へのワークの移動が制限されるかの設定に対応している。
【００８１】  他にもアクチュエータ６１０として、ロボットのようなものが用いられてもよい。ロボットのように、互いにつなぎ合わされた複数の駆動部によって手先などの先端部分が制御されるような機械の場合には、各駆動部の位置情報から、先端部分の位置を算出するキネマティクスをコントローラ５００Ａは解いている。この場合、ワークシミュレーション部５５０に、キネマティクスの解かれた手先位置情報が入出力切換部５７０から入力される。ワークシミュレーション部５５０は、手先位置情報から求められる手先位置の変位量に基づいてワークの移動量を算出する。コントローラ５００Ａ内でキネマティクスが解かれる場合には、重力保証などの、種々の複雑な補正が行われ得る。上記のように、手先位置情報がワークシミュレーション部５５０へ与えられることで、そのような複雑な補正計算をワークシミュレーション部５５０で行う必要がなくなる。
【００８２】  （第２の変形例）  ワークの位置変更だけでなく、姿勢変更がワークシミュレーション部５５０で扱われてもよい。３次元空間内で、物体の姿勢変更が扱われる場合には、その回転中心をどのように定めるかといった問題が発生する。ワークシミュレーション部５５０の計算負荷を抑えるため、および、設定情報を減らすためには、回転中心はワークの中心とすることが望ましい。これにより、ワークの姿勢が変化しても、ワークの位置情報が変化しない。
【００８３】  図１０に示すように、ワークシミュレーション部５５０では、ワーク１００の形状が、座標軸Ｘ、ＹおよびＺのそれぞれと平行な辺を有する直方体として扱われてもよい。言い換えれば、ワークの形状が、ワークを内包する最小の直方体１００Ａで模擬される。この場合、ワークのサイズがその姿勢によって変化する。図中では、ＸＹ平面内での角度α（αは０°以上、９０°以下）の姿勢変更の様子を示している。実線の四角がワークの姿勢を表現しており、点線の四角がワークを内包する最小の直方体を表現している。ＸＹ平面内でのワークのサイズを（２ｘ，２ｙ）とすると、ワークを内包する最小の直方体のＸＹ平面内でのサイズは、    （２（ｘ・ｃｏｓα＋ｙ・ｓｉｎα），２（ｘ・ｓｉｎα＋ｙ・ｃｏｓα））によって算出される。このように、ワークの姿勢変更を、ワークを内包する最小の直方体のサイズの変更として扱うことができる。なおこの方法は一例に過ぎず、ワークの姿勢変更は、他の様々な方法によって扱われ得る。
【００８４】  ＜実施の形態２＞  （構成）  上記実施の形態１においては、アクチュエータ６１０の、ワークへ作用する部分（作用部）の位置が、制御プログラム実行部５３０によって生成される駆動情報を比較的単純に用いることで、正確にまたは近似的に把握できることが想定されている。しかしながら、駆動情報と作用部の位置との関係がより複雑となるようなアクチュエータも存在する。この場合、作用部の位置の算出がワークシミュレーション部において行われてもよい。言い換えれば、アクチュエータのキネマティクスを解く算術処理がワークシミュレーション部において行われてもよい。本実施の形態においては、このようなワークシミュレーション部が用いられる場合について説明する。
【００８５】  図１１は、本実施の形態において用いられるアクチュエータ６１２を示す斜視図である。アクチュエータ６１２は、把持部６１２ｈ（作用部）と、駆動部６１２ｄとを有する。把持部６１２ｈは、アクチュエータ６１２の先端部であり、ワークを直接保持する部分である。よって把持部６１２ｈは、アクチュエータ６１２の、ワークへ直接作用する部分である。駆動部６１２ｄは、アクチュエータ６１２の、把持部６１２ｈを駆動する部分である。具体的には、駆動部６１２ｄは、自身を軸中心として回転駆動されるものである。把持部６１２ｈは、軸中心から離れて駆動部６１２ｄに固定されている。よって把持部６１２ｈは、駆動部６１２ｄの回転駆動に伴って、円周上の軌道に沿って変位する。ここで、アクチュエータ６１２へ与えられる駆動情報は、駆動部６１２ｄの回転駆動の角度量の情報である。この角度量から把持部６１２ｈの位置を把握するためには、当該角度量と当該位置との関係の情報を用いて前者から後者を算出する必要がある。
【００８６】  図１２は、本実施の形態における搬送システム７００Ｂの構成を概略的に示すブロック図である。搬送システム７００Ｂはコントローラ５００Ｂを有する。本実施の形態においては、少なくとも１つのアクチュエータ６１０に、アクチュエータ６１２（図１１）が含まれている。コントローラ５００Ｂはワークシミュレーション部５５０Ｂを有する。ワークシミュレーション部５５０Ｂはアクチュエータ軌跡生成部５５１を有する。
【００８７】  本実施の形態においては、設定入力部５２０は、アクチュエータ６１０に含まれるアクチュエータ６１２の機械構成情報をユーザから受け付ける。機械構成情報は、アクチュエータ６１２の把持部６１２ｈの位置を算出するために、制御プログラム実行部５３０によって生成される駆動情報と組み合わされて用いられる情報である。言い換えれば、機械構成情報は、把持部６１２ｈの動作軌跡を算出するために、駆動情報と組み合わされて用いられる情報である。アクチュエータ６１２の機械構成情報は、たとえば、駆動部６１２ｄの軸中心から把持部６１２ｈまでの距離と、角度量ゼロのときの駆動部６１２ｄから把持部６１２ｈへの方向とを表す情報である。機械構成情報はアクチュエータ軌跡生成部５５１へ送られる。
【００８８】  アクチュエータ軌跡生成部５５１は、アクチュエータ６１２の機械構成情報を保持する機械構成情報保持部（図示せず）を有する。アクチュエータ軌跡生成部５５１は、上記機械構成情報と、制御プログラム実行部５３０によって生成された駆動情報とから、アクチュエータ６１０の把持部６１２ｈが動作する軌跡を算出する。
【００８９】  なお、上記以外の構成については、上述した実施の形態１の構成とほぼ同じであるため、同一または対応する要素について同一の符号を付し、その説明を繰り返さない。
【００９０】  （効果）  本実施の形態によれば、アクチュエータ軌跡生成部５５１は、アクチュエータ６１２の把持部６１２ｈが動作する軌跡を算出する。これにより、制御プログラム実行部５３０によって生成される駆動情報としての角度量だけではアクチュエータ６１２の把持部６１２ｈ（作用部）の位置が算出できない場合においても、上述した軌跡の算出により、把持部６１２ｈの位置を算出することができる。より一般的にいえば、制御プログラム実行部５３０によって生成される駆動情報だけではワークに対するアクチュエータ６１０の作用が判別できない場合においても、ワークに対するアクチュエータ６１０の作用を判別することができる。よってこのような場合においても、実施の形態１と同様の効果を得ることができる。
【００９１】  （変形例）  アクチュエータ軌跡生成部５５１によってその作用部の位置が算出されるアクチュエータは、アクチュエータ６１２のように回動するものに限定されるものではない。たとえば、エアシリンダを制御する駆動情報は、その電磁弁の動作のＯＮ／ＯＦＦ情報のみであり得る。この場合、たとえば、シリンダの動作方向、スピード、およびストロークのような情報が、アクチュエータの機械構成情報である。ＯＮ／ＯＦＦ情報に加えて、この機械構成情報を用いることで、アクチュエータ軌跡生成部５５１は、エアシリンダの先端部（作用部）の位置を算出し得る。
【００９２】  ＜実施の形態３＞  上記実施の形態１または２においては、拘束条件においてワークに拘束されるとされているアクチュエータの変位量（実施の形態２においては、その作用部の変位量）のすべてまたはほぼすべてがワークの移動量に反映されることが想定されている。しかしながら、搬送システムの構成によっては、アクチュエータの変位量の一部がワークの移動量に反映されない場合もあり得る。このように反映されない量が無視できない程度に大きい場合、シミュレーションの精度が低下し得る。本実施の形態は、このような場合においてもシミュレーションの精度を確保することが意図されたものである。
【００９３】  図１３は、本実施の形態における搬送システムが有するアクチュエータ６１１（図４のものと同様）と、それが作用するワーク１００との配置の例を示す斜視図である。本実施の形態においては、ロッド部６１１ｒが移動し始めるときに、ロッド部６１１ｒとワーク１００との間に隙間ＲＩが存在する。このため、ロッド部６１１ｒの全変位量のうち、ロッド部６１１ｒがワーク１００に達するまでの変位量は、ワークの移動量には直接反映されない無効な変位量である。ここで、制御プログラム実行部５３０によって生成されるアクチュエータ６１１の駆動情報は、ＯＮ／ＯＦＦ情報である。よって、ワークとアクチュエータ６１１との間で想定される拘束条件を変更するために制御プログラムに関連付けられる命令情報は、プログラムリストにおいて、アクチュエータ６１１へのＯＮ／ＯＦＦ命令の前後に記述されることが想定される。このため、アクチュエータ６１１が上述した無効な移動を行っている間も、アクチュエータ６１１とワーク１００との間の拘束条件は、両者が互いに拘束されていることを意味するものとなっている。よって、アクチュエータ６１１にとって、隙間ＲＩを通過する変位は、ワーク１００と拘束されているものとされつつの変位ではあるものの、実際にはワーク１００の移動へは直接は寄与しない変位である。言い換えれば、アクチュエータ６１１が変位する区間において、隙間ＲＩは、ワークの移動量への寄与が無効となる部分、すなわち作用無効区間、である。よって、ワーク１００の移動量をより正確に把握するためには、アクチュエータ６１１の変位量のうち無効となる部分を把握する必要がある。
【００９４】  図１４は、本実施の形態における搬送システム７００Ｃの構成を概略的に示すブロック図である。本実施の形態においては、少なくとも１つのアクチュエータ６１０に、作用無効区間を伴うアクチュエータ６１１（図１３）が含まれている。搬送システム７００Ｃはコントローラ５００Ｃを有する。コントローラ５００Ｃはワークシミュレーション部５５０Ｃを有する。ワークシミュレーション部５５０Ｃは作用無効区間判定部５５２を有する。作用無効区間判定部５５２は、制御プログラム実行部５３０によって生成される駆動情報によって表されたアクチュエータ６１１の変位量のうち、ワークの移動量への寄与が無効となる部分（作用無効区間）を設定する。
【００９５】  アクチュエータ６１０の各々の作用無効区間は、設定入力部５２０から、アクチュエータ６１０の設定情報としてワークシミュレーション部５５０Ｃに入力される。作用無効区間は、たとえば「０〜１００」といったような、アクチュエータ６１０の変位範囲で設定され得る。作用無効区間判定部５５２は、ワークの移動量が計算される際に、アクチュエータ６１０の動作が作用無効区間内での変位であるかを判定し、もしそうであれば、その変位量はワークの移動量に反映させない。より具体的にいえば、その変位量はワークの位置に加算されない。
【００９６】  なお、上記以外の構成については、上述した実施の形態１または２の構成とほぼ同じであるため、同一または対応する要素について同一の符号を付し、その説明を繰り返さない。
【００９７】  本実施の形態によれば、作用無効区間判定部５５２は、移動量のうち無効となる部分を設定する。これにより、ワークとアクチュエータ６１１との間に隙間ＲＩがある状態からアクチュエータ６１１がワークに作用する場合でも、ワークの現在位置を、高精度かつ低計算負荷で推定することができる。より一般的にいえば、隙間またはその他の要因に起因してアクチュエータが動作命令の途中からワークに作用する場合でも、ワークの現在位置を、高精度かつ低計算負荷で推定することができる。
【００９８】  ＜実施の形態４＞  上記実施の形態１〜３においては、外部機器６００からコントローラへの入力信号情報のシミュレーションとして、ワークまたはアクチュエータ６１０の位置を検出する在荷センサであるセンサ６２０からの入力信号情報のシミュレーションが行われる。一方で、コントローラへの入力信号を発生する機器は、在荷センサだけに限られるわけではない。在荷センサ以外の何らかのセンサ、または、このコントローラと互いに通信する他のコントローラ、管理コンピュータ、サーバもしくはユーザインターフェースなどからも、コントローラへの入力信号が発生され得る。このため、本実施の形態においては、入力信号情報のシミュレーションが、在荷センサであるセンサ６２０に関してだけでなく、上述したような他機器６３０の少なくとも１つに関しても行われる場合について説明する。他機器６３０からコントローラへの入力信号としては、たとえば、何らかのトリガ信号を受けてすぐにまたは一定時間経過後に発生するものなどがある。トリガ信号としては、たとえば、コントローラの外部インターフェースからの出力信号、または時刻情報信号などがある。また、コントローラによる制御の開始も、一種のトリガ信号として作用し得る。
【００９９】  図１５は、本実施の形態における搬送システム７００Ｄの構成を概略的に示すブロック図である。搬送システム７００Ｄはコントローラ５００Ｄを有する。コントローラ５００Ｄは外部入力シミュレーション部５６０Ｄを有する。外部入力シミュレーション部５６０Ｄは他機器シミュレーション部５６２を有する。他機器シミュレーション部５６２は、在荷センサとしてのセンサ６２０以外かつアクチュエータ６１０以外の外部機器である他機器６３０の少なくとも１つに関してシミュレーションを行うものである。具体的には、他機器シミュレーション部５６２は、他機器６３０の少なくとも１つからの入力信号情報を模擬するものである。他機器シミュレーション部５６２は、他機器６３０に関して設定入力部５２０から入力された設定情報と、入出力切換部５７０からの出力信号情報とに基づいて、他機器６３０からの入力信号情報の模擬信号情報を生成する。ここで用いられる出力信号情報は、搬送システム７００Ｄの実働において入出力切換部５７０から外部インターフェース５１０の他機器入出力部５１３へ送られる信号情報に相当する。他機器シミュレーション部５６２によって生成された模擬信号情報は、他機器６３０からの入力信号情報の少なくとも一部の代替情報として、制御プログラム実行部５３０に送られる。
【０１００】  図１６は、他機器６３０に関しての設定情報の例を示す。「番号」および「名前」は、模擬される入力信号情報を区別するためのものである。「トリガ」は、入力信号情報のトリガとなる信号情報の名前である。「遅れ時間」は、トリガとなる信号情報の発生から、模擬される入力信号情報の出力が変化するまでの時間である。「出力」は、模擬される入力信号情報の出力値である。この例では、「signal_1」に対応する入力信号が、「trigger_1」に対応する出力信号がＯＮしてから５００ｍｓ後にＯＮすることが模擬されている。入力信号は、このようなＯＮ／ＯＦＦのデジタル信号に限られるわけではない。たとえば、図中の「signal_2」に対応する入力信号が、「trigger_2」に対応する出力信号がＯＮしてから３ｓ後に出力値「１００」をとることが模擬されてもよい。このように入力信号は、数値、文字列、ファイルなど、任意の形式のデータを表していてよい。
【０１０１】  なお、上記以外の構成については、上述した実施の形態１〜３の構成とほぼ同じであるため、同一または対応する要素について同一の符号を付し、その説明を繰り返さない。
【０１０２】  本実施の形態によれば、他機器シミュレーション部５６２が他機器６３０のシミュレーションを行う。これにより、コントローラ５００Ｄに接続される様々な外部機器６００の振る舞いのシミュレーションが可能とされる。
【０１０３】  ＜実施の形態５＞  コントローラの動作目的によっては、その外部インターフェース５１０からアクチュエータ６１０の少なくとも１つへの出力信号が無効化されることが望まれる場合がある。たとえば、アクチュエータ６１０の一部もしくは全部が準備されていない場合、または、アクチュエータ６１０の一部もしくは全部を動作させずにコントローラの制御プログラムを確認することが望まれる場合があり得る。本実施の形態においては、このような場合に対応することができる搬送システムについて説明する。
【０１０４】  図１７は、本実施の形態における搬送システム７００Ｅの構成を概略的に示すブロック図である。搬送システム７００Ｅはコントローラ５００Ｅを有する。コントローラ５００Ｅは入出力切換部５７０Ｅを有する。入出力切換部５７０Ｅは出力抑制部５７１を有する。出力抑制部５７１は、アクチュエータ出力部５１１への駆動情報の出力を一時的に無効化することができるように構成されている。アクチュエータ出力部５１１への出力が無効化されつつも、必要に応じてワークシミュレーション部５５０および外部入力シミュレーション部５６０の少なくともいずれかへの出力は維持されてよい。
【０１０５】  なお、上記以外の構成については、上述した実施の形態１〜４の構成とほぼ同じであるため、同一または対応する要素について同一の符号を付し、その説明を繰り返さない。
【０１０６】  本実施の形態によれば、入出力切換部５７０Ｅは、アクチュエータ出力部５１１への駆動情報の出力を一時的に無効化することができる出力抑制部５７１を有する。これにより、アクチュエータ６１０を準備することなく、または、アクチュエータ６１０を実際に動作させることなく、コントローラ５００Ｅを試験することができる。
【０１０７】  なお本実施の形態においてはアクチュエータ６１０への駆動情報の出力が無効化される場合について説明したが、変形例として、他機器６３０への出力が無効化されてもよい。
【０１０８】  ＜実施の形態６＞  図１８は、本実施の形態における搬送システム７００Ｆの構成を概略的に示すブロック図である。搬送システム７００Ｆはコントローラ５００Ｆを有する。コントローラ５００Ｆは外部シナリオ実行部５８０を有する。外部シナリオ実行部５８０は、コントローラ５００Ｆ内の各種機能ブロックと接続しており、外部シナリオに記述された内容に従って、各機能ブロックに対して各種データの強制変更指令を発令する。具体的には、外部シナリオ実行部５８０は、制御プログラム実行部５３０、拘束条件変更部５４０、ワークシミュレーション部５５０、センサシミュレーション部５６１、および入出力切換部５７０の少なくともいずれかの内部データを強制的に変更する命令を発行する。たとえば、制御プログラム実行部５３０に格納された制御プログラム内の内部変数が変更される。あるいは、拘束条件変更部５４０に保持された拘束条件が変更される。あるいは、ワークシミュレーション部５５０によるシミュレーションにおいてワークが強制的に移動される。あるいは、センサシミュレーション部５６１へワークシミュレーション部５５０から入力される情報が変更される。あるいは、入出力切換部５７０における入出力信号が強制的に変更される。
【０１０９】  外部シナリオ実行部５８０で処理されるシナリオの形式は、コントローラ５００Ｆが解釈可能なものであればよい。よってこのシナリオは、たとえば、制御プログラム実行部５３０で用いられる命令セットによるものであってもよく、あるいは、ＣＰＵ（Central Processing Unit）の命令セットに変換されたものであってもよい。
【０１１０】  なお、上記以外の構成については、上述した実施の形態１〜５の構成とほぼ同じであるため、同一または対応する要素について同一の符号を付し、その説明を繰り返さない。
【０１１１】  本実施の形態によれば、外部シナリオ実行部５８０により、シミュレーショ上で外部シナリオが実行される。これにより、様々な運転エラー要因の発生状況を再現することができる。特に、再現が困難な物理的な運転エラー要因の発生状況を、簡単に再現することができる。よって、制御プログラムのデバック作業が効率化される。ここで運転エラー要因とは、たとえば、アクチュエータ６１０としてのコンベア上でのワークの詰まり、チャタリングまたはノイズによるセンサ６２０の入力信号の乱れ、または、他機器６３０としての他コントローラからの信号に重畳するノイズなどである。
【０１１２】  ＜実施の形態７＞  図１９は、本実施の形態における搬送システム７００Ｇの構成を概略的に示すブロック図である。搬送システム７００Ｇはコントローラ５００Ｇを有する。コントローラ５００Ｇにおいて、入出力切換部５７０は、動作モードとして併用モードを有する。入出力切換部５７０は併用モードにおいて、センサ入力部５１２によって生成されたセンサ情報を制御プログラム実行部５３０および信号比較部５９０の各々へ送り、かつ、センサシミュレーション部５６１によって生成されたセンサシミュレーション情報を信号比較部５９０に送る。
【０１１３】  コントローラ５００Ｇは、上述した信号比較部５９０を有する。信号比較部５９０は、センサ情報とセンサシミュレーション情報とを比較する。好ましくは、両者の差が顕著である場合に、警告信号が出力される。ここで「両者の差が顕著である」との判断がなされる条件は、たとえば、両情報が表す信号の値の差が予め設定された一定値を超えているとの条件でもよいし、両情報の不一致が一定時間以上継続するとの条件でもよいし、運転状況から学習した何らかの条件でもよい。その他、任意の判断条件が用いられてよい。判断条件は、信号比較部５９０へ設定入力部５２０から予め与えられてもよい。この場合、信号比較部５９０は、判断条件を保持する判断条件保持部（図示せず）を有する。
【０１１４】  なお、上記以外の構成については、上述した実施の形態１〜６の構成とほぼ同じであるため、同一または対応する要素について同一の符号を付し、その説明を繰り返さない。
【０１１５】  本実施の形態によれば、信号比較部５９０は、センサ情報とセンサシミュレーション情報とを比較する。これにより、実働している搬送システム７００Ｇを、シミュレーションを利用して監視することができる。具体的には、実働運転、すなわち、ワークを流しながらの運転において、ワークが理想的な動きを行った場合のシミュレーション結果であるセンサシミュレーション情報と、実際のワークの動きに従って出力されるセンサ情報とを比較することによって、実際の運転状態の監視が可能になる。
【０１１６】  ＜コントローラのハードウェア構成例＞  図２０は、上述したコントローラ５００Ａ〜５００Ｇのいずれかとして用い得るコントローラ８００のハードウェア構成を概略的に示すブロック図である。コントローラ８００は、プロセッサ（処理回路）８０１と、メモリ８０２と、ストレージ８０３と、入出力装置８０４と、可搬式記憶媒体駆動装置８０５と、通信インターフェース８０６と、内部バス８０７とを有している。たとえばコントローラ５００Ａ（図１）との対応について説明すると、外部インターフェース５１０は通信インターフェース８０６に対応し得る。設定入力部５２０は、入出力装置８０４における入力部、可搬式記憶媒体駆動装置８０５、または通信インターフェース８０６に対応し得る。制御プログラム実行部５３０、拘束条件変更部５４０、ワークシミュレーション部５５０、外部入力シミュレーション部５６０、および入出力切換部５７０の機能は、プロセッサ８０１がストレージ８０３に記憶されたプログラムを読み出して実行することにより実現され得る。コントローラ５００Ａ以外のコントローラ５００Ｂ〜５００Ｇにおいても同様である。
【０１１７】  プロセッサ８０１は、プログラムの命令に従い、算術・論理演算を実行する。プロセッサ８０１は、ＣＰＵコアが複数設けられている構成を有していてもよい。メモリ８０２は、たとえばＲＡＭ(Random Access Memory)などによって構成されるメインメモリである。メインメモリには、プロセッサ８０１で実行されるプログラムがロードされるとともに、プロセッサ８０１の処理に用いるデータが格納される。ストレージ８０３は、たとえばハードディスクドライブまたはフラッシュメモリなどの記憶装置であり、プログラムや各種データが格納される。可搬記憶媒体駆動装置８０５は、可搬記憶媒体９００に記憶されたプログラムまたはデータを読み出す装置である。可搬記憶媒体９００は、たとえば磁気ディスク、光ディスク、光磁気ディスクまたはフラッシュメモリなどである。プロセッサ８０１は、メモリ８０２およびストレージ８０３と協働しつつ、ストレージ８０３または可搬記憶媒体９００に格納されたプログラムを実行する。入出力装置８０４は、たとえば、キーボード、タッチパネル、およびディスプレイなどである。入出力装置８０４は、ユーザ操作などによる動作命令を受け付ける一方、コントローラ８００による処理結果を出力する。
【０１１８】  なお、本発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略したりすることが可能である。この発明は詳細に説明されたが、上記した説明は、すべての局面において、例示であって、この発明がそれに限定されるものではない。例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。
【符号の説明】
【０１１９】  １００  ワーク、５００Ａ〜５００Ｇ，８００  コントローラ、５１０  外部インターフェース、５１１  アクチュエータ出力部、５１２  センサ入力部、５１３  他機器入出力部、５２０  設定入力部、５３０  制御プログラム実行部、５３１  拘束条件変更命令処理部、５４０  拘束条件変更部、５５０，５５０Ｂ，５５０Ｃ  ワークシミュレーション部、５５１  アクチュエータ軌跡生成部、５５２  作用無効区間判定部、５６０  外部入力シミュレーション部、５６１  センサシミュレーション部、５６２  他機器シミュレーション部、５７０，５７０Ｅ  入出力切換部、５７１  出力抑制部、５８０  外部シナリオ実行部、５９０  信号比較部、６００  外部機器、６１０〜６１２  アクチュエータ、６１１ｂ  固定部、６１１ｒ  ロッド部、６１２ｄ  駆動部、６１２ｈ  把持部、６２０  センサ、６２１，６２２  在荷センサ、６３０  他機器、７００Ａ〜７００Ｇ  搬送システム。
【図１】
2017138164.tif 000003
【図２】
2017138164.tif 000004
【図３】
2017138164.tif 000005
【図４】
2017138164.tif 000006
【図５】
2017138164.tif 000007
【図６】
2017138164.tif 000008
【図７】
2017138164.tif 000009
【図８】
2017138164.tif 000010
【図９】
2017138164.tif 000011
【図１０】
2017138164.tif 000012
【図１１】
2017138164.tif 000013
【図１２】
2017138164.tif 000014
【図１３】
2017138164.tif 000015
【図１４】
2017138164.tif 000016
【図１５】
2017138164.tif 000017
【図１６】
2017138164.tif 000018
【図１７】
2017138164.tif 000019
【図１８】
2017138164.tif 000020
【図１９】
2017138164.tif 000021
【図２０】
2017138164.tif 000022
【国際調査報告】
2017138164.tif 000023
2017138164.tif 000024
2017138164.tif 000025