プログラマブルコントローラシステム
【課題】モジュール間での同期化をより高精度に行う。
【解決手段】プログラマブルコントローラシステムを構成する全モジュールが有するタイマの同期化を図る。CPUモジュールは、各種機器データに基づく制御演算処理と生成した制御データをIOモジュールに送信しIOモジュールから各種機器データを受信する処理とをタクト周期毎に行い、IOモジュールは、制御データに基づく駆動処理と収集した各種機器データをCPUモジュールに送信しCPUモジュールから制御データを受信する処理とをタクト周期毎に行う。前記タクト割込み発生開始タイミングとなった時点を起点とするタクト周期毎のタイミングが、全IOモジュールにおいて制御データの受信が完了する受信完了タイミングとなるようにタクト割込み発生開始タイミングを設定し、各モジュールにおいて、タクト周期毎のタイミングで受信データに対する処理を実行させる。
【解決手段】プログラマブルコントローラシステムを構成する全モジュールが有するタイマの同期化を図る。CPUモジュールは、各種機器データに基づく制御演算処理と生成した制御データをIOモジュールに送信しIOモジュールから各種機器データを受信する処理とをタクト周期毎に行い、IOモジュールは、制御データに基づく駆動処理と収集した各種機器データをCPUモジュールに送信しCPUモジュールから制御データを受信する処理とをタクト周期毎に行う。前記タクト割込み発生開始タイミングとなった時点を起点とするタクト周期毎のタイミングが、全IOモジュールにおいて制御データの受信が完了する受信完了タイミングとなるようにタクト割込み発生開始タイミングを設定し、各モジュールにおいて、タクト周期毎のタイミングで受信データに対する処理を実行させる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のモジュール間をデイジーチェーン接続し、且つ両端のモジュールで回線を折り返すことによりリング状のネットワークを形成するようにしたプログラマブルコントローラシステムに関する。
【背景技術】
【0002】
従来、プラント、工場等では、機械や装置のシーケンス制御に多くのプログラマブルコントローラを用い、ファクトリオートメーション化を実現している。
1つのプログラマブルコントローラは、プログラムの実行やデータの演算処理などを行うCPUモジュールや、制御機器とプロセスデータの入出力を行うIOモジュールが複数バスで接続されて構成されている。
このようにプログラマブルコントローラのモジュール間を接続するバスとして、リング状の伝送路を用いたプログラマブルコントローラが提案されており、例えば、リング状の伝送路を、プログラマブルコントローラにおけるモジュール間の入力データ、出力データの交換バスとして用いたものが提案されている(例えば、特許文献1参照)。
【0003】
このリング状の伝送路をプログラマブルコントローラにおけるモジュール間の入力データ、出力データの交換バスとして用いたプログラマブルコントローラにおいては、CPUモジュールがIOモジュールからデータを獲得するときには「トータルフレーム方式」、CPUモジュールがIOモジュールにデータを出力するときには「マルチキャスト方式」というデータ交換プロトコルを用い、例えば図18(a)に示すように、CPUモジュールでは予め設定したタクト周期毎にIOモジュールから必要なデータを実行プロセッサに取り込み所定のデータ処理を行ってデータを送信している。図18(c)に示すようにIOモジュールでは、CPUモジュールからのデータを受信するタイミングでCPUモジュールからのデータを読み込んで所定のデータ処理を実行し、所定のデータをCPUモジュールにトータルフレーム方式により送信するようになっている。
【0004】
なお、図18において、(a)はCPUモジュールにおける処理の流れを表し、(b)はリング状の伝送路を構成するバス上での処理の流れを表し、(c)はIOモジュールにおける処理の流れを表す。また、図18中の“TF”とは、トータルフレーム方式で送信されるデータに対する処理を表す。“MC”とはマルチキャスト方式で送信されるデータに対する処理を表す。“演算時間”とは、各モジュールにおいて、受信データをもとに所定の演算処理を行っている時間を表す。“MSG”とはCPUモジュールと他モジュールとの間で行われるメッセージ転送用の時間帯域を表す。また、図18において横軸は時間を表し、“TF”、“MC”の位置及び長さが、各モジュールにおいて、“TF”または“MC”に対する処理が行われるタイミング及びその処理時間を表し、“演算時間”の位置及び長さが、各モジュールにおいて受信データに対する所定の処理が行われるタイミング及びその処理時間を表す。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平11−338523号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
上記のように、CPUモジュールが、タクト周期毎にIOモジュールからのデータを取り込むように構成した場合、ネットワークシステムにおけるデータ交換時間つまりタクト周期が、CPUモジュールやIOモジュールにおけるデータ処理時間に比較して十分高速である場合には、トータルフレーム方式やマルチキャスト方式等のデータ交換プロトコルを用いることにより、モジュール間でのデータ処理の同期が可能であることが知られている。
【0007】
しかしながら、プログラマブルコントローラの制御対象となるシステムの高速化、複雑化から、プログラマブルコントローラを構成するCPUモジュール、IOモジュールによるデータ処理周期が短くなってきており、このようなシステムにおけるIOモジュール間での同期化を実現するためには、より一段のタクト交換速度すなわちネットワーク伝送速度の高速化が必要となる。
しかしながら、ネットワークにおける伝送速度の高速化は、耐ノイズ性能の劣化や伝送距離の短距離化などの弊害があり、容易ではない。
そこで、この発明は、上記従来の未解決の問題点に着目してなされたものでありモジュール間での同期化をより高精度に行うことの可能なプログラマブルコントローラシステムを提供することを目的としている。
【課題を解決するための手段】
【0008】
上記目的を達成するために、本発明の請求項1にかかるプログラマブルコントローラシステムは、マスタモジュール及びスレーブモジュールが入出力データ交換バスを介してデータ交換を行い、前記マスタモジュールが前記スレーブモジュールを介して当該スレーブモジュールに接続された外部接続機器を制御するプログラマブルコントローラシステムにおいて、前記マスタモジュール及びスレーブモジュールはそれぞれタイマを有し、前記マスタモジュールは、当該マスタモジュールが有するタイマのマスタタイマ値に基づき定周期で起動され、前記スレーブモジュールから前記入出力データ交換バスを介して予め受信した入力データをもとに演算して出力データを生成する出力データ生成手段と、当該出力データ生成手段により生成された前記出力データを、前記入出力データ交換バスを介して前記スレーブモジュールに送信する出力データ送信手段と、前記スレーブモジュールが有するタイマのスレーブタイマ値と前記マスタタイマ値とを同期化させる同期化手段と、を有し、前記スレーブモジュールは、前記入出力データ交換バスから前記出力データを受信する受信手段と、前記受信手段によって受信された前記出力データ、または前記出力データに基づき所定演算を行い当該演算により得た外部接続機器制御用のデータを前記外部接続機器に出力する出力手段と、を有し、当該出力手段は、前記同期化手段によって同期化された前記スレーブタイマ値に基づき前記マスタモジュールの前記出力データ生成手段が起動されるタイミングと同一タイミングの定周期で起動されることを特徴としている。
【0009】
また、本発明の請求項2にかかるプログラマブルコントローラシステムは、マスタモジュール及びスレーブモジュールが入出力データ交換バスを介してデータ交換を行い、前記マスタモジュールが前記スレーブモジュールを介して当該スレーブモジュールに接続された外部接続機器を制御するプログラマブルコントローラシステムにおいて、前記マスタモジュール及びスレーブモジュールはそれぞれタイマを有し、前記マスタモジュールは、当該マスタモジュールが有するタイマのマスタタイマ値に基づき定周期割込みを発生するマスタタクト割込み発生手段と、このマスタタクト割込み発生手段により起動され、前記スレーブモジュールから前記入出力データ交換バスを介して予め受信した入力データをもとに演算して出力データを生成する出力データ生成手段と、当該出力データ生成手段により生成された前記出力データを、前記入出力データ交換バスを介して前記スレーブモジュールに送信する出力データ送信手段と、前記スレーブモジュールが有するタイマのスレーブタイマ値と前記マスタタイマ値とを同期化させる同期化手段と、を有し、前記スレーブモジュールは、前記入出力データ交換バスから前記出力データを受信する受信手段と、前記同期化手段によって同期化された前記スレーブタイマ値に基づき、前記定周期割込みの発生タイミングと同一のタイミングを獲得し、このタイミングを基準に所定時間経過後にスレーブ割込みを発生するスレーブタクト割込み発生手段と、当該スレーブタクト割込み発生手段によって起動され、前記受信手段によって受信された前記出力データ、または前記出力データに基づき所定演算を行い当該演算により得た外部接続機器制御用のデータを前記外部接続機器に出力する出力手段と、を備えることを特徴としている。
【0010】
さらに、請求項3にかかるプログラマブルコントローラシステムは、前記入出力データ交換バスは、第1の伝送路及び第2の伝送路それぞれが前記マスタモジュール及び前記スレーブモジュールからなる複数のモジュールをデイジーチェーン接続し、該デイジーチェーン接続された両端の前記モジュールそれぞれで前記第1の伝送路と前記第2の伝送路とを接続してリング状の伝送路を構成し、前記同期化手段は、前記スレーブモジュールが一のメッセージを前記第1の伝送路及び前記第2の伝送路から受信したときの前記スレーブタイマ値を収集し、この収集したスレーブタイマ値と前記各モジュールの配置位置とに基づき前記マスタモジュールと前記スレーブモジュールそれぞれとの間の伝送遅延時間を演算し、当該伝送遅延時間と前記マスタモジュールの前記マスタタイマ値とを前記スレーブモジュールに送信し、前記スレーブモジュールは、前記マスタモジュールから前記伝送遅延時間及び前記マスタタイマ値を受信したとき、前記伝送遅延時間と前記マスタタイマ値との和を自モジュールのタイマのスレーブタイマ値として更新設定することにより、自モジュールのスレーブタイマ値を前記マスタタイマ値と同期化することを特徴としている。
【発明の効果】
【0011】
本発明の請求項1にかかるプログラマブルコントローラシステムによれば、全モジュールで同期化させたタイマ値に基づき所定の定周期のタイミングでマスタモジュールでは出力データ生成手段を起動し、同一タイミングでスレーブモジュールでは出力手段を起動するため、マスタモジュールの出力データ生成手段での出力データの生成と、スレーブモジュールでのマスタモジュールからの出力データまたはこの出力データをもとに演算した外部接続機器制御データの外部接続機器への出力とを、同一タイミングで実行させることができ、各モジュールを高精度に同期させることができる。このため、外部接続機器どうしをより高精度に同期動作及び協調動作させることができる。
【0012】
また、本発明の請求項2にかかるプログラマブルコントローラシステムによれば、全モジュールで同期化させたタイマ値に基づきマスタモジュールでは定周期割込みの発生タイミングで出力データ生成手段を起動し、スレーブモジュールでは、マスタモジュールの定周期割込みの発生タイミングと同一のタイミングを基準に所定時間経過後に発生されるスレーブ割込みのタイミングで出力手段を起動するため、マスタモジュールの出力データ生成手段での出力データの生成と、各スレーブモジュールでのマスタモジュールからの出力データまたはこの出力データをもとに演算した外部接続機器制御データの外部接続機器への出力とを、所定時間のずれをもって同一の定周期で実行させることができる。
【0013】
さらに、請求項3にかかるプログラマブルコントローラシステムは、マスタモジュールとスレーブモジュールそれぞれとの間の伝送遅延時間を演算し、この伝送遅延時間とマスタモジュールのマスタタイマ値とをスレーブモジュールに送信し、スレーブモジュールは、マスタモジュールからの伝送遅延時間とマスタタイマ値との和を自モジュールのタイマのスレーブタイマ値として更新設定するようにしたため、マスタタイマ値とスレーブタイマ値とを高精度に一致させることができ、すなわち高精度に同期化させることができる。
【図面の簡単な説明】
【0014】
【図1】本発明を適用したプログラマブルコントローラシステムの一例を示す構成図である。
【図2】モジュールの接続状態を表す説明図である。
【図3】モジュールの概略構成を示すブロック図である。
【図4】モジュールの動作説明に供する説明図である。
【図5】マスタモジュールで実行されるシステム同期処理の処理手順の一例を示すフローチャートである。
【図6】スレーブモジュールで実行される同期化処理の処理手順の一例を示すフローチャートである。
【図7】同期化時の動作説明に供する説明図である。
【図8】タイマ値収集メッセージで収集されたタイマ情報の一例である。
【図9】伝送遅延時間の演算方法を説明するための説明図である。
【図10】同期化時の動作説明に供する説明図である。
【図11】同期化時の動作説明に供する説明図である。
【図12】システム制御処理時の動作説明に供する説明図である。
【図13】マスタモジュールで実行されるシステム制御処理の処理手順の一例を示すフローチャートである。
【図14】スレーブモジュールで実行されるシステム制御処理の処理手順の一例を示すフローチャートである。
【図15】第2の実施の形態におけるマスタモジュールで実行されるシステム制御処理の処理手順の一例を示すフローチャートである。
【図16】第2の実施の形態におけるシステム制御処理時の動作説明に供する説明図である。
【図17】第2の実施の形態におけるスレーブモジュールで実行されるシステム制御処理の処理手順の一例を示すフローチャートである。
【図18】従来のシステム制御処理時の動作説明に供する説明図である。
【発明を実施するための形態】
【0015】
以下、本発明の実施の形態を説明する。
まず、第1の実施の形態を説明する。
図1は、本発明を適用したプログラマブルコントローラシステムの一例を示す構成図であって、例えばX−Y軸平面上で位置決めを行う加工機など、モーションシステムの駆動制御を行うプログラマブルコントローラシステムである。
このプログラマブルコントローラシステムは、例えば、モジュール“A”〜モジュール“E”の5つのモジュールを備えて構成される。モジュール“A”はCPUモジュール、モジュール“B”〜モジュール“E”はIOモジュールであって、CPUモジュール“A”がリング上に唯一存在するマスタモジュールとして動作する。IOモジュールは、CPUモジュールからの制御データに応じて、その各IOモジュールに接続された外部接続機器xを駆動制御する。前記外部接続機器xは、例えば前記加工機の各部を駆動するためのモータを制御するためのインバータや、サーボ機構などである。
【0016】
このプログラマブルコントローラシステムでは、マスタモジュールであるCPUモジュール“A”がモジュール間でのタイマの同期化を図る。また、各モジュールはモジュール間でデータの授受を行い、CPUモジュールはIOモジュールから所定の各種機器データを受信するデータ受信処理、受信した各種機器データに基づき所定の演算処理を行って各IOモジュールへの前記制御データ等を生成する制御演算処理、生成した制御データをIOモジュールに送信するデータ送信処理等を行う。IOモジュールは、CPUモジュールからの制御データを受信するデータ受信処理、受信した制御データに演算加工し前記外部接続機器xの駆動制御用の外部接続機器制御データを生成し、これを外部接続機器xに出力する等の外部接続機器xの駆動制御を行うと共に外部接続機器xの各部の位置情報等の各種機器データを収集する等の駆動処理、収集した各種機器データをCPUモジュールに送信するデータ送信処理等を行う。
このとき、各モジュールでは、受信データに対する処理を、定周期のタクト割込み発生タイミングで実行する。このタクト割込み発生タイミングは、各モジュールのタイマ値に基づき決定される。
【0017】
まず、プログラマブルコントローラシステムの詳細な構成を説明する。
図1において、各モジュールは、モジュール“E”、モジュール“A”、モジュール“B”、モジュール“C”、モジュール“D”の順にデイジーチェーン接続され、隣接するモジュール間は、それぞれ1対1にピアツーピアで接続される。すなわち、モジュール“E”及びモジュール“A”間は、ケーブルL1で接続され、モジュール“A”及びモジュール“B”間はケーブルL2で接続され、モジュール“B”及びモジュール“C”間はケーブルL3で接続され、モジュール“C”及びモジュール“D”間はケーブルL4で接続される。
【0018】
各モジュールは、第1の接続端子11と第2の接続端子12との2つのケーブル接続口を備え、一方のモジュールの第1の接続端子11と他方のモジュールの第2の接続端子12とを対応させて接続される。すなわち、モジュール“E”の第2の接続端子12とケーブルL1の一端とを接続し、モジュール“A”の第1の接続端子11とケーブルL1の他端とを接続することによりモジュール“E”とモジュール“A”とをピアツーピア接続する。同様にモジュール“A”の第2の接続端子12及びモジュール“B”の第1の接続端子11間、モジュール“B”の第2の接続端子12及びモジュール“C”の第1の接続端子11間、モジュール“C”の第2の接続端子12及びモジュール“D”の第1の接続端子11間を接続することにより、隣接するモジュール間がピアツーピアで接続されたプログラマブルコントローラシステムが形成される。
【0019】
各ケーブルLn(n=1〜4)は、図2に示すように、第1の配線L11と当該第1の配線L11と同一長さの第2の配線L22とを有する。
各モジュールは、図2に示すように、ケーブルLn及びケーブルLn+1の第1の配線L11どうし及び第2の配線L22どうしを、モジュールを介して接続する。また、端部のモジュールであって、一方の接続端子11又は12のみにケーブルLnが接続されているモジュール“D”又は“E”は、接続されたケーブルLnの第1の配線L11と第2の配線L22とを内部で接続する。すなわち、モジュール“D”は、ケーブルL4の第1の配線L11と第2の配線L22とを接続する。また、モジュール“E”は、ケーブルL1の第1の配線L11と第2の配線L22とを接続する。
これによって、各モジュール“A”〜“C”を介して接続された一連の第1の配線L11と、一連の第2の配線L22とが、端部のモジュール“D”及び“E”で接続されて、各ケーブルLnの第1の配線L11と第2の配線L22とからなるリング状の伝送路を形成している。このリング状の伝送路が入出力データ交換バスとして用いられる。
【0020】
なお、図2において、13は処理部である。この処理部13は、ケーブルLnを介して伝送されるメッセージの送受信処理及び受信した自モジュール宛のメッセージにしたがって所定の演算や外部接続機器xへのデータの出力など所定の処理を行なう。また、予め設定されたタイミングでマスタモジュール及びスレーブモジュールを含むモジュール間でのタイマ値の同期化処理を行うと共に、同期化されたタイマ値を用いて前記タクト割込み発生タイミングを決定し、決定したタクト割込み発生タイミングでモジュール間でのデータ授受及び受信データに対する所定のデータ処理を行う。処理部13は、図3に示すように伝送処理部13aとバッファ13bとを備えている。リング状の伝送路を介してのデータの伝送制御は伝送処理部13aで行っており、伝送処理部13aは、バッファ13bに格納された送信データをリング状の伝送路を介して送信すると共に、リング状の伝送路から受信した受信データをバッファ13bに取り込むようになっている。
【0021】
各モジュールは、図3に示すように、ケーブルLnが接続される第1の接続端子11及び第2の接続端子12と、処理部13と、ラッチ回路15及び16と、タイマ17と、切り替え回路18と、を備える。
ラッチ回路15は、第1の接続端子11に接続される第1の配線L11から伝送メッセージを入力すると共に、伝送メッセージを切り替え回路18に出力する。
そして、ラッチ回路15は、伝送メッセージの予め設定された特定領域を参照し、この特定領域のデータが予め設定した特定情報であるとき、タイマ17のタイマ値をラッチすると共に、第1のタイマ値有効フラグF1を“1”とし、第1のタイマ値有効フラグF1とラッチタイマ値とを処理部13に出力する。伝送メッセージの特定領域のデータが前記特定情報でないときにはタイマ値のラッチは行なわない。
【0022】
一方、ラッチ回路16は、第2の接続端子12に接続される第2の配線L22からの伝送メッセージを入力すると共に、伝送メッセージを切り替え回路18に出力する。
そして、ラッチ回路16は、伝送メッセージの予め設定された前記特定領域を参照し、この特定領域のデータが前記特定情報であるとき、タイマ17のタイマ値をラッチし、第2のタイマ値有効フラグF2を“1”とし、第2のタイマ値有効フラグF2とラッチタイマ値とを処理部13に出力する。伝送メッセージの前記特定領域のデータが特定情報でないときにはタイマ値のラッチは行なわない。
【0023】
これらラッチ回路15及び16は、上述のように特定のメッセージを受信したかを監視し、受信したときにタイマ17のタイマ値を獲得し、タイマ値及びタイマ値有効フラグを“1”として通知するだけの回路である。したがって、これらラッチ回路15及び16を追加したとしても、メッセージの伝送に影響を与えるものではない。また、処理部13と無関係にタイマ値のラッチのみを行なうため回路全体に対する影響も小さい。
タイマ17は、水晶振動子を含んで構成され、タイマ値をラッチ回路15及び16に出力する。
【0024】
切り替え回路18は、自モジュールが、端部のモジュールであるか否かに応じて、処理部13、ラッチ回路15及び16、第1の接続端子11、第2の接続端子12との間で接続先を切り替える。なお、自モジュールが端部のモジュールであるか否かは、例えば、各モジュールにおいて、第1の接続端子11と第2の接続端子12との何れか一方のみにケーブルが接続されている状態であるか否かを、例えば電気的に未接続状態であるか否かを検出すること等により検出すればよい。また、切り替え回路18における切り替えは、ソフトウェア的に切り替えるようにしてもよく、また物理的に接続先を切り替えるように構成してもよい。
【0025】
そして、切り替え回路18は、自モジュールが端部に位置していないとき、すなわちモジュール間に接続された中間モジュールである場合には、図4(a)に示すように、ラッチ回路15からの伝送メッセージをそのまま処理部13に伝達し、処理部13からの伝送メッセージを第2の接続端子12の第1の配線L11に送出する。
また、切り替え回路18は、ラッチ回路16からの伝送メッセージをそのまま第1の接続端子11の第2の配線L22に送出する。
【0026】
一方、自モジュールが右端のモジュールである場合、すなわち、図1において、モジュール“D”である場合には、第2の接続端子12には、ケーブルLnが接続されないため、切り替え回路18は、図4(b)に示すように、ラッチ回路15からの伝送メッセージを処理部13に伝達し、処理部13からの伝送メッセージを第1の接続端子11の第2の配線L22に送出する。
【0027】
同様に、自モジュールが左端のモジュールである場合、すなわち、図1において、モジュール“E”である場合には、第1の接続端子11には、ケーブルLnが接続されていないため、切り替え回路18は、図4(c)に示すように、ラッチ回路16からの伝送メッセージをそのまま処理部13に伝達し、処理部13からの伝送メッセージを第2の接続端子12の第1の配線L11に送出する。
【0028】
そして、処理部13は、切り替え回路18を介して受信した伝送メッセージに基づき前記送受信処理及びメッセージ処理等を行ない、必要に応じて伝送メッセージを生成しこれを切り替え回路18に出力する。また、このとき、受信した伝送メッセージを一旦バッファ13bに格納し、設定された定周期タイミングでバッファ13bに記憶されたデータを読み出し、これに基づき所定のデータ処理を実行する。
【0029】
また、処理部13は、ラッチ回路15及び16からの第1のタイマ値有効フラグF1及びラッチタイマ値、第2のタイマ値有効フラグF2及びラッチタイマ値を入力する。
そして、自モジュールがマスタモジュールであるときには、システム同期処理を実行して各モジュールからラッチタイマ値を収集し、これに基づきモジュール間でのタイマ値の同期を図る。
【0030】
一方、自モジュールがマスタモジュールでないとき、つまりスレーブモジュールであるときには、マスタモジュールからタイマラッチ指示メッセージを受信したときに同期化処理を実行し、マスタモジュールからの指示にしたがって、マスタモジュールとの間のタイマ値の同期化を図る。
そして、このようにしてモジュール間で同期化されたタイマ値を用いて、バッファ13bに格納された他モジュールからの受信データを読み込み、これに基づき所定の処理を実行する。
【0031】
次に、プログラマブルコントローラシステムで実行されるモジュール間でのタイマ値の同期化について、図5及び図6を伴って説明する。図5は、マスタモジュールで実行されるシステム同期処理、図6は、スレーブモジュールで実行される同期化処理の処理手順を示すフローチャートである。
マスタモジュールでは、このシステム同期処理を起動時及び予め設定された定周期で実行する。
【0032】
マスタモジュールでは、図5に示すように、まず、ステップS1で、各モジュールに対してタイマ17のラッチを指示するタイマラッチ指示メッセージを送信する。このとき、マスタモジュールは、タイマラッチ指示メッセージを、各モジュール宛にブロードキャスト通信により送信する。また、マスタモジュールでは、タイマラッチ指示メッセージの予め設定した領域に、このメッセージがタイマラッチ指示メッセージであることを特定するための特定情報を設定して送信する。
【0033】
スレーブモジュールでは、タイマラッチ指示メッセージを受信すると、ラッチ回路15又は16で、タイマラッチ指示メッセージの予め設定された特定領域のデータが所定の特定情報であるか否かを判断する。このとき、ラッチ回路15及び16には、参照すべき特定領域及び特定情報として、マスタモジュールから送信される前記タイマラッチ指示メッセージの、当該メッセージがタイマラッチ指示メッセージであることを特定する特定情報が格納されている領域と、前記タイマラッチ指示メッセージであることを特定する特定情報とを設定しておく。
【0034】
ラッチ回路15又は16は、受信したメッセージの特定領域を参照し、そのデータがタイマラッチ指示メッセージであることを特定する特定情報と一致するとき、受信したメッセージはタイマラッチ指示メッセージであると認識し、この時点におけるタイマ17のタイマ値をラッチする。そして、ラッチ回路15でタイマ値をラッチしたときには第1のタイマ値有効フラグF1を“1”、ラッチ回路16でタイマ値をラッチしたときには第2のタイマ値有効フラグF2を“1”、として、タイマ値有効フラグとラッチタイマ値とを対応付けて処理部13に出力する。
【0035】
このとき、図2に示すように、第1の配線L11を介して伝送されるタイマラッチ指示メッセージは、端部のモジュールで折り返されて第2の配線L22を介して伝送されるため、モジュール間に配置されたスレーブモジュールでは、第1の配線L11からタイマラッチ指示メッセージを受信した後、再度第2の配線L22から同一のタイマラッチ指示メッセージを受信することになる。
このため、モジュール間に配置されたスレーブモジュールでは、ラッチ回路15及び16のそれぞれによりタイマ値がラッチされることになる。
【0036】
一方、端部に配置されたスレーブモジュールでは、内部で折り返しているため、タイマラッチ指示メッセージは、ラッチ回路15及び16の何れか一方のみにより検出され、タイマ値がラッチされることになる。
スレーブモジュールの処理部13では、タイマラッチ指示メッセージを受信し、これに伴いラッチ回路15、16から、ラッチタイマ値及びタイマ値有効フラグを入力すると、これら情報を所定の記憶領域に保持する(図6ステップS11)。
マスタモジュールでは、各モジュールを周回したタイマラッチ指示メッセージを受信するとこれを伝送路から削除し、次に、タイマ値収集メッセージを送信し、各モジュールに対して、各モジュールでラッチしたタイマ情報の付加を指示する(図5ステップS2)。
【0037】
スレーブモジュールでは、タイマ値収集メッセージを受信すると、図6のステップS12に移行し、受信したタイマ値収集メッセージに、ラッチ回路15及び16の両方又は何れかから通知されたタイマ値有効フラグ及びラッチタイマ値をタイマ情報とし、これをタイマ値収集メッセージの予め設定された領域に、その領域の先頭から順に格納する。
前述のように、モジュール間に位置するモジュールでは、往路と復路との2回、同一のタイマラッチ指示メッセージを受信するため、タイマ情報は、往き時におけるタイマ値有効フラグ及びラッチタイマ値と、戻り時におけるタイマ値有効フラグ及びラッチタイマ値とで構成される。
【0038】
一方、右端又は左端に位置するモジュールでは、往路又は復路の何れか一回のみタイマラッチ指示メッセージを受信する。このため、右端又は左端のモジュールでは、ラッチ回路15又は16の何れか一方でのみタイマ値をラッチする。処理部13では、ラッチ回路15からラッチタイマ値を受信しなかったときには第1のタイマ値有効フラグF1を“0”とし、ラッチ回路16からラッチタイマ値を受信しなかったときには第2のタイマ値有効フラグF2を“0”とする。そして、“0”に設定されたタイマ値有効フラグと、ラッチ回路15又は16から通知されたラッチタイマ値及びこれに対応する“1”に設定されたタイマ値有効フラグと、をタイマ情報として格納する。
【0039】
そして、自モジュールにおけるタイマ情報を格納した後、これを次モジュールに送出する。
各スレーブモジュールがこの処理を行なうことにより、各モジュールにおけるタイマ情報が、タイマ値収集メッセージの所定の領域に格納され、且つ経由したスレーブモジュールの並び順に、各モジュールにおけるタイマ情報が格納されることになる。
マスタモジュールは、各スレーブモジュールを周回したタイマ値収集用メッセージを受信するとこれを回収する。そして、各スレーブモジュールが格納したタイマ情報の最後に、自モジュールにおけるタイマ情報を格納する(図5ステップS3)。
【0040】
マスタモジュールは、続いて、各スレーブモジュール及び自モジュールにおけるタイマ情報に基づき、マスタモジュールから送信したタイマラッチ指示メッセージが各スレーブモジュールに到達するまでの所要時間である伝送遅延時間を、到達先のモジュール毎にそれぞれ算出する(図5ステップS4)。この算出方法は後述する。
マスタモジュールは、モジュールごとに伝送遅延時間を算出すると算出した伝送遅延時間を各モジュールに通知するための伝送遅延時間設定メッセージを各モジュール宛に送出する(図5ステップS5)。
【0041】
スレーブモジュールは、伝送遅延時間設定メッセージを受信すると、自モジュールの伝送遅延時間を獲得する(図6ステップS13)。
マスタモジュールは、各モジュールを周回して戻ってきた伝送遅延時間設定メッセージを伝送路上から削除する。そして、現時点におけるタイマ17のタイマ値を獲得し、これをマスタタイマ値とし、このマスタタイマ値を伝送するためのマスタタイマ値配布メッセージを生成し、これを各モジュール宛にブロードキャストにより送信する(図5ステップS6)。そして、システム同期処理を終了する。
【0042】
スレーブモジュールは、マスタタイマ値配布メッセージをブロードキャストにより受信すると、受信したマスタタイマ値配布メッセージからマスタタイマ値を獲得し、獲得したマスタタイマ値と、先に伝送遅延時間設定メッセージから獲得した自モジュールの伝送遅延時間とを加算し、これを現時点におけるタイマ値とし、自モジュールのタイマ17のタイマ値を更新設定する(図6ステップS14)。そして、処理部13では、同期化処理を終了する。
【0043】
次に、上記タイマ値の同期化時の動作を説明する。
図1に示すモジュール“A”〜“E”からなる論理的なリング状のネットワークが構成されたネットワークシステムにおいて、各モジュールのタイマ値の同期を行なうものとする。
マスタモジュール“A”では、まず、タイマラッチ指示メッセージを各モジュール宛にブロードキャストで送信し(図5ステップS1)、次に、各モジュールでのタイマ情報の付加を指示するタイマ値収集メッセージを各モジュール宛に送信する(図5ステップS2)。
【0044】
このネットワークシステムは、論理的なリング状のネットワークを構成しているため、各スレーブモジュールでは、タイマラッチ指示メッセージを、第1の配線側L11と第2の配線側L22との両方から入力し、且つ端部のモジュールでは、タイマラッチ指示メッセージをそのモジュール内で折り返しているため、第1の配線L11側又は第2の配線L22側との何れか一方から入力することになる。
【0045】
したがって、マスタモジュール“A”がタイマラッチ指示メッセージを送出してからの経過時間は、図7のように表されることになる。なお、図7において縦軸は経過時間、横軸はネットワークシステム上におけるタイマラッチ指示メッセージの伝達状況を表す。
また、各スレーブモジュールではタイマラッチ指示メッセージを受信すると、図8に示すように、ラッチ回路15、16のうち、タイマ値をラッチしたラッチ回路に対応するタイマ値有効フラグを“1”とし、ラッチ回路15、16でタイマラッチ指示メッセージを受信した時点におけるタイマ17のタイマ値と、第1、第2のタイマ値有効フラグとを処理部13に通知し、処理部13では、通知されたタイマ値有効フラグとラッチタイマ値とを対応付けて記憶する(図6ステップS11)。
【0046】
続いて、スレーブモジュールでは、ラッチ回路15又は16から獲得したラッチタイマ値及びタイマ値有効フラグからなるタイマ情報を、タイマ値収集メッセージの所定の領域に順次格納する(図6ステップS12)。
このため、マスタモジュール“A”に戻ってきたタイマ値収集メッセージには、各モジュールのタイマ情報が各モジュールの配置順に格納されている。
例えば、各モジュールがラッチ回路15でラッチしたラッチタイマ値をTA1〜TE1とし、ラッチ回路16でタイマ値をラッチしたタイミングをTA2〜TE2とすると、図11に示すように、タイマラッチ指示メッセージには、モジュールの並び順に各モジュールを特定する局番とタイマ情報とが対応付けられて格納され、タイマ情報としてタイマ値有効フラグとラッチタイマ値とが格納される。
【0047】
モジュール“B”は、モジュールとモジュールとの間に配置されたモジュールであって、ラッチ回路15及び16の両方によりタイマラッチ指示メッセージが検出されるため、ラッチ回路15でラッチしたラッチタイマ値TB1及び第1のタイマ値有効フラグF1=“1”と、ラッチ回路16でラッチしたラッチタイマ値TB2及び第2のタイマ値有効フラグ値F2=“1”とが格納され、同様に、モジュール“C”、また、モジュール“A”においても、それぞれラッチ回路15及び16によるラッチタイマ値と、第1のタイマ値有効フラグF1=“1”及び第2のタイマ値有効フラグF2=“1”と、が格納される。
【0048】
一方、モジュール“D”は右端のモジュールであり、ラッチ回路15でのみタイマ値がラッチされるため、ラッチタイマ値TD1と第1のタイマ値有効フラグF1=“1”とが格納され、ラッチ回路16による第2のタイマ値有効フラグF2は“0”として格納される。
同様に、モジュール“E”は左端のモジュールであり、ラッチ回路16でのみタイマ値がラッチされるため、ラッチタイマ値TE2と第2のタイマ値有効フラグF2=“1”とが格納され、ラッチ回路15による第1のタイマ値有効フラグF1は“0”として設定される。
【0049】
したがって、各モジュールを周回したタイマ値収集メッセージを参照することにより、タイマ値有効フラグの一方が“0”であるモジュールは端部のモジュールであると判断することができる。そして、第1のタイマ値有効フラグF1が“0”の場合には、第1の接続端子11にケーブルLnが接続されていないことを意味するため、左端のモジュールであると判断することができる。同様に、第2のタイマ値有効フラグF2が“0”の場合には、第2の接続端子12にケーブルLnが接続されていないことを意味するため、右端のモジュールであると判断することができる。
【0050】
このため、マスタモジュール“A”では、図8のタイマ値収集メッセージに格納された各モジュールのタイマ情報の格納順及びタイマ値有効フラグが“0”であるか否かに基づき、マスタモジュール“A”から、モジュール“B”、“C”、“D”、“E”、“A”の並びでリング状のネットワークが形成され、且つモジュール“D”が右端のモジュール、モジュール“E”が左端のモジュールであることを認識することができ、すなわち、図1に示す並び順で各モジュールが接続されていることを認識することができる。
【0051】
そして、マスタモジュール“A”では、図8に示す、各モジュールにおけるタイマ情報を獲得すると、これに基づき各モジュールの配置順を検出し、これに基づき伝送遅延時間を演算する(図5ステップS4)。
ここで、この時点では、各モジュール間においてタイマ値の同期はとられていないため、それぞれのモジュールにおけるタイマ値の間に何ら相関関係はない。
しかしながら、同一モジュール内のタイマ値、例えば、TB1とTB2とは、同一のタイマ17の値をラッチしているため、このタイマ値TB1とTB2との差分は、モジュール“B”において、ラッチタイマ指示メッセージを上流側から受信した時点から同一のメッセージが下流側から戻ってくるまでの所要時間(以下、受信経過時間いう。)を表している。
【0052】
ネットワークシステム上の、各モジュールにおける受信経過時間どうしは比較可能なデータであり、例えばモジュール“B”における受信経過時間ΔTBと、モジュール“C”における受信経過時間ΔTCとは比較することができる。
モジュール“B”における受信経過時間ΔTBとモジュール“C”における受信経過時間ΔTCとの差分DIFFBC(=ΔTB−ΔTC)は、図7及び図9に示すように、「モジュール“B”が上流からメッセージを受信してから、このメッセージがモジュール“C”に到達するまで(図9中の太線m1部分)の所要時間」と「モジュール“C”が下流からメッセージを受信してからこのメッセージがモジュール“B”に到達するまで(図9中の太線m2部分)の所要時間」との和に相当することになる。
したがって、差分DIFFBCは次式(1)で表すことができる。
DIFFBC=(TB2−TB1)−(TC2−TC1) ……(1)
【0053】
また、差分DIFFBCは、図7に示すように、モジュール“B”−“C”間のケーブルL3におけるモジュール間伝送時間と、モジュール“B”にメッセージが到達してからメッセージが送出されるまでの所要時間、すなわち、メッセージの中継及びメッセージを受信するか否かの判定に要する時間(以下、メッセージ判定処理時間という。)と、モジュール“C”に下流側からメッセージが到達してからモジュール“C”がこれを中継してメッセージが送出されるまでの所要時間(以下、中継処理時間という。)との和で表すことができる。
【0054】
ここで、モジュール“B”のメッセージ判定処理時間をTαとし、モジュール“B”−“C”間におけるケーブルL3におけるモジュール間伝送時間をLBCとし、モジュール“C”での中継処理時間は差分DIFFBCに比較して十分小さいものとすると、差分DIFFBCは略次式(2)で表すことができる。つまり、ケーブルL3は、第1の配線L11と第2の配線L22とが同一長さであるため、第1の配線L11と第2の配線L22とでモジュール間伝送時間は同一とみなすことができる。したがって、次式(2)が成り立つ。
DIFFBC=2×LBC+Tα ……(2)
【0055】
したがって(1)及び(2)式から、隣接するモジュール“B”−“C”間のケーブルL3におけるモジュール間伝送時間LBCは、次式(3)で表すことができる。
LBC={(TB2−TB1)−(TC2−TC1)−Tα}/2 ……(3)
隣接するモジュール“C”−“D”間のケーブルL4におけるモジュール間伝送時間LCDも、前記式(3)と同様の手順で算出することができる。
また、以上の例では、マスタモジュール“A”よりも右側に配置されたモジュールにおいて、隣接するモジュール間のモジュール間伝送時間を算出しているが、左側に配置されたモジュールの場合も同様の手順で算出することができる。
【0056】
ただし、マスタモジュール“A”とこれに隣接するモジュールとの間のモジュール間伝送時間は、マスタモジュール“A”がラッチタイマ指示メッセージを上流側から受信した時点から同一のメッセージが下流側から戻ってくるまでの所要時間である左側受信経過時間と、マスタモジュール“A”がラッチタイマ指示メッセージを下流側に送出した時点から同一のメッセージが下流側から戻ってくるまでの所要時間である右側受信経過時間と、を用いて算出する。
【0057】
前記左側受信経過時間は、マスタモジュール“A”におけるタイマ値TA1及びTA2の差分「TA2−TA1」で算出することができる。また、右側受信経過間は、マスタモジュール“A”がラッチタイマ指示メッセージを下流側に送出した時点から、論理的なリング状の伝送路を一周してマスタモジュール“A”に戻りこれに対するマスタモジュール“A”での処理が終了するまでの所要時間(以後、メッセージ一周時間という)をTとしたとき、「T−(TA2−TA1)」で表すことができる。
【0058】
なお、メッセージ一周時間は、マスタモジュール“A”の処理部13において計測すればよく、処理部13からラッチタイマ指示メッセージを下流側に送出した時点を開始時点、ラッチタイマ指示メッセージが論理的なリング状の伝送路を一周してマスタモジュールに戻り、これに対するマスタモジュール“A”での処理が終了した時点を終了時点として開始時点から終了時点までの所要時間を演算すればよい。
【0059】
そして、マスタモジュール“A”と隣接するスレーブモジュール“B”との間のモジュール間伝送時間を演算するときには、右側受信経過時間「T−(TA2−TA1)」と、モジュール“B”における受信経過時間とに基づき上記(3)式と同様の手順で算出する。また、マスタモジュール“A”とモジュール“E”との間のモジュール間伝送時間を演算するときには、左側受信経過時間「TA2−TA1」とモジュール“E”における受信経過時間とに基づき上記(3)式と同様の手順で算出する。
【0060】
このようにして、モジュール“A”−“B”間、モジュール“B”−“C”間、モジュール“C”−“D”間、モジュール“E”−“A”間についてそれぞれモジュール間伝送時間を算出したならば、これらに基づき、マスタモジュール“A”と各モジュールとの間の伝送遅延時間を算出する。
具体的には、マスタモジュール“A”とターゲットモジュールとの間に介在する各ケーブルのモジュール間伝送時間及び介在するモジュールにおける処理時間との和を算出しこれをターゲットモジュールまでの伝送遅延時間とする。
【0061】
例えば、ターゲットモジュールを“C”とする。ネットワークシステムにおける各モジュールの配置位置は、タイマ値収集メッセージに付加された各モジュールにおけるラッチ情報の並び順から把握することができる。
図1に示すように、マスタモジュール“A”とターゲットモジュール“C”との間にはモジュール“B”が介在する。このため、伝送遅延時間は、モジュール“A”−“B”間のケーブルL2におけるモジュール間伝送時間と、モジュール“B”におけるメッセージ判定処理時間と、モジュール“B”−“C”間のケーブルL3におけるモジュール間伝送時間と、の和で表されることがわかる。
【0062】
ここで、各モジュールにおける処理部13の演算処理性能が同一であるものとすると、各モジュールにおけるメッセージ判定処理時間は同等とみなすことができるため、“Tα”として表すことができる。
したがって、マスタモジュール“A”からターゲットモジュールまでの間の伝送遅延時間は、マスタモジュール“A”からターゲットモジュールまでの間に介在する各ケーブルにおけるモジュール間伝送時間と、マスタモジュール“A”からターゲットモジュールまでの間に介在するモジュールの数×メッセージ判定処理時間“Tα”との和から算出することができる。
【0063】
つまり、マスタモジュール“A”とモジュール“C”との間の伝送遅延時間は、モジュール“A”−C”間のケーブルL2におけるモジュール間伝送時間と、モジュール“B”−“C”間のケーブルL3におけるモジュール間伝送時間と、モジュールの数(この場合“1”)×Tαとの和で表すことができる。
なお、モジュールにおけるメッセージ判定処理時間Tαは、予め実測しておくこと、或いは、設計時に、メッセージの中継及び受信するか否かの判定に要する所要時間を論理的に算出しておくこと等により予め設定しておけばよい。
【0064】
マスタモジュール“A”では、このようにしてマスタモジュール“A”から各ターゲットモジュールまでの伝送遅延時間を算出する。そして、各ターゲットモジュールと算出した伝送遅延時間とを対応付け、この伝送遅延時間を各モジュールに伝達するための伝送遅延時間設定メッセージを生成し、これを各モジュール宛に送信する(図5ステップS5)。
各スレーブモジュールでは、伝送遅延時間設定メッセージを受信すると、自モジュールの伝送遅延時間を獲得し、これを所定の記憶領域に保存する(図6ステップS13)。
【0065】
マスタモジュールでは、各モジュールを周回した伝送遅延時間設定メッセージを受信すると、これを伝送路上から削除する。そして、現時点におけるタイマ17のタイマ値を獲得し、これを各モジュールに伝達するためのマスタタイマ値配布メッセージを生成し、このマスタタイマ値配布メッセージをブロードキャストで各モジュール宛に送信する(図5ステップS6)。
【0066】
各スレーブモジュールでは、マスタタイマ値配布メッセージを獲得すると、マスタタイマ値を獲得し、先に受信した自モジュールにおける伝送遅延時間とマスタタイマ値とを加算し、これを現時点におけるタイマ17のタイマ値として更新設定する(図6ステップS14)。
例えば、図10に示すように、各モジュールの伝送遅延時間が、モジュール“B”は“15”、モジュール“C”は“20”、モジュール“D”は“30”、モジュール“E”は“55”、モジュール“A”は“0”として通知されたものとする。
【0067】
マスタモジュール“A”からマスタタイマ値として“5000”が通知されたとすると、図11に示すように、モジュール“B”は、タイマ17のタイマ値を“5015”に更新設定する。同様に、モジュール“C”は“5020”、モジュール“D”は“5030”、モジュール“E”は“5055”として設定する。
ここで、マスタモジュール“A”のタイマ値が“5000”であったとしても、マスタタイマ値通知メッセージがモジュール“B”に伝達されるまでには伝送遅延時間“15”を要し、マスタタイマ値通知メッセージが実際にモジュール“B”に伝達された時点では、マスタモジュールのタイマ値は“5015”となっている。したがって、マスタタイマ値“5000”と伝送遅延時間“15”とを加算した“5015”をモジュール“B”におけるタイマ値と設定してすることにより、マスタモジュール“A”のタイマ値と、モジュール“B”のタイマ値とを“5015”で同期させることができる。
【0068】
つまり、伝送遅延時間は、マスタモジュール“A”から送信されたタイマラッチ指示メッセージが各モジュールに伝達されるまでの所要時間である。したがって、通知されたマスタタイマ値と伝送遅延時間との和を各モジュールにおけるタイマ値として設定することにより、各モジュールでは、マスタモジュールから各モジュールにメッセージが伝送されるまでの所要時間を考慮して自モジュールにおけるタイマ値を更新設定しているため、各モジュールを高精度に同期させることができる。
【0069】
また、先に通知された伝送遅延時間は、ブロードキャスト通信によりタイマラッチ指示メッセージを送信したときの各モジュールにおけるタイマラッチ指示メッセージの送受信タイミングに基づき算出された値である。そして、マスタタイマ値配布メッセージもブロードキャストにより送信されているため、このマスタタイマ値配布メッセージがマスタモジュールから送信されてから各モジュールに伝達されるまでの所要時間は、タイマラッチ指示メッセージがマスタモジュールから送信されてから各モジュールに伝達されるまでの所要時間と同等である。したがって、タイマラッチ指示メッセージの各モジュールにおける送受信タイミングに基づき各モジュールにおけるタイマ値を更新設定することによって、同等の条件で算出された伝送遅延時間に基づきタイマ値を更新設定することになり、より高精度に同期させることができる。
【0070】
また、上記実施の形態においては、伝送遅延時間を前記(2)式に基づいて算出しており、前記(2)式では、モジュール“B”からモジュール“C”への伝送経路とモジュール“C”からモジュール“B”への伝送経路とが同一であるという前提で演算を行なっている。前述のように、モジュール“B”からモジュール“C”へのメッセージの伝送は、第1の配線L11により行い、モジュール“C”からモジュール“B”へのメッセージの伝送は第2の配線L22により行い、第1の配線L11と第2の配線L22とは同一の長さであるため、そのモジュール間伝送時間は同等とみなすことができる。
【0071】
したがって、伝送メッセージの論理的な伝送経路は、モジュール“C”からモジュール“B”へ伝送する場合には、モジュール“C”、モジュール“D”、モジュール“E”、モジュール“A”、モジュール“B“となり、モジュール“B”からモジュール“C”への伝送メッセージの伝送経路とは異なるが、この実施の形態においては、モジュール“B”からモジュール“C”へ及びモジュール“C”からモジュール“B”への物理的な伝送路における伝送時間を演算しており、モジュール“B”からモジュール“C”への伝送路である第1の配線L11とモジュール“C”からモジュール“B”への伝送路である第2の配線L22との長さは同一であってそのモジュール間伝送時間は同等であるため、モジュール“B”からモジュール“C”への伝送経路とモジュール“C”からモジュール“B”への伝送経路とが同一という前提で伝送遅延時間の演算を行なったとしても、的確に伝送遅延時間を演算することができる。
これにより、各モジュール間でのタイマ値の同期化が図られることになる。
【0072】
次に、CPUモジュール及びIOモジュールにおいて実行される、システム制御処理について説明する。
CPUモジュールでは、IOモジュールから各種機器データを獲得し、これに基づいて所定の制御演算処理を行って各IOモジュールへの制御データを生成し、生成した制御データをIOモジュールに送信する。この一連の処理を繰り返し行うことにより、IOモジュールを介してその外部接続機器xを制御する。
【0073】
このとき、CPUモジュールでは、この一連の処理をタクト周期毎に実行する。このタクト周期は、リング状の伝送路におけるデータの伝送速度と同一速度の一定間隔の周期に設定される。
具体的には、図12(a)に示すように、タクト周期毎に、受信データに基づく制御演算処理、制御演算処理により生成した制御データの送信処理、IOモジュールからの各種機器データの受信処理を行い、且つ制御演算処理を、タクト周期の開始タイミングで開始し、これらの処理を次のタクト周期の開始タイミングまでに終了するようになっている。
【0074】
一方、IOモジュールでは、CPUモジュールから制御データを受信し、この制御データにしたがって前記外部接続機器xの駆動制御を行うための駆動データの生成や、外部接続機器xの各部の位置情報等の各種機器データの収集などといった駆動処理を行い、収集した各種機器データをCPUモジュールに送信する。この処理を繰り返し行うことにより、CPUモジュールからの制御データに応じて外部接続機器xを駆動制御する。
【0075】
このとき、IOモジュールでは、この一連の処理をタクト周期毎に実行する。具体的には、図12(c)に示すように、タクト周期毎に、受信データに基づく駆動処理、この駆動処理により収集した各種機器データの送信処理、CPUモジュールからの制御データの受信処理を行い、且つ駆動処理をタクト周期の開始タイミングで開始し、これらの処理を、次のタクト周期の開始タイミングまでに終了するようになっている。
【0076】
ここでIOモジュールにおけるタクト周期は、前記CPUモジュールにおけるタクト周期と同一周期に設定され、且つタクト周期の開始タイミングも同一タイミングに設定される。
このため、図12に示すように、CPUモジュール及びIOモジュールでは、タクト周期毎に各モジュール間で、同一タイミングで制御演算処理及び駆動処理が開始されるようになっている。
【0077】
なお、図12において、(a)はCPUモジュールにおける処理の流れを表し、(b)はリング状の伝送路を構成するバス上での処理の流れを表し、(c)はIOモジュールにおける処理の流れを表す。また、図12中の“TF”とは、トータルフレーム方式で送信されるデータに対する処理を表す。“MC”とはマルチキャスト方式で送信されるデータに対する処理を表す。“演算時間”とは、各モジュールにおいて、受信データをもとに所定の演算処理を行っている時間を表す。また、図12において横軸は時間を表し、“TF”、“MC”の位置及び長さが、各モジュールにおいて、“TF”または“MC”に対する処理が行われるタイミング及びその処理時間を表し、“演算時間”の位置及び長さが、各モジュールにおいて受信データに対する所定の処理が行われるタイミング及びその処理時間を表す。
【0078】
CPUモジュールとIOモジュールとの間の制御データの送受信及び各種機器データの送受信は、特開平11−338523号公報に記載されたマルチキャスト方式及びトータルフレーム方式により行う。なお、マルチキャスト方式及びトータルフレーム方式による制御データの送受信方法及び各種機器データの送受信方法は、前記特開平11−338523号公報の記載と同様であるのでその詳細な説明は省略する。
【0079】
CPUモジュールとIOモジュールとの間において、前記制御データの送受信はマルチキャスト方式により行う。すなわち、CPUモジュールは、各IOモジュール宛の制御データからなるマルチキャストフレームを生成し、このマルチキャストフレームを送信する。このマルチキャストフレームを受信したIOモジュールは、自モジュール宛のデータであれば、それを取り込むと共にマルチキャストフレームをそのまま下流局に送信する。
【0080】
一方、CPUモジュールとIOモジュールとの間において、前記各種機器データの送受信はトータルフレーム方式により行う。すなわち、CPUモジュールは、トータルフレーム送信の要求を表すトータルフレームを送信する。このトータルフレームを受信したIOモジュールは、自モジュールにおける予め設置された所定の各種機器データをこのトータルフレームに付加した後、下流局に送信する。
【0081】
そして、ネットワークシステム上に唯一存在するマスタモジュール(図1の場合CPUモジュール“A”)は、モジュール間でのタイマ値の同期化が終了すると、図13に示すシステム制御処理を開始し、スレーブモジュール(図1の場合IOモジュール“B”〜“E”は、図14に示すシステム制御処理を開始する。
図13に示すように、マスタモジュールは、まず初期処理を実行する(ステップS21)。初期処理では、例えば外部接続機器xを初期位置に制御するため初期制御データの送信を行う。また、その応答として外部接続機器xの初期各種機器データを獲得する。
【0082】
次いで、ステップS22に移行し、タクト割込みの開始タイミングを決定するタイマ値を、タクト割込み発生開始タイミングとして決定する。例えば、自モジュールのタイマ17のタイマ値に基づき、予め設定した規定時間後のタイマ値を、タクト割込み発生開始タイミングとして設定する。
この設定したタクト割込み発生開始タイミングを、リング状の伝送路を介して他のモジュールに送信する(ステップS23)。
【0083】
次いで、自モジュールのタイマ17のタイマ値が、タクト割込み発生開始タイミングに達したか否かを判断し(ステップS24)、タイマ値がタクト割込み発生開始タイミングになったとき、このタクト割込み発生開始タイミングを起点としてタクト周期のカウントを開始し(ステップS25)、トークンフレーム方式により伝送され伝送処理部13aにより受信されてバッファ13bに格納された各種機器データを読み込み(ステップS26)、この各種機器データに基づき前記制御演算処理を行う(ステップS27)。
【0084】
次いで、この制御演算処理によって生成した各IOモジュールの制御データをバッファ13bに格納し、このバッファ13bに格納された制御データを、マルチキャスト方式を用いて、伝送処理部13aにより各IOモジュールに送信する(ステップS28)。
そして、自モジュールのタイマ17のタイマ値をもとに、次のタクト割込み発生タイミングに達したか否かを判断する(ステップS29)。このタクト割込み発生タイミングは、タクト割込み発生開始タイミングを起点としてカウント開始したカウント値をもとに行い、例えば、現時点におけるタイマ17のタイマ値が、タクト割込み発生開始タイミングにおけるタイマ値と、タクト周期に相当するタイマ値との和に達したとき、タクト割込み発生タイミングとして判断する。
【0085】
前記タクト周期は、設計者が予め設定し、各モジュールに設定しておく。図12に示すように、前記タクト周期は、プログラマブルコントローラシステムを構成するモジュールの種類や数に基づいて、トータルフレームデータ(以下、TFデータともいう。)や、マルチキャストデータ(以下、MCデータともいう。)の配信時間を演算し、このTFデータやMCデータの配信時間と、CPUモジュールでの制御演算処理や各IOモジュールでの駆動処理の所要時間等とに基づき、タクト周期の開始時点から、次のタクト周期の開始時点までの間に、CPUモジュールにおいて、前記制御演算処理及びこの制御演算処理により生成された制御データの送信、さらに外部接続機器xの各種機器データの受信が完了し、且つ、IOモジュールにおいて、前記駆動処理、この駆動処理により駆動された後の外部接続機器xの各部の位置情報等の各種機器データの送信、及び、CPUモジュールからの次の制御データの受信が完了するに十分な周期に設定される。
【0086】
そして、タクト割込み発生タイミングに達したときに、ステップS29からステップS26に移行し、再度、バッファ13bに記憶されたIOモジュールからの各種機器データを読み込み、これに基づき制御演算処理を行って各IOモジュール宛の制御データを生成する(ステップS27)。
以後、このステップS26〜S29の処理を繰り返し行うことにより、タクト割込み発生開始タイミングを起点としてタクト周期毎に、受信した各種機器データに基づく制御演算処理、制御演算処理で生成された制御データの送信及び、各種機器データの受信が行われることになる。
【0087】
一方、スレーブモジュールであるIOモジュールでは、図14に示すように、まず初期処理を実行する(ステップS31)。初期処理では、例えば、CPUモジュールからの初期制御データを受信し、この初期制御データに応じてその外部接続機器xを駆動制御する。また、初期駆動制御後の各外部接続機器xについて各種機器データを収集しこれを初期各種機器データとしてCPUモジュールに送信する。
【0088】
次いで、ステップS32に移行し、CPUモジュールからタクト割込み発生開始タイミングを規定するタイマ値を受信すると、自モジュールのタイマ17のタイマ値が、通知されたタクト割込み発生開始タイミング(タイマ値)に達したか否かを判断する(ステップS33)。そして、タクト割込み発生開始タイミング(タイマ値)となったとき、タクト周期のカウントを開始すると共に(ステップS34)、マルチキャスト方式によりCPUモジュールから伝送され伝送処理部13aにより受信されてバッファ13bに記憶されたCPUモジュールからの制御データを読み込み(ステップS35)、この制御データに基づき駆動処理を行う(ステップS36)。そして、駆動処理によって収集した各種機器データをバッファ13bに記憶し、これを伝送処理部13aによりトークンフレーム方式を用いてCPUモジュールに送信する(ステップS37)。
【0089】
そして、タイマ17のカウント値をもとに、自モジュールのタイマ値がタクト割込み発生タイミングとなったか否かを判断し(ステップS38)、タクト割込み発生タイミングとなったとき、ステップS35に移行して、マルチキャスト方式によりCPUモジュールから伝送されバッファ13bに記憶されたCPUモジュールからの制御データをもとに、所定の駆動処理を行う。なお、タクト割込み発生タイミングになったか否かの判断は、前記図13のステップS29におけるマスタモジュールでの処理と同様に、タイマ値が、タクト割込み発生開始タイミングにおけるタイマ値と、タクト周期に相当するタイマ値との和に達したか否かを判断することにより行う。
以後、ステップS35からステップS38の処理を繰り返し行うことにより、タクト割込み発生開始タイミングを起点として、タクト周期毎に、駆動処理、各種機器データの送信、制御データの受信が行われることになる。
【0090】
次に、上記第1の実施の形態の動作を説明する。
プログラマブルコントローラシステムでは、起動されるとまず、モジュール間でのタイマ値の同期化を行う。これにより、各モジュール間でタイマ17のタイマ値は同期化される。
タイマ値の同期化が終了すると、各モジュールでは、図13または図14のシステム制御処理を開始し、各モジュールでは、マスタモジュールで決定されたタクト割込み発生開始タイミングを起点としてタクト周期毎に設定されるタクト割込み発生タイミングで、所定の処理を実行し、CPUモジュールでは制御演算処理を行って各種機器データに基づき制御データを生成し、IOモジュールでは駆動処理を行って制御データに基づきその外部接続機器xを駆動制御して各種機器データの収集を行う。
【0091】
ここで、上述のように、各モジュール間でタイマ17のタイマ値は同期している。このため、CPUモジュールで制御演算処理を開始するタイミング及びIOモジュールで駆動処理を開始するタイミングは、図12に示すように一致する。また、タクト割込み発生タイミングはタクト周期毎に発生させており、タクト周期は、全てのIOモジュールが駆動処理、各種機器データの送信及び制御データの受信が完了し、且つCPUモジュールが制御演算処理、制御データの送信及び各種機器データの受信が完了するに十分な周期に設定しているため、図12(c)に示すように、次のタクト割込み発生タイミングまでに、各IOモジュールでは次の処理対象となる制御データの受信が完了している。
【0092】
したがって、タクト割込み発生タイミングでは、全てのIOモジュールは、同一時点における制御データに基づいて駆動処理を行って外部接続機器xを駆動制御することになる。なお、IOモジュールは、CPUモジュールで生成された制御データをもとに駆動処理を行なうため、あるタイミングにおいてCPUモジュールで生成された制御データに基づく駆動処理を、次のタイミングで実行することになる。
【0093】
このように、全IOモジュールは同一時点における制御データに基づき駆動処理を行なうことができるため、各IOモジュールが異なる時点での制御データに基づいてその外部接続機器xを駆動制御することを回避することができる。そのため、各IOモジュールを高精度に同期させることができるため、外部接続機器xをより高精度に駆動制御することができ、結果的に、プログラマブルコントローラシステムの制御対象である、モーションシステム全体をより高精度に駆動制御することができる。
【0094】
次に、本発明の第2の実施の形態を説明する。
この第2の実施の形態は、上記第1の実施の形態において、図13及び図14のマスタモジュール及びスレーブモジュールで実行されるシステム制御処理が異なること以外は同一であるので、同一部の詳細な説明は省略する。
この第2の実施の形態では、マスタモジュールは、図15に示すシステム制御処理を行う。
【0095】
すなわち、まず、ステップS20aで、CPUモジュールのタクト割込み発生開始タイミング及びIOモジュールのタクト割込み発生開始タイミングを設定するためのタイミング情報を読み込む。このタイミング情報は、プログラマブルコントローラシステムのオペレータが図示しない入力手段により入力操作を行うことにより入力する。このタイミング情報は、後述のタクト割込み発生開始タイミングに対して、CPUモジュール、IOモジュールにおけるタクト割込み発生開始タイミングを設定するためのものであり、タクト割込み発生開始タイミングと、CPUモジュールにおけるタクト割込み発生開始タイミングとのタイマ値のずれ量がCPUモジュールのタイミング情報として設定され、タクト割込み発生開始タイミングと、IOモジュールにおけるタクト割込み発生開始タイミングとのタイマ値のずれ量がIOモジュールのタイミング情報として設定される。
【0096】
ここで、第2の実施の形態では、CPUモジュール及びIOモジュールのタクト割込み発生タイミングは、異なるタイミングとなるように設定される。なお、タクト周期は同一値に設定され、その設定方法は上記第1の実施の形態と同様である。
そして、CPUモジュールのタクト割込み発生タイミングは、図16(a)に示すように、トータルフレームの受信完了後の受信完了タイミングに比較的近いタイミングに設定される。一方、IOモジュールのタクト割込み発生タイミングは、図16(c)に示すように、全てのIOモジュールがマルチキャストフレームの受信を完了した後の、この受信完了タイミングに比較的近いタイミングに設定される。
【0097】
これらCPUモジュール及びIOモジュールのタクト割込み発生タイミングは、前記タクト周期及び、トータルフレームデータや、マルチキャストデータの配信時間、CPUモジュールでの制御演算処理の開始タイミングに対する、次に受信するトータルフレームの受信完了までの所要時間、IOモジュールでの駆動処理の開始タイミングに対する、次に受信するマルチキャストデータの受信完了までの所要時間等に基づいて演算する。
【0098】
したがって、CPUモジュール及びIOモジュールのタイミング情報は、これらを満足するように設定される。例えば、タクト割込み発生開始タイミングとCPUモジュールのタクト割込み発生開始タイミングとを同一タイミングに設定すると、CPUモジュールのタイミング情報は“零”として設定される。また、IOモジュールのタイミング情報は、CPUモジュールのタクト割込み発生タイミングとIOモジュールのタクト割込み発生タイミングとの差相当のタイマ値に設定される。
【0099】
このようにして設定されたCPUモジュール及びIOモジュールのタイミング情報を読み込むと、ステップS20aからステップS20bに移行し、IOモジュールに対して、IOモジュールのタイミング情報を送信する。
次いで、ステップS21に移行して上記第1の実施の形態と同様の手順で初期処理を実行し、タイマ17の現タイマ値に基づきタクト割込み発生開始タイミングに相当するタイマ値を決定し(ステップS22)、これを各モジュールに通知する(ステップS23)。
【0100】
次いで、ステップS24aに移行し、ステップS22で設定されたタクト割込み発生開始タイミングを表すタイマ値と、ステップS20aで読み込んだCPUモジュールのタイミング情報との和を、CPUモジュールのタクト割込み発生開始タイミングとして演算し、自モジュールのタイマ17のタイマ値が、CPUモジュールのタクト割込み発生開始タイミングとなったか否かを判断する。
【0101】
そして、タイマ値がCPUモジュールのタクト割込み発生開始タイミングとなったときに、ステップS24aからステップS25aに移行し、このCPUモジュールのタクト割込み発生開始タイミングを起点としてタクト周期のカウントを開始し、トータルフレーム方式により伝送され伝送処理部13aにより受信されてバッファ13bに格納された各種機器データを読み込み(ステップS26)、これに基づき制御演算処理を行う(ステップS27)。そして、制御演算処理によって生成した各IOモジュール宛の制御データをバッファ13bに格納し、このバッファ13bに格納された制御データを、マルチキャスト方式を用いて、伝送処理部13aにより送信する(ステップS28)。
【0102】
そして、自モジュールのタイマ17のタイマ値をもとに、次のCPUモジュールのタクト割込み発生タイミングに達したか否かを判断する(ステップS29a)。このCPUモジュールのタクト割込み発生タイミングに達したか否かの判断は、CPUモジュールのタクト割込み発生開始タイミングを起点としてカウント開始したカウント値をもとに行い、例えば現時点におけるタイマ17のタイマ値が、CPUモジュールのタクト割込み発生開始タイミングにおけるタイマ値と、タクト周期に相当するタイマ値との和に達したとき、CPUモジュールのタクト割込み発生タイミングであると判断する。
【0103】
以後、このステップS26〜S29aの処理を繰り返し行うことにより、CPUモジュールのタクト割込み発生開始タイミングを起点として、タクト周期毎に、受信した各種機器データに基づく制御演算処理、制御演算処理で生成された制御データの送信、各種機器データの受信が行われることになる。
一方、スレーブモジュールであるIOモジュールでは、図17に示すように、まず、ステップS30で、CPUモジュールから前述のIOモジュールのタイミング情報を獲得する。
次いで、ステップS31に移行し、上記第1の実施の形態と同様に初期処理を行い、CPUモジュールからの初期制御データに応じて外部接続機器xを初期状態に制御し、初期制御後に、各種機器データを収集しこれを初期各種機器データとしてCPUモジュールに送信する。
【0104】
次いで、ステップS32に移行し、CPUモジュールからタクト割込み発生開始タイミングを規定するタイマ値を受信するとステップS33aに移行し、このCPUモジュールからのタクト割込み発生開始タイミングに、IOモジュールのタイミング情報を加算し、IOモジュールのタクト割込み発生開始タイミングを決定し、自モジュールのタイマ17のタイマ値が、IOモジュールのタクト割込み発生開始タイミングに達したかどうかを判断する。そして、タイマ値が、IOモジュールのタクト割込み発生開始タイミングに達したときステップS34に移行してタクト周期のカウントを開始し、マルチキャスト方式によりCPUモジュールから伝送され伝送処理部13aにより受信されてバッファ13bに記憶されたCPUモジュールからの制御データを読み込み(ステップS35)、これに基づき駆動処理を行う(ステップS36)。
【0105】
そして、駆動処理によって生成した各種機器データをバッファ13bに記憶し、これを伝送処理部13aによりトークンフレーム方式を用いてCPUモジュールに送信する(ステップS37)。
次いで、タクト周期のカウント値をもとに、自モジュールのタイマ値がIOモジュールのタクト割込み発生タイミングとなったか否かを判断し(ステップS38a)、IOモジュールのタクト割込み発生タイミングとなったとき、ステップS35に移行して、マルチキャスト方式によりCPUモジュールから伝送されバッファ13bに記憶されたCPUモジュールからの制御データをもとに、所定の駆動処理を行う。
【0106】
前記IOモジュールのタクト割込み発生タイミングとなったかどうかの判断は、IOモジュールのタクト割込み発生開始タイミングを起点としてカウント開始したカウント値をもとに行い、例えば現時点におけるタイマ17のタイマ値が、CPUモジュールのタクト割込み発生開始タイミングにおけるタイマ値と、タクト周期に相当するタイマ値との和に達したとき、IOモジュールのタクト割込み発生タイミングであると判断する。
以後、ステップS35からステップS38aの処理を繰り返し行うことにより、IOモジュールのタクト割込み発生開始タイミングを起点として、タクト周期毎に、駆動処理、各種機器データの送信、制御データの受信が行われることになる。
【0107】
次に、上記第2の実施の形態の動作を説明する。
プログラマブルコントローラシステムでは、上記第1の実施の形態と同様に、まず、モジュール間でのタイマ値の同期化を図る。このため、各モジュール間のタイマ値は同期化される。
各モジュールでは、図15又は図17のシステム制御処理を実行し、マスタモジュール(CPUモジュール)で設定されたタクト割込み発生開始タイミングと、オペレータにより設定されたCPUモジュールまたはIOモジュールのタイミング情報に基づき、自モジュールのタクト割込み発生開始タイミングを決定する。すなわち、CPUモジュールではCPUモジュールのタクト割込み発生開始タイミング、IOモジュールではIOモジュールのタクト割込み発生開始タイミングを決定する。
【0108】
そして、CPUモジュールは、CPUモジュールのタクト割込み発生開始タイミングを起点としてタクト周期毎に生じるCPUモジュールのタクト割込み発生タイミングで、制御演算処理を実行し、IOモジュールからの各種機器データに基づき制御データを生成する。一方、IOモジュールは、IOモジュールのタクト割込み発生開始タイミングを起点としてタクト周期毎に生じるIOモジュールのタクト割込み発生タイミングで、駆動処理を実行し、CPUモジュールからの制御データに基づきその外部接続機器xを駆動制御して各種機器データの収集を行う。
【0109】
ここで、上述のように各モジュール間のタイマ値は同期している。そのため、各モジュールにおけるタクト割込み発生開始タイミングは一致する。このため、このタクト割込み発生開始タイミングに基づき設定される、IOモジュールのタクト割込み発生開始タイミングを起点とするタクト周期毎のIOモジュールのタクト割込み発生開始タイミングは、図16(c)に示すように全てのIOモジュール“B”〜“E”間で一致する。
【0110】
また、IOモジュールのタクト割込み発生タイミングは、全てのIOモジュールがマルチキャストデータを受信完了した後の受信完了時点に比較的近いタイミングとなるように設定されるため、図16(c)に示すように、IOモジュール“E”がマルチキャストデータを受信し終えた後のタイミングで、IOモジュールのタクト割込み発生タイミングとなる。このため、各IOモジュール“B”〜“E”は、同一時点の制御データに基づいて駆動処理を行い、外部接続機器xを駆動制御することになる。なお、IOモジュールは、CPUモジュールで生成された制御データをもとに駆動処理を行なうため、CPUモジュールは、あるタイミングにおいて生成した制御データに基づく駆動処理をIOモジュールが開始するよりも前の時点で、前述のあるタイミングにおいて生成した制御データの次の制御データを生成する処理を開始することになる。
【0111】
このように、全IOモジュールは同一時点における制御データに基づき駆動処理を行なうことができるため、各IOモジュールが異なる時点での制御データに基づいてその外部接続機器xを駆動制御することを回避することができる。
さらに、図16(a)に示すように、CPUモジュールのタクト割込み発生タイミングは、CPUモジュールがトータルフレームを受信完了した後のタイミングであり且つ受信完了タイミングにより近いタイミングとなるように設定されており、一方、IOモジュールのタクト割込み発生タイミングは、全IOモジュールがマルチキャストフレームの受信を完了する受信完了タイミング以後に設定されているため、IOモジュールが制御データに基づく駆動処理を開始する前に、CPUモジュールでの制御演算処理が実行されることになる。
【0112】
ここで、CPUモジュールでの制御演算処理に必要な情報は、各IOモジュールからの各種機器データであるため、この各種機器データを伝送するためのトータルフレームの受信が完了した時点で、制御演算処理を実行しても何ら問題はない。
そして、制御演算処理はタクト周期毎に行う必要があるため、制御演算処理用の処理時間として確保することのできる時間は、マルチキャスト方式による制御データの送信及びトータルフレームによる各種機器データの受信に要する所要時間を除いた時間内に制限される。このため、トータルフレームの受信を完了した時点で制御演算処理を開始すればその分、制御演算処理としてより長い時間を確保することができることになる。
【0113】
つまり、次にトータルフレームを受信するまでの間に、制御演算処理及び制御データの送信が完了すればよいから、図16に示すように、トータルフレームの受信を完了した時点で制御演算処理を開始すれば、制御演算処理用の処理時間をより多く確保することができることになる。これに対して、トータルフレームの受信完了時点から制御演算処理の開始までに空き時間があると、この空き時間相当分だけ、制御演算処理用の処理時間として確保できる時間が短くなってしまうことになる。
【0114】
このように、CPUモジュールが、トータルフレームの受信を完了した時点により近いタイミングで制御演算処理を開始することによって、制御演算処理用の処理時間をより多く確保することができる。これはすなわち、より複雑な演算処理やより多量のデータ処理を行うことができることを意味する。したがって、プログラマブルコントローラシステムの処理能力を向上させることができ、外部接続機器xをより高精度に制御することができる。したがって、異なるモジュールに接続されている外部接続機器xであっても、これら外部接続機器x間で同期させ且つ強調動作を行わせることができる。
【0115】
なお、CPUモジュールのタクト割込み発生タイミングは、トータルフレームの受信を完了した時点以後のタイミングであればよいが、上述のように、トータルフレームの受信完了のタイミングに近いほど、CPUモジュールにおける制御演算処理用の処理時間を確保することができるため、制御演算処理用の処理時間として必要な処理時間を考慮して設定すればよい。
【0116】
同様に、IOモジュールのタクト割込み発生タイミングは、全てのIOモジュールがマルチキャストデータを受信完了した時点以後のタイミングであればよいが、この場合も、全てのIOモジュールがマルチキャストデータを受信完了するタイミングに近いほど、IOモジュールにおける駆動処理用の処理時間を確保することができる。
同様に、上記第1の実施の形態においても、タクト割込み発生タイミングは、全てのモジュールがマルチキャストデータ又はトータルフレームの受信を完了した後のタイミングであればよいが、この場合も、各モジュールが所定のデータを受信完了するタイミングに近いほど、各モジュールにおける受信データに対するデータ処理用の処理時間を確保することができる。
【0117】
また、上記各実施の形態において、タイマ17は、水晶振動子を含んで構成されている。このため、起動時に、モジュール間でのタイマ値の同期化を図ったとしても、水晶振動子の誤差によりモジュール間でタイマ値にずれが生じる可能性があり、このずれが大きくなるとシステム停止等、システム全体に影響を与える可能性がある。つまり、マスタモジュール“A”、スレーブモジュール“B”、“C”、“E”は、既にモジュール間でタイマ値の同期がとられているため、本来、これらモジュールのタイマ値は同等程度の値を示すはずであるが、水晶振動子の誤差によりタイマ値にずれが生じることがある。
【0118】
しかしながら、モジュール間でのタイマ値の同期化を定周期で実行しているため、水晶振動子の誤差によるタイマ値のずれを除去することができる。このため、モジュール間でのタイマ値を精度よく同期させることができ、よって、このタイマ値に同期して動作する各モジュール間において、外部接続機器xを同期させ且つ強調動作を行わせることができる。
【0119】
特に、モジュール間のタイマ値の同期精度として、マイクロ秒、ミリ秒の単位での精度を要求するモーションシステムにおいては、頻繁にタイマ値の同期化を図り、水晶振動子の影響を抑制する必要があるため効果的である。
なお、上記第2の実施の形態においては、CPUモジュールについては、CPUモジュールのタクト割込み発生タイミングで動作させ、IOモジュールについては、IOモジュールのタクト割込み発生タイミングで動作させる場合について説明したが、これに限るものではない。
【0120】
例えば、同じIOモジュールであっても、異なるタイミングで駆動処理を実行させる必要がある場合には、第1のタイミングで駆動処理を実行させるIOモジュールからなる第1のグループと、第2のタイミングで駆動処理を実行させるIOモジュールからなる第2のグループとに分類し、第1のグループ、第2のグループ、及びCPUモジュールのそれぞれについて、駆動処理または制御演算処理の所望の実行タイミングに適したタクト割込み発生開始タイミングを設定し、これら第1のグループ、第2のグループ、CPUモジュールごとに、それぞれ異なるタクト割込み発生タイミングで所定の処理を実行するように構成してもよい。要は、受信したデータに対する処理を同一タイミングで実行させたいモジュールどうしを同一グループとし、グループ毎にタクト割込み発生開始タイミングを設定し、これに応じたタクト割込み発生タイミングで所定の処理を実行するように構成すればよい。また、CPUモジュール及びIOモジュールに限らず、他の種類のモジュールについても同様にグループに分類し、所定のタクト割込み発生タイミングで所定の処理を実行させるように構成することも可能である。
【0121】
また、上記各実施の形態においては、プログラマブルコントローラシステム中に、CPUモジュールを1台備えるシングルCPUシステムの場合について説明したが、CPUモジュールを複数備えるマルチCPUシステムの場合であっても適用することができる。
マルチCPUシステムに適用するときには、上記第2の実施の形態を適用する場合は、CPUモジュールについては、このCPUモジュールのタクト割込み発生タイミングをTFデータの受信完了後のタイミングとなるように設定し且つ、IOモジュールについては、全てのIOモジュールが、そのタクト割込み発生タイミングでの駆動処理に必要な制御データを全て受信完了した時点を、IOモジュールのタクト割込み発生タイミングとして設定すればよい。このとき、全てのCPUモジュールがTFデータを受信完了した時点を、CPUモジュールのタクト割込み発生タイミングとすることにより全CPUモジュールでタクト割込み発生タイミングを共通としてもよく、また、CPUモジュール毎にTFデータを受信完了した時点をタクト割込み発生タイミングとして設定するようにしてもよい。
【0122】
また、上記実施の形態においては、端部のモジュール“D”、モジュール“E”では、モジュール内部で回線を折り返してリング状の伝送路を構成する場合について説明したが、これに限るものではない。例えば、折り返し用に、ケーブルLnが接続されない側の接続端子11又は12に、第1の配線L11側と第2の配線L22側とを単に接続するための折り返し用ケーブルを挿しておくことにより、リング状の伝送路を構成するようにしてもよい。この場合、端部のモジュールから送信された伝送メッセージは、折り返し用ケーブルを経由して再度端部のモジュールで受信されるため、ラッチ回路15又は16で検出され、タイマ値がラッチされることになる。このため、マスタモジュールでは、タイマ値有効フラグからは、端部のモジュールがどれであるかを認識することができない。
【0123】
そのため、折り返し用ケーブルを用いて折り返しを行なった場合には、端部のモジュールにおいてスイッチ操作を行なうことにより端部のモジュールに対して端部のモジュールであることを認識させ、端部のモジュールにおいて、自モジュールのタイマ情報として端部のモジュールであることを付加して送信するように構成すれば、マスタモジュールではタイマ情報から端部のモジュールが何れのモジュールであるかを容易に認識することができる。
【0124】
或いは、折り返し用ケーブルを用いて折り返しを行なった場合には、ラッチ回路15でラッチしたタイマ値とラッチ回路16でラッチしたタイマ値との差、すなわち、受信経過時間は折り返し用ケーブルにおける伝送時間相当の長さとなり、モジュール間のモジュールにおける受信経過時間に比較して短い。したがって、受信経過時間が、折り返し用ケーブルによる折り返しが行なわれているとみなされるしきい値よりも短いかどうかに基づき、端部のモジュールであるか否かを判断するようにしてもよい。
【0125】
また、上記実施の形態においては、モジュール“A”からモジュール“E”の5つのモジュールを有するプログラマブルコントローラシステムを構成した場合について説明したが、これに限らず、複数のモジュールを有するプログラマブルコントローラシステムであれば適用することができ、さらに、プログラマブルコントローラが複数接続され、これら複数のプログラマブルコントローラを構成する複数のモジュールがデイジーチェーン接続されてリング状の伝送路を構成するシステムであっても適用することができる。
【0126】
また、上記実施の形態においては、ケーブルが接続されているか否かを検出することにより、端部のモジュールであるか否かを検出する場合について説明したが、これに限るものではない。例えば、端部のモジュールにおいてオペレータがスイッチ操作等を行なうことにより、端部のモジュールとして設定するように構成することもできる。また、このオペレータのスイッチ操作により、切り替え回路18の接続先が物理的に切り替わるように構成してもよい。
【0127】
また、上記実施の形態においては、マスタモジュールでシステム同期処理が実行されたときに、マスタモジュールのタイマのタイマ値をスレーブモジュールに通知してタイマ値を同期させる場合について説明したがこれに限るものではない。
例えば、スレーブモジュールでは、システム同期処理が行なわれたときに通知された各モジュールにおける伝送遅延時間を記憶しておく。そして、マスタモジュールでは、一旦システム同期処理を行なった後は、マスタタイマ値配布メッセージのみを定期的に送信し、このマスタタイマ値配布メッセージを受信したスレーブモジュールが、記憶している伝送遅延時間と通知されたマスタタイマ値とから自モジュールのタイマのタイマ値を更新設定することにより、定期的に、タイマ値の同期を図るようにしてもよい。
【0128】
このように、システム同期処理全体を定期的に行なうのではなく、マスタタイマ値の送信及びスレーブモジュールでのタイマ値の更新設定のみを定期的に実行する場合であっても、プログラマブルコントローラシステムを構成するモジュール間のタイマ値の同期を的確に行なうことができる。
また、上記実施の形態においては、マスタモジュールがタイマラッチ指示メッセージを送信する場合について説明したが、これに限るものではない。つまり、ある伝送メッセージを、ラッチ回路15で受信するタイミングと、同一の伝送メッセージをラッチ回路16で受信するタイミングとがわかればよい。このため、各モジュールが、マスタモジュールに限らず他のモジュールが送信する任意の伝送メッセージをタイマラッチ指示メッセージとみなし、任意の伝送メッセージをラッチ回路15及び16で受信した時点におけるタイマ値をラッチするように構成してもよい。
【0129】
そして、マスタモジュールがタイマ値収集メッセージを定期的に、或いはイベント的に送信して、各モジュールが保持する最新のタイマ情報を収集しこれと、任意の伝送メッセージの一周時間とを用いて伝送遅延時間を演算し、最新の伝送遅延時間に基づき各モジュールがタイマの同期を行なうようにしてもよい。
また、上記実施の形態において、ラッチ回路15及びラッチ回路16は、タイマラッチ指示メッセージを受信するときにのみ、動作可能な状態となっていればよい。したがって、例えば、マスタモジュールがタイマラッチ指示メッセージを送信するタイミングが、システム起動時及びその後定期的に等、予め決まっている場合には、スレーブモジュール側でこれに合わせてラッチ回路15及び16を動作可能な状態にし、一旦同期を行なった後、ラッチ回路15及び16を休止状態に切り替え、その後、定期的に行なわれる同期のタイミングに合わせて、ラッチ回路15及び16を動作可能な状態に切り替えることにより消費電力の削減を図るようにしてもよい。
【0130】
また、タイマラッチ指示メッセージは、一方のラッチ回路で受信された後、他方のラッチ回路で受信されるため、タイマラッチ指示メッセージを先に受信するラッチ回路は常時動作可能状態とし、後に受信するラッチ回路は、先に受信するラッチ回路でタイマラッチ指示メッセージを受信したときに動作可能な状態に切り替え、タイマ値をラッチして処理部13に通知した後、再度休止状態に切り替えるように構成してもよい。この場合には、後に受信するラッチ回路の消費電力の削減を図ることができる。
【0131】
また、各モジュールが、任意のメッセージをタイマラッチ指示メッセージとみなしてタイマ値をラッチするように構成した場合には、各モジュールがタイマ値をラッチするタイミングに合わせてラッチ回路15及び16を動作可能状態に切り替え、それ以外のときにはラッチ回路15及び16を休止状態に切り替えるように構成してもよい。
ここで、上記実施の形態において、図13のステップS26及びステップS27の処理が出力データ生成手段に対応し、ステップS28の処理が出力データ送信手段に対応し、図5のシステム同期処理が同期化手段に対応している。
【0132】
また、図14のステップS35の処理が受信手段に対応し、ステップS36の処理が出力手段に対応している。
さらに、第1の配線L11、第2の配線L22が、第1の伝送路、第2の伝送路に対応している。
また、図15のステップS29aの処理がマスタタクト割込み発生手段に対応し、図17のステップS30、S32、S33a、S34、S38aの処理がスレーブタクト割込み発生手段に対応している。
【符号の説明】
【0133】
11 第1の接続端子
12 第2の接続端子
13 処理部
13a 伝送処理部
13b バッファ
15、16 ラッチ回路
17 タイマ
L1〜L4 ケーブル
L11 第1の配線
L22 第2の配線
T メッセージ一周時間
【技術分野】
【0001】
本発明は、複数のモジュール間をデイジーチェーン接続し、且つ両端のモジュールで回線を折り返すことによりリング状のネットワークを形成するようにしたプログラマブルコントローラシステムに関する。
【背景技術】
【0002】
従来、プラント、工場等では、機械や装置のシーケンス制御に多くのプログラマブルコントローラを用い、ファクトリオートメーション化を実現している。
1つのプログラマブルコントローラは、プログラムの実行やデータの演算処理などを行うCPUモジュールや、制御機器とプロセスデータの入出力を行うIOモジュールが複数バスで接続されて構成されている。
このようにプログラマブルコントローラのモジュール間を接続するバスとして、リング状の伝送路を用いたプログラマブルコントローラが提案されており、例えば、リング状の伝送路を、プログラマブルコントローラにおけるモジュール間の入力データ、出力データの交換バスとして用いたものが提案されている(例えば、特許文献1参照)。
【0003】
このリング状の伝送路をプログラマブルコントローラにおけるモジュール間の入力データ、出力データの交換バスとして用いたプログラマブルコントローラにおいては、CPUモジュールがIOモジュールからデータを獲得するときには「トータルフレーム方式」、CPUモジュールがIOモジュールにデータを出力するときには「マルチキャスト方式」というデータ交換プロトコルを用い、例えば図18(a)に示すように、CPUモジュールでは予め設定したタクト周期毎にIOモジュールから必要なデータを実行プロセッサに取り込み所定のデータ処理を行ってデータを送信している。図18(c)に示すようにIOモジュールでは、CPUモジュールからのデータを受信するタイミングでCPUモジュールからのデータを読み込んで所定のデータ処理を実行し、所定のデータをCPUモジュールにトータルフレーム方式により送信するようになっている。
【0004】
なお、図18において、(a)はCPUモジュールにおける処理の流れを表し、(b)はリング状の伝送路を構成するバス上での処理の流れを表し、(c)はIOモジュールにおける処理の流れを表す。また、図18中の“TF”とは、トータルフレーム方式で送信されるデータに対する処理を表す。“MC”とはマルチキャスト方式で送信されるデータに対する処理を表す。“演算時間”とは、各モジュールにおいて、受信データをもとに所定の演算処理を行っている時間を表す。“MSG”とはCPUモジュールと他モジュールとの間で行われるメッセージ転送用の時間帯域を表す。また、図18において横軸は時間を表し、“TF”、“MC”の位置及び長さが、各モジュールにおいて、“TF”または“MC”に対する処理が行われるタイミング及びその処理時間を表し、“演算時間”の位置及び長さが、各モジュールにおいて受信データに対する所定の処理が行われるタイミング及びその処理時間を表す。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平11−338523号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
上記のように、CPUモジュールが、タクト周期毎にIOモジュールからのデータを取り込むように構成した場合、ネットワークシステムにおけるデータ交換時間つまりタクト周期が、CPUモジュールやIOモジュールにおけるデータ処理時間に比較して十分高速である場合には、トータルフレーム方式やマルチキャスト方式等のデータ交換プロトコルを用いることにより、モジュール間でのデータ処理の同期が可能であることが知られている。
【0007】
しかしながら、プログラマブルコントローラの制御対象となるシステムの高速化、複雑化から、プログラマブルコントローラを構成するCPUモジュール、IOモジュールによるデータ処理周期が短くなってきており、このようなシステムにおけるIOモジュール間での同期化を実現するためには、より一段のタクト交換速度すなわちネットワーク伝送速度の高速化が必要となる。
しかしながら、ネットワークにおける伝送速度の高速化は、耐ノイズ性能の劣化や伝送距離の短距離化などの弊害があり、容易ではない。
そこで、この発明は、上記従来の未解決の問題点に着目してなされたものでありモジュール間での同期化をより高精度に行うことの可能なプログラマブルコントローラシステムを提供することを目的としている。
【課題を解決するための手段】
【0008】
上記目的を達成するために、本発明の請求項1にかかるプログラマブルコントローラシステムは、マスタモジュール及びスレーブモジュールが入出力データ交換バスを介してデータ交換を行い、前記マスタモジュールが前記スレーブモジュールを介して当該スレーブモジュールに接続された外部接続機器を制御するプログラマブルコントローラシステムにおいて、前記マスタモジュール及びスレーブモジュールはそれぞれタイマを有し、前記マスタモジュールは、当該マスタモジュールが有するタイマのマスタタイマ値に基づき定周期で起動され、前記スレーブモジュールから前記入出力データ交換バスを介して予め受信した入力データをもとに演算して出力データを生成する出力データ生成手段と、当該出力データ生成手段により生成された前記出力データを、前記入出力データ交換バスを介して前記スレーブモジュールに送信する出力データ送信手段と、前記スレーブモジュールが有するタイマのスレーブタイマ値と前記マスタタイマ値とを同期化させる同期化手段と、を有し、前記スレーブモジュールは、前記入出力データ交換バスから前記出力データを受信する受信手段と、前記受信手段によって受信された前記出力データ、または前記出力データに基づき所定演算を行い当該演算により得た外部接続機器制御用のデータを前記外部接続機器に出力する出力手段と、を有し、当該出力手段は、前記同期化手段によって同期化された前記スレーブタイマ値に基づき前記マスタモジュールの前記出力データ生成手段が起動されるタイミングと同一タイミングの定周期で起動されることを特徴としている。
【0009】
また、本発明の請求項2にかかるプログラマブルコントローラシステムは、マスタモジュール及びスレーブモジュールが入出力データ交換バスを介してデータ交換を行い、前記マスタモジュールが前記スレーブモジュールを介して当該スレーブモジュールに接続された外部接続機器を制御するプログラマブルコントローラシステムにおいて、前記マスタモジュール及びスレーブモジュールはそれぞれタイマを有し、前記マスタモジュールは、当該マスタモジュールが有するタイマのマスタタイマ値に基づき定周期割込みを発生するマスタタクト割込み発生手段と、このマスタタクト割込み発生手段により起動され、前記スレーブモジュールから前記入出力データ交換バスを介して予め受信した入力データをもとに演算して出力データを生成する出力データ生成手段と、当該出力データ生成手段により生成された前記出力データを、前記入出力データ交換バスを介して前記スレーブモジュールに送信する出力データ送信手段と、前記スレーブモジュールが有するタイマのスレーブタイマ値と前記マスタタイマ値とを同期化させる同期化手段と、を有し、前記スレーブモジュールは、前記入出力データ交換バスから前記出力データを受信する受信手段と、前記同期化手段によって同期化された前記スレーブタイマ値に基づき、前記定周期割込みの発生タイミングと同一のタイミングを獲得し、このタイミングを基準に所定時間経過後にスレーブ割込みを発生するスレーブタクト割込み発生手段と、当該スレーブタクト割込み発生手段によって起動され、前記受信手段によって受信された前記出力データ、または前記出力データに基づき所定演算を行い当該演算により得た外部接続機器制御用のデータを前記外部接続機器に出力する出力手段と、を備えることを特徴としている。
【0010】
さらに、請求項3にかかるプログラマブルコントローラシステムは、前記入出力データ交換バスは、第1の伝送路及び第2の伝送路それぞれが前記マスタモジュール及び前記スレーブモジュールからなる複数のモジュールをデイジーチェーン接続し、該デイジーチェーン接続された両端の前記モジュールそれぞれで前記第1の伝送路と前記第2の伝送路とを接続してリング状の伝送路を構成し、前記同期化手段は、前記スレーブモジュールが一のメッセージを前記第1の伝送路及び前記第2の伝送路から受信したときの前記スレーブタイマ値を収集し、この収集したスレーブタイマ値と前記各モジュールの配置位置とに基づき前記マスタモジュールと前記スレーブモジュールそれぞれとの間の伝送遅延時間を演算し、当該伝送遅延時間と前記マスタモジュールの前記マスタタイマ値とを前記スレーブモジュールに送信し、前記スレーブモジュールは、前記マスタモジュールから前記伝送遅延時間及び前記マスタタイマ値を受信したとき、前記伝送遅延時間と前記マスタタイマ値との和を自モジュールのタイマのスレーブタイマ値として更新設定することにより、自モジュールのスレーブタイマ値を前記マスタタイマ値と同期化することを特徴としている。
【発明の効果】
【0011】
本発明の請求項1にかかるプログラマブルコントローラシステムによれば、全モジュールで同期化させたタイマ値に基づき所定の定周期のタイミングでマスタモジュールでは出力データ生成手段を起動し、同一タイミングでスレーブモジュールでは出力手段を起動するため、マスタモジュールの出力データ生成手段での出力データの生成と、スレーブモジュールでのマスタモジュールからの出力データまたはこの出力データをもとに演算した外部接続機器制御データの外部接続機器への出力とを、同一タイミングで実行させることができ、各モジュールを高精度に同期させることができる。このため、外部接続機器どうしをより高精度に同期動作及び協調動作させることができる。
【0012】
また、本発明の請求項2にかかるプログラマブルコントローラシステムによれば、全モジュールで同期化させたタイマ値に基づきマスタモジュールでは定周期割込みの発生タイミングで出力データ生成手段を起動し、スレーブモジュールでは、マスタモジュールの定周期割込みの発生タイミングと同一のタイミングを基準に所定時間経過後に発生されるスレーブ割込みのタイミングで出力手段を起動するため、マスタモジュールの出力データ生成手段での出力データの生成と、各スレーブモジュールでのマスタモジュールからの出力データまたはこの出力データをもとに演算した外部接続機器制御データの外部接続機器への出力とを、所定時間のずれをもって同一の定周期で実行させることができる。
【0013】
さらに、請求項3にかかるプログラマブルコントローラシステムは、マスタモジュールとスレーブモジュールそれぞれとの間の伝送遅延時間を演算し、この伝送遅延時間とマスタモジュールのマスタタイマ値とをスレーブモジュールに送信し、スレーブモジュールは、マスタモジュールからの伝送遅延時間とマスタタイマ値との和を自モジュールのタイマのスレーブタイマ値として更新設定するようにしたため、マスタタイマ値とスレーブタイマ値とを高精度に一致させることができ、すなわち高精度に同期化させることができる。
【図面の簡単な説明】
【0014】
【図1】本発明を適用したプログラマブルコントローラシステムの一例を示す構成図である。
【図2】モジュールの接続状態を表す説明図である。
【図3】モジュールの概略構成を示すブロック図である。
【図4】モジュールの動作説明に供する説明図である。
【図5】マスタモジュールで実行されるシステム同期処理の処理手順の一例を示すフローチャートである。
【図6】スレーブモジュールで実行される同期化処理の処理手順の一例を示すフローチャートである。
【図7】同期化時の動作説明に供する説明図である。
【図8】タイマ値収集メッセージで収集されたタイマ情報の一例である。
【図9】伝送遅延時間の演算方法を説明するための説明図である。
【図10】同期化時の動作説明に供する説明図である。
【図11】同期化時の動作説明に供する説明図である。
【図12】システム制御処理時の動作説明に供する説明図である。
【図13】マスタモジュールで実行されるシステム制御処理の処理手順の一例を示すフローチャートである。
【図14】スレーブモジュールで実行されるシステム制御処理の処理手順の一例を示すフローチャートである。
【図15】第2の実施の形態におけるマスタモジュールで実行されるシステム制御処理の処理手順の一例を示すフローチャートである。
【図16】第2の実施の形態におけるシステム制御処理時の動作説明に供する説明図である。
【図17】第2の実施の形態におけるスレーブモジュールで実行されるシステム制御処理の処理手順の一例を示すフローチャートである。
【図18】従来のシステム制御処理時の動作説明に供する説明図である。
【発明を実施するための形態】
【0015】
以下、本発明の実施の形態を説明する。
まず、第1の実施の形態を説明する。
図1は、本発明を適用したプログラマブルコントローラシステムの一例を示す構成図であって、例えばX−Y軸平面上で位置決めを行う加工機など、モーションシステムの駆動制御を行うプログラマブルコントローラシステムである。
このプログラマブルコントローラシステムは、例えば、モジュール“A”〜モジュール“E”の5つのモジュールを備えて構成される。モジュール“A”はCPUモジュール、モジュール“B”〜モジュール“E”はIOモジュールであって、CPUモジュール“A”がリング上に唯一存在するマスタモジュールとして動作する。IOモジュールは、CPUモジュールからの制御データに応じて、その各IOモジュールに接続された外部接続機器xを駆動制御する。前記外部接続機器xは、例えば前記加工機の各部を駆動するためのモータを制御するためのインバータや、サーボ機構などである。
【0016】
このプログラマブルコントローラシステムでは、マスタモジュールであるCPUモジュール“A”がモジュール間でのタイマの同期化を図る。また、各モジュールはモジュール間でデータの授受を行い、CPUモジュールはIOモジュールから所定の各種機器データを受信するデータ受信処理、受信した各種機器データに基づき所定の演算処理を行って各IOモジュールへの前記制御データ等を生成する制御演算処理、生成した制御データをIOモジュールに送信するデータ送信処理等を行う。IOモジュールは、CPUモジュールからの制御データを受信するデータ受信処理、受信した制御データに演算加工し前記外部接続機器xの駆動制御用の外部接続機器制御データを生成し、これを外部接続機器xに出力する等の外部接続機器xの駆動制御を行うと共に外部接続機器xの各部の位置情報等の各種機器データを収集する等の駆動処理、収集した各種機器データをCPUモジュールに送信するデータ送信処理等を行う。
このとき、各モジュールでは、受信データに対する処理を、定周期のタクト割込み発生タイミングで実行する。このタクト割込み発生タイミングは、各モジュールのタイマ値に基づき決定される。
【0017】
まず、プログラマブルコントローラシステムの詳細な構成を説明する。
図1において、各モジュールは、モジュール“E”、モジュール“A”、モジュール“B”、モジュール“C”、モジュール“D”の順にデイジーチェーン接続され、隣接するモジュール間は、それぞれ1対1にピアツーピアで接続される。すなわち、モジュール“E”及びモジュール“A”間は、ケーブルL1で接続され、モジュール“A”及びモジュール“B”間はケーブルL2で接続され、モジュール“B”及びモジュール“C”間はケーブルL3で接続され、モジュール“C”及びモジュール“D”間はケーブルL4で接続される。
【0018】
各モジュールは、第1の接続端子11と第2の接続端子12との2つのケーブル接続口を備え、一方のモジュールの第1の接続端子11と他方のモジュールの第2の接続端子12とを対応させて接続される。すなわち、モジュール“E”の第2の接続端子12とケーブルL1の一端とを接続し、モジュール“A”の第1の接続端子11とケーブルL1の他端とを接続することによりモジュール“E”とモジュール“A”とをピアツーピア接続する。同様にモジュール“A”の第2の接続端子12及びモジュール“B”の第1の接続端子11間、モジュール“B”の第2の接続端子12及びモジュール“C”の第1の接続端子11間、モジュール“C”の第2の接続端子12及びモジュール“D”の第1の接続端子11間を接続することにより、隣接するモジュール間がピアツーピアで接続されたプログラマブルコントローラシステムが形成される。
【0019】
各ケーブルLn(n=1〜4)は、図2に示すように、第1の配線L11と当該第1の配線L11と同一長さの第2の配線L22とを有する。
各モジュールは、図2に示すように、ケーブルLn及びケーブルLn+1の第1の配線L11どうし及び第2の配線L22どうしを、モジュールを介して接続する。また、端部のモジュールであって、一方の接続端子11又は12のみにケーブルLnが接続されているモジュール“D”又は“E”は、接続されたケーブルLnの第1の配線L11と第2の配線L22とを内部で接続する。すなわち、モジュール“D”は、ケーブルL4の第1の配線L11と第2の配線L22とを接続する。また、モジュール“E”は、ケーブルL1の第1の配線L11と第2の配線L22とを接続する。
これによって、各モジュール“A”〜“C”を介して接続された一連の第1の配線L11と、一連の第2の配線L22とが、端部のモジュール“D”及び“E”で接続されて、各ケーブルLnの第1の配線L11と第2の配線L22とからなるリング状の伝送路を形成している。このリング状の伝送路が入出力データ交換バスとして用いられる。
【0020】
なお、図2において、13は処理部である。この処理部13は、ケーブルLnを介して伝送されるメッセージの送受信処理及び受信した自モジュール宛のメッセージにしたがって所定の演算や外部接続機器xへのデータの出力など所定の処理を行なう。また、予め設定されたタイミングでマスタモジュール及びスレーブモジュールを含むモジュール間でのタイマ値の同期化処理を行うと共に、同期化されたタイマ値を用いて前記タクト割込み発生タイミングを決定し、決定したタクト割込み発生タイミングでモジュール間でのデータ授受及び受信データに対する所定のデータ処理を行う。処理部13は、図3に示すように伝送処理部13aとバッファ13bとを備えている。リング状の伝送路を介してのデータの伝送制御は伝送処理部13aで行っており、伝送処理部13aは、バッファ13bに格納された送信データをリング状の伝送路を介して送信すると共に、リング状の伝送路から受信した受信データをバッファ13bに取り込むようになっている。
【0021】
各モジュールは、図3に示すように、ケーブルLnが接続される第1の接続端子11及び第2の接続端子12と、処理部13と、ラッチ回路15及び16と、タイマ17と、切り替え回路18と、を備える。
ラッチ回路15は、第1の接続端子11に接続される第1の配線L11から伝送メッセージを入力すると共に、伝送メッセージを切り替え回路18に出力する。
そして、ラッチ回路15は、伝送メッセージの予め設定された特定領域を参照し、この特定領域のデータが予め設定した特定情報であるとき、タイマ17のタイマ値をラッチすると共に、第1のタイマ値有効フラグF1を“1”とし、第1のタイマ値有効フラグF1とラッチタイマ値とを処理部13に出力する。伝送メッセージの特定領域のデータが前記特定情報でないときにはタイマ値のラッチは行なわない。
【0022】
一方、ラッチ回路16は、第2の接続端子12に接続される第2の配線L22からの伝送メッセージを入力すると共に、伝送メッセージを切り替え回路18に出力する。
そして、ラッチ回路16は、伝送メッセージの予め設定された前記特定領域を参照し、この特定領域のデータが前記特定情報であるとき、タイマ17のタイマ値をラッチし、第2のタイマ値有効フラグF2を“1”とし、第2のタイマ値有効フラグF2とラッチタイマ値とを処理部13に出力する。伝送メッセージの前記特定領域のデータが特定情報でないときにはタイマ値のラッチは行なわない。
【0023】
これらラッチ回路15及び16は、上述のように特定のメッセージを受信したかを監視し、受信したときにタイマ17のタイマ値を獲得し、タイマ値及びタイマ値有効フラグを“1”として通知するだけの回路である。したがって、これらラッチ回路15及び16を追加したとしても、メッセージの伝送に影響を与えるものではない。また、処理部13と無関係にタイマ値のラッチのみを行なうため回路全体に対する影響も小さい。
タイマ17は、水晶振動子を含んで構成され、タイマ値をラッチ回路15及び16に出力する。
【0024】
切り替え回路18は、自モジュールが、端部のモジュールであるか否かに応じて、処理部13、ラッチ回路15及び16、第1の接続端子11、第2の接続端子12との間で接続先を切り替える。なお、自モジュールが端部のモジュールであるか否かは、例えば、各モジュールにおいて、第1の接続端子11と第2の接続端子12との何れか一方のみにケーブルが接続されている状態であるか否かを、例えば電気的に未接続状態であるか否かを検出すること等により検出すればよい。また、切り替え回路18における切り替えは、ソフトウェア的に切り替えるようにしてもよく、また物理的に接続先を切り替えるように構成してもよい。
【0025】
そして、切り替え回路18は、自モジュールが端部に位置していないとき、すなわちモジュール間に接続された中間モジュールである場合には、図4(a)に示すように、ラッチ回路15からの伝送メッセージをそのまま処理部13に伝達し、処理部13からの伝送メッセージを第2の接続端子12の第1の配線L11に送出する。
また、切り替え回路18は、ラッチ回路16からの伝送メッセージをそのまま第1の接続端子11の第2の配線L22に送出する。
【0026】
一方、自モジュールが右端のモジュールである場合、すなわち、図1において、モジュール“D”である場合には、第2の接続端子12には、ケーブルLnが接続されないため、切り替え回路18は、図4(b)に示すように、ラッチ回路15からの伝送メッセージを処理部13に伝達し、処理部13からの伝送メッセージを第1の接続端子11の第2の配線L22に送出する。
【0027】
同様に、自モジュールが左端のモジュールである場合、すなわち、図1において、モジュール“E”である場合には、第1の接続端子11には、ケーブルLnが接続されていないため、切り替え回路18は、図4(c)に示すように、ラッチ回路16からの伝送メッセージをそのまま処理部13に伝達し、処理部13からの伝送メッセージを第2の接続端子12の第1の配線L11に送出する。
【0028】
そして、処理部13は、切り替え回路18を介して受信した伝送メッセージに基づき前記送受信処理及びメッセージ処理等を行ない、必要に応じて伝送メッセージを生成しこれを切り替え回路18に出力する。また、このとき、受信した伝送メッセージを一旦バッファ13bに格納し、設定された定周期タイミングでバッファ13bに記憶されたデータを読み出し、これに基づき所定のデータ処理を実行する。
【0029】
また、処理部13は、ラッチ回路15及び16からの第1のタイマ値有効フラグF1及びラッチタイマ値、第2のタイマ値有効フラグF2及びラッチタイマ値を入力する。
そして、自モジュールがマスタモジュールであるときには、システム同期処理を実行して各モジュールからラッチタイマ値を収集し、これに基づきモジュール間でのタイマ値の同期を図る。
【0030】
一方、自モジュールがマスタモジュールでないとき、つまりスレーブモジュールであるときには、マスタモジュールからタイマラッチ指示メッセージを受信したときに同期化処理を実行し、マスタモジュールからの指示にしたがって、マスタモジュールとの間のタイマ値の同期化を図る。
そして、このようにしてモジュール間で同期化されたタイマ値を用いて、バッファ13bに格納された他モジュールからの受信データを読み込み、これに基づき所定の処理を実行する。
【0031】
次に、プログラマブルコントローラシステムで実行されるモジュール間でのタイマ値の同期化について、図5及び図6を伴って説明する。図5は、マスタモジュールで実行されるシステム同期処理、図6は、スレーブモジュールで実行される同期化処理の処理手順を示すフローチャートである。
マスタモジュールでは、このシステム同期処理を起動時及び予め設定された定周期で実行する。
【0032】
マスタモジュールでは、図5に示すように、まず、ステップS1で、各モジュールに対してタイマ17のラッチを指示するタイマラッチ指示メッセージを送信する。このとき、マスタモジュールは、タイマラッチ指示メッセージを、各モジュール宛にブロードキャスト通信により送信する。また、マスタモジュールでは、タイマラッチ指示メッセージの予め設定した領域に、このメッセージがタイマラッチ指示メッセージであることを特定するための特定情報を設定して送信する。
【0033】
スレーブモジュールでは、タイマラッチ指示メッセージを受信すると、ラッチ回路15又は16で、タイマラッチ指示メッセージの予め設定された特定領域のデータが所定の特定情報であるか否かを判断する。このとき、ラッチ回路15及び16には、参照すべき特定領域及び特定情報として、マスタモジュールから送信される前記タイマラッチ指示メッセージの、当該メッセージがタイマラッチ指示メッセージであることを特定する特定情報が格納されている領域と、前記タイマラッチ指示メッセージであることを特定する特定情報とを設定しておく。
【0034】
ラッチ回路15又は16は、受信したメッセージの特定領域を参照し、そのデータがタイマラッチ指示メッセージであることを特定する特定情報と一致するとき、受信したメッセージはタイマラッチ指示メッセージであると認識し、この時点におけるタイマ17のタイマ値をラッチする。そして、ラッチ回路15でタイマ値をラッチしたときには第1のタイマ値有効フラグF1を“1”、ラッチ回路16でタイマ値をラッチしたときには第2のタイマ値有効フラグF2を“1”、として、タイマ値有効フラグとラッチタイマ値とを対応付けて処理部13に出力する。
【0035】
このとき、図2に示すように、第1の配線L11を介して伝送されるタイマラッチ指示メッセージは、端部のモジュールで折り返されて第2の配線L22を介して伝送されるため、モジュール間に配置されたスレーブモジュールでは、第1の配線L11からタイマラッチ指示メッセージを受信した後、再度第2の配線L22から同一のタイマラッチ指示メッセージを受信することになる。
このため、モジュール間に配置されたスレーブモジュールでは、ラッチ回路15及び16のそれぞれによりタイマ値がラッチされることになる。
【0036】
一方、端部に配置されたスレーブモジュールでは、内部で折り返しているため、タイマラッチ指示メッセージは、ラッチ回路15及び16の何れか一方のみにより検出され、タイマ値がラッチされることになる。
スレーブモジュールの処理部13では、タイマラッチ指示メッセージを受信し、これに伴いラッチ回路15、16から、ラッチタイマ値及びタイマ値有効フラグを入力すると、これら情報を所定の記憶領域に保持する(図6ステップS11)。
マスタモジュールでは、各モジュールを周回したタイマラッチ指示メッセージを受信するとこれを伝送路から削除し、次に、タイマ値収集メッセージを送信し、各モジュールに対して、各モジュールでラッチしたタイマ情報の付加を指示する(図5ステップS2)。
【0037】
スレーブモジュールでは、タイマ値収集メッセージを受信すると、図6のステップS12に移行し、受信したタイマ値収集メッセージに、ラッチ回路15及び16の両方又は何れかから通知されたタイマ値有効フラグ及びラッチタイマ値をタイマ情報とし、これをタイマ値収集メッセージの予め設定された領域に、その領域の先頭から順に格納する。
前述のように、モジュール間に位置するモジュールでは、往路と復路との2回、同一のタイマラッチ指示メッセージを受信するため、タイマ情報は、往き時におけるタイマ値有効フラグ及びラッチタイマ値と、戻り時におけるタイマ値有効フラグ及びラッチタイマ値とで構成される。
【0038】
一方、右端又は左端に位置するモジュールでは、往路又は復路の何れか一回のみタイマラッチ指示メッセージを受信する。このため、右端又は左端のモジュールでは、ラッチ回路15又は16の何れか一方でのみタイマ値をラッチする。処理部13では、ラッチ回路15からラッチタイマ値を受信しなかったときには第1のタイマ値有効フラグF1を“0”とし、ラッチ回路16からラッチタイマ値を受信しなかったときには第2のタイマ値有効フラグF2を“0”とする。そして、“0”に設定されたタイマ値有効フラグと、ラッチ回路15又は16から通知されたラッチタイマ値及びこれに対応する“1”に設定されたタイマ値有効フラグと、をタイマ情報として格納する。
【0039】
そして、自モジュールにおけるタイマ情報を格納した後、これを次モジュールに送出する。
各スレーブモジュールがこの処理を行なうことにより、各モジュールにおけるタイマ情報が、タイマ値収集メッセージの所定の領域に格納され、且つ経由したスレーブモジュールの並び順に、各モジュールにおけるタイマ情報が格納されることになる。
マスタモジュールは、各スレーブモジュールを周回したタイマ値収集用メッセージを受信するとこれを回収する。そして、各スレーブモジュールが格納したタイマ情報の最後に、自モジュールにおけるタイマ情報を格納する(図5ステップS3)。
【0040】
マスタモジュールは、続いて、各スレーブモジュール及び自モジュールにおけるタイマ情報に基づき、マスタモジュールから送信したタイマラッチ指示メッセージが各スレーブモジュールに到達するまでの所要時間である伝送遅延時間を、到達先のモジュール毎にそれぞれ算出する(図5ステップS4)。この算出方法は後述する。
マスタモジュールは、モジュールごとに伝送遅延時間を算出すると算出した伝送遅延時間を各モジュールに通知するための伝送遅延時間設定メッセージを各モジュール宛に送出する(図5ステップS5)。
【0041】
スレーブモジュールは、伝送遅延時間設定メッセージを受信すると、自モジュールの伝送遅延時間を獲得する(図6ステップS13)。
マスタモジュールは、各モジュールを周回して戻ってきた伝送遅延時間設定メッセージを伝送路上から削除する。そして、現時点におけるタイマ17のタイマ値を獲得し、これをマスタタイマ値とし、このマスタタイマ値を伝送するためのマスタタイマ値配布メッセージを生成し、これを各モジュール宛にブロードキャストにより送信する(図5ステップS6)。そして、システム同期処理を終了する。
【0042】
スレーブモジュールは、マスタタイマ値配布メッセージをブロードキャストにより受信すると、受信したマスタタイマ値配布メッセージからマスタタイマ値を獲得し、獲得したマスタタイマ値と、先に伝送遅延時間設定メッセージから獲得した自モジュールの伝送遅延時間とを加算し、これを現時点におけるタイマ値とし、自モジュールのタイマ17のタイマ値を更新設定する(図6ステップS14)。そして、処理部13では、同期化処理を終了する。
【0043】
次に、上記タイマ値の同期化時の動作を説明する。
図1に示すモジュール“A”〜“E”からなる論理的なリング状のネットワークが構成されたネットワークシステムにおいて、各モジュールのタイマ値の同期を行なうものとする。
マスタモジュール“A”では、まず、タイマラッチ指示メッセージを各モジュール宛にブロードキャストで送信し(図5ステップS1)、次に、各モジュールでのタイマ情報の付加を指示するタイマ値収集メッセージを各モジュール宛に送信する(図5ステップS2)。
【0044】
このネットワークシステムは、論理的なリング状のネットワークを構成しているため、各スレーブモジュールでは、タイマラッチ指示メッセージを、第1の配線側L11と第2の配線側L22との両方から入力し、且つ端部のモジュールでは、タイマラッチ指示メッセージをそのモジュール内で折り返しているため、第1の配線L11側又は第2の配線L22側との何れか一方から入力することになる。
【0045】
したがって、マスタモジュール“A”がタイマラッチ指示メッセージを送出してからの経過時間は、図7のように表されることになる。なお、図7において縦軸は経過時間、横軸はネットワークシステム上におけるタイマラッチ指示メッセージの伝達状況を表す。
また、各スレーブモジュールではタイマラッチ指示メッセージを受信すると、図8に示すように、ラッチ回路15、16のうち、タイマ値をラッチしたラッチ回路に対応するタイマ値有効フラグを“1”とし、ラッチ回路15、16でタイマラッチ指示メッセージを受信した時点におけるタイマ17のタイマ値と、第1、第2のタイマ値有効フラグとを処理部13に通知し、処理部13では、通知されたタイマ値有効フラグとラッチタイマ値とを対応付けて記憶する(図6ステップS11)。
【0046】
続いて、スレーブモジュールでは、ラッチ回路15又は16から獲得したラッチタイマ値及びタイマ値有効フラグからなるタイマ情報を、タイマ値収集メッセージの所定の領域に順次格納する(図6ステップS12)。
このため、マスタモジュール“A”に戻ってきたタイマ値収集メッセージには、各モジュールのタイマ情報が各モジュールの配置順に格納されている。
例えば、各モジュールがラッチ回路15でラッチしたラッチタイマ値をTA1〜TE1とし、ラッチ回路16でタイマ値をラッチしたタイミングをTA2〜TE2とすると、図11に示すように、タイマラッチ指示メッセージには、モジュールの並び順に各モジュールを特定する局番とタイマ情報とが対応付けられて格納され、タイマ情報としてタイマ値有効フラグとラッチタイマ値とが格納される。
【0047】
モジュール“B”は、モジュールとモジュールとの間に配置されたモジュールであって、ラッチ回路15及び16の両方によりタイマラッチ指示メッセージが検出されるため、ラッチ回路15でラッチしたラッチタイマ値TB1及び第1のタイマ値有効フラグF1=“1”と、ラッチ回路16でラッチしたラッチタイマ値TB2及び第2のタイマ値有効フラグ値F2=“1”とが格納され、同様に、モジュール“C”、また、モジュール“A”においても、それぞれラッチ回路15及び16によるラッチタイマ値と、第1のタイマ値有効フラグF1=“1”及び第2のタイマ値有効フラグF2=“1”と、が格納される。
【0048】
一方、モジュール“D”は右端のモジュールであり、ラッチ回路15でのみタイマ値がラッチされるため、ラッチタイマ値TD1と第1のタイマ値有効フラグF1=“1”とが格納され、ラッチ回路16による第2のタイマ値有効フラグF2は“0”として格納される。
同様に、モジュール“E”は左端のモジュールであり、ラッチ回路16でのみタイマ値がラッチされるため、ラッチタイマ値TE2と第2のタイマ値有効フラグF2=“1”とが格納され、ラッチ回路15による第1のタイマ値有効フラグF1は“0”として設定される。
【0049】
したがって、各モジュールを周回したタイマ値収集メッセージを参照することにより、タイマ値有効フラグの一方が“0”であるモジュールは端部のモジュールであると判断することができる。そして、第1のタイマ値有効フラグF1が“0”の場合には、第1の接続端子11にケーブルLnが接続されていないことを意味するため、左端のモジュールであると判断することができる。同様に、第2のタイマ値有効フラグF2が“0”の場合には、第2の接続端子12にケーブルLnが接続されていないことを意味するため、右端のモジュールであると判断することができる。
【0050】
このため、マスタモジュール“A”では、図8のタイマ値収集メッセージに格納された各モジュールのタイマ情報の格納順及びタイマ値有効フラグが“0”であるか否かに基づき、マスタモジュール“A”から、モジュール“B”、“C”、“D”、“E”、“A”の並びでリング状のネットワークが形成され、且つモジュール“D”が右端のモジュール、モジュール“E”が左端のモジュールであることを認識することができ、すなわち、図1に示す並び順で各モジュールが接続されていることを認識することができる。
【0051】
そして、マスタモジュール“A”では、図8に示す、各モジュールにおけるタイマ情報を獲得すると、これに基づき各モジュールの配置順を検出し、これに基づき伝送遅延時間を演算する(図5ステップS4)。
ここで、この時点では、各モジュール間においてタイマ値の同期はとられていないため、それぞれのモジュールにおけるタイマ値の間に何ら相関関係はない。
しかしながら、同一モジュール内のタイマ値、例えば、TB1とTB2とは、同一のタイマ17の値をラッチしているため、このタイマ値TB1とTB2との差分は、モジュール“B”において、ラッチタイマ指示メッセージを上流側から受信した時点から同一のメッセージが下流側から戻ってくるまでの所要時間(以下、受信経過時間いう。)を表している。
【0052】
ネットワークシステム上の、各モジュールにおける受信経過時間どうしは比較可能なデータであり、例えばモジュール“B”における受信経過時間ΔTBと、モジュール“C”における受信経過時間ΔTCとは比較することができる。
モジュール“B”における受信経過時間ΔTBとモジュール“C”における受信経過時間ΔTCとの差分DIFFBC(=ΔTB−ΔTC)は、図7及び図9に示すように、「モジュール“B”が上流からメッセージを受信してから、このメッセージがモジュール“C”に到達するまで(図9中の太線m1部分)の所要時間」と「モジュール“C”が下流からメッセージを受信してからこのメッセージがモジュール“B”に到達するまで(図9中の太線m2部分)の所要時間」との和に相当することになる。
したがって、差分DIFFBCは次式(1)で表すことができる。
DIFFBC=(TB2−TB1)−(TC2−TC1) ……(1)
【0053】
また、差分DIFFBCは、図7に示すように、モジュール“B”−“C”間のケーブルL3におけるモジュール間伝送時間と、モジュール“B”にメッセージが到達してからメッセージが送出されるまでの所要時間、すなわち、メッセージの中継及びメッセージを受信するか否かの判定に要する時間(以下、メッセージ判定処理時間という。)と、モジュール“C”に下流側からメッセージが到達してからモジュール“C”がこれを中継してメッセージが送出されるまでの所要時間(以下、中継処理時間という。)との和で表すことができる。
【0054】
ここで、モジュール“B”のメッセージ判定処理時間をTαとし、モジュール“B”−“C”間におけるケーブルL3におけるモジュール間伝送時間をLBCとし、モジュール“C”での中継処理時間は差分DIFFBCに比較して十分小さいものとすると、差分DIFFBCは略次式(2)で表すことができる。つまり、ケーブルL3は、第1の配線L11と第2の配線L22とが同一長さであるため、第1の配線L11と第2の配線L22とでモジュール間伝送時間は同一とみなすことができる。したがって、次式(2)が成り立つ。
DIFFBC=2×LBC+Tα ……(2)
【0055】
したがって(1)及び(2)式から、隣接するモジュール“B”−“C”間のケーブルL3におけるモジュール間伝送時間LBCは、次式(3)で表すことができる。
LBC={(TB2−TB1)−(TC2−TC1)−Tα}/2 ……(3)
隣接するモジュール“C”−“D”間のケーブルL4におけるモジュール間伝送時間LCDも、前記式(3)と同様の手順で算出することができる。
また、以上の例では、マスタモジュール“A”よりも右側に配置されたモジュールにおいて、隣接するモジュール間のモジュール間伝送時間を算出しているが、左側に配置されたモジュールの場合も同様の手順で算出することができる。
【0056】
ただし、マスタモジュール“A”とこれに隣接するモジュールとの間のモジュール間伝送時間は、マスタモジュール“A”がラッチタイマ指示メッセージを上流側から受信した時点から同一のメッセージが下流側から戻ってくるまでの所要時間である左側受信経過時間と、マスタモジュール“A”がラッチタイマ指示メッセージを下流側に送出した時点から同一のメッセージが下流側から戻ってくるまでの所要時間である右側受信経過時間と、を用いて算出する。
【0057】
前記左側受信経過時間は、マスタモジュール“A”におけるタイマ値TA1及びTA2の差分「TA2−TA1」で算出することができる。また、右側受信経過間は、マスタモジュール“A”がラッチタイマ指示メッセージを下流側に送出した時点から、論理的なリング状の伝送路を一周してマスタモジュール“A”に戻りこれに対するマスタモジュール“A”での処理が終了するまでの所要時間(以後、メッセージ一周時間という)をTとしたとき、「T−(TA2−TA1)」で表すことができる。
【0058】
なお、メッセージ一周時間は、マスタモジュール“A”の処理部13において計測すればよく、処理部13からラッチタイマ指示メッセージを下流側に送出した時点を開始時点、ラッチタイマ指示メッセージが論理的なリング状の伝送路を一周してマスタモジュールに戻り、これに対するマスタモジュール“A”での処理が終了した時点を終了時点として開始時点から終了時点までの所要時間を演算すればよい。
【0059】
そして、マスタモジュール“A”と隣接するスレーブモジュール“B”との間のモジュール間伝送時間を演算するときには、右側受信経過時間「T−(TA2−TA1)」と、モジュール“B”における受信経過時間とに基づき上記(3)式と同様の手順で算出する。また、マスタモジュール“A”とモジュール“E”との間のモジュール間伝送時間を演算するときには、左側受信経過時間「TA2−TA1」とモジュール“E”における受信経過時間とに基づき上記(3)式と同様の手順で算出する。
【0060】
このようにして、モジュール“A”−“B”間、モジュール“B”−“C”間、モジュール“C”−“D”間、モジュール“E”−“A”間についてそれぞれモジュール間伝送時間を算出したならば、これらに基づき、マスタモジュール“A”と各モジュールとの間の伝送遅延時間を算出する。
具体的には、マスタモジュール“A”とターゲットモジュールとの間に介在する各ケーブルのモジュール間伝送時間及び介在するモジュールにおける処理時間との和を算出しこれをターゲットモジュールまでの伝送遅延時間とする。
【0061】
例えば、ターゲットモジュールを“C”とする。ネットワークシステムにおける各モジュールの配置位置は、タイマ値収集メッセージに付加された各モジュールにおけるラッチ情報の並び順から把握することができる。
図1に示すように、マスタモジュール“A”とターゲットモジュール“C”との間にはモジュール“B”が介在する。このため、伝送遅延時間は、モジュール“A”−“B”間のケーブルL2におけるモジュール間伝送時間と、モジュール“B”におけるメッセージ判定処理時間と、モジュール“B”−“C”間のケーブルL3におけるモジュール間伝送時間と、の和で表されることがわかる。
【0062】
ここで、各モジュールにおける処理部13の演算処理性能が同一であるものとすると、各モジュールにおけるメッセージ判定処理時間は同等とみなすことができるため、“Tα”として表すことができる。
したがって、マスタモジュール“A”からターゲットモジュールまでの間の伝送遅延時間は、マスタモジュール“A”からターゲットモジュールまでの間に介在する各ケーブルにおけるモジュール間伝送時間と、マスタモジュール“A”からターゲットモジュールまでの間に介在するモジュールの数×メッセージ判定処理時間“Tα”との和から算出することができる。
【0063】
つまり、マスタモジュール“A”とモジュール“C”との間の伝送遅延時間は、モジュール“A”−C”間のケーブルL2におけるモジュール間伝送時間と、モジュール“B”−“C”間のケーブルL3におけるモジュール間伝送時間と、モジュールの数(この場合“1”)×Tαとの和で表すことができる。
なお、モジュールにおけるメッセージ判定処理時間Tαは、予め実測しておくこと、或いは、設計時に、メッセージの中継及び受信するか否かの判定に要する所要時間を論理的に算出しておくこと等により予め設定しておけばよい。
【0064】
マスタモジュール“A”では、このようにしてマスタモジュール“A”から各ターゲットモジュールまでの伝送遅延時間を算出する。そして、各ターゲットモジュールと算出した伝送遅延時間とを対応付け、この伝送遅延時間を各モジュールに伝達するための伝送遅延時間設定メッセージを生成し、これを各モジュール宛に送信する(図5ステップS5)。
各スレーブモジュールでは、伝送遅延時間設定メッセージを受信すると、自モジュールの伝送遅延時間を獲得し、これを所定の記憶領域に保存する(図6ステップS13)。
【0065】
マスタモジュールでは、各モジュールを周回した伝送遅延時間設定メッセージを受信すると、これを伝送路上から削除する。そして、現時点におけるタイマ17のタイマ値を獲得し、これを各モジュールに伝達するためのマスタタイマ値配布メッセージを生成し、このマスタタイマ値配布メッセージをブロードキャストで各モジュール宛に送信する(図5ステップS6)。
【0066】
各スレーブモジュールでは、マスタタイマ値配布メッセージを獲得すると、マスタタイマ値を獲得し、先に受信した自モジュールにおける伝送遅延時間とマスタタイマ値とを加算し、これを現時点におけるタイマ17のタイマ値として更新設定する(図6ステップS14)。
例えば、図10に示すように、各モジュールの伝送遅延時間が、モジュール“B”は“15”、モジュール“C”は“20”、モジュール“D”は“30”、モジュール“E”は“55”、モジュール“A”は“0”として通知されたものとする。
【0067】
マスタモジュール“A”からマスタタイマ値として“5000”が通知されたとすると、図11に示すように、モジュール“B”は、タイマ17のタイマ値を“5015”に更新設定する。同様に、モジュール“C”は“5020”、モジュール“D”は“5030”、モジュール“E”は“5055”として設定する。
ここで、マスタモジュール“A”のタイマ値が“5000”であったとしても、マスタタイマ値通知メッセージがモジュール“B”に伝達されるまでには伝送遅延時間“15”を要し、マスタタイマ値通知メッセージが実際にモジュール“B”に伝達された時点では、マスタモジュールのタイマ値は“5015”となっている。したがって、マスタタイマ値“5000”と伝送遅延時間“15”とを加算した“5015”をモジュール“B”におけるタイマ値と設定してすることにより、マスタモジュール“A”のタイマ値と、モジュール“B”のタイマ値とを“5015”で同期させることができる。
【0068】
つまり、伝送遅延時間は、マスタモジュール“A”から送信されたタイマラッチ指示メッセージが各モジュールに伝達されるまでの所要時間である。したがって、通知されたマスタタイマ値と伝送遅延時間との和を各モジュールにおけるタイマ値として設定することにより、各モジュールでは、マスタモジュールから各モジュールにメッセージが伝送されるまでの所要時間を考慮して自モジュールにおけるタイマ値を更新設定しているため、各モジュールを高精度に同期させることができる。
【0069】
また、先に通知された伝送遅延時間は、ブロードキャスト通信によりタイマラッチ指示メッセージを送信したときの各モジュールにおけるタイマラッチ指示メッセージの送受信タイミングに基づき算出された値である。そして、マスタタイマ値配布メッセージもブロードキャストにより送信されているため、このマスタタイマ値配布メッセージがマスタモジュールから送信されてから各モジュールに伝達されるまでの所要時間は、タイマラッチ指示メッセージがマスタモジュールから送信されてから各モジュールに伝達されるまでの所要時間と同等である。したがって、タイマラッチ指示メッセージの各モジュールにおける送受信タイミングに基づき各モジュールにおけるタイマ値を更新設定することによって、同等の条件で算出された伝送遅延時間に基づきタイマ値を更新設定することになり、より高精度に同期させることができる。
【0070】
また、上記実施の形態においては、伝送遅延時間を前記(2)式に基づいて算出しており、前記(2)式では、モジュール“B”からモジュール“C”への伝送経路とモジュール“C”からモジュール“B”への伝送経路とが同一であるという前提で演算を行なっている。前述のように、モジュール“B”からモジュール“C”へのメッセージの伝送は、第1の配線L11により行い、モジュール“C”からモジュール“B”へのメッセージの伝送は第2の配線L22により行い、第1の配線L11と第2の配線L22とは同一の長さであるため、そのモジュール間伝送時間は同等とみなすことができる。
【0071】
したがって、伝送メッセージの論理的な伝送経路は、モジュール“C”からモジュール“B”へ伝送する場合には、モジュール“C”、モジュール“D”、モジュール“E”、モジュール“A”、モジュール“B“となり、モジュール“B”からモジュール“C”への伝送メッセージの伝送経路とは異なるが、この実施の形態においては、モジュール“B”からモジュール“C”へ及びモジュール“C”からモジュール“B”への物理的な伝送路における伝送時間を演算しており、モジュール“B”からモジュール“C”への伝送路である第1の配線L11とモジュール“C”からモジュール“B”への伝送路である第2の配線L22との長さは同一であってそのモジュール間伝送時間は同等であるため、モジュール“B”からモジュール“C”への伝送経路とモジュール“C”からモジュール“B”への伝送経路とが同一という前提で伝送遅延時間の演算を行なったとしても、的確に伝送遅延時間を演算することができる。
これにより、各モジュール間でのタイマ値の同期化が図られることになる。
【0072】
次に、CPUモジュール及びIOモジュールにおいて実行される、システム制御処理について説明する。
CPUモジュールでは、IOモジュールから各種機器データを獲得し、これに基づいて所定の制御演算処理を行って各IOモジュールへの制御データを生成し、生成した制御データをIOモジュールに送信する。この一連の処理を繰り返し行うことにより、IOモジュールを介してその外部接続機器xを制御する。
【0073】
このとき、CPUモジュールでは、この一連の処理をタクト周期毎に実行する。このタクト周期は、リング状の伝送路におけるデータの伝送速度と同一速度の一定間隔の周期に設定される。
具体的には、図12(a)に示すように、タクト周期毎に、受信データに基づく制御演算処理、制御演算処理により生成した制御データの送信処理、IOモジュールからの各種機器データの受信処理を行い、且つ制御演算処理を、タクト周期の開始タイミングで開始し、これらの処理を次のタクト周期の開始タイミングまでに終了するようになっている。
【0074】
一方、IOモジュールでは、CPUモジュールから制御データを受信し、この制御データにしたがって前記外部接続機器xの駆動制御を行うための駆動データの生成や、外部接続機器xの各部の位置情報等の各種機器データの収集などといった駆動処理を行い、収集した各種機器データをCPUモジュールに送信する。この処理を繰り返し行うことにより、CPUモジュールからの制御データに応じて外部接続機器xを駆動制御する。
【0075】
このとき、IOモジュールでは、この一連の処理をタクト周期毎に実行する。具体的には、図12(c)に示すように、タクト周期毎に、受信データに基づく駆動処理、この駆動処理により収集した各種機器データの送信処理、CPUモジュールからの制御データの受信処理を行い、且つ駆動処理をタクト周期の開始タイミングで開始し、これらの処理を、次のタクト周期の開始タイミングまでに終了するようになっている。
【0076】
ここでIOモジュールにおけるタクト周期は、前記CPUモジュールにおけるタクト周期と同一周期に設定され、且つタクト周期の開始タイミングも同一タイミングに設定される。
このため、図12に示すように、CPUモジュール及びIOモジュールでは、タクト周期毎に各モジュール間で、同一タイミングで制御演算処理及び駆動処理が開始されるようになっている。
【0077】
なお、図12において、(a)はCPUモジュールにおける処理の流れを表し、(b)はリング状の伝送路を構成するバス上での処理の流れを表し、(c)はIOモジュールにおける処理の流れを表す。また、図12中の“TF”とは、トータルフレーム方式で送信されるデータに対する処理を表す。“MC”とはマルチキャスト方式で送信されるデータに対する処理を表す。“演算時間”とは、各モジュールにおいて、受信データをもとに所定の演算処理を行っている時間を表す。また、図12において横軸は時間を表し、“TF”、“MC”の位置及び長さが、各モジュールにおいて、“TF”または“MC”に対する処理が行われるタイミング及びその処理時間を表し、“演算時間”の位置及び長さが、各モジュールにおいて受信データに対する所定の処理が行われるタイミング及びその処理時間を表す。
【0078】
CPUモジュールとIOモジュールとの間の制御データの送受信及び各種機器データの送受信は、特開平11−338523号公報に記載されたマルチキャスト方式及びトータルフレーム方式により行う。なお、マルチキャスト方式及びトータルフレーム方式による制御データの送受信方法及び各種機器データの送受信方法は、前記特開平11−338523号公報の記載と同様であるのでその詳細な説明は省略する。
【0079】
CPUモジュールとIOモジュールとの間において、前記制御データの送受信はマルチキャスト方式により行う。すなわち、CPUモジュールは、各IOモジュール宛の制御データからなるマルチキャストフレームを生成し、このマルチキャストフレームを送信する。このマルチキャストフレームを受信したIOモジュールは、自モジュール宛のデータであれば、それを取り込むと共にマルチキャストフレームをそのまま下流局に送信する。
【0080】
一方、CPUモジュールとIOモジュールとの間において、前記各種機器データの送受信はトータルフレーム方式により行う。すなわち、CPUモジュールは、トータルフレーム送信の要求を表すトータルフレームを送信する。このトータルフレームを受信したIOモジュールは、自モジュールにおける予め設置された所定の各種機器データをこのトータルフレームに付加した後、下流局に送信する。
【0081】
そして、ネットワークシステム上に唯一存在するマスタモジュール(図1の場合CPUモジュール“A”)は、モジュール間でのタイマ値の同期化が終了すると、図13に示すシステム制御処理を開始し、スレーブモジュール(図1の場合IOモジュール“B”〜“E”は、図14に示すシステム制御処理を開始する。
図13に示すように、マスタモジュールは、まず初期処理を実行する(ステップS21)。初期処理では、例えば外部接続機器xを初期位置に制御するため初期制御データの送信を行う。また、その応答として外部接続機器xの初期各種機器データを獲得する。
【0082】
次いで、ステップS22に移行し、タクト割込みの開始タイミングを決定するタイマ値を、タクト割込み発生開始タイミングとして決定する。例えば、自モジュールのタイマ17のタイマ値に基づき、予め設定した規定時間後のタイマ値を、タクト割込み発生開始タイミングとして設定する。
この設定したタクト割込み発生開始タイミングを、リング状の伝送路を介して他のモジュールに送信する(ステップS23)。
【0083】
次いで、自モジュールのタイマ17のタイマ値が、タクト割込み発生開始タイミングに達したか否かを判断し(ステップS24)、タイマ値がタクト割込み発生開始タイミングになったとき、このタクト割込み発生開始タイミングを起点としてタクト周期のカウントを開始し(ステップS25)、トークンフレーム方式により伝送され伝送処理部13aにより受信されてバッファ13bに格納された各種機器データを読み込み(ステップS26)、この各種機器データに基づき前記制御演算処理を行う(ステップS27)。
【0084】
次いで、この制御演算処理によって生成した各IOモジュールの制御データをバッファ13bに格納し、このバッファ13bに格納された制御データを、マルチキャスト方式を用いて、伝送処理部13aにより各IOモジュールに送信する(ステップS28)。
そして、自モジュールのタイマ17のタイマ値をもとに、次のタクト割込み発生タイミングに達したか否かを判断する(ステップS29)。このタクト割込み発生タイミングは、タクト割込み発生開始タイミングを起点としてカウント開始したカウント値をもとに行い、例えば、現時点におけるタイマ17のタイマ値が、タクト割込み発生開始タイミングにおけるタイマ値と、タクト周期に相当するタイマ値との和に達したとき、タクト割込み発生タイミングとして判断する。
【0085】
前記タクト周期は、設計者が予め設定し、各モジュールに設定しておく。図12に示すように、前記タクト周期は、プログラマブルコントローラシステムを構成するモジュールの種類や数に基づいて、トータルフレームデータ(以下、TFデータともいう。)や、マルチキャストデータ(以下、MCデータともいう。)の配信時間を演算し、このTFデータやMCデータの配信時間と、CPUモジュールでの制御演算処理や各IOモジュールでの駆動処理の所要時間等とに基づき、タクト周期の開始時点から、次のタクト周期の開始時点までの間に、CPUモジュールにおいて、前記制御演算処理及びこの制御演算処理により生成された制御データの送信、さらに外部接続機器xの各種機器データの受信が完了し、且つ、IOモジュールにおいて、前記駆動処理、この駆動処理により駆動された後の外部接続機器xの各部の位置情報等の各種機器データの送信、及び、CPUモジュールからの次の制御データの受信が完了するに十分な周期に設定される。
【0086】
そして、タクト割込み発生タイミングに達したときに、ステップS29からステップS26に移行し、再度、バッファ13bに記憶されたIOモジュールからの各種機器データを読み込み、これに基づき制御演算処理を行って各IOモジュール宛の制御データを生成する(ステップS27)。
以後、このステップS26〜S29の処理を繰り返し行うことにより、タクト割込み発生開始タイミングを起点としてタクト周期毎に、受信した各種機器データに基づく制御演算処理、制御演算処理で生成された制御データの送信及び、各種機器データの受信が行われることになる。
【0087】
一方、スレーブモジュールであるIOモジュールでは、図14に示すように、まず初期処理を実行する(ステップS31)。初期処理では、例えば、CPUモジュールからの初期制御データを受信し、この初期制御データに応じてその外部接続機器xを駆動制御する。また、初期駆動制御後の各外部接続機器xについて各種機器データを収集しこれを初期各種機器データとしてCPUモジュールに送信する。
【0088】
次いで、ステップS32に移行し、CPUモジュールからタクト割込み発生開始タイミングを規定するタイマ値を受信すると、自モジュールのタイマ17のタイマ値が、通知されたタクト割込み発生開始タイミング(タイマ値)に達したか否かを判断する(ステップS33)。そして、タクト割込み発生開始タイミング(タイマ値)となったとき、タクト周期のカウントを開始すると共に(ステップS34)、マルチキャスト方式によりCPUモジュールから伝送され伝送処理部13aにより受信されてバッファ13bに記憶されたCPUモジュールからの制御データを読み込み(ステップS35)、この制御データに基づき駆動処理を行う(ステップS36)。そして、駆動処理によって収集した各種機器データをバッファ13bに記憶し、これを伝送処理部13aによりトークンフレーム方式を用いてCPUモジュールに送信する(ステップS37)。
【0089】
そして、タイマ17のカウント値をもとに、自モジュールのタイマ値がタクト割込み発生タイミングとなったか否かを判断し(ステップS38)、タクト割込み発生タイミングとなったとき、ステップS35に移行して、マルチキャスト方式によりCPUモジュールから伝送されバッファ13bに記憶されたCPUモジュールからの制御データをもとに、所定の駆動処理を行う。なお、タクト割込み発生タイミングになったか否かの判断は、前記図13のステップS29におけるマスタモジュールでの処理と同様に、タイマ値が、タクト割込み発生開始タイミングにおけるタイマ値と、タクト周期に相当するタイマ値との和に達したか否かを判断することにより行う。
以後、ステップS35からステップS38の処理を繰り返し行うことにより、タクト割込み発生開始タイミングを起点として、タクト周期毎に、駆動処理、各種機器データの送信、制御データの受信が行われることになる。
【0090】
次に、上記第1の実施の形態の動作を説明する。
プログラマブルコントローラシステムでは、起動されるとまず、モジュール間でのタイマ値の同期化を行う。これにより、各モジュール間でタイマ17のタイマ値は同期化される。
タイマ値の同期化が終了すると、各モジュールでは、図13または図14のシステム制御処理を開始し、各モジュールでは、マスタモジュールで決定されたタクト割込み発生開始タイミングを起点としてタクト周期毎に設定されるタクト割込み発生タイミングで、所定の処理を実行し、CPUモジュールでは制御演算処理を行って各種機器データに基づき制御データを生成し、IOモジュールでは駆動処理を行って制御データに基づきその外部接続機器xを駆動制御して各種機器データの収集を行う。
【0091】
ここで、上述のように、各モジュール間でタイマ17のタイマ値は同期している。このため、CPUモジュールで制御演算処理を開始するタイミング及びIOモジュールで駆動処理を開始するタイミングは、図12に示すように一致する。また、タクト割込み発生タイミングはタクト周期毎に発生させており、タクト周期は、全てのIOモジュールが駆動処理、各種機器データの送信及び制御データの受信が完了し、且つCPUモジュールが制御演算処理、制御データの送信及び各種機器データの受信が完了するに十分な周期に設定しているため、図12(c)に示すように、次のタクト割込み発生タイミングまでに、各IOモジュールでは次の処理対象となる制御データの受信が完了している。
【0092】
したがって、タクト割込み発生タイミングでは、全てのIOモジュールは、同一時点における制御データに基づいて駆動処理を行って外部接続機器xを駆動制御することになる。なお、IOモジュールは、CPUモジュールで生成された制御データをもとに駆動処理を行なうため、あるタイミングにおいてCPUモジュールで生成された制御データに基づく駆動処理を、次のタイミングで実行することになる。
【0093】
このように、全IOモジュールは同一時点における制御データに基づき駆動処理を行なうことができるため、各IOモジュールが異なる時点での制御データに基づいてその外部接続機器xを駆動制御することを回避することができる。そのため、各IOモジュールを高精度に同期させることができるため、外部接続機器xをより高精度に駆動制御することができ、結果的に、プログラマブルコントローラシステムの制御対象である、モーションシステム全体をより高精度に駆動制御することができる。
【0094】
次に、本発明の第2の実施の形態を説明する。
この第2の実施の形態は、上記第1の実施の形態において、図13及び図14のマスタモジュール及びスレーブモジュールで実行されるシステム制御処理が異なること以外は同一であるので、同一部の詳細な説明は省略する。
この第2の実施の形態では、マスタモジュールは、図15に示すシステム制御処理を行う。
【0095】
すなわち、まず、ステップS20aで、CPUモジュールのタクト割込み発生開始タイミング及びIOモジュールのタクト割込み発生開始タイミングを設定するためのタイミング情報を読み込む。このタイミング情報は、プログラマブルコントローラシステムのオペレータが図示しない入力手段により入力操作を行うことにより入力する。このタイミング情報は、後述のタクト割込み発生開始タイミングに対して、CPUモジュール、IOモジュールにおけるタクト割込み発生開始タイミングを設定するためのものであり、タクト割込み発生開始タイミングと、CPUモジュールにおけるタクト割込み発生開始タイミングとのタイマ値のずれ量がCPUモジュールのタイミング情報として設定され、タクト割込み発生開始タイミングと、IOモジュールにおけるタクト割込み発生開始タイミングとのタイマ値のずれ量がIOモジュールのタイミング情報として設定される。
【0096】
ここで、第2の実施の形態では、CPUモジュール及びIOモジュールのタクト割込み発生タイミングは、異なるタイミングとなるように設定される。なお、タクト周期は同一値に設定され、その設定方法は上記第1の実施の形態と同様である。
そして、CPUモジュールのタクト割込み発生タイミングは、図16(a)に示すように、トータルフレームの受信完了後の受信完了タイミングに比較的近いタイミングに設定される。一方、IOモジュールのタクト割込み発生タイミングは、図16(c)に示すように、全てのIOモジュールがマルチキャストフレームの受信を完了した後の、この受信完了タイミングに比較的近いタイミングに設定される。
【0097】
これらCPUモジュール及びIOモジュールのタクト割込み発生タイミングは、前記タクト周期及び、トータルフレームデータや、マルチキャストデータの配信時間、CPUモジュールでの制御演算処理の開始タイミングに対する、次に受信するトータルフレームの受信完了までの所要時間、IOモジュールでの駆動処理の開始タイミングに対する、次に受信するマルチキャストデータの受信完了までの所要時間等に基づいて演算する。
【0098】
したがって、CPUモジュール及びIOモジュールのタイミング情報は、これらを満足するように設定される。例えば、タクト割込み発生開始タイミングとCPUモジュールのタクト割込み発生開始タイミングとを同一タイミングに設定すると、CPUモジュールのタイミング情報は“零”として設定される。また、IOモジュールのタイミング情報は、CPUモジュールのタクト割込み発生タイミングとIOモジュールのタクト割込み発生タイミングとの差相当のタイマ値に設定される。
【0099】
このようにして設定されたCPUモジュール及びIOモジュールのタイミング情報を読み込むと、ステップS20aからステップS20bに移行し、IOモジュールに対して、IOモジュールのタイミング情報を送信する。
次いで、ステップS21に移行して上記第1の実施の形態と同様の手順で初期処理を実行し、タイマ17の現タイマ値に基づきタクト割込み発生開始タイミングに相当するタイマ値を決定し(ステップS22)、これを各モジュールに通知する(ステップS23)。
【0100】
次いで、ステップS24aに移行し、ステップS22で設定されたタクト割込み発生開始タイミングを表すタイマ値と、ステップS20aで読み込んだCPUモジュールのタイミング情報との和を、CPUモジュールのタクト割込み発生開始タイミングとして演算し、自モジュールのタイマ17のタイマ値が、CPUモジュールのタクト割込み発生開始タイミングとなったか否かを判断する。
【0101】
そして、タイマ値がCPUモジュールのタクト割込み発生開始タイミングとなったときに、ステップS24aからステップS25aに移行し、このCPUモジュールのタクト割込み発生開始タイミングを起点としてタクト周期のカウントを開始し、トータルフレーム方式により伝送され伝送処理部13aにより受信されてバッファ13bに格納された各種機器データを読み込み(ステップS26)、これに基づき制御演算処理を行う(ステップS27)。そして、制御演算処理によって生成した各IOモジュール宛の制御データをバッファ13bに格納し、このバッファ13bに格納された制御データを、マルチキャスト方式を用いて、伝送処理部13aにより送信する(ステップS28)。
【0102】
そして、自モジュールのタイマ17のタイマ値をもとに、次のCPUモジュールのタクト割込み発生タイミングに達したか否かを判断する(ステップS29a)。このCPUモジュールのタクト割込み発生タイミングに達したか否かの判断は、CPUモジュールのタクト割込み発生開始タイミングを起点としてカウント開始したカウント値をもとに行い、例えば現時点におけるタイマ17のタイマ値が、CPUモジュールのタクト割込み発生開始タイミングにおけるタイマ値と、タクト周期に相当するタイマ値との和に達したとき、CPUモジュールのタクト割込み発生タイミングであると判断する。
【0103】
以後、このステップS26〜S29aの処理を繰り返し行うことにより、CPUモジュールのタクト割込み発生開始タイミングを起点として、タクト周期毎に、受信した各種機器データに基づく制御演算処理、制御演算処理で生成された制御データの送信、各種機器データの受信が行われることになる。
一方、スレーブモジュールであるIOモジュールでは、図17に示すように、まず、ステップS30で、CPUモジュールから前述のIOモジュールのタイミング情報を獲得する。
次いで、ステップS31に移行し、上記第1の実施の形態と同様に初期処理を行い、CPUモジュールからの初期制御データに応じて外部接続機器xを初期状態に制御し、初期制御後に、各種機器データを収集しこれを初期各種機器データとしてCPUモジュールに送信する。
【0104】
次いで、ステップS32に移行し、CPUモジュールからタクト割込み発生開始タイミングを規定するタイマ値を受信するとステップS33aに移行し、このCPUモジュールからのタクト割込み発生開始タイミングに、IOモジュールのタイミング情報を加算し、IOモジュールのタクト割込み発生開始タイミングを決定し、自モジュールのタイマ17のタイマ値が、IOモジュールのタクト割込み発生開始タイミングに達したかどうかを判断する。そして、タイマ値が、IOモジュールのタクト割込み発生開始タイミングに達したときステップS34に移行してタクト周期のカウントを開始し、マルチキャスト方式によりCPUモジュールから伝送され伝送処理部13aにより受信されてバッファ13bに記憶されたCPUモジュールからの制御データを読み込み(ステップS35)、これに基づき駆動処理を行う(ステップS36)。
【0105】
そして、駆動処理によって生成した各種機器データをバッファ13bに記憶し、これを伝送処理部13aによりトークンフレーム方式を用いてCPUモジュールに送信する(ステップS37)。
次いで、タクト周期のカウント値をもとに、自モジュールのタイマ値がIOモジュールのタクト割込み発生タイミングとなったか否かを判断し(ステップS38a)、IOモジュールのタクト割込み発生タイミングとなったとき、ステップS35に移行して、マルチキャスト方式によりCPUモジュールから伝送されバッファ13bに記憶されたCPUモジュールからの制御データをもとに、所定の駆動処理を行う。
【0106】
前記IOモジュールのタクト割込み発生タイミングとなったかどうかの判断は、IOモジュールのタクト割込み発生開始タイミングを起点としてカウント開始したカウント値をもとに行い、例えば現時点におけるタイマ17のタイマ値が、CPUモジュールのタクト割込み発生開始タイミングにおけるタイマ値と、タクト周期に相当するタイマ値との和に達したとき、IOモジュールのタクト割込み発生タイミングであると判断する。
以後、ステップS35からステップS38aの処理を繰り返し行うことにより、IOモジュールのタクト割込み発生開始タイミングを起点として、タクト周期毎に、駆動処理、各種機器データの送信、制御データの受信が行われることになる。
【0107】
次に、上記第2の実施の形態の動作を説明する。
プログラマブルコントローラシステムでは、上記第1の実施の形態と同様に、まず、モジュール間でのタイマ値の同期化を図る。このため、各モジュール間のタイマ値は同期化される。
各モジュールでは、図15又は図17のシステム制御処理を実行し、マスタモジュール(CPUモジュール)で設定されたタクト割込み発生開始タイミングと、オペレータにより設定されたCPUモジュールまたはIOモジュールのタイミング情報に基づき、自モジュールのタクト割込み発生開始タイミングを決定する。すなわち、CPUモジュールではCPUモジュールのタクト割込み発生開始タイミング、IOモジュールではIOモジュールのタクト割込み発生開始タイミングを決定する。
【0108】
そして、CPUモジュールは、CPUモジュールのタクト割込み発生開始タイミングを起点としてタクト周期毎に生じるCPUモジュールのタクト割込み発生タイミングで、制御演算処理を実行し、IOモジュールからの各種機器データに基づき制御データを生成する。一方、IOモジュールは、IOモジュールのタクト割込み発生開始タイミングを起点としてタクト周期毎に生じるIOモジュールのタクト割込み発生タイミングで、駆動処理を実行し、CPUモジュールからの制御データに基づきその外部接続機器xを駆動制御して各種機器データの収集を行う。
【0109】
ここで、上述のように各モジュール間のタイマ値は同期している。そのため、各モジュールにおけるタクト割込み発生開始タイミングは一致する。このため、このタクト割込み発生開始タイミングに基づき設定される、IOモジュールのタクト割込み発生開始タイミングを起点とするタクト周期毎のIOモジュールのタクト割込み発生開始タイミングは、図16(c)に示すように全てのIOモジュール“B”〜“E”間で一致する。
【0110】
また、IOモジュールのタクト割込み発生タイミングは、全てのIOモジュールがマルチキャストデータを受信完了した後の受信完了時点に比較的近いタイミングとなるように設定されるため、図16(c)に示すように、IOモジュール“E”がマルチキャストデータを受信し終えた後のタイミングで、IOモジュールのタクト割込み発生タイミングとなる。このため、各IOモジュール“B”〜“E”は、同一時点の制御データに基づいて駆動処理を行い、外部接続機器xを駆動制御することになる。なお、IOモジュールは、CPUモジュールで生成された制御データをもとに駆動処理を行なうため、CPUモジュールは、あるタイミングにおいて生成した制御データに基づく駆動処理をIOモジュールが開始するよりも前の時点で、前述のあるタイミングにおいて生成した制御データの次の制御データを生成する処理を開始することになる。
【0111】
このように、全IOモジュールは同一時点における制御データに基づき駆動処理を行なうことができるため、各IOモジュールが異なる時点での制御データに基づいてその外部接続機器xを駆動制御することを回避することができる。
さらに、図16(a)に示すように、CPUモジュールのタクト割込み発生タイミングは、CPUモジュールがトータルフレームを受信完了した後のタイミングであり且つ受信完了タイミングにより近いタイミングとなるように設定されており、一方、IOモジュールのタクト割込み発生タイミングは、全IOモジュールがマルチキャストフレームの受信を完了する受信完了タイミング以後に設定されているため、IOモジュールが制御データに基づく駆動処理を開始する前に、CPUモジュールでの制御演算処理が実行されることになる。
【0112】
ここで、CPUモジュールでの制御演算処理に必要な情報は、各IOモジュールからの各種機器データであるため、この各種機器データを伝送するためのトータルフレームの受信が完了した時点で、制御演算処理を実行しても何ら問題はない。
そして、制御演算処理はタクト周期毎に行う必要があるため、制御演算処理用の処理時間として確保することのできる時間は、マルチキャスト方式による制御データの送信及びトータルフレームによる各種機器データの受信に要する所要時間を除いた時間内に制限される。このため、トータルフレームの受信を完了した時点で制御演算処理を開始すればその分、制御演算処理としてより長い時間を確保することができることになる。
【0113】
つまり、次にトータルフレームを受信するまでの間に、制御演算処理及び制御データの送信が完了すればよいから、図16に示すように、トータルフレームの受信を完了した時点で制御演算処理を開始すれば、制御演算処理用の処理時間をより多く確保することができることになる。これに対して、トータルフレームの受信完了時点から制御演算処理の開始までに空き時間があると、この空き時間相当分だけ、制御演算処理用の処理時間として確保できる時間が短くなってしまうことになる。
【0114】
このように、CPUモジュールが、トータルフレームの受信を完了した時点により近いタイミングで制御演算処理を開始することによって、制御演算処理用の処理時間をより多く確保することができる。これはすなわち、より複雑な演算処理やより多量のデータ処理を行うことができることを意味する。したがって、プログラマブルコントローラシステムの処理能力を向上させることができ、外部接続機器xをより高精度に制御することができる。したがって、異なるモジュールに接続されている外部接続機器xであっても、これら外部接続機器x間で同期させ且つ強調動作を行わせることができる。
【0115】
なお、CPUモジュールのタクト割込み発生タイミングは、トータルフレームの受信を完了した時点以後のタイミングであればよいが、上述のように、トータルフレームの受信完了のタイミングに近いほど、CPUモジュールにおける制御演算処理用の処理時間を確保することができるため、制御演算処理用の処理時間として必要な処理時間を考慮して設定すればよい。
【0116】
同様に、IOモジュールのタクト割込み発生タイミングは、全てのIOモジュールがマルチキャストデータを受信完了した時点以後のタイミングであればよいが、この場合も、全てのIOモジュールがマルチキャストデータを受信完了するタイミングに近いほど、IOモジュールにおける駆動処理用の処理時間を確保することができる。
同様に、上記第1の実施の形態においても、タクト割込み発生タイミングは、全てのモジュールがマルチキャストデータ又はトータルフレームの受信を完了した後のタイミングであればよいが、この場合も、各モジュールが所定のデータを受信完了するタイミングに近いほど、各モジュールにおける受信データに対するデータ処理用の処理時間を確保することができる。
【0117】
また、上記各実施の形態において、タイマ17は、水晶振動子を含んで構成されている。このため、起動時に、モジュール間でのタイマ値の同期化を図ったとしても、水晶振動子の誤差によりモジュール間でタイマ値にずれが生じる可能性があり、このずれが大きくなるとシステム停止等、システム全体に影響を与える可能性がある。つまり、マスタモジュール“A”、スレーブモジュール“B”、“C”、“E”は、既にモジュール間でタイマ値の同期がとられているため、本来、これらモジュールのタイマ値は同等程度の値を示すはずであるが、水晶振動子の誤差によりタイマ値にずれが生じることがある。
【0118】
しかしながら、モジュール間でのタイマ値の同期化を定周期で実行しているため、水晶振動子の誤差によるタイマ値のずれを除去することができる。このため、モジュール間でのタイマ値を精度よく同期させることができ、よって、このタイマ値に同期して動作する各モジュール間において、外部接続機器xを同期させ且つ強調動作を行わせることができる。
【0119】
特に、モジュール間のタイマ値の同期精度として、マイクロ秒、ミリ秒の単位での精度を要求するモーションシステムにおいては、頻繁にタイマ値の同期化を図り、水晶振動子の影響を抑制する必要があるため効果的である。
なお、上記第2の実施の形態においては、CPUモジュールについては、CPUモジュールのタクト割込み発生タイミングで動作させ、IOモジュールについては、IOモジュールのタクト割込み発生タイミングで動作させる場合について説明したが、これに限るものではない。
【0120】
例えば、同じIOモジュールであっても、異なるタイミングで駆動処理を実行させる必要がある場合には、第1のタイミングで駆動処理を実行させるIOモジュールからなる第1のグループと、第2のタイミングで駆動処理を実行させるIOモジュールからなる第2のグループとに分類し、第1のグループ、第2のグループ、及びCPUモジュールのそれぞれについて、駆動処理または制御演算処理の所望の実行タイミングに適したタクト割込み発生開始タイミングを設定し、これら第1のグループ、第2のグループ、CPUモジュールごとに、それぞれ異なるタクト割込み発生タイミングで所定の処理を実行するように構成してもよい。要は、受信したデータに対する処理を同一タイミングで実行させたいモジュールどうしを同一グループとし、グループ毎にタクト割込み発生開始タイミングを設定し、これに応じたタクト割込み発生タイミングで所定の処理を実行するように構成すればよい。また、CPUモジュール及びIOモジュールに限らず、他の種類のモジュールについても同様にグループに分類し、所定のタクト割込み発生タイミングで所定の処理を実行させるように構成することも可能である。
【0121】
また、上記各実施の形態においては、プログラマブルコントローラシステム中に、CPUモジュールを1台備えるシングルCPUシステムの場合について説明したが、CPUモジュールを複数備えるマルチCPUシステムの場合であっても適用することができる。
マルチCPUシステムに適用するときには、上記第2の実施の形態を適用する場合は、CPUモジュールについては、このCPUモジュールのタクト割込み発生タイミングをTFデータの受信完了後のタイミングとなるように設定し且つ、IOモジュールについては、全てのIOモジュールが、そのタクト割込み発生タイミングでの駆動処理に必要な制御データを全て受信完了した時点を、IOモジュールのタクト割込み発生タイミングとして設定すればよい。このとき、全てのCPUモジュールがTFデータを受信完了した時点を、CPUモジュールのタクト割込み発生タイミングとすることにより全CPUモジュールでタクト割込み発生タイミングを共通としてもよく、また、CPUモジュール毎にTFデータを受信完了した時点をタクト割込み発生タイミングとして設定するようにしてもよい。
【0122】
また、上記実施の形態においては、端部のモジュール“D”、モジュール“E”では、モジュール内部で回線を折り返してリング状の伝送路を構成する場合について説明したが、これに限るものではない。例えば、折り返し用に、ケーブルLnが接続されない側の接続端子11又は12に、第1の配線L11側と第2の配線L22側とを単に接続するための折り返し用ケーブルを挿しておくことにより、リング状の伝送路を構成するようにしてもよい。この場合、端部のモジュールから送信された伝送メッセージは、折り返し用ケーブルを経由して再度端部のモジュールで受信されるため、ラッチ回路15又は16で検出され、タイマ値がラッチされることになる。このため、マスタモジュールでは、タイマ値有効フラグからは、端部のモジュールがどれであるかを認識することができない。
【0123】
そのため、折り返し用ケーブルを用いて折り返しを行なった場合には、端部のモジュールにおいてスイッチ操作を行なうことにより端部のモジュールに対して端部のモジュールであることを認識させ、端部のモジュールにおいて、自モジュールのタイマ情報として端部のモジュールであることを付加して送信するように構成すれば、マスタモジュールではタイマ情報から端部のモジュールが何れのモジュールであるかを容易に認識することができる。
【0124】
或いは、折り返し用ケーブルを用いて折り返しを行なった場合には、ラッチ回路15でラッチしたタイマ値とラッチ回路16でラッチしたタイマ値との差、すなわち、受信経過時間は折り返し用ケーブルにおける伝送時間相当の長さとなり、モジュール間のモジュールにおける受信経過時間に比較して短い。したがって、受信経過時間が、折り返し用ケーブルによる折り返しが行なわれているとみなされるしきい値よりも短いかどうかに基づき、端部のモジュールであるか否かを判断するようにしてもよい。
【0125】
また、上記実施の形態においては、モジュール“A”からモジュール“E”の5つのモジュールを有するプログラマブルコントローラシステムを構成した場合について説明したが、これに限らず、複数のモジュールを有するプログラマブルコントローラシステムであれば適用することができ、さらに、プログラマブルコントローラが複数接続され、これら複数のプログラマブルコントローラを構成する複数のモジュールがデイジーチェーン接続されてリング状の伝送路を構成するシステムであっても適用することができる。
【0126】
また、上記実施の形態においては、ケーブルが接続されているか否かを検出することにより、端部のモジュールであるか否かを検出する場合について説明したが、これに限るものではない。例えば、端部のモジュールにおいてオペレータがスイッチ操作等を行なうことにより、端部のモジュールとして設定するように構成することもできる。また、このオペレータのスイッチ操作により、切り替え回路18の接続先が物理的に切り替わるように構成してもよい。
【0127】
また、上記実施の形態においては、マスタモジュールでシステム同期処理が実行されたときに、マスタモジュールのタイマのタイマ値をスレーブモジュールに通知してタイマ値を同期させる場合について説明したがこれに限るものではない。
例えば、スレーブモジュールでは、システム同期処理が行なわれたときに通知された各モジュールにおける伝送遅延時間を記憶しておく。そして、マスタモジュールでは、一旦システム同期処理を行なった後は、マスタタイマ値配布メッセージのみを定期的に送信し、このマスタタイマ値配布メッセージを受信したスレーブモジュールが、記憶している伝送遅延時間と通知されたマスタタイマ値とから自モジュールのタイマのタイマ値を更新設定することにより、定期的に、タイマ値の同期を図るようにしてもよい。
【0128】
このように、システム同期処理全体を定期的に行なうのではなく、マスタタイマ値の送信及びスレーブモジュールでのタイマ値の更新設定のみを定期的に実行する場合であっても、プログラマブルコントローラシステムを構成するモジュール間のタイマ値の同期を的確に行なうことができる。
また、上記実施の形態においては、マスタモジュールがタイマラッチ指示メッセージを送信する場合について説明したが、これに限るものではない。つまり、ある伝送メッセージを、ラッチ回路15で受信するタイミングと、同一の伝送メッセージをラッチ回路16で受信するタイミングとがわかればよい。このため、各モジュールが、マスタモジュールに限らず他のモジュールが送信する任意の伝送メッセージをタイマラッチ指示メッセージとみなし、任意の伝送メッセージをラッチ回路15及び16で受信した時点におけるタイマ値をラッチするように構成してもよい。
【0129】
そして、マスタモジュールがタイマ値収集メッセージを定期的に、或いはイベント的に送信して、各モジュールが保持する最新のタイマ情報を収集しこれと、任意の伝送メッセージの一周時間とを用いて伝送遅延時間を演算し、最新の伝送遅延時間に基づき各モジュールがタイマの同期を行なうようにしてもよい。
また、上記実施の形態において、ラッチ回路15及びラッチ回路16は、タイマラッチ指示メッセージを受信するときにのみ、動作可能な状態となっていればよい。したがって、例えば、マスタモジュールがタイマラッチ指示メッセージを送信するタイミングが、システム起動時及びその後定期的に等、予め決まっている場合には、スレーブモジュール側でこれに合わせてラッチ回路15及び16を動作可能な状態にし、一旦同期を行なった後、ラッチ回路15及び16を休止状態に切り替え、その後、定期的に行なわれる同期のタイミングに合わせて、ラッチ回路15及び16を動作可能な状態に切り替えることにより消費電力の削減を図るようにしてもよい。
【0130】
また、タイマラッチ指示メッセージは、一方のラッチ回路で受信された後、他方のラッチ回路で受信されるため、タイマラッチ指示メッセージを先に受信するラッチ回路は常時動作可能状態とし、後に受信するラッチ回路は、先に受信するラッチ回路でタイマラッチ指示メッセージを受信したときに動作可能な状態に切り替え、タイマ値をラッチして処理部13に通知した後、再度休止状態に切り替えるように構成してもよい。この場合には、後に受信するラッチ回路の消費電力の削減を図ることができる。
【0131】
また、各モジュールが、任意のメッセージをタイマラッチ指示メッセージとみなしてタイマ値をラッチするように構成した場合には、各モジュールがタイマ値をラッチするタイミングに合わせてラッチ回路15及び16を動作可能状態に切り替え、それ以外のときにはラッチ回路15及び16を休止状態に切り替えるように構成してもよい。
ここで、上記実施の形態において、図13のステップS26及びステップS27の処理が出力データ生成手段に対応し、ステップS28の処理が出力データ送信手段に対応し、図5のシステム同期処理が同期化手段に対応している。
【0132】
また、図14のステップS35の処理が受信手段に対応し、ステップS36の処理が出力手段に対応している。
さらに、第1の配線L11、第2の配線L22が、第1の伝送路、第2の伝送路に対応している。
また、図15のステップS29aの処理がマスタタクト割込み発生手段に対応し、図17のステップS30、S32、S33a、S34、S38aの処理がスレーブタクト割込み発生手段に対応している。
【符号の説明】
【0133】
11 第1の接続端子
12 第2の接続端子
13 処理部
13a 伝送処理部
13b バッファ
15、16 ラッチ回路
17 タイマ
L1〜L4 ケーブル
L11 第1の配線
L22 第2の配線
T メッセージ一周時間
【特許請求の範囲】
【請求項1】
マスタモジュール及びスレーブモジュールが入出力データ交換バスを介してデータ交換を行い、前記マスタモジュールが前記スレーブモジュールを介して当該スレーブモジュールに接続された外部接続機器を制御するプログラマブルコントローラシステムにおいて、
前記マスタモジュール及びスレーブモジュールはそれぞれタイマを有し、
前記マスタモジュールは、
当該マスタモジュールが有するタイマのマスタタイマ値に基づき定周期で起動され、前記スレーブモジュールから前記入出力データ交換バスを介して予め受信した入力データをもとに演算して出力データを生成する出力データ生成手段と、
当該出力データ生成手段により生成された前記出力データを、前記入出力データ交換バスを介して前記スレーブモジュールに送信する出力データ送信手段と、
前記スレーブモジュールが有するタイマのスレーブタイマ値と前記マスタタイマ値とを同期化させる同期化手段と、を有し、
前記スレーブモジュールは、
前記入出力データ交換バスから前記出力データを受信する受信手段と、
前記受信手段によって受信された前記出力データ、または前記出力データに基づき所定演算を行い当該演算により得た外部接続機器制御用のデータを前記外部接続機器に出力する出力手段と、を有し、
当該出力手段は、
前記同期化手段によって同期化された前記スレーブタイマ値に基づき前記マスタモジュールの前記出力データ生成手段が起動されるタイミングと同一タイミングの定周期で起動されることを特徴とするプログラマブルコントローラシステム。
【請求項2】
マスタモジュール及びスレーブモジュールが入出力データ交換バスを介してデータ交換を行い、前記マスタモジュールが前記スレーブモジュールを介して当該スレーブモジュールに接続された外部接続機器を制御するプログラマブルコントローラシステムにおいて、
前記マスタモジュール及びスレーブモジュールはそれぞれタイマを有し、
前記マスタモジュールは、
当該マスタモジュールが有するタイマのマスタタイマ値に基づき定周期割込みを発生するマスタタクト割込み発生手段と、
このマスタタクト割込み発生手段により起動され、前記スレーブモジュールから前記入出力データ交換バスを介して予め受信した入力データをもとに演算して出力データを生成する出力データ生成手段と、
当該出力データ生成手段により生成された前記出力データを、前記入出力データ交換バスを介して前記スレーブモジュールに送信する出力データ送信手段と、
前記スレーブモジュールが有するタイマのスレーブタイマ値と前記マスタタイマ値とを同期化させる同期化手段と、を有し、
前記スレーブモジュールは、
前記入出力データ交換バスから前記出力データを受信する受信手段と、
前記同期化手段によって同期化された前記スレーブタイマ値に基づき、前記定周期割込みの発生タイミングと同一のタイミングを獲得し、このタイミングを基準に所定時間経過後にスレーブ割込みを発生するスレーブタクト割込み発生手段と、
当該スレーブタクト割込み発生手段によって起動され、前記受信手段によって受信された前記出力データ、または前記出力データに基づき所定演算を行い当該演算により得た外部接続機器制御用のデータを前記外部接続機器に出力する出力手段と、
を備えることを特徴とするプログラマブルコントローラシステム。
【請求項3】
前記入出力データ交換バスは、第1の伝送路及び第2の伝送路それぞれが前記マスタモジュール及び前記スレーブモジュールからなる複数のモジュールをデイジーチェーン接続し、該デイジーチェーン接続された両端の前記モジュールそれぞれで前記第1の伝送路と前記第2の伝送路とを接続してリング状の伝送路を構成し、
前記同期化手段は、
前記スレーブモジュールが一のメッセージを前記第1の伝送路及び前記第2の伝送路から受信したときの前記スレーブタイマ値を収集し、この収集したスレーブタイマ値と前記各モジュールの配置位置とに基づき前記マスタモジュールと前記スレーブモジュールそれぞれとの間の伝送遅延時間を演算し、当該伝送遅延時間と前記マスタモジュールの前記マスタタイマ値とを前記スレーブモジュールに送信し、
前記スレーブモジュールは、前記マスタモジュールから前記伝送遅延時間及び前記マスタタイマ値を受信したとき、前記伝送遅延時間と前記マスタタイマ値との和を自モジュールのタイマのスレーブタイマ値として更新設定することにより、自モジュールのスレーブタイマ値を前記マスタタイマ値と同期化することを特徴とする請求項1又は請求項2記載のプログラマブルコントローラシステム。
【請求項1】
マスタモジュール及びスレーブモジュールが入出力データ交換バスを介してデータ交換を行い、前記マスタモジュールが前記スレーブモジュールを介して当該スレーブモジュールに接続された外部接続機器を制御するプログラマブルコントローラシステムにおいて、
前記マスタモジュール及びスレーブモジュールはそれぞれタイマを有し、
前記マスタモジュールは、
当該マスタモジュールが有するタイマのマスタタイマ値に基づき定周期で起動され、前記スレーブモジュールから前記入出力データ交換バスを介して予め受信した入力データをもとに演算して出力データを生成する出力データ生成手段と、
当該出力データ生成手段により生成された前記出力データを、前記入出力データ交換バスを介して前記スレーブモジュールに送信する出力データ送信手段と、
前記スレーブモジュールが有するタイマのスレーブタイマ値と前記マスタタイマ値とを同期化させる同期化手段と、を有し、
前記スレーブモジュールは、
前記入出力データ交換バスから前記出力データを受信する受信手段と、
前記受信手段によって受信された前記出力データ、または前記出力データに基づき所定演算を行い当該演算により得た外部接続機器制御用のデータを前記外部接続機器に出力する出力手段と、を有し、
当該出力手段は、
前記同期化手段によって同期化された前記スレーブタイマ値に基づき前記マスタモジュールの前記出力データ生成手段が起動されるタイミングと同一タイミングの定周期で起動されることを特徴とするプログラマブルコントローラシステム。
【請求項2】
マスタモジュール及びスレーブモジュールが入出力データ交換バスを介してデータ交換を行い、前記マスタモジュールが前記スレーブモジュールを介して当該スレーブモジュールに接続された外部接続機器を制御するプログラマブルコントローラシステムにおいて、
前記マスタモジュール及びスレーブモジュールはそれぞれタイマを有し、
前記マスタモジュールは、
当該マスタモジュールが有するタイマのマスタタイマ値に基づき定周期割込みを発生するマスタタクト割込み発生手段と、
このマスタタクト割込み発生手段により起動され、前記スレーブモジュールから前記入出力データ交換バスを介して予め受信した入力データをもとに演算して出力データを生成する出力データ生成手段と、
当該出力データ生成手段により生成された前記出力データを、前記入出力データ交換バスを介して前記スレーブモジュールに送信する出力データ送信手段と、
前記スレーブモジュールが有するタイマのスレーブタイマ値と前記マスタタイマ値とを同期化させる同期化手段と、を有し、
前記スレーブモジュールは、
前記入出力データ交換バスから前記出力データを受信する受信手段と、
前記同期化手段によって同期化された前記スレーブタイマ値に基づき、前記定周期割込みの発生タイミングと同一のタイミングを獲得し、このタイミングを基準に所定時間経過後にスレーブ割込みを発生するスレーブタクト割込み発生手段と、
当該スレーブタクト割込み発生手段によって起動され、前記受信手段によって受信された前記出力データ、または前記出力データに基づき所定演算を行い当該演算により得た外部接続機器制御用のデータを前記外部接続機器に出力する出力手段と、
を備えることを特徴とするプログラマブルコントローラシステム。
【請求項3】
前記入出力データ交換バスは、第1の伝送路及び第2の伝送路それぞれが前記マスタモジュール及び前記スレーブモジュールからなる複数のモジュールをデイジーチェーン接続し、該デイジーチェーン接続された両端の前記モジュールそれぞれで前記第1の伝送路と前記第2の伝送路とを接続してリング状の伝送路を構成し、
前記同期化手段は、
前記スレーブモジュールが一のメッセージを前記第1の伝送路及び前記第2の伝送路から受信したときの前記スレーブタイマ値を収集し、この収集したスレーブタイマ値と前記各モジュールの配置位置とに基づき前記マスタモジュールと前記スレーブモジュールそれぞれとの間の伝送遅延時間を演算し、当該伝送遅延時間と前記マスタモジュールの前記マスタタイマ値とを前記スレーブモジュールに送信し、
前記スレーブモジュールは、前記マスタモジュールから前記伝送遅延時間及び前記マスタタイマ値を受信したとき、前記伝送遅延時間と前記マスタタイマ値との和を自モジュールのタイマのスレーブタイマ値として更新設定することにより、自モジュールのスレーブタイマ値を前記マスタタイマ値と同期化することを特徴とする請求項1又は請求項2記載のプログラマブルコントローラシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【公開番号】特開2012−68856(P2012−68856A)
【公開日】平成24年4月5日(2012.4.5)
【国際特許分類】
【出願番号】特願2010−212586(P2010−212586)
【出願日】平成22年9月22日(2010.9.22)
【出願人】(000005234)富士電機株式会社 (3,146)
【Fターム(参考)】
【公開日】平成24年4月5日(2012.4.5)
【国際特許分類】
【出願日】平成22年9月22日(2010.9.22)
【出願人】(000005234)富士電機株式会社 (3,146)
【Fターム(参考)】
[ Back to top ]