JP6819660B2 - プロセス制御システム、プロセス制御装置、及びプログラム更新方法 - Google Patents

プロセス制御システム、プロセス制御装置、及びプログラム更新方法 Download PDF

Info

Publication number
JP6819660B2
JP6819660B2 JP2018180715A JP2018180715A JP6819660B2 JP 6819660 B2 JP6819660 B2 JP 6819660B2 JP 2018180715 A JP2018180715 A JP 2018180715A JP 2018180715 A JP2018180715 A JP 2018180715A JP 6819660 B2 JP6819660 B2 JP 6819660B2
Authority
JP
Japan
Prior art keywords
update target
program
target program
update
process control
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018180715A
Other languages
English (en)
Other versions
JP2020052668A (ja
Inventor
大野 毅
毅 大野
村上 威
威 村上
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yokogawa Electric Corp
Original Assignee
Yokogawa Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yokogawa Electric Corp filed Critical Yokogawa Electric Corp
Priority to JP2018180715A priority Critical patent/JP6819660B2/ja
Priority to US16/582,184 priority patent/US10956149B2/en
Priority to EP19199635.4A priority patent/EP3629111A3/en
Priority to CN202310354639.9A priority patent/CN116382203A/zh
Priority to CN202310358101.5A priority patent/CN116382205A/zh
Priority to CN201910917030.1A priority patent/CN110955199B/zh
Publication of JP2020052668A publication Critical patent/JP2020052668A/ja
Application granted granted Critical
Publication of JP6819660B2 publication Critical patent/JP6819660B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0426Programming the control sequence
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/418Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM]
    • G05B19/4183Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM] characterised by data acquisition, e.g. workpiece identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/13Plc programming
    • G05B2219/13155Inserting instructions in program
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/23Pc programming
    • G05B2219/23327Modification of program in real time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Automation & Control Theory (AREA)
  • Manufacturing & Machinery (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)
  • Programmable Controllers (AREA)

Description

