(57)【特許請求の範囲】
【請求項１】
バスを内蔵するベースユニットに追加ユニットを装着可能な制御装置において、
前記追加ユニットは、
前記ベースユニットに装着されると、当該追加ユニットの前記ベースユニットへの装着位置を前記ベースユニットに装着されるユニットの種類と位置とを含むユニット管理情報に書き込む指示を送る管理テーブル更新部と、
前記ベースユニットに装着される他のユニットで処理されるデータに比して低い優先度を設定して、前記他のユニットに対するアクセス要求の送信処理を行うマスタ処理部と、
を備え、
前記追加ユニットの前記マスタ処理部は、送受信するデータに対して付された優先度に従って、順に処理を行うことを特徴とする制御装置。
【請求項２】
前記ベースユニットには、当該制御装置全体を管理するとともにプログラムにしたがって演算処理を周期的に行うＣＰＵユニットが装着され、
前記ＣＰＵユニットは、前記ユニット管理情報を記憶するユニット管理情報記憶部を備え、
前記ＣＰＵユニットのユニット管理情報記憶部は、前記ユニット管理情報として、ユニットと前記ベースユニット上の装着位置とを対応付けた２つの管理情報と、２つの前記管理情報のうちどちらが有効かを示す有効指示情報と、を含み、
前記追加ユニットの前記管理テーブル更新部は、前記追加ユニットの前記マスタ処理部を介して現在有効な前記管理情報を読み出し、前記管理情報の前記ベースユニットの空き位置に当該追加ユニットを登録した更新管理情報を生成し、前記有効指示情報で無効とされた方の前記管理情報を前記更新管理情報で更新することを特徴とする請求項１に記載の制御装置。
【請求項３】
前記追加ユニットの前記管理テーブル更新部は、前記更新管理情報で更新された前記管理情報を正常に読み出せた場合に、前記更新管理情報で更新された管理情報が有効となるように前記有効指示情報を更新することを特徴とする請求項２に記載の制御装置。
【請求項４】
前記追加ユニットの前記管理テーブル更新部は、前記更新管理情報の更新処理でエラーが生じた場合に、前記有効指示情報の更新を行わないことを特徴とする請求項２に記載の制御装置。
【請求項５】
前記ＣＰＵユニットは、前記演算処理の空き時間を利用して前記ベースユニットに追加されたユニットが正常動作するかの通信テストを行うユニット管理部をさらに備えることを特徴とする請求項３に記載の制御装置。
【請求項６】
前記ユニット管理部は、前記通信テストの結果、前記追加ユニットに異常を検出した場合に、前記有効指示情報を更新前の状態に戻すことを特徴とする請求項５に記載の制御装置。
【請求項７】
前記ＣＰＵユニットは、前記ＣＰＵユニットと前記追加ユニットで実行する演算処理のタイミングを管理するタイムテーブル情報を管理するユニット管理部をさらに備え、
前記ＣＰＵユニットと前記追加ユニットは、前記タイムテーブル情報にしたがって演算処理を実行することを特徴とする請求項２に記載の制御装置。
【請求項８】
前記追加ユニットの前記管理テーブル更新部は、自追加ユニットが当該制御装置に追加されると、前記ＣＰＵユニットから前記タイムテーブル情報を取得し、前記タイムテーブル情報中の空き時間内に、自追加ユニットに対して設定された演算処理の追加が可能かを判定することを特徴とする請求項７に記載の制御装置。
【請求項９】
前記追加ユニットの前記管理テーブル更新部は、前記タイムテーブル情報中の空き時間内に、自追加ユニットに対して設定された演算処理の追加が可能な場合には、前記ＣＰＵユニット内の前記タイムテーブル情報を更新し、前記タイムテーブル情報中の空き時間内に、自追加ユニットに対して設定された演算処理の追加が不可能な場合には、前記ＣＰＵユニット内の前記タイムテーブル情報を更新せずに、当該制御装置全体の電源を落とさずに、前記追加ユニットを停止状態にすることを特徴とする請求項８に記載の制御装置。
【請求項１０】
前記ＣＰＵユニットは、前記他のユニットに対するアクセス要求の送信処理を行うマスタ処理部をさらに備え、
前記ＣＰＵユニットの前記マスタ処理部で送受信されるデータの優先度は、前記追加ユニットの前記マスタ処理部で送受信されるデータの優先度よりも高いことを特徴とする請求項２に記載の制御装置。
【請求項１１】
前記ＣＰＵユニットは、
前記他のユニットに対するアクセス要求の送信処理を行うマスタ処理部と、
前記他のユニットからのアクセス要求に対する受信処理を行うスレーブ処理部と、
をさらに備え、
前記ベースユニットは、
前記ＣＰＵユニットと前記追加ユニットと前記他のユニットが有する前記マスタ処理部の数に対応して設けられ、前記マスタ処理部からのアクセス要求に対する受信処理を行うバススレーブと、
前記ＣＰＵユニットと前記追加ユニットと前記他のユニットが有する前記スレーブ処理部の数に対応して設けられ、前記スレーブ処理部に対してアクセス要求の送信処理を行うバスマスタと、
前記バススレーブと前記バスマスタとの間でデータの切り替えを行うバススイッチと、
を備えることを特徴とする請求項２に記載の制御装置。
【請求項１２】
前記ＣＰＵユニットと前記追加ユニットと前記他のユニットが有する前記マスタ処理部と前記ベースユニットの前記バススレーブとの間と、前記ＣＰＵユニットと前記追加ユニットと前記他のユニットが有する前記スレーブ処理部と前記ベースユニットの前記バスマスタとの間では、それぞれ全二重通信が行われることを特徴とする請求項１１に記載の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、制御装置に関するものである。
【背景技術】
【０００２】
プログラマブルコントローラは、ベースユニットにＣＰＵ（Central  Processing  Unit）ユニット、入出力ユニットなどを組み合わせて装着することによって構成される（たとえば、特許文献１参照）。ＣＰＵユニットと入出力ユニットなどの他のユニットとの間では、ベースユニットに設けられる専用のバスを介してデータ転送が行われる。ユーザがプログラム可能な演算処理は基本的にはＣＰＵユニットで行われる。しかし、ＣＰＵユニットでの演算処理能力が不足した場合、あるいは異なるプログラム言語を使用したい場合には、ベースユニットにＣＰＵユニットを追加し、マルチＣＰＵシステムを構築する場合がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開昭６３−１１６２０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ＣＰＵユニットには、ベースユニット上で装着する位置および台数に制約がある上、構成を変更する度にパラメータを設定し直さなければならないという問題点があった。また、ＣＰＵユニットまたは他のユニットをベースユニットに追加する場合には、プログラマブルコントローラの電源を一旦切らなければならないという問題点もあった。【０００５】
さらに、既存のバスでは、同時に１台のＣＰＵユニットしかバスを占有できないため、新たにＣＰＵユニットを追加すると、元々設置されていたＣＰＵユニットのバスアクセスのタイミングが変わってしまう。このため、既存のプログラマブルコントローラに演算機能を増設する場合には、必然的にＣＰＵユニットを増設することになり、システム構成の変更および動作タイミングの再調整が発生し、増設後のシステムの立ち上げ、検証に時間がかかってしまうという問題点もあった。【０００６】
この発明は上記に鑑みてなされたもので、ベースユニット上にＣＰＵユニットと、入出力ユニットなどの他のユニットと、を装着して構成されるプログラマブルコントローラにおいて、使用者が用途に応じて装着するユニットの台数または構成を自由に変更することができる制御ユニットおよび演算装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、この発明にかかる制御装置は、バスを内蔵するベースユニットに追加ユニットを装着可能な制御装置において、前記追加ユニットは、前記ベースユニットに装着されると、当該追加ユニットの前記ベースユニットへの装着位置を前記ベースユニットに装着されるユニットの種類と位置とを含む前記ユニット管理情報に書き込む指示を送る管理テーブル更新部と、前記ベースユニットに装着される他のユニットで処理されるデータに比して低い優先度を設定して、前記他のユニットに対するアクセス要求の送信処理を行うマスタ処理部と、を備え、前記追加ユニットの前記マスタ処理部は、送受信するデータに対して付された優先度に従って、順に処理を行うことを特徴とする。
【発明の効果】
【０００８】
この発明によれば、制御装置に新たに追加ユニットを追加する場合に、追加ユニット中の管理テーブル更新部がＣＰＵユニット中のユニット管理テーブルを更新するとともに、ＣＰＵユニットのマスタ処理部およびスレーブ処理部と、追加ユニットのマスタ処理部は、送受信するデータに対して付された優先度に従って順に処理を行うようにしたので、制御装置全体のユニットの停止および再設定を行うことなく、演算ユニットを追加することができるという効果を有する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態による制御装置の構成の一例を模式的に示す図である。
【図２】図２は、ベースユニットの構造の一例を示す図である。
【図３】図３は、ＣＰＵユニットの機能構成を模式的に示すブロック図である。
【図４】図４は、ユニット管理テーブルの構成の一例を模式的に示すブロック図である。
【図５】図５は、入力ユニットの機能構成を模式的に示すブロック図である。
【図６】図６は、出力ユニットの機能構成を模式的に示すブロック図である。
【図７】図７は、演算ユニットの機能構成を模式的に示すブロック図である。
【図８】図８は、制御装置におけるシーケンス処理の一例を示すフローチャートである。
【図９】図９は、実施の形態による演算ユニットの追加によるユニット管理テーブル更新処理の手順の一例を示すフローチャートである。
【図１０】図１０は、ＣＰＵユニットのバスマスタとベースユニットのバススレーブの内部構成の一例を模式的に示すブロック図である。
【図１１】図１１は、実施の形態によるＣＰＵユニットのバスマスタによるパケット送信処理の手順の一例を示すフローチャートである。
【図１２】図１２は、実施の形態によるＣＰＵユニットのバスマスタによるパケット受信処理の手順の一例を示すフローチャートである。
【図１３】図１３は、ベースユニットのバスマスタと入力ユニットのバススレーブの内部構成の一例を模式的に示すブロック図である。
【図１４】図１４は、実施の形態による入力ユニットのバススレーブによるパケット受信処理の手順の一例を示すフローチャートである。
【図１５】図１５は、実施の形態による入力ユニットのバススレーブによるパケット送信処理の手順の一例を示すフローチャートである。
【図１６】図１６は、演算処理の空き時間に追加ユニットによる演算処理の追加が可能か否かを示す判定処理手順の一例を示すフローチャートである。
【図１７】図１７は、実施の形態による演算ユニット追加後の通信テストでエラーが発生した場合の処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、この発明の実施の形態にかかる制御装置を詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１１】
図１は、実施の形態による制御装置の構成の一例を模式的に示す図である。制御装置は、たとえば外部入力装置からの入力データに基づいて予め定められた演算処理を実行し、演算結果を外部出力装置に出力して制御対象の動作を制御するプログラマブルコントローラである。制御装置は、ユニット間を電気的に接続するベースユニット１０と、ベースユニット１０に装着されるＣＰＵユニット１１、入力ユニット１２、出力ユニット１３および演算ユニット１４などのユニットと、を備える。入力ユニット１２には外部入力装置２１が接続され、出力ユニット１３には外部出力装置２２が接続されている。
【００１２】
ベースユニット１０は、ベースユニット１０に接続される各ユニットを固定するとともに、各ユニット間で通信を行うことができるように専用のバスを複数有する。図２は、ベースユニットの構造の一例を示す図である。この図に示されるように、ベースユニット１０は、複数のバスマスタ１０１と、複数のバススレーブ１０２と、これらのバスマスタ１０１とバススレーブ１０２との間を接続するバススイッチ１０３と、を有する。バスマスタ１０１は、接続されるユニットのバススレーブ（スレーブ処理部）と接続され、接続されるバススレーブに対する操作要求などの指示を送出する。バススレーブ１０２は、接続されるユニットのバスマスタ（マスタ処理部）と接続され、接続されるバスマスタからの操作要求などの指示に対して応答する。バススイッチ１０３は、ベースユニット１０内のバスマスタ１０１とバススレーブ１０２との間で通信が行われるように、経路を切り替える処理を行う。
【００１３】
ＣＰＵユニット１１は、制御装置全体での制御処理と、ユーザによって作成された制御プログラムに従った演算処理と、を含む処理を行う。図３は、ＣＰＵユニットの機能構成を模式的に示すブロック図である。ＣＰＵユニット１１は、演算処理部１１１と、Ｉ／Ｏ制御部１１２と、ユニット管理部１１３と、ユニット管理テーブル１１４と、バスマスタ１１５と、バススレーブ１１６と、を有する。
【００１４】
演算処理部１１１は、たとえばユーザによって作成されたプログラムにしたがって演算処理を行う。具体的には、演算処理部１１１は、Ｉ／Ｏ制御部１１２を経由して、入力ユニット１２から読み出したデータを基に演算処理を行い、処理結果をＩ／Ｏ制御部１１２経由で出力ユニット１３に書き込む。
【００１５】
Ｉ／Ｏ制御部１１２は、入力ユニット１２および出力ユニット１３へのアクセスを制御する。Ｉ／Ｏ制御部１１２は、バスマスタ１１５と接続され、バスマスタ１１５からライト要求およびリード要求をベースユニット１０（バス）に出力することによって、入力ユニット１２と出力ユニット１３に対するアクセスを行う。
【００１６】
ユニット管理部１１３は、ＣＰＵユニット１１、入力ユニット１２、出力ユニット１３および演算ユニット１４のベースユニット１０への接続位置を管理する。また、ユニット管理部１１３は、ユニット管理テーブル１１４に格納された情報に従って、Ｉ／Ｏ制御部１１２を経由して、入力ユニット１２と出力ユニット１３の起動時の接続位置設定および通常動作時の通信テストを行う。
【００１７】
ユニット管理テーブル１１４は、ユニット管理情報記憶部であり、ＣＰＵユニット１１、入力ユニット１２、出力ユニット１３および演算ユニット１４のベースユニット１０への接続位置を管理する情報である。ユニット管理テーブル１１４はバススレーブ１１６とも接続されているため、ベースユニット１０を経由した演算ユニット１４による読み出しまたは書き換えも行われる。
【００１８】
図４は、ユニット管理テーブルの構成の一例を模式的に示すブロック図である。ユニット管理テーブル１１４は、ユニット管理部１１３とバススレーブ１１６からのアクセスを調停するアクセス調停部１１４１と、各ユニットの接続位置データを格納する管理情報である第１テーブル１１４３および第２テーブル１１４４と、第１テーブル１１４３と第２テーブル１１４４のどちらが有効であるかを示す有効指示情報である有効テーブルフラグ１１４２と、を有する。ここで、接続位置データとは、ＣＰＵユニット１１、入力ユニット１２、出力ユニット１３、演算ユニット１４などの各ユニットがベースユニット１０のどの位置（バス）に接続されているかを示すデータのことである。なお、図１のベースユニット１０で説明したように、ベースユニット１０は各ユニットと接続するために複数のバスを所有している。
【００１９】
バスマスタ１１５は、ベースユニット１０のバススレーブ１０２と接続され、バススレーブ１０２に対してアクセスを行うための操作要求などを送出するマスタ処理部である。バススレーブ１１６は、ベースユニット１０のバスマスタ１０１と接続され、バスマスタ１０１からの操作要求に対する応答処理を行うスレーブ処理部である。
【００２０】
入力ユニット１２は、ＣＰＵユニット１１または演算ユニット１４からのリード要求に応じて、センサなどの外部入力装置２１からの信号をＣＰＵユニット１１または演算ユニット１４に送出する機能を有する。図５は、入力ユニットの機能構成を模式的に示すブロック図である。入力ユニット１２は、外部入力装置２１から入力される信号の状態を取得して格納する外部入力検出部１２１と、ＣＰＵユニット１１または演算ユニット１４から外部入力検出部１２１へのアクセス要求に対する処理を行うスレーブ処理部であるバススレーブ１２２と、ＣＰＵユニット１１との間の通信テストを行う通信テストチェック部１２３と、通信テストチェック部１２３でエラーとなった場合にエラー表示を行うとともに、ユニット単体で取り外しが可能なように停止状態にするエラー表示部１２４と、を有する。
【００２１】
出力ユニット１３は、ＣＰＵユニット１１または演算ユニット１４からのライト要求に応じて、ＣＰＵユニット１１または演算ユニット１４で演算された情報を受け取り、この情報をサーボまたはアクチュエータなどの外部出力装置２２に出力する機能を有する。図６は、出力ユニットの機能構成を模式的に示すブロック図である。出力ユニット１３は、外部出力装置２２の状態を制御する信号を出力する外部出力制御部１３１と、ＣＰＵユニット１１または演算ユニット１４から外部出力制御部１３１へのアクセス要求に対する処理を行うバススレーブ１３２と、ＣＰＵユニット１１との間の通信テストを行う通信テストチェック部１３３と、通信テストチェック部１３３でエラーとなった場合にエラー表示を行うとともに、ユニット単体で取り外しが可能なように停止状態にするエラー表示部１３４と、を有する。
【００２２】
演算ユニット１４は、たとえばユーザによって作成されたプログラムにしたがって演算処理を行うユニットであり、ＣＰＵユニット１１で演算処理能力が不足した場合、またはＣＰＵユニット１１とは異なるプログラミング言語を用いて処理を行いたい場合などに追加でベースユニット１０に接続される。図７は、演算ユニットの機能構成を模式的に示すブロック図である。演算ユニット１４は、演算処理を行う演算処理部１４１と、入力ユニット１２および出力ユニット１３にアクセスするためのＩ／Ｏ制御部１４２と、ＣＰＵユニット１１のユニット管理テーブル１１４の更新を行う管理テーブル更新部１４３と、ＣＰＵユニット１１、入力ユニット１２または出力ユニット１３に対する操作要求を行うマスタ処理部であるバスマスタ１４４と、ＣＰＵユニット１１からの操作要求に対する応答処理を行うスレーブ処理部であるバススレーブ１４５と、ＣＰＵユニット１１との間の通信テストを行う通信テストチェック部１４６と、通信テストチェック部１４６でエラーとなった場合にエラー表示を行うとともに、ユニット単体で取り外しが可能なように停止状態にするエラー表示部１４７と、を有する。演算処理部１４１、Ｉ／Ｏ制御部１４２およびバスマスタ１４４はＣＰＵユニット１１の演算処理部１１１、Ｉ／Ｏ制御部１１２およびバスマスタ１１５と同様の機能を有する。
【００２３】
なお、管理テーブル更新部１４３は、ＣＰＵユニット１１のユニット管理テーブル１１４にアクセスし、ベースユニット１０に空き位置がない場合あるいはユニット管理テーブル１１４へのアクセスで異常が発生した場合に、演算ユニット１４のエラー表示部１４７にエラー状態をセットする。これによって、演算ユニット１４がエラー表示モードに切り替わり、ユニット単体で取り外しが可能なよう停止状態となる。
【００２４】
また、図１に示した制御装置の構成は一例であり、使用者は用途に応じて、ユニットの台数または構成を自由に変更することができる。ただし、ＣＰＵユニット１１はシステム全体の構成を管理する機能を有しているため、ベースユニット１０への装着位置、装着台数に制約が設けられている。演算ユニット１４については、管理機能をもたないため、ベースユニット１０への装着位置および装着台数に関する制限はない。また、図１では、ベースユニットにＣＰＵユニット１１、入力ユニット１２、出力ユニット１３および演算ユニット１４が装着される例が示されているが、通信ユニットなどの他のユニットが装着されていてもよい。
【００２５】
つぎに、このような制御装置全体の処理について説明する。図８は、制御装置におけるシーケンス処理の一例を示すフローチャートである。シーケンス処理は、ユーザによって作成されたプログラムに基づいて繰り返し実行される。まず、入力ユニット１２が外部入力装置２１の情報を取り込む（ステップＳ１１）。ついで、ＣＰＵユニット１１または演算ユニット１４が入力ユニット１２から入力データを読み出す（ステップＳ１２）。その後、ＣＰＵユニット１１または演算ユニット１４が読み出したデータを基に演算処理を実施する（ステップＳ１３）。ついで、ＣＰＵユニット１１または演算ユニット１４が演算結果を出力ユニット１３に書き込む（ステップＳ１４）。その後、出力ユニット１３が外部出力装置２２を制御する（ステップＳ１５）。そして、ステップＳ１１へと処理が戻り、上記のステップＳ１１からＳ１５の処理が予め定められた周期で実行される。このシーケンス処理は、予め定められた周期で実行されるが、たとえば繰り返し行われるシーケンス処理の間に、ＣＰＵユニット１１のユニット管理部１１３による通信テスト処理などを行ってもよい。
【００２６】
図１で、演算ユニット１４が接続されていない制御装置が、図８のシーケンス処理を実行している最中に、演算ユニット１４が追加して接続される場合について説明する。演算ユニット１４が制御装置（ベースユニット１０）に正常に追加されると、ＣＰＵユニット１１が有するユニット管理テーブル１１４が新しく更新される。
【００２７】
図９は、実施の形態による演算ユニットの追加によるユニット管理テーブル更新処理の手順の一例を示すフローチャートである。まず、演算ユニット１４を稼働中の制御装置のベースユニット１０に装着して追加すると（ステップＳ３１）、演算ユニット１４の管理テーブル更新部１４３は、Ｉ／Ｏ制御部１４２、バスマスタ１４４、ベースユニット１０を経由して、ＣＰＵユニット１１のユニット管理テーブル１１４にアクセスを行い、有効テーブルフラグ１１４２を読み出す（ステップＳ３２）。このとき、管理テーブル更新部１４３からユニット管理テーブル１１４へ発行されたアクセス要求は、ユニット管理テーブル１１４内部のアクセス調停部１１４１で調停制御が行われる。たとえば、ＣＰＵユニット１１のユニット管理部１１３からのユニット管理テーブル１１４へアクセスが実行されている場合には、アクセス終了まで待たされる。しかし、ＣＰＵユニット１１のユニット管理部１１３がユニット管理テーブル１１４へアクセスしていない場合には、すぐにアクセスすることができる。その後、正しい情報（有効テーブルフラグ１１４２）が読み出せたかを判定する（ステップＳ３３）。
【００２８】
正しい情報が読み出せた場合（ステップＳ３３でＹｅｓの場合）には、管理テーブル更新部１４３は、有効テーブルフラグ１１４２に基づいて有効なテーブル（第１テーブル１１４３または第２テーブル１１４４）を読み出す（ステップＳ３４）。その後、正しい情報（テーブル）を読み出せたかを確認する（ステップＳ３５）。正しい情報を読み出せた場合（ステップＳ３５でＹｅｓの場合）には、読み出した有効なテーブルからベースユニット１０に空き位置があるかを判定する（ステップＳ３６）。
【００２９】
ベースユニット１０に空き位置がある場合（ステップＳ３６でＹｅｓの場合）には、管理テーブル更新部１４３は、現在空いているベースユニット１０への接続位置を読み出し、演算ユニット１４を空いている接続位置に追加した更新テーブルデータを生成する（ステップＳ３７）。そして、現在無効なテーブル（第２テーブル１１４４または第１テーブル１１４３）に更新テーブルデータを書き込む（ステップＳ３８）。つまり、有効テーブルフラグ１１４２が有効となっているテーブルには、演算ユニット１４が装着される前のテーブルデータが記憶される状態とし、無効となっているテーブルには、演算ユニット１４が装着された後のテーブルデータ（更新テーブルデータ）が記憶されている状態となるようにしている。
【００３０】
その後、管理テーブル更新部１４３は、更新テーブルデータを書き込んだ現在無効なテーブルデータを読み出し（ステップＳ３９）、更新テーブルデータを読み出せたかを判定する（ステップＳ４０）。更新テーブルデータを読み出せた場合（ステップＳ４０でＹｅｓの場合）には、管理テーブル更新部１４３は、有効テーブルフラグ１１４２を更新する（ステップＳ４１）。すなわち、現在無効とされているテーブル（更新テーブルデータを書き込んだテーブル）を有効とする。これによって、ステップＳ３２で読み出されたテーブルは無効となる。以上によって、ユニット管理テーブル１１４の更新が正常終了する。
【００３１】
ステップＳ３３で有効テーブルフラグ１１４２を正常に読み出せなかった場合（ステップＳ３３でＮｏの場合）、ステップＳ３５で有効なテーブルを正常に読み出せなかった場合（ステップＳ３５でＮｏの場合）、ステップＳ３６でベースユニット１０に空き位置がない場合（ステップＳ３６でＮｏの場合）、あるいはステップＳ４０で更新テーブルデータを正常に読み出せなかった場合（ステップＳ４０でＮｏの場合）には、演算ユニット１４をエラー表示モードに切り替える（ステップＳ４２）。そして、管理テーブル更新部１４３は、有効テーブルフラグ１１４２の更新を中止し、制御装置全体の電源を落とさずに、装着した演算ユニット１４単体で取り外しが可能なように停止状態にする（ステップＳ４３）。つまり、有効テーブルフラグ１１４２は、ステップＳ３８で更新テーブルデータで更新した無効なテーブルではなく、ステップＳ３４で読み出した現在有効なテーブルを有効とするものである。以上によって、ユニット管理テーブル１１４の更新処理が異常終了する。
【００３２】
なお、管理テーブル更新部１４３からユニット管理テーブル１１４へのバスアクセスは、全て低優先（後述）で発行されるようにすることで、既存のＣＰＵユニット１１の動作タイミングを変更せずにユニット管理テーブル１１４の更新を行うことが可能である。
【００３３】
また、ユニット管理テーブル１１４の更新後のデータは、ユニット管理部１１３から読み出され、追加された演算ユニット１４に対しても通常動作時の通信テストが実行される。なお、演算ユニット１４を追加した後のＣＰＵユニット１１のユニット管理部１１３による通信テストで異常を検出した場合には、ユニット管理部１１３は、有効テーブルフラグ１１４２をステップＳ４１での変更前の状態に戻して、正常動作時の（更新前に使用していた）テーブルを有効にする。有効テーブルフラグ１１４２を戻した後は演算ユニット１４をエラー表示モードに切り替え、制御装置全体の電源を落とさずに、ユニット単体で取り外しが可能なよう停止状態にする。
【００３４】
さらに、上記した説明では、演算ユニット１４をベースユニットに装着した場合を例に挙げたが、装着するユニット（たとえば入力ユニット１２または出力ユニット１３）に、管理テーブル更新部とＩ／Ｏ制御部とバスマスタとを設けることで、上記の演算ユニット１４の場合と同様にＣＰＵユニット１１のユニット管理テーブル１１４の更新処理を装着したユニットでも実現することができる。
【００３５】
つぎに、ユニット中のバスマスタとベースユニット１０中のバススレーブ１０２との間の通信処理について説明する。図１０は、ＣＰＵユニットのバスマスタとベースユニットのバススレーブの内部構成の一例を模式的に示すブロック図である。ＣＰＵユニット１１のバスマスタ１１５とベースユニット１０のバススレーブ１０２とを接続するバスは、送信用バス７１と受信用バス７２が分離されている全二重で構成されている。このため、送信用バス７１を使用してＣＰＵユニット１１が出力ユニット１３にデータを書き込むのと同時に、受信用バス７２を使用してＣＰＵユニット１１が入力ユニット１２からデータを読み出すことが可能となる。また、この実施の形態では、ライト要求、ライトデータ、リード要求、リードデータは全てパケットデータとしてバスマスタ１１５とバススレーブ１０２との間でやりとりされる。
【００３６】
なお、バスマスタの構成は各ユニットで全て同じであるため、ここではＣＰＵユニット１１のバスマスタ１１５の場合を例に挙げて説明する。バスマスタ１１５は、アクセス生成部５１と、送信バッファ５２と、パケット送信処理部５３と、受信バッファ５４と、パケット受信処理部５５と、アクセス解析部５６と、優先度テーブル５７と、中断データ情報５８と、を有する。
【００３７】
アクセス生成部５１は、Ｉ／Ｏ制御部１１２から他のユニットへのアクセス要求（たとえば、ライト要求またはリード要求）をパケット化して送信バッファ５２に送る。送信バッファ５２は、送信すべきパケットデータを格納する。送信バッファ５２は複数のパケットデータを格納することができる。
【００３８】
パケット送信処理部５３は、優先度テーブル５７にしたがって送信バッファ５２に格納されているパケットデータを、送信用バス７１を介してベースユニット１０に送信する。なお、パケット送信処理部５３は、現在処理中のパケットデータよりも優先度の高いパケットデータが送信バッファ５２に格納されると、現在処理中のパケットデータの送信処理を中断して、パケットデータの送信中断位置を示す中断データ情報５８に書き込んだ後、優先度の高いパケットデータの送信処理を行う。そして、優先度の高いパケットデータの送信処理が完了した後、中断データ情報５８に書き込まれた中断されたパケットデータの送信処理を再開する。
【００３９】
受信バッファ５４は、受信用バス７２に接続され、受信用バス７２を介してベースユニット１０から受信したパケットデータを格納する。受信バッファ５４は複数のパケットデータを格納することができる。
【００４０】
パケット受信処理部５５は、優先度テーブル５７にしたがって受信バッファ５４に格納されているパケットデータをアクセス解析部５６に発行する。なお、パケット受信処理部５５は、現在処理中のパケットデータよりも優先度の高いパケットデータを受信すると、現在処理中のパケットデータの発行処理を中断して、発行中のパケットデータの中断位置を中断データ情報５８に書き込んだ後、優先度の高いパケットデータの発行処理を行う。そして、優先度の高いパケットデータの発行処理が完了した後、中断データ情報５８に書き込まれた中断されたパケットデータの発行処理を再開する。
【００４１】
アクセス解析部５６は、パケットデータをＩ／Ｏ制御部１１２で処理可能な信号に変換し、Ｉ／Ｏ制御部１１２に変換した信号を渡す。この信号は、たとえばアクセス要求に対する応答である。
【００４２】
優先度テーブル５７は、送信バッファ５２と受信バッファ５４に格納されたパケットデータと優先度との対応関係を示す情報である。優先度は、処理の優先順序を示すものである。中断データ情報５８は、送信バッファ５２または受信バッファ５４でのパケットデータの処理中に、このパケットデータよりも優先度の高いパケットデータが格納された場合に、優先度の低いパケットデータ（現在処理中のパケットデータ）をどこまで送信したか、すなわちパケットデータの送信処理の再開位置を示す情報である。
【００４３】
ベースユニット１０のバススレーブ１０２は、アクセス生成部６１と、送信バッファ６２と、パケット送信処理部６３と、受信バッファ６４と、パケット受信処理部６５と、アクセス解析部６６と、優先度テーブル６７と、中断データ情報６８と、を有する。パケット送信処理部６３が受信用バス７２に接続され、受信バッファ６４が送信用バス７１に接続される以外は、各処理部の機能は、上記したＣＰＵユニット１１のバスマスタ１１５を構成する各処理部と同様である。
【００４４】
つぎに、ＣＰＵユニット１１のバスマスタによるパケット送信処理について説明する。図１１は、実施の形態によるＣＰＵユニットのバスマスタによるパケット送信処理の手順の一例を示すフローチャートである。まず、ＣＰＵユニット１１のＩ／Ｏ制御部１１２がライト要求／リード要求などのアクセス要求を入力ユニット１２または出力ユニット１３に対して発行する（ステップＳ５１）。
【００４５】
Ｉ／Ｏ制御部１１２から発行されたアクセス要求は、バスマスタ１１５内部のアクセス生成部５１でパケットデータに変換され（ステップＳ５２）、送信バッファ５２に新規パケットデータとして格納される（ステップＳ５３）。送信バッファ５２は複数のパケットデータを保持することができるため、送信バッファ５２にはベースユニット１０に送信する前の残留パケットデータが残っている場合もある。このため、パケット送信処理部５３は、送信バッファ５２に残留パケットデータがないかを確認する（ステップＳ５４）。
【００４６】
送信バッファ５２に残留パケットデータがある場合（ステップＳ５４でＮｏの場合）には、パケット送信処理部５３は、送信バッファ５２の残留パケットデータと新規パケットデータの優先度を優先度テーブル５７から取得し、どちらの優先度が高いかを判定する（ステップＳ５５）。
【００４７】
新規パケットデータの優先度が残留パケットデータよりも大きい場合（ステップＳ５６でＹｅｓの場合）には、パケット送信処理部５３は、現在ベースユニット１０に送信中の送信データ（残留パケットデータ）の送信処理を中断し（ステップＳ５７）、残留パケットデータをどこまで送信したのかを示す送信再開箇所を中断データ情報５８に書き込む（ステップＳ５８）。
【００４８】
一方、新規パケットデータの優先度が残留パケットデータ以下である場合（ステップＳ５６でＮｏの場合）には、パケット送信処理部５３は、そのまま現在送信中の送信データ（残留パケットデータ）を送信する（ステップＳ５９）。残留パケットデータの送信が完了すると、残留パケットデータを送信バッファ５２から削除する（ステップＳ６０）。
【００４９】
ステップＳ５４で送信バッファ５２に残留パケットデータがない場合（ステップＳ５４でＹｅｓの場合）、ステップＳ５８の後、またはステップＳ６０の後、パケット送信処理部５３は、送信バッファ５２に格納された新規パケットデータを送信する（ステップＳ６１）。新規パケットデータの送信が完了すると、新規パケットデータを送信バッファ５２から削除する（ステップＳ６２）。
【００５０】
ついで、パケット送信処理部５３は、送信バッファ５２に残留パケットデータが存在するかを確認する（ステップＳ６３）。送信バッファ５２に残留パケットデータが存在しない場合（ステップＳ６３でＹｅｓの場合）には、ベースユニット１０へのアクセス要求の発行処理が完了する。
【００５１】
また、送信バッファ５２に残留パケットデータが存在する場合（ステップＳ６３でＮｏの場合）には、パケット送信処理部５３は、中断データ情報５８に記憶された送信再開箇所を確認し（ステップＳ６４）、送信再開箇所に基づいて送信バッファ５２に格納されている残留パケットデータを送信する（ステップＳ６５）。そして、残留パケットデータの送信完了後に、残留パケットデータを送信バッファ５２から削除する（ステップＳ６６）。以上によって、ベースユニット１０へのアクセス要求の発行処理が完了する。
【００５２】
つぎに、ＣＰＵユニット１１のバスマスタによるパケット受信処理について説明する。図１２は、実施の形態によるＣＰＵユニットのバスマスタによるパケット受信処理の手順の一例を示すフローチャートである。まず、ベースユニット１０から返送されてきたパケットデータはＣＰＵユニット１１のバスマスタ１１５内部の受信バッファ５４に新規パケットデータとして格納される（ステップＳ７１）。
【００５３】
受信バッファ５４は複数のパケットデータを保持することができるため、受信バッファ５４にはアクセス解析部５６に発行する前の残留パケットデータが残っている場合もある。このため、パケット受信処理部５５は、受信バッファ５４に残留パケットデータがないかを確認する（ステップＳ７２）。
【００５４】
受信バッファ５４に残留パケットデータがある場合（ステップＳ７２でＮｏの場合）には、パケット受信処理部５５は、受信バッファ５４の残留パケットデータと新規パケットデータの優先度を優先度テーブル５７から取得し、どちらの優先度が高いかを判定する（ステップＳ７３）。
【００５５】
新規パケットデータの優先度が残留パケットデータよりも大きい場合（ステップＳ７４でＹｅｓの場合）には、パケット受信処理部５５は、現在アクセス解析部５６に発行中の送信データ（残留パケットデータ）の送信処理を中断し（ステップＳ７５）、残留パケットデータをどこまで発行したのかを示す送信再開箇所を中断データ情報５８に書き込む（ステップＳ７６）。
【００５６】
一方、新規パケットデータの優先度が残留パケットデータ以下である場合（ステップＳ７４でＮｏの場合）には、パケット受信処理部５５は、そのまま現在発行中の送信データ（残留パケットデータ）をアクセス解析部５６に発行する（ステップＳ７７）。残留パケットの発行が完了すると、残留パケットデータを受信バッファ５４から削除する（ステップＳ７８）。
【００５７】
ステップＳ７２で受信バッファ５４に残留パケットデータがない場合（ステップＳ７２でＹｅｓの場合）、ステップＳ７６の後、またはステップＳ７８の後、パケット受信処理部５５は、受信バッファ５４に格納された新規パケットデータをアクセス解析部５６に発行する（ステップＳ７９）。新規パケットデータの発行が完了すると、新規パケットデータを受信バッファ５４から削除する（ステップＳ８０）。
【００５８】
ついで、パケット受信処理部５５は、受信バッファ５４に残留パケットデータが存在するかを確認する（ステップＳ８１）。受信バッファ５４に残留パケットデータが存在しない場合（ステップＳ８１でＹｅｓの場合）には、アクセス解析部５６へのパケットデータの発行処理が完了する。
【００５９】
また、受信バッファ５４に残留パケットデータが存在する場合（ステップＳ８１でＮｏの場合）には、パケット受信処理部５５は、中断データ情報５８に記憶された送信再開箇所を確認し（ステップＳ８２）、送信再開箇所に基づいて受信バッファ５４に格納されている残留パケットデータをアクセス解析部５６に発行する（ステップＳ８３）。そして、残留パケットデータの発行完了後に、残留パケットデータを受信バッファ５４から削除する（ステップＳ８４）。以上によって、アクセス解析部５６へのパケットデータの発行処理が完了する。
【００６０】
なお、その後、ＣＰＵユニット１１のアクセス解析部５６は受信バッファ５４から発行されたデータを解析して、リードデータが返却されてきた場合には、Ｉ／Ｏ制御部１１２にリードデータを渡す処理を行う。
【００６１】
また、上記した説明では、ＣＰＵユニット１１のバスマスタでのパケットでの送受信処理を例に挙げて説明したが、各ユニットでのバスマスタの構成はすべて同一であるので、他のユニットに設けられたバスマスタでのパケットの送受信処理も同様である。
【００６２】
つぎに、ユニット中のバススレーブとベースユニット１０中のバスマスタとの間の通信処理について説明する。図１３は、ベースユニットのバスマスタと入力ユニットのバススレーブの内部構成の一例を模式的に示すブロック図である。ベースユニット１０のバスマスタ１０１と入力ユニット１２のバススレーブ１２２とを接続するバスは、送信用バス７１と受信用バス７２が分離されている全二重で構成されている。
【００６３】
ベースユニット１０のバスマスタ１０１の構成は、図１０のＣＰＵユニット１１のバスマスタ１１５と同様の構成を有し、入力ユニット１２のバススレーブ１２２の構成は、図１０のベースユニット１０のバススレーブ１０２と同様の構成を有するので、その説明を省略する。
【００６４】
つぎに、入力ユニット１２のバススレーブ１２２によるパケット受信処理について説明する。図１４は、実施の形態による入力ユニットのバススレーブによるパケット受信処理の手順の一例を示すフローチャートである。まず、ベースユニット１０から発行されてきたパケットデータは入力ユニット１２のバススレーブ１２２内部の受信バッファ６４に新規パケットデータとして格納される（ステップＳ９１）。
【００６５】
受信バッファ６４は複数のパケットデータを保持することができるため、受信バッファ６４にはアクセス解析部６６に発行する前の残留パケットデータが残っている場合もある。そのため、パケット受信処理部６５は、受信バッファ６４に残留パケットデータがないかを確認する（ステップＳ９２）。
【００６６】
受信バッファ６４に残留パケットデータがある場合（ステップＳ９２でＮｏの場合）には、パケット受信処理部６５は、受信バッファ６４の残留パケットデータと新規パケットデータの優先度を優先度テーブル６７から取得し、どちらの優先度が高いかを判定する（ステップＳ９３）。
【００６７】
新規パケットデータの優先度が残留パケットデータよりも大きい場合（ステップＳ９４でＹｅｓの場合）には、パケット受信処理部６５は、現在アクセス解析部６６に発行中の送信データ（残留パケットデータ）の送信処理を中断し（ステップＳ９５）、残留パケットデータをどこまで発行したのかを示す送信再開箇所を中断データ情報６８に書き込む（ステップＳ９６）。
【００６８】
一方、新規パケットデータの優先度が残留パケットデータ以下である場合（ステップＳ９４でＮｏの場合）には、パケット受信処理部６５は、そのまま現在発行中の送信データ（残留パケットデータ）をアクセス解析部６６に発行する（ステップＳ９７）。残留パケットデータの発行が完了すると、残留パケットデータを受信バッファ６４から削除する（ステップＳ９８）。
【００６９】
ステップＳ９２で受信バッファ６４に残留パケットデータがない場合（ステップＳ９２でＹｅｓの場合）、ステップＳ９６の後、またはステップＳ９８の後、パケット受信処理部６５は、受信バッファ６４に格納された新規パケットデータをアクセス解析部６６に発行する（ステップＳ９９）。新規パケットデータの発行が完了すると、新規パケットデータを受信バッファ６４から削除する（ステップＳ１００）。
【００７０】
ついで、パケット受信処理部６５は、受信バッファ６４に残留パケットデータが存在するかを確認する（ステップＳ１０１）。受信バッファ６４に残留パケットデータが存在しない場合（ステップＳ１０１でＹｅｓの場合）には、アクセス解析部６６へのパケットデータの発行処理が完了する。
【００７１】
また、受信バッファ６４に残留パケットデータが存在する場合（ステップＳ１０１でＮｏの場合）には、パケット受信処理部６５は、中断データ情報６８に記憶された送信再開箇所を確認し（ステップＳ１０２）、送信再開箇所に基づいて受信バッファ６４に格納されている残留パケットをアクセス解析部６６に発行する（ステップＳ１０３）。そして、残留パケットデータの発行完了後に、残留パケットデータを受信バッファ６４から削除する（ステップＳ１０４）。以上によって、アクセス解析部６６へのパケットデータの発行処理が完了する。
【００７２】
なお、その後、入力ユニット１２のアクセス解析部６６は受信バッファ６４から発行されたデータを解析し、外部入力データのリード要求の場合には、外部入力検出部１２１にリード要求を渡す処理を行う。
【００７３】
つぎに、入力ユニット１２のバススレーブ１２２によるパケット送信処理について説明する。図１５は、実施の形態による入力ユニットのバススレーブによるパケット送信処理の手順の一例を示すフローチャートである。まず、入力ユニット１２の外部入力検出部１２１は、受信バッファ６４から発行されたデータを解析して、リード要求である場合には外部入力装置２１から入力データを取得し、バススレーブ１２２のアクセス生成部６１にリードデータ（入力データ）を返送する（ステップＳ１１１）。
【００７４】
外部入力検出部１２１から返送されたリードデータは、バススレーブ１２２内部のアクセス生成部６１でパケットデータに変換され（ステップＳ１１２）、送信バッファ６２に新規パケットデータとして格納される（ステップＳ１１３）。送信バッファ６２は複数のパケットデータを保持することができるため、送信バッファ６２にはベースユニット１０に送信する前の残留パケットデータが残っている場合もある。このため、パケット送信処理部６３は、送信バッファ６２に残留パケットデータがないかを確認する（ステップＳ１１４）。
【００７５】
送信バッファ６２に残留パケットデータがある場合（ステップＳ１４でＮｏの場合）には、パケット送信処理部６３は、送信バッファ６２の残留パケットデータと新規パケットデータの優先度を優先度テーブル６７から取得し、どちらの優先度が高いかを判定する（ステップＳ１１５）。
【００７６】
新規パケットデータの優先度が残留パケットデータよりも大きい場合（ステップＳ１１６でＹｅｓの場合）には、パケット送信処理部６３は、現在ベースユニット１０に送信中の送信データ（残留パケットデータ）の送信処理を中断し（ステップＳ１１７）、残留パケットデータをどこまで送信したのかを示す送信再開箇所を中断データ情報６８に書き込む（ステップＳ１１８）。
【００７７】
一方、新規パケットデータの優先度が残留パケットデータ以下である場合（ステップＳ１１６でＮｏの場合）には、パケット送信処理部６３は、そのまま現在送信中の送信データ（残留パケットデータ）を送信する（ステップＳ１１９）。残留パケットデータの送信が完了すると、残留パケットデータを送信バッファ６２から削除する（ステップＳ１２０）。
【００７８】
ステップＳ１１４で送信バッファ６２に残留パケットデータがない場合（ステップＳ１１４でＹｅｓの場合）、ステップＳ１１８の後、またはステップＳ１２０の後、パケット送信処理部６３は、送信バッファ６２に格納された新規パケットデータを送信する（ステップＳ１２１）。新規パケットデータの送信が完了すると、新規パケットデータを送信バッファ６２から削除する（ステップＳ１２２）。
【００７９】
ついで、パケット送信処理部６３は、送信バッファ６２に残留パケットデータが存在するかを確認する（ステップＳ１２３）。送信バッファ６２に残留パケットデータが存在しない場合（ステップＳ１２３でＹｅｓの場合）には、ベースユニット１０へのリードデータの発行処理が完了する。
【００８０】
また、送信バッファ６２に残留パケットデータが存在する場合（ステップＳ１２３でＮｏの場合）には、パケット送信処理部６３は、中断データ情報６８に記憶された送信再開箇所を確認し（ステップＳ１２４）、送信再開箇所に基づいて送信バッファ６２に格納されている残留パケットデータを送信する（ステップＳ１２５）。そして、残留パケットデータの送信完了後に、残留パケットデータを送信バッファ６２から削除する（ステップＳ１２６）。以上によって、ベースユニット１０へのリードデータの発行処理が完了する。
【００８１】
なお、上記した説明では、入力ユニット１２のバススレーブ１２２でのパケットの送受信処理を例に挙げて説明したが、各ユニットでのバススレーブの構成はすべて同一であるので、他のユニットに設けられたバススレーブでのパケットの送受信処理も同様である。
【００８２】
ところで、従来では、１台のＣＰＵユニット１１が装着された制御装置に、さらに演算処理機能を有する演算ユニット１４を増設した場合に、演算ユニット１４もバスアクセスを行うことになるので、元々装着されていたＣＰＵユニット１１のバスアクセスのタイミングが、演算ユニット１４のバスアクセスタイミングによって変わってしまうという問題点があった。この実施の形態では、このような問題点を解決するために、ＣＰＵユニット１１から入力ユニット１２、出力ユニット１３へのアクセスを高優先度に設定し、演算ユニット１４から入力ユニット１２、出力ユニット１３へのアクセスを低優先度に設定する。これによって、ＣＰＵユニット１１と入力ユニット１２と出力ユニット１３で構成されるシステムに対して、後から演算ユニット１４を追加した場合においても、演算ユニット１４でユニット管理テーブル１１４の更新処理のためのパケットデータを送信していたとしても、ＣＰＵユニット１１からのパケットデータがベースユニット１０、入力ユニット１２または出力ユニット１３に入力されると、演算ユニット１４からのパケットデータの送受信処理に優先して、送受信処理が行われることになる。その結果、ＣＰＵユニット１１と入力ユニット１２または出力ユニット１３との間の動作タイミングを変化させることなく、また制御装置全体のユニットを停止することなく、システム構成を変更することが可能となる。これは、システム構成が変更後に、演算ユニット１４からパケットデータの送受信処理が行われる場合も同様であり、ＣＰＵユニット１１と入力ユニット１２または出力ユニット１３との間の動作タイミングを変化させることなく、追加された演算ユニット１４を動作させることが可能となる。
【００８３】
なお、ＣＰＵユニット１１から、各ユニットのバスマスタ、バススレーブの優先度テーブル５７，６７を動的に書き換えて、パケットデータの優先度（ユニット間通信帯域の優先度）の調整を行うことで、制御装置の動作モードに応じて、都度、最大のパフォーマンスを発揮することができる。優先度テーブル５７，６７にセットされる優先度は、ＣＰＵユニット１１のユニット管理テーブル１１４で管理される。優先度テーブル５７，６７の更新要求は、ＣＰＵユニット１１のユニット管理部１１３から、各バスマスタ、各バススレーブに一斉に送信される。
【００８４】
また、ＣＰＵユニット１１に、複数のユニットで実行する演算処理の空き時間を管理テーブルにより管理する機能を持たせてもよい。たとえば、ＣＰＵユニット１１のユニット管理部１１３に、ＣＰＵユニット１１のユニット管理テーブル１１４内にＣＰＵユニット１１および演算ユニット１４の処理タイミング（入力ユニット１２へのアクセスタイミング、出力ユニット１３へのアクセスタイミング、ＣＰＵユニット１１内部の演算タイミング、演算ユニット１４の演算処理タイミング）を管理するタイムテーブル情報を所持させるように構成させてもよい。タイムテーブル情報はＣＰＵユニット１１のユニット管理部１１３によって、ＣＰＵユニット１１と演算ユニット１４のバスアクセスを極力競合させずにユーザが指定した時間内に制御処理が完了するよう生成される。既存の制御システムに演算ユニット１４を追加する場合は、演算ユニット１４の管理テーブル更新部１４３が現状のタイムテーブル情報を読み出し、演算ユニット１４の処理タイミングを反映した上で、ＣＰＵユニット１１のタイムテーブル情報を上書きする。演算ユニット１４の管理テーブル更新部１４３によるタイムテーブル情報の更新処理は、ユニット管理テーブル１１４の更新処理に含まれる。ＣＰＵユニット１１および演算ユニット１５はＣＰＵユニット１１のタイムテーブル情報に従って処理を行う。
【００８５】
図１６は、演算処理の空き時間に追加ユニットによる演算処理の追加が可能か否かを示す判定処理手順の一例を示すフローチャートである。まず、演算ユニット１４を追加した際に（ステップＳ１３１）、演算ユニット１４の管理テーブル更新部１４３がＣＰＵユニット１１のタイムテーブル情報を取得する（ステップＳ１３２）。管理テーブル更新部１４３は現状のタイムテーブルの空き時間を確認し（ステップＳ１３３）、演算ユニット１４の処理を追加した場合にユーザが指定した時間内にＣＰＵユニット１１と演算ユニット１４の処理が完了可能かを判定する（ステップＳ１３４）。
【００８６】
完了可能と判定した場合（ステップＳ１３４でＹｅｓの場合）には、管理テーブル更新部１４３が演算ユニット１４の処理を追加したタイムテーブル情報をＣＰＵユニット１１に上書きし（ステップＳ１３５）、処理が終了する。一方、完了不可と判定した場合（ステップＳ１３４でＮｏの場合）には、ＣＰＵユニット１１の管理テーブルを更新せずに演算ユニット１５をエラー表示モードに切り替え（ステップＳ１３６）、制御システム全体の電源を落とさずに、ユニット単体で取り外しが可能なよう停止状態にし（ステップＳ１３７）、処理が終了する。
【００８７】
なお、演算ユニット１４の追加時には演算ユニット１４の管理テーブル更新部１４３が、タイムテーブル情報の更新と併せて優先度テーブル設定情報も更新する。演算ユニット１４の追加後に異常が発生した場合には、タイムテーブル情報と同様に優先度テーブル設定情報も演算ユニット追加前の状態に戻される。
【００８８】
つぎに、演算ユニット１４追加後に、通信テストでエラーが発生した場合の処理について説明する。図１７は、実施の形態による演算ユニット追加後の通信テストでエラーが発生した場合の処理手順の一例を示すフローチャートである。まず、演算ユニット１４がベースユニット１０に追加されると（ステップＳ１５１）、ＣＰＵユニット１１のユニット管理部１１３が演算ユニット１４の通信テストチェック部１４６にアクセスを行う（ステップＳ１５２）。
【００８９】
ＣＰＵユニット１１のユニット管理部１１３が演算ユニット１４の通信テストチェック部１４６へのアクセスに失敗した場合（ステップＳ１５３）、ＣＰＵユニット１１のユニット管理部１１３は、ユニット管理テーブル１１４を演算ユニット１４の追加前の状態に戻す（ステップＳ１５４）。たとえば、演算ユニット１４の追加によって第１テーブル１１４３が有効化されている場合には、第１テーブル１１４３を無効化し、第２テーブル１１４４を有効化する。また、演算ユニット１４の追加によって第２テーブル１１４４が有効化されている場合には、第２テーブル１１４４を無効化し、第１テーブル１１４３を有効化する。
【００９０】
アクセスに失敗した場合として、たとえば、アクセスに異常があった場合、または一定期間ステップＳ１５２のアクセスがＣＰＵユニット１１から来なかった場合を挙げることができる。その後、演算ユニット１４の通信テストチェック部１４６は、エラー表示部１４７にエラー状態をセットする（ステップＳ１５５）。演算ユニット１４のエラー表示部１４７は、エラー状態がセットされると、演算ユニット１４がエラー表示モードに切り替わり（ステップＳ１５６）、ユニット単体で取り外しが可能なように停止状態にする（ステップＳ１５７）。これによって、制御システム全体は動作状態にありながら、追加した演算ユニット１４だけを取り外すことが可能になる。
【００９１】
この実施の形態では、制御装置に新たに演算ユニット１４を追加する場合に、演算ユニット１４中の管理テーブル更新部１４３がＣＰＵユニット１１中のユニット管理テーブル１１４を更新するようにした。その結果、制御装置全体のユニットの停止および再設定を行うことなく、演算ユニット１４を追加することができるという効果を有する。その結果、使用者が用途に応じてベースユニット１０に装着するユニットの台数または構成を自由に変更することができる。
【００９２】
また、複数のユニット間の通信に優先度を設定するようにした。たとえば、新たにユニットを追加するときに、このユニットの管理テーブル更新部１４３がユニット管理テーブル１１４を更新するためのアクセス要求の優先度を低くすることで、ＣＰＵユニット１１が動作タイミングを変更せずにユニット管理テーブル１１４を更新することができるという効果を有する。
【００９３】
さらに、ＣＰＵユニット１１のユニット管理部１１３が演算処理部１１１での演算処理の空き時間を利用して、新たに追加するユニットの通信テストを実施するようにした。これによって、既存のユニットの動作タイミングを変更せずに、新たに追加したユニットが正常動作するか否かを確認することができるという効果も有する。
【産業上の利用可能性】
【００９４】
以上のように、この発明にかかる制御装置は、制御対象を制御プログラムにしたがって制御するプログラマブルコントローラに有用である。
【符号の説明】
【００９５】
１０  ベースユニット、１１  ＣＰＵユニット、１２  入力ユニット、１３  出力ユニット、１４  演算ユニット、２１  外部入力装置、２２  外部出力装置、５１，６１  アクセス生成部、５２，６２  送信バッファ、５４，６４  受信バッファ、５６，６６  アクセス解析部、１１２，１４２  Ｉ／Ｏ制御部、５７，６７  優先度テーブル、５８，６８  中断データ情報、５３，６３  パケット送信処理部、５５，６５  パケット受信処理部、７１  送信用バス、７２  受信用バス、１０１，１１５，１４４  バスマスタ、１０３  バススイッチ、１１１，１４１  演算処理部、１１３  ユニット管理部、１１４  ユニット管理テーブル、１２１  外部入力検出部、１３１  外部出力制御部、１０２，１１６，１２２，１３２  バススレーブ、１４３  管理テーブル更新部、１１４１  アクセス調停部、１１４２  有効テーブルフラグ、１１４３  第１テーブル、１１４４  第２テーブル。
【図１】
0005951123.tif 000002
【図２】
0005951123.tif 000003
【図３】
0005951123.tif 000004
【図４】
0005951123.tif 000005
【図５】
0005951123.tif 000006
【図６】
0005951123.tif 000007
【図７】
0005951123.tif 000008
【図８】
0005951123.tif 000009
【図９】
0005951123.tif 000010
【図１０】
0005951123.tif 000011
【図１１】
0005951123.tif 000012
【図１２】
0005951123.tif 000013
【図１３】
0005951123.tif 000014
【図１４】
0005951123.tif 000015
【図１５】
0005951123.tif 000016
【図１６】
0005951123.tif 000017
【図１７】
0005951123.tif 000018