(57)【要約】【課題】仮想化技術を採用した制御装置に対して安全にシャットダウンできる構成が要望されている。【解決手段】本技術のある局面に従う設備または機械を制御する制御装置は、１または複数のプロセッサと、１または複数のプロセッサ上で並列的に実行される、汎用ＯＳと、設備または機械の制御を実現するためのユーザプログラムの実行環境を提供するリアルタイムＯＳと、外部からの遮断事象を受信する入力インターフェイスとを含む。リアルタイムＯＳは、遮断事象に応答して、リアルタイムＯＳのシャットダウンに必要なシャットダウン準備処理を実行する機能と、シャットダウン準備処理の実行後に、汎用ＯＳに対してシャットダウンを指示する機能と、汎用ＯＳからのシャットダウン完了の通知の受信を含む、予め定められた条件が満たされると、リアルタイムＯＳのシャットダウンを完了して制御装置の電源を遮断する機能とを含む。【選択図】図１
2017187992.tif 000002
【特許請求の範囲】
【請求項１】
設備または機械を制御する制御装置であって、
１または複数のプロセッサと、
前記１または複数のプロセッサ上で並列的に実行される、汎用オペレーティングシステム（ＯＳ）と、前記設備または機械の制御を実現するためのユーザプログラムの実行環境を提供するリアルタイムＯＳと、
外部からの遮断事象を受信する入力インターフェイスとを備え、
前記リアルタイムＯＳは、
前記遮断事象に応答して、前記リアルタイムＯＳのシャットダウンに必要なシャットダウン準備処理を実行する機能と、
前記シャットダウン準備処理の実行後に、前記汎用ＯＳに対してシャットダウンを指示する機能と、
前記汎用ＯＳからのシャットダウン完了の通知の受信を含む、予め定められた条件が満たされると、前記リアルタイムＯＳのシャットダウンを完了して前記制御装置の電源を遮断する機能とを備える、制御装置。
【請求項２】
前記リアルタイムＯＳは、前記汎用ＯＳに対してシャットダウンを指示してから予め定められた期間が経過すると、前記汎用ＯＳからのシャットダウン完了の通知を受信しなくとも、前記制御装置の電源を遮断する、請求項１に記載の制御装置。
【請求項３】
前記入力インターフェイスは、前記制御装置に電源を供給する無停電電源装置が、当該無停電電源装置へ供給される外部電源が喪失したときに発する前記遮断事象を受信するように構成されており、
前記リアルタイムＯＳは、前記リアルタイムＯＳのシャットダウンが完了したことを前記無停電電源装置へ通知する機能をさらに備える、請求項１または２に記載の制御装置。
【請求項４】
前記リアルタイムＯＳは、前記ユーザプログラムに対して、前記遮断事象を受信したか否かを示す情報を参照可能にする機能をさらに備える、請求項１〜３のいずれか１項に記載の制御装置。
【請求項５】
前記リアルタイムＯＳは、前記遮断事象を受信した後、前記ユーザプログラムからの所定の通知を受信したことを含む、予め定められた条件が満たされると、前記シャットダウン準備処理を実行する、請求項１〜４のいずれか１項に記載の制御装置。
【請求項６】
前記リアルタイムＯＳは、前記ユーザプログラムに対してシャットダウンを指示してから予め定められた期間が経過すると、前記シャットダウン準備処理を開始する、請求項１〜５のいずれか１項に記載の制御装置。
【請求項７】
設備または機械を制御する制御装置での制御方法であって、
１または複数のプロセッサ上で、汎用オペレーティングシステム（ＯＳ）と、前記設備または機械の制御を実現するためのユーザプログラムの実行環境を提供するリアルタイムＯＳとを並列的に実行するステップと、
前記リアルタイムＯＳが、入力インターフェイスを介して受信した遮断事象に応答して、前記リアルタイムＯＳのシャットダウンに必要なシャットダウン準備処理を実行するステップと、
前記リアルタイムＯＳが、前記シャットダウン準備処理の実行後に、前記汎用ＯＳに対してシャットダウンを指示するステップと、
前記リアルタイムＯＳが、前記汎用ＯＳからのシャットダウン完了の通知の受信を含む、予め定められた条件が満たされると、前記リアルタイムＯＳのシャットダウンを完了して前記制御装置の電源を遮断するステップとを備える、制御方法。
【請求項８】
予め用意されたユーザプログラムに従って設備または機械を制御するための環境を構築するリアルタイムオペレーティングシステム（ＯＳ）を含むプログラムであって、
前記リアルタイムＯＳは、汎用ＯＳとともに１または複数のプロセッサ上で並列的に実行され、
前記プログラムはコンピュータに
入力インターフェイスを介して受信した遮断事象に応答して、前記リアルタイムＯＳのシャットダウンに必要なシャットダウン準備処理を実行するステップと、
前記シャットダウン準備処理の実行後に、前記汎用ＯＳに対してシャットダウンを指示するステップと、
前記汎用ＯＳからのシャットダウン完了の通知の受信を含む、予め定められた条件が満たされると、前記リアルタイムＯＳのシャットダウンを完了して電源を遮断するステップとを実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、共通のハードウェアリソースを用いて複数のＯＳが実行される制御装置、制御方法およびプログラムに関する。
【背景技術】
【０００２】
近年のＩＣＴ（Information and Communication Technology）の進歩に伴って、汎用的なコンピューティングデバイスについても信頼性が高まってきている。設備または機械を制御するためのＦＡ（Factory Automation）関連装置においても、このような汎用的なコンピューティングデバイスの導入が進められている。このような汎用的なコンピューティングデバイスを採用する場合であっても、設備または機械に係る処理については、信頼性の高いソフトウェアを採用することが好ましい。一方で、ユーザ操作に係る処理などについては、汎用的なソフトウェアを採用することで、操作性などを高めることができる。
【０００３】
そこで、信頼性の高いオペレーティングシステム（Operating System：以下「ＯＳ」とも略称する。）および汎用性の高い汎用ＯＳの２つを用いたシステムが提案されている。
【０００４】
例えば、特開２００５−２７５８１８号公報（特許文献１）は、通信手段にて接続された２つのシステムからなる電子機器装置を開示する。また、特開２００５−００４３８１号公報（特許文献２）は、マスタＣＰＵブロックとスレーブＣＰＵブロックとを含むマルチＣＰＵ装置を開示する。
【０００５】
特許文献１および特許文献２にそれぞれ開示される構成においては、通常時には、２つの装置が並列的に実行され、異常時には、２つの装置がいずれも停止されることになる。このような装置を停止する観点について、特許文献１は、一方のシステムのみに配置された異常検出部が他のシステムに対してシャットダウン命令を出力する構成を開示する。特許文献２は、元電源からの給電が停止したときに、リアルタイムＯＳが汎用ＯＳをシャットダウンする構成を開示する。
【０００６】
また、電源供給が停止したときのシャットダウン処理に関して、特開平１１−１３４０７３号公報（特許文献３）は、無停電電源装置から電力供給を受ける複数のサーバに対するＯＳシャットダウンの方法を開示する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００５−２７５８１８号公報
【特許文献２】特開２００５−００４３８１号公報
【特許文献３】特開平１１−１３４０７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ＩＣＴの進歩に伴って、コンピューティングデバイスの処理速度が向上し、共通のハードウェアリソースを用いて、互いに独立したＯＳ環境を実現するとともに、各ＯＳ環境においてそれぞれ異なったアプリケーションを実行するような、いわゆる仮想化技術などが発展しつつある。このような仮想化技術を採用することで、装置コストを低廉化できる可能性がある。
【０００９】
上述の特許文献１〜３は、互いに独立した複数の装置（ＣＰＵ）が並列実行される際のシャットダウンなどに関する技術を開示するにすぎず、仮想化技術については何ら検討されていない。
【００１０】
仮想化技術を採用した制御装置に対して安全にシャットダウンできる構成が要望されている。
【課題を解決するための手段】
【００１１】
本技術のある局面に従う設備または機械を制御する制御装置は、１または複数のプロセッサと、１または複数のプロセッサ上で並列的に実行される、汎用オペレーティングシステム（ＯＳ）と、設備または機械の制御を実現するためのユーザプログラムの実行環境を提供するリアルタイムＯＳと、外部からの遮断事象を受信する入力インターフェイスとを含む。リアルタイムＯＳは、遮断事象に応答して、リアルタイムＯＳのシャットダウンに必要なシャットダウン準備処理を実行する機能と、シャットダウン準備処理の実行後に、汎用ＯＳに対してシャットダウンを指示する機能と、汎用ＯＳからのシャットダウン完了の通知の受信を含む、予め定められた条件が満たされると、リアルタイムＯＳのシャットダウンを完了して制御装置の電源を遮断する機能とを含む。
【００１２】
好ましくは、リアルタイムＯＳは、汎用ＯＳに対してシャットダウンを指示してから予め定められた期間が経過すると、汎用ＯＳからのシャットダウン完了の通知を受信しなくとも、制御装置の電源を遮断する。
【００１３】
好ましくは、入力インターフェイスは、制御装置に電源を供給する無停電電源装置が、当該無停電電源装置へ供給される外部電源が喪失したときに発する遮断事象を受信するように構成されている。リアルタイムＯＳは、リアルタイムＯＳのシャットダウンが完了したことを無停電電源装置へ通知する機能をさらに含む。
【００１４】
好ましくは、リアルタイムＯＳは、ユーザプログラムに対して、遮断事象を受信したか否かを示す情報を参照可能にする機能をさらに含む。
【００１５】
好ましくは、リアルタイムＯＳは、遮断事象を受信した後、ユーザプログラムからの所定の通知を受信したことを含む、予め定められた条件が満たされると、シャットダウン準備処理を実行する。
【００１６】
好ましくは、リアルタイムＯＳは、ユーザプログラムに対してシャットダウンを指示してから予め定められた期間が経過すると、シャットダウン準備処理を開始する。
【００１７】
本技術の別の局面に従う設備または機械を制御する制御装置での制御方法は、１または複数のプロセッサ上で、汎用オペレーティングシステム（ＯＳ）と、設備または機械の制御を実現するためのユーザプログラムの実行環境を提供するリアルタイムＯＳとを並列的に実行するステップと、リアルタイムＯＳが、入力インターフェイスを介して受信した遮断事象に応答して、リアルタイムＯＳのシャットダウンに必要なシャットダウン準備処理を実行するステップと、リアルタイムＯＳが、シャットダウン準備処理の実行後に、汎用ＯＳに対してシャットダウンを指示するステップと、リアルタイムＯＳが、汎用ＯＳからのシャットダウン完了の通知の受信を含む、予め定められた条件が満たされると、リアルタイムＯＳのシャットダウンを完了して制御装置の電源を遮断するステップとを含む。
【００１８】
本技術のさらに別の局面に従えば、予め用意されたユーザプログラムに従って設備または機械を制御するための環境を構築するリアルタイムオペレーティングシステム（ＯＳ）を含むプログラムが提供される。リアルタイムＯＳは、汎用ＯＳとともに１または複数のプロセッサ上で並列的に実行される。プログラムはコンピュータに、入力インターフェイスを介して受信した遮断事象に応答して、リアルタイムＯＳのシャットダウンに必要なシャットダウン準備処理を実行するステップと、シャットダウン準備処理の実行後に、汎用ＯＳに対してシャットダウンを指示するステップと、汎用ＯＳからのシャットダウン完了の通知の受信を含む、予め定められた条件が満たされると、リアルタイムＯＳのシャットダウンを完了して電源を遮断するステップとを実行させる。
【発明の効果】
【００１９】
本技術に従えば、仮想化技術を採用した制御装置に対してより安全にシャットダウンを行なうことができる。
【図面の簡単な説明】
【００２０】
【図１】本実施の形態に従う制御装置の概要を示す模式図である。
【図２】本実施の形態に従う制御システムの装置構成の一例を示す模式図である。
【図３】本実施の形態に従う制御装置のハードウェア構成の一例を示す模式図である。
【図４】本実施の形態に従う制御装置のソフトウェア構成の一例を示す模式図である。
【図５】本実施に従う制御装置におけるシャットダウン処理の処理手順を示すシーケンス図である。
【図６】本実施に従う制御装置におけるシャットダウン処理を考慮したユーザプログラムの一例を示す図である。
【図７】本実施に従う制御装置におけるシャットダウン処理の別の処理手順を示すシーケンス図である。
【図８】本実施に従う制御装置におけるシャットダウン処理のさらに別の処理手順を示すシーケンス図である。
【図９】本実施の形態に従う制御装置のリアルタイムＯＳで実行される処理手順を示すフローチャートである。
【図１０】本実施に従う制御装置においてリアルタイムＯＳが起動中にシャットダウン処理へ移行する場合の処理手順を示すシーケンス図である。
【図１１】本実施に従う制御装置において汎用ＯＳが起動中にシャットダウン処理へ移行する場合の処理手順を示すシーケンス図である。
【発明を実施するための形態】
【００２１】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００２２】
＜Ａ．概要＞
まず、本実施の形態に従う制御装置１００の概要について説明する。図１は、本実施の形態に従う制御装置１００の概要を示す模式図である。
【００２３】
図１を参照して、制御装置１００においては、設備または機械の制御を実現するためのユーザプログラムの実行環境を提供するリアルタイムＯＳと、汎用ＯＳとが、１または複数のプロセッサを含む共通のハードウェアリソース上で並列的に実行される。制御装置１００は、外部からの遮断事象を受信するインターフェイスを有している。
【００２４】
本明細書において、「遮断事象」は、制御装置１００がシャットダウンまたは電源遮断する処理を開始するトリガとなる任意の事象を意味し、典型的には、後述するような、無停電電源装置２００からのイベントや、ユーザによる電源ボタンの操作などを含み得る。
【００２５】
図１に示すリアルタイムＯＳおよび汎用ＯＳは、ハイパーバイザなどを利用した仮想環境下で実行される。リアルタイムＯＳは、信頼性の高いＯＳであり、設備または機械を安定的に制御できる。これに対して、汎用ＯＳは、リアルタイムＯＳに比較して信頼性の面では劣るが、汎用性が高いので、様々な汎用アプリケーションまたはユーザアプリケーションを実行させることができる。そのため、高度な情報処理を要求するシステムの構築をより低コストおよび短時間に行なうことができる。また、ネットワークを介して外部装置との接続も容易である。
【００２６】
何らか理由によって遮断事象が発生した場合には、両ＯＳとも安全にシャットダウンする必要がある。そこで、本実施の形態においては、リアルタイムＯＳが主導権をとって、汎用ＯＳをシャットダウンするとともに、自身もシャットダウンする。なお、一般的には、リアルタイムＯＳが扱うデータの方が、汎用ＯＳが扱うデータに比較して優先度が高いので、リアルタイムＯＳが主導的な役割を果たすことで、より優先度の高いデータについても確実に保護できる。
【００２７】
シャットダウンの具体的な手順としては、遮断事象に応答して、リアルタイムＯＳは、リアルタイムＯＳのシャットダウンに必要なシャットダウン準備処理を実行する。続いて、リアルタイムＯＳは、シャットダウン準備処理の実行後に、汎用ＯＳに対してシャットダウンを指示する。そして、汎用ＯＳからのシャットダウン完了の通知の受信を含む、予め定められた条件が満たされると、リアルタイムＯＳ自身のシャットダウンを完了して制御装置１００の電源を遮断する。このような手順を経ることで、リアルタイムＯＳおよび汎用ＯＳの両方を安全かつ確実にシャットダウンできる。
【００２８】
＜Ｂ．制御システムの装置構成＞
次に、本実施の形態に従う制御システムのより詳細な装置構成の一例について説明する。図２は、本実施の形態に従う制御システム１の装置構成の一例を示す模式図である。図２を参照して、制御システム１は、設備または機械を制御するための制御装置１００と、制御装置１００に対して電源を供給する無停電電源装置２００とを含む。
【００２９】
制御装置１００は、設備または機械を制御するためのユーザプログラムを実行する。このような設備または機械を制御するために、制御装置１００は、フィールドネットワークなどを介してフィールド情報を遣り取りするとともに、上位ネットワーク上にあるサーバ装置などとの間でデータを遣り取りすることもできる。このような制御処理は、制御装置１００で実行されるリアルタイムＯＳにて実現される。制御装置１００では、リアルタイムＯＳに加えて、汎用ＯＳも実行されており、任意の汎用アプリケーションを動作させることができる。
【００３０】
無停電電源装置（ＵＰＳ：Uninterruptible Power Supply）２００は、電力変換装置および蓄電装置などを含んでおり、外部電源（一次電源）２０２から供給される外部電力の一部を、そのまま、または、所定の交流電力または直流電力に変換して、二次電力として制御装置１００へ供給するとともに、残りを蓄電装置に蓄える。何らかの要因により外部電源からの電力供給が停止すると、蓄電装置に蓄えていた電力を用いて制御装置１００への二次電力の供給を継続する。但し、無停電電源装置２００に内蔵する蓄電装置が蓄えることのできる電力は限られているので、外部電源からの電力供給が停止した場合には、無停電電源装置２００は制御装置１００に対して、外部電源が停止していること、および／または、所定時間経過後に二次電力の供給が停止すること、を通知する。
【００３１】
次に、本実施の形態に従う制御装置１００のハードウェア構成の一例について説明する。図３は、本実施の形態に従う制御装置１００のハードウェア構成の一例を示す模式図である。図３に示す制御装置１００は、基本的には、汎用アーキテクチャに従うコンピューティングエレメントによって構成されており、汎用のパーソナルコンピュータに類似したハードウェア構成を有している。
【００３２】
図３を参照して、制御装置１００は、プロセッサ１０２と、システムコントローラ１０４と、ビデオコントローラ１０６と、ＲＡＭ（Random Access Memory）１０８と、ＨＤＤ（Hard Disk Drive）１１０と、ネットワークインターフェイス（Interface：以下「Ｉ／Ｆ」とも記す。）１２２と、入出力インターフェイス１２４と、ローカル通信インターフェイス１２６と、電源ボタン１２８と、電源部１３０と、メモリカードインターフェイス１３２とを含む。制御装置１００では、共通のハードウェアリソースを用いて、複数のＯＳが互いに独立して実行可能な仮想化環境が実現される。
【００３３】
プロセッサ１０２は、各種プログラムを実行する算術論理演算装置であり、典型的には、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＧＰＵ（Graphics Processing Unit）などを含み得る。プロセッサ１０２は複数個が実装されていてもよく、あるいは、単一のプロセッサ１０２内に複数の演算コアが実装されていてもよい。すなわち、いわゆるマルチプロセッサであってもよいし、マルチコアであってもよい。
【００３４】
システムコントローラ１０４は、プロセッサ１０２と周辺装置との間の内部コマンドやデータの遣り取りなどを制御および仲介する回路であり、典型的には、ＬＳＩ（Large Scale Integration）などによって実装される。
【００３５】
ビデオコントローラ１０６は、ディスプレイなどに接続され、制御装置１００により提供される演算結果などを視覚的に出力する。
【００３６】
ＲＡＭ１０８は、プロセッサ１０２においてプログラムを実行するために必要なワークデータや外部との遣り取りによって取得されたデータなどを一時的に格納する。ＲＡＭ１０８は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）といった揮発性記憶装置によって実装される。
【００３７】
ＨＤＤ１１０は、プロセッサ１０２によって実行されるプログラムやプロセッサ１０２によるプログラムの実行により生成されたデータを不揮発的に格納するストレージデバイスである。ＨＤＤ１１０に代えて、あるいは、それに加えて、ＳＳＤ（Solid State Drive）や光学ディスクなどのストレージデバイスを用いるようにしてもよい。図３には、説明の便宜上、単一のストレージデバイスとしてＨＤＤ１１０を描くが、格納するデータに応じて、複数のストレージデバイスを組み合わせてもよい。例えば、リアルタイムＯＳ１１４および汎用ＯＳ１１６を格納するためのストレージデバイス（例えば、ＨＤＤ）を個別に用意してもよい。このような構成を採用することで、例えば、汎用ＯＳ１１６を格納するストレージデバイスに故障が発生しても、リアルタイムＯＳ１１４では、制御を継続できる。
【００３８】
ＨＤＤ１１０には、典型的には、ハイパーバイザ１１２と、リアルタイムＯＳ（Operating System）１１４と、汎用ＯＳ１１６と、ユーザプログラム１１８と、汎用アプリケーション１２０とが格納される。
【００３９】
ハイパーバイザ１１２は、後述するように、共通のハードウェアリソースを用いて、複数のＯＳを互いに独立して実行するためのマネージングプログラムである。ハイパーバイザ１１２は、リアルタイムＯＳ１１４および汎用ＯＳ１１６に割当てるハードウェアリソースを管理する。ハイパーバイザ１１２は、各ＯＳに対して仮想的なハードウェアリソースを提供することになり、各ＯＳから見ると、通常のハードウェアリソースを利用しているのと同様の処理を実行することができる。
【００４０】
リアルタイムＯＳ１１４は、制御装置１００のハードウェアリソースを用いて実行され、設備または機械を制御するためのユーザプログラムの実行環境を提供するプログラムであり、スケジューラを用いて必要なプロセスの実行周期を管理することで、従前のＰＬＣ（Programmable Logic Controller）と同様の機能を実現する。すなわち、本明細書において、「リアルタイムＯＳ」は、ユーザプログラムを指定された周期で実行可能な環境を実現するプログラムを意味し、制御装置としてのユーザプログラム（実行形式）を実行するために必要な各種ライブラリや関数などを提供するプログラム全体を意味する。
【００４１】
汎用ＯＳ１１６は、制御装置１００のハードウェアリソースを用いて実行され、リアルタイムＯＳ１１４とは独立して動作する。汎用ＯＳ１１６は、一般的なパーソナルコンピュータなどで実行されるＯＳであり、例えば、Ｗｉｎｄｏｗｓ（登録商標）、Ｍａｃ  ＯＳ（登録商標）、ＵＮＩＸ（登録商標）、ＬＩＮＵＸ（登録商標）、Ａｎｄｒｏｉｄ（登録商標）、ＭＳ−ＤＯＳ（登録商標）、その他ＵＮＩＸ派生の任意のＯＳなどが挙げられる。
【００４２】
ユーザプログラム１１８は、リアルタイムＯＳ１１４で実行される任意の制御プログラムである。ユーザプログラム１１８は、リアルタイムＯＳがインタプリタの機能を提供する場合には、ソースコードまたは中間コードの形で格納されていてもよいし、あるいは、オブジェクト形式などの実行可能な状態で格納されていてもよい。
【００４３】
汎用アプリケーション１２０は、汎用ＯＳ１１６上で実行される任意のアプリケーションであり、汎用ＯＳ１１６の一部として組込まれているもの、市販されている任意のアプリケーション、ユーザが作成した独自アプリケーションなどを含み得る。
【００４４】
ネットワークインターフェイス１２２は、他の装置との間でデータを遣り取りするためのインターフェイスであり、例えば、上位コンピュータまたは上位ネットワークに接続するためのポート、フィールドネットワークまたはフィールドバスを介して各種フィールド装置に接続するためのポート、他の制御装置との間でデータを遣り取りするためのポートなどを含み得る。ネットワークインターフェイス１２２は、任意の規格に従うデバイスを用いることができ、例えば、Ｅｔｈｅｒｎｅｔ（登録商標）、ＥｔｈｅｒＣＡＴ（登録商標）などの有線方式、あるいは、無線ＬＡＮ（Local Area Network）、Ｂｌｕｅｔｏｏｔｈ（登録商標）などの無線方式のいずれであってもよい。ネットワークインターフェイス１２２は、リアルタイムＯＳ１１４および汎用ＯＳ１１６のいずれもが利用可能になっており、それぞれＯＳがネットワークインターフェイス１２２を介して他の装置との間でデータを遣り取りすることができる。
【００４５】
入出力インターフェイス１２４は、ＰＬＣに装着される入出力ユニットに相当するものであり、フィールド機器との間で、フィールド信号（デジタル入出力信号、アナログ入出力信号、パルス信号など）を遣り取りする。
【００４６】
ローカル通信インターフェイス１２６は、外部からの遮断事象を受信する入力インターフェイスに相当し、任意の通信インターフェイスを包含する。典型的には、ローカル通信インターフェイス１２６は、ＵＳＢ（Universal Serial Bus）、パラレル通信、ＲＳ−２３２Ｃなどのシリアル通信などを含み、図２に示す無停電電源装置２００やプリンタなどの周辺装置との間でデータを遣り取りする。すなわち、ローカル通信インターフェイス１２６は、制御装置１００に電源を供給する無停電電源装置２００が、無停電電源装置２００へ供給される外部電源が喪失したときに発する遮断事象を受信する。
【００４７】
なお、遮断事象を示す信号は、入出力インターフェイス１２４を介して受信するようにしてもよいし、入出力インターフェイス１２４およびローカル通信インターフェイス１２６の両方を使用するようにしてもよい。
【００４８】
電源ボタン１２８は、ユーザ操作に応じて、制御装置１００の電源オン／オフを制御するための指令を発生する。
【００４９】
電源部１３０は、無停電電源装置２００から供給される電力を所定の電圧に変換して各部へ供給する。電源部１３０は、典型的には、スイッチングレギュレータなどを含む。
【００５０】
メモリカードインターフェイス１３２は、メモリカード１３４（例えば、ＳＤカードなど）に対してデータの書込み／読出しを行なう。
【００５１】
＜Ｃ．制御装置のソフトウェア構成＞
次に、制御装置１００のソフトウェア構成の一例について説明する。図４は、本実施の形態に従う制御装置１００のソフトウェア構成の一例を示す模式図である。
【００５２】
図４を参照して、制御装置１００においては、ハイパーバイザ１１２が制御装置１００のハードウェアリソースを管理するとともに、リアルタイムＯＳ１１４および汎用ＯＳ１１６に対して、これらのハードウェアリソースを調停しながら割当てることで、共通のハードウェアリソース上で、互いに独立したリアルタイムＯＳ１１４および汎用ＯＳ１１６を実行させる。すなわち、ハイパーバイザ１１２を用いて、複数の異なるＯＳを実行する仮想化環境を実現する。リアルタイムＯＳ１１４と汎用ＯＳ１１６との間は、ハイパーバイザ１１２を介して、論理的なネットワークが構成されている。
【００５３】
リアルタイムＯＳ１１４では、ユーザプログラム１１８が実行される。ユーザプログラム１１８の実行にあたって、タスクスケジューラ１１４２と、モーション制御プロセス１１４４と、Ｉ／Ｏ（Input/Output）制御プロセス１１４６とが連係する。ユーザプログラム１１８は、設備または機械を制御するための制御プログラムであり、制御対象の設備または機械に応じて任意に作成される。典型的には、ユーザプログラム１１８は、シーケンス制御およびモーション制御の命令を含む。ユーザプログラム１１８は、任意の言語で作成することができ、例えば、ラダープログラム、ＳＴ言語、Ｃ言語、ファンクションブロック命令などを用いることができる。典型的には、ユーザプログラム１１８は予め実行形式に変換されており、この実行形式のコードが、タスクスケジューラ１１４２、モーション制御プロセス１１４４、Ｉ／Ｏ制御プロセス１１４６と連係しつつ、制御対象からの信号の取得、制御ロジックの実行、実行結果の反映（アクチュエータの制御）を繰返す。
【００５４】
タスクスケジューラ１１４２は、ユーザプログラム１１８に含まれるタスク毎に、実行周期または実行タイミングを制御する。モーション制御プロセス１１４４は、モーション制御に必要な各種の数値演算（浮動小数点演算など）を実行する。Ｉ／Ｏ制御プロセス１１４６は、制御対象との間で各種信号を遣り取りする処理を司る。
【００５５】
汎用ＯＳ１１６では、任意のユーザアプリケーション１１６４および汎用アプリケーション１１６２が実行される。
【００５６】
ユーザアプリケーション１１６４は、典型的には、リアルタイムＯＳ１１４で実行されるユーザプログラム１１８の開発ベンダなどによって作成されるアプリケーションであり、ユーザプログラム１１８の処理結果に係るデータおよび／または処理に必要なデータを取得および／または提供するような処理を実行する。例えば、ユーザプログラム１１８は、上位サーバ装置が有するデータベースへアクセスして、ユーザプログラム１１８での処理に関するデータを遣り取りする、あるいは、制御装置１００のオペレータなどに対して、制御装置１００に対する操作に関するユーザインターフェイス画面を提供する。
【００５７】
汎用アプリケーション１１６２は、汎用ＯＳ１１６で実行可能な標準的なアプリケーションであり、ユーザアプリケーション１１６４と連係することで、汎用的な処理や機能を用いて、より少ない工数でシステムを構築することができる。
【００５８】
ここで、制御装置１００においては、種々のデータを取り扱うが、典型的には、システムデータと、ユーザデータとに大別できる。
【００５９】
システムデータは、リアルタイムＯＳ１１４または汎用ＯＳ１１６の動作に必要なデータ全般を意味する。このようなシステムデータが破壊されると、リアルタイムＯＳ１１４または汎用ＯＳ１１６の起動および動作が不能になる。このシステムデータとしては、リアルタイムＯＳ１１４および汎用ＯＳ１１６が生成するログデータ、および、システムが生成するログデータ（イベントログ）を含む。これらのログデータは、制御装置１００のユーザに公開するものとそうでないものが存在していてもよい。
【００６０】
ユーザデータは、基本的には、システムデータ以外のデータを包含する概念であり、例えば、ユーザが作成またはインストールしたデータなどを意味する。このようなユーザデータとしては、典型的には、ユーザプログラム１１８自体、および、制御対象の装置において生産される製品または半製品に応じた処理を定義する生産用レシピなどを含む。
【００６１】
＜Ｄ．シャットダウン処理＞
次に、本実施の形態に従う制御装置１００でのシャットダウン処理のいくつかの例について説明する。本実施の形態においては、リアルタイムＯＳ１１４がシャットダウン処理を主導する。このようなシャットダウン処理は、典型的には、無停電電源装置２００からの通知、および、制御装置１００のユーザが電源ボタン１２８を押下したこと、といった遮断事象をトリガにして開始される。
【００６２】
なお、制御装置１００のディスプレイには、主として、汎用ＯＳ１１６によって提供されるユーザインターフェイス画面が表示されるが、このユーザインターフェイス画面上には、汎用ＯＳ１１６をシャットダウンするためのメニューは用意されないことが好ましい。すなわち、制御装置１００のユーザによる意図しないシャットダウンを生じさせないようにするためである。汎用ＯＳ１１６を含めて制御装置１００全体のシャットダウンは、リアルタイムＯＳ１１４によって管理される。以下、それぞれの場合の典型的な処理手順について説明する。
【００６３】
（ｄ１：無停電電源装置２００起因のシャットダウン）
図５は、本実施に従う制御装置１００におけるシャットダウン処理の処理手順を示すシーケンス図である。図５を参照して、無停電電源装置２００への外部電源からの電力供給が停止すると、無停電電源装置２００は、制御装置１００に対してシャットダウン指令（バックアップ中の通知）を出力する。この信号は、ローカル通信インターフェイス１２６または入出力インターフェイス１２４を介して制御装置１００へ入力される。この信号の入力によって、制御装置１００の内部では外部割込みが発生する（シーケンスＳＱ１００）。すると、リアルタイムＯＳ１１４は、ユーザプログラム１１８に対してシャットダウン通知を出力する（シーケンスＳＱ１０２）。このユーザプログラム１１８への通知は、典型的には、システム変数を介して行なわれる。
【００６４】
ユーザプログラム１１８は、シャットダウン通知をトリガとして、安全にシャットダウンするために必要な処理を実行する（シーケンスＳＱ１０４）。ユーザプログラム１１８にて実行されるシャットダウン処理は、Ｉ／Ｏリフレッシュ（入出力信号の更新処理）を停止するための準備処理や、外部メモリへの書込み処理の完了などの処理を含んでいてもよい。このようなシャットダウン処理は、ユーザプログラム１１８の内容に応じてそれぞれプログラムされることになるが、例えば、制御対象の設備または機械を安全に停止させるための処理が実行される。加えて、開いている生産用レシピのファイルをクローズするような処理が実行される。このように、安全にシャットダウンするための処理の実行が完了すると、その処理完了をリアルタイムＯＳ１１４へ通知する（シーケンスＳＱ１０６）。この処理完了は、リアルタイムＯＳ１１４へのシャットダウン命令という形で通知されてもよい。すなわち、リアルタイムＯＳ１１４は、ユーザプログラム１１８からのシャットダウン命令に応答して、シャットダウン処理を開始する。
【００６５】
リアルタイムＯＳ１１４は、ユーザプログラム１１８に対してシャットダウン通知を出力（シーケンスＳＱ１０２）した後、ユーザプログラム１１８からのシャットダウン命令を受信したこと、または、シャットダウン通知後からの経過時間がタイムアウト時間Ｔｕを超えたこと、をトリガとして、リアルタイムＯＳ１１４自身のシャットダウン処理を開始する。このように、リアルタイムＯＳ１１４は、ユーザプログラム１１８に対してシャットダウン通知を出力（シーケンスＳＱ１０２）してからの経過時間を監視する。
【００６６】
リアルタイムＯＳ１１４のシャットダウン処理として、電源遮断処理１および電源遮断処理２が実行されるものとする。但し、電源遮断処理を一度に実行するようにしてもよいし、さらに多くの回数に分けて実行するようにしてもよい。電源遮断処理１および電源遮断処理２の詳細については後述する。
【００６７】
まず、リアルタイムＯＳ１１４は、ユーザプログラム１１８からのシャットダウン命令を受信すると、または、シャットダウン通知後からの経過時間がタイムアウト時間Ｔｕを超えると、電源遮断処理１を開始する（シーケンスＳＱ１０８）。電源遮断処理１の実行完了後、リアルタイムＯＳ１１４は、汎用ＯＳ１１６に対してシャットダウン要求を出力する（シーケンスＳＱ１１０）。
【００６８】
汎用ＯＳ１１６は、リアルタイムＯＳ１１４からのシャットダウン要求に応答して、実行中のアプリケーションを終了し（シーケンスＳＱ１１２）、ＯＳのシャットダウン処理を実行する（シーケンスＳＱ１１４）。リアルタイムＯＳ１１４は、シャットダウン要求の出力後、汎用ＯＳ１１６の状態を確認する（シーケンスＳＱ１１６，ＳＱ１２０）。汎用ＯＳ１１６が稼動中であれば（シーケンスＳＱ１１８）、リアルタイムＯＳ１１４は、汎用ＯＳ１１６でのシャットダウン処理が完了するまで待つ。なお、リアルタイムＯＳ１１４が汎用ＯＳ１１６の状態を確認する処理は、典型的には、リアルタイムＯＳ１１４が汎用ＯＳ１１６に対して何らかの要求またはメッセージを出力し、その応答の有無および内容などに基づいて状態を判断する。この状態において、汎用ＯＳ１１６はシャットダウン処理中であり、リアルタイムＯＳ１１４からの要求に対して完全に応答することが保証されないからである。
【００６９】
リアルタイムＯＳ１１４は、汎用ＯＳ１１６に対してシャットダウン要求を出力（シーケンスＳＱ１１０）した後、汎用ＯＳ１１６においてシャットダウン処理が完了したこと、または、シャットダウン要求の出力後からの経過時間がタイムアウト時間Ｔｗを超えたこと、をトリガとして、電源遮断処理２を開始する（シーケンスＳＱ１２４）。このように、リアルタイムＯＳ１１４は、汎用ＯＳ１１６に対してシャットダウン要求を出力（シーケンスＳＱ１１０）してからの経過時間を監視する。すなわち、リアルタイムＯＳ１１４は、基本的には、汎用ＯＳからのシャットダウン完了の通知を受信したことをトリガとして電源遮断処理２を開始するが、汎用ＯＳ１１６に対してシャットダウンを指示してから予め定められた期間（タイムアウト時間Ｔｗ）が経過すると、汎用ＯＳ１１６からのシャットダウン完了の通知を受信しなくとも、制御装置１００の電源を遮断する。
【００７０】
電源遮断処理２の実行完了後、リアルタイムＯＳ１１４は、無停電電源装置２００に対して給電停止許可を出力し（シーケンスＳＱ１２６）、電源を遮断する（シーケンスＳＱ１２８）。この制御装置１００の電源遮断（シーケンスＳＱ１２８）は、ハイパーバイザ１１２を介して実行される。シーケンスＳＱ１２６において出力される給電停止許可は、制御装置１００に対する電源供給が停止されても問題ないことを無停電電源装置２００に対して通知する信号である。すなわち、リアルタイムＯＳ１１４は、シャットダウンが完了したことを無停電電源装置２００へ通知する。
【００７１】
以上のような処理手順によって、無停電電源装置２００起因のシャットダウン処理が完了する。
【００７２】
（ｄ２：ユーザプログラム１１８の一例）
次に、図５に示すシーケンスに沿ったユーザプログラム１１８の一例について説明する。図６は、本実施に従う制御装置１００におけるシャットダウン処理を考慮したユーザプログラム１１８の一例を示す図である。リアルタイムＯＳ１１４では、ユーザプログラム１１８に対して、遮断事象を受信したか否かを示す情報を参照可能にする機能を有しており、ユーザプログラム１１８はこれらの情報を参照しつつ、処理を実行できる。
【００７３】
図６に示すユーザプログラム１１８には、ユーザプログラム１１８からリアルタイムＯＳ１１４へのシャットダウン処理の完了を出力する処理（図５に示すシーケンスＳＱ１０６）、および、メモリカードなどへデータを書込む処理を含む。
【００７４】
より具体的には、リアルタイムＯＳ１１４へのシャットダウン命令（Shutdown）を発行するファンクションブロック１１８３は、無停電電源装置２００に対する外部電源からの電力供給が遮断された状態（バックアップ中）を示すフラグ１１８１と、ファイル書込み完了を示すフラグ１１８２との論理積によって活性化される。すなわち、無停電電源装置２００に対する外部電源からの電力供給が遮断されている状態において、何らかのファイル書込み処理が完了し、ファイルがクローズされたことをもって、リアルタイムＯＳ１１４に対して、シャットダウン命令を出力する。
【００７５】
メモリカードなどへデータを書込む処理（File_Write）を実行するファンクションブロック１１８６は、ファイル書込みが完了すると、完了を示すコイル１１８７を活性化する。フラグ１１８２の値は、このコイル１１８７の値を示す。つまり、ファンクションブロック１１８６によるファイル書込みが完了すると、ファンクションブロック１１８３を活性化する条件が成立する。
【００７６】
ファンクションブロック１１８６の実行条件として、ファイル書込み命令が発行されていることを示すフラグ１１８４と、バックアップ中ではないことを示すフラグ１１８５との論理積が設定されている。すなわち、無停電電源装置２００に対する外部電源からの電力供給が遮断された状態（バックアップ中）になると、それ以降に、ファイル書込み命令が発行されたとしても、ファンクションブロック１１８６は実行されない。つまり、無停電電源装置２００に対する外部電源からの電力供給が遮断された状態（バックアップ中）になる直前に命令されたファイル書込みが完了すると、ファンクションブロック１１８３からシャットダウン命令が出力されることになる。
【００７７】
このようなユーザプログラム１１８を構築することで、無停電電源装置２００に対する外部電源からの電力供給が遮断されたとしても、それ以前の処理において生成されたデータについては安全に保存することができる一方で、そのデータ保存が完了すれば、即座に、リアルタイムＯＳ１１４および汎用ＯＳ１１６のシャットダウン処理を開始できる。
【００７８】
（ｄ３：リアルタイムＯＳ１１４における電源遮断処理）
上述した電源遮断処理（電源遮断処理１および電源遮断処理２）の詳細について説明する。
【００７９】
電源遮断処理１は、リアルタイムＯＳ１１４のシャットダウンに必要なシャットダウン準備処理に相当、具体的には、以下のような処理を含む。
【００８０】
（１）ユーザプログラム１１８の実行を中断する。
（２）Ｉ／Ｏリフレッシュ（入出力信号の更新処理）について、アクチュエータへの信号出力を停止するともに、フィールドネットワークを介したデータ更新を停止する。
【００８１】
（３）外付けのメモリカード１３４へのアクセスについて、書込み途中であっても、その書込みを中断してファイルをクローズした上で、マウントを解除する。
【００８２】
（４）共有フォルダ（ネットワークドライブ）へのアクセスについて、書込み途中であっても、その書込みを中断してファイルをクローズした上で、マウントを解除する。
【００８３】
（５）ユーザプログラム１１８などが転送中であれば、その転送を中断する。この場合には、ユーザプログラム１１８の一部のみが転送された状態になっている可能性があるので、次回の電源投入時には、エラーを発生させて、ユーザプログラム１１８を実行しないようにする。
【００８４】
（６）ユーザプログラム１１８に対してオンラインエディット中であれば、そのオンラインエディットを中断する。次回の電源投入時には、エラーを発生させて、データの不整合などの復旧処理をユーザに促す。
【００８５】
（７）保持属性が設定されている変数の現在値を不揮発性メモリ領域へ退避する。
リアルタイムＯＳ１１４は、遮断事象を受信した後、ユーザプログラム１１８からの所定の通知を受信したことを含む、予め定められた条件が満たされると、シャットダウン準備処理である電源遮断処理１を実行する。但し、後述するように、シャットダウン処理全体として許容される時間に制限があるので、リアルタイムＯＳ１１４は、ユーザプログラム１１８に対してシャットダウンを指示してから予め定められた期間（タイムアウト時間Ｔｕ）が経過すると、電源遮断処理１（シャットダウン準備処理）を開始する。
【００８６】
また、電源遮断処理２においては、以下のような処理が実行される。
（１）内蔵のメモリカード（または、補助ストレージデバイス）へのアクセスについて、書込み途中であっても、その書込みを中断してファイルをクローズした上で、マウントを解除する。
【００８７】
（２）電源遮断が発生した時刻などを記録したイベントログを不揮発性メモリ領域へ退避する。
【００８８】
図５に示す処理手順においては、上述の電源遮断処理（電源遮断処理１および電源遮断処理２）が、汎用ＯＳ１１６に対してシャットダウン要求を出力する前、および、汎用ＯＳ１１６でシャットダウン処理が完了した後のそれぞれで実行される。これらの処理を、汎用ＯＳ１１６でシャットダウン処理が完了した後に一斉に実行してもよい。但し、以下のような理由によって、図５に示すように２回に分けて実行することが好ましい。
【００８９】
すなわち、汎用ＯＳ１１６において実行されるアプリケーション（ユーザアプリケーション１１６４または汎用アプリケーション１１６２）のうち、終了処理までに長い時間を要するアプリケーションが存在する場合や、いずれかのアプリケーションが終了処理においてフリーズしてしまう場合には、リアルタイムＯＳ１１４は、汎用ＯＳ１１６からのシャットダウン処理の完了を待ち続けることになり、シャットダウン処理が進行しない可能性がある。
【００９０】
また、無停電電源装置２００の蓄電装置での蓄電量が十分ではない場合には、汎用ＯＳ１１６のシャットダウン処理の完了待ちに要する時間が長くなると、汎用ＯＳ１１６またはリアルタイムＯＳ１１４のシャットダウン中に無停電電源装置２００からの電力供給が停止してしまう可能性がある。
【００９１】
このようなシャットダウン処理中にデータが喪失する可能性を考慮して、汎用ＯＳ１１６に対してシャットダウン要求を出力する前に、リアルタイムＯＳ１１４においては可能な限り電源遮断処理を実行する。すなわち、データが喪失するリスクを低減するために、保存対象が確定しているデータについては、可能な限り早期に安全な領域に格納する。但し、汎用ＯＳ１１６のイベントログなどを残すために、汎用ＯＳ１１６からのシャットダウン処理の完了後に、電源遮断処理２を実行する。
【００９２】
なお、電源遮断処理１においても、イベントログを格納する処理を実行しておき、電源遮断処理２においては、電源遮断処理１の実行後に新たに生じたイベントログのみを追加で格納するような２段階の処理を採用してもよい。このような２段階でイベントログを格納する処理を採用することで、少なくとも、汎用ＯＳ１１６に対してシャットダウン要求を出力する直前の段階でのイベントログを保存することができる。
【００９３】
（ｄ４：タイムアウト時間の設定）
次に、図５に示すタイムアウト時間ＴｕおよびＴｗの設定例について説明する。タイムアウト時間ＴｕおよびＴｗは、シャットダウン処理の完了を待つ時間であり、それぞれ、ユーザプログラム１１８および汎用ＯＳ１１６のシャットダウン処理が完了するまでに要する時間を予想して設定される。
【００９４】
タイムアウト時間Ｔｕは、ユーザプログラム１１８におけるシャットダウン処理（例えば、制御プログラムの終了処理、データロギングの停止、Ｉ／Ｏリフレッシュの停止）などに要する時間を推定して設定される。例えば、１〜３０秒の範囲の値に設定されてもよい。
【００９５】
タイムアウト時間Ｔｗは、汎用ＯＳ１１６で実行されているアプリケーションの終了に要する時間、および、汎用ＯＳ１１６自体のシャットダウンに要する時間を合計して設定される。例えば、３０〜３００秒の範囲の値に設定されてもよい。
【００９６】
このようなタイムアウト時間は、制御装置１００に接続された設定ツールを用いてユーザが任意に設定してもよい。具体的には、タイムアウト時間ＴｕおよびＴｗは、各システムのシャットダウン処理に要する最低時間を超えつつ、許容される最大時間未満となるように設定される。ここで、許容される最大時間は、外部電源からの電力供給が停止された後に無停電電源装置２００単独で電力を供給可能な時間未満となるように設定される。
【００９７】
なお、制御装置１００において実行されるシャットダウン処理の全体に要する時間の最大値のみを設定し、その設定された最大値に応じて、タイムアウト時間ＴｕおよびＴｗを動的に決定するようにしてもよい。
【００９８】
（ｄ５：タイムアウト時間Ｔｗを超えた場合）
リアルタイムＯＳ１１４が汎用ＯＳ１１６に対してシャットダウン要求を出力した後、タイムアウト時間Ｔｗを超えても、汎用ＯＳ１１６からシャットダウン処理の完了が通知されなかった場合には、リアルタイムＯＳ１１４は、汎用ＯＳ１１６を強制的にシャットダウンさせる。
【００９９】
図７は、本実施に従う制御装置１００におけるシャットダウン処理の別の処理手順を示すシーケンス図である。図７を参照して、リアルタイムＯＳ１１４は、汎用ＯＳ１１６に対してシャットダウン要求を出力した（シーケンスＳＱ１１０）後、汎用ＯＳ１１６の状態を確認する（シーケンスＳＱ１１６）。タイムアウト時間Ｔｗを超えても、汎用ＯＳ１１６が稼動中であれば、リアルタイムＯＳ１１４は、汎用ＯＳ１１６を強制的にシャットダウンさせる（シーケンスＳＱ１２３）。
【０１００】
このような強制的なシャットダウンによって、汎用ＯＳ１１６上で実行されるアプリケーションのシステムデータの一部が保存されない可能性があるが、次回の電源投入後において、リアルタイムＯＳ１１４上で実行されるユーザプログラム１１８に対する実質的な影響はないと考えられる。そのため、無停電電源装置２００からの電源遮断によって制御装置１００が受けるダメージを考慮して、タイムアウト時間Ｔｗを超えてシャットダウン処理が完了できない場合には、汎用ＯＳ１１６を強制的にシャットダウンする。
【０１０１】
（ｄ６：電源ボタン１２８起因のシャットダウン）
次に、制御装置１００のユーザが電源ボタン１２８を押下することによって実行されるシャットダウン処理について説明する。電源ボタン１２８が押下されたときに実行されるシャットダウン処理についても、無停電電源装置２００からの通知によって実行されるシャットダウン処理と同様である。但し、電源ボタン１２８が押下された場合には、通常、制御装置１００への電力供給は継続されている状態である。そのため、ユーザプログラム１１８および汎用ＯＳ１１６についてのタイムアウト時間を考慮しなくてもよい。
【０１０２】
図８は、本実施に従う制御装置１００におけるシャットダウン処理のさらに別の処理手順を示すシーケンス図である。図８を参照して、制御装置１００のユーザが電源ボタン１２８を押下すると、制御装置１００の内部では外部割込みが発生する（シーケンスＳＱ１０１）。すると、リアルタイムＯＳ１１４は、シャットダウン処理を開始する。このシャットダウン処理は、図５に示すシャットダウン処理と同様である。但し、電源ボタン１２８が押下されたときのシャットダウン処理においては、タイムアウト時間ＴｕおよびＴｗが設定されておらず、あるいは、図５の場合に設定される時間より長い時間が設定される。
【０１０３】
すなわち、リアルタイムＯＳ１１４は、ユーザプログラム１１８からのシャットダウン命令の出力、および、汎用ＯＳ１１６でのシャットダウンの完了を待つ時間制限を緩和する。これによって、制御装置１００では、ユーザプログラム１１８および汎用ＯＳ１１６の完全なシャットダウン処理の実行が確保される。つまり、汎用ＯＳ１１６が実行される通常のパーソナルコンピュータと同様のシャットダウン処理が実行される。
【０１０４】
このように、電源ボタン１２８が押下された場合には、より確実かつ安全なシャットダウン処理が保証されることになる。
【０１０５】
（ｄ７：リアルタイムＯＳ１１４の処理手順）
次に、本実施の形態に従う制御装置１００のリアルタイムＯＳ１１４で実行される処理手順について説明する。図９は、本実施の形態に従う制御装置１００のリアルタイムＯＳ１１４で実行される処理手順を示すフローチャートである。図９に示す各ステップは、プロセッサ１０２がリアルタイムＯＳ１１４のコードを実行することで実現される。
【０１０６】
図９を参照して、プロセッサ１０２は、シャットダウン処理を開始する割込み（遮断事象）が発生したか否かを判断する（ステップＳ２）。シャットダウン処理を開始する割込みが発生していなければ（ステップＳ２においてＮＯの場合）、ステップＳ２の処理が繰返される。
【０１０７】
シャットダウン処理を開始する割込みが発生すると（ステップＳ２においてＹＥＳの場合）、ユーザプログラム１１８に対してシャットダウン通知を出力する（ステップＳ４）。そして、プロセッサ１０２は、ユーザプログラム１１８によりシャットダウン命令が通知されたか否かを判断する（ステップＳ６）。ユーザプログラム１１８によりシャットダウン命令が通知されていなければ（ステップＳ６においてＮＯの場合）、プロセッサ１０２は、シャットダウン通知を出力してからの経過時間がタイムアウト時間Ｔｕに到達したか否かを判断する（ステップＳ８）。シャットダウン通知を出力してからの経過時間がタイムアウト時間Ｔｕに到達していなければ（ステップＳ８においてＮＯの場合）、ステップＳ６以下の処理が繰返される。
【０１０８】
これに対して、ユーザプログラム１１８によりシャットダウン命令が通知されると（ステップＳ６においてＹＥＳの場合）、または、シャットダウン通知を出力してからの経過時間がタイムアウト時間Ｔｕに到達すると（ステップＳ８においてＹＥＳの場合）、プロセッサ１０２は、プロセッサ１０２は、電源遮断処理１を実行し（ステップＳ１０）、続いて、汎用ＯＳ１１６に対してシャットダウン要求を出力する（ステップＳ１２）。
【０１０９】
そして、プロセッサ１０２は、汎用ＯＳ１１６の状態を確認し、汎用ＯＳ１１６においてシャットダウンが完了しているか否かを判断する（ステップＳ１４）。汎用ＯＳ１１６においてシャットダウンが完了していなければ（ステップＳ１４においてＮＯの場合）、プロセッサ１０２は、シャットダウン要求を出力してからの経過時間がタイムアウト時間Ｔｗに到達したか否かを判断する（ステップＳ１６）。シャットダウン要求を出力してからの経過時間がタイムアウト時間Ｔｗに到達していなければ（ステップＳ１６においてＮＯの場合）、ステップＳ１４以下の処理が繰返される。
【０１１０】
汎用ＯＳ１１６においてシャットダウンが完了していれば（ステップＳ１４においてＹＥＳの場合）、プロセッサ１０２は、電源遮断処理２を実行し（ステップＳ２０）、無停電電源装置２００に対して給電停止許可を出力する（ステップＳ２２）。そして、プロセッサ１０２は、電源を遮断する（ステップＳ２４）。そして、一連の処理は終了する。
【０１１１】
また、シャットダウン要求を出力してからの経過時間がタイムアウト時間Ｔｗに到達していれば（ステップＳ１６においてＹＥＳの場合）、プロセッサ１０２は、汎用ＯＳ１１６を強制的にシャットダウンし（ステップＳ１８）、ステップＳ２０以下の処理が実行される。そして、一連の処理は終了する。
【０１１２】
＜Ｅ．システム起動中のシャットダウン処理＞
上述の説明においては、リアルタイムＯＳ１１４および汎用ＯＳ１１６のいずれもが稼動中にシャットダウン処理を開始する場合について例示した。次に、リアルタイムＯＳ１１４および／または汎用ＯＳ１１６のシステム起動中にシャットダウン処理に移行する場合の処理例について説明する。
【０１１３】
このようなシステム起動中にシャットダウン処理に移行する典型的なシナリオとしては、以下のようなものが想定される。
【０１１４】
（１）リアルタイムＯＳ１１４の起動前のシャットダウン処理
例えば、システム起動中に制御装置１００のユーザが意図的に電源ボタン１２８を押下することで、起動前にシャットダウン処理が開始される場合がある。あるいは、システム起動中に外部電源からの電力供給が停止することで、起動前にシャットダウン処理が開始される場合がある。
【０１１５】
いずれの場合も上述した稼働中のシャットダウン処理と同様の方法で、イベントを検出することができる。この場合、ユーザプログラム１１８は実行されないので、設備または機械の制御が開始されることはない。
【０１１６】
図１０は、本実施に従う制御装置１００においてリアルタイムＯＳ１１４が起動中にシャットダウン処理へ移行する場合の処理手順を示すシーケンス図である。図１０を参照して、リアルタイムＯＳ１１４および汎用ＯＳ１１６がそれぞれ初期化処理を開始したとする（シーケンスＳＱ２１０およびＳＱ２２０）。この初期化処理の開始の直後に、無停電電源装置２００への外部電源からの電力供給が停止した（電源遮断）とする（シーケンスＳＱ２００）と、無停電電源装置２００は、制御装置１００に対してシャットダウン指令（バックアップ中の通知）を出力する（シーケンスＳＱ２０２）。
【０１１７】
リアルタイムＯＳ１１４は、無停電電源装置２００からのシャットダウン指令を受けてシャットダウン処理を開始する（シーケンスＳＱ２１２）とともに、汎用ＯＳ１１６の初期化処理の完了を待って、汎用ＯＳ１１６に対してシャットダウン要求を出力する（シーケンスＳＱ２１４）。
【０１１８】
汎用ＯＳ１１６がシャットダウン処理を実行し（シーケンスＳＱ２２２）、その完了通知がリアルタイムＯＳ１１４へ出力される（シーケンスＳＱ２２４）と、一連のシャットダウン処理は完了する。
【０１１９】
なお、図１０においては、説明の便宜上、リアルタイムＯＳ１１４でのシャットダウン処理を簡潔に記載しているが、実際には、図５に示すような電源遮断処理が実行されることが好ましい。
【０１２０】
（２）汎用ＯＳ１１６の起動前のシャットダウン処理
例えば、メンテナンス作業中に誤ってシステムを起動した場合や、使用した生産用レシピが誤っていることに気付いた場合などに、ユーザの操作によって、起動前にシャットダウン処理が開始される場合がある。制御装置１００を安全に停止させるために、必要なシャットダウン処理が実行される。この場合にも、ユーザプログラム１１８は実行されないので、設備または機械の制御が開始されることはない。
【０１２１】
これらの場合も上述した稼働中のシャットダウン処理と同様の方法で、リアルタイムＯＳ１１４はイベントを検出することができる。但し、汎用ＯＳ１１６が起動中であれば、汎用ＯＳ１１６の起動完了を待って、シャットダウン処理を開始する。制御装置１００においては、リアルタイムＯＳ１１４がシャットダウン処理を主導するため、汎用ＯＳ１１６については、システム起動中ではなく、起動完了後にシャットダウン処理を実施することが好ましい。
【０１２２】
図１１は、本実施に従う制御装置１００において汎用ＯＳ１１６が起動中にシャットダウン処理へ移行する場合の処理手順を示すシーケンス図である。図１１を参照して、リアルタイムＯＳ１１４および汎用ＯＳ１１６がそれぞれ初期化処理を開始したとする（シーケンスＳＱ２１０およびＳＱ２２０）。そして、リアルタイムＯＳ１１４の初期化処理が先に完了し、正常運転の状態になったとする（シーケンスＳＱ２１１）。一方、汎用ＯＳ１１６については初期化処理の実行中において、無停電電源装置２００への外部電源からの電力供給が停止した（電源遮断）とする（シーケンスＳＱ２００）と、無停電電源装置２００は、制御装置１００に対してシャットダウン指令（バックアップ中の通知）を出力する（シーケンスＳＱ２０２）。
【０１２３】
リアルタイムＯＳ１１４は、無停電電源装置２００からのシャットダウン指令を受けてシャットダウン処理を開始する（シーケンスＳＱ２１２）とともに、汎用ＯＳ１１６の初期化処理の完了を待って、汎用ＯＳ１１６に対してシャットダウン要求を出力する（シーケンスＳＱ２１４）。
【０１２４】
汎用ＯＳ１１６がシャットダウン処理を実行し（シーケンスＳＱ２２２）、その完了通知がリアルタイムＯＳ１１４へ出力される（シーケンスＳＱ２２４）と、一連のシャットダウン処理は完了する。
【０１２５】
なお、図１１においては、説明の便宜上、リアルタイムＯＳ１１４でのシャットダウン処理を簡潔に記載しているが、実際には、図５に示すような電源遮断処理が実行される。
【０１２６】
図１０および図１１には、無停電電源装置２００からのシャットダウン指令（バックアップ中の通知）に応答してシャットダウン処理が開始される例を示すが、ユーザが制御装置１００の電源ボタン１２８を押下した場合にも、同様の処理手順によってシャットダウン処理が実行される。
【０１２７】
以上のように、本実施の形態に従う制御装置１００においては、リアルタイムＯＳ１１４または汎用ＯＳ１１６が起動中であっても、安全かつ確実にシャットダウン処理を完了できる。
【０１２８】
＜Ｆ．変形例＞
上述した実施の形態に対して、以下のような変形例を適用可能である。
【０１２９】
（ｆ１：無停電電源装置２００の残量に応じた処理）
無停電電源装置２００に内蔵される蓄電装置は、劣化により充電可能容量が減少する。そのため、無停電電源装置２００からの残容量（あるいは、寿命）などの情報を取得し、タイムアウト時間を調整するようにしてもよい。
【０１３０】
具体的には、リアルタイムＯＳ１１４は、無停電電源装置２００からの残容量を定期的またはイベント的（例えば、電源遮断時）に取得し、その取得した情報に基づいて、シャットダウン処理の全体で許容される最大時間を推定し、その推定した最大時間に応じて、タイムアウト時間ＴｕおよびＴｗを動的に決定してもよい。
【０１３１】
ユーザが予めタイムアウト時間ＴｕおよびＴｗを設定した場合であっても、無停電電源装置２００からの情報に基づいて決定されたタイムアウト時間の方が長い場合には、より長いタイムアウト時間を採用してもよい。
【０１３２】
なお、無停電電源装置２００からの情報として、残容量ではなく、寿命を推定可能な情報（例えば、積算の運転時間など）を用いるようにしてもよい。
【０１３３】
（ｆ２：電源ボタン起因のシャットダウン）
電源ボタン１２８起因のシャットダウン処理においては、無停電電源装置２００起因のシャットダウン処理とは異なり、電力供給は継続することが原則として保証される。そのため、設備または機械をより安全かつ確実に停止するための処理を事項するようにしてよい。
【０１３４】
また、ユーザが電源ボタン１２８を直接押下するのではなく、何らかの事象を検知して制御装置１００を停止しようとする場合などに、上位のサーバ装置などから制御装置１００に対してシャットダウン指令を与えるようにしてもよい。この場合には、リアルタイムＯＳ１１４がこの上位のサーバ装置などからのシャットダウン指令を受けて、上述と同様の手順に従ってシャットダウン処理を実行する。
【０１３５】
（ｆ３：ユーザプログラムのシャットダウン処理の切り替え）
無停電電源装置２００からの情報などによって、シャットダウン処理の実行に許容される最大時間が変化し得る場合には、リアルタイムＯＳ１１４からユーザプログラム１１８に対してその許容される最大時間の情報を出力するようにしてもよい。
【０１３６】
ユーザプログラム１１８では、許容される最大時間の長さに応じて、複数の停止処理方法のうちいずれかを選択できるようにプログラムされていてもよい。例えば、停止させることで破損するリスクのある設備または機械については、そのリスクを可能な限り低減するパターン（但し、停止に必要な時間は長い）と、可能な限り短い時間で停止するパターンとを用意しておき、リアルタイムＯＳ１１４からの許容される最大時間の情報に基づいて、いずれかのパターンを選択するようにしてもよい。例えば、モータを減速する際の加速度を複数段階設けておき、許容される最大時間の長さに応じて、適宜切り替えるようにすればよい。
【０１３７】
（ｆ４：複数のＯＳまたはプロセスに対するシャットダウン処理）
上述の説明においては、リアルタイムＯＳ１１４が汎用ＯＳ１１６に対するシャットダウンを指示する構成について例示したが、制御装置１００で実行される複数のＯＳまたはプロセスに対して、リアルタイムＯＳ１１４がシャットダウン処理を指示するようにしてもよい。
【０１３８】
例えば、リアルタイムＯＳ１１４または他のＯＳで実行されている、データベース管理プロセスやソフトウェアＨＭＩ（Human Machine Interface）などに対して、リアルタイムＯＳ１１４がシャットダウン処理を指示するようにしてもよい。このようなシャットダウン処理の指示は、ユーザが予め対象を設定しておくことで、自動的に事項される。例えば、データベース管理プロセスを事前にシャットダウンしておくことで、データが破壊されることを防止できる。ソフトウェアＨＭＩは、シャットダウン処理の指示を受けて、シャットダウン処理中の操作画面の表示内容を適宜切り替えるようにしてもよい。
【０１３９】
（ｆ５：リアルタイムＯＳから汎用ＯＳの監視処理／操作）
上述の説明では、リアルタイムＯＳ１１４が汎用ＯＳ１１６に対してシャットダウン要求を出力する構成について例示したが、これに加えて、汎用ＯＳ１１６の状態を監視するような機能を実装してもよい。監視対象となる汎用ＯＳ１１６の状態としては、
・汎用ＯＳ１１６がアップデート中
・汎用ＯＳ１１６の動作状態
・汎用ＯＳ１１６のイベントログの内容
・汎用ＯＳ１１６でのデバイス動作状態
リアルタイムＯＳ１１４は、収集した汎用ＯＳ１１６の状態を上位コンピュータへ通知してもよい。この場合、上位コンピュータが収集した情報を分析する。
【０１４０】
また、リアルタイムＯＳ１１４から汎用ＯＳ１１６に対して、シャットダウン処理以外の処理を指示してもよい。例えば、汎用ＯＳ１１６の起動または再起動、汎用ＯＳ１１６上でのアプリケーションの起動、汎用ＯＳ１１６を介した外部への通知、汎用ＯＳ１１６での定期的な処理の実行、汎用ＯＳ１１６へのアプリケーションのインストールまたはアンインストールなどである。
【０１４１】
（ｆ６：制御装置１００に接続されるユニットの監視）
リアルタイムＯＳ１１４は、制御装置１００に接続されるユニットの監視を行なってもよい。例えば、ユニットの状態監視、ユニットが発生するイベントの収集、ユニットに対する診断などの機能を併せて実行してもよい。このような監視および診断の結果は、コンピュータへ通知してもよい。
【０１４２】
（ｆ７：シャットダウン処理のトリガ）
上述の実施の形態においては、無停電電源装置２００または電源ボタン１２８に起因してシャットダウン処理が開始される例について説明したが、例えば、地震速報などを受信するようにして、当該地震速報をトリガとして、シャットダウン処理を開始するようにしてもよい。
【０１４３】
＜Ｇ．利点＞
本実施の形態に従う制御装置によれば、共通のハードウェアリソースを利用して、リアルタイムＯＳおよび汎用ＯＳを並列的に実行させることで、設備または機械を制御するための安定したユーザプログラムの実行を確保するとともに、ハードウェアリソースの簡素化によって低コスト化を実現できる。さらに、汎用ＯＳを採用することで、高度な情報処理が必要なシステムであっても、より少ない工数で実現できる。
【０１４４】
さらに、本実施の形態に従う制御装置によれば、遮断事象が発生した場合には、リアルタイムＯＳが主導して、リアルタイムＯＳ上で実行されるユーザプログラムおよび汎用ＯＳをシャットダウンするので、データが破壊されるといった可能性を低減しつつ、確実なシャットダウン処理を実現できる。
【０１４５】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１４６】
１  制御システム、１００  制御装置、１０２  プロセッサ、１０４  システムコントローラ、１０６  ビデオコントローラ、１０８  ＲＡＭ、１１０  ＨＤＤ、１１２  ハイパーバイザ、１１４  リアルタイムＯＳ、１１６  汎用ＯＳ、１１８  ユーザプログラム、１２０，１１６２  汎用アプリケーション、１２２  ネットワークインターフェイス、１２４  入出力インターフェイス、１２６  ローカル通信インターフェイス、１２８  電源ボタン、１３０  電源部、１３２  メモリカードインターフェイス、１３４  メモリカード、２００  無停電電源装置、１１４２  タスクスケジューラ、１１４４  モーション制御プロセス、１１４６  制御プロセス、１１６４  ユーザアプリケーション。
【図１】
2017187992.tif 000003
【図２】
2017187992.tif 000004
【図３】
2017187992.tif 000005
【図４】
2017187992.tif 000006
【図５】
2017187992.tif 000007
【図６】
2017187992.tif 000008
【図７】
2017187992.tif 000009
【図８】
2017187992.tif 000010
【図９】
2017187992.tif 000011
【図１０】
2017187992.tif 000012
【図１１】
2017187992.tif 000013