本発明は、プロセス制御システム、プロセス制御装置、及びプログラム更新方法に関する。
従来から、プラントや工場等(以下、これらを総称する場合には、単に「プラント」という)においては、工業プロセスにおける各種の状態量(例えば、圧力、温度、流量等)を制御するプロセス制御システムが構築されており、高度な自動操業が実現されている。具体的には、プロセス制御システムの核をなすコントローラが、複数のセンサ(流量計や温度計等)の検出結果を取得し、この検出結果に応じてアクチュエータ(バルブ等)の操作量を求め、この操作量に応じてアクチュエータを操作することによって、上述した各種の状態量が制御されている。
従来のプロセス制御システムは、独自仕様の専用の機器を用いて構築されていたが、近年のプロセス制御システムは、オープン化されつつあり、仕様が公開された汎用的な機器(コンピュータやワークステーション等)を用いて構築されるものが多くなっている。このような汎用的な機器が用いられるプロセス制御システムにおいては、一般の情報システムと同様に、ハードウェアの交換やソフトウェアの改善が必要になる。尚、ソフトウェアの改善としては、例えばオペレーティングシステム(OS)の機能拡張や、オペレーティングシステムの不具合・脆弱性の修正等が挙げられる。
以下の特許文献1には、二重化したプロセッサユニット(制御側及び待機側)を搭載する制御用計算機システムにおいて、制御対象に影響を与えることなくシステムプログラムを変更することが可能な技術が開示されている。具体的には、待機側を一旦停止させて新たなシステムプログラムをロードしてから待機側を起動させ、制御側に記憶されたアプリケーションデータを待機側にコピーし、制御側を停止させるとともに待機側を制御側として起動させることによって、制御対象に影響を与えることなくシステムプログラムを変更している。また、以下の特許文献2には、プロセス制御システムを停止させることなくオペレーティングシステムを更新することができ、更新されたオペレーティングシステム上でのアプリケーションの継続動作を保証することが可能なプロセス制御装置が開示されている。
特開平11−3240号公報 特開2015−5258号公報
ところで、プロセス制御システムでは、上述の特許文献1,2にも示されている通り、プロセス制御システムを停止させることなく継続動作させながら、更新対象となり得るプログラム(「更新対象プログラム」という)を更新する必要がある。その際、複雑な分析及び処理を行うことなく、簡単且つ短時間で更新対象プログラムを更新することが可能であることが望まれる。
本発明は上記事情に鑑みてなされたものであり、プロセス制御システムを停止させることなく継続動作させながら、簡単且つ短時間で更新対象プログラムを更新することが可能なプロセス制御システム、プロセス制御装置、及びプログラム更新方法を提供することを目的とする。
上記課題を解決するために、本発明の一態様によるプロセス制御システムは、第1プロセス制御装置(10)と第2プロセス制御装置(20)とを備えるプロセス制御システム(1)であって、前記第1プロセス制御装置が、更新対象ではない非更新対象プログラム(PA11)と、更新対象となり得る更新対象プログラム(PB11等)とを実行させる第1プログラム実行部(11)と、外部からの一時停止要求に基づいて、前記非更新対象プログラムを一時停止させ、前記非更新対象プログラムのコンテキスト(CA11)を前記第2プロセス制御装置に転送する第1プログラム更新制御部(15、15A〜15E)と、を備え、前記第2プロセス制御装置が、更新対象ではない非更新対象プログラム(PA21)と、更新後の更新対象プログラム(PB21等)とを実行させる第2プログラム実行部(21)と、外部からの再開要求に基づいて、前記第1プログラム更新制御部から転送される前記コンテキストを用いて前記非更新対象プログラムのコンテキストを復元するとともに、前記更新対象プログラムのコンテキストを初期化し、前記非更新対象プログラム及び前記更新対象プログラムを前記第2プログラム実行部で再開させる第2プログラム更新制御部(25、25A)と、を備える。
また、本発明の一態様によるプロセス制御システムは、前記第1プログラム更新制御部が、前記非更新対象プログラムが要求した前記更新対象プログラムの処理が仕掛中であると判定した場合には、前記非更新対象プログラムの実行位置を前記更新対象プログラムに処理を要求する直前に戻すとともに、前記更新対象プログラムが仕掛中である旨を示す情報を削除する。
また、本発明の一態様によるプロセス制御システムは、前記第1プログラム更新制御部が、前記非更新対象プログラムが呼び出した前記更新対象プログラムの処理が仕掛中であると判定した場合には、前記更新対象プログラムが仕掛中の処理を完了させるのを待つ。
また、本発明の一態様によるプロセス制御システムは、前記第1プログラム更新制御部が、前記非更新対象プログラムが呼び出す前記更新対象プログラムの中に処理が仕掛中のものがあると判定した場合には、前記更新対象プログラムのうちの予め登録された更新対象プログラムの要求が残りの更新対象プログラムに伝わらないように設定して前記更新対象プログラムの処理が停止するのを待ってから、前記予め登録された更新対象プログラムのコンテキストから処理の再開に必要な復元用データを抽出して前記第2プロセス制御装置に転送し、前記第2プログラム更新制御部が、前記第1プログラム更新制御部から転送される前記復元用データを用いて更新後の前記予め登録された更新対象プログラムのコンテキストを復元する。
また、本発明の一態様によるプロセス制御システムは、前記更新対象プログラムが、所定の第1処理の要求を通知した場合に、前記所定の第1処理の結果を示す応答が通知され、所定の第2処理の要求が通知された場合に、前記所定の第2処理の結果を示す応答を通知する要求/応答プロトコルを用いて他の装置と通信を行う。
また、本発明の一態様によるプロセス制御システムは、前記第1プログラム更新制御部が、前記更新対象プログラムが他の装置との間の通信を可能とする通信ドライバである場合には、前記他の装置からの新たな要求を取り込まないように前記更新対象プログラムの受信口を閉塞する。
本発明の一態様によるプロセス制御装置(50)は、更新対象ではない非更新対象プログラム(PA11、PA21)と、更新対象となり得る更新対象プログラム(PB11、PB21等)とを実行させるプログラム実行部(51、52)と、外部からの一時停止要求に基づいて、前記非更新対象プログラムを一時停止させ、前記非更新対象プログラムのコンテキスト(CA11)を転送する第1プログラム更新制御部(15)と、外部からの再開要求に基づいて、前記第1プログラム更新制御部から転送される前記コンテキストを用いて前記非更新対象プログラムのコンテキストを復元するとともに、更新後の更新対象プログラムのコンテキストを初期化し、前記非更新対象プログラム及び前記更新後の更新対象プログラムを前記プログラム実行部で再開させる第2プログラム更新制御部(25)と、を備える。
本発明の一態様によるプログラム更新方法は、更新対象ではない非更新対象プログラム(PA11、PA21)と、更新対象となり得る更新対象プログラム(PB11、PB21等)とが実行されるプロセス制御装置(10、20、50)におけるプログラム更新方法であって、外部からの一時停止要求に基づいて、前記非更新対象プログラムを一時停止させ、前記非更新対象プログラムのコンテキストを転送する第1ステップ(S12、S13)と、外部からの再開要求に基づいて、前記第1ステップで転送された前記コンテキストを用いて更新対象ではない非更新対象プログラムのコンテキストを復元するとともに、更新後の更新対象プログラムのコンテキストを初期化し、前記非更新対象プログラム及び前記更新対象プログラムを再開させる第2ステップ(S22〜S27)と、を有する。
本発明の一態様によるプログラム更新方法は、前記第1ステップ及び前記第2ステップは、同じプロセス制御装置で行われる。
或いは、本発明の一態様によるプログラム更新方法は、前記第1ステップ及び前記第2ステップは、異なるプロセス制御装置で行われる。
本発明によれば、プロセス制御システムを停止させることなく継続動作させながら、簡単且つ短時間で更新対象プログラムを更新することができるという効果がある。
本発明の第1実施形態によるプロセス制御システムの概略機能構成を示す機能構成図である。 本発明の第1実施形態における、プロセス制御装置内で稼働するプログラムのより詳細な構成を示す概略構成図である。 本発明の第1実施形態における、非更新対象プログラム及び更新対象プログラムの間での典型的な呼出関係を示す概略図である。 本発明の第1実施形態における、プログラム更新制御部(現用装置側及び更新用装置側)の詳細な機能構成を示す機能ブロック図である。 本発明の第1実施形態によるプログラム更新方法を示すフローチャートである。 本発明の第2実施形態における、プログラム更新制御部(現用装置側及び更新用装置側)の詳細な機能構成を示す機能ブロック図である。 本発明の第2実施形態によるプログラム更新方法を示すフローチャートである。 本発明の第3実施形態における、プログラム更新制御部(現用装置側及び更新用装置側)の詳細な機能構成を示す機能ブロック図である。 本発明の第3実施形態によるプログラム更新方法を示すフローチャートである。 本発明の第4実施形態における、プログラム更新制御部(現用装置側及び更新用装置側)の詳細な機能構成を示す機能ブロック図である。 本発明の第4実施形態によるプログラム更新方法を示すフローチャートである。 本発明の第4実施形態によるプログラム更新方法を示すフローチャートである。 本発明の第5実施形態によるプロセス制御システムの概略機能構成を示す機能構成図である。 本発明の第5実施形態において用いられる要求/応答プロトコルを説明するための図である。 本発明の第6実施形態によるプロセス制御システムの概略機能構成を示す機能構成図である。 本発明の第6実施形態における、プログラム更新制御部(現用装置側及び更新用装置側)の詳細な機能構成を示す機能ブロック図である。 本発明の第6実施形態によるプログラム更新方法を示すフローチャートである。 本発明の第7実施形態によるプロセス制御システムの概略機能構成を示す機能構成図である。 本発明の第7実施形態における、プログラム更新制御部(現用装置側及び更新用装置側)の詳細な機能構成を示す機能ブロック図である。 本発明の第7実施形態によるプログラム更新方法を示すフローチャートである。 本発明の実施形態によるプロセス制御システムを、工業プロセスを制御するシステムに適用した例を示すブロック図である。 本発明の他の実施形態によるプロセス制御装置の概略機能構成を示す機能構成図である。
以下、図面を参照して本発明の実施形態によるプロセス制御システム、プロセス制御装置、及びプログラム更新方法について詳細に説明する。以下では、まず、本発明の実施形態の概要について説明し、次に、本発明の実施形態で用いる概念及び用語の定義等について説明する。続いて、本発明の実施形態で使用する手法について説明し、その後に、各実施形態の詳細について説明する。
〔概要〕
本発明の実施形態は、プロセス制御システムを停止させることなく継続動作させながら、簡単且つ短時間で更新対象プログラムを更新することを可能とするものである。具体的に、プロセス制御システムは、生産効率を少しでも向上させるために、月〜年単位の長期に亘る継続運転が要求されることが殆どであるため、運転状態にあるプロセス制御システムを自由に停止させることはできない。例えば、定期メンテナンスによる停止、或いはプラントの安全確保のために行われるシャットダウン以外は、基本的にプロセス制御システムを停止させることは許されない。その理由は、化学プロセスを例に挙げると、化学反応を続けるプロセスの途中で予期せぬ中断が発生してしまうと、途中まで生産した半製品が使い物にならず大きな損害となることがあるからである。
一方、プロセス制御システムには、安全性の面から誤動作や動作の欠損が生じないことが要求されるため、誤動作等が生じ得る原因(例えば、オペレーティングシステムの不具合や脆弱性)が発見された場合には、その原因を解消し得る対処(オペレーティングシステムの更新)を即座に行う必要がある。しかしながら、前述した通り、プロセス制御システムを自由に停止させることができないため、誤動作等が生じ得る原因が発見されたとしても、その対処を即座に行うことができない場合があるという問題がある。
ここで、上述した特許文献1に開示された技術を用いれば、冗長構成の制御装置において、制御側に悪影響を与えずに待機側でシステムプログラムを更新して、制御側のこれまでのアプリケーションデータを待機側にコピーすることにより、アプリケーションを継続させることも可能である。しかしながら、コピーすべきアプリケーションデータの抽出方法や、更新後の処理の再開方法は、アプリケーションの作りに依存するものであり、且つそれらの方法は公開されていないという問題がある。
また、上述した特許文献2に開示された技術を用いれば、制御装置のオペレーティングシステムを更新する際に、任意のアプリケーションの処理を継続させることが可能となる。しかしながら、上述した特許文献2に開示された技術は、アプリケーション復元を前提としているため、複雑な分析及び処理を必要とする場合がある。また、オペレーティングシステムの機能に依存した内部状態の復元処理が必要となる場合もあり得る。
上記の複雑な分析及び処理を行うことなく、プロセス制御システムを継続動作させながら、更新する必要のあるオペレーティングシステム等のプログラム(更新対象プログラム)を更新するためには、より簡単で、より広く適用可能な解が望まれる。例えば、オペレーティングシステムの内部状態を完全に復元しなくてよい方法、又はオペレーティングシステムの内部状態の復元について一切の考慮或いは処理を必要としない方法が望まれる。
本発明の実施形態では、プロセス制御システムで用いられる各種プログラムを更新する際に、まず、外部からの一時停止要求に基づいて、更新対象ではない非更新対象プログラムを一時停止させ、非更新対象プログラムのコンテキストを転送する。次に、外部からの再開要求に基づいて、転送されたコンテキストを用いて更新対象ではない非更新対象プログラムのコンテキストを復元するとともに、更新後の更新対象プログラムのコンテキストを初期化し、非更新対象プログラム及び更新対象プログラムを再開させる。これにより、プロセス制御システムを停止させることなく継続動作させながら、簡単且つ短時間で更新対象プログラムを更新するようにしている。
〔概念及び用語の定義等〕
本発明の実施形態は、コンピュータを用いて実現可能である。コンピュータ上では、オペレーティングシステム(OS)の管理下で、複数のタスクが稼働する。オペレーティングシステムは、コンピュータの各種資源(CPU時間、メモリ、入出力装置等)を管理するとともに、それらの資源を適切にタスクに割り当てるものである。尚、「CPU」は、中央処理装置(Central Processing Unit)の略である。
タスクは、オペレーティングシステム配下で独立して稼働する処理の単位である。複数のタスクは、並行に(コンカレントに)稼働することができる。オペレーティングシステムは、タスク間通信の機能を提供する。タスク間通信により、並行して稼働する複数のタスク間で情報(メッセージ)をやり取りすることができる。尚、タスク間通信以外にも、例えば共有メモリ等を用いてタスク間で情報を交換できるようにしてもよい。
本発明の実施形態では、プロセス制御システムで用いられる各種プログラムを、非更新対象プログラムと更新対象プログラムとの2種類に区別する。非更新対象プログラムは、本発明の実施形態において、プログラムの更新の前後で変わらないプログラムである。非更新対象プログラムの主要な役割は、アプリケーションの実現である。ここで、アプリケーションとは、典型的には、PID制御やシーケンス制御等を用いた特定のプラントの制御である。
更新対象プログラムは、本発明の実施形態において、後述する例外を除き、非更新対象プログラムから直接的又は間接的に呼び出されるプログラムである。更新対象プログラムの主要な役割は、コンピュータシステムが持つ資源を円滑に利用できるようにすることである。更新対象プログラムは、所謂システムプログラムである。更新対象プログラムは、オペレーティングシステムや、ミドルウェアの一部として提供されるものである。更新対象プログラムにおける例外は、呼出側更新対象プログラムである。この呼出側更新対象プログラムは、後述する通り、例えば外部からのトリガーに基づいて、非更新対象プログラムを呼び出す(起動する)役割を有するプログラムである。
前述のタスクを、継続タスクと使用タスクとに分類することもできる。継続タスクは、上記の非更新対象プログラムを実行させるためのタスクである。但し、継続タスクに更新対象プログラムが含まれていてもよい。一方、使用タスクは、更新対象プログラムのみを実行させるためのタスクである。つまり、継続タスクは、直接的又は間接的に、使用タスクを呼び出す場合がある。ここでいう「呼び出す」という動作は、必ずしも関数呼出や手続呼出に限定されるものではない。タスク間通信、システムコール、その他の情報伝達によって他のプログラム又は他のプログラムの機能を使用する動作を一般的に「呼び出す」と表現する。
コンテキストは、プログラムが処理を実行する際に依存する状況である。コンテキストは、状況、文脈、状態、データ、記憶等とも呼ばれる。コンテキストの物理的な実体は、記憶手段(半導体メモリ、磁気ディスク装置、外部媒体等)に記憶されるデータである。ソフトウェアコンテキストは、プログラムが使用する、メモリ等の記憶領域の内容を全て含めたものである。
ソフトウェアコンテキストを復元できれば、一時停止したプログラムを無条件に継続させることができる(継続の普遍原理)。また、ソフトウェアコンテキストを初期化して作り直すのであれば、プログラムを無条件に更新することができる(更新の普遍原理)。本発明の実施形態は、この2つの普遍原理に基づいて、プロセス制御システムを停止させることなく継続動作させながら、簡単且つ短時間で更新対象プログラムを更新するようにしている。
コンテキスト依存(context-dependent)とは、プログラムの処理の実行が、コンテキストに依存することである。尚、コンテキスト依存は、状態依存、ステートフル(stateful)等ともいう。コンテキストフリー(context-free)とは、プログラムの処理の実行がコンテキストに依存しない(言い換えれば、コンテキストがない)ことである。尚、コンテキストフリーは、文脈自由、無文脈、状態自由、無状態、ステートレス(stateless)等ともいう。
現用装置とは、現在稼働している側の装置である。更新用装置とは、現在稼働しておらず、プログラムの更新のためにスタンバイしている側の装置である。現用装置と更新用装置とは、状態が入れ替わることがあり得る。つまり、現用装置として稼働していた装置がスタンバイ状態になって更新用装置になる一方で、更新用装置としてスタンバイ状態にあった装置が、稼働状態になって現用装置になる、といった具合である。
本発明の実施形態を工業プロセスの制御に適用する場合の典型的な処理のモデル(例)は、次の通りである。プロセスを制御するための非更新対象プログラムは、前述の呼出側更新対象プログラムから、ある時間周期(例えば、50ミリ秒周期〜数秒周期程度)で繰り返し呼び出される。非更新対象プログラムは、呼び出される都度、以下の1〜4の処理を実行する。
1.前回までの処理状態であるコンテキストを用いて、今回の処理を実行する(尚、初回のコンテキストには初期値が設定される)。
2.必要な情報(例えば、工業プロセスの状態である各種センサの現在値)や他の制御処理の結果を取得する。
3.得た情報を基に計算処理等(例えば、PID制御、シーケンス制御、制御のシミュレーション)を行う。
4.計算処理等の結果に基づく情報を出力する(例えば、生産設備におけるアクチュエータの操作やスイッチのON/OFF)。
この場合において、微視的には、非更新対象プログラムは工業プロセスを離散的なタイミングで制御しているが、非更新対象プログラムが処理を実行していない期間も工業プロセスは変化し続けるため、プラントの生産設備は稼働し続ける。尚、非更新対象プログラムが呼出側更新対象プログラムから呼び出される時間周期の範囲は、上に例示した範囲に限定されるものではない。
非更新対象プログラムの一時停止とは、非更新対象プログラムの前回処理の終了後から所定時間内にその処理が再開可能なように非更新対象プログラムを一時的に停止させることである。一時停止された非更新対象プログラムのコンテキストは、非更新対象プログラムが再開される時に引き継がれる。ここで、上記の「所定時間」は、設計等により定められる充分に短い時間である。
非更新対象プログラムの中断とは、非更新対象プログラムの前回処理の終了後から、上記所定時間内に再開されないように更新対象プログラムを停止させること、又は上記所定時間内に再開されるか否かに拘わらず非更新対象プログラムのコンテキストが引き継がれないように(例えば、処理の状態が初期化されるように)することである。プロセス制御システムの目的が、工業プロセスの制御であることを考慮すると、非更新対象プログラムの一時停止は許容されるが、非更新対象プログラムの中断は許容されない。
本発明の実施形態における「要求」及び「応答」には、装置内で行われるもの、及び装置間で行われるものが含まれる。例えば、「要求」には、関数の呼び出し、システムコールの呼び出し、タスク間通信の処理の要求、及びネットワーク通信での要求の送信等、が含まれる。「応答」には、関数呼出からの復帰、システムコール呼出からの復帰、タスク間通信の処理結果の返信、ネットワーク通信での応答の返信等、が含まれる。
本発明の実施形態における「仕掛中」とは、装置内又は装置間において、一連の処理が完了しておらず処理中のコンテキストを保持する必要がある状態をいう。一連の処理は、要求と応答とのやりとりを1回実行して完了する場合もあれば、複数回実行して完了する場合もある。一連の処理が完了すれば非仕掛中となり、コンテキストの初期化が可能になる。尚、2台の装置間でネットワーク通信処理が行われる場合に、一方の装置は、他方の装置に要求を送信してから他方の装置からの応答(汎用通信プロトコルの場合はACK)を受信するまで仕掛中になる。仕掛中は例えばTCPコネクション等を保持する必要がある。
〔使用する手法〕
以下で説明する実施形態では、非更新対象プログラムについては、前述した継続の普遍原理に基づいて、一時停止時に、非更新対象プログラムが使用するコンテキスト(ソフトウェアコンテキスト)を無条件に全てコピーする。非更新対象プログラムの継続に必要な引継データはプログラム毎に異なるが、上記の「全てコピーする」という手法により、非更新対象プログラムの継続に必要な引継データをコンテキストに必ず含め、引き継ぐことができる。
これに対し、更新対象プログラムの更新については、更新対象プログラムが有する既存機能を部分的に修正することだけではなく、既存機能に新しい機能を追加することも含まれる。このとき、新しく追加される機能に関して、既存機能との関連性の有無は問われない。つまり、新しく追加される機能は、既存機能とは全く別の機能であっても良い。従って、更新対象プログラムを更新する際に、更新対象プログラムのコンテキストのデータ構造が大幅に変更される場合もあり得る。このような場合には、前述した更新の普遍原理に基づいて、再開時に、更新対象プログラムが使用するコンテキストを無条件に全て初期化するという手法を用いる。このような初期化を行うことで、更新対象プログラムを無条件に更新することができる。
以下で説明する実施形態は何れも、上述した手法を用いて、非更新対象プログラムの一時停止中に更新対象プログラムを更新する。これにより、以下で説明する各実施形態は、プロセス制御システムを停止させることなく継続動作させながら、簡単且つ短時間で更新対象プログラムを更新するようにしたものである。
〔第1実施形態〕
〈プロセス制御システムの機能構成〉
図1は、本発明の第1実施形態によるプロセス制御システムの概略機能構成を示す機能構成図である。図1に示す通り、本実施形態のプロセス制御システム1は、プロセス制御装置10(第1プロセス制御装置)、プロセス制御装置20(第2プロセス制御装置)、及びエンジ用機器30を備える。プロセス制御装置10及びプロセス制御装置20は、同等又は類似規模のコンピュータを用いて実現される。本実施形態では、プロセス制御装置10を「現用装置」と呼び、プロセス制御装置20を「更新用装置」と呼ぶこともある。
本実施形態では、プログラムの更新のために、プロセス制御装置10で稼働していた機能をプロセス制御装置20に切り替えるものとする。つまり、当初は、現用装置であるプロセス制御装置10がプロセスを制御するために稼働しており、更新用装置であるプロセス制御装置20が待機している。その後、エンジ用機器30からの指令信号に基づき、プロセス制御装置10(現用装置)におけるプロセス制御機能を一時停止し、プロセス制御装置20(更新用装置)においてその機能を再開する。プロセス制御装置10及びプロセス制御装置20は、システムが稼働している状態のまま、プログラムを更新するための機能を備えている。
プロセス制御装置10は、ハードウェア11(第1プログラム実行部)、オペレーティングシステム12、タスク13、タスク14、及びプログラム更新制御部15(第1プログラム更新制御部)の機能を備える。ハードウェア11は、CPU、メモリ、入出力装置、通信装置等を備えており、プロセス制御装置10で用いられる各種プログラム(非更新対象プログラム及び更新対象プログラムを含む)を実行させる。尚、プロセス制御装置10の機能は、その機能を実現するためのプログラムがハードウェア11によって実行されることによって実現される。つまり、プロセス制御装置10の機能は、ソフトウェアとハードウェア資源とが協働することによって実現される。
オペレーティングシステム12は、ハードウェア11とアプリケーション(タスク13,14等)との間に位置し、ハードウェア11の管理を行いつつ、アプリケーションに対して規定のインターフェイスを提供する。具体的に、オペレーティングシステム12は、プロセス制御装置10のハードウェア資源(CPU時間、メモリ、入出力等)を管理して、各タスクに適切に割り当てる機能を有する。オペレーティングシステム12は、更新対象プログラムPB13を含む。
タスク13は、対象のプロセスを制御する機能を有するタスクである。タスク13を「制御タスク」とも呼ぶ。タスク13は、非更新対象プログラムPA11と更新対象プログラムPB11とを含む。非更新対象プログラムPA11は、プロセス制御のためのメインプログラムである。タスク14は、タスク13からの直接又は間接の要求に基づき所定のサービスを提供するタスクである。タスク14を「使用タスク」とも呼ぶ。タスク14は、更新対象プログラムPB12を含む。
プログラム更新制御部15は、システムを稼働させたまま、現用装置から更新用装置への切り替え(「オンライン更新」ともいう)を行う処理を制御する。具体的に、プログラム更新制御部15は、エンジ用機器30から一時停止要求が送信されてきた場合に、非更新対象プログラムPA11を一時停止させ、プロセス制御装置20(更新用装置)においてその機能を再開させるために必要な処理を行う。プログラム更新制御部15で行われる処理の詳細については後述する。尚、プログラム更新制御部15は、更新対象プログラムについても、一時停止させてその機能を再開させるために必要な処理を行う場合もある。
プロセス制御装置20は、プロセス制御装置10と同様の構成であり、ハードウェア21(第2プログラム実行部)、オペレーティングシステム22、タスク23、タスク24、及びプログラム更新制御部25(第2プログラム更新制御部)の機能を備える。ハードウェア21は、上記のハードウェア11と同様のものであり、プロセス制御装置20で用いられる各種プログラム(非更新対象プログラム及び更新対象プログラムを含む)を実行させる。尚、プロセス制御装置20の機能も、ソフトウェアとハードウェア資源とが協働することによって実現される。
オペレーティングシステム22は、上記のオペレーティングシステム12と同様の機能を有するものである。また、オペレーティングシステム22は、更新対象プログラムPB23を含む。タスク23は、上記のタスク13と同様の機能を有するものである。また、タスク23は、非更新対象プログラムPA21と更新対象プログラムPB21とを含む。タスク24は、上記のタスク14と同様の機能を有するものである。また、タスク24は、更新対象プログラムPB22を含む。プログラム更新制御部25は、上記のプログラム更新制御部15と同様の機能を有するものである。尚、プログラム更新制御部25は、プログラム更新制御部15と協調して動作する。
尚、「現用装置」及び「更新用装置」という呼び方は、その時点の状況に応じたものであり、状況に応じてプロセス制御装置10及びプロセス制御装置20の役割は変化し得る。つまり、プロセス制御装置20が現用装置となり、プロセス制御装置10が更新用装置として機能する状況もあり得る。また、3台以上のプロセス制御装置を用いて、プログラムの更新及び稼働するプロセス制御装置の移行を行うようにしてもよい。
エンジ用機器30は、プロセス制御システム1の設計情報を含めたプラントの設計情報を用いて、プロセス制御システム1における各種エンジニアリングを行う。また、エンジ用機器30は、プロセス制御装置10(現用装置)におけるプロセス制御機能を一時停止させ、プロセス制御装置20(更新用装置)においてその機能を再開させる指令も行う。尚、エンジ用機器30は、例えばパーソナルコンピュータやワークステーション等のコンピュータによって実現される。
図2は、本発明の第1実施形態における、プロセス制御装置内で稼働するプログラムのより詳細な構成を示す概略構成図である。尚、図2では、プロセス制御装置10内の構成を示しているが、プロセス制御装置20内の構成も同様のものである。図2に示す通り、各プログラムは、コンテキストを有する。コンテキストは、プログラムが稼働する状況における状態である。具体的に、コンテキストは、半導体メモリや磁気ディスク装置等に記憶されるデータである。それらのデータは、CPUのメモリ空間に置かれているデータである場合もあり、例えばデータベース管理システム(DBMS)等によって管理されているデータである場合もある。
本実施形態では、データによって表される状態そのものを「コンテキスト」と呼ぶ場合もあり、そのデータを物理的に記憶する記憶手段を含めて「コンテキスト」と呼ぶ場合もある。尚、コンテキストが、各プログラムの実行位置(プログラムコードにおける特定の位置)に関する情報を含んでいてもよい。
図2に示す例において、タスク13は、非更新対象プログラムPA11、更新対象プログラムPB11、及び更新対象プログラムPB14を含む。更新対象プログラムPB11は、非更新対象プログラムPA11に専用の内部関数であり、非更新対象プログラムPA11と静的にリンクされて、モジュールMDを構成する。そのモジュールMD内において、非更新対象プログラムPA11は、更新対象プログラムPB11を呼び出すことができる。
また、更新対象プログラムPB14は、モジュールMDや他のモジュールに共通の汎用関数であり、モジュールMD等と動的にリンクされる。モジュールMDと更新対象プログラムPB14とは、予め規定されたAPI(Application Programming Interface)を通して相互を呼び出すことができる。更新対象プログラムPB14は、例えば、OS機能を利用しやすくするライブラリのプログラムである。
オペレーティングシステム12は、更新対象プログラムPB13を含む。更新対象プログラムPB13は、OS機能を実現するプログラムである。更新対象プログラムPB13は、タスク13やタスク14から呼び出される場合がある。タスク14は、更新対象プログラムPB12を含む。
図2内におけるプログラムとコンテキストとの関係は、次の通りである。タスク13に含まれる非更新対象プログラムPA11はコンテキストCA11にアクセスし、更新対象プログラムPB11はコンテキストCB11にアクセスし、更新対象プログラムPB14はコンテキストCB14にアクセスする。タスク14に含まれる更新対象プログラムPB12はコンテキストCB12にアクセスする。オペレーティングシステム12に含まれる更新対象プログラムPB13は、コンテキストCB13にアクセスする。尚、ここでのプログラムからコンテキストへのアクセスは、参照のみであってもよいし、更新を伴うものであってもよい。
図2に示すプログラムのうち、非更新対象プログラムPA11は、継続対象のプログラムである。つまり、非更新対象プログラムPA11は、更新の対象ではない。また、更新対象プログラムPB11,PB12,PB13,PB14は、更新対象となり得るプログラムである。そして、更新対象プログラムの更新時に、非更新対象プログラムは、稼働環境を現用装置から更新用装置に切り替えて継続して稼働する。
システム稼働中のプログラムの更新に関連して重要な点は、非更新対象プログラムと更新対象プログラムとの間でのコンテキストの共有が行われないことである。即ち、非更新対象プログラムPA11は、更新対象プログラムのコンテキストであるコンテキストCB11,CB12,CB13,CB14への直接のアクセスを行わない。また、更新対象プログラムPB11,PB12,PB13,PB14は、非更新対象プログラムPA11のコンテキストであるコンテキストCA11への直接のアクセスを行わない。
図3は、本発明の第1実施形態における、非更新対象プログラム及び更新対象プログラムの間での典型的な呼出関係を示す概略図である。図3に示す通り、呼出側更新対象プログラムPC11は、非更新対象プログラムPA11を呼び出す側のプログラムである。呼出側更新対象プログラムPC11以外の更新対象プログラムは、非更新対象プログラムPA11から、直接的又は間接的に呼び出される。
具体的に、呼出側更新対象プログラムPC11は、外部トリガーを受信することによって、非更新対象プログラムPA11を呼び出す。ここで、外部トリガーは、例えば、定周期のタイマのタイムアウト信号や、ネットワークからの受信割り込み信号等である。外部トリガーは、呼出側更新対象プログラムPC11に対して繰り返し伝達される。よって、呼出側更新対象プログラムPC11は、非更新対象プログラムPA11を繰り返し起動する。
非更新対象プログラムPA11は、その実行中に、直接的又は間接的に、更新対象プログラムPB13,PB14,PB15を呼び出すことがある。非更新対象プログラムPA11の実行中にトリガー待ちになることはない。非更新対象プログラムPA11は、途中で処理を止めること(トリガー待ち)なく、処理を終了すると、呼出側更新対象プログラムPC11に制御を戻す。
また、オンラインプログラム更新のために非更新対象プログラムPA11を一時停止させる場合がある。非更新対象プログラムPA11を一時停止させるタイミングは、呼出側更新対象プログラムPC11から非更新対象プログラムPA11を呼び出す直前か、非更新対象プログラムPA11から呼出側更新対象プログラムPC11に戻った直後である。これにより、プログラム更新時には、非更新対象プログラムPA11の呼出側に処理が戻って、非更新対象プログラムPA11が使用したスタック領域が全て解放される。従って、一時停止中の非更新対象プログラムPA11のコンテキストCA11にスタック領域が含まれない。
図4は、本発明の第1実施形態における、プログラム更新制御部(現用装置側及び更新用装置側)の詳細な機能構成を示す機能ブロック図である。図4において、プログラム更新制御部15は、現用装置側(図1におけるプロセス制御装置10)が有する機能である。また、プログラム更新制御部25は、更新用装置側(図1におけるプロセス制御装置20)が有する機能である。プログラム更新制御部15及びプログラム更新制御部25は、相互に協調して動作する。プロセス制御装置は、予めプログラム更新制御部15の機能とプログラム更新制御部25の機能との両方を備えており、自己が現用装置として動作しているか更新用装置として動作しているかに応じて、それらの機能を切り替える。
図4に示す通り、プログラム更新制御部15は、通信管理部151及び非更新対象プログラム呼出停止部152を備える。また、プログラム更新制御部25は、通信管理部251、非更新対象プログラム呼出再開部252、及びコンテキスト初期化制御部253を備える。尚、プロセス制御装置10及びプロセス制御装置20はそれぞれ、ネットワークを介して、エンジ用機器30と接続されている。プロセス制御装置10の通信管理部151及びプロセス制御装置20の通信管理部251はそれぞれ、ネットワークを介して、エンジ用機器30との間で通信を行うことができるように構成されている。
通信管理部151は、エンジ用機器30から送信された要求(一時停止要求)を受信すると、非更新対象プログラム呼出停止部152に対して、非更新対象プログラムPA11を一時停止させるための指示を行う。また、通信管理部151は、エンジ用機器30から要求された処理(一時停止処理)が完了すると、非更新対象プログラムPA11のコンテキストCA11(図2参照)を更新用装置側に転送しながら、一時停止処理が完了した旨をエンジ用機器30に通知する。
非更新対象プログラム呼出停止部152は、通信管理部151からの指示に従って、非更新対象プログラムPA11を一時停止させる。具体的に、非更新対象プログラム呼出停止部152は、非更新対象プログラムPA11の呼び出しを一時的に停止する。より具体的に、非更新対象プログラム呼出停止部152では、呼出側更新対象プログラムPC11(図3参照)が非更新対象プログラムPA11を呼び出すことを止めることにより、非更新対象プログラムPA11を一時停止させる。非更新対象プログラム呼出停止部152は、非更新対象プログラムPA11の一時停止が完了した場合には、一時停止処理が完了した旨を通信管理部151に通知する。
尚、プログラム更新制御部15は、非更新対象プログラムPA11が一時停止された場合に、非更新対象プログラムPA11のコンテキストCA11(図2参照)を記憶手段(図示省略)に記憶させる処理を行う。通信管理部151は、記憶手段に記憶されたコンテキストCA11を読み出して更新用装置側に転送する。コンテキストCA11を記憶手段に記憶させる処理は、非更新対象プログラム呼出停止部152が行うようにしても良い。
通信管理部251は、エンジ用機器30から送信された要求(再開要求)を受信すると、非更新対象プログラム呼出再開部252に対して、非更新対象プログラムPA11を再開させるための指示を行う。通信管理部251は、通信管理部151から転送されてくるコンテキスト(非更新対象プログラムPA11のコンテキストCA11)を、現用装置と同じ領域(アドレス)に格納(コピー)する。これにより、非更新対象プログラムPA11の一時停止時と等価な状態をプロセス制御装置20で再現する。また、通信管理部251は、エンジ用機器30から要求された処理(再開処理)が完了すると、再開処理が完了した旨をエンジ用機器30に通知する。
非更新対象プログラム呼出再開部252は、通信管理部251からの指示に従って、非更新対象プログラムPA11を再開させる。具体的に、非更新対象プログラム呼出再開部252は、プロセス制御装置20の起動プログラムを実行させ、呼出側更新対象プログラムPC11(図3に示す呼出側更新対象プログラムPC11と同様のもの)が非更新対象プログラムPA21(図1参照)の呼び出しを行うようにする。尚、非更新対象プログラムPA21は、非更新対象プログラムPA11と同じプログラムであるから、非更新対象プログラムPA21の呼び出しを行うことと、非更新対象プログラムPA11の呼び出しを再開することとは同義である。
非更新対象プログラム呼出再開部252は、通信管理部251からの指示があってから、コンテキスト初期化制御部253における処理が未実施である場合には、コンテキスト初期化制御部253に対して処理を実施させる。非更新対象プログラム呼出再開部252は、呼出側更新対象プログラムPC11(図3に示す呼出側更新対象プログラムPC11と同様のもの)が非更新対象プログラムPA21を呼び出すように、呼出側更新対象プログラムPC11を再開させる。非更新対象プログラム呼出再開部252は、非更新対象プログラムPA11(非更新対象プログラムPA21)の再開が完了した場合には、再開処理が完了した旨を通信管理部251に通知する。
コンテキスト初期化制御部253は、非更新対象プログラム呼出再開部252からの指示に基づいて、コンテキストを初期化するか否かの指示を、オペレーティングシステム22に対して行う。具体的に、コンテキスト初期化制御部253は、非更新対象プログラムPA11のコンテキストCA11については初期化処理をバイパスして初期化せず、更新対象プログラムのコンテキストについては初期化を許可する指示を行う。尚、コンテキスト初期化制御部253は、コンテキストを初期化する処理が完了すると、その旨を非更新対象プログラム呼出再開部252に通知する。
〈プログラム更新方法〉
図5は、本発明の第1実施形態によるプログラム更新方法を示すフローチャートである。尚、図5に示すフローチャートの処理が実行される前提として、プロセス制御装置10(現用装置)は、更新前の更新対象プログラムを用いて稼働している。また、プロセス制御装置20(更新用装置)は、更新後の更新対象プログラムがインストールされた状態で待機している。但し、非更新対象プログラムは更新されず、プロセス制御装置10とプロセス制御装置20とで同じプログラム(非更新対象プログラムPA11,PA21)が実行される。
また、エンジ用機器30からプロセス制御装置10(現用装置)に対し、適切なタイミングで要求(一時停止要求)が送信され、エンジ用機器30からプロセス制御装置20(更新用装置)に対し、適切なタイミングで要求(再開要求)が送信される。つまり、エンジ用機器30は、まず、プロセス制御装置10に対して、一時停止を要求するメッセージを送信する。そして、エンジ用機器30は、プロセス制御装置10から一時停止完了のメッセージを受信する。次に、エンジ用機器30は、プロセス制御装置20に対して、再開を要求するメッセージを送信する。そして、エンジ用機器30は、プロセス制御装置20から再開完了のメッセージを受信する。
尚、エンジ用機器30は、プロセス制御装置10に一時停止を要求するメッセージを送信した後は、プロセス制御装置20に対する再開要求を、プロセス制御装置10に行わせることもできる。上記の再開要求をプロセス制御装置10に行わせる場合には、エンジ用機器30は、プロセス制御装置20に再開を要求するメッセージを送信しない。代わりに、プロセス制御装置10が一時停止完了のメッセージをプロセス制御装置20にも通知することによって、プロセス制御装置20に再開を要求することができる。
図5に示す通り、エンジ用機器30から送信されたメッセージ(一時停止を要求するメッセージ)は、プロセス制御装置10(現用装置)で受信される(ステップS11)。具体的に、上記メッセージは、プロセス制御装置10(現用装置)に設けられたプログラム更新制御部15の通信管理部151で受信される。エンジ用機器30からのメッセージが受信されると、非更新対象プログラムPA11を一時停止させるための指示が、通信管理部151から非更新対象プログラム呼出停止部152に出力される。
すると、非更新対象プログラムPA11を呼び出す呼出側(呼出側更新対象プログラムPC11)を停止させる処理が非更新対象プログラム呼出停止部152で行われる(ステップS12)。具体的に、非更新対象プログラム呼出停止部152では、呼出側更新対象プログラムPC11(図3参照)が非更新対象プログラムPA11を呼び出すことを止めることにより、非更新対象プログラムPA11を一時停止させる処理が行われる。ここで、非更新対象プログラムPA11が一時停止された場合には、非更新対象プログラムPA11のコンテキストCA11を不図示の記憶手段に記憶させる処理がプログラム更新制御部15で行われる。
非更新対象プログラムPA11の一時停止が完了すると、その旨が非更新対象プログラム呼出停止部152から通信管理部151に通知される。すると、非更新対象プログラムPA11のコンテキストCA11を不図示の記憶手段から読み出して、更新用装置側に転送する処理が通信管理部151で行われる(ステップS13)。以上の処理が完了すると、一時停止処理が完了した旨をエンジ用機器30に通知する処理が通信管理部151で行われる(ステップS14)。
図5に示す通り、エンジ用機器30から送信されたメッセージ(再開を要求するメッセージ)は、プロセス制御装置20(更新用装置)で受信される(ステップS21)。具体的に、上記メッセージは、プロセス制御装置20(現用装置)に設けられたプログラム更新制御部25の通信管理部251で受信される。エンジ用機器30からのメッセージが受信されると、非更新対象プログラムPA11を再開させるための指示が、通信管理部251から非更新対象プログラム呼出再開部252に出力される。
また、プロセス制御装置10(現用装置)から転送されてくるコンテキスト(非更新対象プログラムPA11のコンテキストCA11)を受信する処理が、通信管理部251で行われる(ステップS22)。そして、受信したコンテキストを、現用装置と同じ領域(アドレス)に格納(コピー)する処理が、通信管理部251で行われる。これにより、非更新対象プログラムPA11の一時停止時と等価な状態が、プロセス制御装置20で再現される。
上述した非更新対象プログラムPA11を再開させるための指示が入力されると、プロセス制御装置20(更新用装置)の起動プログラムの呼び出しを実行させる処理が、非更新対象プログラム呼出再開部252で行われる(ステップS23)。起動プログラムの呼び出しが行われると、まず、コンテキスト初期化制御部253でコンテキストを初期化する処理が行われる。具体的には、初期化するプログラムが非更新対象プログラムであるか否かがコンテキスト初期化制御部253で判断される(ステップS24)。
初期化するプログラムが非更新対象プログラムであると判断された場合(ステップS24の判断結果が「YES」の場合)には、初期化処理をバイパスさせる処理がコンテキスト初期化制御部253で行われる(ステップS25)。これにより、現用装置と同じ領域(アドレス)に格納(コピー)されたコンテキスト(非更新対象プログラムPA11のコンテキストCA11)の初期化が回避される。これに対し、初期化するプログラムが非更新対象プログラムではないと判断された場合(ステップS24の判断結果が「NO」の場合)には、初期化処理の実行を許可する処理がコンテキスト初期化制御部253で行われる(ステップS26)。これにより、全ての更新対象プログラムのコンテキストを初期化する処理が行われる。
以上の初期化処理が完了すると、その旨がコンテキスト初期化制御部253から非更新対象プログラム呼出再開部252に通知される。この初期化処理が完了した旨が通知され、起動プログラムが完了すると、非更新対象プログラムPA11(非更新対象プログラムPA21)の呼び出しを再開する処理が、非更新対象プログラム呼出再開部252で行われる(ステップS27)。
非更新対象プログラムPA11(非更新対象プログラムPA21)の再開が完了すると、非更新対象プログラム呼出再開部252から通信管理部251に対し、再開処理が完了した旨が通知される。この通知がされると、再開処理が完了した旨をエンジ用機器30に通知する処理が通信管理部251によって行われる(ステップS28)。このようにして、オンライン更新が行われる。
以上説明した通り、本実施形態では、まず、エンジ用機器30からの一時停止要求に基づいて、プロセス制御装置10(現用装置)において、更新対象ではない非更新対象プログラムPA11を一時停止させ、非更新対象プログラムPA11のコンテキストCA11をプロセス制御装置20(更新用装置)に転送する。次に、エンジ用機器30からの再開要求に基づいて、プロセス制御装置20(更新用装置)において、転送されたコンテキストCA11を用いて更新対象ではない非更新対象プログラムPA21のコンテキストCA11を復元するとともに、更新後の更新対象プログラムのコンテキストを初期化し、非更新対象プログラム及び更新対象プログラムを再開させる。これにより、プロセス制御システムを停止させることなく継続動作させながら、簡単且つ短時間で更新対象プログラムを更新することができる。
〔第2実施形態〕
〈プロセス制御システムの機能構成〉
図6は、本発明の第2実施形態における、プログラム更新制御部(現用装置側及び更新用装置側)の詳細な機能構成を示す機能ブロック図である。尚、図6において、図4に示す構成に相当する構成については、同一の符号を付してある。また、本実施形態によるプロセス制御システム全体の機能構成は、図1〜図3を用いて説明したものと同様である。以下では、前述した第1実施形態と相違する点を中心に説明する。
本実施形態は、非更新対象プログラムPA11から呼び出された更新対象プログラム(例えば、図1,図2に示す更新対象プログラムPB11)に仕掛中の処理がある場合に、その処理を速やかに中断するようにしたものである。この際、非更新対象プログラムPA11の実行位置を更新対象プログラムに処理を要求する直前に戻して非更新対象プログラムPA11のコンテキストを修正するとともに、更新対象プログラムが仕掛中である旨を示す情報を削除することで、プロセス制御システム1の継続動作を保証するようにしている。
図6に示す通り、本実施形態における、現用装置側のプログラム更新制御部15Aは、図4に示す現用装置側のプログラム更新制御部15に、非更新対象プログラム停止位置戻し部153を追加した構成である。尚、更新用装置側のプログラム更新制御部25は、図4に示すものと同じ構成である。
非更新対象プログラム停止位置戻し部153は、非更新対象プログラム呼出停止部152が呼出側更新対象プログラムPC11(図3参照)を一時停止させた場合に、非更新対象プログラムPA11が要求した更新対象プログラムの処理が仕掛中であるか否かを判定する。そして、非更新対象プログラム停止位置戻し部153は、非更新対象プログラムPA11が要求した更新対象プログラムの処理が仕掛中であると判定した場合には、非更新対象プログラムPA11の実行位置を更新対象プログラムに処理を要求する直前に戻す。このとき、非更新対象プログラム停止位置戻し部153は、非更新対象プログラムPA11が有する更新対象プログラムが仕掛中である旨を示す情報を削除する。
〈プログラム更新方法〉
図7は、本発明の第2実施形態によるプログラム更新方法を示すフローチャートである。尚、図7に示すフローチャートは、プログラム更新制御部15Aに設けられた非更新対象プログラム停止位置戻し部153で行われる処理を抜き出して図示したものである。図7に示すフローチャートの処理は、図5中のステップS12とステップS13との間で行われる。
図5に示すステップS12の処理が行われると、非更新対象プログラムPA11が一時停止する。具体的に、非更新対象プログラムPA11は、呼出側更新対象プログラムPC11から非更新対象プログラムPA11を呼び出す直前か、非更新対象プログラムPA11から呼出側更新対象プログラムPC11に戻った直後のタイミングで一時停止する。非更新対象プログラムPA11が一時停止すると、その旨が非更新対象プログラム呼出停止部152から非更新対象プログラム停止位置戻し部153に通知される。
すると、非更新対象プログラムPA11が要求した更新対象プログラムの処理が仕掛中であるか否かが、非更新対象プログラム停止位置戻し部153で判定される(ステップS31)。非更新対象プログラムPA11が要求した上記の処理が、仕掛中であると判定された場合(判定結果が「YES」の場合)、又は不定である(仕掛中か否かの判断がつかない)と判定された場合には、非更新対象プログラム停止位置戻し部153で次の処理が行われる。つまり、非更新対象プログラムの実行位置を、仕掛中の更新対象プログラムに処理を要求する直前に戻す処理が行われる(ステップS32)。
以上の処理が終了すると、非更新対象プログラムPA11が保持する、更新対象プログラムが仕掛中である旨を示す情報を削除する処理が非更新対象プログラム停止位置戻し部153で行われる(ステップS32)。かかる処理が行われることで、非更新対象プログラムPA11が保持する情報が、仕掛中の更新対象プログラムに処理を要求する直前の情報になる。尚、ステップS33の処理が行われると、図7に示すフローチャートの処理が終了する。
また、ステップS31において、非更新対象プログラムPA11が要求した上記の処理が、仕掛中ではない判定された場合(判定結果が「NO」の場合)には、ステップS32,S33の処理は行われずに、図7に示すフローチャートの処理が終了する。図7に示すフローチャートの処理が終了すると、その旨が非更新対象プログラム停止位置戻し部153から非更新対象プログラム呼出停止部152に通知される。
すると、非更新対象プログラムPA11のコンテキストCA11をプロセス制御装置20に転送する処理(図5中のステップS13)、及び一時停止完了をエンジ用機器30に通知する処理(図5中のステップS14)が、通信管理部151で順に行われる。尚、プロセス制御装置20では、非更新対象プログラムPA11(非更新対象プログラムPA21)を再開させる処理が、第1実施形態と同様に行われる。
以上説明した通り、本実施形態では、エンジ用機器30からの一時停止要求に基づいて、プロセス制御装置10(現用装置)において、更新対象ではない非更新対象プログラムPA11を一時停止させた場合に、次の処理を行う。まず、非更新対象プログラム停止位置戻し部153が、更新対象プログラムが仕掛中であるか否かを判定する処理を行う。そして、非更新対象プログラム停止位置戻し部153が、更新対象プログラムが仕掛中であると判定した場合には、非更新対象プログラムPA11の実行位置を更新対象プログラムに処理を要求する直前に戻す処理を行う。このとき、非更新対象プログラム停止位置戻し部153は、非更新対象プログラムPA11が有する更新対象プログラムが仕掛中である旨を示す情報を削除する。
以上の処理により、非更新対象プログラムPA11が更新対象プログラムに要求した処理は実行されなかったものとされ、非更新対象プログラムPA11の実行位置及び非更新対象プログラムPA11が有する更新対象プログラムの状態を示す情報が、更新対象プログラムに処理を要求する直前に戻される。これにより、プロセス制御システム1の継続動作を保証しつつ、短時間で更新対象プログラムを更新することができる。
〔第3実施形態〕
〈プロセス制御システムの機能構成〉
図8は、本発明の第3実施形態における、プログラム更新制御部(現用装置側及び更新用装置側)の詳細な機能構成を示す機能ブロック図である。尚、図8において、図4に示す構成に相当する構成については、同一の符号を付してある。また、本実施形態によるプロセス制御システム全体の機能構成は、図1〜図3を用いて説明したものと同様である。以下では、前述した第1実施形態と相違する点を中心に説明する。
本実施形態は、非更新対象プログラムPA11から呼び出された更新対象プログラムに仕掛中の処理がある場合に、その処理が全て完了するのを待つようにしたものである。本実施形態では、非更新対象プログラムPA11から呼び出された更新対象プログラムの処理が全て完了した状態で、非更新対象プログラムPA11のコンテキストCA11が更新用装置側に転送することで、プロセス制御システム1の継続動作を保証するようにしている。
例えば、図1,図2に示すタスク13に含まれる非更新対象プログラムPA11が、オペレーティングシステム12によって提供されるタスク間通信を使用して、タスク14に含まれる更新対象プログラムPB12に対して要求を送信して応答を待っている状態で、非更新対象プログラムPA11の呼び出しが一時停止された状況を考える。本実施形態では、このような状況において、更新対象プログラムPB12を含む全ての更新対象プログラムが仕掛中の処理を完了させるのを待つようにしたものである。
図8に示す通り、本実施形態における、現用装置側のプログラム更新制御部15Bは、図4に示す現用装置側のプログラム更新制御部15に、更新対象プログラム仕掛中処理完了待ち部154を追加した構成である。尚、更新用装置側のプログラム更新制御部25は、図4に示すものと同じ構成である。
更新対象プログラム仕掛中処理完了待ち部154は、非更新対象プログラム呼出停止部152が非更新対象プログラムPA11を一時停止させる処理を行った場合に、非更新対象プログラムPA11から呼び出された更新対象プログラムが仕掛中であるか否かを判定する。そして、更新対象プログラム仕掛中処理完了待ち部154は、非更新対象プログラムPA11から呼び出された更新対象プログラムが仕掛中であると判定した場合には、非更新対象プログラムPA11から呼び出された全ての更新対象プログラムが仕掛中の処理を完了させるのを待つ。尚、仕掛中の処理が完了したか否かは、更新対象プログラム仕掛中処理完了待ち部154が、オペレーティングシステム12に依頼することによって把握することができる。
〈プログラム更新方法〉
図9は、本発明の第3実施形態によるプログラム更新方法を示すフローチャートである。尚、図9に示すフローチャートは、プログラム更新制御部15Bに設けられた更新対象プログラム仕掛中処理完了待ち部154で行われる処理を抜き出して図示したものである。図9に示すフローチャートの処理は、図5中のステップS12とステップS13との間で行われる。
図5に示すステップS12の処理が行われると、非更新対象プログラムPA11が一時停止する。具体的に、非更新対象プログラムPA11は、呼出側更新対象プログラムPC11から非更新対象プログラムPA11を呼び出す直前か、非更新対象プログラムPA11から呼出側更新対象プログラムPC11に戻った直後のタイミングで一時停止する。非更新対象プログラムPA11が一時停止すると、その旨が非更新対象プログラム呼出停止部152から更新対象プログラム仕掛中処理完了待ち部154に通知される。
すると、非更新対象プログラムPA11が呼び出した更新対象プログラムは処理が仕掛中であるか否かが、更新対象プログラム仕掛中処理完了待ち部154で判定される(ステップS41)。処理が仕掛中であると判定された場合(判定結果が「YES」の場合)、又は不定である(仕掛中か否かの判断がつかない)と判定された場合には、更新対象プログラム仕掛中処理完了待ち部154で次の処理が行われる。つまり、非更新対象プログラムPA11が呼び出した全ての更新対象プログラムが仕掛中の処理を完了するまで待つ処理が行われる(ステップS42)。尚、ステップS42の処理が行われると、図9に示すフローチャートの処理が終了する。
また、ステップS41において、処理が仕掛中ではないと判定された場合(判定結果が「NO」の場合)には、ステップS42の処理は行われずに、図9に示すフローチャートの処理が終了する。図9に示すフローチャートの処理が終了すると、その旨が更新対象プログラム仕掛中処理完了待ち部154から非更新対象プログラム呼出停止部152に通知される。
すると、非更新対象プログラムPA11のコンテキストCA11をプロセス制御装置20に転送する処理(図5中のステップS13)、及び一時停止完了をエンジ用機器30に通知する処理(図5中のステップS14)が、通信管理部151で順に行われる。尚、プロセス制御装置20では、非更新対象プログラムPA11(非更新対象プログラムPA21)を再開させる処理が、第1実施形態と同様に行われる。
以上説明した通り、本実施形態では、エンジ用機器30からの一時停止要求に基づいて、プロセス制御装置10(現用装置)において、更新対象ではない非更新対象プログラムPA11を一時停止させた場合に、次の処理を行う。まず、更新対象プログラム仕掛中処理完了待ち部154が、更新対象プログラム(非更新対象プログラムPA11が呼び出した更新対象プログラム)は処理が仕掛中であるか否かを判定する処理を行う。そして、更新対象プログラム仕掛中処理完了待ち部154が、上記の更新対象プログラムが仕掛中であると判定した場合には、上記の更新対象プログラムの全てが仕掛中の処理を完了するまで待つ処理を行う。
以上の処理により、非更新対象プログラムPA11から呼び出された更新対象プログラムの処理が全て完了した状態における非更新対象プログラムPA11のコンテキストCA11が更新用装置側に転送されることとなる。これにより、プロセス制御システム1の継続動作を保証しつつ、短時間で更新対象プログラムを更新することができる。
〔第4実施形態〕
〈プロセス制御システムの機能構成〉
図10は、本発明の第4実施形態における、プログラム更新制御部(現用装置側及び更新用装置側)の詳細な機能構成を示す機能ブロック図である。尚、図10において、図4に示す構成に相当する構成については、同一の符号を付してある。また、本実施形態によるプロセス制御システム全体の機能構成は、図1〜図3を用いて説明したものと同様である。以下では、前述した第1実施形態と相違する点を中心に説明する。
本実施形態は、非更新対象プログラムPA11が呼び出す更新対象プログラムの中に更新用装置側に処理を引き継ぐ必要があるものがある場合に、その更新対象プログラムの現用装置側から更新用装置側への処理の引き継ぎを可能とするものである。このような処理の引き継ぎを可能とするために、本実施形態では、非更新対象プログラムPA11のコンテキストCA11に加えて、処理を引き継ぐ必要がある更新対象プログラムのコンテキストを復元するのに必要な復元用データを抽出して現用装置から更新用装置に転送している。そして、更新用装置において、転送されてきた復元用データを用いて更新対象プログラムのコンテキストを復元するようにしている。
図10に示す通り、本実施形態における、現用装置側のプログラム更新制御部15Cは、図4に示す現用装置側のプログラム更新制御部15に、更新対象プログラム仕掛中処理削減待ち部155と更新対象プログラムコンテキスト復元用データ抽出部156とを追加した構成である。また、更新用装置側のプログラム更新制御部25Aは、図4に示すプログラム更新制御部25に、更新対象プログラムコンテキスト復元部254を追加した構成である。
更新対象プログラム仕掛中処理削減待ち部155は、非更新対象プログラム呼出停止部152が非更新対象プログラムPA11を一時停止させる処理を行った場合に、非更新対象プログラムPA11が呼び出す複数の更新対象プログラムの中に処理が仕掛中のものがあるか否かを判定する。更新対象プログラム仕掛中処理削減待ち部155は、上記の更新対象プログラムの中に処理が仕掛中のもの1つでもあると判定した場合には、以下の処理を行う。
つまり、更新対象プログラム仕掛中処理削減待ち部155は、非更新対象プログラムPA11が呼び出す複数の更新対象プログラムの中で仕様が公開されている更新対象プログラム(予め登録された更新対象プログラム)に仕掛中の処理を集約させるための設定を行う。具体的には、仕様が公開されている更新対象プログラムの要求が、残りの更新対象プログラムに伝わらないように設定する。そして、更新対象プログラムの処理が停止するのを待つ。上記の「仕様が公開されている更新対象プログラム」とは、仕様が明確に定義されて公開されているシステムコールや共通ライブラリ等である。
更新対象プログラム仕掛中処理削減待ち部155は、更新対象プログラムの処理が停止しているのを確認した場合に、更新対象プログラムコンテキスト復元用データ抽出部156に対して復元用データの抽出を要求する。尚、更新対象プログラム仕掛中処理削減待ち部155は、更新対象プログラムコンテキスト復元用データ抽出部156から復元用データの抽出完了が通知されたら、その旨を非更新対象プログラム呼出停止部152に通知する。
更新対象プログラムコンテキスト復元用データ抽出部156は、更新対象プログラム仕掛中処理削減待ち部155から復元用データの抽出が要求された場合に、仕様が公開されている更新対象プログラムのコンテキストから、そのコンテキストを復元するのに必要な復元用データを抽出する処理を行う。更新対象プログラムコンテキスト復元用データ抽出部156は、復元用データの抽出が完了したら、抽出完了を更新対象プログラム仕掛中処理削減待ち部155に通知する。
更新対象プログラムコンテキスト復元部254は、コンテキスト初期化制御部253からコンテキストの復元が要求された場合に、現用装置側から転送されてくる復元用データと公開された処理要求の手続とを用いて、仕様が公開されている更新対象プログラムのコンテキストを復元する。更新対象プログラムコンテキスト復元部254は、コンテキストの復元が完了したら、復元完了をコンテキスト初期化制御部253に通知する。
ここで、仕様が公開されている更新対象プログラムの機能がタスク間通信であり、復元すべきコンテキストがそのタスク間通信の処理の結果得られるメールボックス(タスク間通信の未読メッセージの蓄積)である例について考える。この例において、上述した更新対象プログラム仕掛中処理削減待ち部155は、タスク間通信機能に対して、新たに送信されたメッセージの保存は許可するが、蓄積されている未読のメッセージを更新対象プログラムが読み出すことを禁止する設定を行って更新対象プログラムの処理が停止するのを待つ。上記の設定は、例えば更新対象プログラム仕掛中処理削減待ち部155が、オペレーティングシステム12に依頼して、タスク間通信から要求を取り出すシステムコールを停止することによって実現される。
例えば、上記のタスク間通信が図2に示す更新対象プログラムPB13であるとすると、更新対象プログラム仕掛中処理削減待ち部155は、更新対象プログラムPB13の要求が更新対象プログラムPB12,PB14に伝わらないように設定する。尚、更新対象プログラムPB12,PB14が、更新対象プログラムPB13に対して処理を要求することは可能である。このような設定を行ってから、更新対象プログラム仕掛中処理削減待ち部155は、更新対象プログラムの処理が停止するのを待つ。
上記の例において、更新対象プログラムコンテキスト復元用データ抽出部156で抽出される復元用データの項目は、メールボックスの機能仕様で定められた範囲であり、例えば、次の通りである。第1に、復元用データは、メールボックスの生成情報を含む。メールボックスの生成情報は、メッセージの最大保存個数と、1個のメッセージの上限サイズ(例えば、バイト数)である。また、第2に、復元用データは、個々のメッセージ(未読状態のメッセージのみ)の送信情報(差出タスクID、宛先タスクID、日時、緊急度、メッセージ本文)である。
上記の復元用データが現用装置側から更新用装置側に転送された場合に、更新対象プログラムコンテキスト復元部254では、上記第1の復元用データに基づいて、当該タスクの代わりにメールボックスを生成する処理が行われる。また、更新用装置側では、上記第2の復元用データに基づいて、当該タスクの代わりにメッセージをメール送信して、メールボックス上に順次、メッセージを蓄積する処理が行われる。
〈プログラム更新方法〉
図11,図12は、本発明の第4実施形態によるプログラム更新方法を示すフローチャートである。尚、図11に示すフローチャートは、プログラム更新制御部15Cに設けられた更新対象プログラム仕掛中処理削減待ち部155及び更新対象プログラムコンテキスト復元用データ抽出部156で行われる処理を抜き出して図示したものである。図11に示すフローチャートの処理は、図5中のステップS12とステップS13との間で行われる。また、図12に示すフローチャートは、プログラム更新制御部25Aに設けられた更新対象プログラムコンテキスト復元部254で行われる処理を抜き出して図示したものである。図12に示すフローチャートの処理は、図5中のステップS26とステップS27との間で行われる。
図5に示すステップS12の処理が行われると、非更新対象プログラムPA11が一時停止し、その旨が非更新対象プログラム呼出停止部152から更新対象プログラム仕掛中処理削減待ち部155に通知される。すると、非更新対象プログラムPA11が呼び出す複数の更新対象プログラムの中に処理が仕掛中のものがあるか否かを判定する処理が更新対象プログラム仕掛中処理削減待ち部155で行われる(ステップS51)。
処理が仕掛中の更新対象プログラムが1つでもあると判定された場合(判定結果が「YES」の場合)、又は不定である(仕掛中か否かの判断がつかない)と判定された場合には、更新対象プログラム仕掛中処理削減待ち部155で次の処理が行われる。つまり、仕様が公開されている更新対象プログラムの要求が他の更新対象プログラムに伝わらないように設定する処理が更新対象プログラム仕掛中処理削減待ち部155で行われる(ステップS52)。
以上の設定処理が終了すると、更新対象プログラム仕掛中処理削減待ち部155では、非更新対象プログラムPA11が呼び出す全ての更新対象プログラムの処理が停止するまで待つ処理が行われる(ステップS52)。非更新対象プログラムPA11が呼び出す全ての更新対象プログラムの処理の停止が確認されると、更新対象プログラム仕掛中処理削減待ち部155から更新対象プログラムコンテキスト復元用データ抽出部156に対して復元用データの抽出が要求される。
復元用データの抽出の要求があると、停止中の更新対象プログラム(仕様が公開されている更新対象プログラム)のコンテキストから、そのコンテキストを復元するのに必要な復元用データを抽出する処理が更新対象プログラムコンテキスト復元用データ抽出部156で行われる(ステップS54)。復元用データの抽出が完了すると、更新対象プログラムコンテキスト復元用データ抽出部156から更新対象プログラム仕掛中処理削減待ち部155に対して、抽出完了が通知される。
この抽出完了が通知されると、その旨(抽出完了)が更新対象プログラム仕掛中処理削減待ち部155から非更新対象プログラム呼出停止部152に通知される。すると、更新対象プログラムコンテキスト復元用データ抽出部156で抽出された復元用データが、通信管理部151を介して更新用装置に転送する処理が行われる(ステップS55)。以上の処理が行われると、図11に示すフローチャートの処理が終了する。尚、ステップS51において、処理が仕掛中の更新対象プログラムが無いと判定された場合(判定結果が「NO」の場合)にも、図11に示すフローチャートの処理が終了する。
すると、非更新対象プログラムPA11のコンテキストCA11をプロセス制御装置20に転送する処理(図5中のステップS13)、及び一時停止完了をエンジ用機器30に通知する処理(図5中のステップS14)が、通信管理部151で順に行われる。
エンジ用機器30から更新用装置側に再開要求が送信されると、第1実施形態と同様に、図5に示すステップS21〜S26の処理が行われる。ここで、ステップS26の処理が終了すると、コンテキスト初期化制御部253から更新対象プログラムコンテキスト復元部254に対して、コンテキストの復元が要求される。すると、通信管理部251を経由して復元用データを受け取る処理が、更新対象プログラムコンテキスト復元部254で行われる(ステップS61)。
そして、受け取った復元用データと公開された処理要求の手続とを用いて、仕様が公開されている更新対象プログラムのコンテキストを復元する処理が、更新対象プログラムコンテキスト復元部254で行われる。コンテキストの復元が完了すると、更新対象プログラムコンテキスト復元部254からコンテキスト初期化制御部253に、復元完了が通知される。
すると、非更新対象プログラムPA11(非更新対象プログラムPA21)の呼び出しを再開する処理が、非更新対象プログラム呼出再開部252で行われる(図5のステップS27)。非更新対象プログラムPA11(非更新対象プログラムPA21)の再開が完了すると、非更新対象プログラム呼出再開部252から通信管理部251に対し、再開処理が完了した旨が通知される。この通知がされると、再開処理が完了した旨をエンジ用機器30に通知する処理が通信管理部251によって行われる(図5のステップS28)。
以上説明した通り、本実施形態では、現用装置側において、非更新対象プログラムPA11が呼び出す更新対象プログラムの中に処理が仕掛中のものがあると判定した場合には、更新対象プログラムのうちの仕様が公開されている更新対象プログラムの要求が他の更新対象プログラムに伝わらないように設定して更新対象プログラムの処理が停止するのを待つ。そして、仕様が公開されている更新対象プログラムのコンテキストから処理の再開に必要な復元用データを抽出する。
また、本実施形態では、更新用装置側において、現用装置側から転送されてくる復元用データを用いて更新後の更新対象プログラム(仕様が公開されている更新対象プログラム)のコンテキストを復元する。そして、このコンテキストの復元が完了してから、非更新対象プログラムPA11(PA21)の呼び出しを再開する。
以上の処理により、現用装置側における非更新対象プログラムPA11のコンテキストCA11に加えて、非更新対象プログラムPA11から呼び出される更新対象プログラムのうちの仕様が公開されている更新対象プログラムのコンテキストを更新用装置側に復元することができる。これにより、非更新対象プログラムPA11が呼び出す更新対象プログラムの中に更新用装置側に処理を引き継ぐ必要があるものがある場合であっても、プロセス制御システム1の継続動作を保証しつつ、短時間で更新対象プログラムを更新することができる。
〔第5実施形態〕
図13は、本発明の第5実施形態によるプロセス制御システムの概略機能構成を示す機能構成図である。尚、図13において、図1,図2に示す構成に相当する構成については、同一の符号を付してある。また、図13では、本実施形態の説明に必要な機能構成のみ図示している。このため、図13では、例えば図1に示すプロセス制御装置10及びエンジ用機器30等の図示を省略している。尚、本実施形態では、図4に示すプログラム更新制御部15,25が現用装置及び更新用装置にそれぞれ設けられている。以下では、前述した第2実施形態と相違する点を中心に説明する。
前述した第2実施形態は、プロセス制御装置10のみを考慮して、非更新対象プログラムPA11から呼び出された更新対象プログラムに仕掛中の処理がある場合に、その処理を速やかに中断するようにしたものであった。ここで、プロセス制御装置10と通信を行う通信相手装置40(他の装置)が存在する場合には、非更新対象プログラムPA11からの呼び出し(要求)に加えて、通信相手装置40からプロセス制御装置10への要求を考慮して、通信エラー等の異常が発生しないように仕掛中の通信処理を継続する必要がある。
その理由は、仕掛中の通信処理が継続されることで、プロセス制御装置10の一時的な停止を不感にするためである。つまり、プロセス制御装置10が一時的に停止した場合であっても、プロセス制御装置10が継続して動作していると通信相手装置40に思わせるためである。本実施形態は、通信相手装置40が存在する場合であっても、プロセス制御装置10の一時的な停止を不感にすることで、プロセス制御システム1の継続動作を保証しつつ、短時間で更新対象プログラムを更新することができるようにするものである。
図13に示す通り、オペレーティングシステム12は、更新対象プログラムの1つとして、更新対象プログラムPB16を有する。この更新対象プログラムPB16は、オペレーティングシステム12上で稼働するタスク(例えば、タスク13)と通信相手装置40で稼働するタスク(例えば、通信相手装置40のオペレーティングシステム41上で稼働するタスク42)との間の通信を可能とする通信ドライバである。本実施形態では、要求/応答プロトコルを通信ドライバに実装することにより、処理依頼元である要求タスクと処理実行先の応答タスクとの間で要求の送達確認/再送と受信重複排除を実現している。
要求/応答プロトコルでは、要求タスクは、通信データに通信データIDを付与して送信し、応答タスクも通信データIDを付与して返信する。通信データIDとは、通信データを一意に特定する識別子であり、例えば、シーケンス番号である。要求/応答プロトコルを実装した通信機能には、例えばVnetのGET通信、FF(Foundation Fieldbus(登録商標)協会)のClient−Server通信や、PROFIBUS(登録商標)のDP−V1通信等がある。
図14は、本発明の第5実施形態において用いられる要求/応答プロトコルを説明するための図である。図14に示す通り、要求/応答プロトコルでは、プロセス制御装置10(タスク13)が通信相手装置40(タスク42)に要求を送信(通知)した場合には、プロセス制御装置10(タスク13)は、通信相手装置40(タスク42)から応答が返るのを待つ。要求を受信した通信相手装置40(タスク42)は、要求された処理(所定の第1処理)の処理が終了したときに、その処理の結果を示す応答を返信(通知)する。要求を送信したプロセス制御装置10(タスク13)は、通信相手装置40(タスク42)から返信された応答を受信すると仕掛中の処理が完了する。
逆に、通信相手装置40(タスク42)がプロセス制御装置10(タスク13)に要求を送信した場合には、通信相手装置40(タスク42)は、プロセス制御装置10(タスク13)から応答が返るのを待つ。要求を受信したプロセス制御装置10(タスク13)は、要求された処理(所定の第2処理)の処理が終了したときに、その処理の結果を示す応答を返信する。
ここで、通常の汎用的な通信プロトコル(例えば、TCP/IP)を用いた場合には、通信相手装置40からの要求がプロセス制御装置10で正常に受信されると、通信相手装置40から要求された処理がプロセス制御装置10で終了していなくとも、プロセス制御装置10から通信相手装置40に対して肯定応答(ACK)が返信される。これに対し、要求/応答プロトコルを用いた場合には、通信相手装置40から要求された処理がプロセス制御装置10で終了するまでは、プロセス制御装置10から通信相手装置40に対して応答は返信されない。つまり、通常の汎用的な通信プロトコルを用いた場合には、通信ドライバ間の高信頼通信が実現されるのに対し、要求/応答プロトコルを用いた場合には、要求タスクと応答タスクとを結ぶ全ての経路における高信頼通信が実現される。
ここで、応答タスクが稼働する現用装置をオンライン更新する場合においては、オンライン更新によって応答データを紛失する場合がある。このような場合であっても、要求タスクの通信ドライバが要求/応答プロトコルによって応答データの受信を監視しているため、一定時間内に応答データが受信されないときには、その応答データに対する要求データが再送される。その結果、応答データの紛失がリカバリされるので、応答タスクが稼働する現用装置をオンライン更新しても、通信相手装置の要求タスクにオンライン更新を気付かれることはない。
これに対し、要求タスクが稼働する現用装置をオンライン更新する場合においては、オンライン更新によって要求データを紛失する場合がある。このような場合には、要求/応答プロトコルではその要求データの紛失をリカバリすることはできない。そこで、オンライン更新の一時停止時に、要求タスクが既に応答タスクに向けて要求データを送信し、更新対象プログラムが仕掛中である場合には、非更新対象プログラムPA11の停止位置を、更新対象プログラムに要求する直前の状態(更新対象プログラムが仕掛中になる前の状態)に戻すようにしている。これにより、要求データの紛失がリカバリされる。
以上説明した通り、本実施形態では、プロセス制御装置10と通信相手装置40との間で要求/応答プロトコルを用いて通信を行うようにしている。これにより、一定時間に応答が得られない場合には、その応答に対する要求が再送される。その結果として、通信相手装置40が存在する場合であっても、プロセス制御システム1の継続動作を保証しつつ、短時間で更新対象プログラムを更新することができる。
〔第6実施形態〕
〈プロセス制御システムの機能構成〉
図15は、本発明の第6実施形態によるプロセス制御システムの概略機能構成を示す機能構成図である。尚、図15において、図1,図2,図13に示す構成に相当する構成については、同一の符号を付してある。また、図15では、本実施形態の説明に必要な機能構成のみ図示している。このため、図15では、例えば図1に示すプロセス制御装置10及びエンジ用機器30等の図示を省略している。以下では、前述した第1実施形態と相違する点を中心に説明する。
前述した第3実施形態は、プロセス制御装置10のみを考慮して、非更新対象プログラムPA11から呼び出された更新対象プログラムに仕掛中の処理がある場合に、その処理が全て完了するのを待つものであった。そして、全ての処理が完了した後に、非更新対象プログラムPA11のコンテキストCA11が更新用装置側に転送することで、プロセス制御システム1の継続動作を保証するようにしたものであった。
ここで、プロセス制御装置10と通信を行う通信相手装置40が存在する場合には、非更新対象プログラムPA11が一時的に停止した後に、通信相手装置40から新たな要求を受信しないようにする必要がある。これは、通信処理の仕掛中処理をゼロにするためである。つまり、通信相手装置40からの新たな要求が無ければ、既に受信済みの要求に対して応答を返せば仕掛中処理は終了するからである。また、非更新対象プログラムPA11の呼び出しも停止するが、既に要求を出した処理ついては、応答を受信すれば終了する。このように、本実施形態は、通信相手装置40が存在する場合であっても、通信相手装置40から新たな要求は受信しないが、応答は受信するようにすることで、プロセス制御システム1の継続動作を保証しつつ、短時間で更新対象プログラムを更新することができるようにするものである。
図15に示す通り、オペレーティングシステム12は、更新対象プログラムとして、更新対象プログラムPB17,PB18を有する。更新対象プログラムPB17は、オペレーティングシステム12上で稼働するタスク(例えば、タスク13,14)相互間の通信の機能を提供する。更新対象プログラムPB18は、オペレーティングシステム12上で稼働するタスク(例えば、タスク14)と通信相手装置40との間の通信を可能とする通信ドライバである。
上記の通信ドライバ(更新対象プログラムPB18)は、汎用的な通信プロトコル(例えば、TCP/IP)を用いて通信を行う。上記の通信ドライバ(更新対象プログラムPB18)が、TCP/IPを用いて通信を行う場合には、メッセージの送達確認及び再送、並びに重複排除が行われる。つまり、上記の通信ドライバ(更新対象プログラムPB18)は、データを送信した際に肯定応答(ACK)を待ったり、その肯定応答が得られない場合にはデータを再送したり、データを受信する際に重複したデータがある場合にはその重複を排除したりする。
オペレーティングシステム12上では、タスク13,14が稼働する。タスク13では、図13に示すタスク13と同様に、非更新対象プログラムPA11が稼働する。タスク14(使用タスク)では、更新対象プログラムPB12が稼働する。更新対象プログラムPB12は、更新対象プログラムPB18へのインターフェイスとして機能する。つまり、タスク13の非更新対象プログラムPA11は、更新対象プログラムPB17(タスク間通信)及び更新対象プログラムPB12(中継タスク)を経由して更新対象プログラムPB18(通信ドライバ)にアクセスできる。
従って、タスク13の非更新対象プログラムPA11は、上記の更新対象プログラムPB17(タスク間通信)、更新対象プログラムPB12(中継タスク)、及び更新対象プログラムPB18(通信ドライバ)を経由して、通信相手装置40との間で双方向の通信を行うことができる。具体的に、タスク13の非更新対象プログラムPA11は、例えば通信相手装置40のオペレーティングシステム41上で稼働するタスク42との間で双方向の通信を行うことができる。尚、タスク13とタスク42との間では、例えばTCP/IP等の汎用的な通信プロトコルを用いて通信が行われる。
尚、タスク13で稼働する非更新対象プログラムPA11はコンテキストCA11を有している。タスク14で稼働する更新対象プログラムPB12は、コンテキストCB12を有している。また、オペレーティングシステム12が有する更新対象プログラムPB17は、コンテキストCB17を有しており、更新対象プログラムPB18は、コンテキストCB18を有している。
図16は、本発明の第6実施形態における、プログラム更新制御部(現用装置側及び更新用装置側)の詳細な機能構成を示す機能ブロック図である。尚、図16において、図8に示す構成に相当する構成については、同一の符号を付してある。図16に示す通り、本実施形態における、現用装置側のプログラム更新制御部15Dは、図8に示す現用装置側のプログラム更新制御部15Bに、通信受口閉塞部157を追加した構成である。尚、更新用装置側のプログラム更新制御部25は、図8に示すものと同じ構成である。
通信受口閉塞部157は、外部装置(例えば、通信相手装置40)から新たな処理の要求を受信しないように、通信ドライバ(例えば、図15に示す更新対象プログラムPB18)の受信口を閉塞する。通信受口閉塞部157は、非更新対象プログラム呼出停止部152からの要求があった場合に、直ちに通信ドライバの受信口を閉塞する。通信受口閉塞部157は、更新対象プログラム仕掛中処理完了待ち部154よりも前に、非更新対象プログラム呼出停止部152によって処理の開始が要求される。通信ドライバの受信口の閉塞は、例えば通信受口閉塞部157が、オペレーティングシステム12の機能を使用して、受信割込みマスクを操作することによって実現される。
尚、通信ドライバが、汎用的な通信プロトコルを用いて通信を行うものである場合には、通信ドライバの受信口が一時的に閉塞されたとしても、再送期間内に通信が再開されればデータ紛失を防ぐことができる。尚、上記の「再送期間」は、要求を送信してから次の要求を送信するまでの待ち時間(応答の待ち時間)Twに再送回数Nを乗じて得られる長さを有する期間である。
〈プログラム更新方法〉
図17は、本発明の第6実施形態によるプログラム更新方法を示すフローチャートである。尚、図17に示すフローチャートは、プログラム更新制御部15Dに設けられた更新対象プログラム仕掛中処理完了待ち部154及び通信受口閉塞部157で行われる処理を抜き出して図示したものである。図17に示すフローチャートの処理は、図5中のステップS12とステップS13との間で行われる。
図5に示すステップS12の処理が行われると、非更新対象プログラムPA11が一時停止する。具体的に、非更新対象プログラムPA11は、呼出側更新対象プログラムPC11から非更新対象プログラムPA11を呼び出す直前か、非更新対象プログラムPA11から呼出側更新対象プログラムPC11に戻った直後のタイミングで一時停止する。非更新対象プログラムPA11が一時停止すると、非更新対象プログラム呼出停止部152から通信受口閉塞部157に対して処理の開始が要求される。すると、通信ドライバ(図15に示す更新対象プログラムPB18)が新たな処理の要求を受信しないように、通信ドライバの受信口を閉塞する処理が通信受口閉塞部157によって直ちに行われる(ステップS71)。
通信ドライバの受信口を閉塞する処理が完了すると、通信受口閉塞部157から非更新対象プログラム呼出停止部152に対して、処理完了が通知される。この処理完了が通知されると、非更新対象プログラム呼出停止部152から更新対象プログラム仕掛中処理完了待ち部154に対して処理の開始が要求される。すると、非更新対象プログラムPA11により呼び出された更新対象プログラム、及び通信相手装置40からの要求により呼び出された更新対象プログラムは処理が仕掛中であるか否かが、更新対象プログラム仕掛中処理完了待ち部154で判定される(ステップS72)。
処理が仕掛中であると判定された場合(ステップS72の判定結果が「YES」の場合)には、更新対象プログラム仕掛中処理完了待ち部154で次の処理が行われる。つまり、非更新対象プログラムPA11により呼び出された更新対象プログラム、及び通信相手装置40からの要求により呼び出された更新対象プログラムの全てが仕掛中の処理を完了するまで待つ処理が行われる(ステップS73)。尚、ステップS73の処理が行われると、図17に示すフローチャートの処理が終了する。
また、ステップS72において、処理が仕掛中ではないと判定された場合(判定結果が「NO」の場合)には、ステップS73の処理は行われずに、図17に示すフローチャートの処理が終了する。図17に示すフローチャートの処理が終了すると、その旨が更新対象プログラム仕掛中処理完了待ち部154から非更新対象プログラム呼出停止部152に通知される。
すると、非更新対象プログラムPA11のコンテキストCA11をプロセス制御装置20に転送する処理(図5中のステップS13)、及び一時停止完了をエンジ用機器30に通知する処理(図5中のステップS14)が、通信管理部151で順に行われる。尚、プロセス制御装置20では、非更新対象プログラムPA11(非更新対象プログラムPA21)を再開させる処理が、第1実施形態と同様に行われる。
以上説明した通り、本実施形態では、エンジ用機器30からの一時停止要求に基づいて、プロセス制御装置10(現用装置)において、更新対象ではない非更新対象プログラムPA11を一時停止させた場合に、次の処理を行う。まず、通信受口閉塞部157が、通信ドライバ(図15に示す更新対象プログラムPB18)の受信口を閉塞する処理を行う。
次に、更新対象プログラム仕掛中処理完了待ち部154が、非更新対象プログラムPA11により呼び出された更新対象プログラム、及び通信相手装置40からの要求により呼び出された更新対象プログラムは処理が仕掛中であるか否かを判定する処理を行う。そして、更新対象プログラム仕掛中処理完了待ち部154が、上記の更新対象プログラムが仕掛中であると判定した場合には、上記の更新対象プログラムの全てが仕掛中の処理を完了するまで待つ処理を行う。
以上の処理により、非更新対象プログラムPA11により呼び出された更新対象プログラム、及び通信相手装置40からの要求により呼び出された更新対象プログラムの処理が全て完了した状態における非更新対象プログラムPA11のコンテキストCA11が更新用装置側に転送されることとなる。これにより、通信相手装置40が存在する場合であっても、プロセス制御システム1の継続動作を保証しつつ、短時間で更新対象プログラムを更新することができる。
〔第7実施形態〕
〈プロセス制御システムの機能構成〉
図18は、本発明の第7実施形態によるプロセス制御システムの概略機能構成を示す機能構成図である。尚、図18において、図15に示す構成に相当する構成については、同一の符号を付してある。また、図18では、本実施形態の説明に必要な機能構成のみ図示している。このため、図18では、例えば図1に示すプロセス制御装置10及びエンジ用機器30等の図示を省略している。以下では、前述した第4実施形態と相違する点を中心に説明する。
前述した第4実施形態は、プロセス制御装置10のみを考慮して、非更新対象プログラムPA11が呼び出す更新対象プログラムの中に更新用装置側に処理を引き継ぐ必要があるものがある場合に、その更新対象プログラムの現用装置側から更新用装置側への処理の引き継ぎを可能とするものであった。ここで、第6実施形態と同様に、プロセス制御装置10と通信を行う通信相手装置40が存在する場合には、非更新対象プログラムPA11が一時的に停止した後に、通信相手装置40から新たな要求を受信しないようにする必要がある。本実施形態は、通信相手装置40が存在する場合であっても、通信相手装置40から新たな要求を受信しないようにすることで、プロセス制御システム1の継続動作を保証しつつ、短時間で更新対象プログラムを更新することができるようにするものである。
図18に示す通り、オペレーティングシステム12は、更新対象プログラムとして、更新対象プログラムPB17,PB18に加えて更新対象プログラムPB19を有する。更新対象プログラムPB19は、更新対象プログラムPB17と同様に、オペレーティングシステム12上で稼働するタスク相互間の通信の機能(タスク間通信機能)を提供する。尚、図18では、更新対象プログラムPB17,PB19が有するコンテキストをまとめてコンテキストCB17として図示している。
タスク13の非更新対象プログラムPA11は、上記の更新対象プログラムPB17(タスク間通信)、更新対象プログラムPB12(中継タスク)、更新対象プログラムPB19(タスク間通信)、及び更新対象プログラムPB18(通信ドライバ)を経由して、通信相手装置40との間で双方向の通信を行うことができる。尚、タスク14と通信相手装置40のタスク42との間では、例えばTCP/IP等の汎用的な通信プロトコルを用いて通信が行われる。
図19は、本発明の第7実施形態における、プログラム更新制御部(現用装置側及び更新用装置側)の詳細な機能構成を示す機能ブロック図である。尚、図19において、図10に示す構成に相当する構成については、同一の符号を付してある。図19に示す通り、本実施形態における、現用装置側のプログラム更新制御部15Eは、図10に示す現用装置側のプログラム更新制御部15Cに、通信受口閉塞部157を追加した構成である。尚、更新用装置側のプログラム更新制御部25Aは、図10に示すものと同じ構成である。
通信受口閉塞部157は、図16に示したものと同様のものである。つまり、通信受口閉塞部157は、非更新対象プログラム呼出停止部152からの要求があった場合に、外部装置(例えば、通信相手装置40)から新たな処理の要求を受信しないように、通信ドライバ(図18に示す更新対象プログラムPB18)の受信口を直ちに閉塞する。尚、通信ドライバの受信口の閉塞は、例えば通信受口閉塞部157が、オペレーティングシステム12の機能を使用して、受信割込みマスクを操作することによって実現される。
〈プログラム更新方法〉
図20は、本発明の第7実施形態によるプログラム更新方法を示すフローチャートである。尚、図20に示すフローチャートは、プログラム更新制御部15Eに設けられた更新対象プログラム仕掛中処理削減待ち部155、更新対象プログラムコンテキスト復元用データ抽出部156、及び通信受口閉塞部157で行われる処理を抜き出して図示したものである。図20に示すフローチャートの処理は、図5中のステップS12とステップS13との間で行われる。
図5に示すステップS12の処理が行われると、非更新対象プログラムPA11が一時停止する。具体的に、非更新対象プログラムPA11は、呼出側更新対象プログラムPC11から非更新対象プログラムPA11を呼び出す直前か、非更新対象プログラムPA11から呼出側更新対象プログラムPC11に戻った直後のタイミングで一時停止する。非更新対象プログラムPA11が一時停止すると、非更新対象プログラム呼出停止部152から通信受口閉塞部157に対して処理の開始が要求される。すると、通信ドライバ(図18に示す更新対象プログラムPB18)が新たな処理の要求を受信しないように、通信ドライバの受信口を閉塞する処理が通信受口閉塞部157によって直ちに行われる(ステップS81)。
通信ドライバの受信口を閉塞する処理が完了すると、図11に示すフローチャートの処理と同様の処理(ステップS51〜S55の処理)が行われる。尚、図18に示す機能ブロックにおいて、仕様が公開されている更新対象プログラムは、更新対象プログラムPB17,PB19(タスク間通信)である。このため、ステップS52の処理では、更新対象プログラム仕掛中処理削減待ち部155によって次の処理が行われる。
つまり、更新対象プログラムPB17(タスク間通信)の要求が、非更新対象プログラムPA11と更新対象プログラムPB12(中継タスク)とに伝わらないように設定する処理が行われる。また、更新対象プログラムPB19(タスク間通信)の要求が、更新対象プログラムPB12(中継タスク)と更新対象プログラムPB18(通信ドライバ)とに伝わらないように設定する処理が行われる。
図20に示すフローチャートの処理が終了すると、非更新対象プログラムPA11のコンテキストCA11をプロセス制御装置20に転送する処理(図5中のステップS13)、及び一時停止完了をエンジ用機器30に通知する処理(図5中のステップS14)が、通信管理部151で順に行われる。尚、プロセス制御装置20では、非更新対象プログラムPA11(非更新対象プログラムPA21)を再開させる処理が、第4実施形態と同様に行われる。
以上説明した通り、本実施形態では、エンジ用機器30からの一時停止要求に基づいて、プロセス制御装置10(現用装置)において、更新対象ではない非更新対象プログラムPA11を一時停止させた場合に、通信受口閉塞部157が、通信ドライバ(図18に示す更新対象プログラムPB18)の受信口を閉塞する処理を行ってから、第4実施形態と同余の処理を行う。これにより、通信相手装置40が存在する場合であっても、プロセス制御システム1の継続動作を保証しつつ、短時間で更新対象プログラムを更新することができる。
〔プロセス制御システムの適用例〕
図21は、本発明の実施形態によるプロセス制御システムを、工業プロセスを制御するシステムに適用した例を示すブロック図である。図21に示す通り、プロセス制御装置10(現用装置)及びプロセス制御装置20(更新用装置)は、ネットワークN1を介して多数のフィールド機器FDに接続されている。フィールド機器FDは、プラント等の工業プロセスにおける各種状態を計測したり、それらの状態を制御したりするための機器類である。具体的に、フィールド機器FDは、例えば、流量計、温度計、湿度計、圧力計等のセンサや、バルブ、ポンプ、アクチュエータ等といった機器である。また、プロセス制御装置10,20は、ネットワークN2を介してエンジ用機器30に接続されている。
プロセス制御装置10,20に搭載された非更新対象プログラムPA11は、フィールド機器FDから収集されたデータ(プロセス値)を入力とし、PID制御やシーケンス制御のための演算、又はシミュレーション処理等を行う。そして、非更新対象プログラムPA11は、演算結果や処理結果に応じてフィールド機器FDを操作したり、他の制御装置に対する出力を行ったりする。非更新対象プログラムPA11は、その際に、オペレーティングシステム12等が提供する機能を利用するために、更新対象プログラムを呼び出す場合がある。このようにして、プロセス制御装置10,20は、工業プロセスの状態を把握するとともに、工業プロセスの状態が所望の状態になるように制御を行う。
以下、プロセス制御装置の更新対象プログラムを更新するための処理について説明する。当初は、プロセス制御装置10が現用装置として稼働し、プロセス制御装置20は更新用装置としてスタンバイしている。このとき、プロセス制御装置10は、フィールド機器FDを介して、工業プロセスを制御している。プロセス制御のためのコンテキストは、現用装置であるプロセス制御装置10側だけで保持され、適宜更新されている。
次に、更新対象プログラムを更新するため、更新用装置であるプロセス制御装置20に更新後の更新対象プログラムがインストール(更新)され、必要なテストが行われる。インストール及びテストの完了後、適切なタイミングで現用装置と更新用装置との切り替えが行われる。
具体的には、エンジ用機器30が、プロセス制御装置10に対して、一時停止を指示する。プロセス制御装置10のプログラム更新制御部15は、エンジ用機器30からの指示に従って、非更新対象プログラムPA11及び更新対象プログラムを停止させる。このとき、プログラム更新制御部15は、非更新対象プログラムPA11のコンテキストCA11を更新用装置であるプロセス制御装置20のプログラム更新制御部25に転送する。また、更新対象プログラムのコンテキストを復元する必要がある場合には、復元用データを抽出してプロセス制御装置20のプログラム更新制御部25に転送する。
プロセス制御装置10の停止後、一時的に、現用装置及び更新用装置の何れのプロセス制御装置も稼働していない期間が生じる。しかしながら、その期間の長さは、工業プロセス制御に影響を与えないようあらかじめ設計(規定)された所定時間内であり、その期間内においても工業プロセスは引き続き継続する。
そして、エンジ用機器30からの指示に従って、プログラム更新制御部25は、プログラム更新制御部15から転送された引継データ(コンテキストCA11,復元用データ)を受信する。また、プログラム更新制御部25は、プロセス制御装置20において、引継データに基づいて、コンテキストを復元し、非更新対象プログラムPA21及び更新対象プログラムを起動させる。そして、プロセス制御装置20の非更新対象プログラムPA21及び更新対象プログラムは、復元されたコンテキストに基づいて、工業プロセスを制御する処理を再開する。再開時及びその後は、プロセス制御装置20が現用装置として機能する。
尚、前述の通り、プログラム更新制御部25は、エンジ用機器30からの指示に従って、引継データの受信、及び非更新対象プログラムPA21及び更新対象プログラムの起動を行う代わりに、プログラム更新制御部15からのメッセージに従ってそれらを行ってもよい。この場合において、エンジ用機器30は、プログラム更新制御部25に再開を要求するメッセージを送信しない。代わりに、プログラム更新制御部15は一時停止完了のメッセージをプログラム更新制御部25にも通知する。
〔プロセス制御装置〕
図22は、本発明の他の実施形態によるプロセス制御装置の概略機能構成を示す機能構成図である。尚、図22において、図1に示す構成に相当する構成については、同一の符号を付してある。前述した第1〜第7実施形態は、2台のプロセス制御装置10,20を用いて、プログラムの更新及び稼働するプロセス制御装置の移行を行うものであった。これに対し、本実施形態は、1台のプロセス制御装置50のみでプログラムの更新等を行うものである。
図22に示す通り、本実施形態のプロセス制御装置50は、ハードウェア51及びハイパーバイザ52(プログラム実行部)を備える。ハードウェア51は、図1に示すハードウェア11,21と同様に、CPU、メモリ、入出力装置、通信装置等を備えており、プロセス制御装置50で用いられる各種プログラム(非更新対象プログラム及び更新対象プログラムを含む)を実行させる。
ハイパーバイザ52は、ハードウェア51上でハードウェアの代わりとして仮想的に動作し、オペレーティングシステム12、タスク13、及びプログラム更新制御部15()と、オペレーティングシステム22、タスク23、及びプログラム更新制御部25とを、それぞれ独立して動作させるために設けられる。つまり、ハイパーバイザ52は、図1に示すプロセス制御装置10で動作している機能と、プロセス制御装置20で動作している機能とを1台のプロセス制御装置50で独立して動作させるために設けられる。
このように、本実施形態では、プロセス制御装置10で動作している機能と、プロセス制御装置20で動作している機能とが1台のプロセス制御装置50で独立して動作している点が、前述した各実施形態と異なるだけであり、プログラムの更新等は前述した各実施形態と同様に行われる。このため、ここでの詳細な説明は省略する。
以上説明した通り、前述した何れかの実施形態を用いることにより、工業プロセスを中断させることなく、オンライン状態のまま、プロセス制御装置の更新対象プログラムを更新することが可能となる。
尚、既に述べたように、各実施形態におけるプロセス制御装置、エンジ用機器、フィールドコントロールステーション、及びフィールド機器の少なくとも一部の機能をコンピュータで実現することができる。その場合において、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。
上記の「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM、DVD−ROM、USBメモリ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。更に「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、一時的に、動的にプログラムを保持するもの、その場合のサーバーやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、更に前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
以上、本発明の実施形態によるプロセス制御システム、プロセス制御装置、及びプログラム更新方法について説明した。本発明は上述した実施形態に制限される訳ではなく、本発明の範囲内で任意に変更が可能である。例えば、組み合わせることが可能な限りにおいて、上述した複数の実施形態を組み合わせて実施してもよい。
例えば、図22に示すプロセス制御装置50において、プログラム更新制御部15,25の組み合わせに代えて、次に示す組み合わせを用いることが可能である。つまり、図6に示すプログラム更新制御部15A,25の組み合わせ、図8に示すプログラム更新制御部15B,25の組み合わせ、図10に示すプログラム更新制御部15C,25Aの組み合わせを用いることができる。また、図16に示すプログラム更新制御部15D,25の組み合わせ、図19に示すプログラム更新制御部15E,25Aの組み合わせを用いることもできる。
また、上述した複数の実施形態においては、何れも、プロセス制御システムやプロセス制御装置の構成として説明した。しかしながら、これらの実施形態が備える構成を、他の任意のシステムに適用することが可能である。他の任意のシステムに適用する場合において、上述した実施形態における非更新対象プログラムPA11に相当するプログラムが、同じく上述した実施形態における呼出側更新対象プログラムPC11(図3参照)に相当するプログラムから所定の時間周期で呼び出され、所定の計算処理を行う形態が特に好適である。
また、上で説明した複数の実施形態において、オペレーティングシステムは、組込システムを制御するための組込OSであってもよく、汎用コンピュータを制御するための汎用OSであってもよい。また、実施形態においてはオペレーティングシステム下で管理される処理の実行単位を「タスク」と呼んだが、これを「プロセス」に置き換えた場合にも同様にこれらの実施形態の構成を適用することができる。
1 プロセス制御システム
10 プロセス制御装置
11 ハードウェア
15 プログラム更新制御部
15A〜15E プログラム更新制御部
20 プロセス制御装置
21 ハードウェア
25 プログラム更新制御部
25A プログラム更新制御部
50 プロセス制御装置
51 ハードウェア
52 ハイパーバイザ
CA11 コンテキスト
PA11,PA21 非更新対象プログラム
PB11,PB21 更新対象プログラム

