バーコード読取装置及びバーコード読取方法
【課題】バーコード読み取りが安定するゲイン値を比較的短時間で収束させることができるバーコード読取装置及びバーコード読取方法を提供する。
【解決手段】走査の周期単位でバーコード情報を正常に読み取ることができたか否かに関する読取結果情報を、複数の位置及び読み取り時に設定されている条件に関する情報に対応付けて記憶する。記憶されている直前の走査周期での読取結果情報に基づいて、直前の走査周期における相対位置が同じ位置でのバーコード情報を正常に読み取ることができた場合、直前の走査周期での読み取り時に設定されている条件に関する情報を読み出す。バーコード情報を正常に読み取ることができなかった場合、直前の走査周期での読み取り時に設定されている条件に関する情報と異なる条件に関する情報に設定する。
【解決手段】走査の周期単位でバーコード情報を正常に読み取ることができたか否かに関する読取結果情報を、複数の位置及び読み取り時に設定されている条件に関する情報に対応付けて記憶する。記憶されている直前の走査周期での読取結果情報に基づいて、直前の走査周期における相対位置が同じ位置でのバーコード情報を正常に読み取ることができた場合、直前の走査周期での読み取り時に設定されている条件に関する情報を読み出す。バーコード情報を正常に読み取ることができなかった場合、直前の走査周期での読み取り時に設定されている条件に関する情報と異なる条件に関する情報に設定する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ラスタスキャン方式のバーコード読取装置及びバーコード読取方法に関する。特に、読取結果に基づいて最適なゲイン調整を実行することができるラスタスキャン方式のバーコード読取装置及びバーコード読取方法に関する。
【背景技術】
【0002】
従来、半導体レーザを発光素子に用い、光線束によりバーコードをスキャンするバーコードリーダが多々開発されている。バーコードを確実にスキャンするためには、発光素子から発せられた光線束の反射光を、受光素子にて適切な受光強度で受光することが必要となる。
【0003】
例えば特許文献1では、バーコードをスキャンするスキャン幅を変えることにより、受光素子での受光量を調整することができる走査装置が開示されている。特許文献1では、狭い角度でスキャン幅を定める第1のスキャンモードと、広い角度でスキャン幅を定める第2のスキャンモードとを切り替えることにより受光素子の受光量を増減させ、バーコードを正しくスキャンすることができるよう調整する。
【0004】
より具体的には、例えば特許文献2に開示されているように、バーコードをスキャンするスキャン幅を狭い角度で定めた場合には、スキャン範囲に存在する受光素子の受光量を増大させることにより、バーコードのスキャン部分を特定しやすくし、特定した後は、バーコード全体をスキャン範囲とするべくスキャン幅を広い角度となるよう調整している。
【特許文献1】特許第2612617号公報
【特許文献2】特許第3058941号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
上述した特許文献1及び2に開示されている走査装置では、バーコードからの反射光の受光強度が一定範囲内に収束するように増幅回路のゲイン値を制御している。そのために、通常は直前にスキャンした場合の受光量を記憶しておき、記憶してある過去の受光量に基づいて受光強度が一定範囲に収束するようにゲイン値を増減していた。
【0006】
しかし、走査線が複数存在するラスタスキャン方式のバーコード読取装置の場合、バーコードが円柱状の被検出物体に貼付されているとき、走査線の一部のみがバーコード領域に掛かっているとき等には、走査線ごとに最適な読取条件が相違する。したがって、従来のように一律にゲイン値を増減した場合、ある走査線にとっては適切な受光量を確保することができても、ある走査線にとっては受光量が過大あるいは過小となり、バーコードを正常に読み取ることができないおそれがあるという問題点があった。
【0007】
また、過去の反射光の受光量に基づいて、ゲイン値を平均値として求めることも考えられるが、一度過大又は過小な受光量を記憶した場合にはゲイン値が収束するまで相当の時間を要する。したがって、バーコード読取を開始してから安定するまでに時間を要するという問題点もあった。
【0008】
本発明は上記事情に鑑みてなされたものであり、バーコード読み取りが安定するゲイン値を比較的短時間で収束させることができるバーコード読取装置及びバーコード読取方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
上記目的を達成するために第1発明に係るバーコード読取装置は、光を出射する発光素子と、該発光素子から出射された光の出射方向を変更し、一定の規則性をもってバーコードの複数の異なる位置を周期的に走査させるミラー機構と、バーコードからの反射光を受光する受光素子とを備え、前記受光素子で受光した走査ごとの反射光を光電変換した受光信号に基づいて、バーコード情報を取得するバーコード読取装置において、走査の周期単位でバーコード情報を正常に読み取ることができたか否かに関する読取結果情報を、複数の位置及び読み取り時に設定されている条件に関する情報に対応付けて記憶する読取結果記憶手段と、記憶されている直前の走査周期での読取結果情報に基づいて、直前の走査周期における相対位置が同じ位置でのバーコード情報を正常に読み取ることができたか否かを判断する判断手段と、該判断手段がバーコード情報を正常に読み取ることができたと判断した場合、直前の走査周期での読み取り時に設定されている条件に関する情報を読み出し、前記判断手段がバーコード情報を正常に読み取ることができなかったと判断した場合、直前の走査周期での読み取り時に設定されている条件に関する情報と異なる条件に関する情報に設定する条件設定手段とを備えることを特徴とする。
【0010】
また、第2発明に係るバーコード読取装置は、第1発明において、前記条件に関する情報は、前記受光信号を増幅する増幅回路で設定するゲイン値を含み、前記条件設定手段は、走査開始後の最初の走査周期では、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出し、以後の走査周期では、前記判断手段がバーコード情報を正常に読み取ることができたと判断した場合、直前の走査周期における相対位置が同じ位置でのゲイン値を読み出し、前記判断手段がバーコード情報を正常に読み取ることができなかったと判断した場合、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出するようにしてあることを特徴とする。
【0011】
また、第3発明に係るバーコード読取装置は、第1発明において、前記条件に関する情報は、前記受光信号を増幅する増幅回路で設定するゲイン値を含み、設定するべき所定数のゲイン値を記憶するゲイン値記憶手段を備え、前記条件設定手段は、前記判断手段がバーコード情報を正常に読み取ることができたと判断した場合、次の位置での走査において同一のゲイン値を読み出し、前記判断手段がバーコード情報を正常に読み取ることができなかったと判断した場合、記憶されているゲイン値を周期的に変更して設定するようにしてあることを特徴とする。
【0012】
次に、上記目的を達成するために第4発明に係るバーコード読取方法は、光を出射する発光素子と、該発光素子から出射された光の出射方向を変更し、一定の規則性をもってバーコードの複数の異なる位置を周期的に走査させるミラー機構と、バーコードからの反射光を受光する受光素子とを備え、前記受光素子で受光した走査ごとの反射光を光電変換した受光信号に基づいて、バーコード情報を取得するバーコード読取装置で実行することが可能なバーコード読取方法において、走査の周期単位でバーコード情報を正常に読み取ることができたか否かに関する読取結果情報を、複数の位置及び読み取り時に設定されている条件に関する情報に対応付けて記憶し、記憶されている直前の走査周期での読取結果情報に基づいて、直前の走査周期における相対位置が同じ位置でのバーコード情報を正常に読み取ることができたか否かを判断し、バーコード情報を正常に読み取ることができたと判断された場合、直前の走査周期での読み取り時に設定されている条件に関する情報を読み出し、バーコード情報を正常に読み取ることができなかったと判断された場合、直前の走査周期での読み取り時に設定されている条件に関する情報と異なる条件に関する情報に設定することを特徴とする。
【0013】
また、第5発明に係るバーコード読取方法は、第4発明において、前記条件に関する情報は、前記受光信号を増幅する増幅回路で設定するゲイン値を含み、走査開始後の最初の走査周期では、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出し、以後の走査周期では、バーコード情報を正常に読み取ることができたと判断した場合、直前の走査周期における相対位置が同じ位置でのゲイン値を読み出し、バーコード情報を正常に読み取ることができなかったと判断した場合、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出することを特徴とする。
【0014】
また、第6発明に係るバーコード読取方法は、第4発明において、前記条件に関する情報は、前記受光信号を増幅する増幅回路で設定するゲイン値を含み、設定するべき所定数のゲイン値を記憶し、バーコード情報を正常に読み取ることができたと判断された場合、次の位置での走査において同一のゲイン値を読み出し、バーコード情報を正常に読み取ることができなかったと判断された場合、記憶されているゲイン値を周期的に変更して設定することを特徴とする。
【0015】
第1発明及び第4発明では、光を出射する発光素子と、該発光素子から出射された光の出射方向を変更し、一定の規則性をもってバーコードの複数の異なる位置を周期的に走査させるミラー機構と、バーコードからの反射光を受光する受光素子とを備え、受光素子で受光した走査ごとの反射光を光電変換した受光信号に基づいて、バーコード情報を取得する。走査の周期単位でバーコード情報を正常に読み取ることができたか否かに関する読取結果情報を、複数の位置及び読み取り時に設定されている条件に関する情報に対応付けて記憶し、記憶されている直前の走査周期での読取結果情報に基づいて、直前の走査周期における相対位置が同じ位置でのバーコード情報を正常に読み取ることができたか否かを判断する。読み取ることができた場合には、直前の走査周期での読み取り時に設定されている条件に関する情報を維持し、正常に読み取ることができなかった場合には、直前の走査周期での読み取り時に設定されている条件に関する情報を変更する。一定の規則性をもってバーコードの複数の異なる位置を周期的に走査することで、直前の走査周期で正常に読み取ることができた場合には、読み取り時に設定されている条件をそのまま用いてバーコード情報を読み取り、直前の走査周期で正常に読み取ることができなかった場合には、読み取り時に設定されている条件とは異なる条件に変更することができ、バーコード情報を読み取るための適切な条件に早期に収束させることができる。したがって、例えばバーコードが円柱状の被検出物体に貼付されている場合、走査線の一部のみがバーコード領域に掛かっている場合等であっても、適切な条件に関する情報を早期に特定することができ、バーコード情報を安定して読み取ることが可能となる。
【0016】
第2発明及び第5発明では、条件に関する情報は、受光信号を増幅する増幅回路で設定するゲイン値を含み、走査開始後の最初の走査周期では、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出する。以後の走査周期では、バーコード情報を正常に読み取ることができた場合、直前の走査周期における相対位置が同じ位置でのゲイン値を読み出し、バーコード情報を正常に読み取ることができなかった場合、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出する。これにより、直前の走査周期にて正常に読み取ることができなかった位置についてのみ、記憶されている直前の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出することができ、早期にゲイン値を安定させることが可能となる。
【0017】
第3発明及び第6発明では、条件に関する情報は、受光信号を増幅する増幅回路で設定するゲイン値を含み、設定するべき所定数のゲイン値を記憶しておく。バーコード情報を正常に読み取ることができた場合は、次の位置での走査において同一のゲイン値を読み出し、バーコード情報を正常に読み取ることができなかった場合は、記憶されているゲイン値を周期的に変更して設定する。これにより、バーコード情報を正常に読み取ることができなかった場合に、その都度ゲイン値を算出する必要が無く、適切なゲイン値となるまで繰り返し走査を実行することにより、早期にゲイン値を安定させることが可能となる。
【発明の効果】
【0018】
上記構成によれば、一定の規則性をもってバーコードの複数の異なる位置を周期的に走査することで、直前の走査周期で正常に読み取ることができた場合には、読み取り時に設定されている条件をそのまま用いてバーコード情報を読み取り、直前の走査周期で正常に読み取ることができなかった場合には、読み取り時に設定されている条件とは異なる条件に変更することができ、バーコード情報を読み取るための適切な条件に早期に収束させることができる。したがって、例えばバーコードが円柱状の被検出物体に貼付されている場合、走査線の一部のみがバーコード領域に掛かっている場合等であっても、適切な条件に関する情報を早期に特定することができ、バーコード情報を安定して読み取ることが可能となる。
【発明を実施するための最良の形態】
【0019】
以下、本発明の実施の形態に係るバーコード読取装置について、図面を参照して説明する。なお、参照する図面を通じて、同一又は同様の構成又は機能を有する要素については、同一又は同様の符号を付して、重複する説明は省略する。
【0020】
(実施の形態1)
図1は、本発明の実施の形態1に係るバーコード読取装置の構成を模式的に示すブロック図である。図1に示すように本実施の形態1に係るバーコード読取装置1は、半導体レーザ、LED等の発光素子11から光を出射し、ミラー機構であるポリゴンミラー12の一面にて被検出物体3へ向けて反射させる。
【0021】
ポリゴンミラー12で反射された反射光は、被検出物体3に貼付されているバーコード2へ誘導され、CCD、フォトダイオード等の受光素子13は、バーコード2からの反射光を受光して光電変換した受光信号を出力する。受光信号は、コンデンサ14にて直流成分を排除され、増幅回路15にて設定されたゲイン値に応じて増幅され、A/D変換器16にてデジタル信号に変換された後、制御装置10へと入力される。
【0022】
制御装置10は、発光素子11の出射タイミングと、ポリゴンミラー12の回転数とを同期させ、被検出物体3へ出射される光の幅とタイミングとを制御する。また、増幅回路15のゲイン値は、バーコード2で示されるバーコード情報のデコード時に後述する方法にて設定される。
【0023】
図2は、本発明の実施の形態1に係るバーコード読取装置1のポリゴンミラー12の取り付け状態を示す模式図である。図2に示すように本実施の形態1に係るポリゴンミラー12は、回転軸30に対して所定の角度θだけ傾斜して取り付けられている。回転軸30の回転によりポリゴンミラー12が回転した場合、発光素子11から出射された光のポリゴンミラー12の各面ごとでの入射角が変動し、一定の規則性をもって複数の異なる走査線に沿って周期的に走査することができる。
【0024】
図3は、本発明の実施の形態1に係るバーコード読取装置1の制御装置10の構成を示すブロック図である。図3に示すように本実施の形態に係るバーコード読取装置1の制御装置10は、少なくともCPU(中央演算装置)20、RAM17、通信手段18及び上述したハードウェアを接続する内部バス19で構成されている。CPU20は、内部バス19を介して制御装置10の上述したようなハードウェア各部と接続されており、上述したハードウェア各部の動作を制御するとともに、RAM17に記憶されているコンピュータプログラムに従って、種々のソフトウェア的機能を実行する。RAM17は、SRAM、SDRAM等の揮発性メモリで構成され、コンピュータプログラムの実行時にロードモジュールが展開され、コンピュータプログラムの実行時に発生する一時的なデータ等を記憶する。例えば、バーコード2の読取処理を実行した走査線ごとの読取データ(受光量、光量、ゲイン値等)を記憶する。
【0025】
通信手段18は内部バス19に接続されており、発光素子11、ポリゴンミラー12の回転駆動部、増幅回路15等に通信線を介して接続されており、発光素子11のオンオフ信号、ポリゴンミラー12の回転速度等の指示信号、ゲイン値の指示信号等を送出する。また、インターネット、LAN、WAN等の外部のネットワークに接続されることにより、外部のコンピュータ等ともデータ送受信を行うことが可能となる。なお、RAM17に記憶されているコンピュータプログラムは、通信手段18を介して外部コンピュータからダウンロードされたコンピュータプログラムである。
【0026】
制御装置10のCPU20は、受光信号取得手段201、微分処理手段203と、フィルタ処理手段204と、二値化処理手段205とを有する信号処理手段202、デコード手段206、読取結果記憶手段207、判断手段208及び条件設定手段209を含み、これらの処理動作を制御する。
【0027】
受光信号取得手段201は、通信手段18で受信した、デジタル信号としての受光信号を取得する。すなわち、バーコード2での反射光は、CCD、フォトダイオード等の受光素子13にて受光され、光電変換される。光電変換されたアナログ信号は、コンデンサ14にて直流成分を排除され、増幅回路15にて設定されたゲイン値に応じて増幅され、A/D変換器16にてデジタル信号に変換される。受光信号取得手段201は、斯かるデジタル信号を取得する。
【0028】
信号処理手段202は、取得したデジタル信号である受光信号を、デコードすることが可能な状態の信号へ前処理する。信号処理手段202の微分処理手段203は、取得した受光信号を微分処理することにより、受光信号のエッジ部分を抽出する。
【0029】
フィルタ処理手段204は、特定の周波数帯域に存在する信号のみを通過させるバンドパスフィルタである。二値化処理手段205は、フィルタ処理手段204により限定された周波数帯域の信号について、所定の閾値より大きい信号をオン状態に、小さい信号をオフ状態とすることにより、パルス信号化する。
【0030】
デコード手段206は、信号処理手段202にてパルス信号化された信号の内容を読み取る。具体的には、バーコード2の開始点及び終了点を示す情報、パリティ情報等を読み取るとともに、バーコード情報を読み取って出力し、RAM17に記憶する。バーコード情報を読み取ることができなかった場合にはその旨を示す情報を出力し、RAM17に記憶する。
【0031】
読取結果記憶手段207は、デコード手段206で、一定の規則性をもって複数の異なる走査線(位置)に沿って周期的に走査した場合に、周期単位でバーコード情報を正常に読み取ることができたか否かに関する読取結果情報を、読み取り時に設定されている条件に関する情報及び複数の走査線に対応付けてRAM17に記憶する。したがって、何周期目の走査では、どの走査線でバーコード情報を正常に読み取ることができ、どの走査線でバーコード情報を読み取ることができなかったのかを、条件に関する情報と対応付けた履歴情報として記憶することができる。なお、条件に関する情報とは、例えば増幅回路15に設定するゲイン値等の情報全般を意味している。
【0032】
判断手段208は、読取結果記憶手段207にてRAM17に記憶されている、直前の走査周期での読取結果情報に基づいて、直前の走査周期における相対位置が同じ走査線でのバーコード情報を正常に読み取ることができたか否かを判断する。例えばn(nは自然数)番の走査線でバーコード情報を読み取る場合、前回の走査周期でn(nは自然数)番の走査線にてバーコード情報を正常に読み取ることができたか否かを判断する。
【0033】
条件設定手段209は、判断手段208で、前回の走査周期ではバーコード情報を正常に読み取ることができたと判断した場合、前回の走査周期での読み取り時に設定されている条件に関する情報を読み出し、バーコード情報を正常に読み取ることができなかったと判断した場合、直前の読み取り時に設定されている条件に関する情報及び受光量に基づいて新たな条件に関する情報を設定する。すなわち、正常に読み取ることができなかった走査線についてのみ、新たな条件に関する情報、例えば新たなゲイン値に設定する。
【0034】
従来は、走査線ごとに増幅回路15のゲイン値を設定し、受光素子13で受光した受光量にゲイン値を乗算した値を光量として制御装置10が受け取る。図4は、受光素子13が受け取った光量とゲイン値との関係を走査線ごとに示した例示図である。図4の例では、走査線1番及び2番の光量が他の走査線に比べて大きくなっており、走査線1番については最大光量を超えて飽和していることを示している。
【0035】
この場合、光量を各走査線で略均一にするためには、走査線1番及び2番のゲイン値を下げれば良い。特に走査線2番については、ゲイン値を4分の1に設定することにより光量が他の走査線と一致することが明白である。一方、走査線1番については、とりあえずゲイン値を8分の1に設定することにより、光量を他の走査線に近づけることができる。
【0036】
このようなゲイン値の調整方法は、バーコード2の読取処理の開始からゲイン値の設定が完了するまで光量が一定であることが前提となっている。しかし、実際にはバーコード2の読取処理の開始からゲイン値の設定が完了するまで光量が一定しない状況も多々考えうる。
【0037】
図5は、円柱状の被検出物体3にバーコード2が付されている場合の模式図である。図5では、円柱状の被検出物体3として試験管等を想定している。図5に示すように、走査線ごとにバーコード読取装置1とバーコード2を付してある被検出物体3との直線距離が変動する場合、被検出物体(試験管)3の中央付近に当たる走査線4番及び5番では正反射に近いことから反射光の光量が大きいのに対して、被検出物体(試験管)3の中央から離れた走査線1番及び8番では、バーコード読取装置1との距離が離れること、反射光が拡散しやすいこと等により、光量が相対的に小さくなってしまう。
【0038】
また図6は、バーコード2の一部分しか走査線が当たらない場合の例示図である。図6に示すように、走査線1番乃至3番はバーコード2上に存在するのに対し、走査線4番乃至8番はバーコード2に直接当たっていない。したがって、走査線4番乃至8番は白紙を走査している場合と同様、正反射の強い状態となるために反射光の光量が大きくなる。
【0039】
これらの場合、バーコード2の読取処理の開始からゲイン値の設定が完了するまで走査線の位置によって光量がばらばらであり、一律にゲイン値を設定することができない。そこで、複数の走査線について順番にバーコード読み取りを実行する場合、直前に読取処理を実行した走査線における反射光の光量、及び設定されているゲイン値に基づいて、ゲイン値を決定することが良く行われている。
【0040】
図7は、直前の他の走査線における読取処理の結果に基づくゲイン値算出の例示図である。図7では、例えば反射光の受光量が、走査線1番から8番まで順に、50、60、70、100、150、100、70、60である場合について説明する。図7の数字は、1〜8までが1回目に順次読み取った走査線1番乃至8番のそれぞれの読取処理の結果を示している。例えば走査線1番では、ゲイン値が‘64’であるが、光量は‘1000’を超えた飽和光量となっている。したがって、走査線2番では、一律にゲイン値を走査線1番の読取処理時に用いたゲイン値の8分の1である‘8’に設定し、光量‘480’を得る。
【0041】
次に走査線3番では、前回のゲイン値、すなわち走査線2番の読取処理時に用いたゲイン値‘8’と、直前の読取処理時の光量、すなわち走査線2番の読取処理の結果である光量‘480’を用いて、光量が‘100’になるよう補正する。すなわち、走査線3番のゲイン値は、8×100/480で‘1.66667’を得る。
【0042】
以下、順次、直前の読取処理時に用いたゲイン値及び読取処理の結果である光量に基づいて、読取処理時に設定するゲイン値を設定して、読取処理の結果である光量を走査線ごとに算出している。
【0043】
走査線9番乃至11番は、それぞれ走査線1番乃至3番に着目して、走査線1番及び2番のゲイン値を修正した読取処理の結果を9番及び10番に、走査線3番をそのままのゲイン値で読み取った読取処理の結果を11番に、それぞれ示している。
【0044】
しかし、図7の例では、直前の他の走査線で読取処理を実行した時点でのゲイン値及び光量を基準にゲイン値を継続して修正しているため、既に正常に読み取ることができている走査線についても直前の読取処理を実行した時点でのゲイン値及び光量を基準にゲイン値を修正する。したがって、本来修正する必要が無いゲイン値も無差別に修正することからゲイン値が一定範囲内に収束するまで相当の時間を要し、安定してバーコード2を読み取るまでに時間がかかるという問題が生じる。
【0045】
そこで、本実施の形態1では、走査線ごとに読取処理を実行する点は従来と同様であるものの、正常に読み取ることができたか否かを走査線ごとに判断し、正常に読み取ることができなかった場合にのみ、直前の他の走査線で読取処理を実行した時点でのゲイン値及び光量(受光量にゲイン値を乗算した値)に基づいてゲイン値を設定する。
【0046】
図8は、本発明の実施の形態1に係るバーコード読取装置1の制御装置10のCPU20のゲイン値修正処理の手順を示すフローチャートである。図8の例では、説明を簡単にするために、直前の走査線にてバーコード情報を正常に読み取ることができなかった場合、ゲイン値を直前の走査線の読取処理時に設定されていたゲイン値の2分の1となるよう更新している。図8において、制御装置10のCPU20は、カウンタnを初期値‘1’に設定し(ステップS801)、第nの走査線でバーコード2の読取処理を実行して(ステップS802)、読取処理の結果である読取結果情報として、バーコード情報を正常に読み取ることができたか否かに関する情報、CPU20が受け取った光量(受光素子13での受光量×ゲイン値)及びゲイン値をRAM17に記憶する(ステップS803)。
【0047】
なお、バーコード情報を正常に読み取ることができたか否かを判断する方法は、特に限定されるものではない。本実施の形態1では、CPU20が受け取った光量が100より大きく600より小さいか否かによって判断している。もちろん、判断条件はこれに限定されるものではない。
【0048】
CPU20は、現在の読取処理が第一の走査周期での読取処理であるか否かを判断し(ステップS804)、CPU20が、第一の走査周期での読取処理であると判断した場合(ステップS804:YES)、CPU20は、RAM17に記憶してある光量及びゲイン値に基づいて、次の走査線で用いるべき読取条件、例えば読取処理で設定するゲイン値を算出する(ステップS805)。CPU20は、読取条件を、算出された新たな読取条件に変更する(ステップS806)。もちろん、読取処理結果によっては読取条件が前回と同一であっても良い。
【0049】
CPU20は、カウンタnを‘1’インクリメントし(ステップS807)、一走査周期の読取処理が終了したか否かを判断する(ステップS808)。CPU20が、一走査周期の読取処理が終了していないと判断した場合(ステップS808:NO)、CPU20は、処理をステップS802へ戻し、上述の処理を繰り返す。
【0050】
CPU20が、一走査周期の読取処理が終了したと判断した場合(ステップS808:YES)、CPU20は、カウンタnを初期値‘1’に再設定し(ステップS809)、処理をステップS802へ戻して上述の処理を繰り返す。
【0051】
CPU20が、現在の読取処理が第一の走査周期での読取処理ではないと判断した場合(ステップS804:NO)、CPU20は、前回の走査周期で第n走査線の読取処理にてバーコード情報を正常に読み取ることができたか否かを判断する(ステップS810)。具体的には、デコード手段206にて出力されるバーコード2の開始点及び終了点を示す情報、パリティ情報、読み取ったバーコード情報等がRAM17に記憶されていれば正常に読み取ることができたと判断し、バーコード情報を読み取ることができなかった旨を示す情報がRAM17に記憶されている場合には正常に読み取ることができなかったと判断する。
【0052】
CPU20が、前回の走査周期で第n走査線の読取処理にてバーコード情報を正常に読み取ることができなかったと判断した場合(ステップS810:NO)、CPU20は、RAM17に記憶してある光量及びゲイン値に基づいて、次の走査線で用いるべき読取条件、例えば読取処理で設定するゲイン値を算出する(ステップS811)。CPU20は、読取条件を、算出された新たな読取条件に変更する(ステップS812)。もちろん、読取処理結果によっては読取条件が前回と同一であっても良い。
【0053】
CPU20が、前回の走査周期で第n走査線の読取処理にてバーコード情報を正常に読み取ることができたと判断した場合(ステップS810:YES)、CPU20は、前回の走査周期での読取条件に設定し(ステップS813)、カウンタnを‘1’インクリメントする(ステップS814)。一度正常に読み取ることができた読取条件であれば、その後同一読取条件にて正常に読み取ることができなくなることは考えにくいことから、同一の走査線について前回の走査周期での読取処理時に用いた読取条件をそのまま用いることが望ましいからである。
【0054】
CPU20は、全ての走査線の光量が所定の範囲内に収束したか否かを判断する(ステップS815)。CPU20が、まだ収束していないと判断した場合(ステップS815:NO)、CPU20は、処理をステップS808へ戻して上述した処理を繰り返す。CPU20が、収束したと判断した場合(ステップS815:YES)、CPU20は、処理を終了する。
【0055】
図9は、本発明の実施の形態1に係るゲイン値修正処理の手順を示す模式図である。図9の左端の数字は、8個の走査線を識別する番号であり、上から走査線1番、2番、・・・、8番となっている。
【0056】
図9の例では、第一走査周期において、走査線1番から8番まで順次、直前の走査線での光量及びゲイン値に基づいて新たなゲイン値を算出している。すなわち、走査線1番がゲインAであった場合、走査線2番はゲインA及び走査線1番での光量に基づいて算出されたゲインBに設定し、走査線3番はゲインB及び走査線2番での光量に基づいて算出されたゲインCに設定し、以下順次走査線8番にゲインHを設定するまでゲイン値を算出する。
【0057】
また、算出されたゲイン値にて、バーコード情報を正常に読み取ることができたか否かに関する読取結果情報をRAM17に記憶する。図9の例では、‘OK’が正常に読み取ることができた旨を示し、‘NG’が正常に読み取ることができなかった旨を示している。図9の例では、第一走査周期において、走査線1番から4番まではバーコード情報を正常に読み取ることができていないが、走査線5番から8番まではバーコード情報を正常に読み取ることができている。
【0058】
第二走査周期では、同じ走査線について、前回の走査周期での読取結果情報に基づいて、ゲイン値を算出するか否かを決定している。すなわち第一走査周期にて‘OK’であった走査線については第一走査周期にて設定されているゲイン値を変更せず、第一走査周期にて‘NG’であった走査線については、第一走査周期で算出した方法と同様に、直前の走査線での光量及びゲイン値に基づいて、新たなゲイン値を算出している。
【0059】
図9の例では、走査線1番は第一走査周期にてバーコード情報を正常に読み取ることができていないことから、ゲイン値は、直前の走査線である第一走査周期の走査線8番の光量及びゲイン値に基づいて算出する。すなわち第一走査周期でのゲイン値であるゲインAとは無関係にゲインIに設定される。同様に、走査線2番も第一走査周期にてバーコード情報を正常に読み取ることができていないことから、ゲイン値は、直前の走査線である第二走査周期の走査線1番の光量及びゲイン値に基づいてゲインJが算出される。以下同様に走査線4番までは第一走査周期にてバーコード情報を正常に読み取ることができていないことから、ゲイン値は、直前の走査線での光量及びゲイン値に基づいて算出される。
【0060】
走査線5番は、第一走査周期にてバーコード情報を正常に読み取ることができていることから、ゲイン値は第一走査周期でのゲイン値であるゲインEがそのまま維持される。以下、同様に走査線6番から8番までは、第一走査周期にてバーコード情報を正常に読み取ることができていることから、ゲイン値として第一走査周期でのゲイン値であるゲインF、ゲインG、ゲインHがそれぞれ維持される。
【0061】
第二走査周期にて、すべての走査線についてバーコード情報を正常に読み取ることができるようになった場合、すなわち走査線1番から8番まで全て‘OK’となった場合には、第三走査周期以降、全ての走査線について設定されているゲイン値を維持してバーコード情報を読み取る。‘NG’となる走査線があった場合には、第三走査周期以降も上述と同様の方法によって新たなゲイン値を算出する。
【0062】
具体的なゲイン値の算出例を以下に示す。図10は、図8に示す本発明の実施の形態1に係るゲイン値修正処理を8個の走査線に対して繰り返し実行した場合のゲイン値算出の例示図である。図10の左端欄内の数字は、8個の走査線を識別する番号であり、上から走査線1番、2番、・・・、8番となっている。
【0063】
図10の例では、初期値を‘64’とし、前回の走査線での光量(受光量×ゲイン値)が200以上500以下の範囲内である場合には前回の走査線でのゲイン値を維持し、範囲外である場合には前回の走査線でのゲイン値を2分の1倍することで新たなゲイン値を設定する、というルールでゲイン値を設定している。
【0064】
走査線1番の第一走査周期では、光量が飽和光量であることから、読取条件として設定されているゲイン値‘64’は適切ではないと判断することができる。そこで、走査線1番の第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読取結果情報としてRAM17に記憶するとともに、走査線2番のゲイン値として、走査線1番のゲイン値‘64’を用いて、(64×1/2)にてゲイン値‘32’を得る。なお、読取結果が正常であるか否かは、光量が100以上600以下の範囲内であるか否かに基づいて判断するものとする。
【0065】
以下、走査線3番の第一走査周期までは、光量が飽和光量であることから、各走査線の第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読取結果情報としてRAM17に記憶するとともに、各走査線のゲイン値として、直前の走査線でのゲイン値を2分の1倍した新たなゲイン値を設定している。
【0066】
走査線5番の第一周期では、光量が‘424’であり、200以上500以下の範囲内であることから、読取条件として設定されているゲイン値‘4’は適切であると判断することができる。そこで、走査線5番の第一走査周期での読取結果が正常である旨を示す情報である‘○’を読取結果情報としてRAM17に記憶するとともに、走査線6番のゲイン値として、走査線5番のゲイン値‘4’をそのまま設定する。
【0067】
以下、同様に第一走査周期については、直前のゲイン値及び光量に基づいて、用いる読取条件としてのゲイン値を設定する。これは、第一走査周期では、走査線ごとに前回の読取条件であるゲイン値が算出されていないからである。
【0068】
次に、走査線1番の第二走査周期では、RAM17に記憶してある読取結果情報から、第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読み出す。したがって、第一走査周期と同様、直前のゲイン値及び光量に基づいて、用いる読取条件としてのゲイン値を設定する。
【0069】
すなわち、走査線1番の第二走査周期では光量が‘528’であり、200以上500以下の範囲外であることから、読取条件として設定されているゲイン値‘4’が適切ではないと判断することができる。そこで、走査線1番の第二走査周期での読取結果が正常である旨を示す情報として‘○’をRAM17に記憶するとともに、走査線2番のゲイン値として、走査線1番のゲイン値‘4’を2分の1倍した新たなゲイン値‘2’を設定する。
【0070】
次に、走査線2番の第二走査周期では、RAM17に記憶してある読取結果情報から、第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読み出す。したがって、第一走査周期と同様、直前のゲイン値及び光量に基づいて、用いる読取条件としてのゲイン値を設定する。
【0071】
すなわち、走査線2番の第二走査周期では光量が‘800’であり、200以上500以下の範囲外であることから、読取条件として設定されているゲイン値‘2’が適切ではないと判断することができる。そこで、走査線2番の第二走査周期での読取結果が正常ではない旨を示す情報として‘×’をRAM17に記憶するとともに、走査線3番のゲイン値として、走査線2番のゲイン値‘2’を2分の1倍した新たなゲイン値‘1’を設定する。
【0072】
以下、走査線4番の第二走査周期までは、RAM17に記憶してある読取結果情報から、第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読み出すことから、第一走査周期と同様、直前のゲイン値及び光量に基づいて、用いる読取条件としてのゲイン値を設定する。
【0073】
次に、走査線5番の第二走査周期では、RAM17に記憶してある読取結果情報から、第一走査周期での読取結果が正常である旨を示す情報である‘○’を読み出す。したがって、第一走査周期でのゲイン値をそのまま維持し、読取条件としてゲイン値‘4’を設定する。
【0074】
以下、走査線8番までは、第一走査周期での読取結果が正常である旨を示す情報である‘○’が記憶されていることから、いずれも第一走査周期でのゲイン値‘4’を、そのままゲイン値として設定する。第三走査周期以降についても、同様の処理を繰り返す。
【0075】
以上のように本実施の形態1によれば、一度でも正常に読み取ることができた走査線については、以後継続して正常に読み取ることができ、正常に読み取ることができなかった走査線についてのみ適切な読取条件に収束させることができることから、安定するまでの総時間を短縮することができる。
【0076】
また、バーコード2の読取処理の開始からゲイン値の設定が完了するまで走査線の位置によって光量がばらばらであり、一律にゲイン値を設定することができない場合、例えば、円柱状の被検出物体3にバーコード2が付されている場合、バーコード2の一部分しか走査線が当たらない場合等であっても、適切な読取条件であるゲイン値等を早期に特定することができ、安定したバーコード読取を実行することができるバーコード読取装置を提供することが可能となる。
【0077】
(実施の形態2)
本発明の実施の形態2に係るバーコード読取装置の構成は、実施の形態1と同様であることから、同一の符号を付することにより詳細な説明を省略する。本実施の形態2では、走査線ごとに読取処理を実行する点は従来と同様であるものの、正常に読み取ることができたか否かを走査線ごとに判断し、正常に読み取ることができなかった場合には、事前に記憶してある複数のゲイン値を、所定の順序で繰り返し設定する点で実施の形態1と相違する。
【0078】
図11は、本発明の実施の形態2に係るバーコード読取装置1の制御装置10のCPU20のゲイン値修正処理の手順を示すフローチャートである。図11において、制御装置10のCPU20は、カウンタnを初期値‘1’に設定し(ステップS1101)、第nの走査線でバーコード2の読取処理を実行して(ステップS1102)、読取処理の結果である読取結果情報として、バーコード情報を正常に読み取ることができたか否かに関する情報、CPU20が受け取った光量(受光素子13での受光量×ゲイン値)及びゲイン値をRAM17に記憶する(ステップS1103)。
【0079】
なお、バーコード情報を正常に読み取ることができたか否かを判断する方法は、特に限定されるものではない。本実施の形態2では、CPU20が受け取った光量が100以上600以下の範囲内であるか否かに基づいて判断する。
【0080】
CPU20は、現在の読取処理が第一の走査周期での読取処理であるか否かを判断し(ステップS1104)、CPU20が、第一の走査周期での読取処理であると判断した場合(ステップS1104:YES)、CPU20は、今回の走査でバーコード情報を正常に読み取ることができたか否かを判断する(ステップS1105)。具体的には、デコード手段206にて出力されるバーコード2の開始点及び終了点を示す情報、パリティ情報、読み取ったバーコード情報等がRAM17に記憶されていれば正常に読み取ることができたと判断し、バーコード情報を読み取ることができなかった旨を示す情報がRAM17に記憶されている場合には正常に読み取ることができなかったと判断する。
【0081】
CPU20が、バーコード情報を正常に読み取ることができなかったと判断した場合(ステップS1105:NO)、CPU20は、RAM17に事前に記憶してあるゲイン値候補から次に設定するべきゲイン値を選択する(ステップS1106)。図12は、RAM17に記憶してあるゲイン値候補の例示図である。図12の例では、ゲインAからゲインIまでの9つのゲイン値が、1〜9の順序付けをされて記憶されている。CPU20は、順序付けにしたがって順次、ゲイン値を選択する。
【0082】
図11に戻って、制御装置10のCPU20が、バーコード情報を正常に読み取ることができたと判断した場合(ステップS1105:YES)、CPU20は、ゲイン値を変更する必要が無いと判断し、ステップS1106をスキップし、カウンタnを‘1’インクリメントして(ステップS1107)、一走査周期の読取処理が終了したか否かを判断する(ステップS1108)。CPU20が、一走査周期の読取処理が終了していないと判断した場合(ステップS1108:NO)、CPU20は、処理をステップS1102へ戻し、上述の処理を繰り返す。
【0083】
CPU20が、一走査周期の読取処理が終了したと判断した場合(ステップS1108:YES)、CPU20は、カウンタnを初期値‘1’に再設定し(ステップS1109)、処理をステップS1102へ戻して上述の処理を繰り返す。
【0084】
CPU20が、現在の読取処理が第一の走査周期での読取処理ではないと判断した場合(ステップS1104:NO)、CPU20は、前回の走査周期で第n走査線の読取処理にてバーコード情報を正常に読み取ることができたか否かを判断する(ステップS1110)。具体的には、デコード手段206にて出力されるバーコード2の開始点及び終了点を示す情報、パリティ情報、読み取ったバーコード情報等がRAM17に記憶されていれば正常に読み取ることができたと判断し、バーコード情報を読み取ることができなかった旨を示す情報がRAM17に記憶されている場合には正常に読み取ることができなかったと判断する。
【0085】
CPU20が、前回の走査周期で第n走査線の読取処理にてバーコード情報を正常に読み取ることができなかったと判断した場合(ステップS1110:NO)、CPU20は、直前の走査線でのゲイン値、すなわち第n−1走査線の読取処理で設定されていたゲイン値と、前回の走査周期で第n走査線の読取処理に設定されていたゲイン値とが同一であるか否かを判断する(ステップS1111)。CPU20が、同一であると判断した場合(ステップS1111:YES)、CPU20は、RAM17に事前に記憶してあるゲイン値候補から次に設定するべきゲイン値を選択する(ステップS1112)。CPU20が、同一ではないと判断した場合(ステップS1111:NO)、CPU20は、直前の走査線でのゲイン値、すなわち第n−1走査線の読取処理で設定されていたゲイン値を選択する(ステップS1113)。
【0086】
CPU20が、前回の走査周期で第n走査線の読取処理にてバーコード情報を正常に読み取ることができたと判断した場合(ステップS1110:YES)、CPU20は、ステップS1111乃至ステップS1113をスキップして、カウンタnを‘1’インクリメントする(ステップS1114)。CPU20は、全ての走査線の光量が所定の範囲内に収束したか否かを判断し(ステップS1115)、CPU20が、まだ収束していないと判断した場合(ステップS1115:NO)、CPU20は、処理をステップS1108へ戻して上述した処理を繰り返す。CPU20が、収束したと判断した場合(ステップS1115:YES)、CPU20は、処理を終了する。
【0087】
図13は、本発明の実施の形態2に係るゲイン値修正処理の手順を示す模式図である。図13の左端の数字は、8個の走査線を識別する番号であり、上から走査線1番、2番、・・・、8番となっている。図13の例では、第一走査周期において、走査線1番から8番まで順次、直前の走査線での光量及びゲイン値に基づいて、所定のルールでゲイン値を設定している。
【0088】
まず、設定されたゲイン値にて、バーコード情報を正常に読み取ることができたか否かに関する読取結果情報をRAM17に記憶する。図13の例では、‘OK’が正常に読み取ることができた旨を示し、‘NG’が正常に読み取ることができなかった旨を示している。
【0089】
そして、走査線1番がゲインAであった場合、走査線2番は、走査線1番でバーコード情報を正常に読み取ることができたか否かを判断し、正常に読み取ることができた場合にはゲインAのまま、正常に読み取ることができなかった場合には、RAM17に記憶してある次の順位のゲイン値であるゲインBに変更する。
【0090】
図13の例では、走査線1番が‘NG’であることから、走査線2番は、RAM17に記憶してある次の順位のゲイン値であるゲインBに変更している。以下同様に、直前の走査線でバーコード情報を正常に読み取ることができた場合、すなわち‘OK’である場合には、直前の走査線でのゲイン値をそのまま用い、正常に読み取ることができなかった場合、すなわち‘NG’である場合には、RAM17に記憶してある次の順位のゲイン値に変更する。
【0091】
第二走査周期では、同じ走査線について、前回の走査周期での読取結果情報に基づいて、ゲイン値を算出するか否かを決定している。すなわち第一走査周期にて‘OK’であった走査線については第一走査周期にて設定されているゲイン値を変更せず、第一走査周期にて‘NG’であった走査線については、第一走査周期で算出した方法と同様に、直前の走査線での光量及びゲイン値に基づいて、新たなゲイン値を設定している。
【0092】
図13の例では、走査線1番は第一走査周期にてバーコード情報を正常に読み取ることができていないことから、ゲイン値は、直前の走査線である第一走査周期の走査線8番の光量及びゲイン値に基づいて設定する。すなわち第一走査周期でのゲイン値であるゲインAとは無関係にゲインGに設定される。同様に、走査線2番も第一走査周期にてバーコード情報を正常に読み取ることができていないことから、ゲイン値は、直前の走査線である第二走査周期の走査線1番の光量及びゲイン値に基づいてゲインHに設定される。
【0093】
走査線3番は第一走査周期にてバーコード情報を正常に読み取ることができていることから、ゲイン値は、直前の走査線である第一走査周期の走査線3番のゲイン値であるゲインCに設定される。走査線4番も第一走査周期にてバーコード情報を正常に読み取ることができていることから、ゲイン値は、直前の走査線である第一走査周期の走査線4番のゲイン値であるゲインCに設定される。
【0094】
走査線5番は第一走査周期にてバーコード情報を正常に読み取ることができていないことから、ゲイン値は、直前の走査線である第一走査周期の走査線4番の光量及びゲイン値に基づいて設定する。すなわち第一走査周期でのゲイン値であるゲインCとは無関係に、直前の走査線である第二走査周期の走査線4番で正常に読み取ることができていることから、第二走査周期の走査線4番で設定されているゲインCに設定される。
【0095】
以下同様に、前回の走査周期にてバーコード情報を正常に読み取ることができているか否か、及び直前の走査線で正常に読み取ることができているか否かに応じて、順次RAM17に記憶されているゲイン値を周期的に設定していく。
【0096】
具体的なゲイン値の算出例を以下に示す。図14は、図11に示す本発明の実施の形態2に係るゲイン値修正処理を8個の走査線に対して繰り返し実行した場合のゲイン値算出の例示図である。図14の左端欄内の数字は、8個の走査線を識別する番号であり、上から走査線1番、2番、・・・、8番となっている。なお、図12に示すゲインA乃至Iは、それぞれ‘1’、‘2’、‘4’、‘8’、‘16’、‘32’、‘64’、‘128’、‘256’に設定している。
【0097】
図14の例では、ゲイン値の初期値を‘1’とし、前回の走査線での光量(受光量×ゲイン値)が200以上500以下の範囲内である場合には前回の走査線でのゲイン値を維持し、範囲外である場合には、RAM17に記憶してある次の順位のゲイン値に設定する、というルールでゲイン値を設定する。
【0098】
走査線1番の第一走査周期では、光量が‘111’であり、光量(受光量×ゲイン値)が200以上500以下の範囲外であることから、読取条件として設定されているゲイン値‘1’は適切ではないと判断することができる。そこで、走査線1番の第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読取結果情報としてRAM17に記憶するとともに、走査線2番のゲイン値として、走査線1番のゲイン値‘1’の次の順位でRAM17に記憶してあるゲイン値‘2’を設定する。
【0099】
走査線2番の第一走査周期では、光量が‘192’であり、光量(受光量×ゲイン値)が200以上500以下の範囲外であることから、読取条件として設定されているゲイン値‘2’は適切ではないと判断することができる。そこで、走査線2番の第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読取結果情報としてRAM17に記憶するとともに、走査線3番のゲイン値として、走査線2番のゲイン値‘2’の次の順位でRAM17に記憶してあるゲイン値‘4’を設定する。
【0100】
走査線3番の第一走査周期では、光量が‘448’であり、光量(受光量×ゲイン値)が200以上500以下の範囲内であることから、読取条件として設定されているゲイン値‘4’は適切であると判断することができる。そこで、走査線3番の第一走査周期での読取結果が正常である旨を示す情報である‘○’を読取結果情報としてRAM17に記憶するとともに、走査線4番のゲイン値として、走査線3番のゲイン値‘4’をそのまま設定する。
【0101】
走査線4番の第一走査周期では、光量が‘404’であり、光量(受光量×ゲイン値)が200以上500以下の範囲内であることから、読取条件として設定されているゲイン値‘4’は適切であると判断することができる。そこで、走査線4番の第一走査周期での読取結果が正常である旨を示す情報である‘○’を読取結果情報としてRAM17に記憶するとともに、走査線5番のゲイン値として、走査線4番のゲイン値‘4’をそのまま設定する。
【0102】
走査線5番の第一走査周期では、光量が飽和光量となっており、光量(受光量×ゲイン値)が200以上500以下の範囲外であることから、読取条件として設定されているゲイン値‘4’は適切ではないと判断することができる。そこで、走査線5番の第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読取結果情報としてRAM17に記憶するとともに、走査線6番のゲイン値として、走査線5番のゲイン値‘4’の次の順位でRAM17に記憶してあるゲイン値‘8’を設定する。
【0103】
以下、第一走査周期については、順次上述した手順にて走査線ごとにゲイン値を設定する。これは、第一走査周期では、走査線ごとに前回の読取条件であるゲイン値が存在しないからである。
【0104】
次に、走査線1番の第二走査周期では、RAM17に記憶してある読取結果情報から、第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読み出す。したがって、第一走査周期と同様、直前のゲイン値及び光量に基づいて、用いる読取条件としてのゲイン値を設定する。
【0105】
すなわち、走査線1番の第二走査周期では光量が飽和光量であり、200以上500以下の範囲外であることから、読取条件として設定されているゲイン値‘64’が適切ではないと判断することができる。そこで、走査線1番の第二走査周期での読取結果が正常ではない旨を示す情報として‘×’をRAM17に記憶するとともに、走査線2番のゲイン値として、走査線1番のゲイン値‘64’の次の順位でRAM17に記憶してあるゲイン値‘128’を設定する。
【0106】
次に、走査線2番の第二走査周期では、RAM17に記憶してある読取結果情報から、第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読み出す。したがって、第一走査周期と同様、直前のゲイン値及び光量に基づいて、用いる読取条件としてのゲイン値を設定する。
【0107】
すなわち、走査線2番の第二走査周期でも光量が飽和光量であり、200以上500以下の範囲外であることから、読取条件として設定されているゲイン値‘128’が適切ではないと判断することができる。そこで、走査線2番の第二走査周期での読取結果が正常ではない旨を示す情報として‘×’をRAM17に記憶する。
【0108】
走査線3番の第二走査周期では、RAM17に記憶してある読取結果情報から、第一走査周期での読取結果が正常である旨を示す情報である‘○’を読み出す。したがって、第一走査周期で用いたゲイン値をそのまま読取条件として設定する。すなわち、走査線3番のゲイン値としてゲイン値‘4’設定する。
【0109】
以下、同様に順次ゲイン値を設定し、ゲイン値が最大値である‘256’になった場合には、次の順位に記憶してあるゲイン値として、最初の順位で記憶してあるゲイン値‘1’へ戻ってゲイン値を設定する。
【0110】
以上のように本実施の形態2によっても、一度でも正常に読み取ることができた走査線については、以後継続して正常に読み取ることができ、正常に読み取ることができなかった走査線についてのみ適切な読取条件に収束させることができることから、安定するまでの総時間を短縮することができる。
【0111】
また、バーコード2の読取処理の開始からゲイン値の設定が完了するまで走査線の位置によって光量がばらばらであり、一律にゲイン値を設定することができない場合、例えば、円柱状の被検出物体3にバーコード2が付されている場合、バーコード2の一部分しか走査線が当たらない場合等であっても、適切な読取条件であるゲイン値等を早期に特定することができ、安定したバーコード読取を実行することができるバーコード読取装置を提供することが可能となる。
【0112】
なお、上述した実施の形態1及び2では、ポリゴンミラー12を回転軸30に対して所定の角度θだけ傾斜して取り付けることにより、一定の規則性をもって複数の異なる走査線に沿って周期的に走査するようにしているが、ミラー機構としてはポリゴンミラー12に限定されるものではなく、ガルバノミラーであっても良い。ガルバノミラーを用いる場合、一定の規則性をもって複数の異なる走査線に沿って周期的に走査できるようにするためには、例えばガルバノミラーの姿勢制御を行う互いに直交する2軸の回転軸を設け、2軸制御すれば良い。
【0113】
また、上述した実施の形態1及び2では、受光信号を正常に読み取ることができたか否かを、受光信号の光量が所定の範囲内であるか否かによって判断しているが、判断方法は特にこれに限定されるものではない。例えば、読取対象がバーコード2であることから、バーコード2の両端部に存在する無信号区間を検出することができたか否か、バーコード2のスタート信号/エンド信号を検出することができたか否か、バーコード情報として含まれていることが既知である情報が含まれていたか否か等のいずれか、又はこれらの組み合わせで判断しても良い。
【0114】
その他、本発明は上記実施の形態に限定されるものではなく、本発明の趣旨の範囲内であれば多種の変形、置換等が可能であることは言うまでもない。
【図面の簡単な説明】
【0115】
【図1】本発明の実施の形態1に係るバーコード読取装置の構成を模式的に示すブロック図である。
【図2】本発明の実施の形態1に係るバーコード読取装置のポリゴンミラーの取り付け状態を示す模式図である。
【図3】本発明の実施の形態1に係るバーコード読取装置の制御装置の構成を示すブロック図である。
【図4】受光素子が受け取った光量とゲイン値との関係を走査線ごとに示した例示図である。
【図5】円柱状の被検出物体にバーコードが付されている場合の模式図である。
【図6】バーコードの一部分しか走査線が当たらない場合の例示図である。
【図7】直前の他の走査線における読取処理の結果に基づくゲイン値算出の例示図である。
【図8】本発明の実施の形態1に係るバーコード読取装置の制御装置のCPUのゲイン値修正処理の手順を示すフローチャートである。
【図9】本発明の実施の形態1に係るゲイン値修正処理の手順を示す模式図である。
【図10】本発明の実施の形態1に係るゲイン値修正処理を8個の走査線に対して繰り返し実行した場合のゲイン値算出の例示図である。
【図11】本発明の実施の形態2に係るバーコード読取装置の制御装置のCPUのゲイン値修正処理の手順を示すフローチャートである。
【図12】RAMに記憶してあるゲイン値候補の例示図である。
【図13】本発明の実施の形態2に係るゲイン値修正処理の手順を示す模式図である。
【図14】本発明の実施の形態2に係るゲイン値修正処理を8個の走査線に対して繰り返し実行した場合のゲイン値算出の例示図である。
【符号の説明】
【0116】
1 バーコード読取装置
2 バーコード
3 被検出物体
10 制御装置
11 発光素子
12 ポリゴンミラー
13 受光素子
14 コンデンサ
15 増幅回路
16 A/D変換器
17 RAM
18 通信手段
19 内部バス
20 CPU
21 入出力インタフェース
【技術分野】
【0001】
本発明は、ラスタスキャン方式のバーコード読取装置及びバーコード読取方法に関する。特に、読取結果に基づいて最適なゲイン調整を実行することができるラスタスキャン方式のバーコード読取装置及びバーコード読取方法に関する。
【背景技術】
【0002】
従来、半導体レーザを発光素子に用い、光線束によりバーコードをスキャンするバーコードリーダが多々開発されている。バーコードを確実にスキャンするためには、発光素子から発せられた光線束の反射光を、受光素子にて適切な受光強度で受光することが必要となる。
【0003】
例えば特許文献1では、バーコードをスキャンするスキャン幅を変えることにより、受光素子での受光量を調整することができる走査装置が開示されている。特許文献1では、狭い角度でスキャン幅を定める第1のスキャンモードと、広い角度でスキャン幅を定める第2のスキャンモードとを切り替えることにより受光素子の受光量を増減させ、バーコードを正しくスキャンすることができるよう調整する。
【0004】
より具体的には、例えば特許文献2に開示されているように、バーコードをスキャンするスキャン幅を狭い角度で定めた場合には、スキャン範囲に存在する受光素子の受光量を増大させることにより、バーコードのスキャン部分を特定しやすくし、特定した後は、バーコード全体をスキャン範囲とするべくスキャン幅を広い角度となるよう調整している。
【特許文献1】特許第2612617号公報
【特許文献2】特許第3058941号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
上述した特許文献1及び2に開示されている走査装置では、バーコードからの反射光の受光強度が一定範囲内に収束するように増幅回路のゲイン値を制御している。そのために、通常は直前にスキャンした場合の受光量を記憶しておき、記憶してある過去の受光量に基づいて受光強度が一定範囲に収束するようにゲイン値を増減していた。
【0006】
しかし、走査線が複数存在するラスタスキャン方式のバーコード読取装置の場合、バーコードが円柱状の被検出物体に貼付されているとき、走査線の一部のみがバーコード領域に掛かっているとき等には、走査線ごとに最適な読取条件が相違する。したがって、従来のように一律にゲイン値を増減した場合、ある走査線にとっては適切な受光量を確保することができても、ある走査線にとっては受光量が過大あるいは過小となり、バーコードを正常に読み取ることができないおそれがあるという問題点があった。
【0007】
また、過去の反射光の受光量に基づいて、ゲイン値を平均値として求めることも考えられるが、一度過大又は過小な受光量を記憶した場合にはゲイン値が収束するまで相当の時間を要する。したがって、バーコード読取を開始してから安定するまでに時間を要するという問題点もあった。
【0008】
本発明は上記事情に鑑みてなされたものであり、バーコード読み取りが安定するゲイン値を比較的短時間で収束させることができるバーコード読取装置及びバーコード読取方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
上記目的を達成するために第1発明に係るバーコード読取装置は、光を出射する発光素子と、該発光素子から出射された光の出射方向を変更し、一定の規則性をもってバーコードの複数の異なる位置を周期的に走査させるミラー機構と、バーコードからの反射光を受光する受光素子とを備え、前記受光素子で受光した走査ごとの反射光を光電変換した受光信号に基づいて、バーコード情報を取得するバーコード読取装置において、走査の周期単位でバーコード情報を正常に読み取ることができたか否かに関する読取結果情報を、複数の位置及び読み取り時に設定されている条件に関する情報に対応付けて記憶する読取結果記憶手段と、記憶されている直前の走査周期での読取結果情報に基づいて、直前の走査周期における相対位置が同じ位置でのバーコード情報を正常に読み取ることができたか否かを判断する判断手段と、該判断手段がバーコード情報を正常に読み取ることができたと判断した場合、直前の走査周期での読み取り時に設定されている条件に関する情報を読み出し、前記判断手段がバーコード情報を正常に読み取ることができなかったと判断した場合、直前の走査周期での読み取り時に設定されている条件に関する情報と異なる条件に関する情報に設定する条件設定手段とを備えることを特徴とする。
【0010】
また、第2発明に係るバーコード読取装置は、第1発明において、前記条件に関する情報は、前記受光信号を増幅する増幅回路で設定するゲイン値を含み、前記条件設定手段は、走査開始後の最初の走査周期では、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出し、以後の走査周期では、前記判断手段がバーコード情報を正常に読み取ることができたと判断した場合、直前の走査周期における相対位置が同じ位置でのゲイン値を読み出し、前記判断手段がバーコード情報を正常に読み取ることができなかったと判断した場合、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出するようにしてあることを特徴とする。
【0011】
また、第3発明に係るバーコード読取装置は、第1発明において、前記条件に関する情報は、前記受光信号を増幅する増幅回路で設定するゲイン値を含み、設定するべき所定数のゲイン値を記憶するゲイン値記憶手段を備え、前記条件設定手段は、前記判断手段がバーコード情報を正常に読み取ることができたと判断した場合、次の位置での走査において同一のゲイン値を読み出し、前記判断手段がバーコード情報を正常に読み取ることができなかったと判断した場合、記憶されているゲイン値を周期的に変更して設定するようにしてあることを特徴とする。
【0012】
次に、上記目的を達成するために第4発明に係るバーコード読取方法は、光を出射する発光素子と、該発光素子から出射された光の出射方向を変更し、一定の規則性をもってバーコードの複数の異なる位置を周期的に走査させるミラー機構と、バーコードからの反射光を受光する受光素子とを備え、前記受光素子で受光した走査ごとの反射光を光電変換した受光信号に基づいて、バーコード情報を取得するバーコード読取装置で実行することが可能なバーコード読取方法において、走査の周期単位でバーコード情報を正常に読み取ることができたか否かに関する読取結果情報を、複数の位置及び読み取り時に設定されている条件に関する情報に対応付けて記憶し、記憶されている直前の走査周期での読取結果情報に基づいて、直前の走査周期における相対位置が同じ位置でのバーコード情報を正常に読み取ることができたか否かを判断し、バーコード情報を正常に読み取ることができたと判断された場合、直前の走査周期での読み取り時に設定されている条件に関する情報を読み出し、バーコード情報を正常に読み取ることができなかったと判断された場合、直前の走査周期での読み取り時に設定されている条件に関する情報と異なる条件に関する情報に設定することを特徴とする。
【0013】
また、第5発明に係るバーコード読取方法は、第4発明において、前記条件に関する情報は、前記受光信号を増幅する増幅回路で設定するゲイン値を含み、走査開始後の最初の走査周期では、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出し、以後の走査周期では、バーコード情報を正常に読み取ることができたと判断した場合、直前の走査周期における相対位置が同じ位置でのゲイン値を読み出し、バーコード情報を正常に読み取ることができなかったと判断した場合、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出することを特徴とする。
【0014】
また、第6発明に係るバーコード読取方法は、第4発明において、前記条件に関する情報は、前記受光信号を増幅する増幅回路で設定するゲイン値を含み、設定するべき所定数のゲイン値を記憶し、バーコード情報を正常に読み取ることができたと判断された場合、次の位置での走査において同一のゲイン値を読み出し、バーコード情報を正常に読み取ることができなかったと判断された場合、記憶されているゲイン値を周期的に変更して設定することを特徴とする。
【0015】
第1発明及び第4発明では、光を出射する発光素子と、該発光素子から出射された光の出射方向を変更し、一定の規則性をもってバーコードの複数の異なる位置を周期的に走査させるミラー機構と、バーコードからの反射光を受光する受光素子とを備え、受光素子で受光した走査ごとの反射光を光電変換した受光信号に基づいて、バーコード情報を取得する。走査の周期単位でバーコード情報を正常に読み取ることができたか否かに関する読取結果情報を、複数の位置及び読み取り時に設定されている条件に関する情報に対応付けて記憶し、記憶されている直前の走査周期での読取結果情報に基づいて、直前の走査周期における相対位置が同じ位置でのバーコード情報を正常に読み取ることができたか否かを判断する。読み取ることができた場合には、直前の走査周期での読み取り時に設定されている条件に関する情報を維持し、正常に読み取ることができなかった場合には、直前の走査周期での読み取り時に設定されている条件に関する情報を変更する。一定の規則性をもってバーコードの複数の異なる位置を周期的に走査することで、直前の走査周期で正常に読み取ることができた場合には、読み取り時に設定されている条件をそのまま用いてバーコード情報を読み取り、直前の走査周期で正常に読み取ることができなかった場合には、読み取り時に設定されている条件とは異なる条件に変更することができ、バーコード情報を読み取るための適切な条件に早期に収束させることができる。したがって、例えばバーコードが円柱状の被検出物体に貼付されている場合、走査線の一部のみがバーコード領域に掛かっている場合等であっても、適切な条件に関する情報を早期に特定することができ、バーコード情報を安定して読み取ることが可能となる。
【0016】
第2発明及び第5発明では、条件に関する情報は、受光信号を増幅する増幅回路で設定するゲイン値を含み、走査開始後の最初の走査周期では、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出する。以後の走査周期では、バーコード情報を正常に読み取ることができた場合、直前の走査周期における相対位置が同じ位置でのゲイン値を読み出し、バーコード情報を正常に読み取ることができなかった場合、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出する。これにより、直前の走査周期にて正常に読み取ることができなかった位置についてのみ、記憶されている直前の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出することができ、早期にゲイン値を安定させることが可能となる。
【0017】
第3発明及び第6発明では、条件に関する情報は、受光信号を増幅する増幅回路で設定するゲイン値を含み、設定するべき所定数のゲイン値を記憶しておく。バーコード情報を正常に読み取ることができた場合は、次の位置での走査において同一のゲイン値を読み出し、バーコード情報を正常に読み取ることができなかった場合は、記憶されているゲイン値を周期的に変更して設定する。これにより、バーコード情報を正常に読み取ることができなかった場合に、その都度ゲイン値を算出する必要が無く、適切なゲイン値となるまで繰り返し走査を実行することにより、早期にゲイン値を安定させることが可能となる。
【発明の効果】
【0018】
上記構成によれば、一定の規則性をもってバーコードの複数の異なる位置を周期的に走査することで、直前の走査周期で正常に読み取ることができた場合には、読み取り時に設定されている条件をそのまま用いてバーコード情報を読み取り、直前の走査周期で正常に読み取ることができなかった場合には、読み取り時に設定されている条件とは異なる条件に変更することができ、バーコード情報を読み取るための適切な条件に早期に収束させることができる。したがって、例えばバーコードが円柱状の被検出物体に貼付されている場合、走査線の一部のみがバーコード領域に掛かっている場合等であっても、適切な条件に関する情報を早期に特定することができ、バーコード情報を安定して読み取ることが可能となる。
【発明を実施するための最良の形態】
【0019】
以下、本発明の実施の形態に係るバーコード読取装置について、図面を参照して説明する。なお、参照する図面を通じて、同一又は同様の構成又は機能を有する要素については、同一又は同様の符号を付して、重複する説明は省略する。
【0020】
(実施の形態1)
図1は、本発明の実施の形態1に係るバーコード読取装置の構成を模式的に示すブロック図である。図1に示すように本実施の形態1に係るバーコード読取装置1は、半導体レーザ、LED等の発光素子11から光を出射し、ミラー機構であるポリゴンミラー12の一面にて被検出物体3へ向けて反射させる。
【0021】
ポリゴンミラー12で反射された反射光は、被検出物体3に貼付されているバーコード2へ誘導され、CCD、フォトダイオード等の受光素子13は、バーコード2からの反射光を受光して光電変換した受光信号を出力する。受光信号は、コンデンサ14にて直流成分を排除され、増幅回路15にて設定されたゲイン値に応じて増幅され、A/D変換器16にてデジタル信号に変換された後、制御装置10へと入力される。
【0022】
制御装置10は、発光素子11の出射タイミングと、ポリゴンミラー12の回転数とを同期させ、被検出物体3へ出射される光の幅とタイミングとを制御する。また、増幅回路15のゲイン値は、バーコード2で示されるバーコード情報のデコード時に後述する方法にて設定される。
【0023】
図2は、本発明の実施の形態1に係るバーコード読取装置1のポリゴンミラー12の取り付け状態を示す模式図である。図2に示すように本実施の形態1に係るポリゴンミラー12は、回転軸30に対して所定の角度θだけ傾斜して取り付けられている。回転軸30の回転によりポリゴンミラー12が回転した場合、発光素子11から出射された光のポリゴンミラー12の各面ごとでの入射角が変動し、一定の規則性をもって複数の異なる走査線に沿って周期的に走査することができる。
【0024】
図3は、本発明の実施の形態1に係るバーコード読取装置1の制御装置10の構成を示すブロック図である。図3に示すように本実施の形態に係るバーコード読取装置1の制御装置10は、少なくともCPU(中央演算装置)20、RAM17、通信手段18及び上述したハードウェアを接続する内部バス19で構成されている。CPU20は、内部バス19を介して制御装置10の上述したようなハードウェア各部と接続されており、上述したハードウェア各部の動作を制御するとともに、RAM17に記憶されているコンピュータプログラムに従って、種々のソフトウェア的機能を実行する。RAM17は、SRAM、SDRAM等の揮発性メモリで構成され、コンピュータプログラムの実行時にロードモジュールが展開され、コンピュータプログラムの実行時に発生する一時的なデータ等を記憶する。例えば、バーコード2の読取処理を実行した走査線ごとの読取データ(受光量、光量、ゲイン値等)を記憶する。
【0025】
通信手段18は内部バス19に接続されており、発光素子11、ポリゴンミラー12の回転駆動部、増幅回路15等に通信線を介して接続されており、発光素子11のオンオフ信号、ポリゴンミラー12の回転速度等の指示信号、ゲイン値の指示信号等を送出する。また、インターネット、LAN、WAN等の外部のネットワークに接続されることにより、外部のコンピュータ等ともデータ送受信を行うことが可能となる。なお、RAM17に記憶されているコンピュータプログラムは、通信手段18を介して外部コンピュータからダウンロードされたコンピュータプログラムである。
【0026】
制御装置10のCPU20は、受光信号取得手段201、微分処理手段203と、フィルタ処理手段204と、二値化処理手段205とを有する信号処理手段202、デコード手段206、読取結果記憶手段207、判断手段208及び条件設定手段209を含み、これらの処理動作を制御する。
【0027】
受光信号取得手段201は、通信手段18で受信した、デジタル信号としての受光信号を取得する。すなわち、バーコード2での反射光は、CCD、フォトダイオード等の受光素子13にて受光され、光電変換される。光電変換されたアナログ信号は、コンデンサ14にて直流成分を排除され、増幅回路15にて設定されたゲイン値に応じて増幅され、A/D変換器16にてデジタル信号に変換される。受光信号取得手段201は、斯かるデジタル信号を取得する。
【0028】
信号処理手段202は、取得したデジタル信号である受光信号を、デコードすることが可能な状態の信号へ前処理する。信号処理手段202の微分処理手段203は、取得した受光信号を微分処理することにより、受光信号のエッジ部分を抽出する。
【0029】
フィルタ処理手段204は、特定の周波数帯域に存在する信号のみを通過させるバンドパスフィルタである。二値化処理手段205は、フィルタ処理手段204により限定された周波数帯域の信号について、所定の閾値より大きい信号をオン状態に、小さい信号をオフ状態とすることにより、パルス信号化する。
【0030】
デコード手段206は、信号処理手段202にてパルス信号化された信号の内容を読み取る。具体的には、バーコード2の開始点及び終了点を示す情報、パリティ情報等を読み取るとともに、バーコード情報を読み取って出力し、RAM17に記憶する。バーコード情報を読み取ることができなかった場合にはその旨を示す情報を出力し、RAM17に記憶する。
【0031】
読取結果記憶手段207は、デコード手段206で、一定の規則性をもって複数の異なる走査線(位置)に沿って周期的に走査した場合に、周期単位でバーコード情報を正常に読み取ることができたか否かに関する読取結果情報を、読み取り時に設定されている条件に関する情報及び複数の走査線に対応付けてRAM17に記憶する。したがって、何周期目の走査では、どの走査線でバーコード情報を正常に読み取ることができ、どの走査線でバーコード情報を読み取ることができなかったのかを、条件に関する情報と対応付けた履歴情報として記憶することができる。なお、条件に関する情報とは、例えば増幅回路15に設定するゲイン値等の情報全般を意味している。
【0032】
判断手段208は、読取結果記憶手段207にてRAM17に記憶されている、直前の走査周期での読取結果情報に基づいて、直前の走査周期における相対位置が同じ走査線でのバーコード情報を正常に読み取ることができたか否かを判断する。例えばn(nは自然数)番の走査線でバーコード情報を読み取る場合、前回の走査周期でn(nは自然数)番の走査線にてバーコード情報を正常に読み取ることができたか否かを判断する。
【0033】
条件設定手段209は、判断手段208で、前回の走査周期ではバーコード情報を正常に読み取ることができたと判断した場合、前回の走査周期での読み取り時に設定されている条件に関する情報を読み出し、バーコード情報を正常に読み取ることができなかったと判断した場合、直前の読み取り時に設定されている条件に関する情報及び受光量に基づいて新たな条件に関する情報を設定する。すなわち、正常に読み取ることができなかった走査線についてのみ、新たな条件に関する情報、例えば新たなゲイン値に設定する。
【0034】
従来は、走査線ごとに増幅回路15のゲイン値を設定し、受光素子13で受光した受光量にゲイン値を乗算した値を光量として制御装置10が受け取る。図4は、受光素子13が受け取った光量とゲイン値との関係を走査線ごとに示した例示図である。図4の例では、走査線1番及び2番の光量が他の走査線に比べて大きくなっており、走査線1番については最大光量を超えて飽和していることを示している。
【0035】
この場合、光量を各走査線で略均一にするためには、走査線1番及び2番のゲイン値を下げれば良い。特に走査線2番については、ゲイン値を4分の1に設定することにより光量が他の走査線と一致することが明白である。一方、走査線1番については、とりあえずゲイン値を8分の1に設定することにより、光量を他の走査線に近づけることができる。
【0036】
このようなゲイン値の調整方法は、バーコード2の読取処理の開始からゲイン値の設定が完了するまで光量が一定であることが前提となっている。しかし、実際にはバーコード2の読取処理の開始からゲイン値の設定が完了するまで光量が一定しない状況も多々考えうる。
【0037】
図5は、円柱状の被検出物体3にバーコード2が付されている場合の模式図である。図5では、円柱状の被検出物体3として試験管等を想定している。図5に示すように、走査線ごとにバーコード読取装置1とバーコード2を付してある被検出物体3との直線距離が変動する場合、被検出物体(試験管)3の中央付近に当たる走査線4番及び5番では正反射に近いことから反射光の光量が大きいのに対して、被検出物体(試験管)3の中央から離れた走査線1番及び8番では、バーコード読取装置1との距離が離れること、反射光が拡散しやすいこと等により、光量が相対的に小さくなってしまう。
【0038】
また図6は、バーコード2の一部分しか走査線が当たらない場合の例示図である。図6に示すように、走査線1番乃至3番はバーコード2上に存在するのに対し、走査線4番乃至8番はバーコード2に直接当たっていない。したがって、走査線4番乃至8番は白紙を走査している場合と同様、正反射の強い状態となるために反射光の光量が大きくなる。
【0039】
これらの場合、バーコード2の読取処理の開始からゲイン値の設定が完了するまで走査線の位置によって光量がばらばらであり、一律にゲイン値を設定することができない。そこで、複数の走査線について順番にバーコード読み取りを実行する場合、直前に読取処理を実行した走査線における反射光の光量、及び設定されているゲイン値に基づいて、ゲイン値を決定することが良く行われている。
【0040】
図7は、直前の他の走査線における読取処理の結果に基づくゲイン値算出の例示図である。図7では、例えば反射光の受光量が、走査線1番から8番まで順に、50、60、70、100、150、100、70、60である場合について説明する。図7の数字は、1〜8までが1回目に順次読み取った走査線1番乃至8番のそれぞれの読取処理の結果を示している。例えば走査線1番では、ゲイン値が‘64’であるが、光量は‘1000’を超えた飽和光量となっている。したがって、走査線2番では、一律にゲイン値を走査線1番の読取処理時に用いたゲイン値の8分の1である‘8’に設定し、光量‘480’を得る。
【0041】
次に走査線3番では、前回のゲイン値、すなわち走査線2番の読取処理時に用いたゲイン値‘8’と、直前の読取処理時の光量、すなわち走査線2番の読取処理の結果である光量‘480’を用いて、光量が‘100’になるよう補正する。すなわち、走査線3番のゲイン値は、8×100/480で‘1.66667’を得る。
【0042】
以下、順次、直前の読取処理時に用いたゲイン値及び読取処理の結果である光量に基づいて、読取処理時に設定するゲイン値を設定して、読取処理の結果である光量を走査線ごとに算出している。
【0043】
走査線9番乃至11番は、それぞれ走査線1番乃至3番に着目して、走査線1番及び2番のゲイン値を修正した読取処理の結果を9番及び10番に、走査線3番をそのままのゲイン値で読み取った読取処理の結果を11番に、それぞれ示している。
【0044】
しかし、図7の例では、直前の他の走査線で読取処理を実行した時点でのゲイン値及び光量を基準にゲイン値を継続して修正しているため、既に正常に読み取ることができている走査線についても直前の読取処理を実行した時点でのゲイン値及び光量を基準にゲイン値を修正する。したがって、本来修正する必要が無いゲイン値も無差別に修正することからゲイン値が一定範囲内に収束するまで相当の時間を要し、安定してバーコード2を読み取るまでに時間がかかるという問題が生じる。
【0045】
そこで、本実施の形態1では、走査線ごとに読取処理を実行する点は従来と同様であるものの、正常に読み取ることができたか否かを走査線ごとに判断し、正常に読み取ることができなかった場合にのみ、直前の他の走査線で読取処理を実行した時点でのゲイン値及び光量(受光量にゲイン値を乗算した値)に基づいてゲイン値を設定する。
【0046】
図8は、本発明の実施の形態1に係るバーコード読取装置1の制御装置10のCPU20のゲイン値修正処理の手順を示すフローチャートである。図8の例では、説明を簡単にするために、直前の走査線にてバーコード情報を正常に読み取ることができなかった場合、ゲイン値を直前の走査線の読取処理時に設定されていたゲイン値の2分の1となるよう更新している。図8において、制御装置10のCPU20は、カウンタnを初期値‘1’に設定し(ステップS801)、第nの走査線でバーコード2の読取処理を実行して(ステップS802)、読取処理の結果である読取結果情報として、バーコード情報を正常に読み取ることができたか否かに関する情報、CPU20が受け取った光量(受光素子13での受光量×ゲイン値)及びゲイン値をRAM17に記憶する(ステップS803)。
【0047】
なお、バーコード情報を正常に読み取ることができたか否かを判断する方法は、特に限定されるものではない。本実施の形態1では、CPU20が受け取った光量が100より大きく600より小さいか否かによって判断している。もちろん、判断条件はこれに限定されるものではない。
【0048】
CPU20は、現在の読取処理が第一の走査周期での読取処理であるか否かを判断し(ステップS804)、CPU20が、第一の走査周期での読取処理であると判断した場合(ステップS804:YES)、CPU20は、RAM17に記憶してある光量及びゲイン値に基づいて、次の走査線で用いるべき読取条件、例えば読取処理で設定するゲイン値を算出する(ステップS805)。CPU20は、読取条件を、算出された新たな読取条件に変更する(ステップS806)。もちろん、読取処理結果によっては読取条件が前回と同一であっても良い。
【0049】
CPU20は、カウンタnを‘1’インクリメントし(ステップS807)、一走査周期の読取処理が終了したか否かを判断する(ステップS808)。CPU20が、一走査周期の読取処理が終了していないと判断した場合(ステップS808:NO)、CPU20は、処理をステップS802へ戻し、上述の処理を繰り返す。
【0050】
CPU20が、一走査周期の読取処理が終了したと判断した場合(ステップS808:YES)、CPU20は、カウンタnを初期値‘1’に再設定し(ステップS809)、処理をステップS802へ戻して上述の処理を繰り返す。
【0051】
CPU20が、現在の読取処理が第一の走査周期での読取処理ではないと判断した場合(ステップS804:NO)、CPU20は、前回の走査周期で第n走査線の読取処理にてバーコード情報を正常に読み取ることができたか否かを判断する(ステップS810)。具体的には、デコード手段206にて出力されるバーコード2の開始点及び終了点を示す情報、パリティ情報、読み取ったバーコード情報等がRAM17に記憶されていれば正常に読み取ることができたと判断し、バーコード情報を読み取ることができなかった旨を示す情報がRAM17に記憶されている場合には正常に読み取ることができなかったと判断する。
【0052】
CPU20が、前回の走査周期で第n走査線の読取処理にてバーコード情報を正常に読み取ることができなかったと判断した場合(ステップS810:NO)、CPU20は、RAM17に記憶してある光量及びゲイン値に基づいて、次の走査線で用いるべき読取条件、例えば読取処理で設定するゲイン値を算出する(ステップS811)。CPU20は、読取条件を、算出された新たな読取条件に変更する(ステップS812)。もちろん、読取処理結果によっては読取条件が前回と同一であっても良い。
【0053】
CPU20が、前回の走査周期で第n走査線の読取処理にてバーコード情報を正常に読み取ることができたと判断した場合(ステップS810:YES)、CPU20は、前回の走査周期での読取条件に設定し(ステップS813)、カウンタnを‘1’インクリメントする(ステップS814)。一度正常に読み取ることができた読取条件であれば、その後同一読取条件にて正常に読み取ることができなくなることは考えにくいことから、同一の走査線について前回の走査周期での読取処理時に用いた読取条件をそのまま用いることが望ましいからである。
【0054】
CPU20は、全ての走査線の光量が所定の範囲内に収束したか否かを判断する(ステップS815)。CPU20が、まだ収束していないと判断した場合(ステップS815:NO)、CPU20は、処理をステップS808へ戻して上述した処理を繰り返す。CPU20が、収束したと判断した場合(ステップS815:YES)、CPU20は、処理を終了する。
【0055】
図9は、本発明の実施の形態1に係るゲイン値修正処理の手順を示す模式図である。図9の左端の数字は、8個の走査線を識別する番号であり、上から走査線1番、2番、・・・、8番となっている。
【0056】
図9の例では、第一走査周期において、走査線1番から8番まで順次、直前の走査線での光量及びゲイン値に基づいて新たなゲイン値を算出している。すなわち、走査線1番がゲインAであった場合、走査線2番はゲインA及び走査線1番での光量に基づいて算出されたゲインBに設定し、走査線3番はゲインB及び走査線2番での光量に基づいて算出されたゲインCに設定し、以下順次走査線8番にゲインHを設定するまでゲイン値を算出する。
【0057】
また、算出されたゲイン値にて、バーコード情報を正常に読み取ることができたか否かに関する読取結果情報をRAM17に記憶する。図9の例では、‘OK’が正常に読み取ることができた旨を示し、‘NG’が正常に読み取ることができなかった旨を示している。図9の例では、第一走査周期において、走査線1番から4番まではバーコード情報を正常に読み取ることができていないが、走査線5番から8番まではバーコード情報を正常に読み取ることができている。
【0058】
第二走査周期では、同じ走査線について、前回の走査周期での読取結果情報に基づいて、ゲイン値を算出するか否かを決定している。すなわち第一走査周期にて‘OK’であった走査線については第一走査周期にて設定されているゲイン値を変更せず、第一走査周期にて‘NG’であった走査線については、第一走査周期で算出した方法と同様に、直前の走査線での光量及びゲイン値に基づいて、新たなゲイン値を算出している。
【0059】
図9の例では、走査線1番は第一走査周期にてバーコード情報を正常に読み取ることができていないことから、ゲイン値は、直前の走査線である第一走査周期の走査線8番の光量及びゲイン値に基づいて算出する。すなわち第一走査周期でのゲイン値であるゲインAとは無関係にゲインIに設定される。同様に、走査線2番も第一走査周期にてバーコード情報を正常に読み取ることができていないことから、ゲイン値は、直前の走査線である第二走査周期の走査線1番の光量及びゲイン値に基づいてゲインJが算出される。以下同様に走査線4番までは第一走査周期にてバーコード情報を正常に読み取ることができていないことから、ゲイン値は、直前の走査線での光量及びゲイン値に基づいて算出される。
【0060】
走査線5番は、第一走査周期にてバーコード情報を正常に読み取ることができていることから、ゲイン値は第一走査周期でのゲイン値であるゲインEがそのまま維持される。以下、同様に走査線6番から8番までは、第一走査周期にてバーコード情報を正常に読み取ることができていることから、ゲイン値として第一走査周期でのゲイン値であるゲインF、ゲインG、ゲインHがそれぞれ維持される。
【0061】
第二走査周期にて、すべての走査線についてバーコード情報を正常に読み取ることができるようになった場合、すなわち走査線1番から8番まで全て‘OK’となった場合には、第三走査周期以降、全ての走査線について設定されているゲイン値を維持してバーコード情報を読み取る。‘NG’となる走査線があった場合には、第三走査周期以降も上述と同様の方法によって新たなゲイン値を算出する。
【0062】
具体的なゲイン値の算出例を以下に示す。図10は、図8に示す本発明の実施の形態1に係るゲイン値修正処理を8個の走査線に対して繰り返し実行した場合のゲイン値算出の例示図である。図10の左端欄内の数字は、8個の走査線を識別する番号であり、上から走査線1番、2番、・・・、8番となっている。
【0063】
図10の例では、初期値を‘64’とし、前回の走査線での光量(受光量×ゲイン値)が200以上500以下の範囲内である場合には前回の走査線でのゲイン値を維持し、範囲外である場合には前回の走査線でのゲイン値を2分の1倍することで新たなゲイン値を設定する、というルールでゲイン値を設定している。
【0064】
走査線1番の第一走査周期では、光量が飽和光量であることから、読取条件として設定されているゲイン値‘64’は適切ではないと判断することができる。そこで、走査線1番の第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読取結果情報としてRAM17に記憶するとともに、走査線2番のゲイン値として、走査線1番のゲイン値‘64’を用いて、(64×1/2)にてゲイン値‘32’を得る。なお、読取結果が正常であるか否かは、光量が100以上600以下の範囲内であるか否かに基づいて判断するものとする。
【0065】
以下、走査線3番の第一走査周期までは、光量が飽和光量であることから、各走査線の第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読取結果情報としてRAM17に記憶するとともに、各走査線のゲイン値として、直前の走査線でのゲイン値を2分の1倍した新たなゲイン値を設定している。
【0066】
走査線5番の第一周期では、光量が‘424’であり、200以上500以下の範囲内であることから、読取条件として設定されているゲイン値‘4’は適切であると判断することができる。そこで、走査線5番の第一走査周期での読取結果が正常である旨を示す情報である‘○’を読取結果情報としてRAM17に記憶するとともに、走査線6番のゲイン値として、走査線5番のゲイン値‘4’をそのまま設定する。
【0067】
以下、同様に第一走査周期については、直前のゲイン値及び光量に基づいて、用いる読取条件としてのゲイン値を設定する。これは、第一走査周期では、走査線ごとに前回の読取条件であるゲイン値が算出されていないからである。
【0068】
次に、走査線1番の第二走査周期では、RAM17に記憶してある読取結果情報から、第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読み出す。したがって、第一走査周期と同様、直前のゲイン値及び光量に基づいて、用いる読取条件としてのゲイン値を設定する。
【0069】
すなわち、走査線1番の第二走査周期では光量が‘528’であり、200以上500以下の範囲外であることから、読取条件として設定されているゲイン値‘4’が適切ではないと判断することができる。そこで、走査線1番の第二走査周期での読取結果が正常である旨を示す情報として‘○’をRAM17に記憶するとともに、走査線2番のゲイン値として、走査線1番のゲイン値‘4’を2分の1倍した新たなゲイン値‘2’を設定する。
【0070】
次に、走査線2番の第二走査周期では、RAM17に記憶してある読取結果情報から、第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読み出す。したがって、第一走査周期と同様、直前のゲイン値及び光量に基づいて、用いる読取条件としてのゲイン値を設定する。
【0071】
すなわち、走査線2番の第二走査周期では光量が‘800’であり、200以上500以下の範囲外であることから、読取条件として設定されているゲイン値‘2’が適切ではないと判断することができる。そこで、走査線2番の第二走査周期での読取結果が正常ではない旨を示す情報として‘×’をRAM17に記憶するとともに、走査線3番のゲイン値として、走査線2番のゲイン値‘2’を2分の1倍した新たなゲイン値‘1’を設定する。
【0072】
以下、走査線4番の第二走査周期までは、RAM17に記憶してある読取結果情報から、第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読み出すことから、第一走査周期と同様、直前のゲイン値及び光量に基づいて、用いる読取条件としてのゲイン値を設定する。
【0073】
次に、走査線5番の第二走査周期では、RAM17に記憶してある読取結果情報から、第一走査周期での読取結果が正常である旨を示す情報である‘○’を読み出す。したがって、第一走査周期でのゲイン値をそのまま維持し、読取条件としてゲイン値‘4’を設定する。
【0074】
以下、走査線8番までは、第一走査周期での読取結果が正常である旨を示す情報である‘○’が記憶されていることから、いずれも第一走査周期でのゲイン値‘4’を、そのままゲイン値として設定する。第三走査周期以降についても、同様の処理を繰り返す。
【0075】
以上のように本実施の形態1によれば、一度でも正常に読み取ることができた走査線については、以後継続して正常に読み取ることができ、正常に読み取ることができなかった走査線についてのみ適切な読取条件に収束させることができることから、安定するまでの総時間を短縮することができる。
【0076】
また、バーコード2の読取処理の開始からゲイン値の設定が完了するまで走査線の位置によって光量がばらばらであり、一律にゲイン値を設定することができない場合、例えば、円柱状の被検出物体3にバーコード2が付されている場合、バーコード2の一部分しか走査線が当たらない場合等であっても、適切な読取条件であるゲイン値等を早期に特定することができ、安定したバーコード読取を実行することができるバーコード読取装置を提供することが可能となる。
【0077】
(実施の形態2)
本発明の実施の形態2に係るバーコード読取装置の構成は、実施の形態1と同様であることから、同一の符号を付することにより詳細な説明を省略する。本実施の形態2では、走査線ごとに読取処理を実行する点は従来と同様であるものの、正常に読み取ることができたか否かを走査線ごとに判断し、正常に読み取ることができなかった場合には、事前に記憶してある複数のゲイン値を、所定の順序で繰り返し設定する点で実施の形態1と相違する。
【0078】
図11は、本発明の実施の形態2に係るバーコード読取装置1の制御装置10のCPU20のゲイン値修正処理の手順を示すフローチャートである。図11において、制御装置10のCPU20は、カウンタnを初期値‘1’に設定し(ステップS1101)、第nの走査線でバーコード2の読取処理を実行して(ステップS1102)、読取処理の結果である読取結果情報として、バーコード情報を正常に読み取ることができたか否かに関する情報、CPU20が受け取った光量(受光素子13での受光量×ゲイン値)及びゲイン値をRAM17に記憶する(ステップS1103)。
【0079】
なお、バーコード情報を正常に読み取ることができたか否かを判断する方法は、特に限定されるものではない。本実施の形態2では、CPU20が受け取った光量が100以上600以下の範囲内であるか否かに基づいて判断する。
【0080】
CPU20は、現在の読取処理が第一の走査周期での読取処理であるか否かを判断し(ステップS1104)、CPU20が、第一の走査周期での読取処理であると判断した場合(ステップS1104:YES)、CPU20は、今回の走査でバーコード情報を正常に読み取ることができたか否かを判断する(ステップS1105)。具体的には、デコード手段206にて出力されるバーコード2の開始点及び終了点を示す情報、パリティ情報、読み取ったバーコード情報等がRAM17に記憶されていれば正常に読み取ることができたと判断し、バーコード情報を読み取ることができなかった旨を示す情報がRAM17に記憶されている場合には正常に読み取ることができなかったと判断する。
【0081】
CPU20が、バーコード情報を正常に読み取ることができなかったと判断した場合(ステップS1105:NO)、CPU20は、RAM17に事前に記憶してあるゲイン値候補から次に設定するべきゲイン値を選択する(ステップS1106)。図12は、RAM17に記憶してあるゲイン値候補の例示図である。図12の例では、ゲインAからゲインIまでの9つのゲイン値が、1〜9の順序付けをされて記憶されている。CPU20は、順序付けにしたがって順次、ゲイン値を選択する。
【0082】
図11に戻って、制御装置10のCPU20が、バーコード情報を正常に読み取ることができたと判断した場合(ステップS1105:YES)、CPU20は、ゲイン値を変更する必要が無いと判断し、ステップS1106をスキップし、カウンタnを‘1’インクリメントして(ステップS1107)、一走査周期の読取処理が終了したか否かを判断する(ステップS1108)。CPU20が、一走査周期の読取処理が終了していないと判断した場合(ステップS1108:NO)、CPU20は、処理をステップS1102へ戻し、上述の処理を繰り返す。
【0083】
CPU20が、一走査周期の読取処理が終了したと判断した場合(ステップS1108:YES)、CPU20は、カウンタnを初期値‘1’に再設定し(ステップS1109)、処理をステップS1102へ戻して上述の処理を繰り返す。
【0084】
CPU20が、現在の読取処理が第一の走査周期での読取処理ではないと判断した場合(ステップS1104:NO)、CPU20は、前回の走査周期で第n走査線の読取処理にてバーコード情報を正常に読み取ることができたか否かを判断する(ステップS1110)。具体的には、デコード手段206にて出力されるバーコード2の開始点及び終了点を示す情報、パリティ情報、読み取ったバーコード情報等がRAM17に記憶されていれば正常に読み取ることができたと判断し、バーコード情報を読み取ることができなかった旨を示す情報がRAM17に記憶されている場合には正常に読み取ることができなかったと判断する。
【0085】
CPU20が、前回の走査周期で第n走査線の読取処理にてバーコード情報を正常に読み取ることができなかったと判断した場合(ステップS1110:NO)、CPU20は、直前の走査線でのゲイン値、すなわち第n−1走査線の読取処理で設定されていたゲイン値と、前回の走査周期で第n走査線の読取処理に設定されていたゲイン値とが同一であるか否かを判断する(ステップS1111)。CPU20が、同一であると判断した場合(ステップS1111:YES)、CPU20は、RAM17に事前に記憶してあるゲイン値候補から次に設定するべきゲイン値を選択する(ステップS1112)。CPU20が、同一ではないと判断した場合(ステップS1111:NO)、CPU20は、直前の走査線でのゲイン値、すなわち第n−1走査線の読取処理で設定されていたゲイン値を選択する(ステップS1113)。
【0086】
CPU20が、前回の走査周期で第n走査線の読取処理にてバーコード情報を正常に読み取ることができたと判断した場合(ステップS1110:YES)、CPU20は、ステップS1111乃至ステップS1113をスキップして、カウンタnを‘1’インクリメントする(ステップS1114)。CPU20は、全ての走査線の光量が所定の範囲内に収束したか否かを判断し(ステップS1115)、CPU20が、まだ収束していないと判断した場合(ステップS1115:NO)、CPU20は、処理をステップS1108へ戻して上述した処理を繰り返す。CPU20が、収束したと判断した場合(ステップS1115:YES)、CPU20は、処理を終了する。
【0087】
図13は、本発明の実施の形態2に係るゲイン値修正処理の手順を示す模式図である。図13の左端の数字は、8個の走査線を識別する番号であり、上から走査線1番、2番、・・・、8番となっている。図13の例では、第一走査周期において、走査線1番から8番まで順次、直前の走査線での光量及びゲイン値に基づいて、所定のルールでゲイン値を設定している。
【0088】
まず、設定されたゲイン値にて、バーコード情報を正常に読み取ることができたか否かに関する読取結果情報をRAM17に記憶する。図13の例では、‘OK’が正常に読み取ることができた旨を示し、‘NG’が正常に読み取ることができなかった旨を示している。
【0089】
そして、走査線1番がゲインAであった場合、走査線2番は、走査線1番でバーコード情報を正常に読み取ることができたか否かを判断し、正常に読み取ることができた場合にはゲインAのまま、正常に読み取ることができなかった場合には、RAM17に記憶してある次の順位のゲイン値であるゲインBに変更する。
【0090】
図13の例では、走査線1番が‘NG’であることから、走査線2番は、RAM17に記憶してある次の順位のゲイン値であるゲインBに変更している。以下同様に、直前の走査線でバーコード情報を正常に読み取ることができた場合、すなわち‘OK’である場合には、直前の走査線でのゲイン値をそのまま用い、正常に読み取ることができなかった場合、すなわち‘NG’である場合には、RAM17に記憶してある次の順位のゲイン値に変更する。
【0091】
第二走査周期では、同じ走査線について、前回の走査周期での読取結果情報に基づいて、ゲイン値を算出するか否かを決定している。すなわち第一走査周期にて‘OK’であった走査線については第一走査周期にて設定されているゲイン値を変更せず、第一走査周期にて‘NG’であった走査線については、第一走査周期で算出した方法と同様に、直前の走査線での光量及びゲイン値に基づいて、新たなゲイン値を設定している。
【0092】
図13の例では、走査線1番は第一走査周期にてバーコード情報を正常に読み取ることができていないことから、ゲイン値は、直前の走査線である第一走査周期の走査線8番の光量及びゲイン値に基づいて設定する。すなわち第一走査周期でのゲイン値であるゲインAとは無関係にゲインGに設定される。同様に、走査線2番も第一走査周期にてバーコード情報を正常に読み取ることができていないことから、ゲイン値は、直前の走査線である第二走査周期の走査線1番の光量及びゲイン値に基づいてゲインHに設定される。
【0093】
走査線3番は第一走査周期にてバーコード情報を正常に読み取ることができていることから、ゲイン値は、直前の走査線である第一走査周期の走査線3番のゲイン値であるゲインCに設定される。走査線4番も第一走査周期にてバーコード情報を正常に読み取ることができていることから、ゲイン値は、直前の走査線である第一走査周期の走査線4番のゲイン値であるゲインCに設定される。
【0094】
走査線5番は第一走査周期にてバーコード情報を正常に読み取ることができていないことから、ゲイン値は、直前の走査線である第一走査周期の走査線4番の光量及びゲイン値に基づいて設定する。すなわち第一走査周期でのゲイン値であるゲインCとは無関係に、直前の走査線である第二走査周期の走査線4番で正常に読み取ることができていることから、第二走査周期の走査線4番で設定されているゲインCに設定される。
【0095】
以下同様に、前回の走査周期にてバーコード情報を正常に読み取ることができているか否か、及び直前の走査線で正常に読み取ることができているか否かに応じて、順次RAM17に記憶されているゲイン値を周期的に設定していく。
【0096】
具体的なゲイン値の算出例を以下に示す。図14は、図11に示す本発明の実施の形態2に係るゲイン値修正処理を8個の走査線に対して繰り返し実行した場合のゲイン値算出の例示図である。図14の左端欄内の数字は、8個の走査線を識別する番号であり、上から走査線1番、2番、・・・、8番となっている。なお、図12に示すゲインA乃至Iは、それぞれ‘1’、‘2’、‘4’、‘8’、‘16’、‘32’、‘64’、‘128’、‘256’に設定している。
【0097】
図14の例では、ゲイン値の初期値を‘1’とし、前回の走査線での光量(受光量×ゲイン値)が200以上500以下の範囲内である場合には前回の走査線でのゲイン値を維持し、範囲外である場合には、RAM17に記憶してある次の順位のゲイン値に設定する、というルールでゲイン値を設定する。
【0098】
走査線1番の第一走査周期では、光量が‘111’であり、光量(受光量×ゲイン値)が200以上500以下の範囲外であることから、読取条件として設定されているゲイン値‘1’は適切ではないと判断することができる。そこで、走査線1番の第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読取結果情報としてRAM17に記憶するとともに、走査線2番のゲイン値として、走査線1番のゲイン値‘1’の次の順位でRAM17に記憶してあるゲイン値‘2’を設定する。
【0099】
走査線2番の第一走査周期では、光量が‘192’であり、光量(受光量×ゲイン値)が200以上500以下の範囲外であることから、読取条件として設定されているゲイン値‘2’は適切ではないと判断することができる。そこで、走査線2番の第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読取結果情報としてRAM17に記憶するとともに、走査線3番のゲイン値として、走査線2番のゲイン値‘2’の次の順位でRAM17に記憶してあるゲイン値‘4’を設定する。
【0100】
走査線3番の第一走査周期では、光量が‘448’であり、光量(受光量×ゲイン値)が200以上500以下の範囲内であることから、読取条件として設定されているゲイン値‘4’は適切であると判断することができる。そこで、走査線3番の第一走査周期での読取結果が正常である旨を示す情報である‘○’を読取結果情報としてRAM17に記憶するとともに、走査線4番のゲイン値として、走査線3番のゲイン値‘4’をそのまま設定する。
【0101】
走査線4番の第一走査周期では、光量が‘404’であり、光量(受光量×ゲイン値)が200以上500以下の範囲内であることから、読取条件として設定されているゲイン値‘4’は適切であると判断することができる。そこで、走査線4番の第一走査周期での読取結果が正常である旨を示す情報である‘○’を読取結果情報としてRAM17に記憶するとともに、走査線5番のゲイン値として、走査線4番のゲイン値‘4’をそのまま設定する。
【0102】
走査線5番の第一走査周期では、光量が飽和光量となっており、光量(受光量×ゲイン値)が200以上500以下の範囲外であることから、読取条件として設定されているゲイン値‘4’は適切ではないと判断することができる。そこで、走査線5番の第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読取結果情報としてRAM17に記憶するとともに、走査線6番のゲイン値として、走査線5番のゲイン値‘4’の次の順位でRAM17に記憶してあるゲイン値‘8’を設定する。
【0103】
以下、第一走査周期については、順次上述した手順にて走査線ごとにゲイン値を設定する。これは、第一走査周期では、走査線ごとに前回の読取条件であるゲイン値が存在しないからである。
【0104】
次に、走査線1番の第二走査周期では、RAM17に記憶してある読取結果情報から、第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読み出す。したがって、第一走査周期と同様、直前のゲイン値及び光量に基づいて、用いる読取条件としてのゲイン値を設定する。
【0105】
すなわち、走査線1番の第二走査周期では光量が飽和光量であり、200以上500以下の範囲外であることから、読取条件として設定されているゲイン値‘64’が適切ではないと判断することができる。そこで、走査線1番の第二走査周期での読取結果が正常ではない旨を示す情報として‘×’をRAM17に記憶するとともに、走査線2番のゲイン値として、走査線1番のゲイン値‘64’の次の順位でRAM17に記憶してあるゲイン値‘128’を設定する。
【0106】
次に、走査線2番の第二走査周期では、RAM17に記憶してある読取結果情報から、第一走査周期での読取結果が正常でなかった旨を示す情報である‘×’を読み出す。したがって、第一走査周期と同様、直前のゲイン値及び光量に基づいて、用いる読取条件としてのゲイン値を設定する。
【0107】
すなわち、走査線2番の第二走査周期でも光量が飽和光量であり、200以上500以下の範囲外であることから、読取条件として設定されているゲイン値‘128’が適切ではないと判断することができる。そこで、走査線2番の第二走査周期での読取結果が正常ではない旨を示す情報として‘×’をRAM17に記憶する。
【0108】
走査線3番の第二走査周期では、RAM17に記憶してある読取結果情報から、第一走査周期での読取結果が正常である旨を示す情報である‘○’を読み出す。したがって、第一走査周期で用いたゲイン値をそのまま読取条件として設定する。すなわち、走査線3番のゲイン値としてゲイン値‘4’設定する。
【0109】
以下、同様に順次ゲイン値を設定し、ゲイン値が最大値である‘256’になった場合には、次の順位に記憶してあるゲイン値として、最初の順位で記憶してあるゲイン値‘1’へ戻ってゲイン値を設定する。
【0110】
以上のように本実施の形態2によっても、一度でも正常に読み取ることができた走査線については、以後継続して正常に読み取ることができ、正常に読み取ることができなかった走査線についてのみ適切な読取条件に収束させることができることから、安定するまでの総時間を短縮することができる。
【0111】
また、バーコード2の読取処理の開始からゲイン値の設定が完了するまで走査線の位置によって光量がばらばらであり、一律にゲイン値を設定することができない場合、例えば、円柱状の被検出物体3にバーコード2が付されている場合、バーコード2の一部分しか走査線が当たらない場合等であっても、適切な読取条件であるゲイン値等を早期に特定することができ、安定したバーコード読取を実行することができるバーコード読取装置を提供することが可能となる。
【0112】
なお、上述した実施の形態1及び2では、ポリゴンミラー12を回転軸30に対して所定の角度θだけ傾斜して取り付けることにより、一定の規則性をもって複数の異なる走査線に沿って周期的に走査するようにしているが、ミラー機構としてはポリゴンミラー12に限定されるものではなく、ガルバノミラーであっても良い。ガルバノミラーを用いる場合、一定の規則性をもって複数の異なる走査線に沿って周期的に走査できるようにするためには、例えばガルバノミラーの姿勢制御を行う互いに直交する2軸の回転軸を設け、2軸制御すれば良い。
【0113】
また、上述した実施の形態1及び2では、受光信号を正常に読み取ることができたか否かを、受光信号の光量が所定の範囲内であるか否かによって判断しているが、判断方法は特にこれに限定されるものではない。例えば、読取対象がバーコード2であることから、バーコード2の両端部に存在する無信号区間を検出することができたか否か、バーコード2のスタート信号/エンド信号を検出することができたか否か、バーコード情報として含まれていることが既知である情報が含まれていたか否か等のいずれか、又はこれらの組み合わせで判断しても良い。
【0114】
その他、本発明は上記実施の形態に限定されるものではなく、本発明の趣旨の範囲内であれば多種の変形、置換等が可能であることは言うまでもない。
【図面の簡単な説明】
【0115】
【図1】本発明の実施の形態1に係るバーコード読取装置の構成を模式的に示すブロック図である。
【図2】本発明の実施の形態1に係るバーコード読取装置のポリゴンミラーの取り付け状態を示す模式図である。
【図3】本発明の実施の形態1に係るバーコード読取装置の制御装置の構成を示すブロック図である。
【図4】受光素子が受け取った光量とゲイン値との関係を走査線ごとに示した例示図である。
【図5】円柱状の被検出物体にバーコードが付されている場合の模式図である。
【図6】バーコードの一部分しか走査線が当たらない場合の例示図である。
【図7】直前の他の走査線における読取処理の結果に基づくゲイン値算出の例示図である。
【図8】本発明の実施の形態1に係るバーコード読取装置の制御装置のCPUのゲイン値修正処理の手順を示すフローチャートである。
【図9】本発明の実施の形態1に係るゲイン値修正処理の手順を示す模式図である。
【図10】本発明の実施の形態1に係るゲイン値修正処理を8個の走査線に対して繰り返し実行した場合のゲイン値算出の例示図である。
【図11】本発明の実施の形態2に係るバーコード読取装置の制御装置のCPUのゲイン値修正処理の手順を示すフローチャートである。
【図12】RAMに記憶してあるゲイン値候補の例示図である。
【図13】本発明の実施の形態2に係るゲイン値修正処理の手順を示す模式図である。
【図14】本発明の実施の形態2に係るゲイン値修正処理を8個の走査線に対して繰り返し実行した場合のゲイン値算出の例示図である。
【符号の説明】
【0116】
1 バーコード読取装置
2 バーコード
3 被検出物体
10 制御装置
11 発光素子
12 ポリゴンミラー
13 受光素子
14 コンデンサ
15 増幅回路
16 A/D変換器
17 RAM
18 通信手段
19 内部バス
20 CPU
21 入出力インタフェース
【特許請求の範囲】
【請求項1】
光を出射する発光素子と、
該発光素子から出射された光の出射方向を変更し、一定の規則性をもってバーコードの複数の異なる位置を周期的に走査させるミラー機構と、
バーコードからの反射光を受光する受光素子と
を備え、
前記受光素子で受光した走査ごとの反射光を光電変換した受光信号に基づいて、バーコード情報を取得するバーコード読取装置において、
走査の周期単位でバーコード情報を正常に読み取ることができたか否かに関する読取結果情報を、複数の位置及び読み取り時に設定されている条件に関する情報に対応付けて記憶する読取結果記憶手段と、
記憶されている直前の走査周期での読取結果情報に基づいて、直前の走査周期における相対位置が同じ位置でのバーコード情報を正常に読み取ることができたか否かを判断する判断手段と、
該判断手段がバーコード情報を正常に読み取ることができたと判断した場合、直前の走査周期での読み取り時に設定されている条件に関する情報を読み出し、前記判断手段がバーコード情報を正常に読み取ることができなかったと判断した場合、直前の走査周期での読み取り時に設定されている条件に関する情報と異なる条件に関する情報に設定する条件設定手段と
を備えることを特徴とするバーコード読取装置。
【請求項2】
前記条件に関する情報は、前記受光信号を増幅する増幅回路で設定するゲイン値を含み、
前記条件設定手段は、走査開始後の最初の走査周期では、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出し、以後の走査周期では、前記判断手段がバーコード情報を正常に読み取ることができたと判断した場合、直前の走査周期における相対位置が同じ位置でのゲイン値を読み出し、前記判断手段がバーコード情報を正常に読み取ることができなかったと判断した場合、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出するようにしてあることを特徴とする請求項1記載のバーコード読取装置。
【請求項3】
前記条件に関する情報は、前記受光信号を増幅する増幅回路で設定するゲイン値を含み、
設定するべき所定数のゲイン値を記憶するゲイン値記憶手段を備え、
前記条件設定手段は、前記判断手段がバーコード情報を正常に読み取ることができたと判断した場合、次の位置での走査において同一のゲイン値を読み出し、前記判断手段がバーコード情報を正常に読み取ることができなかったと判断した場合、記憶されているゲイン値を周期的に変更して設定するようにしてあることを特徴とする請求項1記載のバーコード読取装置。
【請求項4】
光を出射する発光素子と、
該発光素子から出射された光の出射方向を変更し、一定の規則性をもってバーコードの複数の異なる位置を周期的に走査させるミラー機構と、
バーコードからの反射光を受光する受光素子と
を備え、
前記受光素子で受光した走査ごとの反射光を光電変換した受光信号に基づいて、バーコード情報を取得するバーコード読取装置で実行することが可能なバーコード読取方法において、
走査の周期単位でバーコード情報を正常に読み取ることができたか否かに関する読取結果情報を、複数の位置及び読み取り時に設定されている条件に関する情報に対応付けて記憶し、
記憶されている直前の走査周期での読取結果情報に基づいて、直前の走査周期における相対位置が同じ位置でのバーコード情報を正常に読み取ることができたか否かを判断し、
バーコード情報を正常に読み取ることができたと判断された場合、直前の走査周期での読み取り時に設定されている条件に関する情報を読み出し、バーコード情報を正常に読み取ることができなかったと判断された場合、直前の走査周期での読み取り時に設定されている条件に関する情報と異なる条件に関する情報に設定することを特徴とするバーコード読取方法。
【請求項5】
前記条件に関する情報は、前記受光信号を増幅する増幅回路で設定するゲイン値を含み、
走査開始後の最初の走査周期では、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出し、
以後の走査周期では、バーコード情報を正常に読み取ることができたと判断した場合、直前の走査周期における相対位置が同じ位置でのゲイン値を読み出し、バーコード情報を正常に読み取ることができなかったと判断した場合、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出することを特徴とする請求項4記載のバーコード読取方法。
【請求項6】
前記条件に関する情報は、前記受光信号を増幅する増幅回路で設定するゲイン値を含み、
設定するべき所定数のゲイン値を記憶し、
バーコード情報を正常に読み取ることができたと判断された場合、次の位置での走査において同一のゲイン値を読み出し、バーコード情報を正常に読み取ることができなかったと判断された場合、記憶されているゲイン値を周期的に変更して設定することを特徴とする請求項4記載のバーコード読取方法。
【請求項1】
光を出射する発光素子と、
該発光素子から出射された光の出射方向を変更し、一定の規則性をもってバーコードの複数の異なる位置を周期的に走査させるミラー機構と、
バーコードからの反射光を受光する受光素子と
を備え、
前記受光素子で受光した走査ごとの反射光を光電変換した受光信号に基づいて、バーコード情報を取得するバーコード読取装置において、
走査の周期単位でバーコード情報を正常に読み取ることができたか否かに関する読取結果情報を、複数の位置及び読み取り時に設定されている条件に関する情報に対応付けて記憶する読取結果記憶手段と、
記憶されている直前の走査周期での読取結果情報に基づいて、直前の走査周期における相対位置が同じ位置でのバーコード情報を正常に読み取ることができたか否かを判断する判断手段と、
該判断手段がバーコード情報を正常に読み取ることができたと判断した場合、直前の走査周期での読み取り時に設定されている条件に関する情報を読み出し、前記判断手段がバーコード情報を正常に読み取ることができなかったと判断した場合、直前の走査周期での読み取り時に設定されている条件に関する情報と異なる条件に関する情報に設定する条件設定手段と
を備えることを特徴とするバーコード読取装置。
【請求項2】
前記条件に関する情報は、前記受光信号を増幅する増幅回路で設定するゲイン値を含み、
前記条件設定手段は、走査開始後の最初の走査周期では、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出し、以後の走査周期では、前記判断手段がバーコード情報を正常に読み取ることができたと判断した場合、直前の走査周期における相対位置が同じ位置でのゲイン値を読み出し、前記判断手段がバーコード情報を正常に読み取ることができなかったと判断した場合、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出するようにしてあることを特徴とする請求項1記載のバーコード読取装置。
【請求項3】
前記条件に関する情報は、前記受光信号を増幅する増幅回路で設定するゲイン値を含み、
設定するべき所定数のゲイン値を記憶するゲイン値記憶手段を備え、
前記条件設定手段は、前記判断手段がバーコード情報を正常に読み取ることができたと判断した場合、次の位置での走査において同一のゲイン値を読み出し、前記判断手段がバーコード情報を正常に読み取ることができなかったと判断した場合、記憶されているゲイン値を周期的に変更して設定するようにしてあることを特徴とする請求項1記載のバーコード読取装置。
【請求項4】
光を出射する発光素子と、
該発光素子から出射された光の出射方向を変更し、一定の規則性をもってバーコードの複数の異なる位置を周期的に走査させるミラー機構と、
バーコードからの反射光を受光する受光素子と
を備え、
前記受光素子で受光した走査ごとの反射光を光電変換した受光信号に基づいて、バーコード情報を取得するバーコード読取装置で実行することが可能なバーコード読取方法において、
走査の周期単位でバーコード情報を正常に読み取ることができたか否かに関する読取結果情報を、複数の位置及び読み取り時に設定されている条件に関する情報に対応付けて記憶し、
記憶されている直前の走査周期での読取結果情報に基づいて、直前の走査周期における相対位置が同じ位置でのバーコード情報を正常に読み取ることができたか否かを判断し、
バーコード情報を正常に読み取ることができたと判断された場合、直前の走査周期での読み取り時に設定されている条件に関する情報を読み出し、バーコード情報を正常に読み取ることができなかったと判断された場合、直前の走査周期での読み取り時に設定されている条件に関する情報と異なる条件に関する情報に設定することを特徴とするバーコード読取方法。
【請求項5】
前記条件に関する情報は、前記受光信号を増幅する増幅回路で設定するゲイン値を含み、
走査開始後の最初の走査周期では、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出し、
以後の走査周期では、バーコード情報を正常に読み取ることができたと判断した場合、直前の走査周期における相対位置が同じ位置でのゲイン値を読み出し、バーコード情報を正常に読み取ることができなかったと判断した場合、直前に記憶された他の位置で走査した場合のゲイン値及び受光量に基づいて新たなゲイン値を算出することを特徴とする請求項4記載のバーコード読取方法。
【請求項6】
前記条件に関する情報は、前記受光信号を増幅する増幅回路で設定するゲイン値を含み、
設定するべき所定数のゲイン値を記憶し、
バーコード情報を正常に読み取ることができたと判断された場合、次の位置での走査において同一のゲイン値を読み出し、バーコード情報を正常に読み取ることができなかったと判断された場合、記憶されているゲイン値を周期的に変更して設定することを特徴とする請求項4記載のバーコード読取方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2009−271579(P2009−271579A)
【公開日】平成21年11月19日(2009.11.19)
【国際特許分類】
【出願番号】特願2008−118712(P2008−118712)
【出願日】平成20年4月30日(2008.4.30)
【出願人】(000129253)株式会社キーエンス (681)
【Fターム(参考)】
【公開日】平成21年11月19日(2009.11.19)
【国際特許分類】
【出願日】平成20年4月30日(2008.4.30)
【出願人】(000129253)株式会社キーエンス (681)
【Fターム(参考)】
[ Back to top ]