(57)【要約】【課題】  通信周期の同期点にジッタが生じない、局数（通信負荷）に応じて通信周期を長くすることができ、同期点から所定時間後にデータを送信するように送信スケジューリングが可能なマスタ・スレーブ同期通信方式を提供する。【解決手段】  ＩＥＥＥ１３９４通信の固有周期を基底サイクルとしてその整数倍に設定された通信周期を持ち、各局は通信周期の開始タイミングである同期点の検出手段と、現サイクルが該同期点から何番目の基底サイクルであるかを示す基底サイクルカウンタ（同期点検出後、カウンタ値は全局で同じ値を持つ）を持ち、マスターは該基底サイクルカウンタ値毎にあらかじめ割り付けられた送信管理テーブルに基いて各スレーブへ指令を送信し、各スレーブは応答を送信する基底サイクルカウンタ値を設定した送信タイミング情報に基いてマスターへ応答データを送信する。【選択図】図1
2005045672.tif 000002
【特許請求の範囲】
【請求項１】
ＩＥＥＥ１３９４をベースにした1台のマスターと1台または複数台のスレーブにより構成されるマスター・スレーブ通信方式において、ＩＥＥＥ１３９４通信の固有周期を基底サイクルとしてその整数倍に設定された通信周期を持ち、前記マスター、各スレーブは前記通信周期の開始タイミングである同期点の検出手段と、現サイクルが該同期点から何番目の基底サイクルであるかを示す基底サイクルカウンタを持ち、前記マスターは該基底サイクルカウンタ値毎にどのスレーブに対して指令データを送信するかあらかじめ割り付けられた送信管理テーブルを持ち、該送信管理テーブルを元に基底サイクルカウンタが更新される毎に各スレーブに指令データを送信し、前記各スレーブは該基底サイクルカウンタのあらかじめ割り付けられた値になったらマスターに応答データを送信することを特徴とするマスター・スレーブ同期通信方式。
【請求項２】
前記同期点の検出手段として、前記マスターでは任意の基底サイクルを同期点に定め、それに基き各スレーブに指令データを送信し、前記各スレーブでは指令データを受信した際の基底サイクルカウンタ値とあらかじめ割り付けられた指令データを受信した時の基底サイクルカウンタ値を元に基底サイクルカウンタ現在値を修正し、そのカウント値があらかじめ決められた値になった時を同期点として検出することを特徴とする請求項１に記載のマスター・スレーブ同期通信方式。
【請求項３】
前記同期点の検出手段として、前記マスターでは任意の基底サイクルを同期点に定め、それに基き各スレーブに指令データを送信する際に、該指令データ中に次回同期点となるＣＹＣＬＥ＿ＴＩＭＥレジスタ値を書き込むものとし、前記各スレーブでは指令データを受信した際に該指令データ中の次回同期点となるＣＹＣＬＥ＿ＴＩＭＥレジスタ値と現在の自局ＣＹＣＬＥ＿ＴＩＭＥレジスタ値を元に基底サイクルカウンタ現在値を修正し、そのカウント値があらかじめ決められた値になった時を同期点として検出することを特徴とする請求項１に記載のマスター・スレーブ同期通信方式。
【請求項４】
前記同期点の検出手段として、前記マスターでは任意の基底サイクルを同期点に定め、基底サイクルカウンタ値をあらかじめ決められた値にセットし、各スレーブへ指令を送信する時にその時の基底サイクルカウンタ値を前記各スレーブに送信し、前記各スレーブでは該基底サイクルカウンタ値を自局の基底サイクルカウンタに設定し、そのカウント値があらかじめ決められた値になった時を同期点として検出することを特徴とする請求項１に記載のマスター・スレーブ同期通信方式。
【請求項５】
前記同期点の検出手段として、前記マスターではＣＹＣＬＥ＿ＴＩＭＥレジスタ値を元に同期点を検出し、その時に基底サイクルカウンタ値をあらかじめ決められた値にセットし、前記各スレーブではＣＹＣＬＥ＿ＴＩＭＥレジスタ値を元にマスターと同じ手段で同期点を検出し、その時に該基底サイクルカウンタ値をあらかじめ決められた値にセットすることを特徴とする請求項１に記載のマスター・スレーブ同期通信方式。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＥＥＥ１３９４を使ってマスター・スレーブ同期通信を行うリアルタイム制御システムの通信方式に関する。
【背景技術】
【０００２】
従来のマスター・スレーブ同期通信方式では、ＰＲＯＦＩＢＵＳ−ＤＰのように通信周期の同期点を知らせるデータパケットをマスターが全スレーブに一斉放送し、各スレーブはその受信タイミングで同期点を検出し、その後ポーリングによって指令データと応答データの交換を行っている（例えば、非特許文献１参照）。
【０００３】
また、ＳＥＲＣＯＳ（登録商標）のように同期点の通知は同じくマスターからの一斉放送によるが、その後マスターから指令データが各スレーブに送信され、さらに各スレーブが同期点からの所定の時間経過後、あるいは所定の送信順序に基づき順次応答データを送信していくものもある（例えば、非特許文献２参照）。
【０００４】
こうしたマスター・スレーブ間で同期をとって通信を行う方式はリアルタイム制御システムでは一般的な通信方式である。
【０００５】
一方ＩＥＥＥ１３９４準拠ネットワークはパソコンやＡＶ機器などで一般的な高速の汎用ネットワークである。伝送速度は１００Ｍｂｐｓ〜３．２Ｇｂｐｓであり、ＰＲＯＦＩＢＵＳ−ＤＰの最速１２Ｍｂｐｓ、ＳＥＲＣＯＳの最速１６Ｍｂｐｓなどと比較すると極めて高速な通信が可能である。なおかつネットワークに接続された全ノードが１２５μｓの固有周期で同期をとって動作するアイソクロナス通信をサポートしている点で、同じく汎用・高速の汎用ネットワークであるイーサネット（登録商標）などに無い特徴を備えており、上述のようなマスター・スレーブ同期通信を行うリアルタイム制御用ネットワークへの応用が期待されている。（例えば、特許文献１参照）
【０００６】
図１２はＰＲＯＦＩＢＵＳ−ＤＰなどで一般的な通信方式の通信タイムチャートを示している。図１２において、ｃ１、ｃ２、・・・はそれぞれスレーブ＃１、スレーブ＃２、・・・あての指令データタイミングを表しており、ｒ１、ｒ２、・・・はスレーブ＃１、スレーブ＃２、・・・からの応答データ送信タイミングを表している。図１２に示す通り通信周期先頭である同期点にて同期パケットが一斉放送され、それに引続きスレーブ＃１へ指令データが送信されるとスレーブ＃１が応答データを返信し、次にスレーブ＃２へ指令データが送信されるとスレーブ＃２が応答データを返信するというように、いわゆるポーリングにて指令データと応答データの授受を行い、再び通信周期経過後に同期点を迎えて同期パケットが一斉放送されるという通信方法がとられていた。
【０００７】
また図１３はＳＥＲＣＯＳなどで採用されている別の通信方式の通信タイムチャートを示している。図１３に示す通り、通信周期先頭である同期点にて同期パケットが一斉放送される点は図１２と同様であり、それに引続き各スレーブに送信される指令データｃ１、ｃ２、・・・がマスターからまとまったタイミングで送信され、それらは１パケットにまとめられて送信されることもある。その後スレーブごとに適切に調整された所定のタイマー値経過後応答データ（ｒ１、ｒ２、・・・）が送信されていき、再び通信周期経過後に同期点を迎えて同期パケットが一斉放送されるという通信方法がとられていた。
【０００８】
このように、従来のマスター・スレーブ同期通信方式では、毎通信周期の同期点毎に同期パケットを一斉放送して全局の同期を確保する、という手段がとられていた。
【０００９】
【特許文献１】特開２００３−００８５７９
【非特許文献１】ＰＲＯＦＩＢＵＳ−ＤＰ Specification（ＩＥＣ６１１５８  Ｔｙｐｅ３）
【非特許文献２】ＳＥＲＣＯＳ Specification（ＩＥＣ６１４９１）
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、従来のマスター・スレーブ同期通信方式ではマスターから精度良く毎回の同期点ごとに同期パケットを一斉放送して各スレーブに通知する動作が必要である。これに対応する形でＩＥＥＥ１３９４準拠ネットワークのアイソクロナス通信を適用しようとした場合、固有周期毎に編集され一斉送信されるサイクルスタートパケットがこれにもっとも近い同期点通知手段となるが、このパケットは送信タイミング精度を保証しておらず、同期点にジッタが生じるという問題があった。
【００１１】
また、スレーブの数が多くなるなどして通信周期を固有周期より長くとる必要があっても、固有周期は固定であって変更できないという問題も抱えていた。
【００１２】
さらに、ＩＥＥＥ１３９４のアイソクロナス通信は一斉放送でかつ伝送路へのデータ送信タイミングの調整が困難で送信順序の保証もできない通信方式のため、従来のマスター・スレーブ同期通信方式で行われるポーリングや、同期点からの所定時間後やデータ送信順序に従ったデータの送信スケジューリングが困難であった。
【００１３】
実施例として引用した特開２００３−００８５７９の場合、サイクルスタートパケットに代えて独自のトリガパケット（同期パケット）をアイソクロナス通信で一斉放送した後、各スレーブのデータ通信はアシンクロナス通信でマスターに対して送信要求を行ないながら複数アイソクロナスサイクルにまたがった通信周期を確保するものであり、通信周期のジッタは更に大きなものとなる上にアイソクロナス通信とアシンクロナス通信を使い分けるため、各局の通信処理が複雑になるという問題まであった。
【００１４】
本発明はこのような様々な問題点に鑑みてなされたものであり、ＩＥＥＥ１３９４を適用して、その固有周期を基底サイクルとし、該基底サイクルの整数倍の通信周期で全局の同期を取りながら、容易にデータの送受信スケジューリングが可能なマスター・スレーブ同期通信方式を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明は上記目的を達成するために、請求項１に示す第１の発明のように、ＩＥＥＥ１３９４をベースにした1台のマスターと1台または複数台のスレーブにより構成されるマスター・スレーブ通信方式において、ＩＥＥＥ１３９４通信の固有周期を基底サイクルとして該基底サイクルの整数倍に設定された通信周期を持ち、前記マスター、各スレーブは前記通信周期の開始タイミングである同期点の検出手段と、現サイクルが該同期点から何番目の基底サイクルであるかを示す基底サイクルカウンタを持ち、前記マスターは該基底サイクルカウンタ値毎にどのスレーブに対して指令データを送信するかあらかじめ割り付けられた送信管理テーブルを持ち、該送信管理テーブルを元に基底サイクルカウンタが更新される毎に各スレーブに指令データを送信し、前記各スレーブは該基底サイクルカウンタのあらかじめ割り付けられた値になったらマスターに応答データを送信することを特徴とするものである。
【００１６】
このようになっているため、全局で同期のとれた基底サイクルカウンタを元にデータの送受信を実行することができ、基底サイクル以上の通信周期で、基底サイクル単位でスケジューリングされた同期通信を行うことができる。
【００１７】
前記同期点の検出手段として、請求項２に示す第２の発明のように、前記マスターでは任意の基底サイクルを同期点に定め、それに基き各スレーブに指令データを送信し、前記各スレーブでは指令データを受信した際の基底サイクルカウンタ値とあらかじめ割り付けられた指令データを受信した時の基底サイクルカウンタ値を元に基底サイクルカウンタ現在値を修正し、そのカウント値があらかじめ決められた値になった時を同期点として検出するものである。結果、マスタ・スレーブ間の通信周期が基底サイクルの整数倍でも、全ての局が同期を保つことが可能である。
【００１８】
前記同期点の別の検出手段として、請求項３に示す第３の発明のように、前記マスターでは任意の基底サイクルを同期点に定め、それに基き各スレーブに指令データを送信する際に、該指令データ中に次回同期点となるＣＹＣＬＥ＿ＴＩＭＥレジスタ値を書き込むものとし、前記各スレーブでは指令データを受信した際に該指令データ中の次回同期点となるＣＹＣＬＥ＿ＴＩＭＥレジスタ値と現在の自局ＣＹＣＬＥ＿ＴＩＭＥレジスタ値を元に基底サイクルカウンタ現在値を修正し、そのカウント値があらかじめ決められた値になった時を同期点として検出するものである。結果、第２の発明とは別の方法で、マスタ・スレーブ間の通信周期が基底サイクルの整数倍でも、全ての局が同期を保つことが可能である。
【００１９】
前記同期点の検出手段として、請求項４に示す第４の発明のように、前記マスターでは任意の基底サイクルを同期点に定め、基底サイクルカウンタ値をあらかじめ決められた値にセットし、各スレーブへ指令を送信する時にその時の基底サイクルカウンタ値を前記各スレーブに送信し、前記各スレーブでは該基底サイクルカウンタ値を自局の基底サイクルカウンタに設定し、そのカウント値があらかじめ決められた値になった時を同期点として検出する。結果、第２、第３の発明とは別の方法で、マスタ・スレーブ間の通信周期が基底サイクルの整数倍でも、全ての局が同期を保つことが可能である。
【００２０】
前記同期点の検出手段として、請求項５に示す第５の発明のように、前記マスターでは同期点をＣＹＣＬＥ＿ＴＩＭＥレジスタ値を元に同期点を検出し、その時に基底サイクルカウンタ値をあらかじめ決められた値にセットし、前記各スレーブではＣＹＣＬＥ＿ＴＩＭＥレジスタ値を元にマスターと同じ手段で同期点を検出し、その時に該基底サイクルカウンタ値をあらかじめ決められた値にセットする。結果、第２、第３、第４の発明とは別の方法で、マスタ・スレーブ間の通信周期が基底サイクルの整数倍でも、全ての局が同期を保つことが可能である。
【００２１】
このように同期点を検出し、その同期点に同期して、送信管理テーブルにあらかじめ登録された送信スケジュールに従って送信を実行することにより、マスタ・スレーブ間の通信周期が基底サイクルの整数倍でも全局同期を保った送受信が可能となる。
【発明の効果】
【００２２】
以上述べたように、本発明の方法によれば、固有周期を基底サイクルとし、そのサイクル数をカウントする基底サイクルカウンタを全局で同期させ、固有周期の整数倍の通信周期を実現する事ができる。また、その同期のとれた基底サイクルカウンタ値を元にマスターからスレーブへの指令データおよびスレーブからマスターへの応答データの送信タイミングのスケジュールを行うことにより、ＩＥＥＥ１３９４を適用したリアルタイム制御システムにおいて、固有周期の整数倍の通信周期で全局の同期を取りながら、データ送信が可能なマスター・スレーブ同期通信方式を提供することすることができるという効果がある。
【００２３】
たとえば、図３に記載の方法のように、マスターからスレーブへの指令データと該スレーブからマスターへの応答データの送信タイミングを対にして同じ基底サイクルで授受させるように送信管理テーブル、送信タイミング情報を設定すれば、通信周期内の各基底サイクルにおける通信トラフィックを図１２に示す従来技術のＰＲＯＦＩＢＵＳ―ＤＰ相当のポーリング方式のスケジューリングを行わせることができるという効果がある。
【００２４】
たとえば、図４に記載の方法のように、各スレーブからマスターへの応答データの送信タイミングをマスターからスレーブへの指令データ受信から遅延をおいた別の基底サイクルで行わせるように送信管理テーブル、送信タイミング情報を設定すれば、通信周期内の各基底サイクルにおける通信トラフィックを図１３のようにＳＥＲＣＯＳ相当のスケジューリングを行わせることもできるという効果がある。
【００２５】
図３、４に示す事例以外にも、マスター側の送信管理テーブル、スレーブ側の送信タイミング情報を、所望の送受信タイミングにあわせて設定すれば、所望のマスター・スレーブ同期通信を容易に実現することが可能である。
【発明を実施するための最良の形態】
【００２６】
以下、本発明の具体的実施例について、図に基づいて説明する。
【実施例１】
【００２７】
まず、以下の説明の中で出てくる、ＩＥＥＥ１３９４スタンダードにて規定された機能名、信号名について説明しておく。ＣＹＣＬＥ＿ＴＩＭＥレジスタは図５に示すようにcycle_offset部、cycle_count部、second_count部から構成される。cycle_offset部は各局の２４．５７６ＭＨｚのクロックをカウントし、３０７２になると、つまり固有周期の１２５μｓ毎にキャリーを出す。cycle_countはcycle_offsetからのキャリーをカウントし、８０００になると、つまり１ｓ毎にキャリーを出す。Ｃｙｃｌｅ＿ｓｙｎｃｈは固有周期１２５μｓ毎に発信される同期信号である。
【００２８】
図１に第１の発明の具体的実施例を示すが、１はマスター、２ｉ（ｉ＝１、２、・・・ｎ）はスレーブ、３はＩＥＥＥ１３９４の伝送路となっている。また１０ｊ（ｊ＝０、１、・・・ｎ）はマスターおよび各スレーブ内の時計部にあたるＣＹＣＬＥ＿ＴＩＭＥレジスタであり、ここから同期信号であるＣｙｃｌｅ＿Ｓｙｎｃｈ１１ｊが固有周期毎に発信され、基底サイクルカウンタ１２ｊをカウントアップしている。さらに、Ｃｙｃｌｅ＿Ｓｙｎｃｈ１１ｊは同期点検出手段１４ｊの実行タイミングともなっている。
【００２９】
同期点検出手段１４ｊはこれにより、基底サイクルカウンタのカウントアップ毎に同期点の検出を行い、同期点であれば基底サイクルカウンタ値を０にリセットするよう動作する。このことにより、フィールドネットワークシステム上の全局の基底サイクルカウンタの値が同期をとってカウントアップできるようになる。
【００３０】
その他にマスター１は送信管理テーブル１３０を保有し、その情報に基づき指令送信処理１５０が指令を送信し、一方各スレーブｉはおのおのの送信タイミング情報２３ｉを保有し、それらの情報に基づいて応答送信処理２５ｉが応答データを送信している。
【００３１】
図２は前記マスター側の送信管理テーブル１３０と、スレーブ側の各送信タイミング情報２３ｉの実施例を示している。マスターの送信管理テーブルには各基底サイクル値毎に指令が送信されるべき送信先スレーブが記憶されている。また、スレーブの送信タイミング情報には、マスターから指令を受信すべき、また、マスターに応答を返信すべき基底サイクル値が記憶されている。
【００３２】
図６は第１の発明の実施例を示す図１中のマスター側の指令送信処理１５０の処理フローを示し、図７はスレーブ側応答送信処理２５ｉの処理フローを示している。これらの図を用いて、以下、第１の発明の送受信について順を追って説明する。
【００３３】
マスター指令送信処理１５０は図６に示すように、固有周期毎のＣｙｃｌｅ＿ｓｙｎｃｈ１１０にて起動され、はじめにＳ１０００で基底サイクルカウンタ１２０の値を読出し変数ｐにセットする。次にＳ１００１でマスター送信管理テーブル１３０中のサイクルカウンタ値が変数ｐに対応した列データである送信指令数を変数ｑにセットし、対応する送信先スレーブナンバーのリストデータを配列Ｓ［ｋ］（ｋ＝０、１、・・・、ｑ−１）にセットする。そしてＳ１００２からＳ１００４間のループ処理に移り、Ｓ１００３にてスレーブＳ［ｋ］宛てに指令データを送信する。このようにして、基底サイクルカウンタ１２０値が更新されるたびに、そのサイクル内で送信するようスケジューリングされている全スレーブ２ｉに指令データを送信するよう動作することができる。
【００３４】
一方スレーブ側応答送信処理２５ｉでは図７のフローに沿い、固有周期毎のＣｙｃｌｅ＿ｓｙｎｃｈにて起動され、はじめにＳ２０００にて基底サイクルカウンタ１２ｊを読出し変数ｐにセットする。次にＳ２００１にて、送信タイミング情報２３ｉ中の応答サイクル値と変数ｐを比較し、一致していればその時点で応答サイクルとなっているので応答データを送信する。一致していなければ応答サイクルではないので応答データを送信しない。このようにして、あらかじめスケジューリングされている基底サイクルカウンタ１２ｊ値になるたびに応答データを送信するよう動作することができる。
【００３５】
このように、フィールドネットワークシステム内で同期をとってカウントされている基底サイクルカウンタ１２ｊ値に従いマスター１、スレーブ２ｉがそれぞれスケジューリングされたタイミングで同期をとって通信を行うことができるのである。
【００３６】
図３は送受信管理テーブル、送信タイミング情報に、同一基底サイクル内で送受信を完了するようにスケジューリングした場合の通信タイミングチャートである。マスター側送信管理テーブル１３０とスレーブ側送信タイミング情報２３ｉを適切に設定し、例えばマスター送信管理テーブル１３０内のサイクルカウンタ値０列の送信先スレーブＮｏ．を＃１、＃２、サイクルカウンタ値１列の送信先スレーブＮｏ．３を＃３、＃４とし、スレーブ＃１、スレーブ＃２内送信タイミング情報２３ｉの各応答サイクル値を０にセットし、スレーブ＃３、スレーブ＃４内送信タイミング情報２３ｉの各応答サイクル値を１にセットすれば、基底サイクルカウンタ１２ｊ値０ではスレーブ＃１とスレーブ＃２に対す指令データが送信され、逆にスレーブ＃１とスレーブ＃２からの応答データが返信され、以下同様に同じ基底サイクル内で任意のスレーブ２ｉの指令データと応答データを対にして授受させることができる。
【００３７】
図４は送受信管理テーブル、送信タイミング情報に、ある基底サイクル送れて応答を送信するようにスケジューリングした場合の通信タイミングチャートである。マスター側送信管理テーブル１３０とスレーブ側送信タイミング情報２３ｉを適切に設定し、例えばマスター送信管理テーブル１３０内のサイクルカウンタ値０列の送信先スレーブＮｏ．を＃１、＃２、サイクルカウンタ値１列の送信先スレーブＮｏ．３を＃３、＃４とし、スレーブ＃１、スレーブ＃２内送信タイミング情報２３ｉの各応答サイクル値を４にセットし、スレーブ＃３、スレーブ＃４内送信タイミング情報２３ｉの各応答サイクル値を５にセットすれば、基底サイクルカウンタ１２ｊ値０ではスレーブ＃１とスレーブ＃２に対する指令データが送信されるがスレーブ＃１とスレーブ＃２からの応答データは４サイクル遅れて基底サイクルカウンタ１２ｊ値４で返信され、同様にスレーブ＃３とスレーブ＃４の指令データは基底サイクルカウンタ１２ｊ値１で送信され、その応答データは４サイクル遅れて基底サイクルカウンタ１２ｊ値５で送信されるようにスケジューリングさせることができる。
【実施例２】
【００３８】
次に基底サイクルカウンタ１２ｊ更新の同期をとっている、同期点検出手段１４ｊの実施例について説明する。当然のことであるが、同期点の検出自体はマスター１、各スレーブ２ｉ個別に行われその結果は各局の基底サイクルカウンタ値１２ｊに反映されることになるが、その同期点となるサイクルは全局同一の判別結果が得られなければならない。本実施例ではこの同期点では基底サイクルカウンタ１２ｊ値が０となり、以後基底サイクル経過毎、即ちＣｙｃｌｅ＿ｓｙｎｃｈイベント１１ｊ発生毎に基底サイクルカウンタ１２ｊ値が１ずつカウントアップされ、所定の通信周期経過後の次回同期点でふたたび基底サイクルカウンタ１２ｊ値が０に戻るものとして説明してあるが、基底サイクルカウンタ１２ｊ値の推移はこれに限るものでなく、例えばカウントダウンを行ってもかまわないことはいうまでもない。また、同期点での基底サイクルカウンタ値は、ある決められた値であれば、必ずしも０である必要もない。
【００３９】
同期点検出手段１４ｊの具体的な方法のひとつである第２の発明を説明する。マスター１の同期点検出処理１４０は同期点検出手段は固有周期毎のＣｙｃｌｅ＿ｓｙｎｃｈイベント１１ｊに起動されるが、基底サイクルカウンタ１２０のカウントアップ処理とその値が単に０であるかどうか判定すればよい。
【００４０】
一方各スレーブ２ｉでの処理は図８に沿って説明するが、まずＳ３０００で前回基底サイクル中にマスター１からの指令データ受信があったかどうか判定する。あれば前回基底サイクルが送信タイミング情報２３ｉ中の指令サイクルであったことがわかるので、今回基底サイクルカウンタ値として指令サイクル値＋１の値をセットする。受信がなければＳ３００５にて単に基底サイクルカウンタ１２ｊをカウントアップする。次にＳ３００２にてラップアラウンドの判定のため更新した基底サイクルカウンタ値が送信タイミング情報２３ｉ中の全サイクル数以上であれば、Ｓ３００３にてカウント値を０にセットしなおした後、同期点なのでＳ３００４にて必要となる同期点検出時処理を行うことができる。
【実施例３】
【００４１】
同期点検出処理１４ｊの他の方法となる第３の発明を説明する。マスター１の同期点検出処理１４０は同期点検出手段は固有周期毎のＣｙｃｌｅ＿ｓｙｎｃｈイベント１１ｊ毎に起動され、基底サイクルカウンタ１２０のカウントアップとその値が単に０であるかどうか判定すればよい。なお、送信管理テーブルに従ってマスターからスレーブへ送信される指令データには、次回の同期点でのマスターのＣＹＣＬＥ＿ＴＩＭＥレジスタ値を含めるようにする。
【００４２】
一方各スレーブ２ｉでの処理は図９に沿って説明するが、まずＳ４０００で前回基底サイクル中にマスター１からの指令データ受信があったかどうか判定する。あればＳ４００１にて受信した指令データ中に次回同期点となるＣＹＣＬＥ＿ＴＩＭＥレジスタ値を取り出す。次にＳ４００２にて現在のＣＹＣＬＥ＿ＴＩＭＥレジスタのｃｙｃｌｅ＿ｃｏｕｎｔ値と、指令データ中の次回同期点ＣＹＣＬＥ＿ＴＩＭＥレジスタのｃｙｃｌｅ＿ｃｏｕｎｔ値との差をとる。そしてＳ４００３にて｛（スレーブ送信タイミング情報２３ｉ中の全サイクル数）−（前記の差）｝を（スレーブ送信タイミング情報２３ｉ中の全サイクル数）で割った結果の剰余を求め今回基底サイクルカウンタ値としてセットする。例えば受信した次回同期点ＣＹＣＬＥ＿ＴＩＭＥレジスタのｃｙｃｌｅ＿ｃｏｕｎｔ値が４５、現ＣＹＣＬＥ＿ＴＩＭＥレジスタのｃｙｃｌｅ＿ｃｏｕｎｔ値が４３、全サイクル数が６であった場合には、｛６−（４５−４３）｝÷６＝４÷６の剰余：４となり、この値：４を基底サイクルカウンタにセットすることになる。受信がなければＳ４００７にて単に基底サイクルカウンタ１２ｊをカウントアップする。次にＳ４００４にてラップアラウンドの判定のため更新した基底サイクルカウンタ値が送信タイミング情報２３ｉ中の全サイクル数以上であれば、Ｓ４００５にてカウント値を０にセットしなおした後、同期点なのでＳ４００６にて必要となる同期点検出時処理を行うことができる。
【実施例４】
【００４３】
同期点検出処理１４ｊの他の方法となる第４の発明を説明する。マスター１の同期点検出処理１４０は同期点検出手段は固有周期毎のＣｙｃｌｅ＿ｓｙｎｃｈイベント１１ｊ毎に起動され、基底サイクルカウンタ１２０のカウントアップとその値が単に０であるかどうか判定すればよい。なお、送信管理テーブルに従ってマスターからスレーブへ送信される指令データには、その時のマスターの基底サイクルカウンタ値を含めるようにする。
【００４４】
一方各スレーブ２ｉでの処理は図１０に沿って説明するが、まずＳ５０００で前回基底サイクル中にマスター１からの指令データ受信があったかどうか判定する。あれば該指令データに含まれる基底サイクル値＋１の値を該スレーブの基底サイクルカウンタにセットする。受信がなければＳ５００５にて単に基底サイクルカウンタ１２ｊをカウントアップする。次にＳ５００２にてラップアラウンドの判定のため更新した基底サイクルカウンタ値が送信タイミング情報２３ｉ中の全サイクル数以上であれば、Ｓ５００３にてカウント値を０にセットしなおした後、同期点なのでＳ５００４にて必要となる同期点検出時処理を行うことができる。
【実施例５】
【００４５】
同期点検出処理１４ｊの他の方法となる第５の発明を、図１１に沿って説明する。マスター１の同期点検出処理１４０は同期点検出手段は固有周期毎のＣｙｃｌｅ＿ｓｙｎｃｈイベント１１ｊ毎に起動されるが、まず、Ｓ６０００でＣＹＣＬＥ＿ＴＩＭＥレジスタのcycle_count値が通信周期に必要な基底サイクルの全サイクル数で割り切れるかどうか判定する。割り切れれば、同期点と判定し、Ｓ６００１にて基底サイクルカウンタ値を０にセットし、Ｓ６００２にて必要な同期点検出時処理を行う。割り切れなければ、同期点でないと判定しＳ６００３にて基底サイクルカウンタをカウントアップする。なお、基底サイクルをカウントアップするかわりに、ＣＹＣＬＥ＿ＴＩＭＥレジスタのcycle_count値を通信周期に必要な基底サイクルの全サイクル数で割った剰余を基底サイクルカウンタにセットしてもよい。
【００４６】
前記各スレーブでは各スレーブのＣＹＣＬＥ＿ＴＩＭＥレジスタ値を元にマスターと同じ手段で同期点を検出することができる。
【産業上の利用可能性】
【００４７】
こうして、図１に示すマスター１をコントローラとし、スレーブ２ｉをコントローラにより定周期で制御される機器としたリアルタイム制御システムにおいて、マスター・スレーブ間の通信にＩＥＥＥ１３９４を使用してマスター・スレーブ同期通信可能なリアルタイム制御システムを構築することが可能となる。具体的な一例としてマスターがモーションコントローラ、スレーブがサーボドライブ、インバータドライブなどのモータードライブ装置などからなるモーション制御システムがある。
【図面の簡単な説明】
【００４８】
【図１】第４の発明の実施例となるＩＥＥＥ１３９４を適用したシステム構成図
【図２】本発明の実施例中、マスター送信管理テーブルとスレーブ送信タイミング情報の実装例を示す図
【図３】第２の発明の実施例となる通信タイミングチャート
【図４】第３の発明の実施例となる通信タイミングチャート
【図５】ＩＥＥＥ１３９４のＣＹＣＬＥ＿ＴＩＭＥレジスタ
【図６】第1の発明の実施例となるマスター指令送信処理フローチャート
【図７】第1の発明の実施例となるスレーブ応答送信処理フローチャート
【図８】第２の発明の実施例となるスレーブの同期点検出手段フローチャート
【図９】第３の発明の実施例となるスレーブの同期点検出手段フローチャート
【図１０】第４の発明の実施例となるスレーブの同期点検出手段フローチャート
【図１１】第５の発明の実施例となるマスターおよびスレーブの同期点検出手段フローチャート
【図１２】従来の方法の1例を示す通信タイミングチャート
【図１３】従来の他の方法の例を示す通信タイミングチャート
【符号の説明】
【００４９】
１  マスター
２ｉ  スレーブ
３  ＩＥＥＥ１３９４伝送路
１０ｊ  ＣＹＣＬＥ＿ＴＩＭＥレジスタ
１１ｊ  Ｃｙｃｌｅ＿ｓｙｎｃｈ
１２ｊ  基底サイクルカウンタ
１３０  送信管理テーブル
１４ｊ  同期点検出手段
１５０  指令送信処理
２３ｉ  送信タイミング情報
２５ｉ  応答送信処理
ｃｉ・・・  スレーブ＃ｉあての指令データ
ｒｉ・・・  スレーブ＃ｉからの応答データ
ただし、
ｉ＝１、２、・・・ｎ  （ｎは１以上の整数）
ｊ＝０、１、２、・・・ｎ（ｎは１以上の整数）
【図１】
2005045672.tif 000003
【図２】
2005045672.tif 000004
【図３】
2005045672.tif 000005
【図４】
2005045672.tif 000006
【図５】
2005045672.tif 000007
【図６】
2005045672.tif 000008
【図７】
2005045672.tif 000009
【図８】
2005045672.tif 000010
【図９】
2005045672.tif 000011
【図１０】
2005045672.tif 000012
【図１１】
2005045672.tif 000013
【図１２】
2005045672.tif 000014
【図１３】
2005045672.tif 000015