[第1実施形態]
図1において、サービスロボット10は、本発明の緊急停止システムが組み込まれた機器であり、上位ユニット11と、下位ユニット12と、上位ユニット11と下位ユニット12との間を接続するUSB(Universal Serial Bus)ケーブル13とを備えている。上位ユニット11には、複数のUSBポート14a、14b・・・がある。以下、USBポート14a、14b・・・を区別しない場合は、USBポート14と称する。
USBケーブル13は、その一端が1つのUSBポート14aに接続され、他端が下位ユニット12のコネクタ15に接続されている。USBケーブル13は、上位ユニット11と下位ユニット12とを接続する接続線としての電源(VBUS)線13a、GND線13b、一対の信号線(D+、D−)13c,13dを有している。
上位ユニット11は、機器全体の動作を計画及び実行するものであり、様々な計測情報に基づいて、高度な計算を高速に行うことができる例えば汎用PC(パーソナルコンピュータ)が用いられている。
この例での下位ユニット12は、サービスロボット10を移動させるための車輪駆動専用ユニットになっており、下位ユニット12全体を制御・管理するMPU16を備えている。上位ユニット11と下位ユニット12とは、USBケーブル13を介してUSB通信を行う。USB通信は、ユニット間での双方向の通信が可能であり、その通信データには、下位ユニット12への制御指令や、下位ユニット12からの計測情報、ステータス情報が含まれている。このUSB通信による上位ユニット11からの制御指令に基づいて、MPU16が下位ユニット12の駆動部31を制御する。
なお、上位ユニット11には、サービスロボット10の設計によっては、複数の下位ユニット12が接続される構成も考えられる。図1では説明を簡単にするため1個の下位ユニット12だけを接続した状態を描いてある。
上位ユニット11は、CPU17、ハードディスクやメモリなどの記憶部18、USBホストコントローラ19を含むUSB入出力部、電源装置(図示省略)などを有している。記憶部18には、ロボット制御アプリケーション21と、緊急停止アプリケーション22のプログラムが書き込まれている。ロボット制御アプリケーション21は、通常時の制御プログラムであり、緊急停止アプリケーション22は、下位ユニット12の駆動部31を緊急停止させるためのプログラムである。緊急停止アプリケーション22を、ロボット制御アプリケーション21の一部とすることも可能であるが、緊急停止アプリケーション22をモジュール化して、ロボット制御アプリケーション21から分離させることによって、緊急時におけるサービスロボット10の緊急停止の信頼性を高いものにしている。
CPU17は、ロボット制御アプリケーション21を実行することにより制御部23として機能する。制御部23は、サービスロボット10の動作を計画および実行する。具体的には自律移動の経路計画や障害物回避などの通常制御時における判断処理を行って、下位ユニット12に対して移動に関する制御指令としての速度指令を送る。速度指令には、例えば車輪30の車輪速度の速度指令値が含まれている。制御部23からの速度指令は、USBホストコントローラ19の介在により、USB通信で下位ユニット12に送られる。
CPU17は、緊急停止アプリケーション22を実行することにより、緊急停止部24として機能する。緊急停止部24は、緊急時に下位ユニット12の駆動部31を緊急停止させるためのものであり、緊急停止させるための緊急停止信号を下位ユニット12に送る。詳細を後述するように、この例では特定の接続線としての電源線13aを用いて緊急停止信号を下位ユニット12に送る。
USBホストコントローラ19には、CPU17が接続されるとともに、複数のUSBポート14が接続されている。各USBポート14には、電源(VBUS)ピン、GNDピン、一対の信号(D+、D−)ピンが設けられ、各ピンは、USBケーブル13の対応する電源線13a、GND線13b、信号線13c,13dに接続されている。電源線13aとGND線13bは、USBケーブル13を介してホスト側からUSB機器側に給電するための接続線である。信号線13c,13dは、データ伝送のための接続線であり、信号線13c,13dを用いて差動信号伝送方式による通信が行われる。
上位ユニット11のUSBポート14に関し、一部の安価なコンピュータを除けば、USBポート14の電源ラインには、機器の省電力対応や過電流防止用に半導体パワースイッチが挿入されている。USBホストコントローラ19は、前記半導体パワースイッチのイネーブル入力端子に信号を与え、USBポート14の電源出力をオン・オフする。前記半導体パワースイッチは、図示しておらず、USBホストコントローラ19の一部とする。なお、下位ユニット12は、サービスロボット10の駆動電源部からの電源供給で動作するため、USBケーブル13から供給される電源は、下位ユニット12の動作電源としては使用されない。
USBホストコントローラ19は、信号線13c,13dを介し、下位ユニット12のUSBインタフェース27とデータ伝送を行う。すなわち、USBホストコントローラ19は、制御部23によって記憶部18に格納された送信データを下位ユニット12に送る。また、USBホストコントローラ19は、下位ユニット12から受信したデータを記憶部18に格納し、その受信データは制御部23と緊急停止部24に渡される。
なお、USBケーブル13を用いた電源供給、下位ユニット12の認識の手順、USB通信の手順などは、周知のUSB規格に準拠したUSBホスト機器とUSBデバイス機器を接続した場合と同様であるので、詳細な説明は省略する。
上記USBホストコントローラ19は、文献「Enhanced Host Controller Interface Specification for Universal Serial Bus Rev. 1.0, Intel, 2002.」(以下、文献1と称する)に記載されたUSBホストコントローラの規格に準拠したものであり、PORTSCレジスタ(Port Status and Control register)と呼ばれるレジスタ19aを内蔵している。レジスタ19aは、USBポート14の個々に設けられており、対応するUSBポート14の動作モードを設定したり、そのステータスやログを把握するための複数のビット値を保持する。
レジスタ19aのビット12がPort Powerビット(以下、PPビットという)であり、USBポート14の電源出力のオン・オフを切り替える、すなわち電源出力を制御するビットになっている。CPU17が、PPビットに「1」を書き込むことにより、USBポート14に電源が出力され、「0」を書き込むことにより電源出力が停止する。なお、USBホストコントローラ19の「Host Controller Capability Registers」にあるStructural Parameters(HCSPARAMS)レジスタのビット4に配置されたPort Power Controlビットは、USBポート14の電源出力の制御が可能であるかを示すビットである。Port Power Controlビットが「1」であれば、USBポート14の電源出力のオン・オフが可能である。
上記のUSBホストコントローラ19は、USB2.0のものであるが、USB3.0のものである場合には、文献「Extensible Host Controller Interface for Universal Serial Bus,” Rev. 1.1, Intel, 2013.」(以下、文献2と称する)に準拠するものとすればよい。この場合には、PORTSCレジスタのビット9がPPビットである。また、「Host Controller Capability Registers」にあるCapability Parameters 1(HCCPARAMS1)レジスタのビット3がPort Power Controlビットである。
本例では、電源出力の停止(オフ)への切り替えをもって緊急停止信号としており、緊急停止部24は、駆動部31を緊急停止させるときにPPビットに「0」を書き込む。緊急停止部24は、計測情報に基づいて、サービスロボット10が災害を招く危険状態にあるかを計算し、危険状態にあると判定した場合、下位ユニット12に緊急停止信号を出力する。下位ユニットのMPU16による制御停止の指令と並行して緊急停止信号を出力することもある。前記計測情報は、下位ユニット12から出力されるもの、上位ユニット11に接続された周辺機器から出力されるものがある。周辺機器としては、例えばカメラや各種センサ(図示省略)、無線通信で接続される外部の機器がある。
緊急停止部24は、例えば下位ユニット12から得た計測情報に基づき、下位ユニット12の異常を判別し、故障が検知されたときに緊急停止信号を出力する。その計測情報としては、例えばUSB通信で下位ユニット12から送られたエンコーダ37による車輪30の速度計測値がある。制御部23が下位ユニット12に送信した速度指令値と前記速度計測値とのずれを計算し、それが収束しない場合には、MPU16が車輪速度を適正に制御していなく異常があることから故障と判別される。
また、上位ユニット11と下位ユニット12との間のUSB通信が異常であることを緊急停止部24が検知した場合も緊急停止信号を出力してもよい。
上記のように上位ユニット11が下位ユニット12から得られる計測情報に基づいて下位ユニット12の故障を検知し、緊急停止させる構成とすることによって、MPU16の危険側故障によるサービスロボット10の駆動部31の制御不能な状況が生じても、駆動部31の緊急停止が可能となる。
緊急停止部24は、電源線13aへの電源出力を停止することをもって緊急停止のための緊急停止信号としている。緊急停止部24は、緊急時には、レジスタ19aのPPビットを「1」から「0」に書き換える。これによって、USBホストコントローラ19は、電源線13aに電源出力している状態(オン)から電源出力を停止した状態(オフ)にする。この電源出力の停止が緊急停止信号として電源線13aを介して下位ユニット12に伝達される。このようにUSBケーブル13内に元々含まれる電源線13aへの電源出力の停止を緊急停止信号とするため、緊急停止用の特別なコネクタやケーブル、通信インタフェース回路などを別途設ける必要がない。
緊急停止部24は、サービスロボット10の起動時に緊急停止システムの自己診断を実施する。この自己診断を行う際には、緊急停止部24は、自己診断要求を下位ユニット12に通知して、下位ユニット12に、自己診断のための動作を行わせる。緊急停止部24は、USB通信により下位ユニット12から自己診断の結果を受信する。緊急停止部24は、自己診断で異常なければサービスロボット10を稼働させるが、故障がある場合には稼働を禁止するとともに、故障があることをユーザーに通知する。
下位ユニット12は、コネクタ15、MPU16、USBインタフェース27の他、車輪30、駆動部31、駆動電源遮断部32などを備えている。コネクタ15は、USBポート14と同様に電源ピン、GNDピン、一対の信号ピンが設けられており、これら各ピンがUSBケーブル13の対応する電源線13a、GND線13b、信号線13c,13dに接続されている。サービスロボット10は、車輪30の回転によって移動する。通常、車輪型の移動ロボットは、2つの駆動車輪を有するため、駆動部31と車輪30の数は、2つであるが、図では簡略化のため、それぞれ1つのみを図示している。
USBインタフェース27は、コネクタ15の一対の信号ピンが接続され、またMPU16が接続されている。このUSBインタフェース27は、信号線13c,13dを介して受信したデータをMPU16に渡す。また、USBインタフェース27は、MPU16から渡された計測情報や自己診断結果などを信号線13c,13dを介して上位ユニット11に送信する。なお、統合型マイコンのようにMPU16にUSBインタフェース27が含まれる場合もある。
駆動制御部としてのMPU16は、USB通信によって上位ユニット11から受信した速度指令に基づいて駆動部31を制御する。駆動部31は、車輪30を回転させるためのものであり、車輪30に連結されたモータ33、モータ33を駆動するためのモータ駆動回路34、FET駆動回路35を備えている。モータ駆動回路34は、例えば4個のFET34a、34b、34c、34dからなるHブリッジ回路となっている。
MPU16は、上位ユニット11から速度指令に基づいた動作信号をFET駆動回路35に出力する。FET駆動回路35は、動作信号に基づいて、モータ駆動回路34の各FET34a、34b、34c、34dのオン・オフを制御することにより、モータ33の回転方向、回転速度、回転力を制御する。回転速度の制御には、例えばPWM(Pulse Width Modulation:パルス幅変調)方式を用いる。電流検出回路38は、モータ33に流れる電流を検出する。
モータ33の軸には、エンコーダ37を取り付けてある。このエンコーダ37は、車輪30が一定角度回転するごとにパルスを出力する。MPU16は、所定時間当たりのパルス数から車輪30の回転速度である車輪速度を計測する。MPU16は、エンコーダ37を用いて計測した速度計測値が上位ユニット11からの速度指令値となるように車輪速度のフィードバック制御を行う。なお、エンコーダ37は、車輪30の回転方向についても検出可能であり、MPU16は、速度計測値と回転方向の検出結果を上位ユニット11に渡すことで、上位ユニット11によるサービスロボット10の移動量と移動方向の推定が可能になる。
駆動電源遮断部32は、緊急停止信号の入力に応答して、駆動部31を緊急停止させるためのものである。駆動電源遮断部32は、MPU16とは別に設けられており、MPU16を介さずに緊急停止を行う。駆動電源遮断部32は、監視IC41、遮断器駆動回路42、遮断器としてのFET43、負荷44を有している。FET43は、ここでは、P型MOSFETとする。
監視IC41は、電源電圧を監視するものであり、コネクタ15の電源ピンを介して電源線13aと接続されている。監視IC41は、GNDに対する電源線13aの電圧を検出し、その電圧が監視電圧閾値を下回った時に、出力をHレベルからLレベルに転じる。これにより、緊急停止信号が入力されたことを遮断器駆動回路42に伝達する。なお、監視電圧閾値は、USB規格の電源仕様を考慮し、4.4Vを超えない程度の電圧値とすることが望ましい。
監視IC41の出力は、緊急停止信号として、遮断器駆動回路42に入力され、遮断器駆動回路42の出力は、開閉制御信号として、FET43のゲート端子に入力される。FET43は、モータ33から動力を切り離すように、駆動電源部(図示省略)とモータ駆動回路34との間に設けられている。すなわち、ソース端子が駆動電源部に接続され、ドレイン端子がモータ駆動回路34に接続されている。
FET43は、モータ駆動回路34から電源を切り離す遮断器であり、開閉制御信号がHレベルに転じると、駆動部31のモータ駆動回路34への電源供給を遮断して、モータ33を停止させる。
遮断器駆動回路42には、MPU16からの駆動部稼働許可信号がさらに入力される。この駆動部稼働許可信号がLレベルであれば、遮断器駆動回路42は、開閉制御信号をHレベルにし、モータ駆動回路34への電源投入を禁止する。MPU16は、それが下位ユニット12内の安全に係る故障を検知したときに、駆動部稼働許可信号をHレベルからLレベルに転じる。これにより、MPU16によっても駆動部31の緊急停止を行うことができる。遮断器駆動回路42は、緊急停止部24とMPU16とのいずれが故障を検知しても駆動部31を緊急停止するように構成された論理回路を備えている。遮断器駆動回路42は、オープンドレイン出力のNAND回路であり、例えばANDゲートICとN型MOSFETとプルアップ抵抗で構成できる。
下位ユニット12における電源線13aから与えられる電源の電力消費が、監視IC41のみによる場合、緊急停止部24からの緊急停止の要求時、電源線13aに接続された上位ユニット11側のコンデンサ成分により電圧の低下に時間を要し、緊急停止が遅れるおそれがある。これを回避するために負荷44を設けている。負荷44は、例えば抵抗であり、電源線13aに対する電源供給が停止された場合に、急速に電源線13aの電圧を降下させる。なお、負荷44は、緊急停止の信頼性を阻害させることのない下位ユニット12内の回路の一部であってもよい。
上記駆動電源遮断部32の構成は、一例であり、この構成に限るものではない。駆動電源遮断部32は、電源線13aの電源出力が停止したことを標準ロジックICやコンパレータなどで検知してFET43を作動させたり、電源線13aからの電力を直接用いてFET43を作動させる構成とすることもできる。なお、遮断器は、P型MOSFETに限るものではない。
監視IC41からの緊急停止信号は、バッファ45を介してMPU16にも入力される。MPU16は、この緊急停止信号に基づいて緊急停止部24から緊急停止の要求があったことを検知する。なお、この例では、MPU16の汎用入出力端子に緊急停止信号を入力しており、その汎用入出力端子がMPU16の内部故障により出力モードとなって、駆動電源遮断部32に影響を与えないようにするために、バッファ45を接続している。緊急停止信号をMPU16の専用入力端子で受けるような場合で、駆動電源遮断部32に影響を与えなければバッファ45は不要である。
自己診断の際には、MPU16は、上位ユニット11から自己診断要求の通知を受けることにより、下位ユニット12における自己診断を行う。MPU16は、自己診断の結果をUSB通信により上位ユニット11に送信するとともに、自己診断で異常なければ下位ユニット12を稼働させるが、故障がある場合には稼働を禁止する。
次に上記構成の作用について説明する。サービスロボット10を起動する場合には、例えば下位ユニット12を起動してから、上位ユニット11を起動する。上位ユニット11の起動中では、下位ユニット12との間のUSB通信が確立されておらず不通になっており、下位ユニット12のMPU16は、FET43をオフとするためにLレベルの駆動部稼働許可信号を出力した状態になっている。
上位ユニット11の起動後、USBホストコントローラ19によりUSBポート14aへのUSB機器の接続が検出される。このときには、各レジスタ19aのPPビットが「1」となっており、USBポート14aに電源出力を行っている。この後に、所定の手順でUSBホストコントローラ19とUSBインタフェース27とによってUSB通信が確立されるとともに、USBポート14aに下位ユニット12が接続されていることが上位ユニット11で認識された状態になる。
USB通信が確立すると、緊急停止部24は、USB通信によって自己診断要求をMPU16に通知し、緊急停止システムの自己診断が行われる。なお、緊急停止システムの自己診断の詳細については後述する。
自己診断の結果に故障がない場合には、MPU16は、駆動部31の稼働を許可した状態になっており、駆動部稼働許可信号をHレベルにしている。また、監視IC41は、電源線13aからの電源出力によって監視電圧閾値以上の電圧が入力された状態であり、緊急停止信号はHレベルとなっている。
緊急停止信号、駆動部稼働許可信号のいずれもがHレベルとなっているので、遮断器駆動回路42からはLレベルの開閉制御信号がFET43に出力されている。したがって、FET43は、オン状態であり、駆動電源部からの電源供給を受けて駆動部31が駆動できる状態になっている。
例えばサービスロボット10を移動させる場合には、制御部23から車輪速度の速度指令値を含む速度指令が下位ユニット12に送られる。この速度指令は、USBホストコントローラ19によってUSBポート14aから信号線13c、13dを介したUSB通信によって下位ユニット12に送信される。速度指令は、USBインタフェース27で受信され、MPU16に送られる。
上記のようにして速度指令を受けると、MPU16は、その速度指令に含まれる速度指令値に応じた動作信号をFET駆動回路35に出力し、モータ33を駆動する。このモータ33の駆動により車輪30が回転してサービスロボット10が移動する。車輪30の車輪速度は、MPU16がエンコーダ37を用いて計測する。そして、速度計測値が速度指令値とずれている場合には、MPU16は、動作信号を修正して、速度計測値が速度指令値と同じになるように制御し、車輪30が目標の車輪速度に達する。これにより、サービスロボット10が制御部23からの速度指令にしたがって移動する。
また、例えばサービスロボット10の移動を停止させる場合には、制御部23から車輪速度0の速度指令値を含む速度指令がUSB通信によりMPU16に送られる。MPU16からモータ回転停止の動作信号がFET駆動回路35に入力され、モータ33の回転が停止し、サービスロボット10の移動が停止する。ここでは、緊急停止と区別して、このような停止を制御停止と呼ぶ。
サービスロボット10の稼働時、MPU16が計測した速度計測値は、USB通信を介して制御部23および緊急停止部24に渡される。緊急停止部24は、ロボットが危険状態にあることを検知するとモータ33を緊急停止させる。例えば車輪速度についての速度指令値とこれに対応して得られる速度計測値とのずれが収束しない場合には、MPU16によるモータ33の回転速度の制御が正しく行われていないことから、MPU16、FET駆動回路35、モータ駆動回路34、モータ33、エンコーダ37のいずれかに故障がある。
上記のような故障を検知すると、緊急停止部24は、USBホストコントローラ19にアクセスして、故障がある下位ユニット12が接続されているUSBポート14aに対応するレジスタ19aのPPビットを「1」から「0」に書き換える。故障がある下位ユニット12が異なるUSBポート14に接続されている場合は、その接続されているUSBポート14に対応するレジスタ19aのPPビットを「1」から「0」に書き換える。
PPビットの「1」から「0」への書き換えにより、USBホストコントローラ19は、USBポート14aの電源出力を停止する。この結果、電源線13aを介した下位ユニット12への電源出力が停止する。
下位ユニット12への電源出力が停止することにより、監視IC41の入力電圧が降下する。そして、入力電圧が監視電圧閾値よりも下がった時点で、監視IC41からの緊急停止信号がHレベルからLレベルに転じる。緊急停止信号がLレベルになると、駆動部稼働許可信号がHレベルであっても、遮断器駆動回路42から出力される開閉制御信号がHレベルとなる。したがって、FET43がオフとなって、モータ駆動回路34への電源供給が遮断される。これにより、サービスロボット10が直ちに緊急停止する。
なお、FET43がオフになったときに、サービスロボット10が惰性により動き続けて完全な停止まで時間を要することがある。これを許容できない場合では、例えば、緊急停止信号をFET駆動回路35に入力し(図1の符号L1)、緊急停止のときにMPU16からの動作信号をFET駆動回路35から切り離して、FET34a、34bのゲート信号がプルダウンされ、かつ、FET34c,34dのゲート信号がプルアップされるように、予め回路を構成し、モータ33を短絡制動すればよい。
これまで、PPビットの機能がUSBホストコントローラ19に実装されている例、すなわち、USBポート14の電源出力を停止させる機能をUSBホストコントローラ19が有している例について説明した。しかし、汎用PCが採用するUSBホストコントローラ内蔵のチップセットのほとんどは、PPビットの機能とUSBポートの電源出力をオン・オフする半導体パワースイッチを制御するための出力信号とが連動していない。汎用PCでは、USBポートの電源出力は、USBホストコントローラではなく、ACPI機能により制御されるため、上位ユニットのハードウェアに汎用PCを用いる場合、ユーザーアプリケーションがUSBポートの電源出力を容易に制御できない問題がある。
USBホストコントローラにPPビットの機能が実装されていない場合には、例えば、USBポートの電源出力をオン・オフさせる半導体パワースイッチのイネーブル入力端子(FETであればゲート端子)と、上位ユニットのCPUの汎用入出力ポートを信号線で接続し、その入出力ポートを出力モードに予め設定して、緊急停止のための信号を出力する構成とすることができる。この構成は、しばしば組込み用PCにみられる。この場合には、PORTSCレジスタのアドレスとは異なるアドレスに、前記半導体パワースイッチをオン・オフするためのレジスタを配置し、このレジスタの値を緊急停止部が書き換えればよい。文献1、2に準拠したUSBホストコントローラでは、PPビットが「0」のとき、USB通信の機能が無効になる。しかし、上記のような構成であれば、上位ユニットは、USBポートの電源出力を停止した状態であっても下位ユニットのMPUとUSB通信が継続できるという利点がある。この例では、出力モードに設定した汎用入出力ポートを出力ポートとしているが、出力ポートは、出力専用ポートであってもよく、また、出力ポートは、CPUから制御される他のICに設けられたものであってもよい。
USBホストコントローラのPPビットの機能を用いず、上位ユニットのCPUの汎用入出力ポートなどからUSBポートの電源出力をオン・オフする場合、USBポートの電源出力が停止した状態であっても、上位ユニットと下位ユニットのUSB通信が可能になる。そのため、上位ユニットは、起動時において下位ユニットのMPUの健全性を確認するまではUSBポートの電源出力を停止した状態とし、MPUの健全性を確認した後に緊急停止システムの自己診断を実施できるという利点がある。
以下、USBポート14の電源出力を停止した状態であっても下位ユニット12のMPU16とUSB通信が継続できる構成を用いた緊急停止システムの自己診断について説明する。なお、PPビットを用いてUSBポート14の電源出力を制御する構成での自己診断アルゴリズムについては後述する。
この例では、上位ユニット11のCPU17は、その汎用入出力ポートを用いてUSBポート14の電源出力を制御している。自己診断では、緊急停止部24によるUSBポート14の電源出力のオフ、すなわち緊急停止信号の入力によって、駆動電源遮断部32が正常に動作するか否かの診断を行う。具体的には、USBポート14の電源出力のオフによって遮断器としてのFET43がオフとなってモータ駆動回路34から電源が切り離されているか否かを判断する。
この例では、上位ユニット11の電源投入時は、USBポート14の電源出力がオフとなる設定をCPU17の汎用入出力ポートのデフォルト設定とする。さらに、下位ユニット12は、後述する図4の例のように、FET43のモータ駆動回路34側の動力ラインから分岐して、分圧抵抗を介してMPU16の入力ポートに接続した回路を持ち、FET43のオン・オフ状態が検出できるものとする。この検出では、FET43がオンかオフかのどちらかが分かればよいので、MPU16の入力ポートは、MPU16に内蔵のA/Dコンバータの入力に割り当てる必要はなく、FET43がオンのときにMPU16の入力信号がHレベルで検出されるように分圧抵抗を調整すればよい。
上述のように緊急停止システムの自己診断は、サービスロボット10の起動時に行われる。図2に示すように、上位ユニット11は、電源投入後に下位ユニット12とUSB通信を開始し(S10)、緊急停止部24は、そのUSB通信を介して、MPU16が正常であるか否かを確認する(S11)。このときに、汎用入出力ポートは、デフォルト設定となっているから、USBポート14の電源出力(VBUS)はオフとなっている。したがって、USB通信は、USBポート14の電源出力がオフの状態で行われる。MPU16が正常であることを確認すると(S11のYES)、緊急停止部24は、次に、USB通信を介して下位ユニット12からFET43(遮断器)の状態を取得する(S12)。
一方、下位ユニット12では、電源投入後、MPU16が上記のように上位ユニット11との間でUSB通信を行うとともに、上記分圧抵抗に接続された入力ポートの入力信号に基づき、遮断器の状態、すなわちFET43がオン(閉)であるかオフ(開)であるかを検出する(S13)。そして、MPU16は、検出したFET43の状態(オンまたはオフ)を上位ユニット11に送る。USBポート14の電源出力がオフになっているので、正常であればFET43はオフである。
緊急停止部24は、例えば下位ユニット12から取得したFET43の状態がオフであった場合(S14のYES)、下位ユニット12に対して、USB通信を介して、自己診断要求を送信し(S15)、この送信後に自己診断完了応答を待つ。自己診断要求は、MPU16に駆動部稼働許可信号をHレベルにさせ、FET43の状態を検出し、その結果を応答させる要求であり、USBポート14の電源出力がオフのときになされる。MPU16は、上記のようにFET43の状態を送出した後、そのFET43の状態がオフである場合に(S16のYES)、自己診断要求の受信待ちとなっている。そして、MPU16は、上位ユニット11からの自己診断要求を受信する。
MPU16は、自己診断要求に応答して、駆動部稼働許可信号をHレベルにし、その状態でFET43の状態を検出する(S17)。ここで、駆動電源遮断部32が正常であれば、上記のようにUSBポート14の電源出力がオフになっているので、駆動部稼働許可信号をHレベルにしても、FET43はオフを維持して、オンすることはない。MPU16は、駆動部稼働許可信号をHレベルにした状態で検出したFET43の状態が、例えばオフの場合(S18のYES)は、駆動部稼働許可信号をLレベルにし(S19)、この後に自己診断完了応答として正常応答を上位ユニット11に送信する。なお、FET43がオンの場合には、MPU16は、自己診断完了応答として異常応答を上位ユニット11に送信する。
緊急停止部24は、上記のように下位ユニット12からの自己診断完了応答を取得し(S20)、それが正常応答であるか異常応答であるかを調べる(S21)。例えば、取得した自己診断完了応答が正常応答である場合には(S21のYES)、緊急停止部24は、CPU17の汎用入出力ポートの設定を変えて、USBポート14の電源出力(VBUS)をオンとする(S22)。この後に、上位ユニット11から下位ユニット12に稼働開始要求を送信する(S23)。稼働開始要求は、MPU16に、駆動部稼働許可信号をHレベルにさせて駆動部31を稼働状態にさせる要求である。
下位ユニット12では、稼働開始要求を受信すると、MPU16は、FET43の状態を検出する(S24)。上記のようにUSBポート14の電源出力がオンとなっているが、駆動部稼働許可信号をLレベルにしているので、正常であればFET43はオフである。MPU16は、例えばFET43がオフとなっていることを確認すると(S25のYES)、駆動部稼働許可信号をHレベルにし、FET43の状態を再び検出する(S26)。このときには、正常であれば、駆動部稼働許可信号をHレベルにすればFET43がオンとなる。したがって、FET43を介して駆動電源部にモータ駆動回路34が接続された状態になり、下位ユニット12が稼働可能な状態になる。一方、何らかの理由により、FET43がオフとなっている場合には、駆動電源部とモータ駆動回路34とがFET43によって切り離された状態であり、下位ユニット12は稼働できない状態である。
MPU16は、FET43の状態に応じて下位ユニット11が稼働可能な状態になったか否かを示す稼働開始完了応答を上位ユニット11に送信する。すなわち、FET43がオンであれば稼働可能な状態になったことを示す正常応答を稼働開始完了応答として送信し、FET43がオフであれば稼働できない状態であることを示す異常応答を稼働開始完了応答として送信する。この後、MPU16は、FET43がオンの場合(S27のYES)、上位ユニット11からの要求待ちとなり、要求に応じて動作する状態になる。一方、FET43がオフの場合(S27のNO)、MPU16は、下位ユニット11が稼働しないようにするための故障処理(S28)を行う。
一方の上位ユニット11では、緊急停止部24は、稼働開始完了応答を下位ユニット12から取得し(S29)、取得した稼働開始完了応答が正常応答か異常応答かを調べる(S30)。例えば、稼働開始完了応答が正常応答であった場合には(S30のYES)、下位ユニット12を制御するための動作に移る。一方、稼働開始完了応答が異常応答であった場合には(S30のNO)、サービスロボット10を稼働させないようにするための故障処理を行う(S31)。
上記の手順において、緊急停止部24は、MPU16が異常であった場合(S11のNO)、USBポート14の電源出力がオフのときにFET43がオンとなっている場合(S14のNO)、自己診断完了応答が異常応答である場合(S21のNO)には、いずれもサービスロボット10を稼働させないようにするための故障処理を行う(S31)。
また、MPU16は、電源投入直後にFET43がオンとなっている場合(S16のNO)、自己診断中に駆動部稼働許可信号をHレベルにしたときFET43がオンとなった場合(S18のNO)、自己診断完了応答の送信後に稼働開始要求信号がLレベルのときにFET43がオンとなっている場合(S25のNO)には、MPU16は、下位ユニット11が稼働しないようにするための故障処理(S28)を行う。
上記のように自己診断を行うことによって、電源投入時のMPU16の危険側故障によるモータ33の誤動作を防止することができ、緊急停止部24からの遮断器の制御、および、MPU16からの遮断器の制御のそれぞれに対する故障診断が可能となる。
なお、PPビットを用いてUSBポート14の電源出力を制御する構成での自己診断を行う場合には、図3に一例を示すような自己診断アルゴリズムを用いればよい。この自己診断アルゴリズムは、PPビットが「0」のとき、USB通信の機能が無効になることに対応している。また、この自己診断アルゴリズムでは、緊急停止部24によるUSBポート14の電源出力のオン・オフによる緊急停止信号の確認と、緊急停止信号の入力によって駆動電源遮断部32が正常に動作するか否かの診断を行う。駆動電源遮断部32が正常に動作するか否かの診断は、緊急停止信号が入力されている状態でMPU16がモータ33を微小動作させる微小動作信号を出力し、この微小動作信号の出力中にモータ33に電流が流れるか否かを調べる。なお、微小動作は、動作量が外部からは視認できない程度の動きになっている。また、モータ33に電流が流れたか否かは、電流検出回路38の検出結果に基づいて判断する。さらに、この例では、自己診断のために、モータ33に電流が流れたか否を調べているが、図2の自己診断のアルゴリズムと同じく、分圧抵抗から得られる電圧に応じてFET43のオン・オフ状態を検出してもよい。
PPビットを用いてUSBポート14の電源出力を制御する構成での自己診断アルゴリズムについても、緊急停止システムの自己診断は、サービスロボット10の起動時に行われる。緊急停止部24は、下位ユニット12とのUSB通信が確立した後、自己診断を開始する。このときには、PPビットが「1」に設定されていることによって、USB通信が可能であると同時に、USBポート14の電源出力がオンとなっている。
図3に示すように、緊急停止部24は、下位ユニット12のMPU16に対してUSB通信を介して自己診断要求を通知する(S41)。
次に、緊急停止部24は、タイマ(タイマ値T1)をスタートさせる(S42)。続いて、下位ユニット12に緊急停止を通知するため、すなわち電源出力を停止するため、下位ユニット12が接続されたUSBポート14aに対応するレジスタ19aのPPビットを「0」に書き換える(S43)。この後、緊急停止部24は、タイマ値T1が待機時間Taになるまで待機状態にする(S44,S45)。
なお、PPビットを「0」に書き換えるタイミングは、後述するように自己診断要求の通知を受けることに応答してMPU16が緊急停止信号の信号レベルを検出した後となるように予め調整される。この場合、MPU16からの緊急停止信号の信号レベルの検出完了の通知を受けてからPPビットを「0」に書き換えてもよい。待機時間Taは、下位ユニット12の自己診断の処理に要する時間に応じて決められており、その時間よりも長くされている。
一方、下位ユニット12側では、MPU16は、自己診断要求の通知を受けると、バッファ45を介して入力されている緊急停止信号の信号レベルを検出し、これを内部メモリに記憶する(S46)。このときに緊急停止信号がHレベルとなっていることを確認し、Hレベルではない場合には、意図しない緊急停止状態とみなし故障と判定する。
次にMPU16は、タイマ(タイマ値T2)をスタートさせ、タイマ値T2が待機時間Tbになるまで待機する(S47,S48)。この待機は、上位ユニット11からの電源出力の停止によって緊急停止信号の信号レベルが変化する時間に応じて決められている。
待機時間Tbの経過後、MPU16は、緊急停止信号の信号レベルがLレベルに反転しているか否かを確認して、その反転の有無を内部メモリに記憶する(S49)。正常であれば、緊急停止信号はHレベルからLレベルとなって反転していることになる。緊急停止信号の信号レベルが反転していない場合は(S50のNO)、MPU16は、緊急停止システムに故障があるものと判定し(S51)、MPU16は、駆動部稼働許可信号の信号レベルをLレベルに保持し、モータ33の稼働を禁止する(S52)。
一方、緊急停止信号の信号レベルが反転している場合は(S50のYES)、MPU16は、駆動部稼働許可信号をHレベルにして(S53)、自己診断を継続する。次に、MPU16は、微小動作信号をFET駆動回路35に送る(S54)。そして、微小動作信号の出力中に電流検出回路38でモータ33に電流が流れたか否かを検出して内部メモリに記憶する(S55)。
上位ユニット11から監視IC41の出力までが正常であれば緊急停止信号はLレベルである。遮断器駆動回路42が正常であれば、上記のように駆動部稼働許可信号がHレベルとなっていても遮断器駆動回路42からはHレベルの開閉制御信号がFET43に出力される。そして、FET43が正常であれば、FET43がオフとなっており、駆動電源部からモータ駆動回路34が切り離された状態になっている。したがって、正常な場合、微小動作信号をFET駆動回路35に送っても電流検出回路38によってモータ33に流れる電流が検出されることはない。
MPU16は、電流検出回路38によってモータ33に電流が流れたことが検出された場合には(S56のYES)、FET43が意図しないオン状態であることから、緊急停止システムに故障があるものと判定し(S51)、駆動部稼働許可信号を再びLレベルにし、サービスロボット10の稼働を禁止する状態に保持する(S52)。一方、電流検出回路38によってモータ33に流れる電流が検出されなかった場合には(S56のNO)、遮断器駆動回路42およびFET43に故障なしと判定する(S57)。
なお、緊急停止の際に、MPU16とモータ駆動回路34を切り離し、モータ33に短絡制動をかけた場合、モータ33には電流が流れない。このため、電流検出回路38を用いてFET43がオンであるかオフであるかの判定ができなくなってしまう。このような場合には、緊急停止信号のLレベルへの反転から適当な遅延をもってモータ33に短絡制動をかけ、この遅延時間中に、駆動部稼働許可信号をHレベルにする処理(S53)と、微小動作信号の出力処理(S54)と、電流検出回路38によるモータ33の電流検出の処理(S55)とを行うとよい。なお、電流検出回路38でモータ33に流れる電流を検出する代わりに、先に説明した自己診断の場合と同様に、FET43のモータ駆動回路34側の動力ラインから分岐した分圧抵抗を用い、FET43のHブリッジ回路側の電位を検出することで故障を検出してもよい。さらに、遮断器として開閉診断機能付の遮断器を用いてもよい。
緊急停止部24は、タイマ値T1が待機時間Taに達したならば(S45のYES)、PPビットを「1」に書き換えてUSBポート14aの通信機能をイネーブルにし(S58)、下位ユニット12とのUSB通信の確立後、緊急停止システムの自己診断結果を下位ユニット12より取得する(S59)。
PPビットを「1」にセットしたことで電源出力が再開されると、下位ユニット12では監視IC41の入力電圧が高くなるため、緊急停止信号がHレベルになる。駆動部稼働許可信号はHレベルとなっているから、遮断器駆動回路42から開閉制御信号がLレベルとなってFET43がオンとなる。これにより、モータ33を駆動するための電源供給が行われる。MPU16は、緊急停止信号がHレベルに変化したことにより(S61のYES)、自己診断が完了したことを検知し、上位ユニット11からの速度指令を受けてモータ33を稼働させることができる(S62)。
取得した自己診断結果が故障なし(S60のNO)の場合には、緊急停止部24が制御部23に稼働を許可する。一方、取得した自己診断結果が故障ありの場合には(S60のYES)、緊急停止部24は、例えば緊急停止システムに故障があることをユーザーに通知するなどし、サービスロボット10を稼働させないようにするための故障処理を行う(S63)。なお、USB通信が確立できない、自己診断要求の通知に対する正常な応答が得られない場合においても故障ありと判断すればよい。
ところで、MPU16の電源投入時に、MPU16のプログラムに反して、駆動部稼働許可信号をHレベルにし、かつ、モータ33を誤動作させてしまうような故障モードがあると仮定する。この場合、自己診断実施前に上位ユニット11がUSB通信を確立する際に、USBポート14の電源出力をオンにするため、モータ33が誤動作し危険である。この故障モードへの対策としては、PPビットのデフォルト値を「0」とし、緊急停止部24の起動後、緊急停止部24がPPビットを「1」にセットしたときに、上位ユニット11に接続されたセンサ(例えば加速度センサ)によってサービスロボット10の意図しない動作を検知すれば、PPビットを即座に「0」にリセットすることで電源投入時のサービスロボット10の誤動作の継続を防止できる。しかしながら、これを実現するためには、緊急停止部24が起動するまでPPビットを「0」に維持するように、上位ユニット11のBIOSをプログラムするか、あるいは、下位ユニット12への電源投入前に上位ユニット11を電源投入して起動させる必要があり、さらに、上位ユニット11には、サービスロボット10の意図しない動作を検知するセンサが必要になることから、開発者によっては別の方法を望むことが想定される。
別の方法として、下位ユニット12の起動時にUSBポート14の電源出力がオンであってもFET43をオフに維持するように、駆動電源遮断部32に順序回路を設ける構成を挙げることができる。図4に具体的な駆動電源遮断部32の構成を示す。監視IC41の出力信号は、インバータ46の入力端子とANDゲート47の入力端子とに接続される。インバータ46は、入力信号のレベルを反転して出力し、その信号は、順序回路としてのD型フリップフロップ48のCK入力端子に接続される。
D型フリップフロップ48は、下位ユニット12の起動後は常にQ出力端子からLレベルの信号を出力するが、CK入力端子への入力信号がLレベルからHレベルに切り替わったとき、すなわちUSBポート14の電源出力がオンからオフに変化したときに、Q出力端子からHレベルの信号を出力し、それ以降、nCLR入力端子に接続されている下位ユニット12のシステムリセット信号がアクティブ(Lレベル)にならない限り、Q出力端子はHレベルを維持する。システムリセット信号は、下位ユニット12に設けたリセット信号発生回路(図示省略)から出力され、電源投入時にシステムリセット信号をアクティブにする。D型フリップフロップ48のQ出力端子からの信号は、ANDゲート47のもう一方の入力端子に接続されており、ANDゲート47の出力端子は、遮断器駆動回路42の入力端子に接続されている。なお、符号49a、49bは、FET43のオン・オフ状態を検出するための分圧抵抗であり、FET43のモータ駆動回路34側の動力ラインの電圧を分圧してMPU16の入力ポートに入力する。
駆動電源遮断部32を上記のような回路構成にすることによって、PPビットのデフォルト値が「1」であって、下位ユニット12の起動時にUSBポート14の電源出力がオンになっていても、FET43はオフのままであり、電源投入時におけるMPU16の危険故障によるモータ33の誤動作を防止できる。緊急停止部24が、MPU16とのUSB通信を介して、MPU16が正常であることを確認した後、PPビットを一旦「0」にして、「1」に戻すシーケンスを踏むことで、FET43がオンになり、モータ駆動回路34に電源が供給される。なお、D型フリップフロップ48は、現に広く普及している汎用ロジックICであっても構わない。
以上のように、起動時にUSBポート14の電源出力がオンの状態になっており、上位ユニット11から下位ユニット12に対する緊急停止信号が緊急停止を解除するHレベルであっても、そのD型フリップフロップ48がQ出力端子からLレベルの信号を出力することによって、ANDゲート47から遮断器駆動回路42への信号がLレベルになって、緊急停止信号は、その緊急停止を解除する信号レベルが無効とされる。そして、緊急停止信号の信号レベルを複数回遷移させることによって、すなわちUSBポート14の電源出力をオンからオフに遷移させ、さらにオフからオンへ遷移させることによって、D型フリップフロップ48のQ出力端子がHレベルになり、ANDゲート47から遮断器駆動回路42への信号がHレベルになって、その緊急停止を解除する信号レベルが有効化される。
なお、USBポートの電源出力停止時に駆動部を通常稼働し、電源出力時に駆動部を緊急停止する緊急停止システムとしてもよいが、安全性の観点からは好ましくない。
[第2実施形態]
第2実施形態は、遮断器として機械式リレーを用いたものである。なお、下位ユニットの駆動電源遮断部の構成が異なる他は、第1実施形態と同じであり、同じ構成部材には同一の符号を付して、その詳細な説明を省略する。
図5に示すように、この例における下位ユニット12の駆動電源遮断部50は、遮断器としてのリレー51と、フォトMOSリレー52とを有している。リレー51は、一次側のコイル51aに通電することによって励磁し、その磁力で二次側の接点51bの接触・非接触を切り替える機械式リレーであり、駆動電源部と駆動部31との回路を開閉する。このリレー51としては、コイル51aに通電有りのときにオンとなり、通電無しのときにオフとなるa接点(ノーマルオープン)が用いられている。
コイル51aには、フォトMOSリレー52を介してコネクタ15の電源ピンが接続されている。接点51bは、駆動電源部からモータ駆動回路34を切り離すように接続されている。これにより、通常時は、上位ユニット11からの電源線13aを介した電源供給によりコイル51aが通電されてリレー51がオンとなってモータ33の駆動を許可する。一方、緊急停止信号である電源供給の停止により、リレー51がオフしてモータ駆動回路34への電源供給を遮断し、サービスロボット10が緊急停止する。
リレー51は、オン・オフするための作動電力が電源線13aから供給されるので、電源線13aからの電源供給の有無で緊急停止が直接的に制御される。したがって、駆動電源遮断部50の構成を簡素化することができる。機械式リレーを使用する条件下においては、この簡素化により緊急停止システムの信頼性が向上する。なお、機械式のリレー51に限るものではなく、電源線13aからの電源を利用してスイッチ動作を行う遮断器を用いることができる。
フォトMOSリレー52は、リレー51のオン・オフをMPU16から制御するために設けている。フォトMOSリレー52は、周知のように、一次側のLED52aに通電することにより発生する光を利用して、二次側のMOSFETからなるスイッチ52bのオン・オフを制御するものである。LED52aは、MPU16に接続されて通電が制御され、スイッチ52bは、コネクタ15の電源ピンとコイル51aとの間の回路を開閉するように接続されている。これにより、上位ユニット11の緊急停止部24とMPU16のいずれからでもリレー51をオフにして、緊急停止させることができる。なお、フォトMOSリレー52に代えて、MPU16の制御でオン・オフ可能な他のスイッチ手段を用いてもよい。
なお、この第2実施形態、後述する第3実施形態に示す構成では、第1実施形態と同じ手順で自己診断を行うことができる。
[第3実施形態]
第3実施形態は、上位ユニットと下位ユニットとの間にUSBハブを介在させたものである。なお、以下に説明する他は、第1実施形態と同様であり、同じ構成部材には同一の符号を付して、その詳細な説明を省略する。また、下位ユニットについては、第2実施形態と同じ構成とすることもできる。
図6に示す例は、上位ユニット11と下位ユニット12がUSBハブ55を介して接続されている。USBハブ55は、1つのUSBポートに複数のUSBデバイス機器を接続するためのものであり、1つのアップストリームポート55aと、複数のダウンストリームポート55bとを有している。
上位ユニット11は、USBポート14aに第1USBケーブル56の一端が接続され、この第1USBケーブル56の他端がUSBハブ55のアップストリームポート55aに接続されている。下位ユニット12は、コネクタ15に第2USBケーブル57の一端が接続され、この第2USBケーブル57の他端がUSBハブ55の1つのダウンストリームポート55bに接続されている。
USBハブ55は、アップストリームポート55aからの給電が停止したとき、ダウンストリームポート55bの電源出力が停止する回路構成をもつ。例えば、アップストリームポート55aのみから供給される電源をダウンストリームポート55bに分配して出力するタイプのハブである。
この例によれば、上位ユニット11から第1USBケーブル56の電源線56aを介して電源がアップストリームポート55aに伝達される。そして、その電源がダウンストリームポート55bから第2USBケーブル57の電源線57aを介して下位ユニット12に伝達されるので、上位ユニット11から下位ユニット12の駆動部を緊急停止することができる。
[第4実施形態]
第4実施形態は、第3実施形態と同様に、上位ユニットと下位ユニットとの間にUSBハブを介在させたものであるが、上位ユニットからの特定のリクエストの受信に応答して、任意のダウンストリームポートの電源出力を制御するものである。なお、以下に説明する他は、第3実施形態と同様であり、同じ構成部材には同一の符号を付して、その詳細な説明を省略する。また、下位ユニットについては、第2実施形態と同じ構成とすることもできる。
図7に示すように、USBハブ61は、1つのアップストリームポート62と、複数のダウンストリームポート63a、63b・・・を有している。以下、ダウンストリームポート63a、63b・・・を区別しない場合には、ダウンストリームポート63と称する。上位ユニット11は、第1USBケーブル56を介してアップストリームポート62に接続され、下位ユニット12は、第2USBケーブル57を介して1つの例えばダウンストリームポート63aに接続されている。
USBハブ61は、ハブ制御部64を備えている。ハブ制御部64は、USB通信によってアップストリームポート62を介して入力される特定のリクエストの受信に応答し、半導体パワースイッチ65のオン・オフを制御することで、ダウンストリームポート63からの電源出力をオン・オフする機能を有している。このようなUSBハブ61の機能は、USBの仕様書で規定されており、USBハブ61についてもその仕様に準じたものを用いている。
特定のリクエストとしては、いくつかの機能のうちの「PORT_POWER」を指定したClear Port Featureリクエストがある。このClear Port Featureリクエストでは、ダウンストリームポート63のポート番号の指定により、電源供給を停止するダウンストリームポート63を指定することができる。なお、電源供給を行う場合には、「PORT_POWER」を指定したSet Port Featureリクエストを用いればよい。また、特定のリクエストとしては、ダウンストリームポート63の電源出力をオン・オフできるものであれば、上記のものに限らない。
緊急停止部24は、下位ユニット12の駆動部31を緊急停止させる際には、USBホストコントローラ19を介して、停止すべき下位ユニット12が接続されたダウンストリームポート63aに対し「PORT_POWER」を指定したClear Port FeatureリクエストをUSB通信でUSBハブ61に送信する。Clear Port Featureリクエストは、ハブ制御部64によって受信される。これにより、指定されたダウンストリームポート63aの電源出力が停止する。そして、これにともなってダウンストリームポート63aに接続された第2USBケーブル57の電源線57aを介した電源出力が停止し、下位ユニット12の駆動部31が緊急停止する。自己診断においても、Clear Port FeatureリクエストとSet Port Featureを用いて電源線57aを介した電源出力をオン・オフすればよい。
この構成によれば、USBハブ61に対して特定のリクエストを送信すればよいので、USBポートの電源出力のオン・オフ機能が無いハードウェアをもつ汎用PCなどを上位ユニット11とすることができる。なお、汎用PCには、USBポートの個数を増やすため、マザーボード上に、上記のようなUSBハブの機能を有するICを搭載しているものがある。このような汎用PCから成る上位ユニットを用いる場合についても、第4実施形態と同様の方法で緊急停止が可能であり、本発明の範囲内である。
[第5実施形態]
第5実施形態は、特定の接続線として信号線を用い、USB通信を休止状態にして、信号線に一定の電圧レベルの信号を一定時間以上出力することをもって緊急停止信号とするものである。なお、以下に説明する他は、第1実施形態と同様であり、同じ構成部材には同一の符号を付して、その詳細な説明を省略する。また、下位ユニットについては、第2実施形態と同じ構成とすることもできる。
以下の説明では、まず上位ユニットと下位ユニットとがUSB規格におけるFull−Speedモードで接続されている場合について説明する。この場合、信号線上のD+およびD−信号のHレベルは、約3.3Vであり、Lレベルは0Vである。また、ホスト(上位ユニット)側からUSB通信を休止状態とした場合には、プルアップ抵抗によってD+信号はHレベルになる。
図8に示すように、下位ユニット12の駆動電源遮断部70は、バッファIC71、パルス検出回路72、監視IC41、遮断器駆動回路42、及びFET43を有している。信号線13cは、コネクタ15を介してUSBインタフェース27に接続されるとともに、コネクタ15、バッファIC71を介してパルス検出回路72に接続されている。これにより、信号線13cのD+信号がパルス検出回路72に入力される。なお、コンデンサ74は、差動信号(D+信号とD−信号)の平衡を保つために接続したものであるが、バッファIC71の接続の影響がD+信号の信号品質を劣化させない場合は不要である。
パルス検出回路72は、コンデンサ72aと抵抗72bとが直列に接続されたCR回路と、D+信号がバッファIC71を介してゲート端子に入力されたFET72cとを有している。コンデンサ72aと抵抗72bとのCR回路は、その両端に所定の電源電圧V1、この例では3.3Vが印加されている。FET72cは、ソース端子、ドレイン端子がコンデンサ72aの両端に各々接続されている。FET72cは、P型のものであり、D+信号がHレベルのときにオフとなってコンデンサ72aが充電され、D+信号がLレベルのときにオンとなってコンデンサ72aの端子間をショートしてコンデンサ72aを放電する。
パルス検出回路72のコンデンサ72aと抵抗72bとの接続点の電圧を監視IC41が検出する。D+信号の信号レベル、すなわち、バッファIC71の出力電圧レベルが、Hレベルを時間Ts以上継続することにより、監視IC41の監視電圧閾値よりもパルス検出回路72の出力電圧が低くなるように、コンデンサ72aと抵抗72bの定数により調整されている。時間Tsは、後述する時間Tpよりも十分に長い時間に設定されている。時間Tpは1m秒であり、時間Tsは、1m秒より十分長い例えば10m秒に設定される。なお、パルス検出回路72は、コンデンサ72a、抵抗72bを用いたアナログ回路であるが、同様な機能をディジタル回路で実現してもよい。
監視IC41は、パルス検出回路72からの出力電圧が監視電圧閾値以上であるときに、遮断器駆動回路42への緊急停止信号をHレベルとし、監視電圧閾値未満となったときに緊急停止信号をLレベルとする。遮断器駆動回路42、FET43については第1実施形態と同様である。監視電圧閾値は、電源電圧V1よりも十分低い電圧である。
緊急停止部24は、下位ユニット12の駆動部を緊急停止させるときには、USBの信号線13c,13dをアイドル状態に時間Ts以上保持する。これにより、信号線13cに出力するD+信号が時間Ts以上Hレベルになる。USBホストコントローラ19が文献1の仕様書に基づくものであれば、PORTSCレジスタの「Port Enable/Disableビット」を「0」に設定、または「Suspendビット」を「1」に設定して、USBポート14aをディスエーブルまたはサスペンド状態とすることにより、D+信号を継続的にHレベルにすることができる。したがって、緊急停止部24は、上記いずれかのレジスタビットを書き換え、時間Ts以上の間、USBポート14aを「Disable」または「Suspend」状態にセットすればよい。
USBでは、USBポート14aがイネーブル状態(USB通信が確立している状態)のとき、ホスト側(上位ユニット11側)から周期的に信号線13c,13dにパルス(SOFパケット)を送信している。すなわち、ホスト側から送信するデータがない場合においても、図9に示すように、信号線13cのD+信号は、Hレベルから時間Tp毎にLレベル(グランドレベル)に変化し、再びHレベルに戻る。時間Tpは、1m秒である。データをUSB通信で送受信している時は、D+信号はデータに応じてHレベルとLレベルの遷移を繰り返す。
上記のようにデータの送受信の有無にかかわらず、USBポート14aがイネーブル状態であるときには、長くとも時間Tp以内に、下位ユニット12に入力されるD+信号がHレベルからLレベルに変化する。D+信号がLレベルとなると、FET72cがオンとなる。このため短絡されたコンデンサ72aが放電する。FET72cがオンとなっている間では、電源電圧V1がパルス検出回路72からの出力電圧となる。
D+信号がLレベルからHレベルに転じると、FET72cがオフとなる。このFET72cのオフにより、コンデンサ72aが徐々に充電されて充電電圧が上昇する。これにともない、パルス検出回路72からの出力電圧が徐々に降下する。D+信号は、Hレベルに転じた時点から長くとも時間Tp(<Ts)が経過した時点でLレベルに転じて、再びFET72cがオンとなる。したがって、監視電圧閾値よりも低くなる前にパルス検出回路72の出力電圧が電源電圧V1となる。このように、USBポートがイネーブル状態であれば、パルス検出回路72の出力電圧は、監視電圧閾値よりも低くなることがない。したがって、監視IC41からの緊急停止信号はHレベルを維持し、モータ駆動回路34への電源供給が遮断されない。
一方、下位ユニット12の駆動部31を緊急停止させる場合には、緊急停止部24は、例えばPORTSCレジスタの「Suspendビット」を「1」に設定し、これを時間Ts以上維持する。この設定により、D+信号がHレベルに維持される。この場合、FET72cのオフが継続するため、時間Tsが経過した時点でパルス検出回路72の出力電圧が監視電圧閾値を下回る。これにより、監視IC41からの緊急停止信号がLレベルに転じ、FET43がオフとなるため駆動電力の供給が遮断されて、下位ユニット12の駆動部31が緊急停止する。
上記では、Full−Speedモードで接続されている場合について説明したが、High−Speedモードで接続されている場合にも同様に利用できる。High−Speedモードでは、D+信号の信号振幅電圧は約400mVであり、USB2.0の規格上の最大信号電圧値は440mVである。バッファIC71として、電源入力が3.3Vの標準CMOSロジックICを用いた場合、バッファIC71がLレベルとして認識する入力電圧の上限値は、D+信号の最大信号電圧値の440mVよりも高い。したがって、High−Speedモード時は、USBポート14aがイネーブル状態であれば、D+信号は常にバッファIC71ではLレベルと認識される。したがって、この場合では、FET72cが継続的にオンとなるので、パルス検出回路72の出力電圧は監視電圧閾値よりも高い電源電圧V1であり、緊急停止信号はHレベルを維持しFET43がオンを維持する。したがって、High−Speedモードの高速伝送によって、バッファIC71とFET72cの高周波スイッチングによる電流消費が生じることもない。
一方、PORTSCレジスタの「Port Enable/Disableビット」を「0」に設定、または「Suspendビット」を「1」に設定して、USBの信号線13c,13dをアイドル状態とすれば、信号線13cがプルアップされるため、D+信号の信号レベルが3.3Vとなる。したがって、バッファIC71はD+信号をHレベルと認識する。以降は、Full−Speedモードと同じ手順により、FET43がオフとされて駆動部31への電源供給が遮断される。
第5実施形態では、High−Speedモードとの互換性を考慮し、D+の信号線13cを用いて、緊急停止信号を検出している。USBインタフェース27がFull−Speedモード専用のデバイスであれば、フェイルセーフの観点から、D−の信号線13dを用いて、緊急停止信号を検出してもよい。その場合、バッファIC71は、入力信号を反転して出力するインバータICに置き換えられる。
下位ユニット12を構成する回路は、それらの一部を一つのICにまとめてもよい。例えば、バッファIC71、パルス検出回路72とUSBインタフェース27を一つのICとしてもよい。
上記各実施形態では、サービスロボットについて説明したが、本発明はこれに限られない。例えば、機器は産業ロボットなどでもよく、ロボット以外ものであってもよい。