JP2008090656A - プログラマブルコントローラ - Google Patents

プログラマブルコントローラ Download PDF

Info

Publication number
JP2008090656A
JP2008090656A JP2006271749A JP2006271749A JP2008090656A JP 2008090656 A JP2008090656 A JP 2008090656A JP 2006271749 A JP2006271749 A JP 2006271749A JP 2006271749 A JP2006271749 A JP 2006271749A JP 2008090656 A JP2008090656 A JP 2008090656A
Authority
JP
Japan
Prior art keywords
memory
data
program
user program
user
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.)
Granted
Application number
JP2006271749A
Other languages
English (en)
Other versions
JP4867557B2 (ja
Inventor
Toshiyuki Ishihara
俊幸 石原
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.)
Fuji Electric FA Components and Systems Co Ltd
Original Assignee
Fuji Electric FA Components and Systems Co Ltd
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 Fuji Electric FA Components and Systems Co Ltd filed Critical Fuji Electric FA Components and Systems Co Ltd
Priority to JP2006271749A priority Critical patent/JP4867557B2/ja
Publication of JP2008090656A publication Critical patent/JP2008090656A/ja
Application granted granted Critical
Publication of JP4867557B2 publication Critical patent/JP4867557B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Programmable Controllers (AREA)

Abstract

【課題】揮発性メモリをユーザプログラムのバックアップメモリとしながらも正しくユーザプログラムの破損を修復しシステム停止を不要とするPLCを提供する。
【解決手段】ユーザプログラムメモリ17(RAM)にはスキャン周期ごとの制御演算のために読み出されるユーザプログラムMが、システムワークメモリ16とユーザデータメモリ18(共にRAM)にはそれぞれプログラムMと同一内容のバックアップユーザプログラムB1とB2が格納され、多数決メモリ診断・修復手段15B(システムプログラムメモリ15内)がスキャン周期ごとに各プログラムM、B1、B2の互いに対応する領域のデータを読み出して比較し、このデータが一致するプログラムの数がユーザプログラムおよびバックアップユーザプログラムの総数の過半数(本例では2つ以上)となるデータが正しいとして各プログラムM、B1、B2の破損の有無を検出し、破損プログラムを非破損プログラムによって修復する。
【選択図】 図1

Description

