JP2008090656A - Programmable controller - Google Patents
Programmable controller Download PDFInfo
- 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
Links
- 230000015654 memory Effects 0.000 claims abstract description 136
- 238000000034 method Methods 0.000 claims description 61
- 230000008569 process Effects 0.000 claims description 53
- 238000012545 processing Methods 0.000 claims description 23
- 238000001514 detection method Methods 0.000 claims description 10
- 238000003745 diagnosis Methods 0.000 abstract description 28
- 230000008439 repair process Effects 0.000 abstract description 17
- 230000006378 damage Effects 0.000 description 14
- 230000006870 function Effects 0.000 description 8
- 230000002159 abnormal effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 102220637010 Actin-like protein 7A_S10T_mutation Human genes 0.000 description 3
- 102220646157 Actin-like protein 7A_S12A_mutation Human genes 0.000 description 3
- 238000012508 change request Methods 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- JJWKPURADFRFRB-UHFFFAOYSA-N carbonyl sulfide Chemical compound O=C=S JJWKPURADFRFRB-UHFFFAOYSA-N 0.000 description 2
- 230000008570 general process Effects 0.000 description 2
- 230000009225 memory damage Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 1
- 238000002405 diagnostic procedure Methods 0.000 description 1
- 230000005672 electromagnetic field Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 238000004092 self-diagnosis Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Landscapes
- Programmable Controllers (AREA)
Abstract
Description
この発明は、シーケンス制御の運転中、演算実行するユーザプログラムの破損を検出してこれを自動的に修復し、制御運転を継続できる機能を持つプログラマブルコントローラ(以下、PLCとも略記する)に関する。
なお、以下各図において同一の符号は同一もしくは相当部分を示す。
The present invention relates to a programmable controller (hereinafter also abbreviated as “PLC”) having a function capable of detecting a break in a user program to be executed during sequence control operation, automatically repairing it, and continuing control operation.
In the following drawings, the same reference numerals denote the same or corresponding parts.
プログラマブルコントローラ(PLC)は、ユーザにより作成されて格納されたアプリケーションプログラムを演算実行してPLCに接続される制御対象機器を自動的にシーケンス制御する装置であり、FA(ファクトリーオートメーション)等に広く使用されている。
このPLCは、複数のモジュール、すなわち、電源供給源となる電源モジュール、PLC全体を統括制御するCPUモジュール、各種の制御対象機器の適所に取り付けたスイッチやセンサの信号を入力する入力モジュール、同じく制御対象機器のアクチュエータなどに制御出力を出す出力モジュール、通信ネットワークに接続するための通信モジュールなどの各種モジュールを適宜組み合わせて構成される。
A programmable controller (PLC) is a device that automatically executes sequence control of devices to be controlled connected to the PLC by executing and executing application programs created and stored by the user, and is widely used for factory automation (FA) Has been.
This PLC has a plurality of modules, that is, a power supply module that serves as a power supply source, a CPU module that performs overall control of the PLC, an input module that inputs signals from switches and sensors that are attached to various control target devices, and is also controlled. Various modules such as an output module for outputting a control output to an actuator of the target device and a communication module for connecting to a communication network are appropriately combined.
図4は従来のPLCの要部の構成例を示すブロック回路図である。同図において100はプログラマブルコントローラ(PLC)、200はユーザプログラム(ユーザアプリケーションプログラムともいう)の作成や転送用のツールとしてのプログラミングローダであり、このプログラミングローダ200は通信線300を介してPLC100のローダインタフェース30に接続されている。
FIG. 4 is a block circuit diagram showing a configuration example of a main part of a conventional PLC. In the figure, 100 is a programmable controller (PLC), 200 is a programming loader as a tool for creating and transferring a user program (also referred to as a user application program), and this
また、PLC100内において、10はCPUモジュール、40は図外の制御対象機器と接続される入出力モジュール(I/Oモジュールとも略記する)である。
CPUモジュール10は、内部のシステムバス19によって互いに接続された、以下の11、13〜18の各構成部からなる。
ここでCPU11は、システムプログラムメモリ15に記憶されたシステムプログラムを実行し、CPUモジュール10内の各構成部の動作制御を行うと共に、ユーザプログラムメモリ17に記憶されたユーザプログラムを実行して図外の制御対象機器のシーケンス制御を行う。このCPU11には通常、汎用のMPUあるいはこれに代わる専用IC(ASIC)が用いられている。
Further, in the
The
Here, the
ドライバ/レシーバ13はローダインタフェース30に接続され、通信線300を介しプログラミングローダ200とCPU11との間で送受信データを受け渡す役割を持つ。
PLC固有バスインタフェース14は、I/Oモジュール40に対してPLC固有バス14aを介し外部の制御対象機器の制御に関わる信号の入出力を行う。
システムプログラムを保持するシステムプログラムメモリ15には、通常、不揮発性メモリであるEPROMあるいはFLASHメモリが使用される。なお、サムチェック・メモリ診断手段15Aはこのメモリ15に格納されたシステムプログラムが保持する後述のメモリ診断用のソフトウェア手段である。
The driver /
The PLC
As the
システムワークメモリ16は、CPU11がシステムプログラムを実行する際に生ずるデータを一時記憶する役割を持ち、このメモリ16には、通常、RAMが使用される。
ユーザプログラムメモリ17は、プログラミングローダ200から受信したユーザプログラムを記憶する役割を持ち、このメモリ17には、通常、RAMが使用される。
なお、このメモリ17には、ローダ200からのユーザプログラムがマシンコードである命令オブジェクトコード、つまりこのユーザプログラムを高速に実行すべきCPU11が理解できるコードに変換されて格納されている。
The
The
The
ユーザデータメモリ18は、ユーザプログラムで使用するデータ、例えば制御対象機器との間で送受信する接点信号等の情報を記憶する役割を持ち、このメモリ18には、通常、RAMが使用される。
図5は従来のPLCのCPU11が実行する全般的なソフトウェア処理の例を示すフローチャートで、S1〜S13はそのステップ番号である。ここではステップS6のみがユーザプログラムの処理に相当し、これ以外のステップはシステムプログラムの処理に相当する。
The
FIG. 5 is a flowchart showing an example of general software processing executed by the
図5では、CPU11は、電源投入に基づきリセットされたのち、予め伝送用ICの設定などの初期化処理(ステップS1)、バスの短絡やメモリバックアップの異常などの有無を調べる自己診断処理(ステップS2)、メモリクリアやユーザプログラム実行のための設定などの各種システム処理(ステップS3)を順次行ったうえ、ステップS4以降のループ動作に入る。
In FIG. 5, after resetting upon power-on, the
ステップS4の状態判定分岐処理では、CPU11は現在の自己の状態が運転の正常な実行が可能な状態で有るか否かを判定し、それぞれの状態に応じたループ処理に分岐する。そして、運転の正常な実行が可能な状態と判定すれば「運転正常実行」の分岐に進み、ステップS5以降のシーケンス制御処理を実行する。
このシーケンス制御処理では、CPU11は、先ずI/Oモジュール40内の図外の入力モジュールで入力した制御対象機器からの入力信号をユーザデータメモリ18内のI/Oメモリ領域に取り込み(ステップS5、入力リフレッシュ)、次いでユーザプログラムメモリ17に格納されたユーザプログラム(シーケンスプログラム)を読み出し、上記制御対象機器からの最新の入力信号を用いて論理演算を行う(ステップS6、ユーザプログラム演算実行)。
In the state determination branch process of step S4, the
In this sequence control process, the
そして、その演算実行結果である制御出力信号をユーザデータメモリ18内のI/Oメモリ領域に書き込んだのち、I/Oモジュール40内の図外の出力モジュールに送出して制御対象機器側へ出力させ(ステップS7、出力リフレッシュ)、その後、後述のようないわゆるスキャンEND処理、即ちメモリ診断処理(ステップS10)、ローダ処理(ステップS11)、基準SUM値算出処理(ステップS12)、各種システム診断処理(ステップS13)を行う。そして、以上のステップS4〜S13の一連の処理をスキャン周期(シーケンス演算周期ともいう)ごとに繰り返し実行して制御対象機器を制御する。
Then, after writing the control output signal, which is the result of the calculation, to the I / O memory area in the
ところで、PLCが設置される工場内の環境としては、サーボモータ、インバータ、高圧電力装置など多種多様な装置がPLCに接続され、あるいはPLCの付近に配置されている。そのため、放射ノイズ、電源の瞬時停電、電磁界などにより、CPUモジュール内のメモリに格納されたデータの破壊が発生しやすくなっている。また、CPUモジュール内のメモリのデータ破壊の現象は、宇宙線によっても生じる。なお、前者の原因によるデータ破壊は、通常数ビット(複数バイト)単位で発生し、後者の宇宙線によるデータ破壊は、1ビット単位で発生することが多い。 By the way, as the environment in the factory where the PLC is installed, various devices such as a servo motor, an inverter, and a high-voltage power device are connected to the PLC or arranged near the PLC. Therefore, destruction of data stored in the memory in the CPU module is likely to occur due to radiation noise, instantaneous power failure of the power source, electromagnetic field, and the like. The phenomenon of data destruction of the memory in the CPU module is also caused by cosmic rays. Data destruction due to the former cause usually occurs in units of several bits (multiple bytes), and data destruction due to the latter cosmic rays often occurs in units of 1 bit.
当然のことながら、データ破壊が生じたユーザプログラムに基づいて制御すると正常動作しないので、CPU11は、運転中、この場合、スキャンEND処理内のメモリ診断処理(ステップS10)で、図6に示すようなメモリ診断サブルーチン処理によりユーザプログラムの破壊が発生していないかを確認している。
なお、スキャンEND処理内のローダ処理(ステップS11)では、プログラミングローダ200から新規の、あるいは変更されたユーザプログラムがダウンロードされた場合、このダウンロードされたユーザプログラムをユーザプログラムメモリ17に取り込んで従来のユーザプログラムを更新する。
As a matter of course, since it does not operate normally if it is controlled based on the user program in which data destruction has occurred, the
In the loader process (step S11) in the scan END process, when a new or changed user program is downloaded from the
同じくスキャンEND処理内の基準SUM値算出処理(ステップS12)では、上記の更新後のユーザプログラムの先頭から最終までの値を加算し、得られた値を基準サム値(なお、サムをSUMとも記す)としてシステムワークメモリ16内の所定領域に格納する。
また同じくスキャンEND処理内の各種システム診断処理(ステップS13)では、I/Oモジュール40のPLC固有バス14aからの外れチェックなどを行う。
Similarly, in the reference SUM value calculation process (step S12) in the scan END process, the values from the beginning to the end of the updated user program are added, and the obtained value is used as the reference sum value (note that the sum is also referred to as SUM). Stored in a predetermined area in the
Similarly, in various system diagnosis processes (step S13) in the scan END process, a check for disconnection of the I /
ここで、図5のスキャンEND処理内のメモリ診断処理(ステップS10)で行われる、詳細処理としての図6のメモリ診断サブルーチン処理を説明する。図6中、S41〜46はこの処理のステップ番号である。
なお、図4のシステムプログラムメモリ15内に示したサムチェック・メモリ診断手段15Aの機能は図5のメモリ診断処理(ステップS10)、つまり図6のメモリ診断サブルーチン処理と、図5の基準SUM値算出処理(ステップS12)に相当する。
Here, the memory diagnosis subroutine process of FIG. 6 as the detailed process performed in the memory diagnosis process (step S10) in the scan END process of FIG. 5 will be described. In FIG. 6, S41 to 46 are step numbers of this process.
The function of the sum check / memory diagnosis means 15A shown in the
図6のメモリ診断処理を要約すれば、RAM上にある診断対象のデータのSUM値(被診断SUM値という)を計算して予め格納してある基準SUM値と比較し、一致することで診断対象のデータに異常がないことを確認するというものである。
具体的には、実際の運転中(つまりスキャン周期ごとのシーケンス制御のループ処理中)、図5中のメモリ診断処理(ステップS10)において、CPU11は、ユーザプログラムメモリのRAM17上にあるユーザプログラムのSUM値としての被診断SUM値をスキャン周期の複数回分に分けて算出する(ステップS41)。
Summarizing the memory diagnosis process of FIG. 6, the SUM value (referred to as the diagnosis SUM value) of the data to be diagnosed on the RAM is calculated and compared with a reference SUM value stored in advance, and the diagnosis is made by matching. It is to confirm that there is no abnormality in the target data.
Specifically, during the actual operation (that is, during the sequence control loop process for each scan cycle), in the memory diagnosis process (step S10) in FIG. 5, the
そして最終データまでのSUM値算出に達していないと判別したスキャン周期では(ステップS42、分岐NO)、そのまま図6の処理を抜ける。
他方、このステップS42で最終データまでのSUM値算出を終えたと判別した場合は(分岐YES)、この被診断SUM値を前記のようにシステムワークメモリ16内の所定領域に格納した基準SUM値と比較する(ステップS43、44)。
Then, in the scan cycle in which it is determined that the SUM value calculation up to the final data has not been reached (step S42, branch NO), the processing of FIG.
On the other hand, if it is determined in step S42 that the calculation of the SUM value up to the final data has been completed (branch YES), the diagnosis SUM value is stored in the predetermined area in the
ここで、SUM値が一致した場合は(ステップS44、分岐「一致」)、再度、上記と同様にユーザプログラムメモリ17上のユーザプログラムのSUM値、つまり被診断SUM値の算出を繰り返すこととしてその準備を行って(ステップS46)、図6の処理を抜ける。
しかし、SUM値が一致しない場合は(ステップS44、分岐「不一致」)、何らかの理由でRAM17上のユーザプログラムが破損したと判断し、暴走・不正出力を防止するためPLCの運転を異常停止させる状態変更要求をセットし(ステップS45)、図6の処理を抜ける。
If the SUM values match (step S44, branch “match”), the calculation of the SUM value of the user program on the
However, if the SUM values do not match (step S44, branch “mismatch”), it is determined that the user program on the
このように運転異常停止の状態変更要求がセットされると、図5のループ処理の先頭ステップS4の状態判定分岐処理で「運転異常停止」へ分岐してステップS11に飛ぶこととなり、結果としてPLCによるシーケンス制御動作が停止する。
しかし、このようにPLCの運転を異常停止させると、制御しているシステム全体が停止してしまい工場の操業等に重大な影響が生じる可能性がある。そこで、システムを復旧動作させるため、保守員などによりプログラミングローダ等のツールをPLCに接続し、ユーザプログラムを再度転送してメモリの修正作業を実行する必要があるが、PLCは、一般に制御盤の奥に設置されているので、その接続は簡単ではなく、メモリの修復作業・システムの再起動までに多くの時間が必要となる。
When the abnormal operation stop state change request is set in this way, the state determination branching process in the first step S4 of the loop process of FIG. 5 branches to “abnormal operation stop” and jumps to step S11. As a result, the PLC The sequence control operation by stops.
However, if the operation of the PLC is abnormally stopped in this way, the entire controlled system is stopped, and there is a possibility that the factory operation or the like may be seriously affected. Therefore, in order to restore the system, it is necessary for maintenance personnel to connect a tool such as a programming loader to the PLC and transfer the user program again to execute the memory correction work. Since it is installed in the back, the connection is not easy, and it takes a lot of time to repair the memory and restart the system.
この問題を解決するために、特許文献1には、演算処理時に読み出されるユーザプログラムが格納されるユーザメモリと、ユーザプログラムと同一内容のデータが格納されたバックアップメモリとを設け、シーケンス制御のサイクリック動作中にユーザメモリとバックアップメモリのデータとの照合を行うことでユーザメモリ破損の検出を行い、検出したユーザメモリの異常箇所のデータをバックアップメモリの該当箇所のデータで修復し、システムを停止させることなくシーケンス制御を継続できるようにするPLCのメモリ自動復旧方法が開示されている。
しかしながら、特許文献1のメモリ自動復旧方法では、バックアップメモリのデータが安定したものであれば問題ないが現実には変化可能なものであり、メモリ破損の検出時、厳密にはユーザメモリのデータとバックアップメモリのデータとのいずれが真に正しいかが分からず、メモリ修復の信頼性に欠けるという問題がある。この問題は特にバックアップメモリが不揮発性メモリ(ROM、FLASHメモリ等)でなく揮発性メモリ(RAM)である場合、より大きなものとなる。
However, in the automatic memory recovery method of
そこで本発明の課題は、揮発性メモリ(RAM)をユーザプログラムのバックアップメモリとしたPLCであっても正しくユーザメモリの破損を修復でき、システムの停止を不要とするプログラマブルコントローラ(PLC)を提供することにある。 SUMMARY OF THE INVENTION Accordingly, an object of the present invention is to provide a programmable controller (PLC) that can correctly repair the damage of the user memory even when the PLC uses a volatile memory (RAM) as a backup memory for the user program, and does not require the system to be stopped. There is.
前記の課題を解決するために請求項1のプログラマブルコントローラは、
スキャン周期ごとにシーケンス制御の演算処理のために読み出されるユーザプログラム(M)および該ユーザプログラムと同一内容の複数のバックアップユーザプログラム(B1、B2など)が1個のメモリに共に、または複数個のメモリ(それぞれRAMからなるユーザプログラムメモリ17、システムワークメモリ16、ユーザデータメモリ18など)の各々に前記ユーザプログラムおよびバックアップユーザプログラムの各プログラムが少なくとも1または複数プログラム格納されてなるプログラマブルコントローラ(100)であって、
(多数決メモリ診断・修復手段15Bを介し)前記スキャン周期ごとに前記ユーザプログラムおよび全てのバックアップユーザプログラムの互いに対応する領域のデータを読み出して比較し、このデータが互いに一致するプログラムの数が前記ユーザプログラムおよび全バックアップユーザプログラムの総数の過半数となるデータが正しいデータであるとして前記各プログラムの破損の有無を検出するようにする。
In order to solve the above-mentioned problem, the programmable controller of
A user program (M) read for arithmetic processing of sequence control for each scan cycle and a plurality of backup user programs (B1, B2, etc.) having the same contents as the user program are stored in one memory or a plurality of Programmable controller (100) in which at least one or a plurality of programs of the user program and the backup user program are stored in each of the memories (
Data of the areas corresponding to each other of the user program and all backup user programs are read and compared at each scan cycle (via majority memory diagnosis / repair means 15B), and the number of programs whose data match each other is Whether or not each program is damaged is detected on the assumption that the data that is a majority of the total number of programs and all backup user programs is correct data.
また、請求項2のプログラマブルコントローラは、請求項1に記載のプログラマブルコントローラにおいて、前記の検出によって破損有りとされたプログラムの該当データを前記の正しいデータで修復し、シーケンス制御を継続するようにする。
また請求項3のプログラマブルコントローラは、請求項2に記載のプログラマブルコントローラにおいて、前記の検出によって破損有りとされたプログラムが前記ユーザプログラムであるときは、前記の検出によって破損無しとされたバックアップユーザプログラムの所定の1つを前記ユーザプログラムに置き換えて前記スキャン周期ごとの演算処理に利用し、シーケンス制御を継続するようにする。
Further, the programmable controller according to
The programmable controller according to
本発明の作用は次の如くである。即ち、PLC内にシーケンス制御の演算処理のために読み出されるユーザプログラムを保持するユーザメモリ(ユーザプログラムメモリ)のほかに、ユーザプログラムと同一内容のデータ(バックアップユーザプログラム)を保持する複数のバックアップメモリ(RAM)を設け、多数決判断処理によりメモリの破損を検出することにより、不揮発性メモリ(ROM、FLASHメモリ等)上にユーザプログラムのバックアップデータ(バックアップユーザプログラム)を保存していないPLCにおいてもユーザメモリの破損を確実に検出して、破損していない他のバックアップメモリのデータからこれを直ちに修復するか、またはCPUが制御演算実行のために読み込むプログラムメモリを破損していないバックアップメモリに切り替え、CPUの演算動作を停止することなく、システムの稼働を継続させるものである。 The operation of the present invention is as follows. That is, in addition to a user memory (user program memory) that holds a user program that is read for sequence control arithmetic processing in the PLC, a plurality of backup memories that hold data having the same contents as the user program (backup user program) (RAM), and by detecting damage to the memory by majority decision processing, the user can also use a PLC that does not store user program backup data (backup user program) on non-volatile memory (ROM, FLASH memory, etc.). Reliably detect memory corruption and repair this immediately from other undamaged backup memory data, or switch the program memory that the CPU reads to perform control operations to undamaged backup memory, Without stopping the PU calculation operation, but to continue the operation of the system.
本発明によれば、PLC内にシーケンス制御の演算処理のために読み出されるユーザプログラムを保持するユーザプログラムメモリ(RAM)のほかに、それぞれユーザプログラムと同一内容のバックアップユーザプログラムを保持する複数のバックアップメモリ(RAM)を設け、多数決判断処理によりメモリ(プログラム)の破損を検出するようにしたので、
不揮発性メモリ(ROM、FLASHメモリ等)上にバックアップユーザプログラムを保存していないPLCにおいてもユーザプログラムの破損を確実に検出して、破損していないバックアップユーザプログラムのデータからこれを直ちに修復したり、またはCPUが制御演算実行のために読み込むユーザプログラムを破損していないバックアップユーザプログラムに切り替えるようにして、PLCの制御運転動作を停止することなく、システムの稼働を継続させことができる。
According to the present invention, a plurality of backups each holding a backup user program having the same contents as the user program, in addition to a user program memory (RAM) holding a user program read for arithmetic processing of sequence control in the PLC. Since a memory (RAM) is provided and memory (program) damage is detected by majority decision processing,
Even in PLCs that do not store backup user programs on non-volatile memory (ROM, FLASH memory, etc.), it is possible to reliably detect user program corruption and repair it immediately from undamaged backup user program data. Alternatively, it is possible to continue the operation of the system without stopping the control operation of the PLC by switching the user program read by the CPU for executing the control operation to a backup user program that is not damaged.
なお、破損していたユーザプログラムはその破損検出箇所以降のプログラム部分にも破損を生じている可能性が高いが、上記のようにCPUが制御演算実行のために読み込むユーザプログラムを破損していないバックアップユーザプログラムに切り替えた場合、破損を生じている可能性が高いプログラムを演算に使用しないため、より安全にPLCの運転を継続することができる。 The user program that has been damaged is likely to have also been damaged in the program portion after the damage detection location, but the user program that the CPU reads for execution of the control operation as described above is not damaged. When switching to the backup user program, the program that has a high possibility of causing damage is not used for the calculation, so that the operation of the PLC can be continued more safely.
次に図1ないし図3を用いて本発明の実施の形態を説明する。
図1は本発明の一実施例としてのPLCの要部の構成を示すブロック回路図で図4に対応するものである。図1の図4に対する相違は、図1ではシステムプログラムメモリ15に付加されるメモリ診断に関わるソフトウェア手段が、図4のサムチェック・メモリ診断手段15Aから多数決メモリ診断・修復手段15Bに置き換わった点と、ユーザプログラムメモリ17に格納されるユーザプログラム(図1ではMとして示す)に対するバックアップ用の2つのプログラムであるバックアップ・ユーザプログラムB1およびB2の格納領域が、それぞれシステムワークメモリ16およびユーザデータメモリ18の各RAMに設けられている点である。
Next, an embodiment of the present invention will be described with reference to FIGS.
FIG. 1 is a block circuit diagram showing a configuration of a main part of a PLC according to an embodiment of the present invention, and corresponds to FIG. The difference between FIG. 1 and FIG. 4 is that the software means related to the memory diagnosis added to the
なお、図1における多数決メモリ診断・修復手段15B、並びにバックアップユーザプログラムB1およびB2に関わる機能を除く各部の機能は、図4におけるサムチェック・メモリ診断手段15Aに関わる機能を除く各部の機能と同様である。
また、図2は図1のCPU11が実行する全般的なソフトウェア処理の実施例を示すフローチャートで、図5に対応するものである。図2の図5に対する相違は、図5のメモリ診断処理(ステップS10)が図2では後述の図3のメモリ診断修復サブルーチン処理でその具体内容を示すメモリ診断修復処理(ステップS10A)に置き換わった点と、図5の基準SUM値算出処理(ステップS12)が、図2ではバックアップ・ユーザプログラム格納処理(ステップS12A)に置き換わった点である。
1 are the same as the functions of the respective parts except for the functions related to the sum check / memory diagnosis means 15A in FIG. 4 except for the functions related to the majority memory diagnosis / recovery means 15B and the backup user programs B1 and B2. It is.
FIG. 2 is a flowchart showing an embodiment of general software processing executed by the
そして、図1のシステムプログラムメモリ15内に示した多数決メモリ診断・修復手段15Bの機能は図2のメモリ診断修復処理(ステップS10A)とバックアップ・ユーザプログラム格納処理(ステップS12A)に相当する。
図2のバックアップ・ユーザプログラム格納処理(ステップS12A)では、図2のローダ処理(ステップS11)でユーザプログラムメモリ17にユーザプログラムMが新規あるいは従来のプログラムを更新してダウンロードされたとき、CPU11が、このユーザプログラムMと同一内容の2つのプログラムであるバックアップユーザプログラムB1およびB2をそれぞれシステムワークメモリ16およびユーザデータメモリ18に格納する。
The function of the majority memory diagnosing / restoring means 15B shown in the
In the backup user program storage process (step S12A) in FIG. 2, when the user program M is downloaded to the
なお、システムワークメモリ16、ユーザプログラムメモリ17、ユーザデータメモリ18等に使用しているRAMは、LSI技術の進歩により大容量化が進んでおり(逆に小容量のRAMが入手できなくなっている)、そのため特に小/中規模用のCPUモジュール10の製品仕様を実現するために必要な容量に対し、未使用領域が多く存在する状況にある。
Note that the RAM used for the
本発明では本来は別の目的で設けられているRAMにバックアップユーザプログラムも格納するためRAMのメモリ量を従来より多く使用することになるが、上記のように存在するRAMの未使用領域を利用できるため製品コストには影響を与えない。
図3は図2のメモリ診断修復処理(ステップS10A)の詳細処理としてのサブルーチン処理の実施例を示すフローチャートで、ステップS21〜S32はそのステップ番号である。なお本実施例では、図3の後述するステップS21、S22、S23に定義する〔データM〕、〔データB1〕、〔データB2〕は、図2の正常運転時におけるスキャン周期での毎回のループ処理ごとに、順次、1命令文ずつ、それぞれユーザプログラムM、バックアップユーザプログラムB1、バックアップユーザプログラムB2から読み出される、相対アドレスが共通の命令データであるものとする。
In the present invention, since the backup user program is also stored in the RAM originally provided for another purpose, the amount of RAM is used more than before, but the unused area of the existing RAM is used as described above. This will not affect product costs.
FIG. 3 is a flowchart showing an example of subroutine processing as detailed processing of the memory diagnostic repair processing (step S10A) of FIG. 2, and steps S21 to S32 are step numbers. In this embodiment, [data M], [data B1], and [data B2] defined in steps S21, S22, and S23 described later in FIG. For each process, it is assumed that one instruction sentence is sequentially read from the user program M, the backup user program B1, and the backup user program B2, respectively, and the relative addresses are common instruction data.
次に図3を説明する。先ずステップS21では、運転に使用しているユーザプログラム(本例ではユーザプログラムメモリ17に格納したユーザプログラムMとする)内の該当するアドレスの命令文のデータを読み出し〔データM〕とする。
次のステップS22では、運転に使用していない一つ目のバックアップユーザプログラム(本例ではシステムワークメモリ16に格納したバックアップユーザプログラムB1とする)内の前記〔データM〕と共通の相対アドレスの命令文のデータを読み出し〔データB1〕とする。
Next, FIG. 3 will be described. First, in step S21, the data of the command statement at the corresponding address in the user program used for driving (in this example, the user program M stored in the user program memory 17) is read out as [data M].
In the next step S22, a relative address common to the [data M] in the first backup user program (in this example, the backup user program B1 stored in the system work memory 16) that is not used for driving is used. The data of the command statement is read out and set as [data B1].
さらに次のステップS23では、運転に使用していない二つ目のバックアップユーザプログラム(本例ではユーザデータメモリ18に格納したバックアップユーザプログラムB2とする)の前記〔データM〕と共通の相対アドレスの命令文のデータを読み出し〔データB2〕とする。
次のステップS24(メモリ破損検出)では、〔データM〕と〔データB1〕を比較する。ここで両者が一致した場合(分岐「一致」)、さらにステップS25(メモリ破損検出)に進み〔データM〕と〔データB2〕を比較する。
In the next step S23, the same relative address as that of the [data M] of the second backup user program (in this example, the backup user program B2 stored in the user data memory 18) that is not used for driving is used. The data of the command statement is read out and set as [data B2].
In the next step S24 (memory corruption detection), [data M] and [data B1] are compared. If they match (branch “match”), the process proceeds to step S25 (memory corruption detection), and [data M] and [data B2] are compared.
このステップS25の比較で〔データM〕と〔データB2〕が一致した場合(分岐「一致」)、〔データM〕、〔データB1〕、〔データB1〕の3者のデータが一致したこととなり、データの破損なしとして図3の処理を抜ける。
他方、前記ステップS25の比較結果が不一致の場合(分岐「不一致」)、〔データB2〕に破損ありとして、次のステップS26(破損メモリ修復)で〔データB2〕のアドレスに〔データM〕を書き込んで〔データB2〕を修復し図3の処理を抜ける。なお、この〔データB2〕の修復は、以後も継続して図3の処理によるメモリの破損検出を実施できるようにするためである。
If [data M] and [data B2] match in the comparison in step S25 (branch “match”), it means that the data of [DATA M], [DATA B1], and [DATA B1] match. Then, the processing of FIG.
On the other hand, if the comparison result of the step S25 does not match (branch “mismatch”), the [data B2] is assumed to be damaged, and the next step S26 (corrupt memory repair) sets [data M2] to the address of [data B2]. The data is written to restore [data B2] and the process of FIG. 3 is exited. Note that this [data B2] is restored so that memory damage can be detected by the processing of FIG.
次に前記ステップS24の比較結果で〔データM〕と〔データB1〕が不一致の場合(分岐「不一致」)、さらにステップS27(メモリ破損検出)に進み〔データM〕と〔データB2〕を比較する。
このステップS27で〔データM〕と〔データB2〕が一致した場合(分岐「一致」)、〔データB1〕に破損ありとして、次のステップS28(破損メモリ修復)で〔データB1〕のアドレスに〔データM〕を書き込んで〔データB1〕を修復し図3の処理を抜ける。なお、この〔データB1〕の修復も、以後の図3の処理によるメモリの破損検出を実施可能にするためである。
Next, when [data M] and [data B1] do not match in the comparison result of step S24 (branch “mismatch”), the process proceeds to step S27 (memory corruption detection) and [data M] and [data B2] are compared. To do.
If [data M] and [data B2] match in this step S27 (branch “match”), it is determined that [data B1] is damaged, and the address of [data B1] is set in the next step S28 (corrupted memory repair). [Data M] is written, [Data B1] is restored, and the process of FIG. 3 is exited. Note that this [data B1] is also restored so that memory damage can be detected by the subsequent processing of FIG.
他方、前記ステップS27の比較結果で〔データM〕と〔データB2〕が不一致の場合(分岐「不一致」)、さらにステップS29で〔データB1〕と〔データB2〕を比較する。ここで両者が一致した場合(分岐「一致」)、〔データM〕に破損ありとして、次のステップS30(破損メモリ修復)で〔データM〕のアドレスに〔データB1〕を書き込んで〔データM〕を修復する。 On the other hand, if [data M] and [data B2] do not match in the comparison result of step S27 (branch “mismatch”), [data B1] and [data B2] are compared in step S29. If they match (branch “match”), it is assumed that there is damage in [data M], and [data B1] is written to the address of [data M] in the next step S30 (corrupt memory repair). ] Is repaired.
この修復によりユーザプログラムメモリ17のユーザプログラムMを引続きシーケンス制御の演算実行に使用できるはずであるが、同一RAM17上の一度破損したユーザプログラムMは修復箇所の〔データM〕以外にも今後の演算実行に使用する箇所で破損している可能性が考えられる。
そこで本実施例では安全のため、次のステップS31(未破損メモリへの切り替え)でシーケンス制御の演算実行に使用するユーザプログラムのアドレスを、破損のあったユーザプログラムMのアドレスからバックアップユーザプログラムB1のアドレスに切り替える(つまり、今までのバックアップユーザプログラムB1を今までのユーザプログラムMに置き換える)と共に、ステップS30の処理で破損が修復された今までのユーザプログラムMを今までのバックアップユーザプログラムB1に置き換えた形で図3の処理が継続できるようにし、図3の処理を抜ける。
By this restoration, the user program M in the
Therefore, for the sake of safety in this embodiment, the address of the user program used for execution of the sequence control operation in the next step S31 (switch to the uncorrupted memory) is changed from the address of the damaged user program M to the backup user program B1. (That is, the previous backup user program B1 is replaced with the previous user program M), and the previous user program M whose damage has been repaired in the process of step S30 is replaced with the previous backup user program B1. The processing of FIG. 3 can be continued in the form replaced with and the processing of FIG. 3 is exited.
なお、上記のアドレス変更方法は、本発明を適用するCPUの機能に合わせ適宜実現することができる。例えば8086系の汎用CPUのように、セグメントのようなべースアドレスの概念を持つものであれば、ベースアドレスを変更すれば良い。また、ベースアドレスの概念がないCPUの場合でも、ユーザプログラムの格納されているアドレス管理ファイルのデータを補正することで、アドレス変更を実施することができる。 Note that the above address changing method can be appropriately realized according to the function of the CPU to which the present invention is applied. For example, a base address may be changed if it has a concept of a base address such as a segment such as an 8086 general-purpose CPU. Even in the case of a CPU without the concept of base address, it is possible to change the address by correcting the data in the address management file in which the user program is stored.
ところで、前記ステップS29の〔データB1〕と〔データB2〕の比較で両者が不一致の場合(分岐「不一致」)、〔データM〕、〔データB1〕、〔データB2〕の3者のデータが不一致で、破損データは存在するがこのままではそれをを特定できないため、本実施例では次のステップS32(破損あり、特定不能)にて運転異常停止をするための状態変更要求をセットし、図3の処理を抜ける。
By the way, if the comparison between [data B1] and [data B2] in step S29 does not match (branch “mismatch”), the data of the three data [data M], [data B1], and [data B2] are Inconsistent and damaged data exists but cannot be identified as it is, so in this embodiment, a state change request is set to stop operation abnormally in the next step S32 (damaged and cannot be specified).
上述のように図3の処理では、ユーザプログラムおよびバックアップユーザプログラムについての〔データM〕、〔データB1〕、〔データB2〕の3者のデータを比較し、3者一致にて破損なしとし、2者一致の多数決判断で、一致しない1者のデータを破損と検出している。
なお、3者データの不一致の場合、前記ステップS32では運転の異常停止をすることとしたが、実際には、この3者のデータ内に破損していないデータが存在する可能性もある。そこで、運転異常停止をする前に、さらに従来のサムチェックを併用することとすれば、サム値が一致するユーザプログラム(またはバックアップユーザプログラム)を「破損なし」、サム値が一致しないユーザプログラム(またはバックアップユーザプログラム)を「破損あり」として正常なユーザプログラム(またはバックアップユーザプログラム)を選別することができ、PLC異常停止の確率をさらに減少させることができる。
As described above, in the process of FIG. 3, the three data of [data M], [data B1], and [data B2] for the user program and the backup user program are compared, and no damage is found by matching the three parties. In the majority decision based on the coincidence of the two parties, the data of the unmatched one is detected as being damaged.
In the case where the three-party data does not match, the operation is stopped abnormally in step S32. However, in fact, there is a possibility that there is data that is not damaged in the three-party data. Therefore, if the conventional sum check is further used before the abnormal operation stop, the user program (or backup user program) with the same sum value is “no damage”, and the user program with the sum value does not match ( Or, a normal user program (or backup user program) can be selected as “damaged” as the backup user program), and the probability of PLC abnormal stop can be further reduced.
なお、本実施例では2つのバックアップユーザプログラムをRAMからなるシステムワークメモリ16とユーザデータメモリ18にそれぞれ格納することとしたが、同じくRAMからなるユーザプログラムメモリ17にユーザプログラムと共にバックアップユーザプログラムを格納する方法も考えられる。
また、上述した図3のメモリ診断修復処理の実施例では、スキャン周期での本処理1回ごとにユーザプログラムおよびバックアップユーザプログラムの1命令文ずつを読み出して比較することとしているが、これに代わり、処理に時間がかかるものの、1回のメモリ診断修復処理でユーザプログラムおよびバックアップユーザプログラムの全命令文をいっぺんに読み出して比較する方法をとることもできる。
In this embodiment, the two backup user programs are stored in the
In the above-described embodiment of the memory diagnosis / restoration process of FIG. 3, one instruction sentence of the user program and the backup user program is read and compared every time this process is performed in the scan cycle. Although the process takes time, it is possible to take a method of reading and comparing all the command statements of the user program and the backup user program all at once in a single memory diagnosis and repair process.
更に本実施例では、図3のメモリ診断修復処理の実行を、図2のCPUのスキャンEND処理内で実施しているが、定周期割込み処理などの他のタイミングで実行するようにしてもよい。 Further, in the present embodiment, the execution of the memory diagnostic repair process of FIG. 3 is performed in the scan END process of the CPU of FIG. 2, but it may be executed at other timings such as a fixed-cycle interrupt process. .
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 バックアップユーザプログラム
10
DESCRIPTION OF
200 Programming loader 300 Communication line M User program B1, B2 Backup user program
Claims (3)
前記スキャン周期ごとに前記ユーザプログラムおよび全てのバックアップユーザプログラムの互いに対応する領域のデータを読み出して比較し、このデータが互いに一致するプログラムの数が前記ユーザプログラムおよび全バックアップユーザプログラムの総数の過半数となるデータが正しいデータであるとして前記各プログラムの破損の有無を検出することを特徴とするプログラマブルコントローラ。 A user program read for calculation processing of sequence control every scan cycle and a plurality of backup user programs having the same contents as the user program are stored in one memory or in each of a plurality of memories. A programmable controller in which each program of a user program is stored at least one or more programs,
Data of areas corresponding to each other of the user program and all backup user programs is read and compared every scan cycle, and the number of programs whose data match each other is a majority of the total number of the user programs and all backup user programs. A programmable controller for detecting whether or not each of the programs is damaged by assuming that the data is correct data.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006271749A JP4867557B2 (en) | 2006-10-03 | 2006-10-03 | Programmable controller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006271749A JP4867557B2 (en) | 2006-10-03 | 2006-10-03 | Programmable controller |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008090656A true JP2008090656A (en) | 2008-04-17 |
JP4867557B2 JP4867557B2 (en) | 2012-02-01 |
Family
ID=39374721
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006271749A Active JP4867557B2 (en) | 2006-10-03 | 2006-10-03 | Programmable controller |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4867557B2 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011221751A (en) * | 2010-04-08 | 2011-11-04 | Hitachi Ltd | Information processor and information processing method |
CN114428477A (en) * | 2021-12-07 | 2022-05-03 | 首钢京唐钢铁联合有限责任公司 | Programmable Logic Controller (PLC), data recovery method and device thereof and storage medium |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61125652A (en) * | 1984-11-24 | 1986-06-13 | Matsushita Electric Works Ltd | Control system |
JPH11161554A (en) * | 1997-11-25 | 1999-06-18 | Nec Corp | Memory device normality confirmation device and information processor |
-
2006
- 2006-10-03 JP JP2006271749A patent/JP4867557B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61125652A (en) * | 1984-11-24 | 1986-06-13 | Matsushita Electric Works Ltd | Control system |
JPH11161554A (en) * | 1997-11-25 | 1999-06-18 | Nec Corp | Memory device normality confirmation device and information processor |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011221751A (en) * | 2010-04-08 | 2011-11-04 | Hitachi Ltd | Information processor and information processing method |
CN114428477A (en) * | 2021-12-07 | 2022-05-03 | 首钢京唐钢铁联合有限责任公司 | Programmable Logic Controller (PLC), data recovery method and device thereof and storage medium |
Also Published As
Publication number | Publication date |
---|---|
JP4867557B2 (en) | 2012-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101246443B (en) | Method and system for repairing memory failures | |
US7882388B2 (en) | Dual independent non volatile memory systems | |
JP3961478B2 (en) | Programmable controller unit and automatic memory recovery method | |
US7716524B2 (en) | Restarting an errored object of a first class | |
JP5041290B2 (en) | PROGRAMMABLE CONTROLLER AND ITS ERROR RECOVERY METHOD | |
JP2003015900A (en) | Follow-up type multiplex system and data processing method capable of improving reliability by follow-up | |
JP2009116642A (en) | Method and program for recovering from pci bus fault | |
EP3673373A1 (en) | Ensuring a correct program sequence in a dual-processor architecture | |
JP5620730B2 (en) | Dual system arithmetic processing apparatus and dual system arithmetic processing method | |
JP2013175118A (en) | Control device, memory failure detection method thereof and self-diagnostic method thereof | |
CN112559059B (en) | BIOS (basic input output System) option configuration method and related device | |
JP4867557B2 (en) | Programmable controller | |
JP5012548B2 (en) | Programmable controller | |
JP4484074B2 (en) | Programmable controller unit and automatic memory recovery method | |
CN111273928A (en) | Self-upgrading bootloader design method | |
JP2001290710A (en) | Device for detecting data error | |
JP2007304972A (en) | Microprocessor system | |
JP2005092695A (en) | Duplication controller, and method for determining equalization mode thereof | |
US20130007565A1 (en) | Method of processing faults in a microcontroller | |
JP2010061258A (en) | Duplex processor system and processor duplex method | |
JP2013065261A (en) | Memory management device | |
US8108740B2 (en) | Method for operating a memory device | |
JP2003140915A (en) | Computer device, and download method of program | |
KR100922409B1 (en) | Information processing device and memory anomaly monitoring method | |
JPH05225077A (en) | Hard error detection system for memory control circuit holding 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 |