(57)【要約】【課題】出力優先度の低い低優先出力データに対して出力優先度の高い高優先出力データを優先的に出力する。【解決手段】演算装置２３により、重要度に応じて定めた出力優先度の高い高優先出力データであるのか、高優先出力データよりも出力優先度の低い低優先出力データであるのかを判断し、高優先出力データを一括して出力するよう制御し、低優先出力データを分割して出力するよう制御し、低優先出力データが出力されている際に、高優先出力データの出力要求がなされた場合には、低優先出力データの出力を一時的に停止させ、高優先出力データを割り込み出力させるよう制御することで実現する。【選択図】図１
2009110120.tif 000002
【特許請求の範囲】
【請求項１】
撮像された画像に対して所定の画像処理を施されたデータの出力を制御するデータ出力制御装置であって、
前記データが、重要度に応じて定めた出力優先度の高い高優先出力データであるのか、前記高優先出力データよりも出力優先度の低い低優先出力データであるのかを判断する判断手段と、
前記高優先出力データを一括して出力するよう制御し、
前記低優先出力データを分割して出力するよう制御し、
前記低優先出力データが出力されている際に、前記高優先出力データの出力要求がなされた場合には、前記低優先出力データの出力を一時的に停止させ、前記高優先出力データを割り込み出力させるよう制御する出力制御手段とを備えること
を特徴とするデータ出力制御装置。
【請求項２】
当該データ出力制御装置は、マルチタスク処理を実行するオペレーションシステムを搭載し、
前記出力制御手段は、
前記オペレーションシステムの高優先タスクにて、高優先出力データの出力を制御し、  前記オペレーションシステムの低優先タスクにて、低優先出力データの出力を制御し、
前記オペレーションシステムのアクセス制御タスクにて、前記高優先出力データの割り込み出力を制御すること
を特徴とする請求項１記載のデータ出力制御装置。
【請求項３】
前記オペレーションシステムの画像処理タスクにて、撮像された画像に対して所定の画像処理を施し、
前記画像処理タスクは、前記高優先タスクの高優先出力データの出力制御、前記低優先タスクの低優先出力データの出力制御、前記アクセス制御タスクの高優先出力データの割り込み出力制御の期間中にも停止することなく実行されること
を特徴とする請求項２記載のデータ出力制御装置。
【請求項４】
出力優先順位の異なる複数の出力手段を備え、
前記出力制御手段は、前記複数の出力手段それぞれに対して、前記高優先タスクの高優先出力データの出力制御、前記低優先タスクの低優先出力データの出力制御、前記アクセス制御タスクの高優先出力データの割り込み出力制御を実行するよう制御すること
を特徴とする請求項２又は請求項３のいずれか１項に記載のデータ出力制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、撮像した画像に対して所定の画像処理を施されたデータの出力を制御するデータ出力制御装置に関する。
【背景技術】
【０００２】
工場などの製造ラインにおいて製造された検査対象を撮像装置にて撮像し、撮像した画像に対して所定の画像処理を施すことで検査を行う画像検査システムがある。
【０００３】
このような画像検査システムでは、撮像された大容量のデータである画像データと、撮像された画像データに対して所定の画像処理を施すことで得られた検査結果であり撮像された画像データよりは小容量となる検査結果データとを共に出力したいといった要求がある。このような要求に対応するため、画像検査システムの画像処理装置は、一方のデータを出力している際には、他方のデータの出力を停止させるなどといった出力制御処理を実行していた。
【０００４】
ところで、割り込みジョブがある場合、実行中の処理よりも優先度が高い割り込みジョブを行うようにした画像処理装置が考案されている（例えば、特許文献１）。
【特許文献１】特開平５−２５８０２７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来の画像検査システムの画像処理装置のように、一方のデータを出力している際には、他方のデータの出力を停止させるなどといった出力制御処理を実行すると、本来の目的である検査が滞ってしまい検査待ち状態を引き起こしてしまう虞があるといった問題があった。また、出力先の媒体などの書き込み速度によっても検査スピードが低下してしまうといった問題もあった。
【０００６】
このような問題を回避する手法として、画像データを出力するモードと検査結果データを出力するモードとを備え、モードを切り替えて各データを出力するように出力制御処理を実行する画像処理装置が考案されているが、画像データを出力するモードへと切り替えた場合には、画像検査システムにおいて最も重要な検査結果データの出力が滞ってしまうといった使用上の制約が発生してしまうといった問題がある。
【０００７】
そこで、本発明は、上述した実情に鑑みて提案されたものであり、出力優先度の低い低優先出力データに対して出力優先度の高い高優先出力データを優先的に出力するデータ出力制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明のデータ出力制御装置は、撮像された画像に対して所定の画像処理を施されたデータの出力を制御するデータ出力制御装置であって、前記データが、重要度に応じて定めた出力優先度の高い高優先出力データであるのか、前記高優先出力データよりも出力優先度の低い低優先出力データであるのかを判断する判断手段と、前記高優先出力データを一括して出力するよう制御し、前記低優先出力データを分割して出力するよう制御し、前記低優先出力データが出力されている際に、前記高優先出力データの出力要求がなされた場合には、前記低優先出力データの出力を一時的に停止させ、前記高優先出力データを割り込み出力させるよう制御する出力制御手段とを備える。
【０００９】
また、本発明のデータ出力制御装置は、マルチタスク処理を実行するオペレーションシステムを搭載し、前記出力制御手段は、前記オペレーションシステムの高優先タスクにて、高優先出力データの出力を制御し、前記オペレーションシステムの低優先タスクにて、低優先出力データの出力を制御し、前記オペレーションシステムのアクセス制御タスクにて、前記高優先出力データの割り込み出力を制御する。
【００１０】
また、本発明のデータ出力制御装置は、前記オペレーションシステムの画像処理タスクにて、撮像された画像に対して所定の画像処理を施し、前記画像処理タスクは、前記高優先タスクの高優先出力データの出力制御、前記低優先タスクの低優先出力データの出力制御、前記アクセス制御タスクの高優先出力データの割り込み出力制御の期間中にも停止することなく実行される。
【００１１】
さらに、本発明のデータ出力制御装置は、出力優先順位の異なる複数の出力手段を備え、前記出力制御手段は、前記複数の出力手段それぞれに対して、前記高優先タスクの高優先出力データの出力制御、前記低優先タスクの低優先出力データの出力制御、前記アクセス制御タスクの高優先出力データの割り込み出力制御を実行するよう制御する。
【発明の効果】
【００１２】
本発明によれば、出力優先度の低い低優先出力データに対して出力優先度の高い高優先出力データを優先的に出力することを可能とする。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態について図面を参照して説明する。本発明は、例えば図１に示すように構成された画像検査システムに適用される。この画像検査システムは、主として製造ラインにおいて部品等の品種の識別、異種部品の混入検査、組立作業や製品検査などの自動化のために、部品や製品等の対象物の外観検査に使用されるものであって、画像処理の結果が対象物の面積、形状、位置などの測定・認識に用いられ、これにより対象物の良品、不良品などを判定する。
【００１４】
図１に示すように、画像検査システムは、検査対象を撮像する撮像装置１０と、撮像装置１０で撮像された画像に対して所定の画像処理を施す画像処理装置２０と、画像処理装置２０から出力されたデータの出力先である外部装置３０とを備えている。外部装置３０は、出力されたデータを記憶する図示しない記憶媒体や記憶部、記憶媒体や記憶部に記憶されたデータを表示して外観検査の検査結果を表示する表示部３０ａなどを備えている。
【００１５】
このような画像検査システムは、画像処理装置２０が備える演算装置２３の構成に応じて異なる２種類の出力制御処理を実行する。具体的には、演算装置２３がシングルタスク処理を実行するオペレーションシステム（ＯＳ：Operation System）を搭載しているか、オペレーションシステムを搭載していない場合と、マルチタスク処理を実行するＯＳを搭載している場合の２種類に大別される。
【００１６】
［シングルタスク処理を実行するＯＳ、またはＯＳを搭載していない場合］
まず、図１を用いて、演算装置２３が、シングルタスク処理を実行するＯＳ、またはＯＳを搭載していない場合について説明をする。
【００１７】
図１に示すように、画像処理装置２０は、撮像装置１０で撮像された画像に基づき所定の検査処理を実行する検査装置２１と、検査装置２１から転送されたデータを記憶する記憶装置２２と、当該画像処理装置２０を統括的に制御するＣＰＵ（Central Processing Unit）である演算装置２３と、外部装置３０との出力インターフェースである出力装置２４とを備えている。
【００１８】
検査装置２１は、例えば、ＦＰＧＡ（Field Programmable Gate Array）などで構成されるハードウェア回路であり、撮像装置１０で撮像された画像を２値化処理をする図示しない２値化処理回路、２値化処理された黒色画素をカウントする図示しない２値化カウント回路などを搭載している。
【００１９】
この検査装置２１の２値化カウント回路でカウントされたデータは、検査結果データ（以下、結果データとも呼ぶ。）として、図１に示すように、記憶装置２２の高優先出力エリア２２ＨＡに転送される。このように、検査結果データは、当該画像検査システムにおいて、最も重要なデータであるため高い出力優先度が与えられ、記憶装置２２の高優先出力エリア２２ＨＡに記憶される。
【００２０】
また、検査装置２１は、撮像装置１０で撮像された画像に所定の処理を施す図示しないハードウェア回路により生成された画像データ（以下、生画像データとも呼ぶ。）を、図１に示すように、記憶装置２２の低優先出力エリア２２ＬＡに転送する。このように、画像データは、検査結果データと比較して必ずしも毎回必要となるデータではないとともに、検査結果データと比較して大容量であることから、検査結果データよりも低い出力優先度が与えられ、記憶装置２２の低優先出力エリア２２ＬＡに記憶される。
【００２１】
検査装置２１は、検査結果データ、画像データを各データに対する処理を実行するハードウェア回路による並列処理動作によって同時タイミングで記憶装置２２の各出力エリアに転送するようにしてもよいし、異なるタイミングで片方ずつ記憶装置２２の各出力エリアに転送するようにしてもよい。
【００２２】
検査装置２１は、記憶装置２２の高優先出力エリア２２ＨＡ、低優先出力エリア２２ＬＡに対して、データ転送を実行し、それぞれのエリアにデータが配置されたことに応じて、演算装置２３に対して割り込み信号を出力する。検査装置２１から出力される割り込み信号を受信した演算装置２３は、記憶装置２２に記憶された検査結果データ、画像データの演算装置２３による出力装置２４への出力制御処理を開始することになる。つまり、割り込み信号は、演算装置２３による出力制御処理を開始するためのトリガーとなる信号である。
【００２３】
図１では、検査装置２１から演算装置２３に対して割り込み信号を出力することで出力制御処理を開始するようにしているが、演算装置２３が、定期的、または不定期に記憶装置２２に対してポーリングして、検査装置２１から記憶装置２２へデータ転送がなされたかどうかを確認するようにしてもよい。
【００２４】
記憶装置２２は、いわゆるリングバッファ構成となっているため、演算装置２３へのデータ出力中において、検査装置２１により当該記憶装置２２に対してデータ転送、データの配置がなされたとしても、演算装置２３へ出力中のデータを破損しないような構成となっている。このリングバッファ構成は、記憶装置２２の高優先出力エリア２２ＨＡ、低優先出力エリア２２ＬＡのそれぞれに設けられている。
【００２５】
続いて、図２に示すフローチャートを用いて、記憶装置２２に記憶された高優先出力データである検査結果データ、低優先出力データである画像データの演算装置２３による出力装置２４への出力制御処理動作について説明をする。
【００２６】
ステップＳ１において、演算装置２３は、検査装置２１からの割り込み信号、または、当該演算装置２３によるポーリングによって、記憶装置２２に記憶されたデータが、高優先出力データであるかどうかを判断する。演算装置２３は、高優先出力データである場合には、ステップＳ２へと処理を進める一方、高優先出力データでない場合には、ステップＳ４へと処理を進める。
【００２７】
ステップＳ２において、演算装置２３は、高優先出力データである検査結果データを、一括して出力装置２４に出力する。
【００２８】
ステップＳ３において、演算装置２３は、出力装置２４への出力を中断した低優先出力データがあるかどうかを判断する。演算装置２３は、出力装置２４への出力を中断した低優先出力データがある場合には、ステップＳ５へと処理を進める一方、ない場合には処理を終了する。
【００２９】
ステップＳ４において、演算装置２３は、低優先出力データである画像データを、分割して出力するための分割回数を算出する。
【００３０】
ステップＳ５において、演算装置２３は、記憶装置２２に高優先出力データが記憶されているかどうかの検出処理を実行する。演算装置２３は、記憶装置２２に高優先出力データが記憶されている場合、ステップＳ２へと処理を進める一方、高優先出力データが記憶されていない場合、ステップＳ６へと処理を進める。
【００３１】
ステップＳ６において、演算装置２３は、ステップＳ４で算出した分割回数で低優先出力データである画像データを分割して出力装置２４に出力する。
【００３２】
ステップＳ７において、演算装置２３は、分割された低優先出力データである画像データが全て出力装置２４に出力されたかどうか判断し、全て出力された場合には処理を終了し、全て出力されていない場合にはステップＳ５へと処理を戻す。
【００３３】
このように、演算装置２３は、記憶装置２２から分割して低優先出力データを出力装置２４に出力している最中に、高優先出力データが記憶装置２２で検出されたことに応じて、低優先出力データの出力を一時的に中断し、高優先出力データの出力処理を優先させるように制御する。低優先出力データは、分割して出力されるため、高優先出力データを優先的に出力するための中断処理を可能とするとともに、高優先出力データは、一括して出力されるため、低優先出力データが存在したとしても妨げられることなく確実に出力装置２４に出力されることになる。
【００３４】
したがって、出力優先度の低い低優先出力データに対して出力優先度の高い高優先出力データを優先的に出力することができる。よって、画像処理による検査処理を停止させずに実行し続けることができる。
【００３５】
［マルチタスク処理を実行するＯＳを搭載している場合］
次に、演算装置２３が、マルチタスク処理を実行するＯＳを搭載している場合について説明をする。演算装置２３が、マルチタスク処理を実行するＯＳを搭載している場合、画像検査システムの構成を以下に示す２種類とすることができ、演算装置２３の出力制御処理も、それぞれの構成に対応した処理となる。
【００３６】
（１）まず、図３を用いて、画像検査システムがシリアルポート（１ポート）、または１つの物理媒体へのスロットしか備えておらず、演算装置２３が、出力実行タスクを１つしか備えていない（出力先に対して２つ同時にオープンすることができない）場合について説明をする。図３は、マルチタスク処理を実行するＯＳを搭載した演算装置２３によるタスクを概念的に示した図である。
【００３７】
図３に示すように、演算装置２３が、出力実行タスクＯＴを１つしか備えていない場合、演算装置２３は、タスクとして、高優先出力データを出力するためのアクセス処理を担う高優先出力タスクＨＴと、低優先出力データを出力するためのアクセス処理を担う低優先出力タスクＬＴと、高優先出力タスクＨＴ、低優先出力タスクＬＴによるアクセス処理を制御するアクセス制御タスクＣＴとを備えている。
【００３８】
このような構成の場合、例えば、高優先出力タスクＨＴからのアクセス要求に応じた処理をしている最中に、低優先出力タスクＬＴによるアクセス処理要求があった場合、アクセス制御タスクＣＴは、図４に示すように、高優先出力タスクＨＴからのアクセス要求によって実行されるファイルオープン→ライト（リード）→クローズといった一連の処理Ｈａ１を完了してから、低優先出力タスクＬＴからのアクセス要求に応じてファイルオープン実行といった処理Ｌａ１を実行するよう制御する。
【００３９】
また、例えば、低優先出力タスクＬＴからのアクセス要求に応じた処理をしている最中に、高優先出力タスクＨＴによるアクセス処理要求があった場合、アクセス制御タスクＣＴは、図５に示すように、低優先出力タスクＬＴからのアクセス要求に応じた処理であるファイルオープン→ライト（リード）といった処理Ｌａ２をキャンセルし、高優先出力タスクＨＴからのアクセス要求に応じたファイルオープン→ライト（リード）→クローズといった一連の処理Ｈａ２を優先的に実行する。そして、処理Ｈａ２が完了したことに応じて、キャンセル処理した低優先出力タスクＬＴからのアクセス要求に応じた処理であるファイルオープン→ライト（リード）→クローズといった処理Ｌａ２を再開する。
【００４０】
次に、図６乃至図９に示すフローチャートを用いて、図３に示した高優先出力タスクＨＴ、低優先出力タスクＬＴ、アクセス制御タスクＣＴ、出力実行タスクＯＴそれぞれの処理動作について説明をする。
【００４１】
まず、図６に示すフローチャートを用いて、高優先出力タスクＨＴの処理動作について説明をする。
【００４２】
高優先出力タスクＨＴでは、まず、高優先出力データを準備し（ステップＳ１１）、高優先出力要求イベントをアクセス制御タスクＣＴに対して発行する（ステップＳ１２）。そして、アクセス制御タスクＣＴから発行される高優先出力完了イベントの待機状態となり（ステップＳ１３）、高優先出力完了イベントを受け取ったことに応じて処理を終了する。
【００４３】
次に、図７に示すフローチャートを用いて、低優先出力タスクＬＴの処理動作について説明をする。
【００４４】
低優先出力タスクＬＴでは、まず、低優先出力データを準備し（ステップＳ２１）、低優先出力要求イベントをアクセス制御タスクＣＴに対して発行する（ステップＳ２２）。そして、アクセス制御タスクＣＴから発行される低優先出力完了イベントの待機状態となり（ステップＳ２３）、低優先出力完了イベントを受け取ったことに応じてステップＳ２４へと処理を進める。
【００４５】
低優先出力タスクＬＴは、所定の時間経過したかどうか、つまりタイムアウトが発生したかどうかを判断する（ステップＳ２４）。これは、低優先出力データの出力が、高優先出力データの出力に阻まれてしまう時間がかかりすぎる場合に対応した処理である。タイムアウトが発生した場合には、ステップＳ２５へと処理を進め、タイムアウトが発生しなかった場合には処理を処理を終了する。
【００４６】
低優先出力タスクＬＴは、タイムアウトが発生したことに応じて、低優先出力中断要求イベントをアクセス制御タスクＣＴに対して発行する（ステップＳ２５）。
【００４７】
続いて、図８に示すフローチャートを用いて、アクセス制御タスクＣＴの処理動作について説明をする。
【００４８】
アクセス制御タスクＣＴは、高優先出力タスクＨＴからの高優先出力要求イベントの待機状態となっている（ステップＳ３１）。このステップＳ３１において、アクセス制御タスクＣＴは、高優先出力要求イベント、低優先出力要求イベント、低優先出力中断要求イベントのいずれかを受け取る可能性がある。
【００４９】
アクセス制御タスクＣＴは、高優先出力要求イベントを受け取ったかどうかを判断し（ステップＳ３２）、受け取った場合には、低優先出力データを出力中かどうかを判断する（ステップＳ３３）。高優先出力要求イベントを受け取らなかった場合には、ステップＳ３９へと処理を進める。
【００５０】
アクセス制御タスクＣＴは、低優先出力データを出力中の場合には、出力実行タスクＯＴに対して低優先出力中断要求イベントを発行し（ステップＳ３４）、出力実行タスクＯＴからの低優先出力中断完了イベントの待機状態となる（ステップＳ３５）。
【００５１】
アクセス制御タスクＣＴは、低優先出力データを出力中でない場合、または低優先出力中断完了イベントを受け取った場合、高優先出力データを出力実行タスクＯＴに出力するよう制御し（ステップＳ３６）、出力実行タスクＯＴから発行される高優先出力完了イベントの待機状態となる（ステップＳ３７）。そして、アクセス制御タスクＣＴは、出力実行タスクＯＴから出力される高優先出力完了イベントを受け取ったことに応じて、高優先出力タスクＨＴに対して高優先出力完了イベントを発行する（ステップＳ３８）。
【００５２】
また、アクセス制御タスクＣＴは、低優先出力要求イベントを受け取ったかどうかを判断し（ステップＳ３９）、受け取った場合には、高優先出力データを出力中かどうかを判断する（ステップＳ４０）。低優先出力要求イベントを受け取らなかった場合には、ステップＳ４７へと処理を進める。
【００５３】
アクセス制御タスクＣＴは、高優先出力データを出力中の場合には、高優先出力データの出力の終了を待機する待機状態となり（ステップＳ４１）、高優先出力データを出力中でない場合、低優先出力データの出力が中断中であるかどうかを判断する（ステップＳ４２）。そして、アクセス制御タスクＣＴは、低優先出力データの出力が中断中である場合には、低優先出力データの出力実行タスクＯＴに対する出力を再開させ（ステップＳ４３）、中断中でない場合には、低優先出力データを出力実行タスクＯＴに出力するよう制御する（ステップＳ４４）。
【００５４】
アクセス制御タスクＣＴは、出力実行タスクＯＴから発行される低優先出力完了イベントの待機状態となり（ステップＳ４５）、出力実行タスクＯＴから出力される低優先出力完了イベントを受け取ったことに応じて、低優先出力タスクＬＴに対して低優先出力完了イベントを発行する（ステップＳ４６）。
【００５５】
さらに、アクセス制御タスクＣＴは、低優先出力中断要求イベントを受け取った場合、低優先出力データを出力中かどうか判断し（ステップＳ４７）、低優先出力データを出力中の場合には、出力実行タスクＯＴに対して低優先出力中断要求イベントを発行し（ステップＳ４８）、出力実行タスクＯＴから発行される低優先出力中断完了イベントの待機状態となる（ステップＳ４９）。
【００５６】
アクセス制御タスクＣＴは、低優先出力データを出力中でない場合、または、出力実行タスクＯＴから発行される低優先出力中断完了イベントを受け取った場合、低優先出力タスクＬＴに対して低優先出力完了イベントを発行する（ステップＳ５０）。
【００５７】
最後に、図９に示すフローチャートを用いて、出力実行タスクＯＴの処理動作について説明をする。
【００５８】
出力実行タスクＯＴは、アクセス制御タスクＣＴから発行される低優先出力データの出力イベントの待機状態となり（ステップＳ５１）、出力イベントを受け取ったことに応じて、低優先出力データの分割回数を算出する（ステップＳ５２）。
【００５９】
出力実行タスクＯＴは、アクセス制御タスクＣＴから発行される低優先出力中断要求イベントを受け取ったかどうかを判断し（ステップＳ５３）、受け取った場合には、アクセス制御タスクＣＴに対して、低優先出力中断完了イベントを発行する（ステップＳ５４）。
【００６０】
出力実行タスクＯＴは、アクセス制御タスクＣＴから発行される低優先出力中断要求イベントを受け取らなかった場合、ステップＳ５２で算出した分割回数で低優先出力データを分割して出力する（ステップＳ５５）。出力実行タスクＯＴは、分割された低優先出力データが全て出力されたかどうか判断し（ステップＳ５６）、全て出力された場合には、アクセス制御タスクＣＴに対して出力完了イベントを発行する（ステップＳ５７）。
【００６１】
このように、アクセス制御タスクＣＴは、出力実行タスクＯＴによって、低優先出力データを分割して出力している最中に、高優先出力タスクＨＴから高優先出力要求イベントを受け取ったことに応じて、低優先出力中断要求イベントを発行し、低優先出力データの出力を一時的に中断させ、高優先出力データの出力処理を優先させるように制御する。低優先出力データは、分割して出力されるため、高優先出力データを優先的に出力するための中断処理を可能とするとともに、高優先出力データは、一括して出力されるため、低優先出力データが存在したとしても妨げられることなく確実に出力されることになる。
【００６２】
したがって、出力優先度の低い低優先出力データに対して出力優先度の高い高優先出力データを優先的に出力することができる。よって、画像処理による検査処理を停止させずに実行し続けることができる。
【００６３】
（２）続いて、図１０を用いて、画像検査システムがマルチポート（複数ポート）、複数の物理媒体へのスロットを備えており、演算装置２３が出力実行タスクをマルチポート、物理媒体の数だけ備えている（出力先に対して個別に独立してオープンすることができる）場合について説明をする。図１０は、マルチタスク処理を実行するＯＳを搭載した演算装置２３によるタスクの一部を概念的に示した図である。マルチポート、複数の物理媒体への各スロットは、それぞれ通信速度が異なっており、出力させるデータの種別に応じて優先順位が異なることになる。
【００６４】
図１０では、１つの出力媒体４２に対して、１つのプログラムコードで複数の処理を非同期に実行できるリエントラント（再入可能）な関数である出力実行関数ＯＦにて出力制御を実行する様子を示している。
【００６５】
図１０に示すように、出力実行関数ＯＦは、リエントラントな関数であるため、高優先出力タスクＨＴ、低優先出力タスクＬＴがそれぞれ独立してポート（またはファイル）オープンして、例えば、出力媒体４２に対してアクセスを行う。出力実行関数ＯＦにより、タスクの優先順位は、高優先出力タスクＨＴが、低優先出力タスクＬＴより優先的になるように設定がなされている。
【００６６】
低優先出力タスクＬＴは、分割出力がなされる。これは、ＯＳのタスク制御を解放して高優先出力タスクＨＴを優先的に開始するためであり、ＯＳ自体の制御によってディスパッチが実行される。
【００６７】
高優先出力タスクＨＴは、一括出力がなされる。これにより、ＯＳのタスク制御は、解放されないため、低優先出力タスクＬＴの実行が妨げられる。
【００６８】
なお、ラウンドロビン方式の場合、低優先出力タスクＬＴにもタイムスライスが与えられるため、意図的に低優先出力タスクＬＴをスリープ状態にさせる必要があり、高優先出力タスクＨＴ−低優先出力タスクＬＴ間で同期オブジェクトの実装が必要となる。このようにすることで、ラウンドロビン方式であっても、本発明を実現することが可能となる。
【００６９】
次に、図１１、図１２に示すフローチャートを用いて、図１０に示した高優先出力タスクＨＴ、低優先出力タスクＬＴの処理動作について説明をする。
【００７０】
まず、図１１に示すフローチャートを用いて、高優先出力タスクＨＴの処理動作について説明をする。
【００７１】
高優先出力タスクＨＴでは、まず、高優先出力データである検査結果データを準備し（ステップＳ６１）、高優先出力データを一括して出力実行関数ＯＦに出力する（ステップＳ６２）。
【００７２】
次に、図１２に示すフローチャートを用いて、低優先出力タスクＬＴの処理動作について説明をする。
【００７３】
低優先出力タスクＬＴでは、まず、低優先出力データである画像データを準備し（ステップＳ７１）、低優先出力データを、分割して出力するための分割回数を算出する（ステップＳ７２）。
【００７４】
低優先出力タスクＬＴは、ステップＳ７２で算出した分割回数で低優先出力データを分割して出力実行関数ＯＦに出力する（ステップＳ７３）。
【００７５】
低優先出力タスクＬＴは、所定の時間経過したかどうか、つまりタイムアウトが発生したかどうかを判断する（ステップＳ７４）。これは、低優先出力データの出力が、高優先出力データの出力に阻まれてしまう時間がかかりすぎる場合に対応した処理である。タイムアウトが発生した場合には、処理を終了し、タイムアウトが発生しなかった場合には、分割された低優先出力データが全て出力実行関数ＯＦに出力されたかどうか判断し、全て出力された場合には処理を終了し、全て出力されていない場合にはステップＳ７３へと処理を戻す。
【００７６】
このようにして、各ポート、各出力媒体に対して、高優先出力タスクＨＴと低優先出力タスクＬＴとがそれぞれ独立してポート（またはファイル）をオープンしてアクセスを行うことができるため、図１３に示すように、高優先出力タスクＨＴ、低優先出力タスクＬＴ、出力実行関数ＯＦからなる出力制御タスクＯＣＴは、記憶装置４１に記憶された出力データである検査結果データといった高優先出力データ、画像データといった低優先出力データを、ポート４２Ａ（ＲＳ−２３２Ｃポート）、ポート４２Ｂ(Ｅｔｈｅｒｎｅｔ（登録商標）ポート)、出力媒体４２Ｃ（ＳＤメモリ）、ポート４２Ｄ（ＵＳＢポート）などに対して、それぞれ独立して個別に出力するよう指示することができる。
【００７７】
したがって、伝送速度が遅いポートや書き込み速度が遅い出力媒体が存在したとしても、それに引きずられることによる検査待ちの必要がないため、検査タスクを継続して実行し続け、検査結果データである高優先出力データを出力しながら、画像データである低優先出力データを出力することができる。また、このような構成とすることで、マルチタスクＯＳを搭載している汎用のＰＣ上においてアプリケーションソフトフェアとして実現することもできる。
【００７８】
なお、上述の実施の形態は本発明の一例である。このため、本発明は、上述の実施形態に限定されることはなく、この実施の形態以外であっても、本発明に係る技術的思想を逸脱しない範囲であれば、設計等に応じて種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【００７９】
【図１】本発明の実施の形態として示す画像検査システムの構成について説明するための図である。
【図２】シングルタスク処理を実行するＯＳ、またはＯＳを搭載していない演算装置によるデータの出力制御処理動作について説明するためのフローチャートである。
【図３】１ポート、または１つの物理媒体へのスロットを備えた構成とした場合でのマルチタスク処理を実行するＯＳを搭載した演算装置によるタスクを概念的に示した図である。
【図４】マルチタスク処理を実行するＯＳを搭載した演算装置による処理動作の一例について説明するための図である。
【図５】マルチタスク処理を実行するＯＳを搭載した演算装置による処理動作の別な例について説明するための図である。
【図６】高優先出力タスクの処理動作について説明するためのフローチャートである。
【図７】低優先出力タスクの処理動作について説明するためのフローチャートである。
【図８】アクセス制御タスクの処理動作について説明するためのフローチャートである。
【図９】出力実行タスクの処理動作について説明するためのフローチャートである。
【図１０】マルチポート、複数の物理媒体へのスロットを備えた構成とした場合でのマルチタスク処理を実行するＯＳを搭載した演算装置によるタスクの一部を概念的に示した図である。
【図１１】高優先出力タスクの処理動作について説明するためのフローチャートである。
【図１２】低優先出力タスクの処理動作について説明するためのフローチャートである。
【図１３】マルチポート、複数の物理媒体へのスロットを備えた構成とした場合での、出力制御タスクによる出力制御処理について概念的に示した図である。
【符号の説明】
【００８０】
１０  撮像装置
２０  画像処理装置
２１  検査装置
２２  記憶装置
２２ＨＡ  高優先出力エリア
２２ＬＡ  低優先出力エリア
２３  演算装置
ＣＴ  アクセス制御タスク
ＨＴ  高優先出力タスク
ＬＴ  低優先出力タスク
ＯＦ  出力実行関数
ＯＴ  出力実行タスク
【図１】
2009110120.tif 000003
【図２】
2009110120.tif 000004
【図３】
2009110120.tif 000005
【図４】
2009110120.tif 000006
【図５】
2009110120.tif 000007
【図６】
2009110120.tif 000008
【図７】
2009110120.tif 000009
【図８】
2009110120.tif 000010
【図９】
2009110120.tif 000011
【図１０】
2009110120.tif 000012
【図１１】
2009110120.tif 000013
【図１２】
2009110120.tif 000014
【図１３】
2009110120.tif 000015