(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-11
(45)【発行日】2024-03-19
(54)【発明の名称】通信制御システム及び通信制御方法
(51)【国際特許分類】
H04L 12/28 20060101AFI20240312BHJP
【FI】
H04L12/28 200B
H04L12/28 400
(21)【出願番号】P 2020092873
(22)【出願日】2020-05-28
【審査請求日】2023-03-08
(73)【特許権者】
【識別番号】390008235
【氏名又は名称】ファナック株式会社
(74)【代理人】
【識別番号】100106002
【氏名又は名称】正林 真之
(74)【代理人】
【識別番号】100165157
【氏名又は名称】芝 哲央
(74)【代理人】
【識別番号】100160794
【氏名又は名称】星野 寛明
(72)【発明者】
【氏名】松島 多佳彦
(72)【発明者】
【氏名】佐伯 正博
【審査官】宮島 郁美
(56)【参考文献】
【文献】特開2018-129708(JP,A)
【文献】特開2018-129707(JP,A)
【文献】特開平7-312613(JP,A)
【文献】米国特許出願公開第2020/0119975(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L12/00-12/66,13/00,41/00-49/9057,61/00-65/80,69/00-69/40
(57)【特許請求の範囲】
【請求項1】
通信マスタを備える制御装置と、前記制御装置にデイジーチェーンにより通信可能に接続された通信スレーブをそれぞれ備える複数のI/Oユニットとの間で、予め設定された一定周期毎に、前記制御装置が全てのI/OユニットとI/O信号を送受信する通信制御システムにおいて、
前記通信マスタは、
前記複数の通信スレーブ毎に計測される送信メッセージを除くDIデータ及びDOデータのみの通信に要する通信時間に基づいて算出される前記複数の通信スレーブ毎の通信予測時間と、前記一定周期毎に計測される最初の通信スレーブとの通信開始から現時点までの通信時間と、通信速度情報と、から各通信スレーブの通信開始前に、当該通信スレーブに許容される通信帯域マージンデータ量を算出するマージンデータ量算出部と、
前記通信スレーブに対してDOデータを送信するときに前記通信帯域マージンデータ量を組み込んだDOパケットを作成し、前記通信スレーブに対するDOメッセージの長さが前記通信帯域マージンデータ量を超える場合、前記DOメッセージを次回の通信周期に持ち越し、前記通信スレーブに対するDOメッセージの長さが前記通信帯域マージンデータ量を超えない場合、前記DOメッセージを前記DOパケットに組み込むDOパケット作成部と、
前記DOパケットを前記通信スレーブに送信するDO送信部と、を備え、
前記通信スレーブは、
前記通信マスタから送信されるDOパケットを受信するDO受信部と、
受信した前記DOパケットに含まれる前記通信帯域マージンデータ量を取得し、前記通信マスタに対してDIデータを送信するときにDIパケットを作成し、前記通信マスタに対するDIメッセージの長さが前記通信帯域マージンデータ量を超える場合、前記DIメッセージを次回の通信周期に持ち越し、前記通信マスタに対するDIメッセージの長さが前記通信帯域マージンデータ量を超えない場合、前記DIメッセージを前記DIパケットに組み込むDIパケット作成部と、
前記DIパケットを前記通信マスタに送信するDI送信部と、を備える、
通信制御システム。
【請求項2】
Nを前記複数の通信スレーブの個数、kを前記通信マスタと接続される前記通信スレーブを識別するための順序番号、k番目の通信スレーブに許容される通信帯域マージンデータ量を通信帯域マージンデータ量_k、k番目の通信スレーブと通信されるDOメッセージをDOメッセージ_k、DIメッセージをDIメッセージ_k、と表したとき、
前記マージンデータ量算出部は、さらに、
k番目の通信スレーブにおいて、前記持ち越しDOメッセージ_k及び持ち越しDIメッセージ_kが存在しない場合、
k番目からN番目までの各通信スレーブにおける持ち越しDOメッセージ長及び持ち越しDIメッセージ長の最大値である持ち越しメッセージ長の合計値を算出し、
前記通信帯域マージンデータ量_kから、前記持ち越しメッセージ長の合計値を減算した値と、ゼロ値と、の内、大きい値を通信帯域マージンデータ量_kとして補正する、請求項1に記載の通信制御システム。
【請求項3】
前記通信スレーブ毎に算出される通信予測時間は、現時点までに前記通信スレーブ毎に計測された通信計測時間のうちの最大値とする、請求項1又は請求項2に記載の通信制御システム。
【請求項4】
前記通信スレーブ毎に算出される通信予測時間は、現時点までに前記通信スレーブ毎に計測された通信計測時間に基づく平均値とする、請求項1又は請求項2に記載の通信制御システム。
【請求項5】
通信マスタを備える制御装置と、前記制御装置にデイジーチェーンにより通信可能に接続された通信スレーブをそれぞれ備える複数のI/Oユニットとの間で、予め設定された一定周期毎に、前記制御装置が全てのI/OユニットとI/O信号を送受信する通信制御方法であって、
前記通信マスタは、
前記複数の通信スレーブ毎に計測される送信メッセージを除くDIデータ及びDOデータのみの通信に要する通信時間に基づいて算出される前記複数の通信スレーブ毎の通信予測時間と、前記一定周期毎に計測される最初の通信スレーブとの通信開始から現時点までの通信時間と、通信速度情報と、から各通信スレーブとの通信開始前に、当該通信スレーブに許容される通信帯域マージンデータ量を算出するマージンデータ量算出ステップと、
前記通信スレーブに対してDOデータを送信するときに前記通信帯域マージンデータ量を組み込んだDOパケットを作成し、前記通信スレーブに対するDOメッセージの長さが前記通信帯域マージンデータ量を超える場合、前記DOメッセージを次回の通信周期に持ち越し、前記通信スレーブに対するDOメッセージの長さが前記通信帯域マージンデータ量を超えない場合、前記DOメッセージを前記DOパケットに組み込むDOパケット作成ステップと、
前記DOパケットを前記通信スレーブに送信するDO送信ステップと、を備え、
前記通信スレーブは、
前記通信マスタから送信されるDOパケットを受信するDO受信ステップと、
受信した前記DOパケットに含まれる前記通信帯域マージンデータ量を取得し、前記通信マスタに対してDIデータを送信するときにDIパケットを作成し、前記通信マスタに対するDIメッセージの長さが前記通信帯域マージンデータ量を超える場合、前記DIメッセージを次回の通信周期に持ち越し、前記通信マスタに対するDIメッセージの長さが前記通信帯域マージンデータ量を超えない場合、前記DIメッセージを前記DIパケットに組み込むDIパケット作成ステップと、
前記DIパケットを前記通信マスタに送信するDI送信ステップと、を備える、
通信制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御装置をマスタとして、前記制御装置に接続される複数の外部信号入出力用機器(以下、「I/Oユニット」という)をスレーブとして、制御装置及び複数のI/Oユニットの間でI/O通信を行う通信制御システム及び通信制御方法に関する。
【背景技術】
【0002】
工作機械を制御する数値制御装置及び産業用ロボットを制御するロボット制御装置(以下「制御装置」ともいう)は、例えば、制御装置をマスタとして、電気信号ケーブルを介して、複数のスレーブとしての外部信号入出力用機器(以下、「I/Oユニット」という)と接続され、マスタは各スレーブと1対1で通信を行う。具体的には、マスタは、予め設定された一定周期毎に、全てのスレーブとの通信を1回ずつ、サイクリックな通信を行っている。
例えば、特許文献1に記載されているように、数値制御装置がDO信号(具体的にはDOデータ)をI/Oユニットに送信し、I/OユニットがDO信号を受信すると、DI信号(具体的にはDIデータ)を返信することで、DI信号及びDO信号(以下「I/O信号」ともいう)の入出力を行っている。ここで、上記DO信号及びDI信号のやり取りを「I/O通信」又は「DI/DO通信」ともいう。DIデータは、例えばスタートコード、ヘッダ、DIデータ、フッタ、CRC、ストップコードの集合体(以下「DIパケット」ともいう)として送信される。DOデータは、例えばスタートコード、ヘッダ、DOデータ、フッタ、CRC、ストップコードの集合体(以下「DOパケット」ともいう)として送信される。
【0003】
以下、マスタとして数値制御装置を、スレーブとしてI/Oユニットを、通信接続形態として、デイジーチェーンを例示して説明する。
図1は、数値制御装置と複数のI/Oユニットとを電気通信ケーブルで接続して構成される通信制御システムの一例を示す概略図である。
図1に示すように、数値制御装置は、CPU(以下、「制御部」ともいう)、I/Oメモリ、及び通信マスタを備え、I/Oユニットは、CPU(制御部)、及び通信スレーブを備える。なお、I/Oユニットは、その種類によっては、CPU(制御部)を備えない場合もある。
【0004】
図2は、数値制御装置(マスタ)と複数のI/Oユニット(スレーブ)とのDI/DO通信に係る通信スケジュールの一例を示す図である。ここでは、予め設定された一定周期を2msとしている。
図2に示すように、数値制御装置は、2ms毎に、全てのI/Oユニットとの通信(すなわち、数値制御装置がDOデータを送信し、I/OユニットがDOデータを受信すると、DIデータを返信するサイクリック通信)を1回ずつ行う。
【0005】
また、数値制御装置とI/Oユニットとは、I/O信号以外のデータであるメッセージを交換するための通信機能(以下「メッセージ通信」ともいう)を含むこともできる。具体的には、メッセージは、数値制御装置のCPU及びI/OユニットのCPUからの送信要求により、DO信号及びDI信号のサイクリック通信に組み込まれる形で行われる。すなわち、数値制御装置からI/Oユニットへのメッセージは、DOパケットに組み込まれ、例えばスタートコード、ヘッダ、DOデータ、メッセージ、フッタ、CRC、ストップコードの集合体であるDOパケットとして送信される。また、I/Oユニットから数値制御装置へのメッセージは、DIパケットに組み込まれ、例えばスタートコード、ヘッダ、DIデータ、メッセージ、フッタ、CRC、ストップコードの集合体であるDIパケットとして送信される。
なお、
図2に記載されているように、マスタがスレーブに対してDO送信を行い、これに対して、スレーブがDI返信をする際に、スレーブは、マスタからDOパケットのヘッダを受信すると、DIパケットのヘッダ作成に移行するように構成される。
【0006】
メッセージ通信の1つの例を説明する。例えば、数値制御装置(マスタ)には、指定されたI/Oユニット(スレーブ)の各種ステータスを表示する画面がある。オペレータが当該画面を開く操作をしたとき、数値制御装置(マスタ)が当該I/Oユニット(スレーブ)に対して、各種ステータスを送信するように要求するメッセージを送る。これに対して、当該I/Oユニット(スレーブ)は自身の各種ステータスを返信メッセージとして数値制御装置(マスタ)に返信する。そうすることで、数値制御装置(マスタ)は、オペレータから指示されたI/Oユニット(スレーブ)の各種ステータスを画面表示することができる。
【0007】
メッセージ通信の別の例を説明する。例えば数値制御装置(マスタ)には、指定されたI/Oユニット(スレーブ)のフィルタ設定を行う画面がある。オペレータは当該画面を介して、当該I/Oユニット(スレーブ)のフィルタ設定について変更指示をすることができる。この場合、数値制御装置(マスタ)はオペレータにより指定されたI/Oユニット(スレーブ)に対して、フィルタ設定をオペレータの所望の値に変更するよう、変更要求メッセージを送る。これに対して、当該I/Oユニット(スレーブ)は、受信した変更要求メッセージに基づいて、フィルタ値を変更する。そうすることで、数値制御装置(マスタ)は、オペレータから指定されたI/Oユニット(スレーブ)のフィルタ設定を変更することができる。
【先行技術文献】
【特許文献】
【0008】
【発明の概要】
【発明が解決しようとする課題】
【0009】
通常のDI/DOのサイクリック通信時に、数値制御装置(マスタ)と複数のI/Oユニット(スレーブ)との間でメッセージ通信を行う場合、通信データ量が大幅に増加し、予め設定された一定周期(例えば、2ms)内に全てのDI/DO通信を完了できない可能性がある。
図3A及び
図3Bは、それぞれ、数値制御装置(マスタ)と複数(N個:N≧3)のI/Oユニット(スレーブ)との間でメッセージ通信を行う場合の通信スケジュールの一例を示す図である。ここでは、予め設定された一定周期を2msとしている。
図3Aを参照すると、2番目のI/Oユニットから数値制御装置に対して送信されるDIパケットにメッセージが組み込まれているが、N番目のI/Oユニット(スレーブ)とのDI/DO通信は予め設定された一定周期(例えば、2ms)以内に収まっているケースを例示している。
これに対して
図3Bを参照すると、1番目と2番目のI/Oユニットから数値制御装置に対して送信されるDIパケットにメッセージが組み込まれている。このため、N番目のI/Oユニット(スレーブ)とのDI/DO通信が予め設定された一定周期(例えば、2ms)以内に収まらないケースを例示している。
【0010】
図3Bに示すように、例えば数値制御装置(マスタ)とN番目のI/Oユニット(スレーブ)とのDI/DO通信が予め設定された一定周期(例えば、2ms)以内に収まらない場合、数値制御装置(通信マスタ)と複数のI/Oユニット(スレーブ)との間のDI/DOの更新周期(2ms毎に数値制御装置と複数のI/Oユニットとの間のDI/DO通信を1回ずつ行う)が担保されないこととなる。
このため、通常のサイクリック通信時に、数値制御装置(マスタ)と複数のI/Oユニット(スレーブ)との間で、メッセージ通信を行う場合であっても、予め設定された一定周期以内に、全てのI/Oユニット(スレーブ)との間で、少なくともDI信号及びDO信号のやり取り(DI/DO通信)を完了できるようにして、I/O信号の更新周期を担保することが望まれる。
【課題を解決するための手段】
【0011】
(1)本開示の1態様は、通信マスタを備える制御装置と、前記制御装置にデイジーチェーンにより通信可能に接続された通信スレーブをそれぞれ備える複数のI/Oユニットとの間で、予め設定された一定周期毎に、前記制御装置が全てのI/OユニットとI/O信号を送受信する通信制御システムにおいて、
前記通信マスタは、
前記複数の通信スレーブ毎に計測される送信メッセージを除くDIデータ及びDOデータのみの通信に要する通信時間に基づいて算出される前記複数の通信スレーブ毎の通信予測時間と、前記一定周期毎に計測される最初の通信スレーブとの通信開始から現時点までの通信時間と、通信速度情報と、から各通信スレーブとの通信開始前に当該通信スレーブに許容される通信帯域マージンデータ量を算出するマージンデータ量算出部と、
前記通信スレーブに対してDOデータを送信するときに前記通信帯域マージンデータ量を組み込んだDOパケットを作成し、前記通信スレーブに対するDOメッセージの長さが前記通信帯域マージンデータ量を超える場合、前記DOメッセージを次回の通信周期に持ち越し、前記通信スレーブに対するDOメッセージの長さが前記通信帯域マージンデータ量を超えない場合、前記DOメッセージを前記DOパケットに組み込むDOパケット作成部と、
前記DOパケットを前記通信スレーブに送信するDO送信部と、を備え、
前記通信スレーブは、
前記通信マスタから送信されるDOパケットを受信するDO受信部と、
受信した前記DOパケットに含まれる前記通信帯域マージンデータ量を取得し、前記通信マスタに対してDIデータを送信するときにDIパケットを作成し、前記通信マスタに対するDIメッセージの長さが前記通信帯域マージンデータ量を超える場合、前記DIメッセージを次回の通信周期に持ち越し、前記通信マスタに対するDIメッセージの長さが前記通信帯域マージンデータ量を超えない場合、前記DIメッセージを前記DIパケットに組み込むDIパケット作成部と、
前記DIパケットを前記通信マスタに送信するDI送信部と、を備える、
通信制御システムに関する。
【0012】
(2) 本開示の1態様は、(1)に記載の通信制御システムにおいて、
Nを前記複数の通信スレーブの個数、kを前記通信マスタと接続される前記通信スレーブを識別するための順序番号、k番目の通信スレーブに許容される通信帯域マージンデータ量を通信帯域マージンデータ量_k、k番目の通信スレーブと通信されるDOメッセージをDOメッセージ_k、DIメッセージをDIメッセージ_k、と表したとき、
前記マージンデータ量算出部は、さらに、
k番目の通信スレーブにおいて、前記持ち越しDOメッセージ_k及び持ち越しDIメッセージ_kが存在しない場合、
k番目からN番目までの各通信スレーブにおける持ち越しDOメッセージ長及び持ち越しDIメッセージ長の最大値である持ち越しメッセージ長の合計値を算出し、
前記通信帯域マージンデータ量_kから、前記持ち越しメッセージ長の合計値を減算した値と、ゼロ値と、の内、大きい値を通信帯域マージンデータ量_kとして補正する、通信制御システムに関する。
【0013】
(3) 本開示の1態様は、通信マスタを備える制御装置と、前記制御装置にデイジーチェーンにより通信可能に接続された通信スレーブをそれぞれ備える複数のI/Oユニットとの間で、予め設定された一定周期毎に、前記制御装置が全てのI/OユニットとI/O信号を送受信する通信制御方法であって、
前記通信マスタは、
前記複数の通信スレーブ毎に計測される送信メッセージを除くDIデータ及びDOデータのみの通信に要する通信時間に基づいて算出される前記複数の通信スレーブ毎の通信予測時間と、前記一定周期毎に計測される最初の通信スレーブとの通信開始から現時点までの通信時間と、通信速度情報と、から各通信スレーブとの通信開始前に当該通信スレーブに許容される通信帯域マージンデータ量を算出するマージンデータ量算出ステップと、
前記通信スレーブに対してDOデータを送信するときに前記通信帯域マージンデータ量を組み込んだDOパケットを作成し、前記通信スレーブに対するDOメッセージの長さが前記通信帯域マージンデータ量を超える場合、前記DOメッセージを次回の通信周期に持ち越し、前記通信スレーブに対するDOメッセージの長さが前記通信帯域マージンデータ量を超えない場合、前記DOメッセージを前記DOパケットに組み込むDOパケット作成ステップと、
前記DOパケットを前記通信スレーブに送信するDO送信ステップと、を備え、
前記通信スレーブは、
前記通信マスタから送信されるDOパケットを受信するDO受信ステップと、
受信した前記DOパケットに含まれる前記通信帯域マージンデータ量を取得し、前記通信マスタに対してDIデータを送信するときにDIパケットを作成し、前記通信マスタに対するDIメッセージの長さが前記通信帯域マージンデータ量を超える場合、前記DIメッセージを次回の通信周期に持ち越し、前記通信マスタに対するDIメッセージの長さが前記通信帯域マージンデータ量を超えない場合、前記DIメッセージを前記DIパケットに組み込むDIパケット作成ステップと、
前記DIパケットを前記通信マスタに送信するDI送信ステップと、を備える通信制御方法に関する。
【発明の効果】
【0014】
本開示の1態様によれば、通常のサイクリック通信時に、数値制御装置(マスタ)と複数のI/Oユニット(スレーブ)との間で、メッセージ通信を行う場合であっても、予め設定された一定周期以内に、全てのI/Oユニット(スレーブ)との間で、少なくともDI信号及びDO信号のやり取り(DI/DO通信)を完了できるようにして、I/O信号の更新周期を担保することが可能となる。
【図面の簡単な説明】
【0015】
【
図1】本実施形態の通信制御システムの一例を示す概略図である。
【
図2】数値制御装置(マスタ)と複数のI/Oユニット(スレーブ)とのDI/DO通信に係る通信スケジュールの一例を示す図である。
【
図3A】数値制御装置(マスタ)と複数のI/Oユニット(スレーブ)との間でメッセージ通信を行う場合の通信スケジュールの一例を示す図である。
【
図3B】数値制御装置(マスタ)と複数のI/Oユニット(スレーブ)との間でメッセージ通信を行う場合の通信スケジュールの一例を示す図である。
【
図4】マスタとしての数値制御装置1及びスレーブとしてのI/Oユニット3の機能ブロックを示す概略図である。
【
図5】帯域マージンデータ量の算出の一例を示す図である。
【
図6】メッセージが帯域マージンデータ量に収まる場合と収まらない場合とに応じてメッセージを送信する周期の一例を示す図である。
【
図7】マスタとしての数値制御装置1の動作を示すフローチャートの一例である。
【
図8】スレーブとしてのI/Oユニット3の動作を示すフローチャートの一例である。
【
図9】第2実施形態に係るマスタとしての数値制御装置1及びスレーブとしてのI/Oユニット3の機能ブロックを示す概略図である。
【
図10】第2実施形態に係るマスタとしての数値制御装置1の動作を示すフローチャートを示す図である。
【発明を実施するための形態】
【0016】
本発明の1つの実施形態について説明する。1つの実施形態として、数値制御装置と、I/Oユニットと、を電気信号ケーブルで接続し、データ通信(高速シリアル通信)を行う形態を例示して説明する。なお、高速シリアル通信を行う装置は数値制御装置に限られない。例えば、産業用ロボットを含む産業用機械の制御装置であってもよい。
前述したように、
図1は、上記実施形態に係る、マスタとしての数値制御装置1と、スレーブとしての複数のI/Oユニット3と、を電気信号ケーブル6でデイジーチェーン接続して構成される通信制御システム1000の一例を示す概略図である。
図1に示すように、マスタとしての数値制御装置1は、制御部10、I/Oメモリ12、及び通信マスタ15を備える。スレーブとしてのI/Oユニット3は、通信スレーブ35を含む。なお、I/Oユニットは、制御部30を備えてもよい。
【0017】
複数(N個:N≧2)のI/Oユニット3は、制御装置1に接続される順序k(1≦k≦N)により識別することができる。具体的には、制御装置1に直接接続されるI/Oユニット3をI/Oユニット3_1と識別し、I/Oユニット3_1に直接接続されるI/Oユニット3をI/Oユニット3_2、以下同様にI/Oユニット3_kに直接接続されるI/Oユニット3をI/Oユニット3_(k+1)等と識別することができる。以下特に断らないかぎり、N個(N≧2)のI/Oユニット3_k(1≦k≦N)がデイジーチェーン接続されているものとする。また、特に断らない限り、I/Oユニット3_kに含まれる制御部30を制御部30_k、通信スレーブ35を通信スレーブ35_kという。
【0018】
デイジーチェーン接続においては、通信スレーブ35_kは、前段に接続されている通信マスタ15(k=1の場合)又は通信スレーブ35_(k-1)(k≧2の場合)から信号を受信すると、受信した信号をそのまま後段の通信スレーブ35_(k+1)に送信する。また、通信スレーブ35_kは、後段に接続されている35_(k+1)から信号を受信すると、受信した信号をそのまま前段に接続されている通信マスタ15(k=1の場合)又は通信スレーブ35_(k-1)(k≧2の場合)に送信する。これにより、通信マスタ15は、複数の通信スレーブ35_kとの間で通信することができる。
そうすることで、各I/Oユニット3_kは、数値制御装置1との間で、入力信号(DI信号)/出力信号(DO信号)の入出力を行うことができる。
次に、通信制御システム1000の各構成要素について詳細に説明する。
【0019】
[数値制御装置1]
図4は、マスタとしての数値制御装置1及びスレーブとしてのI/Oユニット3の機能ブロックを示す概略図である。数値制御装置1は、
図4に示すように、例えば、制御部10、I/Oメモリ12、及び通信マスタ15と、を備える。
【0020】
制御部10は、当業者にとって公知の数値制御機能部(図示せず)、及びI/Oインタフェース部101を有する。数値制御機能部は、当業者にとって公知であり、説明は省略する。
【0021】
I/Oインタフェース部101は、制御部10からの指示により、通信マスタ15からI/Oユニット3_k(1≦k≦N)に送信するDOデータ及びメッセージをI/Oメモリ12を介して設定する。また、I/Oインタフェース部101は、通信マスタ15がI/Oユニット3_k(1≦k≦N)から受信するDIデータ及びメッセージをI/Oメモリ12を介して取得する。ここで、I/Oメモリ12はI/Oユニット3_k(1≦k≦N)毎に対応するI/Oメモリ部_k(1≦k≦N)を含むようにしてもよい。
I/Oインタフェース部101は、通信マスタ15からI/Oユニット3_k(1≦k≦N)に対して送信するDOデータ及びメッセージを例えばI/Oメモリ部_k(1≦k≦N)に設定するとともに、通信マスタ15がI/Oユニット3_k(1≦k≦N)から受信したDIデータ及びメッセージを例えばI/Oメモリ部_k(1≦k≦N)から取得する。
通信マスタ15は、例えばI/Oメモリ部_k(1≦k≦N)から各I/Oユニット3_k(1≦k≦N)へ送信するDOデータ及び送信メッセージを入力し、通信スレーブ35_k(1≦k≦N)に対して送信する。後述するように、通信マスタ15は、各I/Oユニット3_k(1≦k≦N)に対して送信した送信メッセージ_kが送信完了となった場合、当該送信メッセージ_kの送信完了を制御部10(I/Oインタフェース部101)に対して例えばI/Oメモリ部_k(1≦k≦N)を介して、通知する。
また、後述するように、通信マスタ15は、各通信スレーブ35_k(1≦k≦N)からDIデータ及びメッセージ_kを受信し、I/Oユニット3_kからの送信メッセージ_kが受信完了となった場合、当該送信メッセージ_kの受信完了及び当該送信メッセージ_kを例えばI/Oメモリ部_k(1≦k≦N)に記録することで、制御部10(I/Oインタフェース部101)に対して通知することができる。そうすることで、制御装置1とI/Oユニット3_k(1≦k≦N)間でDI/DO通信及びメッセージの送受信を行うようにしてもよい。
【0022】
[通信マスタ15]
図4に示すように、通信マスタ15は、現時点までの通信時間計測部151と、DI/DO通信時間計測部152Aと、DI/DO通信時間算出部152Bと、マージンデータ量算出部153と、DOパケット作成部155と、DO送信部158Aと、DI受信部158Bと、バッファメモリ159と、を有する。
【0023】
通信マスタ15の有する各機能部を説明する前に、バッファメモリ159について説明する。バッファメモリ159は、例えば各I/Oユニット3_k(1≦k≦N)の通信スレーブ35_k(1≦k≦N)に対応するバッファメモリ部_k(1≦k≦N)を含む。
バッファメモリ部_k(1≦k≦N)には、通信マスタ15と通信スレーブ35_k(1≦k≦N)との周期毎の通信に係る各種データが記憶されるようにしてもよい。具体的には、バッファメモリ部_kには、後述するスレーブ_k開始までの通信計測時間_k、DI/DO基本通信計測時間_k、DI/DO通信予測時間_k、帯域マージンデータ量_k、持ち越しDOメッセージ_kの有無、持ち越しDOメッセージ_k、持ち越しDOメッセージ_k長、持ち越しDIメッセージ_k長、及び持ち越しメッセージ_k長、を、通信マスタ15により記憶するようにしてもよい。なお、上記した各種データを制御パラメータともいう。
これらの制御パラメータに基づいて、通信マスタ15と各通信スレーブ35_k(1≦k≦N)との間でやりとりされる送信メッセージが通信されるように制御することができる。そうすることで、数値制御装置(マスタ)と複数のI/Oユニット(スレーブ)との間で、メッセージ通信を行う場合であっても、予め設定された一定周期以内に、全てのI/Oユニット(スレーブ)との間で、少なくともDI信号及びDO信号のやり取り(DI/DO通信)を完了できるようにして、I/O信号の更新周期を担保することができる。
【0024】
<現時点までの通信時間計測部151>
現時点までの通信時間計測部151は、一定周期毎に、複数の通信スレーブ35_k(1≦k≦N)とDI/DO通信を行う際の通信開始(すなわち、一定周期の開始されたとき)から、現時点までの通信時間(以下、「Tnow」として表す)を計測し、前述したようにバッファメモリ159に記憶する。
具体的には、現時点までの通信時間計測部151は、一定周期の開始されたときから通信スレーブ35_k(1≦k≦N)とのDI/DO通信開始前(すなわち、通信スレーブ35_(k-1)とのDI/DO通信終了)までの通信時間を順番に計測する。簡単のために、当該計測時間をスレーブkまでの通信計測時間ともいい、Tnow(k)として表す。なお、k=1の場合は、通信計測時間_1は、通信スレーブ35_1との通信開始前であり、Tnow(1)=0とする。
すなわち、Tnow(k)は、一定周期の開始されたとき(通信スレーブ35_1との通信が開始されるとき)から通信スレーブ35_k(2≦k≦N)との通信開始前までを計測した時間を意味する。したがって、通信スレーブ35_1との通信開始から通信スレーブ35_kとの通信開始前までの間、通信スレーブ35_i(1≦i≦k-1)との間でメッセージ通信を行った場合、当該メッセージ送信中の時間を含むものとなる。
【0025】
<DI/DO通信時間計測部152A>
DI/DO通信時間計測部152Aは、一定周期毎に、通信マスタ15と各通信スレーブ35_k(1≦k≦N)との、送信メッセージを除くDIデータ及びDOデータのみの通信(I/O通信)に要した通信時間を計測し、前述したように例えばバッファメモリ部_kに記憶するようにしてもよい。すなわち、DI/DO通信時間計測部152Aは、通信マスタ15と通信スレーブ35_k(1≦k≦N)間において、DI/DO通信に加えてメッセージの送信中の時間を含む場合、当該メッセージの送信中の計測時間を除くDIデータ及びDOデータのみの通信(I/O通信)に要した通信時間を計測する。以下、当該計測時間を「DI/DO基本通信計測時間_k」ともいう。
【0026】
<DI/DO通信時間算出部152B>
DI/DO通信時間算出部152Bは、DI/DO通信時間計測部152Aにより、一定周期毎に通信スレーブ35_k(1≦k≦N)毎に計測されたDI/DO基本通信計測時間_kの集合に基づいて、所定の計算式により、各通信スレーブ35_kに係るDIデータ及びDOデータのみの通信(I/O通信)に要した通信時間に係る統計値を算出し、前述したようにバッファメモリ部_kに記憶する。以下、算出された通信時間に係る統計値を、「DI/DO通信予測時間_k」ともいう。具体的には、DI/DO通信時間算出部152Bは、予め設定された一定周期毎に、各通信スレーブ35_k(1≦k≦N)に対応して、それぞれDI/DO通信予測時間_kを算出する。
ここで、上記算出式は、各通信スレーブ35_k(1≦k≦N)の前記計測時間の集合に含まれる最大値を算出して、各通信スレーブ35_k(1≦k≦N)のDI/DO通信予測時間_kとしてもよい。また、前記計測集合に含まれる計測値の平均時間を各通信スレーブ35_k(1≦k≦N)のDI/DO通信予測時間_kとしてもよい。また、DI/DO基本通信計測時間_kの集合に基づいて算出できる任意の統計値としてもよい。
【0027】
<マージンデータ量算出部153A>
マージンデータ量算出部153Aは、一定周期毎に、複数の通信スレーブ35_i(1≦i≦N)とDI/DO通信を行う際の通信開始時から現時点までの通信時間、すなわち、一定周期の開始されたときから、通信スレーブ35_kとの通信開始前(=通信スレーブ35_(k-1)との通信終了後)までの通信計測時間(T
now(k))及びまだ通信のなされていない通信スレーブ35_i(k≦i≦N)のDI/DO通信の予想通信時間との合計と、一定周期(以下、「T
cyc」として表す)と、の差分時間から、通信速度情報を用いて、当該差分時間に送信可能なデータ量(すなわち、あと何バイトデータが増えると帯域をあふれるか、すなわち、あと何バイト増えても帯域をあふれないかを示す目安)を算出し、前述したようにバッファメモリ部_kに記憶する。以下、この算出されたデータ量を「帯域マージンデータ量_k」という。
ここで、まだ通信のなされていない各通信スレーブ35_i(k≦i≦N)のDI/DO通信の予想通信時間として、それぞれDI/DO通信予測時間_i(k≦i≦N)を用いるようにしてもよい。
具体的には、データ転送レートをRATEとすると、帯域マージンデータ量_kは、以下の式1より算出される。
帯域マージンデータ量_k =
(T
cyc-(T
now(k)+Σ
k≦i≦NDI/DO通信予測時間_i)/RATE
(式1)
図5は、n=3の場合の帯域マージンデータ量_3の算出の一例を示す図である。
図5に示すように、DI/DO通信を行う際の通信開始時から現時点(通信スレーブ35_2)までの通信時間と、今後通信される通信スレーブ35_i(3≦i≦N)のDI/DO通信予測時間_iと、から残りの時間が算出され、通信速度情報を用いて、帯域マージンデータ量_3が算出される。
【0028】
<DOパケット作成部155>
次に、DOパケット作成部155について詳細に説明する。DOパケット作成部155は、例えば前述したようにスタートコード、ヘッダ、DOデータ、メッセージ、フッタ、CRC、ストップコードの集合体であるDOパケットを作成する。ここで、DOデータは、予め設定された一定周期毎にI/Oユニット3_k(1≦k≦N)に送信されるDO信号である。メッセージは、I/Oユニット3_k(1≦k≦N)に送信するメッセージがある場合に、設定される。ヘッダには、通常のパケット通信に設定されるデータの外、例えば送信メッセージの有無と、送信メッセージ長と、帯域マージンデータ量_kの値と、が設定されるようにしてもよい。
DOパケット作成部155は、以下に述べる5つのケースに対応して、DOパケットを作成する。
【0029】
<ケース1>
今回の周期において、通信スレーブ35_k(1≦k≦N)に対して送信するDOメッセージ_kが無い場合(すなわち、新たに送信するDOメッセージ_k及び持ち越しDOメッセージ_kが無い場合)、DOパケット作成部155は、送信メッセージ無し、送信メッセージ_k長=0、及びマージンデータ量算出部153により算出された帯域マージンデータ量_kの値をヘッダ部に設定したDOパケット(「ケース1のDOパケット」という)を作成する。なお、バッファメモリ部_kに記憶された制御パラメータの値については更新しなくてもよい。
【0030】
<ケース2>
今回の周期において、通信スレーブ35_k(1≦k≦N)に対して新たに送信するDOメッセージ_kがあり、当該DOメッセージ_k長が帯域マージンデータ量_kの値を超えないと判定された場合、DOパケット作成部155は、DOパケットに当該DOメッセージ_kを組み込むとともに、送信メッセージ有り、送信メッセージ_k長、及び帯域マージンデータ量_kの値をヘッダ部に設定したDOパケット(「ケース2のDOパケット」という)を作成する。また、DOパケット作成部155は、持ち越しDOメッセージ_kの有無(=無し)、持ち越しDOメッセージ_k長=0をバッファメモリ部_kに記憶するようにしてもよい。
後述するDO送信部158Aにより、当該DOパケット(「ケース2のDOパケット」)を送信することで、制御部10から送信要求のあったメッセージは送信完了となる。この場合、後述するように、DO送信部158Aは、制御部10から送信要求された送信メッセージ_kの送信完了を制御部10(I/Oインタフェース部101)に対して例えばI/Oメモリ部_k(1≦k≦N)を介して、通知するようにしてもよい。なお、送信完了を契機として、DO送信部158Aは、持ち越しDOメッセージ_kの有無(=無し)、持ち越しDOメッセージ_k長=0をバッファメモリ部_kに記憶するようにしてもよい。
【0031】
<ケース3>
今回の周期において、通信スレーブ35_k(1≦k≦N)に対して新たに送信するDOメッセージ_kがあり、当該DOメッセージ_k長が帯域マージンデータ量_kの値を超えると判定された場合、DOパケット作成部155は、送信メッセージ無し、送信メッセージ_k長(=0)、及び帯域マージンデータ量_kの値をヘッダ部に設定したDOパケット(「ケース2のDOパケット」という)を作成する。
また、DOパケット作成部155は、当該DOメッセージ_kを持ち越しDOメッセージ_kとして、前述したように、持ち越しDOメッセージ_kの有無(有り)、持ち越しDOメッセージ_k、持ち越しDOメッセージ_k長をバッファメモリ部_kに記憶する。
なお、DOメッセージ_kを次回通信に持ち越すことから、後述するDO送信部158Aにより、当該DOパケットを送信しても、制御部10から送信要求のあったDOメッセージ_kは、送信完了とはならない。
【0032】
<ケース4>
今回の周期において、通信スレーブ35_k(1≦k≦N)に対して持ち越しDOメッセージ_kがあり、当該DOメッセージ_k長が帯域マージンデータ量_kの値を超えないと判定された場合、DOパケット作成部155は、DOパケットに当該DOメッセージ_kを組み込むとともに、送信メッセージ有り、送信メッセージ長_k長、及び帯域マージンデータ量_kの値をヘッダ部に設定したDOパケット(「ケース4のDOパケット」という)を作成する。また、DOパケット作成部155は、持ち越しDOメッセージ_kの有無(=無し)、持ち越しDOメッセージ_k長=0をバッファメモリ部_kに記憶するようにしてもよい。
後述するDO送信部158Aにより、当該DOパケット(「ケース4のDOパケット」)を送信することで、制御部10から送信要求のあったメッセージは送信完了となる。この場合、後述するように、DO送信部158Aは、制御部10から送信要求された送信メッセージ_kの送信完了を制御部10(I/Oインタフェース部101)に対して例えばI/Oメモリ部_k(1≦k≦N)を介して、通知するようにしてもよい。なお、送信完了を契機として、DO送信部158Aは、持ち越しDOメッセージ_kの有無(=無し)、持ち越しDOメッセージ_k長=0をバッファメモリ部_kに記憶するようにしてもよい。
【0033】
<ケース5>
今回の周期において、通信スレーブ35_k(1≦k≦N)に対して持ち越しDOメッセージ_kがあり、当該DOメッセージ_k長が帯域マージンデータ量_kの値を超えると判定された場合、DOパケット作成部155は、当該DOメッセージ_kを持ち越しDOメッセージ_kとして再度持ち越し、送信メッセージ無し、送信メッセージ_k長(=0)、及び帯域マージンデータ量_kの値をヘッダ部に設定したDOパケット(「ケース2のDOパケット」という)を作成する。
また、DOパケット作成部155は、バッファメモリ部_kに記憶されている、持ち越しDOメッセージ_kの有無(=有り)、持ち越しDOメッセージ_k、持ち越しDOメッセージ_k長については更新せず、そのままとする。
なお、持ち越しDOメッセージ_kを、さらに次回通信に持ち越すことから、後述するDO送信部158Aにより、当該DOパケットを送信しても、制御部10から送信要求のあったメッセージは、送信完了とはならない。
図6は、メッセージが帯域マージンデータ量_kに収まる場合と収まらない場合とに応じてメッセージを送信する周期の一例を示す図である。
図6に示すように、メッセージ量が帯域マージンデータ量_k以下ならば、当該メッセージを送信し、メッセージ量が帯域マージンデータ量_kを超える場合、次回以降の通信で送信するように構成される。
【0034】
<DO送信部158A>
DO送信部158Aは、周期毎にDOパケット作成部155により作成されたDOパケットを通信スレーブ35_k(1≦k≦N)に対して送信する。DO送信部158Aは、前述したように、ケース2のDOパケット及びケース4のDOパケットを送信完了すると、制御部10から送信要求された送信メッセージ_kの送信完了を制御部10(I/Oインタフェース部101)に対して例えばI/Oメモリ部_k(1≦k≦N)に記録することで、通知するようにしてもよい。また、DO送信部158Aは、前述したように、DOメッセージ_kの送信完了を契機として、持ち越しDOメッセージ_kの有無(=無し)、持ち越しDOメッセージ_k長(=0)をバッファメモリ部_kに記憶するようにしてもよい。
【0035】
<DI受信部158B>
DI受信部158Bは、各通信スレーブ35_k(1≦k≦N)から送信されるDIデータ及び送信メッセージ_kを例えばバッファメモリ部_kを介して受信する。なお、各通信スレーブ35_k(1≦k≦N)から送信される送信メッセージ_kは、後述するように、次回以降の周期に持ち越すケースがある。後述するように、DIパケットのヘッダには、DIメッセージ_kが送信される場合は、DIメッセージの有無(=有り)、及びDIメッセージ_k長が設定され、DIメッセージ_kを次回以降の周期に持ち越す場合は、DIメッセージの有無(=無し)、及び持ち越しDIメッセージ_k長が設定されている。
DI受信部158Bは、各通信スレーブ35_k(1≦k≦N)から送信メッセージ_kを受信すると、I/Oユニット3_k(1≦k≦N)から受信した当該メッセージ_kを、制御部10(I/Oインタフェース部101)に対して例えばI/Oメモリ部_k(1≦k≦N)に記録することで、通知することができる。このとき、DI受信部158Bは、バッファメモリ部_kに、持ち越しDIメッセージ_k長(=0)を記憶するようにしてもよい。
また、DI受信部158Bは、受信したDIパケットのヘッダに設定された値(DIメッセージの有無(=無し)、及び持ち越しDIメッセージ_k長)から通信スレーブ35_k(1≦k≦N)がDIメッセージ_kを次回以降の周期に持ち越したと判定した場合、バッファメモリ部_kに、当該持ち越しDIメッセージ_k長を記憶するようにしてもよい。
以上、マスタとしての数値制御装置1について説明した。
次に、スレーブとしてのI/Oユニット3について説明する。
【0036】
[I/Oユニット3]
図4に、スレーブとしてのI/Oユニット3の機能ブロックを示す。
I/Oユニット3は、
図4に示すように、例えば、制御部30、メモリ32、及び通信スレーブ35を備える。以降、特に断らない限り、I/Oユニット3_k(1≦k≦N)に共通の構成を説明する際に、I/Oユニット3と記載する。
制御部30は、当業者にとって公知のI/O信号制御機能部(図示せず)、及びI/Oインタフェース部301を有する。I/O信号制御機能部は、当業者にとって公知であり、説明は省略する。
I/Oインタフェース部301は、メモリ32を介して、数値制御装置1からのDO信号及びDOメッセージを通信スレーブ35から取得する。また、I/Oインタフェース部301は、マスタとしての数値制御装置1へのDI信号及びDIメッセージを、通信スレーブ35に対して送信するように、例えばメモリ32を介して設定するようにしてもよい。
具体的には、I/Oインタフェース部301は、数値制御装置1から送信されるDO信号及びDOメッセージを当該メモリ32から取得するとともに、数値制御装置1に対して送信するDI信号及びDIメッセージを当該メモリ32に設定する。
通信スレーブ35は、通信マスタ15から受信したDO信号及びDOメッセージを受信し、数値制御装置1からのDO送信メッセージが受信完了となった場合、当該DOメッセージの受信完了及び当該送信メッセージを例えばメモリ32に記録することで、制御部30(I/Oインタフェース部101)に対して通知することができる。
また、通信スレーブ35は、例えばメモリ32から数値制御装置1へのDIデータ及びDIメッセージを入力し、数値制御装置1に対してDI信号及びDIメッセージを送信する。後述するように、通信スレーブ35は、送信要求されたDIメッセージが送信完了となった場合、当該DIメッセージの送信完了を制御部30(I/Oインタフェース部301)に対して例えばメモリ32を介して、通知するようにしてもよい。
【0037】
通信スレーブ35は、DIパケット作成部355と、DI送信部358Aと、DO受信部358Bと、バッファメモリ359と、を有する。
以下、特に断らない限り、通信スレーブ35_k(1≦k≦N)機能部の説明に際しては、通信スレーブ35と記載する。
【0038】
まず、DIパケット作成部355について詳細に説明する。なお、前述したように、通信スレーブ35は、通信マスタ15からDOパケットのヘッダを受信すると、DIパケット作成部355により、DIパケットのヘッダの作成に移行することができる。その後、DIデータ、メッセージ作成に移行することができる。なお、DIパケット作成部355は、通信マスタ15から送信されたDOメッセージのヘッダに設定された帯域マージンデータ量を参照する。
【0039】
<ケース1>
今回の周期において、通信マスタ15に対して送信するDIメッセージが無い場合(すなわち、新たに送信するDIメッセージ及び持ち越しDIメッセージが無い場合)、DIパケット作成部355は、送信メッセージ無し、及び送信メッセージ長=0をヘッダ部に設定したDIパケット(「ケース1のDIパケット」という)を作成する。
【0040】
<ケース2>
今回の周期において、通信マスタ15に対して新たに送信するDIメッセージがあり、当該DIメッセージ長が、帯域マージンデータ量の値を超えないと判定された場合、DIパケット作成部355は、DIパケットに当該DIメッセージを組み込むとともに、送信メッセージ有り、及び送信メッセージ_k長をヘッダ部に設定したDIパケット(「ケース2のDIパケット」という)を作成する。また、DIパケット作成部155は、持ち越しDIメッセージの有無(=無し)、持ち越しDIメッセージ_k長=0を例えばバッファメモリ359に記憶するようにしてもよい。
後述するDI送信部358Aにより、当該DIパケット(「ケース2のDIパケット」)を送信することで、制御部30から送信要求のあったメッセージは送信完了となる。この場合、後述するように、DI送信部358Aは、送信要求された送信メッセージの送信完了を制御部30(I/Oインタフェース部301)に対して例えばメモリ32を介して、通知するようにしてもよい。
【0041】
<ケース3>
今回の周期において、通信マスタ15に対して新たに送信するDIメッセージがあり、当該DIメッセージ長が帯域マージンデータ量の値を超えると判定された場合、DIパケット作成部355は、当該DIメッセージを持ち越しDIメッセージとして、持ち越しDIメッセージの有無(=有り)、持ち越しDIメッセージ、持ち越しDIメッセージ長を例えばバッファメモリ359に記憶する。
DIパケット作成部355は、送信メッセージ無し、送信メッセージ長に持ち越しDIメッセージ長をヘッダ部に設定したDIパケット(「ケース3のDIパケット」という)を作成する。そうすることで、通信スレーブ35は、通信マスタ15に対して、DIメッセージの送信は行わず、(持ち越された)DIメッセージ長を返信する。それにより、前述したように、通信マスタ15は、受信したDIパケットから、DIメッセージが次回通信に持ち越されたことを検知することができる。
なお、DIメッセージを次回通信に持ち越すことから、後述するDI送信部358Aにより、当該DIパケットを送信しても、制御部30から送信要求のあったDIメッセージは、送信完了とはならない。
【0042】
<ケース4>
今回の周期において、通信マスタ15に対して持ち越しDIメッセージがあり、当該DIメッセージ長が帯域マージンデータ量の値を超えないと判定された場合、DIパケット作成部355は、DIパケットに当該DIメッセージを組み込むとともに、送信メッセージ有り、送信メッセージ長をヘッダ部に設定したDIパケット(「ケース4のDIパケット」という)を作成する。また、DIパケット作成部355は、持ち越しDIメッセージの有無(=無し)、持ち越しDIメッセージ長=0を例えばバッファメモリ359に記憶するようにしてもよい。
後述するDI送信部358Aにより、当該DIパケット(「ケース4のDIパケット」)を送信することで、制御部30から送信要求のあったメッセージは送信完了となる。この場合、後述するように、DI送信部358Aは、送信要求された送信メッセージの送信完了を制御部30(I/Oインタフェース部301)に対して例えばメモリ32を介して、通知するようにしてもよい。なお、送信完了を契機として、DI送信部358Aは、持ち越しDIメッセージの有無(=無し)、持ち越しDIメッセージ長=0を例えばバッファメモリ359に記憶するようにしてもよい。
【0043】
<ケース5>
今回の周期において、通信マスタ15に対して持ち越しDIメッセージがあり、当該DIメッセージ長が帯域マージンデータ量の値を超えると判定された場合、DIパケット作成部355は、当該DIメッセージを持ち越しDIメッセージとして再度持ち越し、送信メッセージ無し、送信メッセージ長に持ち越しDIメッセージ長をヘッダ部に設定したDIパケット(「ケース5のDIパケット」という)を作成する。そうすることで、通信スレーブ35は、通信マスタ15に対して、DIメッセージの送信は行わず、(持ち越された)DIメッセージ長を返信する。この場合、バッファメモリ359に記憶されている、持ち越しDIメッセージの有無(=有り)、持ち越しDIメッセージ、持ち越しDOメッセージ長については更新せず、そのままとする。
なお、DIメッセージを次回通信に持ち越すことから、後述するDI送信部358Aにより、当該DIパケットを送信しても、制御部30から送信要求のあったDIメッセージは、送信完了とはならない。
【0044】
<DI送信部358A>
DI送信部358Aは、一定周期毎にDIパケット作成部355により作成されたDIパケットを通信マスタ15に対して送信する。DI送信部358Aは、前述したように、ケース2のDIパケット及びケース4のDIパケットを送信完了すると、制御部30から送信要求された送信メッセージの送信完了を制御部30(I/Oインタフェース部301)に対して例えばメモリ32に記録することで、通知するようにしてもよい。
【0045】
<DO受信部358B>
DO受信部358Bは、通信マスタ15から送信されるDOデータ及び送信メッセージをバッファメモリ359を介して受信する。DO受信部358Bは、DOパケットのヘッダを受信すると、前述したとおり、DIパケットのヘッダ作成に移行するように構成される。
なお、DO受信部358Bは、通信マスタ15からDOメッセージが送信される場合は、当該DOメッセージを受信すると、制御部30(I/Oインタフェース部301)に対して例えばメモリ32に記録することで、通知することができる。
以上、スレーブとしてのI/Oユニット3について説明した。
【0046】
次に、
図7及び
図8のフローチャートを参照して、本実施形態の動作について説明する。
図7は、マスタとしての数値制御装置1が、予め設定された一定周期毎に、スレーブとしての全てのI/Oユニット3_k(1≦k≦N)との通信を1回ずつ、サイクリックに通信を行う動作を示すフローチャートの一例である。
図8は、スレーブとしてのI/Oユニット3_k(1≦k≦N)の動作を示すフローチャートの一例である。前述の一定周期は、予め設定されているものとする。なお、
図7及び
図8に示すフローチャートは一例であって、これに限られない。
【0047】
図7を参照すると、ステップS10において、マスタとしての数値制御装置1(以下、簡単のため「マスタ1」ともいう)は、スレーブとしてのI/Oユニット3_k(1≦k≦N)(以下、簡単のため「スレーブ3_k」ともいう)との通信開始に先立ち、通信マスタ15は、各バッファメモリ部_kに、それぞれDI/DO基本通信計測時間_k、DI/DO通信予測時間_k、及び持ち越し送信メッセージ_kの長さ(1≦k≦N)の初期設定を行う。
ステップS11において、通信マスタ15は、一定周期毎の周期開始タイミングを検知する。
ステップS12において、通信マスタ15は、一定周期毎に全ての通信スレーブ35_k(1≦k≦N)との通信を1回ずつ、サイクリックに通信を行うことを制御するため、インデックスとしてのi及びT
nowを初期設定し、T
nowの測定を開始する。なお、初期設定は、i=1、T
now=0とする。
【0048】
ステップS13において、通信マスタ15(DI/DO通信時間計測部152A)は、通信スレーブ35_iとのDI/DO基本通信計測時間_iの計測を開始する。マージンデータ量算出部153は、現時点までの通信時間Tnow(i)、DI/DO通信予測時間_n(n≧i)を用いて、帯域マージンデータ量_iを更新する。
ステップS14において、通信マスタ15(DOパケット作成部155)は通信スレーブ35_iに対して送信するDOパケット_iを作成する。具体的には、前述したように、ケース1からケース5のいずれかに対応するDOパケット_iを作成する。
ステップS15において、通信マスタ15(DO送信部158A)は、通信スレーブ35_iに対してDOパケット_iを送信するとともに、通信マスタ15(DI受信部158B)は、通信スレーブ35_iから送信されるDIパケット_iを受信する。
【0049】
ステップS16において、通信マスタ15(DO送信部158A)は、DOメッセージ_iの送信の有無を検出する。DOメッセージ_iを送信した場合、ステップS17に移る。DOメッセージ_iの送信が無かった場合、ステップS18に移る。
ステップS17において、通信マスタ15(DO送信部158A)は、制御部10から送信要求のあったDOメッセージ_iを送信完了したと判定し、I/Oメモリ12(I/Oメモリ部_i)に、送信メッセージ_iの送信完了を記録する。
ステップS18において、通信マスタ15は、受信したDIパケット_iに係る処理をする。具体的には、スレーブ3_iからのDIメッセージ_iを受信した場合、例えばI/Oメモリ12(I/Oメモリ部_i)に、スレーブ3_iからのDIメッセージ_iを記録する。なお、スレーブ3_iからのDIメッセージ_iを受信しなかった場合であって、DIメッセージ_iを次回以降の周期に持ち越したと判定した場合、バッファメモリ部_iに、当該持ち越しDIメッセージ_i長を記憶するようにしてもよい。
ステップS19において、通信マスタ15(DI/DO通信時間算出部152B)は、DI/DO通信時間計測部152Aにより計測された、DI/DO基本通信計測時間_iを用いて、DI/DO通信予測時間_iを更新する。
【0050】
ステップS20において、通信マスタ15は、全てのスレーブ3_i(通信スレーブ35_i)(1≦i≦N)との通信を1回ずつサイクリックに通信を行ったか否か(i=Nか否か)を判定する。Yesの場合(すなわち、i=Nの場合)、ステップS11に移る。Noの場合(すなわち、i<Nの場合)、ステップS21に移る。
ステップ21において、i=i+1として、ステップS13に移る。
以上、マスタとしての数値制御装置1が、予め設定された一定周期毎に、スレーブとしての全てのI/Oユニット3_i(1≦i≦N)との通信を1回ずつ、サイクリックにDI/DO通信を行うとともに、DI/DOメッセージを送受信する処理フローを示した。
【0051】
次に、
図8を参照して、スレーブとしての各I/Oユニット3_k(1≦k≦N)(以下、「スレーブ3_k」ともいう)が、通信マスタ15からDOを受信して、DIを返信する際の動作について説明する。なお、
図8において、ステップS33の処理と、ステップS34以降の処理と、は並列に実行することができる。
図8を参照すると、ステップS30において、通信スレーブ35_k(DO受信部358B)は、通信マスタ15からのDO通信を検知する。
ステップS31において、通信スレーブ35_k(DO受信部358B)は、通信マスタ15から送信されるDOパケットを受信する。通信マスタ15から受信したDOパケットのヘッダにおいて、帯域マージンデータ量を検出する。(前述したように、DO受信部358BがDOのヘッダを受信すると、ステップS32に移行することができる)。
ステップS32において、通信スレーブ35_k(DO受信部358B)は、DOメッセージ_kの有無を検出する。DOメッセージ_kを受信した場合、ステップS33に移る。DOメッセージ_kを受信しなかった場合、ステップS34に移る。
ステップS33において、通信スレーブ35_k(DO受信部358B)は、数値制御装置1からの1つの送信メッセージを受信したと判定し、メモリ32に、通信マスタ15からのDOメッセージを記録する。
ステップS34において、通信スレーブ35_k(DIパケット作成部355)は、DIパケットを作成する。具体的には、前述したように、ケース1からケース5のいずれかに対応するDIパケットを作成する。
ステップS35において、通信スレーブ35_k(DI送信部358A)は、DIパケットを通信マスタ15に対して送信する。
ステップS36において、通信スレーブ35_k(DI送信部358A)は、通信マスタ15へDIメッセージを送信した場合、ステップS37に移る。それ以外の場合、ステップS30に移る。
ステップS37において、通信スレーブ35_k(DI送信部358A)は、スレーブ3_iからの1つの送信メッセージを送信完了したと判定し、メモリ32に、当該送信メッセージの送信完了を記録する。その後、ステップS30に移る。
以上、スレーブとしてのI/Oユニット3_k(1≦k≦N)が、予め設定された一定周期毎に、マスタとしての数値制御装置1との通信を1回ずつ、サイクリックにDI/DO通信を行うとともに、メッセージを送信する処理フローを示した。
【0052】
以上のようにして、マスタ1は複数のスレーブ3_k(1≦k≦N)と、同時にメッセージ通信を行う場合であっても、予め設定された一定周期以内に、全てのスレーブ3_kとの間で、少なくともDI信号及びDO信号のやり取り(DI/DO通信)を完了することができる。以上で本発明の1つの実施形態について説明した。
【0053】
(第2実施形態)
第2実施形態では、マージンデータ量算出部153は、次回の周期の通信において、DO通信及び/又はDI通信において持ち越しメッセージ_iがある場合、当該持ち越しメッセージ_iの送信を優先することができるように、帯域マージンデータ量_kの値を補正する機能を備える。以下、当該機能を有するマージンデータ量算出部をマージンデータ量算出部153Aと表す。
図9は、第2実施形態に係るマスタとしての通信制御装置1の機能ブロックを示す概略図である。
【0054】
マージンデータ量算出部153Aが帯域マージンデータ量_kの値を補正するか否かは、各k(1≦k≦N)に対して、持ち越しDOメッセージ_k及び/又は持ち越しDIメッセージ_kが存在する場合と、持ち越しDOメッセージ_k及び持ち越しDIメッセージ_kが存在しない場合と、に基づいて、決定する。
すなわち、持ち越しDOメッセージ_k及び/又は持ち越しDIメッセージ_kが存在する場合、当該持ち越しDOメッセージ_k及び/又は持ち越しDIメッセージ_kの送信を優先させるため、マージンデータ量算出部153Aは、帯域マージンデータ量_kをそのまま適用する。そうすることで、当該持ち越しDOメッセージ_k及び/又は持ち越しDIメッセージ_kの送信を優先させることができる。
他方、持ち越しDOメッセージ_k及び持ち越しDIメッセージ_kが存在しない場合、(k+1)以降の持ち越しDOメッセージ_i及び/又は持ち越しDIメッセージ_iの送信を優先させるため、マージンデータ量算出部153Aは、帯域マージンデータ量_kを補正する。
まず、持ち越しメッセージ_i長を以下のように定義する。
持ち越しメッセージ_i長
= MAX(持ち越しDOメッセージ_i長,持ち越しDIメッセージ_i長)
(式2)
なお、持ち越しDOメッセージ_iが無い場合、持ち越しDOメッセージ_i長を0とする。同様に、持ち越しDIメッセージ_iが無い場合、持ち越しDIメッセージ_i長を0とする。
そして、帯域マージンデータ量_kの値から、(k+1)以降の持ち越しメッセージ_i長を予め確保する。具体的には、以下のように、帯域マージンデータ量_kから、(k+1)以降の持ち越しメッセージ_i長を差し引くように補正する。
補正後の帯域マージンデータ量_k =
帯域マージンデータ量_k - Σk≦i≦N持ち越しメッセージ_i長
(式3)
なお、(式3)において、持ち越しメッセージ_k長は0である。
以上のように、マージンデータ量算出部153Aは、現時点までの通信時間Tnow(i)、持ち越しメッセージ_n長(n≧i)、及びDI/DO通信予測時間_n(n≧i)を用いて、補正後の帯域マージンデータ量_iを算出する。
【0055】
このようにマージンデータ量算出部153Aは、(式2)又は(式3)に基づき、帯域マージンデータ量_kを補正することで、持ち越しDOメッセージ_k及び/又は持ち越しDIメッセージ_kが存在する場合には、当該持ち越しDOメッセージ_kの送信を最優先とし、また、持ち越しDOメッセージ_k及び持ち越しDIメッセージ_kがともに無い場合には、(新たに送信要求されたDOメッセージ_kがあった場合であっても)iが(k+1)以降の持ち越しメッセージ_iの送信を優先させることが可能となる。
すなわち、マスタ1は複数のスレーブ3_k(1≦k≦N)と、同時にメッセージ通信を行う場合であっても、次回の周期の通信において、持ち越しメッセージ_iがある場合、持ち越しメッセージ_iの送信を優先することで、予め設定された一定周期以内に、全てのスレーブ3_kとの間で、少なくともDI信号及びDO信号のやり取り(DI/DO通信)を完了するとともに、メッセージ送信要求からの遅延を小さくすることができる。
【0056】
このため、第2実施形態において、通信マスタ15は、第1実施形態の機能部に加えて、
図9に示すように、マージンデータ量算出部153に換えて、上述した機能を追加したマージンデータ量算出部153Aを備えるものとなる。
なお、マージンデータ量算出部153A以外の機能部については、その機能の説明中の「マージンデータ量算出部153」を「マージンデータ量算出部153A」に読み換え、「帯域マージンデータ量_k」を「補正帯域マージンデータ量_k」に読み換えることで説明されるので、各機能部について重複した説明は省略する。
なお、通信スレーブ35の機能部についても、その機能の説明中の「帯域マージンデータ量_k」を「補正帯域マージンデータ量_k」に読み換えることで説明されるので、各機能部について重複した説明は省略する。以上、第2実施形態における通信マスタ15及び通信スレーブ35の機能部の構成について説明した。
次に、第2実施形態の動作について説明する。
【0057】
まず、第2実施形態におけるマスタとしての数値制御装置1の動作について説明する。
図10は、第2実施形態に係るマスタとしての数値制御装置1の動作を示すフローチャートを示す図である。なお、
図10に示す第2実施形態における数値制御装置1の動作を示すフローチャートは、
図7に示す第1実施形態における数値制御装置1の動作を示すフローチャートと比較して、以下の点を読み換えることで説明される。
まず、ステップ13においては、「マージンデータ量算出部153は、現時点までの通信時間T
now(i)、DI/DO通信予測時間_n(n≧i)を用いて、帯域マージンデータ量_iを更新する」を「マージンデータ量算出部153Aは、現時点までの通信時間T
now(i)、持ち越しメッセージ_n長(n≧i)、DI/DO通信予測時間_n(n≧i)を用いて、補正帯域マージンデータ量_iを更新する」と読み換えるものとする。
また、ステップS18においては、通信マスタ15(マージンデータ量算出部153)は、通信スレーブ35_iから受信したDIパケットのヘッダを参照して、持ち越しDIメッセージの有無を検出し、持ち越しメッセージ_i長を更新する機能を追加する。
また、各ステップにおいては、「マージンデータ量算出部153」を「マージンデータ量算出部153A」に読み換え、「帯域マージンデータ量_k」を「補正帯域マージンデータ量_k」に読み換える。
以上により、第2実施形態におけるマスタとしての数値制御装置1の動作を示すフローチャートは説明されるので、各ステップについて重複した説明は省略する。
また、第2実施形態におけるスレーブとしてのI/Oユニット3の動作についても、
図8に記載の第1実施形態におけるI/Oユニット3の動作を示すフローチャートの各ステップにおいて、「帯域マージンデータ量_k」を「補正帯域マージンデータ量_k」に読み換えることで説明されるので、各ステップについて重複した説明は省略する。
以上説明した第2実施形態により、マスタ1は複数のスレーブ3_k(1≦k≦N)と、同時にメッセージ通信を行う場合であっても、次回の周期の通信において、持ち越しメッセージ_iがある場合、持ち越しメッセージ_iの送信を優先することで、予め設定された一定周期以内に、全てのスレーブ3_kとの間で、少なくともDI信号及びDO信号のやり取り(DI/DO通信)を完了するとともに、メッセージ送信要求からの遅延を小さくすることができる。
以上、本発明の第2実施形態について説明した。
【0058】
本発明において、数値制御装置1の各種機能部は、例えばROM11等に格納された所定のソフトウェアとハードウェアとの協働で実現されてもよいし、ハードウェア(電子回路、LSI等)のみで実現されてもよい。I/Oユニット3の各種機能部についても同様である。
また、本発明で使用する動作プログラムを初めとするプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば、光磁気ディスク)、CD-ROM(Read Only Memory)、CD-R、CD-R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(random access memory)を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0059】
上述した実施形態は、本発明の好適な実施形態の1つではあるが、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
【0060】
<変形例1>
上述した実施形態では、制御装置として数値制御装置1を例として説明したが、これに限られない。前述したように、ロボットコントローラ等、産業用機械の制御装置における高速シリアル通信にも適用してもよい。
【0061】
以上を換言すると、本開示の通信制御システム、及び通信制御方法は、次のような構成を有する各種各様の実施形態を取ることができる。
【0062】
(1)本開示の通信制御システム1000は、通信マスタ15を備える制御装置1と、制御装置1にデイジーチェーンにより通信可能に接続された通信スレーブ35をそれぞれ備える複数のI/Oユニット3との間で、予め設定された一定周期毎に、制御装置1が全てのI/Oユニット3とI/O信号を送受信する通信制御システム1000において、
通信マスタ15は、
複数の通信スレーブ35毎に計測される送信メッセージを除くDIデータ及びDOデータのみの通信に要する通信時間に基づいて算出される複数の通信スレーブ35毎の通信予測時間と、一定周期毎に計測される最初の通信スレーブ35との通信開始から現時点までの通信時間と、通信速度情報と、から各通信スレーブ35との通信開始前に当該通信スレーブ35に許容される通信帯域マージンデータ量を算出するマージンデータ量算出部153と、
通信スレーブ35に対してDOデータを送信するときに通信帯域マージンデータ量を組み込んだDOパケットを作成し、通信スレーブ35に対するDOメッセージの長さが通信帯域マージンデータ量を超える場合、DOメッセージを次回の通信周期に持ち越し、通信スレーブ35に対するDOメッセージの長さが通信帯域マージンデータ量を超えない場合、DOメッセージをDOパケットに組み込むDOパケット作成部155と、
DOパケットを通信スレーブ35に送信するDO送信部158Aと、を備え、
通信スレーブ35は、
通信マスタ15から送信されるDOパケットを受信するDO受信部358Bと、
受信したDOパケットに含まれる通信帯域マージンデータ量を取得し、通信マスタ15に対してDIデータを送信するときにDIパケットを作成し、通信マスタ15に対するDIメッセージの長さが通信帯域マージンデータ量を超える場合、DIメッセージを次回の通信周期に持ち越し、通信マスタ15に対するDIメッセージの長さが通信帯域マージンデータ量を超えない場合、DIメッセージをDIパケットに組み込むDIパケット作成部355と、
DIパケットを通信マスタ15に送信するDI送信部358Aと、を備える。
これにより、通常のサイクリック通信時に、制御装置1(マスタ)と複数のI/Oユニット(スレーブ)との間で、DI/DOメッセージ通信を行う場合であっても、予め設定された一定周期以内に、全てのI/Oユニット3(スレーブ)との間で、少なくともDI信号及びDO信号のやり取り(DI/DO通信)を完了できるようにして、I/O信号の更新周期を担保することができる。
【0063】
(2) (1)に記載の通信制御システム1000において、
Nを複数の通信スレーブ35の個数、kを通信マスタ15と接続される通信スレーブ35を識別するための順序番号、k番目の通信スレーブ35に許容される通信帯域マージンデータ量を通信帯域マージンデータ量_k、k番目の通信スレーブ35と通信されるDOメッセージをDOメッセージ_k、DIメッセージをDIメッセージ_k、と表したとき、
マージンデータ量算出部153Aは、さらに、
k番目の通信スレーブ35において、持ち越しDOメッセージ_k及び持ち越しDIメッセージ_kが存在しない場合、
k番目からN番目までの各通信スレーブ35における持ち越しDOメッセージ長及び持ち越しDIメッセージ長の最大値である持ち越しメッセージ長の合計値を算出し、
通信帯域マージンデータ量_kから持ち越しメッセージ長の合計値を減算した値と、ゼロ値と、の内、大きい値を通信帯域マージンデータ量_kとして補正するようにしてもよい。
これにより、次回の周期の通信において、持ち越しメッセージ_iがある場合、持ち越しメッセージ_iの送信を優先することで、メッセージ送信要求からの遅延を小さくすることができる。
【0064】
(3) (1)又は(2)に記載の通信制御システム1000において、通信スレーブ35毎に算出される通信予測時間は、現時点までに通信スレーブ35毎に計測された通信計測時間のうちの最大値とするようにしてもよい。
これにより、通信予測時間をより安全な値とすることができる。
【0065】
(4) (1)又は(2)に記載の通信制御システム1000において、通信スレーブ35毎に算出される通信予測時間は、現時点までに通信スレーブ35毎に計測された通信計測時間に基づく平均値とするようにしてもよい。
これにより、通信予測時間を特定のDI/DO通信時間に偏らないようにすることができる。
【0066】
(5) 本開示の通信制御方法は、
通信マスタ15を備える制御装置1と、制御装置1にデイジーチェーンにより通信可能に接続された通信スレーブ35をそれぞれ備える複数のI/Oユニット3との間で、予め設定された一定周期毎に、制御装置1が全てのI/Oユニット3とI/O信号を送受信する通信制御方法であって、
通信マスタ15は、
複数の通信スレーブ35毎に計測される送信メッセージを除くDIデータ及びDOデータのみの通信に要する通信時間に基づいて算出される、複数の通信スレーブ35毎の通信予測時間と、一定周期毎に計測される最初の通信スレーブ35との通信開始から現時点までの通信時間と、通信速度情報と、から各通信スレーブ35の通信開始前に、当該通信スレーブ35に許容される通信帯域マージンデータ量を算出するマージンデータ量算出ステップと、
通信スレーブ35に対して、DOデータを送信するときに、通信帯域マージンデータ量を組み込んだDOパケットを作成し、通信スレーブ35に対するDOメッセージの長さが通信帯域マージンデータ量を超える場合、DOメッセージを次回の通信周期に持ち越し、通信スレーブ35に対するDOメッセージの長さが通信帯域マージンデータ量を超えない場合、DOメッセージをDOパケットに組み込むDOパケット作成ステップと、
DOパケットを通信スレーブ35に送信するDO送信ステップと、を備え、
通信スレーブ35は、
通信マスタ15から送信されるDOパケットを受信するDO受信ステップと、
受信したDOパケットに含まれる通信帯域マージンデータ量を取得し、通信マスタ15に対して、DIデータを送信するときに、DIパケットを作成し、通信マスタに対するDIメッセージの長さが通信帯域マージンデータ量を超える場合、DIメッセージを次回の通信周期に持ち越し、通信マスタに対するDIメッセージの長さが通信帯域マージンデータ量を超えない場合、DIメッセージをDIパケットに組み込むDIパケット作成ステップと、
DIパケットを通信マスタ15に送信するDI送信ステップと、を備える。
これにより、(1)と同様の効果を奏することができる。
【符号の説明】
【0067】
1 数値制御装置
10 制御部
101 I/Oインタフェース部
12 I/Oメモリ
15 通信マスタ
151 現時点までの通信時間計測部
152A DI/DO通信時間計測部
152B DI/DO通信時間算出部
153,153A マージンデータ量算出部
155 DOパケット作成部
158A DO送信部
158B DI受信部
159 バッファメモリ
3 I/Oユニット
30 制御部
301 I/Oインタフェース部
32 メモリ
35 通信スレーブ
355 DIパケット作成部
358A DI送信部
358B DO受信部
359 バッファメモリ
6 電気信号ケーブル
1000 通信制御システム