(57)【特許請求の範囲】
【請求項１】
複数のデータ処理プログラムと、当該データ処理プログラムのエラー時に対応したエラー処理プログラムを格納する格納部と、
前記データ処理プログラムの実行開始前に、当該データ処理プログラムに対応する前記エラー処理プログラムの情報をメモリに記録し、
前記データ処理プログラム終了後に、次回実行予定の他のデータ処理プログラムの情報を前記メモリに更新記録し、
次回のプログラム処理の開始時に、前記メモリに記録された情報に対応する前記データ処理プログラムまたは前記エラー処理プログラムに切り替え、
前記データ処理プログラムが正常終了したか否かに応じて、次回実行予定の他のデータ処理プログラムの情報を前記メモリに更新記録し、
前記データ処理プログラムが正常終了しなかった場合、前記エラー処理プログラムを実行し、前記データ処理プログラムのエラー時に対応したエラー処理を行うプロセッサと、
を備えたことを特徴とするデータ処理装置。
【請求項２】
前記メモリは、不揮発メモリであることを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
異なる複数の変位量を検出する一つまたは複数のセンサーを備え、
前記プロセッサは、前記センサーの出力順序があらかじめ定められ、時系列に異なって入力される複数の変位量のデータに対応する前記データ処理プログラムに切り替えて実行処理することを特徴とする請求項１に記載のデータ処理装置。
【請求項４】
前記プロセッサは、前記メモリに、前記データ処理プログラムあるいは前記エラー処理プログラムの開始アドレスを記録し、
次回処理の開始時に、前記メモリに記録された開始アドレスを読み込み、前記格納部の当該開始アドレスにジャンプして該当する前記データ処理プログラムまたは前記エラー処理プログラムに切り替えて実行することを特徴とする請求項１に記載のデータ処理装置。
【請求項５】
前記プロセッサは、前記エラー処理プログラムの実行時に、外部装置に対し、通信部を介した通信によりエラー発生を通知することを特徴とする請求項１に記載のデータ処理装置。
【請求項６】
前記プロセッサは、前記エラー処理プログラムの実行時に、状態を初期化して動作を停止させることを特徴とする請求項１に記載のデータ処理装置。
【請求項７】
前記センサーによる変位量検出時の起電力に基づく電力を生成する電源部を備え、当該電源部により生成した電力に基づき動作することを特徴とする請求項３に記載のデータ処理装置。
【請求項８】
前記電源部は、通信部による外部装置との通信時の起電力に基づく電力を生成することを特徴とする請求項７に記載のデータ処理装置。
【請求項９】
前記格納部は、さらに、前記データ処理プログラムと、当該データ処理プログラムに対応する前記エラー処理プログラムの開始アドレスとを２次元配列し、処理順を設定したアドレステーブルを含み、
前記アドレステーブルには、異なる処理順のエントリに、同一または異なる前記データ処理プログラムの開始アドレスを格納自在であり、
前記プロセッサは、前記アドレステーブルの処理順について前回と次回とが同一の開始アドレスの場合、前記データ処理プログラムを前記格納部から読み出して連続実行可能としたことを特徴とする請求項１〜８のいずれか一つに記載のデータ処理装置。
【請求項１０】
前記アドレステーブルには、複数の前記データ処理プログラムの実行順を一つの周期分だけ設定しておき、
前記プロセッサは、前記一つの周期の最終のデータ処理プログラム終了後に初期の処理として設定された前記データ処理プログラムの開始アドレスに戻り読み込む処理を行うことにより、複数の周期にわたり継続して前記データ処理プログラムを実行することを特徴とする請求項９に記載のデータ処理装置。
【請求項１１】
プロセッサにより、データ処理プログラムの実行開始前に、当該データ処理プログラムに対応するエラー処理プログラムの情報をメモリに記録する第１工程と、
前記プロセッサにより、前記データ処理プログラム終了後に、次回実行予定の他のデータ処理プログラムの情報を前記メモリに更新記録する第２工程と、
前記プロセッサによる次回のプログラム処理の開始時に、前記メモリに記録された情報に対応する前記データ処理プログラムまたは前記エラー処理プログラムに切り替える第３工程と、を含み、
前記第３工程では、前記データ処理プログラムが正常終了したか否かに応じて、次回実行予定の他のデータ処理プログラムの情報を前記メモリに更新記録し、前記データ処理プログラムが正常終了しなかった場合、前記エラー処理プログラムを実行し、前記データ処理プログラムのエラー時に対応したエラー処理を行うことを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを処理するデータ処理装置およびデータ処理方法に関する。
【背景技術】
【０００２】
複数のプログラムを実行してデータ処理する処理装置では、プログラムの実行順序をテーブルの設定を用いて行っていた。例えば、各プログラムのアドレスをアドレステーブルに記憶しておき、プロセッサがアドレステーブルに記憶されたアドレスを読み込み、該当するアドレスにジャンプするものがある（例えば、下記特許文献１参照。）。また、アドレステーブルに処理の実行順序を設定するものがある（例えば、下記特許文献２参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開昭６０−２４６４４１号公報
【特許文献２】特開昭５３−１８９３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術では、プログラムの実行が正常に終了したときと、プログラムの実行途中で停止したときに、次に行う処理を簡単に変更することができなかった。例えば、実行しているあるプログラムが途中でエラーとなったときに、次の処理として、このプログラムに対応したエラー処理に切り替えて実行開始することができなかった。特に、複数のプログラムを順次切り替えて処理する場合、各プログラムにそれぞれ対応したエラー処理が必要となるが、プログラムの正常終了を前提としたプログラムの切り替えしか行えなかった。このため、プログラムの実行途中でエラーが生じたとき、実行していたプログラムに対応し、次に行うべきエラー処理のプログラムに切り替えることができなかった。
【０００５】
より具体的には、安定した電源を得ることができない処理装置の場合、プログラム実行中における電力の喪失によってプログラムの実行が途中で停止することが考えられる。このような事態に対応するためには、電源供給の再開時にプロセッサが初期状態から起動しても前回処理で生じたエラーに対応したエラー処理を実行する必要があるが、これが行えなかった。
【０００６】
一つの側面では、本発明は、プログラムの処理が正常終了か否かに応じて、次に行う処理を簡単に変更できることを目的とする。
【課題を解決するための手段】
【０００７】
一つの案では、複数のデータ処理プログラムと、当該データ処理プログラムのエラー時に対応したエラー処理プログラムを格納する格納部と、前記データ処理プログラムの実行開始前に、当該データ処理プログラムに対応する前記エラー処理プログラムの情報をメモリに記録し、前記データ処理プログラム終了後に、次回実行予定の他のデータ処理プログラムの情報を前記メモリに更新記録し、次回のプログラム処理の開始時に、前記メモリに記録された情報に対応する前記データ処理プログラムまたは前記エラー処理プログラムに切り替え、前記データ処理プログラムが正常終了したか否かに応じて、次回実行予定の他のデータ処理プログラムの情報を前記メモリに更新記録し、前記データ処理プログラムが正常終了しなかった場合、前記エラー処理プログラムを実行し、前記データ処理プログラムのエラー時に対応したエラー処理を行うプロセッサと、を備えるデータ処理装置を要件とする。
【発明の効果】
【０００８】
一つの実施形態によれば、プログラムの処理が正常終了か否かに応じて、次に行う処理を簡単に変更できる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態１にかかるデータ処理装置を含むデータ処理システムの構成例を示す図である。
【図２】図２は、センサーチップの内部構成例を示すブロック図である。
【図３】図３は、親機の内部構成例を示すブロック図である。
【図４】図４は、センサーチップが検出し処理する複数のデータを示すタイムチャートである。
【図５】図５は、センサーチップのＲＯＭに格納されるプログラム配置の例を示す図表である。
【図６】図６は、親機が行うセンサーチップの起動の処理内容を示すフローチャートである。
【図７】図７は、センサーチップが行う処理読み出しプログラムの処理内容を示すフローチャートである。
【図８】図８は、センサーチップが行うセンサー起動プログラムの処理内容を示すフローチャートである。
【図９】図９は、センサーチップが行うデータ処理プログラムの処理内容を示すフローチャートである。
【図１０】図１０は、センサーチップが行うエラー処理プログラムの処理内容の一例を示すフローチャートである。
【図１１】図１１は、センサーチップが行うエラー処理プログラムの処理内容の他の例を示すフローチャートである。
【図１２】図１２は、親機が行うエラー時の処理内容の一例を示すフローチャートである。
【図１３】図１３は、実施の形態２にかかるセンサーチップのＲＯＭに格納されるプログラム配置の例を示す図表である。
【図１４】図１４は、アドレステーブルの内容を示す図表である。
【図１５】図１５は、センサーチップが行う処理読み出しプログラムの処理内容を示すフローチャートである。
【図１６】図１６は、センサーチップが行うセンサー起動プログラムの処理内容を示すフローチャートである。
【図１７】図１７は、センサーチップが行うデータ処理プログラムの処理内容を示すフローチャートである。
【図１８】図１８は、センサーチップが行うエラー処理プログラムの処理内容の一例を示すフローチャートである。
【図１９】図１９は、センサーチップが行うエラー処理プログラムの処理内容の他の例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
（実施の形態１）
（データ処理システムの構成）
以下に添付図面を参照して、開示技術の好適な実施の形態を詳細に説明する。図１は、実施の形態１にかかるデータ処理装置を含むデータ処理システムの構成例を示す図である。図１に示すデータ処理システム１００は、所定の設置領域内に配置された複数のセンサーチップ（データ処理装置）１０１と、設置領域内の複数のセンサーチップ１０１のセンサー出力を無線等により受信し、情報を集約する親機１０２と、親機１０２が集約した情報をインターネット等のネットワーク１０３を介して受信するサーバーや利用者端末等の外部装置１０４とを含む。センサーチップ１０１は、設置箇所における所定の変位量を検出し、親機１０２に検出した情報を無線通信により送信する。
【００１１】
親機１０２は、設置領域に設けられた複数のセンサーチップ１０１から得られた情報を集約し、外部装置１０４としてのサーバーや利用者端末に対する情報のアップロードや、設置箇所においてセンサーチップ１０１が検出したデータの通知等を行う。
【００１２】
（センサーチップの構成）
図２は、センサーチップの内部構成例を示すブロック図である。データ処理装置であるセンサーチップ１０１は、例えば、圧電素子や光電素子のような圧力や光の検出に基づいて電力を生成するセンサー２０１を含む。また、親機１０２と無線通信するためのアンテナ２０２および無線通信回路（ＲＦ）２０３と、センサー２０１と、無線通信回路２０３からの電気信号をデジタルデータに変換するためのインターフェース（Ｉ／Ｏ）回路２０４を含む。また、センサー２０１からのデータを処理するためのマイクロプロセッサ（ＭＣＵ）２０５と、ＭＣＵ２０５における処理の一時データを格納するためのＲＡＭ２０６と、ＭＣＵ２０５が実行する処理プログラム等を格納するための格納部（ＲＯＭ）２０７と、電力供給が途絶えたとき等においてもデータを保持可能な不揮発メモリ２０８と、これらＩ／Ｏ回路２０４〜不揮発メモリ２０８を接続するバス２０９と、センサーチップ１０１の各部に駆動電源を供給する電源回路２１０等を含む。
【００１３】
センサー２０１は、図２に示す例では、性質の異なる複数の変位量（データ）を測定する複数のセンサーを含む。例えば、センサー１（２０１ａ）は圧力を測定し、センサー２（２０１ｂ）は温度を測定する。電源回路２１０は、これらセンサー２０１により生成された電力や、アンテナ２０２で受信した親機１０２からの無線通信の電波を起電力とした電力の生成に基づいて、センサーチップ１０１に設けられた各部を動作させる。すなわち、センサーチップ１０１は、二次電池や外部電源等が不要であり、動作に必要な電力を自身の内部で生成する。
【００１４】
（親機の構成）
図３は、親機の内部構成例を示すブロック図である。親機１０２は、バッテリーや外部電源に基づき動作する。親機１０２は、センサーチップ１０１のプロセッサ（ＭＣＵ）２０５よりも高性能なプロセッサ（ＣＰＵ）３０１と、大容量のＲＯＭ３０２およびＲＡＭ３０３と、インターフェース（Ｉ／Ｏ）回路３０４と、これらＣＰＵ３０１〜Ｉ／Ｏ回路３０４とを接続するバス３０５とを含む。また、Ｉ／Ｏ回路３０４には、親機１０２と無線通信するためのアンテナ３０６および無線通信回路（ＲＦ）３０７と、ネットワークＩ／Ｆ３０８が接続されている。これにより、親機１０２は、ネットワークＩ／Ｆ３０８を介して、ＴＣＰ／ＩＰのプロトコル処理等により、インターネット等のネットワーク網を介して利用者端末やサーバー等の外部装置１０４と通信を行う。
【００１５】
（センサーチップの時系列なデータ処理について）
図４は、センサーチップが検出し処理する複数のデータを示すタイムチャートである。横軸は時間である。センサーチップ１０１は、複数のセンサー２０１ａ，２０１ｂにより、もしくは一つのセンサー２０１により性質の異なる複数の変位量を検出する。一つのセンサー２０１の場合、複数の変位量を検出する複数の検出素子を備え、単一の端子から異なる複数の変位量を出力する。
【００１６】
図４に示すように、センサー１（２０１ａ）はデータＤ１を検出し、センサー２（２０１ｂ）は、データＤ２を検出する。そして、この実施の形態１では、センサー１（２０１ａ），センサー２（２０１ｂ）が交互にデータを検出し、出力する。これにより、Ｉ／Ｏ回路３０４には、一つあるいは複数のセンサー２０１により検出された性質の異なる複数のデータＤ１，Ｄ２が時系列に切り替わって交互に入力される。信号の切り替わり順番は、あらかじめ決められている。ＭＣＵ２０５では、あらかじめ定められたセンサー（検出されるデータ）の順番に従って、センサー別に対応するデータ処理プログラムを複数の中から切り替えて実行する。
【００１７】
また、図４に示すように、センサー１（２０１ａ）およびセンサー２（２０１ｂ）による電力の供給は、これらセンサー１（２０１ａ）およびセンサー２（２０１ｂ）から電気信号が入力されている期間（図中、電力供給期間Ｔ１，Ｔ２）である。このため、センサー２０１の信号が切り替わる間（図中、電力供給無し期間Ｔ０）は、起電力を生成する元となる電気信号がなく、センサーチップ１０１の各部に電力供給できない期間が生じることになる。
【００１８】
（プロセッサが実行するプログラムについて）
センサーチップ１０１は、電力供給が途絶えると、ＲＡＭ２０６と、ＭＣＵ２０５内のレジスタの情報は全て失われる。そして、再度電力が供給されたときに、ＭＣＵ２０５内のレジスタは初期化され、ＭＣＵ２０５はＲＯＭ２０７の０番地からプログラムを読み出して実行を開始する。
【００１９】
そして、この実施の形態では、ＭＣＵ２０５は、データ処理プログラム開始前に、これから実行開始するデータ処理プログラムに対応するエラー処理プログラムの開始アドレスを不揮発メモリ２０８に記録しておき、電力供給が途絶えたときのエラー処理を実行可能にする。また、ＭＣＵ２０５は、データ処理プログラムを実行完了できたときには、次回のデータ処理プログラムの開始アドレスを不揮発メモリ２０８に更新して記録する。この際、エラー処理プログラムの開始アドレスは消去され、次回に実行するデータ処理プログラムの開始アドレスに書き換えられる。
【００２０】
図５は、センサーチップのＲＯＭに格納されるプログラム配置の例を示す図表である。図５に示すように、センサーチップ１０１のＲＯＭ２０７には、０番地に処理呼び出しプログラム５０１を配置する。ＭＣＵ２０５は、電源供給時に処理呼び出しプログラム５０１を実行し、この処理呼び出しプログラム５０１は、不揮発メモリ２０８からデータ、すなわち実行するプログラムのアドレスを読み出す。ＲＯＭ２０７の以降の番地には、実行する各プログラムとして、センサー起動プログラム５０２、データ処理プログラム５０３と、エラー処理プログラム５０４等が配置されている。
【００２１】
データ処理プログラム５０３は、センサー１（２０１ａ）が検出するデータ処理用のデータ処理プログラム１（５０３ａ）と、センサー２（２０１ｂ）が検出するデータ処理用のデータ処理プログラム２（５０３ｂ）とを含む。エラー処理プログラム５０４は、センサー１（２０１ａ）のデータ処理プログラム１（５０３ａ）のエラー用のエラー処理プログラム１（５０４ａ）と、センサー２（２０１ｂ）のデータ処理プログラム２（５０３ｂ）のエラー用のエラー処理プログラム２（５０４ｂ）とを含む。
【００２２】
ＭＣＵ２０５は、処理開始時に、処理呼び出しプログラム５０１の実行により、不揮発メモリ２０８に記録されたアドレスを読み込み、読み込んだアドレスにジャンプする。これにより、正常時および電力供給が途絶えたエラー時のいずれにおいても、前回、不揮発メモリ２０８に記録しておいたプログラム（データ処理プログラム５０３あるいはエラー処理プログラム５０４）を実行するだけで（すなわち分岐判断を行わなくとも）、適切な処理を行えるようになる。
【００２３】
ＭＣＵ２０５は、前回のデータ処理プログラム５０３が最後まで実行されていれば、前回の処理終了時に不揮発メモリ２０８に記録したデータ処理プログラム５０３を実行する。一方、センサー２０１からの起電力が不十分だったり、センサー２０１から想定外のデータが出力されたりした場合等には、ＭＣＵ２０５は、実行したデータ処理プログラム５０３が終了する前に動作に必要な電力が尽きて、データ処理プログラム５０３の処理を最後まで行えなくなる。
【００２４】
このような場合、ＭＣＵ２０５は、次回のデータ処理プログラム５０３の処理開始時に、不揮発メモリ２０８に記録されている開始アドレスのエラー処理プログラム５０４を実行することとなる。これにより、ＭＣＵ２０５による判断処理を行わなくとも、入力データの切り替えに伴う処理プログラム（データ処理プログラム５０３あるいはエラー処理プログラム５０４）の切り替え、および処理結果に応じてエラー処理を行うか否かの切り替えを実現できるようになる。そして、ＭＣＵ２０５における正常時とエラー時の分岐判断を不要にできるため、ＭＣＵ２０５の処理負担を減らしてプログラム起動を高速化でき、ＲＯＭ２０７の容量も削減できるようになる。
【００２５】
（親機が行うセンサーチップの起動処理について）
図６は、親機が行うセンサーチップの起動の処理内容を示すフローチャートである。図１に示したように、設置領域にセンサーチップ１０１を設置し、親機１０２についても設置が完了したとする。この後、利用者は、ネットワーク１０３を介して親機１０２にシステムの動作開始を指示する。親機１０２のＣＰＵ３０１は、この動作開始の指示をネットワークＩ／Ｆ３０８を介して受信する（ステップＳ６０１）。これにより、ＣＰＵ３０１は、無線通信回路３０７およびアンテナ３０６を介して無線電波によりセンサーチップ１０１に対して起動信号を出力し（ステップＳ６０２）、センサーチップ１０１の起動を終了する。詳細は図示しないが、設置領域に設置された複数のセンサーチップ１０１に対して同様の起動処理を行う。
【００２６】
（センサーチップのプロセッサが行う処理の詳細）
次に、センサーチップ１０１のＭＣＵ２０５が行う処理の詳細について説明する。上述したように、ＭＣＵ２０５は、電源が投入されると、０番地に配置された処理呼び出しプログラム５０１を実行する（図５参照）。
【００２７】
（処理呼び出しプログラムの処理）
図７は、センサーチップが行う処理読み出しプログラムの処理内容を示すフローチャートである。ＭＣＵ２０５が実行する処理呼び出しプログラム５０１は、はじめに、不揮発メモリ２０８に記録されたデータを読み込み（ステップＳ７０１）、読み込んだデータの値が示すアドレスへジャンプし（ステップＳ７０２）、処理を終了する。
【００２８】
センサーチップ１０１のセンサー２０１は、初期状態では動作を停止しており、不揮発メモリ２０８には、初期状態ではセンサー２０１を起動するためのセンサー起動プログラム５０２の先頭アドレスが記録されている。そして、設置領域にセンサーチップ１０１が設置された後、親機１０２は、センサーチップ１０１に対して起動のための無線電波を発信する（図６参照）。センサーチップ１０１は、アンテナ２０２と無線通信回路２０３により親機１０２から電波を受信すると、この電波を起電力としてＭＣＵ２０５が起動し、ＭＣＵ２０５は、処理呼び出しプログラム５０１によりセンサー起動プログラム５０２を実行する。
【００２９】
（センサー起動プログラムの処理）
図８は、センサーチップが行うセンサー起動プログラムの処理内容を示すフローチャートである。ＭＣＵ２０５が実行するセンサー起動プログラム５０２は、はじめに、不揮発メモリ２０８にデータ処理プログラム５０３の開始アドレスを記録し（ステップＳ８０１）、センサー２０１を起動させ（ステップＳ８０２）、アイドル状態となる。上述したように、センサー２０１が複数の場合、あらかじめ定められた順番により、例えば、センサー１（２０１ａ）、センサー２（２０１ｂ）の順で交互に検出信号を出力し始める。センサー２０１の起動後はＭＣＵ２０５を停止状態に変更する。
【００３０】
上述したように、センサー２０１がデータを出力する順番はあらかじめ決まっているため、センサー２０１の起動後に最初にどのセンサー２０１が検出したデータを出力するかもあらかじめ知ることができる。このため、センサー起動プログラム５０２は、最初にデータを出力するセンサー２０１のデータに対応するデータ処理プログラム５０３の開始アドレスを不揮発メモリ２０８に記録する。これにより、ＭＣＵ２０５の停止後にセンサー２０１がデータを出力すると、その起電力によりＭＣＵ２０５が起動し、ＲＯＭ２０７の０番地の処理呼び出しプログラム５０１は、不揮発メモリ２０８に記録したデータ処理プログラム５０３を実行する。
【００３１】
（データ処理プログラムの処理）
図９は、センサーチップが行うデータ処理プログラムの処理内容を示すフローチャートである。２つのセンサー１，２（２０１ａ，２０１ｂ）のデータ処理を行う例を用いて説明する。ＭＣＵ２０５が実行するデータ処理プログラム１（５０３ａ）は、はじめに、センサー１（２０１ａ）のデータ処理に対応するエラー処理プログラム１（５０４ａ）の開始アドレスを不揮発メモリ２０８に記録する（ステップＳ９０１）。この後、ＭＣＵ２０５は、センサー２０１が検出したデータを受け取ってデータ処理プログラム１（５０３ａ）によりデータを処理する（ステップＳ９０２）。次に、ＭＣＵ２０５は、センサー２（２０１ｂ）から出力されるデータに対応するデータ処理プログラム２（５０３ｂ）の開始アドレスを不揮発メモリ２０８に記録し（ステップＳ９０３）、アイドル状態（ＭＣＵ２０５を停止状態）に変更する。
【００３２】
データ処理プログラム５０３が行う処理の内容としては、例えば、検出した値をあらかじめ指定した規定値と比較し、検出した値が規定値を超えているかを判断したり、データの波形が決められたパターンを示しているか等を解析する。データ処理プログラム５０３は、これらのデータ処理の結果を無線通信により親機１０２に通知する。
【００３３】
ＭＣＵ２０５によりセンサー１（２０１ａ）のデータ処理プログラム１（５０３ａ）を実行した後、このデータ処理プログラム１（５０３ａ）が最後まで実行されずに途中で起電力が尽きたとする。この場合、ＭＣＵ２０５は、次のセンサー２（２０１ｂ）からのデータ入力のときに、処理呼び出しプログラム５０１によりエラー処理プログラム１（５０４ａ）を実行することになる。
【００３４】
（エラー処理プログラムの処理）
エラー処理プログラム５０４が行う処理の内容は、センサー２０１の種類、親機１０２によるデータ収集の目的等によって異なる。図１０および図１１を用いてエラー処理の例を説明する。
【００３５】
図１０は、センサーチップが行うエラー処理プログラムの処理内容の一例を示すフローチャートである。図１０に示すエラー処理では、ＭＣＵ２０５は、センサーチップ１０１においてエラーが発生したことを親機１０２に通知する（ステップＳ１００１）。その後、ＭＣＵ２０５は、エラー発生した処理のセンサー１（２０１ａ）の次のセンサー２（２０１ｂ）のデータに対応するデータ処理プログラム２（５０３ｂ）の開始アドレスを不揮発メモリ２０８に記録し（ステップＳ１００２）、アイドル状態となる。上記のエラー処理プログラムでは、センサーチップ１０１の動作を継続させるようにする。
【００３６】
図１１は、センサーチップが行うエラー処理プログラムの処理内容の他の例を示すフローチャートである。図１１に示すエラー処理では、ＭＣＵ２０５は、はじめに、不揮発メモリ２０８にセンサー起動プログラム５０２の開始アドレスを記録してから（ステップＳ１１０１）、親機１０２にエラー発生を通知する（ステップＳ１１０２）。この通知後に、ＭＣＵ２０５は、センサー１（２０１ａ）を停止させて（ステップＳ１１０３）、センサーチップ１０１を初期状態に戻し、アイドル状態となる。上記のように、センサーチップ１０１を初期状態に戻した場合、センサーチップ１０１は、親機１０２から再度、起動電波を受け取ることにより、初期状態から動作を開始することができるようになる。
【００３７】
（親機が行うエラー時の処理例）
図１２は、親機が行うエラー時の処理内容の一例を示すフローチャートである。センサーチップ１０１がエラーを発生したとき、センサーチップ１０１は、エラー情報を親機１０２に無線電波により送信する。親機１０２のＣＰＵ３０１は、エラー情報を受信すると（ステップＳ１２０１）、エラー情報を解析する（ステップＳ１２０２）。このエラー情報の解析では、例えば、エラーを起こしたセンサーチップ１０１の種別やエラーの種別を解析する。このほか、エラー情報受信時における初回起動からの経過時間や発生頻度などを解析する。
【００３８】
そして、ＣＰＵ３０１は、センサーチップ１０１のエラー発生を利用者の外部装置１０４に通知するか判断する（ステップＳ１２０３）。利用者への通知が不要であれば（ステップＳ１２０３：Ｎｏ）、ステップＳ１２０５に移行する。利用者への通知が必要な設定であれば（ステップＳ１２０３：Ｙｅｓ）、外部装置１０４には、解析結果である、エラーを起こしたセンサーチップ１０１の種別やエラーの種別、エラー情報受信時における初回起動からの経過時間や発生頻度等を通知する（ステップＳ１２０４）。
【００３９】
この後、ＣＰＵ３０１は、解析結果に基づき、センサーチップ１０１の再起動が必要であるかを判断する（ステップＳ１２０５）。センサーチップ１０１の再起動が不要であれば（ステップＳ１２０５：Ｎｏ）、エラー処理を終了する。センサーチップ１０１の再起動が必要であれば（ステップＳ１２０５：Ｙｅｓ）、親機１０２のＣＰＵ３０１は、センサーチップ１０１に対して起動信号の出力を行い（ステップＳ１２０６）、処理を終了する。センサーチップ１０１は、親機１０２から起動信号を受けることにより初期状態となり、初期状態から動作を開始できるようになる。
【００４０】
以上説明した実施の形態１によれば、センサーチップ１０１は、プログラム実行毎に、以降の処理プログラムの開始アドレスを不揮発メモリ２０８に記録する。不揮発メモリ２０８には、データ処理プログラム５０３の実行開始時にエラー処理プログラム５０４の開始アドレスが記録され、データ処理プログラム５０３の実行後に次のデータ処理プログラム５０３の開始アドレスが記録される。これにより、データ処理プログラム５０３の処理が最後まで行えないエラーが生じた場合には、次回にエラー処理プログラム５０４を起動させることができ、発生したエラーに対応するエラー処理を行えるようになる。
【００４１】
また、データ処理プログラム５０３の正常終了時には、次のデータ処理プログラム５０３を指定して実行開始させることができ、一つのデータ処理プログラム５０３の処理が正常終了できたか否かに応じて次のデータ処理プログラム５０３への変更を簡単に行えるようになる。プロセッサ（ＭＣＵ）２０５は、処理プログラムの実行開始時に、不揮発メモリ２０８に記録された開始アドレスを読み出し、この開始アドレスに対応する処理プログラムを実行する。したがって、この実施の形態１によれば、処理が正常終了したときと、途中終了したときの処理の切り替えの判断を簡単に行うことができるようになる。特に、プロセッサ２０５による処理プログラムの実行が正常かエラーであるかの分岐判断の処理を不要にできる。
【００４２】
また、センサーチップ１０１は、センサー２０１による検出時の起電力によって動作するため、起電力の変動によってプログラム途中で電力が尽きることが想定される。このため、処理プログラムの実行開始時に、次の処理プログラムの開始アドレスを不揮発メモリ２０８に記録するようにしている。これにより、センサーチップ１０１自体の起電力が絶たれ、再度の電源供給によりプロセッサ２０５が初期化される場合であっても、次回に処理開始させる処理プログラムを明確に指定できるようになる。そして、処理プログラムの処理が正常終了したときと途中終了したときの処理の切り替えの判断を簡素化できる。
【００４３】
さらに、一つのセンサーチップ１０１に設けたセンサー２０１が性質の異なる複数の検出を行い、複数の検出に対応した複数のデータ処理プログラム５０３を実行する場合においても、次に必要な処理のプログラムへの変更を簡単な処理で実行でき、また、処理プログラムの途中終了に対応できるようになる。
【００４４】
また、実施の形態１において説明した例では、２つのセンサー２０１ａ，２０１ｂにより性質の異なる２つのデータを検出し、対応して２つのデータ処理プログラム５０３ａ，５０３ｂが交互に実行される構成としたが、検出するデータは２つに限らず、３つ以上の性質の異なるデータであってもよい。これら３つ以上のデータに対応した数のデータ処理プログラム５０３を順次実行させる構成にも同様に適用できる。例えば、３つのセンサー２０１は、センサー１→センサー２→センサー３→センサー１→センサー２→センサー３…、の順番で順次データ出力し、この順番に対応して３つのデータ処理プログラム５０３が順次実行される構成とすることもできる。そして、実施の形態１によれば、これら複数のデータ処理プログラム５０３を簡単な処理で順次実行していくことができ、さらに各データ処理プログラム５０３に対応するエラー処理にも対応できるようになる。
【００４５】
そして、実施の形態１では、分岐命令を用いずに処理の切り替えを行うことができるため、プロセッサ（ＭＣＵ）２０５における処理の切り替えの判断を高速に行うことができる。また、分岐命令の処理が不要な分、プロセッサ（ＭＣＵ）２０５の回路規模を小型化できるようになる。
【００４６】
そして、実施の形態１によれば、外部電源を不要とし、センサーの検出およびアンテナの受信に基づき起電力を生成するセンサーチップ等のデータ処理装置であっても、プログラム実行中の電力の喪失に対応でき、実行していたデータ処理プログラム５０３に対応するエラー処理プログラム５０４を次回に起動できるようになる。これにより、電源を安定供給できない構造のデータ処理装置であっても、エラー時に対応したエラー処理を実行できるようになる。これにより、データ処理装置（センサーチップ）１０１を含むデータ処理システム１００全体がエラー発生に対応できるようになり、親機１０２側でも正常時とエラー時に適した処理を明確に切り分けて実行できるようになる。上記説明では、エラーが起電力低下に基づき生じるものとしたが、このほか、センサー２０１が想定外のデータを受け取ることによりエラーとなる場合もあり、このような場合にも同様に必要なエラー処理を実行できる。
【００４７】
（実施の形態２）
実施の形態１では、センサー２０１のデータ出力順番が決まっており、出力順番の１周期の中で一つのセンサー２０１が一度だけデータを出力し、また、一つのデータ処理プログラム５０３に対して次に実行するデータ処理プログラム５０３を一意としている。実施の形態２では、例として、出力順番の１周期の中でセンサー１→センサー１→センサー２の順番でセンサー１（２０１ａ）が２回続けてデータ出力した後に、センサー２（２０１ｂ）が１回データ出力することに対応する。仮に、実施の形態１における説明に基づき、センサーが続けて２回データ出力する構成に対応しようとすると、センサー１の同一周期中での１回目のデータ出力のときと２回目のデータ出力のときでデータ処理プログラム５０３を別々に用意する必要があり効率が悪くなる。実施の形態２は、このような、同一周期でデータ処理プログラム５０３を連続して実行することに対応したものである。
【００４８】
実施の形態２において、全体システム、センサーチップ、親機の構成は、いずれも実施の形態１と同様の構成を用いることができる。
【００４９】
図１３は、実施の形態２にかかるセンサーチップのＲＯＭに格納されるプログラム配置の例を示す図表である。ＲＯＭ２０７上には、実施の形態１同様に、０番地に処理呼び出しプログラム５０１を配置する。ＭＣＵ２０５は、電源供給時に処理呼び出しプログラム５０１を実行する。この処理呼び出しプログラム５０１は、不揮発メモリ２０８からデータ、すなわち実行するプログラムのアドレスを読み出す。ＲＯＭ２０７の以降の番地には、実行する各プログラムとして、センサー起動プログラム５０２、データ処理プログラム５０３と、エラー処理プログラム５０４等が配置されている。そして、実施の形態２では、ＲＯＭ２０７に、さらにアドレステーブル１３０５を配置する。このアドレステーブル１３０５は、処理読み出しプログラム５０１の実行時に読み出される。
【００５０】
図１４は、アドレステーブルの内容を示す図表である。アドレステーブル１３０５には、データ処理プログラム５０３とエラー処理プログラム５０４の開始アドレスが２次元配列状に記録されている。図１４に示すように、アドレステーブル１３０５には、テーブルＩＤ別に複数の処理ＩＤが記録されており、ＭＣＵ２０５は、このテーブルＩＤと処理ＩＤにより特定されるエントリを参照することにより、所定のプログラムの開始アドレスを取得することができる。
【００５１】
ＭＣＵ２０５は、処理順に処理ＩＤのインデックスを１ずつ増加して読み出す。−１が初期状態を示し、０がデータ出力順の１周期中の１番目、１が２番目、２が３番目に読み出される。図１４に示す例では、１周期で３回のデータ出力に対応した３つのデータ処理プログラム１〜３の開始アドレスが記録されている例であり、１周期でのデータ出力回数が多いときには、このデータ出力回数に応じて処理ＩＤ数の設定を増やせばよい。
【００５２】
テーブルＩＤ０は正常時に読み出され、テーブルＩＤ１はエラー時に読み出される。処理ＩＤを処理順に説明すると、初期状態のとき処理ＩＤが−１であり、この処理ＩＤが−１のテーブルＩＤ０には、センサー起動プログラム５０２の開始アドレス１４０１が記録され、この初期状態ではエラーは発生しないため、処理ＩＤが−１のテーブルＩＤ１は空となっている。
【００５３】
次の処理ＩＤが０のテーブルＩＤ０には、データ処理プログラム１の開始アドレス１４０２が記録され、テーブルＩＤ１には、データ処理プログラム１のエラー時に対応するエラー処理プログラム１の開始アドレス１４１２が記録される。次の処理ＩＤが１のテーブルＩＤ０には、再び行うデータ処理プログラム１の開始アドレス１４０３が記録され、テーブルＩＤ１には、エラー処理プログラム２（ここでは２回目に実行されるデータ処理プログラム１のエラー時に対応するエラー処理プログラムとして、エラー処理プログラム１ではなくエラー処理プログラム２を設定）の開始アドレス１４１３が記録される。次の処理ＩＤが２のテーブルＩＤ０には、データ処理プログラム２の開始アドレス１４０４が記録され、テーブルＩＤ１には、データ処理プログラム２のエラー時に対応するエラー処理プログラム３の開始アドレス１４１４が記録される。
【００５４】
また、不揮発メモリ２０８には、処理ＩＤとテーブルＩＤのデータが更新して記録されるようになっている。初期状態では、不揮発メモリ２０８の処理ＩＤの値は−１、テーブルＩＤの値は０が記録される。
【００５５】
（処理呼び出しプログラムの処理）
図１５は、センサーチップが行う処理読み出しプログラムの処理内容を示すフローチャートである。センサーチップ１０１に電源が投入されると、ＭＣＵ２０５は、ＲＯＭ２０７の０番地に格納された呼び出しプログラム５０１を実行する。処理呼び出しプログラム５０１は、まず不揮発メモリ２０８に記録されているテーブルＩＤと処理ＩＤを読み込む（ステップＳ１５０１）。次に、ＭＣＵ２０５は、これら読み込んだテーブルＩＤと処理ＩＤに対応する処理プログラムの開始アドレスをＲＯＭ２０７上のアドレステーブル１３０５から取得する（ステップＳ１５０２）。
【００５６】
次に、ＭＣＵ２０５は、不揮発メモリ２０８のテーブルＩＤにエラー時の値”１”を記録しておく（ステップＳ１５０３）。このテーブルＩＤ＝１としておくのは、実施の形態１において説明したように処理プログラム実行中のエラー発生時の対策のために行っておく。
【００５７】
次に、ＭＣＵ２０５は、次回の処理ＩＤを計算する（ステップＳ１５０４）。次回の処理ＩＤは、現在の処理ＩＤに１を足して、これを１周期中の処理数で割った余りを計算することで求める。そして、ＭＣＵ２０５は、求めた次回の処理ＩＤを不揮発メモリ２０８に記録する（ステップＳ１５０５）。ＭＣＵ２０５は、不揮発メモリ２０８への記録が終了すると、アドレステーブル１３０５から読み出したプログラムの開始アドレスにジャンプし（ステップＳ１５０６）、読み込んだ開始アドレスのプログラムを実行する。以降、ＭＣＵ２０５は、ステップＳ１５０１以下の処理を継続する。
【００５８】
具体的に処理ＩＤの実行順を説明する。初期状態では、図１４に示すように、処理ＩＤは”−１”であるため、センサーチップ１０１は、親機１０２からの起動電波を受けると、ＭＣＵ２０５が処理呼び出しプログラム５０１を実行し、処理呼び出しプログラム５０１は、センサー起動プログラム５０２を実行する。このとき、処理ＩＤは、”０”に更新される。
【００５９】
（センサー起動プログラムの処理）
図１６は、センサーチップが行うセンサー起動プログラムの処理内容を示すフローチャートである。センサー起動プログラム５０２は、はじめに、センサー２０１を動作開始させ（ステップＳ１６０１）、この後、不揮発メモリ２０８のテーブルＩＤに”０”を記録し（ステップＳ１６０２）、ＭＣＵ２０５を停止状態に変更させる（ステップＳ１６０３）、アイドル状態となる。
【００６０】
（データ処理プログラムの処理）
センサー２０１が動作を開始して、センサー２０１からの電力によりＭＣＵ２０５が起動すると、今度は不揮発メモリ２０８のテーブルＩＤが”０”であり、処理ＩＤも”０”が記録されているため、アドレステーブル１３０５の対応する箇所（テーブルＩＤ＝０，処理ＩＤ＝０）に記録されているデータ処理プログラム１（図１４の１４０２）が実行される。
【００６１】
図１７は、センサーチップが行うデータ処理プログラムの処理内容を示すフローチャートである。データ処理プログラム５０３では、ＭＣＵ２０５は、センサー２０１からデータを受け取ってデータ処理を行う（ステップＳ１７０１）。この後、ＭＣＵ２０５は、不揮発メモリ２０８のテーブルＩＤに”０”を記録し（ステップＳ１７０２）、ＭＣＵ２０５を停止させる。処理ＩＤは、処理呼び出しプログラム５０１により、データ処理プログラム５０３の実行毎に順次０→１→２と更新されていき、余りを計算することにより、処理ＩＤが１周期の処理数に達すると０に戻ることを繰り返していく。図１４に示す例では、データ処理プログラム５０３は、データ処理プログラム１（５０３ａ）→データ処理プログラム１（５０３ａ）→データ処理プログラム２（５０３ｂ）の順を有して実行されていく。
【００６２】
テーブルＩＤは、データ処理プログラム５０３が最後まで実行されたら”０”が設定される。一方、データ処理プログラム５０３の実行途中で電力が尽きた場合は、処理呼び出しプログラム５０１で設定した”１”の値が残ったままとなる。そして、次回のＭＣＵ２０５起動時に、処理ＩＤに対応するエラー処理プログラム５０４が実行される。例えば、図１４の例では、データ処理プログラム１（５０３ａ）の実行途中で電力が尽きた場合には、次回の起動時にＭＣＵ２０５は、このデータ処理プログラム１（５０３ａ）に対応するエラー処理プログラム１（５０４ａ）を実行する。
【００６３】
（エラー処理プログラムの処理）
図１８は、センサーチップが行うエラー処理プログラムの処理内容の一例を示すフローチャートである。エラー処理プログラム５０４では、例えば、ＭＣＵ２０５は、親機１０２にエラー発生を通知し（ステップＳ１８０１）、その後、不揮発メモリ２０８のテーブルＩＤに”０”を記録し（ステップＳ１８０２）、エラー発生したセンサー２０１のセンサーチップ１０１の動作を継続させる。
【００６４】
図１９は、センサーチップが行うエラー処理プログラムの処理内容の他の例を示すフローチャートである。図１９に示すエラー処理では、ＭＣＵ２０５は、不揮発メモリ２０８のテーブルＩＤに”０”を記録し、処理ＩＤに”−１”を記録してテーブルＩＤと処理ＩＤを初期状態に戻す（ステップＳ１９０１）。その後、ＭＣＵ２０５は、親機１０２にエラー発生を通知し（ステップＳ１９０２）、センサー２０１の動作を停止させる（ステップＳ１９０３）。このように、センサーチップ１０１を初期状態に戻した場合、センサーチップ１０１は、親機１０２から再度、起動電波を受け取ることにより、初期状態から動作を開始することができるようになる。
【００６５】
また、親機１０２側で行うエラー時の処理については、実施の形態１（図１２）において説明したように、センサーチップ１０１からエラー情報を受信すると、エラー情報を解析し、センサーチップ１０１のエラー発生を利用者の外部装置１０４に通知する。そして、解析結果に基づき、センサーチップ１０１の再起動が必要であるかを判断し、センサーチップ１０１の再起動が不要であればエラー処理を終了する。センサーチップ１０１の再起動が必要であれば、センサーチップ１０１に対して起動信号の出力を行う。センサーチップ１０１は、親機１０２から起動信号を受けることにより初期状態となり、初期状態から動作を開始できるようになる。
【００６６】
この実施の形態２によれば、実施の形態１と同様の効果を有し、電源を安定供給できない構造のデータ処理装置であっても、エラー時に対応したエラー処理を実行できるようになる。加えて、実施の形態２では、アドレステーブルの設定により、１周期中に同一のセンサーが複数回データを出力する場合に、同一のデータ処理プログラムを参照する設定を行うこともできるようになる。また、データ処理プログラム毎に対応するエラー処理プログラムを対応付けて設定できるようになる。これにより、１周期中に同一のセンサーが複数回データを出力する場合に、同一の内容のデータ処理プログラムをＲＯＭ２０７上にそれぞれ用意しておく必要がなく、ＲＯＭ２０７等のプログラム配置の容量を削減でき、かつ、効率よくプログラムを切り替えを行えるようになる。
【００６７】
上述した本実施の形態に関し、さらに以下の付記を開示する。
【００６８】
（付記１）複数のデータ処理プログラムと、当該データ処理プログラムのエラー時に対応したエラー処理プログラムを格納する格納部と、
前記データ処理プログラムの実行開始前に、当該データ処理プログラムに対応する前記エラー処理プログラムの情報をメモリに記録し、
前記データ処理プログラム終了後に、次回実行予定の他のデータ処理プログラムの情報を前記メモリに更新記録し、
次回のプログラム処理の開始時に、前記メモリに記録された情報に対応する前記データ処理プログラムまたは前記エラー処理プログラムに切り替えるプロセッサと、
を備えたことを特徴とするデータ処理装置。
【００６９】
（付記２）前記メモリは、不揮発メモリであることを特徴とする付記１に記載のデータ処理装置。
【００７０】
（付記３）異なる複数の変位量を検出する一つまたは複数のセンサーを備え、
前記プロセッサは、前記センサーの出力順序があらかじめ定められ、時系列に異なって入力される複数の変位量のデータに対応する前記データ処理プログラムに切り替えて実行処理することを特徴とする付記１に記載のデータ処理装置。
【００７１】
（付記４）前記プロセッサは、前記メモリに、前記データ処理プログラムあるいは前記エラー処理プログラムの開始アドレスを記録し、
次回処理の開始時に、前記メモリに記録された開始アドレスを読み込み、前記格納部の当該開始アドレスにジャンプして該当する前記データ処理プログラムまたは前記エラー処理プログラムに切り替えて実行することを特徴とする付記１に記載のデータ処理装置。
【００７２】
（付記５）前記プロセッサは、前記エラー処理プログラムの実行時に、外部装置に対し、通信部を介した通信によりエラー発生を通知することを特徴とする付記１に記載のデータ処理装置。
【００７３】
（付記６）前記プロセッサは、前記エラー処理プログラムの実行時に、状態を初期化して動作を停止させることを特徴とする付記１に記載のデータ処理装置。
【００７４】
（付記７）前記センサーによる変位量検出時の起電力に基づく電力を生成する電源部を備え、当該電源部により生成した電力に基づき動作することを特徴とする付記３に記載のデータ処理装置。
【００７５】
（付記８）前記電源部は、前記通信部による前記外部装置との通信時の起電力に基づく電力を生成することを特徴とする付記７に記載のデータ処理装置。
【００７６】
（付記９）前記格納部は、さらに、前記データ処理プログラムと、当該データ処理プログラムに対応する前記エラー処理プログラムの開始アドレスとを２次元配列し、処理順を設定したアドレステーブルを含み、
前記アドレステーブルには、異なる処理順のエントリに、同一または異なる前記データ処理プログラムの開始アドレスを格納自在であり、
前記プロセッサは、前記アドレステーブルの処理順について前回と次回とが同一の開始アドレスの場合、前記データ処理プログラムを前記格納部から読み出して連続実行可能としたことを特徴とする付記１〜８のいずれか一つに記載のデータ処理装置。
【００７７】
（付記１０）前記アドレステーブルには、複数の前記データ処理プログラムの実行順を一つの周期分だけ設定しておき、
前記プロセッサは、前記一つの周期の最終のデータ処理プログラム終了後に初期の処理として設定された前記データ処理プログラムの開始アドレスに戻り読み込む処理を行うことにより、複数の周期にわたり継続して前記データ処理プログラムを実行することを特徴とする付記９に記載のデータ処理装置。
【００７８】
（付記１１）プロセッサにより、データ処理プログラムの実行開始前に、当該データ処理プログラムに対応するエラー処理プログラムの情報をメモリに記録する第１工程と、
前記プロセッサにより、前記データ処理プログラム終了後に、次回実行予定の他のデータ処理プログラムの情報を前記メモリに更新記録する第２工程と、
前記プロセッサによる次回のプログラム処理の開始時に、前記メモリに記録された情報に対応する前記データ処理プログラムまたは前記エラー処理プログラムに切り替える第３工程と、
を含むことを特徴とするデータ処理方法。
【００７９】
（付記１２）前記プロセッサは、前記メモリとして不揮発メモリに対し前記記録および更新記録を実行することを特徴とする付記１１に記載のデータ処理方法。
【符号の説明】
【００８０】
１００  データ処理システム
１０１  センサーチップ（データ処理装置）
１０２  親機
１０３  ネットワーク
１０４  外部装置
２０１（２０１ａ，２０１ｂ）  センサー
２０２  アンテナ
２０３  無線通信回路
２０４  Ｉ／Ｏ回路
２０５  プロセッサ（ＭＣＵ）
２０６  ＲＡＭ
２０７  ＲＯＭ
２０８  不揮発メモリ
２０９  バス
２１０  電源回路
３０１  プロセッサ（ＣＰＵ）
３０６  アンテナ
３０７  無線通信回路
５０１  処理呼び出しプログラム
５０２  センサー起動プログラム
５０３  データ処理プログラム
５０４  エラー処理プログラム
１３０５  アドレステーブル
【図１】
0005880687.tif 000002
【図２】
0005880687.tif 000003
【図３】
0005880687.tif 000004
【図４】
0005880687.tif 000005
【図５】
0005880687.tif 000006
【図６】
0005880687.tif 000007
【図７】
0005880687.tif 000008
【図８】
0005880687.tif 000009
【図９】
0005880687.tif 000010
【図１０】
0005880687.tif 000011
【図１１】
0005880687.tif 000012
【図１２】
0005880687.tif 000013
【図１３】
0005880687.tif 000014
【図１４】
0005880687.tif 000015
【図１５】
0005880687.tif 000016
【図１６】
0005880687.tif 000017
【図１７】
0005880687.tif 000018
【図１８】
0005880687.tif 000019
【図１９】
0005880687.tif 000020