JP6733843B1 - データ処理装置、制御方法およびプログラム - Google Patents

データ処理装置、制御方法およびプログラム Download PDF

Info

Publication number
JP6733843B1
JP6733843B1 JP2020021549A JP2020021549A JP6733843B1 JP 6733843 B1 JP6733843 B1 JP 6733843B1 JP 2020021549 A JP2020021549 A JP 2020021549A JP 2020021549 A JP2020021549 A JP 2020021549A JP 6733843 B1 JP6733843 B1 JP 6733843B1
Authority
JP
Japan
Prior art keywords
data
read
processing unit
areas
instruction
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
JP2020021549A
Other languages
English (en)
Other versions
JP2021128420A (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.)
Omron Corp
Original Assignee
Omron 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 Omron Corp filed Critical Omron Corp
Priority to JP2020021549A priority Critical patent/JP6733843B1/ja
Priority to PCT/JP2020/015664 priority patent/WO2021161549A1/ja
Application granted granted Critical
Publication of JP6733843B1 publication Critical patent/JP6733843B1/ja
Publication of JP2021128420A publication Critical patent/JP2021128420A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)
  • Programmable Controllers (AREA)

Abstract

【課題】メモリのデータ化けに起因するシステムの一時的な停止を抑制する。【解決手段】データ処理装置は、タスクの実行に使用される複数の変数を記憶するメモリと、処理部と、ダミー指示部とを備える。処理部は、各変数に対応するメモリ上のN個の領域の各々からデータを読み出し、読み出したデータを互いに照合する。処理部は、N個の領域のうち1個の領域を除いたN−1個の領域からそれぞれ読み出したデータが一致することに応じて、N−1個の領域のデータと一致するように1個の領域のデータを書き換える。ダミー指示部は、タスクの実行タイミングと異なるタイミングにおいて、複数の変数を指定したダミーの読出指示を処理部に出力する。【選択図】図11

Description

