(57)【要約】【課題】運用中の装置に対して、装置制御プログラムの装置制御処理を極力停止する事無く、マルチタスクで動作する装置制御プログラムを更新する。【解決手段】２つの装置制御プログラムを保存する事を可能とする装置制御プログラム保存装置部２と、２つの装置制御プログラムを同時に実行する事を可能とする２つの装置制御プログラム実行用メモリ、及び、装置制御中に装置に固有なデータを記憶しデータの受け渡しを可能とする装置制御プログラム共有データ実行用ワークメモリ、及び、装置固有ハードウェア５で発生したイベントがキューイングされる通常イベントキュー、及び、ファイル更新時にタスクの実行イベントを保留するための保留イベントキューを備える装置制御プログラム実行用メモリ装置部３と、ファイル更新の制御及びイベントのキューイングの制御を行うファイル更新管理機能４により実現する。【選択図】図１
2004199247.tif 000002
【特許請求の範囲】
【請求項１】
装置のハードウェア又はソフトウェアを制御する新旧２つの装置制御プログラムを保持し、運用中の装置における装置制御プログラムの更新時に各装置制御プログラムを実行するための装置制御プログラム実行用メモリと、
装置からのイベントがキューイングされる通常イベントキューと、
所定の種別のイベントを保留するための保留イベントキューと、
装置からの割込によるイベントのキューイングを制御するイベント制御機能と、
実行中の旧装置制御プログラムを、新装置制御プログラムに更新する装置制御プログラム更新機能と
を用いたプログラム更新方法であって、
前記装置制御プログラム更新機能は、実行中の旧装置制御プログラムから新装置制御プログラムへ更新する際、新装置制御プログラムに実行開始指示及び／又は初期設定開始指示を出力するステップと、
前記装置制御プログラム更新機能は、新装置制御プログラムの初期設定の完了を監視し、及び、旧装置制御プログラムに停止処理を実行させるステップと、
前記イベント制御管理機能は、前記装置制御プログラム更新機能によるプログラム更新の状態を判別するステップと、
前記イベント制御管理機能は、前記更新の状態が旧装置制御プログラムの停止処理実行中を示す場合、実行イベントは前記保留イベントキューにキューイングし、実行イベント以外のイベントは前記通常イベントキューにキューイングするステップと、
前記装置制御プログラム更新機能は、旧装置制御プログラムの停止を監視し、及び、新装置制御プログラムに装置制御開始を指示して制御中とするステップと、
前記装置制御プログラム更新機能は、前記保留イベントキューにキューイングされたイベントをデキューし、前記通常イベントキューにキューイングするステップと、
を含むプログラム更新方法。
【請求項２】
前記装置制御プログラム更新機能は、旧装置制御プログラムに停止指示を出力する、及び／又は、旧装置制御プログラムの装置停止処理実行中を示す状態又は通常状態をファイル更新状態フラグに書き込み、
前記イベント制御管理機能は、前記ファイル更新状態フラグを参照してプログラム更新の状態を判別することを特徴とする請求項１に記載のプログラム更新方法。
【請求項３】
旧装置制御プログラムは、新装置制御プログラムに引き継ぐ必要のあるデータを保持する装置制御プログラム共有データ実行用メモリ中のデータを使用して装置の制御を行い、
新装置制御プログラムは、旧装置制御プログラムの停止後、前記装置制御プログラム共有データ実行用メモリ中のデータを使用して装置の制御を行うことにより、データの引継ぎを可能とした請求項１又は２に記載のプログラム更新方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラム更新方法に係り、特に、制御プログラムを内蔵する装置において装置が運用状態にある時、装置制御処理を極力停止する事無く装置制御プログラムの更新を行うプログラム更新方法に関する。
【０００２】
【従来の技術】
従来、運用中の装置制御プログラムの更新を行う方法として、プログラマブルコントローラの分野では、シングルタスクで動く装置制御プログラムを、旧装置制御プログラムの停止状態を見計らって、新装置制御プログラムに更新する方法が開示されている（例えば、特許文献１参照）。また、シングルタスクで動く装置制御プログラムに運用停止のフラグを持ち、このフラグが立っている場合に、一時的に装置制御プログラムの動作を強制的に停止させ、新装置制御プログラムに更新する方法が提案されている（例えば、特許文献２参照）。さらに、装置制御プログラムの開始アドレスと終了アドレスを管理し、新装置制御プログラム実行時に、新プログラムの開始アドレスから新プログラムを動かす方法が開示されている（例えば、特許文献３参照）。
【０００３】
また、交換機の分野では、追加書き込みした新装置制御プログラムに、処理毎に設けたタグにより処理を振り分ける方法が開示されている（例えば、特許文献４参照）。さらに、機能ブロック毎にＩＰＬ（Ｉｎｉｔｉａｌ  ＰｒｏｇｒａｍＬｏａｄ）部を持ち、装置再開時においてスイッチにより指定されたＩＰＬ部を実行する方法（例えば、特許文献５参照）や、装置制御プログラム更新時に、データのアドレス変換を行う方法（例えば、特許文献６参照）が提案されている。
【特許文献１】
特開２０００−２５０６１０号公報
【特許文献２】
特開２００１−１２５６０９号公報
【特許文献３】
特開平８−３１４７１２号公報
【特許文献４】
特開２００１−８６２４１号公報
【特許文献５】
特開平７−３１９７０７号公報
【特許文献６】
特開平７−４６６３６号公報
【０００４】
【発明が解決しようとする課題】
特許文献１、特許文献２、特許文献３では、対象となる装置がプログラマブルコントローラであり、対象となる装置制御プログラムがシングルタスクで動作する為、実行中の装置制御プログラムを一時的に停止させる事により、装置制御プログラムの状態を含み、装置の状態を固定する事が出来る。装置の状態を固定した状態であれば、装置制御プログラムの差し替えを行う事が出来るが、マルチタスクで動作する装置制御プログラムでは複数の処理が同時に実行され、あるタスクが停止している時には他のタスクが実行中である事が特徴である。通常、マルチタスクで動作する装置制御プログラムでは、実行中の装置制御プログラムが存在する為、装置制御プログラムの状態を含み、装置の状態を固定する事が出来ない。また、装置制御プログラム及び装置の状態を固定せずに装置制御プログラムの更新を行うと、装置制御プログラムの使用しているワークメモリの状態と、装置固有ハードウェアの状態に不一致、又は、ワークメモリ内の状態に矛盾が生じる場合がある。そのため、新装置制御プログラムに更新しても、新装置制御プログラムは動作する事が出来ない場合がある。装置制御プログラムの状態が固定されていない実行中の装置制御プログラムを更新する事は出来ず、マルチタスクで動作する装置制御プログラムを一括で更新する事が困難である。
【０００５】
特許文献４では、古い装置制御プログラムを残し、その残した装置制御プログラムの持つ機能を使用して、装置制御プログラムの一部を差し替える方式であり、全ての装置制御プログラムの更新を行うものではない。また、特許文献５では装置再開からＩＰＬを実行する必要があり、ＩＰＬ中は装置の制御を行う事が出来ず、運用中の装置において適用出来るものではない。
【０００６】
特許文献６では、アドレス変換を、旧装置制御プログラムを停止後データ内容を固定した状態で行う必要がある。装置制御プログラムは、アドレス変換中には新旧両装置制御プログラム共に動作停止状態となり、装置の制御を行う事が出来ず、運用中の装置において適用出来るものではない。
【０００７】
本発明は、以上の点に鑑み、運用中の装置において、マルチタスクで動作する装置制御プログラムの装置制御処理を極力停止する事無く、装置制御プログラムの更新を可能とするプログラム更新方法を提供することを目的とする。
【０００８】
【課題を解決するための手段】
上記課題は、２つの装置制御プログラムを保存する事を可能とする装置制御プログラム保存装置部と、
２つの装置制御プログラムを同時に実行する事を可能とする装置制御プログラム実行用メモリｉと装置制御プログラム実行用メモリｊ、及び、２つの装置制御プログラム間でのデータ引継の処理を行う事なく、装置に固有なデータの受け渡しを可能とする装置制御プログラム共有データ実行用ワークメモリを有する装置制御プログラム実行用メモリと、ファイル更新管理機能を実行するファイル更新管理機能実行用メモリを有する装置制御プログラム実行用メモリ装置部と、ファイル更新の制御を行うファイル更新管理機能により実現する。なお、ファイル更新管理機能は、専用のハードウェアを用いて実現しても良い。
【０００９】
より具体的には、例えば、装置（ハードウェア又はソフトウェア）を制御する為の装置制御プログラムについて、旧装置制御プログラムと新装置制御プログラムの２つの装置制御プログラムを、それぞれを保存した前後関係を判別する為の識別子と共に保存する装置制御プログラム保存エリアｉ及び装置制御プログラム保存エリアｊを有する装置制御プログラム保存装置部と、
装置制御プログラム及び装置制御プログラム更新機能を保持し、実行するための装置制御プログラム実行用メモリ装置部と、
装置固有ハードウェアからの割込によるイベントのキューイングを制御するイベント制御機能、及び、
イベント制御機能と連携し、運用中の装置において、実行中の旧装置制御プログラムを、新装置制御プログラムに更新する装置制御プログラム更新機能を有するファイル更新管理機能部を使用する事により、マルチタスクで動作する装置制御プログラムの更新を可能とするプログラム更新方法である。
【００１０】
また、前記装置制御プログラム実行用メモリ装置部は、
運用中の装置において、装置制御プログラムの更新時に、同時に更新の前後２つの装置制御プログラムを実行する為に使用する装置制御プログラム実行用メモリｉ並びに装置制御プログラム実行用メモリｊと、
装置制御プログラムの更新前後において、引き継ぐ必要のあるデータを保持する装置制御プログラム共有データ実行用ワークメモリとを有する装置制御プログラム実行用メモリ、及び、
ファイル更新の制御を行うファイル更新管理機能を保持するファイル更新管理機能保持メモリと、
ファイル更新管理機能を実行する為のファイル更新管理機能実行用ワークと、装置固有ハードウェアからのイベントをキューイングする通常イベントキューと、
ファイル更新時に、タスクの実行イベントを保留する為の保留イベントキューと、
新旧それぞれの装置制御プログラムの状態を保持する装置制御プログラムｉ状態フラグ並びに装置制御プログラムｊ状態フラグと、
ファイル更新の状態を保持するファイル更新状態フラグとを有するファイル更新管理機能実行用ワークメモリを備えることができる。
【００１１】
本発明の解決手段によると、
装置のハードウェア又はソフトウェアを制御する新旧２つの装置制御プログラムを保持し、運用中の装置における装置制御プログラムの更新時に各装置制御プログラムを実行するための装置制御プログラム実行用メモリと、
装置からのイベントがキューイングされる通常イベントキューと、
所定の種別のイベントを保留するための保留イベントキューと、
装置からの割込によるイベントのキューイングを制御するイベント制御機能と、
実行中の旧装置制御プログラムを、新装置制御プログラムに更新する装置制御プログラム更新機能と
を用いたプログラム更新方法であって、
前記装置制御プログラム更新機能は、実行中の旧装置制御プログラムから新装置制御プログラムへ更新する際、新装置制御プログラムに実行開始指示及び／又は初期設定開始指示を出力するステップと、
前記装置制御プログラム更新機能は、新装置制御プログラムの初期設定の完了を監視し、及び、旧装置制御プログラムに停止処理を実行させるステップと、
前記イベント制御管理機能は、前記装置制御プログラム更新機能によるプログラム更新の状態を判別するステップと、
前記イベント制御管理機能は、前記更新の状態が旧装置制御プログラムの停止処理実行中を示す場合、実行イベントは前記保留イベントキューにキューイングし、実行イベント以外のイベントは前記通常イベントキューにキューイングするステップと、
前記装置制御プログラム更新機能は、旧装置制御プログラムの停止を監視し、及び、新装置制御プログラムに装置制御開始を指示して制御中とするステップと、
前記装置制御プログラム更新機能は、前記保留イベントキューにキューイングされたイベントをデキューし、前記通常イベントキューにキューイングするステップと、
を含むプログラム更新方法が提供される。
【００１２】
【発明の実施の形態】
以下に、本発明の実施の形態について説明する。
図１に、本実施の形態における装置の構成要素の概略図を示す。
本実施の形態における装置は、装置の制御を行うプロセッサ１と、装置制御プログラムを保存する装置制御プログラム保存装置部２と、装置制御プログラムを実行するための装置制御プログラム実行用メモリ装置部３と、装置制御プログラムの運用状態での装置制御プログラムの更新を制御するファイル更新管理機能部４と、制御対象となる装置固有ハードウェア５を備える。また、これらは、装置内制御バス６を介して接続されている。装置固有ハードウェア５は、装置制御プログラムによって制御されるハードウェアであり、例えば、ルータ、交換機等の通信機器、コンピュータ等であってもよい。さらに、装置固有ハードウェア５は、ハードウェアとソフトウェアの組み合わせ、又は、ソフトウェアであってもよい。装置の制御を極力停止することなくプログラムの更新を行うことにより、例えば、通信状態を維持したままプログラムのバージョンアップ等を行うことが可能となる。
【００１３】
図２は、装置制御プログラム保存装置部２の構成図である。装置制御プログラム保存装置部２は、更新前と更新後の２つの装置制御プログラムを保存する為、装置制御プログラム保存エリアｉ２１と、装置制御プログラム保存エリアｊ２２の２面を備える。装置制御プログラム保存エリアｉ２１と装置制御プログラム保存エリアｊ２２は、それぞれ、保存前後関係識別子ｉ２１１及びｊ２２１と装置制御プログラムｉ２１２及びｊ２２２を保存するエリアを有する。
【００１４】
保存前後関係識別子ｉ２１１及びｊ２２１は、装置制御プログラムｉ２１２又はｊ２２２の内容を書き換える場合に、装置制御プログラム保存エリアｉ２１と装置制御プログラム保存エリアｊ２２の書き込み順を判定する為に使用するものである。例えば、それぞれの装置制御プログラムの書き込み時刻や、装置制御プログラムのバージョン番号を書き込んでおけば良い。なお、これ以外にも書き込み順を判定可能な適宜の情報を書き込むこともできる。
【００１５】
図３は、装置制御プログラムの構成例を示す図である。装置制御プログラムは、装置制御プログラム保存装置部２に保存される。装置制御プログラムは、例えば、装置制御プログラム親タスク３０と、装置制御プログラム親タスク３０により実行及び管理される装置制御プログラム子タスク３１〜３ｎを含む。なお、本装置制御プログラムの構成は一例であり、子タスクの数、タスクの構成等について、その具体的な作り込み方法を制限するものではない。また、更新前に実行中の装置制御プログラム（旧装置制御プログラム）と更新後に実行される装置制御プログラム（新装置制御プログラム）は、異なる数の子タスクを有してもよいし、異なる構成であってもよい。親タスク及び子タスクがない単なるタスク、孫タスク等のさらなる階層があってもよい。
【００１６】
図４は、装置制御プログラム実行用メモリ装置部３の構成例を示す図である。制御プログラム実行用メモリ装置部３は、ファイル更新管理機能の保持と実行を行う為のファイル更新管理機能実行用メモリ４１と、装置制御プログラムの保持と実行を行う為の装置制御プログラム実行用メモリ４２を備える。
【００１７】
ファイル更新管理機能実行用メモリ４１は、ファイル更新の制御を行うファイル更新管理機能を保持するファイル更新管理機能保持メモリ４１１と、ファイル更新管理機能の処理を実行する為のファイル更新管理機能実行用ワークメモリ４１２を有する。また、ファイル更新管理機能実行用ワークメモリ４１２は、ファイル更新管理機能の処理を実行する際に使用されるファイル更新管理機能実行用ワーク４１２１と、装置固有ハードウェア５からのイベントがキューイングされる通常イベントキュー４１２２と、ファイル更新時に旧装置制御プログラムにイベントを実行させず、新装置制御プログラムの制御開始までイベントを保留する為の保留イベントキュー４１２３と、新旧それぞれの装置制御プログラムの状態を保持する装置制御プログラムｉ状態フラグ４１２４及び装置制御プログラムｊ状態フラグ４１２５と、ファイル更新の状態を保持するファイル更新状態フラグ４１２６とを有する。装置制御プログラムｉ状態フラグ４１２４及び装置制御プログラムｊ状態フラグ４１２５は、例えば、装置制御プログラムｉ及びｊの状態が、それぞれプログラム停止中、実行中、初期設定完了等であること保持する。また、ファイル更新状態フラグ４１２６は、例えば、旧装置制御プログラムに停止指示が出力され、旧装置制御プログラムの停止待ちの状態である装置停止処理実行中の状態、又は、ファイル更新を行っていない通常状態等を保持する。
【００１８】
装置制御プログラム実行用メモリ４２は、２面構成となり、装置制御プログラムｉを実行する為の装置制御プログラム実行用メモリｉ４２１と、装置制御プログラムｊを実行する為の装置制御プログラム実行用メモリｊ４２２と、装置固有ハードウェア５の状態に依存する情報を保存する装置制御プログラム共有データ実行用ワークメモリ４２３を有する。また、装置制御プログラム共有データ実行用ワークメモリ４２３は、装置固有ハードウェア５の状態に依存する情報以外に引き継ぐ必要のある適宜のデータを保存するようにしてもよい。旧装置制御プログラム及び新装置制御プログラムは、引き継ぐ必要のあるデータ及び／又は装置固有ハードウェア５の状態について、装置制御プログラム共有データ実行用メモリを使用して制御を行うことでデータの引継ぎをすることができる。
【００１９】
装置制御プログラム実行用メモリｉ４２１は、装置制御プログラムｉを保持する装置制御プログラムｉ保持メモリ４２１１と、装置制御プログラムｉを実行する為のワークデータを保持する装置制御プログラムｉ実行用ワークメモリ４２１２を有する。また、装置制御プログラムｉ実行用ワークメモリ４２１２は、装置制御プログラムｉを実行する時に、タスク間のデータの受け渡しに使用する装置制御プログラムｉテンポラリ４２１２１と、装置制御プログラムｉの各タスク内で使用する装置制御プログラムｉスタック４２１２２を有する。
【００２０】
さらに、装置制御プログラムｉスタック４２１２２は、ファイル更新管理機能部４からの実行開始指示で実行される装置制御プログラムｉの装置制御プログラム親タスク３０の使用する装置制御プログラムｉ親タスクスタック４２１２２０と、装置制御プログラムｉの装置制御プログラム親タスク３０から実行される装置制御プログラム子タスク３１〜３ｎの使用する装置制御プログラムｉ子タスクスタック４２１２２１〜４２１２２ｎを有する。
【００２１】
装置制御プログラム実行用メモリｊ４２２は、上述の装置制御プログラム実行用メモリｉ４２１と同様の構成とすることができる。装置制御プログラム実行用メモリｊ４２２は、装置制御プログラムｊを保持する装置制御プログラムｊ保持メモリ４２２１と、装置制御プログラムｊを実行する為のワークデータを保持する装置制御プログラムｊ実行用ワークメモリ４２２２を有する。また装置制御プログラムｊ実行用ワークメモリ４２２２は、装置制御プログラムｊを実行する時に、タスク間のデータの受け渡しに使用する装置制御プログラムｊテンポラリ４２２２１と、装置制御プログラムｊの各タスク内で使用する装置制御プログラムｊスタック４２２２２を有する。
【００２２】
さらに、装置制御プログラムｊスタック４２２２２は、ファイル更新管理機能部４からの実行開始指示で実行される装置制御プログラムｊの装置制御プログラム親タスク３０の使用する装置制御プログラムｊ親タスクスタック４２２２２０、装置制御プログラムｊの装置制御プログラム親タスク３０から実行される装置制御プログラム子タスク３１〜３ｎの使用する装置制御プログラムｊ子タスクスタック４２２２２１〜４２２２２ｎを有する。
【００２３】
ただし、図４に示す例は、一実施例であり、メモリ内の配置の自由度を妨げるものではなく、また、タスク構成についても一実施例でしかない。これ以外にも、メモリ構成及びタスク構成は、適宜の構成をとることができる。
【００２４】
図５は、ファイル更新管理機能部４の構成図である。ファイル更新管理機能部４は、装置制御プログラム更新機能５１とイベント制御機能５２を備える。装置制御プログラム更新機能５１は、装置制御プログラムの実行中に、装置制御プログラム保存装置部２に保存した新装置制御プログラムのファイルを、装置制御プログラム実行用メモリ装置部３の装置制御プログラムｉ保持メモリ４２１１、又は、装置制御プログラムｊ保持メモリ４２２１に書き込み、新装置制御プログラムの実行開始及び初期設定開始の各指示、旧装置制御プログラムの停止指示、新装置制御プログラムへの装置制御開始指示等を行う。なお、装置制御プログラム更新機能５１は、装置制御プログラム保存装置部２に保存されている保有前後関係識別子ｉ２１１及びｊ２２２を参照し、新装置制御プログラムを判別することができる。
【００２５】
イベント制御機能５２は、装置固有ハードウェア５からイベントを、通常イベントキュー４１２２にキューイングし、装置制御プログラムのファイル更新時には、旧装置制御プログラムの子タスクを実行するイベントを、保留イベントキュー４１２３にキューイングする処理を行う。以下に一例として、実行中の装置制御プログラムｉを新しい装置制御プログラムｊに更新する処理について説明する。以下の各処理は、各機能及びプログラムに従いプロセッサ１が実行する。
【００２６】
図６は、装置制御プログラムｉが実行中であり、ファイルの更新処理が行われていない通常動作状態での装置制御シーケンス図である。通常動作状態では、装置制御プログラムｉ保持メモリ４２１１上に配置された装置制御プログラムｉの装置制御処理が実行中である（Ｓ６５１）。なお、装置制御プログラムｉは、ファイル更新管理機能実行用ワークメモリ４１２内に設けられた通常イベントキュー４１２２に存在するイベントをルックインし（Ｓ６５３）、各イベントに対する処理を実行している。また、装置制御プログラムｉは、装置制御プログラムｉの状態に依存するデータについては、装置制御プログラムｉ実行用ワークメモリ４２１２との間でデータの書き込み及び読み出しを行い（Ｓ６５５）、装置固有ハードウェア５の状態に依存するデータについては、装置制御プログラム共有データ実行用ワークメモリ４２３との間でデータの書き込み及び／又は読み出しを行っている（Ｓ６５７）。なお、装置制御プログラム共有データ実行用ワークメモリ４２３には、装置固有ハードウェア５の状態に依存するデータ以外にも新装置制御プログラムに引き継ぐ必要のある適宜のデータを記憶しても良い。
【００２７】
まず、装置固有ハードウェア５によりイベントＡが発生すると、ファイル更新管理機能部４のイベント制御機能５２は、装置固有ハードウェア５からイベントＡを入力する（Ｓ６０１）。次に、イベント制御機能５２は、入力したイベントＡを、通常イベントキュー４１２２にキューイングする（Ｓ６０９）。イベント制御機能５２は、他のイベントＢ、Ｃ、Ｄについてもイベント発生時に、装置固有ハードウェア５からイベントを入力し（Ｓ６０２〜Ｓ６０４）、入力したイベントを、通常イベントキュー４１２２にキューイングする（Ｓ６１０〜Ｓ６１２）。通常イベントキュー４１２２にキューイングされたイベントは、装置制御プログラムｉによって実行される。
【００２８】
図７〜図９は、ファイル更新のシーケンス図（１）〜（３）である。図７に、ファイル更新のシーケンス図（１）を示す。図７に示すシーケンス図は、上位装置又は保守者からのファイル更新指示による新装置制御プログラム（例えば、装置制御プログラムｊ）のＢＯＯＴ（ｂｏｏｔｓｔｒａｐ、起動）から、制御開始待ちになるまでのシーケンス図である。
【００２９】
図６に示す装置制御プログラムｉが実行中である通常動作状態において、上位装置又は保守者により、ファイル更新管理機能部４に対して装置制御プログラムの更新が指示される（Ｓ７００）。ファイル更新管理機能４の装置制御プログラム更新機能５１は、装置制御プログラム更新指示を受信することにより処理を開始する。また、装置制御プログラム更新機能５１は、上位装置又は外部機器から新装置制御プログラムが装置制御プログラム保存装置部２に書き込まれることで処理を開始してもよい。なお、処理の開始は、これ以外にも適宜のタイミングで開始することができる。
【００３０】
まず、装置制御プログラム更新機能５１は、予め装置制御プログラム保存エリアｊ２２に保存されている装置制御プログラムｊを読み出し、装置制御プログラムｊ保持メモリ４２２１に書き込む（Ｓ７０１）。次に、装置制御プログラム更新機能５１は、装置制御プログラムｊ保持メモリ４２２１上の装置制御プログラムｊに、実行開始を指示する（Ｓ７０３）。装置制御プログラムｊは、実行開始指示を受信し、ＩＤＯＬ（アイドリング）立ち上げを行う（Ｓ７０５）。さらに、装置制御プログラム更新機能５１は、装置制御プログラムｊに初期設定開始を指示する（Ｓ７０７）。なお、初期設定開始の指示は、実行開始の指示に含めても良い。
【００３１】
ＩＤＯＬ立ち上げによりＩＤＯＬ状態となった装置制御プログラムｊは、初期設定開始指示を受信し、初期設定処理を行う（Ｓ７０９）。なお、装置制御プログラムｊは、装置固有ハードウェア５の制御を開始していないため、装置制御プログラム共有データ実行用ワークメモリ４２３は使用せず、必要に応じて装置制御プログラムｊ実行用ワークメモリ４２２２との間でデータの書き込み及び読み出しを行う（Ｓ７０６）。なお、装置固有ハードウェア５の制御（Ｓ６５３）を継続する装置制御プログラムｉは、装置制御プログラムｉ実行用ワークメモリ４２１２と装置制御プログラム共有データ実行用ワークメモリ４２３を使用している（Ｓ６５５、Ｓ６５７）。
【００３２】
装置制御プログラムｊは、初期設定が終了すると、初期設定完了を示すフラグを装置制御プログラムｊ状態フラグ４１２５に設定する（Ｓ７１１）。装置制御プログラムｊは、フラグの設定後、装置制御プログラム更新機能５１からの制御開始指示待ち状態となる（Ｓ７１３）。
【００３３】
一方、初期設定開始を指示した装置制御プログラム更新機能５１は、装置制御プログラムｊ状態フラグを監視する（Ｓ７１５）。装置制御プログラム更新機能５１は、装置制御プログラムｊにより装置制御プログラムｊ状態フラグ４１２５に初期設定完了を示すフラグが設定されることで、初期設定が完了したことを検知できる。なお、初期設定が完了したことを検知する手段は、フラグを用いる以外にも適宜の手段を用いることができる。
【００３４】
図８に、ファイル更新のシーケンス図（２）を示す。図８は、旧装置制御プログラム（例えば、装置制御プログラムｉ）の停止までのシーケンス図である。図７のステップＳ７１５において、装置制御プログラムｊの初期設定の完了を確認後、装置制御プログラム更新機能５１は、実行中の旧装置制御プログラム（例えば、装置制御プログラムｉ）に対して装置制御停止指示を出力する（Ｓ７１７）。装置制御プログラムｉは、装置制御停止指示を入力し、装置制御プログラムｉ停止処理の実行状態となる（Ｓ７１９）。なお、装置制御プログラムｉ停止処理とは、子タスクの状態遷移を行うか、停止するイベントのみを実行する事により、全ての子タスクが停止状態に至る事を言い、装置制御プログラムｉに子タスクを停止させる特別な機能を持つものではない。装置制御プログラムｉは、通常状態の時と同様に、通常イベントキュー４１２２をルックインし、各イベントに対応する処理を実行する（Ｓ７２１）。
【００３５】
また、装置制御プログラム更新機能５１は、ファイル更新状態フラグ４１２６に装置停止処理実行中であることを設定する（Ｓ７２３）。イベント制御機能５２は、例えば、ファイル更新状態フラグ４１２６に装置停止処理実行中であることが設定されると、イベント種別に応じてイベントのキューイング先を制御する。なお、イベント制御機能５２は、ファイル更新状態フラグ４１２６を用いる以外にも適宜の手段又は方法により、プログラム更新の状態が装置低所処理の実行中であることを判別してもよい。
【００３６】
まず、装置固有ハードウェア５によるイベントが発生すると、イベント制御機能５２は、装置固有ハードウェア５からイベントを入力する（Ｓ８０１〜Ｓ８０４）。次に、イベント制御機能５２は、入力したイベントの種別を判別し、タスク実行イベントの場合は、イベントを保留イベントキュー４１２３にキューイングし（Ｓ８１１、Ｓ８１３）、一方、タスク停止イベント又は状態遷移イベントの場合は、イベントを通常イベントにキューイングする（Ｓ８１２、Ｓ８１４）。なお、これらの処理は、各イベント発生時に実行される。イベント制御機能５２により、タスク実行を行うイベントを保留イベントキュー４１２３にキューイングする事により、装置制御プログラムｉには、子タスクの状態遷移を行うか、停止をするイベントのみ渡され、装置制御プログラムｉの実行中の子タスクがなくなる。
【００３７】
装置制御プログラムｉは、全ての子タスクが停止すると装置制御プログラムｉ状態フラグ４１２４に、装置制御停止のフラグを設定する（Ｓ７２５）。装置制御プログラム更新機能５１は、ステップＳ７１７の装置制御停止指示を出力後、装置制御プログラムｉ状態フラグ４１２４を監視する（Ｓ７２７）。装置制御プログラム更新機能５１は、装置制御プログラムｉ状態フラグ４１２４に装置制御停止のフラグが設定されることで、装置制御プログラムｉが停止したことを検知できる。なお、装置制御プログラムｉの状態のチェックは、フラグを用いる以外にも適宜の方法を用いることができる。
【００３８】
なお、この間、装置制御プログラムｉは、装置制御プログラムｉ実行用ワークメモリ４２１２と、装置制御プログラム共有データ実行用ワークメモリ４２３とを使用しながら（Ｓ６５５、Ｓ６５７）、装置制御プログラムｉ停止処理を行う。また、装置制御プログラムｊは、必要に応じて装置制御プログラムｊ実行用ワークメモリ４２２２を使用し（Ｓ７０６）、制御開始指示待ちの状態を継続して、装置制御プログラムｉが装置制御プログラム共有データ実行用ワークメモリ４２３を使用しない状態になるのを待つ。
【００３９】
図９に、ファイル更新のシーケンス図（３）を示す。図９は、新装置制御プログラム（例えば、装置制御プログラムｊ）の装置制御開始までのシーケンス図である。図８のステップＳ７２７において、装置制御プログラム更新機能５１は、装置制御プログラムｉ状態フラグ４１２４に、装置制御停止のフラグが設定されたことを確認後、装置制御プログラムｊに対して、装置制御開始指示を出力する（Ｓ７２９）。装置制御プログラムｊは、装置制御プログラム更新機能５１から装置制御開始指示を入力し、装置制御を実行する（Ｓ７３１）。装置制御プログラムｊは、通常イベントキュー４１２２のイベントをルックインし（Ｓ７３３）、各イベントに対応した処理を実行する。さらに、装置制御プログラム更新機能５１は、装置制御プログラムｊ状態フラグ４１２５にプログラムの実行中を示すフラグを適宜のタイミングで設定しても良い。
【００４０】
なお、装置制御プログラムｊは、装置制御プログラムｊ実行用ワークメモリ４２２２の使用（Ｓ７０６）に加え、装置制御プログラムｉが使用していた装置制御プログラム共有データ実行用ワークメモリ４２３を使用し（Ｓ７３０）、装置制御を行う。装置制御プログラム共有データ実行用ワークメモリ４２３を使用することにより、更新前の装置固有ハードウェア５の状態及び／又は引き継ぐ必要のあるデータ引き継ぐことができる。
【００４１】
さらに、装置制御プログラム更新機能５１は、ファイル更新状態フラグ４１２６に通常状態を示すフラグを設定する（Ｓ７３５）。次に、装置制御プログラム更新機能５１は、保留イベントキュー４１２３にキューイングされているタスク実行イベントを、通常イベントキュー４１２２にキューイングする（Ｓ７３７）。通常イベントキュー４１２２にキューイングし直す事により、保留されていたタスク実行イベントは、装置制御プログラムｊにより実行される。なお、これ以降イベント制御機能５２は、ファイル更新状態フラグ４１２６に通常状態が設定されているため、装置固有ハードウェア５で発生したイベントを全て通常イベントキュー４１２２にキューイングする。
【００４２】
図１０は、イベント制御機能５２のフローチャートである。イベント制御機能５２は、図６及び図８に示すように、装置固有ハードウェア５からの割込により実行される。まず、イベント制御機能５２は、装置固有ハードウェア５からイベントを入力する（Ｓ１０００）。次に、イベント制御機能５２は、実行中の装置制御プログラムの有無を判別する。イベント制御機能５２は、装置制御プログラムｉ状態フラグ４１２４をチェックする（Ｓ１００１）。イベント制御機能５２は、装置制御プログラムｉ状態フラグ４１２４が停止以外を示す場合、ステップＳ１００３の処理移り、一方、装置制御プログラムｉ状態フラグ４１２４が停止を示す場合（Ｓ１００１）、装置制御プログラムｊ状態フラグ４１２５をチェックする（Ｓ１００２）。イベント制御機能５２は、装置制御プログラムｊ状態フラグ４１２５が停止以外を示す場合、ステップＳ１００３の処理移る。一方、イベント制御機能５２は、装置制御プログラムｊ状態フラグ４１２５が停止を示す場合（Ｓ１００２）、装置固有ハードウェア５から入力したイベントを廃棄し、処理を終了する。
【００４３】
ステップＳ１００３では、イベント制御機能５２は、ファイル更新状態フラグ４１２６をチェックし、装置停止処理実行中か否かを判別する（Ｓ１００３）。イベント制御機能５２は、ファイル更新状態フラグ４１２６が通常状態を示す場合、ステップＳ１００５の処理へ移る。一方、イベント制御機能５２は、ファイル更新状態フラグ４１２６が装置停止処理実行中を示す場合（Ｓ１００３）、装置固有ハードウェア５から入力したイベントの種別を判断する（Ｓ１００４）。イベント制御機能５２は、イベントの種別がタスク実行イベントの場合（Ｓ１００４）、イベントを保留イベントキュー４１２３にキューイングし（Ｓ１００６）、処理を終了する。一方、イベント制御機能５２は、イベントの種別がタスク実行イベント以外（例えば、タスク停止イベント、状態遷移イベント）の場合（Ｓ１００４）、ステップＳ１００５の処理へ移る。
【００４４】
ステップＳ１００５では、イベント制御機能５２は、イベントを通常イベント４１２２にキューイングし（Ｓ１００５）、処理を終了する。
【００４５】
図１１及び図１２及び図１３は、装置制御プログラム更新機能５１のフローチャートである。なお、図１２及び図１３は、図１１のステップＳ１１０２及びステップＳ１１０３に示すサブプログラムのフローチャートである。図１１に、装置制御プログラム更新機能５１のメインプログラムのフローチャートを示す。装置制御プログラム更新機能５１は、上位装置又は保守者から装置制御プログラム更新指示を受信することで、以下の処理を開始する。なお、処理の開始は、適宜のタイミングで行っても良い。
【００４６】
まず、装置制御プログラム更新機能５１は、装置制御プログラム保存装置部２に保存された２つの装置制御プログラムの内、現在停止中の装置制御プログラムを、装置制御プログラムｉ状態フラグ４１２４により判定する（Ｓ１１０１）。装置制御プログラム更新機能５１は、装置制御プログラムｉ状態フラグ４１２４をリードし、リードしたフラグが停止中を示す場合（Ｓ１１０１）、装置制御プログラムｉに更新し（Ｓ１１０２）、一方リードしたフラグが停止中以外を示す場合（Ｓ１１０１）、装置制御プログラムｊに更新する（Ｓ１１０３）。装置制御プログラムｉ及び装置制御プログラムｊに更新する処理については図１２及び図１３に示し、詳細は後述する。なお、装置制御プログラム更新機能５１は、例えば、装置制御プログラムｊ状態フラグ４１２５により、現在停止中の装置制御プログラムを判定することができる。また、上位装置又は保守者からの指示に停止中のプログラムの情報が含まれ、この情報により停止中のプログラムを判定してもよい。
【００４７】
装置制御プログラムｉ又は装置制御プログラムｊに更新後、装置制御プログラム更新機能５１はファイル更新状態フラグ４１２６に通常状態を設定する（Ｓ１１０４）。また、装置制御プログラム更新機能５１は、保留イベントキュー４１２３にキューイングされているイベントをデキューする（Ｓ１１０５）。なお、装置制御プログラム更新機能５１は、デキューするイベントが保留イベントキュー４１２３に存在しなかった場合（Ｓ１１０６）、処理を終了する。一方、装置制御プログラム更新機能５１はデキューするイベントが存在した場合（Ｓ１１０６）、デキューしたイベントを通常イベントキュー４１２２にキューイングし（Ｓ１１０７）、ステップＳ１１０５に戻る。
【００４８】
図１２は、装置制御プログラムｊを新装置制御プログラムとして実行するフローチャートである。まず、装置制御プログラム更新機能５１は、装置制御プログラム保存エリアｊ２２の装置制御プログラムｊを読み出し、装置制御プログラム実行用メモリ４２の装置制御プログラムｊ保持メモリ４２２１に書き込む（Ｓ１３０１）。次に、装置制御プログラム更新機能５１は、装置制御プログラムｊに対し、実行開始を指示する（Ｓ１３０２）。さらに、装置制御プログラム更新機能５１は、装置制御プログラムｊに対し初期設定開始を指示する（Ｓ１３０３）。なお、初期設定開始の指示は、実行開始の指示に含めても良い。
【００４９】
装置制御プログラム更新機能５１は、装置制御プログラムｊ状態フラグ４１２５をリードする（Ｓ１３０４）。装置制御プログラム更新機能５１は、リードした装置制御プログラムｊ状態フラグ４１２５の示す状態を判定し、装置制御プログラムｊ状態フラグ４１２５が初期設定実行中を示す場合、ステップＳ１３０４の処理へ戻り、一方、装置制御プログラムｊ状態フラグ４１２５が初期設定終了を示す場合、ステップＳ１３０６の処理へ移る（Ｓ１３０５）。次に、装置制御プログラム更新機能５１は、旧装置制御プログラム（例えば、装置制御プログラムｉ）に対し装置制御停止を指示する（Ｓ１３０６）。
【００５０】
さらに、装置制御プログラム更新機能５１は、ファイル更新状態フラグ４１２６を装置停止処理実行中とする（Ｓ１３０７）。ファイル更新状態フラグ４１２６を装置停止処理実行中とする事により、イベント制御機能５２が、装置固有ハードウェア５からのイベントの内、タスク実行イベントを保留イベントキュー４１２３にキューイングし、新規タスクの実行を抑止し、旧装置制御プログラムを停止状態にする。次に、装置制御プログラム更新機能５１は、装置制御プログラムｉ状態フラグ４１２４をリードする（Ｓ１３０８）。装置制御プログラム更新機能５１は、リードした装置制御プログラムｉ状態フラグ４１２４の示す状態を判定し、停止処理実行中を示す場合はステップＳ１３０８の処理へ戻り、停止処理終了を示す場合はステップＳ１３１０の処理へ移る（Ｓ１３０９）。装置制御プログラム更新機能５１は、装置制御プログラムｊに対し装置制御開始を指示し（Ｓ１３１０）、図１１のステップＳ１１０４の処理へ移る。
【００５１】
装置制御プログラムｊによる装置制御は、装置制御プログラムｊの状態に依存するデータについては、装置制御プログラムｊ実行用ワークメモリ４２２２を使用し、装置の状態に依存するデータについては、装置制御プログラム共有データ実行用ワークメモリ４２３を使用して処理を行う。装置制御プログラムｊは、装置固有ハードウェア５の状態に依存するデータについては、装置制御プログラムｉの使用していた装置制御プログラム共有データ実行用ワークメモリ４２３にあるデータを使用する為、装置制御プログラムｉの制御していた時の装置固有ハードウェア５の状態に依存するデータを、装置制御プログラムｊに受け渡す処理を行う必要がない。その結果、装置制御プログラムｊが、継続して装置固有ハードウェア５の制御を行う事が出来る。
【００５２】
図１３は、装置制御プログラムｉを新装置制御プログラムとして実行するフローチャートである。例えば、旧装置制御プログラムが、装置制御プログラムｊ保持メモリ４２２１上で実行中の場合に実行される処理である。実行する装置制御プログラム、プログラムに対応するメモリ及びフラグが異なるのみで制御の概要は図１２と同様である
【００５３】
まず、装置制御プログラム更新機能５１は、装置制御プログラム保存エリアｉ２１の装置制御プログラムｉを読み出し、装置制御プログラム実行用メモリ４２の装置制御プログラムｉ保持メモリ４２１１に書き込む（Ｓ１２０１）。次に、装置制御プログラム更新機能５１は、装置制御プログラムｉに対し、実行開始を指示する（Ｓ１２０２）。さらに、装置制御プログラム更新機能５１は、装置制御プログラムｉに対し初期設定開始を指示する（Ｓ１２０３）。なお、初期設定開始の指示は、実行開始の指示に含めても良い。
【００５４】
装置制御プログラム更新機能５１は、装置制御プログラムｉ状態フラグ４１２４をリードする（Ｓ１２０４）。装置制御プログラム更新機能５１は、リードした装置制御プログラムｉ状態フラグ４１２４の示す状態を判定し、装置制御プログラムｉ状態フラグ４１２４が初期設定実行中を示す場合、ステップＳ１２０４の処理へ戻り、一方、装置制御プログラムｉ状態フラグ４１２４が初期設定終了を示す場合、ステップＳ１２０６の処理へ移る（Ｓ１２０５）。次に、装置制御プログラム更新機能５１は、旧装置制御プログラム（例えば、装置制御プログラムｊ）に対し、装置制御停止を指示する（Ｓ１２０６）。
【００５５】
さらに、装置制御プログラム更新機能５１は、ファイル更新状態フラグ４１２６を装置停止処理実行中とする（Ｓ１２０７）。ファイル更新状態フラグ４１２６を装置停止処理実行中とする事により、イベント制御機能５２が、装置固有ハードウェア５からのイベントの内、タスク実行イベントを保留イベントキュー４１２３にキューイングし、新規タスクの実行を抑止し、旧装置制御プログラムを停止状態にする。次に、装置制御プログラム更新機能５１は、装置制御プログラムｊ状態フラグ４１２５をリードする（Ｓ１２０８）。装置制御プログラム更新機能５１は、リードした装置制御プログラムｊ状態フラグ４１２５の示す状態を判定し、停止処理実行中を示す場合はステップＳ１２０８の処理へ戻り、停止処理終了を示す場合はステップＳ１２１０の処理へ移る（Ｓ１２０９）。装置制御プログラム更新機能５１は、装置制御プログラムｉに対し装置制御開始を指示し（Ｓ１２１０）、図１１のステップＳ１１０４の処理へ移る。
【００５６】
装置制御プログラムｉによる装置制御は、装置制御プログラムｉの状態に依存するデータについては、装置制御プログラムｉ実行用ワークメモリ４２１２を使用し、装置の状態に依存するデータについては、装置制御プログラム共有データ実行用ワークメモリ４２３を使用して処理を行う。装置制御プログラムｉは、装置固有ハードウェア５の状態に依存するデータについては、装置制御プログラムｊの使用していた装置制御プログラム共有データ実行用ワークメモリ４２３にあるデータを使用する為、装置制御プログラムｊの制御していた時の装置固有ハードウェア５の状態に依存するデータを、装置制御プログラムｉに受け渡す処理を行う必要がない。その結果、装置制御プログラムｉが、継続して装置固有ハードウェア５の制御を行う事が出来る。
【００５７】
本発明のプログラム更新方法は、その各手順をコンピュータに実行させるためのファイル更新管理機能プログラム、ファイル更新管理機能プログラムを記録したコンピュータ読み取り可能な記録媒体、ファイル更新管理機能プログラムを含みコンピュータの内部メモリーにロード可能なプログラム製品、そのプログラムを含むサーバ等のコンピュータ、等により提供されることができる。
【００５８】
【発明の効果】
本発明によると、以上のように運用中の装置に対して、装置制御プログラムの装置制御処理を極力停止する事無く、マルチタスクで動作する装置制御プログラムの更新が可能となる。
【図面の簡単な説明】
【図１】本発明の構成要素の概略を示すブロック図である。
【図２】本発明の装置制御プログラム保存装置部の構成図である。
【図３】本発明の装置制御プログラムの構成例である。
【図４】本発明の装置制御プログラムメモリ実行用メモリ装置部の構成例である。
【図５】本発明のファイル更新管理機能部の構成図である。
【図６】本発明の通常動作状態での動作シーケンス図である。
【図７】本発明の新装置制御プログラム立ち上げ動作シーケンス図である。
【図８】本発明の旧装置制御プログラム停止動作シーケンス図である。
【図９】本発明の新装置制御プログラム装置制御開始動作シーケンス図である。
【図１０】本発明のイベント制御機能のフローチャートである。
【図１１】本発明の装置制御プログラム更新機能メインプログラムのフローチャートである。
【図１２】本発明の装置制御プログラム更新処理サブプログラム（装置制御プログラムｊに更新）のフローチャートである。
【図１３】本発明の装置制御プログラム更新機能サブプログラム（装置制御プログラムｉに更新）のフローチャートである。
【符号の説明】
１          プロセッサ
２          装置制御プログラム保存装置部
３          装置制御プログラム実行用メモリ装置部
４          ファイル更新管理機能部
５          装置固有ハードウェア
６          装置内制御バス
２１        装置制御プログラム保存エリアｉ
２１１      保存前後関係識別子ｉ
２１２      装置制御プログラムｉ
２２        装置制御プログラム保存エリアｊ
２２１      保存前後関係識別子ｊ
２２２      装置制御プログラムｊ
３０        装置制御プログラム親タスク
３１〜３ｎ  装置制御プログラム子タスク１〜ｎ
４１        ファイル更新管理機能実行用メモリ
４１１      ファイル更新管理機能保持メモリ
４１２      ファイル更新管理機能実行用ワークメモリ
４１２１    ファイル更新管理機能実行用ワーク
４１２２    通常イベントキュー
４１２３    保留イベントキュー
４１２４    装置制御プログラムｉ状態フラグ
４１２５    装置制御プログラムｊ状態フラグ
４１２６    ファイル更新状態フラグ
４２        装置制御プログラム実行用メモリ
４２１      装置制御プログラム実行用メモリｉ
４２１１    装置制御プログラムｉ保持メモリ
４２１２    装置制御プログラムｉ実行用ワークメモリ
４２１２１  装置制御プログラムｉテンポラリ
４２１２２  装置制御プログラムｉスタック
４２１２２０  制御プログラムｉ親タスクスタック
４２１２２１〜４２１２２ｎ  制御プログラムｉ子タスク１〜ｎスタック
４２２      装置制御プログラム実行用メモリｊ
４２２１    装置制御プログラムｊ保持メモリ
４２２２    装置制御プログラムｊ実行用ワークメモリ
４２２２１  装置制御プログラムｉテンポラリ
４２２２２  装置制御プログラムｉスタック
４２２２２０  制御プログラムｊ親タスクスタック
４２２２２１〜４２２２２ｎ  制御プログラムｊ子タスク１〜ｎスタック
４２３      装置制御プログラム共有データ実行用ワークメモリ
５１        装置制御プログラム更新機能
５２        イベント制御機能
【図１】
2004199247.tif 000003
【図２】
2004199247.tif 000004
【図３】
2004199247.tif 000005
【図４】
2004199247.tif 000006
【図５】
2004199247.tif 000007
【図６】
2004199247.tif 000008
【図７】
2004199247.tif 000009
【図８】
2004199247.tif 000010
【図９】
2004199247.tif 000011
【図１０】
2004199247.tif 000012
【図１１】
2004199247.tif 000013
【図１２】
2004199247.tif 000014
【図１３】
2004199247.tif 000015