(57)【特許請求の範囲】
【請求項１】
システム全体の制御を行う単独あるいは複数台のＣＰＵユニットと、ＣＰＵユニットの制御の下に動作する複数台のＩ／Ｏユニットとを備えるプログラマブルコントローラシステムのリセット制御方法において、
ＣＰＵユニットが各Ｉ／Ｏユニット毎に制御ＣＰＵ指定情報を指令する命令を書込み、各Ｉ／ＯユニットはＣＰＵユニットが指令する命令をデコードして制御ＣＰＵ指定情報であることを判断し、その制御ＣＰＵ指定情報をＩ／Ｏユニット内に保持し、ＣＰＵユニットがリセット制御を指令する命令を全てのＩ／Ｏユニットに対して発行し、各Ｉ／Ｏユニットは、そのリセット制御を指令する命令をデコードして制御元のＣＰＵユニットからの命令であると判断した場合には、そのリセット制御指令に従うことにより、ＣＰＵユニットが指定するシステム上の特定のＩ／Ｏユニットのリセットを制御するプログラマブルコントローラシステムのリセット制御方法であって、
前記ＣＰＵユニットが各Ｉ／Ｏユニットに対してリセットを発行する命令として、Ｉ／Ｏユニットの制御部をリセット制御する命令と、Ｉ／Ｏユニットの出力部をリセット制御する命令の２種類を備えていることを特徴とするプログラマブルコントローラシステムのリセット制御方法。
【請求項２】
システム全体の制御を行う単独あるいは複数台のＣＰＵユニットと、ＣＰＵユニットの制御の下に動作する複数台のＩ／Ｏユニットとを備えるプログラマブルコントローラシステムのリセット制御方法において、
ＣＰＵユニットがシステム全体に発行するリセット信号として、Ｉ／Ｏユニットの制御部をリセット制御する信号と、Ｉ／Ｏユニットの出力部をリセット制御する信号の２系統を備え、その二つの信号の使い分けにより、Ｉ／Ｏユニットのリセットを制御部と出力部とで個別に行うことを特徴とするプログラマブルコントローラシステムのリセット制御方法。
【請求項３】
システム全体の制御を行う単独あるいは複数台のＣＰＵユニットと、ＣＰＵユニットの制御の下に動作する複数台のＩ／Ｏユニットとを備えるプログラマブルコントローラシステムにおいて、
ＣＰＵユニットが各Ｉ／Ｏユニット毎に制御ＣＰＵ指定情報を指令する命令を書込み、各Ｉ／ＯユニットはＣＰＵユニットが指令する命令をデコードして制御ＣＰＵ指定情報であることを判断し、その制御ＣＰＵ指定情報をＩ／Ｏユニット内に保持し、ＣＰＵユニットがリセット制御を指令する命令を全てのＩ／Ｏユニットに対して発行し、各Ｉ／Ｏユニットは、そのリセット制御を指令する命令をデコードして制御元のＣＰＵユニットからの命令であると判断した場合には、そのリセット制御指令に従うことにより、ＣＰＵユニットが指定するシステム上の特定のＩ／Ｏユニットのリセットを制御するプログラマブルコントローラシステムであって、
前記ＣＰＵユニットは、各Ｉ／Ｏユニットに対してリセットを発行する命令として、Ｉ／Ｏユニットの制御部をリセット制御する命令と、Ｉ／Ｏユニットの出力部をリセット制御する命令の２種類を備えていることを特徴とするプログラマブルコントローラシステム。
【請求項４】
請求項３記載のプログラマブルコントローラシステムにおいて、
Ｉ／Ｏユニットは、制御ＣＰＵ指定情報をラッチするレジスタと、ＣＰＵユニットが指定するシステム上の特定のＩ／Ｏユニットのみをリセットするための情報をラッチするレジスタとを有していることを特徴とするプログラマブルコントローラシステム。
【請求項５】
請求項３記載のプログラマブルコントローラシステムにおいて、
複数台のＣＰＵユニットがそれぞれ別のＩ／Ｏユニットの制御を行う分散制御型マルチＣＰＵ方式のプログラマブルコントローラシステムであることを特徴とするプログラマブルコントローラシステム。
【請求項６】
請求項３記載のプログラマブルコントローラシステムにおいて、
現在稼動しているデューティＣＰＵユニットがエラーにより停止した場合に、停止したＣＰＵユニットの代わりとなって稼動する待機ＣＰＵユニットを含む冗長制御型マルチＣＰＵ方式のプログラマブルコントローラシステムであることを特徴とするプログラマブルコントローラシステム。
【請求項７】
システム全体の制御を行う単独あるいは複数台のＣＰＵユニットと、ＣＰＵユニットの制御の下に動作する複数台のＩ／Ｏユニットとを備えるプログラマブルコントローラシステムにおいて、
ＣＰＵユニットは、システム全体に発行するリセット信号として、Ｉ／Ｏユニットの制御部をリセット制御する信号を出力する手段と、Ｉ／Ｏユニットの出力部をリセット制御する信号を出力する手段を有し、その二つの信号の使い分けにより、Ｉ／Ｏユニットのリセットを制御部と出力部とで個別に行うことを特徴とするプログラマブルコントローラシステム。
【請求項８】
請求項７記載のプログラマブルコントローラシステムにおいて、
複数台のＣＰＵユニットがそれぞれ別のＩ／Ｏユニットの制御を行う分散制御型マルチＣＰＵ方式のプログラマブルコントローラシステムであり、複数台のＣＰＵユニットの一つがリセット制御を一元管理することを特徴とするプログラマブルコントローラシステム。
【請求項９】
請求項７記載のプログラマブルコントローラシステムにおいて、
現在稼動しているデューティＣＰＵユニットがエラーにより停止した場合に、停止したＣＰＵユニットの代わりとなって稼動する待機ＣＰＵユニットを含む冗長制御型マルチＣＰＵ方式のプログラマブルコントローラシステムであることを特徴とするプログラマブルコントローラシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、プログラマブルコントローラシステムおよびプログラマブルコントローラシステムのリセット制御方法に関するものである。
【０００２】
【従来の技術】
従来におけるプログラマブルコントローラシステムについて説明する。第７図は、従来におけるプログラマブルコントローラシステムのシステム構成を示している。このプログラマブルコントローラシステムは、システムに電源を供給する電源ユニット５００と、制御のための演算処理を実行するシステムの中枢となるＣＰＵユニット５１０と、ＣＰＵユニット５１０が出力する指令に基づき外部機器６００へオン／オフ情報を出力する出力ユニット５２０と、専用回線によりシステム（子局６１０）間のデータ通信を行うデータリンクユニット５３０と、サーボモータ６２０と接続されて位置決め制御を行う位置決めユニット５４０とを有し、これらユニットは、システムバスを含むマザーボード（以下、ベースユニットという）５５０に装着され、バス接続されている。
【０００３】
なお、以下の説明においてはＣＰＵユニット５１０により制御される出力ユニット５２０、データリンクユニット５３０等を総じてＩ／Ｏユニットと呼ぶ。
【０００４】
ＣＰＵユニット５１０は、マイクロプロセッサ（ＭＰＵ）５１１以外に、リセット回路５１２を有している。リセット回路５１２は、電源系統から送られてくる電源ダウン予告のエラー信号（電源リセット信号：以下、ΣＲＥＬ信号という）とマイクロプロセッサ５１１で発生する演算エラー等によるエラー信号（以下、ＣＰＵＥＲＲＬ信号という）を統合してプログラマブルコントローラシステムのＩ／Ｏユニットに対するリセットを制御するリセット信号（以下、ΣＭＲＥ信号という）を出力する。
【０００５】
リセット回路５１２において、ΣＲＥＬ信号とＣＰＵＥＲＲＬ信号がともに非アクティブ（Ｈレベル）である場合には、ダイオード５１３、５１４には電流が流れないので、トランジスタ５１５のベース電位はＨレベルとなり、トランジスタ５１５のエミッタ−コレクタ間に電流が流れ、ΣＭＲＥ信号はＬレベル（非アクティブ）となる。
【０００６】
たとえば、電源オフにより電源ダウンを検出した電源ユニット５００がΣＲＥＬ信号をＬレベルで出力すると、ダイオード５１３の順方向に電流が流れ、トランジスタ５１５のベース電位がＬレベルとなり、トランジスタ５１５のエミッタ−コレクタ間に電流が流れなくなり、これに応じてΣＭＲＥ信号がＨレベル（アクティブ）となる。
【０００７】
また、ＭＰＵ５１１内で演算エラーが発生すると、ＣＰＵユニット５１０は、Ｉ／Ｏユニットを初期状態にリセットするために、ＣＰＵＥＲＲＬ信号をＬレベルで出力する。ＣＰＵＥＲＲＬ信号がＬレベルになると、ダイオード５１４の順方向に電流が流れ、トランジスタ５１５のベース電位がＬレベルとなり、トランジスタ５１５のエミッタ−コレクタ間に電流が流れなくなり、ΣＭＲＥがＨレベル（アクティブ）となる。
【０００８】
ＣＰＵユニット５１０内部のＭＰＵ５１１で演算エラーが発生した場合等にＭＰＵ５１１がＣＰＵＥＲＲＬ信号をＬレベルにしてＩ／Ｏユニットを初期状態にするリセット制御により、あるいは電源オン／オフ操作が行われることにより、電源ユニット５００がΣＲＥＬ信号をＬレベルにしてＩ／Ｏユニットを初期状態にするリセット制御により、ΣＭＲＥ信号がベースユニット５５０を通してシステムの全てのユニット（出力ユニット５２０、データリンクユニット５３０、位置決めユニット５４０）に伝えられる。
【０００９】
出力ユニット５２０は、ΣＭＲＥ信号がＨレベルになると、出力部５２１のラッチをクリアして外部機器６００をオフする。データリンクユニット５３０は、制御部５３１及び伝送Ｉ／Ｆ部５３２のＲＥＳＥＴ端子にＨレベルの信号を入力することにより、制御部５３１及び伝送Ｉ／Ｆ部５３２を初期状態にリセットしてネットワークを切断する。
位置決めユニット５４０は、制御部５４１のＲＥＳＥＴ端子及び出力部５４２のＣＬＲ端子にＨレベルの信号を入力することにより、制御部５４１を初期状態にリセットすると共に出力部５４２のラッチをクリアしてサーボモータ６２０の運転を停止させる。
【００１０】
【発明が解決しようとする課題】
上述のような従来におけるプログラマブルコントローラシステムでは、リセット系統を１系統しか持たないため、システム全体としてリセットするか、否かの制御しかできず、各ユニットを個別にリセットすることができない。
【００１１】
また、従来におけるプログラマブルコントローラシステムで、各ユニットを個別にリセットしようとする場合には、リセット回路５１２と同様の回路をユニットの台数分だけＣＰＵユニット５１０の内部に作り込み、ΣＭＲＥ信号に相当するリセット信号をユニットの台数分だけＣＰＵユニット５１０内部及びベースユニット５５０に設ける必要があり、接続されるユニットの台数がユーザにより自由に設定されるプログラマブルコントローラシステムにおいては、それだけの回路、制御信号を設けることは現実的に不可能といえる。
【００１２】
また、従来におけるプログラマブルコントローラシステムでは、位置決めユニット５４０の制御部５４１が暴走した場合、位置決めユニット５４０の制御部５４１を初期化するために、ＣＰＵユニット５１０が、ＣＰＵＥＲＲＬ信号をＬレベルで出力することにより、リセットを発行すると、データリンクユニット５３０までリセットされてしまい、ネットワークが切断されてしまうなど、システムの運用が非効率になるという問題点があった。
【００１３】
また、従来におけるプログラマブルコントローラシステムでは、ＣＰＵユニット５１０内部の演算エラー等でシステムが停止した場合に、出力をクリアするためにリセットを発行すると、データリンクユニット５３０までリセットされてしまい、ネットワークが切断されてしまうなど、システムの運用が非効率になるという問題点があった。
【００１４】
また、従来におけるプログラマブルコントローラシステムでは、各ユニットを個別にリセットすることができないため、同一のベースユニット５５０を用いたプログラマブルコントローラシステムによりＣＰＵユニット５１０の台数を単数又は複数に変えてシステムの制御を行うことができないという問題点があった。
【００１５】
従って、本発明は、同一ベースユニットを用いたプログラマブルコントローラシステムで、単独ＣＰＵユニット、複数台のＣＰＵユニットによるＩ／Ｏユニット個々のリセット制御を可能とするプログラマブルコントローラシステムを提供することを目的としている。
【００１６】
【課題を解決するための手段】
本発明は、システム全体の制御を行う単独あるいは複数台のＣＰＵユニットと、ＣＰＵユニットの制御の下に動作する複数台のＩ／Ｏユニットとを備えるプログラマブルコントローラシステムのリセット制御方法において、ＣＰＵユニットが各Ｉ／Ｏユニット毎に制御ＣＰＵ指定情報を指令する命令を書込み、各Ｉ／ＯユニットはＣＰＵユニットが指令する命令をデコードして制御ＣＰＵ指定情報であることを判断し、その制御ＣＰＵ指定情報をＩ／Ｏユニット内に保持し、ＣＰＵユニットがリセット制御を指令する命令を全てのＩ／Ｏユニットに対して発行し、各Ｉ／Ｏユニットは、そのリセット制御を指令する命令をデコードして制御元のＣＰＵユニットからの命令であると判断した場合には、そのリセット制御指令に従うことにより、ＣＰＵユニットが指定するシステム上の特定のＩ／Ｏユニットのリセットを制御するプログラマブルコントローラシステムのリセット制御方法であって、前記ＣＰＵユニットが各Ｉ／Ｏユニットに対してリセットを発行する命令として、Ｉ／Ｏユニットの制御部をリセット制御する命令と、Ｉ／Ｏユニットの出力部をリセット制御する命令の２種類を備えていることを特徴とする。したがって、Ｉ／Ｏユニットの制御部と出力部とを個別にリセットすることができる。
【００１７】
また、本発明は、システム全体の制御を行う単独あるいは複数台のＣＰＵユニットと、ＣＰＵユニットの制御の下に動作する複数台のＩ／Ｏユニットとを備えるプログラマブルコントローラシステムのリセット制御方法において、ＣＰＵユニットがシステム全体に発行するリセット信号として、Ｉ／Ｏユニットの制御部をリセット制御する信号と、Ｉ／Ｏユニットの出力部をリセット制御する信号の２系統を備え、その二つの信号の使い分けにより、Ｉ／Ｏユニットのリセットを制御部と出力部とで個別に行う。したがって、システム全体のＩ／Ｏユニットのリセット制御を、Ｉ／Ｏユニットの制御部のリセットと、出力部のリセットとに分けて行うことができる。
【００１８】
また、本発明は、システム全体の制御を行う単独あるいは複数台のＣＰＵユニットと、ＣＰＵユニットの制御の下に動作する複数台のＩ／Ｏユニットとを備えるプログラマブルコントローラシステムにおいて、ＣＰＵユニットが各Ｉ／Ｏユニット毎に制御ＣＰＵ指定情報を指令する命令を書込み、各Ｉ／ＯユニットはＣＰＵユニットが指令する命令をデコードして制御ＣＰＵ指定情報であることを判断し、その制御ＣＰＵ指定情報をＩ／Ｏユニット内に保持し、ＣＰＵユニットがリセット制御を指令する命令を全てのＩ／Ｏユニットに対して発行し、各Ｉ／Ｏユニットは、そのリセット制御を指令する命令をデコードして制御元のＣＰＵユニットからの命令であると判断した場合には、そのリセット制御指令に従うことにより、ＣＰＵユニットが指定するシステム上の特定のＩ／Ｏユニットのリセットを制御するプログラマブルコントローラシステムであって、前記ＣＰＵユニットは、各Ｉ／Ｏユニットに対してリセットを発行する命令として、Ｉ／Ｏユニットの制御部をリセット制御する命令と、Ｉ／Ｏユニットの出力部をリセット制御する命令の２種類を備えていることを特徴とする。したがって、Ｉ／Ｏユニットの制御部と出力部とを個別にリセットすることができる。
【００１９】
また、本発明は、Ｉ／Ｏユニットが、制御ＣＰＵ指定情報をラッチするレジスタと、ＣＰＵユニットが指定するシステム上の特定のＩ／Ｏユニットのみをリセットするための情報をラッチするレジスタとを有している。したがって、レジスタの内容を参照してＣＰＵユニットが指定するシステム上の特定のＩ／Ｏユニットのみをリセットすることができる。
【００２０】
また、本発明は、複数台のＣＰＵユニットがそれぞれ別のＩ／Ｏユニットの制御を行う分散制御型マルチＣＰＵ方式のプログラマブルコントローラシステムである。したがって、分散制御型マルチＣＰＵ方式のプログラマブルコントローラシステムにおいて、ＣＰＵユニットが指定するシステム上の特定のＩ／Ｏユニットのみをリセットすることができる。
【００２１】
また、本発明は、現在稼動しているデューティＣＰＵユニットがエラーにより停止した場合に、停止したＣＰＵユニットの代わりとなって稼動する待機ＣＰＵユニットを含む冗長制御型マルチＣＰＵ方式のプログラマブルコントローラシステムである。したがって、冗長制御型マルチＣＰＵ方式のプログラマブルコントローラシステムにおいて、ＣＰＵユニットが指定するシステム上の特定のＩ／Ｏユニットのみをリセットすることができる。
【００２２】
また、本発明は、システム全体の制御を行う単独あるいは複数台のＣＰＵユニットと、ＣＰＵユニットの制御の下に動作する複数台のＩ／Ｏユニットとを備えるプログラマブルコントローラシステムにおいて、ＣＰＵユニットは、システム全体に発行するリセット信号として、Ｉ／Ｏユニットの制御部をリセット制御する信号を出力する手段と、Ｉ／Ｏユニットの出力部をリセット制御する信号を出力する手段を有し、その二つの信号の使い分けにより、Ｉ／Ｏユニットのリセットを制御部と出力部とで個別に行う。したがって、システム全体のＩ／Ｏユニットのリセット制御を、Ｉ／Ｏユニットの制御部のリセットと、出力部のリセットとに分けて行うことができる。
【００２３】
また、本発明は、複数台のＣＰＵユニットがそれぞれ別のＩ／Ｏユニットの制御を行う分散制御型マルチＣＰＵ方式のプログラマブルコントローラシステムであり、複数台のＣＰＵユニットの一つがリセット制御を一元管理する。したがって、分散制御型マルチＣＰＵ方式のプログラマブルコントローラシステムにおいて、システム全体のＩ／Ｏユニットのリセット制御を、Ｉ／Ｏユニットの制御部のリセットと、出力部のリセットとに分けて行うことができる。
【００２４】
また、本発明は、現在稼動しているデューティＣＰＵユニットがエラーにより停止した場合に、停止したＣＰＵユニットの代わりとなって稼動する待機ＣＰＵユニットを含む冗長制御型マルチＣＰＵ方式のプログラマブルコントローラシステムである。したがって、冗長制御型マルチＣＰＵ方式のプログラマブルコントローラシステムにおいて、システム全体のＩ／Ｏユニットのリセット制御を、Ｉ／Ｏユニットの制御部のリセットと、出力部のリセットとに分けて行うことができる。
【００２５】
【発明の実施の形態】
本発明をより詳細に詳述するために、添付の図面に従ってこれを説明する。まず、この発明によるプログラマブルコントローラシステムにおける４種類のリセットの概要について説明する。
【００２６】
ＣＰＵユニットは、Ｉ／Ｏユニットの動作状態確認用のポートを定期的に監視し、Ｉ／Ｏユニットに異常が発生したことを検出すると、検出したエラー状態にしたがって、
（１）自ユニットが管理するＩ／Ｏユニットの出力部のみリセットすればよい場合には、グループＩ／Ｏリセットを発行し、
（２）自ユニットが管理するＩ／Ｏユニットの制御部をリセットする必要がある場合には、グループユニットリセットを発行し、
（３）重度のエラーのためシステム全体の出力部をリセットする必要がある場合には、システムＩ／Ｏリセットを発行し、
（４）システム全体の制御部をリセットする必要がある場合には、システムユニットリセットを発行する。
【００２７】
第１図は、この発明の実施の形態１におけるグループＩ／Ｏリセットならびにグループユニットリセットを行う複数台のＣＰＵユニットを含むプログラマブルコントローラシステムを示している。
【００２８】
このプログラマブルコントローラシステムは、システムに電源を供給する電源ユニット１０と、制御のための演算処理を実行するシステムの中枢となるＣＰＵユニット２０Ａおよび２０Ｂと、サーボモータ（図示省略）を接続されて位置決め制御を行う位置決めユニット３０と、専用回線により図示されていない他のシステム間のデータ通信を行うデータリンクユニット５０と、を有し、これらユニットはシステムバス６１を含むベースユニット６０によって相互に接続されている。
【００２９】
ＣＰＵユニット２０Ａ、２０Ｂは、ＭＰＵ２１と、ＭＰＵ２１より書込まれたデータをベースユニット６０のシステムバス６１上に出力する命令生成部２２とを含んでおり、ライト時には、システムバス６１上に、コマンドフェーズＣＭＤ、アドレスフェーズＡＤＲ、データフェーズＤＴＡ（詳細は後述する）の三つのフェーズから成る一連のデータによるライト命令ＩＮＳＴ−Ｗをシステムバス６１上に発行する。
【００３０】
一つのＩ／Ｏユニットである位置決めユニット３０は、システムバス６１を通してＣＰＵユニット２０Ａあるいは２０Ｂが発行された命令を解読するコマンドデコード部３１と、位置決め制御を行う制御部３２と、サーボモータを駆動する信号を出力する出力部３３と、ＣＰＵユニットとのデータの授受を行うためのバッファメモリ３４と、コマンドデコード部３１で解読した命令の実行結果をラッチするレジスタ３５、３６、３７、３８、３９とを含んでいる。
【００３１】
ここでは、レジスタ３５は管理ＣＰＵ指定情報を、レジスタ３６はグループＩ／Ｏリセット情報を、レジスタ３７はグループＩ／Ｏリセットマスク情報を、レジスタ３８はグループユニットリセット情報を、レジスタ３９はグループユニットリセットマスク情報をそれぞれラッチする。レジスタ３５、３６、３７の出力側は論理回路４０によって出力部３３のＣＬＲ端子に接続され、レジスタ３５、３８、３９の出力側は論理回路４１によって制御部３２のＲＥＳＥＴ端子に接続され、レジスタ３５〜３９の設定により制御部３２や出力部３３のリセット制御を行う。
【００３２】
たとえば、レジスタ３５のＣＰＵ０ビットとレジスタ３８のＲＳＴＨ０ビットとレジスタ３９のＲＭＫ０ビットをそれぞれオンさせると、論理回路４１より制御部３２のＲＥＳＥＴ端子にＬレベルの信号が入力され、制御部３２が初期状態にリセットされる。
【００３３】
プログラマブルコントローラシステムでは、ＣＰＵユニット２０Ａあるいは２０Ｂが、Ｉ／Ｏユニットに対してシステムバス６１を介して命令ＩＮＳＴ−Ｗを発行することにより、Ｉ／Ｏユニットに対してデータの書込みを行う。
【００３４】
命令ＩＮＳＴ−Ｗの詳細内容について第２図を用いて説明する。命令ＩＮＳＴ−Ｗは、コマンドフェーズＣＭＤと、アドレスフェーズＡＤＲと、データフェーズＤＡＴＡの三つのフェーズからなる。
【００３５】
コマンドフェーズＣＭＤには、命令の対象がシステム全てのユニットなのか、特定のＩ／Ｏユニットなのかを表す数ビットからなる命令範囲指定情報と、特定のＩ／Ｏユニットに対する命令である場合にベースユニットのどのスロットに装着されているＩ／Ｏユニットに対する命令なのかを表す数ビットからなるスロット指定情報と、バッファメモリ、入出力レジスタなどＩ／Ｏユニット内のアクセスエリアを表す数ビットからなるエリア指定情報が含まれている。
【００３６】
アドレスフェーズＡＤＲにはＩ／ＯユニットのコマンドフェーズＣＭＤで指定されたアクセスエリアのアドレスが書き込まれ、データフェーズＤＡＴＡは、ライト時にはＩ／Ｏユニットにライトするデータで、リード時はＩ／Ｏユニットから読み出されるデータで構成される。
【００３７】
つぎに、命令発行の詳細手順について説明する。ＣＰＵユニット２０ＡがＩ／Ｏユニット（位置決めユニット）３０のバッファメモリ３４のアドレスＡに対してデータＢをライトする場合には、ＣＰＵユニット２０Ａ内部のＭＰＵ２１は、命令生成部２２に対し、Ｉ／Ｏユニット３０に対してバッファメモリ３４のアドレスＡにデータＢをライトするという指令ＩＮＳＴ−Ｗを発する。
【００３８】
命令生成部２２は、コマンドフェーズＣＭＤをシステムバス６１上に出力し、一定間隔をおいてアドレスフェーズＡＤＲをシステムバス６１上に出力し、さらに一定間隔をおいてデータフェーズＤＡＴＡ−Ｗをシステムバス６１上に出力する。
【００３９】
ＣＰＵユニット２０ＡがＩ／Ｏユニット３０のバッファメモリ３４のアドレスＣの内容をリードする場合には、ＣＰＵユニット２１Ａ内部のＭＰＵ２１は命令生成部２２に対して、Ｉ／Ｏユニット３０に対してバッファメモリエリアのアドレスＣの内容をリードするという指令ＩＮＳＴ−Ｒを発する。
【００４０】
命令生成部２２は、コマンドフェーズＣＭＤをシステムバス６１上に出力し、一定間隔をおいてアドレスフェーズＡＤＲをシステムバス６１上に出力する。コマンドフェーズＣＭＤとアドレスフェーズＡＤＲを受け取ったＩ／Ｏユニット３０はデータフェーズＤＡＴＡを出力し、ＣＰＵユニット２０ＡはそのデータフェーズＤＡＴＡをリードする。
【００４１】
つぎに、ＣＰＵユニットからの命令を受け取ったＩ／Ｏユニットの動作について説明する。
【００４２】
Ｉ／Ｏユニットは、それぞれ、システムバス６１を介して入力された命令のコマンドフェーズＣＭＤをコマンドデコード部３１にてデコードし、コマンドフェーズＣＭＤの命令範囲指定情報、スロット指定情報に、自ユニットに対する命令であることを示す情報が含まれていた場合には、続いて入力されるアドレスフェーズＡＤＲで指定されるアドレスにデータフェーズＤＡＴＡで指定されるデータを書込む。
【００４３】
つぎに、ＣＰＵユニット２０ＡがＩ／Ｏユニットに対してグループユニットリセットを発行する場合について説明する。グループユニットリセットとは、ＣＰＵユニットが指定する特定のＩ／Ｏユニットの制御部をリセットしてＩ／Ｏユニットを初期状態にするものである。
【００４４】
ＣＰＵユニット２０ＡがＩ／Ｏユニットに対してグループユニットリセットを発行する場合、以下の二つの命令を組合せて実行する。
【００４５】
一つは、Ｉ／Ｏユニット３０（または４０）に対して、ＣＰＵユニット２０Ａが、Ｉ／Ｏユニット３０（または４０）を管理するＣＰＵユニットであるという情報を電源オン後の初期設定時に、Ｉ／Ｏユニット３０（または４０）内部の管理ＣＰＵ指定情報用のレジスタ３５に書込む命令である。
【００４６】
本命令を実行することにより、レジスタ３５のＣＰＵ０ビットがＨレベルとなる。なお、ＣＰＵユニット２０Ｂが同じ命令を発行した場合には、レジスタ３５のＣＰＵ１ビットがＨレベルとなる。
【００４７】
もう一つは、ＣＰＵユニット２０Ａが管理する全てのＩ／Ｏユニットに対して、ＣＰＵユニット２０Ａがグループユニットリセットを発行するという情報をＩ／Ｏユニット内部のグループユニットリセット情報用のレジスタ３８に書込む命令である。
【００４８】
本命令を実行することにより、レジスタ３８のＲＳＴＨ０ビットがＨレベルとなる。なお、ＣＰＵユニット２０Ｂが同じ命令を発行した場合には、レジスタ３８のＲＳＴＨ１ビットがＨレベルとなる。
【００４９】
グループユニットリセットマスク情報をラッチするレジスタ３９は、初期値（ディフォルト値）をＨレベルに設定されており、このため、上記二つの命令が共に実行されると、制御部３２のＲＥＳＥＴ端子の入力がＬレベルとなり、Ｉ／Ｏユニット３０は制御部３２を初期状態にリセットする。
【００５０】
また、ＣＰＵユニット２０Ａが管理する全てのＩ／Ｏユニットに対してグループユニットリセットを解除するという命令をシステムバス６１上に出力すると、たとえば、Ｉ／Ｏユニット３０のコマンドデコード部３１がコマンドフェーズＣＭＤをデコードすることにより、レジスタ３８のグループユニットリセット情報がクリアされ、ＲＳＴＨ０ビットがＬレベルとなり、制御部３２のＲＥＳＥＴ端子の入力がＨレベルとなるので、グループユニットリセットが解除される。
【００５１】
ここで、ＣＰＵユニット２０ＡがＩ／Ｏユニット３０または４０に対して、システムバス６１を通じてＣＰＵユニット２０Ａからのグループユニットリセット命令をマスクするレジスタ３９をセットする命令を発行することにより、グループユニットリセットを各Ｉ／Ｏユニット毎にマスクすることが可能である。
【００５２】
これにより、ＣＰＵユニット２０Ａは、自己の管理するＩ／Ｏユニット全ての制御部に対して一斉にリセットをかけたり、自己の管理するＩ／Ｏユニットのうち、エラーを発生した特定の一つの制御部のみをリセットすることができ、制御部が暴走したユニットにのみリセット制御することが可能となるなど、システム運用の効率を高めることができる。
【００５３】
つぎに、ＣＰＵユニット２０ＡがＩ／Ｏユニット３０、４０に対してグループＩ／Ｏリセットを発行する場合について説明する。グループＩ／Ｏリセットとは、ＣＰＵユニットが指定する特定のＩ／Ｏユニットの出力部のみをリセットするものである。
【００５４】
グループＩ／Ｏリセットの発行及び解除は、グループユニットリセットの場合と同様に、二つの命令を組合せて実行する。
【００５５】
一つは、ＣＰＵユニット２０Ａが、Ｉ／Ｏユニット３０、４０を管理するＣＰＵユニットであるという情報をＩ／Ｏユニット３０（または４０）内部の管理ＣＰＵ指定情報用のレジスタ３５に書込む命令である。
【００５６】
本命令を実行することにより、レジスタ３５のＣＰＵ０ビットがＨレベルとなる。なお、ＣＰＵユニット２０Ｂが同じ命令を発行した場合には、レジスタ３５のＣＰＵ１ビットがＨレベルとなる。
【００５７】
もう一つは、ＣＰＵユニット２０Ａが管理する全てのＩ／Ｏユニットに対して、ＣＰＵユニット２０ＡがグループＩ／Ｏリセットを発行するという情報を電源オン後の初期設定時にＩ／Ｏユニット内部のグループＩ／Ｏリセット情報用のレジスタ３６に書込む命令である。
【００５８】
本命令を実行することにより、レジスタ３６のＩＯＲＨ０ビットがＨレベルとなる。なお、ＣＰＵユニット２０Ｂが同じ命令を発行した場合、グループＩ／Ｏリセット情報４７のＩＯＲＨ１ビットがＨレベルとなる。
【００５９】
グループＩ／Ｏリセットマスク情報をラッチするレジスタ３７は、初期値（ディフォルト値）をＨレベルに設定されており、このため上記二つの命令が共に実行されるとＩ／Ｏユニット３０は出力部３３をリセットして出力をオフする。
【００６０】
また、ＣＰＵユニット２０Ａが管理する全てのＩ／Ｏユニットに対してグループＩ／Ｏリセットを解除するという命令をシステムバス６１上に出力すると、Ｉ／Ｏユニット３０のコマンドデコード部３１がコマンドフェーズＣＭＤをデコードすることにより、レジスタ３６のグループＩ／Ｏリセット情報がクリアされ、ＩＯＲＨ０ビットがＬレベルとなり、出力部３３のＣＬＲ端子の入力がＨレベルとなるので、グループＩ／Ｏリセットが解除される。
【００６１】
ここで、ＣＰＵユニット２０ＡがＩ／Ｏユニット３０または４０に対して、システムバス６１を通じてＣＰＵユニット２０ＡからのグループＩ／Ｏリセット命令をマスクするレジスタ３７をセットする命令を発行することにより、グループＩ／Ｏリセットを各Ｉ／Ｏユニット毎にマスクすることが可能である。
【００６２】
これにより、ＣＰＵユニット２０Ａは、自己の管理するＩ／Ｏユニット全ての出力部を一斉にクリアしたり、自己の管理するＩ／Ｏユニットのうちエラーを発生した特定の一つの出力部のみリセットすることができ、システム運用の効率を高めることができる。
【００６３】
なお、第１図に示されている実施の形態では、各レジスタ３５〜３９を４ビットのレジスタとして説明したが、各レジスタのビット数をｎビットとすることにより、システム運用の効率を高めるために必要であるならば、任意のｎ台のＣＰＵユニットによる制御を行うことが可能である。
【００６４】
実施の形態１では、ＣＰＵユニットがシステムバス上に命令を出力してグループユニットリセット、グループＩ／Ｏリセットを発行または解除することにより、ＣＰＵユニットが指定する特定のＩ／Ｏユニットに対して制御部と出力部を区別してリセット制御することができるので、発生したエラーの種類によりシステムの最低限の範囲をリセット制御することができ、システム運用の効率を高めることができる。
【００６５】
第３図は、この発明の実施の形態２におけるシステムリセットを行うプログラマブルコントローラシステムを示している。なお、システムリセットとは、ＣＰＵユニットがシステム全てのＣＰＵユニット、Ｉ／Ｏユニットに対して発行して、それらの制御部をリセットしたり出力部をクリアして外部機器をオフするリセットである。
【００６６】
このプログラマブルコントローラシステムは、システムに電源を供給する電源ユニット７０と、制御のための演算処理を実行するシステムの中枢となるＣＰＵユニット８０と、ＣＰＵユニット８０が出力する指令に基づき外部機器６００へオン／オフ情報を出力する出力ユニット９０と、専用回線によりシステム（子局６１０）間のデータ通信を行うデータリンクユニット１００と、サーボモータ６２０と接続されて位置決め制御を行う位置決めユニット１１０とを有し、これらユニットは、システムバスを含むマザーボード（以下、ベースユニットという）１２０に装着され、バス接続されている。
【００６７】
出力ユニット９０は外部機器６００に対する出力部９１を、位置決めユニット１１０は、位置決め用の制御部１１１と、サーボモータ６２０に対する出力部１１２を有している。また、データリンクユニット１００は、制御部１０１と、伝送Ｉ／Ｆ部１０２を有している。
【００６８】
ＣＰＵユニット８０はマイクロプロセッサ（ＭＰＵ）８１以外にリセット回路８２を有している。リセット回路８２は、電源系統から送られてくる電源ダウン予告のエラー信号（ΣＲＥＬ信号）と、ＭＰＵ８１がシステムの全てのＩ／Ｏユニットに対して発行するユニットリセット信号とを統合してシステム全てのＩ／Ｏユニットの制御部と通信Ｉ／Ｆ部等の出力以外の機能のリセット制御を行うリセット制御信号（以下、システムユニットリセット信号という）を出力する。
【００６９】
また、リセット回路８２は、ΣＲＥＬ信号と、ＭＰＵ８１がシステムの全てのＩ／Ｏユニットに対して発行するＩ／Ｏリセット信号と、ＭＰＵ８１の動作を監視するタイマ回路（ＷＤＴ回路）８３からの出力信号とを統合してシステム全てのＩ／Ｏユニットの出力部のリセット制御を行うリセット制御信号（以下、システムＩ／Ｏリセット信号という）を出力する。
【００７０】
リセット回路８２において、ΣＲＥＬ信号、ユニットリセット信号が非アクティブ（Ｈレベル）である場合には、ダイオード８４、８５には電流が流れないので、トランジスタ８６のベース電位はＨレベルとなり、トランジスタ８６のエミッタ−コレクタ間に電流が流れ、システムユニットリセット信号がＬレベル（非アクティブ）となる。
【００７１】
たとえば、電源オフによりΣＲＥＬ信号がＬレベルになると、ダイオード８４の順方向に電流が流れ、トランジスタ８６のベース電位がＬレベルとなり、トランジスタ８６のエミッタ−コレクタ間に電流が流れなくなり、これに応じてシステムユニットリセット信号はＨレベル（アクティブ）となる。
【００７２】
また、たとえば、ＭＰＵ８１内で演算エラーが発生した場合に、ＣＰＵユニット８０がＩ／Ｏユニットの制御部を初期状態にリセットするために、ユニットリセット信号をＬレベルで出力すると、ダイオード８５の順方向に電流が流れ、トランジスタ８６のベース電位がＬレベルとなり、トランジスタ８６のエミッタ−コレクタ間に電流が流れなくなり、これに応じてシステムユニットリセット信号がＨレベル（アクティブ）となる。
【００７３】
リセット回路８２は、システムＩ／Ｏリセット信号についても、ダイオード８７、８８、トランジスタ８９による同様のリセット回路を備えている。ただし、システムＩ／Ｏリセット信号は、論理積回路８２ａにより、リセット回路８２の出力とＷＤＴ回路８３の出力（ＷＤＴ回路８３の出力の初期値はＬレベルである）との論理積である。ＷＤＴ回路８３はＭＰＵ８１の動作を監視して一定時間に亙ってＭＰＵ８１からの応答がない場合にはＭＰＵ８１が停止したとみなして出力をＨレベルにする。従って、ＭＰＵ８１が重度のエラーにより停止した場合には、システムＩ／Ｏリセットが発行され、外部への出力がオフされる。
【００７４】
つぎに、実施の形態２の動作について説明する。ＣＰＵユニット８０が備えているリセットスイッチ（図示省略）を操作すること等により、ＭＰＵ８１がユニットリセット信号をアクティブ（Ｌレベル）にすることにより、システム全てのＩ／Ｏユニットに対してシステムユニットリセットを発行した場合には、システムを構成する全てのＩ／Ｏユニットの制御部（データリンクユニット１００の制御部１０１、位置決めユニット１１０の制御部１１１）及び、出力部以外の機能（データリンクユニット１００の通信Ｉ／Ｆ部１０２）が初期状態にリセットされる。
【００７５】
ＣＰＵユニット８０内部のＭＰＵ８１で、演算エラーが発生した場合に、ＣＰＵユニット８０がＩ／Ｏリセット信号をアクティブ（Ｌレベル）にすることにより、システム全てのＩ／Ｏユニットに対してシステムＩ／Ｏリセットを発行した場合には、システム全てのＩ／Ｏユニットの出力部（出力ユニット９０の出力部９１、位置決めユニット１１０の出力部１１２）のみがリセットされ、外部機器６００の出力がオフし、サーボモータ６２０の運転が停止する。また、データリンクユニット１００の制御部１０１の割込み端子ＩＴに割込みが入ることで、データリンクユニット１００はＣＰＵユニット８０がシステムＩ／Ｏリセットを発行したことを認識し、ネットワーク上にその情報を伝送する。
【００７６】
上記二つのシステムリセットを備えることにより、ＣＰＵユニット８０内部のエラーによりシステムが停止した場合でも、データリンクユニット１００にはリセットをかけずに出力ユニット９０や位置決めユニット１１０の出力部９１、１１２のみリセットすることが可能となり、システムを効率よく運用することができる。
【００７７】
第４図は、この発明の実施の形態３におけるプログラマブルコントローラシステムを分散制御型マルチＣＰＵ方式のプログラマブルコントローラシステムに適用した実施の形態を示している。分散制御型マルチＣＰＵ方式のプログラマブルコントローラシステムとは、複数台のＣＰＵユニットがそれぞれ別のＩ／Ｏユニットを制御することにより、１台のＣＰＵユニットの負荷を分散して大規模且つ高速なシステム制御を実現することができるプログラマブルコントローラシステムである。
【００７８】
このプログラマブルコントローラシステムは、電源ユニット１２０と、ＣＰＵユニット１３０、１４０、１５０と（本来、任意の台数のＣＰＵユニットを接続したシステムを構築可能であるが、ここでは一例としてＣＰＵユニットを３台接続した図を示す）、ＣＰＵユニット１３０が管理するＩ／Ｏユニット１６０、１７０と、ＣＰＵユニット１４０が管理するＩ／Ｏユニット１８０と、ＣＰＵユニット１５０が管理するＩ／Ｏユニット１９０とを有し、これらユニットはシステムバス２０１を含むベースユニット２００に装着されている。
【００７９】
ＣＰＵユニット１３０、１４０、１５０は、実施の形態１（第１図）のＣＰＵユニットと同様の命令生成部と、実施の形態２（第３図）のＣＰＵユニットと同様のリセット回路とを備えており、また、Ｉ／Ｏユニット１６０、１７０、１８０、１９０は、実施の形態１（第１図）のＩ／Ｏユニットと同様のコマンドデコード部や管理ＣＰＵ指定情報等をラッチするレジスタ等を備えていると共に、実施の形態２（第３図）のＩ／Ｏユニットと同様に、システムリセット信号を入力するようになっている。
【００８０】
ベースユニット２００は、論理積回路２０２、２０３を含んでおり、ＣＰＵユニット１３０、１４０、１５０のそれぞれのシステムユニットリセット信号は、論理積回路２０２による論理積により、各Ｉ／Ｏユニット１６０、１７０、１８０、１９０に与えられ、また、ＣＰＵユニット１３０、１４０、１５０のそれぞれのシステムＩ／Ｏリセット信号は、論理積回路２０３による論理積により、各Ｉ／Ｏユニット１６０、１７０、１８０、１９０に与えられる。
【００８１】
つぎに、分散制御型マルチＣＰＵ方式のプログラマブルコントローラシステムにおけるシステムユニットリセット、システムＩ／Ｏリセットについて説明する。分散制御型マルチＣＰＵ方式のプログラマブルコントローラシステムでは、電源投入時に、全てのＣＰＵユニット１３０、１４０、１５０にシステムユニットリセット及びシステムＩ／Ｏリセットがかかり、イニシャル処理時にＣＰＵユニット１３０がシステムユニットリセット及びシステムＩ／Ｏリセットを解除し、ＣＰＵユニット１３０のシステムユニットリセット信号とシステムＩ／Ｏリセット信号がＬレベルとなる。これに対し、ＣＰＵユニット１４０、ＣＰＵユニット１５０はシステムユニットリセット、システムＩ／Ｏリセットを解除せず、これらＣＰＵユニット１４０、１５０のシステムユニットリセット信号とシステムＩ／Ｏリセット信号はＨレベルを保つ。
【００８２】
これは、ＣＰＵユニット１３０がシステム全体を一元管理するためである。すなわち、この状態で、ＣＰＵユニット１３０が出力するシステムユニットリセット信号をアクティブ（Ｈレベル）にすることにより、論理積回路２０２の出力信号（システムユニットリセット信号）がＨレベルとなり、システム全てのＣＰＵユニットとＩ／Ｏユニットの制御部及び出力部以外の機能が初期状態にリセットされる。
【００８３】
また、ＣＰＵユニット１３０が出力するシステムＩ／Ｏリセット信号をアクティブ（Ｈレベル）にすることにより、論理積回路２０３の出力信号（システムＩ／Ｏリセット信号）がＨレベルとなり、システム全てのＣＰＵユニットとＩ／Ｏユニットの出力部がリセットされる。
【００８４】
つぎに、分散制御型マルチＣＰＵ方式のプログラマブルコントローラシステムにおけるグループリセットについて説明する。ＣＰＵユニット１３０が実施の形態１の場合と同様に、グループユニットリセットを発行すると、ＣＰＵユニット１３０が指定した特定のＩ／Ｏユニット１６０、１７０の制御部及び出力部以外の機能（データリンクユニットの伝送Ｉ／Ｆ部等）がリセットされる。同様に、ＣＰＵユニット１４０あるいはＣＰＵユニット１５０がグループユニットリセットを発行すると、ＣＰＵユニット１４０が指定したＩ／Ｏユニット１８０あるいはＣＰＵユニット１５０が指定したＩ／Ｏユニット１９０の制御部及び出力部以外の機能がリセットされる。
【００８５】
また、ＣＰＵユニット１３０が実施の形態１の場合と同様に、グループＩ／Ｏリセットを発行すると、ＣＰＵユニット１３０が指定した特定のＩ／Ｏユニット１６０、１７０の出力部がリセットされる。同様に、ＣＰＵユニット１４０あるいはＣＰＵユニット１５０がグループＩ／Ｏリセットを発行すると、ＣＰＵユニット１４０が指定したＩ／Ｏユニット１８０あるいはＣＰＵユニット１５０が指定したＩ／Ｏユニット１９０の出力部がリセットされる。
【００８６】
単独ＣＰＵユニットによって複数台の全てのＩ／Ｏユニットを制御する場合に比べて、この実施の形態のように、分散制御型マルチＣＰＵ方式で制御する場合には、ＣＰＵユニット１台あたりの負荷が分散され、高速なシステムを構築できる。また、単独ＣＰＵユニットによるシステムに比べて大規模なシステムを構築することができる。
【００８７】
第５図は、この発明の実施の形態４におけるプログラマブルコントローラシステムを冗長制御型マルチＣＰＵ方式のプログラマブルコントローラシステムに適用した実施の形態を示している。冗長制御型マルチＣＰＵ方式のプログラマブルコントローラシステムとは、現在稼動している複数台のＣＰＵユニット（以下、デューティＣＰＵユニットという）の一つが重度のエラーにより停止した場合に、停止したＣＰＵユニットの代わりとなって稼動するＣＰＵユニット（以下、待機ＣＰＵユニットという）を備えることで、システムの二重化を図った安全性が高いプログラマブルコントローラシステムである。
【００８８】
このプログラマブルコントローラシステムは、電源ユニット２１０と、２台のデューティＣＰＵユニット２２０、２３０と、１台の待機ＣＰＵユニット２４０と、複数台のＩ／Ｏユニット２５０、２６０、２７０、２８０とを有し、これらユニットはシステムバス２９１を含むベースユニット２９０に装着されている。  デューティＣＰＵユニット２２０はＩ／Ｏユニット２５０と２６０を管理し、デューティＣＰＵユニット２３０はＩ／Ｏユニット２７０と２８０を管理し、待機ＣＰＵユニット２４０はデューティＣＰＵユニット２３０が停止した場合にその代わりとなって稼動する。
【００８９】
ここで、ユーザは、各ＣＰＵユニットがデューティＣＰＵユニットであるのか、待機系ＣＰＵであるのか、また、待機系ＣＰＵユニットである場合に、どのＣＰＵユニットの代わりとなるのかをプログラミング装置により各ＣＰＵユニット内部のシステム情報に設定できる。
【００９０】
この実施の形態でも、ＣＰＵユニット２２０、２３０、２４０は、実施の形態１（第１図）のＣＰＵユニットと同様の命令生成部と、実施の形態２（第３図）のＣＰＵユニットと同様のリセット回路とを備えており、また、Ｉ／Ｏユニット２５０、２６０、２７０、２８０は、実施の形態１（第１図）のＩ／Ｏユニットと同様のコマンドデコード部や管理ＣＰＵ指定情報等をラッチするレジスタ等を備えていると共に、実施の形態２（第３図）のＩ／Ｏユニットと同様に、システムリセット信号を入力するようになっている。
【００９１】
ベースユニット２９０は、論理積回路２９２、２９３を含んでおり、デューティＣＰＵユニット２２０、２３０、待機ＣＰＵユニット２４０のそれぞれのシステムユニットリセット信号は、論理積回路２９２による論理積により、各Ｉ／Ｏユニット２５０、２６０、２７０、２８０に与えられ、また、デューティＣＰＵユニット２２０、２３０、待機ＣＰＵユニット２４０のそれぞれのシステムＩ／Ｏリセット信号は、論理積回路２９３による論理積により、各Ｉ／Ｏユニット２５０、２６０、２７０、２８０に与えられる。
【００９２】
つぎに、冗長制御型マルチＣＰＵ方式のプログラマブルコントローラシステムにおいて、ＣＰＵユニットの故障をどのように検出するかについて第６図を用いて説明する。
【００９３】
まず、デューティＣＰＵユニット２３０は、自ユニットが正常に動作していることを待機ＣＰＵユニット２４０に知らせるために、待機ＣＰＵユニット２４０の特定のアドレスＡに“１”をライトする（第６図の丸付き数字１）。待機ＣＰＵユニット２４０は、アドレスＡをリードして“１”が読めることから、デューティＣＰＵユニット２３０が正常に動作していることを確認する（第６図の丸付き数字２）。
【００９４】
その後、待機ＣＰＵユニット２４０は、デューティＣＰＵユニット２３０に対して自ユニットが正常に動作していることをデューティＣＰＵユニット２３０に知らせるために、デューティＣＰＵユニット２３０の特定のアドレスＢに“１”をライトする（第６図の丸付き数字３）。デューティＣＰＵユニット２３０は、アドレスＢをリードして“１”が読めることから、待機ＣＰＵユニット２４０が正常に動作していることを確認する（第６図の丸付き数字４）。
【００９５】
その後、デューティＣＰＵユニット２３０は、自ユニットが正常に動作していることを待機ＣＰＵユニット２４０に知らせるために待機ＣＰＵユニット２４０の特定のアドレスＡに前回ライトした値と異なる値“０”をライトする（第６図の丸付き数字５）。待機ＣＰＵユニット２４０は、アドレスＡをリードして前回リードした値と異なる値“０”が読めることから、デューティＣＰＵユニット２３０が正常に動作していることを確認する（第６図の丸付き数字６）。
【００９６】
その後、待機ＣＰＵユニット２４０は、自ユニットが正常に動作していることをデューティＣＰＵユニット２３０に知らせるために、デューティＣＰＵユニット２３０の特定のアドレスＢに前回と異なる値“０”をライトする（第６図の丸付き数字７）。デューティＣＰＵユニット２３０は、アドレスＢをリードして前回リードした値と異なる値“０”が読めることから、待機ＣＰＵユニット２４０が正常に動作していることを確認する（第６図の丸付き数字８）。以後、丸付き数字１から８を繰り返してお互いに他のＣＰＵユニットが正常に動作していることを確認する（以下、この動作を生存確認という）。
【００９７】
システム稼働中に、重度のエラーにより、デューティＣＰＵユニット２３０が停止した場合には、デューティＣＰＵユニット２３０は待機ＣＰＵユニット２４０のアドレスＡにライトできなくなる。また、エラーの内容がデューティＣＰＵユニット２３０内部の入出力ポートに格納される。待機ＣＰＵユニット２４０は、アドレスＡの値が変化しないと、デューティＣＰＵユニット２３０内部の入出力ポートをリードしてデューティＣＰＵユニット２３０のエラーを確認し、デューティＣＰＵユニット２３０が停止したことを認識し、デューティＣＰＵユニット２３０に代わってＩ／Ｏユニット２７０、２８０の制御を開始する。
【００９８】
また、デューティＣＰＵユニット２３０内部のＭＰＵが停止するため、ＷＤＴ回路によりデューティＣＰＵユニット２３０のシステムＩ／Ｏリセット信号の出力はＨレベルとなる。全てのＣＰＵユニットが停止した場合、システムＩ／Ｏリセット信号がＨレベルとなるので、システム全体の出力部がリセット状態になり、全てのＣＰＵユニットが停止した場合にもシステムは暴走することがない。
【００９９】
上述のような冗長型マルチＣＰＵ方式のプログラマブルコントローラシステムを実現することで、或るＣＰＵユニットが停止した場合にも、正常にシステムの制御を継続することができる二重化システムを提供することができる。
【０１００】
【産業上の利用の可能性】
シーケンス制御を行う各種工作機械、産業機械のプログラマブルコントローラとして利用できる。
【図面の簡単な説明】
【図１】    第１図は、この発明におけるグループＩ／Ｏリセットならびにグループユニットリセットを行うプログラマブルコントローラシステムを示すシステム構成図である。
【図２】  第２図は、命令ＩＮＳＴ−Ｗの詳細内容を示す説明図である。
【図３】  第３図は、この発明におけるシステムリセットを行うプログラマブルコントローラシステムを示すシステム構成図である。
【図４】  第４図は、この発明におけるプログラマブルコントローラシステムを分散制御型マルチＣＰＵ方式のプログラマブルコントローラシステムに適用した実施の形態を示すシステム構成図である。
【図５】  第５図は、この発明におけるプログラマブルコントローラシステムを冗長制御型マルチＣＰＵ方式のプログラマブルコントローラシステムに適用した実施の形態を示すシステム構成図である。
【図６】  第６図は、冗長制御型マルチＣＰＵ方式のプログラマブルコントローラシステムにおけるＣＰＵユニットの故障検出手順を示す説明図である。
【図７】  第７図は、従来におけるプログラマブルコントローラシステムを示すシステム構成図である。
【図１】
0004230147.tif 000002
【図２】
0004230147.tif 000003
【図３】
0004230147.tif 000004
【図４】
0004230147.tif 000005
【図５】
0004230147.tif 000006
【図６】
0004230147.tif 000007
【図７】
0004230147.tif 000008