(57)【特許請求の範囲】
【請求項１】
シーケンスプログラムを格納するシーケンスプログラムメモリと、演算データを格納するデータメモリと、前記シーケンスプログラムメモリの命令コードを解析する命令デコード部と、直前のシーケンスプログラムの接点の状態を格納する導通／非導通情報格納部と、前記データメモリから読み出した演算データを一時的に格納する演算データ格納部と、前記データメモリに対するリード／ライト制御や前記演算データ格納部の制御を行う制御部と、前記命令コードの内容に従い演算を行うハードウェア構成の演算部とを備えたプログラマブルコントローラにおいて、
前記命令デコード部は、前記導通／非導通情報格納部に格納されている直前のシーケンスプログラムの接点の状態より当該命令デコード部にデコードされた命令の実行条件とした実行／非実行を判断し、前記制御部にデータメモリ制御部が設けられ、当該データメモリ制御部は、実行条件成立時には演算データを前記データメモリあるいはシーケンスプログラムメモリからリードして前記演算部での演算後に演算結果を前記データメモリにライトする制御を行い、実行条件不成立時には前記データメモリと前記演算部との間の演算データのリード／ライトを行わない制御を行い、実行条件不成立時には演算を実行せずにつぎの命令に移行することを特徴とするプログラマブルコントローラ。
【請求項２】
シーケンスプログラムを格納するシーケンスプログラムメモリと、演算データを格納するデータメモリと、前記シーケンスプログラムメモリの命令コードを解析する命令デコード部と、直前のシーケンスプログラムの接点の状態を格納する導通／非導通情報格納部と、前記データメモリから読み出した演算データを一時的に格納する演算データ格納部と、前記データメモリに対するリード／ライト制御や前記演算データ格納部の制御を行う制御部と、前記命令コードの内容に従い演算を行うハードウェア構成の演算部とを備えたプログラマブルコントローラにおいて、
前記シーケンスプログラムメモリ内に前回のスキャンで命令を実行したか否かを格納するビットが設けられ、前記命令デコード部は、前記導通／非導通情報格納部に格納されている直前のシーケンスプログラムの接点の状態と前記シーケンスプログラムメモリ内の前記ビットのオン／オフ状態より当該命令デコード部にデコードされた命令の実行条件とした実行／非実行を判断し、前記制御部にデータメモリ制御部が設けられ、当該データメモリ制御部は、実行条件成立時には演算データを前記データメモリあるいはシーケンスプログラムメモリからリードして前記演算部での演算後に演算結果を前記データメモリにライトする制御を行い、実行条件不成立時には前記データメモリと前記演算部との間の演算データのリード／ライトを行わない制御を行い、実行条件不成立時には演算を実行せずにつぎの命令に移行することを特徴とするプログラマブルコントローラ。
【請求項３】
前記プログラムメモリ内の前回のスキャンで命令を実行したか否かを格納するビットに、前記導通／非導通情報格納部のデータを書き込むよう構成されていることを特徴とする請求の範囲第２項記載のプログラマブルコントローラ。
【請求項４】
前記データメモリにアクセスするアドレスをラッチするアドレス保持手段を具備し、ダブルワード演算を行う命令コードを前記命令デコード部が認識し、実行条件が成立して上位ワードデータをリード／ライトするときに、前記アドレス保持手段にラッチしたアドレスをインクリメントして前記データメモリに対するアドレスを生成するアドレス生成制御手段を有し、前記アドレス保持手段と前記アドレス生成制御手段の動作により前記データメモリにダブルワードデータをリード／ライトすることを特徴とする請求の範囲第１項記載のプログラマブルコントローラ。
【請求項５】
前記演算部は比較器を有し、前記データメモリ制御部は、実行条件成立時には演算データを前記データメモリあるいはシーケンスプログラムメモリからリードして前記演算部の前記比較器による比較演算後に演算結果を前記データメモリにライトする制御を行い、実行条件不成立時には前記データメモリと前記演算部との間の演算データのリード／ライトを行わない制御を行い、実行条件不成立時には前記演算部の前記比較器による比較演演算を実行せずにつぎの命令に移行することを特徴とする請求の範囲第１項記載のプログラマブルコントローラ。
【請求項６】
前記プログラムメモリに前記データメモリから演算データを読み出す命令あるいはプログラムメモリの内容を読み出す命令と演算を示す命令の組み合せで構成された命令コードが格納され、前記演算データ格納部は、前記データメモリから読み出した演算データを格納するデータ格納用レジスタと、演算データを格納するレジスタ番地を示すスタックポインタとを有し、前記制御部は、演算データを読み出す命令あるいはプログラムメモリの内容を読み出す命令を実行すると、前記データ格納用レジスタに演算データを格納してから前記スタックポインタをインクリメントし、演算を示す命令を実行すると前記スタックポインタをデクリメントしてから前記データ格納用レジスタからデータを読み出し、実行条件が成立しないと、演算を示す命令を処理する際に前記スタックポインタのイニシャライズを行うスタックポインタ制御部を有していることを特徴とする請求の範囲第１項記載のプログラマブルコントローラ。
【請求項７】
シーケンスプログラムを格納するプログラムメモリ内に前回のスキャンで命令を実行したか否かを格納するビットが設けられ、前記データメモリからリードしたビットのオン／オフの状態と前回のスキャンで命令を実行したか否かを格納する前記ビットのオン／オフ状態との論理演算を行い、演算結果を前記導通／非導通情報格納部に書き込むよう構成されていることを特徴とする請求の範囲第１項記載のプログラマブルコントローラ。
【請求項８】
前記データメモリからリードしたビットのオン／オフの状態を、前記プログラムメモリ内の前回のスキャンで命令を実行したか否かを格納するビットに書き込むよう構成されていることを特徴とする請求の範囲第７項記載のプログラマブルコントローラ。
【請求項９】
前記シーケンスプログラムを格納するプログラムメモリ内に前回のスキャンで命令を実行したか否かを格納するビットが設けられ、前記導通／非導通情報格納部に格納されている直前のシーケンスプログラムの接点オン／オフの状態と前回のスキャンで命令を実行したか否かを格納するビットのオン／オフ状態との論理演算を行い、演算結果を前記導通／非導通情報格納部に書き込むよう構成されていることを特徴とする請求の範囲第１項記載のプログラマブルコントローラ。
【請求項１０】
前記導通／非導通情報格納部のデータを退避するレジスタを有し、前記レジスタに退避したデータを前記プログラムメモリ内の前回のスキャンで命令を実行したか否かを格納するビットに書き込むよう構成されていることを特徴とする請求の範囲第９項記載のプログラマブルコントローラ。
【発明の詳細な説明】
技術分野
この発明は、プログラマブルコントローラに関し、特に、プログラマブルコントローラにおいて、シーケンスプログラムを高速処理する演算回路に関するものである。
背景技術
プログラマブルコントローラの従来例を、第２１図を参照して説明する。第２１図は、特公平５−２０４４１５号公報に示されたプログラマブルコントローラの構成を示している。このプログラマブルコントローラは、シーケンスプログラムを格納するシーケンスプログラムメモリ１００と、シーケンスプログラムの演算回路１０１と、演算データを格納するデータメモリ１０２と、演算回路１０１では実行できない命令を処理するマイクロプロセッサ１０３とを有している。
演算回路１０１は、シーケンスプログラムメモリ１００に格納されたシーケンスプログラムの命令コードをデコードする命令デコード部１０４と、直前のシーケンスプログラムの接点の状態を格納する導通／非導通情報格納部１０５と、演算するデータを一時的に格納する演算データ格納部１０６と、命令コードの内容に従いビット処理、ワード処理を実行する演算部１０７と、データメモリ１０２に対するアドレスを生成するアドレス生成部１０８と、データメモリ１０２から演算データを演算回路１０１にリードしたり、演算部１０７の演算結果をデータメモリ１０２や導通／非導通情報格納部１０５にライトするときの制御を行う制御部１０９とを有している。
つぎに、演算回路１０１の動作について説明する。演算回路１０１において処理できる命令を実行する場合、シーケンスプログラムメモリ１００からリードしたデータが、演算回路１０１で処理できる命令であることを命令デコード部１０４で認識すると、デコードした内容に従い演算部１０７で演算処理を行い、演算結果を導通／非導通情報格納部１０５あるいはデータメモリ１０２に格納する。このとき演算を行うデータには、データメモリ１０２から演算データ格納部１０６にリードしたデータや、導通／非導通情報格納部１０５に格納されたデータや演算回路１０１内の各レジスタに格納されたデータがある。演算結果を導通／非導通情報格納部１０５に格納するケースは、データメモリ１０２内のデータを導通／非導通情報として保持し、つぎに続く命令が導通／非導通情報を使用する場合である。一方、演算結果をデータメモリ１０２に格納するケースは、導通／非導通情報が導通した場合に、演算部１０７で演算した結果をデータメモリ１０２に保持する場合である。
つぎに、演算回路１０１で実行できない命令を処理する場合の動作について説明する。命令デコード部１０４にて、演算回路１０１では処理できない命令を認識すると、命令デコード部１０４からマイクロプロセッサ１０３を起動する。マイクロプロセッサ１０３が起動されると、マイクロプロセッサ１０３は、データメモリ１０２から演算データをリードし、演算を実行して演算結果を導通／非導通情報格納部１０５あるいはデータメモリ１０２にライトする。また、前回のスキャンで実行したか否かを判断して動作する命令や、前回実行したときのデータメモリ１０２の該当ビットの状態を判断して動作する命令では、前回の実行／非実行情報を、たとえばシーケンスプログラム内の該当ビットに格納して命令の処理を完了する。
つぎに、具体的に第２２図に示すシーケンスプログラムを上述の構成による従来のプログラマブルコントローラで処理をする場合について説明する。第２２図において、１１０はデータメモリ１０２に格納されたビットデータＸ０の状態を導通／非導通情報格納部１０５に格納する命令（シンボル）を、１１１はデータメモリ１０２に格納されたビットデータＸ１の状態と命令１１０にて導通／非導通情報格納部１０５に格納した接点の導通／非導通情報の論理積を導通／非導通情報格納部１０５に格納する命令（シンボル）を、１１２はデータメモリ１０２に格納されたワードデータＤ０とＤ１の比較結果と命令１１０で格納された導通／非導通情報の論理積を行い、その結果を導通／非導通情報格納部１０５に格納する命令（シンボル）を、１１３は直前の導通／非導通情報格納部１０５のデータがオンの場合にはデータメモリ１０２に格納されたワードデータＤ２をＤ３の内容として転送し、オフの場合には転送を実行しない命令（シンボル）を、１１４は直前の導通／非導通情報格納部１０５のデータがオンの場合にはデータメモリ１０２に格納されたワードデータＤ４とＤ５のデータの加算結果をＤ６の内容として格納し、オフの場合には加算を実行しない命令（シンボル）を示している。
第２２図に示されている命令１１０〜命令１１４は、命令コードとしてシーケンスプログラムメモリ１００に順に格納されており、順次、命令デコード部１０４にリードされる。まず、命令１１０をフェッチすると、制御部１０９がデータメモリ１０２内に格納された入力デバイスを演算データ格納部１０６に読み出し、演算部１０７でＸ０のオン／オフ状態をビット抽出して、導通／非導通情報格納部１０５に格納する。
つぎに、命令１１１をフェッチすると、制御部１０９がデータメモリ１０２内に格納された入力デバイスを演算データ格納部１０６に読み出し、演算部１０７でＸ０のオン／オフ状態をビット抽出して、ビット抽出した結果と導通／非導通情報格納部１０５のデータの論理積を導通／非導通情報として格納する。
つぎに、命令１１２をフェッチすると、演算部１０７で実行できない命令であることを命令デコード部１０４で識別し、マイクロプロセッサ１０３を起動し、データメモリ１０２に格納されたワードデータＤ０とＤ１の比較結果と命令１１１で格納された導通／非導通情報の論理積を行い、その結果を導通／非導通情報格納部１０５に格納する。つぎに、命令１１３をフェッチすると、制御部１０９がデータメモリ１０２からＤ２とＤ３とを読み込み、導通／非導通情報がオンの場合にはＤ２の内容をＤ３に、導通／非導通情報がオフの場合にはリードしたＤ３の内容をそのままＤ３にライトする。
最後に、命令１１４をフェッチすると、演算回路１０１で実行できない命令であることを命令デコード部１０４で識別し、マイクロプロセッサ１０３を起動し、導通／非導通情報がオンの場合にはＤ４とＤ５との加算を行い、その加算結果をＤ６にライトし、導通／非導通情報がオフの場合には加算を実行しない。
上述のような従来のプログラマブルコントローラでは、導通／非導通情報の状態にかかわらず、必ず命令の判別を行うので、実行／非実行にかかわらず、命令の処理サイクルが同じとなり、このため非実行時におけるシーケンスプログラムの処理時間が短縮できないという問題点があった。
また、上述のような従来のプログラマブルコントローラでは、ダブルワードのデータ演算を実行する場合には、データメモリ１０２に対して上位アドレスを生成できないため、演算回路１０１では実行できない命令としてマイクロプロセッサ１０３で実行するしかなく、命令の処理時間が長くなるという問題点があった。
また、上述のような従来のプログラマブルコントローラでは、前回のスキャンで実行したか否かを書き込む手段がないため、前回のスキャンの実行／非実行情報を使用する命令は、必然的にマイクロプロセッサ１０３で実行しなければならず、命令の処理時間が長くなるという問題点があった。
従って、本発明は、非実行時のシーケンスプログラムの処理時間を短縮でき、演算回路でのダブルワードのデータ演算や前回のスキャンの実行／非実行情報を使用する命令処理を可能にし、シーケンスプログラムを高速演算処理するプログラマブルコントローラを提供することを目的としている。
発明の開示
本発明は、シーケンスプログラムを格納するシーケンスプログラムメモリと、演算データを格納するデータメモリと、前記シーケンスプログラムメモリの命令コードを解析する命令デコード部と、直前のシーケンスプログラムの接点の状態を格納する導通／非導通情報格納部と、前記データメモリから読み出した演算データを一時的に格納する演算データ格納部と、前記データメモリに対するリード／ライト制御や前記演算データ格納部の制御を行う制御部と、命令コードの内容に従い演算を行うハードウェア構成の演算部とを備えたプログラマブルコントローラにおいて、前記命令デコード部は、前記導通／非導通情報格納部に格納されている直前のシーケンスプログラムの接点の状態より、当該命令デコード部にデコードされた命令の実行条件とした実行／非実行を判断し、前記制御部にデータメモリ制御部が設けられ、当該データメモリ制御部は、実行条件成立時には演算データを前記データメモリあるいはシーケンスプログラムメモリからリードして前記演算部での演算後に演算結果を前記データメモリにライトする制御を行い、実行条件不成立時には前記データメモリと前記演算部との間の演算データのリード／ライトを行わない制御を行い、実行条件不成立時には演算を実行せずにつぎの命令に移行するプログラマブルコントローラを提供できる。従って、接点の導通／非導通情報により命令デコード部で実行／非実行を判断し、非実行時にはデータメモリと演算部との間の演算データのリード／ライトならびに演算を実行しないから、非実行時の処理時間を短縮できる。
また、本発明は、シーケンスプログラムを格納するシーケンスプログラムメモリと、演算データを格納するデータメモリと、前記シーケンスプログラムメモリの命令コードを解析する命令デコード部と、直前のシーケンスプログラムの接点の状態を格納する導通／非導通情報格納部と、前記データメモリから読み出した演算データを一時的に格納する演算データ格納部と、前記データメモリに対するリード／ライト制御や前記データ格納部の制御を行う制御部と、命令コードの内容に従い演算を行うハードウェア構成の演算部とを備えたプログラマブルコントローラにおいて、前記シーケンスプログラムメモリ内に前回のスキャンで命令を実行したか否かを格納するビット（実行フラグビット）が設けられ、前記命令デコード部は、前記導通／非導通情報格納部に格納されている直前のシーケンスプログラムの接点の状態と前記シーケンスプログラムメモリ内の前記ビットのオン／オフ状態より、当該命令デコード部にデコードされた命令の実行条件とした実行／非実行を判断し、前記制御部にデータメモリ制御部が設けられ、当該データメモリ制御部は、実行条件成立時には演算データを前記データメモリあるいはシーケンスプログラムメモリからリードして前記演算部での演算後に演算結果を前記データメモリにライトする制御を行い、実行条件不成立時には前記データメモリと前記演算部との間の演算データのリード／ライトを行わない制御を行い、実行条件不成立時には演算を実行せずにつぎの命令に移行するプログラマブルコントローラを提供できる。従って、接点の導通／非導通情報と実行フラグビットにより命令デコード部で実行／非実行を判断し、非実行時にはデータメモリと演算部との間の演算データのリード／ライトならびに演算を実行しないから非実行時の処理時間を短縮できる。
また、本発明は、前記プログラムメモリ内の前回のスキャンで命令を実行したか否かを格納するビットに、前記導通／非導通情報格納部のデータを書き込むよう構成されているプログラマブルコントローラを提供できる。従って、導通／非導通情報をつぎのスキャンの実行フラグに使用できるようにプログラムメモリ内の当該ビットに書き込むことで、接点がオンしたスキャンのみ実行する命令をハードウェア構成の演算部で高速処理することが可能になり、演算処理を高速化できる。
また、本発明は、前記データメモリにアクセスするアドレスをラッチするアドレス保持手段を具備し、ダブルワード演算を行う命令コードを前記命令デコード部が認識し、実行条件が成立して上位ワードデータをリード／ライトするときに、前記アドレス保持手段にラッチしたアドレスをインクリメントして前記データメモリに対するアドレスを生成するアドレス生成制御手段を有し、前記アドレス保持手段と前記アドレス生成制御手段の動作により前記データメモリにダブルワードデータをリード／ライトするプログラマブルコントローラを提供できる。従って、ダブルワードの命令をハードウェア構成の演算部で高速処理することが可能になり、演算処理を高速化できる。
また、本発明は、前記演算部は比較器を有し、前記データメモリ制御部は、実行条件成立時には演算データを前記データメモリあるいはシーケンスプログラムメモリからリードして前記演算部の前記比較器による比較演算後に演算結果を前記データメモリにライトする制御を行い、実行条件不成立時には前記データメモリと前記演算部との間の演算データのリード／ライトを行わない制御を行い、実行条件不成立時には前記演算部の前記比較器による比較演演算を実行せずにつぎの命令に移行するプログラマブルコントローラを提供できる。従って、導通／非導通情報格納部に演算結果を格納する命令において、命令の実行条件により比較演算を実行する前に実行／非実行の判断を行い、命令が非実行の場合には比較演算を実施しないから、非実行時の処理時間を短縮できる。
また、本発明は、前記プログラムメモリに前記データメモリから演算データを読み出す命令あるいはプログラムメモリの内容を読み出す命令と演算を示す命令の組み合せで構成された命令コードが格納され、前記演算データ格納部は、前記データメモリから読み出した演算データを格納するデータ格納用レジスタと、演算データを格納するレジスタ番地を示すスタックポインタとを有し、前記制御部は、演算データを読み出す命令あるいはプログラムメモリの内容を読み出す命令を実行すると、前記データ格納用レジスタに演算データを格納してから前記スタックポインタをインクリメントし、演算を示す命令を実行すると前記スタックポインタをデクリメントしてから前記データ格納用レジスタからデータを読み出し、実行条件が成立しないと、演算を示す命令を処理する際に前記スタックポインタのイニシャライズを行うスタックポインタ制御部を有しているプログラマブルコントローラを提供できる。従って、実行条件が成立しないと、演算を示す命令を処理する際にスタックポインタのイニシャライズだけが行われ、処理時間の短縮が図られる。
また、本発明は、シーケンスプログラムを格納するプログラムメモリ内に前回のスキャンで命令を実行したか否かを格納するビット（実行フラグビット）が設けられ、前記データメモリからリードしたビットのオン／オフの状態と前回のスキャンで命令を実行したか否かを格納する前記ビットのオン／オフ状態との論理演算を行い、演算結果を前記導通／非導通情報格納部に書き込むよう構成されているプログラマブルコントローラを提供できる。従って、プログラムメモリの実行フラグビットに前回のスキャンのビットデバイスの状態を書き込むから、ビットデバイスが変化したスキャンのみ実行する命令をハードウェア構成の演算部で高速処理することが可能になり、演算処理を高速化できる。
また、本発明は、前記データメモリからリードしたビットのオン／オフの状態を、前記プログラムメモリ内の前回のスキャンで命令を実行したか否かを格納するビット（実行フラグビット）に書き込むよう構成されているプログラマブルコントローラを提供できる。従って、データメモリからリードしたビットのオン／オフの状態を、前記プログラムメモリ内の前回のスキャンで命令を実行したか否かを格納するビット（実行フラグビット）に書き込むことが行われ、ビットデバイスが変化したスキャンのみ実行する命令をハードウェア構成の演算部で高速処理することが可能になり、演算処理を高速化できる。
また、本発明は、前記シーケンスプログラムを格納するプログラムメモリ内に前回のスキャンで命令を実行したか否かを格納するビットが設けられ、前記導通／非導通情報格納部に格納されている直前のシーケンスプログラムの接点オン／オフの状態と前回のスキャンで命令を実行したか否かを格納するビットのオン／オフ状態との論理演算を行い、演算結果を前記導通／非導通情報格納部に書き込むよう構成されているプログラマブルコントローラを提供できる。従って、導通／非導通情報をつぎのスキャンの実行フラグビットに使用できるようにプログラムメモリ内の該当ビットに書き込むため、接点がオンしたスキャンのみ実行する命令をハードウェア構成の演算部で高速処理することが可能になり、演算処理を高速化できる。
また、本発明は、前記導通／非導通情報格納部のデータを退避するレジスタを有し、前記レジスタに退避したデータを前記プログラムメモリ内の前回のスキャンで命令を実行したか否かを格納するビットに書き込むよう構成されているプログラマブルコントローラを提供できる。従って、レジスタに退避した導通／非導通情報をプログラムメモリ内の前回のスキャンで命令を実行したか否かを格納するビットに書き込むことができ、接点がオンしたスキャンのみ実行する命令をハードウェア構成の演算部で高速処理することが可能になり、演算処理を高速化できる。
【図面の簡単な説明】
第１図は、この発明によるプログラマブルコントローラの構成を示すブロック図であり、第２図（ａ）、（ｂ）は、この発明によるプログラマブルコントローラの動作を示すラダー回路図および命令コードリスト図であり、第３図は、第２図（ａ）に示したラダー回路の実行時のタイミングチャートであり、第４図は、第２図（ａ）に示したラダー回路の非実行時のタイミングチャートであり、第５図（ａ）、（ｂ）は、プログラムメモリとデータメモリの関係を示す説明図であり、第６図は、この発明によるプログラマブルコントローラの他の動作を示すラダー回路図および命令コードリスト図であり、第７図は、第６図（ａ）に示したラダー回路の実行時のタイミングチャートであり、第８図は、第６図（ａ）に示したラダー回路の非実行時のタイミングチャートであり、第９図は、第６図（ａ）に示したラダー回路の非実行時のパイプラインレジスタの動作を示すタイミングチャートであり、第１０図は、第６図（ａ）に示したラダー回路の実行時のパイプラインレジスタの動作を示すタイミングチャートであり、第１１図は、この発明によるプログラマブルコントローラの他の動作を示すラダー回路図および命令コードリスト図であり、第１２図は、第１１図（ａ）に示したラダー回路の実行時のタイミングチャートであり、第１３図は、第１１図（ａ）に示したラダー回路の非実行時のタイミングチャートであり、第１４図は、この発明によるプログラマブルコントローラの他の動作を示すラダー回路および命令コードリスト図であり、第１５図は、第１４図（ａ）に示したラダー回路の実行時のタイミングチャートであり、第１６図は、第１４図（ａ）に示したラダー回路の非実行時のタイミングチャートであり、第１７図は、第１４図（ａ）に示したラダー回路の演算回路と導通／非導通情報格納部のブロック図であり、第１８図（ａ）〜（ｃ）は、この発明によるプログラマブルコントローラの他の動作を示すラダー回路図および命令コードリスト図であり、第１９図は、第１８図（ａ）に示したラダー回路の１スキャン目の動作を示すタイミングチャートであり、第２０図は、第１８図（ａ）に示したラダー回路の２スキャン目以降の動作を示すタイミングチャートであり、第２１図は、従来におけるプログラマブルコントローラの構成を示すブロック図であり、第２２図は、従来におけるプログラマブルコントローラの動作を示すラダー回路図である。
発明を実施するための最良の形態
本発明をより詳細に詳述するために、添付の図面に従ってこれを説明する。
第１図は、この発明によるプログラマブルコントローラを示している。このプログラマブルコントローラは、シーケンスプログラムの命令コードを格納するシーケンスプログラムメモリ１と、シーケンスプログラムの演算回路２と、演算データを格納するデータメモリ３とを有している。
シーケンスプログラムメモリ１内には、前回のスキャンで命令を実行したか否かを格納するビット（実行フラグビット）が設けられている。シーケンスプログラムの演算回路２は、シーケンスプログラムメモリ１に格納された内容を０番地から順に読み出すパイプラインレジスタ（以下、Ｂ２Ｒレジスタという）４と、Ｂ２Ｒレジスタ４の内容を読み出すパイプラインレジスタ（以下、Ｂ３Ｒレジスタという）５と、Ｂ２Ｒレジスタ２の内容をデコードする命令デコード部６と、直前のシーケンスプログラムの接点の状態を格納する導通／非導通情報格納部７と、演算するデータを一時的に格納する演算データ格納部８と、命令コードの内容に従いビット処理およびワード処理（算術演算、論理演算、転送）を実行するハードウェア構成の演算部９と、データメモリ３に対するアドレスを生成するアドレス生成部１０と、データメモリ３から演算データを演算回路２にリードしたり、演算部９の演算給果をデータメモリ３や導通／非導通情報格納部７にライトするときの制御を行う制御部１１と、定数データを扱う際に定数データをラッチする定数ラッチレジスタ１２と、ビット演算を行う際にビット指定データをラッチするビット指定レジスタ１３と、データメモリ３からリードした演算データをラッチする入力レジスタ１４とを有している。
命令デコード部６は、テコードした内容を保持するパイプラインレジスタ（以下ＤＥＣ１レジスタという）１５と、ＤＥＣ１レジスタ１５の内容を保持するパイプラインレジスタ（以下ＤＥＣ２レジスタという）１６とを含んでおり、導通／非導通情報格納部７に格納されている直前のシーケンスプログラムの接点の状態、あるいは導通／非導通情報格納部７に格納されている直前のシーケンスプログラムの接点の状態とシーケンスプログラムメモリ１内の実行フラグビットのオン／オフ状態を、命令デコード部６にデコードされた命令の実行条件とした実行／非実行を判断する。
演算データ格納部８は、データメモリ３からリードした演算データを格納するデータ格納用レジスタ１７と、データ格納用レジスタ１７の演算データを格納するレジスタ番地を示すスタックポインタ１８とを含んでいる。アドレス生成部１０は、ダブルワード命令の演算を実行する際に、データメモリ３に対するアドレスを格納しておくアドレスレジスタ（アドレス保持手段）１９を含んでいる。
アドレスレジスタ１９は、ダブルワード演算を行う命令コードを命令デコード部６が認識し、実行条件が成立して上位データをリード／ライトするときに、アドレスレジスタ１９にラッチしたアドレスをインクリメントしてデータメモリ３に対するアドレスを生成する。
制御部１１は、データメモリ３に対するアドレスを生成するアドレス生成部１０の制御を行うアドレス生成制御部２０と、演算データ格納部８に設けらているスタックポインタ１８の制御を行うスタックポインタ制御部２１と、データメモリ３のリード／ライト制御を行うデータメモリ制御部２２と、パイプラインレジスタの制御を行うパイプライン制御部２３とを含んでいる。
スタックポインタ制御部２１は、演算データを読み出す命令あるいはプログラムメモリの内容を読み出す命令の実行時に、データ格納用レジスタ１７に演算データを格納してからスタックポインタ１８をインクリメントし、演算を示す命令を実行すると、スタックポインタ１８をデクリメントしてからデータ格納用レジスタ１７からデータを読み出し、実行条件が成立しないと、演算を示す命令を処理する際にスタックポインタ１８のイニシャライズを行う。
データメモリ制御部２２は、命令の実行条件成立／不成立に応じてデータメモリ３のリード／ライト制御を行う。パイプライン制御部２３は、命令の実行サイクルが２サイクル以上になる場合にシーケンスプログラムメモリ１のパイプライン動作を停止させるウェイト信号を生成する。
導電／非導電情報退避レジスタ２９は、退避したデータをシーケンスプログラムメモリ１内の前回のスキャンで命令を実行したか否かを格納するビットに書き込むよう構成されている。
第２図（ａ）、（ｂ）は、シーケンスプログラムのラダー回路と命令コードの内容（例１）を示している。第２図（ａ）において、３０、３１はデータメモリ３に格納されたＸ０デバイス、Ｘ１デバイスの状態を読み出して導通／非導通情報格納部７に格納する命令（シンボル）を、３２は導通／非導通情報格納部７の状態が１（オン）の時にワードデータＤ０とＤ１の加算を行い、演算結果をＤ２に格納する命令（シンボル）を、３３はワードデータＤ３に１を加算して演算結果をＤ３に格納する命令（シンボル）をそれぞれ示している。
命令３２の命令コードは、第２図（ｂ）に示されているように、シーケンスプログラムメモリ１のａ＋１番地からａ＋３番地に格納され、データメモリ３からデータ格納用レジスタ１７にデータを読み出すａ＋１番地とａ＋２番地の命令と、演算内容を示すａ＋３番地の命令とで構成される。同様に、命令３３の命令コードは、シーケンスプログラムメモリ１のａ＋５番地からａ＋６番地に格納され、データメモリ３からデータ格納用レジスタにデータを読み出すａ＋５番地の命令と、演算内容を示すａ＋６番地の命令とで構成される。
第３図は、第２図に示されている例１のラダー回路を第１図に示されている演算回路２で動作させたときに、命令３２および３３を実行した場合の動作を示すタイミングチャートであり、第４図は、命令３２および３３を実行しない場合の動作を示すタイミングチャートである。
第３図、第４図において、ＳＣＫは基準クロックを、Ｂ３ＲＣＫはＢ３Ｒレジスタ５とＤＥＣ１レジスタ１５のラッチクロックを、ＤＥＣＬ２ＣＫはＤＥＣ２レジスタ１６のラッチクロックを、ＤＬ２ＣＲＬはＤＥＣ２レジスタ１６を初期化するクロックを、ＩＮＣＫはデータメモリ３の内容を入力レジスタ１４にラッチするクロックをそれぞれ示している。また、Ｖ８０ＷＡＩＴは命令の実行サイクルが２サイクル以上になる場合にシーケンスプログラムメモリ１のパイプライン動作を停止させるウェイト信号である。
第５図（ａ）、（ｂ）は、シーケンスプログラムメモリ１とデータメモリ３に格納されたデータの関係を示している。なお、第５図（ａ）において、シーケンスプログラムメモリ１のアドレスａ番地からａ＋３番地に格納された命令コードは図２の命令３０、命令３２の例である。
命令コードは、演算データが格納されているデータメモリ３のアドレス指定情報、ビット演算の場合に演算に用いるビット番号を格納するビット指定情報、命令の種別、実行する命令がパルス演算かどうかを格納するパルス指定部、命令が取り扱うデータ長、命令がＨ／Ｗ処理ができる命令か否かを格納するＨ／Ｗ指定部、前回のスキャンで実行したか否かを格納する実行フラグビットを含むデータで構成されている。なお、実行フラグビットはデフォルトで０が格納されている。
シーケンスプログラムメモリ１のアドレス指定部に格納されたアドレスには、その命令で扱うデータが格納されている。また、ダブルワードの演算では、ａ＋ｎ番地の例で示すとおり、シーケンスプログラムメモリ１のアドレス指定部に格納されたアドレス（ｆ番地）と、それに＋１したアドレス（ｆ＋１番地）にデータが格納されている。
つぎに、例１のシーケンスプログラムによる動作について説明する。命令３０で示すＬＤ命令の動作について説明する。期間Ｔ１はシーケンスプログラムメモリ１のアドレスａ番地に格納されたＬＤ命令の命令コードがＢ２Ｒレジスタ４にラッチされた後を示すものであり、ここで、Ｈ／Ｗ（ハードウェア）命令であることを認識し、命令の種別、データメモリ３へのリード／ライトの有無、演算に必要なウェイト数をデコード信号として出力する。
期間Ｔ２では、Ｂ３ＲＣＫラッチクロックで、Ｂ２Ｒレジスタ４の内容をＢ３Ｒレジスタ５に格納すると共に、期間Ｔ１でデコードした内容をＤＥＣ１レジスタ１５にラッチした後、Ｂ３Ｒレジスタ５に格納されたデータメモリ３のアドレスからワードデータを入力レジスタ１４にリードする。このとき、データメモリ３に対するリード信号はＤＥＣ１レジスタ１５にラッチされた内容よりデータメモリ制御部２２にて生成される。
期間Ｔ３では、入力レジスタ１４にラッチしたワードデータから、ビット指定レジスタ１３（第５図に示されている命令コード中のビット指定情報をラッチしたレジスタ）で指定されたビットを抽出し、導通／非導通情報（以下、ＨＷＢＯと略することもある）のデータとしてラッチする。
つぎに、ＬＤ命令によりＨＷＢＯに１が格納された命令３２、３３の動作を第３図を参照して説明する。ＳＴＭＬＤ命令の動作について、ａ＋１番地に格納されたＳＴＭＬＤ命令を用いて説明する。ＳＴＭＬＤ命令がＢ２Ｒレジスタ４に格納されると（第３図の期間Ｔ２）、命令デコード部６にてＨ／Ｗ命令であることを認識し、命令の種別、データメモリ３へのリード／ライトの有無、演算に必要なウェイト数をデコード信号として出力する。
つぎに、期間Ｔ３では、ＬＤ命令と同様に、ラッチクロックＢ３ＲＣＫでＢ２Ｒレジスタ４の内容をＢ３Ｒレジスタ５に格納すると共に、期間Ｔ２でデコードした内容をＤＥＣ１レジスタ１５にラッチした後、Ｂ３Ｒレジスタ５に格納されたデータメモリ３のアドレスから演算データを入力レジスタ１４にリードする。
期間Ｔ４では、入力レジスタ１４の内容をスタックポインタ１８が示すデータ格納用レジスタ１７に格納し、スタックポインタ制御部２１によってスタックポインタ１８の値をインクリメントする。なお、このとき、演算部９と、導通／非導通情報格納部７は動作しない。
ａ＋２番地に格納されたＳＴＭＬＤ命令も同様の動作を行うが、ａ＋１番地に格納されたＳＴＭＬＤ命令によりスタックポインタ１８がインクリメントされているため、異なるデータ格納用レジスタ１７にデータが格納される。
つぎに、＋命令の動作について説明する。＋命令がＢ２Ｒレジスタ４に格納されると（第３図の期間Ｔ４）、命令デコード部６でＨ／Ｗ命令であることを認識し、命令の種別、データメモリ３へのリード／ライトの有無、演算に必要なウェイト数をデコード信号として出力する。＋命令の場合には、加算データと被加算データをデータメモリ３からリードするため、必ずＳＴＭＬＤ命令が２回必要となり、＋命令がＢ２Ｒレジスタ４に格納されたときにはＨＷＢＯ（導通／非導通情報）が必ず確定している。
このため、命令デコード部６は、ＨＷＢＯ＝１の場合には、演算を実行するために、２ウェイトの命令としてデコードし、これに対し、ＨＷＢＯ＝０の場合には、演算を実行しないため、０ウェイトの命令としてデコードする。
期間Ｔ５では、加算データと被加算データがデータ格納用レジスタ１７にまだ格納されていないため、演算を実行せず、パイプライン制御部２３がウェイト信号のみ出力してパイプライン動作を停止させる。
期間Ｔ６では、データメモリ制御部２２が生成するリード信号によってデータ格納用レジスタ１７に格納されている加算データと被加算データを演算部９内のレジスタにリードし、演算部９内の加算器にて加算（演算実行）を行う。
期間Ｔ７では、加算した結果をデータメモリ３にライトする。このときライトするアドレスはＢ３Ｒレジスタ５に格納されたデータメモリアドレスにライトを行い、ライト信号はデータメモリ制御部２２にて生成する。また、パイプライン制御部２３がウェイト信号を解除してパイプライン動作を再開すると共に演算の最後で、初期化クロックＤＬ２ＣＲＬによりＤＥＣ２レジスタ１６の内容をクリアする。
つぎに、命令３２で示すＩＮＣ命令の動作について説明する。ＩＮＣ命令がＢ２Ｒレジスタ４に格納されると（第３図の期間Ｔ９）、命令デコード部６にてＨ／Ｗ命令であることを認識し、命令の種別、データメモリ３へのリード／ライトの有無、演算に必要なウェイト数をデコード信号として出力する。
ＩＮＣ命令の場合は、＋命令とは異なり、被加算データのみデータメモリ３からリードするため、ＳＴＭＬＤ命令が１回しかなく、ＩＮＣ命令がＢ２Ｒレジスタ４に格納されたときにはＨＷＢＯが確定していない。このため、命令デコード部６ではＨＷＢＯの値によらず、２ウェイトの命令としてデコードする。
期間Ｔ１０では、被加算データがデータ格納用レジスタ１７に格納されていないため、演算を実行せず、パイプライン制御部２３よりウェイト信号を出力してパイプライン動作を停止させる。
期間Ｔ１１では、データ格納用レジスタ１７に格納された被加算データをデータメモリ制御部２２のリード信号によって演算部９内のレジスタにリードし、演算部９内の加算器にてインクリメントする。なお、期間Ｔ１０で確定したＨＷＢＯのデータにより、ＨＷＢＯ＝１の場合には、ウェイト数を２ウェイトのままとし、ＨＷＢＯ＝０の場合には、ウェイト数を１ウェイトに変更する。
期間Ｔ１２では、加算した結果をデータメモリ３にライトする。このとき、ライトするアドレスはＢ３Ｒレジスタ５に格納されたデータメモリアドレスにライトを行い、ライト信号はデータメモリ制御部２２にて生成する。また、パイプライン制御部２３によってウェイト信号を解除してパイプライン動作を再開すると共に、演算の最後で、初期化クロックＤＬ２ＣＲＬによりＤＥＣ２レジスタ１６の内容をクリアする。
第４図を参照して命令３３の＋命令が非実行の場合の動作について説明する。＋命令では、前述したように、ＨＷＢＯの値がＤＥＣ１レジスタ１５にラッチする以前に確定しているため、期間Ｔ５では、パイプライン制御部２３よりウェイト信号を出力せず、パイプライン動作を停止しない。また、期間Ｔ６では、スタックポインタ制御部２１、データメモリ制御部２２の動作により、スタックポインタ１８の制御、被加算データと加算データの演算部内レジスタへの転送、データメモリ３への演算結果のライトのいずれもを実行せず、期間Ｔ６の最後で、スタックポインタ１８のイニシャライズのみを行う。
第４図を参照してＩＮＣ命令が非実行の場合の動作について説明する。ＩＮＣ命令では、＋命令とは異なり、ＨＷＢＯの値がＤＥＣ１レジスタ１５にラッチする以前に確定しないため、前述のとおり、期間Ｔ７では、２ウェイトの命令としてデコードする。期間Ｔ８では、パイプライン制御部２３よりウェイト信号を出力してパイプライン動作を停止する。
期間Ｔ９では、ＨＷＢＯ＝０により、ウェイト信号を非アクティブにしてパイプライン動作を再開し、スタックポインタ制御部２１、データメモリ制御部２２の動作により、スタックポインタ１８の制御、加算データの演算部内レジスタへの転送、データメモリ３への演算結果のライトのいずれもを実行せず、期間Ｔ９の最後で、スタックポインタ１８とＤＥＣ２レジスタ１６のイニシャライズのみを行う。
ここで、スタックポインタ１８の動作について、第３図、第４図を用いて説明する。スタックポインタ１８は、スタックポインタ制御部２１により制御され、演算回路２で命令を実行する場合には、「０」となっており、ＳＴＭＬＤ命令を実行すると、データ格納用レジスタ１７にデータを格納した後にインクリメントする。たとえば、第３図の期間Ｔ５が終了した段階では、ＳＴＭＬＤ命令が２回実行されているため、スタックポインタ１８の値は「２」となっている。
つぎに、＋命令が続くと、データ格納用レジスタ１７から演算部９内のレジスタにデータを転送する前に、スタックポインタ１８の値をデクリメントしてからデータを転送する。これを２回繰り返すことにより、スタックポインタ１８の値が「１」と「０」であるところに格納されたデータが演算部９に転送され、＋命令が完了した第３図の期間Ｔ７が終了した段階で、スタックポインタ１８の値は「０」となる。ＩＮＣ命令の場合には、スタックポインタ１８のデクリメントと演算部９内へのデータの転送が１回となる。非実行の場合には、＋命令やＩＮＣ命令が、ＤＥＣ２レジスタ１６に格納された最後にイニシャライズしてスタックポインタ１８の値を「０」に戻す。
つぎに、第２図の命令３２で示すデータがデータメモリ３のＤ０の内容ではなく、定数の場合について説明する。この場合には、加算する定数は、シーケンスプログラムメモリ１内の命令コード中のアドレス指定部（第５図参照）に格納されている。この命令がＢ２Ｒレジスタ４に格納されると（第３図の期間Ｔ３）、シーケンスプログラムメモリ１内の定数データをラッチする命令であることを認識し、さらに、期間Ｔ４では、この定数のデータが定数ラッチレジスタ１２に格納され、期間Ｔ５でスタックポインタ１８が示すデータ格納用レジスタ１７に格納され、後に続く＋命令で同様に加算が行われる。
上述したように、接点の導通／非導通情報（ＨＷＢＯ）により、命令デコード部６で実行／非実行を判断し、実行時には、データメモリ３と演算部９との間の演算データのリード／ライトおよび演算を実行し、非実行時には、データメモリ３と演算部９との間の演算データのリード／ライトおよび演算を実行せずに処理サイクルを短くしたので、非実行時の処理時間を高速化する効果が得られる。
第６図（ａ）、（ｂ）は、シーケンスプログラムのラダー回路と命令コードの内容（例２）を示している。第６図（ａ）において、４０、４１はデータメモリ３に格納されたＸ０デバイス、Ｘ１デバイスの状態を読み出し、導通／非導通情報格納部７に格納する命令（シンボル）を、４２は導通／非導通情報格納部７の状態が０（オフ）、から１（オン）に変化したスキャンで、リードデータＤ０とＤ１の加算を行い、演算結果をＤ２に格納する命令（シンボル）を、４３は導通／非導通情報格納部７の状態が０（オフ）から１（オン）に変化したスキャンで、ワードデータＤ３に１を加算して演算結果をＤ３に格納する命令（シンボル）をそれぞれ示している。第６図（ｂ）に示されているように、シーケンスプログラムメモリ１に格納される命令コードは、第２図のａ＋３番地の命令を「＋Ｐ  Ｄ２」に、ａ＋６番地の命令を「＋ＩＮＣＰ  Ｄ３」にそれぞれ置き換えた組み合せとなる。＋命令と＋Ｐ命令の区別は、第５図に示されている命令コードにおけるパルス指定のビットにて区別される。
第７図は、第６図に示されている例２のラダー回路を第１図に示されている演算回路２で動作させたときに、命令４２および４３を実行した場合の動作を示すタイミングチャートであり、第８図は命令４２および４３を実行しない場合の動作を示すタイミングチャートである。
第７図、第８図において、ＰＭＷＲＬは第５図に示すシーケンスプログラムメモリ１の実行フラグビットに対するライト信号、ＰＭは第５図に示す実行フラグビットのデータ、ＳＧＤＯは実行フラグビットに書き込むデータ（つぎのスキャンのＰＭ）である。なお、第７図、第８図において、第３図、第４図のタイミングチャートと同一のものは、第３図、第４図に付した符号と同一の符号を付けてある。
また、第９図、第１０図は、第６図に示されている例２のラダー回路を第１図に示されている演算回路２で動作させたときのシーケンスプログラムメモリ１とパイプラインレジスタの動作を示すタイミングチャートであり、このうち、第９図は命令４２および４３を実行しない場合を、第１０図は命令４２および４３を実行した場合の動作を示している。
つぎに、例２のシーケンスプログラムによる動作について説明する。ここで、第２図の命令３２と第６図の命令４２との動作の違いについて説明する。第２図の命令３２は、命令３０により接点が導通すると、接点が導通している間は毎スキャンＤ０＋Ｄ１→Ｄ２の演算を実行する。このため、Ｄ０とＤ１の値がスキャン毎に変化すると、Ｄ２の値もスキャン毎に変化する。これに対し、第６図の命令４２は、命令４０により接点が導通すると、接点が導通したスキャンのみＤ０＋Ｄ１→Ｄ２の演算を実行する。このため、Ｄ０とＤ１の値がスキャン毎に変化しても、接点が導通→非導通→導通と変化しない限り、Ｄ２の値は変化しない。
命令４１で示す＋Ｐ命令の実行時の動作について、第７図を用いて説明する。＋Ｐ命令がＢ２Ｒレジスタ４に格納されると（第７図の期間Ｔ４）、命令デコード部６でＨ／Ｗ命令であることを認識し、命令の種別、データメモリ３へのリード／ライトの有無、演算に必要なウェイト数をデコード信号として出力する。このとき、第５図に示されている命令コード中のパルス指定のビットにより、パルス演算であることを判断し、命令デコード部６で、ＨＷＢＯとＰＭの反転の論理積が１の場合には、演算を実行するため、２ウェイト、ＨＷＢＯとＰＭの反転の論理積が０の場合には、演算を実行しないため０ウェイトの命令としてデコードする。
以下、ＨＷＢＯとＰＭの反転の論理積が１であるとして説明する。期間Ｔ５では、加算データと被加算データがデータ格納用レジスタ１７に格納されていないため、演算を実行せず、パイプライン制御部２３よりウェイト信号のみ出力してパイプライン動作を停止させる。
期間Ｔ６では、データメモリ制御部２２のリード信号によってデータ格納用レジスタ１７に格納されている加算データと被加算データを演算部９内のレジスタにリードし、演算部９内の加算器にて加算を行い、ＨＷＢＯの値（ここではＨＷＢＯ＝１）をシーケンスプログラムメモリ１の実行フラグビットのデータとしてライトする。なお、パイプライン動作については後に説明する。
期間Ｔ７では、加算した結果をデータメモリ３にライトする。このとき、データメモリ３にライトするアドレスはＢ３Ｒレジスタ５に格納されたデータメモリアドレスにライトを行い、ライト信号はデータメモリ制御部２２にて生成する。また、パイプライン制御部２３によってウェイト信号を解除してパイプライン動作を再開すると共に、演算の最後で、初期化クロックＤＬ２ＣＲＬによりＤＥＣ２の内容をクリアする。
ここで、つぎのスキャンでの＋Ｐ命令の動作について、第８図を用いて説明する。このスキャンでは、第７図の期間Ｔ６にて、ＰＭに１がライトされているため、第８図の期間Ｔ４でＢ２Ｒレジスタ４に＋Ｐ命令の命令コードが格納されると、ＨＷＢＯの値によらず、ＨＷＢＯとＰＭの反転の論理積は０となり、＋Ｐ命令が非実行の命令としてデコードされる。期間Ｔ５では、演算を実行せず、パイプライン制御部２３よりウェイト信号のみ出力してパイプライン動作を停止させる。
さらに、期間Ｔ６では、ウェイト信号を非アクティブにしてパイプライン動作を再開すると共に、スタックポインタ制御部２１とデータメモリ制御部２２の動作によってスタックポインタ１８の制御、被加算データと加算データの演算部内レジスタへの転送、データメモリ３への演算結果のライトのいずれもを実行せず、期間Ｔ６の最後で、スタックポインタ１８とＤＥＣ２レジスタ１６のイニシャライズを行うと共に、ＨＷＢＯの値をシーケンスプログラムメモリ１の実行フラグビットのデータとしてライトする。ここで、ＨＷＢＯ＝１（接点が導通のまま）の場合には、さらにつぎのスキャンのＰＭが１となるため、第８図に示す期間Ｔ４の状態と同じ動作となる。また、ＨＷＢＯ＝０（接点が非導通）の場合には、ＰＭ＝０（イニシャルの状態）となる。さらに、つぎのスキャンで、ＨＷＢＯ＝１となると、第７図に示す期間Ｔ４と同じ動作を行い、ＨＷＢＯ＝０となると、第８図に示す期間Ｔ４と同じ動作となる。
ＩＮＣＰ命令の実行時の動作について、第７図を用いて説明する。ＩＮＣＰ命令がＢ２Ｒレジスタ４に格納されると（第７図の期間Ｔ９）、命令デコード部６でＨ／Ｗ命令であることを認識し、命令の種別、データメモリ３へのリード／ライトの有無、演算に必要なウェイト数をデコード信号として出力する。このとき、前述のＩＮＣ命令と同様に、ＩＮＣＰ命令がＢ２Ｒレジスタ４に格納されたときには、ＨＷＢＯが確定していないため、命令デコード部４ではＨＷＢＯとＰＭの値にかかわらず、２ウェイトの命令としてデコードする。
つぎに、期間Ｔ１０では、演算を実行せず、パイプライン制御部２３よりウェイト信号を出力してパイプライン動作を停止させるとともに、ＨＷＢＯとＰＭの反転の論理積を行う。期間Ｔ１１では、パイプライン制御部２３のリード信号によってデータ格納用レジスタ１７に格納されている被加算データを演算部９内のレジスタにリードし、演算部９内の加算器にてインクリメントを行い、ＨＷＢＯの値（ここではＨＷＢＯ＝１）をシーケンスプログラムメモリ１の実行フラグビットのデータとしてライトする。
最後に、期間Ｔ１２では、加算した結果をデータメモリ３にライトする。このとき、データメモリ３にライトするアドレスはＢ３Ｒレジスタ５に格納されたデータメモリアドレスにライトを行い、ライト信号はデータメモリ制御部２２にて生成する。また、パイプライン制御部２３によってウェイト信号を解除してパイプライン動作を再開すると共に、演算の最後で、初期化クロックＤＬ２ＣＲＬによりＤＥＣ２レジスタ１６の内容をクリアする。
つぎのスキャンでのＩＮＣＰ命令の動作について、第８図を用いて説明する。このスキャンでは、第７図の期間Ｔ１１にて、ＰＭ１がライトされているため、期間Ｔ９では、ＨＷＢＯとＰＭの反転の論理積は０となり、期間Ｔ１０では、ウェイト信号を非アクティブにしてパイプライン動作を再開すると共に、スタックポインタ制御部２１、データメモリ制御部２２の動作によってスタックポインタ１８の制御、被加算データの演算部内レジスタへの転送、データメモリ３への演算結果のライトのいずれをも実行せず、期間Ｔ１０の最後で、スタックポインタ１８とＤＥＣ２レジスタ１６のイニシャライズを行うと共にＨＷＢＯの値をシーケンスプログラムメモリ１の実行フラグビットのデータとしてライトする。
ここで、ＨＷＢＯ＝１（接点が導通のまま）の場合には、さらに、つぎのスキャンのＰＭが１となるため、第８図に示す期間Ｔ８の状態と同じ動作となる。また、ＨＷＢＯ＝０（接点が非導通）の場合にはＰＭ＝０（イニシャルの状態）となる。さらに、つぎのスキャンで、ＨＷＢＯ＝１となると、第７図に示す期間Ｔ９と同じ動作を行い、ＨＷＢＯ＝０となると第８図に示す期間Ｔ９と同じ動作となる。
前述の＋Ｐ命令とＩＮＣＰ命令を、シーケンスプログラムメモリ１に格納し、動作させた場合、シーケンスプログラムメモリ１から命令コードのリードと実行フラグビットにデータをライトする際のパイプラインレジスタの動作について、第９図および第１０図を用いて説明する。
第９図および第１０図は、第６図に示すシーケンスプログラムのパイプラインレジスタの動作を示す図であり、このうち、第９図は＋Ｐ命令が非実行の場合のパイプラインレジスタの動作を示す図であり、第１０図は＋Ｐ命令が実行の場合のパイプラインレジスタの動作を示す図である。
第９図および第１０図において、Ｂ１Ｒは、シーケンスプログラムメモリ１に格納された命令コードを格納し、Ｂ２Ｒレジスタ４に転送する入力レジスタ、ＰＭＷＲＬＡ信号は実行フラグビットにデータを書き込む際にローアクティブにしてシーケンスプログラムメモリ１のアドレスを−３するための制御信号、Ｐ２ＥＮはシーケンスプログラムメモリ１からリードするデータを退避するための制御信号、Ｂ０ＲはＰ２ＥＮ信号により命令コードを退避するためのレジスタである。
シーケンスプログラムメモリ１に格納された命令コードは、第９図および第１０図に示すとおり、シーケンスプログラムメモリ１のアドレスをａ番地→ａ＋１番地→ａ＋２番地と順次インクリメントしながらパイプラインレジスタに転送していく。このとき、実行フラグビットにデータをライトする命令がＢ２Ｒレジスタ４に格納される（第９図および第１０図の期間Ｔ６）と、第５図に示す命令コード中のパルス指定のビットにより、パルス演算であることを判断し、第９図および第１０図の期間Ｔ７でＰＭＷＲＬＡ信号を出力する。ＰＭＷＲＬＡ信号が出力されると、つぎのサイクル（第９図および第１０図の期間Ｔ８）でシーケンスプログラムメモリ１のアドレスを−３して＋Ｐ命令が格納されているアドレスに実行フラグビットの内容をライトする。このとき、＋Ｐ命令がＢ３Ｒレジスタ５に格納されたサイクルでは、ａ＋６番地の命令をフェッチするサイクルと、ａ＋３番地の実行フラグビットにデータを書き込むサイクルとがあるため、第８図の期間Ｔ４では、＋Ｐ命令を１ウェイトの命令としてデコードしている。
つぎに、Ｐ２ＥＮ信号とＢ０Ｒレジスタの動作について説明する。Ｐ２ＥＮ信号は実行フラグビットにデータをライトする命令のうち、実行サイクルが２サイクルで完了する場合、該当する命令コードがＢ３Ｒレジスタ５に格納されたサイクルでアクティブとなる。たとえば、第９図の期間Ｔ７が、これに該当する。このＰ２ＥＮ信号がアクティブになると、期間Ｔ７の命令コードを期間Ｔ８で一旦Ｂ０Ｒレジスタに退避し、退避しているサイクルにてシーケンスプログラムメモリ１のアドレスを−３し、＋Ｐ命令が格納されているアドレスに実行フラグビットの内容をライトする。さらに、期間Ｔ９では、Ｂ０Ｒレジスタに退避した命令コードをＢ１Ｒレジスタに転送してパイプラインレジスタの動作を行う。
つぎに、３サイクル以上の場合の動作について、第１０図を用いて説明する。３サイクル以上の場合には、第１０図の期間Ｔ９で、再度ａ＋６番地のアドレスをフェッチできるため、Ｂ０Ｒレジスタに退避させる処理は実施せずにシーケンスプログラムメモリ１からＢ１Ｒレジスタに転送する。
上述のように、接点の導通／非導通情報（ＨＷＢＯ）と実行フラグビット（ＰＭ）により、命令デコード部と制御部で実行／非実行を判断し、実行時には演算を実行し、非実行時には演算を実行せずに処理サイクルを短くしたので、非実行時の処理時間を高速化する効果が得られる。また、導通／非導通情報（ＨＷＢＯ）をつぎのスキャンの実行フラグビットに使用できるようにプログラムメモリ内の該当ビットに書き込むため、接点がオンしたスキャンのみ実行する命令をＨ／Ｗ演算回路で高速処理することが可能になり、このことによっても処理時間を高速化する効果が得られる。
第１１図（ａ）、（ｂ）は、シーケンスプログラムのラダー回路と命令コードの内容（例３）を示している。第１１図（ａ）において、５０、５１はデータメモリ３に格納されたＸ０デバイス、Ｘ１デバイスの状態を読み出し、導通／非導通情報格納部７に格納する命令（シンボル）を、５２は導通／非導通情報格納部７の状態が１（オン）の時にＤ０とＤ１に格納されたダブルワードデータとＤ２とＤ３に格納されたダフルワードデータの加算を行い、演算結果をＤ４とＤ５に格納する命令（シンボル）を、５３はＤ６とＤ７に格納されたダブルワードデータに１を加算して演算結果をＤ６とＤ７に格納する命令（シンボル）をそれぞれ示している。命令５２と５３は、いずれも演算するデータがダブルワードのデータとなっている。
シーケンスプログラムメモリ１に格納される命令コードは、第２図のａ＋１番地、ａ＋２番地、ａ＋５番地の命令をＤＳＴＭＬＤ命令に置き換え、ａ＋３番地の命令をＤ＋命令に置き換え、ａ＋６番地の命令をＤＩＮＣ命令に置き換えた組み合せとなる。また、第２図で示す命令との区別は、第５図に示す命令コード中のデータ長のビットにて区別される。
第１２図は、第１１図に示されている例３のラダー回路を第１図に示されている演算回路２で動作させたときに、命令５２、５３を実行した場合の動作を示すタイミングチャートであり、第１３図は命令５２、５３を実行しない場合の動作を示すタイミングチャートである。なお、第１２図、第１３図のデータメモリのアドレスで、Ｂ３Ｒと記載されているのは、Ｂ３Ｒレジスタ５の値がデータメモリアドレスとなり、ＡＤＲと記載されているのはアドレスレジスタ１９の値がデータメモリアドレスとなることを示す。
つぎに、例３のシーケンスプログラムによる動作について説明する。ＤＳＴＭＬＤ命令が実行の場合の動作について、第１２図を用いて説明する。ＤＳＴＭＬＤ命令の命令コードがＢ２Ｒレジスタ４に格納されると（第１２図の期間Ｔ２）、命令デコード部６でＨ／Ｗ命令であることを認識し、命令の種別、データメモリ３へのリード／ライトの有無、演算に必要なウェイト数をデコード信号として出力する。つぎに、期間Ｔ３では、クロックＢ３ＲＣＫでＢ２Ｒレジスタ４の内容をＢ３Ｒレジスタ５に格納すると共に、期間Ｔ１でデコードした内容をＤＥＣ１レジスタ１５にラッチした後、Ｂ３Ｒレジスタ５に格納されたデータメモリアドレスからデータを入力レジスタ１４にリードする。また、このときＢ３Ｒレジスタ５に格納されたアドレスをアドレスレジスタ１９にラッチしてインクリメントを行う。
期間Ｔ４では、直前のＬＤ命令の演算によるＨＷＢＯの値から実行（ＨＷＢＯ＝１）／非実行（ＨＷＢＯ＝０）を命令デーコード部６で判断し、ＨＷＢＯ＝１の場合には、スタックポインタ制御部２１とデータメモリ制御部２２の動作によって入力レジスタ１４の内容をスタックポインタ１８が示すデータ格納用レジスタ１７に格納し、スタックポインタ１８の値をインクリメントすると共に、データメモリ３に対するアドレスをＢ３Ｒレジスタ５からアドレスレジスタ１９に切換えてデータメモリ３のデータを入力レジスタ１４に読み込む。これにより、Ｂ３Ｒレジスタ５に格納されたアドレス＋１番地からデータを読み込むこととなる。
期間Ｔ５では、期間Ｔ４で読み込んだ入力レジスタ１４の内容をスタックポインタ１８が示すデータ格納用レジスタ１７に格納し、スタックポインタ１８の値をインクリメントする。このとき、演算部９と、導通／非導通情報格納部７は動作しない。
つぎに、ＤＳＴＭＬＤ命令が非実行の場合について、第１３図を用いて説明する。第１３図において、期間Ｔ２と期間Ｔ３は第１２図に示されている動作と全く同様の動作を行うが、期間Ｔ４でＨＷＢＯ＝０となると、パイプライン動作を停止させているＶ８０ＷＡＩＴ信号とデータメモリ３に対するリード信号を非アクティブとして、パイプライン動作を再開し、データメモリ３のリードを中断する。また、期間Ｔ３で入力レジスタ１４に読み込んだデータをデータ格納用レジスタ１７に転送せずに処理を終了する。
つぎに、Ｄ＋命令の動作について、第１２図と第１３図を用いて説明する。Ｄ＋命令では、データメモリ３からデータをリードする命令が２回あるため、Ｄ＋命令がＢ２Ｒレジスタ４に格納された段階で、ＨＷＢＯの値は確定している。このため、命令デコード部６では、ＨＷＢＯ＝１の場合には、演算を実行するため、４ウェイト、ＨＷＢＯ＝０の場合には、演算を実行しないため０ウェイトの命令としてデコードされ、Ｂ３Ｒレジスタ５に転送される。
ＨＷＢＯ＝１の場合には、期間Ｔ９では、演算を実行せず、パイプライン制御部２３よりウェイト信号のみ出力してパイプライン動作を停止させる。また、Ｂ３Ｒレジスタ５の内容をアドレスレジスタ１９に転送してインクリメントを行う。
期間Ｔ１０と期間Ｔ１１では、スタックポインタ１８をデクリメントしながら、データ格納用レジスタ１７に格納されている加算データと被加算データを演算部９内のレジスタにリードし、さらに演算部９内の加算器にて加算を行う。期間Ｔ１２では、加算した結果をデータメモリ３にライトする。このとき、ライトするアドレスはＢ３Ｒレジスタ５に格納されたデータメモリアドレスに下位１６ビットのデータをライトする。また、ライト信号はデータメモリ制御部２２にて生成する。
さらに、ウェイト信号を解除してパイプライン動作を再開すると共に、Ｔ１３の期間Ｔでは、ＤＳＴＭＬＤ命令と同様に、アドレスレジスタ１９の値をデータメモリアドレスとして、上位１６ビットのデータをライトする。また、ウェイト信号を解除してパイプライン動作を再開すると共に、演算の最後で、初期化クロックＤＬ２ＣＲＬによりＤＥＣ２レジスタ１６の内容をクリアする。
これに対し、ＨＷＢＯ＝０の場合には、Ｂ３Ｒレジスタ１６に転送された段階で、０ウェイトの命令としてデコードされているため、Ｖ８０ＷＡＩＴ信号によるパイプライン動作の停止と、スタックポインタ１８の制御と、加算器による加算と、加算結果のデータメモリ３へのライトを一切実行せずに、期間Ｔ７の最後で、スタックポインタ１８のイニシャライズのみを行う。
つぎに、ＤＩＮＣ命令の動作について、第１２図、第１３図を用いて説明する。Ｄ＋命令では、データメモリ３からデータをリードする命令が１回しかないが、第２図に示すＩＮＣ命令とは異なり、直前のＤＳＴＭＬＤ命令が、最低でも１サイクルパイプライン動作を停止させる。このため、ＤＩＮＣ命令の命令コードがＢ２Ｒレジスタ４に格納され、Ｂ３Ｒレジスタ５に転送される以前にＨＷＢＯの値は確定している。このため、命令デコード部６では、ＨＷＢＯ＝１の場合には、演算を実行するため、３ウェイト、ＨＷＢＯ＝０の場合には、演算を実行しないため、０ウェイトの命令としてデコードされ、Ｂ３Ｒレジスタ５に転送される。
ＨＷＢＯ＝１の場合には、期間Ｔ９では、演算を実行せず、パイプライン制御部２３よりウェイト信号のみ出力してパイプライン動作を停止させる。また、Ｂ３Ｒレジスタ５の内容をアドレスレジスタ１９に転送してインクリメントを行う。
期間Ｔ１９では、スタックポインタ１８をデクリメントしながら、データ格納用レジスタ１７に格納されている被加算データを演算部９内のレジスタにリードし、さらに演算部９内の加算器にて加算を行う。このとき、ＤＩＮＣ命令はデータ格納用レジスタ１７から演算部９内のレジスタに転送するデータが被加算データのみであるため、１サイクルで転送が完了する。
期間Ｔ２０では、加算した結果をデータメモリ３にライトする。このとき、ライトするアドレスはＢ３Ｒレジスタ５に格納されたデータメモリアドレスに下位１６ビットのデータをライトし、ライト信号はデータメモリ制御部２２にて生成する。さらに、ウェイト信号を解除してパイプライン動作を再開すると共に、期間Ｔ１３では、ＤＳＴＭＬＤ命令と同様に、アドレスレジスタ１９の値をデータメモリアドレスとして、上位１６ビットのデータをライトする。また、ウェイト信号を解除してパイプライン動作を再開すると共に、演算の最後で、初期化クロックＤＬ２ＣＲＬによりＤＥＣ２の内容をクリアする。なお、ＤＩＮＣ命令の非実行の場合の動作はＤ＋命令の動作と全く同様であるので、その説明は省略する。
つぎに、Ｄ＋Ｐ命令やＤＩＮＣＰ命令のように、ダブルワードで、かつ導通／非導通情報格納部７の状態が、０（オフ）から１（オン）に変化したスキャンのみ実行する命令について説明する。
Ｄ＋Ｐ命令やＤＩＮＣＰ命令は、前述のＤ＋命令やＤＩＮＣ命令と同様に、Ｂ２Ｒレジスタ４に命令コードが格納されている段階で、ＨＷＢＯが確定するため、ＨＷＢＯとＰＭの反転の論理積により、Ｂ２Ｒレジスタ４からＤＥＣ１レジスタ１５に転送する際に、実行条件が成立している場合には、それぞれ４ウェイトと３ウェイトの命令として転送され、実行条件が成立していない場合には、第８図で示す＋Ｐ命令と同様に、１ウェイトの命令としてデコードされる。
このとき、実行条件が成立していれば、第１０図の＋Ｐ命令と同様に、ＤＥＣ２レジスタ１６に命令コードが格納された段階で、シーケンスプログラムメモリ１のアドレスを−３して実行フラグビットをライトし、つぎのサイクル以降で、命令をフェッチする。これに対し、実行条件が成立していなければ、第９図の＋Ｐ命令と同様に、ＤＥＣ１レジスタ１６に命令コードが格納された段階で、Ｂ０Ｒレジスタに退避する。さらにＤＥＣ２レジスタ１６に命令コードが格納された段階で、シーケンスプログラムメモリ１のアドレスを−３して実行フラグビットをライトし、つぎのサイクルでは、Ｂ０Ｒレジスタに退避した命令コードをＢ１Ｒレジスタに転送する。
上述したように、ダブルワードの命令を実行する場合には、データメモリ３に対するアドレスをインクリメントしてアドレスを生成し、データメモリ３にダブルワードデータをリード／ライトするので、ダブルワードの命令をＨ／Ｗ演算回路で高速処理することができ、ダブルワードの命令の処理時間を高速化する効果が得られる。
第１４図（ａ）、（ｂ）は、シーケンスプログラムのラダー回路と命令コードの内容（例４）を示している。第１１図（ａ）において、６０はデータメモリ３に格納されたＸ０デバイスの状態を読み出し、導通／非導通情報格納部７に格納する命令（シンボル）を、６１はデータメモリ３のＤ０とＤ１に格納されたダブルワードデータと、Ｄ２とＤ３に格納されたダブルワードデータの比較を行い、その比較結果をＨＷＢＯとの論理積を導通／非導通情報格納部７に格納する命令（シンボル）を、６２はＭＯＶ命令をそれぞれ示している。
シーケンスプログラムメモリ１に格納される命令５１の命令コードはａ＋１番地とａ＋２番地のＤＳＴＭＬＤ命令と、ａ＋３番地のＡＮＤＤ＝命令を組み合わせた構成となる。第１５図は、第１４図に示すラダー回路を第１図に示されている演算回路２で動作させたときに、命令６１を実行した場合の動作を示すタイミングチャートであり、第１６図は命令６１を実行しない場合の動作を示すタイミングチャートである。なお、第１５図、第１６図のデータメモリ３のアドレスで、Ｂ３Ｒと記載されているのはＢ３Ｒレジスタ５の値がデータメモリアドレスとなり、ＡＤＲと記載されているのはアドレスレジスタ１９の値がデータメモリアドレスとなることを示している。
第１７図は、第１４図に示すＡＮＤＤ＝命令を処理する演算部９内の演算回路２４と導通／非導通情報格納部７の回路図である。演算回路２４は、比較器２５と、ＡＮＤ回路２６、２７と、ＯＲ回路２８とを有している。この回路図にて、ＣＯＭＰＢＯ信号は比較器２５から比較結果が一致していれば１を出力し、一致していなければ０を出力する信号、ＡＮＤＤ２と２ＷＡＩＴ２とＮＯＷＡＩＴ２はＤＥＣ２レジスタ５にラッチされたデコード信号であり、該当する命令であれば、１を出力する信号である。
ＡＮＤ回路２６はＣＯＭＰＢＯ信号とＡＮＤＤ２信号と２ＷＡＩＴ２信号の論理積を取り、もう一つのＡＮＤ回路２７はＡＮＤＤ２信号とＮＯＷＡＩＴ２信号とＨＷＢＯ信号の論理積を取り、ＯＲ回路２８はＡＮＤゲート２６、２７の出力信号の論理和を取り、導通／非導通情報格納部７へ出力する。なお、導通／非導通情報格納部７には他の命令でもデータがライトされるが、第１７図では、その回路を省略している。
つぎに、例４のシーケンスプログラムによる動作について説明する。ＡＮＤＤ＝命令を実行する場合の動作について、第１５図を用いて説明する。ＡＮＤＤ＝命令がＢ２Ｒレジスタ４に格納された段階（第１５図の期間Ｔ６）では、ＨＷＢＯの値は確定しているため、命令デコード部６では、ＨＷＢＯ＝１の場合には、演算を実行するため、２ウェイト、ＨＷＢＯ＝０の場合には、演算を実行しないため、０ウェイトの命令としてデコードされ、Ｂ３Ｒレジスタ５に転送される。ＨＷＢＯ＝１の場合には、期間Ｔ９では、演算を実行せず、パイプライン制御部２３よりウェイト信号のみ出力してパイプライン動作を停止させる。
期間Ｔ１０と期間Ｔ１１では、スタックポインタ１８をデクリメントしながら、データ格納用レジスタ１７に格納されている比較データを演算部９内のレジスタにリードし、演算部９内の比較器にて比較を行った後に、ＣＯＭＰＢＯ信号（比較結果が一致していれば１を出力し、一致していなければ０を出力する信号）とＨＷＢＯとの論理積を実施してＨＷＢＯに上書きする。
つぎに、ＡＮＤＤ＝命令が非実行の場合の動作について、第１６図を用いて説明する。ＡＮＤＤ＝命令がＢ２Ｒレジスタ４に格納されると（第１６図の期間Ｔ５）と、前述のとおり０ウェイトの命令としてデコードされてＢ３Ｒレジスタ５に転送される。
つぎに、期間Ｔ７では、処理を行わずにＤＥＣ２レジスタ５に命令コードを転送する。さらに、期間Ｔ８ではＨＷＢＯ＝０が確定しているため、ＣＯＭＰＢＯ信号とＨＷＢＯの論理積を格納せずに、直前のＨＷＢＯの値をそのままＨＷＢＯに上書きする。また、最後にスタックポインタ１８のイニシャライズを実施して処理を完了する。ここでは、Ｄ０とＤ１に格納されたダブルワードデータと、Ｄ２とＤ３に格納されたダブルワードデータが一致した場合にＣＯＭＰＢＯ信号＝１としたが、大小の比較や不一致を比較条件としても同様である。
つぎに、第１７図に示す回路図について説明する。第１７図で、２ＷＡＩＴ２信号とＮＯＷＡＩＴ２信号はＤＥＣ２レジスタ１６にラッチされたデコード信号であり、Ｂ２Ｒレジスタ５に格納された段階で、ＨＷＢＯ＝１の場合には２ＷＡＩＴ２信号が１となり、ＨＷＢＯ＝０の場合にはＮＯＷＡＩＴ２信号が１となる。すなわち、実行条件が成立した場合には、比較器２５のデータをＨＷＢＯに格納し、実行条件が成立しない場合はＨＷＢＯの値をそのまま上書きする。
また、第１４図（ｃ）に示すラダー回路図にて、６３で示すＯＲＤ＝命令は、ＡＮＤＤ＝命令と異なり、その比較結果とＨＷＢＯの論理和を導通／非導通情報格納部７に格納する命令である。この場合、ＨＷＢＯ＝０の場合には、演算を実行し、ＨＷＢＯ＝１の場合には演算を実行しないようにすることにより、前述ののＡＮＤＤ＝命令と同様に処理時間を短縮することができる。
上述したように、導通／非導通情報格納部７に演算結果を格納する命令において、命令の実行条件により比較演算を実施する前に実行／非実行の判断を行い、命令が非実行の場合は、比較演算を実施せずにそのまま導通／非導通情報格納部７のデータを上書きすることにより、処理を短縮するようにしたので、非実行時の処理を短縮することができる。
第１８図（ａ）、（ｂ）は、シーケンスプログラムのラダー回路と命令コードの内容（例５）を示している。第１８図（ａ）において、７０はビットデバイスＸ０の値が０→１に変化したスキャンで接点が導通する命令（シンボル）を、７１は転送命令（シンボル）を、７２はＬＤ命令（シンボル）を、７３はＸ２と命令７２のＬＤ命令の演算結果の論理積が１の場合に接点が導通する命令（シンボル）を、７４は命令７３までの接点の状態が０→１に変化したスキャンで接点が導通する命令（シンボル）を、７５は転送命令（シンボル）をそれぞれ示している。第１９図は、１スキャン目の命令７０、７４の動作を示すタイミングチャートであり、第２０図は、２スキャン目以降の前記命令の動作を示すタイミングチャートである。
つぎに、第１８図のＬＤＰ命令７０の動作について、第１９図と第２０図を用いて説明する。第１９図において、ＬＤＰ命令の命令コードがＢ２Ｒレジスタ４に格納されると、１ウェイトの命令としてデコードされてＢ３Ｒレジスタ５に転送される。
期間Ｔ２では、データメモリ３へリードを行い、ビットデバイスＸ０の状態を入力レジスタ１４に読み込むと共に、Ｖ８０ＷＡＩＴ信号によりパイプラインレジスタの動作を停止させる。期間Ｔ３では、Ｘ０の状態とＰＭの反転の論理積を導通／非導通情報としてＨＷＢＯに格納すると共に、ビットデバイスＸ０の状態を実行フラグビットに格納する。
つぎに、第２０図を用いて２スキャン目以降の動作について説明する。まず、第１９図の期間Ｔ３で、Ｘ０＝０がＳＧＤＯに格納された場合には、２スキャン目もＰＭ＝０となり、１スキャン時のＬＤＰ命令を実行する前と同じである。
つぎに、第１９図の期間Ｔ３で、Ｘ０＝１がＳＧＤＯに格納された場合について説明する。この場合、第２０図の期間Ｔ３で示すとおり、ＬＤＰ命令のＰＭの値は１が格納されており、Ｘ０とＰＭの反転の論理積はＸ０の状態によらず、０となり、ＨＷＢＯは０（接点が非導通）となる。
このとき、第２０図の期間Ｔ３で、Ｘ０＝１が実行フラグビットに格納されると、３スキャン目も２スキャン目のＬＤＰ命令を実行する前の状態と同じとなる。また、Ｘ０＝０が実行フラグビットに格納されると、３スキャン目も１スキャン目のＬＤＰ命令を実行する前の状態と同じとなる。
第１８図のＭＥＰ命令７４の動作について、第１９図と第２０図を用いて説明する。第１９図において、ＭＥＰ命令の命令コードがＢ２Ｒレジスタ４に格納されると、１ウェイトの命令としてデコードされてＢ３Ｒレジスタ５に転送される。
期間Ｔ９では、Ｖ８０ＷＡＩＴ信号によりパイプラインレジスタの動作を停止させる。期間Ｔ１０では、ＨＷＢＯのデータを導通／非導通情報格納部７内のレジスタに退避させ、ＨＷＢＯとＰＭの反転の論理積を導通／非導通情報としてＨＷＢＯに格納すると共に、退避したＨＷＢＯの状態を実行フラグビットに格納する。
つぎに、第２０図を用いて２スキャン目以降の動作について説明する。まず、第１９図の期間Ｔ１０で、ＨＷＢＯ＝０を退避してＳＧＤＯに格納された場合には、２スキャン目もＰＭ＝０となり、１スキャン目のＭＥＰ命令を実行する前と同じである。
つぎに、第１９図の期間Ｔ１０で、ＨＷＢＯ＝０を退避してＳＧＤＯに格納された場合について説明する。この場合、第２０図の期間Ｔ１０で示すとおり、ＭＥＰ命令のＰＭの値は１が格納されており、ＨＷＢＯとＰＭの反転の論理積はＨＷＢＯの状態にかかわらず０となり、ＨＷＢＯは０（接点が非導通）となる。
このとき、第２０図の期間Ｔ１０で、ＨＷＢＯ＝１が退避されて実行フラグビットに格納されると、３スキャン目も２スキャン目のＭＥＰ命令を実行する前の状態と同じとなる。また、ＨＷＢＯ＝０が退避されて実行フラグビットに格納されると、３スキャン目も１スキャン目のＭＥＰ命令を実行する前の状態と同じとなる。また、ＭＥＰ命令では、第１９図の期間Ｔ１０に示すように、ＭＥＰ命令の演算でＨＷＢＯを更新するため、更新する前のデータを一旦レジスタに退避させて、退避させたデータを実行フラグビットに書き込む。
また、ここでは、立上りで動作するＬＤＰ命令とＭＥＰ命令について説明したが、ＬＤＰ命令のＨＷＢＯに格納するデータをＸ０の反転とＰＭの論理積を格納すると、ビットデバイスＸが１→０に立下ったスキャンで動作する命令となる。また、ＭＥＰ命令において、ＨＷＢＯの反転とＰＭの論理積をＨＷＢＯに格納すると、接点が１→０に立下ったスキャンで動作する命令となる。同様に、Ｘ０の状態とＰＭの反転とＨＷＢＯの論理積をＨＷＢＯに格納すると第１８図（ｃ）の命令７６で示すＡＮＤＰ命令となり、Ｘ０の状態とＰＭの反転の論理積とＨＷＢＯの論理和をＨＷＢＯに格納すると、第１８図（ｃ）の命令７７で示すＯＲＰ命令となる。
上述したように、データメモリ３からリードしたビットデバイスと実行フラグビットにより論理演算を行い、演算結果を実行／非実行情報格納部７に書き込むと共に、シーケンスプログラムメモリ１の実行フラグビットに前回のスキャンのビットにデバイスの状態を書き込むので、ビットデバイスが変化したスキャンのみ実行する命令をＨ／Ｗ演算回路で高速処理することが可能となり、処理時間を高速化することができる。
また、実行／非実行情報格納部７の状態と実行フラグビットにより論理演算を行い、演算結果を実行／非実行情報格納部７に書き込むと共に、シーケンスプログラムメモリ１の実行フラグビットに前回のスキャンの実行／非実行情報格納部７の状態を書き込むので、接点の状態が変化したスキャンのみ実行する命令をＨ／Ｗ演算回路で高速処理することが可能となり、処理時間を高速化することができる。
産業上の利用の可能性
以上のように、本発明にかかるプログラマブルコントローラは、シーケンス制御を行う各種工作機械、産業機械に対して有用である。
【図１】
0003691435.tif 000002
【図２】
0003691435.tif 000003
【図３】
0003691435.tif 000004
【図４】
0003691435.tif 000005
【図５】
0003691435.tif 000006
【図６】
0003691435.tif 000007
【図７】
0003691435.tif 000008
【図８】
0003691435.tif 000009
【図９】
0003691435.tif 000010
【図１０】
0003691435.tif 000011
【図１１】
0003691435.tif 000012
【図１２】
0003691435.tif 000013
【図１３】
0003691435.tif 000014
【図１４】
0003691435.tif 000015
【図１５】
0003691435.tif 000016
【図１６】
0003691435.tif 000017
【図１７】
0003691435.tif 000018
【図１８】
0003691435.tif 000019
【図１９】
0003691435.tif 000020
【図２０】
0003691435.tif 000021
【図２１】
0003691435.tif 000022
【図２２】
0003691435.tif 000023