本開示は、データ処理装置、制御方法およびプログラムに関する。
半導体デバイスの高集積化および微細化に伴い、メモリにおける一過性のビットエラー(ソフトエラー)が急増している。ソフトエラーは、例えばα粒子や宇宙線中性子の衝突によって生じる。ソフトエラーの起こりうるメモリをシステムに適用すると、ソフトエラーによるシステムの一時的な停止が生じうる。
ソフトエラーによるシステムの一時的な停止を回避するための技術が開発されている。例えば、特開2007−18414号公報(特許文献1)には、RAM(Random Access Memory)の変数データを書き換える場合に、同一のデータをRAM内の異なる3以上のアドレスの各々に書き込む制御装置が開示されている。この制御装置は、プログラムの実行によって変数を読み出すとき、RAM内の異なる3以上のアドレスの各々からデータを読み出す。そして、制御装置は、異なる3以上のアドレスからそれぞれ読み出したデータのうち、任意の1個のデータが他の複数個のデータと異なっている場合には、異なっているデータを他の複数個のデータに書き換える。
特開2007−18414号公報
特許文献1に記載の制御装置では、RAM上の異なる3以上のアドレスのうちの1つのアドレスにソフトエラーが生じたとしても、プログラムの実行によって変数を読み出すときに、当該1つのアドレスのデータは修復される。ただし、各変数が読み出される頻度は、プログラムに依存する。読み出される頻度の高い変数については、データの修復される機会が多くなる。一方、読み出される頻度の低い変数については、データの修復される機会が少なくなり、RAM上の異なる3以上のアドレスのうち複数のアドレスにソフトエラーが起こり得る。3以上のアドレスのうち複数のアドレスにソフトエラーが起きた場合、データが修復されず、システムが一時的に停止する。
本開示は、上記の問題に鑑みてなされたものであり、その目的は、メモリのデータ化けに起因するシステムの一時的な停止を抑制可能なデータ処理装置、制御方法およびプログラムを提供することである。
本開示の一例によれば、データ処理装置は、タスクの実行に使用される複数の変数を記憶するメモリと、処理部と、タスク実行部とを備える。処理部は、書込指示および読出指示を受けて、メモリに対して複数の変数のうち指定された変数の書き込みおよび読み出しをそれぞれ実行する。タスク実行部は、複数の変数のうち必要な変数を指定した第1読出指示を処理部に出力し、処理部から受けた当該変数の値を用いてタスクを実行する。処理部は、書込指示を受けると、指定された変数の値を示すデータを、メモリにおける、指定された変数に対応するN個の領域の各々に書き込む。Nは3以上の整数である。処理部は、読出指示を受けると、メモリにおける、指定された変数に対応するN個の領域の各々からデータを読み出し、N個の領域からそれぞれ読み出したデータを互いに照合する。処理部は、N個の領域からそれぞれ読み出したデータの全てが一致することに応じて、読出指示の出力元にN個の領域から読み出したデータで示される値を送る。処理部は、N個の領域のうち1個の領域を除いたN−1個の領域からそれぞれ読み出したデータが一致することに応じて、N−1個の領域から読み出したデータと一致するように1個の領域のデータを書き換えるとともに、読出指示の出力元にN−1個の領域から読み出したデータで示される値を送る。データ処理装置は、さらに、タスク実行部が第1読出指示を出力するタイミングと異なるタイミングにおいて、複数の変数のうちの少なくとも1つを指定したダミーの第2読出指示を処理部に出力するダミー指示部を備える。
この開示によれば、ダミーの第2読出指示を受けた処理部は、N個の領域のうちの1個の領域にデータ化けが生じている場合、当該1個の領域のデータを、残りN−1個の領域のデータと一致するように修復する。そのため、タスクの実行のために読み出される頻度の少ない変数についても、第1読出指示が出力されるタイミングと異なるタイミングにおいて、メモリ内の当該変数に対応するN個の領域がチェックされる。その結果、データ化けの生じたデータが正しいデータに修復される。すなわち、タスクの実行のために読み出される頻度の少ない変数についても、タスクの実行のために変数を読み出すタイミングと異なるタイミングにおいて、データの修復される機会が設けられる。そのため、メモリにおいて、変数に対応するN個の領域のうち複数の領域でデータが化けた状態は、発生しにくい。これにより、メモリのデータ化けに起因するシステムの一時的な停止を抑制できる。
上述の開示において、第2読出指示は、複数の変数の全てを指定する。ダミー指示部は、予め定められた周期ごとに第2読出指示を処理部に出力する。
この開示によれば、全ての変数について、データの修復される機会が定期的に設けられる。その結果、メモリにおいて、変数に対応するN個の領域のうち複数の領域でデータが化けた状態は、より発生しにくい。
上述の開示において、複数の変数は、M個のグループに分割される。Mは2以上の整数である。ダミー指示部は、M個のグループの各々について、当該グループに属する変数を指定した第2読出指示を予め定められた周期ごとに処理部に出力する。ダミー指示部は、M個のグループごとの第2読出指示の出力タイミングを、予め定められた周期の1/Mの周期分だけ順にシフトさせる。
この開示によれば、1回の第2読出指示に応じて実行される変数の読み出し処理に要する時間を短縮化できる。
上述の開示において、ダミー指示部は、複数の変数の各々について、処理部が書き込みまたは読み出しを実行した最新時刻を管理し、最新時刻からの経過時間が予め定められた期間だけ経過した変数を指定した第2読出指示を処理部に出力する。
この開示によれば、1回の第2読出指示に応じて実行される変数の読み出し処理に要する時間を短縮化できる。
上述の開示において、タスクはファクトリオートメーション(FA)に関連する。この開示によれば、データ処理装置は、FA分野のシステムに適用される。FA分野のシステムは、24時間×365日稼働する生産ラインに組み込まれ得る。このような生産ラインにおいて、システムが一時的に停止すると、多大な損害が生じ得る。そのため、できるだけコストをかけることなく、データ化けが生じたとして運転継続させたいというFA分野特有の要望が新たに生じている。上述の開示によれば、当該FA分野特有の要望を満たすことができる。
本開示の一例によれば、データ処理装置は、タスクの実行に使用される複数の変数を記憶するメモリと、書込指示および読出指示を受けて、メモリに対して複数の変数のうち指定された変数の書き込みおよび読み出しをそれぞれ実行する処理部とを含む。処理部は、書込指示を受けると、指定された変数の値を示すデータを、メモリにおける、指定された変数に対応するN個の領域の各々に書き込む。Nは3以上の整数である。処理部は、読出指示を受けると、メモリにおける、指定された変数に対応するN個の領域の各々からデータを読み出し、N個の領域からそれぞれ読み出したデータを互いに照合する。処理部は、N個の領域からそれぞれ読み出したデータの全てが一致することに応じて、読出指示の出力元にN個の領域から読み出したデータで示される値を送る。処理部は、N個の領域のうち1個の領域を除いたN−1個の領域からそれぞれ読み出したデータが一致することに応じて、N−1個の領域から読み出したデータと一致するように1個の領域のデータを書き換えるとともに、読出指示の出力元にN−1個の領域から読み出したデータで示される値を送る。データ処理装置の制御方法は、複数の変数のうち必要な変数を指定した第1読出指示を処理部に出力し、処理部から受けた当該変数の値を用いてタスクを実行するステップと、第1読出指示が出力されるタイミングと異なるタイミングにおいて、複数の変数のうちの少なくとも1つを指定したダミーの第2読出指示を処理部に出力するステップとを備える。
本開示の一例によれば、プログラムは、上記の制御方法をコンピュータに実行させる。これらの開示によっても、メモリのデータ化けに起因するシステムの一時的な停止を抑制できる。
本開示によれば、メモリのデータ化けに起因するシステムの一時的な停止を抑制できる。
実施形態に係る制御システムの全体構成を示す概略図である。 標準PLCのハードウェア構成例を示す模式図である。 安全PLCのハードウェア構成例を示す模式図である。 カプラのハードウェア構成例を示す模式図である。 安全IOユニットのハードウェア構成例を示す模式図である。 安全IOユニットの機能構成の一例を示す図である。 書込読出処理部によるメインメモリへのデータの書き込み処理の一例を示す図である。 書込読出処理部によるメインメモリからのデータの読み出し処理の一例を示す図である。 ダミー指示を行なわないときの動作例(参考例)を示す図である。 ダミー指示を行なわないときの別の動作例(参考例)を示す図である。 ダミー指示を行なうときの動作例(実施例)を示す図である。 安全IOユニットにおける処理の流れの一例を示すフローチャートである。 図12に示すステップS3,S6のサブルーチンの流れの一例を示すフローチャートである。 変形例1に係るダミー指示部による第2読出指示の生成例を示す図である。 変形例2に係るダミー指示部の一例を示す図である。 変形例3に係る安全IOユニットのハードウェア構成の一例を示す図である。 変形例3に係る安全IOユニットの動作例を示す図である。
本開示の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
§1 適用例
航空宇宙システム、自動車、医療機器、通信機器、産業機器など様々に分野において、メモリのデータ化けに起因するシステムの一時的な停止を抑制することが望まれる。本開示は、このような様々な分野のシステムに適用され得る。以下では、本開示の適用例として、FA(ファクトリオートメーション)分野に組み込まれる制御システムについて説明するが、本開示の適用例は、当該制御システムに限定されない。
図1は、実施形態に係る制御システムの全体構成を示す概略図である。図1に例示される制御システム1は、主要なコンポーネントとして、標準PLC(プログラマブルロジックコントローラ)100と、安全PLC200と、1以上のカプラ300と、1以上の安全IOユニット400とを含む。制御システム1に含まれるこれらの装置は、各種のタスクを実行するデータ処理装置である。
標準PLC100は、予め作成された標準制御プログラムに従って、任意の制御対象に対する標準制御を実行する。「標準制御」は、予め定められた要求仕様に沿って、制御対象を制御するための処理の総称である。制御対象は、例えばサーボモータ、ロボットなどである。
安全PLC200は、標準PLC100とは独立して、任意の制御対象に対するセーフティ制御を実行する。図1に例示される安全PLC200は、ローカルバスを介して標準PLC100に接続される。「セーフティ制御」は、設備や機械などによって人の安全が脅かされることを防止するための処理の総称である。「セーフティ制御」は、例えばIEC 61508などに規定されたセーフティ機能を実現するための要件を満たすように設計される。
カプラ300は、標準PLC100と安全IOユニット400との間のデータの遣り取りを仲介する。カプラ300は、フィールドネットワーク2を介して、標準PLC100と電気的に接続されている。フィールドネットワーク2は、FA(Factory Automation)用のデータ伝送を実現するための通信媒体である。フィールドネットワーク2において、予め定められた周期でフレーム伝送が可能になっており、ネットワーク内の各ノードに対するデータ到着時間が保証される。このようなデータ到着時間が保証されるプロトコルの一例として、本実施の形態に従う制御システム1においては、フィールドネットワーク2にはEtherCAT(登録商標)を採用する。
カプラ300は、標準PLC100から受信したデータを安全IOユニット400へ送信するとともに、安全IOユニット400からデータを受信すると、当該受信したデータを次に到着するフレームに格納する準備を行う。
安全IOユニット400は、安全PLC200またはカプラ300にローカルバスを介して接続される。さらに、安全IOユニット400には任意の安全デバイス(図示せず)が接続される。安全デバイスには、ライトカーテン、非常停止ボタン、セーフティドアスイッチなどが含まれる。
安全IOユニット400は、安全デバイスからの入力信号を受け付けて、安全PLC200へ当該入力信号を提供する。あるいは、安全IOユニット400は、安全デバイスからの入力信号を受け付けて、カプラ300を介して標準PLC100へ当該入力信号を提供する。標準PLC100へ提供された入力信号は、安全PLC200へ提供される。
さらに、安全IOユニット400は、安全PLC200からの指令に応じて、安全デバイスへ出力信号を出力する。あるいは、安全IOユニット400は、カプラ300および標準PLC100を介した安全PLC200からの指令に応じて、安全デバイスへ出力信号を出力する。
安全IOユニット400は、予め定められた周期(以下、「タスク周期」と称する。)ごとに、安全デバイスからの入力信号の受け付け、当該入力信号の提供、安全デバイスへの出力信号の出力などに関するIOタスクを実行する。
安全IOユニット400は、IOタスクを実行するための処理回路を備える。処理回路は、プロセッサおよびメモリによって構成される。プロセッサは、メモリが記憶する複数の変数を用いてIOタスクを実行する。
安全PLC200は、安全IOユニット400から提供された入力信号に応じて、セーフティ制御を実行する。例えば、安全PLC200は、ライトカーテンである安全デバイスから人の侵入を示す入力信号が提供されると、標準PLC100の制御対象への電源供給を遮断し、制御システム1を一時的に停止させる。あるいは、安全PLC200は、非常停止ボタンである安全デバイスからボタン押下を示す入力信号が提供されると、標準PLC100の制御対象への電源供給を遮断し、制御システム1を一時的に停止させる。
このように、安全IOユニット400は、人の安全が脅かされることを防止するためのセーフティ制御に直接関わる。従って、安全PLC200は、安全IOユニット400に故障や異常が発生したときにも、制御システム1を一時的に停止させるように設計されている。
安全IOユニット400に備えられるメモリにデータ化けが生じ、当該データ化けが修復されないまま安全IOユニット400が動作し続けると、安全PLC200は、セーフティ制御を正常に実行できない。そのため、安全IOユニット400は、メモリにデータ化けが生じたとしても、当該データ化けを修復する機能を有する。
具体的には、安全IOユニット400において、プロセッサは、IOタスクの実行に用いられる複数の変数の各々について、当該変数の値を示すデータを、メモリにおける当該変数に対応するN個の領域に書き込む。Nは3以上の整数である。複数の変数の各々の値を示すデータは、安全IOユニット400の起動時にメモリに書き込まれる。また、複数の変数のうちの一部または全部について、メモリ上のデータは、IOタスクの実行中に書き換えられてもよい。
プロセッサは、IOタスクの実行のために、複数の変数のうち指定された変数をメモリから読み出す。このとき、プロセッサは、メモリにおける、指定された変数に対応するN個の領域の各々からデータを読み出し、当該N個の領域からそれぞれ読み出したデータを互いに照合する。
メモリにデータ化けが生じていない場合、N個の領域からそれぞれ読み出されるデータは互いに一致する。そのため、プロセッサは、N個の領域からそれぞれ読み出したデータの全てが一致することに応じて、当該N個の領域から読み出したデータで示される値を用いてIOタスクを実行する。
N個の領域のうちの1個領域にデータ化けが生じた場合、残りのN−1個の領域からそれぞれ読み出されるデータは互いに一致する。そのため、プロセッサは、N個の領域のうち1個の領域を除いたN−1個の領域からそれぞれ読み出したデータが一致することに応じて、N−1個の領域から読み出したデータと一致するように、メモリにおける上記1個の領域のデータを書き換える。これにより、データ化けによる誤ったデータが正しいデータに修復される。そして、プロセッサは、当該N−1個の領域から読み出したデータで示される値を用いてIOタスクを実行する。
さらに、本実施の形態に係る安全IOユニット400では、プロセッサは、IOタスクの実行のために変数を読み出すタイミングと異なるタイミングにおいて、複数の変数のうちの少なくとも1つをメモリからダミーで読み出す処理を実行する。ダミーの読み出し処理とは、読み出した変数の値が何ら利用されないにもかかわらず、当該変数の値を読み出す処理を意味する。
ダミーの読み出し処理においても、上記と同様に、N個の領域のうちの1個の領域にデータ化けが生じている場合、当該1個の領域のデータが、N−1個の領域のデータと一致するように修復される。そのため、IOタスクの実行のために読み出される頻度の少ない変数についても、メモリ内の当該変数に対応するN個の領域がチェックされ、データ化けの生じたデータが正しいデータに修復される。すなわち、IOタスクの実行のために読み出される頻度の少ない変数についても、IOタスクの実行のために変数を読み出すタイミングと異なるタイミングにおいて、データの修復される機会が設けられる。これにより、メモリのデータ化けに起因するシステムの一時的な停止を抑制できる。
§2 具体例
<標準PLCのハードウェア構成>
図2は、標準PLCのハードウェア構成例を示す模式図である。図2に例示される標準PLC100は、プロセッサ102と、メインメモリ104と、ストレージ110と、フィールドネットワークコントローラ108と、ローカルバスコントローラ116とを含む。これらのコンポーネントは、プロセッサバス118を介して接続されている。
プロセッサ102は、主として、標準制御に係る制御演算を実行する演算処理部に相当し、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などで構成される。具体的には、プロセッサ102は、ストレージ110に格納されたプログラム(一例として、システムプログラム1102および標準制御プログラム1104)を読出して、メインメモリ104に展開して実行することで、制御対象に応じた制御演算、および、後述するような各種処理を実現する。
メインメモリ104は、例えばDRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)のような揮発性メモリによって構成される。ストレージ110は、例えば、SSD(Solid State Drive)やHDD(Hard Disk Drive)などの不揮発性記憶装置などによって構成される。
ストレージ110には、基本的な機能を実現するためのシステムプログラム1102、制御対象に応じて作成された標準制御プログラム1104、および標準PLC100での処理を規定するための設定情報1106が格納される。
フィールドネットワークコントローラ108は、フィールドネットワーク2を介して任意のデバイス(例えばカプラ300)との間でデータを遣り取りする。
ローカルバスコントローラ116は、ローカルバスを介して、標準PLC100に接続される任意のユニット(例えば安全PLC200)との間でデータを遣り取りする。
<安全PLCのハードウェア構成>
図3は、安全PLCのハードウェア構成例を示す模式図である。図3に例示される安全PLC200は、プロセッサ202と、メインメモリ204と、ストレージ210と、ローカルバスコントローラ216とを含む。これらのコンポーネントは、プロセッサバス218を介して接続されている。
プロセッサ202は、主として、セーフティ制御に係る制御演算を実行する演算処理部に相当し、CPUやGPUなどで構成される。
メインメモリ204は、例えばDRAMやSRAMのような揮発性メモリによって構成される。ストレージ210は、例えば、SSDやHDDなどの不揮発性記憶装置などによって構成される。
ストレージ210には、基本的な機能を実現するためのシステムプログラム2102、要求されるセーフティ機能に応じた作成された安全プログラム2104、および安全PLC200での処理を規定するための設定情報2106が格納される。
ローカルバスコントローラ216は、ローカルバスを介して、安全PLC200に接続される安全IOユニット400との間でデータを遣り取りする。
<カプラのハードウェア構成>
図4は、カプラのハードウェア構成例を示す模式図である。図4に例示されるカプラ300は、プロセッサ302と、メインメモリ304と、ストレージ310と、フィールドネットワークコントローラ308と、ローカルバスコントローラ316とを含む。これらのコンポーネントは、プロセッサバス318を介して接続されている。
プロセッサ302は、主として、カプラ300を動作させるための制御演算を実行する演算処理部に相当し、CPUやGPUなどで構成される。
メインメモリ304は、例えばDRAMやSRAMのような揮発性メモリによって構成される。ストレージ310は、例えば、SSDやHDDなどの不揮発性記憶装置などによって構成される。
ストレージ310には、基本的な機能を実現するためのシステムプログラム3102およびカプラ300での処理を規定するための設定情報3106が格納される。
フィールドネットワークコントローラ308は、フィールドネットワーク2を介して、任意のデバイス(例えば標準PLC100)との間でデータを遣り取りする。
ローカルバスコントローラ316は、ローカルバスを介して、カプラ300に接続される安全IOユニット400との間でデータを遣り取りする。
<安全IOユニットのハードウェア構成>
図5は、安全IOユニットのハードウェア構成例を示す模式図である。図5に例示される安全IOユニット400は、プロセッサ402と、メインメモリ404と、ストレージ410と、ローカルバスコントローラ412と、安全IOモジュール416とを含む。これらのコンポーネントは、プロセッサバス418を介して接続されている。
プロセッサ402は、セーフティ制御を実現するために必要な信号の入出力および管理機能に係る制御演算を実行する演算処理部に相当し、CPUやMPU(Micro Processing Unit)などによって構成される。
メインメモリ404は、例えばDRAMやSRAMのような揮発性メモリによって構成される。SRAMは、記憶部の構造としてフリップフロップを用いており、リフレッシュ動作を必要とせず、DRAMより高速に動作できるという利点を有する。そのため、SRAMをメインメモリ404として用いることが好ましい。
積み上げ型(スタック型)の構造を有するDRAMでは、ソフトエラー耐性が高い。一方、フリップフロップ構造を有するSRAMでは、微細化によりソフトエラー耐性が低下する。そのため、SRAMによって構成されるメインメモリ404を用いる場合、メインメモリ404にソフトエラーが起こりやすい。以下、メインメモリ404がSRAMであるとものとして説明する。
ストレージ410は、例えば、SSDやHDDなどの不揮発性記憶装置などで構成される。ストレージ410には、IO機能を実現するための実行可能プログラム420と、ライブラリ422と、ダミー読出プログラム424とが格納される。
ローカルバスコントローラ412は、ローカルバスを介して、安全IOユニット400が接続されるデバイス(例えば安全PLC200、カプラ300)との間でデータを遣り取りする。
安全IOモジュール416は、安全デバイスと電気的に接続され、安全デバイスによる検出結果などの入力を受け付けたり、安全デバイスへ信号を出力したりする。
<安全IOユニットの機能構成>
図6は、安全IOユニットの機能構成の一例を示す図である。図6に例示される安全IOユニット400は、書込読出処理部41と、タスク実行部42と、ダミー指示部43とを備える。書込読出処理部41は、プロセッサ402がライブラリ422を実行することにより実現される。タスク実行部42は、プロセッサ402が実行可能プログラム420を実行することにより実現される。ダミー指示部43は、プロセッサ402がダミー読出プログラム424を実行することにより実現される。
書込読出処理部41は、書込指示および読出指示を受けて、メインメモリ404に対して指定された変数の書き込みおよび読み出しをそれぞれ実行する。書込読出処理部41は、IOタスクの実行に使用される全ての変数の各々について、当該変数の値を示すデータを3以上に多重化させてメインメモリ404上で管理する。以下、データを3重化して管理する例について説明する。
図6に示されるように、書込読出処理部41は、変数管理テーブル44を管理している。変数管理テーブル44は、IOタスクの実行に使用される全ての変数の各々について、変数名と、型と、メインメモリ404における当該変数の値を示すデータが保持される3つの領域のアドレスとが互いに対応付けられたテーブルである。以下、3つの領域のアドレスを、「第1アドレス」、「第2アドレス」および「第3アドレス」と称する。IOタスクの実行に使用される全ての変数の一覧は、ソースコードをコンパイルして実行可能プログラム420を作成するときに生成される。
図7は、書込読出処理部によるメインメモリへのデータの書き込み処理の一例を示す図である。図7に示されるように、書込読出処理部41は、指定された変数の値を示す対象データをメインメモリ404に書き込む際に、対象データを2回コピーし、第1コピーデータおよび第2コピーデータを生成する。書込読出処理部41は、変数管理テーブル44を用いて、指定された変数に対応する第1〜第3アドレスを特定し、特定した第1〜第3アドレスによって示される3個の領域に、対象データ、第1コピーデータおよび第2コピーデータをそれぞれ書き込む。これにより、メインメモリ404において、データが3重化される。
書き込み直後において、対象データと第1コピーデータと第2コピーデータとは同一である。しかしながら、例えば宇宙線や中性子線の影響により、対象データと第1コピーデータと第2コピーデータとのいずれかにおいてデータ化けが生じ得る。
図8は、書込読出処理部によるメインメモリからのデータの読み出し処理の一例を示す図である。図8に示されるように、書込読出処理部41は、読出指示を受けると、変数管理テーブル44を用いて、指定された変数に対応する第1〜第3アドレスを特定する。そして、書込読出処理部41は、特定した第1〜第3アドレスによって示される、メインメモリ404の3個の領域の各々からデータを読み出し、当該3個の領域からそれぞれ読み出したデータを互いに照合する。
3個の領域のいずれにもデータ化けが発生していない場合、当該3個の領域からそれぞれ読み出したデータの全てが一致する。そのため、書込読出処理部41は、3個の領域からそれぞれ読み出したデータの全てが一致することに応じて、読出指示の出力元に3個の領域のいずれかから読み出したデータで示される値を送る。
3個の領域のうちの1個の領域にデータ化けが発生したとしても、残り2個の領域からそれぞれ読み出したデータが一致する。そのため、書込読出処理部41は、3個の領域のうち1個の領域を除いた2個の領域からそれぞれ読み出したデータが一致することに応じて、当該2個の領域から読み出したデータと一致するように当該1個の領域のデータを書き換える。さらに、書込読出処理部41は、読出指示の出力元に当該2個の領域から読み出したデータで示される値を送る。これにより、3個の領域のうちの1個の領域にデータ化けが発生したとしても、読み出し処理において、データ化けの生じたデータが修復される。
図6に戻って、書込読出処理部41は、読出指示として、タスク実行部42から第1読出指示を受け、ダミー指示部43から第2読出指示を受ける。また、書込読出処理部41は、タスク実行部42から書込指示を受ける。
タスク実行部42は、タスク周期ごとに、メインメモリ404に記憶される変数を用いたIOタスクを実行する。IOタスクの実行に使用される変数は、タスク周期ごとに異なり得る。すなわち、メインメモリ404に記憶される複数の変数には、全てのタスク周期において使用される変数と、M回(Mは2以上の整数)のタスク周期のうちの1回のタスク周期において使用される変数とが含まれ得る。このように、メインメモリ404に記憶される変数がIOタスクの実行のために使用される頻度は、変数ごとに異なる。
タスク実行部42は、メインメモリ404に記憶された複数の変数のうち必要な変数を指定した第1読出指示を生成し、生成した第1読出指示を書込読出処理部41に出力する。このように、第1読出指示は、IOタスクの実行に利用される変数を読み出すための正規の指示である。タスク実行部42は、指定した変数の値を書込読出処理部41から受け、当該変数の値を用いてIOタスクを実行する。
タスク実行部42は、IOタスクの実行によって変数の値の書き換えが必要となった場合、当該変数と更新後の値とを指定した書込指示を生成し、生成した書込指示を書込読出処理部41に出力する。
ダミー指示部43は、IOタスクの実行に使用される複数の変数のリスト(以下、「変数リスト45」と称する。)を管理している。変数リスト45は、ソースコードをコンパイルして実行可能プログラム420を作成するときに生成される。ダミー指示部43は、変数リスト45に含まれる全ての変数を指定したダミーの第2読出指示を定期的に生成し、生成した第2読出指示を書込読出処理部41に出力する。第2読出指示は、書込読出処理部41による上記のデータの修復を期待して生成される。そのため、ダミー指示部43は、第2読出指示に応じて読み出された変数の値に対して何ら処理を実行せず、当該値を破棄すればよい。このように、第2読出指示は、読み出された変数の値を何ら利用しないにもかかわらず、当該変数の値を読み出すためのダミーの指示である。
ダミー指示部43が第2読出指示を生成する周期は、ソフトエラーが発生する周期よりも短いことが好ましく、例えば8時間以内である。ダミー指示部43が第2読出指示を生成する周期は、タスク周期と同一であってもよい。
<ダミー指示の利点>
図9〜図11を参照して、ダミー指示の利点について説明する。図9は、ダミー指示を行なわないときの動作例(参考例)を示す図である。
図9には、全てのタスク周期において、変数「Var_A」を用いたIOタスクが実行されるときの動作例が示される。タスク実行部42として動作するプロセッサ402は、各タスク周期において、IOタスクの実行に必要な変数「Var_A」を指定した第1読出指示を生成する。そして、書込読出処理部41として動作するプロセッサ402は、当該第1読出指示に応じて、メインメモリ404における、変数「Var_A」に対応する3個の領域404a〜404cからデータを読み出す。
図9に例示される動作例では、1回目のIOタスクの実行後の時刻t1において、領域404bにデータ化けが発生している。しかしながら、2回目のIOタスクが実行される時刻t2において、変数「Var_A」を指定した第1読出指示が生成される。これにより、書込読出処理部41として動作するプロセッサ402は、変数「Var_A」に対応する3個の領域404a〜404cからデータを読み出し、領域404a〜404cからそれぞれ読み出されたデータを照合する。プロセッサ402は、照合の結果、領域404a,404cから読み出したデータが一致し、領域404bから読み出したデータが領域404a,404cから読み出したデータと一致しないことを認識する。そのため、プロセッサ402は、領域404a,404cから読み出したデータと一致するように領域404bのデータを書き換える。その結果、領域404bのデータ化けが修復される。
同様に、X回目のIOタスクの実行後の時刻t3において、領域404aにデータ化けが発生しても、次のX+1回目のIOタスクの実行期間内である時刻t4において、領域404aのデータ化けが修復される。
図9に示されるように、IOタスクの実行のために読み出される頻度の高い変数については、データ化けが発生しても、すぐに修復される。そのため、メインメモリ404において、当該変数に対応する3個の領域のうち複数の領域でデータが化けた状態は、発生しにくい。
図10は、ダミー指示を行なわないときの別の動作例(参考例)を示す図である。図10には、タスク周期のX倍の周期ごとに、変数「Var_A」を用いたIOタスクが実行されるときの動作例が示される。図10に示される動作例においても、図9に示される動作例と同様に、1回目のIOタスクの実行後の時刻t1において、領域404bにデータ化けが発生し、X回目のIOタスクの実行後の時刻t3において、領域404aにデータ化けが発生している。
図10に示される動作例では、1回目のIOタスクの実行後からX+1回目のIOタスクが実行されるまでの期間において、変数「Var_A」は、IOタスクの実行のために使用されない。そのため、タスク実行部42として動作するプロセッサ402は、当該期間において、変数「Var_A」を指定した第1読出指示を生成しない。したがって、当該期間において、変数「Var_A」に対応する領域404a〜404cのデータ化けを修復する機会がない。その結果、図10に示されるように、領域404a〜404cのうちの複数の領域(領域404a,404b)でデータが化けた状態が発生する。
領域404aに生じたデータ化けの内容と、領域404bに生じたデータ化けの内容とが一致する確率は非常に小さい。そのため、領域404a〜404cのデータは互いに異なる。従って、X+1回目のIOタスクが実行される時刻t4において、変数「Var_A」を指定した第1読出指示が生成されたとしても、書込読出処理部41として動作するプロセッサ402は、領域404a,404bのデータを修復できない。
図10に示されるように、IOタスクの実行のために読み出される頻度の低い変数について、メインメモリ404における、当該変数に対応する3個の領域のうち複数の領域でデータが化けた状態が発生し得る。その結果、データの修復が不可能となり、システムを停止せざる得なくなる。
図11は、ダミー指示を行なうときの動作例(実施例)を示す図である。図11に示される動作例においても、図10に示される動作例と同様に、タスク周期のX倍の周期ごとに、変数「Var_A」を用いたIOタスクが実行される。さらに、図11に示される動作例においても、図10に示される動作例と同様に、1回目のIOタスクの実行後の時刻t1において、領域404bにデータ化けが発生し、X回目のIOタスクの実行後の時刻t3において、領域404aにデータ化けが発生している。
図11に示される動作例では、ダミー指示部43として動作するプロセッサ402は、各タスク周期の開始直後において、全ての変数を指定した第2読出指示を生成する。そのため、1回目のIOタスクが実行された後、次のタスク周期の開始直後である時刻t11において、書込読出処理部41として動作するプロセッサ402は、変数「Var_A」に対応する3個の領域404a〜404cからデータを読み出し、領域404a〜404cからそれぞれ読み出されたデータを照合する。プロセッサ402は、照合の結果、領域404a,404cから読み出したデータが一致し、領域404bから読み出したデータが領域404a,404cから読み出したデータと一致しないことを認識する。そのため、プロセッサ402は、領域404a,404cから読み出したデータと一致するように領域404bのデータを書き換える。その結果、領域404bのデータ化けが修復される。
同様に、X回目のIOタスクが実行された後、次のタスク周期の開始直後である時刻t12において、書込読出処理部41として動作するプロセッサ402は、変数「Var_A」に対応する3個の領域404a〜404cからデータを読み出し、領域404a〜404cからそれぞれ読み出されたデータを照合する。プロセッサ402は、照合の結果、領域404b,404cから読み出したデータが一致し、領域404aから読み出したデータが領域404b,404cから読み出したデータと一致しないことを認識する。そのため、プロセッサ402は、領域404b,404cから読み出したデータと一致するように領域404aのデータを書き換える。その結果、領域404aのデータ化けが修復される。
図11に示されるように、全ての変数について、定期的に第2読出指示が生成される。そのため、IOタスクの実行のために読み出される頻度の低い変数についても、メインメモリ404内の当該変数に対応する3個の領域が定期的にチェックされ、データ化けの生じたデータが正しいデータに修復される。すなわち、IOタスクの実行のために読み出される頻度の少ない変数についても、データの修復される機会が定期的に設けられる。そのため、メインメモリ404において、当該変数に対応する3個の領域のうち複数の領域でデータが化けた状態は、発生しにくい。これにより、メインメモリ404のデータ化けに起因するシステムの一時的な停止を抑制できる。
<安全IOユニットにおける処理の流れ>
図12は、安全IOユニットにおける処理の流れの一例を示すフローチャートである。まず、プロセッサ402は、タスク周期の開始タイミングに到達したか否かを判断する(ステップS1)。タスク周期の開始タイミングに到達していない場合(ステップS1でNO)、処理は再度ステップS1に戻る。
タスク周期の開始タイミングに到達した場合(ステップS1でNO)、ダミー指示部43として動作するプロセッサ402は、全ての変数を指定した第2読出指示を生成する(ステップS2)。当該第2読出指示に応じて、書込読出処理部41として動作するプロセッサ402は、指定された変数の読み出し処理を実行する(ステップS3)。ステップS3の詳細については後述する。
ステップS3が完了すると、タスク実行部42として動作するプロセッサ402は、実行可能プログラム420に従ったIOタスクを開始する(ステップS4)。プロセッサ402は、IOタスクの実行に必要な変数を指定した第1読出指示を生成する(ステップS5)。
ステップS5において生成された第1読出指示に応じて、書込読出処理部41として動作するプロセッサ402は、指定された変数の読み出し処理を実行する(ステップS6)。
タスク実行部42として動作するプロセッサ402は、ステップS6によって読み出された変数の値を用いてIOタスクを実行する(ステップS7)。なお、ステップS7において、プロセッサ402は、書き換えの必要な変数と更新後の値とを指定した書込指示を生成してもよい。この場合、書込読出処理部41として動作するプロセッサ402は、指定された変数の書き込み処理を実行する。
ステップS7の完了後、処理は終了する。ステップS1〜S7の処理は、タスク周期ごとに実行される。
図13は、図12に示すステップS3,S6のサブルーチンの流れの一例を示すフローチャートである。
書込読出処理部41として動作するプロセッサ402は、メインメモリ404における、指定された変数に対応する3個の領域からデータをそれぞれ読み出す(ステップS11)。次に、プロセッサ402は、3個の領域からそれぞれ読み出されたデータを照合する(ステップS12)。
プロセッサ402は、3個の領域からそれぞれ読み出されたデータの全てが一致するか否かを判断する(ステップS13)。ステップS13でYESの場合、処理はステップS16に移る。
ステップS13でNOの場合、プロセッサ402は、3個の領域のうちの2個の領域から読み出されたデータが一致するか否かを判断する(ステップS14)。ステップS14でYESの場合、プロセッサ402は、当該2個の領域から読み出されたデータと一致するように残り1個の領域のデータを書き換える(ステップS16)。ステップS15の完了後、処理はステップS16に移る。
ステップS14でNOの場合、プロセッサ402は、エラー信号を出力する(ステップS17)。これにより、制御システム1が一時的に停止する。ステップS17の後、処理は終了する。
ステップS16において、プロセッサ402は、一致するデータで示される値を指定された変数の値として決定する。ステップS16の完了後、処理は図12に示す後段のステップ(ステップS4またはステップS7)に戻る。
<作用・効果>
以上のように、データ処理装置である安全IOユニット400は、IOタスクの実行に使用される複数の変数を記憶するメインメモリ404と、書込読出処理部41と、タスク実行部42とを備える。書込読出処理部41は、書込指示および読出指示を受けて、メインメモリ404に対して複数の変数のうち指定された変数の書き込みおよび読み出しをそれぞれ実行する。タスク実行部42は、複数の変数のうち必要な変数を指定した第1読出指示を書込読出処理部41に出力し、書込読出処理部41から受けた当該変数の値を用いてIOタスクを実行する。書込読出処理部41は、書込指示を受けると、指定された変数の値を示すデータを、メインメモリ404における、指定された変数に対応する3個の領域の各々に書き込む。書込読出処理部41は、読出指示を受けると、メインメモリ404における、指定された変数に対応する3個の領域の各々からデータを読み出し、3個の領域からそれぞれ読み出したデータを互いに照合する。書込読出処理部41は、3個の領域からそれぞれ読み出したデータの全てが一致することに応じて、読出指示の出力元に3個の領域から読み出したデータで示される値を送る。書込読出処理部41は、3個の領域のうち1個の領域を除いた2個の領域からそれぞれ読み出したデータが一致することに応じて、当該2個の領域から読み出したデータと一致するように当該1個の領域のデータを書き換える。さらに、書込読出処理部41は、読出指示の出力元に当該2個の領域から読み出したデータで示される値を送る。安全IOユニット400は、さらに、タスク実行部42が第1読出指示を出力するタイミングと異なるタイミングにおいて、複数の変数を指定したダミーの第2読出指示を書込読出処理部41に出力するダミー指示部43を備える。
上記の構成によれば、ダミーの第2読出指示を受けた書込読出処理部41は、3個の領域のうちの1個の領域にデータ化けが生じている場合、当該1個の領域のデータを、残り2個の領域のデータと一致するように修復する。そのため、IOタスクの実行のために読み出される頻度の少ない変数についても、タスク実行部42が第1読出指示を出力するタイミングと異なるタイミングにおいて、メインメモリ404内の当該変数に対応する3個の領域がチェックされる。その結果、データ化けの生じたデータが正しいデータに修復される。すなわち、IOタスクの実行のために読み出される頻度の少ない変数についても、IOタスクの実行のために変数を読み出すタイミングと異なるタイミングにおいて、データの修復される機会が設けられる。そのため、メインメモリ404において、変数に対応する3個の領域のうち複数の領域でデータが化けた状態は、発生しにくい。これにより、メモリのデータ化けに起因するシステムの一時的な停止を抑制できる。
第2読出指示は、複数の変数の全てを指定する。ダミー指示部43は、予め定められた周期ごとに第2読出指示を書込読出処理部41に出力する。これにより、全ての変数について、データの修復される機会が定期的に設けられる。その結果、メインメモリ404において、変数に対応する3個の領域のうち複数の領域でデータが化けた状態がより発生しにくい。
上記の予め定められた周期は、例えばタスク周期(タスク実行部42がIOタスクを実行する周期)と同じであってもよい。これにより、データの修復される機会がタスク周期と同じ周期で設けられる。その結果、メインメモリ404において、変数に対応する3個の領域のうち複数の領域でデータが化けた状態がより一層発生しにくい。
なお、IOタスクはFAに関連する。すなわち、安全IOユニット400は、FA分野に組み込まれる制御システム1に適用される。
航空宇宙システム等の分野では、一般に一時的な停止が許されない。そのため、従来、航空宇宙システム等の分野では、データ化けが生じたとして運転継続できるように、ハードウェアである処理回路を3重化する三重モード冗長(Triple Modular Redundant(TMR))技術が適用されている。これに対し、FA分野に組み込まれる制御システムでは、航空宇宙システム等の分野と比較して、一時的な停止が許される。また、ハードウェアである処理回路を3重化すると、コストがかかる。そのため、従来、データ化けに起因した異常が発生した場合、一時的に停止するように制御システムが設計されている。
しかしながら、FA分野に組み込まれる制御システムは、24時間×365日稼働する生産ラインに組み込まれ得る。このような生産ラインにおいて、制御システムが一時的に停止すると、多大な損害が生じ得る。そのため、TMR技術のようにコストをかけることなく、データ化けが生じたとして運転継続させたいというFA分野特有の要望が新たに生じている。制御システム1は、上記の構成を有することにより、当該FA分野特有の要望を満たすことができる。
<変形例1>
上記の説明では、ダミー指示部43として動作するプロセッサ402は、タスク周期ごとに、メインメモリ404に記憶される複数の変数の全てを指定した第2読出指示を生成する。しかしながら、ダミー指示部43は、メインメモリ404に記憶される複数の変数のうちの一部を指定した第2読出指示を定期的に生成してもよい。
図14は、変形例1に係るダミー指示部による第2読出指示の生成例を示す図である。図14に示されるように、メインメモリ404に記憶される複数の変数は、M個のグループ(グループG1〜GM)に分割される。Mは2以上の整数である。
ダミー指示部43として動作するプロセッサ402は、複数のグループの各々について、当該グループに属する変数を指定した第2読出指示を予め定められた周期ごとに生成する。図14に示す例では、予め定められた周期は、タスク周期のM倍の周期である。さらに、ダミー指示部43として動作するプロセッサ402は、グループごとの第2読出指示の出力タイミングを、上記予め定められた周期の1/Mの周期(図14に示す例ではタスク周期)分だけ順にシフトさせる。
具体的には、ダミー指示部43として動作するプロセッサ402は、あるタスク周期において、グループGkに属する変数を指定した第2読出指示を生成した場合、次のタスク周期において、グループG(k+1)に属する変数を指定した第2読出指示を出力する。なお、ダミー指示部43として動作するプロセッサ402は、あるタスク周期において、グループGMに属する変数を指定した第2読出指示を生成した場合、次のタスク周期において、グループG1に属する変数を指定した第2読出指示を生成する。
変形例1によれば、1回の第2読出指示に応じて実行される変数の読み出し処理に要する時間を短縮化できる。
<変形例2>
上記の説明では、メインメモリ404に記憶される複数の変数の全てについて、ダミーの第2読出指示が定期的に出力されるものとした。しかしながら、複数の変数のうち、IOタスクの実行のための書き込みまたは読み出しの頻度の少ない変数について、ダミーの第2読出指示が出力されてもよい。
図15は、変形例2に係るダミー指示部の一例を示す図である。変形例2に係る安全IOユニットは、ダミー指示部43の代わりに図15に示すダミー指示部43aを備える点で、図6に示す安全IOユニット400と相違する。
ダミー指示部43aは、変数リスト45aを管理している。変数リスト45aには、メインメモリ404に記憶される複数の変数の一覧と、当該複数の変数の各々について、書込読出処理部41が書き込みまたは読み出しを実行した最新時刻(最新アクセス時刻)とが記述される。ダミー指示部43aは、複数の変数の各々について、書込読出処理部41が書き込みまたは読み出しを実行した時刻を書込読出処理部41から受け、当該時刻に基づいて変数リスト45aを更新する。このようにして、ダミー指示部43aは、複数の変数の各々について、書込読出処理部41が書き込みまたは読み出しを実行した最新時刻を管理する。
ダミー指示部43aは、最新時刻からの経過時間が予め定められた期間(例えば8時間)だけ経過した変数を指定した第2読出指示を生成し、生成した第2読出指示を書込読出処理部41に出力する。これにより、複数の変数のうち、IOタスクの実行のための書き込みまたは読み出しの頻度の少ない変数について、ダミーの第2読出指示が出力される。その結果、ダミーの第2読出指示に応じて実行される読み出し処理に要する時間を短縮化できる。
<変形例3>
上記の説明では、安全IOユニット400は、プロセッサおよびメインメモリからなる処理回路を1つだけ備えるものとした。しかしながら、安全IOユニット400は、2つの処理回路を備えてもよい。2つの処理回路は、同一のIOタスクを並行して実行する。これにより、より信頼性の高いタスク結果を得ることができる。
図16は、変形例3に係る安全IOユニットのハードウェア構成の一例を示す図である。図16に示されるように、変形例3に係る安全IOユニット400bは、図5に例示される安全IOユニット400と比較して、プロセッサ406と、メインメモリ408とをさらに含む点で相違する。すなわち、安全IOユニット400bは、プロセッサ402およびメインメモリ404を有するAチャンネル回路40Aと、プロセッサ406およびメインメモリ408を有するBチャンネル回路40Bとを含む。Aチャンネル回路40AとBチャンネル回路40Bとは、同一の処理を並行して実行する。
Aチャンネル回路40Aにおいて、プロセッサ402がライブラリ422、実行可能プログラム420およびダミー読出プログラム424を実行することにより、図6に示す書込読出処理部41、タスク実行部42およびダミー指示部43が実現される。Bチャンネル回路40Bにおいても、プロセッサ406がライブラリ422、実行可能プログラム420およびダミー読出プログラム424を実行することにより、図6に示す書込読出処理部41、タスク実行部42およびダミー指示部43が実現される。ただし、Aチャンネル回路40Aにおいて実現される書込読出処理部41は、メインメモリ404に対して書き込みおよび読み出しを実行する。Bチャンネル回路40Bにおいて実現される書込読出処理部41は、メインメモリ408に対して書き込みおよび読み出しを実行する。
図17は、変形例3に係る安全IOユニットの動作例を示す図である。図17に示されるように、Aチャンネル回路40AおよびBチャンネル回路40Bにおいて、タスク周期ごとに、ダミーの第2読出指示に従った、メインメモリ404,408からのダミーの読み出し処理がそれぞれ実行される。これにより、メインメモリ404,408の各々において、IOタスクの実行のために読み出される頻度の少ない変数についても、データ化けを修復する機会が定期的に設けられる。その結果、メインメモリ404,408の各々において、各変数に対応する3個の領域のうち複数の領域にデータ化けが生じた状態の発生を抑制できる。
さらに、Aチャンネル回路40AおよびBチャンネル回路40Bにおいて、タスク周期ごとに、同一のIOタスクがそれぞれ実行される。そして、Aチャンネル回路40AによるIOタスクの結果と、Bチャンネル回路40BによるIOタスクの結果とが照合される。
Aチャンネル回路40AおよびBチャンネル回路40Bの一方において、IOタスクの実行中に一過性の故障が生じた場合、Aチャンネル回路40AによるIOタスクの結果と、Bチャンネル回路40BによるIOタスクの結果とが一致しない。このような一過性の故障は、プロセッサ内のレジスタにおけるデータ化け、バス上でのデータ化け、プロセッサの誤動作などに起因して生じる。
Aチャンネル回路40AおよびBチャンネル回路40Bは、両者のIOタスクの結果が一致することに応じて、動作を継続させる。一方、Aチャンネル回路40AおよびBチャンネル回路40Bは、両者のIOタスクの結果が一致しないことに応じて、動作を停止させる。これにより、上記のような一過性の故障が生じた状態で実行されたIOタスクの結果に基づいて動作が継続されることを抑制できる。
<変形例4>
上記の説明では、メインメモリにおいてデータが3重化して管理されるものとした。しかしながら、メインメモリにおいて、各変数の値を示すデータが4以上に多重化されてもよい。
<変形例5>
標準PLC100、安全PLC200およびカプラ300も、安全IOユニット400と同様に、書込読出処理部41、タスク実行部42、およびダミー指示部43(またはダミー指示部43a)を備えていてもよい。ただし、各装置に備えられるタスク実行部42は、IOタスクの代わりに、各装置に応じたタスクを実行する。これにより、標準PLC100、安全PLC200およびカプラ300も、メインメモリにデータ化けが生じたとしても動作を継続できる。その結果、制御システム1の停止の頻度が抑制される。
§3 付記
以上のように、本実施の形態は以下のような開示を含む。
(構成1)
データ処理装置(400,400b)であって、
タスクの実行に使用される複数の変数を記憶するメモリ(404,408)と、
書込指示および読出指示を受けて、前記メモリに対して前記複数の変数のうち指定された変数の書き込みおよび読み出しをそれぞれ実行する処理部(41,402,406)と、
前記複数の変数のうち必要な変数を指定した第1読出指示を前記処理部(41,402,406)に出力し、前記処理部(41,402,406)から受けた当該変数の値を用いて前記タスクを実行するタスク実行部(42,402,406)とを備え、
前記処理部(41,402,406)は、前記書込指示を受けると、前記指定された変数の値を示すデータを、前記メモリ(404,408)における、前記指定された変数に対応するN個の領域の各々に書き込み、
Nは3以上の整数であり、
前記処理部(41,402,406)は、前記読出指示を受けると、
前記メモリ(404,408)における、前記指定された変数に対応する前記N個の領域の各々からデータを読み出し、前記N個の領域からそれぞれ読み出したデータを互いに照合し、
前記N個の領域からそれぞれ読み出したデータの全てが一致することに応じて、前記読出指示の出力元に前記N個の領域のいずれかから読み出したデータで示される値を送り、
前記N個の領域のうち1個の領域を除いたN−1個の領域からそれぞれ読み出したデータが一致することに応じて、前記N−1個の領域から読み出したデータと一致するように前記1個の領域のデータを書き換えるとともに、前記読出指示の出力元に前記N−1個の領域から読み出したデータで示される値を送り、
前記データ処理装置(400)は、さらに、
前記タスク実行部(42,402,406)が前記第1読出指示を出力するタイミングと異なるタイミングにおいて、前記複数の変数のうちの少なくとも1つを指定したダミーの第2読出指示を前記処理部(41,402,406)に出力するダミー指示部(43,43a,402,406)を備える、データ処理装置(400,400b)。
(構成2)
前記第2読出指示は、前記複数の変数の全てを指定し、
前記ダミー指示部(43,402,406)は、予め定められた周期ごとに前記第2読出指示を前記処理部(41,402,406)に出力する、構成1に記載のデータ処理装置(400,400b)。
(構成3)
前記複数の変数は、M個のグループに分割され、
Mは2以上の整数であり、
前記ダミー指示部(43,402,406)は、
前記M個のグループの各々について、当該グループに属する変数を指定した前記第2読出指示を予め定められた周期ごとに前記処理部(41,402,406)に出力し、
前記M個のグループごとの前記第2読出指示の出力タイミングを、前記予め定められた周期の1/Mの周期分だけ順にシフトさせる、構成1に記載のデータ処理装置(400,400b)。
(構成4)
前記ダミー指示部(43a,402,406)は、
前記複数の変数の各々について、前記処理部が書き込みまたは読み出しを実行した最新時刻を管理し、
前記最新時刻からの経過時間が予め定められた期間だけ経過した変数を指定した前記第2読出指示を前記処理部(41,402,406)に出力する、構成1に記載のデータ処理装置(400,400b)。
(構成5)
前記タスクはファクトリオートメーションに関連する、構成1から4のいずれかに記載のデータ処理装置(400,400b)。
(構成6)
データ処理装置(400,400b)の制御方法であって、
前記データ処理装置(400,400b)は、
タスクの実行に使用される複数の変数を記憶するメモリ(404,408)と、
書込指示および読出指示を受けて、前記メモリに対して前記複数の変数のうち指定された変数の書き込みおよび読み出しをそれぞれ実行する処理部(41,402,406)とを含み、
前記処理部(41,402,406)は、前記書込指示を受けると、前記指定された変数の値を示すデータを、前記メモリにおける、前記指定された変数に対応するN個の領域の各々に書き込み、
Nは3以上の整数であり、
前記処理部(41,402,406)は、前記読出指示を受けると、
前記メモリ(404,408)における、前記指定された変数に対応する前記N個の領域の各々からデータを読み出し、前記N個の領域からそれぞれ読み出したデータを互いに照合し、
前記N個の領域からそれぞれ読み出したデータの全てが一致することに応じて、前記読出指示の出力元に前記N個の領域から読み出したデータで示される値を送り、
前記N個の領域のうち1個の領域を除いたN−1個の領域からそれぞれ読み出したデータが一致することに応じて、前記N−1個の領域から読み出したデータと一致するように前記1個の領域のデータを書き換えるとともに、前記読出指示の出力元に前記N−1個の領域から読み出したデータで示される値を送り、
前記制御方法は、
前記複数の変数のうち必要な変数を指定した第1読出指示を前記処理部(41,402,406)に出力し、前記処理部(41,402,406)から受けた当該変数の値を用いて前記タスクを実行するステップと、
前記第1読出指示が出力されるタイミングと異なるタイミングにおいて、前記複数の変数のうちの少なくとも1つを指定したダミーの第2読出指示を前記処理部(41,402,406)に出力するステップとを備える、制御方法。
(構成7)
構成6に記載の制御方法をコンピュータに実行させるプログラム。
本発明の実施の形態について説明したが、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 制御システム、2 フィールドネットワーク、40A,40B チャンネル回路、41 書込読出処理部、42 タスク実行部、43,43a ダミー指示部、44 変数管理テーブル、45,45a 変数リスト、100 標準PLC、102,202,302,402,406 プロセッサ、104,204,304,404,408 メインメモリ、108,308 フィールドネットワークコントローラ、110,210,310,410 ストレージ、116,216,316,412 ローカルバスコントローラ、118,218,318,418 プロセッサバス、200 安全PLC、300 カプラ、400,400b 安全IOユニット、404a,404b,404c 領域、416 安全IOモジュール、420 実行可能プログラム、422 ライブラリ、424 ダミー読出プログラム、1102,2102,3102 システムプログラム、1104 標準制御プログラム、1106,2106,3106 設定情報、2104 安全プログラム、G1〜GM グループ。

