説明

コード読取装置

【課題】シンボルコードの読取開始からデコード結果が外部機器へ送信されるまでに要する時間を短縮することができるコード読取装置を提供する。
【解決手段】共通の共有23バスを介して共有メモリ24にアクセスするCPU21,22と、シンボルコードの光学読取を行って読取画像を生成する撮像素子25aと、共有バス23を介して読取画像を撮像素子25aから共有メモリ24へ転送するDMAC29により構成される。CPU21は、CPU22の指示に基づいて、共有メモリ24内の読取画像をデコードする。CPU22は、撮像素子25aによる光学読取を制御する撮像制御タスク、読取画像のデコードをCPU21に指示するデコード制御タスク、及び、デコード結果の送信を制御するデコード結果送信タスクのいずれか1つを選択的に実行し、撮像制御タスクがデコード制御タスクよりも優先され、デコード制御タスクがデコード結果送信タスクよりも優先される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コード読取装置に係り、さらに詳しくは、バーコードや2次元コードなどのシンボルコードの光学読取を行って得られた読取画像をデコードし、そのデコード結果を外部機器へ送信するコード読取装置の改良に関する。
【背景技術】
【0002】
ワーク上にマーキングされたバーコードや2次元コードを光学的に読み取って読取画像を生成し、読取画像をデコードしてそのデコード結果を出力するコード読取装置は、コードリーダと呼ばれている。通常、コードリーダは、コードを光学的に読み取る光学読取素子と、読取画像を保持するメモリと、読取画像をデコードするプロセッサと、デコード結果を外部機器へ送信する送受信回路により構成される。また、デコード結果は、例えば、イーサネット(Ethernet、登録商標)などのLAN(ローカルエリアネットワーク)又はRS−232Cなどのシリアル通信インターフェースを介して、PC(パーソナルコンピュータ)などの端末装置又はPLC(プログラマブルロジックコントローラ)などの制御装置に送信される。
【0003】
近年、ワークから読み取った画像データをフレーム単位で解析して復号するイメージセンシング方式の読取装置の場合、製造コストや消費電力を低減させるために、CMOS(Complementary Metal Oxide Semiconductor:相補型金属酸化膜半導体)イメージセンサが光学読取素子として用いられる。最近では、読取画像における高解像度化の要求により、情報量の大容量化が求められており、画像処理を高速化することが課題であった。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明は、上記事情に鑑みてなされたものであり、シンボルコードの読取開始から読取画像のデコード結果が外部機器へ送信されるまでに要する時間を短縮することができるコード読取装置を提供することを目的とする。
【課題を解決するための手段】
【0005】
第1の本発明によるコード読取装置は、共通のデータバスを介して、共有メモリにアクセスする第1及び第2プロセッサと、シンボルコードの光学読取を行って、読取画像を生成する光学読取素子と、外部機器から読取開始の指示を受け付ける送受信回路と、上記データバスを介して、上記読取画像を上記光学読取素子から上記共有メモリへ転送するDMAコントローラとを備えて構成される。第1プロセッサは、第2プロセッサの指示に基づいて、上記共有メモリ内の上記読取画像をデコードし、そのデコード結果を上記共有メモリへ書き込むデコード手段からなり、第2プロセッサは、上記読取開始の指示に基づいて、上記光学読取素子による光学読取を制御する撮像制御タスク、上記DMAコントローラによる読取画像の転送終了に基づいて、上記読取画像のデコードを第1プロセッサに指示するデコード制御タスク、及び、上記送受信回路から外部機器への上記デコード結果の送信を制御するデコード結果送信タスクのいずれか1つを選択的に実行し、上記撮像制御タスクが、上記デコード制御タスクよりも優先され、上記デコード制御タスクが、上記デコード結果送信タスクよりも優先されるように構成される。
【0006】
このコード読取装置では、読取画像をデコードする第1プロセッサと、光学読取素子による光学読取を制御し、送受信回路から外部機器へのデコード結果の送信を制御する第2プロセッサとが共通のデータバスを介して共有メモリにアクセスする。その際、第2プロセッサでは、光学読取素子による光学読取を制御する撮像制御タスク、読取画像のデコードを第1プロセッサに指示するデコード制御タスク、及び、デコード結果の送信を制御するデコード結果送信タスクに対し、この順に優先順位を割り付けてこれらのタスクのいずれか1つが選択的に実行される。この様な構成によれば、第1プロセッサに読取画像をデコードさせながら、第2プロセッサに撮像制御タスク、デコード制御タスク及びデコード結果送信タスクを効率良く実行させるので、シンボルコードの読取開始から読取画像のデコード結果が外部機器へ送信されるまでに要する時間を短縮することができる。
【0007】
第2の本発明によるコード読取装置は、上記構成に加え、第2プロセッサが、上記送受信回路から外部機器への上記読取画像の送信を制御する画像データ送信タスク、上記撮像制御タスク、上記デコード制御タスク及び上記デコード結果送信タスクのいずれか1つを選択的に実行し、上記デコード結果送信タスクが、上記画像データ送信タスクよりも優先されるように構成される。
【0008】
この様な構成によれば、第2プロセッサが、撮像制御タスク、デコード制御タスク、デコード結果送信タスク及び画像データ送信タスクに対し、この順に優先順位を割り付けてこれらのタスクのいずれか1つを選択的に実行するので、第1プロセッサに読取画像をデコードさせながら、第2プロセッサに撮像制御タスク、デコード制御タスク、デコード結果送信タスク及び画像データ送信タスクを効率良く実行させることができる。従って、シンボルコードの読取開始から、読取画像が外部機器へ送信されるまでに要する時間を短縮することができる。
【0009】
第3の本発明によるコード読取装置は、上記構成に加え、上記共有メモリが、揮発性メモリからなり、第2プロセッサが、上記共有メモリ内の上記読取画像を不揮発性メモリへ書き込む画像保存タスク、上記撮像制御タスク、上記デコード制御タスク、上記デコード結果送信タスク及び上記画像データ送信タスクのいずれか1つを選択的に実行し、上記画像データ送信タスクが、上記画像保存タスクよりも優先されるように構成される。
【0010】
この様な構成によれば、第2プロセッサが、撮像制御タスク、デコード制御タスク、デコード結果送信タスク、画像データ送信タスク及び画像保存タスクに対し、この順に優先順位を割り付けてこれらのタスクのいずれか1つを選択的に実行するので、第1プロセッサに読取画像をデコードさせながら、第2プロセッサに撮像制御タスク、デコード制御タスク、デコード結果送信タスク、画像データ送信タスク及び画像保存タスクを効率良く実行させることができる。従って、シンボルコードの読取開始から、読取画像が不揮発性メモリ内に格納されるまでに要する時間を短縮することができる。
【0011】
第4の本発明によるコード読取装置は、上記構成に加え、上記共有メモリが、上記読取画像に関連付けて、上記読取画像の参照タスク数を保持し、第2プロセッサが、上記参照タスク数に基づいて、上記共有メモリへの上書きによる転送を上記DMAコントローラに指示するとともに、上記撮像制御タスク及び上記デコード制御タスクのいずれか1つを実行する際に上記参照タスク数をそれぞれインクリメントし、上記画像データ送信タスク及び上記画像保存タスクのいずれか1つを実行する際に上記参照タスク数をそれぞれデクリメントするように構成される。
【0012】
この様な構成によれば、読取画像に関連付けて保持される参照タスク数に基づいて、共有メモリへの上書きによる転送がDMAコントローラに指示されるので、光学読取素子により生成された読取画像を共有メモリ内に効率良く格納させることができる。
【発明の効果】
【0013】
本発明によるコード読取装置によれば、第1プロセッサに読取画像をデコードさせながら、第2プロセッサに撮像制御タスク、デコード制御タスク及びデコード結果送信タスクを効率良く実行させるので、シンボルコードの読取開始から読取画像のデコード結果が外部機器へ送信されるまでに要する時間を短縮することができる。
【図面の簡単な説明】
【0014】
【図1】本発明の実施の形態によるコード読取装置を含む読取システム100の一構成例を示したシステム図である。
【図2】図1の読取システム100におけるコードリーダ20の一構成例を示したブロック図であり、コードリーダ20内の機能構成の一例が示されている。
【図3】図2のコードリーダ20におけるCPU22の構成例を示したブロック図である。
【図4】図2のコードリーダ20の動作の一例を模式的に示した説明図であり、画像バッファ50及び設定バンク54が示されている。
【図5】図2のコードリーダ20によるコード読取時の動作の一例を示したタイミングチャートである。
【発明を実施するための形態】
【0015】
<読取システム>
図1は、本発明の実施の形態によるコード読取装置を含む読取システム100の一構成例を示したシステム図であり、コード読取装置の一例としてコードリーダ20が示されている。この読取システム100は、ワークW上にマーキングされたシンボルコードSを光学的に読み取り、読取画像をデコードするコードリーダ20と、LAN11を介してコードリーダ20と通信する外部機器と、シリアル通信インターフェース12を介してコードリーダ20と通信する外部機器とからなる。読取システム100では、コードリーダ20により読み取られた読取画像や読取画像のデコード結果が外部機器へ送信される。
【0016】
LAN11は、イーサネットなどの通信ネットワークであり、LAN11を介してコードリーダ20に接続される外部機器としては、表示装置1、PC2、PLC3、FTPサーバ4、FTPクライアント5などがある。表示装置1は、タッチパネル式のディスプレイを備え、表示画面を操作することにより、コードリーダ20に対し、コードを読み取る際の撮像パラメータ、読取画像をデコードする際のパラメータを設定することができる。表示装置1では、コードリーダ20から転送された読取画像やデコード結果が表示画面に表示される。
【0017】
PC2は、表示部及び操作部を備えた端末装置であり、コードリーダ20に対して撮像パラメータやデコードパラメータを設定することができる。PLC3は、書き換え可能なラダープログラムに基づいて動作し、センサーや駆動装置などの入出力装置を制御する制御装置である。PLC3では、コードリーダ20に対して読取開始を指示し、或いは、コードリーダ20からデコード結果を取得する動作が行われる。
【0018】
FTP(File Transfer Protocol:ファイル転送プロトコル)サーバ4は、TCP/IP(Transmission Control Protocol/Internet Protocol)に基づいて、通信ネットワークN上の他の通信機器と通信を行う情報処理装置であり、通信ネットワークN上の通信機器からのファイル転送要求に基づいて、データファイルを通信機器へ送信する。FTPクライアント5は、TCP/IPに基づいて通信を行う情報処理装置であり、FTPに基づいてFTPサーバ4からデータファイルを取得する。
【0019】
コードリーダ20は、デコードに使用した読取画像を画像ファイルとして保持し、デコード終了後に画像ファイルをFTPサーバ4に対して送信する。また、コードリーダ20は、FTPクライアント5からのファイル転送要求に基づいて、画像ファイルをFTPクライアント5に対して送信する。
【0020】
シリアル通信インターフェース12は、RS−232Cなどの通信規格において規定された所定のプロトコルに基づいてシリアル通信を行うインターフェースである。このシリアル通信インターフェース12を介してコードリーダ20に接続される外部機器としては、PC2、PLC3などがある。
【0021】
コードリーダ20により読み取られた読取画像は、LAN11上の表示装置1又はPC「PCホスト1」へ送信される。一方、読取画像のデコード結果は、LAN11上の表示装置1、PC「PCホスト1」、PLC「PLC1」、シリアル通信インターフェース12を介したPC「PCホスト2」又はPLC「PLC2」のいずれか少なくとも1つに送信される。
【0022】
このコードリーダ20は、シンボルコードSを光学的に読み取る読取ユニットが、ワークWの搬送ライン付近に配置される固定式のコードリーダであり、次々に搬送されるワークWからシンボルコードSが読み取られる。読取対象のシンボルコードSとしては、バーコードや2次元コードがある。
【0023】
<コードリーダ>
図2は、図1の読取システム100におけるコードリーダ20の一構成例を示したブロック図であり、コードリーダ20内の機能構成の一例が示されている。このコードリーダ20は、CPU21,22、デコード用メモリ21a、共有バス23、共有メモリ24、撮像素子25a、撮像制御回路25b、ネットワークコントローラ26、シリアル通信コントローラ27、フラッシュメモリ28a、入出力コントローラ28b及びDMAC29により構成される。以下では、CPU21を「CPU1」と呼び、CPU22を「CPU2」と呼ぶ場合がある。
【0024】
CPU21及び22は、共有バス23を介して、共有メモリ24にアクセスするプロセッサであり、所定の演算処理回路からなる。共有バス23は、CPU21及び22に共通のデータバスである。共有メモリ24は、撮像パラメータやデコードパラメータ、読取画像、デコード結果を保持するための揮発性の半導体記憶素子からなり、例えば、RAM(ランダムアクセスメモリ)である。
【0025】
撮像素子25aは、ワークWからの反射光を受光し、読取画像を生成する光学読取素子であり、例えば、CMOSイメージセンサが用いられる。撮像制御回路25bは、撮像素子25aからの画像信号を増幅する増幅器、増幅後の画像信号をデジタル信号に変換するA/D変換器などからなり、共有メモリ24内の撮像パラメータ、例えば、露光時間、ゲイン、フィルタ処理の有無に基づいて撮像素子25aを制御する。
【0026】
DMAC(Direct Memory Access Controller:DMAコントローラ)29は、撮像素子25aにより生成された読取画像を撮像制御回路25bから共有バス23を介して共有メモリ24へ転送する。
【0027】
ネットワークコントローラ26は、LAN11を介して外部機器と通信する通信回路であり、例えば、EMAC(Ethernet Media Access Controller)からなる。シリアル通信コントローラ27は、シリアル通信インターフェース12を介して外部機器と通信する通信回路であり、例えば、UART(Universal Asynchronous Receiver Transmitter)からなる。
【0028】
フラッシュメモリ28aは、画像ファイルを保持するための不揮発性の半導体記憶素子からなり、例えば、SD(Secure Digital、登録商標)カードなどの着脱可能なメモリカードが用いられる。入出力コントローラ28bは、フラッシュメモリ28aに対する画像ファイルの書き込み及び読み出しを制御する。
【0029】
CPU21は、CPU22の指示に基づいて、共有メモリ24内からデコード用メモリ21aに読取画像を読み出してデコード処理するデコード手段からなり、デコード処理終了後にデコード結果を共有メモリ24内に書き込む。
【0030】
一方、CPU22は、ネットワークコントローラ26又はシリアル通信コントローラ27がコマンドを受信した場合に、当該コマンドが読み取りを開始させるための読取開始コマンドであれば、撮像制御回路25bに対して読取開始を指示する。
【0031】
また、CPU22は、DMAC29による読取画像の転送終了に基づいて、転送が終了した読取画像のデコードをCPU21に対して指示する。さらに、CPU22は、ネットワークコントローラ26及びシリアル通信コントローラに対して読取画像のデコード結果の送信を指示する。
【0032】
このCPU22では、デコードに使用された読取画像を共有メモリ24内から読み出し、画像ファイルとしてフラッシュメモリ28a内に書き込み、或いは、共有メモリ24内に書き込む動作が行われる。この画像ファイルは、デコード終了時に書き込まれる。
【0033】
また、CPU22では、デコード終了後、共有メモリ24内の画像ファイルをFTPサーバ4へ送信する送信制御、及び、FTPクライアント5からのファイル転送要求に基づいて、共有メモリ24内の画像ファイルをFTPクライアント5へ送信する送信制御も行われる。CPU21,22及びDMAC29は、バスマスタとして共有バス23を占有することができるデバイスであり、互いに割込要求を通知し、或いは、割込要求を検出する。
【0034】
図3は、図2のコードリーダ20におけるCPU22の構成例を示したブロック図である。このCPU22は、割込コントローラ31、タスク優先順位記憶部32、タスク管理フラグ記憶部33、プログラム実行部34及びプログラム記憶部35により構成される。プログラム記憶部35には、撮像制御プログラム41、システム制御プログラム42、デコード制御プログラム43、デコード結果送信プログラム44、画像データ送信プログラム45、FTPサーバプログラム46、FTPクライアントプログラム47及び画像保存プログラム48が保持されている。
【0035】
CPU22では、CPU21による読取画像のデコード処理と、撮像制御、デコード結果の送信制御、読取画像の送信制御、FTPサーバ4への画像ファイルの送信制御、及び、FTPクライアント5からのファイル転送要求に基づく画像ファイルの送信制御とを並列処理させるために、優先度スケジューリングが行われる。
【0036】
優先度スケジューリングとは、CPU22において実行されるタスク、すなわち、プログラムにより実行される処理に優先順位を割り付け、実行待ちの状態のタスクが複数存在する場合に、実行待ち状態のタスクのうち、優先順位の最も高いタスクにCPU資源を割り当てることである。ここでは、実行待ち状態を実行可能状態と呼び、休止状態及び実行状態と区別する。
【0037】
具体的には、撮像制御タスク、システム制御タスク、デコード制御タスク、デコード結果送信タスク、画像データ送信タスク、FTPサーバタスク、FTPクライアントタスク及び画像保存タスクの8つのタスクについて、優先度スケジューリングが行われる。
【0038】
ここでは、一例として、撮像制御タスク、システム制御タスク、デコード制御タスク、デコード結果送信タスク、画像データ送信タスク、FTPサーバタスク、FTPクライアントタスク、画像保存タスクの順に優先順位が割り付けられる。具体的には、撮像制御タスクが最も優先度が高く、システム制御タスクが2番目に優先度が高く、デコード制御タスクが3番目に優先度が高く、そして、デコード結果送信タスクが4番目に優先度が高くなっている。また、画像保存タスクが最も優先度が低くなっている。
【0039】
つまり、撮像制御タスクは、デコード制御タスクよりも優先され、デコード制御タスクは、デコード結果送信タスクよりも優先される。また、デコード結果送信タスクは、画像データ送信タスクよりも優先され、画像データ送信タスクは、画像保存タスクよりも優先される。
【0040】
割込コントローラ31は、共有バス23を介して通知された割込要求を検出し、その検出結果をプログラム実行部34へ出力し、プログラム実行部34からの指示に基づいて、割込要求を生成する。
【0041】
プログラム実行部34は、優先度スケジューリングに基づいて、撮像制御プログラム41、システム制御プログラム42、デコード制御プログラム43、デコード結果送信プログラム44、画像データ送信プログラム45、FTPサーバプログラム46、FTPクライアントプログラム47及び画像保存プログラム48のいずれか1つを選択的に実行する。
【0042】
タスク優先順位記憶部32には、優先度スケジューリングに必要なタスクの優先順位情報が保持される。また、タスク管理フラグ記憶部33には、タスクが休止状態であるか、或いは、実行可能状態であるかを判別するための識別情報として、タスク管理フラグが保持される。
【0043】
ネットワークコントローラ26及びシリアル通信コントローラ27は、コマンドを受信した場合に、割込コントローラ31にコマンド受信を通知する。プログラム実行部34は、コマンド受信が通知されれば、当該コマンドを解析し、その解析結果に応じて動作する。
【0044】
例えば、コマンドが、読み取りを開始させるための読取開始コマンドであり、かつ、撮像制御タスクが休止状態である場合に、撮像制御プログラム41を実行し、撮像制御回路25bに読取開始が指示される。一方、コマンドが、読み取りを終了させるための読取終了コマンドであり、かつ、撮像制御タスクが実行状態である場合には、撮像制御プログラム41の実行を停止し、撮像制御回路25b及びCPU21に停止要求が通知される。
【0045】
撮像制御プログラム41は、読取開始コマンドに基づいて、撮像制御回路25bに対して読取開始を指示し、光学読取を制御する撮像制御タスク用のプログラムである。システム制御プログラム42は、タスク優先順位情報及びタスク管理フラグに基づいて、実行対象のプログラムを切り替えるための割込ハンドラである。デコード制御プログラム43は、DMAC29による読取画像の転送終了に基づいて、転送が終了した読取画像のデコードをCPU21に対して指示するデコード制御タスク用のプログラムである。
【0046】
デコード結果送信プログラム44は、デコード結果の送信をネットワークコントローラ26及びシリアル通信コントローラ27に対して指示するデコード結果送信タスク用のプログラムである。デコード制御プログラム43は、DMAC29による読取画像の転送終了時点で、撮像制御プログラム41が実行状態であれば、撮像制御プログラム41が休止状態に移行するのを待って実行状態に移行する。また、デコード制御プログラム43は、所定のデコード終了条件が成立した場合に、デコード結果送信プログラム44を実行可能状態に移行させる。
【0047】
デコード終了条件とは、デコード処理を終了させるか否かを判断するための判定基準のことであり、デコード終了条件が満たされれば、デコード処理が終了し、撮像処理も終了する。例えば、デコード終了条件は、順次に生成される読取画像に対し、一定回数以上、連続して同一のデコード結果が得られることとして規定される。
【0048】
デコード結果送信プログラム44は、実行可能状態に移行した時点で、撮像制御プログラム41及びデコード制御プログラム43のいずれかが実行状態であれば、撮像制御プログラム41及びデコード制御プログラム43が休止状態に移行するのを待って実行状態に移行する。
【0049】
画像データ送信プログラム45は、共有メモリ24内の読取画像の送信をネットワークコントローラ26及びシリアル通信コントローラ27に対して指示する画像データ送信タスク用のプログラムである。この画像データ送信プログラム45は、実行可能状態に移行した時点で、撮像制御プログラム41、デコード制御プログラム43及びデコード結果送信プログラム44のいずれかが実行状態であれば、これらのプログラムが休止状態に移行するのを待って実行状態に移行する。
【0050】
FTPサーバプログラム46は、FTPクライアント5からのファイル転送要求に基づいて、共有メモリ24又はフラッシュメモリ28a内の画像ファイルをFTPクライアント5へ送信するFTPサーバタスク用のプログラムである。このFTPサーバプログラム46は、一定時間ごとに実行可能状態に移行するプログラムである。
【0051】
FTPサーバプログラム46は、実行可能状態に移行した時点で、撮像制御プログラム41、デコード制御プログラム43、デコード結果送信プログラム44及び画像データ送信プログラム45のいずれかが実行状態であれば、これらのプログラムが休止状態に移行するのを待って実行状態に移行する。そして、FTPサーバプログラム46は、実行状態に移行すれば、FTPクライアント5からのファイル転送要求の有無をチェックし、ファイル転送要求があれば、画像ファイルを転送して休止状態に移行する。一方、FTPサーバプログラム46は、ファイル転送要求がなければ、直ちに休止状態に移行する。
【0052】
FTPクライアントプログラム47は、共有メモリ24又はフラッシュメモリ28a内の画像ファイルをFTPサーバ4へ送信するFTPクライアントタスク用のプログラムである。このFTPクライアントプログラム47は、実行可能状態に移行した時点で、撮像制御プログラム41、デコード制御プログラム43、デコード結果送信プログラム44、画像データ送信プログラム45及びFTPサーバプログラム46のいずれかが実行状態であれば、これらのプログラムが休止状態に移行するのを待って実行状態に移行する。
【0053】
画像保存プログラム48は、共有メモリ24内の読取画像をファイル化し、共有メモリ24又はフラッシュメモリ28a内に書き込む画像保存タスク用のプログラムである。この画像保存プログラム48は、デコード終了条件の成立により実行可能状態に移行するプログラムであり、実行可能状態に移行した時点で、撮像制御プログラム41、デコード制御プログラム43、デコード結果送信プログラム44、画像データ送信プログラム45、FTPサーバプログラム46及びFTPクライアントプログラム47のいずれかが実行状態であれば、これらのプログラムが休止状態に移行するのを待って実行状態に移行する。
【0054】
読取開始コマンドを受信した場合における各タスクの動作を以下に説明する。
<処理1>
まず、撮像制御タスクは、読取開始コマンドに基づいて、休止状態から実行可能状態に移行する。このとき、撮像制御タスクは、最も優先度の高いタスクであるので、直ちに実行状態となり、撮像制御回路25bに撮像開始を指示し、その後、休止状態に移行する。
【0055】
<処理2>
DMAC29により全ての読取画像データが共有メモリ24に転送されれば、デコード制御タスクが休止状態から実行可能状態に移行する。このとき、より優先度の高い撮像制御タスクは休止状態であるので、デコード制御タスクは、直ちに実行状態となり、DMAC29により転送された読取画像データの先頭アドレスやデータサイズなどのデコードパラメータを共有メモリ24内の所定位置に書き込み、CPU21に割込要求を通知する。
【0056】
CPU21は、CPU22からの上記割込要求に基づいて、共有メモリ24からデコードパラメータを読み出し、当該デコードパラメータに基づいて読取画像のデコード処理を行う。なお、デコード制御タスクは、CPU21が既にデコード処理中であった場合、CPU21に割込要求を通知しない。また、デコード制御タスクは、CPU21に割込要求を通知した後、デコード終了条件が成立するまで、一定時間が経過するごとに、撮像制御タスクを実行可能状態に移行させる。
【0057】
<処理3>
CPU21は、読取画像のデコード処理が終了すれば、CPU22に割込要求を通知する。デコード制御タスクは、CPU21からの上記割込要求に基づいて、実行可能状態に移行する。このとき、デコード制御タスクは、撮像制御タスクが休止状態であれば、直ちに実行状態となるが、撮像制御タスクが実行状態であれば、撮像制御タスクが休止状態に移行してから実行状態となる。
【0058】
実行状態となったデコード制御タスクは、画像データ送信タスクを実行可能状態に移行させる。また、デコード終了条件が成立した場合には、デコード結果送信タスクも実行可能状態に移行させる。一方、デコード終了条件が未成立であり、かつ、<処理2>においてCPU21に割込要求を通知していなかった場合には、CPU21に割込要求が通知される。
【0059】
<処理4>
実行可能状態に移行したデコード結果送信タスクは、撮像制御タスク及びデコード制御タスクがいずれも休止状態に移行すれば、実行状態となり、デコード結果を外部機器に送信する。デコード結果送信タスクは、デコード結果の送信後、休止状態に移行する。
【0060】
<処理5>
実行可能状態に移行した画像データ送信タスクは、撮像制御タスク、デコード制御タスク及びデコード結果送信タスクがいずれも休止状態に移行すれば、実行状態となり、読取画像を外部機器に送信する。
【0061】
<処理6>
画像保存タスクは、デコード終了条件が成立し、或いは、読取終了コマンドを受信した場合に、実行可能状態に移行する。実行可能状態に移行した画像保存タスクは、撮像制御タスク、デコード制御タスク、デコード結果送信タスク、画像データ送信タスク、FTPサーバタスク、FTPクライアントタスクがいずれも休止状態に移行すれば、実行状態となり、共有メモリ24内の読取画像から画像ファイルを作成して共有メモリ24又はフラッシュメモリ28aに書き込む。そして、画像保存タスクは、画像ファイルの書き込み終了後、FTPクライアントタスクを実行可能状態に移行させる。
【0062】
<処理7>
実行可能状態に移行したFTPクライアントタスクは、撮像制御タスク、デコード制御タスク、デコード結果送信タスク、画像データ送信タスク及びFTPサーバタスクがいずれも休止状態に移行すれば、実行状態となり、FTPサーバ4に画像ファイルを転送する。
【0063】
<処理8>
実行可能状態に移行したFTPサーバタスクは、撮像制御タスク、デコード制御タスク、デコード結果送信タスク及び画像データ送信タスクがいずれも休止状態に移行すれば、実行状態となる。
【0064】
実行状態となったFTPサーバタスクは、FTPクライアント5からのファイル転送要求の有無をチェックし、ファイル転送要求があれば、FTPクライアント5に画像ファイルを転送し、その後、休止状態に移行する。一方、FTPサーバタスクは、FTPクライアント5からのファイル転送要求がなかった場合、直ちに休止状態に移行する。
【0065】
<画像バッファ>
図4は、図2のコードリーダ20の動作の一例を模式的に示した説明図であり、画像バッファ50及び設定バンク54が示されている。DMAC29により共有メモリ24内に転送された読取画像は、画像バッファ50として保持される。
【0066】
この画像バッファ50は、読取画像を保持するための画像記憶領域51と、読取画像の参照タスク数を保持するためのタスク数記憶領域52と、設定バンク54を指定するバンク番号を保持するためのバンク番号記憶領域53からなる。
【0067】
画像記憶領域51には、1枚の読取画像が格納される。設定バンク54は、撮像パラメータやデコードパラメータなどの各種設定を保持するためのメモリ領域であり、共有メモリ24又はフラッシュメモリ28a内に作成される。撮像パラメータとしては、露光時間、ゲイン、フィルタの有無などが保持される。共有メモリ24内には、この様な複数の画像バッファ50が予め形成される。
【0068】
撮像制御タスクは、読取開始時に、未使用の画像バッファ50、すなわち、参照タスク数がゼロの画像バッファ50を読取画像の転送先として選択し、上書きによる転送をDMAC29に指示し、当該画像バッファ50の参照タスク数をインクリメントする。また、撮像制御タスクは、バンク番号などを画像バッファ50内に書き込む。
【0069】
デコード制御タスクは、画像バッファ50内に転送された読取画像データの先頭アドレス及びデータサイズと、画像バッファ50内のバンク番号に基づいて設定バンク54から取得したデコードパラメータとを共有メモリ24内に書き込み、CPU21に割込要求を通知する。
【0070】
CPU21から割込要求が通知されたデコード制御タスクは、CPU21によるデコード開始時に、デコード対象の読取画像を保持する画像バッファ50の参照タスク数をインクリメントし、画像データ送信タスクを実行可能状態に移行させる。
【0071】
画像データ送信タスクは、送信が終了した読取画像を保持する画像バッファ50の参照タスク数をデクリメントする。また、画像保存タスクは、書き込みの終了した画像ファイルについて、対応する読取画像を保持する画像バッファ50の参照タスク数をデクリメントする。
【0072】
<コード読取動作>
図5は、図2のコードリーダ20によるコード読取時の動作の一例を示したタイミングチャートである。コードリーダ20では、コード読取時に、CPU21によるデコード処理と、CPU22の撮像制御タスク、デコード制御タスク、デコード結果送信タスク、画像データ送信タスク、FTPサーバタスク、FTPクライアントタスク及び画像保存タスクとが、システム制御タスクの割込ハンドラ動作により、優先度スケジューリングされる。
【0073】
この図では、1回目の読取開始コマンド61の受信後、3枚の読取画像が生成され、2枚目の読取画像のデコード結果が得られた時点で、デコード終了条件が成立し、一連の読取処理が終了している。また、1枚目の読取画像のデコード結果が得られる直前に、FTPクライアント5からのファイル転送要求64が受信し、FTPサーバタスクが実行状態に移行している。そして、このFTPサーバタスクが休止状態に移行した後、画像保存タスクが実行状態に移行し、その後、2回目の読取開始コマンド61が受信し、光学読取が再開されている。
【0074】
まず、撮像制御タスクは、読取開始コマンド61に基づいて、休止状態から実行可能状態に移行する。このとき、撮像制御タスクは、最も優先度の高いタスクであるので、直ちに実行状態となり、撮像制御回路25bに撮像開始を指示し、その後、休止状態に移行する。
【0075】
次に、システム制御タスクは、DMAC29による読取画像の転送が終了すれば、デコード制御タスクを休止状態から実行可能状態に移行させる。このとき、より優先度の高い撮像制御タスクは休止状態であるので、デコード制御タスクは、直ちに実行状態となり、CPU21に割込要求62を通知する。
【0076】
CPU21は、CPU22からの割込要求に基づいて、読取画像のデコード処理を行う。デコード制御タスクは、CPU21に割込要求を通知した後、デコード終了条件が成立するまで、一定時間が経過するごとに、撮像制御タスクを実行可能状態に移行させる。デコード制御タスクは、その実行中に、撮像制御タスクが実行状態に移行すれば、プリエンプション63が発生して実行権を奪われ、実行可能状態に移行する。
【0077】
FTPサーバタスクは、撮像制御タスク、システム制御タスク、デコード制御タスク、デコード結果送信タスク及び画像データ送信タスクがいずれも休止状態に移行すれば、実行状態となる。
【0078】
実行状態となったFTPサーバタスクは、FTPクライアント5からのファイル転送要求64の有無をチェックし、ファイル転送要求64があれば、FTPクライアント5に画像ファイルを転送し、その後、休止状態に移行する。
【0079】
CPU21は、読取画像のデコード処理が終了すれば、CPU22に割込要求65を通知する。デコード制御タスクは、CPU21からの割込要求に基づいて、実行可能状態に移行する。このとき、デコード制御タスクは、撮像制御タスクが休止状態であれば、直ちに実行状態となる。
【0080】
実行状態となったデコード制御タスクは、画像データ送信タスクを実行可能状態に移行させる。また、デコード終了条件が成立した場合には、デコード結果送信タスクも実行可能状態に移行させる。
【0081】
実行可能状態に移行したデコード結果送信タスクは、撮像制御タスク及びデコード制御タスクがいずれも休止状態に移行すれば、実行状態となり、デコード結果を外部機器に送信する。デコード結果送信タスクは、デコード結果の送信後、休止状態に移行する。
【0082】
実行可能状態に移行した画像データ送信タスクは、撮像制御タスク、デコード制御タスク及びデコード結果送信タスクがいずれも休止状態に移行すれば、実行状態となり、読取画像を外部機器に送信する。
【0083】
画像保存タスクは、デコード終了条件が成立した場合に、実行可能状態に移行する。実行可能状態に移行した画像保存タスクは、撮像制御タスク、システム制御タスク、デコード制御タスク、デコード結果送信タスク、画像データ送信タスク、FTPサーバタスク、FTPクライアントタスクがいずれも休止状態に移行すれば、実行状態となり、共有メモリ24内の読取画像から画像ファイルを作成して共有メモリ24又はフラッシュメモリ28aに書き込む。そして、画像保存タスクは、画像ファイルの書き込み終了後、FTPクライアントタスクを実行可能状態に移行させる。
【0084】
実行可能状態に移行したFTPクライアントタスクは、撮像制御タスク、デコード制御タスク、デコード結果送信タスク、画像データ送信タスク及びFTPサーバタスクがいずれも休止状態に移行すれば、実行状態となり、FTPサーバ4に画像ファイルを転送する。
【0085】
本実施の形態によれば、CPU21に読取画像をデコードさせながら、CPU22に撮像制御タスク、デコード制御タスク及びデコード結果送信タスクを効率良く実行させるので、シンボルコードの読取開始から読取画像のデコード結果が外部機器へ送信されるまでに要する時間を短縮することができる。
【0086】
また、読取画像に関連付けて保持される参照タスク数に基づいて、共有メモリ24への上書きによる転送がDMAC29に指示されるので、撮像素子25aにより生成された読取画像を共有メモリ24内に効率良く格納させることができる。
【0087】
なお、本実施の形態では、LAN11やシリアル通信インターフェース12を介して外部機器から読取開始コマンドを受信すれば、読み取りを開始する場合の例について説明したが、読み取りを開始させるためのトリガはこれに限られるものではない。すなわち、外部機器から読取開始の指示を受け付け、当該読取開始の指示に基づいて読み取りを開始するものであれば他の構成であっても良い。例えば、外部機器接続用の入力端子における電圧変化を検出し、その検出結果に基づいて読み取りを開始するようなものも本発明には含まれる。
【符号の説明】
【0088】
1 表示装置
2 PC
3 PLC
4 FTPサーバ
5 FTPクライアント
11 LAN
12 シリアル通信ネットワーク
20 コードリーダ
21,22 CPU
21a デコード用メモリ
23 共有バス
24 共有メモリ
25a 撮像素子
25b 撮像制御回路
26 ネットワークコントローラ
27 シリアル通信コントローラ
28a フラッシュメモリ
28b 入出力コントローラ
29 DMAC
31 割込コントローラ
32 タスク優先順位記憶部
33 タスク管理フラグ記憶部
34 プログラム実行部
35 プログラム記憶部
41 撮像制御プログラム
42 システム制御プログラム
43 デコード制御プログラム
44 デコード結果送信プログラム
45 画像データ送信プログラム
46 FTPサーバプログラム
47 FTPクライアントプログラム
48 画像保存プログラム
50 画像バッファ
51 画像記憶領域
52 タスク数記憶領域
53 バンク番号記憶領域
54 設定バンク
N 通信ネットワーク
S シンボルコード
W ワーク