Claims (10)

  1. 第1プロセス制御装置と第2プロセス制御装置とを備えるプロセス制御システムであって、
    前記第1プロセス制御装置は、更新対象ではない非更新対象プログラムと、更新対象となり得る更新対象プログラムとを実行させる第1プログラム実行部と、
    外部からの一時停止要求に基づいて、前記非更新対象プログラムを一時停止させ、前記非更新対象プログラムのコンテキストを前記第2プロセス制御装置に転送する第1プログラム更新制御部と、を備え、
    前記第2プロセス制御装置は、更新対象ではない非更新対象プログラムと、更新後の更新対象プログラムとを実行させる第2プログラム実行部と、
    外部からの再開要求に基づいて、前記第1プログラム更新制御部から転送される前記コンテキストを用いて前記非更新対象プログラムのコンテキストを復元して前記非更新対象プログラムを前記第2プログラム実行部で再開させるとともに、前記更新対象プログラムのコンテキストを初期化して前記更新対象プログラムを前記第2プログラム実行部で実行させる第2プログラム更新制御部と、を備える
    プロセス制御システム。
  2. 前記第1プログラム更新制御部は、前記非更新対象プログラムが要求した前記更新対象プログラムの処理が仕掛中であると判定した場合には、前記非更新対象プログラムの実行位置を前記更新対象プログラムに処理を要求する直前に戻すとともに、前記更新対象プログラムが仕掛中である旨を示す情報を削除する、請求項1記載のプロセス制御システム。
  3. 前記第1プログラム更新制御部は、前記非更新対象プログラムが呼び出した前記更新対象プログラムの処理が仕掛中であると判定した場合には、前記更新対象プログラムが仕掛中の処理を完了させるのを待つ、請求項1記載のプロセス制御システム。
  4. 前記第1プログラム更新制御部は、前記非更新対象プログラムが呼び出す前記更新対象プログラムの中に処理が仕掛中のものがあると判定した場合には、前記更新対象プログラムのうちの予め登録された更新対象プログラムの要求が残りの更新対象プログラムに伝わらないように設定して前記更新対象プログラムの処理が停止するのを待ってから、前記予め登録された更新対象プログラムのコンテキストから処理の再開に必要な復元用データを抽出して前記第2プロセス制御装置に転送し、
    前記第2プログラム更新制御部は、前記第1プログラム更新制御部から転送される前記復元用データを用いて更新後の前記予め登録された更新対象プログラムのコンテキストを復元する、
    請求項1記載のプロセス制御システム。
  5. 前記更新対象プログラムは、所定の第1処理の要求を通知した場合に、前記所定の第1処理の結果を示す応答が通知され、所定の第2処理の要求が通知された場合に、前記所定の第2処理の結果を示す応答を通知する要求/応答プロトコルを用いて他の装置と通信を行う、請求項2記載のプロセス制御システム。
  6. 前記第1プログラム更新制御部は、前記更新対象プログラムが他の装置との間の通信を可能とする通信ドライバである場合には、前記他の装置からの新たな要求を取り込まないように前記更新対象プログラムの受信口を閉塞する、請求項3又は請求項4記載のプロセス制御システム。
  7. 更新対象ではない非更新対象プログラムと、更新対象となり得る更新対象プログラムとを実行させるプログラム実行部と、
    外部からの一時停止要求に基づいて、前記非更新対象プログラムを一時停止させ、前記非更新対象プログラムのコンテキストを転送する第1プログラム更新制御部と、
    外部からの再開要求に基づいて、前記第1プログラム更新制御部から転送される前記コンテキストを用いて前記非更新対象プログラムのコンテキストを復元して前記非更新対象プログラムを前記プログラム実行部で再開させるとともに、更新後の更新対象プログラムのコンテキストを初期化して前記更新後の更新対象プログラムを前記プログラム実行部で実行させる第2プログラム更新制御部と、
    を備えるプロセス制御装置。
  8. 更新対象ではない非更新対象プログラムと、更新対象となり得る更新対象プログラムとが実行されるプロセス制御装置におけるプログラム更新方法であって、
    外部からの一時停止要求に基づいて、前記非更新対象プログラムを一時停止させ、前記非更新対象プログラムのコンテキストを転送する第1ステップと、
    外部からの再開要求に基づいて、前記第1ステップで転送された前記コンテキストを用いて更新対象ではない非更新対象プログラムのコンテキストを復元して前記非更新対象プログラムを再開させるとともに、更新後の更新対象プログラムのコンテキストを初期化して前記更新対象プログラムを実行させる第2ステップと、
    を有するプログラム更新方法。
  9. 前記第1ステップ及び前記第2ステップは、同じプロセス制御装置で行われる、請求項8記載のプログラム更新方法。
  10. 前記第1ステップ及び前記第2ステップは、異なるプロセス制御装置で行われる、請求項8記載のプログラム更新方法。
