(57)【特許請求の範囲】
【請求項１】
制御対象に接続されたＩ／Ｏと、制御プログラムやデータを格納するメモリと、通信処理・周辺処理・応用命令の実行を少なくとも行う汎用マイクロプロセッサとを備えるとともに、通常の命令の前に配置することでデータ領域の拡張やアドレスの間接指定を可能とした専用の拡張命令や、基本的なビット演算命令、複数ビットの応用命令等の命令語を順次読み込み、基本的なビット演算命令、複数ビットの応用命令であればそれらの命令の処理を実行し、拡張命令を読み込んだ場合には、後続の通常命令も読み込み、これら拡張命令，通常命令をあわせて命令の内容を解釈した後、命令の処理を実行する専用ハードウェアを備えたことを特徴するプログラマブルコントローラ。
【請求項２】
上記専用ハードウェアの制御をステートマシンで行い、命令読み出しを行うステートから通常命令か拡張命令かを判断する処理を独立したステートに分離したことを特徴とする請求項１記載のプログラマブルコントローラ。
【請求項３】
上記専用ハードウェアの制御をステートマシンで行い、命令読み出しを行うステートを、最初の１語目を読み出すステートと２語目以降の命令語を読み出すステートとで構成したことを特徴とする請求項１記載のプログラマブルコントローラ。
【請求項４】
拡張命令を読み込む処理において、読み込んだ拡張命令の内容を後で判別できるための最小限のデータ量に変換して内部の専用記憶手段に記憶し該記憶データを用いて命令実行の処理を行うことを特徴とする請求項１乃至３の何れか記載のプログラマブルコントローラ。
【請求項５】
上記専用ハードウェアが実行処理する命令中、類似処理を行う命令を複数のグループに分類し、上記専用ハードウェアを制御するステートマシンの命令実行を行うステートをグループ別に独立させたことを特徴とする請求項１乃至４の何れか記載のプログラマブルコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、基本的なビット演算命令処理と、複数ビットの応用命令処理の両方を処理することのできる専用ハードウェアを備えたプログラマブルコントローラに関する。
【０００２】
【従来の技術】
プログラマブルコントローラは、産業用装置、機械、ＦＡ装置の制御に広く用いられている。最も単純な構成は図７に示す通り、制御対象に接続された各種Ｉ／Ｏ１と制御プログラムやデータを格納したメモリ２と汎用マイクロプロセッサ（以下ＭＰＵと言う）３とで構成され、メモリ２に格納された命令をＭＰＵ３が順次解釈実行することで制御機能を実現している。ところで制御対象となる装置の複雑化、さらなる高速化の要求に応じて、より多数の入出力信号を高速に処理することが求められている。このため図８に示すようにビット演算処理を主とする基本命令と複数ビットで構成されるデータを処理する応用命令の−部を実行することができる専用ハードウェア（プロセッサ＜以下ＢＰＵと言う＞）４で高速化を実現し、通信処理・周辺処理・応用命令の実行などを行うＭＰＵ３、ユーザープログラムや内部リレーの情報などを格納するメモリや、制御対象や周辺装置などとの情報のやりとりを行う為の各種Ｉ／Ｏ１などから構成されたプログラマブルコントローラが提供されている。
【０００３】
そして更に高速化を図る手段として、ユーザーが作成した制御プログラムを高速実行に向く形式に変換してからＢＰＵで実行するという構成も提供されている。このプログラマブルコントローラの構成例を図９に示す。図９の構成では図８の構成に加えて、ＢＰＵ４のプログラムを格納するための第２のメモリ５を追加している。第１のメモリ２に格納されたユーザーが作成した制御プログラムを変換して第２のメモリ５に転送し、ＢＰＵ４は第２のメモリ５からプログラムを読み込み順次解釈実行することにより制御機能を実現する。図９の構成例の場合、第２のメモリ５に展開する命令に第１のメモリ２に格納された元の命令に比べて構造を単純化したＲＩＳＣ型の命令体系を採用したり、ＢＰＵ４をパイプライン構成にすることにより、図８の構成に比べて更に高速化を実現することができる。ただし命令メモリが２組必要になることと、命令語の構成によってはＭＰＵ３側とＢＰＵ４側でバスの構成が異なるため、バスインターフェースユニット（ＢＩＵ）６が新たに必要になるなど回路構成は複雑になり、その分コストも上昇する。
【０００４】
【発明が解決しようとする課題】
先にも述べた通り高速化の要求により、プログラマブルコントローラを構成するための専用ハードウェア（プロセッサ）を開発してシステム全体の動作速度の向上を進めてきた。その際、専用ハードウェアで実行するための命令語は、汎用マイクロプロセッサのそれとは異なりプログラマブルコントローラの構成を考慮して最適なものが開発されてきた。
【０００５】
その一方でより多数の入出力信号を処理したいという要求もあるが、一度専用ハードウェアの命令語を定めてしまうと、その要求に応えることが難しくなるという問題が生じることがある。この問題の説明のため、図１０に専用ハードウェアの命令語の構造の例を示す。命令語は１６bit 長でそのうちの６bit が命令の種類を示すオベコード部分（OP Code)、残りの１０bit がデータ番号(DATA No.)を示す部分であるとする。この場合、１つの命令で扱えるデータは１０bit で表現できる１０２４個となり、命令語を開発した時点ではこのデータ点数で十分であるという判断のもと、このような命令語が定義された。しかしより多数の入出力信号を処理したいという要求、すなわちより多くのデータ点数を扱いたいという要求に対しては、この命令語では対応できない場合がある。
【０００６】
そこでより多くのデータ点数を扱えるように命令語を修正することを検討する必要あるが、それまでの開発資産を無駄にしないため、修正した命令語は従来の命令語と上位互換性を持たせることが望まれる。その条件を満足するように修正した命令語の構成例を図１１に示す。命令語の中で未使用のコードを拡張命令として使用することにし、拡張命令を前置した命令語はデータ番号にあらかじめ定めた値を加算して解釈するものとする。図１１の例では拡張命令（Ｅｘｐａｎｄ1 ）を前置した命令語にはデータ番号に１０２４を、拡張命令（Ｅｘｐａｎｄ2 ）を前置した命令語にはデータ番号に２０４８を加算して解釈するものとする。すなわち図１１（ａ）はＸリレー１００番に対するＳＴ命令（スタート命令）、図１１（ｂ）はＸリレー１１２４番に対するＳＴ命令、図１１（ｃ）はＸリレー2 １４８番に対するＳＴ命令と解釈される。
【０００７】
このように命令語の未使用コードをデータ領域の拡張に用いる拡張命令として使用することにより、多数の入出力信号を処理したいという要求に応えることができる。また同様に未使用コードをインデックス修飾と呼ぶデータアドレスの間接指定に用いることにより、プログラム開発の自由度を上げることにも役立てることができる。ところでこのような拡張命令を追加する前の命令語が図８の構成のプログラマブルコントローラと同時に開発されたものである場合、命令語を実行するＢＰＵ４は追加された拡張命令を解釈実行できないため、このような命令語を使用することはできない。またユーザーが作成した制御プログラムをまったく別の形式の命令語に変換してから実行する図９の構成のプログラマブルコントローラではこのような拡張命令の追加にも対応できるが、その場合にはデータ点数の増加と処理速度の向上と引き替えにコスト上昇という欠点も生じることになる。
【０００８】
一方、図７のように専用ハードウェア（ＢＰＵ）を用いずにＭＰＵ３のソフトウェア処理だけで命令を解釈実行することもできるが、この場合は高速処理の要求に応えることが難しくなる。
【０００９】
本発明は上述の点に鑑みて為されたもので、その目的とするところは、データの領域の拡大やアドレスの間接指定を行うための拡張命令をもった命令語を高速に実行することができ、しかもコスト的にも安価なプログラマブルコントローラを提供することにある。
【００１０】
【発明を解決するための手段】
請求項１の発明では、制御対象に接続されたＩ／Ｏと、制御プログラムやデータを格納するメモリと、通信処理・周辺処理・応用命令の実行を少なくとも行う汎用マイクロプロセッサとを備えるとともに、通常の命令の前に配置することでデータ領域の拡張やアドレスの間接指定を可能とした専用の拡張命令や、基本的なビット演算命令、複数ビットの応用命令等の命令語を順次読み込み、基本的なビット演算命令、複数ビットの応用命令であればそれらの命令の処理を実行し、拡張命令を読み込んだ場合には、後続の通常命令も読み込み、これら拡張命令，通常命令をあわせて命令の内容を解釈した後、命令の処理を実行する専用ハードウェアを備えたことを特徴する。
【００１１】
請求項２の発明では、請求項１の発明において、上記専用ハードウェアの制御をステートマシンで行い、命令読み出しを行うステートから通常命令か拡張命令かを判断する処理を独立したステートに分離したことを特徴とする。
【００１２】
請求項３の発明では、請求項１の発明において、上記専用ハードウェアの制御をステートマシンで行い、命令読み出しを行うステートを、最初の１語目を読み出すステートと２語目以降の命令語を読み出すステートとで構成したことを特徴とする。
【００１３】
請求項４の発明では、請求項１乃至３の何れかの発明において、拡張命令を読み込む処理において、読み込んだ拡張命令の内容を後で判別できるための最小限のデータ量に変換して内部の専用記憶手段に記憶し該記憶データを用いて命令実行の処理を行うことを特徴とする。
【００１４】
請求項５の発明では、請求項１乃至４の何れかの発明において、上記専用ハードウェアが実行処理する命令中、類似処理を行う命令を複数のグループに分類し、上記専用ハードウェアを制御するステートマシンの命令実行を行うステートをグループ別に独立させたことを特徴とする。
【００１５】
【発明の実施の形態】
本発明は、データ点数の拡張やアドレスの間接指定を行うための拡張命令を追加した命令語を実行するプログラマブルコントローラを実現するにあたり、動作速度とコストのトレードオフを考慮して図８の構成を採用することにする。ここで拡張命令を実行する専用ハードウェアたるＢＰＵ４は、通常命令を読み込んだ時はその処理を、拡張命令を読み込んだときは更に後続の通常命令を読み込んであわせて命令の内容を解釈し、命令を実行することが可能なものとする。  以下本発明を、実施形態により説明する。
【００１６】
（実施形態１）
本実施形態は図１１（ｂ）、（ｃ）に示すように、通常の命令だけでなく別に定めた拡張命令（Ｅｘｐａｎｄ）を通常の命令の前に配置することによりデータ領域の拡張やアドレスの間接指定が可能となる命令語を定義し、その命令語を順次読み込み解釈実行する専用ハードウェアを実現し、それを用いて図８と同様な構成のプログラマブルコントローラを実現したもので、ＢＰＵ４の制御を図１で示すステートマシンで実現した。図１で用いられているステートの意味は
ＩＦ：命令読み出し（Instruction Fetch ）
ＩＤ：命令解読（Instruction Decode）
ＥＸ：実行（Execute)
で、図１ではＩＦステート（ステージ）で命令を読み出し、それを、ＩＤステート（ステージ）で解釈した後、もしそれが拡張命令だった場合は再びＩＦステート（ステージ）に戻ってさらに後続の命令読み出し処理を行い、拡張命令と後続の命令とを併せて命令の内容を解釈して命令の処理実行（ＥＸ１，…）に移る。また読み出した命令が拡張命令（Ｅｘｐａｎｄ）ではなく通常命令だった場合は命令解釈（解読）結果に従ってデータの読み書きや演算処理等の命令実行処理に移る。なお図ではステートマシンの一部のみを図示している。またハードウェア構成は図８と同じであるから、図８を参照し、ここでは図示しない。
（実施形態２）
本発明のように拡張命令を前置した命令の場合、上述したように命令解読と命令読み出しが繰り返されることになるが、この命令解読処理を本実施形態では、図２のステートマシンの状態遷移で示すように
ＩＤ１：通常命令または拡張命令を判断する処理
ＩＤ２：それ以外の命令解読処理
に分割しており、ＩＦ１ステート（ステージ）で命令を読み出し、命令解読ステート（ステージ）ＩＤ１で通常命令又は拡張命令の判断処理をすることにより、命令実行の高速化を図ることができる。
【００１７】
図３（ａ）、（ｂ）の命令実行時のタイミングチャートに示すように、通常命令のみの場合は命令解読ステート（ステージ）を分割しない図１のステートマシンを用いた構成（図３（ａ）の場合）でも本実施形態のように命令解読ステート（ステージ）を分割した構成（図３（ｂ）の場合）でも、命令実行時間は変わらない。しかし通常命令の前に拡張命令が配置された命令を実行する場合は、本実施形態では図３（ｅ) に示すように、最初の命令語を読み込んでそれが拡張命令であると判断し、更に命令語を読み込む動作が速くなるので、命令解読ステート（ステージ）を分割しない図１のステートマシンを用いた図３（ｄ）の場合に比べて命令実行時間を短縮することができる。 尚ハードウェア構成は図８と同じであるから，図８を参照し、ここでは図示しない。
【００１８】
（実施形態３）
ところで命令を実行するＢＰＵ４には命令を読み込むための命令レジスタは１つしか無いため、読み込んだ命令語が拡張命令であった場合はその情報をＢＰＵ４内部に記憶して更に後続の命令を読み込む。拡張命令を読み込んだという情報を記憶しないと命令レジスタの内容が後続命令で上書きされてしまうためであるが、この拡張命令を読み込んだと言う情報は最初の命令語を読み込む度にクリアしなければ、いま実行している命令が拡張命令を前置していない命令であっても、前に実行された命令が拡張命令付きの命令だった場合にその拡張命令の情報が現在の命令実行に悪影響を及ぼすことになる。
【００１９】
また命令語を読む込むときに無条件に拡張命令の情報をクリアすると、拡張命令を読み込んだ後の命令読み込みで拡張命令がクリアされてしまうので、正しく命令を実行することができなくなる。このように「最初の命令語を読み込んだ時に拡張命令情報をクリア」しなければならないが、これを実現するためには命令語読み込みと拡張命令情報のセットとクリアに関して複雑な制御回路を構成する必要が生じる。そこでステートマシンの命令読み出し処理を、最初の１語目を読み出すステートと２語目以降の命令語を読み出すステートの２つで実現することで、命令を実行する専用ハードウェアの制御回路を簡単にする。
【００２０】
本実施形態のＢＰＵ４を制御するステートマシンの状態遷移は上記実施形態と同様に図２に示すステートマシンの状態遷移を用いる。図４は本実施形態の命令実行時のタイミングチャートを示す。
【００２１】
本実施形態では図４（ａ）又は（ｃ）に示す命令読み出しを行うＩＦ１ステート（ステージ）で拡張命令情報を図４（ｂ）又は（ｄ）に示すようにＢＰＵ４内の拡張命令情報レジスタ（図示せず）をクリアするので、通常命令のみの図４（ａ）、（ｂ）の場合でも拡張命令が前置された図４（ｃ）、（ｄ）の場合でも、命令読み出し開始時に前の命令の影響を取り消すことができる。そして解読の結果最初に読み込んだ命令語が拡張命令でさらに命令語を読み込む必要があるときはＩＦ１ステート（ステージ）ではなくＩＦ２ステート（ステージ）に遷移して命令読み出しを行い、この時には命令解読の結果セットされた拡張命令情報（Ｅｘｐａｎｄ１）をクリアしないので、この拡張命令情報（Ｅｘｐａｎｄ１）を用いて誤りなく命令を実行することができる。
【００２２】
このようにデータ領域の拡張やアドレスの間接指定を行うための拡張命令を読み込んだ時には、その情報をＢＰＵ４内部の専用記憶手段である拡張命令情報レジスタに記憶するが、このとき拡張命令を命令語の形式そのままで保存するのではなく、拡張命令の判別ができる必要最小限の情報量に変換して記憶すると、ハードウェアの規模を削減することができる。  ここで図１０で示したように命令語のデータ幅を１６bit とし、拡張命令の種類が合計７種だとすると、命令語の形式でそのまま記憶する場合には１６bit 長の記憶場所が必要になるが、７種の拡張命令を表現するには拡張命令の有無１bit と拡張命令の番号を示す３bit の合計４bit でできるため、そのように拡張命令情報を変換すれば４bit の記憶場所ですむことになる。
【００２３】
図４で示した「拡張命令情報レジスタ」は、このように拡張命令の有無、種類を判別するために必要最小限のbit 幅で構成されている。
【００２４】
（実施形態４）
ところで、命令を解読した後は、解読した内容に従ってデータの読み書きや演算処理などの命令実行処理が行われる。これが図２のステートマシンで示したＥＸ１、ＥＸ２ステート（ステージ）であるが、プログラマブルコントローラの命令の種類によりアクセスするデータのアドレスも様々であり、そもそも命令の種類によってはメモリヘのアクセスが必要ないものや１つだけメモリからの読み込みが必要なもの、１つのデータを読み込んでそれを基に演算処理を行いその結果を再び１つのメモリに書き込むものや、複数のメモリの値を読み込んで演算処理を行いその結果を複数のメモリに書き込むものなど様々なものがあり、それらをすべて場合分けしてＥＸ１、ＥＸ２、…ステート（ステージ）で実行するとステート１つあたりの処理が複雑になり、命令実行にかかる時間も多くなってしまう。そこでプログラマブルコントローラの命令をメモリヘのアクセスの様子などに注目してよく似た処理を行う命令のグループに分類して、ステートマシンの命令実行を行うステートを命令のグループ別に独立して持たせることにより、命令の実行速度を向上させることにしたのが本実施形態である。
【００２５】
図５は本実施形態のステートマシンの状態遷移を示し、図６は実施形態２の場合の命令実行時と本実施形態の命令実行時を比較するためののタイミングチャートを示す。
【００２６】
本実施形態のステートマシンは図２のステートマシンに比べてステートＤ２の後のＥＸ１、ＥＸ２、ＥＸ３、…の命令実行に関するステートが命令のグループ分けに応じて複数（ＥＸＡ１，…、ＥＸＢ１，…、ＥＸＣ１，…、）に分割している。このためステートマシンの規模は大きくなり、専用ハードウェアであるＢＰＵ４の規模も大きくなるが、その反面ＥＸステート（ステージ）の１つが実行する処理の内容は少なくなるため、ステート（ステージ）１つにかかる時間を少なくすることができる。図６（ｂ）に示すように命令のグループ分けに応じて複数に分割することによりＥＸステート（ステージ）に関する処理が図６（ａ）に示す場合に比べて速くなり、その結果命令実行速度を向上させることができる。
【００２７】
【発明の効果】
請求項１の発明は、制御対象に接続されたＩ／Ｏと、制御プログラムやデータを格納するメモリと、通信処理・周辺処理・応用命令の実行を少なくとも行う汎用マイクロプロセッサとを備えるとともに、通常の命令の前に配置することでデータ領域の拡張やアドレスの間接指定を可能とした専用の拡張命令や、基本的なビット演算命令、複数ビットの応用命令等の命令語を順次読み込み、基本的なビット演算命令、複数ビットの応用命令であればそれらの命令の処理を実行し、拡張命令を読み込んだ場合には、後続の通常命令も読み込み、これら拡張命令，通常命令をあわせて命令の内容を解釈した後、命令の処理を実行する専用ハードウェアを備えたので、データ領域の拡大やアドレスの間接指定を行うための拡張命令を持った命令語を高速に実行することができ、また構成も簡単でコストも安価であるという効果がある。
【００２８】
請求項２の発明は、請求項１の発明において、上記専用ハードウェアの制御をステートマシンで行い、命令読み出しを行うステートから通常命令か拡張命令かを判断する処理を独立したステートに分離したので、上記拡張命令を前置した命令を実行する際の高速化を実現することができるという効果がある。
【００２９】
請求項３の発明は、請求項１の発明において、上記専用ハードウェアの制御をステートマシンで行い、命令読み出しを行うステートを、最初の１語目を読み出すステートと２語目以降の命令語を読み出すステートとで構成したので、命令読み出しと拡張命令の情報の記憶処理を簡単にすることができ、制御回路の設計を容易にできるという効果がある。
【００３０】
請求項４の発明は、請求項１乃至３の何れかの発明において、拡張命令を読み込む処理において、読み込んだ拡張命令の内容を後で判別できるための最小限のデータ量に変換して内部の専用記憶手段に記憶し該記憶データを用いて命令実行の処理を行うので、読み込んだ拡張命令の情報を記憶する記憶手段の規模を削減することができ、プログラマブルコントローラの中の命令を実行する専用ハードウェア部分の規模を削減することができるという効果がある。
【００３１】
請求項５の発明は、請求項１乃至４の何れかの発明において、上記専用ハードウェアが実行処理する命令中、類似処理を行う命令を複数のグループに分類し、上記専用ハードウェアを制御するステートマシンの命令実行を行うステートをグループ別に独立させたので、命令実行速度を向上させることができるという効果がある。
【図面の簡単な説明】
【図１】実施形態１に用いる専用ハードウェアを制御するステートマシンの構成図である。
【図２】実施形態２に用いる専用ハードウェアを制御するステートマシンの構成図である。
【図３】同上の動作説明用タイミングチャートである。
【図４】実施形態３の動作説明用タイミングチャートである。
【図５】実施形態４に用いる専用ハードウェアを制御するステートマシンの構成図である。
【図６】同上の動作説明用タイミングチャートである。
【図７】プログラマブルコントローラの一例を示す構成図である。
【図８】プログラマブルコントローラの別の例を示す構成図である。
【図９】プログラマブルコントローラの他の例を示す構成図である。
【図１０】プログラマブルコントローラの命令語の構造説明図である。
【図１１】（ａ）は通常命令の説明図である。
（ｂ）は通常命令と拡張命令との説明図である。
（ｃ）は通常命令と別の拡張命令との説明図である。
【符号の説明】
ＩＦ        命令読み出しのステート（ステージ）
ＩＤ        命令解読のステート（ステージ）
ＥＸ１，…  実行のステート（ステージ）
【図１】
0003733746.tif 000002
【図２】
0003733746.tif 000003
【図３】
0003733746.tif 000004
【図４】
0003733746.tif 000005
【図５】
0003733746.tif 000006
【図６】
0003733746.tif 000007
【図７】
0003733746.tif 000008
【図８】
0003733746.tif 000009
【図９】
0003733746.tif 000010
【図１０】
0003733746.tif 000011
【図１１】
0003733746.tif 000012