この発明は、シーケンス制御の運転中、演算実行するユーザプログラムの破損を検出してこれを自動的に修復し、制御運転を継続できる機能を持つプログラマブルコントローラ(以下、PLCとも略記する)に関する。
なお、以下各図において同一の符号は同一もしくは相当部分を示す。
プログラマブルコントローラ(PLC)は、ユーザにより作成されて格納されたアプリケーションプログラムを演算実行してPLCに接続される制御対象機器を自動的にシーケンス制御する装置であり、FA(ファクトリーオートメーション)等に広く使用されている。
このPLCは、複数のモジュール、すなわち、電源供給源となる電源モジュール、PLC全体を統括制御するCPUモジュール、各種の制御対象機器の適所に取り付けたスイッチやセンサの信号を入力する入力モジュール、同じく制御対象機器のアクチュエータなどに制御出力を出す出力モジュール、通信ネットワークに接続するための通信モジュールなどの各種モジュールを適宜組み合わせて構成される。
図4は従来のPLCの要部の構成例を示すブロック回路図である。同図において100はプログラマブルコントローラ(PLC)、200はユーザプログラム(ユーザアプリケーションプログラムともいう)の作成や転送用のツールとしてのプログラミングローダであり、このプログラミングローダ200は通信線300を介してPLC100のローダインタフェース30に接続されている。
また、PLC100内において、10はCPUモジュール、40は図外の制御対象機器と接続される入出力モジュール(I/Oモジュールとも略記する)である。
CPUモジュール10は、内部のシステムバス19によって互いに接続された、以下の11、13〜18の各構成部からなる。
ここでCPU11は、システムプログラムメモリ15に記憶されたシステムプログラムを実行し、CPUモジュール10内の各構成部の動作制御を行うと共に、ユーザプログラムメモリ17に記憶されたユーザプログラムを実行して図外の制御対象機器のシーケンス制御を行う。このCPU11には通常、汎用のMPUあるいはこれに代わる専用IC(ASIC)が用いられている。
ドライバ/レシーバ13はローダインタフェース30に接続され、通信線300を介しプログラミングローダ200とCPU11との間で送受信データを受け渡す役割を持つ。
PLC固有バスインタフェース14は、I/Oモジュール40に対してPLC固有バス14aを介し外部の制御対象機器の制御に関わる信号の入出力を行う。
システムプログラムを保持するシステムプログラムメモリ15には、通常、不揮発性メモリであるEPROMあるいはFLASHメモリが使用される。なお、サムチェック・メモリ診断手段15Aはこのメモリ15に格納されたシステムプログラムが保持する後述のメモリ診断用のソフトウェア手段である。
システムワークメモリ16は、CPU11がシステムプログラムを実行する際に生ずるデータを一時記憶する役割を持ち、このメモリ16には、通常、RAMが使用される。
ユーザプログラムメモリ17は、プログラミングローダ200から受信したユーザプログラムを記憶する役割を持ち、このメモリ17には、通常、RAMが使用される。
なお、このメモリ17には、ローダ200からのユーザプログラムがマシンコードである命令オブジェクトコード、つまりこのユーザプログラムを高速に実行すべきCPU11が理解できるコードに変換されて格納されている。
ユーザデータメモリ18は、ユーザプログラムで使用するデータ、例えば制御対象機器との間で送受信する接点信号等の情報を記憶する役割を持ち、このメモリ18には、通常、RAMが使用される。
図5は従来のPLCのCPU11が実行する全般的なソフトウェア処理の例を示すフローチャートで、S1〜S13はそのステップ番号である。ここではステップS6のみがユーザプログラムの処理に相当し、これ以外のステップはシステムプログラムの処理に相当する。
図5では、CPU11は、電源投入に基づきリセットされたのち、予め伝送用ICの設定などの初期化処理(ステップS1)、バスの短絡やメモリバックアップの異常などの有無を調べる自己診断処理(ステップS2)、メモリクリアやユーザプログラム実行のための設定などの各種システム処理(ステップS3)を順次行ったうえ、ステップS4以降のループ動作に入る。
ステップS4の状態判定分岐処理では、CPU11は現在の自己の状態が運転の正常な実行が可能な状態で有るか否かを判定し、それぞれの状態に応じたループ処理に分岐する。そして、運転の正常な実行が可能な状態と判定すれば「運転正常実行」の分岐に進み、ステップS5以降のシーケンス制御処理を実行する。
このシーケンス制御処理では、CPU11は、先ずI/Oモジュール40内の図外の入力モジュールで入力した制御対象機器からの入力信号をユーザデータメモリ18内のI/Oメモリ領域に取り込み(ステップS5、入力リフレッシュ)、次いでユーザプログラムメモリ17に格納されたユーザプログラム(シーケンスプログラム)を読み出し、上記制御対象機器からの最新の入力信号を用いて論理演算を行う(ステップS6、ユーザプログラム演算実行)。
そして、その演算実行結果である制御出力信号をユーザデータメモリ18内のI/Oメモリ領域に書き込んだのち、I/Oモジュール40内の図外の出力モジュールに送出して制御対象機器側へ出力させ(ステップS7、出力リフレッシュ)、その後、後述のようないわゆるスキャンEND処理、即ちメモリ診断処理(ステップS10)、ローダ処理(ステップS11)、基準SUM値算出処理(ステップS12)、各種システム診断処理(ステップS13)を行う。そして、以上のステップS4〜S13の一連の処理をスキャン周期(シーケンス演算周期ともいう)ごとに繰り返し実行して制御対象機器を制御する。
ところで、PLCが設置される工場内の環境としては、サーボモータ、インバータ、高圧電力装置など多種多様な装置がPLCに接続され、あるいはPLCの付近に配置されている。そのため、放射ノイズ、電源の瞬時停電、電磁界などにより、CPUモジュール内のメモリに格納されたデータの破壊が発生しやすくなっている。また、CPUモジュール内のメモリのデータ破壊の現象は、宇宙線によっても生じる。なお、前者の原因によるデータ破壊は、通常数ビット(複数バイト)単位で発生し、後者の宇宙線によるデータ破壊は、1ビット単位で発生することが多い。
当然のことながら、データ破壊が生じたユーザプログラムに基づいて制御すると正常動作しないので、CPU11は、運転中、この場合、スキャンEND処理内のメモリ診断処理(ステップS10)で、図6に示すようなメモリ診断サブルーチン処理によりユーザプログラムの破壊が発生していないかを確認している。
なお、スキャンEND処理内のローダ処理(ステップS11)では、プログラミングローダ200から新規の、あるいは変更されたユーザプログラムがダウンロードされた場合、このダウンロードされたユーザプログラムをユーザプログラムメモリ17に取り込んで従来のユーザプログラムを更新する。
同じくスキャンEND処理内の基準SUM値算出処理(ステップS12)では、上記の更新後のユーザプログラムの先頭から最終までの値を加算し、得られた値を基準サム値(なお、サムをSUMとも記す)としてシステムワークメモリ16内の所定領域に格納する。
また同じくスキャンEND処理内の各種システム診断処理(ステップS13)では、I/Oモジュール40のPLC固有バス14aからの外れチェックなどを行う。
ここで、図5のスキャンEND処理内のメモリ診断処理(ステップS10)で行われる、詳細処理としての図6のメモリ診断サブルーチン処理を説明する。図6中、S41〜46はこの処理のステップ番号である。
なお、図4のシステムプログラムメモリ15内に示したサムチェック・メモリ診断手段15Aの機能は図5のメモリ診断処理(ステップS10)、つまり図6のメモリ診断サブルーチン処理と、図5の基準SUM値算出処理(ステップS12)に相当する。
図6のメモリ診断処理を要約すれば、RAM上にある診断対象のデータのSUM値(被診断SUM値という)を計算して予め格納してある基準SUM値と比較し、一致することで診断対象のデータに異常がないことを確認するというものである。
具体的には、実際の運転中(つまりスキャン周期ごとのシーケンス制御のループ処理中)、図5中のメモリ診断処理(ステップS10)において、CPU11は、ユーザプログラムメモリのRAM17上にあるユーザプログラムのSUM値としての被診断SUM値をスキャン周期の複数回分に分けて算出する(ステップS41)。
そして最終データまでのSUM値算出に達していないと判別したスキャン周期では(ステップS42、分岐NO)、そのまま図6の処理を抜ける。
他方、このステップS42で最終データまでのSUM値算出を終えたと判別した場合は(分岐YES)、この被診断SUM値を前記のようにシステムワークメモリ16内の所定領域に格納した基準SUM値と比較する(ステップS43、44)。
ここで、SUM値が一致した場合は(ステップS44、分岐「一致」)、再度、上記と同様にユーザプログラムメモリ17上のユーザプログラムのSUM値、つまり被診断SUM値の算出を繰り返すこととしてその準備を行って(ステップS46)、図6の処理を抜ける。
しかし、SUM値が一致しない場合は(ステップS44、分岐「不一致」)、何らかの理由でRAM17上のユーザプログラムが破損したと判断し、暴走・不正出力を防止するためPLCの運転を異常停止させる状態変更要求をセットし(ステップS45)、図6の処理を抜ける。
このように運転異常停止の状態変更要求がセットされると、図5のループ処理の先頭ステップS4の状態判定分岐処理で「運転異常停止」へ分岐してステップS11に飛ぶこととなり、結果としてPLCによるシーケンス制御動作が停止する。
しかし、このようにPLCの運転を異常停止させると、制御しているシステム全体が停止してしまい工場の操業等に重大な影響が生じる可能性がある。そこで、システムを復旧動作させるため、保守員などによりプログラミングローダ等のツールをPLCに接続し、ユーザプログラムを再度転送してメモリの修正作業を実行する必要があるが、PLCは、一般に制御盤の奥に設置されているので、その接続は簡単ではなく、メモリの修復作業・システムの再起動までに多くの時間が必要となる。
この問題を解決するために、特許文献1には、演算処理時に読み出されるユーザプログラムが格納されるユーザメモリと、ユーザプログラムと同一内容のデータが格納されたバックアップメモリとを設け、シーケンス制御のサイクリック動作中にユーザメモリとバックアップメモリのデータとの照合を行うことでユーザメモリ破損の検出を行い、検出したユーザメモリの異常箇所のデータをバックアップメモリの該当箇所のデータで修復し、システムを停止させることなくシーケンス制御を継続できるようにするPLCのメモリ自動復旧方法が開示されている。
特開2006−59382号公報
しかしながら、特許文献1のメモリ自動復旧方法では、バックアップメモリのデータが安定したものであれば問題ないが現実には変化可能なものであり、メモリ破損の検出時、厳密にはユーザメモリのデータとバックアップメモリのデータとのいずれが真に正しいかが分からず、メモリ修復の信頼性に欠けるという問題がある。この問題は特にバックアップメモリが不揮発性メモリ(ROM、FLASHメモリ等)でなく揮発性メモリ(RAM)である場合、より大きなものとなる。
そこで本発明の課題は、揮発性メモリ(RAM)をユーザプログラムのバックアップメモリとしたPLCであっても正しくユーザメモリの破損を修復でき、システムの停止を不要とするプログラマブルコントローラ(PLC)を提供することにある。
前記の課題を解決するために請求項1のプログラマブルコントローラは、
スキャン周期ごとにシーケンス制御の演算処理のために読み出されるユーザプログラム(M)および該ユーザプログラムと同一内容の複数のバックアップユーザプログラム(B1、B2など)が1個のメモリに共に、または複数個のメモリ(それぞれRAMからなるユーザプログラムメモリ17、システムワークメモリ16、ユーザデータメモリ18など)の各々に前記ユーザプログラムおよびバックアップユーザプログラムの各プログラムが少なくとも1または複数プログラム格納されてなるプログラマブルコントローラ(100)であって、
(多数決メモリ診断・修復手段15Bを介し)前記スキャン周期ごとに前記ユーザプログラムおよび全てのバックアップユーザプログラムの互いに対応する領域のデータを読み出して比較し、このデータが互いに一致するプログラムの数が前記ユーザプログラムおよび全バックアップユーザプログラムの総数の過半数となるデータが正しいデータであるとして前記各プログラムの破損の有無を検出するようにする。
また、請求項2のプログラマブルコントローラは、請求項1に記載のプログラマブルコントローラにおいて、前記の検出によって破損有りとされたプログラムの該当データを前記の正しいデータで修復し、シーケンス制御を継続するようにする。
また請求項3のプログラマブルコントローラは、請求項2に記載のプログラマブルコントローラにおいて、前記の検出によって破損有りとされたプログラムが前記ユーザプログラムであるときは、前記の検出によって破損無しとされたバックアップユーザプログラムの所定の1つを前記ユーザプログラムに置き換えて前記スキャン周期ごとの演算処理に利用し、シーケンス制御を継続するようにする。
本発明の作用は次の如くである。即ち、PLC内にシーケンス制御の演算処理のために読み出されるユーザプログラムを保持するユーザメモリ(ユーザプログラムメモリ)のほかに、ユーザプログラムと同一内容のデータ(バックアップユーザプログラム)を保持する複数のバックアップメモリ(RAM)を設け、多数決判断処理によりメモリの破損を検出することにより、不揮発性メモリ(ROM、FLASHメモリ等)上にユーザプログラムのバックアップデータ(バックアップユーザプログラム)を保存していないPLCにおいてもユーザメモリの破損を確実に検出して、破損していない他のバックアップメモリのデータからこれを直ちに修復するか、またはCPUが制御演算実行のために読み込むプログラムメモリを破損していないバックアップメモリに切り替え、CPUの演算動作を停止することなく、システムの稼働を継続させるものである。
本発明によれば、PLC内にシーケンス制御の演算処理のために読み出されるユーザプログラムを保持するユーザプログラムメモリ(RAM)のほかに、それぞれユーザプログラムと同一内容のバックアップユーザプログラムを保持する複数のバックアップメモリ(RAM)を設け、多数決判断処理によりメモリ(プログラム)の破損を検出するようにしたので、
不揮発性メモリ(ROM、FLASHメモリ等)上にバックアップユーザプログラムを保存していないPLCにおいてもユーザプログラムの破損を確実に検出して、破損していないバックアップユーザプログラムのデータからこれを直ちに修復したり、またはCPUが制御演算実行のために読み込むユーザプログラムを破損していないバックアップユーザプログラムに切り替えるようにして、PLCの制御運転動作を停止することなく、システムの稼働を継続させことができる。
なお、破損していたユーザプログラムはその破損検出箇所以降のプログラム部分にも破損を生じている可能性が高いが、上記のようにCPUが制御演算実行のために読み込むユーザプログラムを破損していないバックアップユーザプログラムに切り替えた場合、破損を生じている可能性が高いプログラムを演算に使用しないため、より安全にPLCの運転を継続することができる。
次に図1ないし図3を用いて本発明の実施の形態を説明する。
図1は本発明の一実施例としてのPLCの要部の構成を示すブロック回路図で図4に対応するものである。図1の図4に対する相違は、図1ではシステムプログラムメモリ15に付加されるメモリ診断に関わるソフトウェア手段が、図4のサムチェック・メモリ診断手段15Aから多数決メモリ診断・修復手段15Bに置き換わった点と、ユーザプログラムメモリ17に格納されるユーザプログラム(図1ではMとして示す)に対するバックアップ用の2つのプログラムであるバックアップ・ユーザプログラムB1およびB2の格納領域が、それぞれシステムワークメモリ16およびユーザデータメモリ18の各RAMに設けられている点である。
なお、図1における多数決メモリ診断・修復手段15B、並びにバックアップユーザプログラムB1およびB2に関わる機能を除く各部の機能は、図4におけるサムチェック・メモリ診断手段15Aに関わる機能を除く各部の機能と同様である。
また、図2は図1のCPU11が実行する全般的なソフトウェア処理の実施例を示すフローチャートで、図5に対応するものである。図2の図5に対する相違は、図5のメモリ診断処理(ステップS10)が図2では後述の図3のメモリ診断修復サブルーチン処理でその具体内容を示すメモリ診断修復処理(ステップS10A)に置き換わった点と、図5の基準SUM値算出処理(ステップS12)が、図2ではバックアップ・ユーザプログラム格納処理(ステップS12A)に置き換わった点である。
そして、図1のシステムプログラムメモリ15内に示した多数決メモリ診断・修復手段15Bの機能は図2のメモリ診断修復処理(ステップS10A)とバックアップ・ユーザプログラム格納処理(ステップS12A)に相当する。
図2のバックアップ・ユーザプログラム格納処理(ステップS12A)では、図2のローダ処理(ステップS11)でユーザプログラムメモリ17にユーザプログラムMが新規あるいは従来のプログラムを更新してダウンロードされたとき、CPU11が、このユーザプログラムMと同一内容の2つのプログラムであるバックアップユーザプログラムB1およびB2をそれぞれシステムワークメモリ16およびユーザデータメモリ18に格納する。
なお、システムワークメモリ16、ユーザプログラムメモリ17、ユーザデータメモリ18等に使用しているRAMは、LSI技術の進歩により大容量化が進んでおり(逆に小容量のRAMが入手できなくなっている)、そのため特に小/中規模用のCPUモジュール10の製品仕様を実現するために必要な容量に対し、未使用領域が多く存在する状況にある。
本発明では本来は別の目的で設けられているRAMにバックアップユーザプログラムも格納するためRAMのメモリ量を従来より多く使用することになるが、上記のように存在するRAMの未使用領域を利用できるため製品コストには影響を与えない。
図3は図2のメモリ診断修復処理(ステップS10A)の詳細処理としてのサブルーチン処理の実施例を示すフローチャートで、ステップS21〜S32はそのステップ番号である。なお本実施例では、図3の後述するステップS21、S22、S23に定義する〔データM〕、〔データB1〕、〔データB2〕は、図2の正常運転時におけるスキャン周期での毎回のループ処理ごとに、順次、1命令文ずつ、それぞれユーザプログラムM、バックアップユーザプログラムB1、バックアップユーザプログラムB2から読み出される、相対アドレスが共通の命令データであるものとする。
次に図3を説明する。先ずステップS21では、運転に使用しているユーザプログラム(本例ではユーザプログラムメモリ17に格納したユーザプログラムMとする)内の該当するアドレスの命令文のデータを読み出し〔データM〕とする。
次のステップS22では、運転に使用していない一つ目のバックアップユーザプログラム(本例ではシステムワークメモリ16に格納したバックアップユーザプログラムB1とする)内の前記〔データM〕と共通の相対アドレスの命令文のデータを読み出し〔データB1〕とする。
さらに次のステップS23では、運転に使用していない二つ目のバックアップユーザプログラム(本例ではユーザデータメモリ18に格納したバックアップユーザプログラムB2とする)の前記〔データM〕と共通の相対アドレスの命令文のデータを読み出し〔データB2〕とする。
次のステップS24(メモリ破損検出)では、〔データM〕と〔データB1〕を比較する。ここで両者が一致した場合(分岐「一致」)、さらにステップS25(メモリ破損検出)に進み〔データM〕と〔データB2〕を比較する。
このステップS25の比較で〔データM〕と〔データB2〕が一致した場合(分岐「一致」)、〔データM〕、〔データB1〕、〔データB1〕の3者のデータが一致したこととなり、データの破損なしとして図3の処理を抜ける。
他方、前記ステップS25の比較結果が不一致の場合(分岐「不一致」)、〔データB2〕に破損ありとして、次のステップS26(破損メモリ修復)で〔データB2〕のアドレスに〔データM〕を書き込んで〔データB2〕を修復し図3の処理を抜ける。なお、この〔データB2〕の修復は、以後も継続して図3の処理によるメモリの破損検出を実施できるようにするためである。
次に前記ステップS24の比較結果で〔データM〕と〔データB1〕が不一致の場合(分岐「不一致」)、さらにステップS27(メモリ破損検出)に進み〔データM〕と〔データB2〕を比較する。
このステップS27で〔データM〕と〔データB2〕が一致した場合(分岐「一致」)、〔データB1〕に破損ありとして、次のステップS28(破損メモリ修復)で〔データB1〕のアドレスに〔データM〕を書き込んで〔データB1〕を修復し図3の処理を抜ける。なお、この〔データB1〕の修復も、以後の図3の処理によるメモリの破損検出を実施可能にするためである。
他方、前記ステップS27の比較結果で〔データM〕と〔データB2〕が不一致の場合(分岐「不一致」)、さらにステップS29で〔データB1〕と〔データB2〕を比較する。ここで両者が一致した場合(分岐「一致」)、〔データM〕に破損ありとして、次のステップS30(破損メモリ修復)で〔データM〕のアドレスに〔データB1〕を書き込んで〔データM〕を修復する。
この修復によりユーザプログラムメモリ17のユーザプログラムMを引続きシーケンス制御の演算実行に使用できるはずであるが、同一RAM17上の一度破損したユーザプログラムMは修復箇所の〔データM〕以外にも今後の演算実行に使用する箇所で破損している可能性が考えられる。
そこで本実施例では安全のため、次のステップS31(未破損メモリへの切り替え)でシーケンス制御の演算実行に使用するユーザプログラムのアドレスを、破損のあったユーザプログラムMのアドレスからバックアップユーザプログラムB1のアドレスに切り替える(つまり、今までのバックアップユーザプログラムB1を今までのユーザプログラムMに置き換える)と共に、ステップS30の処理で破損が修復された今までのユーザプログラムMを今までのバックアップユーザプログラムB1に置き換えた形で図3の処理が継続できるようにし、図3の処理を抜ける。
なお、上記のアドレス変更方法は、本発明を適用するCPUの機能に合わせ適宜実現することができる。例えば8086系の汎用CPUのように、セグメントのようなべースアドレスの概念を持つものであれば、ベースアドレスを変更すれば良い。また、ベースアドレスの概念がないCPUの場合でも、ユーザプログラムの格納されているアドレス管理ファイルのデータを補正することで、アドレス変更を実施することができる。
ところで、前記ステップS29の〔データB1〕と〔データB2〕の比較で両者が不一致の場合(分岐「不一致」)、〔データM〕、〔データB1〕、〔データB2〕の3者のデータが不一致で、破損データは存在するがこのままではそれをを特定できないため、本実施例では次のステップS32(破損あり、特定不能)にて運転異常停止をするための状態変更要求をセットし、図3の処理を抜ける。
上述のように図3の処理では、ユーザプログラムおよびバックアップユーザプログラムについての〔データM〕、〔データB1〕、〔データB2〕の3者のデータを比較し、3者一致にて破損なしとし、2者一致の多数決判断で、一致しない1者のデータを破損と検出している。
なお、3者データの不一致の場合、前記ステップS32では運転の異常停止をすることとしたが、実際には、この3者のデータ内に破損していないデータが存在する可能性もある。そこで、運転異常停止をする前に、さらに従来のサムチェックを併用することとすれば、サム値が一致するユーザプログラム(またはバックアップユーザプログラム)を「破損なし」、サム値が一致しないユーザプログラム(またはバックアップユーザプログラム)を「破損あり」として正常なユーザプログラム(またはバックアップユーザプログラム)を選別することができ、PLC異常停止の確率をさらに減少させることができる。
なお、本実施例では2つのバックアップユーザプログラムをRAMからなるシステムワークメモリ16とユーザデータメモリ18にそれぞれ格納することとしたが、同じくRAMからなるユーザプログラムメモリ17にユーザプログラムと共にバックアップユーザプログラムを格納する方法も考えられる。
また、上述した図3のメモリ診断修復処理の実施例では、スキャン周期での本処理1回ごとにユーザプログラムおよびバックアップユーザプログラムの1命令文ずつを読み出して比較することとしているが、これに代わり、処理に時間がかかるものの、1回のメモリ診断修復処理でユーザプログラムおよびバックアップユーザプログラムの全命令文をいっぺんに読み出して比較する方法をとることもできる。
更に本実施例では、図3のメモリ診断修復処理の実行を、図2のCPUのスキャンEND処理内で実施しているが、定周期割込み処理などの他のタイミングで実行するようにしてもよい。
本発明の一実施例としてのPLCの要部の構成を示すブロック回路図 図1のPLCのCPUの全般処理の手順の実施例を示すフローチャート 図2のメモリ診断修復処理の詳細手順の実施例を示すフローチャート 図1に対応する従来のPLCの要部の構成例を示すブロック回路図 図4のPLCのCPUの全般処理の手順の例を示すフローチャート 図5のメモリ診断処理の詳細手順の例を示すフローチャート
符号の説明
10 CPUモジュール
11 CPU
13 ドライバ/レシーバ
14 PLC固有バスインタフェース
14a PLC固有バス
15 システムプログラムメモリ
15B 多数決メモリ診断・修復手段
16 システムワークメモリ
17 ユーザプログラムメモリ
18 ユーザデータメモリ
19 システムバス
30 ローダインタフェース
40 I/Oモジュール
100 プログラマブルコントローラ(PLC)
200 プログラミングローダ
300 通信線
M ユーザプログラム
B1、B2 バックアップユーザプログラム

