JP2008097086A - ファームウェアテスト自動化方法 - Google Patents

ファームウェアテスト自動化方法 Download PDF

Info

Publication number
JP2008097086A
JP2008097086A JP2006274900A JP2006274900A JP2008097086A JP 2008097086 A JP2008097086 A JP 2008097086A JP 2006274900 A JP2006274900 A JP 2006274900A JP 2006274900 A JP2006274900 A JP 2006274900A JP 2008097086 A JP2008097086 A JP 2008097086A
Authority
JP
Japan
Prior art keywords
firmware
input
output
data
automation method
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006274900A
Other languages
English (en)
Other versions
JP4865491B2 (ja
Inventor
Yoshihiko Okayama
喜彦 岡山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Azbil Corp
Original Assignee
Azbil Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Azbil Corp filed Critical Azbil Corp
Priority to JP2006274900A priority Critical patent/JP4865491B2/ja
Publication of JP2008097086A publication Critical patent/JP2008097086A/ja
Application granted granted Critical
Publication of JP4865491B2 publication Critical patent/JP4865491B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】ファームウェアの膨大なテストを少ない工数と時間で可能にする。
【解決手段】ファームウェアテスト自動化方法は、対象機器であるエッジセンサの通常の動作時に設定される設定データと、通常の動作時にセンサヘッド1から入力される入力データと、この設定データと入力データに応じたプログラムの実行中にファームウェアが生成するデータである内部変数とに対して、ファームウェアのテスト時に外部のコンピュータ3から強制書き込みする。
【選択図】 図1

Description

本発明は、ファームウェアが搭載された例えばエッジセンサ等の機器についてファームウェアをテストするファームウェアテスト自動化方法に関するものである。
近年、フィルムやシート等の物品の縁部(エッジ)の位置を検出するエッジセンサが実用化されている(例えば、特許文献1参照)。このエッジセンサは、図11に示すように、レーザ1000とコリメータレンズ1001とからなる投光器1002から物品1005に向けて平行光を照射し、物品1005により遮られなかった平行光を、投光器1002と対峙させて配置したリニアイメージセンサ等からなる受光器1003で受光し、エッジ検出部1004が受光器1003における平行光の受光領域と非受光領域(遮光領域)との境界を物品1005のエッジの位置として検出するようにしたものである。
また、最近ではレーザ光等の単色平行光を用い、物品1005のエッジにおける単色平行光のフレネル回折に着目して、例えばマイクロコンピュータからなるエッジ検出部1004にて受光器1003の受光面上における光強度分布から物品1005のエッジの位置を高精度に検出するエッジセンサも提唱されている。
特開2004−177335号公報
以上のようなエッジセンサには、数多くの設定項目があり、これらの設定をキー入力で行うが、キー入力どおりに正しく設定されるかを確認したり、設定どおりの動きをするかを確認したりするのに非常に手間がかかるという問題点があった。また、標準機種以外に特定客先向けの製品がたくさんあり、製品毎に評価テストが必要になるという問題点があった。また、製品になる前に客先からサンプル出荷を求められた場合、設計者だけで出荷前のテストを行うために不具合が発生し易く、サンプル出荷した後で不具合が判明すると、ファームウェアを変更する必要があり、ファームウェアを変更する度にテストを繰り返すことになるので、効率が悪いという問題点があった。エッジセンサの機能の大半はファームウェアで実現しているため、不具合を減らすにはファームウェアの評価テストを漏れなく効率良く行うしかないが、従来はファームウェアの評価テストを手動で行っているために、膨大な工数と時間がかかっていた。
また、以上のような問題点は、エッジセンサのファームウェアに限らず、他のファームウェアでも同様に発生する。例えば自動車や携帯電話機、エレベータなどファームウェアに起因する不具合は、社会問題にもなっている。したがって、ファームウェアの評価テストを漏れなく行う必要があるが、これらのファームウェアを手動で行っているために、膨大な工数と時間がかかっていた。
本発明は、上記課題を解決するためになされたもので、ファームウェアの膨大なテストを少ない工数と時間で可能にするファームウェアテスト自動化方法を提供することを目的とする。
本発明は、ハードウェア制御用のプログラムであるファームウェアが搭載された対象機器について前記ファームウェアをテストするファームウェアテスト自動化方法において、前記対象機器の通常の動作時に設定される設定データと、前記対象機器の通常の動作時にセンサから入力される入力データと、この設定データと入力データに応じたプログラムの実行中に前記ファームウェアが生成するデータである内部変数とに対して、前記ファームウェアのテスト時に外部の情報処理装置から強制書き込みする強制書き込み手順を有するものである。
また、本発明のファームウェアテスト自動化方法の1構成例は、前記設定データを入力するキー入力装置あるいは外部のスイッチのオン/オフ入力(デジタル入力)に対応して前記対象機器が複数ビットの入力バッファをソフトウェア的に生成し、通常の動作時の前記キー入力あるいはデジタル入力については前記キー入力装置あるいはスイッチからの入力に応じて前記対象機器が前記入力バッファの最上位ビットのみに書き込みを行い、テスト中の前記キー入力あるいはデジタル入力の強制書き込みについては前記情報処理装置が前記入力バッファの複数ビットに書き込みを行うようにしたものである。
また、本発明のファームウェアテスト自動化方法の1構成例は、前記対象機器が前記ファームウェアの実行結果に応じて表示タイミングが異なる2つの表示パターンを書き込む出力バッファをソフトウェア的に生成し、前記出力バッファの2つの表示パターンを一定時間毎に交互に前記対象機器の表示装置に出力するようにしたものである。
また、本発明のファームウェアテスト自動化方法の1構成例は、前記ファームウェアのテスト時に前記情報処理装置が前記対象機器の出力バッファの表示パターンを表示の期待値として読み出すようにしたものである。
また、本発明のファームウェアテスト自動化方法の1構成例は、前記対象機器が前記ファームウェアの実行結果に応じて表示タイミングが異なる2つの表示パターンを書き込む出力バッファ、および前記ファームウェアの実行結果に応じたアナログ出力やデジタル出力の出力データを保持している出力バッファを、前記強制書き込み後に、指定された時間待って読み出し、正しい結果であるか否かを判定する判定手順を有するものである。
本発明によれば、対象機器の通常の動作時に設定される設定データと、対象機器の通常の動作時にセンサから入力される入力データと、この設定データと入力データに応じたプログラムの実行中にファームウェアが生成するデータである内部変数とに対して、ファームウェアのテスト時に外部の情報処理装置から強制書き込みすることにより、ファームウェアの膨大なテストを少ない工数と時間で行うことができる。
また、本発明では、設定データを入力するキー入力装置あるいは外部のスイッチのオン/オフ入力(デジタル入力)に対応して対象機器が複数ビットの入力バッファをソフトウェア的に生成し、通常の動作時のキー入力あるいはデジタル入力についてはキー入力装置あるいはスイッチへの入力に応じて対象機器が入力バッファの最上位ビットのみに書き込みを行い、テスト中のキー入力あるいはデジタル入力の強制書き込みについては情報処理装置が入力バッファの複数ビットに書き込みを行うことにより、通常の動作かテスト動作かを判別することなく、また通常のキー入力やデジタル入力か情報処理装置からの強制書き込みかを判別することなく、入力バッファの最上位ビットを調べてオン/オフ状態を判断し、また最上位ビットと1つ下のビットを調べて立ち上がり状態、立ち下がり状態を判断することができる。その結果、立ち上がり、立ち下がり、オン状態、オフ状態を容易に判別することができ、また情報処理装置からの強制書き込みのテスト動作時と通常の動作時の処理に差が出ないようにすることができる。
また、本発明では、対象機器がファームウェアの実行結果に応じて表示タイミングが異なる2つの表示パターンを書き込む出力バッファをソフトウェア的に生成し、出力バッファの2つの表示パターンを一定時間毎に交互に対象機器の表示装置に出力することにより、表示装置の点灯、点滅、消灯の3つの状態を容易に作り出すことができる。
また、本発明では、ファームウェアのテスト時に情報処理装置が対象機器の出力バッファの表示パターンを表示の期待値として読み出すことにより、この期待値を用いてファームウェアの動作が正しいかどうかをテストすることができる。
以下、本発明の実施の形態について図面を参照して説明する。図1は本発明の実施の形態に係るエッジセンサの構成を示すブロック図である。
エッジセンサは、投光器及び受光器を備えたセンサヘッド1と、コントローラ2とから構成される。
コントローラ2は、センサヘッド1と接続されるセンサヘッドインタフェース20と、設定入力のための複数の入力キーが設けられたコンソール21と、図示しないプログラマブルコントローラ(PLC)等からセンタ設定入力などのデジタル入力を受け付けるデジタル入力インタフェース22と、情報表示のための複数のLEDが設けられた表示器23と、エッジセンサが検出した測定対象10のエッジの位置をアナログ値で出力するためのアナログ出力インタフェース24と、後述するイベント出力をデジタル出力するためのデジタル出力インタフェース25と、外部の情報処理装置であるパーソナルコンピュータ3との通信のための例えばRS232CやRS485等の通信インタフェース26と、予め格納されたソフトウェア(ファームウェア)を実行してエッジセンサの機能を実現するCPU27と、CPU27が実行するファームウェアやCPU27の実行結果等のデータ、あるいは設定されたデータを記憶する記憶装置28とを有する。
コンソール21やデジタル入力インタフェース22は、設定データを入力する入力装置を構成している。コントローラ2は、CPU27、記憶装置28およびインタフェース20,22,24〜26を備えたコンピュータであることは言うまでもない。CPU27は、記憶装置28に格納されたプログラム(ファームウェア)を実行する。
同様に、コンピュータ3は、CPU、記憶装置およびインタフェースを備えた周知の構成をしており、このコンピュータ3のCPUは、記憶装置に格納されたプログラム(テストスクリプト)を実行する。
次に、エッジセンサの設定項目について説明する。エッジセンサには、(a)検出距離の設定、(b)受光調整設定、(c)センタ調整設定、(d)平均回数設定、(e)エッジ変化量設定、(f)位置変化時間設定、(g)HIGHしきい値設定、(h)LOWしきい値設定、(i)ヒステリシス幅設定、(j)エッジ変化ホールド設定、(k)エッジの種類設定、(l)アナログ出力設定、(m)汚れしきい値設定、(n)イベント出力アサイン設定、(o)チャンネル間演算定数設定、(p)通信局番設定、(q)通信プロトコル設定、(r)ボーレート設定、(s)パリティ/ストップビット設定、(t)EEPROM書き込み設定、といった多数の設定項目があり、さらにセンサヘッド1を2個使用する場合には、これらが2チャンネル分ある。
(a)検出距離の設定では、測定対象10とエッジセンサ1の受光器間の距離を設定する。
(b)受光調整設定では、センサヘッド1の投光器と受光器間の位置合わせ、及び光量調整を行う。
(c)センタ調整設定では、アナログ出力のセンタを合わせるため、測定データとアナログ出力を対応させるセンタ調整を行う。
(d)平均回数設定では、測定したデータの移動平均を計算する平均回数を設定する。データの移動平均を求めることで、精度を向上させることができる。
(e)エッジ変化量設定では、測定対象10の端に例えば電極などの突起があるとき、突起に対応してアナログ出力が変化することを防ぐために、突起を読み飛ばしてアナログ出力をホールドするエッジ読み飛ばし機能のための位置変化量を設定する。エッジ読み飛ばしは、測定対象10のエッジの位置が後述する位置変化時間内に位置変化量以上変化したときに行われる。
(f)位置変化時間設定では、エッジの位置変化を検出するための遅延時間である位置変化時間を設定する。
(g)HIGHしきい値設定では、測定データまたはチャンネル間演算データの上限値を設定する。測定データまたは演算データが設定された上限値より大きいときは、この上限値を測定データまたは演算データとして出力する(HIGH出力)。測定データまたは演算データが上限値以下の場合はデータをそのまま出力する(PASS出力)。
(h)LOWしきい値設定では、測定データまたはチャンネル間演算データの下限値を設定する。測定データまたは演算データが設定された下限値より小さいときは、この下限値を測定データまたは演算データとして出力する(LOW出力)。測定データまたは演算データが下限値以上の場合はデータをそのまま出力する(PASS出力)。
(i)ヒステリシス幅設定では、HIGH出力またはLOW出力がオンする値と、HIGH出力またはLOW出力がオフする値の差を設定する。
(j)エッジ変化ホールド設定では、測定対象10のエッジの位置が急激に変化してエッジ読み飛ばし機能が働いたときにアナログ出力をホールドするか否かを設定する。
(k)エッジの種類設定では、測定対象10の透明/不透明と、測定対象10がエッジセンサ1の検出エリアに入ってくる方向を設定する。
(l)アナログ出力設定では、アナログ出力のレンジや極性を設定する。
(m)汚れしきい値設定では、測定対象10の汚れや外乱光などで正常に測定ができないときに汚れ有りと判断して、汚れ出力をオンにしアラームを出す汚れ検出のためのしきい値を設定する。
(n)イベント出力アサイン設定では、2チャンネルの測定データまたはチャンネル間演算データのホールド出力、汚れ出力、HIGH出力、PASS出力、LOW出力のうちどのデータをデジタル出力するかを設定する。
(o)チャンネル間演算定数設定では、2つのチャンネルのデータ間で例えば加算、減算、平均などの演算を行う際の定数を設定する。
(p)通信局番設定は、エッジセンサ(コントローラ2)の機器アドレスを設定する。
(q)通信プロトコル設定では、通信プロトコルを選択する。
(r)ボーレート設定では、通信のボーレートを設定する。
(s)パリティ/ストップビット設定では、通信のパリティビットとストップビットを設定する。
(t)EEPROM書き込み設定では、記憶装置28内のEEPROMに設定を保存するか否かを選択する。
エッジセンサでは、以上のような設定の内容に応じて測定対象10のエッジの位置を検出する。図2、図3はエッジセンサの測定時の動作を示すフローチャートである。なお、図2、図3では、記載を簡略化するため1チャンネル分についてのみ記載している。
まず、測定が開始され、センサヘッド1の投光器と受光器間に測定対象10が挿入されると、受光器で受光した光量(アナログ値)がコントローラ2のセンサヘッドインタフェース20に入力される。このアナログ値は、センサヘッドインタフェース20で光量データにA/D変換される。
コントローラ2のCPU27は、この光量データを読み出し(ステップS1)、正規化して(ステップS2)、さらにフィルタ処理してノイズ等を除去する(ステップS3)。こうして、正規化光量データD1が得られる。
続いて、CPU27は、正規化光量データD1に対してフレネル回折補間処理を行い、実位置データD2を得る(ステップS4)。このフレネル回折補間処理は、画素数の少ないリニアイメージセンサ(受光器)を使って投光器からのレーザ平行光を受光した際に、所定の近似式を用いて、より画素数の多い高精度な光量分布パターンを求める補間処理である。
フレネル回折補間処理後、CPU27は、汚れしきい値設定で設定された汚れ検出しきい値と実位置データD2を用いて汚れ検出処理を行う(ステップS5)。
汚れ検出処理後、CPU27は、実位置データD2に対してスパン調整処理を行い、現在位置データD3を得る(ステップS6)。
続いて、CPU27は、エッジ読み飛ばし機能のために、現在位置データD3を、位置変化時間設定で設定された位置変化時間だけ遅らせる遅延処理を行い、遅延位置データD4を得る(ステップS7)。
そして、CPU27は、現在位置データD3と遅延位置データD4とエッジ変化量設定で設定された位置変化量に基づいて、測定対象10のエッジの位置が位置変化時間内に位置変化量以上変化したか否かを判定し、エッジ位置が急激に変化したと判定した場合にはこの変化を読み飛ばして出力をホールドする読み飛ばし処理を行い、ホールド出力D5を得る(ステップS8)。
次に、CPU27は、現在位置データD3と遅延位置データD4と平均回数設定で設定された平均回数を用いて、データの移動平均を計算する平均化処理を行い、平均化位置データD6を得る(ステップS9)。
平均化処理後、CPU27は、センタ調整設定で設定されたセンタ調整パラメータを用いて、平均化位置データD6のセンタ調整を行い、センタ調整位置データD7を得る(ステップS10)。
センタ調整処理後、CPU27は、センタ調整位置データD7に対して、アナログ出力設定で設定された測定レンジに従って、センタ調整位置データD7のレンジを制限するリミット処理を行い、測定データD8を得る(ステップS11)。
次に、CPU27は、チャンネル間演算を行う場合、2つのチャンネルの測定データD8とチャンネル間演算定数設定で設定された演算定数を用いて、加算、減算、平均などのチャンネル間演算を行い、演算データD9を得る(ステップS12)。
そして、CPU27は、HIGHしきい値設定で設定された上限値とLOWしきい値設定で設定された下限値に基づいて、測定データD8に対して上下限判定処理を行う(ステップS13)。CPU27は、測定データD8が上限値より大きい場合は上限値を出力し(HIGH出力)、測定データD8が下限値より小さい場合は下限値を出力し(LOW出力)、測定データD8が下限値以上で、かつ上限値以下の場合はデータをそのまま出力する(PASS出力)。
同様に、CPU27は、演算データD9に対して上下限判定処理を行う(ステップS14)。
次に、CPU27は、イベント出力アサイン設定で設定された内容に従って、2チャンネルの測定データD8または演算データD9のホールド出力、汚れ出力、HIGH出力、PASS出力、LOW出力の中から出力すべきデータを選択して、デジタル出力D10を得る(ステップS15)。選択されたデータは、デジタル入力インタフェース25を通じて外部に出力される。
また、CPU27は、演算データD9に対して、アナログ出力設定で設定された測定レンジに従ってリミット処理を行い、演算出力データD11を得る(ステップS16)。
次に、CPU27は、アナログ出力設定で設定された内容に従って、測定データD8または演算出力データD11のうち何れか一方を選択する(ステップS17)。選択されたデータは、アナログ出力インタフェース24でD/A変換され(ステップS18)、アナログ出力A1として出力される。選択されたデータが測定データD8であれば、アナログ出力A1は測定対象10のエッジの位置を示している。こうして、エッジセンサの測定時の動作が終了する。
以上のような測定を行うには、コンソール21から前記のような各種設定を行うが、パラメータが指定桁数入力されているかどうか、イリーガルな数値を除外しているかどうか、設定されたとおりの動作になっているかどうか等をテストする必要がある。以下、このようなテストを自動化する本実施の形態のファームウェアテスト自動化方法について説明する。
まず、本実施の形態では、コントローラ2のファームウェアに機能を追加して、前記の設定データを入力するキー入力や外部のスイッチ等のオン/オフ入力(デジタル入力)と各種データ(内部変数)に対して、コンピュータ3から通信インタフェース26を介して強制書き込みができるようにした。強制書き込みができる内部変数としては、図2、図3に示したデータのうち、実位置データD2、現在位置データD3、遅延位置データD4、平均化位置データD6、センタ調整位置データD7、測定データD8、演算データD9、演算出力データD11がある。受光器からのアナログ光量は膨大なデータ量になるため、強制書き込みが難しい。したがって、本実施の形態の自動テストは、実位置データD2以降から行われる。
次に、本実施の形態の自動テストにおいて、データの強制書き込みや読み出しあるいはエラーチェックなどテストの内容を作業者がコンピュータ3に対して指示するためのプログラムであるテストスクリプトの1例を図4に示す。図4において、40は命令、41はパラメータ、42は遅延時間、43は表示器23のLED表示の期待値である。
図5はコンソール21に設けられた入力キーの1例を示す図である。DISPキーはチャンネルを切り替えるためのキー、PARAキーは調整やパラメータ設定に移行するためのキー、RUNキーはRUNモードに移行するためのキー、アップキーは数値を増加させるためのキー、ダウンキーは数値を減少させるためのキー、ENTキーはパラメータ変更した数値を確定するためのキーである。
図4に示した命令40のうち、INIは初期化(工場出荷時設定に戻す)ことを命令するものであり、KEYはコンソール21の6つの入力キー、すなわちDISPキー、PARAキー、RUNキー、UPキー、DOWNキー、ENTキーの操作と同じ状態を作り出すことを命令するものである。また、SETは内部変数に強制書き込みすることを命令するものであり、CHKは内部変数や出力バッファの内容をチェックすることを命令するものである。
パラメータ41には、キー入力の種類や、内部変数のアドレス、内部変数あるいは出力バッファの番号が記述される。例えば図4における「KEY:PARA」はPARAキーの入力を命令するものであり、「SET:9961W=015000」はアドレス9961Wで指定される内部変数に015000という値を強制書き込みすることを命令するものであり、「CHK:1004W=015000」はアドレス1004Wで指定される内部変数の値が015000かどうかをチェックすることを命令するものである。
遅延時間42は、命令が実行されてから結果を確認または格納するまでの待ち時間である。遅延時間42を設定する理由は、キー入力や内部変数に強制書き込みしてから、実際に結果が表れるまでに時間のかかる処理があるため、すぐにLEDの状態や内部変数、出力バッファを読み出すと正しい結果になっていない可能性があるからである。したがって、遅延時間42で指定された時間だけ待ってから結果を読み出すことになる。
なお、LED表示の期待値43については後述する。
強制書き込みでは、通常の入力を止めてコンピュータ3からの書き込みを優先させるため特殊な書き込みコマンドが必要である。コントローラ2のファームウェアとしては、各レジスタに強制ビット領域を設け、この強制ビットがセットされている場合には、該当するキーや外部のスイッチ等のオン/オフ入力、内部変数について、通常のキー入力や、デジタル入力、内部変数の書き込みをスキップする処理を追加するだけで良い。
キー入力やデジタル入力では、オフからオンへの立ち上がり、オンからオフへの立ち下がり、オン状態、オフ状態の4通りの状態があるため、これらの状態を通信で疑似入力しようとすると、例えば状態をコード化する等の煩雑な処理が必要になる。
そこで、キー入力やデジタル入力については、コントローラ2のファームウェアで図6に示すような16ビットの入力バッファ50をソフトウェア的に実現し、入力バッファ50のビット15(最上位ビット、以下、MSBとする)に現在の状態を格納し、その他のビットに過去の状態を格納するように取り決めておけば、キー入力やデジタル入力について立ち上がり、立ち下がり、オン状態、オフ状態を判別することができ、またコンピュータ3からの強制書き込みと通常のキー入力やデジタル入力で処理に差が出ないようにすることができる。
このような入力バッファ50を2点のデジタル入力とDISPキー、PARAキー、RUNキー、UPキー、DOWNキー、ENTキーの各入力キー毎に生成する。図6の例では、DOWNキーの例について示している。
コンソール21上の入力キーが操作された場合、コントローラ2のCPU27は、この入力キーに該当する入力バッファ50のMSBのみに「1」を書き込む。
一方、コンピュータ3からの強制書き込みでキー入力やデジタル入力を擬似的に行う場合、コンピュータ3のCPUは、テストスクリプトに従って、該当する入力バッファ50に8000H(最後のHは16進数表記であることを示す)を書き込む。例えばテストスクリプトに「KEY:PARA」と記述されていた場合には、PARAキーの入力バッファ50に8000Hを書き込むことになる。これにより、キー入力やデジタル入力の立ち上がりを表現することができる。一方、立ち下がりを入力する場合には、入力バッファ50に7FFFHを書き込むようにすればよい。
コントローラ2のファームウェアの一部である、入力バッファを処理するプログラムとしては、通常の測定かテストかを判別することなく、また通常のデジタル入力やキー入力かコンピュータ3からの強制書き込みかを判別することなく、各入力バッファ50のMSBを調べて該当するキー入力やデジタル入力のオン/オフ状態を判断し、またMSBとビット14を調べて該当するキー入力やデジタル入力の立ち上がり状態、立ち下がり状態を判断するようにしておけばよい。このキー入力やデジタル入力の状態を判断する入力処理後に、各入力バッファ50を算術右シフト(MSBをそのままにして右シフト)すれば、同じ立ち上がり、立ち下がり入力が誤って2度実行されることはない。
なお、前述のとおり、各入力バッファ50毎に設けられた強制ビット51がセットされている場合には、コンピュータ3からの強制書き込みを優先し、通常のキー入力やデジタル入力があったとしても、入力バッファ50に書き込みしないようにする。
以上のような入力バッファを設けない場合には、オンとオフの2回の書き込みを行わないと動作しないとか、同じキーが何度も押された状態になってしまうとかいった問題が起きて、このような問題を回避するために複雑な処理を追加することになり、通常の入力と強制書き込みで差がでてしまい、CPUの負荷も増えるといった問題が生じる。
次に、本実施の形態では、コントローラ2のファームウェアで図7(A)に示すような16ビットの出力バッファ70をソフトウェア的に実現し、表示器23の7セグメントLEDや個別LEDを点灯させる最終段のバッファで0.25秒ごとに交互にポート出力してLEDの点滅も分かるようにした。
図8は表示器23に設けられたLEDの配置の1例を示す図である。表示器23には、4個の上段7セグメントLED230と、4個の下段7セグメントLED231と、8個の個別LED232が設けられている。上段の7セグメントLED230は、測定したエッジ位置をmm単位で表示し、またエラーが発生したときは、エラーコードを点滅表示する。下段の7セグメントLED231は、センサヘッド1を2組使用するときにチャンネル2のエッジ位置を表示する。また、パラメータを表示するときは、最上位桁が機能番号を表し、下3桁が設定内容を表す。
CH1,CH2の個別LED232の点灯はそれぞれチャンネル1、チャンネル2が選択されていることを表し、CH1,CH2の点滅はそれぞれチャンネル1、チャンネル2にエラーが発生していることを表す。EV1〜EV4は割り付けられたイベントがオンしたときに点灯し、RUNは、RUNモード時に点灯し、調整モード時に点滅する。また、ALMは異常があるときや操作エラーの場合に点滅する。
図7(A)に示したような出力バッファ70を4個の上段7セグメントLED230の各7セグメントLED毎、4個の下段7セグメントLED231の各7セグメントLED毎、個別LED232は8個なので全体で1個生成する。したがって、図8の表示器23の場合には、4+4+1=9個の出力バッファ70が存在することになる。図7(A)の例では、4個の上段7セグメントLED230のうちの1個の7セグメントLEDについて示している。
コントローラ2のCPU27は、ファームウェアを実行して、所定のLED表示を行うべきときに該当する出力バッファに値を書き込む。どのようなLED表示を行うかは、予めエッジセンサの機能として定められている。
16ビットの出力バッファ70のビット0〜ビット7は0.25秒経過時に出力する7セグメントLEDの状態を表しており、ビット8〜ビット15は0.5秒経過時に出力する7セグメントLEDの状態を表している。そして、図7(A)、図7(B)に示すようにビット0〜ビット7は7セグメントLEDのそれぞれセグメントseg1〜seg8の状態を表し、同様にビット8〜ビット15はそれぞれセグメントseg1〜seg8の状態を表している。
そして、出力バッファ70のビット0〜ビット7とビット8〜ビット15を0.25秒毎に交互に表示器23の対応するLEDドライバに出力すれば、該当する7セグメントLEDの点灯、点滅、消灯の3つの状態を作り出すことができる。つまり、ビット0〜ビット7とビット8〜ビット15において、同一のセグメントに対応するビット(例えばビット0とビット8)が共に「1」の場合には、そのセグメントは点灯し、同一のセグメントに対応するビットが異なる場合には、そのセグメントは点滅し、同一のセグメントに対応するビットが共に「0」の場合には、そのセグメントは消灯する。したがって、例えば出力バッファ70のビット15〜ビット0が「0011111100000000」であれば、数字の0が点滅表示されることになる。
こうして、出力バッファ70に表示パターンを2つ持たせ、この2つの表示パターンを割り込み処理で交互に出力することにより、LEDの点灯、点滅、消灯の3つの状態を作り出すことができる。
なお、7セグメントLED230,231の場合は16ビットの出力バッファ70が必要であるが、8個の個別LED232についてはそれぞれ2ビットの出力バッファがあればよい。その理由は、0.25秒経過時に出力する1ビットと0.5秒経過時に出力する1ビットがあればよいからである。この2ビットが「11」であれば、個別LEDは点灯し、「10」または「01」であれば点滅し、「00」であれば消灯することになる。
次に、図4に示したLED表示の期待値43について説明する。期待値43は、各出力バッファの状態を、対応するLEDの状態で表現したものである。図4の期待値44,45は、4個の上段7セグメントLED230の出力バッファ70に対応するものである。期待値44,45はそれぞれ4個の値からなり、左端の値、左から2番目の値、左から3番目の値、右端の値はそれぞれ左端、左から2番目、左から3番目の値、右端の7セグメントLED230の状態を表している。また、期待値44は出力バッファ70のビット0〜ビット7の状態を表し、期待値45はビット8〜ビット15の状態を表している。
したがって、例えば期待値44,45がそれぞれ「1500」であったとすれば、左端の7セグメントLED230に対応する出力バッファ70のビット15〜ビット0は文字“1”を示す「0000011000000110」、左端から2番目の7セグメントLED230に対応する出力バッファ70のビット15〜ビット0は文字“5”を示す「0110110101101101」、左端から3番目の7セグメントLED230に対応する出力バッファ70のビット15〜ビット0は文字“0”を示す「0011111100111111」、右端の7セグメントLED230に対応する出力バッファ70のビット15〜ビット0も文字“0”を示す「0011111100111111」である。
同様に、期待値46,47は、4個の下段7セグメントLED231の出力バッファ70に対応するものである。期待値46,47はそれぞれ4個の値からなり、左端の値、左から2番目の値、左から3番目の値、右端の値はそれぞれ左端、左から2番目、左から3番目の値、右端の7セグメントLED231の状態を表している。また、期待値46は出力バッファ70のビット0〜ビット7の状態を表し、期待値47はビット8〜ビット15の状態を表している。
期待値48,49,50,51,52,53,54,55は、それぞれCH1,CH2,EV1,EV2,EV3,EV4,RUN,ALMの各個別LED232の出力バッファに対応するものである。これらの期待値はそれぞれ2ビットで、2ビットの出力バッファの状態を示している。
以上のような期待値43(44〜55)は、テストスクリプトに記述されている命令を実行した後、この命令と同一行に記述されている遅延時間だけ待ってから、出力バッファを読みにいって、出力バッファの状態を該当する期待値44〜45の箇所に記述したものである。このように、LED表示の期待値43は、テストの実行によって自動的に生成される。自動生成する理由は、人が期待値43を記述しようとすると非常に手間がかかるからである。
従来、LEDを点滅させるには、LEDの表示パターンと点滅有無フラグを用意して、点滅有無フラグを見て、点滅モードであれば割り込み処理の中で一時LEDをオフにするといった処理をしていた。
一方、本実施の形態では、出力バッファに表示パターンを2つ持たせ、この2つの表示パターンを一定時間毎に交互に出力するだけでよい。
また、本実施の形態では、ファームウェアのテストを行う場合、出力バッファの状態を読み出して期待値と一致するかどうかをチェックするだけでよく、点灯か点滅か消灯かを識別する必要がない。
これに対して、従来の方法では、表示パターンと点滅有無フラグに分かれているため、表示パターンと点滅有無フラグを通信で同時に読み出せない可能性があり、時間的にずれて読み出すと、期待値と一致しない等の矛盾が生じる可能性があった。
次に、テストスクリプトの生成方法について説明する。図9はテストスクリプトの生成とテストの実行を行うコンピュータ3の画面の1例を示す図である。図9に示すように、コンピュータ3の画面には、コンソール21に対応するキー入力部90と、表示器23に対応するLED表示部91と、テストスクリプトを表示するスクリプト表示部92と、内部変数や出力バッファのアドレスを入力するためのアドレス入力欄93と、内部変数の値を入力するためのデータ入力欄94と、遅延時間を入力するための遅延時間入力欄95と、内部変数のアドレスや内部変数の値をSET命令に記述するための強制書き込みボタン96と、CHK命令を生成するためのチェックスクリプト生成ボタン97と、テストを開始するキー操作再生ボタン98などが表示されている。
作業者は、このような画面に対して操作を行うことにより、図4に示したテストスクリプトを作成する。
テストスクリプトの作成後に、作業者がキー操作再生ボタン98を操作すると、コンピュータ3のCPUは、テストスクリプトを実行して結果をスクリプト表示部92に表示する。
テストの実行時、コンピュータ3のCPUは、テストスクリプトのKEY命令やSET命令に従って、コントローラ2のキー入力やデジタル入力の入力バッファ、あるいは内部変数に対して強制書き込みを行う。
コントローラ2のCPU2は、強制書き込みされた値に応じて、図2、図3に示したような一連の処理を実行していく。
そして、コンピュータ3のCPUは、テストスクリプトの命令を実行した後、この命令と同一行に記述されている遅延時間だけ待ってから、コントローラ2の出力バッファを読みにいって、出力バッファの状態をテストスクリプトの該当するLED表示の期待値に書き込む。
また、テストスクリプトにCHK命令が記述されている場合、コンピュータ3のCPUは、このCHK命令と同一行に記述されている遅延時間だけ待ってから、CHK命令の後のパラメータ41に記述されたアドレスで指定される内部変数の値が同パラメータ41に記述されている値(パラメータ41の「=」以降の数値)どおりかどうかをチェックし、また出力バッファの値がLED表示の期待値どおりかどうかをチェックする。
なお、LED表示の期待値は始めはテストスクリプトに記述されておらず、テストの実行によって自動生成されたものであるから、最初のテストでは出力バッファの値が正しいかどうかをチェックすることはできない。最初のテストでは、LED表示の期待値が正しいかどうかを作業者がチェックする必要がある。一度実行したテストスクリプトを使用して、再度テストを行う場合には、期待値はチェック済みなので、この期待値を使ってファームウェアの動作が正しいかどうかをチェックすることができる。
図10にテストの実行結果の1例を示す。図10の例では、トータル72行のチェックで、71行目にエラーが発生したことが分かる。また、71行目(「CHK:0068W・・・・」の行)はL1とL2の2行表示されており、L1が内部変数と出力バッファの値を読み出した実行結果、L2がテストスクリプトに記述されていたものである。図10の例では、内部変数の値は一致しているが、LED表示の期待値が一致していないために、エラーが発生したことが分かる。このような実行結果は、実行結果ファイルとしてコンピュータ3の記憶装置に保存される。また、実行結果ファイルからエラー箇所だけ削除して、新たな期待値を付加したテストスクリプトを作成することもできる。
以上のように、本実施の形態では、設定データと内部変数に対して、コンピュータ3から強制書き込みすることにより、ファームウェアの膨大なテストを少ない工数と時間で行うことができ、評価工数や評価時間を大幅に削減することができる。エッジセンサでは、ファームウェアのテストが例えば数万ステップに達する。仮に、数万ステップの操作をキーやデジタル入力といった手動操作で確かめようとすると、膨大な日数がかかり、また見落としも発生する可能性がある。これに対して、本実施の形態では、キー入力やデジタル入力をコンピュータ3からの疑似入力に置き換えることができ、また一度作成したテストスクリプトをコピー&ペーストして数万ステップのテストを行うことができるので、テストに要する時間を大幅に短縮することができる。テストパターンは繰り返しが多いので、1つのテストパターンをコピー&ペーストしてステップ数を増やしていくことが可能である。また、標準機種以外の特定客先向けの製品であっても、共通部分のテストスクリプトはそのまま使えるので、評価工数を大幅に削減することができる。
また、本実施の形態では、設定データや内部変数の強制書き込みを実現することにより、意図的に誤った値や境界値を入力してファームウェアの挙動を調べることができるので、評価の質を向上させることができる。また、本実施の形態では、計算途中の内部変数に強制書き込みできるため、センサヘッドがなくてもテストを行うことができ、間違っている箇所を特定することができる。
また、本実施の形態では、入出力バッファの構造を工夫したことにより、テスト時と通常の動作で処理に差を設ける必要がなく、テスト用に追加したファームウェアも最小限で済み、CPU負荷もない。
なお、本実施の形態では、図9に示したコンピュータ3の画面に結果を表示しながら実行するが、表示しながらの実行だと指定遅延時間で実行できない場合もあるので、バッチファイルで実行して、結果をファイルに残すようにしてもよい。
本発明は、例えばエッジセンサで用いるファームウェアを自動的にテストする技術に適用することができる。
本発明の実施の形態に係るエッジセンサの構成を示すブロック図である。 本発明の実施の形態のエッジセンサの測定時の動作を示すフローチャートである。 本発明の実施の形態のエッジセンサの測定時の動作を示すフローチャートである。 本発明の実施の形態の自動テストで用いるテストスクリプトの1例を示す図である。 本発明の実施の形態のエッジセンサのコンソールに設けられた入力キーの1例を示す図である。 本発明の実施の形態のエッジセンサにおける入力バッファの構造を示す図である。 本発明の実施の形態のエッジセンサにおける出力バッファの構造及び出力バッファに対応する7セグメントLEDを示す図である。 本発明の実施の形態のエッジセンサの表示器に設けられたLEDの配置の1例を示す図である。 本発明の実施の形態においてテストスクリプトの生成とテストの実行を行うコンピュータの画面の1例を示す図である。 本発明の実施の形態におけるテストの実行結果の1例を示す図である。 従来のエッジセンサの1構成例を示すブロック図である。
符号の説明
1…センサヘッド、2…コントローラ、3…パーソナルコンピュータ、10…測定対象、20…センサヘッドインタフェース、21…コンソール、22…デジタル入力インタフェース、23…表示器、24…アナログ出力インタフェース、25…デジタル出力インタフェース、26…通信インタフェース、27…CPU、28…記憶装置、50…入力バッファ、70…出力バッファ。

Claims (5)

  1. ハードウェア制御用のプログラムであるファームウェアが搭載された対象機器について前記ファームウェアをテストするファームウェアテスト自動化方法において、
    前記対象機器の通常の動作時に設定される設定データと、前記対象機器の通常の動作時にセンサから入力される入力データと、この設定データと入力データに応じたプログラムの実行中に前記ファームウェアが生成するデータである内部変数とに対して、前記ファームウェアのテスト時に外部の情報処理装置から強制書き込みする強制書き込み手順を有することを特徴とするファームウェアテスト自動化方法。
  2. 請求項1記載のファームウェアテスト自動化方法において、
    前記設定データを入力するキー入力装置あるいは外部のスイッチのオン/オフ入力(デジタル入力)に対応して前記対象機器が複数ビットの入力バッファをソフトウェア的に生成し、
    通常の動作時の前記キー入力あるいはデジタル入力については前記キー入力装置あるいはスイッチからの入力に応じて前記対象機器が前記入力バッファの最上位ビットのみに書き込みを行い、
    テスト中の前記キー入力あるいはデジタル入力の強制書き込みについては前記情報処理装置が前記入力バッファの複数ビットに書き込みを行うことを特徴とするファームウェアテスト自動化方法。
  3. 請求項1記載のファームウェアテスト自動化方法において、
    前記対象機器が前記ファームウェアの実行結果に応じて表示タイミングが異なる2つの表示パターンを書き込む出力バッファをソフトウェア的に生成し、
    前記出力バッファの2つの表示パターンを一定時間毎に交互に前記対象機器の表示装置に出力することを特徴とするファームウェアテスト自動化方法。
  4. 請求項3記載のファームウェアテスト自動化方法において、
    前記ファームウェアのテスト時に前記情報処理装置が前記対象機器の出力バッファの表示パターンを表示の期待値として読み出すことを特徴とするファームウェアテスト自動化方法。
  5. 請求項1記載のファームウェアテスト自動化方法において、
    前記対象機器が前記ファームウェアの実行結果に応じて表示タイミングが異なる2つの表示パターンを書き込む出力バッファ、および前記ファームウェアの実行結果に応じたアナログ出力やデジタル出力の出力データを保持している出力バッファを、前記強制書き込み後に、指定された時間待って読み出し、正しい結果であるか否かを判定する判定手順を有することを特徴とするファームウェアテスト自動化方法。
JP2006274900A 2006-10-06 2006-10-06 ファームウェアテスト自動化方法 Expired - Fee Related JP4865491B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006274900A JP4865491B2 (ja) 2006-10-06 2006-10-06 ファームウェアテスト自動化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006274900A JP4865491B2 (ja) 2006-10-06 2006-10-06 ファームウェアテスト自動化方法

Publications (2)

Publication Number Publication Date
JP2008097086A true JP2008097086A (ja) 2008-04-24
JP4865491B2 JP4865491B2 (ja) 2012-02-01

Family

ID=39379909

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006274900A Expired - Fee Related JP4865491B2 (ja) 2006-10-06 2006-10-06 ファームウェアテスト自動化方法

Country Status (1)

Country Link
JP (1) JP4865491B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112011100145T5 (de) 2010-08-23 2012-09-20 Panasonic Corporation Verfahren zum bestimmen einer verschlechterung einer brennstoffzelle
JP2016110251A (ja) * 2014-12-03 2016-06-20 富士通株式会社 テストパターン作成プログラム、テストパターン作成方法及びテストパターン作成装置
CN113933627A (zh) * 2021-10-08 2022-01-14 网易有道信息技术(北京)有限公司 用于自动测试验证电子产品的方法及其相关产品

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62131345A (ja) * 1985-12-04 1987-06-13 Hitachi Ltd デバツグ方法
JPH1011112A (ja) * 1996-04-01 1998-01-16 Panasonic Singapore Lab Pte Ltd システム用のファームウェアの開発及びテスト用のモニタ装置、開発方法、及び、汎用回路内エミュレータ装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62131345A (ja) * 1985-12-04 1987-06-13 Hitachi Ltd デバツグ方法
JPH1011112A (ja) * 1996-04-01 1998-01-16 Panasonic Singapore Lab Pte Ltd システム用のファームウェアの開発及びテスト用のモニタ装置、開発方法、及び、汎用回路内エミュレータ装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112011100145T5 (de) 2010-08-23 2012-09-20 Panasonic Corporation Verfahren zum bestimmen einer verschlechterung einer brennstoffzelle
JP2016110251A (ja) * 2014-12-03 2016-06-20 富士通株式会社 テストパターン作成プログラム、テストパターン作成方法及びテストパターン作成装置
CN113933627A (zh) * 2021-10-08 2022-01-14 网易有道信息技术(北京)有限公司 用于自动测试验证电子产品的方法及其相关产品

Also Published As

Publication number Publication date
JP4865491B2 (ja) 2012-02-01

Similar Documents

Publication Publication Date Title
CN106097361B (zh) 一种缺陷区域检测方法及装置
CN108140343A (zh) 显示子***的测试
JP6780769B2 (ja) 学習装置、学習方法および学習プログラム
US9582620B1 (en) Method and system for automated refined exclusion of entities from a metric driven verification analysis score
CN102231127B (zh) Bios错误信息显示的检测***及检测方法
JP2019106119A (ja) 検出システム、情報処理装置、評価方法及びプログラム
JP2015088191A5 (ja)
US20230021099A1 (en) Method and assistance system for checking samples for defects
JP4704897B2 (ja) パラメトリック公差を用いる3次元測定データ検査方法
JP4865491B2 (ja) ファームウェアテスト自動化方法
TWI748828B (zh) 產品瑕疵檢測方法、電腦裝置及儲存媒體
JPWO2019003313A1 (ja) デバッグ装置
CN116245808A (zh) 工件缺陷检测方法、装置、电子设备及存储介质
US10878559B2 (en) Method and system for evaluating efficiency of manual inspection for defect pattern
JP6875878B2 (ja) 情報処理装置、プログラム、及び制御方法
KR20210090873A (ko) 로봇 및 로봇 인터페이스 방법
WO2014083646A1 (ja) プログラマブル表示器、プログラム
JP6658273B2 (ja) 組立検査支援方法及び組立検査支援プログラム
US20120095725A1 (en) Programming method for a coordinate measuring machine and computing device thereof
JP2020064019A (ja) 測定データ収集装置及びプログラム
KR20200002590A (ko) 검사 결과 제시 장치, 검사 결과 제시 방법 및 검사 결과 제시 프로그램
JP2019029001A5 (ja) 画像データ管理方法、製造装置、生産システム、生産システムの画像管理方法、制御プログラム、および記録媒体
TWI770561B (zh) 產品瑕疵檢測方法、電腦裝置及儲存介質
WO2023175905A1 (ja) メーター識別システム、メーター識別方法および記録媒体
JP6840294B1 (ja) プログラマブル表示器、制御システムおよび解析方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090326

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110204

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110830

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111020

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111108

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111110

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141118

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4865491

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees