(57)【要約】  1台のマスタと複数台のスレーブをシリアル伝送路で接続し、所定の通信周期で、前記マスタと前記スレーブの間で、制御データの交換を行うマスタ・スレーブ通信システムにおいて、等で制御データの交換に失敗し再実行した場合でも、通信周期が揺らぐことがない通信システムを提供する。  マスタ装置（１）の通信制御部（１３０）が、制御データの交換中に通信異常を検出したスレーブを登録し、該通信周期内に再送のための時間が残存している場合に、通信異常を検出したスレーブへの再送を実行する。
2008078585.tif 000002
【特許請求の範囲】
【請求項１】
1台のマスタと1台または複数台のスレーブをシリアル伝送路で接続し、所定の通信周期で前記マスタと前記スレーブ間で制御データの交換を行うマスタ・スレーブ通信システムにおいて、
前記マスタは、前記制御データの交換に必要な通信見込み時間を前記スレーブ毎に登録する手段と、
前記通信周期における前記制御データの交換中に通信異常を検出した前記スレーブを登録する手段と、
前記通信異常を検出した時と同一の前記通信周期内において前記登録されたスレーブとの前記制御データの交換を再実行する手段とを具備し、
前記制御データの交換を再実行する手段は、前記制御データの交換の再実行に使用可能な再送残り時間を算出し、前記再送残り時間が前記登録されたスレーブの前記通信見込み時間より長い場合に前記制御データを再送するものであることを特徴とするマスタ・スレーブ通信システム。
【請求項２】
前記再送残り時間は、その初期値が前記通信周期からすべての前記スレーブの前記通信見込み時間の合計を差し引いた再送時間上限値であり、前記再送が実行される毎に該再送に対応する前期通信見込み時間が差し引かれるものであることを特徴とする請求項１に記載のマスタ・スレーブ通信システム。
【請求項３】
1台のマスタと1台または複数台のスレーブをシリアル伝送路で接続し、所定の通信周期で前記マスタと前記スレーブ間で制御データの交換を行うマスタ・スレーブ通信システムにおいて、
前記マスタは、前記制御データの交換に必要な通信見込み時間を前記スレーブ毎に登録する手段と、
前記通信周期における前記制御データの交換中に通信異常を検出した前記スレーブを登録する手段と、
通信異常を検出した時と同一の前記通信周期内において前記登録されたスレーブとの前記制御データの交換を再実行する手段とを具備し、
前記スレーブを登録する手段は、前記制御データ交換中に通信異常を検出した前記スレーブを、前記制御データの交換の再実行に使用可能な再送残り時間を算出し、前記再送残り時間が前記登録されたスレーブの前記通信見込み時間より長い場合に登録し、
前記制御データの交換を再実行する手段は、前記登録されたスレーブに対し前記制御データを再送するものであることを特徴とするマスタ・スレーブ通信システム。
【請求項４】
前記再送残り時間は、その初期値が前記通信周期からすべての前記スレーブの前記通信見込み時間の合計を差し引いた再送時間上限値であり、前記通信異常を検出したスレーブが登録される毎に該スレーブに対応する前期通信見込み時間が差し引かれるものであることを特徴とする請求項３に記載のマスタ・スレーブ通信システム。
【請求項５】
前記マスタは、前記制御データの交換が実行される前に、前記スレーブ宛に計測用指令データを送信し、前記計測用指令データを受信した前記スレーブは、計測用応答データを返信し、前記マスタは、前記計測用指令データの送信から前記計測用応答データの受信までの時間を計測することにより、前記通信見込み時間を算出することを特徴とする請求項１または請求項３に記載のマスタ・スレーブ通信システム。
【請求項６】
前記マスタは、前記制御データの交換中に前記スレーブ毎に前記制御データの交換時間を計測し、その計測結果により前記通信見込み時間を更新することを特徴とする請求項１または請求項３に記載のマスタ・スレーブ通信システム。
【請求項７】
1台のマスタと1台または複数台のスレーブをシリアル伝送路で接続し、所定の通信周期で前記マスタと前記スレーブ間で制御データの交換を行うマスタ・スレーブ通信方法において、
前記通信周期毎に実行される前記マスタの処理が、前記スレーブへ前記制御データを送信するステップと、
前記スレーブから前記制御データを受信するステップと、
前記送信ステップまたは前記受信ステップにて通信異常を検出した場合は、再送対象として該スレーブを無条件に登録するステップを前記スレーブ毎に繰り返すステップと、
前記再送対象として登録されたスレーブを取り出すステップと、
前記制御データの交換の再実行に使用可能な再送残り時間と前記スレーブの前記制御データの交換に必要な通信見込み時間を比較するステップと、
前記再送残り時間が前記登録されたスレーブの前記通信見込み時間より長い場合に前記制御データの交換を再実行するステップからなることを特徴とするマスタ・スレーブ通信方法。
【請求項８】
前記再送残り時間は、その初期値が前記通信周期からすべての前記スレーブの前記通信見込み時間の合計を差し引いた再送時間上限値であり、前記再送が実行される毎に該再送に対応する前期通信見込み時間が差し引かれるものであることを特徴とする請求項７に記載のマスタ・スレーブ通信方法。
【請求項９】
1台のマスタと1台または複数台のスレーブをシリアル伝送路で接続し、所定の通信周期で前記マスタと前記スレーブ間で制御データの交換を行うマスタ・スレーブ通信方法において、
前記通信周期毎に実行される前記マスタの処理が、
前記スレーブへ前記制御データを送信するステップと、
前記スレーブから前記制御データを受信するステップと、
前記送信ステップまたは受信ステップにて通信異常を検出した場合は、前記制御データの交換の再実行に使用可能な再送残り時間が前記スレーブの前記制御データの交換に必要な通信見込み時間より長い場合のみ前記通信異常を検出したスレーブを再送対象として登録するステップを前記スレーブ毎に繰り返すステップと、
前記再送対象として登録されたスレーブを取り出すステップと、
前記スレーブとの制御データの交換を再実行するステップからなるものであることを特徴とするマスタ・スレーブ通信方法。
【請求項１０】
前記再送残り時間は、その初期値が前記通信周期からすべての前記スレーブの前記通信見込み時間の合計を差し引いた再送時間上限値であり、前記通信異常を検出したスレーブが登録される毎に該スレーブに対応する前期通信見込み時間が差し引かれるものであることを特徴とする請求項９に記載のマスタ・スレーブ通信方法。
【請求項１１】
前記通信見込み時間は、前記制御データの交換が実行される前に、前記スレーブ宛に計測用指令データを送信し、前記計測用指令データを受信した前記スレーブは、計測用応答データを返信し、前記マスタは前記計測用指令データの送信から前記計測用応答データの受信までの時間を計測することにより算出されることを特徴とする請求項７または請求項９に記載のマスタ・スレーブ通信方法。
【請求項１２】
前記通信見込み時間は、前記制御データの交換中に前記スレーブ毎に前記制御データの交換時間を計測し、その計測結果により更新されることを特徴とする請求項７または請求項９に記載のマスタ・スレーブ通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、1台のマスタと複数台のスレーブをシリアル伝送路で接続し、所定の通信周期で、前記マスタと前記スレーブの間で、制御データの交換を行うマスタ・スレーブ通信システムに関する。
【背景技術】
【０００２】
一般に製造装置では、PLCやパソコンなどの制御機器をマスタとして、複数台のセンサ、リレー、モータなどのスレーブ機器が、マスタと制御データの交換を周期的に行う。図８は、マスタ・スレーブ通信システムのシステム構成例である。1台のマスタ機器が伝送路30を介して、複数のスレーブ機器と接続している。製造現場では、機械やリレー装置から発生するノイズ等により伝送路上で制御データが破壊されることがしばしばあるため、制御データの交換を再実行することは、伝送の信頼性を上げるための手段として必要である。【０００３】
制御データの交換の再実行を含め、一般に通信の再送は逐次実行されていて、これを周期通信を行うマスタ・スレーブ通信システムへ適用した従来例を図１０に示す。図１０は、マスタが、通信周期の先頭で通信周期開始を通知後、各スレーブと順に制御データの交換を実施する例である。通信周期開始の通知は、スレーブへ入出力データのラッチタイミングの通知に使用され、マスタから各スレーブへ送信される制御データはリレーへの出力データやモータへの指令値、各スレーブからマスタへ送信される制御データはセンサの入力データやモータの現在値の転送に使用される。以下、制御データの交換とは、マスタからスレーブへの指令データの送信とスレーブからの応答データの受信の両方を含めた意味で使用する。また、スレーブへの指令データとスレーブからの応答データのサイズは必ずしも同一である必要はない。
図１０は、スレーブ#2への出力データがノイズ等により破壊され、受信に失敗したスレーブ#2はマスタへ何も返さない場合を例示している。このように各スレーブに対し個別に制御データの交換を再実行(以下、単に再送と表記)する方式では、再送対象となるスレーブが増えた場合、通信周期を超過し、通信周期の揺らぎが発生する問題があった。このため、全スレーブに対して再送が可能なだけ余裕を持った通信周期を予め設定しなければならない問題があった。【０００４】
この問題に対し、特許第3628042号の方式では、マスタはスレーブ毎に再送カウンタTXNと再送回数の合計を計数する再送合計カウンタTXCを実装し、前記再送カウンタの計数値が予めスレーブ毎に設定された制限値以下で、かつ、前記再送合計カウンタの計数値も予め設定された制限値以下であれば再送を行う方式(以下、方式1)を開示している(図１１（特許文献１、図１）)。また、特許第3628042号では別の方式として、マスタはスレーブ毎に再送カウンタTXNと再送に消費した時間を計時する時間カウンタTCNTを実装し、前記再送カウンタの計数値が予めスレーブ毎に設定された制限値以下で、かつ、前記時間カウンタの計数値も予め設定された制限値以下であれば再送を行う方式(以下、方式2)も開示している(図１２（特許文献１、図３）)。【０００５】
【特許文献１】特許第3628042号  図1および図3
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、通信周期の揺らぎを発生させないためには、従来の方式1では制御データの交換に必要な通信時間(以下、単に通信時間と表記)が最も長いスレーブを基準に再送の制限回数を決める必要があり、それに合わせて通信周期を伸ばす必要がある。【０００７】
ここで通信時間は、マスタからスレーブへの指令データの伝送時間とスレーブからの応答データの伝送時間を含むため、それぞれのデータ長、および、伝送速度に依存する。この他に、通信時間はネットワークのトポロジーにも依存する。例えば、RS-485の様に接続機器と伝送路が並列接続されているネットワークでは、全ての機器間で伝送遅延は一定で、その値は伝送路上の信号の伝播遅延と見なせる。これに対し、図９に接続例を示したIEEE1394の様に、接続機器と伝送路がカスケードまたは直列に接続されたネットワークでは、送信先機器と送信元機器の間に接続された機器にて信号を中継する際に生じる遅延により、前記信号の伝播遅延に加えて、中継遅延を考慮する必要がある。同様の中継遅延は、ツイストペアケーブルを使用したEthernet（登録商標）でも発生する。特に、Ethernet（登録商標）において、ストア・フォワード型のスイッチイングHUBを中継する場合、中継遅延は顕著になる。このため、制御データのデータ長が同一の場合でも、接続位置により通信時間は異なる。 加えて、通信時間に考慮すべき時間として、スレーブが指令データを受信してから応答データを送信するまでの、応答処理時間がある。以上に述べた様に、再送の制限回数を決めるために必要な通信時間を算出するには、スレーブ別にそれぞれの要素を考慮して複雑な計算をしなければならない。【０００８】
従来の方式2は、従来の方式1の再送合計カウンタの代わりに時間カウンタを使用し、実際に消費した時間で計時しているので、スレーブ毎に通信時間が異なる場合でも複雑な計算を行う必要はないが、本方式では実際に消費した時間で計時しているため、再送前に上限時間に満たないと判断した場合でも再送実行の結果、通信周期を超過する可能性がある。特に、制御データのデータ長の大きな場合や、伝送路遅延が大きな場合には、通信周期の揺らぎは大きくなる。
加えて、従来方式は方式1および方式2ともに、再送を逐次実行しているため、通信周期内の先頭に割付けられたスレーブの再送が優先され、後続の局では再送が行われない可能性がある。【０００９】
工作機械やマウンタなどのモーション制御システムでは、マスタであるモーションコントローラが、通信を介してスレーブ機器と制御ループを組むため、揺らぎのない通信周期での制御データの交換が要求される。モーション制御システムでも、機械やリレー装置から発生するノイズ等により伝送路上で制御データが破壊されることがしばしばあるため、伝送の信頼性を上げるための手段として再送は必要である。しかし、再送のために、モーション制御システムでの通信周期の揺らぎが発生すると、指令データの払い出しや現在位置の取得タイミングが不安定になり、制御精度を低下させる問題がある。また、高速な制御を行うためには、制御ループの周期を短縮する必要があり、再送の目的で最大通信時間を基準に通信周期を伸ばすことは、制御性能を低下させる問題がある。
本発明はこのような問題点に鑑みてなされたものであり、再送を行っても揺らぎの発生しない通信周期で制御データを交換することができる通信システムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記問題を解決するため、本発明は、次のようにしたのである。
請求項１に記載の発明は、1台のマスタと1台または複数台のスレーブをシリアル伝送路で接続し、所定の通信周期で前記マスタと前記スレーブ間で制御データの交換を行うマスタ・スレーブ通信システムにおいて、
前記マスタは、前記制御データの交換に必要な通信見込み時間を前記スレーブ毎に登録する手段と、
前記通信周期における前記制御データの交換中に通信異常を検出した前記スレーブを登録する手段と、
前記通信異常を検出した時と同一の前記通信周期内において前記登録されたスレーブとの前記制御データの交換を再実行する手段とを具備し、
前記制御データの交換を再実行する手段は、前記制御データの交換の再実行に使用可能な再送残り時間を算出し、前記再送残り時間が前記登録されたスレーブの前記通信見込み時間より長い場合に前記制御データを再送するものであることを特徴とするものである。【００１１】
請求項２に記載の発明は、請求項１に記載の発明における前記再送残り時間は、その初期値が前記通信周期からすべての前記スレーブの前記通信見込み時間の合計を差し引いた再送時間上限値であり、前記再送が実行される毎に該再送に対応する前期通信見込み時間が差し引かれるものであることを特徴とするものである。【００１２】
請求項３に記載の発明は、1台のマスタと1台または複数台のスレーブをシリアル伝送路で接続し、所定の通信周期で前記マスタと前記スレーブ間で制御データの交換を行うマスタ・スレーブ通信システムにおいて、
前記マスタは、前記制御データの交換に必要な通信見込み時間を前記スレーブ毎に登録する手段と、
前記通信周期における前記制御データの交換中に通信異常を検出した前記スレーブを登録する手段と、
通信異常を検出した時と同一の前記通信周期内において前記登録されたスレーブとの前記制御データの交換を再実行する手段とを具備し、
前記スレーブを登録する手段は、前記制御データ交換中に通信異常を検出した前記スレーブを、前記制御データの交換の再実行に使用可能な再送残り時間を算出し、前記再送残り時間が前記登録されたスレーブの前記通信見込み時間より長い場合に登録し、
前記制御データの交換を再実行する手段は、前記登録されたスレーブに対し前記制御データを再送するものであることを特徴とするものである。【００１３】
請求項４に記載の発明は、請求項３に記載の発明における前記再送残り時間は、その初期値が前記通信周期からすべての前記スレーブの前記通信見込み時間の合計を差し引いた再送時間上限値であり、前記通信異常を検出したスレーブが登録される毎に該スレーブに対応する前期通信見込み時間が差し引かれるものであることを特徴とするものである。【００１４】
請求項５に記載の発明は、請求項１または請求項３に記載の発明において、前記マスタが、前記制御データの交換が実行される前に、前記スレーブ宛に計測用指令データを送信し、前記計測用指令データを受信した前記スレーブは、計測用応答データを返信し、前記マスタは、前記計測用指令データの送信から前記計測用応答データの受信までの時間を計測することにより、前記通信見込み時間を算出することを特徴とするものである。【００１５】
請求項６に記載の発明は、請求項１または請求項３に記載の発明において、前記マスタが、前記制御データの交換中に前記スレーブ毎に前記制御データの交換時間を計測し、その計測結果により前記通信見込み時間を更新することを特徴とするものである。【００１６】
請求項７に記載の発明は、1台のマスタと1台または複数台のスレーブをシリアル伝送路で接続し、所定の通信周期で前記マスタと前記スレーブ間で制御データの交換を行うマスタ・スレーブ通信方法において、
前記通信周期毎に実行される前記マスタの処理が、前記スレーブへ前記制御データを送信するステップと、
前記スレーブから前記制御データを受信するステップと、
前記送信ステップまたは前記受信ステップにて通信異常を検出した場合は、再送対象として該スレーブを無条件に登録するステップを前記スレーブ毎に繰り返すステップと、
前記再送対象として登録されたスレーブを取り出すステップと、
前記制御データの交換の再実行に使用可能な再送残り時間と前記スレーブの前記制御データの交換に必要な通信見込み時間を比較するステップと、
前記再送残り時間が前記登録されたスレーブの前記通信見込み時間より長い場合に前記制御データの交換を再実行するステップからなることを特徴とするものである。【００１７】
請求項８に記載の発明は、請求項７に記載の発明において、前記再送残り時間は、その初期値が前記通信周期からすべての前記スレーブの前記通信見込み時間の合計を差し引いた再送時間上限値であり、前記再送が実行される毎に該再送に対応する前期通信見込み時間が差し引かれるものであることを特徴とするものである。【００１８】
請求項９に記載の発明は、1台のマスタと1台または複数台のスレーブをシリアル伝送路で接続し、所定の通信周期で前記マスタと前記スレーブ間で制御データの交換を行うマスタ・スレーブ通信方法において、
前記通信周期毎に実行される前記マスタの処理が、
前記スレーブへ前記制御データを送信するステップと、
前記スレーブから前記制御データを受信するステップと、
前記送信ステップまたは受信ステップにて通信異常を検出した場合は、前記制御データの交換の再実行に使用可能な再送残り時間が前記スレーブの前記制御データの交換に必要な通信見込み時間より長い場合のみ前記通信異常を検出したスレーブを再送対象として登録するステップを前記スレーブ毎に繰り返すステップと、
前記再送対象として登録されたスレーブを取り出すステップと、
前記スレーブとの制御データの交換を再実行するステップからなるものであることを特徴とするものである。【００１９】
請求項１０に記載の発明は、請求項９に記載の発明において、前記再送残り時間は、その初期値が前記通信周期からすべての前記スレーブの前記通信見込み時間の合計を差し引いた再送時間上限値であり、前記通信異常を検出したスレーブが登録される毎に該スレーブに対応する前期通信見込み時間が差し引かれるものであることを特徴とするものである。【００２０】
請求項１１に記載の発明は、請求項７または請求項９に記載の発明において、前記通信見込み時間は、前記制御データの交換が実行される前に、前記スレーブ宛に計測用指令データを送信し、前記計測用指令データを受信した前記スレーブは、計測用応答データを返信し、前記マスタは前記計測用指令データの送信から前記計測用応答データの受信までの時間を計測することにより算出されることを特徴とするものである。【００２１】
請求項１２に記載の発明は、請求項７または請求項９に記載の発明において、前記通信見込み時間は、前記制御データの交換中に前記スレーブ毎に前記制御データの交換時間を計測し、その計測結果により更新されることを特徴とするものである。
【発明の効果】
【００２２】
請求項１、２、３、４、７、８、９、１０に記載の発明よると、所定の通信周期における制御データの交換において、ノイズの影響などにより通信異常が発生しても、その再送を見込み時間で管理するため、あらかじめ決められた時間内に確実に抑えることができ、通信周期に揺らぎを発生させない。
請求項５、１１に記載の発明によると、通信見込み時間も実システムで計測するため、算出のための複雑な計算を必要としない。
請求項６、１２に記載の発明によると、各スレーブの制御データの交換に必要な通信見込み時間を、制御データの交換中に再計測することで、通信見込み時間をより正確に計測ができ、再送をより高い精度で管理できる。
【図面の簡単な説明】
【００２３】
【図１】本発明の第１の実施例におけるマスタのブロック図
【図２】本発明の第１の実施例におけるスレーブ情報のリストを示す図
【図３】本発明の第１の実施例における再送リストの構造を示す図
【図４】本発明の第１の実施例における通信見込み時間計測処理の動作例を示すフローチャート
【図５】本発明の第１の実施例における通信タイミングチャート
【図６】本発明の第１の実施例におけるマスタでの制御データの交換処理の動作例を示すフローチャート
【図７】本発明の第２の実施例におけるマスタでの制御データの交換処理の動作例を示すフローチャート
【図８】本発明を適用するマスタ・スレーブ通信システムのシステム構成図
【図９】ＩＥＥＥ１３９４を使用した本発明を適用するマスタ・スレーブ通信システムのシステム構成例
【図１０】従来の方法の通信タイミングを示すタイミングチャート
【図１１】従来方式１の制御データの交換処理の動作例を示すフローチャート
【図１２】従来方式２の制御データの交換処理の動作例を示すフローチャート
【符号の説明】
【００２４】
１  マスタ
２１〜２３ スレーブ
３０〜３５ 伝送路
４１ ＨＵＢ
１１０ 機器固有制御部
１２０ 記憶部
１２１ 送信バッファ
１２１１, １２１２, １２１ｎ スレーブ＃１, ＃２, ＃ｎの送信バッファ
１２２ 受信バッファ
１２２１, １２２２, １２２ｎ スレーブ＃１, ＃２, ＃ｎの受信バッファ
１２３ 再送リスト
１２３２ 再送スレーブ数
１２３３ 再送スレーブ選択
１２３４ 再送対象スレーブ一覧
１２３５ 再送時間上限
１２３６ 再送残り時間
１２３７ 通信周期
１２４ スレーブリスト
１２４１１ スレーブ＃1の局アドレス
１２４２１ スレーブ＃1の送信バッファへのポインタ
１２４３１ スレーブ＃1の受信バッファへのポインタ
１２４４１ スレーブ＃1の通信見込み時間
１３０ 通信制御部
１３１ 通信周期タイマ
１３２ 計測用タイマ
【発明を実施するための最良の形態】
【００２５】
以下、本発明の方法の具体的実施例について、図に基づいて説明する。以下、異なる図においても同じ器具符号を持つものは、同一の内容を示している。
【実施例１】
【００２６】
図１は、本発明の第１の実施例となるマスタのブロック図である。マスタは、機器固有制御部110、記憶部120、通信制御部130から構成され、通信制御部130を介して伝送路30に接続される。機器固有制御部110は、スレーブから受信する応答データを解析し、所定の制御論理に従って次の指令データを作成する部分である。作成された指令データは、記憶部120の送信バッファ121に格納され、格納された指令データは通信制御部130により、スレーブへ送信される。
また、スレーブから受信した応答データは、通信制御部130により記憶部120の受信バッファ122に格納され、格納された応答データは前記機器固有制御部110に読み出される。また、マスタは、指令データの送信または応答データの受信に失敗、すなわち、制御データの交換に失敗したスレーブを登録する再送リスト123と、伝送路に接続されているスレーブに関する情報を格納するスレーブリスト124とを備えている。【００２７】
図２は、第１の実施例におけるスレーブリスト124の構造を示す図である。スレーブリストは、各スレーブに関する情報を格納したスレーブ情報の配列で構成される。スレーブ情報には、各スレーブの局アドレス12411、送信バッファへのポインタ12421および受信バッファへのポインタ12431を持っている。他に、本発明の特徴として、スレーブ情報には、スレーブへの指令データの送信開始から、スレーブからの応答データ受信までの、即ち、制御データの交換に必要な時間が格納される通信見込み時間12441を備える。【００２８】
図３は、第１の実施例における再送リスト123の構造を示す図である。
再送リスト123は、通信周期1237、通信周期内で再送に使用可能な時間の最大値を格納する再送時間上限1235、再送対象となる制御データの交換で異常検出したスレーブ数および当該スレーブのスレーブ情報へのポインタを格納する再送スレーブ数1232および再送対象スレーブ一覧1234、再送対象スレーブ一覧1234の現在再送対象となっているスレーブを指す再送スレーブ選択1233、および、通信周期内に再送可能な時間を格納する再送残り時間1236から構成される。【００２９】
通信周期1237と再送時間上限1235は制御データの交換を開始する前に設定され、制御データの交換開始後は変更しない。ここで、再送時間上限1235は、通信周期と共にユーザが設定しても良いし、通信周期から全スレーブの通信見込み時間の合計を差し引いた時間としても良い。
これに対し、通信周期毎に、再送スレーブ数1232は0に、再送残り時間1236は再送時間上限1235に初期化される。再送スレーブ数1232は、制御データの交換中に指令データの送信または応答データの受信に失敗した場合に1インクリメントされ、再送の実行により制御データの交換が正常終了した場合に1デクリメントする。再送残り時間1236は再送の結果に拘らず再送を実行する度に再送対象のスレーブの通信見込み時間12441だけ減算される。【００３０】
続いて、第1の実施例における通信見込み時間12441の計測方法について、図４を用いて説明する。本フローは、マスタが制御データの交換を開始する前に、任意のタイミングにて実行するものである。以下の説明において、計測用タイマ132と表記されるタイマは、通信周期タイマ131を使用しても良い。【００３１】
マスタは、始めに通信見込み時間の計測用指令データを作成する(S30001)。この時作成する計測用指令データは、制御データの交換時にマスタから計測対象となるスレーブへ送信する指令データと同一のデータ長にする。同様に、各スレーブは、制御データの交換時にマスタへ送信する応答データと同一データ長の計測用応答データを作成する(不図示)。
次に、マスタは計測用タイマ132を起動後(S30002)、計測用指令データを送信し(S30003)、スレーブからの計測用応答データを受信する(S30004)。マスタは、スレーブからの計測用応答データを正常に受信した場合、計測用タイマ132を停止し(S30006)、タイマの現在時刻から通信見込み時間を算出し(S30007)、スレーブリスト124の該当スレーブの通信見込み時間12441に登録する(S30008)と共に、算出した通信見込み時間を累積しておく(S30009)。
マスタは、前記S30001からS3009の手順を、スレーブリスト124に登録された全スレーブ分繰り返した後、前記S30009で算出した通信見込み時間の累積値と再送リスト123の通信周期1237との差を再送時間上限値として算出する(S30011)。算出した再送時間上限値は、再送リスト123の再送時間上限1235へ格納する。本例では、計測用指令データと制御データの指令データ、および、計測用応答データと制御データの応答データを、それぞれ同一のデータ長にしたが、データ長は合わせず、通信見込み時間の算出時にデータ長の差異分の伝送時間を補正しても良い。【００３２】
以上の通り、本手順による通信見込み時間の計測方法は、接続機器の機種に依存して中継時間や応答処理時間が機器毎に異なる場合や、および、各伝送路長に依存して信号の伝播遅延が伝送路毎に異なる場合でも複雑な計算を必要としない。【００３３】
図５は、本発明の第１の実施例となる通信タイミングチャートである。
本例の通信周期は、制御データの交換を行う帯域と、それを再実行する帯域から構成される。マスタは、前記制御データを交換する帯域では、最初に通信周期の開始を示す同期フレームを一斉同報した後、各スレーブと個別に制御データの交換を実行する。ここで、指令データの送信または応答データの受信に失敗したスレーブがあれば、マスタは再送リスト123に登録する。次にマスタは、再送リスト123の登録に従って再送を行う。ここで、制御データの交換が全て正常に実行された場合、再送を行う帯域を使用して、メッセージ通信を実行してもよい。また、再送を行う場合も、通信周期終了までの残り時間の範囲内で、メッセージ通信を実行してもよい(不図示)。【００３４】
図６は、マスタの通信制御部130が通信周期毎に行う制御データの交換処理の動作例を示すフローチャートである。本フローチャートは、通信周期開始のタイミングで毎回起動されるものである。
通信制御部130は、通信周期開始のタイミングで、再送リスト123の初期化を行う(S10001)。具体的には、再送スレーブ数1232の0クリアと、再送残り時間1236に再送時間上限1235の代入を行う。次に記憶部からスレーブリスト124の先頭に登録されたスレーブ情報から、スレーブの送信バッファと受信バッファを取り出し(S10002)、スレーブへ指令データを送信する(S10003)。送信後は、前記スレーブからの応答データを受信する(S10004)。【００３５】
ここで、指令データの送信、または、応答データの受信に失敗した場合、再送リスト123に該スレーブのスレーブ情報を登録する(S10013)。具体的にスレーブ情報の登録とは、再送スレーブ数1232を配列要素番号とする再送対象スレーブ一覧1234の配列要素に、スレーブ情報へのポインタを格納すると共に、再送スレーブ数1232を1インクリメントすることを意味する。
また、この時再送スレーブ数1232のインクリメントする前の値が0の場合、再送スレーブ選択1233には再送対象スレーブ一覧1234の先頭ポインタを格納する。指令データの送信、応答データの受信のいずれも成功した場合、再送リスト123の更新は行わない。通信制御部130は、前記手順をスレーブリスト124の登録された順にスレーブ毎に実行するため、次のスレーブのスレーブ情報をスレーブリスト124から取り出し(S10014)、ステップS10002から繰り返す。【００３６】
通信制御部130は、全スレーブとの送受信が終了した場合、再送スレーブ数1232を参照し、再送対象となるスレーブが登録されているかどうか確認する(S10007)。再送対象となる対象スレーブが登録されている場合、すなわち、再送スレーブ数1232が1以上の場合、再送対象スレーブ一覧1234の先頭から順に登録されたスレーブ情報を取り出す。ここで、再送残り時間1236と該スレーブの通信見込み時間12441を比較し（S10009）、再送残り時間1236が通信見込み時間12441より長い場合は、再送残り時間1236から通信見込み時間12441を減算すると共に再送を行う(S10011およびS10012)。再送残り時間1236が通信時間12441より短い場合は、制御データの交換処理を終了する。
再送を行った場合、指令データの送信、応答データの受信が正常に終了したかを確認し(S10015)、いずれも成功した場合、該スレーブのスレーブ情報を再送リスト123から削除する(S10016)。スレーブ情報の削除とは、再送対象スレーブ一覧1234の再送スレーブ選択1233が示す配列要素に登録されている該当スレーブ情報へのポインタを削除すると共に、再送スレーブ数1232を1デクリメントすることを意味する。
再送を行った場合、その再送結果にかかわらず、再送スレーブ選択1233を再送対象スレーブ一覧1234の次のスレーブに更新(S10017)した後、ステップS10007から繰り返す。このとき、その更新前の再送スレーブ選択1233が再送対象スレーブ一覧1234に登録された最後のスレーブを指していた場合、再送対象スレーブ一覧1234に登録された最初のスレーブを指すように、再送スレーブ選択1233を更新する。
以上により、再送リスト123に登録されたスレーブは、再送機会が平等に与えられる上、再送に失敗した場合でも再送残り時間がある限り、繰り返し再送することができる。
【実施例２】
【００３７】
続いて、本発明の第２の実施例について説明する。ここで、第２の実施例におけるマスタのブロック図、スレーブリストの構造、再送リストの構造、通信見込み時間の計測方法、および、通信タイミングチャートは第１の実施例と同じであるため、説明を省略する。【００３８】
図７は、実施例におけるマスタの通信制御部130が通信周期毎に行う制御データの交換処理の動作例を示すフローチャートである。本フローチャートは、第１の実施例同様に通信周期開始のタイミングで毎回起動されるものである。第２の実施例でも、通信制御部130が、通信周期開始のタイミングで、再送リスト123の初期化を行い(S20001)、その後、スレーブリスト124に登録された順に、スレーブへ指令データを送信し(S20003)、前記スレーブからの応答データを受信する(S20004)手順は、第１の実施例と同じである。
しかし、第２の実施例では、指令データの送信、または、応答データの受信に失敗した場合、前記スレーブの通信見込み時間12441と再送残り時間1236を比較し(S20012)、通信見込み時間12441が再送残り時間1236以下の場合は、再送残り時間1236から通信見込み時間12441を減算した後(S20013)、前記スレーブのスレーブ情報を再送リスト123に登録する(S20014)。
これに対して、通信見込み時間12441が再送残り時間1236より大きい場合、スレーブ情報の再送リスト123への登録は行わない。【００３９】
通信制御部130は、全スレーブとの送受信が終了した場合、再送スレーブ数1232を参照し、再送対象となるスレーブが登録されているかどうか確認する(S20007)。再送対象となる対象スレーブが登録されている場合、すなわち、再送スレーブ数1232が1以上の場合、再送を実行する。再送の手順は第１の実施例と同じだが、第２の実施例では再送リストに登録された全てのスレーブに対し無条件に再送を1回ずつ実行することが第１の実施例と異なる。
但し、第2の実施例の再送方法(図7のS20007以降)を、第1の実施例の再送方法(図6のS10007以降)に変更し、再送残り時間がある限り同一スレーブに対し複数回再送することができるように変更しても良い。
【実施例３】
【００４０】
続いて、本発明の第３の実施例について説明する。ここで、第１、第２の実施例と第３の実施例と差は、通信見込み時間12441の計測に関してのみのため、以下はその差分についてのみ説明する。【００４１】
第１、第２の実施例では、制御データの交換を開始する前に、計測用指令データと計測用応答データを使用して図４に示す手順に従って各スレーブの通信見込み時間を計測、結果をスレーブリスト124に保存し、制御データの交換後は前記スレーブリスト124に格納された値を参照していた。
これに対し、第３の実施例では、制御データの交換開始後、指令データの送信前(図６ではS10002とS10003の間、図７ではS20002とS20003の間)に計測用タイマ132を起動し、送信処理/受信処理の正常判定後(図６ではS10005とS10006の間、図７ではS20005とS20006の間)に計測用タイマ132を停止させ、タイマの現在時刻から通信見込み時間を算出し、算出した通信見込み時間でスレーブリスト124の該当スレーブの通信見込み時間12441を更新する。ここで、更新する通信見込み時間12441には、毎通信周期に算出する結果を使用せずに、複数回で平均化した値を使用しても良い。【００４２】
このように、再送を予め設定された上限の範囲で実行できるため、再送が発生しても、通信周期の揺らぎを防止することができる。工作機械やマウンタなどのモーション制御システムにおいては、モーションコントローラが、通信を介してスレーブ機器と固定周期で制御ループを組むことができる。
【図１】
2008078585.tif 000003
【図２】
2008078585.tif 000004
【図３】
2008078585.tif 000005
【図４】
2008078585.tif 000006
【図５】
2008078585.tif 000007
【図６】
2008078585.tif 000008
【図７】
2008078585.tif 000009
【図８】
2008078585.tif 000010
【図９】
2008078585.tif 000011
【図１０】
2008078585.tif 000012
【図１１】
2008078585.tif 000013
【図１２】
2008078585.tif 000014
【国際調査報告】
2008078585.tif 000015
2008078585.tif 000016