IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オムロン株式会社の特許一覧

特許7419956情報処理装置、情報処理方法およびプログラム
<>
  • 特許-情報処理装置、情報処理方法およびプログラム 図1
  • 特許-情報処理装置、情報処理方法およびプログラム 図2
  • 特許-情報処理装置、情報処理方法およびプログラム 図3
  • 特許-情報処理装置、情報処理方法およびプログラム 図4
  • 特許-情報処理装置、情報処理方法およびプログラム 図5
  • 特許-情報処理装置、情報処理方法およびプログラム 図6
  • 特許-情報処理装置、情報処理方法およびプログラム 図7
  • 特許-情報処理装置、情報処理方法およびプログラム 図8
  • 特許-情報処理装置、情報処理方法およびプログラム 図9
  • 特許-情報処理装置、情報処理方法およびプログラム 図10
  • 特許-情報処理装置、情報処理方法およびプログラム 図11
  • 特許-情報処理装置、情報処理方法およびプログラム 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-15
(45)【発行日】2024-01-23
(54)【発明の名称】情報処理装置、情報処理方法およびプログラム
(51)【国際特許分類】
   G06F 11/36 20060101AFI20240116BHJP
【FI】
G06F11/36 104
【請求項の数】 5
(21)【出願番号】P 2020079371
(22)【出願日】2020-04-28
(65)【公開番号】P2021174377
(43)【公開日】2021-11-01
【審査請求日】2023-02-07
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】佐藤 健司
【審査官】武田 広太郎
(56)【参考文献】
【文献】特開2014-203165(JP,A)
【文献】特開2012-208537(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
(57)【特許請求の範囲】
【請求項1】
情報処理装置であって、
タスク実行装置において周期的に実行されるタスクに割り当てられたプログラムを構文解析する解析部と、
前記解析部による解析結果を出力する出力部とを備え、
前記解析部は、
前記タスクの実行に用いられる1つ以上の変数を抽出する抽出部と、
前記1つ以上の変数の各々を、前記タスクの実行において最初にメモリからの値の読み出し処理が行なわれる第1グループと、当該タスクの実行において最初にメモリへの値の書き込み処理が行なわれる第2グループとに分類する分類部と、
前記第1グループに属する変数に対するソフトエラー対策の必要度が前記第2グループに属する変数に対するソフトエラー対策の必要度よりも大きいと判定する判定部とを含み、
前記出力部は、前記判定部による判定結果を出力する、情報処理装置。
【請求項2】
前記1つ以上の変数は、前記第2グループに属する、第1変数と第2変数とを含み、
前記プログラムが、前記第1変数の値をメモリに最初に書き込む第1命令と、前記第1命令の後に第1規定時間だけ待機する第2命令と、前記第2命令の後に前記第1変数の値をメモリから読み出す第3命令と、前記第2変数の値をメモリに最初に書き込む第4命令と、前記第4命令の後に前記第1規定時間よりも短い第2規定時間だけ待機する第5命令と、前記第5命令の後に前記第2変数の値をメモリから読み出す第6命令とを含むことに応じて、前記判定部は、前記第1変数に対するソフトエラー対策の必要度が前記第2変数に対するソフトエラー対策の必要度よりも大きいと判定する、請求項1に記載の情報処理装置。
【請求項3】
前記1つ以上の変数は、前記第2グループに属する、第1変数と第2変数とを含み、
前記プログラムが、前記第1変数の値をメモリに最初に書き込む第1命令と、前記第1命令の後に第1規定時間だけ待機する第2命令と、前記第2命令の後に前記第1変数の値をメモリから読み出す第3命令と、前記第2変数の値をメモリに最初に書き込む第4命令と、前記第4命令の後に前記第2変数の値をメモリから読み出す第5命令とを含み、かつ、前記第4命令と前記第5命令との間に規定時間待機する命令を含まないことに応じて、前記判定部は、前記第1変数に対するソフトエラー対策の必要度が前記第2変数に対するソフトエラー対策の必要度よりも大きいと判定する、請求項1に記載の情報処理装置。
【請求項4】
情報処理装置における情報処理方法であって、
タスク実行装置において周期的に実行されるタスクに割り当てられたプログラムを構文解析するステップと、
構文解析結果を出力するステップとを備え、
前記構文解析するステップは、
前記タスクの実行に用いられる1つ以上の変数を抽出するステップと、
前記1つ以上の変数の各々を、前記タスクの実行において最初にメモリからの値の読み出し処理が行なわれる第1グループと、当該タスクの実行において最初にメモリへの値の書き込み処理が行なわれる第2グループとに分類するステップと、
前記第1グループに属する変数に対するソフトエラー対策の必要度が前記第2グループに属する変数に対するソフトエラー対策の必要度よりも大きいと判定するステップとを含み、
前記出力するステップは、前記判定するステップによる判定結果を出力するステップを含む、情報処理方法。
【請求項5】
請求項4に記載の情報処理方法をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【0002】
半導体デバイスの高集積化および微細化に伴い、メモリにおける一過性のビットエラー(ソフトエラー)が急増している。ソフトエラーは、例えばα粒子や宇宙線中性子の衝突によって発生する。ソフトエラーが発生しうるメモリをシステムに適用すると、ソフトエラーによるシステムの一時的な停止が生じうる。
【0003】
このような背景から、特開2007-18414号公報(特許文献1)には、RAM(Random Access Memory)の変数データを書き換える場合に、同一のデータをRAM内の異なる3以上のアドレスの各々に書き込む制御装置が開示されている。また、ソフトエラー対策に関する設計、評価、品質基準を定めるソフトエラー対策勧告がITU-T(International Telecommunication Union - Telecommunication Standardization Sector)において承認されている(非特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2007-18414号公報
【非特許文献】
【0005】
【文献】International Telecommunication Union、「K.131:Design methodologies for telecommunication systems applying soft error measures」、[online]、2018年1月13日、[2020年4月13日検索]、インターネット〈URL:https://www.itu.int/rec/T-REC-K.131-201801-I/en〉
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1に記載のソフトエラー対策を全ての変数に適用すると、容量の大きいメモリが必要となり、コストがかかる。そのため、ソフトエラー対策の必要度が高い変数についてのみ、例えば特許文献1のようなソフトエラー対策を施すことが好ましい。しかしながら、非特許文献1は、メモリにおけるソフトエラー対策の必要な箇所を抽出することを勧告しているものの、その具体的な手法について開示していない。
【0007】
本開示は、上記の問題に鑑みてなされたものであり、その目的は、ソフトエラー対策の必要な変数を特定することが可能な情報処理装置、情報処理方法およびプログラムを提供することである。
【課題を解決するための手段】
【0008】
本開示の一例によれば、情報処理装置は、タスク実行装置において周期的に実行されるタスクに割り当てられたプログラムを構文解析する解析部と、解析部による解析結果を出力する出力部とを備える。解析部は、抽出部と、分類部と、判定部とを含む。抽出部は、タスクの実行に用いられる1つ以上の変数を抽出する。分類部は、1つ以上の変数の各々を、タスクの実行において最初にメモリからの値の読み出し処理が行なわれる第1グループと、当該タスクの実行において最初にメモリへの値の書き込み処理が行なわれる第2グループとに分類する。判定部は、第1グループに属する変数に対するソフトエラー対策の必要度が第2グループに属する変数に対するソフトエラー対策の必要度よりも大きいと判定する。出力部は、判定部による判定結果を出力する。
【0009】
この開示によれば、1つ以上の変数の各々は、第1グループと第2グループとのいずれかに分類される。第2グループに分類された変数は、タスクの実行において最初にメモリへ値が書き込まれる。そのため、タスクを終了してから次の周期でタスクを開始するまでの間にメモリにソフトエラーが生じたとしても、当該次の周期において値が書き込まれるため、当該ソフトエラーの影響はない。
【0010】
一方、第1グループに分類された変数は、タスクの実行において最初にメモリから値が読み出される。そのため、タスクを終了してから次の周期でタスクを開始するまでの間にメモリにソフトエラーが生じた場合、化けた値が読み出され、当該値を用いて演算が実行される。その結果、制御システムに異常が発生し得る。
【0011】
そのため、第1グループに属する変数に対するソフトエラー対策の必要度が第2グループに属する変数に対するソフトエラー対策の必要度よりも高いと判定され、その判定結果が出力される。これにより、ユーザは、第1グループに属する変数を、ソフトエラー対策の必要な変数として特定できる。
【0012】
上述の開示において、1つ以上の変数は、第2グループに属する、第1変数と第2変数とを含む。プログラムが、第1変数の値をメモリに最初に書き込む第1命令と、第1命令の後に第1規定時間だけ待機する第2命令と、第2命令の後に第1変数の値をメモリから読み出す第3命令と、第2変数の値をメモリに最初に書き込む第4命令と、第4命令の後に第1規定時間よりも短い第2規定時間だけ待機する第5命令と、第5命令の後に第2変数の値をメモリから読み出す第6命令とを含むことに応じて、判定部は、第1変数に対するソフトエラー対策の必要度が第2変数に対するソフトエラー対策の必要度よりも大きいと判定する。
【0013】
この開示によれば、値をメモリに最初に書き込む命令と、値をメモリから読み出す命令との間の待機命令の規定時間が長い変数ほど、ソフトエラー対策の必要度が大きく判定される。
【0014】
上述の開示において、1つ以上の変数は、第2グループに属する、第1変数と第2変数とを含む。プログラムが、第1変数の値をメモリに最初に書き込む第1命令と、第1命令の後に第1規定時間だけ待機する第2命令と、第2命令の後に第1変数の値をメモリから読み出す第3命令と、第2変数の値をメモリに最初に書き込む第4命令と、第4命令の後に第2変数の値をメモリから読み出す第5命令とを含み、かつ、第4命令と第5命令との間に規定時間待機する命令を含まないことに応じて、判定部は、第1変数に対するソフトエラー対策の必要度が第2変数に対するソフトエラー対策の必要度よりも大きいと判定する。これにより、第1グループに属する変数について、ソフトエラー対策の必要度を細かく判定できる。
【0015】
この開示によれば、第1グループに属する変数のうち、値をメモリに書き込む命令と値をメモリから読み出す命令との間に規定時間だけ待機する命令が実行される変数に対するソフトエラー対策の必要度が、それ以外の変数よりも大きく判定される。これにより、第1グループに属する変数について、ソフトエラー対策の必要度を細かく判定できる。
【0016】
本開示の一例によれば、情報処理装置における情報処理方法は、タスク実行装置において周期的に実行されるタスクに割り当てられたプログラムを構文解析するステップと、構文解析結果を出力するステップとを備える。構文解析するステップは、(i)タスクの実行に用いられる1つ以上の変数を抽出するステップと、(ii)1つ以上の変数の各々を、タスクの実行において最初にメモリからの値の読み出し処理が行なわれる第1グループと、当該タスクの実行において最初にメモリへの値の書き込み処理が行なわれる第2グループとに分類するステップと、(iii)第1グループに属する変数に対するソフトエラー対策の必要度が第2グループに属する変数に対するソフトエラー対策の必要度よりも大きいと判定するステップとを含む。出力するステップは、判定するステップによる判定結果を出力するステップを含む。
【0017】
本開示の一例によれば、プログラムは、上記の情報処理方法をコンピュータに実行させる。これらの開示によっても、ソフトエラー対策の必要な変数を特定できる。
【発明の効果】
【0018】
本開示によれば、ソフトエラー対策の必要な変数を特定できる。
【図面の簡単な説明】
【0019】
図1】本実施の形態に係る情報処理装置の適用例を示す模式図である。
図2】本実施の形態に係る制御システムの全体構成例を示す模式図である。
図3】本実施の形態に係る制御装置のハードウェア構成例を示すブロック図である。
図4】タスク情報の一例を示す図である。
図5図4に示すタスク情報に従ったタスクの実行状況を示す図である。
図6】本実施の形態に係る情報処理装置のハードウェア構成例を示すブロック図である。
図7】本実施の形態に係る情報処理装置の機能構成例を示すブロック図である。
図8】タスクに割り当てられたプログラムの一例を示す図である。
図9】変数の分類結果の一例を示す図である。
図10】ディスプレイに表示される判定結果の一例を示す図である。
図11】タスクに割り当てられたプログラムの別の例を示す図である。
図12】変形例における判定結果の一例を示す図である。
【発明を実施するための形態】
【0020】
本開示の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【0021】
§1 適用例
航空宇宙システム、自動車、医療機器、通信機器、産業機器など様々に分野において、メモリのソフトエラーに起因するシステムの一時的な停止を抑制することが望まれる。本開示は、このような様々な分野のシステムに適用され得る。以下では、本開示の適用例として、FA(ファクトリオートメーション)分野において使用される制御システムについて説明するが、本開示の適用例は、当該制御システムに限定されない。
【0022】
FA分野において使用される制御システムは、例えばPLC(プログラマブルロジックコントローラ)を備える。PLCは、1つ以上のタスクの各々を予め定められた周期で実行する。
【0023】
PLCは、プロセッサと、ストレージと、メモリとを含む。プロセッサは、ストレージに格納された各種のプログラムを実行することにより、制御対象に応じた1つ以上のタスクを実行する。各タスクには、予めプログラムが割り当てられている。プロセッサは、予め定められた周期で各タスクに割り当てられたプログラムを実行する。
【0024】
各タスクの実行に用いられる1つ以上の変数の値は、メモリに保持される。プロセッサは、タスクに割り当てられたプログラムに含まれる命令に従って、メモリから変数の値を読み出したり、メモリへ変数の値を書き込んだりする。
【0025】
PLCに含まれるメモリにソフトエラーが発生すると、変数の値にデータ化けが生じる。このようなデータ化けに起因して、制御システムに異常が生じうる。そのため、例えば特許文献1に記載のように、変数の値を示す同一のデータをメモリ内の異なる3以上のアドレスの各々に書き込む対策が考えられる。しかしながら、全ての変数について、同一のデータをメモリ内の異なる3以上のアドレスの各々に書き込むと、容量の大きいメモリが必要となり、コストがかかる。そのため、ソフトエラー対策の必要度が高い変数についてのみ、例えば特許文献1のような対策を施すことが好ましい。そこで、本実施の形態に係る制御システムは、ソフトエラー対策の必要度を判定する情報処理装置を備える。
【0026】
図1は、本実施の形態に係る情報処理装置の適用例を示す模式図である。図1には、情報処理装置における情報処理方法の流れが示される。
【0027】
図1に示されるように、情報処理方法は、PLCにおいて実行される各タスクに割り当てられたプログラムを構文解析するステップS1と、解析結果を出力するステップS2とを含む。
【0028】
ステップS1は、ステップS11~ステップS13を含む。ステップS11は、タスクの実行に用いられる1つ以上の変数を抽出するステップである。図1では、変数a~cが抽出されている。
【0029】
ステップS12は、抽出された1つ以上の変数の各々を、タスクの実行において最初にメモリからの値の読み出し処理が行なわれる第1グループと、タスクの実行において最初にメモリへの値の書き込み処理が行なわれる第2グループとに分類するステップである。
【0030】
図1において、「R」は読み出し処理を示し、「W」は書き込み処理を示す。図1に示されるように、変数a,cは、タスクの実行において最初にメモリからの値の読み出し処理が実行される。変数bは、タスクの実行において最初にメモリへの値の書き込み処理が実行される。そのため、変数a,cは第1グループに分類され、変数bは第2グループに分類される。
【0031】
ステップS13は、第1グループに属する変数a,cに対するソフトエラー対策の必要度が第2グループに属する変数bに対するソフトエラー対策の必要度よりも高いと判定するステップである。
【0032】
ステップS2は、ステップS21を含む。ステップS21は、ステップS13の判定結果を出力するステップである。例えば、判定結果は、ディスプレイに表示される。
【0033】
以上の情報処理方法によれば、1つ以上の変数の各々は、第1グループと第2グループとのいずれかに分類される。第2グループに分類された変数は、タスクの実行において最初にメモリへ値が書き込まれる。そのため、タスクを終了してから次の周期でタスクを開始するまでの間にメモリにソフトエラーが生じたとしても、当該次の周期において値が書き込まれるため、当該ソフトエラーの影響はない。
【0034】
一方、第1グループに分類された変数は、タスクの実行において最初にメモリから値が読み出される。そのため、タスクを終了してから次の周期でタスクを開始するまでの間にメモリにソフトエラーが生じた場合、化けた値が読み出され、当該値を用いて演算が実行される。その結果、制御システムに異常が発生し得る。
【0035】
そのため、第1グループに属する変数に対するソフトエラー対策の必要度が第2グループに属する変数に対するソフトエラー対策の必要度よりも高いと判定され、その判定結果が出力される。これにより、ユーザは、第1グループに属する変数を、ソフトエラー対策の必要な変数として特定できる。
【0036】
§2 具体例
<制御システムの全体構成>
まず、本実施の形態に係る情報処理装置200を含む制御システム1の全体構成例について説明する。図2は、本実施の形態に係る制御システム1の全体構成例を示す模式図である。
【0037】
図2を参照して、制御システム1は、制御装置100と情報処理装置200とフィールド機器500とを備える。
【0038】
制御装置100は、各種の設備や装置などの制御対象を制御する産業用コントローラに相当する。制御装置100は、後述するような制御演算を実行する一種のコンピュータであり、典型的には、PLC(プログラマブルコントローラ)として具現化されてもよい。制御装置100は、制御対象を制御するための1つ以上のタスクを周期的に実行するタスク実行装置である。
【0039】
制御装置100は、フィールドネットワーク2を介して各種のフィールド機器500と接続されてもよい。制御装置100は、フィールドネットワーク2などを介して、1または複数のフィールド機器500との間でデータを遣り取りする。一般的に「フィールドネットワーク」は、「フィールドバス」とも称されるが、説明の簡素化のため、以下の説明においては、「フィールドネットワーク」と総称する。すなわち、本明細書の「フィールドネットワーク」は、狭義の「フィールドネットワーク」に加えて「フィールドバス」を含み得る概念である。
【0040】
フィールドネットワーク2は、定周期通信が可能なバスまたはネットワークを採用することが好ましい。このような定周期通信を行うバスまたはネットワークとしては、EtherCAT(登録商標)、EtherNet/IP(登録商標)、DeviceNet(登録商標)、CompoNet(登録商標)などが知られている。
【0041】
フィールドネットワーク2には、任意のフィールド機器500を接続することができる。フィールド機器500は、製造装置や生産ラインなど(以下、「フィールド」とも総称する。)に対して何らかの物理的な作用を与えるアクチュエータ、および、フィールドとの間で情報を遣り取りする入出力装置などを含む。
【0042】
フィールドネットワーク2を介して、制御装置100とフィールド機器500との間でデータが遣り取りされることになるが、これらの遣り取りされるデータは、数100μsecオーダ~数10msecオーダのごく短い周期で更新されることになる。このようなデータの遣り取りは、フィールド機器500において収集または生成されたデータ(以下、「入力データ」とも称す。)を制御装置100へ送信する処理、および、制御装置100からフィールド機器500に対する制御指令などのデータ(以下、「出力データ」とも称す。)を送信する処理を含む。このような遣り取りされるデータの更新処理は、入出力リフレッシュ処理とも呼ばれる。
【0043】
図2に示す構成例においては、フィールド機器500は、リモートI/O(Input/Output)装置510と、ロボット520およびロボットコントローラ522と、CNC工作機械530と、サーボドライバ538およびサーボモータ532とを含む。
【0044】
サーボモータ532は、コンベア534を駆動して、CNC工作機械530の前に配置されたワークテーブル536にワークWを搬送する。ロボット520は、ワークテーブル536上の処理前のワークWをCNC工作機械530内に配置し、CNC工作機械530での処理済ワークWを取り出してワークテーブル536上に配置する。
【0045】
フィールド機器500としては、これらに限られることなく、入力データを収集する任意のデバイス(例えば、視覚センサなど)、ならびに、出力データに従う何らかの作用を与える任意のデバイス(例えば、インバータ装置など)などを採用することができる。
【0046】
リモートI/O装置510は、典型的には、フィールドネットワーク2を介して通信を行う通信カプラと、入力データの取得および出力データの出力を行うための入出力部(以下、「I/Oユニット」とも称す。)とを含む。
【0047】
リモートI/O装置510には、入力リレーや各種センサ(例えば、アナログセンサ、温度センサ、振動センサなど)などの入力データを収集する装置、および、出力リレー、コンタクタ、サーボドライバ、および、その他任意のアクチュエータなどのフィールドに対して何らかの作用を与える装置が接続される。
【0048】
ロボットコントローラ522は、制御装置100からの制御指令(位置指令または速度指令など)に従って、軌跡計算および各軸の角度計算などを行うとともに、計算結果に従って、ロボット520を構成するサーボモータなどを駆動する。
【0049】
CNC工作機械530は、位置や速度などを指定するプログラムに従って、マシニングセンタなどを制御することで、任意の対象物を加工する。CNC工作機械530は、典型的には、旋盤加工、フライス盤、放電加工などの加工装置を含む。
【0050】
サーボドライバ538は、制御装置100からの制御指令(例えば、位置指令または速度指令など)に従って、サーボモータ532を駆動する。
【0051】
制御装置100は、上位ネットワークを介して、他の装置に接続されていてもよい。上位ネットワークには、一般的なネットワークプロトコルであるイーサネット(登録商標)やEtherNet/IP(登録商標)が採用されてもよい。より具体的には、制御装置100は、上位ネットワークを介して、1または複数のサーバ装置および1または複数の表示装置と接続されてもよい。
【0052】
制御装置100には、情報処理装置200が接続可能になっている。情報処理装置200は、制御装置100において周期的に実行されるタスクに割り当てられたプログラムを構文解析し、その解析結果を出力する機能を提供する。さらに、情報処理装置200は、制御装置100で実行されるプログラムの開発環境(プログラム作成編集ツール、パーサ、コンパイラなど)、制御装置100および制御装置100に接続される各種デバイスのパラメータ(コンフィギュレーション)を設定するための設定環境、生成したプログラムを制御装置100へ出力する機能、制御装置100上で実行されるプログラムなどをオンラインで修正・変更する機能、などを提供してもよい。
【0053】
<制御装置のハードウェア構成例>
次に、本実施の形態に係る制御装置100のハードウェア構成例について説明する。図3は、本実施の形態に係る制御装置100のハードウェア構成例を示すブロック図である。
【0054】
図3を参照して、制御装置100は、CPUユニットと称される演算処理部であり、プロセッサ102と、チップセット104と、主メモリ106と、ストレージ108と、上位ネットワークコントローラ110と、USB(Universal Serial Bus)コントローラ112と、メモリカードインターフェイス114と、内部バスコントローラ120と、フィールドネットワークコントローラ130とを含む。
【0055】
プロセッサ102は、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)などで構成される。プロセッサ102としては、複数のコアを有する構成を採用してもよいし、プロセッサ102を複数配置してもよい。すなわち、制御装置100は、1または複数のプロセッサ102、および/または、1または複数のコアを有するプロセッサ102を有している。チップセット104は、プロセッサ102および周辺エレメントを制御することで、制御装置100全体としての処理を実現する。
【0056】
主メモリ106は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。SRAMは、記憶部の構造としてフリップフロップを用いており、リフレッシュ動作を必要とせず、DRAMより高速に動作できるという利点を有する。そのため、SRAMを主メモリ106として用いることが好ましい。
【0057】
積み上げ型(スタック型)の構造を有するDRAMでは、ソフトエラー耐性が高い。一方、フリップフロップ構造を有するSRAMでは、微細化によりソフトエラー耐性が低下する。そのため、SRAMによって構成される主メモリ106を用いる場合、主メモリ106にソフトエラーが起こりやすい。以下、主メモリ106がSRAMであるとものとして説明する。
【0058】
ストレージ108は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの不揮発性記憶装置などで構成される。
【0059】
プロセッサ102は、ストレージ108に格納された各種のプログラム30を読み出して、主メモリ106に展開して実行することで、制御対象に応じた制御、および、後述するような各種処理を実現する。ストレージ108には、さらに、基本的な機能を実現するためのシステムプログラム34に加えて、タスク情報36が格納される。タスク情報36は、制御装置100において実行される1つ以上のタスクの各々に関する情報を含む。
【0060】
上位ネットワークコントローラ110は、上位ネットワークを介して、他の装置との間のデータの遣り取りを制御する。USBコントローラ112は、USB接続を介して情報処理装置200との間のデータの遣り取りを制御する。
【0061】
メモリカードインターフェイス114は、メモリカード116が着脱可能に構成されており、メモリカード116に対してデータを書込み、メモリカード116から各種データ(ユーザプログラムやトレースデータなど)を読出すことが可能になっている。
【0062】
内部バスコントローラ120は、制御装置100に装着されるI/Oユニット122との間のデータの遣り取りを制御する。フィールドネットワークコントローラ130は、フィールドネットワーク2を介したフィールドデバイスとの間のデータの遣り取りを制御する。
【0063】
図4は、タスク情報36の一例を示す図である。図4に示されるように、タスク情報36は、制御装置100において実行される1つ以上のタスクの各々について、タスク名と、優先度と、タスクが実行される周期と、タスクに割り当てられたプログラムとを示す。図4に示す例では、優先度の値が小さいほど、優先度が高いことを示す。
【0064】
プロセッサ102は、優先度の高いタスクを優先的に実行する。また、プロセッサ102は、予め設定された時間間隔(例えば1ms)の制御周期を処理全体の共通サイクルとして採用している。
【0065】
図4に示す例では、プロセッサ102は、1msの周期(制御周期と同じ周期)でタスクAに割り当てられたプログラム30_1,30_2を実行する。プロセッサ102は、タスクAとタスクB,Cとが重なった場合、タスクB,Cよりも優先的にタスクAを実行する。
【0066】
プロセッサ102は、2msの周期(制御周期の2倍の周期)でタスクBに割り当てられたプログラム30_3を実行する。プロセッサ102は、タスクBとタスクCとが重なった場合、タスクCよりも優先的にタスクBを実行する。
【0067】
プロセッサ102は、4msの周期(制御周期の4倍の周期)でタスクCに割り当てられたプログラム30_4、30_5を実行する。プロセッサ102は、タスクCとタスクCよりも優先度の値が大きい他のタスクとが重なった場合、当該他のタスクよりも優先的にタスクCを実行する。
【0068】
図5は、図4に示すタスク情報36に従ったタスクの実行状況を示す図である。図5に示されるように、タスクAは、制御周期と同じ周期で実行される。タスクAの優先度が最も高いため、タスクAの実行は、制御周期の開始タイミングと同期して開始される。
【0069】
タスクBは、制御周期の2倍の周期で実行される。ただし、制御周期の開始タイミングにおいて、タスクBよりも優先度の高いタスクAの実行が開始される。そのため、タスクBの実行は、タスクAの終了後に開始される。
【0070】
タスクCは、制御周期の4倍の周期で実行される。ただし、制御周期の開始タイミングにおいて、タスクCよりも優先度の高いタスクAの実行が開始される。また、タスクAの後に、タスクCよりも優先度の高いタスクBが開始されることもある。そのため、タスクCの実行は、タスクCよりも優先度の高いタスクの終了後に開始される。
【0071】
<情報処理装置のハードウェア構成例>
次に、本実施の形態に係る情報処理装置200のハードウェア構成例について説明する。図6は、本実施の形態に係る情報処理装置200のハードウェア構成例を示すブロック図である。
【0072】
図6を参照して、情報処理装置200は、典型的には、汎用的なアーキクテチャを有するパーソナルコンピュータ上で、解析プログラム32が実行されることで実現される。より具体的には、図6を参照して、情報処理装置200は、プロセッサ202と、ディスプレイ204と、主メモリ206と、ストレージ208と、USBコントローラ212と、入力装置214とを含む。これらのコンポーネントは内部バス210を介して接続されている。
【0073】
プロセッサ202は、CPU、MPU、GPUなどで構成され、ストレージ208に格納されたOS216および解析プログラム32を含む各種プログラムを読出して、主メモリ206に展開して実行することで、後述したような各種機能を実現する。主メモリ206は、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ208は、例えば、HDDやSSDなどの不揮発性記憶装置などで構成される。
【0074】
なお、図6に示されるように、情報処理装置200のストレージ208には、制御装置100において実行されるプログラムの開発環境を提供するためのサポートプログラム218が格納されていてもよい。
【0075】
ディスプレイ204は、プロセッサ202などによる演算結果を表示するデバイスであり、例えば、LCD(Liquid Crystal Display)などで構成される。
【0076】
USBコントローラ212は、USB接続を介して、制御装置100との間でデータを遣り取りする。
【0077】
入力装置214は、ユーザの操作を受付けるデバイスであり、例えば、キーボードやメモリなどで構成される。
【0078】
<情報処理装置の機能構成例>
次に、本実施の形態に係る情報処理装置200の機能構成例について説明する。図7は、本実施の形態に係る情報処理装置200の機能構成例を示すブロック図である。図7に示す各モジュールは、典型的には、情報処理装置200のプロセッサ202が解析プログラム32を実行することで実現される。
【0079】
図7に示されるように、情報処理装置200は、各タスクに割り当てられたプログラムを構文解析する解析部20と、解析部20による解析結果を出力する出力部25とを備える。解析部20は、抽出部21と、分類部22と、判定部23とを含む。
【0080】
抽出部21は、各タスクに割り当てられたプログラムを構文解析することにより、当該タスクの実行に用いられる1つ以上の変数を抽出する。具体的には、抽出部21は、プログラムから、変数の値をメモリに書き込むための命令およびメモリから変数の値を読み出すための命令を特定する。抽出部21は、特定された命令の対象となる変数を抽出する。
【0081】
分類部22は、抽出部21によって抽出された1つ以上の変数の各々を、タスクの実行において最初にメモリからの値の読み出し処理が行なわれる第1グループと、タスクの実行において最初にメモリへの値の書き込み処理が行なわれる第2グループとに分類する。具体的には、分類部22は、各タスクに割り当てられたプログラムを構文解析することにより、プログラムに含まれる複数の命令の実行順序を特定する。分類部22は、抽出された1つ以上の変数の各々について、当該変数を含む1つ以上の命令のうち最初に実行される命令が読み出し命令および書き込み命令のいずれかに応じて、第1グループおよび第2グループへの分類を行なう。すなわち、分類部22は、最初にメモリからの値の読み出し命令の対象となる変数を第1グループに分類し、最初にメモリへの値の書き込み命令の対象となる変数を第2グループに分類する。
【0082】
判定部23は、第1グループに属する変数に対するソフトエラー対策の必要度が第2グループに属する変数に対するソフトエラー対策の必要度よりも大きいと判定する。
【0083】
出力部25は、判定部23の判定結果を出力する。例えば、出力部25は、判定結果をディスプレイ204に表示させる。
【0084】
<動作例>
図8図10を参照して、情報処理装置200の動作例を説明する。図8は、タスクに割り当てられたプログラムの一例を示す図である。図9は、変数の分類結果の一例を示す図である。図10は、ディスプレイに表示される判定結果の一例を示す図である。
【0085】
図8には、図4に示すタスクAに割り当てられたプログラム30_2が示される。プロセッサ202は、プログラム30_2に含まれる複数の命令を解析する。複数の命令には、関数を読み出す命令を含まれ得る。この場合、プロセッサ202は、読み出される関数に含まれる命令も解析する。図8に例示されるプログラム30_2は、関数F1を呼び出すための式301を含む。
【0086】
プロセッサ202は、プログラム30_2から、変数の値をメモリに書き込むための命令およびメモリから変数の値を読み出すための命令を特定する。図8に示す例では、プロセッサ202は、変数「tx_buf」について、値をメモリに書き込むための式302と、値をメモリから読み出すための式303とを特定する。
【0087】
プロセッサ202は、プログラム30_2の構文解析により、複数の命令の実行順序を特定する。これにより、プロセッサ202は、式302の実行順序よりも、式303の実行順序が遅いことを認識する。すなわち、プロセッサ202は、変数「tx_buf」について、値をメモリへ書き込むための式302が最初に実行されることを認識する。その結果、プロセッサ202は、変数「tx_buf」を第2グループに分類する。
【0088】
このようにして、プロセッサ202は、図9に示されるように、タスクAの実行に用いられる1つ以上の変数の各々を第1グループおよび第2グループのいずれかに分類する。すなわち、プロセッサ202は、変数「tx_buf」のように、値をメモリへ書き込むための式が最初に実行される変数を第2グループに分類する。なお、第2グループには、i)値をメモリへ書き込む式と、値をメモリから読み出す式との両方が実行され、かつ、最初に値をメモリへ書き込む式が実行される変数と、ii)値をメモリへ書き込む式のみが実行される変数とが含まれる。一方、プロセッサ202は、値をメモリから読み出す式が最初に実行される変数を第1グループに分類する。なお、第1グループには、i)値をメモリへ書き込む式と、値をメモリから読み出す式との両方が実行され、かつ、最初に値をメモリから読み出す式が実行される変数と、ii)値をメモリから読み出す式のみが実行される変数とが含まれる。
【0089】
プロセッサ202は、分類結果に応じて、変数に対するソフトエラー対策の必要度を判定し、その判定結果をディスプレイ204に表示させる。図10に示されるように、プロセッサ202は、第1グループに属する変数に対するソフトエラー対策の必要度を「大」と表示し、第2グループに属する変数に対するソフトエラー対策の必要度を「小」と表示している。これにより、ユーザは、必要度「大」の変数について優先的にソフトエラー対策を実施すればよい。
【0090】
また、プロセッサ202は、各変数の値を示すデータ容量を判定結果に含ませてもよい。例えば、変数に対して特許文献1に開示されるソフトエラー対策を行なう場合、ユーザは、判定結果に含まれるデータ容量を参考にして、主メモリ206の仕様を決定できる。
【0091】
<変形例>
タスクにおいて、ある変数の値をメモリに書き込む命令が実行されてから、当該変数の値をメモリから読み出す命令が実行されるまでの時間は、一般的に短い。そのため、この間にソフトエラーに起因して当該変数の値が化ける確率は低い。従って、上記の実施の形態では、第2グループに属する変数に対するソフトエラー対策の必要度が一律に「小」と判定される。
【0092】
しかしながら、ある変数の値をメモリに書き込む命令と、当該変数の値をメモリから読み出す命令との間に、規定時間だけ待機する命令(以下、「待機命令」とも称する。)を含むプログラムが有り得る。このようなプログラムが割り当てられたタスクでは、待機命令の実行中に、ソフトエラーに起因して当該変数の値が化ける確率が高まる。そのため、プロセッサ202は、第2グループに属する変数に対するソフトエラー対策の必要度を、待機命令の規定時間の長さに応じて異ならせてもよい。
【0093】
図11は、タスクに割り当てられたプログラムの別の例を示す図である。図11に例示されるプログラム30_2は、変数d~gの値をメモリに最初にそれぞれ書き込む命令(以下、「書込命令」と称する。)304~307と、変数d~gの値をメモリから最初にそれぞれ読み出す命令(以下、「読出命令」と称する。)308~311とを含む。さらに、プログラム30_2は、規定時間TA,TB,TCだけそれぞれ待機する待機命令312,313,314を含む。規定時間TAは規定時間TBより短く、規定時間TBは規定時間TCより短い。図11に示されるように、書込命令304,待機命令312,読出命令308,書込命令305,書込命令306,待機命令313,読出命令309,待機命令314,読出命令310,書込命令307,読出命令311の順に実行される。
【0094】
プログラム30_2は、変数eの値の書込命令305と、変数eの値の読出命令309と、書込命令305と読出命令309との間に実行される、規定時間TBだけ待機する待機命令313とを含む。さらに、プログラム30_2は、変数dの値の書込命令304と、変数dの値の読出命令308と、書込命令304と読出命令308との間に実行される、規定時間TA(<TB)だけ待機する待機命令312とを含む。プロセッサ202は、これらの命令に応じて、変数eに対するソフトエラー対策の必要度が変数dに対するソフトエラー対策の必要度よりも大きいと判定する。
【0095】
プログラム30_2は、変数fの値の書込命令306と、変数fの値の読出命令310と、書込命令306と読出命令310との間に実行される、規定時間TB,TCだけそれぞれ待機する待機命令313,314とを含む。さらに、プログラム30_2は、変数dの値の書込命令304と、変数dの値の読出命令308と、書込命令304と読出命令308との間に実行される、規定時間TA(<TB+TC)だけ待機する待機命令312とを含む。プロセッサ202は、これらの命令に応じて、変数fに対するソフトエラー対策の必要度が変数dに対するソフトエラー対策の必要度よりも大きいと判定する。
【0096】
プログラム30_2は、変数fの値の書込命令306と、変数fの値の読出命令310と、書込命令306と読出命令310との間に実行される、規定時間TB,TCだけそれぞれ待機する待機命令313,314とを含む。さらに、プログラム30_2は、変数eの値の書込命令305と、変数eの値の読出命令309と、書込命令305と読出命令309との間に実行される、規定時間TB(<TB+TC)だけ待機する待機命令313と、を含む。プロセッサ202は、これらの命令に応じて、変数fに対するソフトエラー対策の必要度が変数eに対するソフトエラー対策の必要度よりも大きいと判定する。
【0097】
さらに、プログラム30_2は、変数dの値の書込命令304と、変数dの値の読出命令308と、書込命令304と読出命令308との間に実行される、規定時間TA(<TB)だけ待機する待機命令312とを含む。さらに、プログラム30_2は、変数gの値の書込命令307と、変数gの値の読出命令311とを含み、書込命令307と読出命令311との間に待機命令を含まない。プロセッサ202は、これらの命令に応じて、変数dに対するソフトエラー対策の必要度が変数gに対するソフトエラー対策の必要度よりも大きいと判定する。
【0098】
同様に、プロセッサ202は、変数e,fに対するソフトエラー対策の必要度が変数gに対するソフトエラー対策の必要度よりも大きいと判定する。
【0099】
図12は、変形例における判定結果の一例を示す図である。図12に示されるように、プロセッサ202は、第1グループに属する変数のうち、書込命令と読出命令との間に待機命令が実行されない変数に対するソフトエラー対策の必要度を「小」と判定する。一方、プロセッサ202は、第1グループに属する変数のうち、書込命令と読出命令との間に待機命令が実行される変数に対するソフトエラー対策の必要度を「中」と判定する。
【0100】
さらに、プロセッサ202は、書込命令と読出命令との間に実行される待機命令の規定時間の合計が長いほど大きくなるレベル値を必要度「中」に付加する。レベル値が大きいほど、ソフトエラー対策の必要度が大きい。これにより、ユーザは、レベル値を確認することにより、ソフトエラー対策の必要度を確認できる。
【0101】
§3 付記
以上のように、本実施の形態は以下のような開示を含む。
【0102】
(構成1)
情報処理装置(200)であって、
タスク実行装置(100)において周期的に実行されるタスクに割り当てられたプログラムを構文解析する解析部(20,202)と、
前記解析部(20,202)による解析結果を出力する出力部(25,202)とを備え、
前記解析部(20,202)は、
前記タスクの実行に用いられる1つ以上の変数を抽出する抽出部(21,202)と、
前記1つ以上の変数の各々を、前記タスクの実行において最初にメモリからの値の読み出し処理が行なわれる第1グループと、当該タスクの実行において最初にメモリへの値の書き込み処理が行なわれる第2グループとに分類する分類部(22,202)と、
前記第1グループに属する変数に対するソフトエラー対策の必要度が前記第2グループに属する変数に対するソフトエラー対策の必要度よりも大きいと判定する判定部(23,202)とを含み、
前記出力部(25,202)は、前記判定部による判定結果を出力する、情報処理装置(200)。
【0103】
(構成2)
前記1つ以上の変数は、前記第2グループに属する、第1変数と第2変数とを含み、
前記プログラムが、前記第1変数の値をメモリに最初に書き込む第1命令と、前記第1命令の後に第1規定時間だけ待機する第2命令と、前記第2命令の後に前記第1変数の値をメモリから読み出す第3命令と、前記第2変数の値をメモリに最初に書き込む第4命令と、前記第4命令の後に前記第1規定時間よりも短い第2規定時間だけ待機する第5命令と、前記第5命令の後に前記第2変数の値をメモリから読み出す第6命令とを含むことに応じて、前記判定部(23,202)は、前記第1変数に対するソフトエラー対策の必要度が前記第2変数に対するソフトエラー対策の必要度よりも大きいと判定する、構成1に記載の情報処理装置(200)。
【0104】
(構成3)
前記1つ以上の変数は、前記第2グループに属する、第1変数と第2変数とを含み、
前記プログラムが、前記第1変数の値をメモリに最初に書き込む第1命令と、前記第1命令の後に第1規定時間だけ待機する第2命令と、前記第2命令の後に前記第1変数の値をメモリから読み出す第3命令と、前記第2変数の値をメモリに最初に書き込む第4命令と、前記第4命令の後に前記第2変数の値をメモリから読み出す第5命令とを含み、かつ、前記第4命令と前記第5命令との間に規定時間待機する命令を含まないことに応じて、前記判定部(23,202)は、前記第1変数に対するソフトエラー対策の必要度が前記第2変数に対するソフトエラー対策の必要度よりも大きいと判定する、構成1に記載の情報処理装置(200)。
【0105】
(構成4)
情報処理装置(200)における情報処理方法であって、
タスク実行装置(100)において周期的に実行されるタスクに割り当てられたプログラムを構文解析するステップと、
構文解析結果を出力するステップとを備え、
前記構文解析するステップは、
前記タスクの実行に用いられる1つ以上の変数を抽出するステップと、
前記1つ以上の変数の各々を、前記タスクの実行において最初にメモリからの値の読み出し処理が行なわれる第1グループと、当該タスクの実行において最初にメモリへの値の書き込み処理が行なわれる第2グループとに分類するステップと、
前記第1グループに属する変数に対するソフトエラー対策の必要度が前記第2グループに属する変数に対するソフトエラー対策の必要度よりも大きいと判定するステップとを含み、
前記出力するステップは、前記判定するステップによる判定結果を出力するステップを含む、情報処理方法。
【0106】
(構成5)
請求項4に記載の情報処理方法をコンピュータに実行させるプログラム。
【0107】
本発明の実施の形態について説明したが、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0108】
1 制御システム、2 フィールドネットワーク、20 解析部、21 抽出部、22 分類部、23 判定部、25 出力部、30 プログラム、32 解析プログラム、34 システムプログラム、36 タスク情報、100 制御装置、102,202 プロセッサ、104 チップセット、106,206 主メモリ、108,208 ストレージ、110 上位ネットワークコントローラ、112,212 USBコントローラ、114 メモリカードインターフェイス、116 メモリカード、120 内部バスコントローラ、122 I/Oユニット、130 フィールドネットワークコントローラ、200 情報処理装置、204 ディスプレイ、210 内部バス、214 入力装置、218 サポートプログラム、301,302,303 式、304~307 書込命令、308~311 読出命令、312~314 待機命令、500 フィールド機器、510 リモートI/O装置、520 ロボット、522 ロボットコントローラ、530 工作機械、532 サーボモータ、534 コンベア、536 ワークテーブル、538 サーボドライバ。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12