【特許請求の範囲】
【請求項1】
共通のデータバスを介して、共有メモリにアクセスする第1及び第2プロセッサと、
シンボルコードの光学読取を行って、読取画像を生成する光学読取素子と、
外部機器から読取開始の指示を受け付ける送受信回路と、
上記データバスを介して、上記読取画像を上記光学読取素子から上記共有メモリへ転送するDMAコントローラとを備え、
第1プロセッサは、第2プロセッサの指示に基づいて、上記共有メモリ内の上記読取画像をデコードし、そのデコード結果を上記共有メモリへ書き込むデコード手段からなり、
第2プロセッサは、上記読取開始の指示に基づいて、上記光学読取素子による光学読取を制御する撮像制御タスク、上記DMAコントローラによる読取画像の転送終了に基づいて、上記読取画像のデコードを第1プロセッサに指示するデコード制御タスク、及び、上記送受信回路から外部機器への上記デコード結果の送信を制御するデコード結果送信タスクのいずれか1つを選択的に実行し、
上記撮像制御タスクは、上記デコード制御タスクよりも優先され、上記デコード制御タスクは、上記デコード結果送信タスクよりも優先されることを特徴とするコード読取装置。
【請求項2】
第2プロセッサは、上記送受信回路から外部機器への上記読取画像の送信を制御する画像データ送信タスク、上記撮像制御タスク、上記デコード制御タスク及び上記デコード結果送信タスクのいずれか1つを選択的に実行し、
上記デコード結果送信タスクは、上記画像データ送信タスクよりも優先されることを特徴とする請求項1に記載のコード読取装置。
【請求項3】
上記共有メモリは、揮発性メモリからなり、
第2プロセッサは、上記共有メモリ内の上記読取画像を不揮発性メモリへ書き込む画像保存タスク、上記撮像制御タスク、上記デコード制御タスク、上記デコード結果送信タスク及び上記画像データ送信タスクのいずれか1つを選択的に実行し、
上記画像データ送信タスクは、上記画像保存タスクよりも優先されることを特徴とする請求項2に記載のコード読取装置。
【請求項4】
上記共有メモリは、上記読取画像に関連付けて、上記読取画像の参照タスク数を保持し、
第2プロセッサは、上記参照タスク数に基づいて、上記共有メモリへの上書きによる転送を上記DMAコントローラに指示するとともに、上記撮像制御タスク及び上記デコード制御タスクのいずれか1つを実行する際に上記参照タスク数をそれぞれインクリメントし、上記画像データ送信タスク及び上記画像保存タスクのいずれか1つを実行する際に上記参照タスク数をそれぞれデクリメントすることを特徴とする請求項3に記載のコード読取装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2012−3628(P2012−3628A)
【公開日】平成24年1月5日(2012.1.5)
【国際特許分類】
【出願番号】特願2010−139814(P2010−139814)
【出願日】平成22年6月18日(2010.6.18)
【出願人】(000129253)株式会社キーエンス (681)
【Fターム(参考)】