(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-16
(45)【発行日】2024-07-24
(54)【発明の名称】情報処理システムおよびデータベースの構築方法
(51)【国際特許分類】
G11C 29/56 20060101AFI20240717BHJP
G11C 29/10 20060101ALI20240717BHJP
G11C 29/44 20060101ALI20240717BHJP
【FI】
G11C29/56 105
G11C29/10 110
G11C29/44 110
(21)【出願番号】P 2020177961
(22)【出願日】2020-10-23
【審査請求日】2023-08-08
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】伊達 大輝
【審査官】後藤 彰
(56)【参考文献】
【文献】特開2003-45922(JP,A)
【文献】特開2005-196680(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G11C 29/56
G11C 29/10
G11C 29/44
(57)【特許請求の範囲】
【請求項1】
情報処理システムであって、
第1情報処理装置と、
データベースと、を備え、
前記第1情報処理装置は、
第1プログラムと前記第1プログラムの実行中に割り込まれる第2プログラムとを実行するプロセッサと、
メモリと、を含み、
前記第2プログラムは、
前記メモリ内の指定された位置の1ビットのデータを反転させる命令と、
前記1ビットのデータを反転させた後の前記第1プログラムの実行において発生した異常に関する第1情報を収集させる命令と、を含み、
前記情報処理システムは、さらに、
前記指定された位置に関する第2情報と前記第1情報とを対応付けて前記データベースに登録する登録部を備える、情報処理システム。
【請求項2】
前記第2情報は、前記指定された位置に書き込まれていた変数の名称を含む、請求項1に記載の情報処理システム。
【請求項3】
前記第1情報は、前記異常の内容を識別する第1識別情報および前記第1プログラムのうち前記異常が発生したときに実行されていたソースコードを識別する第2識別情報の少なくとも1つを含む、請求項1または2に記載の情報処理システム。
【請求項4】
前記登録部は、前記第1情報および前記第2情報と対応付けて、前記異常が発生したときの前記メモリの内容を示すメモリダンプを前記データベースにさらに登録する、請求項1から3のいずれか1項に記載の情報処理システム。
【請求項5】
前記第1プログラムを実行する第2情報処理装置において発生した異常に関する解析対象情報と一致する前記第1情報を前記データベースから検索し、検索された前記第1情報に対応する前記第2情報を出力する検索部をさらに備える、請求項1から3のいずれか1項に記載の情報処理システム。
【請求項6】
前記第1プログラムを実行する第2情報処理装置において発生した異常に関する解析対象情報と一致する前記第1情報を前記データベースから検索し、検索された前記第1情報に対応する前記第2情報および前記メモリダンプを出力する検索部をさらに備える、請求項4に記載の情報処理システム。
【請求項7】
前記登録部は、前記第1情報および前記第2情報と対応付けて、前記第1情報に対応する前記異常の原因が前記1ビットのデータの反転であるか否かを示す第3情報を前記データベースにさらに登録し、
前記検索部は、前記異常の原因が前記1ビットのデータの反転でないことを示す前記第3情報に対応する前記第1情報を検索対象から除外する、請求項5または6に記載の情報処理システム。
【請求項8】
プログラムを実行するプロセッサとメモリとを含む情報処理装置を用いたデータベースの構築方法であって、
前記メモリ内の指定された位置の1ビットのデータを反転させるステップと、
前記1ビットのデータを反転させた後の前記プロセッサによる前記プログラムの実行において発生した異常に関する第1情報を収集するステップと、
前記指定された位置に関する第2情報と前記第1情報とを対応付けて前記データベースに登録するステップとを備える、データベースの構築方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理システムおよびデータベースの構築方法に関する。
【背景技術】
【0002】
半導体デバイスの高集積化および微細化に伴い、メモリにおける一過性のビットエラー(ソフトエラー)が急増している。ソフトエラーは、例えばα粒子や宇宙線中性子の衝突によって生じる。ソフトエラーの起こりうるメモリをシステムに適用すると、ソフトエラーに起因する異常が生じうる。そのため、ソフトエラーとその影響との関係が予め確認されることが望まれる。
【0003】
特開2019-86429号公報(特許文献1)には、試験対象の電子機器に中性子を照射し、ソフトエラーを再現することにより、電子機器に生じた影響を確認するソフトエラー試験手法が開示されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1に記載の技術では、中性子発生源を準備する必要があり、ソフトエラーとその影響との関係を確認するためのコストが増大する。
【0006】
本開示は、上記の問題に鑑みてなされたものであり、その目的は、ソフトエラーとその影響との関係を容易に確認可能な情報処理システムおよびデータベースの構築方法を提供することである。
【課題を解決するための手段】
【0007】
本開示の一例によれば、情報処理システムは、第1情報処理装置と、データベースと、を備える。第1情報処理装置は、第1プログラムと第1プログラムの実行中に割り込まれる第2プログラムとを実行するプロセッサと、メモリと、を含む。第2プログラムは、メモリ内の指定された位置の1ビットのデータを反転させる命令と、1ビットのデータを反転させた後の第1プログラムの実行において発生した異常に関する第1情報を収集させる命令と、を含む。情報処理システムは、さらに、指定された位置に関する第2情報と第1情報とを対応付けてデータベースに登録する登録部を備える。
【0008】
この開示によれば、第1情報と第2情報とが対応付けてデータベースに蓄積される。その結果、データベースを参照することにより、第1プログラムを実行する情報処理装置においてソフトエラーが発生したときの影響を容易に確認できる。
【0009】
上述の開示において、第2情報は、指定された位置に書き込まれていた変数の名称を含む。
【0010】
この開示によれば、メモリに格納された変数の値にソフトエラーによるデータ化けが発生したときの影響を確認しやすくなる。
【0011】
上述の開示において、第1情報は、異常の内容を識別する第1識別情報および第1プログラムのうち異常が発生したときに実行されていたソースコードを識別する第2識別情報の少なくとも1つを含む。
【0012】
この開示によれば、第1識別情報を参照することにより、どのような内容の異常が発生するかを容易に確認できる。あるいは、第2識別情報を参照することにより、第1プログラムのうちのどのソースコードで異常が発生するかを容易に確認できる。
【0013】
上述の開示において、登録部は、第1情報および第2情報と対応付けて、異常が発生したときのメモリの内容を示すメモリダンプをデータベースにさらに登録する。
【0014】
この開示によれば、例えば、第1プログラムを実行する情報処理装置において異常が発生した場合、当該異常と同じ内容の異常情報に対応するメモリダンプと、当該情報処理装置のメモリの内容とが比較される。比較結果は、異常の原因の特定に役立つ。そのため、異常の原因の解析に要する時間を短縮できる。
【0015】
上述の開示において、情報処理システム1は、第1プログラムを実行する第2情報処理装置において発生した異常に関する解析対象情報と一致する第1情報をデータベースから検索し、検索された第1情報に対応する第2情報を出力する検索部をさらに備える。
【0016】
情報処理システム1は、第1プログラムを実行する第2情報処理装置において発生した異常に関する解析対象情報と一致する第1情報をデータベースから検索し、検索された第1情報に対応する第2情報およびメモリダンプを出力する検索部をさらに備えてもよい。
【0017】
これらの開示によれば、第2情報処理装置において発生した異常の原因の候補として、出力された第2情報によって示される位置のソフトエラーが容易に挙げられる。その結果、異常の原因の解析に要する時間を短縮できる。
【0018】
さらに、メモリダンプが出力される場合、当該メモリダンプと第2情報処理装置のメモリの内容との比較結果は、異常の原因の特定に役立つ。そのため、異常の原因の解析に要する時間をさらに短縮できる。
【0019】
上述の開示において、登録部は、第1情報および第2情報と対応付けて、第1情報に対応する異常の原因が1ビットのデータの反転であるか否かを示す第3情報をデータベースにさらに登録する。検索部は、異常の原因が1ビットのデータの反転でないことを示す第3情報に対応する第1情報を検索対象から除外する。この開示によれば、検索に要する時間が短縮される。
【0020】
本開示の一例によれば、プログラムを実行するプロセッサとメモリとを含む情報処理装置を用いたデータベースの構築方法は、第1~第3のステップを備える。第1のステップは、メモリ内の指定された位置の1ビットのデータを反転させるステップである。第2のステップは、1ビットのデータを反転させた後のプロセッサによるプログラムの実行において発生した異常に関する第1情報を収集するステップである。第3のステップは、指定された位置に関する第2情報と第1情報とを対応付けてデータベースに登録するステップである。この開示によっても、ソフトエラーとその影響との関係を容易に確認できる。
【発明の効果】
【0021】
本開示によれば、ソフトエラーとその影響との関係を容易に確認できる。
【図面の簡単な説明】
【0022】
【
図1】実施の形態に係る情報処理システムに備えられる、データベースの構築に関連する構成を示す概略図である。
【
図2】実施の形態に係る情報処理システムに備えられる、データベースの利用に関連する構成を示す概略図である。
【
図3】
図1に示す安全IOユニットのハードウェア構成例を示す模式図である。
【
図4】
図1および
図2に示すコンピュータのハードウェア構成例を示すブロック図である。
【
図5】安全IOユニットの機能構成を示すブロック図である。
【
図6】コンピュータの機能構成を示すブロック図である。
【
図7】データベースに含まれるテーブルの一例を示す図である。
【発明を実施するための形態】
【0023】
本開示の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【0024】
§1 適用例
航空宇宙システム、自動車、医療機器、通信機器、産業機器など様々に分野において、メモリのデータ化けに起因する異常が発生し得る。本開示は、このような様々な分野のシステムに適用され得る。以下では、本開示の適用例として、FA(ファクトリオートメーション)分野に組み込まれる情報処理システムについて説明するが、本開示の適用例は、FA分野に限定されない。
【0025】
図1は、実施の形態に係る情報処理システムに備えられる、データベースの構築に関連する構成を示す概略図である。
図1に例示される情報処理システム1は、安全IO(Input/Output)ユニット100と、データベース200と、コンピュータ300と、PLC(プログラマブルロジックコントローラ)400と、カプラ500と、安全コントローラ600とを備える。
【0026】
図1に示す例では、安全IOユニット100のメインメモリ104に発生したソフトエラーとその影響との対応関係を示す情報がデータベース200に蓄積される。安全IOユニット100、PLC400、カプラ500および安全コントローラ600は、データベース200の構築のために準備される。あるいは、立ち上げ段階の生産ラインに設置された安全IOユニット、PLC、カプラおよび安全コントローラを、安全IOユニット100、PLC400、カプラ500および安全コントローラ600としてそれぞれ用いてもよい。
【0027】
安全コントローラ600および安全IOユニット100は、ローカルユニットとして、ローカルバス10を介してカプラ500と接続される。なお、「ローカルユニット」とは、ローカルバス10を介して接続される任意のユニットを総称する。
【0028】
PLC400は、予め作成された標準制御プログラムに従って、図示しない任意の制御対象に対する標準制御を実行する。「標準制御」は、予め定められた要求仕様に沿って、制御対象を制御するための処理の総称である。制御対象は、例えばサーボモータ、ロボットなどである。
【0029】
カプラ500は、PLC400と安全コントローラ600との間のデータの遣り取りを仲介する。カプラ500は、フィールドネットワークを介して、PLC400と電気的に接続されている。フィールドネットワークは、FA用のデータ伝送を実現するための通信媒体である。フィールドネットワークにおいて、予め定められた周期でフレーム伝送が可能になっており、ネットワーク内の各ノードに対するデータ到着時間が保証される。このようなデータ到着時間が保証されるプロトコルの一例として、フィールドネットワークにはEtherCAT(登録商標)が採用される。
【0030】
カプラ500は、ローカルバス10を介して、PLC400から受信したデータをローカルユニット(安全コントローラ600および安全IOユニット100)へ送信する。カプラ500は、ローカルユニットからデータを受信すると、当該受信したデータを次の通信フレームに格納する準備を行なう。
【0031】
安全コントローラ600は、任意の制御対象に対するセーフティ制御を実行する。「セーフティ制御」は、設備や機械などによって人の安全が脅かされることを防止するための処理の総称である。「セーフティ制御」は、例えばIEC 61508などに規定されたセーフティ機能を実現するための要件を満たすように設計される。
【0032】
安全IOユニット100は、安全コントローラ600にローカルバス10を介して接続される。さらに、安全IOユニット100には任意の安全デバイス(図示せず)が接続される。安全デバイスには、ライトカーテン、非常停止ボタン、セーフティドアスイッチなどが含まれる。
【0033】
安全IOユニット100は、予め定められた周期(以下、「セーフティタスク周期」と称する。)ごとにIOタスクを実行する。IOタスクには、安全デバイスからの入力信号の受け付ける処理、当該入力信号を安全コントローラ600へ提供する処理、安全コントローラ600からの指令を受け付ける処理、当該指令に応じて演算する処理、演算結果を出力する処理などが含まれる。さらに、IOタスクには、安全IOユニット100の異常を検知する処理、および、検知された異常を安全コントローラ600に通知する処理も含まれる。
【0034】
安全コントローラ600は、安全IOユニット100から提供された入力信号に応じて、セーフティ制御を実行する。例えば、安全コントローラ600は、ライトカーテンである安全デバイスから人の侵入を示す入力信号が提供されると、PLC400の制御対象への電源供給を遮断する。あるいは、安全コントローラ600は、非常停止ボタンである安全デバイスからボタン押下を示す入力信号が提供されると、PLC400の制御対象への電源供給を遮断する。安全コントローラ600は、PLC400の制御対象への電源供給を遮断する際、情報処理システム1を構成する機器間の通信を停止する。
【0035】
このように、安全IOユニット100は、人の安全が脅かされることを防止するためのセーフティ制御に直接関わる。従って、安全コントローラ600は、安全IOユニット100に異常が発生したときにも、PLC400の制御対象への電源供給を遮断する。
【0036】
コンピュータ300は、例えば汎用のノート型コンピュータである。コンピュータ300は、例えばEthernet/IP(登録商標)等の通信規格に従って、PLC400との間でデータを遣り取りする。さらに、コンピュータ300は、データベース200にアクセス可能であり、データベース200を更新したり、データベース200を用いた検索処理を行なったりする。
【0037】
24時間×365日稼働する生産ラインに設置された安全IOユニットにおいてソフトエラーが発生し、当該ソフトエラーに起因して安全IOユニットに異常が発生すると、生産ラインが停止される。このような生産ラインでは、停止時間をなるべく短縮することが好ましい。そのため、異常の原因を即座に解析できることが望まれる。このような要望に応えるために、本実施の形態に係る情報処理システム1は、安全IOユニット100に備えられるメインメモリ104において擬似的にソフトエラーを発生させ、その後に発生した異常に関する情報(以下、「異常情報」と称する。)をデータベース200に登録する。
【0038】
具体的には、
図1に示されるように、ステップS1において、コンピュータ300は、PLC400、カプラ500および安全コントローラ600を介して、安全IOユニット100のメインメモリ104内の1ビットの位置を指定する。
【0039】
次にステップS2において、安全IOユニット100は、メインメモリ104の指定された位置の1ビットのデータを反転させる。安全IOユニット100は、1ビットのデータを反転させた後の所定時間内に発生した異常に関する異常情報を収集する。
【0040】
安全IOユニット100において異常が発生すると、安全コントローラ600は、PLC400の制御対象への電源供給を遮断する。このとき、情報処理システム1の機器間の通信も停止される。
【0041】
その後、情報処理システム1の機器間の通信が再び開始されると、ステップS3において、収集された異常情報は、安全コントローラ600およびカプラ500を介して、PLC400に伝送される。コンピュータ300は、PLC400から異常情報を取得する。
【0042】
次にステップS4において、コンピュータ300は、ステップS1において指定した位置に関する位置情報とステップS3において取得した異常情報とを対応付けてデータベース200に登録する。
【0043】
これにより、位置情報と異常情報とが対応付けてデータベース200に蓄積される。その結果、データベース200を参照することにより、安全IOユニット100においてソフトエラーが発生したときの影響を容易に確認できる。
【0044】
図2は、実施の形態に係る情報処理システム1に備えられる、データベース200の利用に関連する構成を示す概略図である。
図2に示されるように、情報処理システム1は、データベース200およびコンピュータ300に加えて、安全IOユニット100Aと、PLC400Aと、カプラ500Aと、安全コントローラ600Aとを備える。
【0045】
安全IOユニット100A、PLC400A、カプラ500Aおよび安全コントローラ600Aは、稼働中の生産ラインに設置される。立ち上げ段階の生産ラインに設置されていた安全IOユニット100、PLC400、カプラ500および安全コントローラ600が、安全IOユニット100A、PLC400A、カプラ500Aおよび安全コントローラ600Aとしてそれぞれ用いられてもよい。
【0046】
安全IOユニット100Aは、異常が発生すると、異常に関する異常情報を生成する。生成された異常情報は、安全コントローラ600A、カプラ500AおよびPLC400Aに伝送される。コンピュータ300は、PLC400Aから、伝送された異常情報を解析対象情報として取得する(ステップS11)。なお、コンピュータ300は、安全IOユニット100Aから解析対象情報を直接取得してもよい。
【0047】
次に、コンピュータ300は、データベース200から、取得した解析対象情報と一致する異常情報を検索する(ステップS12)。コンピュータ300は、検索された異常情報に対応する位置情報を出力する(ステップS13)。例えば、コンピュータ300は、位置情報を表示する。
【0048】
これにより、解析者は、安全IOユニット100Aにおいて発生した異常の原因の候補として、安全IOユニット100Aのメインメモリ104における、位置情報によって示される位置のデータのソフトエラーを挙げることができる。その結果、解析者は、位置情報によって示される位置のデータを確認することにより、異常の原因がソフトエラーか否かを判断できる。このように、本実施の形態のデータベース200を用いて安全IOユニット100Aの異常の原因を解析することにより、解析に要する時間を短縮できる。
【0049】
§2 具体例
<安全IOユニットのハードウェア構成>
図3は、
図1に示す安全IOユニットのハードウェア構成例を示す模式図である。
図3に例示される安全IOユニット100は、プロセッサ102と、メインメモリ104と、ストレージ106と、ローカルバスコントローラ108と、安全IOモジュール110と、バッファメモリ112とを含む。これらのコンポーネントは、プロセッサバス114を介して、互いに接続されている。
【0050】
プロセッサ102は、セーフティ制御を実現するために必要な信号の入出力および管理機能に係る制御演算を実行する演算処理部に相当し、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などによって構成される。
【0051】
メインメモリ104は、例えばDRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)のような揮発性メモリによって構成される。SRAMは、記憶部の構造としてフリップフロップを用いており、リフレッシュ動作を必要とせず、DRAMより高速に動作できるという利点を有する。そのため、SRAMをメインメモリ104として用いることが好ましい。
【0052】
積み上げ型(スタック型)の構造を有するDRAMでは、ソフトエラー耐性が高い。一方、フリップフロップ構造を有するSRAMでは、微細化によりソフトエラー耐性が低下する。そのため、SRAMによって構成されるメインメモリ104を用いる場合、メインメモリ104にソフトエラーが起こりやすい。以下、メインメモリ104がSRAMであるとものとして説明する。
【0053】
メインメモリ104は、スタック領域、データ領域およびテキスト領域を有する。スタック領域は、プロセッサ102に内蔵されるレジスタに保持されるデータを一時退避させるための領域である。メインルーチンの実行中に関数処理(サブルーチン)が発生すると、メインルーチンを中断させるために、レジスタに保持されたデータがスタック領域に一時的に退避される。データ領域は、各種の変数などが格納される領域である。テキスト領域は、プログラムが展開される領域である。
【0054】
ストレージ106は、例えば、SSD(Solid State Drive)、HDD(Hard Disk Drive)などの不揮発性記憶装置などで構成される。ストレージ106には、IOタスクを実現するための実行可能プログラム120と、ライブラリ122と、割り込みプログラム124とが格納される。
【0055】
実行可能プログラム120は、IOタスクを実現するために必要な信号の入出力および管理機能に係る制御演算を規定する命令群を含む。実行可能プログラム120は、1または複数のプログラムファイルによって構成される。
【0056】
割り込みプログラム124は、データベース200に登録される情報を収集するためのプログラムである。割り込みプログラム124は、実行可能プログラム120の実行中に最優先で割り込まれて実行される。
【0057】
ローカルバスコントローラ108は、ローカルバス10を介して、安全IOユニット100が接続されるデバイス(例えば安全コントローラ600、カプラ500)との間でデータを遣り取りする。
【0058】
安全IOモジュール110は、安全デバイスと電気的に接続され、安全デバイスによる検出結果などの入力を受け付けたり、安全デバイスへ信号を出力したりする。
【0059】
バッファメモリ112は、ローカルバス10を伝送する通信フレームを一時的に保持する。バッファメモリ112には入力データ群と出力データ群とが保持される。安全IOモジュール110は、安全デバイスから受けた入力信号を入力データ群の一部としてバッファメモリ112に格納する。さらに、ローカルバスコントローラ108は、カプラ500または安全コントローラ600から受けた入力信号を入力データ群の一部としてバッファメモリ112に格納する。出力データ群は、セーフティタスク周期ごとに、ローカルバスコントローラ108によって安全コントローラ600およびカプラ500に伝送される。さらに、出力データ群は、カプラ500からPLC400に伝送される。
【0060】
図2に示す安全IOユニット100Aも
図3に示すハードウェア構成を有する。ただし、安全IOユニット100Aのストレージ106には、割り込みプログラム124が格納されていなくてもよい。
【0061】
<コンピュータのハードウェア構成例>
図4は、
図1および
図2に示す本実施の形態に係るコンピュータ300のハードウェア構成例を示すブロック図である。
【0062】
コンピュータ300は、典型的には、汎用的なアーキクテチャを有するパーソナルコンピュータである。
図4に示されるように、コンピュータ300は、プロセッサ302と、メモリ304と、ストレージ306と、ディスプレイ308と、入力装置310と、USBコントローラ312とを含む。これらのコンポーネントは内部バス314を介して互いに接続されている。
【0063】
プロセッサ302は、CPU、MPUなどで構成され、ストレージ306に格納された各種プログラムを読み出して、メモリ304に展開して実行することで、後述したような各種機能を実現する。メモリ304は、DRAMやSRAMなどの揮発性記憶装置などで構成される。
【0064】
ストレージ306は、例えば、HDDやSSDなどの不揮発性記憶装置などで構成される。ストレージ306には、OS(Operating System)320と、データベース200の構築に関するDB構築プログラム322と、安全IOユニット100Aの異常の原因を検索する検索プログラム324とが格納される。
【0065】
ディスプレイ308は、プロセッサ302などによる演算結果を表示するデバイスであり、例えば、LCD(Liquid Crystal Display)などで構成される。
【0066】
入力装置310は、入力を受付けるデバイスであり、例えば、キーボードやメモリなどで構成される。
【0067】
USBコントローラ312は、USB接続を介して、PLC400,400Aとの間でデータを遣り取りする。さらに、USBコントローラ312は、USB接続を介して、データベース200にアクセスする。
【0068】
<安全IOユニットの機能構成>
図5は、安全IOユニット100の機能構成を示すブロック図である。
図5に示されるように、安全IOユニット100は、タスク実行部11と、書込読出処理部12と、データ反転部13と、変数名抽出部14と、異常情報収集部15と、ダンプ処理部16とを含む。
【0069】
タスク実行部11は、
図3に示すプロセッサ102が実行可能プログラム120を実行することにより実現される。書込読出処理部12は、プロセッサ102がライブラリ122を実行することにより実現される。データ反転部13、変数名抽出部14、異常情報収集部15およびダンプ処理部16は、プロセッサ102が割り込みプログラム124を実行することにより実現される。なお、プロセッサ102は、コンピュータ300から受ける割り込み指示に応じて割り込みプログラム124を実行する。
【0070】
タスク実行部11は、セーフティタスク周期ごとにIOタスクを実行する。具体的には、タスク実行部11は、バッファメモリ112に格納された入力データ群に含まれるデータおよびメインメモリ104に格納された変数の少なくとも一方を用いた制御演算を行なう。さらに、タスク実行部11は、制御演算によって得られたデータを出力データ群の一部としてバッファメモリ112に格納する。
【0071】
例えば、タスク実行部11は、入力データ群に含まれる、安全デバイスからの入力信号を出力データ群の一部としてバッファメモリ112に格納する。これにより、次のセーフティタスク周期において、安全デバイスからの入力信号が安全コントローラ600に出力される。その結果、安全コントローラ600は、安全デバイスによって人の侵入が検知されることを認識できる。
【0072】
タスク実行部11は、制御演算において何らかの異常が発生したことに応じて、異常に関する異常情報130を生成し、生成した異常情報130を出力データ群の一部としてバッファメモリ112に格納する。これにより、次のセーフティタスク周期において、異常情報130は、安全コントローラ600、カプラ500およびPLC400に伝送される。その結果、安全コントローラ600は、安全IOユニット100において異常が発生したことを認識できる。
【0073】
異常情報130は、異常の内容を識別する識別情報(以下、「異常ID」と称する。)と、異常が発生したときに実行していたソースコードを識別する識別情報(「以下、コード情報」と称する。)とを含む。コード情報は、実行可能プログラム120を構成する1または複数のプログラムファイルのうちの実行中のソースコードを含む1つのプログラムファイルのファイル名と、当該1つのプログラムファイルにおける実行中のソードコードが記載された行番号とを含む。
【0074】
安全IOユニット100の異常には、例えば、許されない演算(0での除算、実数演算で解が虚数になる演算など)、割り当てられていない記憶領域へのアクセスなどが含まれる。
【0075】
書込読出処理部12は、書込指示および読出指示を受けて、メインメモリ104に対して指定された変数の書き込みおよび読み出しをそれぞれ実行する。
図5に示されるように、書込読出処理部12は、変数管理テーブル17を管理している。変数管理テーブル17は、各変数について、変数名とメインメモリ104において当該変数の値を示すデータが保持されるアドレスとを対応付ける。書込読出処理部12は、変数管理テーブル17を用いて、指定された変数の書き込みおよび読み出しを実行する。
【0076】
データ反転部13は、割り込み指示を受けると、タスク実行部11の処理を一時的に中止させる。割り込み指示において、メインメモリ104における1ビットの位置(以下、「反転位置」と称する。)が指定される。反転位置は、アドレスおよびアドレス内のビット位置によって表される。
【0077】
割り込みプログラム124は、メモリ内の指定された位置の1ビットのデータを反転させる命令を含む。そのため、データ反転部13は、当該命令に従って、割り込み指示によって指定された反転位置の1ビットのデータを反転させる書込指示を生成する。データ反転部13は、生成した書込指示を書込読出処理部12に出力する。これにより、メインメモリ104における反転位置の1ビットのデータが反転する。データ反転部13は、データの反転が完了すると、タスク実行部11の処理を再開させる。
【0078】
変数名抽出部14、異常情報収集部15およびダンプ処理部16は、データベース200に登録されるデータ群(以下、「登録用データ群140」と称する。)を生成する。生成された登録用データ群140は、出力データ群の一部としてバッファメモリ112に格納される。
【0079】
変数名抽出部14は、登録用データ群140の一部として、割り込み指示によって指定された反転位置に書き込まれている変数の名称(以下、「変数名」と称する。)を抽出する。変数名抽出部14は、変数管理テーブル17から、反転位置を表すアドレスに対応する変数名141を抽出すればよい。
【0080】
割り込みプログラム124は、1ビットのデータを反転させた後の実行可能プログラム120の実行において発生した異常に関する異常情報を収集させる命令を含む。そのため、異常情報収集部15は、当該命令に従って、登録用データ群140の一部として、1ビットのデータが反転された後のIOタスクにおいて発生した異常に関する異常情報142を収集する。具体的には、異常情報収集部15は、1ビットのデータが反転された後の所定期間において、バッファメモリ112の出力データ群を監視する。異常情報収集部15は、所定期間において出力データ群に異常情報130が追加されたことに応じて、当該異常情報130をコピーすることにより、登録用データ群140の一部となる異常情報142を生成する。
【0081】
所定期間は、セーフティタスク周期のP倍の期間である。Pは、実行可能プログラム120の内容、データベース200の構築のために許される期間の長さなどに応じて、適宜設定される。
【0082】
例えば、アドレスが書き込まれている領域の1ビットが反転された場合、当該アドレスは、メインメモリ104に存在しない位置を表し得る。そのため、次のセーフティタスク周期において当該アドレスを読み出すと、異常が発生する。このような場合、P=1としても問題ない。しかしながら、変数が書き込まれている領域の1ビットが反転された場合、当該変数の値を用いた制御演算がQ回実行されることにより、異常が発生することがある。このような場合、PとしてQ以上の整数を設定することが好ましい。
【0083】
一方、Pの値が大きいと、データベース200の構築に要する時間が長くなる。そのため、データベース200の構築のために許される期間の長さに応じて、Pが設定される。
【0084】
ダンプ処理部16は、1ビットのデータが反転された後のIOタスクにおいて異常が発生したことに応じて、メインメモリ104のダンプ処理を実行する。具体的には、ダンプ処理部16は、1ビットのデータが反転された後の所定期間において、バッファメモリ112の出力データ群を監視する。ダンプ処理部16は、所定期間において出力データ群に異常情報130が追加されたことに応じて、メインメモリ104のダンプ処理を実行し、登録用データ群140の一部としてメモリダンプ143を生成する。メモリダンプ143は、メインメモリ104の内容の一部または全部が記録されたファイルである。
【0085】
変数名抽出部14、異常情報収集部15およびダンプ処理部16は、1ビットのデータが反転されてから所定期間が経過した後に、登録用データ群140を出力データ群の一部としてバッファメモリ112に格納する。あるいは、変数名抽出部14、異常情報収集部15およびダンプ処理部16は、異常情報142の収集およびメモリダンプ143の生成の完了直後に、登録用データ群140を出力データ群の一部としてバッファメモリ112に格納してもよい。
【0086】
なお、メインメモリ104内の1ビットのデータが反転されたとしても、必ず異常が発生するわけではない。例えば、頻繁に上書きされる領域の1ビットのデータが反転された場合、当該データは、反転された直後に正しい値に上書きされる。このような場合、異常は発生しない。あるいは、読み出しが行なわれない領域の1ビットのデータが反転された場合も、異常は発生しない。1ビットのデータが反転されてから所定期間が経過するまでの間に異常が発生しない場合、登録用データ群140には、変数名141のみが含まれ、異常情報142およびメモリダンプ143が含まれない。
【0087】
登録用データ群140がバッファメモリ112に格納された後のセーフティタスク周期において、登録用データ群140を含む出力データ群は、ローカルバス10およびフィールドネットワークを介して、PLC400に伝送される。これにより、PLC400は、登録用データ群140を取得する。なお、1ビットのデータが反転された後の所定期間内に異常が発生し、情報処理システム1を構成する機器間の通信が停止された場合、通信再開後のセーフティタスク周期において、登録用データ群140を含む出力データ群がPLC400に伝送される。
【0088】
図2に示す安全IOユニット100Aも
図5に示す機能構成を有する。ただし、安全IOユニット100Aにおいて、データ反転部13、変数名抽出部14、異常情報収集部15、およびダンプ処理部16は省略されてもよい。安全IOユニット100Aにおいても、タスク実行部11は、制御演算において何らかの異常が発生したことに応じて、異常に関する異常情報130を生成し、生成した異常情報130を出力データ群の一部としてバッファメモリ112に格納する。これにより、次のセーフティタスク周期において、異常情報130は、安全コントローラ600、カプラ500およびPLC400に伝送される。
【0089】
<コンピュータの機能構成>
図6は、コンピュータ300の機能構成を示すブロック図である。
図6に示されるように、コンピュータ300は、指示部31と、登録部32と、検索部33とを含む。指示部31および登録部32は、
図4に示すプロセッサ302がDB構築プログラム322を実行することにより実現される。検索部33は、プロセッサ302が検索プログラム324を実行することにより実現される。
【0090】
指示部31は、安全IOユニット100を送信先とする割り込み指示を生成し、生成した割り込み指示をPLC400に設定する。これにより、PLC400からフィールドネットワークおよびローカルバス10を介して、割り込み指示が安全IOユニット100に伝送される。割り込み指示は、安全IOユニット100のメインメモリ104内の1ビットの反転位置を指定する。反転位置は、上述したように、アドレスおよびビット位置で表される。
【0091】
登録部32は、指示部31によって割り込み指示がPLC400に設定された後にPLC400が登録用データ群140を取得したことに応じて、データベース200に含まれるテーブル20に新たなレコードを登録する。
【0092】
図7は、データベース200に含まれるテーブル20の一例を示す図である。
図7に示されるように、テーブル20は、位置情報22と、異常情報23と、メモリダンプ24と、フラグ25とを対応付けた1または複数のレコード21を含む。
【0093】
フラグ25は、異常情報23によって示される異常の原因が、位置情報22によって示される位置の1ビットのデータの反転であるか否かを示す情報である。異常の原因が1ビットのデータの反転である場合、フラグ25には「True」が設定される。異常の原因が1ビットのデータの反転でない場合、フラグ25には「False」が設定される。異常の原因が1ビットのデータの反転であるか否か不明である場合、フラグ25には「Unknown」が設定される。
【0094】
登録部32は、割り込み指示によって指定される反転位置を表すアドレスおよびビット位置と、当該割り込み指示に応じて取得された登録用データ群140に含まれる変数名141とを含む位置情報22を設定する。さらに、登録部32は、登録用データ群140に含まれる異常情報142およびメモリダンプ143を異常情報23およびメモリダンプ24としてそれぞれ設定する。登録部32は、設定した位置情報22、異常情報23およびメモリダンプ24と、デフォルトとして「Unknown」が設定されたフラグ25とを対応付けたレコード21をテーブル20に追加する。
【0095】
登録部32は、入力装置310(
図4参照)への入力に応じて、各レコード21のフラグ25を更新する。解析者は、各レコード21の位置情報22、異常情報23およびメモリダンプ24を確認することにより、異常の原因が1ビットのデータの反転であるか否かを判断すればよい。解析者は、判断結果に応じて、フラグ25の更新指示を入力装置310に入力すればよい。
【0096】
指示部31は、メインメモリ104の全ビットの各々について割り込み指示を生成し、生成した割り込み指示をPLC400に順次設定する。具体的には、指示部31は、k番目のビットに対応する割り込み指示をPLC400に設定する。その後、k番目のビットに対応する割り込み指示に応じて取得した登録用データ群140に基づいてレコード21がテーブル20に追加された後に、指示部31は、k+1番目のビットに対応する割り込み指示をPLC400に設定する。このようにして、メインメモリ104の全ビットの各々に対応するレコード21がテーブル20に追加される。
【0097】
なお、上述したように、メインメモリ104内の1ビットのデータが反転されたとしても、必ず異常が発生するわけではない。そのため、登録部32は、登録用データ群140に異常情報142およびメモリダンプ143が含まれない場合、テーブル20へのレコード21の追加を省略してもよい。
【0098】
検索部33は、安全IOユニット100AからPLC400Aに伝送された異常情報130を解析対象情報として取得する。検索部33は、解析対象情報を取得すると、解析対象情報と一致する異常情報23をデータベース200から検索する。検索部33は、検索された異常情報23に対応する位置情報22およびメモリダンプ24を出力する。具体的には、検索部33は、位置情報22およびメモリダンプ24をディスプレイ308に表示する。
【0099】
検索部33は、異常の原因が1ビットのデータの反転でないことを示すフラグ25に対応する異常情報23を検索対象から除外してもよい。具体的には、検索部33は、検索において、フラグ25が「False」であるレコード21を検索対象から除外する。あるいは、検索部33は、検索において、フラグ25が「False」または「Unknown」であるレコード21を検索対象から除外してもよい。これにより、検索に要する時間が短縮される。
【0100】
<フラグの更新例>
フラグ25の更新例について説明する。例えば、異常情報23に含まれる異常IDが例外ハンドラ呼出しによる異常を示す場合、以下のようにしてフラグ25が更新される。例外ハンドラは、例えば、IOタスクの実行中に不正メモリアクセス等が発生した際に実行される。
【0101】
例えば、解析者は、異常IDから、異常の原因が不正メモリアクセスであることを疑い、異常情報23に含まれるコード情報と、メモリダンプ24とを確認する。コード情報が関数処理終了後のソースコードを示している場合、戻りアドレスのデータ化けが疑われる。戻りアドレスは、関数の呼出しの際に、プロセッサ102のレジスタからメインメモリ104のスタック領域に一時的に退避され、関数処理終了後にレジスタに復帰される。そのため、解析者は、位置情報22を確認し、反転された1ビットの位置がスタック領域であるか否かを判断する。反転された1ビットの位置がスタック領域である場合、解析者は、メモリダンプ24と実行可能プログラム120のソースコードとを確認することにより、異常の原因が1ビットのデータの反転か否かを判断できる。解析者は、判断結果に応じて、フラグ25を更新すればよい。
【0102】
<ステップS1~S4>
図1に示すステップS1において、指示部31として動作するプロセッサ302は、反転位置を指定した割り込み指示を生成し、生成した割り込み指示をPLC400に設定する。PLC400は、フィールドネットワークを介して、設定された割り込み指示をカプラ500に伝送する。カプラ500は、ローカルバス10を介して、割り込み指示を安全IOユニット100に伝送する。これにより、安全IOユニット100は、反転位置を指定した割り込み指示を受ける。
【0103】
ステップS2において、安全IOユニット100のプロセッサ102は、割り込み指示を受けたことに応じて、IOタスクを一時的に中断する。プロセッサ102は、データ反転部13として動作し、メインメモリ104における、割り込み指示によって指定された反転位置の1ビットのデータを反転させる。それから、プロセッサ102は、タスク実行部11として動作し、IOタスクを再開させる。
【0104】
さらに、変数名抽出部14、異常情報収集部15およびダンプ処理部16として動作するプロセッサ102は、登録用データ群140を生成する。具体的には、プロセッサ102は、登録用データ群140の一部として、反転位置に書き込まれている変数を識別する変数名141を変数管理テーブル17から抽出する。プロセッサ102は、1ビットのデータが反転された後の所定期間において、出力データ群に異常情報130が追加されたことに応じて、当該異常情報130をコピーすることにより、登録用データ群140の一部として異常情報142を生成する。さらに、プロセッサ102は、所定期間において出力データ群に異常情報130が追加されたことに応じて、メインメモリ104のダンプ処理を実行し、登録用データ群140の一部としてメモリダンプ143を生成する。
【0105】
ステップS3において、ローカルバスコントローラ108は、ローカルバス10を介して、登録用データ群140を含む出力データ群をカプラ500に伝送する。カプラ500は、フィールドネットワークを介して、登録用データ群140をPLC400に伝送する。それから、登録部32として動作するプロセッサ302は、PLC400から登録用データ群140を取得する。
【0106】
ステップS4において、プロセッサ302は、割り込み指示によって指定された反転位置を表すアドレスおよびビット位置と、登録用データ群140に含まれる変数名141とを含む位置情報22を設定する。さらに、プロセッサ302は、登録用データ群140に含まれる異常情報142およびメモリダンプ143を異常情報23およびメモリダンプ24としてそれぞれ設定する。それから、プロセッサ302は、位置情報22、異常情報23およびメモリダンプ24と、デフォルトとして「Unknown」が設定されたフラグ25とを対応付けたレコード21をテーブル20に追加する。さらに、プロセッサ302は、入力装置310への入力に応じて、各レコード21のフラグ25を更新する。これにより、データベース200のテーブル20が更新される。
【0107】
上記のステップS1~S4は、メインメモリ104のビットごとに繰り返される。これにより、メインメモリ104の全ビットの各々について、当該ビットに擬似的にソフトエラーを発生させたときの影響を示す情報がデータベース200に蓄積される。
【0108】
このようにして構築されたデータベース200を参照することにより、メインメモリ104にソフトエラーが発生したときの安全IOユニット100Aへの影響を容易に確認できる。
【0109】
上述したように、テーブル20の各レコード21は位置情報22を含む。位置情報22は、反転された1ビットの位置に書き込まれている変数の名称(変数名)を含む。そのため、メインメモリ104に格納された変数の値にソフトエラーによるデータ化けが発生したときの影響を確認しやすくなる。
【0110】
さらに、異常情報23は、異常の内容を識別する異常IDと、異常が発生したときに実行されていたソースコードを識別するコード情報とを含む。これにより、解析者は、メインメモリ104にソフトエラーが発生したときに、どのような内容の異常が発生するか、あるいは、実行可能プログラム120のうちのどのソースコードで異常が発生するか、を容易に確認できる。
【0111】
さらに、データベース200のテーブル20には、位置情報22および異常情報23と対応付けて、異常が発生したときのメインメモリ104の内容を示すメモリダンプ24も登録される。これにより、例えば、稼働中の生産ラインに設置された安全IOユニット100Aにおいて異常が発生した場合、当該異常と同じ内容の異常情報23に対応するメモリダンプ24と、安全IOユニット100Aのメインメモリ104の内容とを比較できる。比較結果は、異常の原因の特定に役立つ。そのため、異常の原因の解析に要する時間を短縮できる。
【0112】
<ステップS11~S13>
図2に示すステップS11において、安全IOユニット100Aのプロセッサ102は、タスク実行部11として動作し、異常の発生に応じて異常情報130を生成し、生成した異常情報130を出力データ群の一部としてバッファメモリ112に格納する。これにより、異常情報130は、ローカルバス10を介して、カプラ500に伝送される。カプラ500は、フィールドネットワークを介して、異常情報130をPLC400に伝送する。それから、プロセッサ302は、PLC400から異常情報130を取得し、取得した異常情報130を解析対象情報として設定する。
【0113】
ステップS12において、プロセッサ302は、検索部33として動作し、解析対象情報と一致する異常情報23をデータベース200のテーブル20から検索する。このとき、プロセッサ302は、フラグ25を用いて、検索対象を絞り込んでもよい。
【0114】
ステップS13において、プロセッサ302は、検索された異常情報23に対応する位置情報22およびメモリダンプ24を出力する。具体的には、プロセッサ302は、位置情報22およびメモリダンプ24をディスプレイ308に表示させる。
【0115】
解析者は、安全IOユニット100Aにおいて発生した異常の原因の候補として、出力された位置情報22によって示される位置のソフトエラーを容易に挙げることができる。その結果、異常の原因の解析に要する時間を短縮できる。さらに、出力されたメモリダンプ24と安全IOユニット100Aのメインメモリ104の内容との比較結果は、異常の原因の特定に役立つ。そのため、異常の原因の解析に要する時間をさらに短縮できる。
【0116】
<変形例>
上記の説明では、安全IOユニット100において擬似的にソフトエラーを発生させる。しかしながら、擬似的にソフトエラーを発生される装置は、安全IOユニット100に限定されるものではなく、様々な情報処理装置であってもよい。
【0117】
上記の説明では、異常情報130,142は、異常IDとコード情報とを含む。しかしながら、異常情報130,142は、異常IDとコード情報とのうちの一方のみを含んでもよい。異常IDとコード情報とのうちの一方だけが異常情報23としてデータベース200に登録されたとしても、ソフトエラーによる影響を確認できる。
【0118】
上記の説明では、コンピュータ300が指示部31、登録部32および検索部33を含む。しかしながら、コンピュータ300が指示部31および登録部32を含み、別のコンピュータが検索部33を含んでもよい。
【0119】
§3 付記
以上のように、本実施の形態は以下のような開示を含む。
【0120】
(構成1)
情報処理システム(1)であって、
第1情報処理装置(100)と、
データベース(200)と、を備え、
前記第1情報処理装置(100)は、
第1プログラム(120)と前記第1プログラム(120)の実行中に割り込まれる第2プログラム(124)とを実行するプロセッサと、
メモリ(104)と、を含み、
前記第2プログラム(124)は、
前記メモリ(104)内の指定された位置の1ビットのデータを反転させる命令と、
前記1ビットのデータを反転させた後の前記第1プログラム(120)の実行において発生した異常に関する第1情報(142,23)を収集させる命令と、を含み、
前記情報処理システム(1)は、さらに、
前記指定された位置に関する第2情報(22)と前記第1情報(142,23)とを対応付けて前記データベースに登録する登録部(32,302)を備える、情報処理システム(1)。
【0121】
(構成2)
前記第2情報(22)は、前記指定された位置に書き込まれていた変数の名称を含む、構成1に記載の情報処理システム(1)。
【0122】
(構成3)
前記第1情報(142,23)は、前記異常の内容を識別する第1識別情報および前記第1プログラムのうち前記異常が発生したときに実行されていたソースコードを識別する第2識別情報の少なくとも1つを含む、構成1または2に記載の情報処理システム(1)。
【0123】
(構成4)
前記登録部(32,302)は、前記第1情報(142,23)および前記第2情報(22)と対応付けて、前記異常が発生したときの前記メモリ(104)の内容を示すメモリダンプ(24)を前記データベース(200)にさらに登録する、構成1から3のいずれかに記載の情報処理システム(1)。
【0124】
(構成5)
前記第1プログラム(120)を実行する第2情報処理装置(100A)において発生した異常に関する解析対象情報と一致する前記第1情報(142,23)を前記データベース(200)から検索し、検索された前記第1情報(142,23)に対応する前記第2情報(22)を出力する検索部(33,302)をさらに備える、構成1から3のいずれかに記載の情報処理システム(1)。
【0125】
(構成6)
前記第1プログラム(120)を実行する第2情報処理装置(100A)において発生した異常に関する解析対象情報と一致する前記第1情報(142,23)を前記データベース(200)から検索し、検索された前記第1情報(142,23)に対応する前記第2情報(22)および前記メモリダンプ(24)を出力する検索部(33,302)をさらに備える、構成4に記載の情報処理システム(1)。
【0126】
(構成7)
前記登録部(32,302)は、前記第1情報(142,23)および前記第2情報(22)と対応付けて、前記第1情報(142,23)に対応する前記異常の原因が前記1ビットのデータの反転であるか否かを示す第3情報(25)を前記データベース(200)にさらに登録し、
前記検索部(33,302)は、前記異常の原因が前記1ビットのデータの反転でないことを示す前記第3情報(25)に対応する前記第1情報(142,23)を検索対象から除外する、構成5または6に記載の情報処理システム(1)。
【0127】
(構成8)
プログラム(120)を実行するプロセッサ(102)とメモリ(104)とを含む情報処理装置(100)を用いたデータベース(200)の構築方法であって、
前記メモリ(104)内の指定された位置の1ビットのデータを反転させるステップと、
前記1ビットのデータを反転させた後の前記プロセッサ(102)による前記プログラム(120)の実行において発生した異常に関する第1情報を収集するステップと、
前記指定された位置に関する第2情報と前記第1情報とを対応付けて前記データベース(200)に登録するステップとを備える、データベース(200)の構築方法。
【0128】
本発明の実施の形態について説明したが、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0129】
1 情報処理システム、10 ローカルバス、11 タスク実行部、12 書込読出処理部、13 データ反転部、14 変数名抽出部、15 異常情報収集部、16 ダンプ処理部、17 変数管理テーブル、20 テーブル、21 レコード、22 位置情報、23,130,142 異常情報、24,143 メモリダンプ、25 フラグ、31 指示部、32 登録部、33 検索部、100,100A 安全IOユニット、102,302 プロセッサ、104 メインメモリ、106,306 ストレージ、108 ローカルバスコントローラ、110 安全IOモジュール、112 バッファメモリ、114 プロセッサバス、120 実行可能プログラム、122 ライブラリ、124 割り込みプログラム、140 登録用データ群、141 変数名、200 データベース、300 コンピュータ、304 メモリ、308 ディスプレイ、310 入力装置、312 USBコントローラ、314 内部バス、320 OS、322 DB構築プログラム、324 検索プログラム、400,400A PLC、500,500A カプラ、600,600A 安全コントローラ。