特許第6269228号(P6269228)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 株式会社ジェイテクトの特許一覧

特許6269228プログラマブルロジックコントローラのRAM検査方法及びプログラマブルロジックコントローラ
<>
  • 特許6269228-プログラマブルロジックコントローラのRAM検査方法及びプログラマブルロジックコントローラ 図000002
  • 特許6269228-プログラマブルロジックコントローラのRAM検査方法及びプログラマブルロジックコントローラ 図000003
  • 特許6269228-プログラマブルロジックコントローラのRAM検査方法及びプログラマブルロジックコントローラ 図000004
  • 特許6269228-プログラマブルロジックコントローラのRAM検査方法及びプログラマブルロジックコントローラ 図000005
  • 特許6269228-プログラマブルロジックコントローラのRAM検査方法及びプログラマブルロジックコントローラ 図000006
  • 特許6269228-プログラマブルロジックコントローラのRAM検査方法及びプログラマブルロジックコントローラ 図000007
  • 特許6269228-プログラマブルロジックコントローラのRAM検査方法及びプログラマブルロジックコントローラ 図000008
  • 特許6269228-プログラマブルロジックコントローラのRAM検査方法及びプログラマブルロジックコントローラ 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6269228
(24)【登録日】2018年1月12日
(45)【発行日】2018年1月31日
(54)【発明の名称】プログラマブルロジックコントローラのRAM検査方法及びプログラマブルロジックコントローラ
(51)【国際特許分類】
   G06F 12/16 20060101AFI20180122BHJP
   G11C 29/12 20060101ALI20180122BHJP
   G11C 29/10 20060101ALI20180122BHJP
   G05B 19/048 20060101ALN20180122BHJP
【FI】
   G06F12/16 310H
   G11C29/00 671B
   G11C29/00 657B
   !G05B19/048