Claims (3)

  1. スキャン周期ごとにシーケンス制御の演算処理のために読み出されるユーザプログラムおよび該ユーザプログラムと同一内容の複数のバックアップユーザプログラムが1個のメモリに共に、または複数個のメモリの各々に前記ユーザプログラムおよびバックアップユーザプログラムの各プログラムが少なくとも1または複数プログラム格納されてなるプログラマブルコントローラであって、
    前記スキャン周期ごとに前記ユーザプログラムおよび全てのバックアップユーザプログラムの互いに対応する領域のデータを読み出して比較し、このデータが互いに一致するプログラムの数が前記ユーザプログラムおよび全バックアップユーザプログラムの総数の過半数となるデータが正しいデータであるとして前記各プログラムの破損の有無を検出することを特徴とするプログラマブルコントローラ。
  2. 前記の検出によって破損有りとされたプログラムの該当データを前記の正しいデータで修復し、シーケンス制御を継続することを特徴とする請求項1に記載のプログラマブルコントローラ。
  3. 前記の検出によって破損有りとされたプログラムが前記ユーザプログラムであるときは、前記の検出によって破損無しとされたバックアップユーザプログラムの所定の1つを前記ユーザプログラムに置き換えて前記スキャン周期ごとの演算処理に利用し、シーケンス制御を継続することを特徴とする請求項2に記載のプログラマブルコントローラ。
