(57)【要約】【課題】  ユーザプログラムの実行時高速切替え方式において、メモリ空間を増やさずに共通処理プログラムを、各バンクから呼出可能とする。  ユーザプログラムを実行時に高速に書換える手段として、バンク切替え方式があるが、サブルーチン等共通に利用されるプログラムは、バンク外のメモリ空間に配置する必要があるため、メモリ空間の増大に繋がる。【解決手段】  バンク構成をとるメモリの1つのバンクをバンク切替を行うことなく他のバンクからアクセス可能とするため、バンクレジスタの出力と命令フェッチ用アドレスの上位ビットを論理和する手段を設ける。【選択図】  図２
2007058256.tif 000002
【特許請求の範囲】
【請求項１】
プログラムメモリのバンクを設定するバンクレジスタを有し、該バンクレジスタの値によりメモリアドレスを変更可能となるプログラムアドレス更新方式を有したプログラマブルコントローラにおいて、
前記バンクレジスタと、プログラムアドレスの上位ビットとを論理和し、その結果を実際のプログラムアドレスとするアドレス生成回路を有することを特徴とするプログラマブルコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
プログラマブルコントローラの高速ＲＵＮ中変更のアドレス生成方式及びプログラム実行装置に関する。
【背景技術】
【０００２】
ユーザが作成したプログラムを実行する装置において、プログラムを実行中に、新たに別のプログラムを周辺機器から転送し、実行するプログラムを運転中に切り替える場合に、旧プログラム実行状態から新プログラム実行状態に移行する間のプログラム停止状態を少なくするための技術としてプログラムを格納するメモリを２つ以上のバンク構成とし、一方のバンクを実行中に、もう一方のバンクに新しいプログラムを転送可能とする方式が一般的に用いられる。但しサブルーチン等の共通に使用される処理プログラムは各バンクにそれぞれ格納するか、バンクエリア外に別メモリを設ける必要があった。
【０００３】
また、特許文献１（特開２０００−１０５７２４号公報）には、メモリのアドレスを制御するアドレス制御回路に関して開示されている。
【０００４】
【特許文献１】特開２０００−１０５７２４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ユーザプログラムの命令には、その命令自体をプロセッサで実行可能な基本命令もあるが、高機能命令の場合は、実際の処理プログラムはユーザプログラム以外のエリアに予め登録しておき、ユーザプログラムではその処理プログラムをコールすることで、ユーザプログラムのステップ数の節約、転送時間の節約を行っている。
【０００６】
ユーザプログラムの運転中切替を高速に実行する手段としてメモリのバンク切替を使用する場合、各バンクに高機能命令の処理プログラムを格納しておく必要があり、メモリ容量の増大、使用効率の低下に繋がっていた。
【課題を解決するための手段】
【０００７】
バンク構成をとるメモリの1つのバンクをバンク切替を行うことなく他のバンクからアクセス可能とするため、バンクレジスタの出力と命令フェッチ用アドレスの上位ビットを論理和する手段を設ける。
【発明の効果】
【０００８】
1つのバンクから別のバンクに切替えるためのバンクレジスタの値を変更することなく別のバンクに格納されている処理プログラムにジャンプ可能となるため、命令実行処理の高速化、メモリの使用効率向上が図れる。
【発明を実施するための最良の形態】
【０００９】
本発明を実施するための最良の形態を説明する。
【００１０】
以下、本発明のプログラマブルコントローラの実施例について、図面を用いて説明する。
【実施例１】
【００１１】
本発明の実施例を図１、図２、図３に示す。
【００１２】
図１は、本実施例のプログラマブルコントローラのＣＰＵモジュールのブロック図である。
【００１３】
図1において、１はＣＰＵモジュールで、２は周辺装置、３は周辺装置インターフェース、４は演算処理を行うＭＰＵ、５はデータメモリ、６はアドレス生成部、７はユーザプログラムメモリを示す。
【００１４】
図１において、ＣＰＵモジュール１のＭＰＵ４は、周辺装置２から転送されるユーザプログラムを周辺装置インターフェース３を経由して取込む。そしてＭＰＵ４よりアドレス生成部６を介してユーザプログラムメモリ７に書込む。ＣＰＵモジュール１のＭＰＵ４が、ユーザよりＲＵＮされることにより、ユーザプログラムメモリ７に格納されているプログラムを順次実行し、演算結果をデータメモリ５に格納する。
【００１５】
図２は、図１のＣＰＵモジュール１のアドレス生成部６の具体的な構成を示す。図２において、６１はバンクレジスタ、６２は論理和回路、６３はセレクタを示す。
【００１６】
アドレス生成部６は、ＭＰＵ４からのライトアクセス時とリードアクセス時のアドレスを生成する。リード時はバンクを設定するためのバンクレジスタ６１の出力（ここでは２ビット）と、ＭＰＵ４から出力されるアドレス（Ａ９−Ａ０とし、１０ビットとしている）の上位ビット（図２ではＡ９，Ａ８の上位２ビット）を論理和回路６２に入力して、ユーザプログラムメモリ７への上位アドレスとして出力する。下位アドレスはＭＰＵ４のアドレスをそのまま出力する。ここで論理和回路に入力するＭＰＵ４からのアドレスはバンク空間をいくつに分割するかにより一意に決定される。バンクレジスタ６１のビット数も同様である。
【００１７】
ここで、バンク空間を４分割とした場合のＭＰＵ４から見たユーザプログラムメモリのアドレスマップを図３に示す。周辺装置２から転送されるプログラムは論理空間でのアドレスマップにて作成することにより、格納されるバンクを意識することなくプログラミングを可能とする。
【００１８】
また、ライト時はバンクレジスタが無効となり、バンク０−３までをリニアにＭＰＵからアクセス可能である。
【００１９】
ＲＵＮ中変更を行う場合の手順について説明する。
まず予めバンク０にユーザプログラムが格納され、ＭＰＵ４はそれを実行中であるとする。この時、周辺装置２より新しいユーザプログラムが転送されると、ＭＰＵ４はその格納先をバンク０以外のバンクに格納する。ここではバンク1に格納することとする。その後バンクレジスタ６１の値を”０１(２進数)”にすることにより以降バンク１に格納されているプログラムをＭＰＵ４からリード可能となる。
【００２０】
ユーザプログラムはどこのバンクに格納されても動作する必要があり、図３に示す論理アドレス空間にて動作するよう作成しておく。但し、高機能命令等、実際の処理プログラムが格納されているバンク３へのジャンプ命令は、物理アドレス空間で示される絶対アドレスにてジャンプ可能である。これはバンクレジスタ６１に設定されている値と、ＭＰＵ４からの出力アドレスの上位２ビットとの論理和をとっているため、バンク３に対するアドレスをＭＰＵ４が出力した場合は、バンクレジスタ６１の値にかかわらず“１１(２進数)”となるためである。
【００２１】
以上のように本実施例を用いれば、バンクレジスタにより実行するプログラムを高速に変更する場合においても、バンク間へのジャンプをバンクレジスタの値に関係なく行えるため、共通に使用されるサブルーチン等を各バンクに格納する必要がなくメモリの使用効率向上が図れる。
【産業上の利用可能性】
【００２２】
ユーザが作成するラダープログラムをサイクリックに実行するプログラマブルコントローラにおいて、ユーザプログラムの修正、変更等をプログラム実行中に行う場合において、プログラム切替え処理を高速に行う場合に利用する。
【図面の簡単な説明】
【００２３】
【図１】本発明のＣＰＵモジュールの構成図を示す。
【図２】図１のＣＰＵモジュールのアドレス生成部を示す。
【図３】本発明のバンク空間を４分割した場合のユーザプログラムのアドレスマップを示す。
【符号の説明】
【００２４】
１‥ＣＰＵモジュール
２‥周辺装置
３‥周辺装置インターフェース
４‥ＭＰＵ
５‥データメモリ
６‥アドレス生成部
７‥ユーザプログラムメモリ
６１‥バンクレジスタ
６２‥論理和回路
６３‥セレクタ
【図１】
2007058256.tif 000003
【図２】
2007058256.tif 000004
【図３】
2007058256.tif 000005