JP7469142B2 - 通信制御システム及び通信制御方法 - Google Patents
通信制御システム及び通信制御方法 Download PDFInfo
- Publication number
- JP7469142B2 JP7469142B2 JP2020092878A JP2020092878A JP7469142B2 JP 7469142 B2 JP7469142 B2 JP 7469142B2 JP 2020092878 A JP2020092878 A JP 2020092878A JP 2020092878 A JP2020092878 A JP 2020092878A JP 7469142 B2 JP7469142 B2 JP 7469142B2
- Authority
- JP
- Japan
- Prior art keywords
- communication
- slave
- unit
- message
- packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000004891 communication Methods 0.000 title claims description 710
- 238000000034 method Methods 0.000 title claims description 39
- 230000005540 biological transmission Effects 0.000 claims description 218
- 238000005259 measurement Methods 0.000 claims description 20
- 238000005457 optimization Methods 0.000 claims description 16
- 230000008054 signal transmission Effects 0.000 claims description 7
- 230000000750 progressive effect Effects 0.000 claims 1
- 230000015654 memory Effects 0.000 description 59
- 230000008569 process Effects 0.000 description 26
- 238000010586 diagram Methods 0.000 description 18
- 125000004122 cyclic group Chemical group 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 230000004044 response Effects 0.000 description 6
- 206010009944 Colon cancer Diseases 0.000 description 5
- 230000001934 delay Effects 0.000 description 4
- 102200048773 rs2224391 Human genes 0.000 description 3
- 230000001052 transient effect Effects 0.000 description 3
- 101100521334 Mus musculus Prom1 gene Proteins 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000012508 change request Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 102220637010 Actin-like protein 7A_S10T_mutation Human genes 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 102220070930 rs794728599 Human genes 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Landscapes
- Small-Scale Networks (AREA)
- Numerical Control (AREA)
Description
例えば、特許文献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パケット」ともいう)として送信される。
図1に示すように、数値制御装置は、CPU(以下、「制御部」ともいう)、I/Oメモリ、及び通信マスタを備え、I/Oユニットは、CPU(制御部)、及び通信スレーブを備える。なお、I/Oユニットは、その種類によっては、CPU(制御部)を備えない場合もある。
なお、図2に記載されているように、マスタがスレーブに対してDO送信を行い、これに対して、スレーブがDI返信をする際に、スレーブは、マスタからDOパケットのヘッダを受信すると、DIパケットのヘッダ作成に移行するように構成される。
図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)以内に収まらないケースを例示している。
このため、通常のサイクリック通信時に、数値制御装置(マスタ)と複数のI/Oユニット(スレーブ)との間で、メッセージ通信を行う場合であっても、予め設定された一定周期以内に、全てのI/Oユニット(スレーブ)との間で、少なくともDI信号及びDO信号のやり取り(DI/DO通信)を完了できるようにして、I/O信号の更新周期を担保することが望まれる。
前記通信マスタは、
各通信スレーブにそれぞれスレーブ毎通信周期を予め割り当て、
各通信スレーブとのI/O信号送受信の周期ごとに、送信メッセージを除くDIデータ及びDOデータのみの通信に要した通信時間を計測し、各通信スレーブの通信帯域マージンデータ量を算出するマージンデータ量算出部と、
前記通信スレーブに対して、DOデータを送信するときに、前記通信帯域マージンデータ量を組み込んだDOパケットを作成し、前記通信スレーブに対する送信メッセージ量が前記通信帯域マージンデータ量を超える場合、複数回の通信に分けて各通信の周期ごとに、前記通信帯域マージンデータ量を超えない、前記送信メッセージの分割した部分メッセージを前記DOパケットに組み込むDOパケット作成部と、
前記DOパケットを前記通信スレーブに送信するDO送信部と、を備え、
前記通信スレーブは、
前記通信スレーブは、
前記通信マスタから送信されるDOパケットを受信するDO受信部と、
受信した前記DOパケットに含まれる前記通信帯域マージンデータ量を取得し、前記通信マスタに対して、DIデータを送信するときに、DIパケットを作成し、前記通信マスタに対する送信メッセージ量が前記通信帯域マージンデータ量を超える場合、複数回の通信に分けて各通信の周期ごとに、前記通信帯域マージンデータ量を超えない、前記送信メッセージの分割した部分メッセージを前記DIパケットに組み込むDIパケット作成部と、
前記DIパケットを前記通信マスタに送信するDI送信部と、を備える、
通信制御システムに関する。
前記通信マスタは、
各通信スレーブにそれぞれスレーブ毎通信周期を予め割り当て、
各通信スレーブとのI/O信号送受信の周期ごとに、送信メッセージを除くDIデータ及びDOデータのみの通信に要した通信時間を計測し、各通信スレーブの通信帯域マージンデータ量を算出するマージンデータ量算出ステップと、
前記通信スレーブに対して、DOデータを送信するときに、前記通信帯域マージンデータ量を組み込んだDOパケットを作成し、前記通信スレーブに対する送信メッセージ量が前記通信帯域マージンデータ量を超える場合、複数回の通信に分けて各通信の周期ごとに、前記通信帯域マージンデータ量を超えない、前記送信メッセージの分割した部分メッセージを前記DOパケットに組み込むDOパケット作成ステップと、
前記DOパケットを前記通信スレーブに送信するDO送信ステップと、を備え、
前記通信スレーブは、
前記通信マスタから送信されるDOパケットを受信するDO受信ステップと、
受信した前記DOパケットに含まれる前記通信帯域マージンデータ量を取得し、前記通信マスタに対して、DIデータを送信するときに、DIパケットを作成し、前記通信マスタに対する送信メッセージ量が前記通信帯域マージンデータ量を超える場合、複数回の通信に分けて各通信の周期ごとに、前記通信帯域マージンデータ量を超えない、前記送信メッセージの分割された部分メッセージを前記DIパケットに組み込むDIパケット作成ステップと、
前記DIパケットを前記通信マスタに送信するDI送信ステップと、を備える、
通信制御方法に関する。
本発明の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を備えてもよい。
そうすることで、各I/Oユニット3_kは、数値制御装置1との間で、入力信号(DI信号)/出力信号(DO信号)の入出力を行うことができる。
次に、通信制御システム1000の各構成要素について詳細に説明する。
図4は、マスタとしての数値制御装置1及びスレーブとしてのI/Oユニット3の機能ブロックを示す概略図である。数値制御装置1は、図4に示すように、例えば、制御部10、I/Oメモリ12、及び通信マスタ15と、を備える。
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通信及びメッセージの送受信を行うようにしてもよい。
図4に示すように、通信マスタ15は、スレーブ毎通信周期割当部151と、DI/DO通信時間計測部152Aと、DI/DO通信時間算出部152Bと、マージンデータ量算出部153と、マスタ送信メッセージ判定部154と、DOパケット作成部155と、DO送信部158Aと、DI受信部158Bと、バッファメモリ159と、を有する。
バッファメモリ部_k(1≦k≦N)には、通信マスタ15と通信スレーブ35_k(1≦k≦N)との周期毎の通信に係る各種データが記憶されるようにしてもよい。具体的には、バッファメモリ部_kには、後述するスレーブ毎通信周期_k、DI/DO基本通信計測時間_k、DI/DO基本通信時間_k、通信帯域マージンデータ量_k、次回通信に持ち越すメッセージ長_k、及び次回通信に持ち越すメッセージ_kが、通信マスタ15により記憶されるようにしてもよい。こうすることで、通信マスタ15と各通信スレーブ35_k(1≦k≦N)との間でやりとりされる送信メッセージを複数回に分けて通信するように制御することができ、数値制御装置(マスタ)と複数のI/Oユニット(スレーブ)との間で、メッセージ通信を行う場合であっても、予め設定された一定周期以内に、全てのI/Oユニット(スレーブ)との間で、少なくともDI信号及びDO信号のやり取り(DI/DO通信)を完了できるようにして、I/O信号の更新周期を担保することができる。
スレーブ毎通信周期割当部151は、予め設定された一定周期毎に、全てのI/Oユニット3_k(1≦k≦N)とのI/O通信を可能とするために、通信スレーブ35_k(1≦k≦N)毎にスレーブ毎通信周期_kを割り当てる。
具体的には、スレーブ毎通信周期割当部151は、予め設定された一定周期を前記I/Oユニットの個数Nにより等分したスレーブ毎通信周期を各通信スレーブ35_k(1≦k≦N)に割り当てるようにしてもよい。
また、スレーブ毎通信周期割当部151は、I/Oユニット3_k(1≦k≦N)の接続順序に基づいて、スレーブ毎通信周期を傾斜的に各通信スレーブ35_k(1≦k≦N)に割り当てるようにしてもよい。具体的には、通信スレーブ35_k(1≦k≦N)のスレーブ毎通信周期_k(1≦k≦N)の値を、
j≦kの場合、スレーブ毎通信周期_j ≦ スレーブ毎通信周期_k
となるように、傾斜的に割り当ててもよい。デイジーチェーン接続においては、前述したように、後段の通信スレーブ35_(k+1)は、前段の通信スレーブ35_kを介して、通信マスタ15と送受信することから、後段の通信スレーブ35のスレーブ毎通信周期を前段の通信スレーブ35のスレーブ毎通信周期の値以上としてもよい。なお、具体的な算出式については、例えばケーブル長に比例する等、任意に設定してもよい。
また、スレーブ毎通信周期割当部151は、各I/Oユニット3_k(1≦k≦N)のDI/DO点数に基づいて、スレーブ毎通信周期を各通信スレーブ35_k(1≦k≦N)に割り当てるようにしてもよい。具体的には、通信スレーブ35_k(1≦k≦N)のスレーブ毎通信周期3_k(1≦k≦N)の値を、DI/DO点数が大きいものほど大きくなるように傾斜的に割り当ててもよい。具体的には、I/Oユニット3_jのDI/DO点数≦I/Oユニット3_kのDI/DO点数の場合、
スレーブ毎通信周期_j ≦ スレーブ毎通信周期_k
となるように、傾斜的に割り当ててもよい。なお、具体的な算出式については例えばDI/DO点数に比例する等、任意に設定してもよい。
また、スレーブ毎通信周期割当部151は、管理者から入力される値に基づいて設定するようにしてもよい。
DI/DO通信時間計測部152Aは、予め設定された一定周期毎に、各通信スレーブ35_k(1≦k≦N)との、送信メッセージを除くDIデータ及びDOデータのみの通信(I/O通信)に要した通信時間を計測する。すなわち、DI/DO通信時間計測部152Aは、通信マスタ15と通信スレーブ35_k(1≦k≦N)間において、DI/DO通信に加えてメッセージの送信中の時間を含む場合、当該メッセージの送信中の計測時間を除くDIデータ及びDOデータのみの通信(I/O通信)に要した通信時間を計測する。以下、当該計測時間を「DI/DO基本通信計測時間_k」ともいう。
DI/DO通信時間算出部152Bは、DI/DO通信時間計測部152Aにより、予め設定された一定周期毎に現時点までに計測された、DI/DO基本通信計測時間_kの集合に基づいて、所定の計算式により、通信スレーブ35_k(1≦k≦N)毎にDIデータ及びDOデータのみの通信(I/O通信)に要した通信時間に係る統計値を算出する。以下、算出された通信時間に係る統計値を、「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としてもよい。
マージンデータ量算出部153は、通信スレーブ35_k(1≦k≦N)毎に、前記スレーブ毎通信周期割当部151により当該通信スレーブ35_k(1≦k≦N)に割り当てられたスレーブ毎通信周期_kと、前記DI/DO通信時間算出部152Bにより算出された当該通信スレーブ35_k(1≦k≦N)のDI/DO基本通信時間_kと、通信開始から現時点までのデータ転送レートと、に基づいて、通信スレーブ35_k(1≦k≦N)毎の通信帯域マージンデータ量_kを算出する。
具体的には、データ転送レートをRATEとすると、以下の式1より算出してもよい。
通信帯域マージンデータ量_k =
(スレーブ毎通信周期_k - DI/DO基本通信時間_k)/ RATE (式1)
この値は、具体的には、通信マスタ15と各通信スレーブ35_k(1≦k≦N)間において、DI/DO基本通信時間_kを除いた、例えばメッセージ送信に利用可能なデータ量となる。
具体的には、マージンデータ量算出部153は、予め設定された一定周期毎に、通信スレーブ35_k(1≦k≦N)毎に通信帯域マージンデータ量_kを算出する。したがって、通信帯域マージンデータ量_kは、固定値ではなく、通信周期毎に変動する変動値となる。
図5Aは、通信帯域マージンデータ量_kの算出例を示す図である。図5Aに示すように、通信帯域マージンデータ量_kは、通信周期毎に算出される。
マスタ送信メッセージ判定部154は、今回のDI/DO通信周期において、通信マスタ15から各通信スレーブ35_k(1≦k≦N)に対して、DOパケットを送信するときに、前回のDI/DO通信周期において次回通信に持ち越すメッセージ_kが発生したか否か、を判定するとともに、次回通信に持ち越すメッセージ_kが発生した場合、さらに前記次回通信に持ち越すメッセージ長_kと、通信帯域マージンデータ量_kの値と、の大小関係を判定する。
マスタ送信メッセージ判定部154は、未送信となった持ち越し送信メッセージ_kが無いと判定した場合、前述したようにI/Oメモリ12(I/Oメモリ部_k)を参照して、今回新たに送信する送信メッセージ_kがあるか否か、を判定するとともに、今回新たに送信する送信メッセージ_kがある場合、さらに新たな送信メッセージ_kの長さと、通信帯域マージンデータ量_kの値と、の大小関係を判定する。
次に、DOパケット作成部155について詳細に説明する。DOパケット作成部155は、例えば前述したようにスタートコード、ヘッダ、DOデータ、メッセージ、フッタ、CRC、ストップコードの集合体であるDOパケットを作成する。ここで、DOデータは、予め設定された一定周期毎にI/Oユニット3_k(1≦k≦N)に送信されるDO信号である。メッセージは、I/Oユニット3_k(1≦k≦N)に送信するメッセージがある場合に、設定される。ヘッダには、通常のパケット通信に設定されるデータの外、送信メッセージの有無、送信メッセージ長、次回通信に持ち越すメッセージ長、マージンデータ量算出部153により算出された通信帯域マージンデータ量_kの値が設定されるようにしてもよい。
DOパケット作成部155は、以下に述べる5つのケースに対応して、DOパケットを作成する。
各通信スレーブ35_k(1≦k≦N)に対して今回の周期において送信する、DOパケットを作成するとき、マスタ送信メッセージ判定部154により、前回の周期における次回通信に持ち越すメッセージ_k、及び今回新たに送信する送信メッセージ_kが無いと判定された場合、DOパケット作成部155は、マージンデータ量算出部153により算出された通信帯域マージンデータ量_kの値を例えばヘッダ部に設定したDOパケット(「ケース1のDOパケット」という)を作成する。
マスタ送信メッセージ判定部154により、前回の周期における次回通信に持ち越すメッセージ_kがあると判定され、さらに前記次回通信に持ち越すメッセージ長_kが、通信帯域マージンデータ量_kの値を超えないと判定された場合、DOパケット作成部155は、通信帯域マージンデータ量_kの値を例えばヘッダ部に設定し、前記次回通信に持ち越すメッセージ_kを今回の送信メッセージ_kとして組み込んだDOパケット(「ケース2のDOパケット」という)を作成する。
後述するDO送信部158Aにより、当該DOパケット(「ケース2のDOパケット」)を送信することで、制御部10から送信要求のあったメッセージは送信完了となる。この場合、後述するように、DO送信部158Aは、制御部10から送信要求された送信メッセージ_kの送信完了を制御部10(I/Oインタフェース部101)に対して例えばI/Oメモリ部_k(1≦k≦N)を介して、通知するようにしてもよい。
マスタ送信メッセージ判定部154により、通信スレーブ35_k(1≦k≦N)に対する前回の周期における次回通信に持ち越すメッセージ_kがあると判定され、さらに前記次回通信に持ち越すメッセージ_kの長さが、通信帯域マージンデータ量_kの値を超えると判定された場合、DOパケット作成部155は、前記次回通信に持ち越すメッセージ_kのうち、通信帯域マージンデータ量_kに相当する、メッセージ_kの一部分を今回の周期で送信する送信メッセージ_kとする。DOパケット作成部155は、今回の周期で送信する送信メッセージ_kを除いた送信メッセージ_kの残りの部分を次回通信に持ち越すメッセージ_kとして、次回通信に持ち越すメッセージ長_kとともに例えばバッファメモリ部_kに記憶する。DOパケット作成部155は、通信帯域マージンデータ量_kの値、次回通信に持ち越すメッセージ長_kを例えばヘッダ部に設定し、今回の周期において送信する送信メッセージ_kを組み込んだDOパケット(「ケース3のDOパケット」という)を作成する。
なお、次回通信に持ち越すメッセージ_kが残ることから、後述するDO送信部158Aにより、当該DOパケットを送信しても、制御部10から送信要求のあったメッセージは、送信完了とはならない。
マスタ送信メッセージ判定部154により、通信スレーブ35_k(1≦k≦N)に対する前回の周期における次回通信に持ち越すメッセージ_kがなく、今回の周期における新たな送信メッセージ_kがあると判定され、さらに当該新たな送信メッセージ_kの長さが、通信帯域マージンデータ量_kの値を超えないと判定された場合、DOパケット作成部155は、通信帯域マージンデータ量_kの値を例えばヘッダ部に設定し、今回の周期における新たな送信メッセージ_kを今回の送信メッセージ_kとして組み込んだDOパケット(「ケース4のDOパケット」という)を作成する。
後述するDO送信部158Aにより、当該DOパケット(「ケース4のDOパケット」)を送信することで、制御部10から送信要求のあった新たな送信メッセージは送信完了となる。この場合、後述するように、DO送信部158Aは、送信要求された送信メッセージ_kの送信完了を制御部10(I/Oインタフェース部101)に対して例えばI/Oメモリ部_k(1≦k≦N)を介して、通知する。
マスタ送信メッセージ判定部154により、通信スレーブ35_k(1≦k≦N)に対する前回の周期における次回通信に持ち越すメッセージ_kがなく、今回の周期における新たな送信メッセージ_kがあると判定され、さらに当該新たな送信メッセージ_kの長さが、通信帯域マージンデータ量_kの値を超えると判定された場合、DOパケット作成部155は、今回の周期における新たな送信メッセージ_kのうち、通信帯域マージンデータ量_kに相当する、当該メッセージ_kの一部分を今回の周期で送信する送信メッセージ_kとする。DOパケット作成部155は、今回の周期で送信する送信メッセージ_kを除いた当該メッセージ_kの残りの部分を次回通信に持ち越すメッセージ_kとして、次回通信に持ち越すメッセージ長_kとともに例えばバッファメモリ部_kに記憶する。
DOパケット作成部155は、通信帯域マージンデータ量_kの値、次回通信に持ち越すメッセージ長_kを例えばヘッダ部に設定し、今回の周期において送信する送信メッセージ_kを組み込んだDOパケット(「ケース5のDOパケット」)を作成する。
なお、次回通信に持ち越すメッセージ_kが残ることから、後述するDO送信部158Aにより、当該DOパケットを送信しても、制御部10から送信要求のあった新たな送信メッセージは、送信完了とはならない。
図5Bは、メッセージが通信帯域マージンデータ量_kに収まるように必要に応じてメッセージを分割する一例を示す図である。図5Bに示すように、メッセージ量が通信帯域マージンデータ量_k以下ならば、一度に当該メッセージを送信し、メッセージ量が通信帯域マージンデータ量_kを超える場合、先ず通信帯域マージンデータ量分を送信し、次回以降の通信で残りを送信するように構成される。
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)に記録することで、通知するようにしてもよい。
DI受信部158Bは、各通信スレーブ35_k(1≦k≦N)から送信されるDIデータ及び送信メッセージ_kを例えばバッファメモリ部_kを介して受信する。各通信スレーブ35_k(1≦k≦N)から送信される送信メッセージ_kは、後述するように分割されて送信されるケースがある。
DI受信部158Bは、各通信スレーブ35_k(1≦k≦N)から送信される送信メッセージ_kが分割されて送信される場合は、分割されたメッセージを全て受信すると、当該メッセージ_kを復元して、I/Oユニット3_k(1≦k≦N)から受信した当該メッセージ_kの送信完了及び復元したメッセージ_kを、制御部10(I/Oインタフェース部101)に対して例えばI/Oメモリ部_k(1≦k≦N)に記録することで、通知することができる。
以上、マスタとしての数値制御装置1について説明した。
次に、スレーブとしての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信号及びメッセージを通信スレーブ35から取得する。また、I/Oインタフェース部301は、マスタとしての数値制御装置1へのDI信号及び送信メッセージを、通信スレーブ35に対して送信するように、例えばメモリ32を介して設定するようにしてもよい。
具体的には、I/Oインタフェース部301は、数値制御装置1から送信されるDO信号及びメッセージを当該メモリ32から取得するとともに、数値制御装置1に対して送信するDI信号及びメッセージを当該メモリ32に設定するようにしてもよい。
通信スレーブ35は、通信マスタ15から受信したDO信号及びメッセージを受信し、数値制御装置1からの送信メッセージが受信完了となった場合、当該送信メッセージの受信完了及び当該送信メッセージを例えばメモリ32に記録することで、制御部30(I/Oインタフェース部101)に対して通知することができる。
また、通信スレーブ35は、例えばメモリ32から数値制御装置1へのDIデータ及び送信メッセージを入力し、数値制御装置1に対してDI信号及び送信メッセージを送信する。後述するように、通信スレーブ35は、送信要求された送信メッセージが送信完了となった場合、当該送信メッセージの送信完了を制御部30(I/Oインタフェース部301)に対して例えばメモリ32を介して、通知する。
以下、特に断らない限り、通信スレーブ35_k(1≦k≦N)機能部の説明に際しては、通信スレーブ35と記載する。
スレーブ送信メッセージ判定部354は、未送信となった持ち越し送信メッセージが無いと判定した場合、前述したようにメモリ32を参照して、今回新たに送信する送信メッセージがあるか否かを判定するとともに、今回新たに送信する送信メッセージがある場合、さらに新たな送信メッセージの長さと、通信帯域マージンデータ量の値と、の大小関係を判定する。ここで、通信帯域マージンデータ量の値として、今回のDI/DO通信周期において、通信マスタ15から受信したDOパケットのヘッダ部に設定された値を用いる。
<通常のDIパケット_ケース1>
通信マスタ15に対して今回の周期において送信する、DIパケットを作成するとき、スレーブ送信メッセージ判定部354により、前回の周期における次回通信に持ち越すメッセージ、及び今回新たに送信する送信メッセージが無いと判定された場合、DIパケット作成部355は、例えば、ヘッダ部における次回の通信周期に持ち越す送信メッセージ長及び新たな送信メッセージ長をともにゼロとしたDIパケット(「ケース1のDIパケット」という)を作成する。
スレーブ送信メッセージ判定部354により、前回の周期における次回通信に持ち越すメッセージがあると判定され、さらに前記次回通信に持ち越すメッセージ長が、通信帯域マージンデータ量の値を超えないと判定された場合、DIパケット作成部355は、例えばヘッダ部における次回の周期に持ち越す送信メッセージ長をゼロにするとともに、前回の周期における持ち越し送信メッセージを今回の送信メッセージとして組み込んだDIパケット(「ケース2のDIパケット」という)を作成する。
後述するDI送信部358Aにより、当該DIパケット(「ケース2のDIパケット」)を送信することで、制御部30から送信要求のあったメッセージは送信完了となる。この場合、後述するように、DI送信部358Aは、送信要求された送信メッセージの送信完了を制御部30(I/Oインタフェース部301)に対して例えばメモリ32を介して、通知するようにしてもよい。
スレーブ送信メッセージ判定部354により、通信マスタ15に対する前回の周期における次回通信に持ち越すメッセージがあると判定され、さらに前記次回通信に持ち越すメッセージの長さが、通信帯域マージンデータ量の値を超えると判定された場合、DIパケット作成部355は、前記次回通信に持ち越すメッセージのうち、通信帯域マージンデータ量に相当するメッセージの一部分を今回の周期で送信する送信メッセージとする。DIパケット作成部355は、今回の周期で送信する送信メッセージを除いた送信メッセージの残りの部分を次回通信に持ち越すメッセージとして、次回通信に持ち越すメッセージ長とともに例えばバッファメモリ359に記憶するようにしてもよい。DIパケット作成部355は、通信帯域マージンデータ量_kの値、次回通信に持ち越すメッセージ長_kを例えばヘッダ部に設定し、ヘッダ部に次回の周期に持ち越す持ち越し送信メッセージ長を設定するとともに、今回の周期において送信する送信メッセージを組み込んだDIパケット(「ケース3のDIパケット」という)を作成する。
なお、次回通信に持ち越すメッセージが残ることから、後述するDI送信部358Aにより、当該DIパケットを送信しても、制御部30から送信要求のあったメッセージは、送信完了とはならない。
スレーブ送信メッセージ判定部354により、通信マスタ15に対する前回の周期における次回通信に持ち越すメッセージがなく、今回の周期における新たな送信メッセージがあると判定され、さらに当該新たな送信メッセージの長さが通信帯域マージンデータ量の値を超えないと判定された場合、DIパケット作成部355は、次回の周期に持ち越す持ち越し送信メッセージ長(=ゼロ)を例えばヘッダ部に設定し、今回の周期における新たな送信メッセージを今回の送信メッセージ_kとして組み込んだDIパケット(「ケース4のDIパケット」という)を作成する。
後述するDI送信部358Aにより、当該DIパケット(「ケース4のDIパケット」)を送信することで、制御部30から送信要求のあった新たな送信メッセージは送信完了となる。この場合、後述するように、DI送信部358Aは、送信要求された送信メッセージの送信完了を制御部30(I/Oインタフェース部301)に対して例えばメモリ32を介して、通知する。
スレーブ送信メッセージ判定部354により、通信マスタ15に対する前回の周期における次回通信に持ち越すメッセージがなく、今回の周期における新たな送信メッセージがあると判定され、さらに当該新たな送信メッセージの長さが通信帯域マージンデータ量の値を超えると判定された場合、DIパケット作成部355は、今回の周期における新たな送信メッセージのうち、通信帯域マージンデータ量に相当する、当該メッセージの一部分を今回の周期で送信する送信メッセージとする。DIパケット作成部355は、今回の周期で送信する送信メッセージを除いた当該メッセージkの残りの部分を次回通信に持ち越すメッセージとして、次回通信に持ち越すメッセージ長とともに例えばバッファメモリ359に記憶するようにしてもよい。
DIパケット作成部355は、次回通信に持ち越すメッセージ長を例えばヘッダ部に設定し、今回の周期において送信する送信メッセージを組み込んだDIパケット(「ケース5のDIパケット」)を作成する。
なお、次回通信に持ち越すメッセージが残ることから、後述するDI送信部358Aにより、当該DIパケットを送信しても、制御部30から送信要求のあった新たな送信メッセージは、送信完了とはならない。
DI送信部358Aは、周期毎にDIパケット作成部355により作成されたDIパケットを通信マスタ15に対して送信する。DI送信部358Aは、前述したように、ケース2のDIパケット及びケース4のDIパケットを送信完了すると、制御部30から送信要求された送信メッセージの送信完了を制御部30(I/Oインタフェース部301)に対して例えばメモリ32に記録することで、通知する。
DO受信部358Bは、通信マスタ15から送信されるDOデータ及び送信メッセージをバッファメモリを介して受信する。DOパケットのヘッダを受信すると、DIパケット作成部355は、前述したとおり、DIパケットのヘッダ作成に移行するように構成される。
なお、通信マスタ15から送信される送信メッセージは、前述したように分割されて送信されるケースがある。このため、DO受信部358Bは、通信マスタ15から送信される送信メッセージが分割されて送信される場合は、分割されたメッセージを全て受信すると、当該メッセージを復元して、制御装置1から受信した当該メッセージの送信完了及び復元したメッセージを、制御部30(I/Oインタフェース部301)に対して例えばメモリ32に記録することで、通知することができる。
以上、スレーブとしてのI/Oユニット3について説明した。
ステップS11において、通信マスタ15は、予め設定された一定周期毎に全ての通信スレーブ35_k(1≦k≦N)との通信を1回ずつ、サイクリックに通信を行うことを制御するため、iを初期設定(iに1を設定)する。
ステップS13において、通信マスタ15(DI/DO通信時間計測部152A)は、通信スレーブ35_iとのDI/DO基本通信計測時間_iを計測する。
ステップS14において、通信マスタ15(DOパケット作成部155)は通信スレーブ35_iに対して送信するDOパケット_iを作成する。
ステップS15において、通信マスタ15(DO送信部158A)は、通信スレーブ35_iに対してDOパケット_iを送信するとともに、通信マスタ15(DI受信部158B)は、通信スレーブ35_iから送信されるDIパケット_iを受信する。
ステップ16において、通信マスタ15(DO送信部158A)は、作成したDOパケット_iにDOメッセージが無い場合、ステップS19に移る。
ステップS18において、通信マスタ15(DO送信部158A)は、制御部10から送信要求のあった1つのメッセージ_iを送信完了したと判定し、I/Oメモリ12(I/Oメモリ部_i)に、送信メッセージ_iの送信完了を記録する。
ステップ19において、通信マスタ15(DI受信部158B)は、受信したDIパケット_iにDIメッセージが無い場合、ステップS22に移る。
ステップS20において、通信マスタ15(DI受信部158B)は、通信スレーブ35_iから送信されるメッセージがあれば、次回に持ち越すメッセージの有無を検出する。次回に持ち越すメッセージ_iの無い場合、ステップS21に移る。次回に持ち越すメッセージ_iのある場合、ステップS22に移る。
ステップS21において、通信マスタ15(DI受信部158B)は、スレーブ3_iからの1つの送信メッセージ_iを受信完了したと判定し、I/Oメモリ12(I/Oメモリ部_i)に、スレーブ3_iからの送信メッセージ_iを記録する。
ステップS22において、通信マスタ15(DI/DO通信時間算出部152B)は、DI/DO基本通信時間_iを算出し、更新する。また、通信マスタ15(マージンデータ量算出部153)は、通信帯域マージンデータ量_iを算出し、更新する。
ステップ24において、i=i+1として、ステップS12に移る。
以上、マスタとしての数値制御装置1が、予め設定された一定周期毎に、スレーブとしての全てのI/Oユニット3_i(1≦i≦N)との通信を1回ずつ、サイクリックにDI/DO通信を行うとともに、メッセージを(必要に応じて分割して)送信する処理フローを示した。
図7を参照すると、ステップS30において、通信スレーブ35_k(DO受信部358B)は、通信マスタ15からのDO通信を検知する。
ステップS31において、通信スレーブ35_k(DO受信部358B)は、通信マスタ15から送信されるDOパケットを受信する。(前述したように、DO受信部358BがDOパケットのヘッダを受信すると、ステップS32に移行することができる)。
ステップS32において、通信スレーブ35_k(DO受信部358B)は、受信したDOパケット_iにDOメッセージが無い場合、ステップS35に移る。
ステップS33において、通信スレーブ35_k(DO受信部358B)は、次回に持ち越される受信メッセージの有無を検出する。次回に持ち越される受信メッセージの無い場合、ステップS34に移る。次回に持ち越されるメッセージのある場合、ステップS35に移る。
ステップS34において、通信スレーブ35_k(DO受信部358B)は、数値制御装置1からの1つの送信メッセージを受信したと判定し、メモリ32に、通信マスタ15からの1つの送信メッセージを記録する。
ステップS35において、通信スレーブ35_k(DIパケット作成部355)は、DIパケットを作成する。
ステップS36において、通信スレーブ35_k(DI送信部358A)は、DIパケットを通信マスタ15に対して送信する。
ステップS37において、DIパケット_iにDIメッセージが無い場合、ステップS30に移る。
ステップS38において、通信スレーブ35_k(DI送信部358A)は、通信マスタ15へ送信するメッセージにおいて、次回に持ち越すメッセージの有無を検出する。次回に持ち越すメッセージの無い場合、ステップS39に移る。次回に持ち越すメッセージのある場合、ステップS30に移る。
ステップS39において、通信スレーブ35_k(DI送信部358A)は、スレーブ3_iからの1つの送信メッセージを送信完了したと判定し、メモリ32に、当該送信メッセージの送信完了を記録する。その後、ステップS30に移る。
以上、スレーブとしてのI/Oユニット3_k(1≦k≦N)が、予め設定された一定周期毎に、マスタとしての数値制御装置1との通信を1回ずつ、サイクリックにDI/DO通信を行うとともに、メッセージを(必要に応じて分割して)送信する処理フローを示した。
他方、各通信スレーブ35_k(1≦k≦N)は、今回の周期で送信するメッセージ_kの長さが通信帯域マージンデータ量_kを超える場合、通信帯域マージンデータ量_kに相当する、メッセージの一部分を今回の周期で送信する送信メッセージ_kとし、今回の周期で送信する送信メッセージ_kを除いた送信メッセージの残りの部分を次回通信に持ち越すメッセージ_kとすることで、複数回の通信に分けてメッセージ通信を行うように構成した。
これにより、通常のサイクリック通信時に、数値制御装置1(マスタ)と複数のI/Oユニット3_k(1≦k≦N)(スレーブ)との間で、メッセージ通信を行う場合であっても、予め設定された一定周期以内に、全てのI/Oユニット3_k(1≦k≦N)(スレーブ)との間で、少なくともDI信号及びDO信号のやり取り(DI/DO通信)を完了できるようにして、I/O信号の更新周期を担保することを可能とした。
したがって、各I/Oユニット3_k(1≦k≦N)において、特定のI/Oユニット3(スレーブ)において「複数回に分けてメッセージ通信を行う」場合が多発することを防ぐことが望まれる。
第2実施形態では、通信スレーブ35_k(1≦k≦N)毎に、メッセージ通信が複数回に分割された回数をカウントして、当該カウント値に基づいて、各スレーブ毎通信周期_k(1≦k≦N)を動的に変更することで、特定のI/Oユニット3(スレーブ)において「複数回に分けてメッセージ通信を行う」場合が多発することを防ぐ。
このため、第2実施形態において、通信マスタ15は、第1実施形態の機能部に加えて、スレーブ毎分割回数カウント部156、及びスレーブ毎通信周期最適化部157を備える。図8は、マスタとしての数値制御装置1の機能ブロックを示す概略図である。上述したように、スレーブ毎分割回数カウント部156及びスレーブ毎通信周期最適化部157以外の機能部は、図4に記載の第1実施形態における数値制御装置1の機能部と同じであり、説明は省略する。
図8に示すように、通信マスタ15は、スレーブ毎通信周期割当部151と、DI/DO通信時間計測部152Aと、DI/DO通信時間算出部152Bと、マージンデータ量算出部153と、マスタ送信メッセージ判定部154と、DOパケット作成部155と、スレーブ毎分割回数カウント部156と、スレーブ毎通信周期最適化部157(これは、第2実施形態)と、DO送信部158Aと、DI受信部158Bと、バッファメモリ159と、を有する。
スレーブ毎分割回数カウント部156は、通信マスタ15から各通信スレーブ35_k(1≦k≦N)に送信される1つの送信メッセージ_kが複数回に分割されて送信される回数と、当該通信スレーブ35_k(1≦k≦N)から通信マスタ15に対して送信される、送信メッセージ_kに対する1つの返信メッセージ_kが複数回に分割されて送信される回数と、の合計値(「スレーブ毎分割回数_k」という)を通信周期毎にカウントし、更新する。
具体的には、スレーブ毎分割回数カウント部156は、通信マスタ15と通信スレーブ35_k(1≦k≦N)との間で、例えば、DI/DO通信を開始するときに、スレーブ毎分割回数_kをゼロに初期設定する。その後、今回の周期において、通信マスタ15側で次回通信に持ち越すメッセージが発生した場合、スレーブ毎分割回数_kに1を加算し、通信スレーブ35_k側で次回通信に持ち越すメッセージが発生した場合、スレーブ毎分割回数_kに1を加算する。
スレーブ毎通信周期最適化部157は、スレーブ毎分割回数カウント部156によりカウントされた各通信スレーブ35_k(1≦k≦N)におけるスレーブ毎分割回数_k(1≦k≦N)のうち、少なくとも1つの通信スレーブ35_iにおけるスレーブ毎分割回数_iが予め設定された閾値以上又は閾値を超えた場合、当該通信スレーブ35_iに割り当てられているスレーブ毎通信周期_iに予め設定される調整量を加算する。また、スレーブ毎通信周期最適化部157は、その際、通信スレーブ35_k(1≦k≦N)に割り当てられているスレーブ毎通信周期_kから前記調整量を減算した場合であっても、DI/DO基本通信時間_kを超える通信スレーブ35_k(1≦k≦N)の集合(すなわち、通信帯域マージンデータ量_kの値がプラス値となる通信スレーブ35(1≦k≦N)の集合)から、スレーブ毎分割回数_k(1≦k≦N)の値が最も小さい値となる1つの通信スレーブ35_jを選択して、当該通信スレーブ35_jに割り当てたスレーブ毎通信周期_jから前記調整量を減算する。
調整量は、全ての通信スレーブ35_k(1≦k≦N)において、
DI/DO基本通信時間_k > (スレーブ毎通信周期_k - 調整量)
となるように設定することが好ましい。そうすることで、スレーブ毎分割回数_k(1≦k≦N)の値が最も小さい値となる1つの通信スレーブ35_jを選択して、当該通信スレーブ35_jに割り当てたスレーブ毎通信周期_jから前記調整量を減算するようにしてもよい。
図9は、スレーブ毎分割回数_kに基づいて、スレーブ毎通信周期を最適化する様子を示す一例を示す図である。図9に示すように、N番目の通信スレーブにおいて、スレーブ毎分割回数が閾値(例えば、100)以上となった場合に、N番目の通信スレーブのスレーブ毎通信周期にXmsを加算し、スレーブ毎分割回数が最小値である、1番目の通信スレーブのスレーブ毎通信周期からXmsを減算するように構成される。
なお、スレーブ毎通信周期最適化部157は、上記最適化処理を行う際に、スレーブ毎通信周期_iに予め設定される調整量を加算したI/Oユニット3_iにおけるスレーブ毎分割回数_iを初期化するようにしてもよい。
第2実施形態の構成によると、第1実施形態と同様に、予め設定された一定周期以内に、行われる全てのDI/DO通信の周期を担保した上で、メッセージ通信を要求からの遅延が小さくなるようにすることができる。
以上、第2実施形態における通信マスタ15の機能部の構成について説明した。次に、第2実施形態の動作について説明する。
第2実施形態において追加された機能に係る動作については、ステップ番号にAを付与したステップにおいて処理を追加している。以下の説明では、機能追加されたステップについてのみ説明し、図5に記載のフローチャートにおけるステップ番号と同じステップについては、説明を省略する。
なお、スレーブとしてのI/Oユニット3の動作については、第1実施形態の場合(図7参照)と同じであり、説明は省略する。
図10Bを参照すると、先ず、ステップS11_1において、マスタ1(スレーブ毎通信周期最適化部157)は、スレーブ毎分割回数_k(1≦k≦N)のうち、その値が最大となるk1、及び最小となるk2を選択する。
ステップS11_2において、マスタ1(スレーブ毎通信周期最適化部157)スレーブ毎分割回数_k1が、予め設定された閾値以上か否かを判定する。閾値以上の場合(Yesの場合)、ステップS11_3に移る。閾値未満の場合(Noの場合)、ステップS11_4に移る。
ステップS11_3において、マスタ1(スレーブ毎通信周期最適化部157)は、スレーブ毎通信周期_k1に予め設定される調整量を加算するとともに、スレーブ毎通信周期_k2から調整量を減算する。なお、スレーブ毎通信周期_k1を初期化するようにしてもよい。その後、ステップS12に移る。
ステップS11_4は、第1実施形態における数値制御装置1の動作を示すフローチャートのステップS11と同じ処理を行う。すなわち、ステップS11_4において、iを初期設定(iに1を設定)する。その後、ステップS12に移る。
以上、マスタとしての数値制御装置1が、予め設定された一定周期毎に、スレーブとしての全てのI/Oユニット3_i(1≦i≦N)との通信を1回ずつ、サイクリックに通信を行う場合に、スレーブ毎分割回数_iが閾値以上となった場合に、スレーブ毎通信周期_iを更新する処理フローを示した。
第2実施形態により、数値制御装置1は、各I/Oユニット3_k(1≦k≦N)において、特定のI/Oユニット3(スレーブ)において「複数回に分けてメッセージ通信を行う」場合が多発することを防ぐことができる。すなわち、数値制御装置1は、一定周期で行われるDI/DO通信の周期を担保したうえで。メッセージ通信を要求からの遅延が小さくなるように、制御することができる。
以上、第2実施形態について説明した。
また、本発明で使用する動作プログラムを初めとするプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(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)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
上述した実施形態では、制御装置として数値制御装置1を例として説明したが、これに限られない。前述したように、ロボットコントローラ等、産業用機械の制御装置における高速シリアル通信にも適用してもよい。
通信マスタ15は、
各通信スレーブ35にそれぞれスレーブ毎通信周期を予め割り当て、
各通信スレーブ35とのI/O信号送受信の周期ごとに、送信メッセージを除くDIデータ及びDOデータのみの通信に要した通信時間を計測し、各通信スレーブ35の通信帯域マージンデータ量を算出するマージンデータ量算出部153と、
通信スレーブ35に対して、DOデータを送信するときに、通信帯域マージンデータ量を組み込んだDOパケットを作成し、通信スレーブ35に対する送信メッセージ量が通信帯域マージンデータ量を超える場合、複数回の通信に分けて各通信の周期ごとに、通信帯域マージンデータ量を超えない、送信メッセージの分割した部分メッセージをDOパケットに組み込むDOパケット作成部155と、
DOパケットを通信スレーブ35に送信するDO送信部158Aと、を備え、
通信スレーブ35は、
通信マスタ15から送信されるDOパケットを受信するDO受信部358Bと、
受信したDOパケットに含まれる通信帯域マージンデータ量を取得し、通信マスタ15に対して、DIデータを送信するときに、DIパケットを作成し、通信マスタ15に対する送信メッセージ量が通信帯域マージンデータ量を超える場合、複数回の通信に分けて各通信の周期ごとに、通信帯域マージンデータ量を超えない、送信メッセージの分割した部分メッセージをDIパケットに組み込むDIパケット作成部355と、
DIパケットを通信マスタ15に送信するDI送信部358Aと、を備える。
これにより、通常のサイクリック通信時に、数値制御装置1(マスタ)と複数のI/Oユニット(スレーブ)との間で、メッセージ通信を行う場合であっても、予め設定された一定周期以内に、全てのI/Oユニット(スレーブ)との間で、少なくともDI信号及びDO信号のやり取り(DI/DO通信)を完了できるようにして、I/O信号の更新周期を担保することができる。
各通信スレーブ35との間で送受信される1つの送信メッセージが複数回に分割されて送信された回数である送信メッセージ分割回数をカウントするスレーブ毎分割回数カウント部156と、
少なくとも1つの通信スレーブ35における、前記送信メッセージ分割回数が予め設定された閾値以上又は閾値を超えた場合、前記通信スレーブ35に割り当てたスレーブ毎通信周期に予め設定される調整量を加算するとともに、前記送信メッセージ分割回数が最も少ない1つの通信スレーブ35に割り当てたスレーブ毎通信周期から前記調整量を減算し、前記調整量の加算された通信スレーブ35における前記送信メッセージ分割回数を初期化するスレーブ毎通信周期最適化部157と、
を備えるようにしてもよい。
これにより、制御装置1は、一定周期で行われるDI/DO通信の周期を担保したうえで。メッセージ通信を要求からの遅延が小さくなるように、制御することができる。
これにより、通信帯域マージンデータ量をより安全な値とすることができる。
これにより、各通信スレーブ35に対して、スレーブ毎通信周期を特定のスレーブに偏らずに割り当てることができる。
これにより、ケーブル長の長いI/Oユニットに対しては、ケーブル長に起因する通信の遅れを吸収することができる。
これにより、DI/DO点数の多いI/Oユニットに対しては、DI/DO点数に起因する通信の遅れを吸収することができる。
通信マスタ15を備える制御装置1と、制御装置1にデイジーチェーンにより通信可能に接続された通信スレーブ35をそれぞれ備える複数のI/Oユニットとの間で、予め設定された一定周期毎に、制御装置1が全てのI/OユニットとI/O信号を送受信する通信制御方法であって、
通信マスタ15は、
各通信スレーブ35にそれぞれスレーブ毎通信周期を予め割り当て、
各通信スレーブ35とのI/O信号送受信の周期ごとに、送信メッセージを除くDIデータ及びDOデータのみの通信に要した通信時間を計測し、各通信スレーブ35の通信帯域マージンデータ量を算出するマージンデータ量算出ステップと、
通信スレーブ35に対して、DOデータを送信するときに、通信帯域マージンデータ量を組み込んだDOパケットを作成し、通信スレーブ35に対する送信メッセージ量が通信帯域マージンデータ量を超える場合、複数回の通信に分けて各通信の周期ごとに、通信帯域マージンデータ量を超えない、送信メッセージの分割した部分メッセージを前記DOパケットに組み込むDOパケット作成ステップと、
DOパケットを通信スレーブ35に送信するDO送信ステップと、を備え、
通信スレーブ35は、
通信マスタ15から送信されるDOパケットを受信するDO受信ステップと、
受信したDOパケットに含まれる通信帯域マージンデータ量を取得し、通信マスタ15に対して、DIデータを送信するときに、DIパケットを作成し、通信マスタ15に対する送信メッセージ量が通信帯域マージンデータ量を超える場合、複数回の通信に分けて各通信の周期ごとに、通信帯域マージンデータ量を超えない、送信メッセージの分割された部分メッセージをDIパケットに組み込むDIパケット作成ステップと、
DIパケットを通信マスタ15に送信するDI送信ステップと、を備える。
これにより、(1)と同様の効果を奏することができる。
前記通信マスタは、さらに、
各通信スレーブとの間で送受信される1つの送信メッセージが複数回に分割されて送信された回数である送信メッセージ分割回数をカウントするスレーブ毎分割回数カウントステップと、
少なくとも1つの通信スレーブにおける、前記送信メッセージ分割回数が予め設定された閾値以上又は閾値を超えた場合、前記通信スレーブに割り当てたスレーブ毎通信周期に予め設定される調整量を加算するとともに、前記送信メッセージ分割回数が最も少ない1つの通信スレーブに割り当てたスレーブ毎通信周期から前記調整量を減算し、前記調整量の加算された通信スレーブにおける前記送信メッセージ分割回数を初期化するスレーブ毎通信周期最適化ステップと、
を備えるようにしてもよい。
これにより、(2)と同様の効果を奏することができる。
10 制御部
101 I/Oインタフェース部
12 I/Oメモリ
15 通信マスタ
151 スレーブ毎通信周期割当部
152A DI/DO通信時間計測部
152B DI/DO通信時間算出部
153 マージンデータ量算出部
154 マスタ送信メッセージ判定部
155 DOパケット作成部
156 スレーブ毎分割回数カウント部
157 スレーブ毎通信周期最適化部
158A DO送信部
158B DI受信部
159 バッファメモリ
3 I/Oユニット
30 制御部
301 I/Oインタフェース部
32 メモリ
35 通信スレーブ
354 スレーブ送信メッセージ判定部
355 DIパケット作成部
358A DI送信部
358B DO受信部
359 メモリ部
6 電気信号ケーブル
1000 通信制御システム
Claims (8)
- 通信マスタを備える制御装置と、前記制御装置にデイジーチェーンにより通信可能に接続された通信スレーブをそれぞれ備える複数のI/Oユニットとの間で、予め設定された一定周期毎に、前記制御装置が全てのI/OユニットとI/O信号を送受信する通信制御システムにおいて、
前記通信マスタは、
各通信スレーブにそれぞれスレーブ毎通信周期を予め割り当て、
各通信スレーブとのI/O信号送受信の周期ごとに、送信メッセージを除くDIデータ及びDOデータのみの通信に要した通信時間を計測し、各通信スレーブの通信帯域マージンデータ量を算出するマージンデータ量算出部と、
前記通信スレーブに対して、DOデータを送信するときに、前記通信帯域マージンデータ量を組み込んだDOパケットを作成し、前記通信スレーブに対する送信メッセージ量が前記通信帯域マージンデータ量を超える場合、複数回の通信に分けて各通信の周期ごとに、前記通信帯域マージンデータ量を超えない、前記送信メッセージの分割した部分メッセージを前記DOパケットに組み込むDOパケット作成部と、
前記DOパケットを前記通信スレーブに送信するDO送信部と、を備え、
前記通信スレーブは、
前記通信マスタから送信されるDOパケットを受信するDO受信部と、
受信した前記DOパケットに含まれる前記通信帯域マージンデータ量を取得し、前記通信マスタに対して、DIデータを送信するときに、DIパケットを作成し、前記通信マスタに対する送信メッセージ量が前記通信帯域マージンデータ量を超える場合、複数回の通信に分けて各通信の周期ごとに、前記通信帯域マージンデータ量を超えない、前記送信メッセージの分割した部分メッセージを前記DIパケットに組み込むDIパケット作成部と、
前記DIパケットを前記通信マスタに送信するDI送信部と、を備える、
通信制御システム。 - 前記通信マスタは、さらに、
各通信スレーブとの間で送受信される1つの送信メッセージが複数回に分割されて送信された回数である送信メッセージ分割回数をカウントするスレーブ毎分割回数カウント部と、
少なくとも1つの通信スレーブにおける、前記送信メッセージ分割回数が予め設定された閾値以上又は閾値を超えた場合、前記通信スレーブに割り当てたスレーブ毎通信周期に予め設定される調整量を加算するとともに、前記送信メッセージ分割回数が最も少ない1つの通信スレーブに割り当てたスレーブ毎通信周期から前記調整量を減算し、前記調整量の加算された通信スレーブにおける前記送信メッセージ分割回数を初期化するスレーブ毎通信周期最適化部と、
を備える、請求項1に記載の通信制御システム。 - 前記マージンデータ量算出部は、
各通信スレーブに割り当てたスレーブ毎通信周期と、各通信スレーブとのI/O信号送受信の周期ごとに前記DIデータ及びDOデータのみの通信に要した通信時間に基づいて算出される今回の計測時間及び過去の計測時間における最大値と、に基づいて、前記通信帯域マージンデータ量を算出する、請求項1又は請求項2に記載の通信制御システム。 - 前記スレーブ毎通信周期は、前記予め設定された一定周期を前記I/Oユニットの個数により等分した値とする、請求項1から請求項3のいずれか1項に記載の通信制御システム。
- 前記スレーブ毎通信周期は、前記I/Oユニットの接続順序に基づいて、傾斜的に各I/Oユニットに算出する値とする、請求項1から請求項3のいずれか1項に記載の通信制御システム。
- 前記スレーブ毎通信周期は、前記I/OユニットのDI/DO点数に基づいて、算出する値とする、請求項1から請求項3のいずれかに記載の通信制御システム。
- 通信マスタを備える制御装置と、前記制御装置にデイジーチェーンにより通信可能に接続された通信スレーブをそれぞれ備える複数のI/Oユニットとの間で、予め設定された一定周期毎に、前記制御装置が全てのI/OユニットとI/O信号を送受信する通信制御方法であって、
前記通信マスタは、
各通信スレーブにそれぞれスレーブ毎通信周期を予め割り当て、
各通信スレーブとのI/O信号送受信の周期ごとに、送信メッセージを除くDIデータ及びDOデータのみの通信に要した通信時間を計測し、各通信スレーブの通信帯域マージンデータ量を算出するマージンデータ量算出ステップと、
前記通信スレーブに対して、DOデータを送信するときに、前記通信帯域マージンデータ量を組み込んだDOパケットを作成し、前記通信スレーブに対する送信メッセージ量が前記通信帯域マージンデータ量を超える場合、複数回の通信に分けて各通信の周期ごとに、前記通信帯域マージンデータ量を超えない、前記送信メッセージの分割した部分メッセージを前記DOパケットに組み込むDOパケット作成ステップと、
前記DOパケットを前記通信スレーブに送信するDO送信ステップと、を備え、
前記通信スレーブは、
前記通信マスタから送信されるDOパケットを受信するDO受信ステップと、
受信した前記DOパケットに含まれる前記通信帯域マージンデータ量を取得し、前記通信マスタに対して、DIデータを送信するときに、DIパケットを作成し、前記通信マスタに対する送信メッセージ量が前記通信帯域マージンデータ量を超える場合、複数回の通信に分けて各通信の周期ごとに、前記通信帯域マージンデータ量を超えない、前記送信メッセージの分割された部分メッセージを前記DIパケットに組み込むDIパケット作成ステップと、
前記DIパケットを前記通信マスタに送信するDI送信ステップと、を備える、
通信制御方法。 - 前記通信制御方法において、
前記通信マスタは、さらに、
各通信スレーブとの間で送受信される1つの送信メッセージが複数回に分割されて送信された回数である送信メッセージ分割回数をカウントするスレーブ毎分割回数カウントステップと、
少なくとも1つの通信スレーブにおける、前記送信メッセージ分割回数が予め設定された閾値以上又は閾値を超えた場合、前記通信スレーブに割り当てたスレーブ毎通信周期に予め設定される調整量を加算するとともに、前記送信メッセージ分割回数が最も少ない1つの通信スレーブに割り当てたスレーブ毎通信周期から前記調整量を減算し、前記調整量の加算された通信スレーブにおける前記送信メッセージ分割回数を初期化するスレーブ毎通信周期最適化ステップと、
を備える、請求項7に記載の通信制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020092878A JP7469142B2 (ja) | 2020-05-28 | 2020-05-28 | 通信制御システム及び通信制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020092878A JP7469142B2 (ja) | 2020-05-28 | 2020-05-28 | 通信制御システム及び通信制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2021190784A JP2021190784A (ja) | 2021-12-13 |
JP7469142B2 true JP7469142B2 (ja) | 2024-04-16 |
Family
ID=78847533
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020092878A Active JP7469142B2 (ja) | 2020-05-28 | 2020-05-28 | 通信制御システム及び通信制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7469142B2 (ja) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018129708A (ja) | 2017-02-09 | 2018-08-16 | オムロン株式会社 | 通信システム、通信装置および通信方法 |
JP2018129707A (ja) | 2017-02-09 | 2018-08-16 | オムロン株式会社 | 通信システム、通信装置および通信方法 |
-
2020
- 2020-05-28 JP JP2020092878A patent/JP7469142B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018129708A (ja) | 2017-02-09 | 2018-08-16 | オムロン株式会社 | 通信システム、通信装置および通信方法 |
JP2018129707A (ja) | 2017-02-09 | 2018-08-16 | オムロン株式会社 | 通信システム、通信装置および通信方法 |
US20200119975A1 (en) | 2017-02-09 | 2020-04-16 | Omron Corporation | Communication System, Communication Apparatus, and Communication Method |
Also Published As
Publication number | Publication date |
---|---|
JP2021190784A (ja) | 2021-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2453612B1 (en) | Bus control device | |
US7944838B2 (en) | Apparatus, method and computer program for traffic control | |
CN107809391B (zh) | 用于控制消息通信负载的设备和方法 | |
US11356386B2 (en) | Method and apparatus for setting link priority | |
JP7073477B2 (ja) | データパケット分配方法、送信側装置、受信側装置及び記憶媒体 | |
EP3474499A1 (en) | Network performance detection method and apparatus | |
CN113364638B (zh) | 用于epa组网的方法、电子设备和存储介质 | |
CN112311628A (zh) | 网络测速方法、***、网络设备和存储介质 | |
JP7469142B2 (ja) | 通信制御システム及び通信制御方法 | |
CN110636109B (zh) | 节点调度优化方法、服务器及计算机可读存储介质 | |
CN110874314B (zh) | 压测方法、装置、设备和介质 | |
EP4096112A1 (en) | A method of processing data related to a transmission of a plurality of data streams | |
CN114764233A (zh) | 基于环路部件响应性检测工业过程工厂中的部件劣化 | |
EP3399704B1 (en) | Method and apparatus for determining routing policy | |
CN112714081B (zh) | 一种数据处理方法及其装置 | |
CN113364701A (zh) | 基于rtt的结合比例积分微分控制的拥塞控制方法及设备 | |
JP7453061B2 (ja) | 通信制御システム及び通信制御方法 | |
CN112650737B (zh) | 数据处理方法、数据处理装置、存储介质和电子设备 | |
CN112205023B (zh) | 蜂窝电信网络 | |
US20220368559A1 (en) | Communication device, communication system, communication control method and program | |
CN114826977A (zh) | 一种波特率检测方法、装置、终端设备以及存储介质 | |
JP2014112779A (ja) | データ送信制御装置、データ送信制御方法、および、コンピュータ・プログラム | |
KR101813165B1 (ko) | 소프트웨어 정의 네트워크를 위한 적응적 제어 평면 관리 방법 및 장치 | |
CN108833276B (zh) | 优选路径的确定方法及装置、服务器 | |
CN108347390A (zh) | 一种网络设备中流量限速的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230308 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20240126 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20240206 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20240208 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20240305 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240404 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7469142 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |