(57)【要約】【課題】  マスタのマシンコントローラとスレーブのマシンコントローラのスキャン周期を同期させることができる制御システムを提供する。【解決手段】  １台のマスタコントローラと１台または複数のスレーブコントローラを通信ネットワークで接続し、前記マスタコントローラから前記スレーブコントローラに一定の通信周期で同期フレームを同報送信する。  スレーブコントローラのスキャン周期がマスタコントローラのスキャン周期の整数倍または整数分の１倍であるときに、同期フレームを利用してスレーブコントローラのスキャン周期をマスタコントローラのスキャン周期に同期させる。【選択図】図３
2010061458.tif 000002
【特許請求の範囲】
【請求項１】
１台のマスタコントローラと1台または複数台のスレーブコントローラが通信ネットワークで接続されたマシンコントローラシステムにおいて、
前記マスタコントローラはマスタ基準周期を発生させるマスタ基準周期発生回路と、前記マスタ基準周期を計数してマスタスキャン周期を発生させるマスタスキャン周期発生回路と、前記マスタ基準周期を計数してマスタスキャン周期の整数倍または整数分の１倍の通信周期を発生させる通信周期発生回路と、前記通信周期に基いて前記スレーブコントローラと通信するデータ送受信回路とを備え、
前記スレーブコントローラはスレーブ基準周期を発生させるスレーブ基準周期発生回路と、前記スレーブ基準周期を計数して前記通信周期の整数倍または整数分の１倍のスレーブスキャン周期を発生させるスレーブスキャン周期発生回路と、前記マスタコントローラと前記通信周期で通信するデータ送受信回路と、前記スレーブスキャン周期が前記マスタスキャン周期の整数倍または整数分の１倍であるときに前記スレーブスキャン周期を前記マスタスキャン周期に同期させるためのリセット信号と初回フラグを生成する同期許可部とを備えることを特徴とするマシンコントローラシステム。
【請求項２】
前記マスタコントローラのデータ送受信回路は、前記通信周期毎に、前記スレーブコントローラに対して同期フレームを同報送信し、前記スレーブコントローラのデータ送受信回路は前記同期フレームを受信する毎に同期フレーム信号を生成することを特徴とする請求項１に記載のマシンコントローラシステム。  
【請求項３】
前記リセット信号は、前記スレーブスキャン周期を前記マスタスキャン周期に同期させるための同期許可信号が前記同期許可部に書き込まれた後、前記同期許可部に前記同期フレーム信号が入力される毎に生成されるものであり、前記初回フラグは、前記同期許可信号が前記同期許可部に書き込まれた後、前記同期許可部に最初に前記同期フレーム信号が入力されたときに生成されるものであることを特徴とする請求項２に記載のマシンコントローラシステム。
【請求項４】
前記スレーブ基準周期は、前記リセット信号によってリセットされ、その最初のリセット時に生成されるエッジ信号は前記初回フラグによって遮断されることを特徴とする請求項３に記載のマシンコントローラシステム。
【請求項５】
前記スレーブスキャン周期は、最初の前記リセット信号によってリセットされ、そのリセット時に生成されるエッジ信号は前記初回フラグによって遮断されることを特徴とする請求項３に記載のマシンコントローラシステム。
【請求項６】
１台のマスタコントローラと1台または複数台のスレーブコントローラが通信ネットワークで接続されて一定の通信周期で通信するマシンコントローラシステムの同期方法において、
前記マスタコントローラがマスタスキャン周期を前記スレーブコントローラに送信し、
前記スレーブコントローラは同期可否を判断した結果を前記マスタコントローラに返信し、
前記マスタコントローラは前記スレーブコントローラが同期可能であること返信した場合に同期開始要求および前記マスタスキャン周期を前記通信周期で計数したスキャンカウンタ値を前記スレーブコントローラに送信し、
前記スレーブコントローラは前記同期開始要求および前記スキャンカウンタ値を受信したとき同期化処理を行いその同期化処理が完了したら前記マスタコントローラへ同期完了を送信することを特徴とするマシンコントローラシステムの同期方法。
【請求項７】
前記同期可否判断は、前記通信周期が前記マスタスキャン周期の整数倍または整数分の１倍、前記スレーブスキャン周期が前記通信周期の整数倍または整数分の１倍および前記前記スレーブスキャン周期がマスタスキャン周期の整数倍または整数分の１倍という条件のいずれもが成立する場合に同期可能と判断するものであることを特徴とする請求項６に記載のマシンコントローラシステムの同期方法。
【請求項８】
前記同期化処理は、前記マスタコントローラから送信される前記スキャンカウンタ値を監視してマスタスキャン開始タイミングを検出した後、前記通信周期毎に前記スレーブ基準周期をリセットしその最初のリセット時に生成されるエッジ信号を遮断し、
前記スレーブスキャン周期を最初のリセット信号でのみリセットしその時に生成されるエッジ信号を遮断することによって行われることを特徴とする請求項７に記載のマシンコントローラシステムの同期方法。
【請求項９】
前記マスタスキャン開始タイミングの検出は、前記スキャンカウンタ値があらかじめ設定された値と等しいか否かを判断することによって行うものであることを特徴とする請求項８に記載のマシンコントローラシステムの同期方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数台のコントローラの組み合わせによる分散制御をおこなうマシンコントローラ装置に関する。
【背景技術】
【０００２】
ＰＬＣ機能を持つマシンコントローラを使用する機械装置においては、シーケンス制御やモーション制御の高度化・複雑化が進み、一つの装置を機能毎にセクション化し、それぞれにマシンコントローラを配置して、各セクションが強調した動作を行なうという用途が増えている。
このような機械装置のセクション化には、セクション毎に追加・入れ替えをおこない、容易に用途に応じた機械構成に変更するため、という目的もある。
このように、機械装置をセクション化、すなわち分散制御にて構成する場合、装置が十分な性能を発揮するためには、個々のセクション間の同期性が保証されている事が求められる。
従来、このような装置は、分散化されたコントローラが、ネットワーク等の通信手段によりデータや信号の受け渡しを行なうことで実現していた。
あるいは、同じ入力信号を分散化された全てのコントローラ入力し、その信号をトリガとして動作をおこなうことで同期を実現していた。
たとえば、特許文献１（図１、図４、図７）では、１のコントローラと他のコントローラがデータリンクで接続された分散システムが開示されている。
【０００３】
複数のマシンコントローラを通信手段にて接続し、分散制御を行なう場合の構成を図１１に示す。図１１において、１はプログラム入力装置であり、アプリケーションプログラムＳ１を作成して出力する。２はマスタコントローラであり、ＣＰＵモジュール３と通信モジュール４から構成されている。ＣＰＵモジュール３はアプリケーションプログラムＳ１の処理手順に従い、通信モジュール４との間でバスを通して入出力データＳ２を授受する。入出力データＳ２の授受を行うタイミング、及び、アプリケーションプログラムを実行するタイミング、すなわちスキャン周期は、一般にＣＰＵモジュール３に搭載された水晶発振子が発生するクロックを基にして作成される。
通信モジュール４は、スレーブコントローラ５１〜５Ｎとの間で通信データＳ３を定周期の通信周期で送受信する。
スレーブコントローラ５１〜５Ｎもマスタコントローラ２と同様、プログラム入力装置１にて作成したアプリケーションプログラムが格納されている。スレーブコントローラ５１〜５Ｎに接続されるプログラム入力装置１を破線で示しているのは、必要に応じて接続されることを意味する。
【０００４】
図１１において、マスタコントローラ２からの指令データは、スレーブコントローラ５１〜５Ｎに送信される。スレーブコントローラ５１〜５Ｎは、受信した指令データを、アプリケーションプログラムの処理手順に従い、処理を実行し、実行した結果を応答データとしてマスタコントローラ２に返信する。
マスタコントローラ２は、スレーブコントローラ５１〜５Ｎの応答データより、アプリケーションプログラムの歩進を管理する。
なお、図１２にスレーブコントローラ５１〜５Ｎのブロック図を示すが、独自のスレーブ基準周期発生回路１６ｓとその出力であるスレーブ基準周期信号Ｓ１４ｓを基にスレーブスキャン周期信号Ｓ１５ｓを発生するスレーブスキャン周期発生回路１７ｓを有している。スレーブコントローラ５１〜５Ｎは、スレーブスキャン周期発生回路１７ｓが発生させるスレーブスキャン周期信号Ｓ１５ｓに基づいてスキャン動作を実行する。
【０００５】
このような構成の制御システムでは、マスタスキャン周期（マスタコントローラ２のスキャン周期）と各スレーブスキャン周期（スレーブコントローラ５１〜５Ｎのスキャン周期）は、特許文献１の場合と同様、同期していない。  
また、マスタコントローラ２と各スレーブコントローラが備える水晶発振子には、固体差があるため、例え同じスキャン周期を設定しても、そのスキャン周期に微少なずれが生じる。このスキャン周期のずれが蓄積すると、各コントローラの動作タイミングのずれが生じる。
そのため、マスタコントローラ２からの指令データがスレーブコントローラ５１〜５Ｎに伝わるタイミングがずれたり、アプリケーションによる動作開始タイミングがずれるなど、セクション間の同期性能が求められる用途においては問題があった。
また、各スレーブコントローラに接続されている機器によって、スキャン周期を変えたいという要求もあった。たとえば、高速性が要求されるサーボ機器を制御する場合はスキャン周期を短くし汎用のＩ／Ｏ機器との入出力はスキャン周期を長くするなどである。
【０００６】
Ｉ／Ｏの入力信号で同期をおこなう構成をとった場合も、各コントローラのスキャン周期の微小なずれの蓄積により、入力信号を取り込むタイミングにずれが生じるため、セクション間の同期性能が求められる用途においては問題があった。
【特許文献１】特開２０００−４２４３（図１、図４、図７）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、このような問題や要求に対応するために、スレーブコントローラのスキャン周期をマスタコントローラのスキャン周期に同期させることができ、さらには、スレーブコントローラのスキャン周期をマスタコントローラのスキャン周期の整数倍または１／整数倍に設定することができるマシンコントローラシステムを提供することを目的としている。
【課題を解決するための手段】
【０００８】
請求項１に記載の発明は、１台のマスタコントローラと1台または複数台のスレーブコントローラが通信ネットワークで接続されたマシンコントローラシステムにおいて、
前記マスタコントローラはマスタ基準周期を発生させるマスタ基準周期発生回路と、前記マスタ基準周期を計数してマスタスキャン周期を発生させるマスタスキャン周期発生回路と、前記マスタ基準周期を計数してマスタスキャン周期の整数倍または整数分の１倍の通信周期を発生させる通信周期発生回路と、前記通信周期に基いて前記スレーブコントローラと通信するデータ送受信回路とを備え、
前記スレーブコントローラはスレーブ基準周期を発生させるスレーブ基準周期発生回路と、前記スレーブ基準周期を計数して前記通信周期の整数倍または整数分の１倍のスレーブスキャン周期を発生させるスレーブスキャン周期発生回路と、前記マスタコントローラと前記通信周期で通信するデータ送受信回路と、前記スレーブスキャン周期が前記マスタスキャン周期の整数倍または整数分の１倍であるときに前記スレーブスキャン周期を前記マスタスキャン周期に同期させるためのリセット信号と初回フラグを生成する同期許可部とを備えることを特徴とするものである。
【０００９】
請求項２に記載の発明は、請求項１に記載の発明において、前記マスタコントローラのデータ送受信回路が、前記通信周期毎に、前記スレーブコントローラに対して同期フレームを同報送信し、前記スレーブコントローラのデータ送受信回路は前記同期フレームを受信する毎に同期フレーム信号を生成することを特徴とするものである。  
【００１０】
請求項３に記載の発明は、請求項２に記載の発明において、前記リセット信号は、前記スレーブスキャン周期を前記マスタスキャン周期に同期させるための同期許可信号が前記同期許可部に書き込まれた後、前記同期許可部に前記同期フレーム信号が入力される毎に生成されるものであり、前記初回フラグは、前記同期許可信号が前記同期許可部に書き込まれた後、前記同期許可部に最初に前記同期フレーム信号が入力されたときに生成されるものであることを特徴とするものである。
【００１１】
請求項４に記載の発明は、請求項３に記載の発明において、前記スレーブ基準周期が、前記リセット信号によってリセットされ、その最初のリセット時に生成されるエッジ信号が前記初回フラグによって遮断されることを特徴とするものである。
【００１２】
請求項５に記載の発明は、請求項３に記載の発明において、前記スレーブスキャン周期は、最初の前記リセット信号によってリセットされ、そのリセット時に生成されるエッジ信号は前記初回フラグによって遮断されることを特徴とするものである。
【００１３】
請求項６に記載の発明は、１台のマスタコントローラと1台または複数台のスレーブコントローラが通信ネットワークで接続されて一定の通信周期で通信するマシンコントローラシステムの同期方法において、
前記マスタコントローラがマスタスキャン周期を前記スレーブコントローラに送信し、
前記スレーブコントローラは同期可否を判断した結果を前記マスタコントローラに返信し、
前記マスタコントローラは前記スレーブコントローラが同期可能であること返信した場合に同期開始要求および前記マスタスキャン周期を前記通信周期で計数したスキャンカウンタ値を前記スレーブコントローラに送信し、
前記スレーブコントローラは前記同期開始要求および前記スキャンカウンタ値を受信したとき同期化処理を行いその同期化処理が完了したら前記マスタコントローラへ同期完了を送信することを特徴とするものである。
【００１４】
請求項７に記載の発明は、請求項６に記載の発明において、前記同期可否判断は、前記通信周期が前記マスタスキャン周期の整数倍または整数分の１倍、前記スレーブスキャン周期が前記通信周期の整数倍または整数分の１倍および前記前記スレーブスキャン周期がマスタスキャン周期の整数倍または整数分の１倍という条件のいずれもが成立する場合に同期可能と判断するものであることを特徴とするものである。
【００１５】
請求項８に記載の発明は、請求項７に記載の発明において、前記同期化処理は、前記マスタコントローラから送信される前記スキャンカウンタ値を監視してマスタスキャン開始タイミングを検出した後、前記通信周期毎に前記スレーブ基準周期をリセットしその最初のリセット時に生成されるエッジ信号を遮断し、
前記スレーブスキャン周期を最初のリセット信号でのみリセットしその時に生成されるエッジ信号を遮断することによって行われることを特徴とするものである。
【００１６】
請求項９に記載の発明は、請求項８に記載の発明において、前記マスタスキャン開始タイミングの検出は、前記スキャンカウンタ値があらかじめ設定された値と等しいか否かを判断することによって行うものであることを特徴とするものである。
【発明の効果】
【００１７】
本発明によれば、スレーブコントローラのスキャン周期がマスタコントローラのスキャン周期の整数倍または整数分の１倍であれば、スレーブコントローラのスキャン周期をマスタコントローラのスキャン周期に同期させることが可能である。
また、スレーブコントローラ毎に異なったスキャン周期を設定することができるので、各スレーブコントローラでは実際に求められる制御性能に見合ったＣＰＵを使用することができる。従って、必要以上に高性能のＣＰＵを使うことがなく経済的でもある。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の方法の具体的実施例について、図に基づいて説明する。
この図１に示す実施形態は、マスタコントローラ２と、複数のスレーブコントローラを高速シリアル通信で接続し、スキャン周期の同期を行なうものである。なお、図１は、スター接続を想定して記載してあるが、高速シリアル通信のトポロジーはスター接続に限ったものではない。
図１は、本発明の制御システムの一実施形態であり、従来の図１１と概要は同じであるが、各スレーブコントローラ５１〜５Ｎの構成（図３）が従来のスレーブコントローラ（図１２）と相違しており、これについては後述する。
【００１９】
図２は、本発明の方法を適用するマスタコントローラ２の構成を示すブロック図であるが、スレーブコントローラと同じ構成要素には同じ符号を付してマスタコントローラを意味する‘ｍ’を添えている。
図２において、３はＣＰＵモジュールであり、プログラマブルコントローラとしての機能を有している。ＣＰＵモジュール３は、外部の信号を取り込むための入力部１０ｍと、外部へ信号を出力するための出力部１１ｍ、データメモリ部１２ｍ、ユーザプログラムを記憶しているプログラムメモリ部１４ｍ、前記プログラムメモリ部に格納された制御プログラムに従って演算するＣＰＵ１３ｍから構成される。ＣＰＵ１３ｍは水晶発振子１５ｍが発生するクロック信号に基づいて動作する。
【００２０】
１６ｍはマスタ基準周期発生回路であり、ＣＰＵ１３ｍに入力される水晶発振子の出力クロックを基にしてマスタ基準周期信号Ｓ１４ｍを出力するが、その周期はあらかじめ設定されている。１７ｍはマスタスキャン周期発生回路であり、マスタ基準周期信号Ｓ１４ｍを計数しその任意の整数倍であって定周期のマスタスキャン周期信号Ｓ１５ｍを出力するが、その周期はあらかじめ設定されている。このマスタスキャン周期信号Ｓ１５ｍの周期に基づいてＣＰＵ１３ｍは、プログラマブルコントローラの入力、出力と演算を実行する。なお、マスタ基準周期信号Ｓ１４ｍ、マスタスキャン周期信号Ｓ１５ｍは共にバスを通じて通信モジュール４にも出力される。
【００２１】
４は通信モジュールであり、ＣＰＵモジュール３がセットしたデータを自モジュール内に格納するためのメモリ２５と、共有メモリ２０、水晶発振子２４のクロックに基づいて動作するＣＰＵ２１、スレーブコントローラ５１〜５Ｎと通信データＳ３を送受信するマスタデータ送受信回路２２ｍ、マスタ基準周期信号Ｓ１４ｍを計数しその任意の整数倍であって定周期の通信周期信号Ｓ１３を発生する通信周期発生回路２３とから構成される。通信周期信号Ｓ１３の周期はあらかじめ設定されている。
【００２２】
この構成において、マスタデータ送受信回路２２ｍは、マスタ基準周期信号Ｓ１４ｍを分周した通信周期信号Ｓ１３に基づいて動作するので、マスタ基準周期信号Ｓ１４ｍに同期し、かつ該周期の整数倍の通信周期でデータ送受信を行うことができる。この通信周期信号Ｓ１３はＣＰＵ２１にも入力される。
また、通信周期発生回路２３にマスタスキャン周期信号Ｓ１５ｍが入力されることで、スキャン周期毎に通信周期発生回路の分周回路計数値がリセットされることにより、スキャン周期と通信周期が同期することになる。なお、マスタスキャン周期信号Ｓ１５ｍは、基準周期信号Ｓ１４ｍを計数して作られているため、そのままでは通信周期発生回路２３での通信周期信号Ｓ１３の出力と通信周期発生回路２３のリセットが、ほぼ同タイミングで行なわれることになる。これを回避するため、通信周期発生回路２３のリセットは、通信周期発生回路２３が通信周期信号Ｓ１３をマスタデータ送受信回路２２ｍに出力した後に行なわれるように、マスタスキャン周期信号Ｓ１５ｍ入力タイミングをハードウェアにて調整している。
【００２３】
図３は、本発明の方法を適用するスレーブコントローラ５１〜５Ｎの構成を示すブロック図であり、図２と同じ部分には同じ名称と同じ番号を付し、番号には図２の番号と区別するためにスレーブを意味する‘ｓ’を添えている。
スレーブコントローラ５１〜５Ｎは、水晶発振子１５ｓで発生されるクロック信号に基づいて動作する。そのクロックを基にスレーブ基準周期発生回路１６ｓでスレーブ基準周期信号Ｓ１４ｓが発生されるが、その周期はあらかじめ設定されている。なお、スレーブ基準周期は、マスタ基準周期と等しい値である。
スレーブ基準周期信号Ｓ１４ｓはスレーブスキャン周期発生回路１７ｓで計数されてスレーブスキャン周期信号Ｓ１５ｓが発生されるが、その周期はあらかじめ設定されている。これは、マスタコントローラ２の場合と同様である。
【００２４】
スレーブデータ送受信回路２２ｓはマスタコントローラ２から通信周期毎に同期フレームを受信すると、同期フレーム信号Ｓ１６を出力する。同期フレーム信号Ｓ１６は、通信周期の開始を知らせるためにＣＰＵ１３ｓに入力される点は従来と同じである。
従来と異なる点は、同期許可部１８を介してスレーブ基準周期発生回路１６ｓおよびスレーブスキャン周期発生回路１７ｓに入力される点である。
また、同期許可部１８によって生成される、同期許可後の初回の同期フレーム信号であることを示す初回フラグＳ２０が、スレーブ基準周期発生回路１６ｓおよびスレーブスキャン周期発生回路１７ｓに入力される点である。
【００２５】
同期許可部１８、スレーブ基準周期発生回路１６ｓ、スレーブスキャン周期発生回路１７ｓの詳細について、図１３を用いて説明する。
同期許可部１８は、レジスタ、ＡＮＤゲート、エッジ検出部および初回フラグ生成部から構成されている。スレーブコントローラ５が同期フレーム信号Ｓ１６と非同期で（マスタコントローラ２と非同期で）動作しているとき、ＣＰＵ１３ｓは、同期許可信号として‘０’をレジスタに書き込んでおり、同期フレーム信号Ｓ１６は遮断される。  
スレーブコントローラ５が同期フレーム信号Ｓ１６と同期して（マスタコントローラ２と同期して）動作するために、ＣＰＵ１３ｓが同期許可信号として‘１’をレジスタに書き込んだとき、同期フレーム信号Ｓ１６がエッジ検出部に入力され、そのエッジ信号Ｓ１９が生成される。
また、エッジ信号Ｓ１９は初回フラグ生成部に入力され、同期許可信号‘１’がレジスタに書き込まれた後最初に同期フレーム信号Ｓ１６が入力されたことを示す初回フラグＳ２０が生成される。
【００２６】
次に、エッジ信号Ｓ１９、初回フラグＳ２０を利用して、スレーブ基準周期信号Ｓ１４ｓ、スレーブスキャン周期信号Ｓ１５ｓが同期フレームＳ１６に同期するしくみについて説明する。
スレーブ基準周期発生回路１６ｓは、水晶発信子１５ｓから出力されるクロックをアップカウンタＡにて計数して、その計数値があらかじめ設定された値になる毎にスレーブ基準周期信号Ｓ１４ｓを出力する。
ここで、エッジ信号Ｓ１９が入力されるとアップカウンタＡはリセットされ、そのタイミングでスレーブ基準周期信号Ｓ１４ｓが出力されるようになり、同期フレーム信号Ｓ１６とスレーブ基準周期信号Ｓ１４ｓは同期することになる。
ただし、初回フラグがセットされたタイミングでは、スレーブ基準周期信号Ｓ１４ｓは遮断される。スレーブ基準周期信号Ｓ１４ｓを計数して生成されるスレーブスキャン周期信号１５ｓの周期があらかじめ設定された周期より短くなって、定周期のスキャン処理が実行できなくなることを避けるためである。
【００２７】
スレーブスキャン周期発生回路１７ｓは、スレーブ基準周期信号をアップカウンタＢで計数し、あらかじめ設定された計数値毎にスレーブスキャン周期信号Ｓ１５ｓを生成する。アップカウンタＢは、初回フラグが設定されたタイミングでのみリセットされる。また、そのタイミングでは、スレーブスキャン周期信号Ｓ１５ｓは遮断される。スレーブスキャン周期信号Ｓ１５ｓの周期があらかじめ設定された周期より短くなって、定周期のスキャン処理が実行できなくなることを避けるためである。
【００２８】
図４は、マスタスキャン周期とスレーブスキャン周期の同期化の処理における、マスタコントローラとスレーブコントローラ間のフレームフローの概要であるが、簡単のためスレーブコントローラは１つのみ示している。
【００２９】
まず、マスタコントローラ２は、スレーブコントローラ５１〜５Ｎへの送信データに自局のマスタスキャン周期を格納して送信する。
スレーブコントローラ５１〜５Ｎは、受信データ内のマスタスキャン周期と、自局のスレーブスキャン周期、及び、通信周期とを比較し、以下の条件を全て満足するか否かを判断する。
１）マスタスキャン周期と通信周期が整数倍又は整数分の１の関係か？
２）スレーブスキャン周期と通信周期が整数倍又は整数分の１の関係か？
３）マスタスキャン周期とスレーブスキャン周期が整数倍又は整数分の１の関係か？
上記全ての条件を満足していた場合、マスタコントローラ２への応答データに、同期可能であることを示すステータス（以下、ＳＹＮＣＲＤＹと呼ぶ）を格納する。
【００３０】
マスタコントローラ２は、スレーブコントローラ５１〜５Ｎからの受信データにＳＹＮＣＲＤＹがセットされていた場合、スレーブコントローラ５１〜５Ｎへの送信データ内に、同期開始要求をセットすると共に、マスタスキャン周期を通信周期で計数したスキャンカウンタ値を格納する。
ここで、スキャンカウンタとは、ＣＰＵ２１が実行するソフトウエア（図示せず）によって処理されるものであって、スキャン周期内の通信周期を計数するものである。
【００３１】
スキャンカウンタでの通信周期の計数例を図５に示す。
この例では、マスタスキャン周期は基準周期の８倍、通信周期は基準周期の２倍であり、従って、マスタスキャン周期は通信周期の４倍である。
図５において、マスタスキャン周期、および、通信周期の網掛け部は、ソフトウェア処理を示している。また、通信周期の処理が、マスタスキャン周期の処理より優先的に処理されるよう設定されている。
スキャンカウンタの初期値は、マスタスキャン周期がいくつの通信周期から構成されるかを示す０を含む正の整数値であり、次の式で計算される。
スキャンカウンタ初期値＝マスタスキャン周期÷通信周期−１
（ただし計算結果が負値の場合、スキャンカウンタ初期値＝０とする。）
マスタスキャン周期発生回路１７ｍからのマスタスキャン周期信号Ｓ１５ｍによる割り込みで、マスタスキャン周期のソフトウェア処理が実行されると、スキャンカウンタには初期値が再設定される。（図５では、初期値＝３である。）
そして、通信周期信号Ｓ１３による割り込みで、通信周期のソフトウェア処理が実行される毎にディクリメントされる。（図５では、３→２→１→０と変化する。）なお、ディクリメントのタイミングは、スレーブコントローラへのデータ送信が完了した後であり、スキャンカウンタ値が０の場合はディクリメントをおこなわない。
ここで、マスタスキャン周期のソフトウェア処理によるスキャンカウンタへの初期値設定は、通信周期のソフトウェア処理タイミングの影響を受けないよう、ソフトウェア処理開始直後におこなうようにスケジューリングされている。
【００３２】
スレーブコントローラ５１〜５ＮのＣＰＵ１３ｓで実行されるソフトウエア（図示せず）は、同期開始要求を受信すると、受信データに格納されているマスタコントローラのスキャンカウンタ値を監視し、マスタコントローラのスキャン開始タイミングを待つ。
図６は、スレーブコントローラ５でのスキャンカウンタ受信の例である。マスタスキャン周期、および、通信周期の設定は図５と同じである。
図６において、マスタコントローラ２から送信されたスキャンカウンタ値は、伝送遅れにより、１通信周期遅れてスレーブコントローラ５にて受信される。したがって、スレーブコントローラ５が受信したスキャンカウンタ値＝１の時、マスタコントローラ２のスキャン開始タイミングと一致していると判断できる。
このように、スレーブコントローラ５は受信したスキャンカウンタ値により、マスタコントローラ２のスキャン開始タイミングを判断するのであるが、この判断は次のようにしておこなう。
（１）マスタスキャン周期÷通信周期≧２の場合
スキャンカウンタ値＝１でスキャン開始タイミングと一致
（２）マスタスキャン周期÷通信周期＜２の場合
常時スキャン開始タイミングと一致
【００３３】
スレーブコントローラ５のＣＰＵ１３ｓはマスタコントローラ２のスキャン開始タイミングを検出すると、同期許可部１８に対して、同期許可信号Ｓ１６として‘１’を書き込む。その後、段落００２６〜００２８で述べたような手順で、同期フレーム信号Ｓ１６とスレーブ基準周期信号Ｓ１４ｓおよびスレーブスキャン周期信号Ｓ１５ｓとの同期が確立される。
このようにして、同期フレーム信号Ｓ１６とスレーブスキャン周期信号Ｓ１５ｓの同期を確立できたら、スレーブコントローラ５１〜５Ｎは、マスタコントローラ２への応答データに同期完了を示すステータス（以下、ＳＹＮＣ）をセットする。
マスタコントローラ２は、スレーブコントローラ５１〜５Ｎからの受信データにＳＹＮＣがセットされていた場合、同期開始要求をクリアし、同期化の処理を終了する。このようにして、マスタスキャン周期とスレーブスキャン周期の同期が確立される。
【００３４】
次に、マスタスキャン周期とスレーブスキャン周期の同期化の具体的な事例について説明する。
図７は、本発明により、マスタスキャン周期とスレーブスキャン周期が同期化する際のタイミングチャートであるが、簡単のため、スレーブコントローラは１つのみ記載している。
この例では、マスタスキャン周期は基準周期の４倍、通信周期は基準周期の２倍であり、したがって、マスタスキャン周期は通信周期の２倍である。
非同期状態では、マスタコントローラ２とスレーブコントローラ５１〜５Ｎのスキャン周期は同期しておらず、また、水晶発振子１５ｍと水晶発振子１５ｓの個体差により、両者のタイミングは徐々にずれていく。
スレーブコントローラ５１〜５Ｎは、マスタコントローラ２と同期可能と判断した場合に、ＳＹＮＣＲＤＹをセットし、マスタコントローラ２からの同期開始要求を待つ。
【００３５】
マスタコントローラ２は、スキャン周期に同期した通信周期毎に、スキャンカウンタ値を、スレーブコントローラ５１〜５Ｎに対し送信する。
図７において、スキャンカウンタが０→１→０と変化しているのは、マスタスキャン周期発生回路１７ｍからのマスタスキャン周期信号Ｓ１５ｍでリセットされて初期値１が設定され、通信周期発生回路２３からの通信周期信号Ｓ１３が入力される度にディクリメントされ、０になった直後にマスタスキャン周期信号Ｓ１５ｍが入力されてリセットされて初期値１が再設定されていることを示している。
【００３６】
スレーブコントローラ５１〜５Ｎは、同期開始要求を受信後、マスタコントローラ２より送信されるスキャンカウンタ値を監視し、スキャンカウンタ値が１、すなわち、今回の通信周期がマスタスキャン周期の開始タイミングのものであると判断できたときに、同期許可信号Ｓ１７として‘１’を同期許可部１８へ出力する。その後の、同期フレーム信号Ｓ１６とスレーブ基準周期信号Ｓ１４ｓおよびスレーブスキャン周期信号Ｓ１５ｓとの同期の手順は段落００２６〜００２８で述べた通りである。
【００３７】
この同期においては、同期フレーム信号Ｓ１６がスレーブ基準周期発生回路１６ｓへ最初に入力されたタイミングが基準周期の先頭となるため、このタイミングでの基準周期は、基準周期＋αとなる。なお、αは１基準周期以内の変動量である。
さらに、スキャン周期信号の同期も同時に行なわれるが、このタイミングでのスキャン周期は、基準周期の場合と同様にしてスキャン周期＋βとなる。なお、βは１スレーブスキャン周期以内の変動量である。
これ以降、同期フレーム信号Ｓ１６による基準周期のリセットは、通信周期毎に継続して行なわれ、両者の同期状態が保持される。同期フレーム信号Ｓ１６は、マスタコントローラ２のスキャン周期であるマスタスキャン周期と同期しており、スレーブコントローラ５１〜５Ｎのスレーブスキャン周期は、マスタスキャン周期と同期することになる。
【００３８】
図７においては、マスタスキャン周期とスレーブスキャン周期が同じ長さの場合の例を示したが、マスタスキャン周期がスレーブスキャン周期の整数倍または整数分の１倍となるように構成することも容易である。スレーブスキャン周期発生回路１７ｓがマスタスキャン周期の整数倍または整数分の１倍の周期のスレーブスキャン周期信号Ｓ１５ｓを発生するように、あらかじめ設定しておけばすむからである。
【００３９】
図８は、マスタスキャン周期が通信周期の４分の１倍の例である。スレーブスキャン周期は、通信周期の１倍としており、マスタスキャン周期はスレーブスキャン周期の４分の１倍である。
この場合、スキャンカウンタ初期値＝０であり、スキャンカウンタ値は常に０となる。したがって、スレーブコントローラ側は、どのタイミングであってもマスタスキャン周期と一致するタイミングと判断できる。
【００４０】
図９は、マスタスキャン周期が通信周期の２倍、スレーブスキャン周期が通信周期の４分の１倍の例である。マスタスキャン周期は、スレーブスキャン周期の８倍となる。
この場合、スキャンカウンタ初期値＝１であり、図７の場合と同様、スキャンカウンタ値は０→１→０と変化する。マスタスキャン周期と一致するタイミングの判断、および、同期化処理も、図７と同様である。
【００４１】
図１０は、マスタスキャン周期が通信周期の１６倍、スレーブスキャン周期が通信周期の８倍の例である。マスタスキャン周期は、スレーブスキャン周期の２倍となる。
この場合、スキャンカウンタ初期値＝１５であり、スキャンカウンタ値は０→１５→１４→・・・→１→０と変化する。このような設定であっても、マスタスキャン周期と一致するタイミングの判断、および、同期化処理は、図７と同様におこなうことができる。
【００４２】
また、図７においては、スレーブスキャン周期発生回路１７ｓのリセットは、同期許可信号Ｓ１７が‘１’に設定された後、次の同期フレーム信号Ｓ１６で行う例を示した。このスレーブスキャン周期発生回路１７ｓのリセットは、同期許可信号Ｓ１７が‘１’に設定された後、次の同期フレーム信号Ｓ１６が入力された後さらにスレーブ基準周期信号Ｓ１４ｓが所望の個数だけ入力された時に行うように、スキャン周期発生回路１７ｓを構成することも可能である。
【００４３】
以上述べたように本発明によれば、ネットワークで接続されたマスタコントローラ２とスレーブコントローラ５１〜５Ｎのスキャン周期の同期をとることができる。そして、スレーブスキャン周期をマスタスキャン周期の整数倍または整数分の１倍に設定し、スレーブスキャン周期の位相をマスタスキャン周期の位相から、通信周期の整数倍または基準周期の整数倍だけ遅れさせることが可能である。
【図面の簡単な説明】
【００４４】
【図１】本発明の方法を適用するマシンコントローラシステム
【図２】本発明の方法を適用するマスタコントローラのブロック図
【図３】本発明の方法を適用するスレーブコントローラのブロック図
【図４】本発明の同期化の処理を示すフレームフロー図
【図５】スキャンカウンタの変化の様子を示す図
【図６】スキャンカウンタがスレーブコントローラに伝わる様子を示す図
【図７】本発明の同期処理時のタイミングを示す図（１）
【図８】本発明の同期処理時のタイミングを示す図（２）
【図９】本発明の同期処理時のタイミングを示す図（３）
【図１０】本発明の同期処理時のタイミングを示す図（４）
【図１１】従来の分散型のマシンコントローラシステム
【図１２】従来のスレーブコントローラのブロック図
【図１３】本発明のスレーブコントローラの同期許可部、基準周期発生回路、スキャン周期発生回路の詳細
【符号の説明】
【００４５】
１  プログラム入力装置
２  マスタコントローラ
３  ＣＰＵモジュール
４  通信モジュール
５  スレーブコントローラ
１０ｍ、１０ｓ  入力部
１１ｍ、１１ｓ  出力部
１２ｍ、１２ｓ  データメモリ部
１３ｍ、１３ｓ、２１  ＣＰＵ
１４ｍ、１４ｓ  プログラムメモリ部
１５ｍ、１５ｓ、２４  水晶発振子
１６ｍ  マスタ基準周期発生回路
１６ｓ  スレーブ基準周期発生回路
１７ｍ  マスタスキャン周期発生回路
１７ｓ  スレーブスキャン周期発生回路
２０  共有メモリ
２２ｍ  マスタデータ送受信回路
２２ｓ  スレーブデータ送受信回路
２３  通信周期発生回路
２５  メモリ
Ｓ１  アプリケーションプログラム
Ｓ２  入出力データ
Ｓ３  通信データ
Ｓ１３  通信周期信号
Ｓ１４ｍ  マスタ基準周期信号
Ｓ１４ｓ  スレーブ基準周期信号
Ｓ１５ｍ  マスタスキャン周期信号
Ｓ１５ｓ  スレーブスキャン周期信号
Ｓ１６  同期フレーム信号
Ｓ１７  同期許可信号
Ｓ１９  エッジ信号
Ｓ２０  初回フラグ
【図１】
2010061458.tif 000003
【図２】
2010061458.tif 000004
【図３】
2010061458.tif 000005
【図４】
2010061458.tif 000006
【図５】
2010061458.tif 000007
【図６】
2010061458.tif 000008
【図７】
2010061458.tif 000009
【図８】
2010061458.tif 000010
【図９】
2010061458.tif 000011
【図１０】
2010061458.tif 000012
【図１１】
2010061458.tif 000013
【図１２】
2010061458.tif 000014
【図１３】
2010061458.tif 000015