Claims (6)

  1. データ処理装置であって、
    タスクの実行に使用される複数の変数を記憶するメモリと、
    書込指示および読出指示を受けて、前記メモリに対して前記複数の変数のうち指定された変数の書き込みおよび読み出しをそれぞれ実行する処理部と、
    前記複数の変数のうち必要な変数を指定した第1読出指示を前記処理部に出力し、前記処理部から受けた当該変数の値を用いて前記タスクを実行するタスク実行部とを備え、
    前記処理部は、前記書込指示を受けると、前記指定された変数の値を示すデータを、前記メモリにおける、前記指定された変数に対応するN個の領域の各々に書き込み、
    Nは3以上の整数であり、
    前記処理部は、前記読出指示を受けると、
    前記メモリにおける、前記指定された変数に対応する前記N個の領域の各々からデータを読み出し、前記N個の領域からそれぞれ読み出したデータを互いに照合し、
    前記N個の領域からそれぞれ読み出したデータの全てが一致することに応じて、前記読出指示の出力元に前記N個の領域のいずれかから読み出したデータで示される値を送り、
    前記N個の領域のうち1個の領域を除いたN−1個の領域からそれぞれ読み出したデータが一致することに応じて、前記N−1個の領域から読み出したデータと一致するように前記1個の領域のデータを書き換えるとともに、前記読出指示の出力元に前記N−1個の領域から読み出したデータで示される値を送り、
    前記データ処理装置は、さらに、
    前記タスク実行部が前記第1読出指示を出力するタイミングと異なるタイミングにおいて、前記複数の変数のうちの少なくとも1つを指定したダミーの第2読出指示を前記処理部に出力するダミー指示部を備え、
    前記複数の変数は、M個のグループに分割され、
    Mは2以上の整数であり、
    前記ダミー指示部は、
    前記M個のグループの各々について、当該グループに属する変数を指定した前記第2読出指示を予め定められた周期ごとに前記処理部に出力し、
    前記M個のグループごとの前記第2読出指示の出力タイミングを、前記予め定められた周期の1/Mの周期分だけ順にシフトさせる、データ処理装置。
  2. データ処理装置であって、
    タスクの実行に使用される複数の変数を記憶するメモリと、
    書込指示および読出指示を受けて、前記メモリに対して前記複数の変数のうち指定された変数の書き込みおよび読み出しをそれぞれ実行する処理部と、
    前記複数の変数のうち必要な変数を指定した第1読出指示を前記処理部に出力し、前記処理部から受けた当該変数の値を用いて前記タスクを実行するタスク実行部とを備え、
    前記処理部は、前記書込指示を受けると、前記指定された変数の値を示すデータを、前記メモリにおける、前記指定された変数に対応するN個の領域の各々に書き込み、
    Nは3以上の整数であり、
    前記処理部は、前記読出指示を受けると、
    前記メモリにおける、前記指定された変数に対応する前記N個の領域の各々からデータを読み出し、前記N個の領域からそれぞれ読み出したデータを互いに照合し、
    前記N個の領域からそれぞれ読み出したデータの全てが一致することに応じて、前記読出指示の出力元に前記N個の領域のいずれかから読み出したデータで示される値を送り、
    前記N個の領域のうち1個の領域を除いたN−1個の領域からそれぞれ読み出したデータが一致することに応じて、前記N−1個の領域から読み出したデータと一致するように前記1個の領域のデータを書き換えるとともに、前記読出指示の出力元に前記N−1個の領域から読み出したデータで示される値を送り、
    前記データ処理装置は、さらに、
    前記タスク実行部が前記第1読出指示を出力するタイミングと異なるタイミングにおいて、前記複数の変数のうちの少なくとも1つを指定したダミーの第2読出指示を前記処理部に出力するダミー指示部を備え、
    前記ダミー指示部は、
    前記複数の変数の各々について、前記処理部が書き込みまたは読み出しを実行した最新時刻を管理し、
    前記最新時刻からの経過時間が予め定められた期間だけ経過した変数を指定した前記第2読出指示を前記処理部に出力する、データ処理装置。
  3. 前記タスクはファクトリオートメーションに関連する、請求項1または2に記載のデータ処理装置。
  4. データ処理装置の制御方法であって、
    前記データ処理装置は、
    タスクの実行に使用される複数の変数を記憶するメモリと、
    書込指示および読出指示を受けて、前記メモリに対して前記複数の変数のうち指定された変数の書き込みおよび読み出しをそれぞれ実行する処理部とを含み、
    前記処理部は、前記書込指示を受けると、前記指定された変数の値を示すデータを、前記メモリにおける、前記指定された変数に対応するN個の領域の各々に書き込み、
    Nは3以上の整数であり、
    前記処理部は、前記読出指示を受けると、
    前記メモリにおける、前記指定された変数に対応する前記N個の領域の各々からデータを読み出し、前記N個の領域からそれぞれ読み出したデータを互いに照合し、
    前記N個の領域からそれぞれ読み出したデータの全てが一致することに応じて、前記読出指示の出力元に前記N個の領域から読み出したデータで示される値を送り、
    前記N個の領域のうち1個の領域を除いたN−1個の領域からそれぞれ読み出したデータが一致することに応じて、前記N−1個の領域から読み出したデータと一致するように前記1個の領域のデータを書き換えるとともに、前記読出指示の出力元に前記N−1個の領域から読み出したデータで示される値を送り、
    前記制御方法は、
    前記複数の変数のうち必要な変数を指定した第1読出指示を前記処理部に出力し、前記処理部から受けた当該変数の値を用いて前記タスクを実行するステップと、
    前記第1読出指示が出力されるタイミングと異なるタイミングにおいて、前記複数の変数のうちの少なくとも1つを指定したダミーの第2読出指示を前記処理部に出力するステップとを備え、
    前記複数の変数は、M個のグループに分割され、
    Mは2以上の整数であり、
    前記出力するステップは、
    前記M個のグループの各々について、当該グループに属する変数を指定した前記第2読出指示を予め定められた周期ごとに前記処理部に出力するステップと、
    前記M個のグループごとの前記第2読出指示の出力タイミングを、前記予め定められた周期の1/Mの周期分だけ順にシフトさせるステップとを含む、制御方法。
  5. データ処理装置の制御方法であって、
    前記データ処理装置は、
    タスクの実行に使用される複数の変数を記憶するメモリと、
    書込指示および読出指示を受けて、前記メモリに対して前記複数の変数のうち指定された変数の書き込みおよび読み出しをそれぞれ実行する処理部とを含み、
    前記処理部は、前記書込指示を受けると、前記指定された変数の値を示すデータを、前記メモリにおける、前記指定された変数に対応するN個の領域の各々に書き込み、
    Nは3以上の整数であり、
    前記処理部は、前記読出指示を受けると、
    前記メモリにおける、前記指定された変数に対応する前記N個の領域の各々からデータを読み出し、前記N個の領域からそれぞれ読み出したデータを互いに照合し、
    前記N個の領域からそれぞれ読み出したデータの全てが一致することに応じて、前記読出指示の出力元に前記N個の領域から読み出したデータで示される値を送り、
    前記N個の領域のうち1個の領域を除いたN−1個の領域からそれぞれ読み出したデータが一致することに応じて、前記N−1個の領域から読み出したデータと一致するように前記1個の領域のデータを書き換えるとともに、前記読出指示の出力元に前記N−1個の領域から読み出したデータで示される値を送り、
    前記制御方法は、
    前記複数の変数のうち必要な変数を指定した第1読出指示を前記処理部に出力し、前記処理部から受けた当該変数の値を用いて前記タスクを実行するステップと、
    前記第1読出指示が出力されるタイミングと異なるタイミングにおいて、前記複数の変数のうちの少なくとも1つを指定したダミーの第2読出指示を前記処理部に出力するステップとを備え、
    前記出力するステップは、
    前記複数の変数の各々について、前記処理部が書き込みまたは読み出しを実行した最新時刻を管理するステップと、
    前記最新時刻からの経過時間が予め定められた期間だけ経過した変数を指定した前記第2読出指示を前記処理部に出力するステップとを含む、制御方法。
  6. 請求項4または5に記載の制御方法をコンピュータに実行させるプログラム。
