(57)【特許請求の範囲】
【請求項１】
ラダー演算を実行する演算処理ユニットと、
スタティックＲＡＭに配置する第１の内部レジスタと、
不揮発性ＲＡＭに配置する第２の内部レジスタと
を少なくとも備え、
前記演算処理ユニットがラダー演算を実行し当該ラダー演算のスキャンエンド時に前記第１の内部レジスタのデータ値を前記第２の内部レジスタにコピーする処理を第１の処理モードとし、
前記演算処理ユニットが前記第２の内部レジスタのみを用いてラダー演算を実行する処理を第２の処理モードとし、
前記スタティックＲＡＭおよび前記不揮発性ＲＡＭの各仕様、前記第１の内部レジスタの数量および前記第２の内部レジスタの容量に基づいて、前記第１の処理モードによる処理時間と前記第２の処理モードによる処理時間とを比較し短い処理時間の処理モードを選択する
ことを特徴とするプログラマブルコントローラ。
【請求項２】
請求項１に記載のプログラマブルコントローラであって、
前記第１の内部レジスタをデータ値の保持を必要とする保持領域および必要としない非保持領域に分けて設定し、
前記第１の処理モードで前記第２の内部レジスタにコピーするデータ値は、前記第１の内部レジスタの前記保持領域のデータ値のみとする
ことを特徴とするプログラマブルコントローラ。
【請求項３】
請求項１または２に記載のプログラマブルコントローラであって、
前記第１または前記第２の処理モードの選択は、前記演算処理ユニットにより自動的に行われるかまたはユーザの判断により手動で行われる
ことを特徴とするプログラマブルコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルコントローラにおけるデータメモリアクセス方法に関する。
【背景技術】
【０００２】
プログラマブルコントローラは、外部入出力データを扱うためのレジスタとラダー演算に使用するレジスタを有する。以後、このラダー演算用のレジスタを、単に「内部レジスタ」と称する。
通常、内部レジスタは、高速または中速でアクセス可能なＳｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（スタティックＲＡＭ、以後では、「Ｓ−ＲＡＭ」と略称する）に配置する。マイコンは、この内部レジスタをアクセスしてラダー演算を行う。これにより、ラダー演算の処理速度の高速化を図っている。
【０００３】
しかし、高速でアクセス可能なＳ−ＲＡＭは、揮発性のメモリであるため、プログラマブルコントローラの電源がオフとなると、内部レジスタのデータ値は不定値となる。通常の動作では、次回電源をオンした後に、内部レジスタの値を０値に初期化して、ラダー演算を開始する。
【０００４】
一方で、ユーザによっては、電源をオンした時に内部レジスタの値を初期化せずに、電源をオフした時の値を保持させたままラダー演算を実行させたい用途がある。その場合には、ハードウェアとしてバッテリバックアップ可能なＳ−ＲＡＭを有する構成とし、内部レジスタをバッテリバックアップ可能なＳ−ＲＡＭに配置させることで、内部レジスタのデータ値の保持を実現させている。
【０００５】
また、先行技術文献として、特許文献１（特許第４１４３９５２号公報）には、プログラマブルコントローラの実行用メモリに格納されたユーザデータの変更に際してユーザデータを不揮発性のバックアップ用メモリに書き込むことでユーザデータのバックアップを行うメモリバックアップ方法において、バックアップ用メモリの記憶領域は、保存用の領域と書き込み用の領域とを有し、実行用メモリに格納されたユーザデータが変更された場合は、実行用メモリに格納されたユーザデータを上記書き込み用の領域に書き込むとともに当該書き込みをタイムスライスすることによりバックグランドで実行するバックアップ処理を行い、書き込み用の領域に対するユーザデータのバックアップ処理が完了すると、該書き込み用の領域を保存用の領域に切替えるとともに、切替え前に保存用の領域として使用していた領域を書き込み可能状態にして書き込み用の領域に切替える技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第４１４３９５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記背景技術で示した方式（内部レジスタの格納メモリをバッテリバックアップ可能なＳ−ＲＡＭに配置しているプログラマブルコントローラ）では、Ｓ−ＲＡＭの電源として電池（バッテリ）からの電源供給が必要となる。そのため、電池（バッテリ）の容量が無くなると内部レジスタのデータ値を保持できず不定値となる恐れがある。それを避けるために、ユーザは定期的に電池（バッテリ）の交換作業を実施しなくてはならない。
また、バッテリバックアップ可能なＳ−ＲＡＭは、一般的に中速または低速なものが多く、ラダー演算を高速に行うにはネックとなってしまう場合がある。
【０００８】
そこで、本発明の目的は、高速なラダー演算を可能につつ、電源がオフとなってもラダー演算に用いる内部レジスタのデータ値を保持できるプログラマブルコントローラを提供することである。
【０００９】
また、上記特許文献１に開示の技術は、不揮発性のバックアップ用メモリに対してバックアップを取得する対象となるデータが、実行用メモリに格納されたユーザデータ（ダウンロードまたはオンラインエディットにより変更されるデータであることから、ユーザプログラムに対応するデータ）であり、ラダー演算時の内部レジスタのデータをバックアップの対象とする技術ではなく、またそれを示唆する記載もない。また、上記バックアップ処理は、タイムスライスすることによりバックグラウンドで実行するようにした手法を用いている。
【課題を解決するための手段】
【００１０】
本発明は、プログラマブルコントローラが、ラダー演算を実行する演算処理ユニットと、演算処理ユニットによるラダー演算実行時に用いる第１の内部レジスタを有するスタティックＲＡＭと、第２の内部レジスタを有する不揮発性ＲＡＭとを少なくとも備え、演算処理ユニットが、ラダー演算を実行しラダー演算のスキャンエンド時に第１の内部レジスタのデータ値を第２の内部レジスタにコピーすることを特徴とする。
本発明は、
【発明の効果】
【００１１】
本発明により、高速なラダー演算速度を維持しつつ、電池を必要とするなくラダー演算に使用する内部レジスタのデータ値を保持することが可能なプログラマブルコントローラを提供する。
【図面の簡単な説明】
【００１２】
【図１】図１は、プログラマブルコントローラのＣＰＵ（マイコン）周りのハードウェア構成図である。
【図２】図２は、実施例１に係る、メモリ上の内部レジスタの配置およびアスセスルートを示す図である。
【図３】図３は、ラダープログラムにつきラダー図表記および命令語表記の一例を示す図である。
【図４】図４は、実施例２に係る、内部レジスタにおけるデータ保持領域の設定画面を示す図である。
【図５】図５は、実施例３に係る、ラダー演算時のアクセスを不揮発性ＲＡＭのみで実行する場合のアスセスルートを示す図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態として、実施例１〜実施例３について図面を用いて順に説明する。
図１は、本発明の各実施例に係るプログラマブルコントローラの演算処理ユニット（ＣＰＵユニット）周りのハードウェア構成図である。なお図１では、演算処理ユニット（ＣＰＵユニット）を、フラッシュおよびＳ−ＲＡＭの各メモリを内蔵したマイクロコンピュータ（マイコン）としている。
【００１４】
本発明の各実施例に係るプログラマブルコントローラは、ハードウェア構成として、ラダー演算を実装するマイコン１０、システムプログラムおよびラダープログラムを格納する大容量の不揮発性メモリ１１（なお、図１では代表的なフラッシュメモリで示す）、マイコンによる演算処理実行時に用いるシステムワークエリアと内部レジスタ１４を配置する高速Ｓ−ＲＡＭ１２およびミラーリングされた内部レジスタ１５を配置する中速不揮発性ＲＡＭ１３を備える。なお、マイコンの演算処理を行わせるために高速ＤＲＡＭを併用する場合もある。
【実施例１】
【００１５】
図２は、実施例１に係る、メモリ上の内部レジスタの配置およびアスセスルートを示した図である。実施例１は、全内部レジスタをデータ値の保持を必要とするものとして使用するケースに対応し、以下にその動作機能について説明する。なお、図２では、高速Ｓ−ＲＡＭ１２に配置する内部レジスタ１４を「ラダー演算用」、中速不揮発性ＲＡＭ１３に配置する内部レジスタ１５を「データ値保持用」として記している。
【００１６】
プログラマブルコントローラが運転を開始し、マイコン１０はラダー演算を実行する。例えば、図３に示すラダープログラムの演算を実行した場合を想定する。その際に、内部レジスタのＲ０およびＲ１の値を読み出して参照する必要があるため、マイコン１０は、高速Ｓ−ＲＡＭ１２に配置した内部レジスタ１４のＲ０およびＲ１の格納エリアからデータ値を読み出してラダー演算を行う。
【００１７】
ラダー演算の結果から内部レジスタのＲ１００に値を書き込む処理として、マイコン１０は、高速Ｓ−ＲＡＭ１２に配置した内部レジスタ１４のＲ１００の格納エリアに演算結果の書き込みを行う。
ラダー演算時のアクセス処理２１は、マイコン１０と高速Ｓ−ＲＡＭ１２との間で行われ、アクセススピードが速いためラダー演算速度も速くなり、ラダープログラムのスキャン時間が短縮される。
【００１８】
上記方法にてラダー演算が実行される。ラダー演算の最後となるスキャンエンド時に、マイコン１０は、高速Ｓ−ＲＡＭ１２上の内部レジスタ１４のデータ値を、中速不揮発性ＲＡＭ１３上のデータ値保持用内部レジスタ１５にコピーする転送処理２２を実行する。
中速不揮発性ＲＡＭ１３上の内部レジスタ１５は、プログラマブルコントローラの電源をオフにしても不揮発性であるためデータ値は保持される。
【００１９】
次に、プログラマブルコントローラの電源がオフの状態から再度電源をオンにした場合の動作について説明する。
プログラマブルコントローラの電源をオンにした時のイニシャル処理として、マイコン１０は、中速不揮発性ＲＡＭ１３上のデータ値保持用内部レジスタ１５のデータ値を高速Ｓ−ＲＡＭ１２上の内部レジスタ１５にコピーする。そのコピーの完了後に、マイコン１０はラダー演算を開始する。
【実施例２】
【００２０】
実施例１は、上記のように、全内部レジスタのデータ値を保持する必要があるとしたケースである。ところで、ユーザによっては、全内部レジスタのデータ値を保持する必要がなく、むしろ、特定の内部レジスタのみのデータ値を保持させて、それ以外の内部レジスタはプログラマブルコントローラの電源オン時に初期化してラダー演算を実行する場合がある。これについては、プログラマブルコントローラのメーカによって運用方法が異なることに依存する場合もある。
【００２１】
一つには、内部レジスタに対して、データ値を保持対象とする保持領域と保持対象としない非保持領域を固定とし、ユーザが設定できない方式を採用しているケースがある。この場合は、中速不揮発性メモリ１３上に非保持領域に対応する内部レジスタを配置すればデータ値の保持は可能となるが、ラダー演算の高速化に対してはデメリットとなる。
【００２２】
実施例２に係るプログラマブルコントローラは、内部レジスタをユーザによってデータ値を保持対象とする保持領域および保持対象としない非保持領域に分けて設定することを可能にする。その設定方法の一例を図４に示す。すなわち、ユーザが設定した内部レジスタの保持領域のみのデータ値を保持し、それ以外の内部レジスタの領域（非保持領域）はプログラマブルコントローラの電源オン時に初期化してラダー演算に使用する。
【００２３】
実施例２は、図４に示すように、高速Ｓ−ＲＡＭ１２上の一部の内部レジスタ領域のみをデータ保持領域４１として使用するケースに対応し、以下にその動作機能について説明する。
実施例１と同様に、ラダー演算中は、高速Ｓ−ＲＡＭ１２上の内部レジスタ１４のデータ値を使用する。ラダー演算の最後となるスキャンエンド時に、マイコン１０は、高速Ｓ−ＲＡＭ１２上の内部レジスタ１４の領域の内、図４で設定したデータ値を保持対象とする保持領域のデータ値のみを、中速不揮発性ＲＡＭ１３上の内部レジスタ１５にコピーする転送処理を実行する。この処理が実施例１による処理とは異なる点である。
【００２４】
実施例２の特徴は、内部レジスタ１４においてデータ保持領域に割当てる容量が少ないと、ラダー演算の最後となるスキャンエンド時に、高速Ｓ−ＲＡＭ１２上の内部レジスタ１４のデータ値を中速不揮発性ＲＡＭ１３上の内部レジスタ１５にコピーするデータ量は当然少なくて済むため、コピー処理時間が速くなる点である。
【実施例３】
【００２５】
実施例３は、ラダープログラム上で使用される内部レジスタが少なく、データ値を保持対象として内部レジスタに設定される領域が少ないケースにも適切に対応し、実施例１と併用して処理時間をより短縮することを目指した方式である。
【００２６】
ここにおいて、例えば、ラダープログラム上で使用される内部レジスタの割当て領域が１，０２４ｂｉｔ（Ｍ０〜Ｍ３ＦＦ）、データ値を保持するために使用される内部レジスタの割当て領域が３２，７６８ｂｉｔ（Ｍ０〜Ｍ７ＦＦＦ）と仮定する。また、高速Ｓ−ＲＡＭのアクセススピードを１０ｎＳ，中速不揮発性ＲＡＭのアクセススピードを５５ｎＳと仮定する。
【００２７】
以下では説明を簡略化するため、ラダープログラム上で使用される内部レジスタおよびデータ値コピーを受け入れる内部レジスタへの各アスセスに関する時間のみを簡易的に算出する。
【００２８】
例えば、実施例１による処理モードでは、
（１）ラダー演算中の高速Ｓ−ＲＡＭ１２へのアクセス時間は、
１，０２４ｂｉｔ×１０ｎＳ＝１０，２４０ｎＳ
（２）スキャンエンド時に実行する高速Ｓ−ＲＡＭ１２から中速不揮発性ＲＡＭ１３へのコピー時間は、
３２，７６８ｂｉｔ／１６ｂｉｔ×５５ｎＳ＝１１２，６４０ｎＳ
すなわち、処理時間としては、（１）と（２）の合計タイムである、
１０，２４０ｎＳ＋１１２，６４０ｎＳ＝１２２，８８０ｎＳ
のアクセス時間がかかることになる。
【００２９】
実施例３は、図５に示すように、ラダー演算時にアクセスする内部レジスタとして高速Ｓ−ＲＡＭ１２を使用せずに、中速不揮発性ＲＡＭ１３上の内部レジスタ１５をラダー演算兼データ値保持用としてそれのみを使用して演算を実行する処理モードを設け、実施例１の処理モードと併用する方式である。
そのため、図５に示す処理モードでは、ラダー演算の最後となるスキャンエンド時に、高速Ｓ−ＲＡＭ１２上の内部レジスタ１４のデータ値を中速不揮発性ＲＡＭ１３上の内部レジスタ１５にコピーする転送処理は必要なく実行されない。
【００３０】
図５に示す処理モードでは、
（３）ラダー演算中の中速不揮発性ＲＡＭ１３へのアクセス時間は、
１，０２４ｂｉｔ×５５ｎＳ＝５６，３２０ｎＳ
（４）スキャンエンド時に実行する高速Ｓ−ＲＡＭ１２から中速不揮発性ＲＡＭ１３へのコピー時間は、コピー処理を行わないことから、
０ｎＳ
すなわち、処理時間としては、（３）と（４）の合計タイムである、
５６，３２０ｎＳ＋０ｎＳ＝５６，３２０ｎＳ
のアクセス時間がかかることになる。
【００３１】
以上のように、使用するメモリ（すなわち、高速Ｓ−ＲＡＭおよび中速不揮発性ＲＡＭ）の仕様（スペック）、ラダープログラム上で使用する内部レジスタの数量およびデータ値保持に使用する内部レジスタの容量によっては、図５に示す方式の方が実施例１よりアクセス時間を短くでき、有効となる場合がある。
【００３２】
要するに、実施例３は、使用するメモリ（すなわち、高速Ｓ−ＲＡＭおよび中速不揮発性ＲＡＭ）の仕様（スペック）、ラダープログラム上で使用する内部レジスタの数量およびデータ値保持に使用する内部レジスタの容量に基づいて、実施例１による処理モードの処理時間と図５に示す処理モードの処理時間とを比較して、処理時間の短い方を選択して処理を実行する方式である。この選択は、演算処理ユニット（ＣＰＵユニット）により自動的に行うか、またはユーザの判断により手動で行うことができる。
【００３３】
以上では、実施例３を、実施例１と図５に示す処理モードとを併用する方式として説明したが、実施例２と図５に示す処理モードとを併用する方式とすることも勿論可能である。
【００３４】
なお、本発明は、上記した実施例に限定されるものではなく、様々な変形例を含むものである。例えば、上記した実施例は、本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能である。また、ある実施例の構成に他の実施例の構成を加えることも可能である。そしてまた、各実施例の構成の一部について、他の構成の追加、削除および置換をすることが可能である。
【００３５】
上記各実施例の機能を実現するためのメモリとしては、ハードディスク、ＵＳＢメモリ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等を使用してもよい。また、演算処理ユニット（ＣＰＵユニット）としては、マイコンに替えてＦＰＧＡを使用してもよい。
【符号の説明】
【００３６】
１０  マイコン、１１  大容量不揮発性（フラッシュ）メモリ、１２高速Ｓ-ＲＡＭ、  １３  中速不揮発性ＲＡＭ、１４  内部レジスタ（ラダー演算用）、１５  内部レジスタ（データ値保持用またはラダー演算兼データ値保持用）
【図１】
0006401071.tif 000002
【図２】
0006401071.tif 000003
【図３】
0006401071.tif 000004
【図４】
0006401071.tif 000005
【図５】
0006401071.tif 000006