JP2018180715A 2018-09-26 2018-09-26 プロセス制御システム、プロセス制御装置、及びプログラム更新方法 Active JP6819660B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2018180715A JP6819660B2 (ja) 2018-09-26 2018-09-26 プロセス制御システム、プロセス制御装置、及びプログラム更新方法
US16/582,184 US10956149B2 (en) 2018-09-26 2019-09-25 Process control system, process control apparatus and program update method
EP19199635.4A EP3629111A3 (en) 2018-09-26 2019-09-25 Process control system, process control apparatus and program update method
CN202310354639.9A CN116382203A (zh) 2018-09-26 2019-09-26 过程控制系统、过程控制装置和程序更新方法
CN202310358101.5A CN116382205A (zh) 2018-09-26 2019-09-26 过程控制系统、过程控制装置和程序更新方法
CN201910917030.1A CN110955199B (zh) 2018-09-26 2019-09-26 过程控制系统、过程控制装置和程序更新方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018180715A JP6819660B2 (ja) 2018-09-26 2018-09-26 プロセス制御システム、プロセス制御装置、及びプログラム更新方法

Publications (2)

Publication Number Publication Date
JP2020052668A JP2020052668A (ja) 2020-04-02
JP6819660B2 true JP6819660B2 (ja) 2021-01-27