JP2020021549A 2020-02-12 2020-02-12 データ処理装置、制御方法およびプログラム Active JP6733843B1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020021549A JP6733843B1 (ja) 2020-02-12 2020-02-12 データ処理装置、制御方法およびプログラム
PCT/JP2020/015664 WO2021161549A1 (ja) 2020-02-12 2020-04-07 データ処理装置、制御方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020021549A JP6733843B1 (ja) 2020-02-12 2020-02-12 データ処理装置、制御方法およびプログラム

Publications (2)

Publication Number Publication Date
JP6733843B1 true JP6733843B1 (ja) 2020-08-05
JP2021128420A JP2021128420A (ja) 2021-09-02

Family

ID=71892488

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020021549A Active JP6733843B1 (ja) 2020-02-12 2020-02-12 データ処理装置、制御方法およびプログラム

Country Status (2)

Country Link
JP (1) JP6733843B1 (ja)
WO (1) WO2021161549A1 (ja)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3235785B2 (ja) * 1998-04-15 2001-12-04 日本電気株式会社 二重化情報処理装置
JP4244847B2 (ja) * 2004-04-12 2009-03-25 株式会社デンソー データ修復装置
JP4374476B2 (ja) * 2004-05-24 2009-12-02 独立行政法人科学技術振興機構 キャッシュ・メモリ及びその制御方法
JP2007018414A (ja) * 2005-07-11 2007-01-25 Hitachi Ltd メモリビットエラーの訂正機能を有する制御装置

