(57)【要約】【課題】通信装置を停止させずに制御プログラムの更新を行う。【解決手段】通信装置は、通信のための制御プログラムに含まれる第１の種類のプログラムモジュールと第２の種類のプログラムモジュールとが起動処理中に参照する設定情報である起動設定情報を記憶する非一過性メモリと、前記第１の種類のプログラムモジュールと前記第２の種類のプログラムモジュールとが稼働中に参照する設定情報である稼働設定情報を記憶する一過性メモリと、プロセッサと、を備え、前記プロセッサは、自装置を稼働させたまま前記制御プログラムを更新する場合に、前記稼働設定情報の一部又は全部を前記起動設定情報に複写する処理と、前記稼働設定情報に基づいて、更新された前記第１の種類のプログラムモジュールを設定する処理と、前記稼働設定情報の一部又は全部が複写された前記起動設定情報に基づいて、更新された前記第２の種類のプログラムモジュールを設定する処理と、を実行する。【選択図】図９
2020052453.tif 000002
【特許請求の範囲】
【請求項１】
通信のための制御プログラムに含まれる第１の種類のプログラムモジュールと第２の種類のプログラムモジュールとが起動処理中に参照する設定情報である起動設定情報を記憶する非一過性メモリと、
前記第１の種類のプログラムモジュールと前記第２の種類のプログラムモジュールとが稼働中に参照する設定情報である稼働設定情報を記憶する一過性メモリと、
プロセッサと、
を備え、
前記プロセッサは、自装置を稼働させたまま前記制御プログラムを更新する場合に、
前記稼働設定情報の一部又は全部を前記起動設定情報に複写する処理と、
前記稼働設定情報に基づいて、更新された前記第１の種類のプログラムモジュールを設定する処理と、
前記稼働設定情報の一部又は全部が複写された前記起動設定情報に基づいて、更新された前記第２の種類のプログラムモジュールを設定する処理と、
を実行する、
通信装置。
【請求項２】
前記プロセッサは、前記第１の種類のプログラムモジュールを更新する場合、
更新前の前記第１の種類のプログラムモジュールを停止する前に、更新後の前記第１の種類のプログラムモジュールを起動する処理と、
前記稼働設定情報に基づいて、前記更新後の第１の種類のプログラムモジュールを設定する処理と、
前記更新前の第１の種類のプログラムモジュールを停止する処理と、
を実行し、
前記プロセッサは、前記第２の種類のプログラムモジュールを更新する場合、
更新前の前記第２の種類のプログラムモジュールを停止する処理と、
前記更新前の第２の種類のプログラムモジュールを停止した後に、更新後の前記第２の種類のプログラムモジュールを起動する処理と、
前記稼働設定情報の一部又は全部が複写された前記起動設定情報に基づいて、前記更新後の第２の種類のプログラムモジュールを設定する処理と、
を実行する、
請求項１に記載の通信装置。
【請求項３】
前記第１の種類のプログラムモジュールは、前記一過性メモリに記憶された設定情報により設定されることが可能なプログラムモジュールであり、
前記第２の種類のプログラムモジュールは、前記非一過性メモリに記憶された設定情報により設定されるプログラムモジュールである、
請求項１又は２に記載の通信装置。
【請求項４】
前記第１の種類のプログラムモジュールは、通信の制御を実行するプログラムモジュールであり、
前記第２の種類のプログラムモジュールは、通信の制御以外の処理を実行するプログラムモジュールである、
請求項１から請求項３のいずれか１項に記載の通信装置。
【請求項５】
前記複写する処理は、前記稼働設定情報のうち前記起動設定情報とは異なる情報を、前記起動設定情報に複写する処理である、
請求項１から請求項４のいずれか１項に記載の通信装置。
【請求項６】
前記プロセッサは、所定の更新条件が成立した場合に、前記複写する処理を実行する、
請求項１から請求項５のいずれか１項に記載の通信装置。
【請求項７】
前記更新条件は、前記稼働設定情報と前記起動設定情報との差分が所定量以上となること、前記稼働設定情報が変更されること、制御プログラムの更新指示が与えられること、予め決められた更新時刻に到達すること、及び、前記稼働設定情報に含まれる複数の分類に属する情報のうち特定の分類に属する情報が変更されること、の少なくとも１つである、
請求項６に記載の通信装置。
【請求項８】
前記プロセッサは、前記制御プログラムが更新される間に異常を検出した場合、稼働中の前記プログラムモジュールの全てを停止した後、更新前の前記プログラムモジュールのそれぞれを起動し、起動された前記更新前のプログラムモジュールを前記起動設定情報に基づいて設定する処理を実行する、
請求項１から請求項７のいずれか１項に記載の通信装置。
【請求項９】
前記異常は、通信エラーを含む、
請求項８に記載の通信装置。
【請求項１０】
通信のための制御プログラムに含まれる第１の種類のプログラムモジュールと第２の種類のプログラムモジュールとが起動処理中に参照する設定情報である起動設定情報を記憶する非一過性メモリと、前記第１の種類のプログラムモジュールと前記第２の種類のプログラムモジュールとが稼働中に参照する設定情報である稼働設定情報を記憶する一過性メモリと、プロセッサと、を備える通信装置の設定方法であって、
前記通信装置を稼働させたまま前記制御プログラムを更新する場合に、
前記プロセッサが、前記稼働設定情報の一部又は全部を前記起動設定情報に複写し、
前記プロセッサが、前記稼働設定情報に基づいて、更新された前記第１の種類のプログラムモジュールを設定し、
前記プロセッサが、前記稼働設定情報の一部又は全部が複写された前記起動設定情報に基づいて、更新された前記第２の種類のプログラムモジュールを設定する、
通信装置の設定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置及び通信装置の設定方法に関する。
【背景技術】
【０００２】
特許文献１には、ネットワーク装置の構成情報として、現在稼動している構成情報（ｒｕｎｎｉｎｇ−ｃｏｎｆｉｇ）と、再起動時に有効となる構成情報（ｓｔａｒｔｕｐ−ｃｏｎｆｉｇ）とを記憶するネットワーク装置が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２１７５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
通信装置の制御プログラムを更新する場合、通信装置は、自装置を再起動して更新後の制御プログラム全体を一過性メモリであるＲＡＭに展開し、設定情報（特許文献１におけるｓｔａｒｔｕｐ−ｃｏｎｆｉｇ）をＣＰＵが読み出して更新後の制御プログラム全体の構成を設定する。通信装置の再起動が行われる間、通信装置の機能は停止する。しかし、高い信頼性を要求される通信装置では、制御プログラムを更新する間も通信装置の機能を停止させないことが求められる。
【課題を解決するための手段】
【０００５】
本開示は、以下の発明を含む。但し、本発明は、特許請求の範囲によって定められるものである。
【０００６】
本発明の一態様に係る通信装置は、通信のための制御プログラムに含まれる第１の種類のプログラムモジュールと第２の種類のプログラムモジュールとが起動処理中に参照する設定情報である起動設定情報を記憶する非一過性メモリと、前記第１の種類のプログラムモジュールと前記第２の種類のプログラムモジュールとが稼働中に参照する設定情報である稼働設定情報を記憶する一過性メモリと、プロセッサと、を備え、前記プロセッサは、自装置を稼働させたまま前記制御プログラムを更新する場合に、前記稼働設定情報の一部又は全部を前記起動設定情報に複写する処理と、前記稼働設定情報に基づいて、更新された前記第１の種類のプログラムモジュールを設定する処理と、前記稼働設定情報の一部又は全部が複写された前記起動設定情報に基づいて、更新された前記第２の種類のプログラムモジュールを設定する処理と、を実行する。
【０００７】
本発明の一態様に係る通信装置の設定方法は、通信のための制御プログラムに含まれる第１の種類のプログラムモジュールと第２の種類のプログラムモジュールとが起動処理中に参照する設定情報である起動設定情報を記憶する非一過性メモリと、前記第１の種類のプログラムモジュールと前記第２の種類のプログラムモジュールとが稼働中に参照する設定情報である稼働設定情報を記憶する一過性メモリと、プロセッサと、を備える通信装置の設定方法であって、前記通信装置を稼働させたまま前記制御プログラムを更新する場合に、前記プロセッサが、前記稼働設定情報の一部又は全部を前記起動設定情報に複写し、前記プロセッサが、前記稼働設定情報に基づいて、更新された前記第１の種類のプログラムモジュールを設定し、前記プロセッサが、前記稼働設定情報の一部又は全部が複写された前記起動設定情報に基づいて、更新された前記第２の種類のプログラムモジュールを設定する。
【０００８】
本発明は、上記のような特徴的な処理部を備える通信装置として実現することができるだけでなく、かかる特徴的な処理をステップとする通信装置の設定方法として実現したり、かかるステップをコンピュータに実行させるためのコンピュータプログラムとして実現したりすることができる。また、通信装置の一部又は全部を半導体集積回路として実現したり、通信装置を含む通信システムとして実現したりすることができる。
【発明の効果】
【０００９】
本発明によれば、装置の機能を停止させずに制御プログラムの更新を行うことができる。
【図面の簡単な説明】
【００１０】
【図１】実施形態に係る通信システムの全体構成の一例を示す図である。
【図２】実施形態に係る通信装置（局側装置）の内部構成の一例を示すブロック図である
【図３】制御プログラムの起動直後における非一過性メモリ及び一過性メモリの構成の一例を示す模式図である。
【図４】稼働中の制御プログラムの設定情報が変更される場合の非一過性メモリ及び一過性メモリの構成の一例を示す模式図である。
【図５】通信装置に更新プログラムが与えられた直後における非一過性メモリ及び一過性メモリの構成の一例を示す模式図である。
【図６】稼働設定情報が起動設定情報に複写されない場合の非一過性メモリ及び一過性メモリの構成の一例を示す模式図である。
【図７】稼働設定情報が起動設定情報に複写された場合の非一過性メモリ及び一過性メモリの構成の一例を示す模式図である。
【図８】実施形態に係る通信装置におけるプログラム更新処理の手順を示すフローチャートである。
【図９】実施形態に係る通信装置における無停止更新処理の手順を示すフローチャートである。
【図１０】実施形態に係る通信装置における異常監視処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００１１】
＜本発明の実施形態の概要＞
以下、本発明の実施形態の概要を列記して説明する。
（１）  本実施形態に係る通信装置は、通信のための制御プログラムに含まれる第１の種類のプログラムモジュールと第２の種類のプログラムモジュールとが起動処理中に参照する設定情報である起動設定情報を記憶する非一過性メモリと、前記第１の種類のプログラムモジュールと前記第２の種類のプログラムモジュールとが稼働中に参照する設定情報である稼働設定情報を記憶する一過性メモリと、プロセッサと、を備え、前記プロセッサは、自装置を稼働させたまま前記制御プログラムを更新する場合に、前記稼働設定情報の一部又は全部を前記起動設定情報に複写する処理と、前記稼働設定情報に基づいて、更新された前記第１の種類のプログラムモジュールを設定する処理と、前記稼働設定情報の一部又は全部が複写された前記起動設定情報に基づいて、更新された前記第２の種類のプログラムモジュールを設定する処理と、を実行する。これにより、制御プログラムが更新される場合に、通信装置を停止させることなく、第１の種類のプログラムモジュール及び第２の種類のプログラムモジュールのそれぞれを設定することができる。また、起動設定情報に稼働設定情報の一部又は全部が複写されるため、第１の種類及び第２の種類のそれぞれのプログラムモジュールに用いられる設定情報において不整合の発生を抑制することができる。なお、ここでいう「プログラムモジュール」とは、実行可能形式の部分的プログラムであり、オブジェクトモジュールである。また、「プログラム」とは、互いに連結された複数のプログラムモジュールの集合体であり、オブジェクトプログラムである。
【００１２】
（２）  また、本実施形態に係る通信装置において、前記プロセッサは、前記第１の種類のプログラムモジュールを更新する場合、更新前の前記第１の種類のプログラムモジュールを停止する前に、更新後の前記第１の種類のプログラムモジュールを起動する処理と、前記稼働設定情報に基づいて、前記更新後の第１の種類のプログラムモジュールを設定する処理と、前記更新前の第１の種類のプログラムモジュールを停止する処理と、を実行し、前記プロセッサは、前記第２の種類のプログラムモジュールを更新する場合、更新前の前記第２の種類のプログラムモジュールを停止する処理と、前記更新前の第２の種類のプログラムモジュールを停止した後に、更新後の前記第２の種類のプログラムモジュールを起動する処理と、前記稼働設定情報の一部又は全部が複写された前記起動設定情報に基づいて、前記更新後の第２の種類のプログラムモジュールを設定する処理と、を実行してもよい。これにより、第１の種類のプログラムモジュールは停止することなく更新される。このため、装置の機能を停止させずに制御プログラムの更新を行うことができる。
【００１３】
（３）  また、本実施形態に係る通信装置において、前記第１の種類のプログラムモジュールは、前記一過性メモリに記憶された設定情報により設定されることが可能なプログラムモジュールであり、前記第２の種類のプログラムモジュールは、前記非一過性メモリに記憶された設定情報により設定されるプログラムモジュールであってもよい。これにより、第１の種類の更新モジュールを、一過性メモリに記憶された稼働設定情報に基づき設定することができ、第２の種類の更新モジュールを、非一過性メモリに記憶された起動設定情報に基づき設定することができる。
【００１４】
（４）  また、本実施形態に係る通信装置において、前記第１の種類のプログラムモジュールは、通信の制御を実行するプログラムモジュールであり、前記第２の種類のプログラムモジュールは、通信の制御以外の処理を実行するプログラムモジュールであってもよい。これにより、通信の制御を停止させることなく、制御プログラムを更新することができる。
【００１５】
（５）  また、本実施形態に係る通信装置において、前記複写する処理は、前記稼働設定情報のうち前記起動設定情報とは異なる情報を、前記起動設定情報に複写する処理であってもよい。これにより、稼働設定情報の全てを一括して起動設定情報に複写しなくても、稼働設定情報と起動設定情報とを整合させることができる。
【００１６】
（６）  また、本実施形態に係る通信装置において、前記プロセッサは、所定の更新条件が成立した場合に、前記複写する処理を実行してもよい。これにより、更新条件の成立により、制御プログラムの更新を開始することができる。
【００１７】
（７）  また、本実施形態に係る通信装置において、前記更新条件は、前記稼働設定情報と前記起動設定情報との差分が所定量以上となること、前記稼働設定情報が変更されること、制御プログラムの更新指示が与えられること、予め決められた更新時刻に到達すること、及び、前記稼働設定情報に含まれる複数の分類に属する情報のうち特定の分類に属する情報が変更されること、の少なくとも１つであってもよい。これにより、様々な条件を更新条件に設定することができる。
【００１８】
（８）  また、本実施形態に係る通信装置において、前記プロセッサは、前記制御プログラムが更新される間に異常を検出した場合、稼働中の前記プログラムモジュールの全てを停止した後、更新前の前記プログラムモジュールのそれぞれを起動し、起動された前記更新前のプログラムモジュールを前記起動設定情報に基づいて設定する処理を実行してもよい。これにより、通信装置に異常が発生した場合、更新前の制御プログラムに戻すことで、異常から復帰することができる。
【００１９】
（９）  また、本実施形態に係る通信装置において、前記異常は、通信エラーを含んでもよい。制御プログラムの更新が適切に行われなかった場合、正常な通信が行われず、通信エラーが発生する可能性がある。上記構成とすることにより、通信エラーが生じた場合に、更新前の制御プログラムに戻すことで、通信エラーを解消できる可能性がある。
【００２０】
（１０）  本実施形態に係る通信装置の設定方法は、通信のための制御プログラムに含まれる第１の種類のプログラムモジュールと第２の種類のプログラムモジュールとが起動処理中に参照する設定情報である起動設定情報を記憶する非一過性メモリと、前記第１の種類のプログラムモジュールと前記第２の種類のプログラムモジュールとが稼働中に参照する設定情報である稼働設定情報を記憶する一過性メモリと、プロセッサと、を備える通信装置の設定方法であって、前記通信装置を稼働させたまま前記制御プログラムを更新する場合に、前記プロセッサが、前記稼働設定情報の一部又は全部を前記起動設定情報に複写し、前記プロセッサが、前記稼働設定情報に基づいて、更新された前記第１の種類のプログラムモジュールを設定し、前記プロセッサが、前記稼働設定情報の一部又は全部が複写された前記起動設定情報に基づいて、更新された前記第２の種類のプログラムモジュールを設定する。これにより、制御プログラムが更新される場合に、通信装置を停止させることなく、第１の種類のプログラムモジュール及び第２の種類のプログラムモジュールのそれぞれを設定することができる。また、起動設定情報に稼働設定情報の一部又は全部が複写されるため、第１の種類及び第２の種類のそれぞれのプログラムモジュールに用いられる設定情報において不整合の発生を抑制することができる。
【００２１】
＜本発明の実施形態の詳細＞
以下、図面を参照しつつ、本発明の実施形態の詳細を説明する。なお、以下に記載する実施形態の少なくとも一部を任意に組み合わせてもよい。
【００２２】
以下の実施形態では、通信装置を、光通信用の局側装置とした例について説明する。しかし、通信装置は光通信装置に限定されない。本実施形態に係る通信装置は、無線通信装置、有線通信装置等、光通信装置以外の通信装置であってもよい。
【００２３】
［１．通信システムの構成］
図１は、本実施形態に係る通信システムの全体構成の一例を示す図である。図１に示すように、通信システム１０は、光アクセスシステムであり、局側装置（OLT: Optical Network Unit）１１と、複数の宅側装置（ONU: Optical Line Terminal）１２と、ＰＯＮ回線１３とを備える。
【００２４】
ＯＬＴ１１のＬ２スイッチ２３（図２参照）には、インターネット等の上位ネットワーク５０が接続される。
【００２５】
ＯＮＵ１２のＵＮＩポート（図示せず）には、イーサネット（登録商標）通信が可能なユーザ通信装置を接続可能である。ＯＮＵ１２に接続されるユーザ通信装置の数及び種類は特に限定されない。例えば、ユーザ通信装置はパーソナルコンピュータ等の端末であっても、ルータ又はゲートウェイ等の中継装置であってもよい。つまり、ＯＮＵ１２には、中継装置を介してネットワークが接続されてもよい。
【００２６】
ＰＯＮ回線１３は、光スプリッタ１４と光ファイバ１５，１６とを備える光通信回線である。ＰＯＮ回線１３は、１つの幹線光ファイバ１５と複数の支線光ファイバ１６とを含む。光スプリッタ１４には、各光ファイバ１５，１６が接続される。ＯＬＴ１１から送信された光信号は、ＰＯＮ回線１３の幹線光ファイバ１５を通って光スプリッタ１４によって分岐される。分岐した光信号は、支線光ファイバ１６を通って各ＯＮＵ１２に伝送される。
【００２７】
各ＯＮＵ１２から送信された光信号は、それぞれ支線光ファイバ１６を通って光スプリッタ１４によって集束される。集束された光信号は、幹線光ファイバ１５を通ってＯＬＴ１１に伝送される。ＰＯＮ回線１３に用いられる光スプリッタ１４は、外部からの電源供給を必要とせず、入力された光信号から受動的に光信号を分岐又は多重する。
【００２８】
ＯＬＴ１１とＯＮＵ１２との接続確立後は、ユーザ通信装置がＯＮＵ１２及びＯＬＴ１１を介して上位ネットワーク５０へアクセスすることが可能となる。支線光ファイバ１６に伝送される上り方向の光信号は、光スプリッタ１４において合流する。従って、同じ波長の光信号が合流後に衝突しないための多重化が必要である。通信システム１０では、ＭＰＣＰに則った時分割多重化が行われる。具体的には、ＯＬＴ１１は、各ＯＮＵ１２から送信された制御フレーム（レポート）に基づいて、ＯＮＵ１２の内部に蓄積されたデータの上り方向の送信開始時刻及び送信許可量を演算する。
【００２９】
次に、ＯＬＴ１１は、指示信号を挿入した制御フレーム（グラント）を、ＰＯＮ回線１３を介してそれぞれのＯＮＵ１２に送信する。各ＯＮＵ１２は、グラントにより指定された時刻に、自己のバッファ内のデータの長さをレポートでＯＬＴ１１に通知する。各ＯＮＵ１２は、指示信号が挿入されたグラントをＯＬＴ１１から受信する。その指示信号に基づいて、各ＯＮＵ１２は、自己のバッファ内のデータをレポートとともにＯＬＴ１１に送信する。
【００３０】
［２．ＯＬＴの内部構成］
図２は、ＯＬＴ１１の内部構成の一例を示すブロック図である。
図２に示すように、ＯＬＴ１１は、光トランシーバ２１と、ＰＯＮ処理部２２と、Ｌ２スイッチ２３と、制御部２４と、通信インタフェース２６とを備える。
【００３１】
光トランシーバ２１は、光信号を送受信する回路を含む光デバイス（例えば、プラガブル光トランシーバ）よりなる。光トランシーバ２１は、幹線光ファイバ１５（図１参照）に光学的に接続され、ＰＯＮ処理部２２に電気的に接続される。
光トランシーバ２１は、光信号と電気信号を相互に変換する。すなわち、光トランシーバ２１は、ＯＮＵ１２からの光信号よりなる上り信号を電気信号に変換する。光トランシーバ２１は、ＰＯＮ処理部２２のからの電気信号よりなる下り信号を光信号に変換する。
【００３２】
ＰＯＮ処理部２２は、ＰＯＮの通信規格に則った所定の通信処理などを実行する集積回路よりなる。
ＰＯＮ処理部２２は、上り信号がＯＮＵ１２からの制御フレーム（レポート）である場合、当該ＯＮＵ１２についての上り方向の送信開始時刻及び送信許可量を決定し、制御フレーム（グラント）を当該ＯＮＵ１２に通知する。
【００３３】
ＰＯＮ処理部２２は、上り信号に含まれるフレームが上位ネットワーク５０へのデータフレームである場合、そのフレームをＬ２スイッチ２３に送信する。
ＰＯＮ処理部２２は、下り信号に含まれるフレームがＯＮＵ１２へのデータフレームである場合、そのフレームを光トランシーバ２１に送信させる。
【００３４】
Ｌ２スイッチ２３は、受信したＬ２レイヤのフレームの宛先に応じて送信ポートを決定する集積回路よりなる。
Ｌ２スイッチ２３は、上位ネットワーク５０からの下り信号に含まれるフレームがＯＮＵ１２宛てである場合、そのフレームを自装置のＰＯＮ処理部２２に送信する。
【００３５】
Ｌ２スイッチ２３は、ＰＯＮ処理部２２からの上り信号に含まれるフレームが上位ネットワーク５０へのデータフレームである場合、そのフレームを上位ネットワーク５０に送信する。
Ｌ２スイッチ２３は、ＰＯＮ処理部２２からの上り信号に含まれるフレームが制御部２４宛ての管理フレームである場合、そのフレームを制御部２４に送信する。
【００３６】
制御部２４は、Ｌ２スイッチ２３の専用ポートに接続されており、ＰＯＮ回線１３を用いてＯＮＵ１２の制御部と通信することができる。制御部２４は、パーソナルコンピュータ（ＰＣ）等よりなる外部装置２５と通信可能に接続される。
【００３７】
制御部２４は、ハードウェアプロセッサであるＣＰＵ２４１と、フラッシュメモリ、ハードディスク等の非一過性メモリ２４２と、ＲＡＭである一過性メモリ２４３とを備える。
【００３８】
非一過性メモリ２４２には、制御プログラム３００が記憶（インストール）される。制御プログラム３００は、Ｌ２スイッチ２３を制御することで、ＯＬＴ１１による通信を制御するためのプログラムである。制御プログラム３００は、Ｎ個のプログラムモジュール（第１モジュール３００＿１、第２モジュール３００＿２、第３モジュール３００＿３、…、第Ｎモジュール３００＿Ｎ）を有する。
【００３９】
非一過性メモリ２４２には、起動設定情報３５０が記憶される。起動設定情報３５０は、制御プログラム３００の起動処理において読み出され、制御プログラム３００の設定に用いられる設定情報である。
【００４０】
ＣＰＵ２４１は、制御プログラム３００を実行する。制御プログラム３００の起動時には、第１モジュール３００＿１、第２モジュール３００＿２、第３モジュール３００＿３、…、第Ｎモジュール３００＿Ｎが非一過性メモリ２４２から読み出され、一過性メモリ２４３に展開される。つまり、制御プログラム３００は、一過性メモリ２４３にロードされ、展開された制御プログラム４００として一過性メモリ２４３に記憶される。制御プログラム４００には、Ｎ個のプログラムモジュール（第１モジュール４００＿１、第２モジュール４００＿２、第３モジュール４００＿３、…、第Ｎモジュール４００＿Ｎ）が含まれる。
【００４１】
一過性メモリ２４３には、稼働設定情報４５０が記憶される。稼働設定情報４５０は、稼働中の制御プログラム４００において読み出され、制御プログラム４００の設定に用いられる設定情報である。
【００４２】
非一過性メモリ２４２には、制御プログラムの更新及び各プログラムモジュールの設定を行うための更新設定プログラム３７０が記憶される。ＯＬＴ１１は、コンピュータを備えて構成され、ＯＬＴ１１の制御プログラムの更新及び各プログラムモジュールの設定機能は、前記コンピュータの記憶装置に記憶されたコンピュータプログラムである更新設定プログラム３７０がＣＰＵ２４１によって実行されることで発揮される。更新設定プログラム３７０は、ＣＤ−ＲＯＭなどの記録媒体に記憶させることができる。ＣＰＵ２４１は、更新設定プログラム３７０を実行することができる。ＣＰＵ２４１が更新設定プログラム３７０を実行することにより、ＯＬＴ１１は後述するようなプログラム更新処理及び異常監視処理を実行することができる。
【００４３】
［３．制御プログラムの更新］
本実施形態に係るＯＬＴ１１における制御プログラムの更新について説明する。
【００４４】
図３は、制御プログラム４００の起動直後における非一過性メモリ２４２及び一過性メモリ２４３の構成の一例を示す模式図である。図３の例では、第１モジュール４００＿１用のパラメータＰ１の初期値がＳＶ１であり、第２モジュール４００＿２用のパラメータＰ２の初期値がＳＶ２であり、第３モジュール４００＿３用のパラメータＰ３の初期値がＳＶ３である。起動設定情報３５０には、Ｐ１＝ＳＶ１，Ｐ２＝ＳＶ２，Ｐ３＝ＳＶ３，…が格納される。第１モジュール４００＿１，第２モジュール４００＿２，第３モジュール４００＿３，…の起動処理において、ＣＰＵ２４１は起動設定情報３５０を読み出し、Ｐ１＝ＳＶ１，Ｐ２＝ＳＶ２，Ｐ３＝ＳＶ３，…に設定する。各モジュール４００＿１、４００＿２、４００＿３、…の設定が行われた後、起動設定情報３５０が稼働設定情報４５０に複写される。このため、制御プログラム４００の起動直後における稼働設定情報４５０は、起動設定情報３５０と一致する。
【００４５】
図４は、稼働中の制御プログラム４００の設定情報が変更される場合の非一過性メモリ２４２及び一過性メモリ２４３の構成の一例を示す模式図である。制御プログラム４００が実行されＯＬＴ１１が稼働している間、制御プログラム４００における設定情報が変更されることがある。稼働中の制御プログラム４００が設定情報を取得する場合、非一過性メモリ２４２内の起動設定情報３５０ではなく、一過性メモリ２４３内の稼働設定情報４５０を参照する。このため、稼働中の制御プログラム４００の新たな設定情報は、起動設定情報３５０ではなく、稼働設定情報４５０に書き込まれる。
【００４６】
図４の例では、パラメータＰ１の値ＳＶ１は変更されず、パラメータＰ２の値はＳＶ２からＳＶ２０へ変更され、パラメータＰ３の値はＳＶ３からＳＶ３０へ変更されている。このため、稼働設定情報４５０においては、Ｐ１＝ＳＶ１，Ｐ２＝ＳＶ２０，Ｐ３＝ＳＶ３０となる。他方、起動設定情報３５０においては、Ｐ１＝ＳＶ１，Ｐ２＝ＳＶ２，Ｐ３＝ＳＶ３である。このように、稼働設定情報４５０と起動設定情報３５０とは互いに異なる。
【００４７】
本実施形態に係るＯＬＴ１１は、自装置を再起動させることなく制御プログラムを更新する無停止更新処理を実行することができる。また、ＯＬＴ１１は、自装置を再起動させて制御プログラムを更新する通常更新処理も実行することができる。制御プログラムを更新する場合、更新前の制御プログラム（以下、「更新前プログラム」という）４００が稼働している間に、例えば、外部装置２５又は上位ネットワーク５０のサーバから、新たな制御プログラム（以下、「更新プログラム」という）がＯＬＴ１１に送信される。
【００４８】
図５は、ＯＬＴ１１に更新プログラムが与えられた直後における非一過性メモリ２４２及び一過性メモリ２４３の構成の一例を示す模式図である。ＯＬＴ１１は、更新前プログラム３００を残したまま、更新プログラム３３０を非一過性メモリ２４２にインストールする。これにより、非一過性メモリ２４２には、更新前プログラム３００と、更新プログラム３３０とが併存する。
【００４９】
図６は、稼働設定情報４５０が起動設定情報３５０に複写されない場合の非一過性メモリ２４２及び一過性メモリ２４３の構成の一例を示す模式図である。
【００５０】
本実施の形態においては、更新プログラム４３０に含まれるプログラムモジュールには２種類が存在する。第１の種類のプログラムモジュールは、一過性メモリ２４３に記憶された設定情報により設定することが可能なプログラムモジュールである。本実施形態では、第１の種類のプログラムモジュールの設定情報が、稼働設定情報４５０から一過性メモリ２４３の稼働設定情報４５０とは異なる領域に構成引継情報として複写され、その領域のアドレスが当該モジュールに通知される。ＣＰＵ２４１は、通知されたアドレスから設定情報を読み出して、第１の種類のプログラムモジュールを設定する。
【００５１】
更新前プログラム４００における第１の種類のプログラムモジュールが起動した状態で、更新プログラム４３０における第１の種類のプログラムモジュールは起動する。つまり、更新前プログラム４００における第１の種類のプログラムモジュールが一過性メモリ２４３に展開された状態で、更新プログラム４３０における第１の種類のプログラムモジュールも一過性メモリ２４３に展開される。
【００５２】
更新プログラム４３０における第１の種類のプログラムモジュールが構成引継情報によって設定されている間、更新前プログラム４００における第１の種類のプログラムモジュールも実行され続ける。図６の例では、第１の種類のプログラムモジュールは、第１モジュール及び第２モジュールである。更新前プログラム４００における第１モジュール４００＿１が稼働している間、第１モジュール４００＿１用の設定情報であるパラメータＰ１の設定値が、一過性メモリ２４３における稼働設定情報４５０とは別の領域に構成引継情報として格納される。さらに、第１モジュール４００＿１が稼働している間、更新プログラム４３０における第１モジュール４３０＿１が構成引継情報によって設定される。つまり、第１モジュール４３０＿１の設定の間、更新前の第１モジュール４００＿１と更新後の第１モジュール４３０＿１とが同時に実行される。同様に、更新前プログラム４００における第２モジュール４００＿２が稼働している間、更新プログラム４３０における第２モジュール４３０＿２が、稼働設定情報４５０とは別の領域に格納された構成引継情報（Ｐ２の設定値）によって設定される。このようにすることにより、１つのＣＰＵ２４１によって、第１モジュール及び第２モジュールにより実現される機能が停止することなく、第１モジュール及び第２モジュールを更新することができる。なお、更新後の第１モジュール４３０＿１の設定の後、更新前の第１モジュール４００＿１は停止され、一過性メモリ２４３の第１モジュール４００＿１の領域が開放される。同様に、更新後の第２モジュール４３０＿２の設定の後、更新前の第２モジュール４００＿２は停止され、一過性メモリ２４３の第２モジュール４００＿２の領域が開放される。
【００５３】
第１の種類のプログラムモジュールは、通信の制御を実行するプログラムモジュールである。このため、ＯＬＴ１１の通信機能が停止することなく、第１の種類のプログラムモジュールが更新される。
【００５４】
なお、第１の種類のプログラムモジュールを設定する場合に、稼働設定情報４５０における、当該モジュールの設定情報のアドレスを当該モジュールに通知し、稼働設定情報４５０から直接読み出された設定情報により、当該モジュールが設定されてもよい。つまり、第１モジュール４３０＿１の設定において、稼働設定情報４５０におけるパラメータＰ１の設定値のアドレスを第１モジュール４３０＿１に通知し、ＣＰＵ２４１が、当該アドレスにおけるＰ１の設定値によって第１モジュール４３０＿１を設定することができる。同様に、第２モジュール４３０＿２の設定において、稼働設定情報４５０におけるパラメータＰ２の設定値のアドレスを第２モジュール４３０＿２に通知し、ＣＰＵ２４１が、当該アドレスにおけるＰ２の設定値によって第２モジュール４３０＿２を設定することができる。
【００５５】
第２の種類のプログラムモジュールは、非一過性メモリ２４２に記憶された設定情報により設定されるプログラムモジュールである。本実施形態では、ＣＰＵ２４１は、非一過性メモリ２４２から起動設定情報３５０を読み出して、第２の種類のプログラムモジュールを設定する。
【００５６】
更新前プログラム４００における第２の種類のプログラムモジュールが停止した後に、更新プログラム４３０における第２の種類のプログラムモジュールが起動され、当該モジュールが起動設定情報３５０によって設定される。つまり、更新前プログラム４００における第２の種類のプログラムモジュールの一過性メモリ２４３での領域が開放された後、更新プログラム４３０における第２の種類のプログラムモジュールが一過性メモリ２４３に展開される。図６の例では、第２の種類のプログラムモジュールは、第３モジュールである。更新前プログラム４００における第３モジュール４００＿３が停止され、その後、更新プログラム４３０における第３モジュール４３０＿３が起動される。第３モジュール４３０＿３用の設定情報であるパラメータＰ３の設定値が、非一過性メモリ２４２における起動設定情報３５０から読み出され、第３モジュール４３０＿３が設定される。更新前後の第３モジュール４００＿３及び４３０＿３は、同時には実行されない。このようにすることにより、更新前の第３モジュール４００＿３とは同時に実行できない更新後の第３モジュール４３０＿３を設定することができる。
【００５７】
第２の種類のプログラムモジュールは、通信の制御以外の処理を実行するプログラムモジュールである。通信の制御以外の処理は、例えば、ＯＬＴ１１の保守機能に関する処理である。このため、通信の制御を停止させることなく、第２の種類のプログラムモジュールが更新される。
【００５８】
しかし、稼働設定情報４５０が変更されていると、起動設定情報３５０と稼働設定情報４５０とが異なった状態となる。よって、この状態で更新プログラム４３０の各プログラムモジュールの設定を行うと、第１の種類のプログラムモジュールは稼働設定情報４５０から得られた設定情報によって設定され、第２の種類のプログラムモジュールは起動設定情報３５０から得られた設定情報によって設定されるため、両モジュール間で設定の不整合が発生する。つまり、第３モジュール４３０＿３は、稼働設定情報４５０に含まれるＰ３＝ＳＶ３０で設定される必要があるが、起動設定情報３５０に含まれるＰ３＝ＳＶ３で設定されてしまう。
【００５９】
本実施形態に係るＯＬＴ１１では、更新後のプログラムモジュールの設定を行う前に、稼働設定情報４５０の一部又は全部を起動設定情報３５０に複写し、稼働設定情報４５０と起動設定情報３５０とを整合させる。これにより、第１の種類のプログラムモジュールと第２の種類のプログラムモジュールとの間における設定の不整合を防止することができる。
【００６０】
図７は、稼働設定情報４５０が起動設定情報３５０に複写された場合の非一過性メモリ２４２及び一過性メモリ２４３の構成の一例を示す模式図である。図７の例では、稼働設定情報４５０及び起動設定情報３５０の両方において、Ｐ１＝ＳＶ１，Ｐ２＝ＳＶ２０，Ｐ３＝ＳＶ３０，…となっている。つまり、起動設定情報３５０が、稼働設定情報４５０に一致している。このような状態において、更新プログラム４３０の各プログラムモジュールの設定を行うと、第１の種類のプログラムモジュールと、第２の種類のプログラムモジュールとの間で設定の不整合が防止される。つまり、第１モジュール４３０＿１は稼働設定情報４５０に含まれるＰ１＝ＳＶ１で設定され、第２モジュール４３０＿２は稼働設定情報４５０に含まれるＰ２＝ＳＶ２０で設定され、第３モジュール４３０＿３は起動設定情報３５０に含まれるＰ３＝ＳＶ３０で設定される。
【００６１】
［４．ＯＬＴ１１の制御プログラム更新における動作］
本実施形態に係るＯＬＴ１１における制御プログラムの更新の動作について説明する。
【００６２】
ＣＰＵ２４１は、更新設定プログラム３７０（図２参照）を実行することにより、プログラム更新処理を実行する。図８は、プログラム更新処理の手順を示すフローチャートである。
【００６３】
プログラム更新処理において、まずＣＰＵ２４１は、更新条件が成立したか否かを判定する（ステップＳ１０１）。更新条件は、制御プログラム３００の更新を行う場合の条件である。更新条件は、次の（１）〜（５）の条件から選択されてもよい。また、（１）〜（５）のうちの複数の条件を組み合わせて更新条件としてもよい。例えば、（１）〜（５）の中から選択された複数の条件が全て成立することを更新条件の成立としてもよいし、（１）〜（５）の中から選択された複数の条件のいずれか１つが成立することを更新条件の成立としてもよい。
（１）稼働設定情報４５０と起動設定情報３５０との差分が所定量以上である。
（２）稼働設定情報４５０の少なくとも一部が変更される。
（３）制御プログラム３００の更新指示が与えられる。
（４）予め定められた更新時刻に到達する。
（５）稼働設定情報４５０に含まれる複数の分類に属する情報のうち、特定の分類に属する情報が変更される。
【００６４】
（１）において、差分が所定量以上とは、例えば、稼働設定情報４５０と起動設定情報３５０との間で異なる設定値の数が所定値以上とすることができ、また、異なる設定値のデータ容量が所定値以上とすることができる。また、（３）において、更新指示は、例えば外部装置２５又は上位ネットワーク５０のサーバから与えられることができる。また、（４）において、通信トラフィックが少ない夜間の時刻（例えば、２時）を更新時刻とすることができる。
【００６５】
（５）において、設定情報を複数種類に分類することができる。例えば、通信に関する設定情報は「通信」に分類され、保守に関する設定情報は「保守」に分類されてもよい。このようにして分類された設定情報のうち、特定の分類（例えば、「通信」）に属する情報が変更されれば、（５）の条件が成立する。また、（２）の条件と（５）の条件とは一部が重複するため、更新条件にはいずれか１つが含まれてもよい。
【００６６】
更新条件が成立しない場合（ステップＳ１０１においてＮＯ）、ＣＰＵ２４１は、ステップＳ１０１を再度実行する。
【００６７】
更新条件が成立した場合（ステップＳ１０１においてＹＥＳ）、ＣＰＵ２４１は、無停止更新処理を実行するか否かを判定する（ステップＳ１０２）。無停止更新処理を実行するか否かの判定には、例えば、与えられた更新指示における無停止更新処理が指定の有無が用いられる。
【００６８】
無停止更新処理を実行すると判定された場合（ステップＳ１０２においてＹＥＳ）、ＣＰＵ２４１は、無停止更新処理を実行する（ステップＳ１０３）。無停止更新処理を実行すると判定されなかった場合（ステップＳ１０２においてＮＯ）、ＣＰＵ２４１は、通常更新処理を実行する（ステップＳ１０４）。通常更新処理は、ＯＬＴ１１を再起動させて制御プログラムを更新する処理である。無停止更新処理又は通常更新処理が終了すると、ＣＰＵ２４１は、プログラム更新処理を終了する。
【００６９】
以下、無停止更新処理について説明する。図９は、無停止更新処理の手順を示すフローチャートである。
【００７０】
無停止更新処理において、まずＣＰＵ２４１は、稼働設定情報４５０の一部又は全部を起動設定情報３５０に複写する（ステップＳ２０１）。これにより、起動設定情報３５０が、稼働設定情報４５０と整合する。この処理では、稼働設定情報４５０のうち、起動設定情報３５０とは異なる差分情報を、起動設定情報３５０に複写してもよい。また、稼働設定情報４５０の全てを起動設定情報３５０に複写してもよい。
【００７１】
ＣＰＵ２４１は、非一過性メモリ２４２に更新前プログラム３００が記憶された状態で、更新プログラム３３０をインストールする（ステップＳ２０２）。つまり、非一過性メモリ２４２では、更新前プログラム３００に更新プログラム３３０が上書きされるのではなく、更新前プログラム３００とは別に、更新プログラム３３０が追加される。
【００７２】
ＣＰＵ２４１は、更新前プログラム４００の第１モジュール４００＿１、第２モジュール４００＿２、第３モジュール４００＿３、…、第Ｎモジュール４００＿Ｎの全てに対して、終了の告知を行う（ステップＳ２０３）。
【００７３】
次にＣＰＵ２４１は、更新前プログラム４００の第１モジュール４００＿１、第２モジュール４００＿２、第３モジュール４００＿３、…、第Ｎモジュール４００＿Ｎのうち、一過性メモリ２４３に記憶された設定情報により設定することが可能なプログラムモジュール、つまり、第１の種類のプログラムモジュールについて、更新前のモジュールから更新後のモジュールへと引き継ぐ設定情報（構成引継情報）を一過性メモリ２４３に記憶する（ステップＳ２０４）。この処理では、稼働設定情報４５０のうち、第１の種類のプログラムの設定情報が構成引継情報として一過性メモリ２４３に記憶される。
【００７４】
ＣＰＵ２４１は、プログラムモジュールのインデックスである変数Ｍの値を初期化（Ｍ＝１）する（ステップＳ２０５）。ＣＰＵ２４１は、変数Ｍの値が、制御プログラムにおけるモジュール数Ｎ以下であるか否かを判定する（ステップＳ２０６）。
【００７５】
Ｎ≧Ｍの場合（ステップＳ２０６においてＹＥＳ）、ＣＰＵ２４１は、更新前の第Ｍモジュールから更新後の第Ｍモジュールへ引き継がれる設定情報があるか否か、即ち、第Ｍモジュールが第１の種類のプログラムモジュールであるか否かを判定する（ステップＳ２０７）。
【００７６】
更新前の第Ｍモジュール４００＿Ｍから更新後の第Ｍモジュール４３０＿Ｍへ引き継がれる設定情報がある、即ち、第Ｍモジュールが第１の種類のプログラムモジュールである場合（ステップＳ２０７においてＹＥＳ）、ＣＰＵ２４１は、更新前プログラムの第Ｍモジュール４００＿Ｍを停止することなく、更新プログラム４３０の第Ｍモジュール４３０＿Ｍを起動する（ステップＳ２０８）。つまり、一過性メモリ２４３において、更新前プログラム４００の第Ｍモジュール４００＿Ｍが展開されている状態で、更新プログラム４３０の第Ｍモジュール４３０＿Ｍが展開される。
【００７７】
ＣＰＵ２４１は、第Ｍモジュールの設定情報の引継を行う（ステップＳ２０９）。この処理では、一過性メモリ２４３から更新引継情報がＣＰＵ２４１によって読み出され、更新プログラム４３０の第Ｍモジュール４３０＿Ｍが設定される。
【００７８】
ＣＰＵ２４１は、更新前プログラム４００の第Ｍモジュール４００＿Ｍを停止する（ステップＳ２１０）。これにより、一過性メモリ２４３における更新前プログラム４００の第Ｍモジュール４００＿Ｍの領域が開放される。
【００７９】
次にＣＰＵ２４１は変数Ｍの値をインクリメントし（ステップＳ２１４）、処理をステップＳ２０６へ移す。
【００８０】
他方、更新前の第Ｍモジュール４００＿Ｍから更新後の第Ｍモジュール４３０＿Ｍへ引き継がれる設定情報がない、即ち、第Ｍモジュールが第２の種類のプログラムモジュールである場合（ステップＳ２０７においてＮＯ）、ＣＰＵ２４１は、更新前プログラム４００の第Ｍモジュール４００＿Ｍを停止する（ステップＳ２１１）。これにより、一過性メモリ２４３における更新前プログラム４００の第Ｍモジュール４００＿Ｍの領域が開放される。
【００８１】
その後、ＣＰＵ２４１は、更新プログラム４３０の第Ｍモジュール４３０＿Ｍを起動する（ステップＳ２１２）。つまり、一過性メモリ２４３において、更新前プログラム４００の第Ｍモジュール４００＿Ｍが存在しない状態で、更新プログラム４３０の第Ｍモジュール４３０＿Ｍが展開される。
【００８２】
ＣＰＵ２４１は、起動設定情報３５０から第Ｍモジュール４３０＿Ｍ用の設定情報を読み出し、第Ｍモジュール４３０＿Ｍを設定する（ステップＳ２１３）。
【００８３】
次にＣＰＵ２４１は変数Ｍの値をインクリメントし（ステップＳ２１４）、処理をステップＳ２０６へ移す。
【００８４】
以上により、第Ｎモジュールまで設定が行われる。ＭがＮより大きい場合（ステップＳ２０６においてＮＯ）、ＣＰＵ２４１は、非一過性メモリ２４２の起動設定情報３５０を、一過性メモリ２４３の稼働設定情報４５０へ複写する（ステップＳ２１５）。これにより、更新プログラム４３０の起動時における起動設定情報３５０と稼働設定情報４５０との同一性が担保される。以上で、無停止更新処理が終了する。
【００８５】
上記のような無停止更新処理の途中で、ＯＬＴ１１に異常が発生した場合、制御プログラムを正常な状態に復帰させる必要がある。このため、本実施形態にかかるＯＬＴ１１は、異常監視処理を実行する。以下、異常監視処理について説明する。
【００８６】
図１０は、異常監視処理の手順を示すフローチャートである。異常監視処理は、無停止更新処理と並行して実行される。
【００８７】
ＯＬＴ１１の制御プログラムには、異常検知機能が設けられる。この異常検知機能は、制御プログラムにおける処理の異常、通信エラー等、ＯＬＴ１１において生じる異常を検知する機能である。異常監視処理において、まずＣＰＵ２４１は、ＯＬＴ１１の異常を検出したか否かを判定する（ステップＳ３０１）。
【００８８】
異常が検出されない場合（ステップＳ３０１においてＮＯ）、ＣＰＵ２４１は、再度ステップＳ３０１の処理を実行する。
【００８９】
他方、異常が検出された場合（ステップＳ３０１においてＹＥＳ）、ＣＰＵ２４１は、プログラム更新処理へ中断を指示する（ステップＳ３０２）。これにより、プログラム更新処理が中断される。
【００９０】
次にＣＰＵ２４１は、稼働中の全てのプログラムモジュールを停止させる（ステップＳ３０３）。さらにＣＰＵ２４１は、更新前プログラム４００の第１モジュール４００＿１、第２モジュール４００＿２、第３モジュール４００＿３、…、第Ｎモジュール４００＿Ｎの全てを起動する（ステップＳ３０４）。
【００９１】
ＣＰＵ２４１は、起動設定情報３５０を非一過性メモリ２４２から読み出し、更新前プログラム４００の第１モジュール４００＿１、第２モジュール４００＿２、第３モジュール４００＿３、…、第Ｎモジュール４００＿Ｎの全てを起動設定情報３５０によって設定する（ステップＳ３０５）。以上で、異常監視処理が終了する。
【００９２】
このような異常監視処理により、無停止更新処理の実行中に、ＯＬＴ１１に異常が発生した場合に、更新前プログラム４００が復帰される。
【００９３】
以上のような構成により、本実施形態に係るＯＬＴ１１は、ＣＰＵ２４１が、更新前プログラム４００を更新プログラム４３０に更新する場合に、稼働設定情報の一部又は全部を起動設定情報に複写する処理を実行する。また、ＣＰＵ２４１は、稼働設定情報に基づいて更新された第１の種類のプログラムモジュールを設定し、稼働設定情報の一部又は全部が複写された起動設定情報に基づいて、更新された第２の種類のプログラムモジュールを設定する処理と、を実行する。これにより、制御プログラムが更新される場合に、ＯＬＴ１１を停止させることなく、第１の種類のプログラムモジュール及び第２の種類のプログラムモジュールのそれぞれを設定することができる。また、起動設定情報に稼働設定情報の一部又は全部が複写されるため、第１の種類及び第２の種類のそれぞれのプログラムモジュールに用いられる設定情報において不整合の発生を抑制することができる。
【００９４】
また、ＣＰＵ２４１は、更新前プログラム４００のモジュールが第１の種類のプログラムモジュールである場合、当該モジュールを停止する前に、対応する更新プログラム４３０のモジュールを起動し、起動されたモジュールを稼働設定情報に基づく構成引継情報によって設定し、更新前モジュールを停止する処理を実行する。また、ＣＰＵ２４１は、更新前プログラム４００のモジュールが第２の種類のプログラムモジュールである場合、当該モジュールを停止した後に、対応する更新プログラム４３０のモジュールを起動し、起動されたモジュールを起動設定情報に基づいて設定する処理を実行する。これにより、第１の種類のプログラムモジュールは停止することなく更新される。このため、ＯＬＴ１１の機能を停止させずに制御プログラムの更新を行うことができる。
【００９５】
また、第１の種類のプログラムモジュールは、一過性メモリ２４３に記憶された設定情報により設定されることが可能なプログラムモジュールであり、第２の種類のプログラムモジュールは、非一過性メモリ２４２に記憶された設定情報により設定されるプログラムモジュールであってもよい。これにより、第１の種類のモジュールを、一過性メモリ２４３に記憶された稼働設定情報４５０に基づく構成引継情報により設定することができ、第２の種類のモジュールを、非一過性メモリ２４２に記憶された起動設定情報３５０に基づき設定することができる。
【００９６】
また、第１の種類のプログラムモジュールは、通信の制御を実行するプログラムモジュールであり、第２の種類のプログラムモジュールは、通信の制御以外の処理を実行するプログラムモジュールであってもよい。これにより、通信の制御を停止させることなく、制御プログラムを更新することができる。
【００９７】
また、稼働設定情報４５０のうち起動設定情報３５０とは異なる差分情報を、起動設定情報３５０に複写してもよい。これにより、稼働設定情報４５０の全てを一括して起動設定情報３５０に複写しなくても、稼働設定情報４５０と起動設定情報３５０とを整合させることができる。
【００９８】
また、所定の更新条件が成立した場合に、稼働設定情報４５０の一部又は全部を起動設定情報３５０に複写する処理を実行してもよい。これにより、更新条件の成立により、制御プログラムの更新を開始することができる。
【００９９】
また、更新条件は、稼働設定情報４５０と起動設定情報３５０との差分が所定量以上となること、稼働設定情報４５０が変更されること、制御プログラム３００の更新指示が与えられること、予め決められた更新時刻に到達すること、及び、稼働設定情報４５０に含まれる複数の分類に属する情報のうち特定の分類に属する情報が変更されること、の少なくとも１つであってもよい。これにより、様々な条件を更新条件に設定することができる。
【０１００】
また、制御プログラムが更新される間に異常を検出した場合、稼働中の全モジュールを停止した後、更新前プログラム４００のモジュールのそれぞれを起動し、起動されたモジュールを起動設定情報３５０に基づいて設定する異常監視処理を実行してもよい。これにより、ＯＬＴ１１に異常が発生した場合、更新前の制御プログラム３００に戻すことで、異常から復帰することができる。
【０１０１】
異常は、通信エラーを含んでもよい。制御プログラムの更新が適切に行われなかった場合、正常な通信が行われず、通信エラーが発生する可能性がある。通信エラーが生じた場合に、更新前の制御プログラムに戻すことで、通信エラーを解消できる可能性がある。
【０１０２】
［６．補記］
今回開示された実施の形態はすべての点で例示であって、制限的ではない。本発明の権利範囲は、上述の実施形態ではなく特許請求の範囲によって示され、特許請求の範囲と均等の意味及びその範囲内でのすべての変更が含まれる。
【符号の説明】
【０１０３】
１０  通信システム
１１  局側装置（通信装置）
１２  宅側装置
１３  ＰＯＮ回線
１４  光スプリッタ
１５  幹線光ファイバ
１６  支線光ファイバ
２１  光トランシーバ
２２  ＰＯＮ処理部
２３  Ｌ２スイッチ
２４  制御部
２５  外部装置
２６  通信インタフェース
５０  上位ネットワーク
２４１  ＣＰＵ
２４２  非一過性メモリ
２４３  一過性メモリ
３００，３３０，４００，４３０  制御プログラム
３００＿１，３００＿２，３００＿３，…  プログラムモジュール
３３０＿１，３３０＿２，３３０＿３，…  プログラムモジュール
３５０  起動設定情報
３７０  更新設定プログラム
４００＿１，４００＿２，４００＿３，…  プログラムモジュール
４３０＿１，４３０＿２，４３０＿３，…  プログラムモジュール
４５０  稼働設定情報
【図１】
2020052453.tif 000003
【図２】
2020052453.tif 000004
【図３】
2020052453.tif 000005
【図４】
2020052453.tif 000006
【図５】
2020052453.tif 000007
【図６】
2020052453.tif 000008
【図７】
2020052453.tif 000009
【図８】
2020052453.tif 000010
【図９】
2020052453.tif 000011
【図１０】
2020052453.tif 000012