(57)【特許請求の範囲】
【請求項１】
データを読み書きする汎用レジスタと、命令を実行すべきアドレスを計算するアドレス計算部と、外部メモリへデータを読み書きするメモリアクセス部と、を有してビット処理をハードウエアで行うプロセッサを備え、入力されたプログラムの命令コードに基づいて、ビット演算処理及び複数ビットで構成されるワード単位の応用処理を演算対象にて行うプログラマブルコ
ントローラにおいて、
前記命令コードには、演算対象アドレスを間接指定するインデックス指定命令であるかどうかを表示するフラグビットを有した表示フラグと、演算に用いられる直値アドレスと、が設けられ、
前記汎用レジスタにはセレクタが接続され、
前記セレクタにはフラグビットと直値アドレスとが入力され、表示フラグがインデックス指定命令を表示している場合、前記汎用レジスタ内のデータを演算対象アドレスとして出力して、表示フラグがインデックス指定命令を表示していない場合、直値アドレスをそのまま出力し、ハードウエアで処理を行うことを特徴とするプログラマブルコントローラ。
【請求項２】
前記命令コードが、前記演算対象をアドレスとするシーケンス命令であることを特徴とする請求項１記載のプログラマブルコントローラ。
【請求項３】
前記セレクタが、前記アドレス計算部に設けられたことを特徴とする請求項２記載のプログラマブルコントローラ。
【請求項４】
前記命令コードが、前記演算対象を設定値データとするタイマ又はカウンタ命令であることを特徴とする請求項１記載のプログラマブルコントローラ。
【請求項５】
前記セレクタが、前記外部メモリからの読み出しデータパスに設けられたことを特徴とする請求項４記載のプログラマブルコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、入力されたプログラムの命令コードに基づいて、ビット演算処理及び複数ビットで構成されるワード単位の応用処理を演算対象にて行うプログラマブルコントローラに関するものである。
【０００２】
【従来の技術】
従来、この種のプログラマブルコントローラとして、データを読み書きする汎用レジスタと、命令を実行すべきアドレスを計算するアドレス計算部と、外部メモリへデータを読み書きするメモリアクセス部と、を有してビット処理をハードウエアで行うプロセッサを備えたものが存在する。
【０００３】
さらに詳しくは、入力されたプログラムの命令コードがシーケンス命令である場合、演算対象がアドレスとなる。ここで、演算対象のインデックス指定とは、インデックスレジスタのデータと命令コード中に記述されて定数である直値との和を演算対象アドレスとするものである。
【０００４】
図７は、ビット演算命令の一つで演算対象ビットの内容をアキュームレータ（ＡＣＣ）に読み出すＳＴ命令の例を示している。インデックスレジスタ（ＩＸ）のデータが１５で命令コード中の直値が３で和が１８であるから、図７（ａ）に示すＳＴＩＸＸ３命令は図７（ｂ）に示すＳＴＸ１８命令と同じことになる。このＳＴＸ1８命令でもって、図７（ｃ）に示すメモリのアドレス１のワードデータ中のビット８を演算対象とし、ハードウエアのＡＣＣにその内容を読み出す。
【０００５】
プロセッサは、命令コード中に予め直値で記述されたメモリアドレスのデータのみを演算対象として、ビット処理をハードウエアで実行することができる。このようなプロセッサを用いてインデックス指定命令を実行しようとすると、図８に示すフローでの実行手順が必要となる。
【０００６】
まず、＃２１において、インデックスレジスタのデータ（ＩＸ）を読み出してレジスタに設けられている汎用レジスタのｒ２に入力する。＃２２で、インデックスレジスタのデータ（ｒ２）と命令コード中の直値（ｍ）とを加算して、汎用レジスタのｒ１に入力する。＃２３で、ワードアドレスとワード中のビット位置とを分離するために、ｒ１を４ビット右へシフトして、ワードアドレスを表す「結果」及びワード中のビット位置を表す「余り」を汎用レジスタのｒ３、ｒ４にそれぞれ入力する。
【０００７】
次いで、＃２４において、ｒ３をワードアドレスとする演算対象ビットが含まれるワードデータを読み出して、そのワードデータを汎用レジスタのｒ５に入力する。＃２５で、ｒ５のワードデータをｒ４ビット右へシフトすることでもって演算対象ビットをビット０に移動して、ｒ５の中の演算対象ビットを抽出し汎用レジスタのｒ６に入力する。なお、この例では抽出先をビット０としている。
【０００８】
そして、＃２６で、もとのデータを退避しておく必要があり、現在のアドレス０のデータを、ｒ７に一旦移す。＃２７で、演算対象ビットをビット０に移動したｒ６のデータをメモリの予め決められたアドレス０に移す。これでようやく、実際のビット処理演算を実行するための準備ができたことになる。
【０００９】
次いで、＃２８において、アドレス０のビット０に対するビット処理命令であるＳＴＸ０を実行する。最後に、＃２９で、退避していたアドレス０のもとのデータｒ７をアドレス０へ復帰することでもって、インデックス指定命令の実行を完了する。
【００１０】
一方、入力されたプログラムの命令コードがタイマ又はカウンタ命令である場合、演算対象が設定値データとなる。ここで、設定値データのインデックス指定とは、インデックスレジスタの値と命令コード中に記述されて定数である直値との和を、設定値データエリアにおけるアドレスとするものである。図９は、入力条件がオンになると、指定された設定値データの値を経過値の初期値として以後入力条件がオフになるまで時間計時を行い、経過値が０になるとタイマの接点がオンするＴＭＲ命令の例を示している。ここで、インデックスレジスタ（ＩＸ）が15で命令コード中の直値が3であるため、図９（ａ）に示すＴＭＲ０，ＩＸＤＴ３命令は図９（ｂ）に示すＴＭＲ０，ＤＴ１８命令と同じことになる。このＴＭＲ命令は、図９（ｃ）に示すように、メモリアドレス１８のワードデータを設定値データとし、ハードウエア内にその内容を読み出して演算する。
【００１１】
ビット処理をハードウエアで行うプロセッサでは、タイマ又はカウンタ命令を実行すると、タイマ番号又はカウンタ番号でもって一意的に設定値データの格納されているメモリアドレスが決まり、そのデータのみを設定値として演算することができる。このようなプロセッサを用いて、設定値データのインデックス指定命令を実行しようとすると、図１０のようなフローでの実行手順が必要となる。
【００１２】
まず、＃３１において、インデックスレジスタのデータ（ＩＸ）を読み出してレジスタに設けられている汎用レジスタのｒ１に入力する。＃３２で、インデックスレジスタのデータ（ｒ１）と命令コード中の直値（ｍ）とを加算して、つまり、実際の演算対象である設定値データエリアにおけるメモリアドレスを計算して、汎用レジスタのｒ３に入力する。＃３３で、そのｒ３をアドレスとするワードデータ、すなわち設定値データ、を読み出して、汎用レジスタのｒ２に入力する。
【００１３】
そして、＃３４で、もとのデータを退避しておく必要があり、現在のアドレスｎの設定値データを、ｒ７に一旦移す。＃３５で、ワードデータのｒ２をタイマ番号又はカウンタ番号で一意的に決まっているアドレスｎに一旦移す。これで、ようやく、実際のタイマ又はカウンタ命令を実行する準備ができたことになる。
【００１４】
次いで、＃３６において、演算対象となる設定値に対する演算命令であるＴＭＲｎを実行する。最後に、＃３７で、退避していたアドレスｎのもとのデータｒ７をアドレスｎへ復帰することでもって、インデックス指定命令の実行を完了する。
【００１５】
【発明が解決しようとする課題】
上記した従来のプログラマブルコントローラでは、シーケンス命令及びタイマ又はカウンタ命令ともインデックス指定命令を実行するとき、いくつもの命令に分割して順にその命令フローを実行すれば、正しい結果を得ることができる。
【００１６】
しかしながら、プログラムメモリが増大してその結果実行速度が遅くなってしまうという問題があった。
【００１７】
本発明は、上記問題点に鑑みなされたものでその目的とするところは、プログラム容量を抑えることでもって高速でインデックス指定命令を実行できるプログラマブルコントローラを提供することにある。
【００１８】
【課題を解決するための手段】
上記した課題を解決するために、請求項１記載のものは、データを読み書きする汎用レジスタと、命令を実行すべきアドレスを計算するアドレス計算部と、外部メモリへデータを読み書きするメモリアクセス部と、を有してビット処理をハードウエアで行うプロセッサを備え、入力されたプログラムの命令コードに基づいて、ビット演算処理及び複数ビットで構成されるワード単位の応用処理を演算対象にて行うプログラマブルコントローラにおいて、命令コードには、演算対象アドレスを間接指定するインデックス指定命令であるかどうかを表示するフラグビットを有した表示フラグと、演算に用いられる直値アドレスと、が設けられ、汎用レジスタにはセレクタが接続され、セレクタにはフラグビットと直値アドレスとが入力され、表示フラグがインデックス指定命令を表示している場合、汎用レジスタ内のデータを演算対象アドレスとして出力して、表示フラグがインデックス指定命令を表示していない場合、直値アドレスをそのまま出力し、ハードウエアで処理を行う構成にしてある。
【００１９】
請求項２記載のものは、請求項１記載のものにおいて、前記命令コードが、前記演算対象をアドレスとするシーケンス命令である構成にしてある。
【００２０】
請求項３記載のものは、請求項２記載のものにおいて、前記セレクタが、前記アドレス計算部に設けられた構成にしてある。
【００２１】
請求項４記載のものは、請求項１記載のものにおいて、前記命令コードが、前記演算対象を設定値データとするタイマ又はカウンタ命令である構成にしてある。
【００２２】
請求項５記載のものは、請求項４記載のものにおいて、前記セレクタが、前記外部メモリからの読み出しデータパスに設けられた構成にしてある。
【００２３】
【発明の実施の形態】
本発明の第１実施形態を図１乃至図３に基づいて以下に説明する。
【００２４】
Ａはプロセッサで、５つの部分から形成されて、後述する命令コード６が演算対象をアドレスとするシーケンス命令の演算処理を行う。１は命令フェッチ部で、命令コード６が入力され、その命令コード６を取り込む。２は命令デコード部で、ｒ０乃至ｒ７からなりデータを読み書きする汎用レジスタ２１ａを有したレジスタ群２１、及び命令デコーダ２２が設けられて、命令フェッチ部１からの命令コード６を解読して実行する。
【００２５】
３はアドレス計算部で、ＣＰＵ等からなる演算機（ＡＬＵ）３１が設けられ、命令デコード部２で解読された命令コード６に基づいて命令を実行すべきアドレス計算を行う。このＡＬＵ３１には、命令がインデックス指定命令のときアドレスを出力するセレクタ７が設けられており、このものについては詳しく後述する。
【００２６】
４はメモリアクセス部で、外部メモリ４１が設けられ、その外部メモリ４１にＡＬＵ３１からアドレスが入力されさらに汎用レジスタ２１ａからデータが書き込まれて、外部メモリ４１から読み出しデータが出力される。
【００２７】
５は演算処理部で、ＣＰＵ等からなる演算機（ＡＬＵ）５１及びビットアキュミュレータ（ＢＡＣＣ）５２が設けられて、メモリアクセス部４から演算対象データが入力されるとともに汎用レジスタ２１ａへデータを書き込み、ビット演算処理を行う。
【００２８】
このものの動作を説明する。命令コード６には、１ビットで構成される表示フラグ６１と、命令６２及び直値アドレス６３とが設けられ、表示フラグ６１が演算対象を間接指定するインデックス指定命令の有無を表示する。命令コード６が入力されると、インデックス指定されていない命令の場合、命令コード６中に含まれる直値アドレスがそのままアドレス計算部３を通り、外部メモリ４１に入力される。外部メモリ４１から出力されたデータは、演算処理部のＡＬＵ５１に入力され、命令コード６中に含まれるビット位置指定データと併せ、演算対象ビットに対してのみ指定された演算を実行する。
【００２９】
インデックス指定された命令の場合、アドレス計算手順を図２のブロック図に基づいて説明する。命令コード６には、この命令がインデックス指定命令であるか、そうでないかを表示する表示フラグ６１が設けられている。この表示フラグ６１のフラグビットと命令コード６中の直値アドレスデータとが、セレクタ７へ入力される。さらに、セレクタ７は、プロセッサに設けられた汎用レジスタ２１ａと接続されて、かつ、汎用レジスタ２１ａの中のどのレジスタが接続されるか予めハードで決められている。本例ではｒ１レジスタが接続されて、そのレジスタデータが入力される。表示フラグ６１が、命令コード６中にインデックス指定命令があることを表示していれば、セレクタ７はｒ１のデータを演算対象アドレスとして外部メモリへ出力して、そうでなければ命令コード６中の直値アドレス６３を出力する。後の動作は、従来のビット処理命令と同じである。
【００３０】
このハードウエアにより、インデックス指定命令を実行したときの手順を図３に示すフローチャートに基づいて説明する。まず、＃１において、インデックスレジスタのデータ（ＩＸ）を読み出してレジスタ群２１に設けられている汎用レジスタ２１ａのｒ２へ、そのデータを入力する。＃２で、ｒ２のデータと命令コード６中の直値とを加算して、演算対象アドレスを汎用レジスタ２１ａのｒ１に入力する。次いで、＃３において、インデックス指定命令であるＳＴＩＸＸ３を実行する。
【００３１】
このように、インデックス指定命令は、インデックスレジスタのデータを読み出して、実際の演算アドレス計算値を汎用レジスタ２１ａのｒ１にセットするだけで実行される。
【００３２】
かかる第１実施形態のプログラマブルコントローラにあっては、上記したように、演算対象を間接指定するインデックス指定命令の有無を表示する表示フラグ６１が命令コード６中に設けられて、汎用レジスタ２１ａと接続されたセレクタ７が表示フラグ６１を識別した結果に基づいて、汎用レジスタ２１ａの内容を演算対象アドレスとしてハードウエアでインデックス指定命令の処理を行うから、命令コード６中のアドレスを演算対象とした従来と異なって、種々の前処理命令が不要となってプログラム用メモリを縮小化して、インデックス指定命令の演算実行における演算処理時間の高速化を実現できる。
【００３３】
また、命令コード６が、演算対象をアドレスとするシーケンス命令であるから、ビット処理命令の種々の前処理命令が不要となって、インデックス指定された接点又はコイル等を含む論理条件を記述したシーケンス命令を、演算処理時間を高速化して演算実行できる。
【００３４】
また、セレクタ７がアドレス計算部３に設けられたから、セレクタ７が、表示フラグ６１を識別した結果、命令コード６中にインデックス指定命令があれば汎用レジスタ２１ａの内容を、そうでなければ命令コード６の直値を、それぞれアドレスとして出力して、簡単な構成でもってインデックス指定されたシーケンス命令を実行することができる。
【００３５】
なお、汎用レジスタ２１ａ、アドレス計算部３及びメモリアクセス部４を有したプロセッサＡの構造、１ビットで構成された表示フラグ６１を有する命令コード６の構成、ビット処理命令の演算内容のそれぞれは、第１実施形態に限定されるものではない。
【００３６】
本発明の第２実施形態を図４乃至図６に基づいて以下に説明する。なお、第２実施形態では第１実施形態と異なる機能について述べることとし、第１実施形態と実質的に同一機能を有する部材については、同一符号を付してある。
【００３７】
Ｂはプロセッサで、５つの部分から形成されて、命令コード６が演算対象を設定値データとするタイマ又はカウンタ命令の演算を行う。セレクタ７が、メモリアクセス部に設けられて、外部メモリ４１の読み出しデータパスに接続されて読み出しデータが入力される。
【００３８】
このものの動作を説明する。命令コード６が入力されると、インデックス指定されていない命令の場合、命令コード６中に含まれるタイマ又はカウンタ番号から一意的に決まる設定値アドレスが、アドレス計算部３を通り、外部メモリ４１に与えられる。外部メモリ４１から出力されたデータは、セレクタ７を通り演算処理部のＡＬＵ５１に入力され、ＡＬＵ５１ではそのデータを設定値として処理する。
【００３９】
インデックス指定された命令の場合、図５のブロック図に示すように、命令コード６には、この命令がインデックス指定命令であるか、そうでないかを表示する表示フラグ６１が設けられている。この表示フラグ６１のフラグビットが、セレクタ７のセレクト入力に入る。
【００４０】
セレクタ７は、プロセッサＢに設けられた汎用レジスタ２１ａと接続されて、かつ、汎用レジスタ２１ａの中のどのレジスタが接続されるか予めハードで決められており、本例ではｒ２レジスタが接続されている。このセレクタ７に、命令コード６中のタイマ又はカウンタ番号から一意的に決まるアドレスでもって外部メモリ４１から読み出されたデータと、ｒ２レジスタのデータとが入力される。
【００４１】
表示フラグ６１が、命令コード６中にインデックス指定命令のあることを表示していれば、セレクタ７はｒ２を、そうでなければ外部メモリ４１から読み出されたデータを出力する。以降の動作は、従来のタイマ又はカウンタ命令と同じである。
【００４２】
このハードウエアにより、タイマ又はカウンタ命令の設定値インデックス指定命令を実行したときの手順を、図６に示すフローチャートに基づいて説明する。まず、＃１１において、インデックスレジスタ（ＩＸ）のデータを読み出してレジスタ群２１に設けられている汎用レジスタ２１ａのｒ１へ、そのデータを入力する。＃１２で、ｒ１のデータと命令コード６中の直値とを加算して、その結果を汎用レジスタ２１ａのｒ３に入力する。そして、＃１３で、ｒ３をアドレスとするワードデータ、すなわち設定値データ、を読み出して、ｒ２に入力する。次いで、＃１４において、演算対象となる設定値データに対する演算であるＴＭＲｎ命令を実行する。
【００４３】
このように、インデックス指定命令で修飾されたタイマ又はカウンタ命令は、インデックスレジスタを読み出して設定値データをｒ２にセットするだけで実行できる。
【００４４】
かかる第２実施形態のプログラマブルコントローラにあっては、上記したように、演算対象を間接指定するインデックス指定命令の有無を表示する表示フラグ６１が命令コード６中に設けられて、汎用レジスタ２１ａと接続されたセレクタ７が表示フラグ６１を識別した結果に基づいて、汎用レジスタ２１ａの内容を演算対象設定値データとしてハードウエアでインデックス指定命令の処理を行うから、命令コード６中のタイマ番号又はカウンタ番号でもって一意的に決まる設定値データを演算対象とした従来と異なって、種々の前処理命令が不要となってプログラム用メモリを縮小化して、インデックス指定命令の演算実行における演算処理時間の高速化を実現できる。
【００４５】
また、命令コード６が演算対象を設定値データとするタイマ又はカウンタ命令であるから、設定値インデックス指定命令の種々の前処理命令が不要となって、インデックス指定されたタイマ又はカウンタを含む制御条件を記述したタイマ又はカウンタ命令を、演算処理時間を高速化して演算実行できる。
【００４６】
また、セレクタ７が外部メモリからの読み出しデータパスに設けられたから、セレクタ７が、表示フラグ６１を識別した結果、命令コード６中にインデックス指定命令があれば汎用レジスタ２１ａの内容を、そうでなければ外部メモリ４１から読み出されるデータを、それぞれ出力して、簡単な構成でもってインデックス指定されたタイマ又はカウンタ命令を実行することができる。
【００４７】
なお、汎用レジスタ２１ａ、アドレス計算部３及びメモリアクセス部４を有したプロセッサＢの構造、１ビットで構成された表示フラグ６１を有する命令コード６の構成、命令の演算内容のそれぞれは、第２実施形態に限定されるものではない。
【００４８】
【発明の効果】
請求項１記載のものは、演算対象を間接指定するインデックス指定命令の有無を表示する表示フラグが命令コード中に設けられて、汎用レジスタと接続されたセレクタが表示フラグを識別した結果に基づいて、汎用レジスタの内容を演算対象としてハードウエアでインデックス指定命令の処理を行うから、種々の前処理命令が不要となってプログラム用メモリを縮小化して、インデックス指定命令の演算実行における演算処理時間の高速化を実現できる。
【００４９】
請求項２記載のものは、請求項１記載のものの効果に加えて、命令コードが、演算対象をアドレスとするシーケンス命令であるから、命令コード中のアドレスを演算対象とした従来と異なって、ビット処理命令の種々の前処理命令が不要となって、インデックス指定された接点又はコイル等を含む論理条件を記述したシーケンス命令を、演算処理時間を高速化して演算実行できる。
【００５０】
請求項３記載のものは、請求項２記載のものの効果に加えて、セレクタがアドレス計算部３に設けられたから、セレクタが、表示フラグを識別した結果、命令コード中にインデックス指定命令があれば汎用レジスタの内容を、そうでなければ命令コード中の直値を、それぞれアドレスとして出力して、簡単な構成でもってインデックス指定されたシーケンス命令を実行することができる。
【００５１】
請求項４記載のものは、請求項１記載のものの効果に加えて、命令コードが演算対象を設定値データとするタイマ又はカウンタ命令であるから、命令コード６中のタイマ番号又はカウンタ番号でもって一意的に決まる設定値データを演算対象とした従来と異なって、設定値インデックス指定命令の種々の前処理命令が不要となって、インデックス指定されたタイマ又はカウンタを含む制御条件を記述したタイマ又はカウンタ命令を、演算処理時間を高速化して演算実行できる。
【００５２】
請求項５記載のものは、請求項４記載のものの効果に加えて、セレクタが外部メモリからの読み出しデータパスに設けられたから、セレクタが、表示フラグを識別した結果、命令コード中にインデックス指定命令があれば汎用レジスタの内容を、そうでなければ外部メモリから読み出されるデータを、それぞれ出力して、簡単な構成でもってインデックス指定されたタイマ又はカウンタ命令を実行することができる。
【図面の簡単な説明】
【図１】本発明の第１実施形態を示す構成図である。
【図２】同上のセレクタの接続状態を表すブロック図である。
【図３】同上の動作のフローチャート図である。
【図４】本発明の第２実施形態を示す構成図である。
【図５】同上のセレクタの接続状態を表すブロック図である。
【図６】同上の動作のフローチャート図である。
【図７】従来例を示すシーケンス命令の命令例及びアドレスを表す図である。
【図８】同上のシーケンス命令の動作のフローチャート図である。
【図９】同上のタイマ又はカウンタ命令の命令例及び設定値データエリアにおけるアドレスを表す図である。
【図１０】同上のタイマ又はカウンタ命令の動作のフローチャート図である。
【符号の説明】
Ａ      プロセッサ（シーケンス命令）
Ｂ      プロセッサ（タイマ又はカウンタ命令）
２１ａ  汎用レジスタ
３      アドレス計算部
４      メモリアクセス部
４１    外部メモリ
６      命令コード
６１    表示フラグ
７      セレクタ
【図１】
0003651099.tif 000002
【図２】
0003651099.tif 000003
【図３】
0003651099.tif 000004
【図４】
0003651099.tif 000005
【図５】
0003651099.tif 000006
【図６】
0003651099.tif 000007
【図７】
0003651099.tif 000008
【図８】
0003651099.tif 000009
【図９】
0003651099.tif 000010
【図１０】
0003651099.tif 000011