Also Published As

Publication number Publication date
JP2021128420A (ja) 2021-09-02
WO2021161549A1 (ja) 2021-08-19

Similar Documents

Publication Publication Date Title
US4905196A (en) Method and storage device for saving the computer status during interrupt
US5200963A (en) Self-checking on-line testable static ram
JP6733843B1 (ja) データ処理装置、制御方法およびプログラム
JP6721140B1 (ja) データ処理装置、データ処理方法およびプログラム
JP6729825B1 (ja) 情報処理装置、制御方法およびプログラム
JPH0816328A (ja) ディスクアレイシステム
WO2022185582A1 (ja) データ処理装置、データ処理方法およびプログラム
US11282554B2 (en) Data storage circuit and electronic apparatus
JPH0290254A (ja) データ入出力システム
JP3036442B2 (ja) メモリ監視方式
JPH11338712A (ja) 割込順序保存回路
RU66560U1 (ru) Устройство оперативного управления
KR100204576B1 (ko) 공통 블럭 레지스터 내장 메모리의 구조와 이를 이용한 그림자 페이지 회복 구조 및 회복 기법
JPS5911455A (ja) 中央演算処理装置の冗長システム
JPS58125154A (ja) 状態履歴記憶方式
JPS59111501A (ja) シ−ケンスコントロ−ラ
JPWO2015011792A1 (ja) フィールドプログラマブルゲートアレイおよび制御装置
SU1619280A1 (ru) Устройство дл контрол управл ющей ЭВМ
JPH05189089A (ja) データ処理システム
JPH03291701A (ja) プログラマブルコントローラ
JPH01240907A (ja) データ処理装置
JPH0355646A (ja) データ保存回路
JPH02220159A (ja) アダプタ制御方式
JPH01302420A (ja) 非同期ダブルバッファの書き込み保護方式
JPH02178740A (ja) 情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200414

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200414

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200417

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200512

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200529

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: 20200609

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200622

R150 Certificate of patent or registration of utility model

Ref document number: 6733843

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250