以下に、この発明の好適な実施の一形態を添付図面に基づいて詳細に説明する。尚、本発明の及ぶ範囲は、以下の実施形態の記載に限定されないことは言うまでもなく、本発明の及ぶ範囲は特許請求の範囲の記載によって特定されることは言うまでもない。
センサ装置の信号処理部の外観斜視図が図1に示されている。同図に示されるように、信号処理部1は外殻ケース10を有する1つの部として構成される。外殻ケース10の正面10aは上下に略2分割されており、上部領域には表示部11が設けられている。この例にあっては、表示部11は、セグメント表示器11aと液晶式キャラクタ表示器11bとから構成されている。
外殻ケース10の正面10aの下部領域は、操作部配置領域とされている。この操作部配置領域には、下端縁を支点として手前に開く操作部蓋12が設けられている。操作部蓋12を開けると、その内部には、数値キー、ファンクションキー、スライドスイッチ等といった各種の操作子が配置されている。
外殻ケース10の左右の側面(図では右側面10dのみを示す)には、部間コネクタが設けられている。これら左右の部間コネクタのそれぞれには部間コネクタ蓋(図では、右側の蓋15のみを示す)が設けられている。図では、部間コネクタ蓋(右)15は、閉じられた状態にあり、これがスライド式に開かれると、内部には第1のポートと第2のポートとが存在する。後述するように、これら第1及び第2のポートは、中継コネクタ片7の第1ポート7aと第2ポート7bとに対応する。
外殻ケース10の下面10cには、USBコネクタ13とRS−232Cコネクタ14とが設けられている。これらのコネクタ13,14は信号処理部1とパソコン(PC)等との通信を行うために使用される。外殻ケース10の下面10cからは外部接続コード3が引き出されている。この外部接続コード3内には電源線、外部入力線、外部出力線などが含まれている。これらの外部入出力線は例えばプログラマブル・信号処理部(PLC)等に接続される。後述するように、外殻ケース10はDINレール5に装着可能とされ、DINレールクランパ16はその際に使用される。
センサ装置の信号処理部連装状態の外観斜視図が図2に示されている。同図に示されるように、この例にあっては、3台の信号処理部1a,1b,1cが、横一列に整列された状態で、DINレール5を介して、制御盤内の取付板等に装着されている。この装着状態における各外殻ケースの上面10bには、センサヘッドコネクタ16がそれぞれ設けられている。このセンサヘッドコネクタ16には、後述するように、センサヘッド部2から引き出されたケーブル4の先端に取り付けられたセンサヘッドコネクタ4aが装着される。
センシング中のセンサヘッド部の外観斜視図が図3に示されている。同図に示されるように、センサヘッド部2の外殻ケース20からはセンサ用ケーブル4が引き出され、その先端にはセンサヘッドコネクタ4aが取り付けられている。このセンサヘッドコネクタ4aが、信号処理部1の外殻ケース10のセンサヘッドコネクタ16に結合される。
センサヘッド部2の外殻ケース20内には、投光用の半導体レーザダイオード(LD)と受光用の2次元撮像素子(例えば、CCDイメージセンサ、CMOSイメージセンサ等)が設けられている。センサヘッド部2は、半導体レーザダイオード(LD)から発せられたレーザ光をスリット光の状態にして対象物体6に照射する。図において、L1はスリット光の照射光である。対象物体6上の照射光像IMはセンサヘッド部2内に設けられたレンズにより2次元撮像素子の受光面上に結像される。図中、L2はスリット光の反射光である。ここで、投光光軸と受光光軸とは所定の角度をなしている。スリット光の進行方向と垂直な面についてのスリット光の断面の長手方向は、投光光軸と受光光軸とがなす面に対して垂直となっている。センサヘッド部2から対象物体6までの距離が変化すると、2次元撮像素子の受光面上のスリット光の像は、スリット光の長手方向と直交な方向に移動する。2次元撮像素子の水平走査方向は、スリット光の像の移動方向に合わせられている。2次元撮像素子の水平走査線上の光強度のピーク位置が対象物体までの距離を表している。スリット光を用いているので、スリット光の長手方向についての距離の分布を一挙に測定することができる。
信号処理部の回路内部構成を示すブロック図が図4に示されている。同図に示されるように、信号処理回路100は、センサヘッドコネクタ16と、部間コネクタ(右)18aと、部間コネクタ(左)18bと、外部I/Fコネクタ19とからなる4系統のコネクタを有している。センサヘッドコネクタ16には、先に図3を参照して説明したように、センサヘッド部2から引き出されたセンサ用ケーブル4の先端に取り付けられたセンサヘッドコネクタ4aが接続される。部間コネクタ(右)18a及び部間コネクタ(左)18bには、それぞれ右隣または左隣にそれぞれ隣接する他の部が、図1に示される中継コネクタ片7を介して接続される。外部I/Fコネクタ19は、図1に示されるUSBコネクタ13、RS−232Cコネクタ14、及び外部接続コード3を総称するものであり、この外部I/Fコネクタ19を介してパソコン(PC)やプログラマブル・信号処理部(PLC)等への接続が行われる。
信号処理回路100の内部には、センサヘッドI/F回路110と、制御部120と、入出力I/F回路ブロック150と、FPGA発振器160と、FPGA−RAM170とが含まれている。
制御部120と部間コネクタ(右)18aとの間、制御部120と部間コネクタ(左)18bとの間には、FPGA130と部間コネクタ(右)18aとの間の伝送経路、及びFPGA130と部間コネクタ(左)18bとの間のデータ伝送経路を含む、第1のデータ伝送経路P1が設けられている。また、センサヘッドコネクタ16とセンサヘッドI/F回路110との間にはデータ伝送経路が設けられると共に、制御部120とセンサヘッドコネクタ16との間には、センサヘッドI/F回路110とFPGA130との間には第2のデータ伝送経路P2が設けられている。
制御部120は、プログラム可能な論理回路であるFPGA130と信号処理回路の動作を制御するCPUブロック140とを有する。CPUブロック140には、マイクロプロセッサやその周辺回路が含まれている。FPGA130は、回路データをダウンロード(コンフィグレーション)することによって回路構成をプログラムすることが可能なLSIである。
FPGA130は、論理ブロック、スイッチマトリクス、クロスポイントスイッチの組み合わせによって、任意の論理回路を擬似的に実現する。論理ブロックは、メモリとマルチプレクサとを組み合わせたLUT(Look Up Table)によって、様々な論理を実現する。スイッチマトリクスとクロスポイントスイッチは、それぞれの論理ブロック間の接続を行うが、この接続自体もメモリによって制御される。また、FPGA130は、外部とデータのやり取りをするためにI/Oブロックを用いる。
FPGAには、アンチフューズタイプ、EEPROMタイプ、フラッシュROMタイプ、SRAMタイプ等がある。アンチフューズタイプは、中の回路の接続点がフューズで出来ていて、不要な部分を焼き切って回路を構成し、他は半導体スイッチのオン/オフデータをメモリのデータによって決めるタイプである。
本実施形態のFPGA130はSRAMタイプであり、電源を入れる度にFPGAチップへ回路データをダウンロードする必要がある。SRAMタイプに代えてEEPROMタイプやフラッシュROMタイプのFPGAを用いれば、回路データの消去や別の回路データのダウンロードをするまでは、電源を切ってもプログラムした回路構成を維持できる。
FPGA−RAM170は、『プログラム可能な論理回路に接続された記憶手段』に相当する。本実施形態では、FPGA130の中の演算処理回路のワーキングメモリとしての高速性を重視してSRAMが用いられている。この記憶手段としては、高速性よりも大容量であることが重視される場合には、フラッシュメモリのような書き換え可能な半導体メモリやハードディスク装置等を用いることもできる。
この例では、部間コネクタ(18a,18b)及び第1データ伝送経路(P1)は左右両側に設けられているが、何れか一方だけでも差し支えない。特に、データの伝送方向を固定した設計においては、機能的にデータ伝送の最上流や最下流に設置されることが予定される機種の場合には、接続が必要な側にだけ部間コネクタ及び第1データ伝送経路を設けることが考えられる。
以下、センサヘッド回路200及び信号処理回路100の内部詳細説明を行うが、それらの説明は次の事項を前提としている。図示された信号またはデータの伝送経路は、1本の線で表されていても複数の線を意味する場合もある。『制御信号』の用語は、回路の動作を制御するために用いられる信号という広い意味であり、イネーブル信号、リード/ライト信号、アドレス信号、割込信号、切替信号、タイミング指示信号等を含む。
センサヘッド回路の詳細を示すブロック図が図5に示されている。このセンサヘッド回路200は、図3に示されるセンサヘッド部2内の電気回路である。同図に示されるように、センサヘッド回路200は、シリアル/パラレル変換回路210と、半導体レーザダイオード(LD)220と、発光ダイオード(LED)230と、2次元撮像素子240と、撮像素子駆動回路250と、センサヘッド発振器260と、パラレル/シリアル変換回路270と、センサヘッドROM280とを含んでいる。また、このセンサヘッド回路200は、センサ用ケーブル4を介して信号処理部1から供給される電源(+12V,0V)を受けて動作する。
シリアル/パラレル変換回路210は、信号処理部1から送られてくる設定信号及び投光制御信号をシリアル/パラレル変換することによって、LD_ON(レーザ制御信号)、LED(センサLED制御信号)、DATA_OUT(センサ設定信号)を生成出力する。
LD_ON(レーザ制御信号)を受けて、センシング用の投光に用いる光源であるLD220が駆動される。LED(センサLED制御信号)を受けて、センサヘッド2に設けられた図示しない表示器であるLED230が駆動される。DATA_OUT(センサ設定信号)は撮像素子駆動回路250に送られる。
センサ設定信号は、CMOS2次元撮像素子の読み出す画素の領域の指定、シャッタスピード(電荷蓄積時間)の指定、一定周期で連続的に撮像するか信号処理部1からのトリガを受けて撮像するかの撮像モード指定などを行うための信号である。
2次元撮像素子240はこの例ではCMOS型が使用されている。尚、2次元撮像素子240としてはCCD型を用いることもできる。先に図3を参照して説明したように、LD220からの光はスリット光に変換された後、対象物体6に照射される。対象物体6上の照射光像IMはセンサヘッド内に設けられたレンズ(図示せず)により2次元撮像素子240上に結像される。投光光軸と受光光軸とは所定の角度をなしている。
スリット光の進行方向と垂直な面についてのスリット光の断面の長手方向は、投光光軸と受光光軸とがなす面に対して垂直となっている。センサヘッド部から対象物体までの距離が変化すると、2次元撮像素子240上のスリット光の像は、スリット光の長手方向と垂直な方向に移動する。2次元撮像素子240の水平走査方向は、スリット光の像の移動方向に合わせられている。2次元撮像素子240の水平走査線上の光強度のピーク位置が対象物体までの距離を表している。スリット光を用いているので、スリット光の長手方向についての距離の分布を一挙に測定することができる。
2次元撮像素子240における撮像動作は、撮像素子駆動回路250から供給される制御信号に基づいて行われ、撮像の結果得られた出力は撮像素子駆動回路250へと送られる。
撮像素子駆動回路250では、2次元撮像素子240から得られた出力に基づいて、DATA_IN(デジタル映像信号)、HD(水平同期信号)及びVD(垂直同期信号)を生成する。これら3つの信号は、パラレル/シリアル変換回路270を介してパラレル/シリアル変換された後、映像信号として信号処理部1へと送られる。
以上述べた、シリアル/パラレル変換回路210、2次元撮像素子240、撮像素子駆動回路250、パラレル/シリアル変換回路270の動作は、センサヘッド発振器260から与えられるクロックに同期して行われる。また、センサヘッドROM280には、センサヘッドの型式データが記憶されている。
次に、信号処理回路100側の詳細について説明する。センサヘッドI/F回路の詳細を示すブロック図が図6に示されている。同図に示されるように、センサヘッドI/F回路110は、シリアル/パラレル変換回路111と、パラレル/シリアル変換回路112と、センサヘッドI/F発振器113とを含んでいる。
シリアル/パラレル変換回路111は、センサ用ケーブル4を介してセンサヘッド部2から送られてくる映像信号を、シリアル/パラレル変換することによって、DATA_IN(センシングデータ)、HD(水平同期信号)、VD(垂直同期信号)を生成出力する。
パラレル/シリアル変換回路112は、制御部120から送られてくるDATA_OUT(センサ設定信号)、LED(センサLED制御信号)、LD_ON(レーザ制御信号)を、パラレル/シリアル変換することによって、設定信号、投光制御信号を生成する。こうして生成された設定信号、投光制御信号は、センサ用ケーブル4を介してセンサヘッド部2へと送られる。
尚、電源(+12V,0V)は、このセンサヘッドI/F回路110を経由してセンサヘッド回路200へと送られる。センサヘッド回路200のセンサヘッドROM280から読み出された型式データは、センサヘッドI/F回路110を経由して、制御部120へと送られる。
FPGA及びCPUと部間(ユニット間)コネクタとの接続関係を示す信号系統図が図7に示されている。部間データの伝送経路は、8本のパラレルデータ線である。これにより高速なデータ伝送が実現される。
部間制御信号には、通信先(例えばデータの出力を要求する相手)の部を特定するための部番号を表す信号が含まれる。部間データの伝送経路と部間制御信号の伝送経路とを複数組設けることにより、データ伝送をさらに高速化したり、異なるデータを並行して伝送することを可能にしてもよい。
本実施形態では、部間データの伝送は双方向であるが、例えば右側を入力専用、左側を出力専用(又はその反対)というように、伝送方向を固定してもよい。そのように伝送方向が決まっていると、信号処理部を複数接続した場合の伝送設定が容易になる。信号処理部内の回路の簡素化も図ることができる。
CPU間通信はシリアル通信である。部間データの伝送に比べて通信速度が遅いので、画像データを演算処理して得られた演算結果の値のようにデータ量の少ないセンシングデータの送信や、信号処理部番号設定のような初期設定や、動作中の種々の設定変更のための通信に適している。通信速度が遅い代わりに、ソフトウェアによって自由に通信内容を決めることができるので、通信内容の柔軟性に富んでいる。このような通信を、部間データの高速伝送を妨げることなく行うことができる。尚、CPU間通信の伝送経路は、FPGA130の中を経由するようにしてもよい。
FPGA内部回路の詳細を示すブロック図が図8に示されている。同図に示されるように、FPGA130には、タイミング変換回路131と、データ経路切替回路132と、演算処理回路133と、レジスタ134と、クロック切替回路135と、タイミング生成回路136と、バッファ137とが含まれている。
レジスタ134は、FPGA130内の回路やFPGA130の入出力線とCPUバスとの間のデータ伝送に用いられるメモリである。
クロック切替回路135は、FPGA発振器160が出力するクロック信号か、他の信号処理部から入力される部間クロック信号かの何れかをCPUブロック140からのクロック切替信号による指示に従い選択してFPGA130内部に内部クロック信号として供給する。
タイミング生成回路136は、内部クロックとHD(水平同期信号)とVD(垂直同期信号)とに基づいて最適な制御信号を生成する。生成された制御信号は、タイミング変換回路131、データ経路切替回路132、演算処理回路133のそれぞれに対して与えられる(入力される)。それにより、これらの回路が協調したタイミングで動作できるように、それぞれの回路の動作を調整する。
演算処理回路133は、センシング目的に応じてその内容が設計される。センシングデータが画像データである場合は、ノイズ除去、エッジ強調、階調変換、二値化、平均値演算、ピーク位置抽出、面積抽出、重心位置抽出などを行う演算回路ブロックを組み合わせて構成される。演算対象とするセンシングデータは画像データには限らず、時系列的に取得される多値データであってもよい。例えば、PSD(Position Sensitive Device)を用いた変位センサの出力は、時系列的に変化するアナログ信号として得られるが、これを一定周期でデジタル変換した(サンプリングした)データを対象として、ノイズ除去、特徴量抽出などを行う演算回路ブロックを組み合わせた演算処理回路を構成してもよい。
この場合にも、FPGA130は演算内容に応じて配線されたハードウェアにより演算処理を行うため、CPUとプログラムにより演算を行う場合に比べて高速な演算が可能であるから、サンプリング周期を小さくすることが可能となり、これによって短い時間のうちに生起する現象をセンシングの対象とすることができる。
演算処理回路における演算は、FPGA130に接続されたFPGA−RAM170をワーキングメモリとして利用しながら行うようにしてもよい。演算処理回路133における演算は、例えば1フレームの画像のような或るまとまった量のデータを単位として行うようにしてもよいし、走査線数本分のラインバッファを利用するなどして、連続的に取得されるデータに対して順次処理を行い、その結果を連続的に出力するパイプライン方式の演算とすることもできる。
以下、本発明の要部となるタイミング変換回路の詳細を図9〜図12を参照しつつ説明する。
FPGA内部回路に含まれるタイミング変換回路の詳細が図9のブロック図に示されている。同図に示されるように、タイミング変換回路131は、書込制御回路1311と、デュアルポートラインメモリ1312と、読出制御回路1313とを含んでいる。このタイミング変換回路131の機能は、センサヘッド部2側のクロックの速度と信号処理部1側のクロックの速度との相違を許容しつつ、信号処理部1に対して最適なタイミングでデータの読み出しを可能とするものである。すなわち、このタイミング変換回路131にあっては、デュアルポートラインメモリ1312への書き込みはセンサヘッドI/F回路110と共通のクロック信号(CLK_IN)により制御され、デュアルポートラインメモリ1312からの読み出しはFPGA130の内部クロック信号により制御される。
デュアルポートラインメモリに入力される信号内容が図10のタイミングチャートにより示されている。
図10(a)に示されるように、センサヘッド発振器260(図5参照)は、周波数14MHzのクロックCLKを生成し、図5に示される2次元撮像素子240,撮像素子駆動回路250,パラレル/シリアル変換回路270,シリアル/パラレル変換回路210、及びデュアルポート1311に与える。
撮像素子駆動回路250は、14MHzのクロックCLKが与えられることにより、VD(垂直同期信号)、HD(水平同期信号)及びDATA_IN(デジタル映像信号)を生成する。これら3つの信号は、パラレル/シリアル変換回路270を介してパラレル/シリアル変換された後、映像信号として信号処理部1へと送られる(センシングデータ)。この例では、図10(b)に示されるようにVD(垂直同期信号)の周期は540μsであり、図10(c)に示されるようにHD(水平同期信号)の周期は60μsとされている。したがって、この例では、図10(d)に示されるように540μs毎に一画面分の映像データが取得される。
書込制御回路と読み出し制御回路の動作内容(その1)が図11のタイミングチャートにより示されている。尚、同図に示されるのは、センサヘッド部の内部クロックの周波数よりも、信号処理部の内部クロックの周波数の方が速い場合の例である。
同図において、(a)は図10にも示したVD(垂直同期信号)を、(e)はデュアルポートラインメモリのアドレス(映像信号の書込先)信号を、(f)は映像信号の書込タイミングを、(g)はデュアルポートラインメモリに書き込まれた映像信号をそれぞれ示している。すなわち、この例では、垂直同期信号の一周期毎に1画像分の有効映像データがデュアルポートラインメモリに書き込まれる。垂直同期信号の一周期毎に限らず、デュアルポートラインメモリの格納容量が許容できる範囲内で任意に定めた所定のデータ量毎や周期毎にセンサヘッド部から得られた映像信号をデュアルポートラインメモリに格納し、読み出すようにしても良い。
一方、図11において、(h)はデュアルポートラインメモリのアドレス(読み込み先)信号を、(i)は映像信号の読み出しタイミングを、(j)は読み出された映像信号をそれぞれ示している。
以上、図11に明らかなように、センサヘッド部の内部クロックの周波数よりも、信号処理部の内部クロックの周波数の方が高い場合には、一画像分の有効映像データがデュアルポートラインメモリに格納された後、映像信号の格納周期と同様の周期で順次格納された有効映像データが読み出される。
書込制御回路と読み出し制御回路の動作内容(その2)が図12のタイミングチャートにより示されている。尚、同図に示されるのは、センサヘッド部の内部クロックの周波数よりも、信号処理部の内部クロックの周波数の方が低い場合の例である。
同図において、(b)は図10にも示したVD(垂直同期信号)を、(e)はデュアルポートラインメモリのアドレス(映像信号の書込先)信号を、(f)は映像信号の書込タイミングを、(g)はデュアルポートラインメモリに書き込まれた映像信号をそれぞれ示している。すなわち、この例では、垂直同期信号の一周期毎に1画像分の映像データがデュアルポートラインメモリに書き込まれる。垂直同期信号の一周期毎に限らず、デュアルポートラインメモリの格納容量が許容できる範囲内で任意に定めた所定のデータ量毎や周期毎にセンサヘッド部から得られた映像信号をデュアルポートラインメモリに格納し、読み出すようにしても良い。
一方、図11において、(h)はデュアルポートラインのアドレス(読み込み先)信号を、(i)は映像信号の読み出しタイミングを、(j)は読み出された映像信号をそれぞれ示している。
以上、図12に明らかなように、センサヘッド部の内部クロックの周波数よりも、信号処理部の内部クロックの周波数の方が低い場合には、同図BLKで示される映像信号書込におけるブランキング期間をも利用して映像信号が読み出される。すなわち、この場合にも一画像分の映像信号がデュアルポートラインメモリに格納された後、有効映像データが格納される周期と同様の周期で順次格納された有効映像データが読み出される。尚、この例では、デュアルポートラインメモリに書き込まれた有効映像データの全てが映像信号の格納周期内で読み出されているが、ブランキング期間を利用するだけでは全てのデータを読み出せないような場合には、有効映像データ信号は適当な周期乃至タイミングで映像信号を選択的に(間引きして)読み出すことで対処することができる。例えば格納された有効映像データが読み出されるまでの時間の遅れが、映像信号の格納周期以上となる度に有効映像データを1つ間引くようにするなど、クロック周波数の違いにより読み出しきれない量の映像データを間引くのである。
次に、図8に示されるデータ経路切替回路の詳細が図13に示されている。同図に示されるように、データ経路切替回路132は、制御線切替回路(A)1321と、制御線切替回路(B)1322と、制御線切替回路(C)1323と、データ線切替回路(A)1324と、データ線切替回路(B)1325と、データ線切替回路(C)1326とを含んでいる。
各データ線切替回路1324〜1326及び各制御線切替回路1321〜1323は、CPUブロック140からのデータ経路切替信号により、その入力と出力との接続関係が決定される。
例えば、データ線切替回路(A)1324は、部間データ(右)の線(この実施形態では8本のパラレルデータ線)を、データ線切替回路(B)1325及び(C)1326に接続する線(データ線切替回路(A)下方最右端の線、実際にはこれも8本のパラレルデータ線)に接続することができ、また、どこにも接続しないこともできる。さらに、データ線切替回路(A)1324の下方から入力する3本の線(実際にはそれぞれ8本のパラレルデータ線)の何れかを部間データ線(右)の線に接続することができる。
データ線切替回路(A)、(B)、(C)1324〜1326を適切に制御することにより、タイミング変換回路131から、すなわちセンサヘッド2から入力したデータを部間データ(右)、部間データ(左)、演算処理回路133のうちの1つ、2つ、又は3つ全てに出力することができる。また、どこにも出力しないこともできる。
部間データ(右)から入力したデータは、部間データ(左)及び演算処理回路133の両方または一方に出力することができるし、何れにも出力しないこともできる。部間データ(左)から入力したデータは、部間データ(右)及び演算処理回路133の両方または一方に出力することができる。何れにも出力しないこともできる。演算処理回路133から入力したデータは、部間データ(右)及び部間データ(左)の両方または一方に出力することができる。何れにも出力しないこともできる。
制御線切替回路(A)、(B)、(C)1321〜1323についても同様であるが、制御線切替回路1321〜1323についてはタイミング変換回路131から、すなわちセンサヘッド2からデータを入力する経路が存在しない。
CPUブロックの詳細を示すブロック図が図14に示されている。同図に示されるように、CPUブロック140は、マイクロプロセッサを主体として構成されるCPU141と、シリアル通信I/F回路142と、CPU−ROM143と、CPU−RAM144とが含まれている。
CPU−ROM143には、CPUに信号処理部の動作を制御させるためのプログラム及び電源投入直後にFPGA130にロードするための回路データが格納されている。
CPU141、シリアル通信I/F回路142、CPU−ROM143、CPU−RAM144は、CPUバスを介して結ばれている。CPUバスはFPGAと入出力I/F回路ブロックとの双方に接続されている。シリアル通信I/F回路142は、右側に隣接する信号処理部のCPUブロックと左側に隣接する信号処理部のCPUブロックとにそれぞれ部間コネクタを介して接続される。
入出力I/F回路ブロックの詳細を示すブロック図が図15に示されている。同図に示されるように、入出力I/F回路ブロック150は、操作部入力回路151と、表示部出力回路152と、D/A変換器153と、パラレルI/F回路154と、RS−232Cインタフェース回路155と、USBインタフェース回路156とを含んでいる。
操作部入力回路151は操作部17を構成する数値キー、ファンクションキー、スライドスイッチからの出力を入力するためのインタフェースとして機能する。表示部出力回路152は、表示部11に対する表示データ出力のためのインタフェースとして機能する。D/A変換器153は、外部接続コード3に含まれる出力線上にアナログ信号を出力するためのインタフェースとして機能する。パラレルインタフェース回路154は、外部接続コード3に含まれる信号線との間でパラレルデータのやり取りを行うためのインタフェースとして機能する。RS−232Cインタフェース回路155は、RS−232Cコネクタ14との間でデータをやり取りするためのインタフェースとして機能する。USBインタフェース回路156は、USBコネクタ13との間でデータのやり取りを行うためのインタフェースとして機能する。
これらの操作部入力回路151、表示部出力回路152、D/A変換器153、パラレルインタフェース回路154、RS−232Cインタフェース回路155及びUSBインタフェース回路156は、CPUブロック140に繋がるCPUバスへと接続されている。尚、入出力インタフェース回路ブロック150には、メモリカードを接続するためのインタフェースを設けることもできる。
CPU141のゼネラルフローチャート(単体動作時)が図16に示されている。同図に示されるように、このゼネラルフローチャートに示される処理の全体は、ルーチン処理と割込処理とから構成される。ルーチン処理としては、FPGA130に回路データをロードする処理(ステップ1401)、操作入力処理(ステップ1402)、外部入力処理(ステップ1403)、外部出力処理(ステップ1404)及び表示処理(ステップ1405)を含んでいる。また、割込処理としては、センシング処理(ステップ1411)を含んでいる。
ルーチン処理は、電源投入よりスタートする。処理が開始されると、まずFPGA130に回路データをロードした後(ステップ1401)、操作入力処理(ステップ1402)、外部入力処理(ステップ1403)、外部出力処理(ステップ1404)、表示処理(ステップ1405)を繰り返し実行しながら、無限ループ状態となる。
電源投入により処理がスタートすると、FPGA130に回路データをロードした後は(ステップ1401)、CPUは電源オフまで無限ループを繰り返す(ステップ1402〜1405)。FPGA130からの割込や外部入力からの割込があると、CPUはFPGA130からセンシングデータについての演算処理結果を取得して所定のセンシング処理を実行する(ステップ1411)。
FPGA130への回路データのロードは、CPU−ROM143に圧縮格納されている回路データをCPU−RAM144に解凍展開し、CPU−RAM144からFPGA130に回路データを転送することにより行われる。
この他、RS−232CやUSB等のインタフェースを経由して外部から回路データを入力して、或いは他の信号処理部との間の通信により他の信号処理部から入力して、CPU−RAM144に格納し、これをFPGA130に転送することにより、電源投入時に限らず、動作中においても回路データの変更を可能とすることができる。
FPGA130に設定されるパラメータの変更は、RS−232CやUSB等のインタフェースを経由して外部からの指示により行うことができる。操作部17からのキー入力によって行うこともできる。他の信号処理部との間の通信により他の信号処理部からの指示により行うこともできる。
外部からの回路データや設定パラメータの入力とFPGA130への反映は、検出対象物6の状況や検出環境が変化したことに応じて行うことができる。
FPGA130の回路データや設定パラメータを複数用意しておき、状況に応じてFPGA130にロードする回路データや設定パラメータを選択するようにしてもよい。このような選択も、検出対象物6の状況や検出環境が変化したことに応じて行うことができる。このような変化は、外部から知らされる場合の他、センシングデータに基づいて信号処理部が自ら判断するようにすることもできる。
回路データや設定パラメータの選択を行う他の例として、センサヘッド2からセンサヘッド2の機種を特定する型式データを取得し、取得した型式データに応じて、回路データを変更することができる。このようにすれば、型式データの異なる機種を複数用意し(この場合センサヘッドのその他の構成は同じであっても構わない)、型式データに応じて計測精度が特に高くなるような演算処理回路の構成にしたり、計測所要時間が特に短くなるような演算処理回路の構成にしたり、処理の内容(例えば透明板である対象物のおもて面のみを対象とした距離計測をするか、おもて面と裏面の両方の距離計測をするか)が異なる演算処理回路の構成にしたりすることができる。
そうすると、ユーザはセンシングの目的とセンサヘッドの型式とを対応させて管理し(目的自体をセンサヘッドに表示してもよい)、目的に応じたセンサヘッドを接続すると信号処理部の回路が目的に合うように変化するというような使い方ができる。また、センサヘッドに回路データや設定パラメータを格納しておき、センサヘッドから信号処理部へ回路データや設定パラメータを転送するようにしてもよい。
信号処理回路(演算部)の内部構成を示すブロック図が図17に示されている。同図に示されるように、この信号処理回路100Aは、図4において先に説明した信号処理回路100と比べると、センサヘッドコネクタ16、センサヘッドインタフェース回路110、及び第2のデータ伝送経路P2が存在しない。この信号処理回路100A(演算部)は、信号処理部が複数接続されたセンシングシステムにおいて、他の信号処理部からセンシングデータを取得して、それに対する演算処理を行う場合などに使用される。
次に、本発明の信号処理部100,100Aを用いて構成されたセンシングシステムAの構成図が図18に示されている。同図において、信号処理部Aは、図5に示されるものであり、信号処理部B及びCは図4に示されるものである。信号処理部B及びCにはセンサヘッド2がそれぞれ接続される。これらのセンサヘッド2の構成は、先に、図3及び図5に示されたものである。これらの信号処理部A〜Cには、図20〜図22の処理を実行させることによって、図示の部番号『0』〜『2』が付与されている。
次に、撮像素子の水平走査線上に得られる光強度分布が図19に示されている。図において、光強度のピークに対応する画素の位置が対象物までの距離に対応している。図18に示される信号処理部Cに接続されたセンサヘッド2は、水平に置かれた板状対象物体の上方に設置され、その上面(おもて面)までの距離を計測している。信号処理部Bに接続されたセンサヘッド2は、同じ対象物体の下方に設置され、その下面(裏面)までの距離を計測している。信号処理部B,Cでそれぞれ計測された距離データ(センシングデータ)は、信号処理部Aに送られる。信号処理部Aには、2つのセンサヘッドの間の距離が設定されており、その情報と、信号処理部A及びBから取得した距離データを用いて、対象物体の厚みを算出する。算出結果は、信号処理部Cの入出力インタフェース回路ブロック150を経由してユーザ所望のインタフェースにより外部に出力される。厚みが規定範囲内にあるか否かを判定して、その判定結果を出力してもよい。
図18に示されるセンシングシステムAは、センサヘッド2を対象物体6の同じ側に並べて配置して、それぞれの計測対象位置の高さの差(段差)の計測に用いることもできる。
次に、センシングシステムAの動作フローチャート(その1〜その3)が図20〜図22に示されている。図20において処理が開始されると、まず各信号処理部A〜Cにおいては、右側部有無の確認処理を行う(ステップ101,201,301)。図18に示されるセンシングシステムAの構成図を前提とすると、信号処理部Aにおける確認結果は『右側部あり』、信号処理部Bにおける確認結果は『右側部あり』となるのに対し、信号処理部Cにおける確認結果は『右側部なし』となる。
続いて、左側部有無の確認処理が行われる(ステップ102,202,302)。同様に、センシングシステムAの構成図を前提とすると、信号処理部Aにおける確認結果は『左側部なし』となるのに対し、信号処理部Bにおける確認結果は『左側部あり』、信号処理部Cにおける確認結果は『左側部あり』となる。
続いて、クロック切替回路の設定処理が行われる(ステップ103,203,303)。このとき、信号処理部Aにおいては、右部からのクロック入力を使用するようクロック切替回路の設定が行われ、信号処理部Bにおいても、右部からのクロック入力を使用するようクロック切替回路の設定が行われる。これに対して、信号処理部Cにおいては、自部の発振器を使用するようクロック切替回路の設定が行われる。
続いて、センサヘッドの有無と型式確認処理が行われる(ステップ104,204,304)。このとき、信号処理部Aにおける確認結果は『センサヘッドなし』となるのに対し、信号処理部Bにおける確認結果は『センサヘッドあり』となり、信号処理部Cにおける確認結果も『センサヘッドあり』とされる。
続いて、計測準備設定処理が行われる(ステップ105,205,305)。信号処理部Aにおける計測準備設定処理においては、(1)2つの計測結果を用いた演算処理のためのCPUプログラムパラメータを設定する処理、(2)データ経路切替回路を、右側部から入力した計測結果をCPUへ送り出すように設定する処理、を実行する。信号処理部Bにおける計測準備設定処理においては、(1)センサヘッドの型式に応じて、演算処理回路パラメータ及びCPUプログラムパラメータを設定する処理、(2)距離計測を設定する処理、(3)データ経路切替回路を、(a)センサヘッドから入力したデータについては演算処理回路へと、(b)CPUが出力した計測結果については左側部へと、(c)右側部から入力した計測結果は左側部へと、設定する処理を実行する。信号処理部Cにおける計測準備設定処理においては、(1)センサヘッドの型式に応じて、演算処理回路パラメータ及びCPUプログラムパラメータを設定する処理、(2)距離計測を設定する処理、(3)データ経路切替回路を、(a)センサヘッドから入力したデータを演算処理回路へと、(b)CPUが出力した計測結果については左側部へと、設定する処理を実行する。
図21に移って、各信号処理部A〜Cにおいて、計測準備設定処理(ステップ105,205,305)が完了したならば、続いて、信号処理部A,B,C間で適宜に交信することによって、信号処理部A〜Cのそれぞれに部番号を付する処理が実行される。
まず、信号処理部Aにおいては、自らの部番号を0とする(ステップ106)。続いて、自らの部番号+1(=1)の番号を右側の部へと出力する(ステップ107)。信号処理部Aにおいては、部番号を左側の部から取得するまで待機する(ステップ206)。待機中に部番号を左側の部から取得したならば、この例では、取得した部番号『1』を自らの部番号とする(ステップ207)。続いて、自らの部番号+1(=2)の番号を右側の部へ出力する(ステップ208)。信号処理部Cでは、部番号を左側の部から取得するまで待機する(ステップ306)。待機中に部番号を左側の部から取得したならば、この例では取得した部番号『2』を自らの部番号とする(ステップ307)。
続いて、最大部番号である『2』を左側の部へと出力する(ステップ308)。信号処理部Bでは、最大部番号を右側の部から取得するまで待機する(ステップ209)。待機中に最大部番号を右側の部から取得したならば、この例では、最大部番号である『2』を左側の部へと出力する(ステップ210)。信号処理部Aでは、最大部番号を右側の部から取得するまで待機する(ステップ108)。
以上の処理を実行する結果、信号処理部A,B,Cにはそれぞれ自らの部番号が設定され、同時に信号処理部A,B,Cは、システムを構成する最大部番号を知ることができる。
図22へ移って、このようにして、各信号処理部A,B,Cにおいて、クロック切替回路の設定処理、センサヘッドの有無と型式確認処理、計測準備設定処理、部番号決定処理などが終了したならば、以後3台の信号処理部A〜Cを相互に連繋しつつ、計測動作が実行される。
すなわち、まず信号処理部Aから信号処理部Bに対して、部番号『2』の計測結果の取得要求が発行される(ステップ109)。続いて、信号処理部Bでは、信号処理部Aからの取得要求を信号処理部Cへと中継する(ステップ211)。続いて信号処理部Cでは、取得要求を受信した後(ステップ309)、自己の計測結果を左側部である信号処理部Bへと出力する(ステップ310)。続いて信号処理部Bでは、計測結果を信号処理部Cから信号処理部Aへと中継する(ステップ212)。続いて、信号処理部Aでは、部番号『2』の計測結果を取得する(ステップ110)。
続いて信号処理部Aから信号処理部Bに対して、部番号『1』の計測結果の取得要求が発行される(ステップ111)。続いて、信号処理部Bでは、取得要求を受信すると共に(ステップ213)、計測結果を左側部である信号処理部Aへと出力する(ステップ214)。続いて、信号処理部Aでは、部番号1の計測結果を取得する(ステップ112)。続いて、信号処理部Aでは、部番号『1』及び『2』の計測結果より厚みを演算する(ステップ113)。以上一連の処理が、所定の終了指令が与えられるまで(ステップ114,215,311)、繰り返し実行される。
このように、図21のフローチャートを実行することにより、信号処理部Cは、自部の発振器を使用するクロック切替回路が設定され、信号処理部A及びBは、右部からのクロック入力を使用するようクロック切替回路が設定される。すなわち、全ての信号処理部のFPGAは信号処理部Cの発振器が出力するクロック信号を用いて動作する。これにより、各信号処理部のFPGA間に同期通信を行うことが容易になる。しかも、通信のためのクロック信号がFPGAにプログラムされている演算処理回路などの内部回路のクロック信号とも同期しているため、FPGA内部回路に対するセンシングデータの入出力を効率よく行うことができる。
このセンシングシステムによれば、全信号処理部にクロック信号を供給する信号処理部の発振器の発振周波数を変更すれば、システム全体のFPGAのクロック周波数を変更することができる。このようなシステムのクロック周波数の変更は、クロック信号を供給する信号処理部の発振器の周波数を調整可能にすることによって実現することができる。或いは、クロック信号を供給する信号処理部を、異なる発振周波数の発振器を有する信号処理部に置き換えることによって実現することができる。例えば、センシングシステムAの信号処理部Cを、より速い発振周波数の発振器を有する信号処理部に置き換えることにより、システム全体の処理速度を向上させることができる。