(57)【特許請求の範囲】
【請求項１】
装置の状態をリモート・コンピュータに報告するために、装置に埋め込まれたデバイスにより実行される方法であって、
装置の状態を検出する段階、
ハイパーテキスト転送プロトコル（ＨＴＴＰ）・コマンドを含み、変数を用いて状態を報告するために拡張性記述言語（ＸＭＬ）を用い、デバイスまたは装置に固有のコードを含む、リモート・コンピュータに装置の状態を報告するメッセージを、ＸＭＬプロセッサによって、定期的に、かつ、状態における変化に応答して生成する段階、および
装置の状態を報告するようにＸＭＬを用いて構成されたコマンドを含むＨＴＴＰコマンドを含むメッセージをリモート・コンピュータに送信する段階を含み、
装置は内部ネットワークにあり、リモート・コンピュータは、内部ネットワークから離れた外部ネットワークにあり、リモート・コンピュータは、装置に直接アドレス指定せず、
装置の状態は、装置に関連付けられた２つ以上の変数の値を含み、１つまたは複数の変数が装置に関連付けられたエラー状況に対応するため、１つまたは複数の変数が標識によって識別され、
前記装置の状態を検出する段階が、装置に関連付けられた記憶位置から定期的に前記２つ以上の変数の値を読み出す段階を含む、方法。
【請求項２】
記憶位置は、装置に関連付けられたハードウェアに対応する記憶位置を含む、請求項１記載の方法。
【請求項３】
状態における変化を判定する段階をさらに含む、請求項１記載の方法。
【請求項４】
判定する段階が、状態を装置の前の状態と比較する段階を含む、請求項３記載の方法。
【請求項５】
メッセージ中のＸＭＬコードは、１つまたは複数の変数を定義済みのテンプレートに挿入することによって生成される、請求項１記載の方法。
【請求項６】
メッセージは、装置の過去の状態を含む、請求項１記載の方法。
【請求項７】
ＨＴＴＰコマンドは、ＰＯＳＴコマンドを含む、請求項１記載の方法。
【請求項８】
メッセージは、デバイスの種類を識別するデータ、デバイスの共通の名前、デバイスの製造業者、デバイスのモデル名、デバイスのモデル番号、デバイスの通し番号、およびデバイスの普遍固有識別子、のうちの１つまたは複数を含む、請求項１記載の方法。
【請求項９】
状態は、エラー状況およびエラー状況でない装置に関連付けられた測定値の両方を含む、請求項１記載の方法。
【請求項１０】
前記メッセージは、経時的な装置におけるエラー状況を示すエラー状況履歴を含む、請求項１記載の方法。
【請求項１１】
メッセージを送る前に装置内のメッセージを待ち行列に入れる段階をさらに含み、デバイスおよび／または装置を含むシステムにおける異常状況の後にメッセージが送られる、請求項１記載の方法。
【請求項１２】
装置の状態をリモート・コンピュータに報告するために、装置に埋め込まれたデバイスによる実行のための指示を含む１つまたは複数の機械可読媒体であって、指示は、デバイスに、
装置の状態を検出させ、
ハイパーテキスト転送プロトコル（ＨＴＴＰ）・コマンドを含み、変数を用いて状態を報告するために拡張性記述言語（ＸＭＬ）を用い、デバイスまたは装置に固有のコードを含む、リモート・コンピュータに装置の状態を報告するメッセージを、ＸＭＬプロセッサによって、定期的に、かつ、状態における変化に応答して生成させ、かつ
装置の状態を報告するようにＸＭＬを用いて構成されたコマンドを含むＨＴＴＰコマンドを含むメッセージをリモート・コンピュータに送信させ、
装置は内部ネットワークにあり、リモート・コンピュータは、内部ネットワークから離れた外部ネットワークにあり、リモート・コンピュータは、装置に直接アドレス指定せず、
装置の状態は、装置に関連付けられた２つ以上の変数の値を含み、１つまたは複数の変数が装置に関連付けられたエラー状況に対応するため、１つまたは複数の変数が標識によって識別され、
前記状態を検出することが、装置に関連付けられた記憶位置から定期的に前記２つ以上の変数の値を読み出すことを含む、機械可読媒体。
【請求項１３】
記憶位置は、装置に関連付けられたハードウェアに対応する記憶位置を含む、請求項１２記載の１つまたは複数の非一時的機械可読媒体。
【請求項１４】
デバイスに、
状態における変化を判定させる指示をさらに含む、請求項１２記載の１つまたは複数の非一時的機械可読媒体。
【請求項１５】
判定することは、状態を装置の前の状態と比較することを含む、請求項１２記載の１つまたは複数の非一時的機械可読媒体。
【請求項１６】
メッセージ中のＸＭＬコードは、１つまたは複数の変数を定義済みのテンプレートに挿入することによって生成される、請求項１２記載の１つまたは複数の非一時的機械可読媒体。
【請求項１７】
ＨＴＴＰコマンドは、ＰＯＳＴコマンドを含む、請求項１２記載の１つまたは複数の非一時的機械可読媒体。
【請求項１８】
メッセージは、デバイスの種類を識別するデータ、デバイスの共通の名前、デバイスの製造業者、デバイスのモデル名、デバイスのモデル番号、デバイスの通し番号、およびデバイスの普遍固有識別子、のうちの１つまたは複数を含む、請求項１２記載の１つまたは複数の非一時的機械可読媒体。
【請求項１９】
状態は、エラー状況およびエラー状況でない装置に関連付けられた測定値の両方を含む、請求項１２記載の１つまたは複数の非一時的機械可読媒体。
【請求項２０】
前記メッセージは、経時的な装置におけるエラー状況を示すエラー状況履歴を含む、請求項１２記載の機械可読媒体。
【請求項２１】
デバイスに、メッセージを送る前に装置内のメッセージを待ち行列に入れさせる指示をさらに含み、デバイスおよび／または装置を含むシステムにおける異常状況の後にメッセージが送られる、請求項１２記載の非一時的機械可読媒体。
【請求項２２】
装置の状態をリモート・コンピュータに報告するための、装置に埋め込まれたデバイスであって、
装置の状態を検出し、
ハイパーテキスト転送プロトコル（ＨＴＴＰ）・コマンドを含み、変数を用いて状態を報告するために拡張性記述言語（ＸＭＬ）を用い、デバイスまたは装置に固有のコードを含む、リモート・コンピュータに装置の状態を報告するメッセージを、ＸＭＬプロセッサによって、定期的に、かつ、状態における変化に応答して生成し、
装置の状態を報告するようにＸＭＬを用いて構成されたコマンドを含むＨＴＴＰコマンドを含むメッセージをリモート・コンピュータに送信するように構成された回路を含み、
装置は内部ネットワークにあり、リモート・コンピュータは、内部ネットワークから離れた外部ネットワークにあり、リモート・コンピュータは、装置に直接アドレス指定せず、
装置の状態は、装置に関連付けられた２つ以上の変数の値を含み、１つまたは複数の変数が装置に関連付けられたエラー状況に対応するため、１つまたは複数の変数が標識によって識別され、
前記装置の状態を検出することが、装置に関連付けられた記憶位置から定期的に前記２つ以上の変数の値を読み出すことを含む、デバイス。
【請求項２３】
前記記憶位置は、装置に関連付けられたハードウェアに対応する記憶位置を含み、
回路は、装置の状態が変化したかどうかを判定するように構成され、
装置の状態が変化したかどうかを判定することは、状態を装置の前の状態と比較することを含む、請求項２２記載のデバイス。
【請求項２４】
メッセージ中のＸＭＬコードは、１つまたは複数の変数を定義済みのテンプレートに挿入することによって生成され、
回路が、実行可能な指示を格納するメモリ、および指示を実行するように構成された１つまたは複数のプロセッサ、または、アプリケーション特有の１つまたは複数の集積回路、およびプログラム可能・ゲート・アレイを含む、請求項２２記載のデバイス。
【請求項２５】
ＨＴＴＰコマンドは、ＰＯＳＴコマンドを含み、
メッセージは、デバイスの種類を識別するデータ、デバイスの共通の名前、デバイスの製造業者、デバイスのモデル名、デバイスのモデル番号、デバイスの通し番号、およびデバイスの普遍固有識別子、のうちの１つまたは複数を含む、請求項２２記載のデバイス。
【請求項２６】
前記メッセージは、経時的な装置におけるエラー状況を示すエラー状況履歴を含む、請求項２２記載のデバイス。
【請求項２７】
メッセージを送る前に装置内のメッセージを待ち行列に入れることをさらに含み、デバイスおよび／または装置を含むシステムにおける異常状況の後にメッセージが送られる、請求項２２記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
背景
本発明は、装置に埋め込まれたデバイス（「埋め込みデバイス」）を用いて装置の状態をリモート・コンピュータに報告することに関する。
【背景技術】
【０００２】
装置は、その動作を監視し制御するコントローラなどの埋め込みデバイスを含んでよい。洗濯機、皿洗い機、テレビジョンなどの家庭電気器具、およびロボット、コンベア、モータなどの製造機器を含むがそれらに限定されないあらゆる種類の装置は、埋め込みデバイスを含んでよい。
【０００３】
埋め込みデバイスは、インターネットとのインタフェースを用いてローカル・エリア・ネットワーク（ＬＡＮ）などの内部ネットワークに接続されることが多い。内部ネットワーク上の他のデバイスは、内部ネットワーク上で埋め込みデバイスと通信することができる。
【発明の概要】
【課題を解決するための手段】
【０００４】
概要
一般に、一局面では、本発明は、装置に埋め込まれたデバイスを用いて装置の状態をリモート・コンピュータに報告することに関する。本発明のこの態様は、装置の状態を検出する段階と、自己記述コンピュータ言語を用いて装置の状態を報告するメッセージを生成する段階と、メッセージをリモート・コンピュータに送信する段階とを特徴としている。自己記述コンピュータ言語の一例としてＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ Ｍａｒｋｕｐ Ｌａｎｇｕａｇｅ）がある。送信できるメッセージの例には、共にＸＭＬコードを含む電子メール（ｅメール）メッセージとＨＴＴＰ（ハイパーテキスト転送プロトコル：Ｈｙｐｅｒｔｅｘｔ Ｔｒａｎｓｆｅｒ Ｐｒｏｔｏｃｏｌ）コマンドがある。
【０００５】
デバイスによって生成されたメッセージによって、リモート・コンピュータは、埋め込みデバイスに直接アドレス指定できない場合でも装置の状態を得ることができる。したがって、埋め込みデバイスと同じ内部ネットワーク上にないコンピュータのような、埋め込みデバイスと直接通信できないコンピュータでも装置の状態を得ることができる。さらに、状態は自己記述コンピュータ言語を用いて報告されるので、リモート・コンピュータは人の助けなしに状態を解釈することができる。その結果、リモート・コンピュータによって、装置および／または埋め込みデバイス用に、メンテナンスなどのプロセスを自動的に予定に組み込むことができる。
【０００６】
本発明のこの局面は、以下の特徴のうちの１つまたは複数を含んでよい。状態は、装置のエラー状況を示す。エラー状況は、許容値または所定の範囲の許容値から逸脱する変数である。状態を検出する機能は、たとえば、装置から定期的に状態を検索することによって、装置から状態を受信する機能を含む。状態を検出する機能は、装置の状態に関する装置の識別子を得て、埋め込みデバイスを使用し、識別子を用いて装置から状態を読み取る機能を含む。
【０００７】
本発明のこの局面は、装置の状態が変化したかどうかを判定する段階を含む。メッセージは、装置の状態が変化した場合に生成され、変化しない場合には生成されない。装置の状態が変化したかどうかを判定する機能は、装置から受信された状態を装置の前の状態と比較する機能を含む。
【０００８】
メッセージは、装置に関する１つまたは複数の変数を得て、１つまたは複数の変数を定義済みのテンプレートに挿入することにより、このテンプレートを用いて生成される。装置の状態は、電子メール・メッセージの本文の一部として含めても、電子メール・メッセージの添付文書の一部として含めてもよい。装置の状態はＨＴＴＰコマンドの一部として含めてもよい。
【０００９】
一般に他の局面では、本発明は、装置に埋め込まれた、コントローラなどのデバイスから装置の状態を得ることに関する。本発明のこの局面は、自己記述コンピュータ言語を用いて装置の状態を報告するメッセージを受信する段階と、このメッセージから装置の状態を抽出する段階とを特徴としている。
【００１０】
本発明のこの局面は、以下の特徴のうちの１つまたは複数を含んでよい。自己記述コンピュータ言語はＸＭＬである。装置の状態は装置内のエラー状況を示す。エラー状況は、許容値または所定の範囲の許容値から逸脱する変数である。装置の状態は顧客関係管理システムに送られる。メッセージはＨＴＴＰコマンドに含めても、電子メールの一部であってもよい。
【００１１】
一般に他の局面では、本発明は、第１および第２のデバイスを含むシステムを特徴とする。第１のデバイスは、自己記述コンピュータ言語を用いて装置の状態を報告するメッセージを生成する回路を含む。第２のデバイスは、第１のデバイスと通信する。第２のデバイスは、第１のデバイスから電子メール・メッセージを受信する回路を含む。
【００１２】
本発明のこの局面は、以下の特徴のうちの１つまたは複数を含んでよい。第２のデバイスは、第１のデバイスからメッセージを受信し、メッセージから装置の状態を抽出する。第１のデバイスは装置に埋め込まれており、第２のデバイスはリモート・コンピュータである。メッセージは、ＨＴＴＰコマンドに含まれても、電子メールの一部であってもよい。
【００１３】
本発明の他の特徴および利点は、特許請求の範囲および図面を含む以下の説明から明らかになると考えられる。
【図面の簡単な説明】
【００１４】
【図１】リモート・コンピュータと埋め込みデバイスを有する装置とを含むネットワークのブロック図である。
【図２】装置用の状態変数を格納するのに用いられる、タグのフォーマットを示す図である。
【図３】装置の状態をリモート・コンピュータに報告するために、埋め込みデバイスによって実行されるプロセスのフローチャートである。
【図４】装置の状態をリモート・コンピュータに報告するために、埋め込みデバイスによって実行される他のプロセスのフローチャートである。
【図５】埋め込みデバイスから受信されたメッセージを解釈するために、リモート・コンピュータによって実行されるプロセスのフローチャートである。
【図６】リモート・コンピュータ、およびＨＴＴＰコマンドを用いて装置の状態を報告する埋め込みデバイスを有する装置を含む、ネットワークのブロック図である。
【発明を実施するための形態】
【００１５】
説明
図１はネットワーク１０を示している。ネットワーク１０は、コントローラ（たとえば、マイクロプロセッサ）などの埋め込みデバイス１７を含む、装置１１を含んでいる。装置１１は、ＬＡＮなどの内部ネットワーク１２に接続されている。ルータまたはモデム１４は、ＴＣＰ／ＩＰ（伝達制御プロトコル／インターネット・プロトコル）または他の何らかの適切なプロトコルを実行する、インターネットなどの外部ネットワーク１５と内部ネットワーク１２を相互接続する。接続は、たとえば、イーサネットを介して行っても、無線リンクを介して行っても、電話回線を介して行ってもよい。外部ネットワーク１５は、リモートコンピュータ１６、たとえば、サーバ、パーソナル・コンピュータ（ＰＣ）、他の任意の種類の処理デバイスを含んでいる。他のデバイス（図示せず）を内部ネットワーク１２および外部ネットワーク１５上に含んでもよい。
埋め込みデバイスにおける処理
装置１１は、任意の種類のデバイスであっても、埋め込みデバイス１７によって監視され、制御される機能を有する任意のシステムに含まれうる。特に、埋め込みデバイス１７は、メモリ１９に格納されたソフトウェアを実行して、装置１１の状態を報告する電子メール・メッセージを生成し、リモート・コンピュータ１６に送信する。
【００１６】
ソフトウェア２０は、ＯＰＣ（プロセス制御用のＯＬＥ）サーバ・プログラム２１、ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ Ｍａｒｋｕｐ Ｌａｎｇｕａｇｅ：拡張性記述言語）プロセッサ・プログラム２４、および電子メール・プログラム２５を含む。電子メール・プログラム２５は、電子メールを埋め込みデバイス１７からインターネット・アドレスに送信し、インターネットから電子メールを受信するＳＭＴＰ準拠（簡易メール転送プロトコル）である。電子メール・プログラム２５は、埋め込みデバイス１７に到着する電子メール・メッセージ用のメール転送エージェント（ＭＴＡ）および埋め込みデバイス１７から発信される電子メール・メッセージ用のメール供給エージェント（ＭＤＡ）として働く。上記で指摘したプロトコルおよびプログラムに加えて、またはそれらの代わりに、他のメール転送プロトコルおよびプログラムを、埋め込みデバイス１７によって使用してもよい。
【００１７】
ＸＭＬプロセッサ・プログラム２４は、装置１１の状態を報告するＸＭＬコードを生成するプログラムである。ＸＭＬは、変数およびそのような変数に関する値を定義する自己記述コンピュータ言語である。ＸＭＬは、ＸＭＬコード内のフィールドが、ＸＭＬコード内の変数およびその値を識別するという点で自己記述式言語である。電子メールを生成するのに用いられるＸＭＬ用のテンプレートは以下のとおりである。
【００１８】
<name>temperature</name><value><##temperature##></value>
この場合、「ｎａｍｅ」フィールドは変数の名前を識別し、「ｖａｌｕｅ」フィールドは、「ｎａｍｅ」フィールドの後に続く変数の値を識別する。したがって、上記の例では、変数は「ｔｅｍｐｅｒａｔｕｒｅ」であり、以下のように、この変数の代わりに値（たとえば、３３．８）を挿入することができる。
【００１９】
<name>temperature</name><value>33.8</value>
ＸＭＬプロセッサ２４は、メモリ１９に格納されているタグ・データベース２２から上記の構文を有するＸＭＬコードを生成する。
【００２０】
タグ・データベース２２は、ＸＭＬプロセッサ・プログラム２４がＸＭＬコードを生成する際に用いるタグを含んでいる。図２は、タグ２６用のフォーマットの一例を示している。ただし、他のフォーマットを使用することができる。タグ２６は、ｎａｍｅフィールド２７、ｄｅｓｃｒｉｐｔｉｏｎフィールド２９、ｖａｌｕｅフィールド３０、ｔｉｍｅ ｓｔａｍｐフィールド ３１、およびＩＴＥＭ ＩＤフィールド３２を含んでいる。これらのフィールドは、装置１１に関する情報を得て識別し、格納するのに用いられる。
【００２１】
ｎａｍｅフィールド２７は、「ｔｅｍｐｅｒａｔｕｒｅ」のような、装置用の状態変数の名前を保持し、ｄｅｓｃｒｉｐｔｉｏｎフィールド２９は、「タンク内の流体の温度（ｔｅｍｐｅｒａｔｕｒｅ ｏｆ ｆｌｕｉｄ ｉｎ ａ ｔａｎｋ）」のようなさらなる識別情報を提供する。ｖａｌｕｅフィールド３０は状態変数の値を保持し、ｔｉｍｅ ｓｔａｍｐフィールド ３１は、ｖａｌｕｅフィールド３０内の値が得られた時間を保持する。ｖａｌｕｅフィールド３０は、整数、実数、ブール（ｂｏｏｌｅａｎ）、文字列、または他の何らかの種類として値を保持する構造体である、バリアントを含みうる。ＩＴＥＭ ＩＤフィールド３２は、装置１１内で監視されているハードウェアに対応する識別子を保持する。識別子は、レジスタ位置、またはフィールド３０の値を含む装置１１の他の何らかの記憶領域に対応する。たとえば、埋め込みデバイス１７がロボット・システムである場合、ＩＴＥＭ ＩＤフィールド３２は、ロボット・アームの速度または位置を含む、ロボット・システム内のレジスタに対応するフィールドであってよい。
【００２２】
ＯＰＣサーバ・プログラム２１は、フィールド３２からＩＴＥＭ ＩＤを読み取り、これらのＩＴＥＭ ＩＤを用いて、対応するハードウェア記憶領域３４から可変値を読み取る。ＯＰＣサーバ・プログラム２１は、ＭＯＤＢＵＳ ＴＣＰなどの産業オートメーション・プロトコルを実現し、装置ハードウェアと通信する。システムは、ＭＯＤＢＵＳプロトコルまたはＯＰＣサーバ・プログラム２１との併用に限らず、任意のドライバまたはコンピュータ・プログラムを用いてハードウェアから状態変数を読み取ることができる。状態変数値が読み取られると、ＯＰＣサーバ・プログラム２１は適切なタグのフィールド３０に変数値を挿入する。
【００２３】
図３は、電子メールを用いて装置１１の状態をリモート・コンピュータに報告するプロセス３６を示している。この態様では、プロセス３６は、ＯＰＣサーバ・プログラム２１、ＸＭＬプロセッサ・プログラム２４、電子メール・プログラム２５、および埋め込みデバイス１７で実行されるシステム・ソフトウェア（図示せず）によって実現される。システム・ソフトウェアは、オペレーティング・システム、または埋め込みデバイス１７の背景動作を制御する他のプログラムを含んでよい。
【００２４】
プロセス３６は装置１１の状態を検出する（３０１）。状態は、装置１１内のエラー状況（後述）を示すものであってもよく、または単なる特定の時間に得られる装置１１の状態変数であってもよい。ＯＰＣサーバ・プログラム２１は、装置１１の状態を検出するために、装置１１内のハードウェアを定期的にポーリングする。ＯＰＣサーバ・プログラムは、このポーリングを行うために、タグ・データベース２２からＩＴＥＭ ＩＤを得て（３０１ａ）、ＩＴＥＭ ＩＤに対応する状態変数を適切なハードウェア記憶位置から読み取る（３０１ｂ）。プロセス３６は、リモート・コンピュータに値をそのまま報告するか、またはこの値を用いて、ハードウェア内のエラー状況を識別し報告することができる。エラー状況を報告するプロセスについては後述する。
【００２５】
プロセス３６は、装置１１用の状態変数の値を報告する電子メール・メッセージを生成する（３０２）。具体的には、ＸＭＬプロセッサ・プログラム２４は、タグ・データベース２２内の適切なタグから各状態変数の名前と状態変数の値との両方を検索する。ｔｉｍｅ ｓｔａｍｐ、ｄｅｓｃｒｉｐｔｉｏｎ、およびタグ・データベース２２に格納されている他のいかなる変数も含むタグ・データベース２２から、他の変数を検索することもできる。どの情報を取り込むかは、ＸＭＬプロセッサ・プログラム２４に事前に設定される。取り込まれた変数は、ＸＭＬプロセッサ・プログラム２４がリモート・コンピュータ１６への電子メール用のＸＭＬコードを生成するときに用いられる。
【００２６】
ＸＭＬプロセッサ・プログラム２４は、ＸＭＬコードを「ただちに」、すなわち、テンプレートを用いずに生成することができる。この場合、ブランクＸＭＬファイルには、ＸＭＬプロセッサ・プログラム２４によってＸＭＬフォーマットの検索された変数が入れられる。または、ＸＭＬプロセッサ・プログラム２４は、事前に定義されたフォーマット済みのテンプレートを用いてＸＭＬコードを生成することができる。テンプレートは、ＸＭＬプロセッサ・プログラム２４によって、たとえばメモリ１９やリモート記憶位置（図示せず）から得ることができる。たとえばテンプレートは、上記に示したのと同様なフォーマット、すなわち、以下のようなフォーマットを含んでよい。
【００２７】
<name>temperature</name><value><##temperature##></value>
ＸＭＬプロセッサ・プログラム２４は、テンプレートからＸＭＬコードを生成するために、テンプレートを走査し、必要に応じて、タグ・データベース２２から取り込まれた状態変数値を挿入する。ＸＭＬプロセッサ・プログラム２４は、電子メールをリモート・コンピュータに送信すべき頻度に応じて、ＸＭＬコードを定期的に生成することができる。あるいは、新たに受信されたタグ変数をＸＭＬプロセッサ・プログラム２４に与えるタグ・マネージャ・ソフトウェア（図示せず）を含んでもよい。この場合、ＸＭＬプロセッサ２４は、新しいタグ変数を受信したときにＸＭＬコードを生成する。
【００２８】
結果として得られるＸＭＬコードは、電子メールの本文の一部であっても、電子メールの添付文書の一部であってもよい。電子メールは、埋め込みデバイス１７をリモート・コンピュータ１６に対して識別する、コード（たとえば、通し番号や識別子）のような、固有の識別子も含む。電子メール・プログラム２５は、ＸＭＬプロセッサ・プログラム２４からＸＭＬコードを得て、このコードを電子メール・メッセージの一部としてリモート・コンピュータ１６に送信する。電子メール・プログラム２５は、電子メールをリモート・コンピュータに送信すべき頻度に応じて、コードを定期的に得ることができる。この頻度は、埋め込みデバイス１７に事前に設定される。リモート・コンピュータのアドレスは、事前に電子メール・プログラム２５に登録しておくことができる。通常、リモート・コンピュータのアドレスは、装置１１に関する情報を必要とするエンティティのアドレスである。たとえば、このエンティティは、装置の製造業者、工場監視システムなどであってよい。電子メール・プログラムはメッセージをルータ／モデム１４に送信し、ルータ／モデル１４はこのメッセージを外部ネットワーク１５を介してリモート・コンピュータ１６に転送する。次いで、電子メール・メッセージは後述のように処理される。
【００２９】
埋め込みデバイス１７が単に装置１１の状態をリモート・コンピュータ１６に定期的に報告する場合について説明した。または、埋め込みデバイス１７がリモート・コンピュータ１６に状態を報告できるのは、エラー状況または「アラーム」が検出されたときだけである。
【００３０】
図４は、埋め込みデバイス１７が装置１１のエラー状況を検出し、エラー状況が検出されたときにリモート・コンピュータ１６に電子メール・メッセージを送信する、プロセス４０を示している。プロセス４０は装置１１の状態を検出し（４０１）、この場合、上記と同様に「状態」は装置１１用のタグ変数値を指す。検出（４０１）は、プロセス３６と同様に行われ、したがってここでは説明を省略する。プロセス３６が装置１１の状態を得ると、プロセス３６はその状態がエラー状況を表しているかどうかを判定する（４０２）。
【００３１】
プロセス４０は、エラー状況を検出するために、得られた状態変数値を所定の許容値またはある範囲の所定の許容値と比較することができる。状態変数値が許容値の範囲外であるか、または許容値からかなり逸脱している場合、プロセス４０はエラー状況が存在することを知る。またはプロセス４０は、各状態変数値が得られたときにその値をメモリ１９に格納し、新たに受信された各状態変数値を、格納されている１つまたは複数の状態変数値と比較することができる。新しい状態変数値が格納されている値から所定の量を超えて逸脱している場合、プロセス４０はエラー状況が存在している／生じていることを知る。
【００３２】
エラー状況は、単一の状態変数値に基づく状態であっても、２つまたはそれ以上の状態変数値の何らかの組合せに基づく状態であってもよい。たとえば、埋め込みデバイス１７が、タンク内の流体の水位とこの流体の温度との両方を監視する製造機器内にある場合、エラー状況が存在するのは、流体水位と温度の両方が、事前に設定された値を超えた場合だけである。したがって、本実施例では、対応する設定済みの値を超えたのが一方の状態変数値だけである場合、エラー状況は存在せず／発生していない。
【００３３】
プロセス４０がエラー状況を検出した場合（４０２）、プロセス４０は電子メール・メッセージを生成し（４０３）、この電子メール・メッセージをリモート・コンピュータ１６に送信する（４０４）。電子メール・メッセージを生成し送信する機能は、プロセス３６に関して上記で説明したように実行され、したがってここでは詳しい説明を省略する。電子メール・プログラム２５は、電子メール・メッセージを生成する際、エラー状況を発生させた状態変数を電子メールの「主題」の行に置くことができる。プロセス４０がエラー状況を検出しなかった場合（４０２）、電子メール・メッセージは送信されず、その後プロセス４０は４０１に戻る。
【００３４】
ＸＭＬプロセッサ・プログラム２４は、エラー状況のログをメモリ１９に維持することができる。このエラー状況「履歴」は、新しい各電子メール・メッセージと共に与えることができる。履歴は、特定の状態変数または複数の状態変数に関する履歴であってよい。たとえば、エラー状況が温度に関する状態である場合、ＸＭＬプロセッサ・プログラム２４は、温度に関するエラーー状態履歴を電子メールに含んでもよい。エラー状況が温度とタンク水位の両方に関する状態である場合、ＸＭＬプロセッサ・プログラム２４は、温度とタンク水位の両方に関するエラー状況履歴を電子メールに含んでもよい。テンプレートを用いて電子メール・メッセージを生成する場合、そのテンプレートの一部をエラー状況履歴に保有することができる。
【００３５】
プロセス３６とプロセス４０を組み合わせることにより、装置１１においてエラー状況が検出されない場合にも、装置１１の状態をリモート・コンピュータ１６に報告し、また、エラー状況が検出された場合には任意のエラー状況にフラグを立てる電子メールを、定期的に生成することができる。ＸＭＬプロセッサ・プログラム２４は、エラー状況に対応する状態変数の隣に標識などを付加する。
【００３６】
プロセス３６および４０は、埋め込みデバイス１７により、任意の種類の装置における任意の種類の状態変数を監視し報告するために実行することができる。たとえば、プロセス３６および４０は、コンベア・ベルト速度、電子デバイス内の電流および／または電圧、タンク流体水位、入力／出力センサなどに関する状態変数値を検出することができる。プロセス３６および４０は、１つまたは複数の他のデバイスに接続されたプログラム可能な論理コントローラ（ＰＬＣ）を通じて状態変数値を検出することができる。ＰＬＣは、デバイスの状態変数値を得て格納する、各デバイスのプラグイン・カードを含む。ＯＰＣサーバ・プログラム２１は、これらのプラグイン・カードと通信し、上述のように電子メールを生成するためのデバイス状態変数値を得る。
【００３７】
プロセス３６および４０によって生成された電子メールは、ＸＭＬなどの自己記述コンピュータ言語を用いて装置の状態を報告するが、他の種類の自己記述コンピュータ言語を使用してもよい。さらに、状況に応じて他のテキストおよび／または画像を電子メールに含めてもよい。以下に、埋め込みデバイス１７から受信された電子メールを解釈するために、リモート・コンピュータ１６により実行されるプロセスについて説明する。
【００３８】
リモート・コンピュータにおける処理
リモート・コンピュータ１６は、メモリ４２に格納されているソフトウェアを実行するコントローラ４１を含んでいる。このソフトウェアには、電子メール・プログラム４４、ＸＭＬパーサ４５、および顧客関係管理（ＣＲＭ）システム・ソフトウェア４６が含まれる。
【００３９】
埋め込みデバイス１７と同様に、電子メール・プログラム４４は、埋め込みデバイス１７および他のそのようなデバイスから電子メールを受信するための、ＳＭＴＰ準拠プログラムである。電子メール・プログラム４４は、リモート・コンピュータ１６に到着する電子メール・メッセージ用のメール転送エージェント（ＭＴＡ）およびリモート・コンピュータ１６から発信される電子メール・メッセージ用のメール供給エージェント（ＭＤＡ）として働く。電子メール・プログラム４４は、埋め込みデバイス１７内の電子メール・プログラム２５と同じプロトコルを使用する。
【００４０】
ＸＭＬパーサ４５は、受信された電子メール中のＸＭＬコードを解析し、装置用の識別子を含む変数値を抽出する。ＸＭＬパーサ４５は、「ｎａｍｅ」や「ｖａｌｕｅ」などのフィールド名を認識し、これらのフィールドから対応する状態変数値を抽出する。すなわち、ＸＭＬパーサ４５はＸＭＬの構文を知る。これを知ると、ＸＭＬパーサ４５は「ｖａｌｕｅ」フィールドから得た変数値に対応する変数名を「ｎａｍｅ」フィールドから抽出すると共に、ＸＭＬコード中の他のあらゆる情報を抽出することができる。
【００４１】
ＸＭＬパーサ４５は、状態変数値を適切な識別子と共に、顧客関係管理システム・ソフトウェア４６またはこれらの状態変数値を必要とし／使用する他のソフトウェアまたはデータベースに送る。
【００４２】
図５は、埋め込みデバイス１７からの電子メールがどのように処理されるか（４３）を示している。埋め込みデバイス１７から電子メールが受信された後（５０１）、ＸＭＬパーサ４５は、装置１１の状態変数値を電子メールから抽出する（５０２）。たとえばＸＭＬパーサ４５は、埋め込みデバイス１７によって監視されている装置１１のタンク水位、温度値などを抽出することができる。状態変数値は、上述のように装置１１におけるエラー状況を示してもよく、または単に所与の時点で得られる装置の状態変数を示してもよい。
【００４３】
ＸＭＬパーサ４５は、状態変数値、すなわち装置１１の状態を顧客関係管理システム・ソフトウェア４６に送る（５０３）。顧客関係管理システム・ソフトウェア４６はこれらの状態変数値を用いて、たとえば、装置１１のソフトウェア更新を行うか、または他の任意の目的のために、必要に応じて装置のメンテナンスを予定に組み込むことができる。電子メール中のＸＭＬコードはＸＭＬパーサ４５によって読取り可能であるため、顧客関係管理システム・ソフトウェア４６による報告および予定への組み込みは自動的に行うことができる。特に人間が読取り可能なテキストを電子メールが含む場合、電子メール・プログラム４４が顧客の代表、技術者などに電子メールを転送することもできることに留意されたい。
【００４４】
リモート・コンピュータ１６上のソフトウェアは、図１に示されているソフトウェアに限定されない。たとえば、ＸＭＬパーサ４５は、受信された電子メールで使用されているコードに応じて、他の種類のコンピュータ・コードを解析し／読み取ることのできるパーサで置き換えてもよい。同様に、解析された変数を顧客関係管理システム・ソフトウェア４６以外のソフトウェアに送ることができる。たとえば、変数を後で使用できるようにデータベース４７に格納しておくことができる。
他の態様
図６を参照すると、本発明の他の態様が実施されるネットワーク６０が示されている。ネットワーク６０は、装置１１内の電子メール・プログラム２５がウェブ・クライアント６１で置き換えられ、リモート・コンピュータ内の電子メール・プログラム４４がウェブ・サーバ６２で置き換えられていることを除いて、ネットワーク１０と同一である。この代替の構成では、埋め込みデバイス１７は、メッセージを電子メールではなくＨＴＴＰコマンドとしてリモート・コンピュータ１６に転送することができる。
【００４５】
ＨＴＴＰコマンドは、ＨＴＴＰ ＰＯＳＴコマンドであってよい。ただし、ＨＴＴＰ ＧＥＴコマンドのような他のＨＴＴＰコマンドを代わりに使用してよい。ＸＭＬコードを用いて仮想「部品（ｗｉｄｇｅｔ）」装置の状態を報告するＨＴＴＰ ＰＯＳＴコマンドの例を以下に示す：
【００４６】
【数１】
0005492968.tif 000002
【００４７】
【数２】
0005492968.tif 000003
【００４８】
ＸＭＬは、ＸＭＬコード中のフィールドがＸＭＬコード中の変数およびその値を識別するという点で、記述コンピュータ言語である。たとえば、上記のＰＯＳＴコマンドに示されているように、「ｍａｎｕｆａｃｔｕｒｅｒ」フィールドは、製造業者、たとえば「Ａｃｍｅ Ｉｎｄｕｓｔｒｉｅｓ」を識別し、フィールドの開始位置を示す「＜ｍａｎｕｆａｃｔｕｒｅｒ＞」およびフィールドの終了位置を示す「＜／ｍａｎｕｆａｃｔｕｒｅｒ＞」によって区切られている。ＸＭＬは、ＸＭＬパーサ４５によって比較的容易に生成し、解析し、読み取ることができるので、このＨＴＴＰコマンド内で使用されている。
【００４９】
ＨＴＴＰ ＰＯＳＴコマンドは、装置１１を識別するデータを含む。このデータは、デバイスの種類を識別するデータ、デバイスの共通の（または「分かりやすい（ｆｒｉｅｎｄｌｙ）」）名前、デバイスの製造業者、デバイスのモデル名、デバイスのモデル番号、デバイスの通し番号、およびデバイスのＵＵＩＤ（普遍固有識別子：Ｕｎｉｖｅｒｓａｌ Ｕｎｉｑｕｅ Ｉｄｅｎｔｉｆｉｅｒ）を含むが、それらに限定されない。本実施例のポスト・コマンドでは、このデータは以下のフォーマットを有する：
【００５０】
【数３】
0005492968.tif 000004
【００５１】
ＨＴＴＰ ＰＯＳＴコマンドは装置１１の状態を示す。この状態は、装置１１の動作パラメータおよびアラーム条件を含む。上記のＨＴＴＰ ＰＯＳＴコマンドでは、これらは以下のフォーマットを有する：
【００５２】
【数４】
0005492968.tif 000005
【００５３】
したがって、部品の状態は、その気流、湿度、モータ、および排気口の設定、温度、温度の過酷さ、および温度の状態に関する情報を含む。図示の情報と異なる情報をＨＴＴＰ ＰＯＳＴコマンドに含んでもよい。
【００５４】
再び図３、４、および５を参照すると、この態様において、プロセス３６、４０、および４３の動作は、すべての段階で電子メール・メッセージがＨＴＴＰコマンドで置き換えられることを除いて、上述の動作と同一である。装置１１では、ＨＴＴＰコマンドは、ＸＭＬプロセッサ２４から与えられるデータに基づいて、ウェブ・クライアント６１によって生成される。このＸＭＬデータは、上記で電子メール・プログラム２５と共に使用されたデータと同じである。埋め込みデバイス１７は、ＨＴＴＰコマンドをリモート・コンピュータに送信し、リモート・コンピュータにおいて、このＨＴＴＰコマンドはウェブ・サーバ６２によって受信され、次いでＸＭＬパーサ４５によって処理される。その後、処理は上記のように進行する。
アーキテクチャ
プロセス３６、４０、および４３は、図１のハードウェア／ソフトウェア構成との併用に限定されず、任意のコンピューティング環境または処理環境に適用することができる。プロセス３６、４０、および４３は、ハードウェア（たとえば、ＡＳＩＣ（｛特定用途向け集積回路｝および／もしくはＦＰＧＡ｛フィールドプログラム可能・ゲート・アレイ｝）、ソフトウェア、またはハードウェアとソフトウェアの組合せでも実現できる。
【００５５】
プロセス３６、４０、および４３は、各コンピュータが、プロセッサ、プロセッサによって読取り可能な記憶媒体（揮発性メモリおよび非揮発性メモリならびに／または記憶素子を含む）、少なくとも１つの入力デバイス、ならびに１つまたは複数の出力デバイスを含む、プログラム可能なコンピュータ上で実現される、１つまたは複数のコンピュータ・プログラムを用いて実現することができる。
【００５６】
このような各プログラムは、コンピュータ・システムと通信するために高水準手続きプログラミング言語またはオブジェクト指向プログラミング言語で実現することができる。さらにプログラムは、アセンブリ言語または機械言語で実現することができる。この言語は、コンパイラで作成された言語であっても、翻訳処理された言語であってもよい。
【００５７】
各コンピュータ・プログラムは、プロセス３６、４０、および４３を実行するために、汎用または専用プログラム可能コンピュータによって記憶媒体またはデバイスが読み取られるときに、このコンピュータを構成し動作させるために、このコンピュータによって読取り可能な記憶媒体またはデバイス（たとえば、ＣＤ−ＲＯＭ、ハード・ディスク、磁気ディスケット）上に格納することができる。
【００５８】
プロセス３６、４０、および４３は、コンピュータ・プログラムを備えるコンピュータ可読記憶媒体として実現することもでき、その場合、実行時にコンピュータ・プログラム内の指示によって、コンピュータがプロセス３６、４０、および４３に従って動作する。
【００５９】
本明細書に記載されていない他の態様も上記の特許請求の範囲内である。たとえば、装置１１からリモート・コンピュータ１６に送信される電子メールまたはｈｔｔｐメッセージを待ち行列に入れ（たとえば、メモリ１９に格納し）、後で検索し送信することができる。メッセージを待ち行列に入れると、間欠的なシステム故障によるメッセージ損失が減少する。
【図１】
0005492968.tif 000006
【図２】
0005492968.tif 000007
【図３】
0005492968.tif 000008
【図４】
0005492968.tif 000009
【図５】
0005492968.tif 000010
【図６】
0005492968.tif 000011