(57)【要約】【課題】プログラマブルコントローラのモジュールが付け替えられた場合であっても、書き込みが禁止された領域への書き込みを防止することを目的とする。【解決手段】制御対象となる装置に接続され、プログラムを実行することによって接続された装置を制御するプログラマブルコントローラにおいて、受け付けた書き込み要求が、制御モジュールへのデータの書き込み要求である場合には、制御アドレスポリシを参照し、書き込み先の制御アドレスへのデータの書き込みが許可されているか否かを判定し、受け付けた書き込み要求が接続モジュールへのデータの書き込み要求である場合には、制御アドレスポリシ及びモジュールアドレスポリシを参照し、書き込み先の制御アドレスへのデータの書き込みが許可されているか否かを判定することを特徴とする。【選択図】図１
2010277143.tif 000002
【特許請求の範囲】
【請求項１】
制御対象となる装置に接続され、プログラムを実行することによって前記接続された装置を制御するプログラマブルコントローラにおいて、
前記プログラマブルコントローラは、
前記制御対象となる装置を接続し、前記制御対象となる装置の制御情報を記憶する第１記憶領域を備える接続モジュールと、前記プログラムを実行し、自身の設定情報を記憶する第２記憶領域を備える制御モジュールと、
前記各モジュールを前記プログラマブルコントローラに取り付けるためのスロットと、を備え、
前記制御モジュールが前記第１記憶領域及び前記第２記憶領域を認識するために、前記第１記憶領域及び前記第２記憶領域に制御アドレスが割り付けられ、
前記接続モジュールが前記第１記憶領域を認識するために、前記第１記憶領域にモジュールアドレスが割り付けられ、
前記プログラマブルコントローラは、
前記制御アドレスが示す記憶領域にデータの書き込みが許可されるか否かが登録される制御アドレスポリシと、
前記モジュールアドレスが示す記憶領域にデータの書き込みが許可されるか否かが登録されるモジュールアドレスポリシと、
前記第１記憶領域に割り付けられた制御アドレスと前記第１記憶領域に割り付けられたモジュールアドレスとの対応関係を示す割付情報と、を記憶し、
データの書き込み先が前記制御アドレスによって特定された書き込み要求を受け付けた場合に、前記書き込み先の制御アドレスに基づいて、前記第１記憶領域へのデータの書き込み要求か、前記第２記憶領域へのデータの書き込み要求か、を特定し、
前記受け付けた書き込み要求が、前記第２記憶領域へのデータの書き込み要求である場合には、前記制御アドレスポリシを参照し、前記書き込み先の制御アドレスへのデータの書き込みが許可されているか否かを判定し、
前記受け付けた書き込み要求が、前記第１記憶領域へのデータの書き込み要求である場合には、前記割付情報を参照し、前記書き込み先の制御アドレスに対応するモジュールアドレスを特定し、前記制御アドレスポリシ、及び前記特定されたモジュールアドレスの前記モジュールアドレスポリシを参照し、前記書き込み先の制御アドレスへのデータの書き込みが許可されているか否かを判定し、
前記書き込み先の制御アドレスへのデータの書き込みが許可されていると判定された場合に、前記書き込み先の制御アドレスへデータを書き込み、
前記書き込み先の制御アドレスへのデータの書き込みが許可されていないと判定された場合に、前記書き込み先の制御アドレスへデータを書き込まないことを特徴とするプログラマラブルコントローラ。
【請求項２】
前記プログラマブルコントローラは、前記受け付けた書き込み要求が前記第１記憶領域へのデータの書き込み要求である場合には、前記制御アドレスポリシ、及び前記特定されたモジュールアドレスポリシを参照し、前記書き込み先の制御アドレスへのデータの書き込みが許可されていても、前記制御アドレスに対応するモジュールアドレスへのデータの書き込みが許可されていなければ、前記書き込み先の制御アドレスへのデータの書き込みが許可されていないと判定することを特徴とする請求項１に記載のプログラマラブルコントローラ。
【請求項３】
前記プログラマラブルコントローラは、
前記接続モジュールが取り付けられていた第１スロットと異なる第２スロットに前記接続モジュールが取り付けられ、前記第１記憶領域に割り付けられていた制御アドレスが変更された場合には、
前記変更後の制御アドレスに基づいて、前記制御アドレスポリシ及び前記割付情報を更新し、
前記更新後の制御アドレスポリシを参照し前記変更後の制御アドレスへのデータの書き込みが許可されていても、前記モジュールアドレスを参照し前記変更後の制御アドレスへのデータの書き込みが許可されていない場合には、前記制御アドレスポリシに、前記変更後の制御アドレスへのデータの書き込みを許可しないことが登録されることを特徴とする請求項２に記載のプログラマラブルコントローラ。
【請求項４】
前記プログラマラブルコントローラは、
前記プログラマブルコントローラの外部から前記制御アドレスポリシ及び前記モジュールアドレスポリシを前記プログラマブルコントローラに入力するポリシ入力部に接続され、
前記ポリシ入力部からの入力によって、前記制御アドレスポリシ及び前記モジュールアドレスポリシを設定することを特徴とする請求項１に記載のプログラマブルコントローラ。
【請求項５】
制御対象となる装置に接続され、プログラムを実行することによって前記接続された装置を制御するプログラマブルコントローラにおけるデータ書き込み方法において、
前記プログラマブルコントローラは、
前記制御対象となる装置を接続し、前記制御対象となる装置の制御情報を記憶する第１記憶領域を備える接続モジュールと、前記プログラムを実行し、自身の設定情報を記憶する第２記憶領域を備える制御モジュールと、
前記各モジュールを前記プログラマブルコントローラに取り付けるためのスロットと、を備え、
前記制御モジュールが前記第１記憶領域及び前記第２記憶領域を認識するために、前記第１記憶領域及び前記第２記憶領域に制御アドレスが割り付けられ、
前記接続モジュールが前記第１記憶領域を認識するために、前記第１記憶領域にモジュールアドレスが割り付けられ、
前記プログラマブルコントローラは、
前記制御アドレスが示す記憶領域にデータの書き込みが許可されるか否かが登録される制御アドレスポリシと、
前記モジュールアドレスが示す記憶領域にデータの書き込みが許可されるか否かが登録されるモジュールアドレスポリシと、
前記第１記憶領域に割り付けられた制御アドレスと前記第１記憶領域に割り付けられたモジュールアドレスとの対応関係を示す割付情報と、を記憶し、
前記データ書き込み方法は、
データの書き込み先が前記制御アドレスによって特定された書き込み要求を受け付けた場合に、前記書き込み先の制御アドレスに基づいて、前記第１記憶領域へのデータの書き込み要求か、前記第２記憶領域へのデータの書き込み要求か、を特定し、
前記受け付けた書き込み要求が、前記第２記憶領域へのデータの書き込み要求である場合には、前記制御アドレスポリシを参照し、前記書き込み先の制御アドレスへのデータの書き込みが許可されているか否かを判定し、
前記受け付けた書き込み要求が、前記第１記憶領域へのデータの書き込み要求である場合には、前記割付情報を参照し、前記書き込み先の制御アドレスに対応するモジュールアドレスを特定し、前記制御アドレスポリシ及び前記特定されたモジュールアドレスのモジュールアドレスポリシを参照し、前記書き込み先の制御アドレスへのデータの書き込みが許可されているか否かを判定し、
前記書き込み先の制御アドレスへのデータの書き込みが許可されていると判定された場合に、前記書き込み先の制御アドレスへデータを書き込み、
前記書き込み先の制御アドレスへのデータの書き込みが許可されていないと判定された場合に、前記書き込み先の制御アドレスへデータを書き込まないことを特徴とするデータ書き込み方法。
【請求項６】
前記データ書き込み方法は、前記受け付けた書き込み要求が前記第１記憶領域へのデータの書き込み要求である場合には、前記制御アドレスポリシ、及び前記特定されたモジュールアドレスポリシを参照し、前記書き込み先の制御アドレスへのデータの書き込みが許可されていても、前記制御アドレスに対応するモジュールアドレスへのデータの書き込みが許可されていなければ、前記書き込み先の制御アドレスへのデータの書き込みが許可されていないと判定することを特徴とする請求項５に記載のデータ書き込み方法。
【請求項７】
前記データ書き込み方法は、
前記接続モジュールが取り付けられていた第１スロットと異なる第２スロットに前記接続モジュールが取り付けられ、前記第１記憶領域に割り付けられていた制御アドレスを変更された場合には、
前記変更後の制御アドレスに基づいて、前記制御アドレスポリシ及び前記割付情報を更新し、
前記更新後の制御アドレスポリシを参照し、前記変更後の制御アドレスへのデータの書き込みが許可されていても、前記モジュールアドレスを参照し、前記変更後の制御アドレスへのデータの書き込みが許可されていない場合には、前記制御アドレスポリシに、前記変更後の制御アドレスへのデータの書き込みを許可しないことが登録されることを特徴とする請求項６に記載のデータ書き込み方法。
【請求項８】
前記プログラマラブルコントローラは、前記プログラマブルコントローラの外部から前記制御アドレスポリシ及び前記モジュールアドレスポリシを前記プログラマブルコントローラに入力するポリシ入力部に接続され、
前記データ書き込み方法は、前記ポリシ入力部からの入力によって、前記制御アドレスポリシ及び前記モジュールアドレスポリシを設定することを特徴とする請求項５に記載のデータ書き込み方法。
【請求項９】
制御対象となる装置に接続され、プログラムを実行することによって前記接続された装置を制御し、前記制御対象となる装置を接続し、前記制御対象となる装置の制御情報を記憶する第１記憶領域を備える接続モジュールと、前記プログラムを実行し、自身の設定情報を記憶する第２記憶領域を備える制御モジュールと、前記プログラマブルコントローラへの書き込み命令を受信し、自身の設定情報を記憶する第３記憶領域を備える受信モジュールと、前記各モジュールを前記プログラマブルコントローラに取り付けるためのスロットと、を備えるプログラマブルコントローラにおける前記受信モジュールであって、
前記制御モジュールが前記第１記憶領域、前記第２記憶領域、及び前記第３記憶領域を認識するために、前記第１記憶領域、前記第２記憶領域、及び前記第３記憶領域に制御アドレスが割り付けられ、
前記接続モジュール及び前記受信モジュールが各自の記憶領域を認識するために、前記第１記憶領域及び前記第３記憶領域にモジュールアドレスが割り付けられ、
前記プログラマラブルコントローラは、
前記制御アドレスが示す記憶領域にデータの書き込みが許可されるか否かが登録される制御アドレスポリシと、
前記モジュールアドレスが示す記憶領域にデータの書き込みが許可されるか否かが登録されるモジュールアドレスポリシと、
前記第１記憶領域及び前記第３記憶領域に割り付けられた制御アドレスと前記第１記憶領域及び前記第３記憶領域に割り付けられたモジュールアドレスとの対応関係を示す割付情報と、を記憶し、
前記受信モジュールは、
データの書き込み先が前記制御アドレスによって特定された書き込み要求を受信した場合に、前記書き込み先の制御アドレスに基づいて、前記第１記憶領域又は前記第３記憶領域へのデータの書き込み要求か、前記第２記憶領域へのデータの書き込み要求か、を特定し、
前記受け付けた書き込み要求が、前記第２記憶領域へのデータの書き込み要求である場合には、前記制御アドレスポリシを参照し、前記書き込み先の制御アドレスへのデータの書き込みが許可されているか否かを判定し、
前記受け付けた書き込み要求が、前記第１記憶領域又は前記第３記憶領域へのデータの書き込み要求である場合には、前記割付情報を参照し、前記書き込み先の制御アドレスに対応するモジュールアドレスを特定し、前記制御アドレスポリシ及び前記特定されたモジュールアドレスのモジュールアドレスポリシを参照し、前記書き込み先の制御アドレスへのデータの書き込みが許可されているか否かを判定し、
前記書き込み先の制御アドレスへのデータの書き込みが許可されていると判定された場合に、前記書き込み先の制御アドレスへデータの書き込みを前記制御モジュールに指示し、
前記書き込み先の制御アドレスへのデータの書き込みが許可されていないと判定された場合に、前記書き込み先の制御アドレスへデータの書き込み前記制御モジュールに指示しないことを特徴とする受信モジュール。
【請求項１０】
前記受信モジュールは、前記受信した書き込み要求が、前記第１記憶領域又は前記第３記憶領域へのデータの書き込み要求である場合には、前記制御アドレスポリシ、及び前記特定されたモジュールアドレスポリシを参照し、前記書き込み先の制御アドレスへのデータの書き込みが許可されていても、前記制御アドレスに対応するモジュールアドレスへのデータの書き込みが許可されていなければ、前記書き込み先の制御アドレスへのデータの書き込みが許可されていないと判定することを特徴とする請求項９に記載の受信モジュール。
【請求項１１】
前記受信モジュールは、
前記プログラマブルコントローラの外部から前記制御アドレスポリシ及び前記モジュールアドレスポリシを前記プログラマブルコントローラに入力するポリシ入力部に接続され、
前記制御アドレスポリシ及び前記モジュールアドレスポリシを記憶し、
前記ポリシ入力部からの入力によって、前記制御アドレスポリシ及び前記モジュールアドレスポリシを設定することを特徴とする請求項１０に記載の受信モジュール。
【請求項１２】
前記制御モジュールは、
前記接続モジュール及び前記受信モジュールの少なくとも一方が他のスロットに付け変えられ、前記付け替えられたモジュールの記憶領域に割り付けられていた制御アドレスを変更された場合には、
前記変更後の制御アドレスに基づいて、前記割付情報を更新し、
前記受信モジュールは、
前記変更後の制御アドレスに基づいて、前記制御アドレスポリシを更新し、
前記更新後の制御アドレスポリシを参照し、前記変更後の制御アドレスへのデータの書き込みが許可されていても、前記モジュールアドレスを参照し、前記変更後の制御アドレスへのデータの書き込みが許可されていない場合には、前記制御アドレスポリシに、前記変更後の制御アドレスへのデータの書き込みを許可しないことが登録されることを特徴とする請求項１１に記載の受信モジュール。
【請求項１３】
前記受信モジュールは、前記制御モジュールに対する書き込み指示を登録する書き込み指示情報を記憶し、
前記制御モジュールは、前記書き込み指示情報に登録された書き込み指示を所定タイミングで取得して、前記取得したデータの書き込み指示に基づいて、前記書き込み先の制御アドレスへ実際にデータを書き込み、
前記受信モジュールは、
前記書き込み先の制御アドレスへのデータの書き込みが許可されていると判定された場合に、前記書き込み先の制御アドレスへデータの書き込み指示を前記書き込み指示情報に登録し、
前記書き込み先の制御アドレスへのデータの書き込みが許可されていないと判定された場合に、前記書き込み先の制御アドレスへデータの書き込み指示を前記書き込み指示情報に登録しないことを特徴とする請求項９に記載の受信モジュール。
【発明の詳細な説明】
【技術分野】
【０００１】
制御対象となる装置に接続され、プログラムを実行することによって接続された装置を制御するプログラマブルコントローラに関し、特に、プログラマブルコントローラに備える各モジュールの記憶領域へデータを書き込む技術に関する。
【背景技術】
【０００２】
製造現場の制御装置としてプログラマブルコントローラが用いられている。プログラマブルコントローラは、プログラマブルコントローラに接続された外部装置（インバータ、サーボモータなど）の動作を制御する。
【０００３】
プログラマブルコントローラは、ＣＰＵユニット、通信ユニット、及びＩＯユニットなどの複数のユニットによって構成される。ＣＰＵユニットは、プログラマブルコントローラの全体を制御するユニットである。通信ユニットは、プログラマブルコントローラに各種コマンドを送信する外部計算機（例えばＰＣ）にプログラマブルコントローラをネットワークを介して接続するユニットである。ＩＯユニットは、プログラマブルコントローラの制御対称となる外部装置と通信するためのユニットである。
【０００４】
プログラマブルコントローラが動作している場合には、ＣＰＵユニットが外部計算機からのコマンドを通信ユニットを介して受信することによって、受信したコマンドに基づく処理を実行する。外部計算機はメモリへのデータの書き込みを命令する書き込みコマンド、及びメモリに記憶されたデータの読み出しを命令する読み出しコマンド等をＣＰＵユニットに送信することによって、外部装置を監視及び制御する。
【０００５】
ＣＰＵユニットがメモリへデータを書き込む場合に、外部計算機のユーザの入力ミス、及び外部計算機の不具合などによって外部装置が異常な動作を引き起こす危険性がある。
【０００６】
このため、プログラマブルコントローラがコマンドを受信した場合に、受信したコマンドが書き込みコマンドであるか否かを判定し、受信したコマンドが書き込みコマンドであると判定された場合には、当該書き込みコマンドに関する情報を履歴情報として記憶する。そして、プログラマブルコントローラは、当該書き込みコマンドが書き込みを許可されていないネットワークを介して接続された外部計算機から送信されたコマンドである場合には、メモリへ書き込みせずに、「書込プロテクト中のため実行不可」という内容のレスポンスを返信するプログラマブルコントローラが知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００５−８４８４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、プログラマブルコントローラは、メモリへの書き込み先のアドレスにより特性が異なるものである。
【０００９】
特許文献１に記載されたプログラマブルコントローラは、書き込みコマンドがどのネットワークから受信したか否かを判定することによって、メモリへの書き込みを実行するか否かを判定している。このため、モジュールが付け替えられた場合には、ＣＰＵモジュールが認識するアドレスが変更されるため、書き込みが禁止されたアドレスへデータが書き込まれる可能性がある。
【００１０】
本発明は、上述した事情に鑑みてなされたものであり、プログラマブルコントローラのモジュールが付け替えられた場合であっても、書き込みが禁止された領域への書き込みを防止することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の代表的な一形態によると、制御対象となる装置に接続され、プログラムを実行することによって前記接続された装置を制御するプログラマブルコントローラにおいて、前記プログラマブルコントローラは、前記制御対象となる装置を接続し、前記制御対象となる装置の制御情報を記憶する第１記憶領域を備える接続モジュールと、前記プログラムを実行し、自身の設定情報を記憶する第２記憶領域を備える制御モジュールと、前記各モジュールを前記プログラマブルコントローラに取り付けるためのスロットと、を備え、前記制御モジュールが前記第１記憶領域及び前記第２記憶領域を認識するために、前記第１記憶領域及び前記第２記憶領域に制御アドレスが割り付けられ、前記接続モジュールが前記第１記憶領域を認識するために、前記第１記憶領域にモジュールアドレスが割り付けられ、前記プログラマブルコントローラは、前記制御アドレスが示す記憶領域にデータの書き込みが許可されるか否かが登録される制御アドレスポリシと、前記モジュールアドレスが示す記憶領域にデータの書き込みが許可されるか否かが登録されるモジュールアドレスポリシと、前記第１記憶領域に割り付けられた制御アドレスと前記第１記憶領域に割り付けられたモジュールアドレスとの対応関係を示す割付情報と、を記憶し、データの書き込み先が前記制御アドレスによって特定された書き込み要求を受け付けた場合に、前記書き込み先の制御アドレスに基づいて、前記第１記憶領域へのデータの書き込み要求か、前記第２記憶領域へのデータの書き込み要求か、を特定し、前記受け付けた書き込み要求が、前記第２記憶領域へのデータの書き込み要求である場合には、前記制御アドレスポリシを参照し、前記書き込み先の制御アドレスへのデータの書き込みが許可されているか否かを判定し、前記受け付けた書き込み要求が、前記第１記憶領域へのデータの書き込み要求である場合には、前記割付情報を参照し、前記書き込み先の制御アドレスに対応するモジュールアドレスを特定し、前記制御アドレスポリシ、及び前記特定されたモジュールアドレスの前記モジュールアドレスポリシを参照し、前記書き込み先の制御アドレスへのデータの書き込みが許可されているか否かを判定し、前記書き込み先の制御アドレスへのデータの書き込みが許可されていると判定された場合に、前記書き込み先の制御アドレスへデータを書き込み、前記書き込み先の制御アドレスへのデータの書き込みが許可されていないと判定された場合に、前記書き込み先の制御アドレスへデータを書き込まないことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、プログラマブルコントローラのモジュールが付け替えられた場合であっても、書き込みが禁止された領域への書き込みを防止できる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１実施形態の計算機システムの構成図である。
【図２】本発明の第１実施形態のプログラマブルコントローラの構成図である。
【図３】本発明の第１実施形態のプログラマブルコントローラへのモジュール取り付け方法の説明図である。
【図４】本発明の第１実施形態のＩＯ割付ＤＢの説明図である。
【図５】本発明の第１実施形態の内部アドレスポリシＤＢの説明図である。
【図６】本発明の第１実施形態の外部アドレスポリシＤＢの説明図である。
【図７】本発明の第１実施形態のモジュールアドレスポリシＤＢの説明図である。
【図８】本発明の第１実施形態の書込命令ＤＢの説明図である。
【図９】本発明の第１実施形態のデータ書込処理のシーケンス図である。
【図１０】本発明の第１実施形態の書き込み許可確認処理のフローチャートである。
【図１１】本発明の第２実施形態のポリシＤＢ変更確認処理のフローチャートである。
【発明を実施するための形態】
【００１４】
（第１実施形態）
本発明の第１実施形態を図１から図１０を用いて説明する。
【００１５】
なお、本発明のプログラマブルコントローラの動作の一例として、外部計算機であるＰＣからプログラマブルコントローラのメモリの値を設定する際のシステムついて説明する。
【００１６】
図１は、本発明の第１実施形態の計算機システムの構成図である。
【００１７】
第１実施形態の計算機システムは、第１計算機（以下、第１ＰＣという）１０１、第２計算機（以下、第２ＰＣという）１０３、プログラマブルコントローラ１０７、及びプログラマブルコントローラ１０７の制御対象となるインバータ１２１を備える。
【００１８】
第１ＰＣ１０１は、ユーザによって操作される端末であり、プログラマブルコントローラ１０７とデータを通信する。第１ＰＣ１０１は、プログラマブルコントローラ１０７のどのスロットにどのモジュールが取り付けられているかを示すＩＯ割付設定情報をプログラマブルコントローラ１０７に送信するＩＯ割付設定機能１０２を備える。
【００１９】
第２ＰＣ１０３は、ユーザによって操作される端末であり、プログラマブルコントローラ１０７とネットワーク１０６を介して接続され、プログラマブルコントローラ１０７とデータを通信する。
【００２０】
第２ＰＣ１０３は、プログラマブルコントローラ１０７のメモリ領域に対して書き込みを許可するか否かを示すポリシをプログラマブルコントローラ１０７に送信し、ポリシをプログラマブルコントローラ１０７に設定するポリシ設定機能１０４、及び、プログラマブルコントローラ１０７のメモリ領域にデータを書き込む命令（書き込み命令）を設定し、当該書き込み命令をプログラマブルコントローラ１０７に送信するデータ書き込み命令設定機能１０５を備える。
【００２１】
ネットワーク１０６は、第２ＰＣ１０３とプログラマブルコントローラ１０７との間で電波、光、音、又は電気信号などを用いてパケットを通信するルータ又はケーブルなどを含む。
【００２２】
プログラマブルコントローラ１０７は、シーケンス制御を行う電子装置であり、保存されたプログラムに従って、プログラマブルコントローラ１０７に接続された外部装置（例えば、インバータ１２１）を制御する。
【００２３】
プログラマブルコントローラ１０７は、ＣＰＵモジュール１０８、ネットワークモジュール１１３、及び外部ＩＯモジュール１１９を備える。
【００２４】
ＣＰＵモジュール１０８は、プログラマブルコントローラ１０７のモジュールの一つであり、第１ＰＣ１０１に接続され、保存されたプログラムを実行する。また、ＣＰＵモジュール１０８は、他のモジュールのメモリに記憶されたデータを読み出す機能、及び他のモジュールのメモリに書き込む機能を備える。
【００２５】
ＣＰＵモジュール１０８は、通信機能１０９、内部バス通信機能１１０、ＩＯ割付設定機能１１１、及びＩＯ割付ＤＢ１１２を備える。
【００２６】
通信機能１０９は、第１ＰＣ１０１とデータを通信する。なお、ＣＰＵモジュール１０８と第１ＰＣ１０１とは、シリアル通信又は図示しないネットワークで接続されている。
【００２７】
内部バス通信機能１１０は、プログラマブルコントローラ１０７の図２に示す内部バス２１７を介して、プログラマブルコントローラ１０７内のモジュール（ネットワークモジュール１１３、及び外部ＩＯモジュール１１９など）のメモリに記憶されたデータの読み出し、及び当該メモリへデータを書き込む。
【００２８】
ＩＯ割付設定機能１１１は、第１ＰＣ１０１から送信されたＩＯ割付設定情報を解釈し、外部ＩＯモジュール（ネットワークモジュール１１３、及び外部ＩＯモジュール１１９）のメモリ領域をＣＰＵモジュールのメモリ領域に割り付け、割り付けた結果をＩＯ割付ＤＢ１１２に登録する。ＩＯ割付ＤＢ１１２については、図４で詳細を説明する。
【００２９】
ネットワークモジュール１１３は、プログラマブルコントローラ１０７のモジュールの一つであり、ネットワーク１０６に接続された図示しないネットワークインタフェース（Ｉ／Ｆ）を介して外部の装置（図１では、第２ＰＣ１０３）と通信する。
【００３０】
ネットワークモジュール１１３は、通信機能１１４、ポリシ設定機能１１５、データ書込命令設定機能１１６、ポリシＤＢ１１７、及び書込命令ＤＢ１１８を備える。
【００３１】
通信機能１１４は、ネットワーク１０６を介して第２ＰＣ１０３と通信する。ポリシ設定機能１１５は、第２ＰＣ１０３から送信されたポリシをポリシＤＢ１１７に登録する。
【００３２】
データ書込命令設定機能１１６は、第２ＰＣ１０３から送信された書き込み命令を受信した場合に、ポリシＤＢ１１７を参照し、受信した書き込み命令によるデータを書き込むか否かを判定する。
【００３３】
ポリシＤＢ１１７は、第２ＰＣ１０３から送信されたポリシを登録するＤＢである。ポリシＤＢ１１７については、図５〜図７で詳細を説明する。書込命令ＤＢ１１８は、第２ＰＣ１０３から送信された書き込み命令を登録するデータベースである。書込命令ＤＢ１１８については、図８で詳細を説明する。
【００３４】
外部ＩＯモジュール１１９は、プログラマブルコントローラ１０７のモジュールの一つであり、インバータ１２１と通信する。外部ＩＯモジュール１１９とインバータ１２１とは、ＤｅｖｉｃｅＮｅｔのようなネットワークによって接続されてもよいし、アナログＩＯ、又はデジタルＩＯのように導線で接続されてもよい。
【００３５】
外部ＩＯモジュール１１９は、プログラマブルコントローラ１０７の制御対象となる外部装置（インバータ１２１）と通信する通信機能１２０を備える。
【００３６】
インバータ１２１は、プログラマブルコントローラ１０７の制御対象であり、モータなどを駆動するために直流電力から交流電力を電気的に生成する電力変換装置である。インバータ１２１は、外部ＩＯモジュール１１９と接続されている。
【００３７】
なお、プログラマブルコントローラ１０７の制御対象は、インバータ１２１以外でもよく、例えば、サーボ機構により位置及び速度などを制御するサーボモータでもよいし、圧縮機などであってもよい。
【００３８】
図１では、第１ＰＣ１０１と第２ＰＣ１０３とが別のＰＣであるとして説明したが、同一のＰＣであってもよい。また、ＣＰＵモジュール１０８、ネットワークモジュール１１３、及び外部ＩＯモジュール１１９が機能ごとに別のモジュールに分かれているが、ＣＰＵモジュール１０８、ネットワークモジュール１１３、及び外部ＩＯモジュール１１９の機能が単一のモジュールで実装されてもよい。また、プログラマブルコントローラ１０７は、ＣＰＵモジュール１０８、ネットワークモジュール１１３、及び外部ＩＯモジュール１１９以外のモジュールを備えてもよい。
【００３９】
図２は、本発明の第１実施形態のプログラマブルコントローラ１０７の構成図である。
【００４０】
ＣＰＵモジュール１０８、ネットワークモジュール１１３、及び外部ＩＯモジュール１１９は、内部バス２１７によって接続される。
【００４１】
ＣＰＵモジュール１０８は、ポート２０１及びプロセッサ２０３を備える。ポート２０１には、ＣＰＵモジュール１０８と第１ＰＣ１０１とがシリアル通信で接続される場合のバスが接続される。なお、ＣＰＵモジュール１０８と第１ＰＣ１０１とがネットワークで接続される場合には、ＣＰＵモジュール１０８は、ポート２０１の代わりにＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）を備える。
【００４２】
プロセッサ２０３は、プログラムを実行することによって種々の数値計算及び情報処理などを実行する装置であり、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０４、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０５、及びＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０６を備える。
【００４３】
ＣＰＵ２０４は、中央演算装置であり、ＲＯＭ２０５及びＲＡＭ２０６に記録されているプログラムを実行する。なお、ＣＰＵ２０４は、図示しない記憶装置に記憶されているプログラムをＲＡＭ２０６に転送し、ＲＡＭ２０６に転送されたプログラムも実行する。
【００４４】
ＲＯＭ２０５はデータ及びプログラムなどを記録する。ＲＡＭ２０６は、プログラム及びデータを一時的に記録する。
【００４５】
ネットワークモジュール１１３は、ＮＩＣ２０７及びプロセッサ２０８を備える。
【００４６】
ＮＩＣ２０７は、ネットワークモジュール１１３をネットワーク１０６に接続するためのインタフェースである。
【００４７】
プロセッサ２０８は、ＣＰＵ２０９、ＲＯＭ２１０、及びＲＡＭ２１１を備える。プロセッサ２０８は、プロセッサ２０３と同じあるので説明を省略する。また、ＣＰＵ２０９、ＲＯＭ２１０、及びＲＡＭ２１１も、ＣＰＵ２０４、ＲＯＭ２０５、及びＲＡＭ２０６と同じであるので、説明を省略する。
【００４８】
外部ＩＯモジュール１１９は、ポート２１２及びプロセッサ２１３を備える。
【００４９】
ポート２１２には、外部ＩＯモジュール１１９とインバータ１２１とが導線によって接続されている場合に、当該導線が接続される。なお、外部ＩＯモジュール１１９とインバータ１２１とがネットワークで接続される場合には、外部ＩＯモジュール１１９は、ポート２１２の代わりにＮＩＣを備える。
【００５０】
内部バス２１７は、各モジュールがデータを通信するための伝送路である。
【００５１】
ＣＰＵモジュール１０８は、メモリ領域に記憶されたデータを読み出し、及びメモリ領域へデータを書き込みながら、プログラムを実行する。この場合に、ＣＰＵモジュール１０８は、内部バス２１７を介して、ネットワークモジュール１１３及び外部ＩＯモジュール１１９などの外部モジュールのメモリ領域に記憶されたデータを読み出し、外部モジュールのメモリ領域へデータを書き込むことがある。つまり、ＣＰＵモジュール１０８から外部モジュールへ内部バス２１７を介してデータを送信し、外部モジュールからＣＰＵモジュール１０８へ内部バス２１７を介してデータを送信することが可能である。
【００５２】
外部ＩＯモジュール１１９とインバータ１２１とのデータ通信は、所定のタイミングで実行される。例えば、外部ＩＯモジュール１１９とインバータ１２１とのデータ通信は、ＣＰＵモジュール１０８が第２ＰＣ１０３から送信された命令を実行した直後に実行される。
【００５３】
第２ＰＣ１０３からインバータの設定を変更する場合には、第２ＰＣ１０３からネットワークモジュール１１３へ書き込み命令を送信する。ネットワークモジュール１１３は、受信した書き込み命令をＲＡＭ２１１の書込命令ＤＢ１１８に登録する。そして、ＣＰＵモジュール１０８は、内部バス２１７を介してネットワークモジュール１１３のＲＡＭ２１１から書き込み命令を読み出し、読み出した書き込み命令を参照し、外部ＩＯモジュール１１９のＲＡＭ２１６に内部バス２１７を介してデータを書き込む。
【００５４】
図２では、各モジュールのＲＡＭ及びＲＯＭは、プロセッサの内部に実装されているが、ＳＲＡＭ及びＦｌａｓｈＲＯＭなどをプロセッサの外部に実装されてもよい。
【００５５】
図３は、本発明の第１実施形態のプログラマブルコントローラ１０７へのモジュール取り付け方法の説明図である。
【００５６】
プログラマブルコントローラ１０７は、複数のスロット３０２を備える。スロット３０２は、各モジュールをプログラマブルコントローラ１０７に取り付けるための差込口である。
【００５７】
スロット３０２に取り付けられるモジュールとしては、各スロットに取り付けられたモジュールへ電源を供給する電源モジュール３０３、ＣＰＵモジュール１０８、ネットワークモジュール１１３、及び外部ＩＯモジュール１１９がある。どのスロット３０２にどのモジュールを取り付けるかは規定されていないので、どのスロット３０２にどのモジュールが取り付けられてもよい。
【００５８】
ＣＰＵモジュール１０８は、第１ＰＣ１０１から送信されたＩＯ割付設定情報を受信すると、外部モジュールのメモリ領域の実アドレスに対してＣＰＵモジュール１０８が認識できるＣＰＵモジュールアドレスを割り振る。また、ＣＰＵモジュール１０８自身のメモリ領域にもＣＰＵモジュールアドレスが設定されている。
【００５９】
このＣＰＵモジュールアドレスのうち、ＣＰＵモジュール１０８自身のメモリ領域を示すアドレスを内部アドレスといい、ＣＰＵモジュール１０８のメモリ領域以外の外部モジュールを示すアドレスを外部アドレスという。
【００６０】
なお、電源モジュール３０３は、各モジュールの電圧をスロットに供給し、メモリ領域を備えないので、電源モジュール３０３のメモリ領域を示すＣＰＵモジュールアドレスは存在しない。
【００６１】
図４は、本発明の第１実施形態のＩＯ割付ＤＢ１１２の説明図である。
【００６２】
ＩＯ割付ＤＢ１１２は、ＣＰＵモジュールアドレス４０１、モジュール４０２、及びモジュールアドレス４０３を含む。
【００６３】
ＣＰＵモジュールアドレス４０１には、ＣＰＵモジュールが認識できるＣＰＵモジュールアドレスが登録され、モジュール４０２には、ＣＰＵモジュールアドレスのメモリ領域を備えるモジュールの一意な識別子が登録される。また、モジュールアドレス４０３には、当該エントリのメモリ領域を当該メモリ領域を備えるモジュールが認識する実アドレスが登録される。
【００６４】
図４では、ＣＰＵモジュールアドレス４０１に登録されるＣＰＵモジュールアドレス「Ｘ２０００００」〜「Ｘ２００００Ｆ」は、ネットワークモジュール１１３に備わるメモリ領域であり、このメモリ領域のネットワークモジュール１１３が認識する実アドレスは「００００」〜「０００Ｆ」である。
【００６５】
また、ＣＰＵモジュールアドレス４０１に登録されるＣＰＵモジュールアドレス「Ｘ３０００００」〜「Ｘ３０００ＦＦ」は、外部ＩＯモジュール１１９に備わるメモリ領域であり、このメモリ領域の外部ＩＯモジュール１１９が認識する実アドレスは「００００」〜「００ＦＦ」である。
【００６６】
なお、ＣＰＵモジュールアドレス４０１に登録されたＣＰＵモジュールアドレスの先頭の「Ｘ」は、当該ＣＰＵモジュールアドレスが外部アドレスであることを示す。
【００６７】
モジュールアドレス４０３は各モジュールに予め設定されているアドレスであり、ＣＰＵモジュールアドレス４０１は、モジュールアドレス４０３によって決定され、ＣＰＵモジュールアドレス４０１の範囲もモジュールアドレス４０３の範囲によって決定される。
【００６８】
また、ＣＰＵモジュールアドレス４０１は、モジュールが他のスロット３０２に付け替えられると、モジュールアドレスに対応するＣＰＵモジュールアドレス４０１は変更される必要がある。
【００６９】
なお、ＣＰＵモジュール１０８で実行されるプログラムは、メモリ領域に記憶されたデータの読み出し命令、及びメモリ領域へのデータの書き込み命令では、ＣＰＵモジュールアドレス４０１が用いられる。
【００７０】
次に、ポリシＤＢ１１７について図５〜図７を用いて説明する。
【００７１】
第２ＰＣ１０３は、ＣＰＵモジュールアドレスと、当該ＣＰＵモジュールアドレスの書き込みポリシとを含むポリシを送信する。ネットワークモジュール１１３は、第２ＰＣ１０３から送信されたポリシを受信すると、受信したポリシをポリシＤＢ１１７に登録する。
【００７２】
ポリシＤＢ１１７は、内部アドレスのポリシを登録する内部アドレスポリシＤＢ５００（図５参照）と、外部アドレスのポリシを登録する外部アドレスポリシデータＤＢ６００（図６参照）と、外部アドレスに対応するモジュールアドレスのポリシを登録するモジュールアドレスポリシＤＢ７００（図７参照）と、を有する。
【００７３】
図５は、本発明の第１実施形態の内部アドレスポリシＤＢ５００の説明図である。
【００７４】
内部アドレスポリシＤＢ５００は、ＣＰＵモジュールアドレス５０１及びポリシ５０２を含む。
【００７５】
ＣＰＵモジュールアドレス５０１には、受信したポリシの内部アドレスが登録される。ポリシ５０２には、当該エントリの内部アドレスが示すメモリ領域へのデータの書き込みが許可されるか否かを示す情報を登録する。
【００７６】
ネットワークモジュール１１３は、第２ＰＣ１０３から送信されたポリシを受信すると、受信したポリシに内部アドレスのポリシが含まれている場合には、受信した内部アドレスを、ＣＰＵモジュールアドレス５０１に登録し、ポリシ５０２に受信した内部アドレスのポリシを登録する。
【００７７】
例えば、ＣＰＵモジュールアドレス５０１「ＷＲ００００００」が示すメモリ領域のポリシ５０２は書き込みが許可されている。
【００７８】
なお、ＣＰＵモジュールアドレス５０１に登録されたアドレスの「ＷＲ」は内部アドレスであることを示す。
【００７９】
また、ＣＰＵモジュール１０８によって実行されるプログラムが変更された場合に、内部アドレスの使用方法は変更される。このため、ＣＰＵモジュール１０８によって実行されるプログラムが変更された場合には、内部アドレスポリシＤＢ５００が変更されなければならない。
【００８０】
図６は、本発明の第１実施形態の外部アドレスポリシＤＢ６００の説明図である。
【００８１】
外部アドレスポリシＤＢ６００は、ＣＰＵモジュールアドレス６０１及びポリシ６０２を含む。
【００８２】
ＣＰＵモジュールアドレス６０１には、受信したポリシの外部アドレスが登録される。ポリシ６０２には、当該エントリの外部アドレスが示すメモリ領域へのデータの書き込みが許可されるか否かを示す情報を登録する。
【００８３】
ネットワークモジュール１１３は、第２ＰＣ１０３から送信されたポリシを受信すると、受信したポリシに外部アドレスのポリシが含まれている場合には、受信した外部アドレスを、ＣＰＵモジュールアドレス６０１に登録し、ポリシ６０２に受信した外部アドレスのポリシを登録する。
【００８４】
例えば、ＣＰＵモジュールアドレス６０１「Ｘ３０００００」が示すメモリ領域のポリシ６０２は書き込みが許可されていない。
【００８５】
また、外部アドレスは、内部アドレスと同じく、ＣＰＵモジュール１０８によって実行されるプログラムが変更された場合に使用方法が変更されるので、ＣＰＵモジュール１０８によって実行されるプログラムが変更された場合には、外部アドレスポリシＤＢ６００が変更される。
【００８６】
また、外部アドレスは、ＣＰＵモジュール１０８以外のモジュールが他のスロットに取り付けられた場合に変更されるので、ＣＰＵモジュール１０８以外のモジュールが他のスロットに取り付けられた場合には、外部アドレスポリシＤＢ６００が変更される。
【００８７】
図７は、本発明の第１実施形態のモジュールアドレスポリシＤＢ７００の説明図である。
【００８８】
モジュールアドレスポリシＤＢ７００は、ＣＰＵモジュール１０８がアクセスできるメモリ領域を備える外部モジュール分のデータベースを有する。本発明の実施形態では、外部ＩＯモジュール１１９用のモジュールアドレスポリシＤＢ７００と、ネットワークモジュール１１３用のモジュールアドレスポリシＤＢ７００とがある。
【００８９】
モジュールアドレスポリシＤＢ７００は、モジュールアドレス７０１及びポリシ７０２を含む。
【００９０】
モジュールアドレス７０１には、各モジュールのメモリ領域のモジュールアドレスが登録される。ポリシ７０２には、各モジュールアドレスが示すメモリ領域へのデータの書き込みが許可されるか否かを示すポリシ情報が登録される。
【００９１】
例えば、外部ＩＯモジュール１１９用のモジュールアドレスポリシＤＢのモジュールアドレス７０１「００００」が示すメモリ領域のポリシ７０２は書き込みが許可されていない。
【００９２】
外部ＩＯモジュール１１９のモジュールアドレスが示すメモリには、インバータ１２１の制御に関するデータが書き込まれる。
【００９３】
外部ＩＯモジュール１１９のモジュールアドレス「００００」のメモリ領域はインバータ１２１をリセットするか否かを示す情報が書き込まれる。具体的には、外部ＩＯモジュール１１９のモジュールアドレス「００００」が示すメモリ領域に「１」が書き込まれると、インバータ１２１をリセットし、当該メモリ領域に「０」が書き込まれるとインバータ１２１をリセットせず、現在の動作状態を維持する。
【００９４】
また、外部ＩＯモジュール１１９のモジュールアドレス「００００」及び「０００１」が示すメモリ領域には、インバータ１２１が制御しているモータの回転速度を変更するためのデータが書き込まれる。
【００９５】
つまり、この外部ＩＯモジュール１１９用のモジュールアドレスポリシＤＢ７００は、リセットを許可せず、モータの回転速度の変更は許可することを示す。
【００９６】
また、ネットワークモジュール１１３のメモリ領域には、ネットワークモジュール１１３の制御に関するデータが書き込まれる。
【００９７】
なお、ＣＰＵモジュール１０８によって実行されるプログラム変更されても、ＣＰＵモジュール１０８以外のモジュールが他のスロットに取り付けられても、モジュールアドレスは、変更されない。したがって、これらの場合には、モジュールアドレスポリシＤＢ７００は変更されなくてもよい。
【００９８】
また、外部ＩＯモジュール１１９のメモリ領域のように、外部ＩＯモジュール１１９に接続される装置（インバータ１２１）を制御するためのメモリ領域が示す制御内容は、外部ＩＯモジュール１１９に接続される装置が変更された場合、及び外部ＩＯモジュール１１９と外部ＩＯモジュール１１９に接続される装置との接続方法が変更された場合に変更する。このため、外部ＩＯモジュール１１９に接続される装置が変更された場合、及び外部ＩＯモジュール１１９と外部ＩＯモジュール１１９に接続される装置との接続方法が変更された場合には、外部ＩＯモジュール１１９用のモジュールアドレスポリシＤＢ７００は変更される。
【００９９】
また、ネットワークモジュール１１３のメモリ領域のように、自身を制御するためのメモリ領域が示す制御内容は、当該モジュールに接続される装置が変更された場合であっても、変更されないので、ネットワークモジュール１１３用のモジュールアドレスポリシＤＢ７００は変更されなくてもよい。
【０１００】
したがって、外部アドレスポリシＤＢ６００の変更タイミングとモジュールアドレスポリシＤＢ７００との変更タイミングとは相違する。通常、モジュールアドレスポリシＤＢ７００の変更頻度は、外部アドレスポリシＤＢ６００の変更頻度よりも少ない。
【０１０１】
このため、本発明では、プログラマブルコントローラ１０７が外部アドレスのメモリ領域へのデータの書き込み命令を受信した場合、外部アドレスポリシＤＢ６００を参照し、当該外部アドレスのメモリ領域へのデータの書き込みが許可されている場合であっても、モジュールアドレスポリシＤＢ７００を参照し、当該外部アドレスに対応するモジュールアドレスのメモリ領域へのデータの書き込みが許可されていない場合には、当該外部アドレスのメモリ領域へデータを書き込まないようにしている。これについては、図１０で詳細を説明する。
【０１０２】
図８は、本発明の第１実施形態の書込命令ＤＢ１１８の説明図である。
【０１０３】
書込命令ＤＢ１１８には、ネットワークモジュール１１３が第２ＰＣ１０３から送信された書き込み命令のうち、書き込みが許可された書き込み命令が登録される。なお、書き込み命令によって指定アドレスにデータが書き込まれた場合には、書込命令ＤＢ１１８に登録された書き込み命令は削除される。
【０１０４】
書込命令ＤＢ１１８は、ＣＰＵモジュールアドレス８０１及び書込値８０２を含む。
【０１０５】
ＣＰＵモジュールアドレス８０１には、書き込み命令に含まれる書込先のＣＰＵモジュールアドレスが登録される。書込値８０２には、書き込み命令に含まれる書込先のメモリ領域に書き込まれる値が登録される。
【０１０６】
例えば、ＣＰＵモジュールアドレス８０１「ＷＲ００００００」が示すメモリ領域には、「０」が書き込まれることを示す。
【０１０７】
次に、図９及び図１０を用いて、本計算機システムのデータ書込処理について説明する。
【０１０８】
図９は、本発明の第１実施形態のデータ書込処理のシーケンス図である。
【０１０９】
まず、第２ＰＣ１０３は、書込先のＣＰＵモジュールアドレス及び書込値を含む書き込み命令をネットワークモジュール１１３へネットワークを介して送信する（９０１）。
【０１１０】
ネットワークモジュール１１３は、第２ＰＣ１０３から書き込み命令を受信すると、ポリシＤＢ１１７を参照し、受信した書き込み命令に含まれるＣＰＵモジュールアドレスメモリ領域へのデータの書き込みが許可されているか否かを確認する（９０２）。ステップ９０２の処理については、図１０で詳細を説明する。
【０１１１】
次に、ネットワークモジュール１１３は、ステップ９０３の処理の確認結果を第２ＰＣ１０３へ送信する（９０３）。
【０１１２】
ステップ９０２の処理で、ＣＰＵモジュールアドレスのメモリ領域へのデータの書き込みが許可されていると確認された場合には、ネットワークモジュール１１３は、受信した
書き込み命令を書込命令ＤＢ１１８に登録する（９０４）。
【０１１３】
ＣＰＵモジュール１０８は、書込命令ＤＢ１１８に未だ書き込みが完了していない書き込み命令が登録されているか否かを所定のタイミングで確認する（９０５）。
【０１１４】
書込命令ＤＢ１１８に未だ書き込みが完了していない書き込み命令が登録されている場合には、ＣＰＵモジュール１０８は、当該書き込み命令を内部バス２１７を介して取得し、取得した書き込み命令を解釈する（９０６）。図９では、取得した書き込み命令の書込先が外部ＩＯモジュール１１９のメモリ領域であるとする。
【０１１５】
ＣＰＵモジュール１０８は、書込先である外部ＩＯモジュール１１９のメモリ領域に、書き込み命令に含まれる書込値を書き込む（９０７）。
【０１１６】
外部ＩＯモジュール１１９のメモリ領域に書き込まれると、外部ＩＯモジュール１１９は、インバータ１２１を制御するため、外部ＩＯモジュール１１９は、ＣＰＵモジュール１０８によって書き込まれたメモリ領域のモジュールアドレス、及び書き込み値を解釈して（９０８）、インバータ１２１を制御するためのデータをインバータ１２１に送信する（９０９）。
【０１１７】
図１０は、本発明の第１実施形態の書き込み許可確認処理のフローチャートである。
【０１１８】
書き込み確認処理は、図９に示すステップ９０２の処理であり、ネットワークモジュール１１３によって実行される。
【０１１９】
まず、ネットワークモジュール１１３は、書き込み命令を受信する（１００１）。
【０１２０】
ネットワークモジュール１１３は、書き込み命令を受信すると、図５に示す内部アドレスポリシＤＢ５００、及び図６に示す外部アドレスポリシＤＢ６００を参照し、受信した書き込み命令に含まれる書込先のＣＰＵモジュールアドレスのメモリ領域のポリシがデータの書き込みを許可しているか否かを確認する（１００２）。
【０１２１】
次に、ネットワークモジュール１１３は、ステップ１００２の処理の確認結果が、受信した書き込み命令に含まれる書込先のＣＰＵモジュールアドレスのメモリ領域のポリシがデータの書き込みを許可しているか否かを判定する（１００３）。
【０１２２】
ステップ１００３の処理で、受信した書き込み命令に含まれる書込先のＣＰＵモジュールアドレスのメモリ領域のポリシがデータの書き込みを許可していないと判定された場合には、ネットワークモジュール１１３は、書き込み命令によって指定されたＣＰＵモジュールアドレスへのデータの書き込みが許可されていないことを示すメッセージを第２ＰＣ１０３に送信し（１０１１）、書き込み許可確認処理を終了する。
【０１２３】
一方、ステップ１００３の処理で、受信した書き込み命令に含まれる書込先のＣＰＵモジュールアドレスのメモリ領域のポリシがデータの書き込みを許可していると判定された場合には、ネットワークモジュール１１３は、内部バス２１７を介して図４に示すＩＯ割付ＤＢ１１２を取得する（１００５）。
【０１２４】
そして、ネットワークモジュール１１３は、図４に示すＩＯ割付ＤＢ１１２を参照し、受信した書き込み命令に含まれる書込先のＣＰＵモジュールアドレスのモジュールアドレスを取得する（１００６）。
【０１２５】
具体的には、ネットワークモジュール１１３は、図４に示すＩＯ割付ＤＢ１１２に登録されたエントリのうち、ＣＰＵモジュールアドレス４０１に登録されたＣＰＵモジュールアドレスが、受信した書き込み命令に含まれる書込先のＣＰＵモジュールアドレスと一致するエントリを選択する。そして、ネットワークモジュール１１３は、選択したエントリに含まれるモジュール４０２に登録されたモジュールの識別子、及びモジュールアドレス４０３に登録されたモジュールアドレスを取得する。
【０１２６】
次に、ネットワークモジュール１１３は、図７に示す各モジュールアドレスポリシＤＢ７００のうち、ステップ１００６の処理で取得したモジュールの識別子に対応するモジュールアドレスポリシＤＢ７００を取得する。そして、ネットワークモジュール１１３は、取得したモジュールアドレスポリシＤＢ７００を参照し、ステップ１００６の処理で取得したモジュールアドレスのポリシが書き込みを許可しているか否かを確認する（１００７）。
【０１２７】
そして、ネットワークモジュール１１３は、ステップ１００７の処理の確認結果が、ステップ１００６の処理で取得したモジュールアドレスのポリシが書き込みを許可しているか否かを判定する（１００８）。
【０１２８】
ステップ１００７の処理の確認結果が、ステップ１００６の処理で取得したモジュールアドレスのポリシが書き込みを許可していないと、ステップ１００８の処理で判定された場合には、ネットワークモジュール１１３は、ステップ１０１１の処理に進む。
【０１２９】
一方、ステップ１００７の処理の確認結果が、ステップ１００６の処理で取得したモジュールアドレスのポリシが書き込みを許可していると、ステップ１００８の処理で判定された場合には、ネットワークモジュール１１３は、受信した書き込み命令を書込命令ＤＢ１１８に登録し（１００９）、書き込み命令によって指定されたＣＰＵモジュールアドレスへのデータの書き込みが許可されていることを示すメッセージを第２ＰＣ１０３に送信し（１０１０）、書き込み許可確認処理を終了する。
【０１３０】
このように、書き込み命令が外部アドレスのメモリ領域へのデータの書き込み命令である場合には、外部アドレスポリシＤＢ６００で、書き込み命令によって指定された外部アドレスのメモリ領域へデータの書き込みが許可されている場合であっても、モジュールアドレスポリシＤＢ７００で、書き込み命令によって指定された外部アドレスに対応するモジュールアドレスのメモリ領域へのデータの書き込みが許可されていない場合には、データの書き込みを許可しない。
【０１３１】
これによって、モジュールが他のスロットに取り付けられた場合に、外部モジュールアドレスが正しく変更されていない場合であっても、プログラマブルコントローラ１０７の誤設定による異常動作を防止できる。
【０１３２】
（第２実施形態）
本発明の第２実施形態を図１１を用いて説明する。
【０１３３】
通常、外部アドレスが変更される場合のＩＯ割付を設定すると同時に、変更後の外部アドレスのポリシも設定される。
【０１３４】
具体的には、変更前の外部アドレスのポリシが変更後の外部アドレスのポリシに設定される。例えば、図４に示すＣＰＵモジュールアドレス「Ｘ３０００００」が「Ｘ４０００００」に変更され、「Ｘ３００００１」が「Ｘ４０００１」に変更され、「Ｘ３００００２」が「Ｘ４０００２」に変更された場合には、図６に示す外部アドレスポリシＤＢ６００のＣＰＵモジュールアドレスが「Ｘ３０００００」が「Ｘ４０００００」に変更され、「Ｘ３００００１」が「Ｘ４０００１」に変更され、「Ｘ３００００２」が「Ｘ４０００２」に変更され、ポリシ６０２は変更前のままである。
【０１３５】
この場合に、変更後の外部アドレスのポリシを誤って設定されてしまう可能性、及び外部アドレスが正確に変更されない可能性があるため、第２実施形態では、外部アドレスの変更時に、外部アドレスのポリシがデータの書き込みを許可する場合であっても、当該外部アドレスに対応するモジュールアドレスのポリシがデータの書き込みを許可しない場合には、図６に示す外部アドレスポリシＤＢ６００のポリシをデータの書き込みを許可しないようにし、信頼度の高い外部アドレスポリシＤＢ６００を変更する。
【０１３６】
図１１は、本発明の第２実施形態のポリシＤＢ変更確認処理のフローチャートである。
【０１３７】
ポリシＤＢ変更確認処理は、ネットワークモジュール１１３によって実行される。
【０１３８】
まず、ネットワークモジュール１１３は、変更されたＩＯ割付ＤＢ１１２のＣＰＵモジュールアドレスが外部アドレスであるか否かを判定する（１１０１）。
【０１３９】
ステップ１１０１の処理で、変更されたＩＯ割付ＤＢ１１２のＣＰＵモジュールアドレスが外部アドレスでないと判定された場合には、ポリシＤＢ１１７の変更を確認しなくてもよいので、ポリシＤＢ変更確認処理を終了する。
【０１４０】
一方、ステップ１１０１の処理で、変更されたＩＯ割付ＤＢ１１２のＣＰＵモジュールアドレスが外部アドレスであると判定された場合には、ネットワークモジュール１１３は、図６に示す外部アドレスポリシＤＢ６００を参照し、変更された外部アドレスのポリシがデータの書き込みを許可しているか否かを確認する（１１０２）。
【０１４１】
具体的には、ネットワークモジュール１１３は、外部アドレスポリシＤＢ６００に登録されたエントリのうち、ＣＰＵモジュールアドレス６０１に登録された外部アドレスが変更された外部アドレスと一致するエントリを選択する。そして、ネットワークモジュール１１３は、選択したエントリに含まれるポリシ６０２がデータの書き込みを許可しているか否かを確認する。
【０１４２】
次に、ネットワークモジュール１１３は、ステップ１１０２の処理の確認結果が、変更された外部アドレスのポリシがデータの書き込みを許可しているか否かを判定する（１１０３）。
【０１４３】
ステップ１１０３の処理で、変更された外部アドレスのポリシがデータの書き込みを許可していないと判定された場合には、図６に示す外部アドレスポリシＤＢ６００ですでにデータの書き込みが許可されていないので、ポリシＤＢ変更確認処理を終了する。
【０１４４】
一方、ステップ１１０３の処理で、変更された外部アドレスのポリシがデータの書き込みを許可していると判定された場合には、ネットワークモジュール１１３は、内部バス２１７を介して図４に示すＩＯ割付ＤＢ１１２を取得する（１１０４）。
【０１４５】
そして、ネットワークモジュール１１３は、図４に示すＩＯ割付ＤＢ１１２を参照し、変更した外部アドレスのモジュールアドレスを取得する（１１０５）。ステップ１１０５の処理の詳細は、図１０に示すステップ１００６の処理と同じなので、説明を省略する。
【０１４６】
次に、ネットワークモジュール１１３は、図７に示す各モジュールアドレスポリシＤＢ７００のうち、ステップ１１０５の処理で取得したモジュールの識別子に対応するモジュールアドレスポリシＤＢ７００を取得する。そして、ネットワークモジュール１１３は、取得したモジュールアドレスポリシＤＢ７００を参照し、ステップ１１０５の処理で取得したモジュールアドレスのポリシが書き込みを許可しているか否かを確認する（１１０６）。
【０１４７】
そして、ネットワークモジュール１１３は、ステップ１１０６の処理の確認結果が、ステップ１１０５の処理で取得したモジュールアドレスのポリシが書き込みを許可しているか否かを判定する（１１０７）。
【０１４８】
ステップ１１０６の処理の確認結果が、ステップ１１０５の処理で取得したモジュールアドレスのポリシがデータの書き込みを許可していないと、ステップ１１０７の処理で判定された場合には、ネットワークモジュール１１３は、外部アドレスが誤って設定されているものと判定し、図６に示す外部アドレスポリシＤＢ６００において、変更された外部アドレスのポリシをデータの書き込みを許可しないポリシに設定する（１１０８）。
【０１４９】
具体的には、ネットワークモジュール１１３は、外部アドレスポリシＤＢ６００のエントリのうち、ＣＰＵモジュールアドレス６０１に登録された外部アドレスが変更された外部アドレスと一致するエントリを選択する。そして、ネットワークモジュール１１３は、選択したエントリのポリシをデータの書き込み許可しないポリシに変更する。
【０１５０】
一方、ステップ１１０６の処理の確認結果が、ステップ１１０５の処理で取得したモジュールアドレスのポリシがデータの書き込みを許可していると、ステップ１１０７の処理で判定された場合には、外部アドレスポリシＤＢ６００のポリシとモジュールアドレスポリシＤＢ７００のポリシとが、データの書き込みを許可するポリシであるので、ポリシＤＢ変更確認処理を終了する。
【０１５１】
これにより、変更後の外部アドレスのポリシが正しく設定されていない場合であっても、変更後の外部アドレスのモジュールアドレスのポリシを利用することによって、ポリシが誤って設定されることを防止できる。
【０１５２】
なお、第２実施形態では、信頼度の高い外部アドレスポリシＤＢ６００が生成されるので、ネットワークモジュール１１３が、書き込み命令を受信した場合には、図１０に示すステップ１００３の処理で、書き込み命令によって指定されたＣＰＵモジュールアドレスのメモリ領域へのデータの書き込みが許可されていると判定された場合には、ステップ１００４〜１００８の処理を実行せずに、ステップ１００９の処理を実行し、受信した書き込み命令を書込命令ＤＢ１１８に登録してもよい。
【０１５３】
なお、ステップ１００４〜１００８の処理を実行することによって、さらに、プログラマブルコントローラ１０７の誤設定による異常動作を防止できる。
【０１５４】
本発明は、実施形態に示した事項に限定されず、特許請求の範囲の記載に基づいてその変更、改良などが可能であることは明らかである。例えば上述した実施形態では、ポリシを書込み可と書込み不可のみにしているが、外部システムによって異なるポリシを備えるなど、他の条件を含むポリシであってもよい。
【符号の説明】
【０１５５】
１０１    第１ＰＣ
１０３    第２ＰＣ
１０６    ネットワーク
１０７    プログラマブルコントローラ
１０８    ＣＰＵモジュール
１１３    ネットワークモジュール
１１９    外部ＩＯモジュール
１２１    インバータ
５００    内部アドレスポリシＤＢ
６００    外部アドレスポリシＤＢ
７００    モジュールアドレスポリシＤＢ
【図１】
2010277143.tif 000003
【図２】
2010277143.tif 000004
【図３】
2010277143.tif 000005
【図４】
2010277143.tif 000006
【図５】
2010277143.tif 000007
【図６】
2010277143.tif 000008
【図７】
2010277143.tif 000009
【図８】
2010277143.tif 000010
【図９】
2010277143.tif 000011
【図１０】
2010277143.tif 000012
【図１１】
2010277143.tif 000013