JP2006271749A 2006-10-03 2006-10-03 プログラマブルコントローラ Active JP4867557B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006271749A JP4867557B2 (ja) 2006-10-03 2006-10-03 プログラマブルコントローラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006271749A JP4867557B2 (ja) 2006-10-03 2006-10-03 プログラマブルコントローラ

Publications (2)

Publication Number Publication Date
JP2008090656A true JP2008090656A (ja) 2008-04-17
JP4867557B2 JP4867557B2 (ja) 2012-02-01

Family

ID=39374721

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006271749A Active JP4867557B2 (ja) 2006-10-03 2006-10-03 プログラマブルコントローラ

Country Status (1)

Country Link
JP (1) JP4867557B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011221751A (ja) * 2010-04-08 2011-11-04 Hitachi Ltd 情報処理装置および情報処理方法
CN114428477A (zh) * 2021-12-07 2022-05-03 首钢京唐钢铁联合有限责任公司 可编程逻辑控制器plc及其数据恢复方法、装置和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61125652A (ja) * 1984-11-24 1986-06-13 Matsushita Electric Works Ltd 制御システム
JPH11161554A (ja) * 1997-11-25 1999-06-18 Nec Corp 記憶装置正常性確認装置および情報処理装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61125652A (ja) * 1984-11-24 1986-06-13 Matsushita Electric Works Ltd 制御システム
JPH11161554A (ja) * 1997-11-25 1999-06-18 Nec Corp 記憶装置正常性確認装置および情報処理装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011221751A (ja) * 2010-04-08 2011-11-04 Hitachi Ltd 情報処理装置および情報処理方法
CN114428477A (zh) * 2021-12-07 2022-05-03 首钢京唐钢铁联合有限责任公司 可编程逻辑控制器plc及其数据恢复方法、装置和存储介质

