(57)【特許請求の範囲】
【請求項１】
シーケンスプログラムとシーケンス演算に使用するデバイス情報およびマイクロプロセッサがタスク情報を格納する第１の記憶手段と、シーケンス演算に使用するデバイス情報を格納する第２の記憶手段と、前記第１の記憶手段から順次シーケンスプログラムを読み出しラッチするパイプラインレジスタとを少なくとも備え、前記シーケンスプログラムのパイプライン処理をおこなうプログラマブルコントローラであって、
前記シーケンスプログラムによって前記デバイス情報を前記第１の記憶手段または第２の記憶手段のいずれにリード／ライトするかを選択する選択手段と、
前記選択手段によって第１の記憶手段が選択された場合は、デバイス情報のリード／ライト時にパイプライン処理を中断するとともに、該デバイス情報のリード／ライトが完了するまで前記シーケンスプログラムのリードを禁止し、前記選択手段によって第２の記憶手段が選択された場合は、前記デバイス情報のリード／ライトとシーケンスプログラムのリードを同時に行うよう制御する制御手段と、
を備えたことを特徴とするプログラマブルコントローラ。
【請求項２】
前記パイプラインレジスタは、前記第１の記憶手段から1つのシーケンスプログラムのデータをすべてリードしたときに該データをまとめて格納するレジスタであり、前記制御手段は、前記1つのシーケンスプログラムのデータのリードが完了するまで、前記第１の記憶手段からデバイス情報のリード／ライトを実行しないよう制御することを特徴とする請求項１に記載のプログラマブルコントローラ。
【請求項３】
前スキャンでの命令の実行／非実行を示すビットをシーケンスプログラムとともに格納する第３の記憶手段をさらに備えたことを特徴とする請求項１または２に記載のプログラマブルコントローラ。
【請求項４】
前記制御手段は、前記デバイス情報のリード／ライトを実行する命令が入力された際に、直前のシーケンスプログラムの接点の状態のオン／オフにより実行条件が成立した場合には、前記第１の記憶手段または前記第２の記憶手段にデバイス情報のリード／ライトを実行し、実行条件が成立しない場合には、前記第１の記憶手段または前記第２の記憶手段にデバイス情報のリード／ライトを実行しないよう制御することを特徴とする請求項１、２または３に記載のプログラマブルコントローラ。
【請求項５】
前記制御手段は、直前のシーケンスプログラムの接点の状態が変化したスキャンでデバイス情報のリード／ライトを実行する命令が入力された際に、直前のシーケンスプログラムの接点の状態と前スキャンでの命令の実行／非実行を示すビットのオン／オフにより実行条件が成立した場合には、前記第１の記憶手段または前記第２の記憶手段にデバイス情報のリード／ライトを実行し、実行条件が成立しない場合には、前記第１の記憶手段または前記第２の記憶手段にデバイス情報のリード／ライトを実行しないよう制御することを特徴とする請求項１、２または３に記載のプログラマブルコントローラ。
【請求項６】
前記制御手段は、直前のシーケンスプログラムの接点の状態が変化したスキャンで実行される命令が入力された際に、前記第３の記憶手段に接点状態を格納することを特徴とする請求項３に記載のプログラマブルコントローラ。
【請求項７】
前記制御手段は、前記シーケンスプログラムに従ってパイプライン処理を実行中に前記マイクロプロセッサにより前記第１の記憶手段または前記第２の記憶手段に対してリード／ライトをおこなう場合には、前記パイプライン処理を停止するとともに、前記マイクロプロセッサにより前記第１の記憶手段または前記第２の記憶手段に対するリード／ライトを開始するよう制御することを特徴とする請求項１〜４のいずれか一つに記載のプログラマブルコントローラ。
【請求項８】
前記制御手段は、Ｓ／Ｗ命令の演算を行う際に、直前のシーケンスプログラムの接点の状態と前スキャンでの命令の実行／非実行を示すビットのオン／オフにより実行条件が成立した場合には、パイプライン処理を停止して前記マイクロプロッセッサにより前記Ｓ／Ｗ命令を実行し、実行条件が成立しない場合には、前記マイクロプロセッサによる前記Ｓ／Ｗ命令を実行しないよう制御することを特徴とする請求項１〜４のいずれか一つに記載のプログラマブルコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、シーケンスプログラムとシーケンス演算に使用するデバイス情報およびマイクロプロセッサがタスク情報を格納する第１の記憶手段および第２の記憶手段と、第１の記憶手段から順次シーケンスプログラムを読み出しラッチするパイプラインレジスタとを少なくとも備え、シーケンスプログラムのパイプライン処理をおこなうプログラマブルコントローラに関し、特に、高速な演算処理を実行できる構成と、小型／低価格な構成を同一のハードウェアで実現することができるプログラマブルコントローラに関する。
【０００２】
【従来の技術】
プログラマブルコントローラは、ＲＡＭなどのシーケンスプログラム格納部に格納されたシーケンスプログラムを順次読み出し、読み出したシーケンスプログラムに従って演算を実行するものであり、シーケンスプログラムによっては演算実行の際にデバイス情報のリード／ライトを実行する。
【０００３】
図１６は、従来の一般的なプログラマブルコントローラの構成を示すブロック図である。４７はシーケンスプログラムに従ってシーケンス演算を行うＣＰＵであり、４９はシーケンスプログラムとシーケンス演算で使用するデバイス情報を格納するＲＡＭであり、４８はＣＰＵのシステム情報が格納されているＲＯＭである。
【０００４】
同図に示すプログラマブルコントローラは、シーケンスプログラムを格納するＲＡＭとデバイス情報を格納するＲＡＭが同じものであるので、シーケンスプログラムのリードとデバイス情報のリード／ライトを同時に実行することはできない。このため、デバイス情報のリード／ライトを実行する場合には、シーケンスプログラムのリードを中断しなければならないので、処理時間が延びてしまうという問題がある。その一方で、かかるプログラマブルコントローラは、その構成が単純で部品点数も少ないため、低価格で小型のハードウエアを実現できるという利点がある。
【０００５】
次に、特開平１０−１９８４０９号公報に開示された記載されたプログラマブルコントローラについて説明する。この先行技術では、シーケンスプログラムを格納するＲＡＭとデバイス情報を格納するＲＡＭとを分離させることによって、両方のＲＡＭに同時にアクセスできるよう構成することにより、処理の高速化を図っている。
【０００６】
図１７は、上記先行技術のプログラマブルコントローラの構成を示すブロック図である。５０はシーケンスプログラムに従ってシーケンス演算を行うＣＰＵであり、５２はシーケンスプログラムを格納するシーケンスプログラムＲＡＭであり、５３はシーケンス演算で使用する入力情報や出力情報を格納するデバイスＲＡＭであり、５１はＣＰＵのシステム情報が格納されているＲＯＭである。
【０００７】
この構成においては、シーケンスプログラムを格納するＲＡＭとデバイス情報を格納するＲＡＭが分離されているため、ＣＰＵがシーケンスプログラムを順次リードしているときに、デバイス情報のリード／ライトを同時に実行することができる。よって、シーケンスプログラムに従ってデバイス情報をリード／ライトして演算処理する場合に、シーケンスプログラムのリードとデバイス情報のリード／ライトが並列処理できる。したがって、シーケンスプログラムのリードを中断させずに、デバイス情報のリード／ライトができるため、演算処理を高速に行うことができる。その反面で、前述した従来技術のプログラマブルコントローラよりもＲＡＭが多くなり、データバスの本数も多くなるため、ハードウエアが高価格、大型化するという問題がある。
【０００８】
【発明が解決しようとする課題】
このように、従来のプログラマブルコントローラには、（１）シーケンスプログラムとデバイス情報を同じＲＡＭに格納するものと、（２）シーケンスプログラムとデバイス情報を別個のＲＡＭに格納するものがあり、それぞれ一長一短があるわけであるが、低価格で小型の構成と高速演算の構成を同一のハードウェアで実現することはできない。したがって、低価格で小型の構成と高速演算のプログラマブルコントローラの2つが必要な場合は、2種類のハードウェアが必要になってしまう。
【０００９】
この発明は、上記従来技術による問題点を解決するためになされたものであり、シーケンスプログラムを格納するＲＡＭとデバイス情報を格納するＲＡＭを共有化して使用するＲＡＭを減らすことによって、低価格化や小型化を実現する構成と、ＲＡＭを2つ用いそれぞれシーケンスプログラムを格納するＲＡＭとデバイス情報を格納するＲＡＭとして使用し、シーケンスプログラムのリードとデバイス情報リード／ライトの処理を並列に実施することにより高速処理を実現する構成を同一のハードウェアで実現することができるプログラマブルコントローラを提供することを目的とする。
【００１０】
【課題を解決するための手段】
上述した課題を解決し、目的を達成するため、この発明に係るプログラマブルコントローラは、シーケンスプログラムとシーケンス演算に使用するデバイス情報およびマイクロプロセッサがタスク情報を格納する第１の記憶手段および第２の記憶手段と、前記第１の記憶手段から順次シーケンスプログラムを読み出しラッチするパイプラインレジスタとを少なくとも備え、前記シーケンスプログラムのパイプライン処理をおこなうプログラマブルコントローラであって、前記シーケンスプログラムによって前記デバイス情報を前記第１の記憶手段または第２の記憶手段のいずれにリード／ライトするかを選択する選択手段と、前記第１の記憶手段にリード／ライトするシーケンスプログラムが入力された場合は、デバイス情報のリード／ライト時にパイプライン処理を中断するとともに、該デバイス情報のリード／ライトが完了するまで前記シーケンスプログラムのリードを禁止し、前記第２の記憶手段にリード／ライトするシーケンスプログラムが入力された場合には、前記デバイス情報のリード／ライトとシーケンスプログラムのリードを同時に行うよう制御する制御手段と、を備えたことを特徴とする。
【００１１】
この発明によれば、シーケンスプログラムによってデバイス情報を第１の記憶手段または第２の記憶手段のいずれにリード／ライトするかを選択し、第１の記憶手段にリード／ライトするシーケンスプログラムが入力された場合は、デバイス情報のリード／ライト時にパイプライン処理を中断するとともに、該デバイス情報のリード／ライトが完了するまでシーケンスプログラムのリードを禁止し、第２の記憶手段にリード／ライトするシーケンスプログラムが入力された場合には、デバイス情報のリード／ライトとシーケンスプログラムのリードを同時に行うよう制御することとしたので、デバイスアドレスを変更するだけで、命令コードのリードとデバイス情報のリード／ライトが同時におこなえる高速な構成と、命令コードとデバイス情報を格納するメモリを共有化して、メモリの使用数を減少させ小型化、低価格化に優れた構成を同一のハードウェアで使い分けることができる。
【００１２】
つぎの発明にかかるプログラマブルコントローラは、上記の発明において、前記パイプラインレジスタは、前記第１の記憶手段から1つのシーケンスプログラムのデータをすべてリードしたときに該データをまとめて格納するレジスタであり、前記制御手段は、前記1つのシーケンスプログラムのデータのリードが完了するまで、前記第１の記憶手段からデバイス情報のリード／ライトを実行しないよう制御することを特徴とする。
【００１３】
この発明によれば、パイプラインレジスタは、第１の記憶手段から1つのシーケンスプログラムのデータをすべてリードしたときに該データをまとめて格納するレジスタであり、1つのシーケンスプログラムのデータのリードが完了するまで、第１の記憶手段からデバイス情報のリード／ライトを実行しないよう制御することとしたので、1つのシーケンスプログラムのデータを複数回に分けてリードする場合にも適用することができる。
【００１４】
つぎの発明にかかるプログラマブルコントローラは、上記の発明において、前スキャンでの命令の実行／非実行を示すビットをシーケンスプログラムとともに格納する第３の記憶手段をさらに備えたことを特徴とする。
【００１５】
この発明によれば、前スキャンでの命令の実行／非実行を示すビットをシーケンスプログラムとともに格納する第３の記憶手段を設けることとしたので、前スキャンでの命令の実行／非実行を利用して、命令デコード部で命令の実行／非実行を判断することができる。
【００１６】
つぎの発明にかかるプログラマブルコントローラは、上記の発明において、前記制御手段は、前記デバイス情報のリード／ライトを実行する命令が入力された際に、直前のシーケンスプログラムの接点の状態のオン／オフにより実行条件が成立した場合には、前記第１の記憶手段または前記第２の記憶手段にデバイス情報のリード／ライトを実行し、実行条件が成立しない場合には、前記第１の記憶手段または前記第２の記憶手段にデバイス情報のリード／ライトを実行しないよう制御することを特徴とする。
【００１７】
この発明によれば、デバイス情報のリード／ライトを実行する命令が入力された際に、直前のシーケンスプログラムの接点の状態のオン／オフにより実行条件が成立した場合には、第１の記憶手段または第２の記憶手段にデバイス情報のリード／ライトを実行し、実行条件が成立しない場合には、第１の記憶手段または第２の記憶手段にデバイス情報のリード／ライトを実行しないよう制御することとしたので、接点のオン／オフにより命令デコード部での命令の実行／非実行を判断し、非実行時にはメモリに対して演算結果をリード／ライトしないようにし、非実行時の処理時間を短くすることができる。
【００１８】
つぎの発明にかかるプログラマブルコントローラは、上記の発明において、前記制御手段は、直前のシーケンスプログラムの接点の状態が変化したスキャンでデバイス情報のリード／ライトを実行する命令が入力された際に、直前のシーケンスプログラムの接点の状態と前スキャンでの命令の実行／非実行を示すビットのオン／オフにより実行条件が成立した場合には、前記第１の記憶手段または前記第２の記憶手段にデバイス情報のリード／ライトを実行し、実行条件が成立しない場合には、前記第１の記憶手段または前記第２の記憶手段にデバイス情報のリード／ライトを実行しないよう制御することを特徴とする。
【００１９】
この発明によれば、直前のシーケンスプログラムの接点の状態が変化したスキャンでデバイス情報のリード／ライトを実行する命令が入力された際に、直前のシーケンスプログラムの接点の状態と前スキャンでの命令の実行／非実行を示すビットのオン／オフにより実行条件が成立した場合には、第１の記憶手段または第２の記憶手段にデバイス情報のリード／ライトを実行し、実行条件が成立しない場合には、第１の記憶手段または第２の記憶手段にデバイス情報のリード／ライトを実行しないよう制御することとしたので、接点のオン／オフと、前回スキャン時の命令の実行／非実行情報により、命令デコード部で命令の実行／非実行を判断し、非実行時にはメモリに対して演算結果をリード／ライトしないようにし、非実行時の処理時間を短くすることができる。
【００２０】
つぎの発明にかかるプログラマブルコントローラは、上記の発明において、前記制御手段は、直前のシーケンスプログラムの接点の状態が変化したスキャンで実行される命令が入力された際に、前記第３の記憶手段に接点状態を格納することを特徴とする。
【００２１】
この発明によれば、直前のシーケンスプログラムの接点の状態が変化したスキャンで実行される命令が入力された際に、第３の記憶手段に接点状態を格納することとしたので、直前のシーケンスプログラムの接点の状態が変化したスキャンで実行される命令をＨ／Ｗで高速に演算させることができる。
【００２２】
つぎの発明にかかるプログラマブルコントローラは、上記の発明において、前記制御手段は、前記シーケンスプログラムに従ってパイプライン処理を実行中に前記マイクロプロセッサにより前記第１の記憶手段または前記第２の記憶手段に対してリード／ライトをおこなう場合には、前記パイプライン処理を停止するとともに、前記マイクロプロセッサにより前記第１の記憶手段または前記第２の記憶手段に対するリード／ライトを開始するよう制御することを特徴とする。
【００２３】
この発明によれば、シーケンスプログラムに従ってパイプライン処理を実行中に前記マイクロプロセッサにより第１の記憶手段または第２の記憶手段に対してリード／ライトをおこなう場合には、パイプライン処理を停止するとともに、マイクロプロセッサにより第１の記憶手段または第２の記憶手段に対するリード／ライトを開始するよう制御することとしたので、ＣＰＵがＲＡＭにリード／ライトする際に、リード／ライト要求を出力するだけでパイプライン処理を停止してリード／ライトを実行できるため処理が高速になる。また、ＣＰＵに割り込みが発生した時にタスク情報を退避させるための専用のＲＡＭが必要なくなるため、低価格化および小型化を図ることができる。
【００２４】
つぎの発明にかかるプログラマブルコントローラは、上記の発明において、前記制御手段は、Ｓ／Ｗ命令の演算を行う際に、直前のシーケンスプログラムの接点の状態と前スキャンでの命令の実行／非実行を示すビットのオン／オフにより実行条件が成立した場合には、パイプライン処理を停止して前記マイクロプロッセッサにより前記Ｓ／Ｗ命令を実行し、実行条件が成立しない場合には、前記マイクロプロセッサによる前記Ｓ／Ｗ命令を実行しないよう制御することを特徴とする。
【００２５】
この発明によれば、Ｓ／Ｗ命令の演算を行う際に、直前のシーケンスプログラムの接点の状態と前スキャンでの命令の実行／非実行を示すビットのオン／オフにより実行条件が成立した場合には、パイプライン処理を停止してマイクロプロッセッサによりＳ／Ｗ命令を実行し、実行条件が成立しない場合には、マイクロプロセッサによるＳ／Ｗ命令を実行しないよう制御することとしたので、実行する必要のないＳ／Ｗ命令をＨ／Ｗによって判断し、マイクロプロセッサが余計な演算をしなくて済むため、Ｓ／Ｗ命令の演算処理を高速に実行することができる。
【００２６】
【発明の実施の形態】
以下に添付図面を参照して、この発明に係るプログラマブルコントローラの好適な実施の形態について詳細に説明する。
【００２７】
図１は、この発明に係るプログラマブルコントローラの構成を示すブロック図である。同図に示すように、このプログラマブルコントローラは、メモリインターフェース部１０（以下「メモリＩ／Ｆ部」という）と、ハードウエア（Ｈ／Ｗ）で演算する命令を処理するＨ／Ｗ命令演算処理部２０と、ソフトウエア（Ｓ／Ｗ）で演算する命令を処理するＳ／Ｗ命令演算処理部３０とからなる。
【００２８】
まず、メモリＩ／Ｆ部１０の構成について説明する。１１はシーケンスプログラムとシーケンス演算に使用するデバイス情報を格納するとともに、ＣＰＵがタスク情報を格納するＲＡＭであり、１２はシーケンス演算に使用するデバイス情報のみを格納するＲＡＭであり、１３は前スキャンでの命令の実行／非実行状態を格納するＲＡＭである。
【００２９】
１４はＨ／Ｗ命令演算処理部２０からのＲＡＭ１１、ＲＡＭ１２、ＲＡＭ１３へのリード／ライトと、Ｓ／Ｗ命令演算処理部３０からのＲＡＭ１１、ＲＡＭ１２、ＲＡＭ１３へのリード／ライトを制御するメモリ制御部であり、１５はＨ／Ｗ命令演算処理部２０の動作の基準クロック（図示せず）ごとに、順次インクリメントされるプログラムカウンタである。
【００３０】
次に、Ｈ／Ｗ命令演算処理部２０の構成について説明する。２１ａはパイプライン処理の起動（１）／停止（０）をおこなう起動レジスタであり、２１ｂはＲＡＭに格納されている命令コードの下位データを順次リードし、一時的に保持するパイプラインレジスタ（パイプラインレジスタ（０））である。
【００３１】
２１ｃはパイプラインレジスタ２１ｂに保持された命令コードの下位データとＲＡＭ１１に格納されている命令コードの上位データとＲＡＭ１３の前スキャンでの実行／非実行状態（１ビット）を順次リードして、命令コード＋１ビットのデータを保持するパイプラインレジスタ（パイプラインレジスタ（１））であり、２１ｄはパイプラインレジスタ２１ｃの内容を転送するパイプラインレジスタ（パイプラインレジスタ（２））であり、２１ｅはパイプラインレジスタ２１ｄの内容を転送するパイプラインレジスタ（パイプラインレジスタ（３））である。
【００３２】
２１ｆはパイプライン処理の状態を示すステートレジスタ（例えば０：パイプライン処理停止中、１：パイプライン処理実行中、２：Ｓ／Ｗ命令実行でパイプライン処理停止中）であり、２２ａはパイプラインレジスタ２１ｄに格納されているデータをデコードするデコード回路である。
【００３３】
２２ｂはデコード回路２２ａがデコードした内容を保持するデコード情報保持レジスタ（デコード情報保持レジスタ（１））であり、２２ｃはデコード情報保持レジスタ２２ｂの内容を保持するデコード情報保持レジスタ（デコード情報保持レジスタ（２））である。
【００３４】
２３はＲＡＭ１１またはＲＡＭ１２からリードしたデバイス情報を一時的に格納しておく入力レジスタであり、２４は接点の状態を保持する接点状態記憶部であり、２５はＲＡＭ１１、ＲＡＭ１２のＨ／Ｗ命令処理時に使用するデバイス情報のリード／ライトの要求とパイプライン停止要求と前スキャンでの命令の実行／非実行状態ライト要求を制御するＨ／Ｗ命令演算制御部である。
【００３５】
２６はデコード情報保持レジスタ２２ｂ、デコード情報保持レジスタ２２ｃのデコード情報に従いビット演算及びワード演算（算術演算、論理演算、転送）を行うＨ／Ｗ命令演算部であり、２６はＲＡＭ１１およびＲＡＭ１２からリードしたワード演算データを格納するＨ／Ｗ演算データ格納部である。
【００３６】
次に、Ｓ／Ｗ命令演算処理部３０の構成を説明する。３１はＲＡＭ１１に書かれたシーケンス命令がＳ／Ｗで演算する命令であった場合に、この命令を処理するＣＰＵであり、３２はＣＰＵ３１の処理内容が記述されているシステムＲＯＭである。
【００３７】
次に、命令コードの構成について説明する。図２は、命令コードの構成を説明するための説明図である。同図に示すように、下位Ｊビットは、デバイス情報が格納されているアドレス（以下「デバイスアドレス」という）を示しており、このデバイスアドレスによってデバイス情報のリード／ライトに使用するＲＡＭが指定される。
【００３８】
また、上位Ｋビットは命令の種別を示しており、図中に示すように命令コード中のＳ／Ｗ命令とＨ／Ｗ命令を区別するビットの値が０の場合にはＨ／Ｗ命令となり、１の場合にはＳ／Ｗ命令となる。
【００３９】
デバイスアドレスがＲＡＭ１１を指定していた場合は、ＲＡＭ１１からの命令コードのリードを中断させて、このＲＡＭ１１からデバイス情報をリードする。この機能について図３を用いて説明する。
【００４０】
図３は、メモリ制御部１４によるＲＡＭ１１のアクセスの制御を説明するための説明図である。起動レジスタ２１ａが０である間は、メモリ制御部１４はＲＡＭ１１のデータバスとＣＰＵ３１のデータバスを繋ぐ。起動レジスタが１である間は、メモリ制御部１４は、パイプラインレジスタ部２１とＲＡＭ１１のデータバスを繋ぎ、順次ＲＡＭ１１の命令コードをリードする。
【００４１】
しかし、パイプラインレジスタ部２１から出力されるパイプライン停止信号が１である間は、メモリ制御部１４内の命令コードのリード信号がマスクされるため、ＲＡＭ１１の命令コードのリードが中断される。
【００４２】
Ｈ／Ｗ命令演算制御部２５からＲＡＭ１１に対するリード要求が出力されると、入力レジスタ２３とＲＡＭ１１のデータバスを繋ぎ、ＲＡＭ１１からデバイス情報がリードされ入力レジスタ２３に格納される。Ｈ／Ｗ命令演算制御部２５からＲＡＭ１１に対するライト要求が出力されると、Ｈ／Ｗ命令演算部２６とＲＡＭ１１のデータバスを繋ぎ、ＲＡＭ１１に演算結果をライトする。
【００４３】
したがって、プログラマブルコントローラを起動して命令コードをリードしているときに、Ｈ／Ｗ命令によるＲＡＭ１１に対するデバイス情報のリード／ライトが発生した場合には、デバイス情報のリ−ド／ライトが優先され、デバイス情報のリード／ライトが実行される。
【００４４】
図４は、ＲＡＭ１１に命令コードが格納される形態と、ＲＡＭ１３に各命令の前スキャンでの命令の実行／非実行状態が格納される形態を示す図である。同図に示すように、命令コードは下位データと上位データに分かれてＲＡＭ１１に格納されている。Ｈ／Ｗ命令▲１▼の命令コードは、ＲＡＭ１１の２ｎ番地と２ｎ＋１番地に格納されている。また、Ｈ／Ｗ命令▲１▼の前スキャンでの命令の実行／非実行状態は、ＲＡＭ１３のｎ番地に格納されている。
【００４５】
プログラマブルコントローラを起動すると、図１のシステムＲＯＭ３２に書かれている内容（図示せず）に従い、ＣＰＵ３１は各種レジスタの設定等をした後、起動レジスタ２１ａを起動すなわち１にする。起動レジスタ２１ａが１になると、パイプラインレジスタ部２１から出力されているパイプライン停止信号が０になり、プログラムカウンタ１５がカウントを開始する。
【００４６】
メモリ制御部１４は、パイプラインレジスタ部２１とＲＡＭ１１のデータバスを繋ぎ、プログラムカウンタ１５の示すアドレスから順次命令コードをリードする。前スキャンでの命令の実行／非実行状態を格納しているアドレスは、プログラムカウンタ１５の値を１ビット右シフトして生成する。
【００４７】
図５は、プログラマブルコントローラ起動後の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｃへの転送される点を説明するための説明図である。メモリ制御部１４は、図４に示したＲＡＭ１１の２ｎ番地（プログラムカウンタ１５の値）のＨ／Ｗ命令▲１▼の命令コードの下位データをリードしてパイプラインレジスタ２１ｂに格納する。ＲＡＭ１１の２ｎ番地をリードした後、プログラムカウンタ１５の値はインクリメントされて２ｎ＋１になる。
【００４８】
次に、メモリ制御部１４は、ＲＡＭ１１の２ｎ＋１番地のＨ／Ｗ命令▲１▼の命令コードの上位データとＲＡＭ１３のｎ番地（プログラムカウンタ１５の値を１ビット右シフトした値）のＨ／Ｗ命令▲１▼の前スキャンでの実行／非実行状態をリードして、パイプラインレジスタ２１ｂに格納されたＨ／Ｗ命令▲１▼の命令コード下位データとともにパイプラインレジスタ２１ｃに格納する。このとき、プログラムカウンタ１５の値がインクリメントされ２ｎ＋２になる。以下、同様の手順でＨ／Ｗ命令▲２▼、Ｓ／Ｗ命令▲１▼の順にパイプラインレジスタ２１ｃに命令コードと前スキャンでの命令の実行／非実行状態が格納される。
【００４９】
次に、図１を用いてパイプラインレジスタ２１ｃに転送された命令コードと前スキャンでの命令の実行／非実行状態のパイプライン処理について説明をする。メモリ制御部１４では、プログラムカウンタ１５の最下位ビットの値が０であった場合には１になり、１であった場合には０となる信号（以下、「奇数／偶数判定信号」という）が生成され、パイプラインレジスタ部２１に出力される。つまり奇数／偶数判定信号は命令コード下位データリード時は１であり、命令コード上位データリード時は０である。
【００５０】
奇数／偶数判定信号が１から０になるとき、パイプラインレジスタ２１ｃの命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｄに転送される。また、奇数／偶数判定信号が０から１になるとき、パイプラインレジスタ２１ｄの命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｅに転送される。パイプラインレジスタ部２１からメモリ制御部１４にパイプライン停止信号が出力されると、プログラムカウンタ１５がインクリメントを実行しない構成となっているため、奇数／偶数判定信号も変化しなくなる。
【００５１】
奇数／偶数判定信号が変化しなければ、パイプラインレジスタ２１ｃ、パイプラインレジスタ２１ｄ、パイプラインレジスタ２１ｅの内容は更新されないため、パイプライン処理が中断されたことになる。パイプラインレジスタ２１ｄに命令コードと前スキャンでの命令の実行／非実行状態が格納されると、命令コード中のＳ／Ｗ命令とＨ／Ｗ命令を区別するビットでＨ／Ｗ命令かＳ／Ｗ命令かを判断する。
【００５２】
命令コード中のＳ／Ｗ命令とＨ／Ｗ命令を区別するビットが１（Ｓ／Ｗ命令）であった場合、パイプラインレジスタ部２１内で、前スキャンでの命令の実行／非実行状態と接点状態記憶部２４の接点状態でＳ／Ｗ命令の実行条件を判定し、実行条件が成立したら起動レジスタ２１ａを停止すなわち０にする。起動レジスタ２１ａが０の間は、パイプライン停止信号が１のままなので、パイプライン処理は停止したことになる。
【００５３】
パイプラインレジスタ部２１は、パイプライン処理停止後にステートレジスタ２１ｆを１から２にする。ＣＰＵ３１は、ステートレジスタ２１ｆを監視し、ステートレジスタ２１ｆが２であることを確認したならば、Ｓ／Ｗ命令の演算処理を実行する。Ｓ／Ｗ命令実行後、ＣＰＵ３１は起動レジスタ２１ａを起動すなわち１にして、停止していたパイプライン処理を起動させる。ここで、起動レジスタ２１ａが１になるとステートレジスタ２１ｆも２から１になる。
【００５４】
デコード回路２２ａは、パイプラインレジスタ２１ｄの命令コードをデコードする。前述したデバイスアドレスをデコード回路２２ａでデコードすることによって、シーケンス命令で使用するデバイス情報を格納しているＲＡＭがＲＡＭ１１であるかＲＡＭ１２であるかを判断する。
【００５５】
図６は、命令で使用するデバイス割付の例を示す図である。デバイスアドレスのＡ番地〜Ｂ番地はＲＡＭ１１の領域であり、Ｃ番地〜Ｄ番地はＲＡＭ１２の領域である。例えば、図６のように、デバイスＷ０がＲＡＭ１１の領域に割り付けられており、デバイスＤ０がＲＡＭ１２の領域に割り付けられていたとすると、ユーザーがシーケンスプログラムを作成する際に、デバイスＷ０を使用するとデバイスアドレスとしてＥ番地がＲＡＭ１１に書き込まれる。
【００５６】
同様に、デバイスＤ０を使用するとデバイスアドレスとしてＦ番地がＲＡＭ１１に書き込まれる。したがって、ユーザーがプログラムを作成する際に、高速処理が必要な場合にはデバイスＤ０を用い、高速処理が必要ではない場合にはデバイスＷ０を用いることが可能である。
【００５７】
デコード回路２２ａは、デバイスアドレスがＲＡＭ１１を指定していた場合は（上記の例ではＡ番地〜Ｂ番地）、ＲＡＭ１１のデバイス情報を使用した場合の演算に必要なパイプライン処理の停止数とＲＡＭ１１に対するデバイス情報のリード／ライトの有無および命令種別がデコード情報としてデコード情報保持レジスタ２２ｂに格納する。この場合は前述したようにデバイス情報をリード／ライトするときには命令コードのリードができないため、命令コードのリードとパイプライン処理を中断させなければならない。
【００５８】
したがって、ＲＡＭ１１に対してデバイス情報のリード／ライトがある場合には、パイプライン停止数が最低でも１になる。一方で、デバイスアドレスがＲＡＭ１２を指定していた場合は（上記の例ではＣ番地〜Ｄ番地）、ＲＡＭ１２のデバイス情報を使用した場合の演算に必要なパイプライン処理の停止数と、ＲＡＭ１２に対するデバイス情報のリード／ライトの有無および命令種別がデコード情報としてデコード情報保持レジスタ２２ｂに格納される。
【００５９】
デコード情報保持レジスタ２２ｂにデコード情報が格納されると、デコード情報保持レジスタ２２ｂからデコード情報がＨ／Ｗ命令演算制御部２５に出力される。デバイスアドレスがＲＡＭ１１を指定していた場合は、Ｈ／Ｗ命令演算制御部２５がＲＡＭ１１に対するデバイス情報リード／ライト要求をメモリ制御部１４に出力し、パイプライン停止要求をパイプラインレジスタ部２１に出力する。
【００６０】
パイプラインレジスタ部２１は、Ｈ／Ｗ命令演算制御部２５からパイプライン停止要求を受けると、パイプライン停止信号を１にして、パイプライン処理を中断させる。メモリ制御部１４はパイプライン停止信号が１になることで、命令コードのリード信号をマスクし、プログラムカウンタ１５のインクリメントを実行しない。
【００６１】
また、メモリ制御部１４は、Ｈ／Ｗ命令演算制御部２５からＲＡＭ１１に対するデバイス情報のリード／ライト要求を受けることにより、入力レジスタ２３またはＨ／Ｗ命令演算部２６とＲＡＭ１１のデータバスを繋ぎ、シーケンス命令によるＲＡＭ１１に対するデバイス情報のリード／ライトをおこなう。
【００６２】
一方、デバイスアドレスがＲＡＭ１２を指定していた場合は、Ｈ／Ｗ命令演算制御部２５はＲＡＭ１２に対するリード／ライト要求をメモリ制御部１４に出力する。メモリ制御部１４は、Ｈ／Ｗ命令演算制御部２５からＲＡＭ１２に対するリード／ライト要求を受けると、ＲＡＭ１１から命令コードのリードをおこないながら、シーケンス命令によるＲＡＭ１２に対するデバイス情報のリード／ライトをおこなう。
【００６３】
デコード情報保持レジスタ２２ｃにデコード情報が格納されると、デコード情報保持レジスタ２２ｃの命令種別信号がＨ／Ｗ命令演算部２６に出力され、リードされたデバイス情報を演算し、演算結果を接点状態記憶部２４やＲＡＭ１１、ＲＡＭ１２に格納する。
【００６４】
図７は、ＲＡＭ１１に格納されている命令コードを示す図である。Ｈ／Ｗ命令▲１▼は、ＲＡＭ１１若しくはＲＡＭ１２に格納されたデバイス情報をリードし、演算結果を接点状態記憶部２４に格納する接点命令である。Ｈ／Ｗ命令▲２▼は、接点状態記憶部２４に格納された接点情報に関係なく、ＲＡＭ１１若しくはＲＡＭ１２に格納されたデバイス情報をリードしてＨ／Ｗ演算データ格納部２７にリードしたデバイス情報を格納するデータロード命令である。
【００６５】
Ｈ／Ｗ命令▲３▼は、接点状態記憶部２４に格納された接点情報がＯＮすなわち１であれば、Ｈ/Ｗ演算データ格納部２７に格納されている演算データをＨ／Ｗ命令演算部２６で演算して演算結果をＲＡＭ１１若しくはＲＡＭ１２のデバイスに書き戻す命令である。
【００６６】
図８は、ＲＡＭ１２の領域に割付けられているデバイスを使用した場合に、図７の命令を実行したときのタイミングチャートである（デバイスアドレスがＲＡＭ１２を指定していた場合）。以下、図１、図７および図８を用いてデバイスアドレスがＲＡＭ１２の領域を指定していた場合の動作を説明する。
【００６７】
Ｔ１およびＴ２の期間では、前述したようにパイプライン処理が起動されてから、命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｃに格納されるまでを示している。このＴ１の期間ではＲＡＭ１１の２ｎ番地からＨ／Ｗ命令▲１▼の命令コードの下位データがリードされ、Ｔ２の期間ではＲＡＭ１１の２ｎ＋１番地からＨ／Ｗ命令▲１▼の命令コードの上位データがリードされる。
【００６８】
Ｔ３の期間は、プログラムカウンタ１５の値が２ｎ＋２になり、パイプラインレジスタ２１ｃにＨ／Ｗ命令▲１▼の命令コードと前スキャンでの命令の実行／非実行状態が格納された後を示すものである。この期間では、ＲＡＭ１１の２ｎ＋２番地のＨ／Ｗ命令▲２▼の命令コードの下位データがリードされる。
【００６９】
Ｔ４の期間は、プログラムカウンタ１５の値が２ｎ＋３になり、奇数／偶数判定信号が１から０になったところで、パイプラインレジスタ２１ｃのＨ／Ｗ命令▲１▼の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｄに格納された後を示すものである。この期間でデコード回路２２ａにおいてＨ／Ｗ命令▲１▼の命令コードがデコードされる。デコード回路２２ａのデコードによって、Ｈ／Ｗ命令▲１▼を示す命令種別信号が生成される。
【００７０】
また、デバイスアドレスがＲＡＭ１２を指定しているため、Ｈ／Ｗ命令▲１▼のＲＡＭ１２に対するデバイス情報リード要求と、パイプライン処理停止数が０であることを示す信号が生成される。また、この期間でＲＡＭ１１の２ｎ＋３番地のＨ／Ｗ命令▲２▼の命令コードの上位データがリードされる。
【００７１】
Ｔ５の期間は、プログラムカウンタ１５の値が２ｎ＋４になり、Ｈ／Ｗ命令▲２▼の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｃに転送され、奇数／偶数判定信号が０から１になったところで、パイプラインレジスタ２１ｄのＨ／Ｗ命令▲１▼の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｅに格納され、デコード回路２２ａのＨ／Ｗ命令▲１▼のデコード情報がデコード情報保持レジスタ２２ｂに転送された後を示すものである。
【００７２】
デコード情報保持レジスタ２２ｂにＨ／Ｗ命令▲１▼のデコード情報が転送されると、Ｈ／Ｗ命令▲１▼のＲＡＭ１２に対するデバイス情報リード要求と、パイプライン処理停止数が０であることを示す信号がＨ／Ｗ命令演算制御部２５に出力される。デコード情報保持レジスタ２２ｂからパイプライン処理停止数が０であることを示す信号がＨ／Ｗ命令演算制御部２５に出力されたため、パイプライン停止要求は１にならず、パイプライン処理は中断されない。
【００７３】
また、Ｈ／Ｗ命令演算制御部２５はＲＡＭ１２に対してデバイス情報のリード要求をメモリ制御部１４に出力し、メモリ制御部１４はＲＡＭ１２からデバイス情報をリードして入力レジスタ２３に格納する。この期間でＲＡＭ１１の２ｎ＋４番地のＨ／Ｗ命令▲３▼の命令コードの下位データがリードされる。
【００７４】
Ｔ６の期間は、プログラムカウンタ１５の値が２ｎ＋５になり、奇数／偶数判定信号が１から０になったところで、パイプラインレジスタ２１ｃのＨ／Ｗ命令▲２▼の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｄに格納され、デコード情報保持レジスタ２２ｂのＨ／Ｗ命令▲１▼のデコード情報がデコード情報保持レジスタ２２ｃに転送された後を示すものである。
【００７５】
デコード情報保持レジスタ２２ｃにＨ／Ｗ命令▲１▼のデコード情報が転送されると、Ｈ／Ｗ命令▲１▼を示す命令種別信号がＨ／Ｗ命令演算部２６に出力され、Ｔ５の期間で入力レジスタ２３に格納したデバイス情報を演算して、接点状態記憶部２４に演算結果を格納する。
【００７６】
図８は、リードしたデバイス情報がＯＮすなわち１であった場合であり、この場合は接点状態記憶部２４にはＯＮすなわち１が格納される。この期間でデコード回路２２ａにおいてＨ／Ｗ命令▲２▼の命令コードがデコードされる。デコード回路２２ａのデコードによって、Ｈ／Ｗ命令▲２▼を示す命令種別信号が生成される。
【００７７】
また、デバイスアドレスがＲＡＭ１２を指定しているため、Ｈ／Ｗ命令▲２▼のＲＡＭ１２に対するデバイス情報リード要求と、パイプライン処理停止数が０であることを示す信号が生成される。また、この期間でＲＡＭ１１の２ｎ＋５番地のＨ／Ｗ命令▲３▼の命令コードの上位データがリードされる。
【００７８】
Ｔ７の期間は、プログラムカウンタ１５の値が２ｎ＋６になり、Ｈ／Ｗ命令▲３▼の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｃに転送され、奇数／偶数判定信号が０から１になったところで、パイプラインレジスタ２１ｄのＨ／Ｗ命令▲２▼の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｅに格納され、デコード回路２２ａのＨ／Ｗ命令▲２▼のデコード情報がデコード情報保持レジスタ２２ｂに転送された後を示すものである。
【００７９】
デコード情報保持レジスタ２２ｂにＨ／Ｗ命令▲２▼のデコード情報が転送されると、Ｈ／Ｗ命令▲２▼のＲＡＭ１２に対するデバイス情報リード要求と、パイプライン処理停止数が０であることを示す信号がＨ／Ｗ命令演算制御部２５に出力される。デコード情報保持レジスタ２２ｂからパイプライン処理停止数が０であることを示す信号がＨ／Ｗ命令演算制御部２５に出力されたため、パイプライン停止要求は１にならず、パイプライン処理は中断されない。
【００８０】
Ｈ／Ｗ命令演算制御部２５は、ＲＡＭ１２に対してデバイス情報のリード要求をメモリ制御部１４に出力し、メモリ制御部１４は、ＲＡＭ１２からデバイス情報をリードして入力レジスタ２３に格納する。また、この期間でＲＡＭ１１の２ｎ＋６番地のＨ／Ｗ命令▲４▼の命令コードの下位データがリードされる。
【００８１】
Ｔ８の期間は、プログラムカウンタ１５の値が２ｎ＋７になり、パイプラインレジスタ２１ｃのＨ／Ｗ命令▲３▼の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｄに格納され、デコード情報保持レジスタ２２ｂのＨ／Ｗ命令▲２▼のデコード情報がデコード情報保持レジスタ２２ｃに転送された後を示すものである。
【００８２】
デコード情報保持レジスタ２２ｃにＨ／Ｗ命令▲２▼のデコード情報が転送されると、Ｈ／Ｗ命令▲２▼を示す命令種別信号がＨ／Ｗ命令演算部２６に出力され、Ｔ７の期間で入力レジスタ２３に格納したデバイス情報をＨ／Ｗ演算データ格納部２７に格納する。この期間でデコード回路２２ａにおいてＨ／Ｗ命令▲３▼の命令コードがデコードされる。デコード回路２２ａのデコードによって、Ｈ／Ｗ命令▲３▼を示す命令種別信号が生成される。
【００８３】
また、デバイスアドレスがＲＡＭ１２を指定し、かつ接点状態記憶部２４に格納された接点状態がＯＮすなわち１であるため、Ｈ／Ｗ命令▲３▼の実行条件が成立し、Ｈ／Ｗ命令▲３▼のＲＡＭ１２に対するデバイス情報ライト要求と、パイプライン処理停止数が０であることを示す信号が生成される。この期間でＲＡＭ１１の２ｎ＋７番地のＨ／Ｗ命令▲４▼の命令コードの上位データがリードされる。
【００８４】
Ｔ９の期間は、プログラムカウンタ１５の値が２ｎ＋８になり、Ｈ／Ｗ命令▲４▼の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｃに転送され、奇数／偶数判定信号が０から１になったところで、パイプラインレジスタ２１ｄのＨ／Ｗ命令▲３▼の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｅに格納され、デコード回路２２ａのＨ／Ｗ命令▲３▼のデコード情報がデコード情報保持レジスタ２２ｂに転送された後を示すものである。
【００８５】
デコード情報保持レジスタ２２ｂにＨ／Ｗ命令▲３▼のデコード情報が転送されると、Ｈ／Ｗ命令演算部２６にＨ／Ｗ命令▲３▼を示す命令種別信号が出力され、Ｔ８の期間でＨ／Ｗ演算データ格納部２７に格納されたデバイス情報をＨ／Ｗ命令演算部２６で演算する。この期間でＲＡＭ１１の２ｎ＋８番地のＨ／Ｗ命令▲５▼の命令コードの下位データがリードされる。
【００８６】
Ｔ１０の期間は、プログラムカウンタ１５の値が２ｎ＋９になり、奇数／偶数判定信号が１から０になったところで、パイプラインレジスタ２１ｃのＨ／Ｗ命令▲４▼の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｄに格納され、デコード情報保持レジスタ２２ｂのＨ／Ｗ命令▲３▼のデコード情報がデコード情報保持レジスタ２２ｃに転送された後を示すものである。
【００８７】
デコード情報保持レジスタ２２ｃにＨ／Ｗ命令▲３▼のデコード情報が転送されると、Ｈ／Ｗ命令▲３▼を示す命令種別信号がＨ／Ｗ命令演算部２６に出力され、Ｈ／Ｗ命令演算部２６はＴ９の期間で演算したデータをメモリ制御部１４に対して出力する。Ｈ／Ｗ命令演算制御部２５は、この期間でメモリ制御部１４にＲＡＭ１２に対するライト要求を出力し、メモリ制御部１４は、ＲＡＭ１２に対してＨ／Ｗ命令▲３▼の演算結果をライトする。また、この期間でデコード回路２２ａにおいてＨ／Ｗ命令▲４▼の命令コードがデコードされる。この期間でＲＡＭ１１の２ｎ＋９番地のＨ／Ｗ命令▲５▼の命令コードの上位データがリードされる。
【００８８】
図９は、ＲＡＭ１１の領域に割付けられているデバイスを使用した場合に、図７の命令を実行したときのタイミングチャートである（デバイスアドレスがＲＡＭ１１を指定していた場合）。以下、図１、図７および図９を用いてデバイスアドレスがＲＡＭ１１の領域を指定していた場合の動作を説明する。
【００８９】
Ｔ１およびＴ２の期間では、前述したようにパイプライン処理が起動されてから、命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｃに格納されるまでを示している。Ｔ１の期間ではＲＡＭ１１の２ｎ番地からＨ／Ｗ命令▲１▼の命令コードの下位データがリードされ、Ｔ２の期間ではＲＡＭ１１の２ｎ＋１番地からＨ／Ｗ命令▲１▼の命令コードの上位データがリードされる。
【００９０】
Ｔ３の期間は、プログラムカウンタ１５の値が２ｎ＋２になり、パイプラインレジスタ２１ｃにＨ／Ｗ命令▲１▼の命令コードと前スキャンでの命令の実行／非実行状態が格納された後を示すものである。この期間では、ＲＡＭ１１の２ｎ＋２番地のＨ／Ｗ命令▲２▼の命令コードの下位データがリードされる。
【００９１】
Ｔ４の期間は、プログラムカウンタ１５の値が２ｎ＋３になり、奇数／偶数判定信号が１から０になったところで、パイプラインレジスタ２１ｃのＨ／Ｗ命令▲１▼の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｄに格納された後を示すものである。この期間でデコード回路２２ａにおいてＨ／Ｗ命令▲１▼の命令コードがデコードされる。デコード回路２２ａのデコードによって、Ｈ／Ｗ命令▲１▼を示す命令種別信号が生成される。
【００９２】
また、デバイスアドレスがＲＡＭ１１を指定しているため、Ｈ／Ｗ命令▲１▼のＲＡＭ１１に対するデバイス情報リード要求と、パイプライン処理停止数が１であることを示す信号が生成される。また、この期間でＲＡＭ１１の２ｎ＋３番地のＨ／Ｗ命令▲２▼の命令コードの上位データがリードされる。
【００９３】
Ｔ５の期間は、プログラムカウンタ１５の値が２ｎ＋４になり、Ｈ／Ｗ命令▲２▼の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｃに転送され、奇数／偶数判定信号が０から１になったところで、パイプラインレジスタ２１ｄのＨ／Ｗ命令▲１▼の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｅに格納され、デコード回路２２ａのＨ／Ｗ命令▲１▼のデコード情報がデコード情報保持レジスタ２２ｂに転送された後を示すものである。
【００９４】
デコード情報保持レジスタ２２ｂにＨ／Ｗ命令▲１▼のデコード情報が転送されると、Ｈ／Ｗ命令▲１▼のＲＡＭ１１に対するデバイス情報リード要求とパイプライン処理停止数が１であることを示す信号がＨ／Ｗ命令演算制御部２５に出力される。Ｈ／Ｗ命令演算制御部２５は、ＲＡＭ１１に対してのデバイス情報リード要求をメモリ制御部１４に出力し、パイプライン停止要求を１にする。
【００９５】
パイプラインレジスタ部２１はパイプライン停止要求が１であるため、パイプライン停止信号を１にする。メモリ制御部１４は、パイプライン停止信号が１であるため、命令コードのリード信号をマスクし、プログラムカウンタ１５のインクリメントを実行しない。また、奇数／偶数判定信号も１のまま変化しない。
【００９６】
メモリ制御部１４は、Ｈ／Ｗ命令演算制御部２５からＲＡＭ１１に対するリード／ライト要求をうけると、入力レジスタ２３とＲＡＭ１１のデータバスを繋ぎ、ＲＡＭ１１からデバイス情報をリードして入力レジスタ２３に格納する。また、パイプラインレジスタ部２１では奇数／偶数判定信号が１のまま変化しないためパイプラインレジスタ２１ｃ、パイプラインレジスタ２１ｄ、パイプラインレジスタ２１ｅは更新されない。
【００９７】
パイプライン停止要求は、命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｅに転送されたタイミングで１になる。命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｅに転送されるのは、奇数／偶数判定信号が０から１になったときである。つまり、必ず命令コードの上位データがリードされた後にパイプライン停止要求が１になり、パイプライン処理が停止するようになっており、1つの命令コードをリードし終わるまではパイプライン処理は中断しない。
【００９８】
Ｔ６の期間は、プログラムカウンタ１５の値は２ｎ＋４であり、パイプラインレジスタ２１ｃ、パイプラインレジスタ２１ｄ、パイプラインレジスタ２１ｅの内容はＴ５の期間から変化していない。ただし、デコード情報保持レジスタ２２ｂのＨ／Ｗ命令▲１▼のデコード情報はデコード情報保持レジスタ２２ｃに転送されている。
【００９９】
デコード情報保持レジスタ２２ｃにＨ／Ｗ命令▲１▼のデコード情報が転送されると、Ｈ／Ｗ命令▲１▼の命令種別信号がＨ／Ｗ命令演算部２６に出力され、Ｔ５の期間で入力レジスタ２３に格納されたデバイス情報の演算を行い、接点状態記憶部２４に演算結果を格納する。
【０１００】
図９は、リードしたデバイス情報がＯＮすなわち１であった場合であり、このときは接点状態記憶部２４にはＯＮすなわち１が格納される。また、この期間でＲＡＭ１１の２ｎ＋４番地のＨ／Ｗ命令▲３▼の命令コードの下位データがリードされる。
【０１０１】
Ｔ７の期間は、プログラムカウンタ１５の値が２ｎ＋５になり、奇数／偶数判定信号が１から０になったところで、パイプラインレジスタ２１ｃのＨ／Ｗ命令▲２▼の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｄに格納された後を示すものである。この期間でデコード回路２２ａにおいてＨ／Ｗ命令▲２▼の命令コードがデコードされ、Ｈ／Ｗ命令▲２▼を示す命令種別信号が生成される。また、デバイスアドレスがＲＡＭ１１を指定しているため、Ｈ／Ｗ命令▲２▼のＲＡＭ１１に対するデバイス情報リード要求と、パイプライン処理停止数が1であることを示す信号が生成される。この期間でＲＡＭ１１の２ｎ＋５番地のＨ／Ｗ命令▲３▼の命令コードの上位データがリードされる。
【０１０２】
Ｔ８の期間は、プログラムカウンタ１５の値が２ｎ＋６になり、Ｈ／Ｗ命令▲３▼の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｃに転送され、奇数／偶数判定信号が０から１になったところで、パイプラインレジスタ２１ｄのＨ／Ｗ命令▲２▼の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｅに格納され、デコード回路２２ａのＨ／Ｗ命令▲２▼のデコード情報がデコード情報保持レジスタ２２ｂに転送された後を示すものである。
【０１０３】
デコード情報保持レジスタ２２ｂにＨ／Ｗ命令▲２▼のデコード情報が転送されると、Ｈ／Ｗ命令▲２▼のＲＡＭ１１に対するデバイス情報リード要求とパイプライン処理停止数が１であることを示す信号がＨ／Ｗ命令演算制御部２５に出力される。Ｈ／Ｗ命令演算制御部２５は、ＲＡＭ１１に対してのデバイス情報リード要求をメモリ制御部１４に出力し、パイプライン停止要求を１にする。
【０１０４】
パイプラインレジスタ部２１は、パイプライン停止要求が１であるため、パイプライン停止信号を１にする。メモリ制御部１４は、パイプライン停止信号が１であるため、命令コードのリード信号をマスクし、プログラムカウンタ１５のインクリメントを実行しない。また、パイプラインレジスタ部２１では奇数／偶数判定信号が１のまま変化しないため、パイプラインレジスタ２１ｃ、パイプラインレジスタ２１ｄ、パイプラインレジスタ２１ｅは更新されない。
【０１０５】
メモリ制御部１４は、Ｈ／Ｗ命令演算制御部２５からのＲＡＭ１１に対してのデバイス情報リード要求により、入力レジスタとＲＡＭ１１のデータバスを繋ぎ、ＲＡＭ１１からデバイス情報をリードして入力レジスタ２３に格納する。
【０１０６】
Ｔ９の期間は、プログラムカウンタ１５の値が２ｎ＋６であり、パイプラインレジスタ２１ｃ、パイプラインレジスタ２１ｄ、パイプラインレジスタ２１ｅの内容はＴ８の期間から変化していない。ただし、デコード情報保持レジスタ２２ｂのＨ／Ｗ命令▲２▼のデコード情報はデコード情報保持レジスタ２２ｃに転送されている。
【０１０７】
デコード情報保持レジスタ２２ｃにＨ／Ｗ命令▲２▼のデコード情報が転送されると、Ｈ／Ｗ命令▲２▼の命令種別信号がＨ／Ｗ命令演算部２６に出力され、Ｔ８の期間で入力レジスタ２３に格納されたデバイス情報をＨ／Ｗ演算データ格納部２７に格納する。この期間でＲＡＭ１１の２ｎ＋６番地のＨ／Ｗ命令▲４▼の命令コードの下位データがリードされる。
【０１０８】
Ｔ１０の期間は、プログラムカウンタ１５の値が２ｎ＋７になり、奇数／偶数判定信号が１から０になったところで、パイプラインレジスタ２１ｃのＨ／Ｗ命令▲３▼の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｄに格納された後を示すものである。この期間でデコード回路２２ａにおいてＨ／Ｗ命令▲３▼の命令コードがデコードされる。デコード回路２２ａのデコードによってＨ／Ｗ命令▲３▼の命令種別信号が生成される。
【０１０９】
また、デバイスアドレスがＲＡＭ１１を指定し、かつ接点状態記憶部２４に格納された接点状態がＯＮすなわち１であるため、Ｈ／Ｗ命令▲３▼の実行条件が成立し、ＲＡＭ１１に対するデバイス情報のライト要求とパイプライン処理停止数が２であることを示す信号が生成される。この期間でＲＡＭ１１の２ｎ＋７番地のＨ／Ｗ命令▲４▼の命令コードの上位データがリードされる。
【０１１０】
Ｔ１１の期間は、プログラムカウンタ１５の値が２ｎ＋８になり、Ｈ／Ｗ命令▲４▼の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｃに転送され、奇数／偶数判定信号が０から１になったところで、パイプラインレジスタ２１ｄのＨ／Ｗ命令▲３▼の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｅに格納され、デコード回路２２ａのＨ／Ｗ命令▲３▼のデコード情報がデコード情報保持レジスタ２２ｂに転送された後を示すものである。
【０１１１】
デコード情報保持レジスタ２２ｂにＨ／Ｗ命令▲３▼のデコード情報が転送されると、Ｈ／Ｗ命令演算部２６にＨ／Ｗ命令▲３▼の命令種別信号が出力され、Ｔ１０の期間でＨ／Ｗ演算データ格納部２７に格納されたデバイス情報をＨ／Ｗ命令演算部２６で演算する。また、デコード情報保持レジスタ２２ｂからＲＡＭ１１に対するデバイス情報のライト要求とパイプライン処理停止数が２であることを示す信号がＨ／Ｗ命令演算制御部２５に出力される。
【０１１２】
Ｈ／Ｗ命令演算制御部２５は、デコード情報保持レジスタ２２ｂからパイプライン処理停止数が２であることを示す信号を受け取ったため、パイプライン停止要求を１にする。パイプラインレジスタ部２１はパイプライン停止要求が１であるため、パイプライン停止信号を１にする。パイプライン停止信号が１になるため、メモリ制御部１４において、命令コードのリード信号がマスクされ、プログラムカウンタ１５のインクリメントが実行されない。
【０１１３】
また、パイプラインレジスタ部２１では奇数／偶数判定信号が１のまま変化しないためパイプラインレジスタ２１ｃ、パイプラインレジスタ２１ｄ、パイプラインレジスタ２１ｅは更新されない。この期間ではパイプライン停止信号が１であり、命令コードのリード信号がマスクされているため、命令コードのリードは実行されない。また、Ｈ／Ｗ命令演算制御部２５からＲＡＭ１１に対するリード／ライト要求も出力されていないため、ＲＡＭ１１に対するアクセスはない。
【０１１４】
Ｔ１２の期間は、プログラムカウンタ１５の値は２ｎ＋８であり、パイプラインレジスタ２１ｃ、パイプラインレジスタ２１ｄ、パイプラインレジスタ２１ｅの内容はＴ１１の期間から変化していない。ただし、デコード情報保持レジスタ２２ｂのＨ／Ｗ命令▲３▼のデコード情報はデコード情報保持レジスタ２２ｃに転送されている。デコード情報保持レジスタ２２ｃにＨ／Ｗ命令▲３▼のデコード情報が転送されると、Ｈ／Ｗ命令▲３▼の命令種別信号がＨ／Ｗ命令演算部２６に出力され、Ｔ１１の期間で演算したデータをメモリ制御部１４に対して出力する。Ｔ１１の期間でデコード情報保持レジスタ２２ｂからパイプライン処理停止数が２であることを示す信号が出力されたため、Ｔ１２の期間でもパイプライン停止要求は１である。
【０１１５】
したがって、パイプラインレジスタ部２１は、パイプライン停止信号をＴ１２の期間でも１にする。パイプライン停止信号が１であるため、メモリ制御部１４において命令コードのリード信号がマスクされ、プログラムカウンタ１５のインクリメントが実行されない。
【０１１６】
また、パイプラインレジスタ部２１では奇数／偶数判定信号が１のまま変化しないため、パイプラインレジスタ２１ｃ、パイプラインレジスタ２１ｄ、パイプラインレジスタ２１ｅは更新されない。Ｔ１１の期間でデコード情報保持レジスタ２２ｂからＲＡＭ１１に対するライト要求を受け取ったため、この期間でＨ／Ｗ命令演算制御部２５はメモリ制御部１４にＲＡＭ１１に対するライト要求を出力し、メモリ制御部１４はＨ／Ｗ命令演算部２６とＲＡＭ１１のデータバスを繋ぎ、ＲＡＭ１１に対してＨ／Ｗ命令▲３▼の演算結果をライトする。
【０１１７】
前述したように、パイプラインレジスタ２１ｄに格納された命令コードをデコード回路２２ａでデコードするときに、デバイスアドレスをデコードすることによって、ＲＡＭ１１とＲＡＭ１２のデバイス情報のどちらを使用するか判断している。デバイスアドレスがＲＡＭ１２の領域を指定していた場合は、ＲＡＭ１１を指定していたときとは異なり、デコード回路２２ａでパイプライン処理停止数が０であることを示す信号が出力されるため、パイプラインレジスタ部２１はパイプライン停止信号を１にしない。パイプライン停止信号が１にならないので、ＲＡＭ１１からの命令コードのリードとパイプライン処理が中断されない。したがって、ＲＡＭ１１からの命令コードのリードとＲＡＭ１２からのデバイス情報のリード／ライトを同時におこなうことができ、演算処理を高速に実行することが可能である。
【０１１８】
一方、デバイスアドレスがＲＡＭ１１の領域を指定していた場合は、命令コードのリードとデバイス情報のリード／ライトを共にＲＡＭ１１からおこなうため、デバイス情報のリード／ライト時にはパイプライン停止信号を１にして命令コードのリードとパイプライン処理を中断させなければならない。しかし、ＲＡＭ１２を使用しないためＲＡＭ１２を実装せずに小型化、低価格化を図ることが可能である。また、本実施の形態では、デバイスアドレスを変えることにより、同一のハードウェアで上記2種類の構成を使い分けることができる。
【０１１９】
なお、本実施の形態では、ＲＡＭ１１とＲＡＭ１２の境界のアドレスは固定としたが、例えばＲＡＭ１１とＲＡＭ１２の境界のアドレスをレジスタにより切り替えるようにして、ＲＡＭ１１とＲＡＭ１２の容量を可変にしてもよい。また、２回のリードで１つの命令コードをリードしているが、命令コードを１回でリードできるようにして、命令コードのリードサイクルを減らして高速化をおこなった構成においても上記の機能は実現可能である。
【０１２０】
図１０は、ＲＡＭ１１の領域に割付けられているデバイスを使用して図７の命令を実行したとき、Ｈ／Ｗ命令▲１▼でリードするデバイス情報がＯＦＦすなわち０の場合のタイミングチャートである。以下、図７の命令がＲＡＭ１１のデバイス情報を用いて実行されたときに、Ｈ／Ｗ命令▲１▼でリードするデバイス情報がＯＦＦの場合の動作を、図１、図７および図１０を用いて説明する。
【０１２１】
Ｔ１の期間からＴ９までの期間の動作は、前述した図９の動作と同一である。ただし、Ｔ１０の期間でＨ／Ｗ命令▲３▼がデコード回路２２ａでデコードされるときに、接点状態記憶部２４の接点状態がＯＦＦすなわち０であるので、Ｈ／Ｗ命令▲３▼の実行条件が成立しないため、Ｈ／Ｗ命令▲３▼は非実行となり、デコード情報としてデコード回路２２ａからパイプライン処理停止数が０であることを示す信号が出力され、ＲＡＭ１１に対するライト要求は出力されない。
【０１２２】
この場合、演算結果をＲＡＭ１１にライトをおこなわないため、Ｈ／Ｗ命令▲３▼を実行しないことと同じ結果となる。また、デコード情報保持レジスタ２２ｂからパイプライン処理停止数が０であることを示す信号が出力されるので、Ｈ／Ｗ演算制御部２５がパイプライン停止要求を１にしないため、パイプライン停止信号が１にならず、メモリ制御部１４で命令コードのリード信号がマスクされないため、命令コードのリードが中断されず命令実行時より処理が高速になる。
【０１２３】
前述したように、接点状態記憶部２４に格納された接点状態によって、デコード回路２２ａで命令の実行／非実行を判断し、デコード情報としてデバイス情報のリード／ライト要求をメモリ制御部に出力しないため、実行条件が成立したときはデバイス情報のリード／ライトをおこなうが、実行条件が成立しなかったときはデバイス情報のリード／ライトをおこなわない。実行する必要のない命令のデバイス情報のリード／ライトをしないようにすることによって、命令が非実行時の演算処理時間を高速化する効果がある。
【０１２４】
図１１は、ＲＡＭ１１に格納されている命令コードを示したものである。Ｈ／Ｗ命令▲１▼はＲＡＭ１１若しくはＲＡＭ１２に格納されたデバイス情報をリードし、演算結果を接点状態記憶部２４に格納する接点命令である。Ｈ／Ｗ命令▲２▼は、接点状態記憶部２４に格納された接点情報に関係なく、ＲＡＭ１１若しくはＲＡＭ１２に格納されたデバイス情報をリードしてＨ／Ｗ演算データ格納部２７にリードしたデバイス情報を格納するデータロード命令である。
【０１２５】
Ｈ／Ｗ命令▲６▼は、接点状態記憶部１５の接点状態とＲＡＭ１３の前スキャンでの命令の実行／非実行状態で実行／非実行を判断して（前スキャンでの命令の実行／非実行状態がＯＦＦ（０）で接点状態がＯＮ（１）のとき実行条件成立）、実行条件が成立したときはＨ／Ｗ演算データ格納部２７に格納されている演算データをＨ／Ｗ命令演算部２６で演算して演算結果をＲＡＭ１１若しくはＲＡＭ１２のデバイスに書き戻す命令である。
【０１２６】
図１２は、接点状態記憶部２４に格納された接点状態がＯＦＦ（０）からＯＮ（１）に変化したスキャンで、ＲＡＭ１２の領域に割付けられているデバイスを使用して、図１１の命令を実行したときのタイミングチャートである（デバイスアドレスがＲＡＭ１２を指定していた場合）。以下、Ｈ／Ｗ命令▲６▼の動作説明を図１、図１１および図１２を用いておこなう。
【０１２７】
Ｔ８の期間は、プログラムカウンタ１５の値が２ｎ＋７になり、奇数／偶数判定信号が１から０になったところで、パイプラインレジスタ２１ｃのＨ／Ｗ命令▲６▼の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｄに格納され、デコード情報保持レジスタ２２ｂのＨ／Ｗ命令▲２▼のデコード情報がデコード情報保持レジスタ２２ｃに転送された後を示すものである。この期間でデコード回路２２ａにおいてＨ／Ｗ命令▲６▼の命令コードがデコードされる。
【０１２８】
接点状態記憶部２４に格納された接点状態がＯＮすなわち１であり、命令コードをパイプラインレジスタ２１ｃに転送する際に、ＲＡＭ１３のｎ＋２番地からリードした前回スキャンでの実行／非実行状態が非実行すなわち０であるため、Ｈ／Ｗ命令▲６▼の実行条件が成立し、かつデバイスアドレスがＲＡＭ１２を指定しているため、ＲＡＭ１２に対するライト要求とパイプライン処理停止数が１であることを示す信号と前スキャンでの命令の実行／非実行状態ライト要求を出力する。この期間でＲＡＭ１１の２ｎ＋７番地のＨ／Ｗ命令▲４▼の命令コードの上位データがリードされる。
【０１２９】
Ｔ９の期間は、プログラムカウンタ１５の値が２ｎ＋８になり、Ｈ／Ｗ命令▲４▼の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｃに転送され、奇数／偶数判定信号が０から１になったところで、パイプラインレジスタ２１ｄのＨ／Ｗ命令▲６▼の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｅに格納され、デコード回路２２ａのＨ／Ｗ命令▲６▼のデコード情報がデコード情報保持レジスタ２２ｂに転送された後を示すものである。
【０１３０】
デコード情報保持レジスタ２２ｂにＨ／Ｗ命令▲６▼のデコード情報が転送されると、Ｈ／Ｗ命令演算部２６にＨ／Ｗ命令▲６▼の命令種別信号が出力され、Ｔ８の期間でＨ／Ｗ演算データ格納部２７に格納されたデバイス情報をＨ／Ｗ命令演算部２６で演算する。
【０１３１】
また、Ｈ／Ｗ命令演算制御部２５は、デコード情報保持レジスタ２２ｂからパイプライン処理停止数が１であることを示す信号が出力されたためパイプライン停止要求を１にする。パイプラインレジスタ部２１は、パイプライン停止要求が１であるため、パイプライン停止信号を１にする。パイプライン停止信号が１になるため、メモリ制御部１４において命令コードのリード信号がマスクされ、プログラムカウンタのインクリメントが実行されない。
【０１３２】
また、パイプラインレジスタ部２１では奇数／偶数判定信号が１のまま変化しないためパイプラインレジスタ２１ｃ、パイプラインレジスタ２１ｄ、パイプラインレジスタ２１ｅは更新されない。
【０１３３】
Ｔ１０の期間は、プログラムカウンタ１５の値は２ｎ＋８であり、パイプラインレジスタ２１ｃ、パイプラインレジスタ２１ｄ、パイプラインレジスタ２１ｅの内容はＴ９の期間から変化していない。ただし、デコード情報保持レジスタ２２ｂのＨ／Ｗ命令▲６▼のデコード情報がデコード情報保持レジスタ２２ｃに転送されている。デコード情報保持レジスタ２２ｃにＨ／Ｗ命令▲６▼のデコード情報が転送されると、Ｈ／Ｗ命令▲６▼の命令種別信号がＨ／Ｗ命令演算部２６に出力され、Ｔ９の期間で演算したデータをメモリ制御部１４に対して出力する。
【０１３４】
Ｈ／Ｗ命令演算制御部２５は、この期間でメモリ制御部１４にＲＡＭ１２に対するライト要求を出力する。メモリ制御部１４は、ＲＡＭ１２に対してＨ／Ｗ命令▲６▼の演算結果をライトする。同時に、Ｈ／Ｗ命令演算制御部２５は、前スキャンでの実行／非実行状態ライト要求をメモリ制御部１４に出力する。
【０１３５】
前スキャンでの実行／非実行状態ライト要求がない場合は、ＲＡＭ１３に対するアドレスはプログラムカウンタ１５の値を右シフトさせて生成している。しかし、前スキャンでの実行／非実行状態ライト要求が出力された場合は、ＲＡＭ１３のＨ／Ｗ命令▲６▼のアドレス（プログラムカウンタ１５の値を右シフトさせた値から−２して生成する）に、接点状態記憶部２４に格納されている接点状態をライトする。また、この期間でＲＡＭ１１からＨ／Ｗ命令▲５▼の命令コード下位データがリードされる。
【０１３６】
Ｔ１１の期間は、プログラムカウンタ１５の値が２ｎ＋９になり、奇数／偶数判定信号が１から０になったところで、パイプラインレジスタ２１ｃのＨ／Ｗ命令▲４▼の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｄに格納された後を示すものである。この期間ではＲＡＭ１１の２ｎ＋９番地からＨ／Ｗ命令▲５▼の命令コード上位データがリードされる。
【０１３７】
また、メモリ制御部１４は、Ｈ／Ｗ命令演算制御部２５から前スキャンでの実行／非実行状態ライト要求がないので、ＲＡＭ１３に対するアドレスはプログラムカウンタ１５の値を右シフトして生成し、ＲＡＭ１３のｎ＋４番地から前スキャンでの実行／非実行状態をリードする。
【０１３８】
Ｈ／Ｗ命令▲６▼の実行条件が成立しなかった場合は、ＲＡＭ１１若しくはＲＡＭ１２に対してデバイス情報のライトをおこなわない。ただし、パイプライン停止信号を１にしてパイプライン処理を中断させ、ＲＡＭ１３に接点状態を格納する動作はおこなう。
【０１３９】
上記のように、命令処理時にＲＡＭ１３のアドレスをプログラムカウンタ１５の値を右シフトさせて−２して生成し、接点状態記憶部２４の接点状態を格納し、次スキャンでの接点状態とともに命令の実行／非実行の判断に使用することによって、接点状態が変化したスキャンのみ、実行するといった命令をＨ／Ｗによって効率的にかつ高速に演算することができる。
【０１４０】
また、接点状態記憶部１５の接点状態とＲＡＭ１３の前スキャンでの命令の実行／非実行状態によって、デコード回路２２ａで命令の実行／非実行を判断し、デコード情報としてデバイス情報のリード／ライト要求をメモリ制御部に出力しないため、実行時はデバイス情報のリード／ライトをおこなうが、非実行時はデバイス情報のリード／ライトをおこなわない。したがって、非実行時の演算処理時間を高速化する効果がある。
【０１４１】
図１３は、パイプライン処理中に、例えばＣＰＵ３１に割り込みが発生し、ＣＰＵ３１がＲＡＭ１１に対してタスク情報のライトをおこなった場合のタイミングチャートである。ＣＰＵ３１がＲＡＭ１１にタスク情報をライトしようとすると、ＣＰＵ３１はライト信号をメモリ制御部１４に出力する。
【０１４２】
メモリ制御部１４は、起動レジスタが１（パイプライン処理起動中）であるので、ＲＡＭ１１とパイプラインレジスタ部２１のデータバスを繋いでいる。したがってＣＰＵ３１からＲＡＭ１１に対してライトができないため、メモリ制御部１４はＣＰＵウエイト信号をＣＰＵ３１に出力する。
【０１４３】
一方、パイプラインレジスタ部２１は、ＣＰＵ３１からライト信号を受け取ると、命令コードの上位データをリードした後パイプライン処理を停止させる。また、パイプライン処理が停止したときに、パイプラインレジスタ２１ｄに格納されている命令（Ｈ／Ｗ命令▲２▼）まで処理をおこなう。
【０１４４】
Ｈ／Ｗ命令▲２▼完了後、メモリ制御部１４がＲＡＭ１１とＣＰＵ３１のデータバスを繋ぎ、ＣＰＵ３１のタスク情報がＲＡＭ１１にライトされる。ＣＰＵ３１の処理が完了し、再びパイプライン処理を開始させるときは、ＣＰＵ３１から起動レジスタ２１ａに１をライトすればよい。この手段により、ＣＰＵ３１がＲＡＭ１１をリード／ライトする際に、ライト要求を出力するだけでパイプライン処理が停止し、タスク情報が退避できるため処理が高速になる。
【０１４５】
図１４は、Ｓ／Ｗ命令の実行条件が成立したときのパイプライン処理を示したものである。以下、Ｓ／Ｗ命令の命令コードが入力されて、実行条件が成立したときのパイプライン処理を図１、図１４を用いて説明する。
【０１４６】
Ｔ６の期間は、プログラムカウンタ１５の値が２ｎ＋５になり、奇数／偶数判定信号が１から０になったところで、パイプラインレジスタ２１ｃのＳ／Ｗ命令▲１▼の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｄに格納された後を示すものである。
【０１４７】
パイプラインレジスタ２１ｄにＳ／Ｗ命令▲１▼の命令コードと前スキャンでの命令の実行／非実行状態が格納されると、命令コード中のＳ／Ｗ命令とＨ／Ｗ命令を区別するビットが１（Ｓ／Ｗ命令）であるため、パイプラインレジスタ部２１内で前スキャンでの命令の実行／非実行状態と接点状態記憶部２４の接点状態でＳ／Ｗ命令の実行条件を判定する。
【０１４８】
Ｔ７の期間で、パイプラインレジスタ部２１は、Ｓ／Ｗ命令▲１▼の実行条件が成立したら起動レジスタ２１ａを０にしてパイプライン処理を停止させる。パイプラインレジスタ部２１は、起動レジスタ２１ａが０になったらステートレジスタに２（Ｓ／Ｗ命令実行でパイプライン処理停止中）をセットする。また、メモリ制御部１４に対して、前スキャンでの命令の実行／非実行状態ライト要求を出力する。
【０１４９】
前スキャンでの命令の実行／非実行状態ライト要求により、メモリ制御部１４はＲＡＭ１３のＳ／Ｗ命令▲１▼の前スキャンでの命令の実行／非実行状態が格納されているアドレスに（プログラムカウンタ１５の値を右シフトさせた値を−２したアドレス）、接点状態記憶部２４に格納されている接点状態をライトする。
【０１５０】
ＣＰＵ３１は、ステートレジスタ２１ｆを監視しており、ステートレジスタ２１ｆに２がセットされたことを確認したら、Ｓ／Ｗ命令の演算を開始する。Ｓ／Ｗ命令の演算が終了したならば、ＣＰＵ３１は起動レジスタ２１ａに１をライトしてパイプライン処理を再開させる。
【０１５１】
図１５は、Ｓ／Ｗ命令の実行条件が成立しなかったときのパイプライン処理を説明するための説明図である。以下、Ｓ／Ｗ命令の命令コードが入力されて、実行条件が成立しなかったときのパイプライン処理について図１および図１５を用いて説明する。
【０１５２】
Ｔ６の期間は、プログラムカウンタ１５の値が２ｎ＋５になり、奇数／偶数判定信号が１から０になったところで、パイプラインレジスタ２１ｃのＳ／Ｗ命令▲１▼の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｄに格納された後を示すものである。
【０１５３】
パイプラインレジスタ２１ｄにＳ／Ｗ命令▲１▼の命令コードと前スキャンでの命令の実行／非実行状態が格納されると、命令コード中のＳ／Ｗ命令とＨ／Ｗ命令を区別するビットが１（Ｓ／Ｗ命令）であるため、パイプラインレジスタ部２１内で、前スキャンでの命令の実行／非実行状態と接点状態記憶部２４の接点状態でＳ／Ｗ命令の実行条件を判定する。
【０１５４】
Ｔ７の期間で、Ｓ／Ｗ命令▲１▼の実行条件が成立しなかった場合は、実行条件が成立した場合と同様に、ＲＡＭ１３に接点状態記憶部２４の接点状態をライトするが、次のＴ８の期間ではパイプライン停止信号は解除される。また、起動レジスタ２１ａは１のままである。
【０１５５】
前述したように、Ｓ／Ｗ命令の実行条件が成立した場合は、パイプライン処理を停止させＣＰＵでＳ／Ｗ命令の演算を実行し、実行後に起動レジスタに１をライトしてパイプライン処理を再開させる。一方、実行条件が成立しなかった場合は、ＲＡＭ１３に対して接点状態のライトのみおこない、ＣＰＵ３１はＳ／Ｗ命令の処理を実行しないでパイプライン処理を続ける。
【０１５６】
このため、実行する必要のないＳ／Ｗ命令をＨ／Ｗによって判断し、ＣＰＵ３１が余計な演算をしなくて済むため、Ｓ／Ｗ命令の演算処理が高速になる。なお、本実施の形態では、２回のリードで１つの命令コードをリードしているが、命令コードを１回でリードできるようにして、命令コードのリードサイクルを減らして高速化をおこなった構成においても上記の機能は実現可能である。
【０１５７】
【発明の効果】
上述してきたように、本発明によれば、シーケンスプログラムによってデバイス情報を第１の記憶手段または第２の記憶手段のいずれにリード／ライトするかを選択し、第１の記憶手段にリード／ライトするシーケンスプログラムが入力された場合は、デバイス情報のリード／ライト時にパイプライン処理を中断するとともに、該デバイス情報のリード／ライトが完了するまでシーケンスプログラムのリードを禁止し、第２の記憶手段にリード／ライトするシーケンスプログラムが入力された場合には、デバイス情報のリード／ライトとシーケンスプログラムのリードを同時に行うよう制御するよう構成したので、デバイスアドレスを変更するだけで、命令コードのリードとデバイス情報のリード／ライトが同時におこなえる高速な構成と、命令コードとデバイス情報を格納するメモリを共有化して、メモリの使用数を減少させ小型化、低価格化に優れた構成を同一のハードウェアで使い分けることができる。
【０１５８】
つぎの発明によれば、パイプラインレジスタは、第１の記憶手段から1つのシーケンスプログラムのデータをすべてリードしたときに該データをまとめて格納するレジスタであり、1つのシーケンスプログラムのデータのリードが完了するまで、第１の記憶手段からデバイス情報のリード／ライトを実行しないよう制御するよう構成したので、1つのシーケンスプログラムのデータを複数回に分けてリードする場合にも適用することができる。
【０１５９】
つぎの発明によれば、前スキャンでの命令の実行／非実行を示すビットをシーケンスプログラムとともに格納する第３の記憶手段を設けるよう構成したので、前スキャンでの命令の実行／非実行を利用して、命令デコード部で命令の実行／非実行を判断することができる。
【０１６０】
つぎの発明によれば、デバイス情報のリード／ライトを実行する命令が入力された際に、直前のシーケンスプログラムの接点の状態のオン／オフにより実行条件が成立した場合には、第１の記憶手段または第２の記憶手段にデバイス情報のリード／ライトを実行し、実行条件が成立しない場合には、第１の記憶手段または第２の記憶手段にデバイス情報のリード／ライトを実行しないよう制御するよう構成したので、接点のオン／オフにより命令デコード部での命令の実行／非実行を判断し、非実行時にはメモリに対して演算結果をリード／ライトしないようにし、非実行時の処理時間を短くすることができる。
【０１６１】
つぎの発明によれば、直前のシーケンスプログラムの接点の状態が変化したスキャンでデバイス情報のリード／ライトを実行する命令が入力された際に、直前のシーケンスプログラムの接点の状態と前スキャンでの命令の実行／非実行を示すビットのオン／オフにより実行条件が成立した場合には、第１の記憶手段または第２の記憶手段にデバイス情報のリード／ライトを実行し、実行条件が成立しない場合には、第１の記憶手段または第２の記憶手段にデバイス情報のリード／ライトを実行しないよう制御するよう構成したので、接点のオン／オフと、前回スキャン時の命令の実行／非実行情報により、命令デコード部で命令の実行／非実行を判断し、非実行時にはメモリに対して演算結果をリード／ライトしないようにし、非実行時の処理時間を短くすることができる。
【０１６２】
つぎの発明によれば、直前のシーケンスプログラムの接点の状態が変化したスキャンで実行される命令が入力された際に、第３の記憶手段に接点状態を格納するよう構成したので、直前のシーケンスプログラムの接点の状態が変化したスキャンで実行される命令をＨ／Ｗで高速に演算させることができる。
【０１６３】
つぎの発明によれば、シーケンスプログラムに従ってパイプライン処理を実行中に前記マイクロプロセッサにより第１の記憶手段または第２の記憶手段に対してリード／ライトをおこなう場合には、パイプライン処理を停止するとともに、マイクロプロセッサにより第１の記憶手段または第２の記憶手段に対するリード／ライトを開始するよう制御するよう構成したので、ＣＰＵがＲＡＭにリード／ライトする際に、リード／ライト要求を出力するだけでパイプライン処理を停止してリード／ライトを実行できるため処理が高速になる。また、ＣＰＵに割り込みが発生した時にタスク情報を退避させるための専用のＲＡＭが必要なくなるため、低価格化および小型化を図ることができる。
【０１６４】
つぎの発明によれば、Ｓ／Ｗ命令の演算を行う際に、直前のシーケンスプログラムの接点の状態と前スキャンでの命令の実行／非実行を示すビットのオン／オフにより実行条件が成立した場合には、パイプライン処理を停止してマイクロプロッセッサによりＳ／Ｗ命令を実行し、実行条件が成立しない場合には、マイクロプロセッサによるＳ／Ｗ命令を実行しないよう制御することとしたので、実行する必要のないＳ／Ｗ命令をＨ／Ｗによって判断し、ＣＰＵが余計な演算をしなくて済むため、Ｓ／Ｗ命令の演算処理を高速に実行することができる。
【図面の簡単な説明】
【図１】  この実施の形態に係るプログラマブルコントローラの構成を示したブロック図である。
【図２】  命令コードの構成を説明するための説明図である。
【図３】  メモリ制御部によるＲＡＭのアクセスの制御を説明するための説明図である。
【図４】  ＲＡＭ１１に命令コードが格納される形態と、ＲＡＭ１３に各命令の前スキャンでの命令の実行／非実行状態が格納される形態を示す図である。
【図５】  プログラマブルコントローラ起動後の命令コードと前スキャンでの命令の実行／非実行状態がパイプラインレジスタ２１ｃへの転送される点を説明するための説明図である。
【図６】  命令で使用するデバイス割付の例を示す図である。
【図７】  ＲＡＭ１１に格納されている命令コードを示す図である。
【図８】  ＲＡＭ１２の領域に割付けられているデバイスを使用した場合に図７の命令を実行したときのタイミングチャートである。
【図９】  ＲＡＭ１１の領域に割付けられているデバイスを使用した場合に図７の命令を実行したときのタイミングチャートである。
【図１０】  ＲＡＭ１１の領域に割付けられているデバイスを使用して図７の命令を実行したとき、Ｈ／Ｗ命令▲１▼でリードするデバイス情報がＯＦＦすなわち０の場合のタイミングチャートである。
【図１１】  ＲＡＭ１１に格納されている命令コードを示した図である。
【図１２】  接点状態記憶部２４に格納された接点状態がＯＦＦからＯＮに変化したスキャンで、ＲＡＭ１２の領域に割付けられているデバイスを使用して、図１１の命令を実行したときのタイミングチャートである。
【図１３】  パイプライン処理中に、例えばＣＰＵ３１に割り込みが発生し、ＣＰＵ３１がＲＡＭ１１に対してタスク情報のライトをおこなった場合のタイミングチャートである。
【図１４】  Ｓ／Ｗ命令の実行条件が成立したときのパイプライン処理を示す図である。
【図１５】  Ｓ／Ｗ命令の実行条件が成立しなかったときのパイプライン処理を説明するための説明図である。
【図１６】  従来の一般的なプログラマブルコントローラの構成を示すブロック図である。
【図１７】  先行技術のプログラマブルコントローラの構成を示すブロック図である。
【符号の説明】
１０  メモリＩ／Ｆ部、１１  シーケンスプログラム／デバイス情報ＲＡＭ、１２  デバイス情報ＲＡＭ、１３  前回スキャン時での命令の実行／非実行の状態を格納するＲＡＭ、１４  メモリ制御部、１５  プログラムカウンタ、２０  Ｈ／Ｗ命令演算処理部、２１ａ  起動レジスタ、２１ｂ  パイプラインレジスタ（０）、２１ｃ  パイプラインレジスタ（１）、２１ｄ  パイプラインレジスタ（２）、２１ｅ  パイプラインレジスタ（３）、２２  命令解読部、２２ａ  デコード回路、２２ｂ  デコード情報保持レジスタ（１）、２２ｃ  デコード情報保持レジスタ（２）、２３  入力レジスタ、２４  接点状態記憶部、２５  Ｈ／Ｗ命令演算制御部、２６  Ｈ／Ｗ命令演算部、２７  Ｈ／Ｗ演算データ格納部、３０  Ｓ／Ｗ命令演算処理部、３１  ＣＰＵ、３２  システムＲＯＭ、４７  ＣＰＵ、４８  システムＲＯＭ、４９  シーケンスプログラム／デバイス情報ＲＡＭ、５０  ＣＰＵ、５１  システムＲＯＭ、５２  シーケンスプログラムＲＡＭ、５３  デバイス情報ＲＡＭ。
【図１】
0004451010.tif 000002
【図２】
0004451010.tif 000003
【図３】
0004451010.tif 000004
【図４】
0004451010.tif 000005
【図５】
0004451010.tif 000006
【図６】
0004451010.tif 000007
【図７】
0004451010.tif 000008
【図８】
0004451010.tif 000009
【図９】
0004451010.tif 000010
【図１０】
0004451010.tif 000011
【図１１】
0004451010.tif 000012
【図１２】
0004451010.tif 000013
【図１３】
0004451010.tif 000014
【図１４】
0004451010.tif 000015
【図１５】
0004451010.tif 000016
【図１６】
0004451010.tif 000017
【図１７】
0004451010.tif 000018