Family

ID=68072112

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018180715A Active JP6819660B2 (ja) 2018-09-26 2018-09-26 プロセス制御システム、プロセス制御装置、及びプログラム更新方法

Country Status (4)

Country Link
US (1) US10956149B2 (ja)
EP (1) EP3629111A3 (ja)
JP (1) JP6819660B2 (ja)
CN (3) CN116382205A (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220317645A1 (en) 2021-03-30 2022-10-06 Yokogawa Electric Corporation Process control system, process control apparatus, and program update method
JP7380635B2 (ja) 2021-04-09 2023-11-15 横河電機株式会社 プログラム修正支援装置及びプログラム修正支援方法
US20240103829A1 (en) * 2022-09-23 2024-03-28 Dell Products, L.P. Systems and methods for firmware update using multiple remote access controllers
JP7446537B1 (ja) 2023-03-14 2024-03-08 三菱電機株式会社 プログラマブルロジックコントローラ、制御方法及びプログラム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH113240A (ja) 1997-06-13 1999-01-06 Yokogawa Electric Corp 制御用計算機システム
JP2006099333A (ja) * 2004-09-29 2006-04-13 Sony Corp 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
JP2011154437A (ja) * 2010-01-26 2011-08-11 Alpine Electronics Inc 共用プログラムの更新システム
CN102855174B (zh) * 2011-06-28 2016-06-01 北京奇虎科技有限公司 自动化测试中可自动恢复的目标程序运行控制方法及装置
JP5834935B2 (ja) 2012-01-17 2015-12-24 トヨタ自動車株式会社 安全制御装置及び安全制御方法
JP5561298B2 (ja) 2012-03-23 2014-07-30 横河電機株式会社 プロセス制御システム
JP5713056B2 (ja) * 2013-06-24 2015-05-07 横河電機株式会社 プロセス制御装置及びシステム並びにその更新方法
CN103454959B (zh) * 2013-09-03 2015-12-02 北京天诚同创电气有限公司 基于远程控制的工控系统及更新控制程序的方法
JP6020476B2 (ja) * 2014-01-20 2016-11-02 横河電機株式会社 プロセス制御装置及びその更新方法
CN104572283B (zh) * 2015-01-06 2017-12-05 曾小荟 一种暂停与恢复mpi并行应用程序运行的方法
CN105138459B (zh) * 2015-09-11 2019-02-15 珠海豹趣科技有限公司 一种对软件程序进行测试的方法及装置
JP6555096B2 (ja) * 2015-11-18 2019-08-07 富士通株式会社 情報処理装置およびプログラム更新制御方法
JP6797588B2 (ja) 2016-07-22 2020-12-09 株式会社東芝 検証システム

Also Published As

Publication number Publication date
CN110955199B (zh) 2023-04-21
CN116382203A (zh) 2023-07-04
US20200097282A1 (en) 2020-03-26
EP3629111A2 (en) 2020-04-01
US10956149B2 (en) 2021-03-23
EP3629111A3 (en) 2020-06-24
CN110955199A (zh) 2020-04-03
JP2020052668A (ja) 2020-04-02
CN116382205A (zh) 2023-07-04

Similar Documents

Publication Publication Date Title
JP6819660B2 (ja) プロセス制御システム、プロセス制御装置、及びプログラム更新方法
JP5713056B2 (ja) プロセス制御装置及びシステム並びにその更新方法
JP5624655B2 (ja) 分散型サーバーシステムにおいてバックアップマネージャを転送するメッセージ
JP5655677B2 (ja) ハイパーバイザ置き換え方法および情報処理装置
CN107315656B (zh) 多内核的嵌入式plc软件恢复方法和plc
JP2013012250A (ja) ファームウェアイメージの更新および管理
US20080010641A1 (en) Apparatus and method for guaranteed batch event delivery in a process control system
US7689790B2 (en) Storage system, remote copy and management method therefor
US8473702B2 (en) Information processing apparatus, execution environment transferring method and program thereof
CN102141947A (zh) 一种对采用嵌入式操作系统的计算机应用系统中异常任务的处理方法及系统
JPWO2012020482A1 (ja) バックアップ方法、情報処理装置及びプログラム
US10162713B2 (en) Persistent application activation and timer notifications
JP2005267216A (ja) ストレージリモートコピー方法および情報処理システム
US20060041786A1 (en) Method of checkpointing parallel processes in execution within plurality of process domains
JP2000267872A (ja) 2重化システムにおける再開処理方式
WO2012166740A2 (en) Episodic coordination model for distributed applications
JP2010067115A (ja) データ記憶システム、データ記憶方法
JP2022155581A (ja) プロセス制御システム、プロセス制御装置、及びプログラム更新方法
EP2038714A2 (en) Apparatus and method for guaranteed batch event delivery in a process control system
WO2011158367A1 (ja) 実行中のプログラムの更新技術
JP2010146436A (ja) 監視システム、及びその制御方法、プログラム
JP4193754B2 (ja) データ二重化方法とプログラム
US8135982B2 (en) Parallel multiplex storage systems
JP6557197B2 (ja) 分散dbシステム、db装置、および、サービス再開方法
JPH11345216A (ja) 移動型エージェントのコード管理方法、ならびにシステム、及び同方法がプログラムされ記録される記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191031

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200827

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200915

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201020

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20201201

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201214

R150 Certificate of patent or registration of utility model

Ref document number: 6819660

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150