【請求項の数】3
【全頁数】15
(21)【出願番号】特願2014-61861(P2014-61861)
(22)【出願日】2014年3月25日
(65)【公開番号】特開2015-184992(P2015-184992A)
(43)【公開日】2015年10月22日
【審査請求日】2017年2月6日
(73)【特許権者】
【識別番号】000001247
【氏名又は名称】株式会社ジェイテクト
(74)【代理人】
【識別番号】110000394
【氏名又は名称】特許業務法人岡田国際特許事務所
(72)【発明者】
【氏名】池上 健一
【審査官】 後藤 彰
(56)【参考文献】
【文献】 国際公開第2012/111135(WO,A1)
【文献】 特開平03−001400(JP,A)
【文献】 特開2008−016156(JP,A)
【文献】 特開2006−040122(JP,A)
【文献】 特開昭57−203298(JP,A)
【文献】 米国特許第05377148(US,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/16
G11C 29/12
(57)【特許請求の範囲】
【請求項1】
プログラマブルロジックコントローラのRAM検査方法であって、
制御手段を用いて、RAMの検査対象となる領域であるRAM検査領域が複数に分割されたブロックの中から抽出した2つのブロックを組合せた組合せブロック内の各RAMに対して、所定値を書き込んだ後、当該RAMから読み出した値が書き込んだ値と一致するか否かを順番に検査する、書き込み読み出しステップ、を有し、
前記書き込み読み出しステップを、分割した複数の前記ブロックの中から2つのブロックを抽出する全ての組合せに対して実行し、
前記書き込み読み出しステップを実行する際、前記組合せブロック内の各RAMに対してRAMの昇順に前記検査を実行するとともに書き込み値を昇順にして前記検査を実行し、前記組合せブロック内の各RAMに対してRAMの昇順に前記検査を実行するとともに書き込み値を降順にして前記検査を実行する、
プログラマブルロジックコントローラのRAM検査方法。
【請求項2】
請求項1に記載のプログラマブルロジックコントローラのRAM検査方法であって、
前記RAMの領域には、前記RAM検査領域とは異なる領域であるRAM一時退避領域があり、
前記RAM検査領域は、プログラマブルロジックコントローラのRAM検査方法による検査の前に記憶していた値を前記RAM検査方法による検査の後にも維持しておく必要があり、
前記ブロック内のRAMの個数は、前記RAM一時退避領域のRAMの個数の1/2以下に設定されており、
前記書き込み読み出しステップを実行する際、抽出した前記組合せブロック内の各RAMの値を前記一時退避領域に記憶した後に前記書き込み読み出しステップを実行し、前記書き込み読み出しステップを実行した後に前記一時退避領域に記憶した値を前記組合せブロック内の各RAMに書き戻す、
プログラマブルロジックコントローラのRAM検査方法。
【請求項3】
請求項1または2に記載のプログラマブルロジックコントローラのRAM検査方法を用いて前記RAM検査領域のRAMの検査を行うRAM検査プログラムが搭載された、
プログラマブルロジックコントローラ。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラマブルロジックコントローラのRAM検査方法及びプログラマブルロジックコントローラに関する。
【背景技術】
【0002】
プログラマブルロジックコントローラ(Programmable Logic Controller、以下、PLCと記載する)は、工場の自動機械の制御等に使用されている。PLCは、小型のコンピュータであり、プログラムで動作する中央処理装置(以下、CPUと記載する)を備え、プログラムの設計にはラダー回路が利用され、用途に合わせたシーケンスプログラムに適宜書き換えられて利用されている。そしてPLCには種々の入力機器(スイッチ、センサ等)からの導通状態に関する信号(ONまたはOFFの情報)が入力され、PLCは、種々の入力機器を所望する形態に組み合わせた(直列または並列に組み合わせた)シーケンスプログラムを用いて、出力機器(リレー、モータ等)を制御(ONまたはOFF信号を出力等)している。
【0003】
また工場等で使用されるPLCは、所定の安全規格(例えばIEC規格)を満足する必要があり、当該安全規格の中の1つに、CPUが利用するRAMに関する安全規格がある。当該RAMに関する安全規格を満足するための検査方法には、種々の方法が考えられ、例えばGalpatという手法を用いてRAMの検査を行うことで、RAMに関する安全規格を満足することができる。しかし、Galpatの手法を用いてRAMの検査を行うと、非常に長い時間(例えば2〜3時間程度)を必要としてしまい、異常の検知に時間がかかってしまうので、好ましくない。
【0004】
特許文献1では、用途に応じて変更されるシーケンス制御を行うためのPLCの応用プログラムの記憶領域(ROMの領域)を検査する方法として、予め検査対象領域のプログラムコードを合計したチェックサム(検査基準値)をROMに記憶している。検査を実行する際は、検査対象領域のROMから読み出した値を合計し、ROMに記憶されているチェックサムと一致するか否かを判定している。
【0005】
また、特許文献2では、PLCの検査対象のRAMを複数に分割しておき、電源が1回投入される毎に、1つの検査単位を対象として検査し、電源が切断され、再度、電源が投入されると、前回の電源の切断前に完了していた検査単位の次の検査単位から検査を開始している。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開平8−87429号公報
【特許文献2】特開2006−40122号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
特許文献1に記載の検査方法は、ROMに記憶されたプログラムコードの検査を行うものであり、随時、値を書き換え可能なRAMの検査を行うものではなく、RAMの検査に適用できるものではない。
【0008】
また特許文献2に記載の検査方法は、電源が投入されたときに検査対象となるRAM領域の全てを1度に検査しているのでなく、電源の投入毎に、少しずつ検査を行い、N回目の電源投入がされたときに、ようやく検査対象のRAM領域の全体の検査が完了することになるので、あまり好ましくない。
【0009】
本発明は、このような点に鑑みて創案されたものであり、検査対象となるRAM検査領域内の全てのRAMの検査を数分程度で実施することが可能であり、かつ所定の安全規格を適切に満足することができる、プログラマブルロジックコントローラのRAM検査方法及びプログラマブルロジックコントローラを提供することを課題とする。
【課題を解決するための手段】
【0010】
上記課題を解決するため、本発明に係るプログラマブルロジックコントローラのRAM検査方法及びプログラマブルロジックコントローラは次の手段をとる。本発明の第1の発明は、プログラマブルロジックコントローラのRAM検査方法である。そして、制御手段を用いて、RAMの検査対象となる領域であるRAM検査領域が複数に分割されたブロックの中から抽出した2つのブロックを組合せた組合せブロック内の各RAMに対して、所定値を書き込んだ後、当該RAMから読み出した値が書き込んだ値と一致するか否かを順番に検査する、書き込み読み出しステップ、を有し、前記書き込み読み出しステップを、分割した複数の前記ブロックの中から2つのブロックを抽出する全ての組合せに対して実行する、プログラマブルロジックコントローラのRAM検査方法である。
【0011】
次に、本発明の第2の発明は、上記第1の発明に係るプログラマブルロジックコントローラのRAM検査方法であって、前記RAMの領域には、前記RAM検査領域とは異なる領域であるRAM一時退避領域があり、前記RAM検査領域は、プログラマブルロジックコントローラのRAM検査方法による検査の前に記憶していた値を前記RAM検査方法による検査の後にも維持しておく必要がある。そして、前記ブロック内のRAMの個数は、前記RAM一時退避領域のRAMの個数の1/2以下に設定されており、前記書き込み読み出しステップを実行する際、抽出した前記組合せブロック内の各RAMの値を前記一時退避領域に記憶した後に前記書き込み読み出しステップを実行し、前記書き込み読み出しステップを実行した後に前記一時退避領域に記憶した値を前記組合せブロック内の各RAMに書き戻す、プログラマブルロジックコントローラのRAM検査方法である。
【0012】
次に、本発明の第3の発明は、上記第1の発明または第2の発明に係るプログラマブルロジックコントローラのRAM検査方法を用いて前記RAM検査領域のRAMの検査を行うRAM検査プログラムが搭載された、プログラマブルロジックコントローラである。
【発明の効果】
【0013】
第1の発明によれば、RAM検査領域を分割した複数のブロックの中から2つのブロックを抽出する全ての組合せに対して、書き込み読み出しステップを実行することで、適切に所定の安全規格(IEC規格等)を満足することができるとともに、RAMの検査をより短時間に行うことができる。
【0014】
第2の発明によれば、複数に分割する各ブロックのサイズを、適切なサイズにすることが可能であり、RAM検査領域のRAMの値を、RAM検査後であっても、RAM検査前の値を適切に保持させておくことができる。
【0015】
第3の発明によれば、適切なRAMの検査を、より短時間に行うことができる、プログラマブルロジックコントローラを実現することができる。
【図面の簡単な説明】
【0016】
図1】本発明のPLCを構成する制御ユニットと、入力ユニットと、出力ユニットの外観の例を説明する斜視図である。
図2】制御ユニットと、入力ユニットと、出力ユニットにて構成されたPLCのブロック構成及び接続の例を説明する図である。
図3】PLCのCPUによるRAM検査の処理手順を説明するフローチャートである。
図4図3に示すフローチャートにおける「RAM書き込み・読み出し(SB100)」の処理の詳細を説明するフローチャートである。
図5図3に示すフローチャートにおける「RAM書き込み・読み出し(SB100)」の処理の詳細を説明するフローチャートである。
図6図3に示すフローチャートにおける「RAM書き込み・読み出し(SB100)」の処理の詳細を説明するフローチャートである。
図7図3に示すフローチャートにおける「RAM書き込み・読み出し(SB100)」の処理の詳細を説明するフローチャートである。
図8】検査対象となるRAM検査領域等の例を説明する図である。
【発明を実施するための形態】
【0017】
以下に本発明を実施するための形態を図面を用いて説明する。
●[PLC1の外観(図1)]
図1に示すように、PLC1は、制御ユニット10、入力ユニット20、出力ユニット30にて構成されている。また入力ユニット20及び出力ユニット30は、入出力の数に応じて適宜増設される。入力ユニット20内には制御ユニット10と接続するためのコネクタ22を備えた入力ボード21が収容されており、複数の入力機器(スイッチ、センサ等)からの配線が接続される入力端子25が設けられている。出力ユニット30内には制御ユニット10と接続するためのコネクタ33を備えた出力ボード31が収容されており、複数の出力機器(リレー、モータ等)への配線が接続される出力端子35が設けられている。制御ユニット10内には入力ユニット20と接続するためのコネクタ12、出力ユニット30と接続するためのコネクタ13、を備えた制御ボード11が収容されており、パソコン等の端末装置を接続可能なコネクタ15や、他のPLCと接続するためのコネクタ16等が設けられている。
【0018】
●[PLC1のブロック構成及び接続例(図2)]
次に図2を用いてPLC1のブロック構成及び接続の例について説明する。入力ユニット20の入力端子25には、複数の入力機器(スイッチ40a、センサ40b・・入力手段40n等)からの配線が接続され、複数の入力機器の導通状態に関する信号(ONまたはOFFの情報等)が入力される。入力された導通状態に関する信号は、インターフェース21a(以下、インターフェースをI/Fと記載する)及びコネクタ22を介して制御ユニット10に伝送される。
【0019】
制御ユニット10は、CPU11a(制御手段に相当)を中心に構成され、RAM11b、ROM11cが設けられている。ROM11cには、EEPROM、FlashROM等の書替え可能なROMが用いられ、任意の入力機器を直列または並列に組み合わせて構成したシーケンスプログラム等が記憶されている。ユーザは端末装置50を用いて、ラダー回路等を用いてシーケンスプログラムを作成可能であり、作成したシーケンスプログラムを制御ユニット10に記憶させる(書き込む)ことが可能である。このシーケンスプログラムには、後述するRAM検査方法を実現するRAM検査プログラムも実装されている。なお、ROM11cには、I/F11gを介して端末装置50、他のPLC60等と通信を行うプログラム等も格納されている。CPU11aは、ROM11cに記憶されているシーケンスプログラムと、コネクタ12及びI/F11dを介して入力ユニット20から入力される各入力機器からの導通状態に関する信号とに基づいた演算結果を、I/F11f及びコネクタ13を介して出力ユニット30に出力する。
【0020】
出力ユニット30の出力端子35には、複数の出力機器(モータ42a、リレー42b・・出力手段42n等)への配線が接続される。そして、シーケンスプログラムと各入力機器の導通状態に基づいて制御ユニット10にて求めた演算結果を、コネクタ33及びI/F31aを介して出力端子35に接続された出力機器に出力する。
【0021】
●[RAM検査プログラムの処理手順(図3)]
次に図3を用いて、図2に示すPLC1の制御ユニット10のCPU11a(制御手段に相当)によるRAM11bの検査の処理手順について説明する。図3に示す処理は、例えば、制御ユニット10が通常の制御(メイン処理あるいは通常処理と呼ばれる機械の制御処理)の実行中に、割り込み等にて起動される。また、起動のタイミングは特に限定しない。なお、本実施の形態にて説明するRAM検査方法の処理手順は、March Cという検査方法に基づいた処理手順としている。また、RAM検査領域は、スタック領域や通信用領域や周辺装置用領域等の特殊な使用領域を除いた残りの全ての領域としている。
【0022】
ステップS10にてCPU11aは、RAMの検査対象となる領域であるRAM検査領域と、RAM一時退避領域と、を確認し、ステップS15に進む。なお、RAM検査領域の先頭のRAMのアドレス及び最終のRAMのアドレスや、RAM一時退避領域の先頭のRAMのアドレス及び最終のRAMのアドレス等は、ROM11cのプログラム領域のいずれかの位置に予め記憶されている。例えば図8に示す例では、RAM検査領域はアドレス0x00〜0xBFであり、RAM一時退避領域はアドレス0xC0〜0xFFである例を示している。これらのアドレスがROM11cに記憶されており、CPU11aは、これらのアドレスを読み出して、RAM検査領域、RAM一時退避領域を確認する。また、RAM検査領域の各RAMの値は、当該RAM検査プログラムを実行する前に記憶していた値を、RAM検査プログラムの実行後にも維持(保持)しておく必要があるものとする。なお、RAM一時退避領域は、例えばスタック領域である。また図8の例ではRAM検査領域が連続したアドレスの領域である例を示しているが、、RAM検査領域は、連続したアドレスの領域に限定されず、複数の非連続の領域であってもよい。
【0023】
ステップS15にてCPU11aは、RAM検査領域を複数のブロックに分割してステップS20に進む。複数のブロックに分割する際、CPU11aは、各ブロック内のRAMの個数が、RAM一時退避領域のRAMの個数の1/2以下となるように分割する。例えば図8の例の場合、RAM一時退避領域のRAMは0xC0〜0xFFの64個であるので、各ブロックのRAMの個数が64(個)*1/2=32(個)以下となるように分割する。なお、分割するブロックの数ができるだけ少ないほうが検査時間を短くすることができるので、図8の例では、各ブロックのRAMの個数が32個となるように分割しており、RAM検査領域を第1ブロック〜第6ブロックに分割した例を示している。なお、予めRAM検査領域を複数のブロックに分割しておき、ステップS10とステップS15を省略するようにしてもよい。
【0024】
ステップS20にてCPU11aは、分割したブロックの中から抽出した2つのブロックを組合せた組合せブロック(例えば、第1ブロックと第2ブロックの組合せ、第3ブロックと第4ブロックの組合せ等)において、最初に検査するべき(m、n)の組合せブロックを抽出してステップS35に進む。例えば第1ブロックと第2ブロックの組合せを抽出した場合では(m、n)=(1、2)であり、第3ブロックと第4ブロックの組合せを抽出した場合では(m、n)=(3、4)であることを示している。例えばこの場合、最初に検査するべき組合せブロックは、(1、2)の組合せブロックである。以降の説明において、「(m、n)」は、第mブロックと第nブロックの組合せ(ただし、m<n)を示す。
【0025】
ステップS35にてCPU11aは、抽出した(m、n)の組合せブロック内の各RAMの値を、RAM一時退避領域の各RAMにコピー(退避)してステップS40に進む。例えば(m、n)=(1、2)の場合では、図8に示す第1ブロックの各RAM(アドレス0x00〜0x1F)の値を、RAM一時退避領域の各RAM(アドレス0xC0〜0xDF)にコピーして、第2ブロックの各RAM(アドレス0x20〜0x3F)の値を、RAM一時退避領域の各RAM(アドレス0xE0〜0xFF)にコピーする。
【0026】
そしてステップS40にてCPU11aは、図4図7に示すサブルーチンSB100の処理を実行し、サブルーチンSB100からリターンするとステップS50へ進む。なお、サブルーチンSB100では、後述するように、抽出した(m、n)の組合せブロック内の各RAMに対して、所定値を書き込んだ後、当該RAMから読み出した値が、書き込んだ値と一致するか否かを順番に検査する。このサブルーチンSB100の処理は、書き込み読み出しステップに相当しており、詳細については後述する。
【0027】
ステップS50にてCPU11aは、サブルーチンSB100の処理の結果、RAMが正常であるか否かを判定し、RAMが正常の場合(Yes)はステップS60に進み、RAMが正常でない場合(No)はステップS80に進む。なおステップS80では、CPU11aは、RAMに異常が発見されたことを報知して(例えば異常ランプを点灯等して)動作を停止する。
【0028】
ステップS60に進んだ場合、CPU11aは、RAM一時退避領域の各RAMにコピーした値(ステップS35にてコピーした値)を、抽出した(m、n)の組合せブロック内の各RAMに書き戻してステップS65に進む。例えば(m、n)=(1、2)の場合では、図8に示すRAM一時退避領域の各RAM(アドレス0xC0〜0xDF)にコピー(退避)しておいた値を、第1ブロックの各RAM(アドレス0x00〜0x1F)に書き戻し、RAM一時退避領域の各RAM(アドレス0xE0〜0xFF)にコピー(退避)しておいた値を、第2ブロックの各RAM(アドレス0x20〜0x3F)に書き戻す。これにより、RAM検査前に保持していた値を、RAM検査後でも維持(保持)させておくことができる。
【0029】
そしてステップS65にてCPU11aは、全ての(m、n)の組合せブロックの検査が終了したか否かを判定し、全ての組合せブロックの検査が終了した場合(Yes)は、本RAMの検査の処理を終了し、全ての組合せブロックの検査が終了していない場合(No)はステップS70に進む。例えば図8に示すように、第1ブロック〜第6ブロックに分割した場合では、(1、2)、(1、3)、(1、4)、(1、5)、(1、6)、(2、3)、(2、4)、(2、5)、(2、6)、(3、4)、(3、5)、(3、6)、(4、5)、(4、6)、(5、6)の、62=15(通り)の全ての組合せブロックの検査が終了した場合に、本RAMの検査の処理を終了する。
【0030】
ステップS70に進んだ場合、CPU11aは、次に検査するべき(m、n)の組合せブロックを抽出してステップS35に戻る。例えば(1、2)の組合せブロックの検査を行った際にステップS70に達した場合は、次の(1、3)の組合せブロックを抽出してステップS35に戻る。
【0031】
●[サブルーチン(SB100)の処理手順の詳細(図4図7)]
次に、図3に示すステップSB100にて実行されるサブルーチンSB100の処理手順について、図4図7を用いて説明する。なお、図4に示す処理手順は、RAMを昇順、かつ書き込み及び読み出しするデータ(値)を昇順、にして実行するRAMの書き込み・読み出し検査である。また、図5に示す処理手順は、RAMを昇順、かつ書き込み及び読み出しするデータ(値)を降順、にして実行するRAMの書き込み・読み出し検査である。また、図6に示す処理手順は、RAMを降順、かつ書き込み及び読み出しするデータ(値)を昇順、にして実行するRAMの書き込み・読み出し検査である。また、図7に示す処理手順は、RAMを降順、かつ書き込み及び読み出しするデータ(値)を降順、にして実行するRAMの書き込み・読み出し検査である。
【0032】
●[図4に示すフローチャートの処理(RAM:昇順、データ:昇順)の処理手順]
図4に示すステップS110にてCPU11aは、(m、n)の組合せブロック内の全RAMに、昇順に、第1・1所定値を書き込み、ステップS115に進む。例えば(1、2)の組合せブロックの場合では、ますアドレス0x00のRAMに0x00(第1・1所定値)を書き込み、昇順である次のアドレス0x01のRAMに0x00(第1・1所定値)を書き込み、以降、アドレス0x3FのRAMまで順番に0x00(第1・1所定値)を書き込む。
【0033】
ステップS115にてCPU11aは、インデックスに(m、n)の組合せブロック内の先頭のRAMのアドレス(この場合、先頭のRAMのアドレスは0x00)を代入してステップS125に進む。そしてステップS125にてCPU11aは、インデックス先が示すアドレスのRAMから値を読み出し、読み出した値が第1・1所定値(ステップS110にて書き込んだ値)と一致するか否かを判定し、一致する場合(Yes)はステップS130に進み、一致しない場合(No)はステップS180に進む。なおステップS180に進んだ場合は、RAMに異常が発見された場合であり、CPU11aは、RAM異常を記憶してサブルーチンSB100からリターンする。
【0034】
ステップS130に進んだ場合、CPU11aは、インデックス先が示すアドレスのRAMに、第1・2所定値(例えば0x01)を書き込み、ステップS135に進む。そしてステップS135にてCPU11aは、インデックス先が示すアドレスのRAMから値を読み出し、読み出した値が第1・2所定値(ステップS130にて書き込んだ値)と一致するか否かを判定し、一致する場合(Yes)はステップS140に進み、一致しない場合(No)はステップS180に進む。ステップS180に進んだ場合は、上述したように、CPU11aは、RAM異常を記憶してサブルーチンSB100からリターンする。なお、ステップS135〜ステップS140の間は、ステップS130及びステップS135と同様に、インデックス先のアドレスのRAMに、所定値を書き込んで、読み出した値が所定値であるか否かのチェックを、第1・3所定値(例えば0x03)、第1・4所定値(例えば0x07)、第1・5所定値(例えば0x0F)、第1・6所定値(例えば0x1F)、第1・7所定値(例えば0x3F)、第1・8所定値(例えば0x7F)等を用いて、昇順のデータにて行うことを省略している。
【0035】
ステップS140に進んだ場合、CPU11aは、インデックス先が示すアドレスのRAMに、第1・a所定値(例えば0xFF)を書き込み、ステップS145に進む。そしてステップS145にてCPU11aは、インデックス先が示すアドレスのRAMから値を読み出し、読み出した値が第1・a所定値(ステップS140にて書き込んだ値)と一致するか否かを判定し、一致する場合(Yes)はステップS150に進み、一致しない場合(No)はステップS180に進む。ステップS180に進んだ場合は、上述したように、CPU11aは、RAM異常を記憶してサブルーチンSB100からリターンする。
【0036】
ステップS150に進んだ場合、CPU11aは、インデックス先が示すアドレスが、現在チェックしている(m、n)の組合せブロック内の最終RAMのアドレスであるか否かを判定し、最終RAMのアドレスである場合(Yes)は「B」に示す図5の処理に移行し、最終RAMのアドレスでない場合(No)はステップS155に進む。例えば図8に示す(1、2)の組合せブロック(第1ブロックと第2ブロック)の場合、CPU11aは、インデックス先が示すアドレスが、0x3Fである場合、最終RAMのアドレスであると判定する。
【0037】
ステップS155に進んだ場合、CPU11aは、現在抽出している(m、n)の組合せブロック内における次に検査するべきRAMのアドレスをインデックスに代入してステップS125に戻る。例えば現在(1、2)の組合せブロックを抽出している場合であって、0x00のRAMのチェックを終えた場合、この図4の処理ではRAMを昇順に検査しているので、次に検査するべきRAMのアドレスである0x01をインデックスに代入する。
【0038】
以上、図4に示す処理手順にて、RAMを昇順、かつ書き込み及び読み出しするデータ(値)を昇順、にして実行するRAMの書き込み・読み出し検査が完了する。続いて、図5に示す処理手順にて、RAMを昇順、かつ書き込み及び読み出しするデータ(値)を降順、にして実行するRAMの書き込み・読み出し検査を実行する。
【0039】
●[図5に示すフローチャートの処理(RAM:昇順、データ:降順)の処理手順]
図4に示すフローチャートにてステップS150からYesにて「B」に進むと、図5に示す処理に突入する。図5に示すステップS215〜ステップS280の処理は、図4に示す処理に対して、同じ(m、n)の組合せブロック内のRAMを昇順にチェックする点は同じであるが、書き込み及び読み出しするデータが、昇順でなく降順である点が異なる。
【0040】
ステップS215の処理は、図4のステップS115の処理と同じであるので説明を省略する。またステップS225の処理は、図4のステップS125の処理に対して、読み出した値が第1・a所定値(ステップS140で書き込んだ値であり、例えば0xFF)である点が異なる。CPU11aは、読み出した値が第1・a所定値と一致する場合(Yes)はステップS230に進み、第1・a所定値と一致しない場合はステップS280に進む。ステップS280に進んだ場合、CPU11aは、RAM異常を記憶してサブルーチンSB100からリターンする。
【0041】
ステップS230、S235・・S240、S245の処理は、図4のステップS130、S135・・S140、S145の処理に対して、書き込む値及び読み出した値が異なり、昇順でなく降順である点が異なる。図4のステップS130、S135・・S140、S145では、第1・2所定値(0x01)、第1・3所定値(0x03)、第1・4所定値(0x07)・・第1.a所定値(0xFF)のようにデータを昇順にして書き込み及び読み出しを行ったが、ステップS230、S235・・S240、S245の処理では、第2・1所定値(例えば0xFE)、第2・2所定値(例えば0xFC)、第2・3所定値(例えば0xF8)、第2・4所定値(例えば0xF0)、第2・5所定値(例えば0xE0)、第2・6所定値(例えば0xC0)、第2・7所定値(例えば0x80)、第2・b所定値(例えば0x00)のようにデータを降順にして書き込み及び読み出しを行う。
【0042】
そしてステップS250に進んだ場合、CPU11aは、図4のステップS150の処理と同様に、インデックス先が示すアドレスが、現在チェックしている(m、n)の組合せブロック内の最終RAMのアドレスであるか否かを判定し、最終RAMのアドレスである場合(Yes)は「C」に示す図6の処理に移行し、最終RAMのアドレスでない場合(No)はステップS255に進む。
【0043】
ステップS255に進んだ場合、CPU11aは、現在抽出している(m、n)の組合せブロック内における次に検査するべきRAMのアドレスをインデックスに代入してステップS225に戻る。例えば現在(1、2)の組合せブロックを抽出している場合であって、0x00のRAMのチェックを終えた場合、この図5の処理ではRAMを昇順に検査しているので、次に検査するべきRAMのアドレスである0x01をインデックスに代入する。
【0044】
以上、図5に示す処理手順にて、RAMを昇順、かつ書き込み及び読み出しするデータ(値)を降順、にして実行するRAMの書き込み・読み出し検査が完了する。続いて、図6に示す処理手順にて、RAMを降順、かつ書き込み及び読み出しするデータ(値)を昇順、にして実行するRAMの書き込み・読み出し検査を実行する。
【0045】
●[図6に示すフローチャートの処理(RAM:降順、データ:昇順)の処理手順]
図5に示すフローチャートにてステップS250からYesにて「C」に進むと、図6に示す処理に突入する。図6に示すステップS305〜ステップS380の処理は、図4に示す処理に対して、同じ(m、n)の組合せブロック内のRAMを降順にチェックする点が異なり、書き込み及び読み出しするデータが昇順である点は同じである。
【0046】
ステップS305にてCPU11aは、(m、n)の組合せブロック内の全RAMから順番に値を読み出し(例えばRAMアドレスの昇順に読み出し)、読み出した値が第2・b所定値(0x00)と一致するか否かを判定し、一致する場合(Yes)はステップS315に進み、一致しない場合(No)はステップS380に進む。ステップS380に進んだ場合、CPU11aは、RAM異常を記憶してサブルーチンSB100からリターンする。
【0047】
ステップS315に進んだ場合、CPU11aは、インデックスに(m、n)の組合せブロック内の最終のRAMのアドレス(この場合、最終RAMのアドレスは0x3F)を代入してステップS325に進む。そしてステップS325にてCPU11aは、インデックス先が示すアドレスのRAMから値を読み出し、読み出した値が第2・b所定値(ステップS240にて書き込んだ値)と一致するか否かを判定し、一致する場合(Yes)はステップS330に進み、一致しない場合(No)はステップS380に進む。ステップS180に進んだ場合、CPU11aは、RAM異常を記憶してサブルーチンSB100からリターンする。
【0048】
ステップS330、S335・・S340、S345の処理は、図4のステップS130、S135・・S140、S145の処理と同様、書き込む値及び読み出した値は昇順であるが、インデックスの値が最終RAMのアドレスから先頭RAMのアドレスへと降順に変化する点が異なる。例えば、書き込み及び読み出しは、第1・2所定値(0x01)、第1・3所定値(0x03)、第1・4所定値(0x07)・・第1・a所定値(0xFF)のようにデータを昇順にして書き込み及び読み出しを行う。
【0049】
そしてステップS350に進んだ場合、CPU11aは、インデックス先が示すアドレスが、現在チェックしている(m、n)の組合せブロック内の先頭のRAMのアドレスであるか否かを判定し、先頭のRAMのアドレスである場合(Yes)は「D」に示す図7の処理に移行し、先頭のRAMのアドレスでない場合(No)はステップS355に進む。例えば図8に示す(1、2)の組合せブロック(第1ブロックと第2ブロック)の場合、CPU11aは、インデックス先が示すアドレスが、0x00である場合、先頭のRAMのアドレスであると判定する。
【0050】
ステップS355に進んだ場合、CPU11aは、現在抽出している(m、n)の組合せブロック内における次に検査するべきRAMのアドレスをインデックスに代入してステップS325に戻る。例えば現在(1、2)の組合せブロックを抽出している場合であって、0x3FのRAMのチェックを終えた場合、この図6の処理ではRAMを降順に検査しているので、次に検査するべきRAMのアドレスである0x3Eをインデックスに代入する。
【0051】
以上、図6に示す処理手順にて、RAMを降順、かつ書き込み及び読み出しするデータ(値)を昇順、にして実行するRAMの書き込み・読み出し検査が完了する。続いて、図7に示す処理手順にて、RAMを降順、かつ書き込み及び読み出しするデータ(値)を降順、にして実行するRAMの書き込み・読み出し検査を実行する。
【0052】
●[図7に示すフローチャートの処理(RAM:降順、データ:降順)の処理手順]
図6に示すフローチャートにてステップS350からYesにて「D」に進むと、図7に示す処理に突入する。図7に示すステップS415〜ステップS490の処理は、図6に示す処理に対して、同じ(m、n)の組合せブロック内のRAMを降順にチェックする点は同じであるが、書き込み及び読み出しするデータが、昇順でなく降順である点が異なる。
【0053】
ステップS415の処理は、図6のステップS315の処理と同じであるので説明を省略する。またステップS425の処理は、図6のステップS325の処理に対して、読み出した値が第1・a所定値(ステップS340で書き込んだ値であり、例えば0xFF)である点が異なる。CPU11aは、読み出した値が第1・a所定値と一致する場合(Yes)はステップS430に進み、第1・a所定値と一致しない場合はステップS480に進む。ステップS480に進んだ場合、CPU11aは、RAM異常を記憶してサブルーチンSB100からリターンする。
【0054】
ステップS430、S435・・S440、S445の処理は、図6のステップS330、S335・・S340、S345の処理に対して、書き込む値及び読み出した値が異なり、昇順でなく降順である点が異なる。図6のステップS330、S335・・S340、S345では、第1・2所定値(0x01)、第1・3所定値(0x03)、第1・4所定値(0x07)・・第1.a所定値(0xFF)のようにデータを昇順にして書き込み及び読み出しを行ったが、ステップS430、S435・・S440、S445の処理では、第2・1所定値(例えば0xFE)、第2・2所定値(例えば0xFC)、第2・3所定値(例えば0xF8)、第2・4所定値(例えば0xF0)、第2・5所定値(例えば0xE0)、第2・6所定値(例えば0xC0)、第2・7所定値(例えば0x80)、第2・b所定値(例えば0x00)のようにデータを降順にして書き込み及び読み出しを行う。
【0055】
そしてステップS450に進んだ場合、CPU11aは、図6のステップS350の処理と同様に、インデックス先が示すアドレスが、現在チェックしている(m、n)の組合せブロック内の先頭のRAMのアドレスであるか否かを判定し、先頭のRAMのアドレスである場合(Yes)はステップS490に進み、先頭のRAMのアドレスでない場合(No)はステップS455に進む。
【0056】
ステップS455に進んだ場合、CPU11aは、現在抽出している(m、n)の組合せブロック内における次に検査するべきRAMのアドレスをインデックスに代入してステップS425に戻る。例えば現在(1、2)の組合せブロックを抽出している場合であって、0x3FのRAMのチェックを終えた場合、この図7の処理ではRAMを降順に検査しているので、次に検査するべきRAMのアドレスである0x3Eをインデックスに代入する。
【0057】
以上、図7に示す処理手順にて、RAMを降順、かつ書き込み及び読み出しするデータ(値)を降順、にして実行するRAMの書き込み・読み出し検査が完了する。そしてステップS490に進んだ場合、抽出した(m、n)の組合せブロック内の全RAMに対して、図4に示すRAMを昇順かつデータを昇順としたRAMの検査、図5に示すRAMを昇順かつデータを降順としたRAMの検査、図6に示すRAMを降順かつデータを昇順としたRAMの検査、図7に示すRAMを降順かつデータを降順としたRAMの検査、の全てで正常であることが確認できたことになるので、CPU11aは、RAM正常を記憶してサブルーチンSB100からリターンする。
【0058】
以上に説明したRAM検査方法により、例えばRAM検査領域を第1ブロック、第2ブロック、第3ブロックの3つのブロックに分割した場合、(1、2)、(1、3)、(2、3)の各組合せブロックで、それぞれRAMの干渉が無いことを確認すれば、第1ブロック、第2ブロック、第3ブロックで互いにRAMの干渉が無い、といえる。本実施の形態にて説明したRAM検査方法では、RAM検査領域のサイズが大きく、RAM検査領域内の全てのRAMの値を一時退避できるようなRAM一時退避領域のサイズが無い場合であっても、RAM検査領域を例えば第1ブロック、第2ブロック、第3ブロックに分割して、2つのブロックの全ての組合せで検査することで、所定の安全規格を満足しつつ、RAM検査領域の全体のRAMが正常であることを、適切に、より短時間に検査することができる。
【0059】
本発明のプログラマブルロジックコントローラのRAM検査方法は、本実施の形態にて説明した処理手順等に限定されず、本発明の要旨を変更しない範囲で種々の変更、追加、削除が可能である。また本発明のプログラマブルロジックコントローラは、本実施の形態にて説明した構成、構造、外観、形状等に限定されず、本発明の要旨を変更しない範囲で種々の変更、追加、削除が可能である。また、RAM検査領域、分割するブロックの数、RAM一時退避領域等の各アドレス等は、図8に示すものに限定されるものではない。また、本実施の形態の説明に用いた数値は一例であり、この数値に限定されるものではない。
【符号の説明】
【0060】
1 PLC
10 制御ユニット
11a CPU(制御手段)
11b RAM
11c ROM
20 入力ユニット
25 入力端子
30 出力ユニット
35 出力端子
12、13、22、33 コネクタ
50 端末装置
60 他のPLC

図1
図2
図3
図4
図5
図6
図7
図8