Also Published As

Publication number Publication date
JP4867557B2 (ja) 2012-02-01

Similar Documents

Publication Publication Date Title
CN101246443B (zh) 用于恢复存储器故障的方法和***
US7882388B2 (en) Dual independent non volatile memory systems
JP3961478B2 (ja) プログラマブルコントローラ用ユニット及びメモリ自動復旧方法
US7716524B2 (en) Restarting an errored object of a first class
JP5041290B2 (ja) プログラマブルコントローラおよびその異常時復旧方法
JP2003015900A (ja) 追走型多重化システム、及び追走により信頼性を高めるデータ処理方法
WO2019040287A1 (en) GUARANTEED A CORRECT PROGRAM SEQUENCE IN A DOUBLE PROCESSOR ARCHITECTURE
JP5620730B2 (ja) 2重系演算処理装置および2重系演算処理方法
JP2009116642A (ja) Pciバス障害リカバリ方法及びプログラム
CN112559059B (zh) 一种bios选项配置方法及相关装置
JP4867557B2 (ja) プログラマブルコントローラ
JP5012548B2 (ja) プログラマブルコントローラ
JP2013175118A (ja) 制御装置、及びそのメモリ故障検出方法、その自己診断方法
CN111273928A (zh) 一种自升级的bootloader设计方法
JP4484074B2 (ja) プログラマブルコントローラ用ユニット及びメモリ自動復旧方法
JP2001290710A (ja) データエラー検出装置
JP2007304972A (ja) マイクロプロセッサシステム
JP2005092695A (ja) 二重化コントローラ、その等値化モード決定方法
US20130007565A1 (en) Method of processing faults in a microcontroller
JP2010061258A (ja) デュプレックスプロセッサシステム及びプロセッサ二重化方法
JP2013065261A (ja) メモリ管理装置
US8108740B2 (en) Method for operating a memory device
JP2003140915A (ja) コンピュータ装置及びプログラムのダウンロード方法
KR100922409B1 (ko) 정보 처리 장치 및 메모리 이상 감시 방법
JPH05225077A (ja) Eccを保持したメモリ制御回路のハードエラー検出方式

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20080919

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20081215

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20090219

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090914

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110301

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110404

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20110422

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111031

R150 Certificate of patent or registration of utility model

Ref document number: 4867557

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141125

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250