(57)【特許請求の範囲】
【請求項１】
プログラム転送装置と、設備ネットワークに接続する複数の機器と、を備え、
前記プログラム転送装置は、
外部装置から更新プログラムを取得する更新プログラム取得手段と、
前記複数の機器に、前記更新プログラムの転送対象となる複数の対象機器が存在する場合、前記複数の対象機器から、自機器との通信が最も不安定な機器を特定機器として選定する選定手段と、
前記更新プログラムを分割した複数のデータの各々を含む複数のフレームの各々を前記特定機器を宛先として順次送信する転送手段と、を備え、
前記特定機器は、前記転送手段から送信された自機器宛ての前記フレームを受信し、
前記特定機器以外の対象機器は、前記転送手段から送信された前記特定機器宛ての前記フレームを傍受し、
前記転送手段は、最初のフレームを送信後、前記特定機器から、直近に送信したフレームに対するＡＣＫ応答を受信した場合、次のフレームを前記特定機器に送信する、プログラム転送システム。
【請求項２】
前記特定機器は、前記プログラム転送装置から送信されたフレームを正常受信すると、前記プログラム転送装置にＡＣＫ応答を送信する、請求項１に記載のプログラム転送システム。
【請求項３】
前記プログラム転送装置は、前記複数のフレームの送信前に、前記複数の対象機器の各々に前記特定機器を識別する情報が格納された転送開始通知を送信する、請求項１又は２に記載のプログラム転送システム。
【請求項４】
前記選定手段は、前記複数の対象機器から、自機器との通信において最も通信エラー率の高い機器を特定機器として選定する、請求項１から３の何れか１項に記載のプログラム転送システム。
【請求項５】
前記複数の機器の各々について、前記更新プログラムを更新可能な時間帯が設定されたテーブルを参照して、前記更新プログラムを転送した機器に対して通常プログラムの更新を指示する更新指示手段をさらに備える、請求項１から４の何れか１項に記載のプログラム転送システム。
【請求項６】
前記外部装置は、記録媒体であり、
前記更新プログラム取得手段は、外部メモリインタフェースを介して接続された前記外部装置から前記更新プログラムを取得する、請求項１から５の何れか１項に記載のプログラム転送システム。
【請求項７】
前記外部装置は、前記設備ネットワークとは異なるネットワークに接続され、
前記更新プログラム取得手段は、前記外部装置と前記ネットワークを介した通信により前記更新プログラムを取得する、請求項１から５の何れか１項に記載のプログラム転送システム。
【請求項８】
プログラム転送装置が、
外部装置から更新プログラムを取得し、
設備ネットワークに接続する複数の機器に、前記更新プログラムの転送対象となる複数の対象機器が存在する場合、前記複数の対象機器から、自機器との通信が最も不安定な機器を特定機器として選定し、
前記更新プログラムを分割した複数のデータの各々を含む複数のフレームの各々を前記特定機器を宛先として順次送信し、
前記特定機器が、前記プログラム転送装置から送信された自機器宛ての前記フレームを受信し、
前記特定機器以外の対象機器が、前記プログラム転送装置から送信された前記特定機器宛ての前記フレームを傍受し、
前記プログラム転送装置は、最初のフレームを送信後、前記特定機器から、直近に送信したフレームに対するＡＣＫ応答を受信した場合、次のフレームを前記特定機器に送信する、プログラム転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、同一のネットワークに接続する複数の機器に更新プログラムを転送するための技術に関する。
【背景技術】
【０００２】
空調機器、照明機器等の複数の機器が接続される設備システムでは、機器のプログラムに不具合が発生した際には、個々の機器に対してエンジニアが手動でソフトウェア更新作業を行っており、エンジニアの作業負荷が課題となっていた。【０００３】
これに対し、例えば、特許文献１に開示されるプログラム自動更新システムでは、エンジニアが、第１情報機器に新バージョンのプログラム（以下、更新プログラムという。）を読み込ませ、再起動させると、第１情報機器は、更新プログラムのバージョン情報をネットワークに発信する。第２情報機器は、受信したバージョン情報が自機器のプログラムのバージョン情報よりも新しい場合、更新プログラムを要求する信号をネットワークに発信することで、第１情報機器から更新プログラムを取得する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−７９７６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に開示される技術では、複数の機器のプログラムのバージョン情報が更新プログラムのバージョン情報よりも古い場合、第１情報機器から、個々の機器に向けて更新プログラムが送信されるため、一時的に通信量が大幅に増加してしまう。そうすると、通信スループットが低速な設備システムでは、通常時の制御通信において、通信遅延、データ紛失など、機器制御に問題が発生する可能性がある。【０００６】
本発明は、上記の課題を解決するためになされたものであり、更新プログラムを対象となる全ての機器に個別に転送する場合に比べ、通信データ量を低減することができるプログラム転送システム等を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明に係るプログラム転送システムは、
プログラム転送装置と、設備ネットワークに接続する複数の機器と、を備え、
前記プログラム転送装置は、
外部装置から更新プログラムを取得する更新プログラム取得手段と、
前記複数の機器に、前記更新プログラムの転送対象となる複数の対象機器が存在する場合、前記複数の対象機器から、自機器との通信が最も不安定な機器を特定機器として選定する選定手段と、
前記更新プログラムを分割した複数のデータの各々を含む複数のフレームの各々を前記特定機器を宛先として順次送信する転送手段と、を備え、
前記特定機器は、前記転送手段から送信された自機器宛ての前記フレームを受信し、
前記特定機器以外の対象機器は、前記転送手段から送信された前記特定機器宛ての前記フレームを傍受し、
前記転送手段は、最初のフレームを送信後、前記特定機器から、直近に送信したフレームに対するＡＣＫ応答を受信した場合、次のフレームを前記特定機器に送信する。
【発明の効果】
【０００８】
本発明によれば、更新プログラムを対象となる全ての機器に個別に転送する場合に比べ、通信データ量を低減することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態１に係るプログラム転送システムの構成を示す図
【図２】実施の形態１に係るプログラム転送装置のハードウェア構成を示すブロック図
【図３】実施の形態１に係るプログラム転送装置が備える二次記憶装置について説明するための図
【図４】実施の形態１に係る設備機器のハードウェア構成を示すブロック図
【図５】実施の形態１に係る設備機器が備える二次記憶装置について説明するための図
【図６】実施の形態１の更新管理情報の構成を示す図
【図７】実施の形態１の更新スケジュール情報の構成を示す図
【図８】実施の形態１の更新プログラム情報の構成を示す図
【図９】実施の形態１に係るプログラム転送装置の機能構成を示す図
【図１０】実施の形態１のプログラム転送処理の手順を示すフローチャート
【図１１】実施の形態１の更新指示処理の手順を示すフローチャート
【図１２】実施の形態１に係るプログラム転送システムの全体的な動作について簡易的に示す図
【図１３】本発明の実施の形態２に係るプログラム転送システムの構成を示す図
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【００１１】
（実施の形態１）
図１は、本発明の実施の形態１に係るプログラム転送システム１の構成を示す図である。プログラム転送システム１は、プログラム転送装置２と、複数の設備機器３（３ａ，３ｂ，３ｃ，…）とを備える。
【００１２】
プログラム転送装置２は、オフィスビル、商業ビル等の建物に設置された設備機器３ａ，３ｂ，３ｃ，…を集中して管理するための集中管理装置であり、さらに、設備機器３ａ，３ｂ，３ｃ，…に更新プログラムを転送する装置でもある。
【００１３】
プログラム転送装置２は、図２に示すように、ディスプレイ２０と、操作受付部２１と、通信インタフェース２２と、外部メモリインタフェース２３と、二次記憶装置２４と、制御部２５とを備える。
【００１４】
ディスプレイ２０は、液晶ディスプレイ、有機ＥＬディスプレイ、プラズマディスプレイ、ＣＲＴディスプレイ等の表示デバイスを含んで構成される。ディスプレイ２０は、制御部２５の制御の下、設備機器３ａ，３ｂ，３ｃ，…の動作状態を監視するための監視画面、設備機器３ａ，３ｂ，３ｃ，…を制御するための操作画面等を表示する。
【００１５】
操作受付部２１は、例えば、キーボード、マウス、キーパッド、押しボタン、タッチパネル、タッチパッド等の入力デバイスを備え、設備機器３ａ，３ｂ，３ｃ，…の管理者等のユーザからの入力操作を受け付け、受け付けた入力操作に係る信号を制御部２５に送出する。
【００１６】
通信インタフェース２２は、ネットワークＮ１を介して設備機器３ａ，３ｂ，３ｃ，…と通信するためのインタフェースである。ネットワークＮ１は、例えば、ＲＳ−４８５等のシリアル通信規格に基づいて構築された設備ネットワークである。
【００１７】
外部メモリインタフェース２３は、ＵＳＢ（Universal Serial Bus）メモリ、ＳＤメモリカード等の記録媒体を接続するためのポート、スロット等を備え、接続された記録媒体から、更新プログラムとその他のデータを読み込むためのインタフェースである。以下、外部メモリインタフェース２３に接続される記録媒体を外部装置という。
【００１８】
二次記憶装置２４は、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）、フラッシュメモリ等の読み書き可能な不揮発性の半導体メモリ又はＨＤＤ（Hard Disk Drive）を含んで構成される。二次記憶装置２４は、設備機器３ａ，３ｂ，３ｃ，…の動作状態を監視するためのプログラム、設備機器３ａ，３ｂ，３ｃ，…を制御するためのプログラム、これらのプログラムの実行時に使用されるデータ等を記憶する。
【００１９】
また、二次記憶装置２４は、図３に示すように、転送制御プログラム２４０と、プログラム更新管理テーブル２４１と、更新スケジュールテーブル２４２と、更新プログラム情報２４３とを記憶する。転送制御プログラム２４０は、制御部２５によって実行されるプログラムである。転送制御プログラム２４０には、外部メモリインタフェース２３を介して外部装置から読み出した更新プログラムを設備機器３ａ，３ｂ，３ｃ，…に転送し、通常プログラムの更新を指示するための処理が記述されている。
【００２０】
プログラム更新管理テーブル２４１、更新スケジュールテーブル２４２及び更新プログラム情報２４３については後述する。
【００２１】
制御部２５は、何れも図示しないが、ＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）等を含んで構成され、プログラム転送装置２を統括制御する。
【００２２】
設備機器３ａ，３ｂ，３ｃ，…は、本発明に係る複数の機器の一例である。設備機器３ａ，３ｂ，３ｃ，…の各々は、例えば、空調機器、照明機器、これらの専用リモコン等である。設備機器３ａ，３ｂ，３ｃ，…は、上述したネットワークＮ１に接続され、相互にデータ通信が可能であると共に、プログラム転送装置２とのデータ通信が可能である。プログラム転送装置２と、設備機器３ａ，３ｂ，３ｃ，…とは、設備システムを構成する。以下、設備機器３ａ，３ｂ，３ｃ，…にて共通する説明については、特に個々を指定せずに設備機器３と表記する。
【００２３】
各設備機器３は、図４に示すように、通信インタフェース３０と、メインユニット３１と、二次記憶装置３２と、制御部３３とを備える。通信インタフェース３０は、ネットワークＮ１を介して上述した通信規格にて他の設備機器３及びプログラム転送装置２と通信するためのインタフェースである。
【００２４】
メインユニット３１は、当該設備機器３の本来的な機能を実現するための構成部である。例えば、当該設備機器３が、空調機器の室外機である場合、メインユニット３１には、コンプレッサ、凝縮器、膨張弁、蒸発器等が含まれる。あるいは、当該設備機器３が、空調機器の室内機である場合、メインユニット３１には、ファン、熱交換器、温度センサ等が含まれ、当該設備機器３が、照明機器である場合、メインユニット３１には、ＬＥＤが含まれる。
【００２５】
二次記憶装置３２は、例えば、ＥＥＰＲＯＭ、フラッシュメモリ等の読み書き可能な不揮発性の半導体メモリで構成される。二次記憶装置３２は、図５に示すように、通常プログラム３２０と、新通常プログラム３２１と、機種コード３２２と、バージョン情報３２３とを記憶する。なお、これらの他にも、二次記憶装置３２は、通常プログラム３２０の実行時に使用されるデータ等、様々なデータを記憶する。
【００２６】
通常プログラム３２０は、当該設備機器３の通常動作時における制御を行うための処理が記述されたプログラムであり、現在、制御部３３により実行中のプログラムである。新通常プログラム３２１は、プログラム転送装置２から転送された更新プログラムであり、通常プログラム３２０を書き換えるためのプログラムである。制御部３３は、プログラム転送装置２から通信により更新プログラムを取得すると、新通常プログラム３２１として二次記憶装置３２に格納する。
【００２７】
機種コード３２２は、当該設備機器３の機種コードを示す。機種コードとは、当該設備機器３の機種を識別する情報であり、例えば、型番、型名などである。バージョン情報３２３は、通常プログラム３２０のバージョンを示す情報である。
【００２８】
図４に戻り、制御部３３は、ＣＰＵ、ＲＯＭ、ＲＡＭ等（何れも図示せず）を含んで構成され、当該設備機器３を統括制御する。設備機器３は、通常動作時において、ネットワークＮ１を介して、他の設備機器３及びプログラム転送装置２と制御コマンドの送受信を行う。制御部３３は、当該設備機器３宛の制御コマンドを通信インタフェース３０を介して受信すると、即ち、当該設備機器３の機器アドレスが宛先指定された制御コマンドを正常受信すると、正常受信の応答であるＡＣＫコマンドを通信インタフェース３０を介して当該制御コマンドの送信元に返送する。また、制御部３３は、通信インタフェース３０を介して制御コマンドを他の設備機器３に送信した後、当該送信先の設備機器３からのＡＣＫコマンドを通信インタフェース３０を介して受信できなかった場合、予め定めた最大再送回数を上限として、ＡＣＫコマンドを受信するまで制御コマンドの再送を繰り返す。
【００２９】
最大再送回数、制御コマンドを再送しても、ＡＣＫコマンドを受信できなかった場合、送信元の設備機器３の制御部３３は、当該送信先の設備機器３との間で通信エラーが発生したと判定する。
【００３０】
また、制御部３３は、プログラム転送装置２から機種コード及びバージョン情報の送信を指示する通知（以下、情報要求通知という。）を通信インタフェース３０を介して受信すると、二次記憶装置３２に記憶されている機種コード３２２及びバージョン情報３２３を読み出し、これらが格納された応答データを通信インタフェース３０を介してプログラム転送装置２に送信する。
【００３１】
また、制御部３３は、プログラム転送装置２から通信インタフェース３０を介して転送開始通知を受信すると、以後、プログラム転送装置２から順次送られてくるフレームを通信インタフェース３０を介して受信することで、更新プログラムを取得する。但し、更新プログラムの受信について、当該設備機器３が特定機器である場合とそうでない場合とで若干の相違がある。
【００３２】
特定機器とは、詳細は後述するが、プログラム転送装置２が、更新プログラムの適用対象となる複数の設備機器３から選定した１台の設備機器３である。以下、更新プログラムの適用対象となる設備機器３を対象機器という。制御部３３は、受信した転送開始通知に含まれる特定機器の機器アドレスが自機器の機器アドレスと一致する場合、自機器が特定機器であると判定する。
【００３３】
特定機器は、上記の転送開始通知を受信後、プログラム転送装置２から自機器宛てに順次送信されるフレームを受信することで更新プログラムを取得する。プログラム転送装置２が、特定機器に対して送信する各フレームには、特定機器の機器アドレスと、シーケンス番号と、更新プログラムを分割したデータが格納されている。特定機器は、受信したフレームのシーケンス番号をチェックし、正しいフレームを受信したか否かを判定する。詳細には、特定機器は、受信したフレームのシーケンス番号が前回正常受信したフレームのシーケンス番号＋１である場合、正しいフレームを受信した、即ち、正常受信したとして、ＡＣＫコマンドをプログラム転送装置２に返送する。
【００３４】
一方、受信したフレームのシーケンス番号が、前回正常受信したフレームのシーケンス番号＋１を超えている場合、特定機器は、受信できなかったフレームの再送をプログラム転送装置２に要求するための通知（以下、再送要求通知という。）を送信する。再送要求通知には、要求するフレームのシーケンス番号として、前回正常受信したフレームのシーケンス番号＋１が格納されている。なお、既に受信済みのフレームと同一のシーケンス番号が格納されたフレームを再度受信した場合、特定機器は、再度受信したフレームを破棄する。
【００３５】
特定機器以外の対象機器は、上記の転送開始通知を受信後、プログラム転送装置２から特定機器宛てに順次送信されるフレームを受信することで更新プログラムを取得する。換言すると、特定機器を除く対象機器は、プログラム転送装置２から特定機器宛てに順次送信されるフレームを傍受することで更新プログラムを取得する。特定機器以外の対象機器は、受信したフレームのシーケンス番号をチェックし、正しいフレームを受信したか否かを判定する。詳細には、特定機器以外の対象機器は、受信したフレームのシーケンス番号が前回正常受信したフレームのシーケンス番号＋１である場合、正しいフレームを受信した、即ち、正常受信したと判定する。但し、特定機器以外の対象機器は、傍受したフレームが正しいフレームであっても、ＡＣＫコマンドをプログラム転送装置２に送信しない。
【００３６】
一方、受信したフレームのシーケンス番号が、前回正常受信したフレームのシーケンス番号＋１を超えている場合、特定機器以外の対象機器は、特定機器と同様、再送要求通知をプログラム転送装置２に送信する。この再送要求通知には、要求するフレームのシーケンス番号として、前回正常受信したフレームのシーケンス番号＋１が格納されている。なお、既に受信済みのフレームと同一のシーケンス番号が格納されたフレームを再度受信した場合、特定機器以外の対象機器は、再度受信したフレームを破棄する。
【００３７】
対象機器（以下、特定機器を含む対象機器全般に共通する説明については、単に「対象機器」と称する。）は、プログラム転送装置２から個別に送信された転送終了通知を受信すると、必要な全てのフレームを受信したか否かを判定する。対象機器は、シーケンス番号１〜Ｎｍａｘ（最大シーケンス番号）の全てのフレームを受信したか否かで上記の判定を行う。Ｎｍａｘは、転送開始通知に格納されている。シーケンス番号１〜Ｎｍａｘの全てのフレームを受信していない場合、対象機器は、最後に正常受信したフレームのシーケンス番号＋１が格納された再送要求通知をプログラム転送装置２に送信する。
【００３８】
一方、必要な全てのフレームを受信すると、対象機器は、各フレームのデータ領域に格納されている分割された更新プログラムのデータを読み出して、シーケンス番号に従って結合することで更新プログラムを復元し、復元した更新プログラムを新通常プログラム３２１として二次記憶装置３２に保存する。
【００３９】
上記のようにして更新プログラムを取得した後、設備機器３は、プログラム転送装置２から個別に送信された更新要求通知を受信すると、二次記憶装置３２に保存されている新通常プログラム３２１を通常プログラム３２０として保存する。即ち、設備機器３は、通常プログラム３２０の内容を、新通常プログラム３２１の内容に書き換える。また、設備機器３は、バージョン情報３２３を、新たな通常プログラム３２０のバージョン情報、即ち、取得した更新プログラムのバージョン情報に書き換える。更新プログラムのバージョン情報は、転送開始通知に格納されている。設備機器３は、更新が完了すると、再起動を行う。再起動した設備機器３は、起動通知をプログラム転送装置２に送信する。
【００４０】
図３に戻り、プログラム転送装置２の二次記憶装置２４に記憶される、プログラム更新管理テーブル２４１、更新スケジュールテーブル２４２及び更新プログラム情報２４３の詳細について説明する。
【００４１】
プログラム更新管理テーブル２４１は、各設備機器３について、通常プログラム３２０の更新を管理するためのレコード（以下、更新管理情報という。）が登録されたデータテーブルである。更新管理情報は、図６に示すように、機器アドレス２４１０と、機種コード２４１１と、バージョン情報２４１２と、コマンド送信回数２４１３と、通信エラー回数２４１４と、通信エラー率２４１５とを含む複数の項目で構成される。
【００４２】
機器アドレス２４１０には、当該設備機器３の機器アドレスが格納される。機器アドレスとは、設備機器３を識別するための情報であり、ネットワークＮ１に接続される各設備機器３に割り振られた通信上のアドレスである。機種コード２４１１は、当該設備機器３の機種コードが格納される。バージョン情報２４１２には、当該設備機器３の現在の通常プログラム３２０のバージョンを示す情報が格納される。
【００４３】
コマンド送信回数２４１３には、プログラム転送装置２から当該設備機器３に対して送信した制御コマンドの回数（但し、再送回数は除く。）が格納される。通信エラー回数２４１４は、プログラム転送装置２から当該設備機器３に対して制御コマンドを送信した際に発生した通信エラーの通算回数が格納される。通信エラー率２４１５は、当該設備機器３の通信エラー率が格納される。通信エラー率とは、プログラム転送装置２から当該設備機器３に対して送信した制御コマンドの回数に対する通信エラーの発生割合であり、通信エラー回数２４１４の格納値をコマンド送信回数２４１３の格納値で除算することで得られる。
【００４４】
図３に戻り、更新スケジュールテーブル２４２は、各設備機器３について、通常プログラム３２０の更新スケジュールを管理するためのレコード（以下、更新スケジュール情報という。）が登録されたデータテーブルである。更新スケジュール情報は、図７に示すように、機器アドレス２４２０と、更新時間帯２４２１とを含む複数の項目で構成される。
【００４５】
機器アドレス２４２０には、当該設備機器３の機器アドレスが格納される。更新時間帯２４２１には、当該設備機器３において通常プログラム３２０の更新が可能な時間帯（以下、更新可能時間帯という。）が格納される。更新可能時間帯とは、当該設備機器３が運転を停止しても問題が生じない時間帯であり、例えば、在室者が居ない深夜の時間帯等である。
【００４６】
図３に戻り、更新プログラム情報２４３は、外部メモリインタフェース２３を介して、ＵＳＢメモリ等の外部装置から読み出された情報である。詳細には、更新プログラム情報２４３には、図８に示すように、更新プログラム２４３１と、機種コード２４３２と、バージョン情報２４３３とが含まれる。
【００４７】
更新プログラム２４３１は、更新プログラムそのものを示し、機種コード２４３２は、更新プログラム２４３１に対応する機種コードを示し、バージョン情報２４３３は、更新プログラム２４３１のバージョンを示す情報である。
【００４８】
続いて、プログラム転送装置２の機能について詳細に説明する。プログラム転送装置２は、機能的には、図９に示すように、通信エラー率算出部２００と、更新プログラム取得部２０１と、機器情報取得部２０２と、対象機器選定部２０３と、特定機器選定部２０４と、プログラム転送部２０５と、更新指示部２０６と、更新可能時間帯設定部２０７とを備える。これらの機能部は、制御部２５のＣＰＵが二次記憶装置２４に記憶されている転送制御プログラム２４０を実行することで実現される。
【００４９】
通信エラー率算出部２００は、プログラム転送装置２から何れかの設備機器３に対して、制御コマンドが送信される度に（但し、再送は除く。）、当該設備機器３の通信エラー率を算出する。詳細には、制御コマンドが送信される度に、通信エラー率算出部２００は、当該設備機器３に対応する更新管理情報（図６参照）のコマンド送信回数２４１３の格納値をインクリメントする。また、当該制御コマンドの送信で通信エラーが発生した場合、通信エラー率算出部２００は、当該更新管理情報の通信エラー回数２４１４の格納値をインクリメントする。そして、通信エラー率算出部２００は、通信エラー回数２４１４の格納値をコマンド送信回数２４１３の格納値で除算することで通信エラー率を算出する。通信エラー率算出部２００は、算出した通信エラー率を通信エラー率２４１５に格納する。
【００５０】
更新プログラム取得部２０１は、本発明に係る更新プログラム取得手段の一例である。更新プログラム取得部２０１は、作業者等のユーザによって、更新プログラム情報２４３が記憶された外部装置が外部メモリインタフェース２３に接続されると、当該外部装置から更新プログラム情報２４３を読み出して取得し、二次記憶装置２４に保存する。
【００５１】
機器情報取得部２０２は、更新プログラム取得部２０１により更新プログラム情報２４３が取得されると、各設備機器３に対して上述した情報要求通知を個別に送信する。そして、かかる情報要求通知に応答して、各設備機器３から送信された応答データを受信し、受信した応答データから機種コード３２２及びバージョン情報３２３を抽出して取得する。機器情報取得部２０２は、取得した機種コード３２２を当該設備機器３に対応する更新管理情報（図６参照）の機種コード２４１１に格納する。また、機器情報取得部２０２は、取得したバージョン情報３２３を当該更新管理情報のバージョン情報２４１２に格納する。なお、機器情報取得部２０２が、各設備機器３から機種コード３２２及びバージョン情報３２３を取得するタイミングは任意の設計事項である。例えば、設備機器３から上述した起動通知を受信した後に、当該設備機器３に対して情報要求通知を送信してもよい。
【００５２】
対象機器選定部２０３は、全ての設備機器３の内から、更新プログラム取得部２０１により取得された更新プログラム情報２４３の更新プログラム２４３１の適用対象となる対象機器を選定する。詳細には、対象機器選定部２０３は、更新プログラム情報２４３の機種コード２４３２及びバージョン情報２４３３を使用して、プログラム更新管理テーブル２４１に登録されている各更新管理情報（図６参照）を参照することで対象機器を選定する。具体的には、対象機器選定部２０３は、機種コードが一致し、且つ、更新管理情報のバージョン情報２４１２で示されるバージョンと、バージョン情報２４３３で示されるバージョンとが異なる場合、当該更新管理情報に対応する設備機器３を対象機器として選定する。
【００５３】
特定機器選定部２０４は、本発明に係る選定手段の一例である。特定機器選定部２０４は、選定した対象機器が複数である場合、その内から、プログラム転送装置２との通信が最も不安定なものを特定機器として選定する。詳細には、特定機器選定部２０４は、プログラム更新管理テーブル２４１を参照して、選定した複数の対象機器の内で最も通信エラー率の高い対象機器を特定機器として選定する。なお、選定した対象機器が１台である場合、特定機器選定部２０４は、当該対象機器を特定機器として選定する。
【００５４】
プログラム転送部２０５は、本発明に係る転送手段の一例である。プログラム転送部２０５は、対象機器に外部装置から取得した更新プログラム２４３１を転送する。詳細には、先ず、プログラム転送部２０５は、各対象機器に対して、上述した転送開始通知を個別に送信する。各転送開始通知には、共通して、更新プログラムの転送が開始されることを示す通知種別と、バージョン情報２４３３と、最大シーケンス番号（Ｎｍａｘ）と、特定機器を識別する情報（本実施の形態では、機器アドレス）とが格納されている。
【００５５】
各対象機器に対する転送開始通知の送信後、プログラム転送部２０５は、全ての対象機器に更新プログラム２４３１を転送する。詳細には、プログラム転送部２０５は、シーケンス番号と、分割した各データとが格納されたフレームを特定機器を宛先として順次送信する。なお、上述したように、特定機器以外の対象機器は、上記のフレームを傍受する。
【００５６】
プログラム転送部２０５は、最初のフレームを特定機器宛てに送信した後、特定機器から、直近に送信したフレームに対する正常受信の応答があった場合、即ち、ＡＣＫコマンドを受信した場合に、次のフレームを特定機器宛てに送信する。
【００５７】
上述した転送終了通知の送信前に、対象機器から再送要求通知を受信すると、プログラム転送部２０５は、当該再送要求通知から再送を要求されたフレームのシーケンス番号を抽出する。そして、プログラム転送部２０５は、当該対象機器に対して、当該シーケンス番号に対応するフレームを送信する。
【００５８】
プログラム転送部２０５は、特定機器宛ての最後のフレームが送信されると、各対象機器に対して、転送終了通知を個別に送信する。ここで、最後のフレームとは、最大シーケンス番号Ｎｍａｘが格納されたフレームである。
【００５９】
更新指示部２０６は、本発明に係る更新指示手段の一例である。更新指示部２０６は、更新プログラム２４３１を転送した設備機器３に対して、通常プログラム３２０の更新を指示する。詳細には、更新指示部２０６は、更新プログラム２４３１を転送した設備機器３の内、未だ通常プログラム３２０を更新していない設備機器３があるか否かを判定する。未だ通常プログラム３２０を更新していない設備機器３がある場合、更新指示部２０６は、該当する各設備機器３について、更新スケジュールテーブル２４２における対応する更新スケジュール情報（図７参照）をチェックして、現在、通常プログラム３２０の更新が可能か否かを判定する。通常プログラム３２０の更新が可能と判定すると、更新指示部２０６は、当該設備機器３に対して上述した更新要求通知を送信する。
【００６０】
更新可能時間帯設定部２０７は、設備システムの管理者等が操作受付部２１を介して入力した各設備機器３の更新時間帯を、更新スケジュールテーブル２４２の対応する更新スケジュール情報（図７参照）に設定する。管理者等は、各設備機器３の更新時間帯を適宜変更することができる。
【００６１】
図１０は、プログラム転送装置２によって実行されるプログラム転送処理の手順を示すフローチャートである。このプログラム転送処理は、ユーザにより、更新プログラム情報２４３が記録されたＵＳＢメモリ等の外部装置が外部メモリインタフェース２３に接続されることで開始される。
【００６２】
更新プログラム取得部２０１は、外部メモリインタフェース２３に接続された外部装置から更新プログラム情報２４３（図８参照）を読み出して取得し、二次記憶装置２４に保存する（ステップＳ１０１）。機器情報取得部２０２は、各設備機器３に対して上述した情報要求通知を個別に送信することで、各設備機器３から機種コード３２２及びバージョン情報３２３を取得する（ステップＳ１０２）。
【００６３】
対象機器選定部２０３は、全ての設備機器３の内から更新プログラム２４３１の適用対象となる対象機器を選定する（ステップＳ１０３）。特定機器選定部２０４は、選定した対象機器から、プログラム転送装置２との通信が最も不安定なものを特定機器として選定する（ステップＳ１０４）。なお、上述したように、選定した対象機器が１台である場合、特定機器選定部２０４は、当該対象機器を特定機器として選定する。
【００６４】
プログラム転送部２０５は、各対象機器に対して、上述した転送開始通知を個別に送信する（ステップＳ１０５）。プログラム転送部２０５は、更新プログラム２４３１を分割した各データが格納された各フレームを特定機器を宛先として順次送信する（ステップＳ１０６）。即ち、プログラム転送部２０５は、更新プログラム２４３１をＮｍａｘのデータに分割し、シーケンス番号と、分割した各データとが格納された各フレームを特定機器を宛先として順次送信する。
【００６５】
プログラム転送部２０５により最大シーケンス番号Ｎｍａｘが格納されたフレームが特定機器を宛先として送信されると、プログラム転送部２０５は、各対象機器に対して、転送終了通知を個別に送信する（ステップＳ１０７）。この後、プログラム転送装置２は、プログラム転送処理を終了する。
【００６６】
図１１は、プログラム転送装置２の更新指示部２０６によって実行される更新指示処理の手順を示すフローチャートである。この更新指示処理は、予め定めた周期で（例えば、１分毎に）繰り返し実行される。
【００６７】
更新指示部２０６は、更新プログラム２４３１を転送済みの設備機器３の内、通常プログラム３２０を未更新の設備機器３があるか否かを判定する（ステップＳ２０１）。通常プログラム３２０を未更新の設備機器３がないと判定した場合（ステップＳ２０１；ＮＯ）、更新指示部２０６は、本周期での更新指示処理を終了する。
【００６８】
一方、通常プログラム３２０を未更新の設備機器３があると判定した場合（ステップＳ２０１；ＹＥＳ）、当該設備機器３の内、現時点において通常プログラム３２０の更新が可能な設備機器３があるか否かを判定する（ステップＳ２０２）。現時点において通常プログラム３２０の更新が可能な設備機器３がないと判定した場合（ステップＳ２０２；ＮＯ）、更新指示部２０６は、本周期での更新指示処理を終了する。
【００６９】
現時点において通常プログラム３２０の更新が可能な設備機器３があると判定した場合（ステップＳ２０２；ＹＥＳ）、更新指示部２０６は、当該設備機器３に対して更新要求通知を送信する（ステップＳ２０３）。この後、更新指示部２０６は、本周期での更新指示処理を終了する。
【００７０】
図１２を参照して、プログラム転送システム１の全体的な動作について説明する。プログラム転送装置２に外部装置が接続されると、プログラム転送装置２は、外部装置から更新プログラム情報２４３（図８参照）を読み出して取得する（ステップＳ３０１）。
【００７１】
プログラム転送装置２は、各設備機器３に対して情報要求通知を個別に送信して、各設備機器３から機種コード３２２及びバージョン情報３２３を取得する（ステップＳ３０２）。プログラム転送装置２は、全ての設備機器３の内から更新プログラム２４３１の適用対象となる対象機器を選定し、選定した対象機器から特定機器を選定する（ステップＳ３０３）。本例では、対象機器として、設備機器３ａ〜３ｃが選定され、特定機器として設備機器３ａが選定されたものとする。
【００７２】
プログラム転送装置２は、各対象機器に対して転送開始通知を個別に送信する（ステップＳ３０４）。そして、プログラム転送装置２は、更新プログラム２４３１をＮｍａｘ個のデータに分割し、各データが格納されたＮｍａｘ個のフレームを特定機器、即ち、設備機器３ａ宛てに順次送信する（ステップＳ３０５）。その際、プログラム転送装置２は、特定機器から、直近に送信したフレームに対するＡＣＫコマンドを受信した場合に、次のフレームを特定機器宛てに送信する。
【００７３】
特定機器である設備機器３ａは、自機器宛てのフレームを順次受信して、更新プログラム２４３１を分割したデータを順次取得する（ステップＳ３０６）。設備機器３ａは、正しいフレームを受信した場合、ＡＣＫコマンド（即ち、ＡＣＫ応答）をプログラム転送装置２に送信する。また、特定機器以外の対象機器である設備機器３ｂ，３ｃは、それぞれ、設備機器３ａ宛てのフレームを順次受信（即ち、順次傍受）して、更新プログラム２４３１を分割したデータを順次取得する（ステップＳ３０７）。
【００７４】
Ｎｍａｘ番目のフレームを特定機器宛てに送信すると、プログラム転送装置２は、設備機器３ａ〜３ｃに対して転送終了通知を個別に送信する（ステップＳ３０８）。
【００７５】
やがて、現在時刻が設備機器３ａによる通常プログラム３２０の更新可能な時間帯に突入すると、プログラム転送装置２は、設備機器３ａに対して更新要求通知を送信する（ステップＳ３０９）。かかる更新要求通知を受信すると、設備機器３ａは、通常プログラム３２０を更新し、再起動を行う（ステップＳ３１０）。詳細には、設備機器３ａは、二次記憶装置３２に保存されている新通常プログラム３２１（即ち、プログラム転送装置２から転送された更新プログラム２４３１）を通常プログラム３２０として保存することで、通常プログラム３２０を更新し、更新が完了すると再起動を行う。そして、再起動した設備機器３ａは、プログラム転送装置２に起動通知を送信する（ステップＳ３１１）。
【００７６】
また、現在時刻が設備機器３ｂによる通常プログラム３２０の更新可能な時間帯に突入すると、プログラム転送装置２は、設備機器３ｂに対して更新要求通知を送信する（ステップＳ３１２）。かかる更新要求通知を受信すると、設備機器３ｂは、通常プログラム３２０を更新し、再起動を行う（ステップＳ３１３）。そして、再起動した設備機器３ｂは、プログラム転送装置２に起動通知を送信する（ステップＳ３１４）。
【００７７】
また、現在時刻が設備機器３ｃによる通常プログラム３２０の更新可能な時間帯に突入すると、プログラム転送装置２は、設備機器３ｃに対して更新要求通知を送信する（ステップＳ３１５）。かかる更新要求通知を受信すると、設備機器３ｃは、通常プログラム３２０を更新し、再起動を行う（ステップＳ３１６）。そして、再起動した設備機器３ｃは、プログラム転送装置２に起動通知を送信する（ステップＳ３１７）。
【００７８】
以上説明したように、実施の形態１に係るプログラム転送システム１では、プログラム転送装置２は、外部装置から更新プログラム２４３１を取得すると、更新プログラム２４３１の適用対象となる全対象機器から通信エラー率が最も高い特定機器を選定する。そして、プログラム転送装置２は、更新プログラム２４３１を複数のデータに分割し、各データが格納された複数のフレームを特定機器宛てに順次送信する。特定機器は、自機器宛てのフレームを順次受信することで、更新プログラム２４３１を取得する。また、特定機器以外の対象機器は、特定機器宛てのフレームを順次受信（即ち、順次傍受）することで、更新プログラム２４３１を取得する。
【００７９】
これにより、更新プログラム２４３１を、対象となる全ての設備機器３に個別に送信する場合に比べ、通信データ量を低減することができる。また、プログラム転送装置２との通信が不安定な設備機器３に対しても、更新プログラム２４３１の転送における安定性を確保でき、フレーム紛失等によるプログラム転送装置２への再送要求の発生頻度を抑制できる。
【００８０】
さらに、更新プログラム２４３１の転送後、ユーザにより設備機器３毎に予め設定された更新可能時間帯に従って、プログラム転送装置２は、各設備機器３に対して通常プログラム３２０の更新を指示するため、各設備機器３は、ユーザの快適性、利便性を損なわないタイミングで、通常プログラム３２０の更新を実行することができる。
【００８１】
（実施の形態２）
続いて、本発明の実施の形態２について説明する。なお、以下の説明において、実施の形態１と共通する構成要素等については、同一の符号を付し、その説明を省略する。
【００８２】
図１３は、実施の形態２に係るプログラム転送システム１Ａの構成を示す図である。プログラム転送システム１Ａは、プログラム転送装置２Ａと、複数の設備機器３（３ａ，３ｂ，３ｃ，…）と、管理サーバ４とを備える。
【００８３】
管理サーバ４は、本発明に係る外部装置の一例である。管理サーバ４は、遠隔地から設備システムにおける設備機器３ａ，３ｂ，３ｃ，…を監視し、制御するためのサーバコンピュータであり、ネットワークＮ２を介してプログラム転送装置２Ａと通信可能に接続する。ネットワークＮ２は、ＷＡＮ（Wide Area Network）、インターネット等の広域ネットワークである。
【００８４】
プログラム転送装置２Ａは、実施の形態１のプログラム転送装置２と同様、設備機器３ａ，３ｂ，３ｃ，…を集中して管理するための集中管理装置である。プログラム転送装置２Ａのハードウェア構成は、実施の形態１のプログラム転送装置２と同様（図２参照）であるが、プログラム転送装置２Ａの通信インタフェース２２は、ネットワークＮ２を介して外部の装置と通信するためのインタフェースをさらに備える。
【００８５】
また、プログラム転送装置２Ａの更新プログラム取得部２０１は、外部メモリインタフェース２３を介してＵＳＢ等の記録媒体から更新プログラム情報２４３を取得するだけでなく、さらに、管理サーバ４から送られてきた更新プログラム情報２４３をネットワークＮ２を介して受信して取得することもできる。この他のプログラム転送装置２Ａの機能については、実施の形態１のプログラム転送装置２と同様である（図９参照）。
【００８６】
このように、実施の形態２に係るプログラム転送システム１Ａでは、プログラム転送装置２Ａは、外部装置である管理サーバ４から通信により更新プログラム２４３１を取得し、対象となる各設備機器３に転送する。このため、実施の形態１と同等の効果を奏することに加え、作業者等のユーザの作業負荷が軽減される。
【００８７】
なお、プログラム転送装置２Ａは、更新プログラム２４３１を転送した全ての設備機器３から、起動通知を受信した場合、管理サーバ４に対して更新完了通知を送信してもよい。また、プログラム転送装置２Ａの更新可能時間帯設定部２０７は、管理サーバ４から通信により各設備機器３の更新可能時間帯を取得し、取得した各設備機器３の更新時間帯を、更新スケジュールテーブル２４２の対応する更新スケジュール情報（図７参照）に設定してもよい。
【００８８】
本発明は、上記の各実施の形態に限定されず、本発明の要旨を逸脱しない範囲での種々の変更は勿論可能である。
【００８９】
例えば、上記の各実施の形態では、プログラム転送装置２は、設備システムを集中して管理する集中管理装置であったが、設備機器３ａ，３ｂ，３ｃ，…の何れかであってもよく、あるいは、通常プログラム３２０の更新作業を行う際、一時的にネットワークＮ１に接続される専用端末であってもよい。
【００９０】
また、転送開始通知には、機種コード２４３２がさらに格納されていてもよい。この場合、対象機器は、転送開始通知に含まれる機種コード２４３２及びバージョン情報２４３３と、自機器の二次記憶装置３２に保存されている機種コード３２２及びバージョン情報３２３とを比較することで、当該転送開始通知の正否をチェックすることができる。
【００９１】
また、転送開始通知には、最大シーケンス番号（Ｎｍａｘ）に替えて、又は、併用して、更新プログラム２４３１のデータサイズが格納されていてもよい。
【００９２】
上記の各実施の形態では、プログラム転送装置２，２Ａの制御部２５が備えるＣＰＵによって二次記憶装置２４に記憶されている転送制御プログラム２４０が実行されることで、プログラム転送装置２，２Ａの各機能部（図９参照）が実現された。しかし、プログラム転送装置２，２Ａの機能部の全部又は一部が、専用のハードウェアで実現されるようにしてもよい。専用のハードウェアとは、例えば、単一回路、複合回路、プログラム化されたプロセッサ、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field-Programmable Gate Array）、又は、これらの組み合わせである。
【００９３】
上記の各実施の形態において、転送制御プログラム２４０は、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＤＶＤ（Digital Versatile Disc）、光磁気ディスク（Magneto-Optical Disc）、ＵＳＢメモリ、メモリカード、ＨＤＤ等のコンピュータ読み取り可能な記録媒体に格納して配布することも可能である。そして、このように配布した転送制御プログラム２４０を特定の又は汎用のコンピュータにインストールすることによって、当該コンピュータを上記の各実施の形態におけるプログラム転送装置２，２Ａとして機能させることも可能である。
【００９４】
また、転送制御プログラム２４０をインターネット上の図示しないサーバが有する記憶装置に格納しておき、当該サーバからプログラム転送装置２，２Ａに転送制御プログラム２４０がダウンロードされるようにしてもよい。
【００９５】
本発明は、広義の精神と範囲を逸脱することなく、様々な実施の形態及び変形が可能である。また、上述した実施の形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施の形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
【産業上の利用可能性】
【００９６】
本発明は、複数の設備機器を備える設備システムに好適に採用され得る。
【符号の説明】
【００９７】
１，１Ａ  プログラム転送システム、２，２Ａ  プログラム転送装置、３ａ〜３ｃ  設備機器、４  管理サーバ、２０  ディスプレイ、２１  操作受付部、２２，３０  通信インタフェース、２３  外部メモリインタフェース、２４，３２  二次記憶装置、２５，３３  制御部、３１  メインユニット、２００  通信エラー率算出部、２０１  更新プログラム取得部、２０２  機器情報取得部、２０３  対象機器選定部、２０４  特定機器選定部、２０５  プログラム転送部、２０６  更新指示部、２０７  更新可能時間帯設定部、２４０  転送制御プログラム、２４１  プログラム更新管理テーブル、２４２  更新スケジュールテーブル、２４３  更新プログラム情報、３２０  通常プログラム、３２１  新通常プログラム、３２２，２４３２  機種コード、３２３，２４３３  バージョン情報、２４３１  更新プログラム、Ｎ１，Ｎ２  ネットワーク
【図１】
0006961091.tif 000002
【図２】
0006961091.tif 000003
【図３】
0006961091.tif 000004
【図４】
0006961091.tif 000005
【図５】
0006961091.tif 000006
【図６】
0006961091.tif 000007
【図７】
0006961091.tif 000008
【図８】
0006961091.tif 000009
【図９】
0006961091.tif 000010
【図１０】
0006961091.tif 000011
【図１１】
0006961091.tif 000012
【図１２】
0006961091.tif 000013
【図１３】
0006961091.tif 000014