(57)【要約】      （修正有）【課題】周期的に送信すべきデータについて、或る周期において基準時刻と実際の送信開始時刻とが乖離した場合にも、次の周期において予定時刻に送信を開始できる制御装置を提供する。【解決手段】制御周期ごとに第１周期データを出力する制御装置であって、Ｎ＋１周期目の基準時刻を算出する算出部１３０と、Ｎ周期目の制御周期に送信すべき前記第１周期データの送信開始時刻と、Ｎ周期目の基準時刻との差を用いて生成された送信禁止期間を、Ｎ＋１周期目の基準時刻の前および後ろの少なくとも一方に設定する設定部１６０と、前記設定部により設定された前記送信禁止期間でない期間に、前記第１周期データより優先度が低い第２周期データの送信を開始する送信部１７０と、を備える。【選択図】図１
2019215818.tif 000002
【特許請求の範囲】
【請求項１】
制御周期ごとに第１周期データを出力する制御装置であって、
前記第１周期データを、前記第１周期データの送信開始時刻と共に取得する取得部と、
Ｎを０以上の自然数として、Ｎ周期目の制御周期に送信すべき前記第１周期データの送信開始時刻に、前記制御周期に相当する時間間隔を付加して、Ｎ＋１周期目の基準時刻を算出する算出部と、
Ｎ周期目の制御周期に送信すべき前記第１周期データの送信開始時刻と、Ｎ周期目の基準時刻との差を用いて生成された送信禁止期間を、Ｎ＋１周期目の基準時刻の前および後ろの少なくとも一方に設定する設定部と、
前記設定部により設定された前記送信禁止期間でない期間に、前記第１周期データより優先度が低い第２周期データの送信を開始する送信部と、
を備えることを特徴とする制御装置。
【請求項２】
前記第２周期データのデータ量から、前記第２周期データの送信に要する期間である基礎期間を生成する第１生成部と、
Ｎ周期目の制御周期に送信すべき前記第１周期データの送信開始時刻と、Ｎ周期目の基準時刻との差である調整期間を生成する第２生成部と、をさらに備え、
前記設定部によって設定される前記送信禁止期間は、前記基礎期間と前記調整期間との合計期間を含む
ことを特徴とする請求項１に記載の制御装置。
【請求項３】
Ｎ周期目の制御周期に送信すべき前記第１周期データの送信開始時刻が、Ｎ周期目の基準時刻よりも遅い場合、前記設定部は、Ｎ＋１周期目の基準時刻が終点となるように、前記基礎期間と前記調整期間との合計期間を含む期間を、前記送信禁止期間として設定する
ことを特徴とする請求項２に記載の制御装置。
【請求項４】
Ｎ周期目の制御周期に送信すべき前記第１周期データの送信開始時刻が、Ｎ周期目の基準時刻よりも早い場合、前記設定部は、Ｎ＋１周期目の基準時刻が終点となるように前記基礎期間を含む期間を前記送信禁止期間として設定し、かつ、Ｎ＋１周期目の基準時刻が始点となるように前記調整期間を含む期間を前記送信禁止期間として設定する
ことを特徴とする請求項２または３に記載の制御装置。
【請求項５】
前記送信部が、所定回数の前記制御周期にわたって連続して、前記第２周期データを送信しないと、前記送信禁止期間であっても強制的に、前記送信部に、前記第２周期データの送信を開始させる指示部をさらに備える
ことを特徴とする請求項１から４のいずれか１項に記載の制御装置。
【請求項６】
前記送信部が、所定回数の前記制御周期にわたって連続して、前記第２周期データを送信しないと、前記送信部が前記所定回数の前記制御周期にわたって連続して前記第２周期データを送信しないことを外部に通知する通知部をさらに備える
ことを特徴とする請求項１から５のいずれか１項に記載の制御装置。
【請求項７】
制御周期ごとに第１周期データを出力する制御装置の制御方法であって、
前記第１周期データを、前記第１周期データの送信開始時刻と共に取得する取得ステップと、
Ｎを０以上の自然数として、Ｎ周期目の制御周期に送信すべき前記第１周期データの送信開始時刻に、前記制御周期に相当する時間間隔を付加して、Ｎ＋１周期目の基準時刻を算出する算出ステップと、
Ｎ周期目の制御周期に送信すべき前記第１周期データの送信開始時刻と、Ｎ周期目の基準時刻との差を用いて生成された送信禁止期間を、Ｎ＋１周期目の基準時刻の前および後ろの少なくとも一方に設定する設定ステップと、
前記設定ステップにて設定された前記送信禁止期間でない期間に、前記第１周期データより優先度が低い第２周期データの送信を開始する送信ステップと、
を含むことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルコントローラ（Programmable Logic Controller；以下、ＰＬＣとも称す）などの制御装置等に関する。
【背景技術】
【０００２】
従来、同一周波数帯を利用する２つの通信レートの各々において送信するデータが互いに衝突するのを防ぐため、一方の通信レートにおける送信を禁止する送信禁止期間を設けることが知られている。例えば下掲の特許文献１には、一方の通信レートにおいて送信するデータの大きさに対応する長さの送信禁止期間を、一方の通信レートにおける送信に対して設定する通信システムが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１８６６２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述のような従来技術には、同一経路を利用する複数の送信について、或る送信について、一般的に予想される送信開始時刻（＝基準時刻）と実際の送信開始時刻とは乖離し得るという点を考慮できていないという問題がある。以下、図８および図９を参照して、具体的に説明する。
【０００５】
図８は、同一経路を利用する、第１周期データＣＤの送信と第２周期データＮＤの送信との、従来までの調整方法を説明する図である。図８において、第１周期データＣＤの送信中は、第２周期データＮＤを送信することはできず、同様に、第２周期データＮＤの送信中は、第１周期データＣＤを送信することはできない。また、第１周期データＣＤの送信は周期的に、第２周期データＮＤの送信に優先して実行されるものとする。
【０００６】
図８において、第１周期データＣＤは、第１周期データＣＤを送信すべき時刻である「送信開始時刻Ｓ」と共に第１送信キューＴＸＱ０にバッファリングされ（つまり、格納され）、バッファリングが完了すると送信可能状態となる。そして、送信可能状態となった第１周期データＣＤは、送信開始時刻Ｓに、ネットワークへの送信を開始される。つまり、第１周期データＣＤを送信すべき時刻である「送信開始時刻Ｓ」と、第１周期データＣＤの実際の送信開始時刻とは、一致するものとする。
【０００７】
第２周期データＮＤは、第２送信キューＴＸＱ１にバッファリングされ、バッファリングが完了すると送信可能状態となる。そして、送信可能状態となった第２周期データＮＤは、「第１周期データＣＤの送信中の期間」および「送信禁止期間Ｂの期間」以外の期間において、ネットワークへの送信を開始される。つまり、「第１周期データＣＤの送信中の期間」および「送信禁止期間Ｂの期間」においては、第２周期データＮＤの送信を開始することはできない。送信禁止期間Ｂは、第１周期データＣＤの送信を送信開始時刻Ｓに開始するために設定され、送信禁止期間Ｂ中は、第２周期データＮＤの送信開始が禁止される。
【０００８】
図８において、第１周期データＣＤは周期的に送信され、Ｎ周期目に送信すべき第１周期データＣＤの送信開始時刻Ｓは「送信開始時刻Ｓ（ｎ）」、Ｎ＋１周期目に送信すべき第１周期データＣＤの送信開始時刻Ｓは「送信開始時刻Ｓ（ｎ＋１）」と表現される。Ｎは、「０以上の自然数」である。同様に、送信禁止期間Ｂについて、Ｎ＋１周期目に送信すべき第１周期データＣＤの送信のために設定される送信禁止期間Ｂは、特に「送信禁止期間Ｂ（ｎ＋１）」と表現される。
【０００９】
「送信開始時刻Ｓ（ｎ＋１）から第２周期データＮＤの送信に要する時間を遡った時刻」から「送信開始時刻Ｓ（ｎ＋１）」までの間に第２周期データＮＤの送信を開始すると、第２周期データＮＤの送信が終了する時刻は送信開始時刻Ｓ（ｎ＋１）より遅くなる。そして、第２周期データＮＤの送信が終了するまでは第１周期データＣＤの送信を開始できないため、送信開始時刻Ｓ（ｎ＋１）に第１周期データＣＤの送信を開始することはできなくなる。したがって、「送信開始時刻Ｓ（ｎ＋１）から第２周期データＮＤの送信に要する時間を遡った時刻」から「送信開始時刻Ｓ（ｎ＋１）」までの期間を、送信禁止期間Ｂとすることで、送信開始時刻Ｓ（ｎ＋１）に第１周期データＣＤの送信を開始することができる。
【００１０】
ただし、第１周期データＣＤの送信開始時刻Ｓは、第１周期データＣＤと同時にしか取得できず、つまり、予め把握しておくことができない。図８において、第２周期データＮＤのバッファリング完了時点（送信可能時点）では、Ｎ＋１周期目に送信すべき第１周期データＣＤの送信開始時刻Ｓ（ｎ＋１）は不明であるため、第２周期データＮＤのバッファリング完了時点では送信禁止期間Ｂを設定できない。
【００１１】
そこで、図８に例示する従来までの調整方法においては、送信開始時刻Ｓの代わりに、周期的に送信される第１周期データＣＤの送信周期Ｃに相当する時間間隔を送信開始時刻Ｓに付加した時刻である「基準時刻Ｔ（＝基準時刻）」を利用する。送信周期Ｃは、「制御周期」とも称する。
【００１２】
例えば、Ｎ周期目の第１周期データＣＤの送信開始時刻Ｓ（ｎ）に、「送信周期Ｃに相当する時間間隔」を付加した時刻を、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）とする。そして、基準時刻Ｔを用いて、「基準時刻Ｔから第２周期データＮＤの送信に要する時間を遡った時刻」から「基準時刻Ｔ」までの期間を、送信禁止期間Ｂとする。なお、以下では「Ｔ（０）＝Ｓ（０）」とする。
【００１３】
図８に示すように、従来までの調整方法においても、各周期における基準時刻Ｔと送信開始時刻Ｓとが常に一致する場合には、送信開始時刻Ｓに第１周期データＣＤの送信を開始することができる。すなわち、第２周期データＮＤのデータ量に基づいて算出した送信禁止期間Ｂ（＝第２周期データＮＤの送信に要する時間）を、基準時刻Ｔ（＝送信開始時刻Ｓ）の前に設定することで、送信開始時刻Ｓに第１周期データＣＤの送信を開始できるようになる。具体的には、図８では、基準時刻Ｔ（ｎ＋１）（＝送信開始時刻Ｓ（ｎ＋１））が終点となるように、第２周期データＮＤのデータ量に基づいて算出した送信禁止期間Ｂを設定している。
【００１４】
しかしながら、基準時刻Ｔ（ｎ＋１）と送信開始時刻Ｓ（ｎ＋１）とに乖離が発生した場合、「第２周期データＮＤの送信に要する時間」を、送信禁止期間Ｂとして、基準時刻Ｔの前に設定しても、送信開始時刻Ｓに第１周期データＣＤの送信を開始できない。以下、図９を用いて、基準時刻Ｔ（ｎ＋１）と送信開始時刻Ｓ（ｎ＋１）とに乖離が発生した場合に従来技術が陥る問題点を説明する。
【００１５】
図９は、「第２周期データＮＤの送信に要する時間」を送信禁止期間Ｂとして基準時刻Ｔの前に設定する従来技術について、基準時刻Ｔ（ｎ＋１）と送信開始時刻Ｓ（ｎ＋１）とに乖離が発生した場合に発生する問題を説明する図である。図９の（Ａ）は、Ｎ周期目の送信開始時刻Ｓ（ｎ）が、Ｎ周期目の基準時刻Ｔ（ｎ）よりも遅れた場合について、従来技術において発生する問題を説明する図である。図９の（Ｂ）は、Ｎ周期目の送信開始時刻Ｓ（ｎ）が、Ｎ周期目の基準時刻Ｔ（ｎ）よりも早い場合について、従来技術において発生する問題を説明する図である。
【００１６】
図９の（Ａ）に示すように、Ｎ周期目の送信開始時刻Ｓ（ｎ）が、Ｎ周期目の基準時刻Ｔ（ｎ）よりも遅れた場合、送信開始時刻Ｓ（ｎ）に「送信周期Ｃに相当する時間間隔」を付加した時刻である基準時刻Ｔ（ｎ＋１）は、以下の傾向を示す。すなわち、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）は、Ｎ＋１周期目の送信開始時刻Ｓ（ｎ＋１）よりも遅れる傾向がある。ここで、従来技術は、「第２周期データＮＤの送信に要する時間」を、基準時刻Ｔ（ｎ＋１）の前に、送信禁止期間Ｂとして設定する。つまり、従来技術は、送信開始時刻Ｓ（ｎ＋１）よりも遅れた時刻を基準時刻Ｔ（ｎ＋１）として、その基準時刻Ｔ（ｎ＋１）の前に、「第２周期データＮＤの送信に要する時間」である送信禁止期間Ｂを設定する。
【００１７】
前述の通り、「送信開始時刻Ｓ（ｎ＋１）から第２周期データＮＤの送信に要する時間を遡った時刻」から「送信開始時刻Ｓ（ｎ＋１）」までの期間を送信禁止期間Ｂとすることで、送信開始時刻Ｓ（ｎ＋１）に第１周期データＣＤの送信を開始することができる。しかしながら、図９の（Ａ）においては、送信開始時刻Ｓ（ｎ＋１）よりも遅れた基準時刻Ｔ（ｎ＋１）の前に、「第２周期データＮＤの送信に要する時間」である送信禁止期間Ｂが設定されている。つまり、従来技術が基準時刻Ｔ（ｎ＋１）の前に設定する送信禁止期間Ｂは、「送信開始時刻Ｓ（ｎ＋１）から第２周期データＮＤの送信に要する時間を遡った時刻」から「送信開始時刻Ｓ（ｎ＋１）」までの期間よりも、遅れている。
【００１８】
その結果、第２周期データＮＤが送信可能状態となった時点は、「第１周期データＣＤの送信中の期間」にも「送信禁止期間Ｂの期間」にも含まれておらず、第２周期データＮＤは、送信可能状態となった直後に、送信が開始されている。図９の（Ａ）において、第２周期データＮＤの送信が完了する時刻は送信開始時刻Ｓ（ｎ＋１）より遅く、第２周期データＮＤの送信中は第１周期データＣＤを送信できないため、送信開始時刻Ｓ（ｎ＋１）に第１周期データＣＤの送信を開始することができない。
【００１９】
図９の（Ｂ）に示すように、Ｎ周期目の送信開始時刻Ｓ（ｎ）が、Ｎ周期目の基準時刻Ｔ（ｎ）よりも早い場合、送信開始時刻Ｓ（ｎ）に「送信周期Ｃに相当する時間間隔」を付加した時刻である基準時刻Ｔ（ｎ＋１）は、以下の傾向を示す。すなわち、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）は、Ｎ＋１周期目の送信開始時刻Ｓ（ｎ＋１）よりも早くなる傾向がある。ここで、従来技術は、「第２周期データＮＤの送信に要する時間」を、基準時刻Ｔ（ｎ＋１）の前に、送信禁止期間Ｂとして設定する。つまり、従来技術は、送信開始時刻Ｓ（ｎ＋１）よりも早い時刻を基準時刻Ｔ（ｎ＋１）として、その基準時刻Ｔ（ｎ＋１）の前に、「第２周期データＮＤの送信に要する時間」である送信禁止期間Ｂを設定する。
【００２０】
前述の通り、「送信開始時刻Ｓ（ｎ＋１）から第２周期データＮＤの送信に要する時間を遡った時刻」から「送信開始時刻Ｓ（ｎ＋１）」までの期間を送信禁止期間Ｂとすることで、送信開始時刻Ｓ（ｎ＋１）に第１周期データＣＤの送信を開始することができる。しかしながら、図９の（Ｂ）においては、送信開始時刻Ｓ（ｎ＋１）よりも早い基準時刻Ｔ（ｎ＋１）の前に、「第２周期データＮＤの送信に要する時間」である送信禁止期間Ｂが設定されている。つまり、従来技術が基準時刻Ｔ（ｎ＋１）の前に設定する送信禁止期間Ｂは、「送信開始時刻Ｓ（ｎ＋１）から第２周期データＮＤの送信に要する時間を遡った時刻」から「送信開始時刻Ｓ（ｎ＋１）」までの期間よりも、早い。
【００２１】
その結果、第２周期データＮＤが送信可能状態となった時点は、「第１周期データＣＤの送信中の期間」にも「送信禁止期間Ｂの期間」にも含まれておらず、第２周期データＮＤは、送信可能状態となった直後に、送信が開始されている。図９の（Ｂ）において、第２周期データＮＤの送信が完了する時刻は送信開始時刻Ｓ（ｎ＋１）より遅く、第２周期データＮＤの送信中は第１周期データＣＤを送信できないため、送信開始時刻Ｓ（ｎ＋１）に第１周期データＣＤの送信を開始することができない。
【００２２】
これまでに図８および図９を参照して説明したように、従来技術では、第２周期データＮＤのデータ量に基づいて算出される「第２周期データＮＤの送信に要する時間」を、送信禁止期間Ｂとして、基準時刻Ｔの前に設定する。
【００２３】
しかしながら、このような従来技術では、基準時刻Ｔ（ｎ）とＮ周期目の送信開始時刻Ｓ（ｎ）とが乖離した場合、Ｎ＋１周期目の送信開始時刻Ｓ（ｎ＋１）に第１周期データＣＤの送信を開始できないことがあり得る。つまり、Ｎ周期目の第１周期データＣＤの基準時刻（＝基準時刻Ｔ（ｎ））と実際の送信開始時刻（＝送信開始時刻Ｓ（ｎ））とが乖離した場合、従来技術は、Ｎ＋１周期目の送信開始時刻Ｓ（ｎ＋１）に第１周期データＣＤの送信を開始できないことがあり得る。
【００２４】
本開示の一態様は、前記課題を解決するためになされたものであり、その目的は、周期的に送信すべきデータについて、或る周期の基準時刻と実際の送信開始時刻とが乖離した場合にも、次の周期の予定時刻にデータを送信できる制御装置等を実現することにある。
【課題を解決するための手段】
【００２５】
上記の課題を解決するために、本発明の一態様に係る制御装置は、制御周期ごとに第１周期データを出力する制御装置であって、前記第１周期データを、前記第１周期データの送信開始時刻と共に取得する取得部と、Ｎを０以上の自然数として、Ｎ周期目の制御周期に送信すべき前記第１周期データの送信開始時刻に、前記制御周期に相当する時間間隔を付加して、Ｎ＋１周期目の基準時刻を算出する算出部と、Ｎ周期目の制御周期に送信すべき前記第１周期データの送信開始時刻と、Ｎ周期目の基準時刻との差を用いて生成された送信禁止期間を、Ｎ＋１周期目の基準時刻の前および後ろの少なくとも一方に設定する設定部と、前記設定部により設定された前記送信禁止期間でない期間に、前記第１周期データより優先度が低い第２周期データの送信を開始する送信部と、を備えることを特徴としている。
【００２６】
前記の構成によれば、前記制御装置は、Ｎ周期目の制御周期に送信すべき前記第１周期データの送信開始時刻と、Ｎ周期目の基準時刻との差を考慮して、前記第２周期データの送信開始を禁止する前記送信禁止期間を算出する。そして、前記制御装置は、Ｎ周期目の前記送信開始時刻に前記制御周期に相当する時間間隔を付加して算出した、Ｎ＋１周期目の基準時刻の前および後ろの少なくとも一方に、前記送信禁止期間を設定する。その上で、前記制御装置は、前記送信禁止期間でない期間に、前記第２周期データの送信を開始する。つまり、前記制御装置は、Ｎ周期目における送信開始時刻と基準時刻とが乖離する場合にも、Ｎ周期目における送信開始時刻と基準時刻との差を考慮した前記送信禁止期間を、Ｎ＋１周期目の基準時刻の前および後ろの少なくとも一方に設定する。
【００２７】
したがって、前記制御装置は、Ｎ周期目における送信開始時刻と基準時刻とが乖離する場合にも、両者の差を考慮した適切な前記送信禁止期間を設定し、Ｎ＋１周期目の送信開始時刻に前記第１周期データの送信を開始できるとの効果を奏する。
【００２８】
本発明の一態様に係る制御装置は、前記第２周期データのデータ量から、前記第２周期データの送信に要する期間である基礎期間を生成する第１生成部と、Ｎ周期目の制御周期に送信すべき前記第１周期データの送信開始時刻と、Ｎ周期目の基準時刻との差である調整期間を生成する第２生成部と、をさらに備え、前記設定部によって設定される前記送信禁止期間は、前記基礎期間と前記調整期間との合計期間を含んでもよい。
【００２９】
前記の構成によれば、前記制御装置は、「Ｎ周期目の制御周期における送信開始時刻と基準時刻との差」および「前記第２周期データのデータ量」を考慮して、第２周期データの送信開始が禁止される前記送信禁止期間を設定する。
【００３０】
ここで、前記第２周期データの送信中は、前記第１周期データを送信することはできないため、Ｎ＋１周期目の前記送信開始時刻に前記第１周期データの送信を開始するには、理論的には、以下のように、前記送信禁止期間を設定する必要がある。すなわち、「Ｎ＋１周期目の前記送信開始時刻から前記第２周期データの送信に要する時間を遡った時刻」から「Ｎ＋１周期目の前記送信開始時刻」までの期間を前記送信禁止期間とする必要がある。
【００３１】
そして、「前記第２周期データの送信に要する時間」は、前記第２周期データのデータ量に比例すると考えられ、すなわち、前記第２周期データのデータ量から算出される。そこで、前記制御装置は、前記第２周期データのデータ量から生成した前記基礎期間を含む期間を、前記送信禁止期間として利用する。
【００３２】
また、「Ｎ＋１周期目の前記送信開始時刻」は、Ｎ＋１周期目の前記第１周期データの取得前には把握できないのに対し、「Ｎ＋１周期目の前記基準時刻」は、「Ｎ周期目の前記送信開始時刻」に「前記制御周期に相当する時間間隔」を付加して予め算出できる。さらに、Ｎ＋１周期目における前記送信開始時刻と前記基準時刻との差は、Ｎ周期目における前記送信開始時刻と前記基準時刻との差以下となることが、一般的である。そこで、前記制御装置は、「Ｎ＋１周期目の前記基準時刻」に対し、「Ｎ周期目における前記送信開始時刻と前記基準時刻との差から生成した調整期間」を含む期間を、前記送信禁止期間として設定する。
【００３３】
したがって、前記制御装置は、Ｎ周期目における前記送信開始時刻と前記基準時刻とが乖離する場合にも、両者の差、および、前記第２周期データのデータ量を考慮した、適切な前記送信禁止期間を設定することができるとの効果を奏する。
【００３４】
本発明の一態様に係る制御装置において、Ｎ周期目の制御周期に送信すべき前記第１周期データの送信開始時刻が、Ｎ周期目の基準時刻よりも遅い場合、前記設定部は、Ｎ＋１周期目の基準時刻が終点となるように、前記基礎期間と前記調整期間との合計期間を含む期間を、前記送信禁止期間として設定してもよい。
【００３５】
前記の構成によれば、前記制御装置は、Ｎ周期目の前記送信開始時刻がＮ周期目の前記基準時刻よりも遅い場合、Ｎ＋１周期目の前記基準時刻が終点となるように、前記基礎期間と前記調整期間との合計期間を含む期間を、前記送信禁止期間として設定する。
【００３６】
ここで、Ｎ周期目の前記送信開始時刻がＮ周期目の前記基準時刻よりも遅い場合、Ｎ周期目の前記送信開始時刻に前記制御周期に相当する時間間隔を付加して算出するＮ＋１周期目の前記基準時刻は、Ｎ＋１周期目の前記送信開始時刻よりも遅れるのが一般的である。
【００３７】
そのため、「Ｎ＋１周期目の前記基準時刻から、前記第２周期データの送信に要する時間に対応する前記基礎期間を遡った時刻」から「Ｎ＋１周期目の前記基準時刻」までの期間のみを、前記送信禁止期間として設定したのでは、十分ではない可能性がある。言い換えれば、望ましい送信禁止期間は、「Ｎ＋１周期目の前記基準時刻から前記基礎期間を遡った時刻」から「Ｎ＋１周期目の前記基準時刻」までの期間よりも、長いと考えられる。
【００３８】
そこで、前記制御装置は、さらに、Ｎ周期目における前記送信開始時刻と前記基準時刻との差を考慮して、Ｎ＋１周期目の前記送信禁止期間を設定する。すなわち、前記制御装置は、前記基礎期間を前記送信禁止期間として設定するのに加えて、「Ｎ周期目における前記送信開始時刻と前記基準時刻との差分期間である前記調整期間」を、前記送信禁止期間として設定する。具体的には、前記制御装置は、「Ｎ＋１周期目の前記基準時刻から、前記基礎期間と前記調整期間との合計期間を含む期間を遡った時刻」から「Ｎ＋１周期目の前記基準時刻」までの期間を、前記送信禁止期間として設定する。
【００３９】
したがって、前記制御装置は、Ｎ周期目における前記送信開始時刻が前記基準時刻よりも遅い場合にも、両者の差、および、前記第２周期データのデータ量を考慮した、適切な前記送信禁止期間を設定することができるとの効果を奏する。
【００４０】
本発明の一態様に係る制御装置において、Ｎ周期目の制御周期に送信すべき前記第１周期データの送信開始時刻が、Ｎ周期目の基準時刻よりも早い場合、前記設定部は、Ｎ＋１周期目の基準時刻が終点となるように前記基礎期間を含む期間を前記送信禁止期間として設定し、かつ、Ｎ＋１周期目の基準時刻が始点となるように前記調整期間を含む期間を前記送信禁止期間として設定してもよい。
【００４１】
前記の構成によれば、前記制御装置は、Ｎ周期目の前記送信開始時刻がＮ周期目の前記基準時刻よりも早い場合、Ｎ＋１周期目の基準時刻が終点となるように前記基礎期間を含む期間を前記送信禁止期間として設定する。さらに、前記制御装置は、Ｎ＋１周期目の基準時刻が始点となるように前記調整期間を含む期間を前記送信禁止期間として設定する。
【００４２】
ここで、Ｎ周期目の前記送信開始時刻がＮ周期目の前記基準時刻よりも早い場合、Ｎ周期目の前記送信開始時刻に前記制御周期に相当する時間間隔を付加して算出するＮ＋１周期目の前記基準時刻は、Ｎ＋１周期目の前記送信開始時刻よりも早くなるのが一般的である。
【００４３】
そのため、「Ｎ＋１周期目の前記基準時刻から、前記第２周期データの送信に要する時間に対応する前記基礎期間を遡った時刻」から「Ｎ＋１周期目の前記基準時刻」までの期間のみを、前記送信禁止期間として設定したのでは、十分ではない可能性がある。言い換えれば、望ましい送信禁止期間は、「Ｎ＋１周期目の前記基準時刻から前記基礎期間を遡った時刻」から「Ｎ＋１周期目の前記基準時刻」までの期間よりも、長いと考えられる。
【００４４】
そこで、前記制御装置は、さらに、Ｎ周期目における前記送信開始時刻と前記基準時刻との差を考慮して、Ｎ＋１周期目の前記送信禁止期間を設定する。すなわち、前記制御装置は、前記基礎期間を前記送信禁止期間として設定するのに加えて、「Ｎ周期目における前記送信開始時刻と前記基準時刻との差分期間である前記調整期間」を、前記送信禁止期間として設定する。具体的には、前記制御装置は、「Ｎ＋１周期目の前記基準時刻から前記基礎期間を遡った時刻」から、「Ｎ＋１周期目の前記基準時刻」までの期間を、前記送信禁止期間として設定する。また、前記制御装置は、「Ｎ＋１周期目の前記基準時刻」から、「Ｎ＋１周期目の前記基準時刻から、前記調整期間を含む期間を進んだ時刻」までの期間を、前記送信禁止期間として設定する。
【００４５】
したがって、前記制御装置は、Ｎ周期目における前記送信開始時刻が前記基準時刻よりも早い場合にも、両者の差、および、前記第２周期データのデータ量を考慮した、適切な前記送信禁止期間を設定することができるとの効果を奏する。
【００４６】
本発明の一態様に係る制御装置は、前記送信部が、所定回数の前記制御周期にわたって連続して、前記第２周期データを送信しないと、前記送信禁止期間であっても強制的に、前記送信部に、前記第２周期データの送信を開始させる指示部をさらに備えてもよい。
【００４７】
前記の構成によれば、前記制御装置は、前記第２周期データを所定回数の前記制御周期にわたって連続して送信しないと、前記送信禁止期間であっても強制的に、前記第２周期データの送信を開始する。したがって、前記制御装置は、所定回数の前記制御周期にわたって連続して送信されなかった前記第２周期データを、送信することができるとの効果を奏する。
【００４８】
本発明の一態様に係る制御装置は、前記送信部が、所定回数の前記制御周期にわたって連続して、前記第２周期データを送信しないと、前記送信部が前記所定回数の前記制御周期にわたって連続して前記第２周期データを送信しないことを外部に通知する通知部をさらに備えてもよい。
【００４９】
前記の構成によれば、前記制御装置は、前記第２周期データを所定回数の前記制御周期にわたって連続して送信しないと、前記第２周期データを前記所定回数の前記制御周期にわたって連続して送信していないことを外部に通知する。したがって、前記制御装置は、前記第２周期データを前記所定回数の前記制御周期にわたって連続して送信していないという状況が発生すると、そのような状況が発生していることを、外部に通知することができるとの効果を奏する。
【００５０】
上記の課題を解決するために、本発明の一態様に係る制御方法は、制御周期ごとに第１周期データを出力する制御装置の制御方法であって、前記第１周期データを、前記第１周期データの送信開始時刻と共に取得する取得ステップと、Ｎを０以上の自然数として、Ｎ周期目の制御周期に送信すべき前記第１周期データの送信開始時刻に、前記制御周期に相当する時間間隔を付加して、Ｎ＋１周期目の基準時刻を算出する算出ステップと、Ｎ周期目の制御周期に送信すべき前記第１周期データの送信開始時刻と、Ｎ周期目の基準時刻との差を用いて生成された送信禁止期間を、Ｎ＋１周期目の基準時刻の前および後ろの少なくとも一方に設定する設定ステップと、前記設定ステップにて設定された前記送信禁止期間でない期間に、前記第１周期データより優先度が低い第２周期データの送信を開始する送信ステップと、を含むことを特徴としている。
【００５１】
前記の方法によれば、前記制御方法は、Ｎ周期目の制御周期に送信すべき前記第１周期データの送信開始時刻と、Ｎ周期目の基準時刻との差を考慮して、前記第２周期データの送信開始を禁止する前記送信禁止期間を算出する。そして、前記制御方法は、Ｎ周期目の前記送信開始時刻に前記制御周期に相当する時間間隔を付加して算出した、Ｎ＋１周期目の基準時刻の前および後ろの少なくとも一方に、前記送信禁止期間を設定する。その上で、前記制御方法は、前記送信禁止期間でない期間に、前記第２周期データの送信を開始する。つまり、前記制御方法は、Ｎ周期目における送信開始時刻と基準時刻とが乖離する場合にも、Ｎ周期目における送信開始時刻と基準時刻との差を考慮した前記送信禁止期間を、Ｎ＋１周期目の基準時刻の前および後ろの少なくとも一方に設定する。
【００５２】
したがって、前記制御方法は、Ｎ周期目における送信開始時刻と基準時刻とが乖離する場合にも、両者の差を考慮した適切な前記送信禁止期間を設定し、Ｎ＋１周期目の送信開始時刻に前記第１周期データの送信を開始できるとの効果を奏する。
【発明の効果】
【００５３】
本開示の一態様によれば、周期的に送信すべきデータについて、或る周期の基準時刻と実際の送信開始時刻とが乖離した場合にも、次の周期の予定時刻にデータを送信することができるという効果を奏する。
【図面の簡単な説明】
【００５４】
【図１】本発明の一実施形態に係るＰＬＣのＣＰＵユニットの構成例を示す図である。
【図２】本発明の一実施形態に係るＰＬＣを含む制御システムの概要を示す図である。
【図３】図１のＣＰＵユニット（特に、ＦＰＧＡ）が実行する処理の全体概要を示すフロー図である。
【図４】図３の送信禁止期間算出処理の詳細を説明するフロー図である。
【図５】図３の送信禁止期間設定処理の詳細を説明するフロー図である。
【図６】Ｎ周期目において基準時刻より送信開始時刻が遅い場合に図１のＣＰＵユニット（特に、ＦＰＧＡ）が実行する処理の一例を示す図である。
【図７】Ｎ周期目において基準時刻より送信開始時刻が早い場合に図１のＣＰＵユニット（特に、ＦＰＧＡ）が実行する処理の一例を示す図である。
【図８】同一経路を利用する２つの送信について、従来までの調整方法を説明する図である。
【図９】従来技術について、基準時刻と送信開始時刻とに乖離が発生した場合に発生する問題を説明する図である。
【発明を実施するための形態】
【００５５】
〔実施形態１〕
以下、本発明の一側面に係る実施の形態（以下、「本実施形態」とも表記する）を、図面に基づいて説明し、具体的には、本発明の実施形態１について、図１から図９に基づいて詳細に説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。本実施の形態においては、機械および設備等の制御対象を制御するＰＬＣ（プログラマブル・ロジック・コントローラ、Programmable Logic Controller）１０を、特に、ＰＬＣ１０のＣＰＵユニット１００を、制御装置の典型例として説明を行う。なお、「ＣＰＵ」は「Central Processing Unit」の略である。また、以下の説明において「Ｎ」は、「０以上の自然数」を表わす。
【００５６】
ＰＬＣ１０についての理解を容易にするため、以下では先ず、図８および図９を参照して従来技術の概要を説明し、その後に、ＰＬＣ１０の概要を説明していくこととする。
【００５７】
§１．適用例
（従来技術の概要および課題）
図８において、第１周期データＣＤの送信と第２周期データＮＤの送信とは同一経路を利用し、第１周期データＣＤの送信中は、第２周期データＮＤを送信ができず、第２周期データＮＤの送信中は、第１周期データＣＤを送信ができない。第１周期データＣＤは、第１周期データＣＤを送信すべき時刻である「送信開始時刻Ｓ」と共に第１送信キューＴＸＱ０にバッファリングされ、バッファリングが完了すると送信可能状態となる。同様に、第２周期データＮＤは、第２送信キューＴＸＱ１にバッファリングされ、バッファリングが完了すると送信可能状態となる。第１周期データＣＤは周期的に送信され、Ｎ周期目に送信すべき第１周期データＣＤの送信開始時刻Ｓは「送信開始時刻Ｓ（ｎ）」、Ｎ＋１周期目に送信すべき第１周期データＣＤの送信開始時刻Ｓは「送信開始時刻Ｓ（ｎ＋１）」と表現される。
【００５８】
従来技術は、送信可能状態となった第１周期データＣＤの送信を、送信開始時刻Ｓに開始するため、「第２周期データＮＤの送信に要する時間」第２周期データＮＤのデータ量に基づいて算出される「第２周期データＮＤの送信に要する時間」を利用する。
【００５９】
すなわち、従来技術は先ず、「Ｎ周期目の第１周期データＣＤの送信開始時刻Ｓ（ｎ）」に「送信周期Ｃに相当する時間間隔」を付加して、「Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）」を算出する。そして、従来技術は、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）が終点となるよう、「第２周期データＮＤの送信に要する時間」を、第２周期データＮＤの送信開始を禁止する送信禁止期間Ｂ（図８における「送信禁止期間Ｂ（ｎ＋１）」）として、設定する。
【００６０】
ただし、図９に示すように、第２周期データＮＤのデータ量に基づいて算出される「第２周期データＮＤの送信に要する時間」を送信禁止期間Ｂとして利用する従来技術は、基準時刻Ｔ（ｎ）とＮ周期目の送信開始時刻Ｓ（ｎ）とが乖離した場合に対応できない。すなわち、Ｎ周期目の第１周期データＣＤの基準時刻（＝基準時刻Ｔ（ｎ））と実際の送信開始時刻（＝送信開始時刻Ｓ（ｎ））とが乖離した場合、従来技術は、Ｎ＋１周期目の送信開始時刻Ｓ（ｎ＋１）に第１周期データＣＤの送信を開始できないことがあり得る。
【００６１】
図８および図９を参照して説明したように、第２周期データＮＤのデータ量（データサイズの大きさ）のみから送信禁止期間Ｂを設定する従来技術には、以下の問題がある。すなわち、第２周期データＮＤのデータ量のみから送信禁止期間Ｂを設定すると、定期送信の周期から算出する基準時刻（＝基準時刻Ｔ）と実際の定期送信の送信時刻（＝送信開始時刻Ｓ）とが一致しない場合、定期送信を守れないことがある。つまり、Ｎ＋１回目の送信開始時刻Ｓ（ｎ＋１）とＮ＋１回目の基準時刻Ｔ（ｎ＋１）との誤差が大きい場合、従来技術は適切な送信禁止期間Ｂを設定することができないことがあり得る。その結果、例えばＴＸＱ０の送信よりも先にＴＸＱ１の送信が開始され、送信開始時刻Ｓ（ｎ＋１）に第１周期データＣＤの送信を開始できないことがあり得る。
【００６２】
そこで、ＰＬＣ１０は、第２周期データＮＤのデータ量に基づいて算出される「第２周期データＮＤの送信に要する時間（＝基礎期間Ｂｂ）」に加えて、調整期間Ｂａ(余裕時間)を、送信禁止期間Ｂとして設定する。特に、ＰＬＣ１０は、前回送信の状態（つまり、Ｎ周期目における第１周期データＣＤの送信状態）に合わせて、（Ｎ＋１周期目の）調整期間Ｂａを動的に変更し、調整期間Ｂａの最適化を実行する。以下、図２を用いて、ＰＬＣ１０を含む制御システム１の概要について説明する。
【００６３】
（本実施形態に係るＰＬＣの概要）
図２は、制御システム１の全体概要を示す図である。図１に例示する制御システム１において、１つ以上のＰＬＣ１０と、ＰＬＣ１０により動作が制御される機器とは、フィールドネットワーク２０等の制御系のネットワークに接続されている。図２のＰＬＣ１０には、フィールドネットワーク２０およびＰＬＣシステムバス４００などのネットワークを介して、サーボドライバ３３および３４が接続され、サーボドライバ３３および３４の各々にはさらにサーボモータ４１および４２の各々が接続されている。
【００６４】
ＰＬＣ１０は、生産設備内の入力機器および出力機器の制御等を司る制御装置である。例えば、ＰＬＣ１０は、フィールドネットワーク２０およびＰＬＣシステムバス４００などのネットワークに、第１周期データＣＤおよび第２周期データＮＤを送信し、特に、第１周期データＣＤおよび第２周期データＮＤの送信について、以下の処理を実行する。すなわち、ＰＬＣ１０は、「第２周期データＮＤの送信によって送信開始時刻Ｓに第１周期データＣＤの送信を開始できない」事態が発生するのを回避するため、第２周期データＮＤの送信が禁止される送信禁止期間Ｂを設定する。なお以下では、ＰＬＣ１０は、周期的に（具体的には、制御周期（具体的には、送信周期Ｃ）ごとに）、第１周期データＣＤを送信するものとする。以下、ＰＬＣ１０が制御する、第１周期データＣＤおよび第２周期データＮＤの送受信について、詳細に説明する。
【００６５】
（第１周期データＣＤの送受信）
第１に、ＰＬＣ１０と機器とは、生産設備に対する高速高精度な制御を実行するために、フィールドネットワーク２０を介してサイクリック（つまり、周期的に）に通信を行なって、ＩＮデータおよびＯＵＴデータ（以下、「ＩＯデータ」という）を送受信する。第１周期データＣＤは、例えば、このような「生産設備に対する高速高精度な制御を実行するためのＩＯデータ」であり、「生産設備に対する高速高精度な制御を実行するためのデータ」は「制御データ」とも称される。
【００６６】
ＰＬＣ１０は、ラダーロジック（ラダー言語）によって記述されたラダープログラム（ソースプログラム）などがコンパイルされることにより生成されたユーザプログラムを実行することにより、制御対象に対する高速かつ高精度の制御を実行する。ここで、「ユーザプログラム」は、ユーザの制御対象（例えば、対象のラインおよびプロセス）に応じて作成され、すなわち、制御システム１を用いて制御する制御対象のライン（プロセス）などに応じて、任意に設計されるプログラムである。オブジェクトプログラム形式のユーザプログラムは、ＰＬＣ１０の不揮発性メモリ１０５などに格納される。ユーザプログラムは、ＣＰＵユニット１００のマイクロプロセッサ１０３で実行され、その実行結果が、制御データとして、つまり、第１周期データＣＤとして、ＰＬＣ１０の制御対象へと送信される。
【００６７】
具体的には、制御対象に対する高速かつ高精度の制御のためのユーザプログラムは、高速周期で、マイクロプロセッサ１０３によって繰り返し実行され、ＰＬＣ１０は、その実行結果である第１周期データＣＤを定周期で制御対象へと送信する。ＰＬＣ１０（特に、ＣＰＵユニット１００）は、ＩＯユニット３０１〜３０３および特殊ユニット３０４などの機能ユニットと、サーボドライバ３３および３４、リモートＩＯターミナル３５などのスレーブ装置とに、第１周期データＣＤを定周期で送信する。ここで、生産設備に対する高速かつ高精度の制御のためには、ＰＬＣ１０から各制御機器への命令頻度を高める必要があり、ＰＬＣ１０によるスレーブ装置（フィールド機器）への第１周期データＣＤの送信については、μｓオーダーでの通信が要求される。
【００６８】
（第２周期データＮＤの送受信）
第２に、ＰＬＣ１０（特に、ＣＰＵユニット１００）は、生産設備の高速かつ高精度な制御に加えて、以下の処理を実行する。すなわち、ＰＬＣ１０は、例えば、（１）外部のデータベースとの接続に係る処理、（２）外部の表示装置との接続に係る処理、および（３）制御対象から取得する情報を蓄積し、蓄積した情報を外部のサーバに送信する処理などを実行する。具体的には、ＰＬＣ１０は、第１周期データＣＤ（制御データ）以外のデータの送信および受信（収集）を実行し、例えば、機能ユニット、スレーブ装置、および、各種の外部機器（例えば、外部の情報系サーバ）との間で、第２周期データＮＤを送受信する。
【００６９】
第２周期データＮＤは、例えば、制御システム１の故障診断に使用するセンサ受光信号の減衰値の統計情報などを示す情報系データである。第２周期データＮＤは第１周期データＣＤよりも優先度が低く、詳細は後述するが、第１周期データＣＤの信開始時刻における送信が、第２周期データＮＤの送信によって、妨げられることがないよう、第２周期データＮＤの送信開始が制御される（禁止される）。第２周期データＮＤは、非周期的に、または、「周期的に送信される第１周期データＣＤの送信周期Ｃ（＝制御周期）」以上の時間間隔（周期）で繰り返し、送信される。前述の通り、ＰＬＣ１０において、定周期で送信する第１周期データＣＤについては「μｓ（１００万分の１秒）」オーダーの定時性が求められる。これに対し、第２周期データＮＤの送信について求められる定時性は、例えば、ｍｓ（千分の１秒）のオーダーである。
【００７０】
（制御システムを構成する機器の概要）
ＰＬＣ１０は、制御システム１において、機械および設備などの制御対象を制御する制御装置であり、制御システム１における、フィールドネットワーク２０を介したデータ伝送を管理するマスタ装置である。ＰＬＣ１０は、例えばユーザプログラムとも称される制御プログラムを実行して、制御システム１全体の動作を統括的に制御する。ＰＬＣ１０は、主たる演算処理を実行するＣＰＵユニット１００と、電源ユニット２００と、１つ以上のＩＯ（Input/ Output）ユニット（図２の例では、ＩＯユニット３０１〜３０３）と、特殊ユニット３０４と、を含む。ＩＯユニット３０１〜３０３、および、特殊ユニット３０４は、機能ユニットと呼ばれることもある。ＣＰＵユニット１００と、ＩＯユニット３０１〜３０３の各々と、特殊ユニット３０４とは、ＰＬＣシステムバス４００を介して、互いにデータを遣り取りできるように構成される。
【００７１】
ＣＰＵユニット１００は、制御対象の状態等に係る種々の処理を実行し、例えば、「出力データの送信と、入力データの受信と、入力データを使用して出力データを生成する制御プログラムの実行とを繰り返すことによって制御対象を制御する」処理を実行する。ＣＰＵユニット１００の詳細については、図１を参照して後述する。
【００７２】
電源ユニット２００は、ＣＰＵユニット１００、ＩＯユニット３０１〜３０３、および、特殊ユニット３０４に、適切な電圧の電源を供給する。
【００７３】
ＩＯユニット３０１〜３０３は、各々、一般的な入出力処理に関するユニットであり、オン／オフといったデータ（つまり、２値化されたデータ）の入出力を司る。具体的には、ＩＯユニット３０１〜３０３の各々は、センサなどの入力機器であるデバイス３１が何らかの対象物を検出している状態（オン）、および、何らの対象物も検出していない状態（オフ）のいずれであるかという情報を収集する。また、ＩＯユニット３０１〜３０３の各々は、リレー、アクチュエータといった出力機器であるデバイス３２に対して、活性化するための指令（オン）、および、不活性化するための指令（オフ）のいずれかを出力する。
【００７４】
特殊ユニット３０４は、ＩＯユニット３０１〜３０３が処理するデータとは異なるデータ（例えば、アナログデータ）の入出力、温度制御、特定の通信方式による通信といった、ＩＯユニット３０１〜３０３ではサポートしない機能を有する。
【００７５】
フィールドネットワーク２０は、ＣＰＵユニット１００とフィールド機器（サーボドライバ３３、サーボドライバ３４、および、リモートＩＯターミナル３５等）との間で遣り取りされる各種データを伝送する。フィールドネットワーク２０としては、典型的には、各種の産業用イーサネット（登録商標）を用いることができる。産業用イーサネットとしては、例えば、ＥｔｈｅｒＣＡＴ（登録商標）、Ｐｒｏｆｉｎｅｔ  ＩＲＴ、ＭＥＣＨＡＴＲＯＬＩＮＫ（登録商標）−ＩＩＩ、Ｐｏｗｅｒｌｉｎｋ、ＳＥＲＣＯＳ（登録商標）−ＩＩＩ、ＣＩＰ  Ｍｏｔｉｏｎなどが知られている。なお、フィールドネットワーク２０として、産業用イーサネット以外のフィールドネットワークを用いてもよい。例えば、モーション制御を行わない場合であれば、ＤｅｖｉｃｅＮｅｔ、ＣｏｍｐｏＮｅｔ／ＩＰ（登録商標）などを用いてもよい。
【００７６】
なおＰＬＣ１０は、ＣＰＵユニット１００にＩＯユニット３０１〜３０３の各々の機能およびサーボドライバ３３および３４の機能を持たせることにより、そのような内蔵機能でまかなえる範囲については、ＣＰＵユニット１００が直接制御対象を制御してもよい。
【００７７】
サーボドライバ３３および３４の各々は、フィールドネットワーク２０を介してＣＰＵユニット１００と接続されるとともに、ＣＰＵユニット１００からの指令値に従ってサーボモータ４１および４２の各々を駆動する。なお、図２には、サーボモータ４１および４２の各々とサーボドライバ３３および３４の各々とを組み合わせたシステム例を示したが、その他の構成、たとえば、パルスモータとパルスモータドライバとを組み合わせたシステムを採用することもできる。
【００７８】
リモートＩＯターミナル３５は、基本的には、ＩＯユニット３０１〜３０３と同様に、一般的な入出力処理に関する処理を行う。より具体的には、リモートＩＯターミナル３５は、フィールドネットワーク２０でのデータ伝送に係る処理を行うための通信カプラ３６と、１つ以上のＩＯユニット（図２の例では、ＩＯユニット３７および３８）とを含む。通信カプラ３６と、ＩＯユニット３７および３８の各々とは、リモートＩＯターミナルバス３９を介して、データを互いに遣り取りできるように構成される。
【００７９】
ＰＬＣ１０には、任意の通信ケーブル４０によって、解析用デバイス５０が接続されており、例えば、Ether IP（登録商標）により通信接続されていてもよい。ＰＬＣ１０は、第２周期データＮＤが送信可能状態になってから所定回数の制御周期にわたって連続して第２周期データＮＤを送信していないと、「所定回数の制御周期にわたって連続して第２周期データＮＤを送信していない」旨を解析用デバイス５０に通知する。解析用デバイス５０は、ＰＬＣ１０から、「所定回数の制御周期にわたって連続して第２周期データＮＤを送信していない」旨を通知されると、その旨をユーザに表示する。解析用デバイス５０は、通常のＰＣ（Personal Computer）によって構成され、タッチパネル、ディスプレイなどの入出力デバイスを備える。
【００８０】
（ＣＰＵユニットの概要）
これまで図２を用いてＰＬＣ１０を含む制御システム１の全体概要を説明してきたが、次に、ＰＬＣ１０におけるＣＰＵユニット１００、特にＣＰＵユニット１００の備えるＦＰＧＡ１０１について、その概要を説明しておく。
【００８１】
ＰＬＣ１０は、制御周期（具体的には、送信周期Ｃ）ごとに第１周期データＣＤを出力する制御装置であって、取得部１１０と、算出部１３０と、設定部１６０と、第２送信部１７０（２）（送信部）と、を備えている。取得部１１０は、第１周期データＣＤを、第１周期データＣＤの送信開始時刻Ｓと共に取得する。算出部１３０は、Ｎを０以上の自然数として、Ｎ周期目の制御周期（＝送信周期Ｃ）に送信すべき第１周期データＣＤの送信開始時刻Ｓ（ｎ）に、送信周期Ｃに相当する時間間隔を付加して、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）を算出する。設定部１６０は、Ｎ周期目の制御周期に送信すべき第１周期データＣＤの送信開始時刻Ｓ（ｎ）と、Ｎ周期目の基準時刻Ｔ（ｎ）との差を用いて生成された送信禁止期間Ｂ（具体的には、送信禁止期間Ｂ（ｎ＋１））を、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）の前および後ろの少なくとも一方に設定する。第２送信部１７０（２）は、設定部１６０により設定された送信禁止期間Ｂでない期間に、第１周期データＣＤより優先度が低い第２周期データＮＤの送信を開始する。
【００８２】
前記の構成によれば、ＰＬＣ１０は、Ｎ周期目の制御周期に送信すべき第１周期データＣＤの送信開始時刻Ｓ（ｎ）と、Ｎ周期目の基準時刻Ｔ（ｎ）との差を考慮して、第２周期データＮＤの送信開始を禁止する送信禁止期間Ｂを算出する。そして、ＰＬＣ１０は、Ｎ周期目の送信開始時刻Ｓ（ｎ）に送信周期Ｃに相当する時間間隔を付加して算出した、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）の前および後ろの少なくとも一方に、送信禁止期間Ｂ（ｎ＋１）を設定する。その上で、ＰＬＣ１０は、送信禁止期間Ｂ（ｎ＋１）でない期間に、第２周期データＮＤの送信を開始する。つまり、ＰＬＣ１０は、Ｎ周期目における送信開始時刻Ｓ（ｎ）と基準時刻Ｔ（ｎ）とが乖離する場合にも、Ｎ周期目における送信開始時刻Ｓ（ｎ）と基準時刻Ｔ（ｎ）との差を考慮した送信禁止期間Ｂ（ｎ＋１）を、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）の前および後ろの少なくとも一方に設定する。
【００８３】
したがって、ＰＬＣ１０は、Ｎ周期目における送信開始時刻Ｓ（ｎ）と基準時刻Ｔ（ｎ）とが乖離する場合にも、両者の差を考慮した適切な送信禁止期間Ｂ（ｎ＋１）を設定し、Ｎ＋１周期目の送信開始時刻Ｓ（ｎ＋１）に第１周期データＣＤの送信を開始できるとの効果を奏する。
【００８４】
ＰＬＣ１０は、第１生成部１４０と、第２生成部１５０と、をさらに備えている。第１生成部１４０は、第２周期データＮＤのデータ量から、第２周期データＮＤの送信に要する期間である基礎期間Ｂｂを生成する。第２生成部１５０は、「Ｎ周期目の制御周期に送信すべき第１周期データＣＤの送信開始時刻Ｓ（ｎ）と、Ｎ周期目の基準時刻Ｔ（ｎ）との差（＝差分期間Ｖ（ｎ））」である調整期間Ｂａを生成する。そして、ＰＬＣ１０において、設定部１６０によって設定される送信禁止期間Ｂは、基礎期間Ｂｂと調整期間Ｂａとの合計期間を含んでいる。
【００８５】
前記の構成によれば、ＰＬＣ１０は、「Ｎ周期目の制御周期における送信開始時刻Ｓ（ｎ）と基準時刻Ｔ（ｎ）との差」および「第２周期データＮＤのデータ量」を考慮して、第２周期データＮＤの送信開始が禁止される送信禁止期間Ｂを設定する。
【００８６】
ここで、第２周期データＮＤの送信中は、第１周期データＣＤを送信することはできないため、Ｎ＋１周期目の送信開始時刻Ｓ（ｎ＋１）に第１周期データＣＤの送信を開始するには、理論的には、以下のように、送信禁止期間Ｂ（ｎ＋１）を設定する必要がある。すなわち、「Ｎ＋１周期目の送信開始時刻Ｓ（ｎ＋１）から、第２周期データＮＤの送信に要する時間（＝基礎期間Ｂｂ）を遡った時刻」から「Ｎ＋１周期目の送信開始時刻Ｓ（ｎ＋１）」までの期間を送信禁止期間Ｂとする必要がある。
【００８７】
そして、「第２周期データＮＤの送信に要する時間（＝基礎期間Ｂｂ）」は、第２周期データＮＤのデータ量に比例すると考えられ、すなわち、第２周期データＮＤのデータ量から算出される。そこで、ＰＬＣ１０は、第２周期データＮＤのデータ量から生成した基礎期間Ｂｂを含む期間を、送信禁止期間Ｂとして利用する。
【００８８】
また、「Ｎ＋１周期目の送信開始時刻Ｓ（ｎ＋１）」は、Ｎ＋１周期目の第１周期データＣＤの取得前には把握できないのに対し、「Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）」は、Ｎ＋１周期目の第１周期データＣＤの取得前に把握することができる。すなわち、ＰＬＣ１０は、「Ｎ周期目の送信開始時刻Ｓ（ｎ）」に「制御周期（＝送信周期Ｃ）に相当する時間間隔」を付加して、「Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）」を、Ｎ＋１周期目の第１周期データＣＤの取得前に予め算出する。
【００８９】
さらに、「Ｎ＋１周期目における、送信開始時刻Ｓ（ｎ＋１）と基準時刻Ｔ（ｎ＋１）との差」は、「Ｎ周期目における、送信開始時刻Ｓ（ｎ）と基準時刻Ｔ（ｎ）との差」以下となることが、一般的である。
【００９０】
そこで、ＰＬＣ１０は、「Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）」に対し、「Ｎ周期目における送信開始時刻Ｓ（ｎ）と基準時刻Ｔ（ｎ）との差から生成した調整期間Ｂａ」を含む期間を、送信禁止期間Ｂとして設定する。
【００９１】
したがって、ＰＬＣ１０は、Ｎ周期目における送信開始時刻Ｓ（ｎ）と基準時刻Ｔ（ｎ）とが乖離する場合にも、両者の差、および、第２周期データＮＤのデータ量を考慮した、適切な送信禁止期間Ｂ（ｎ＋１）を設定することができるとの効果を奏する。
【００９２】
ＰＬＣ１０において、Ｎ周期目の制御周期に送信すべき第１周期データＣＤの送信開始時刻Ｓ（ｎ）が、Ｎ周期目の基準時刻Ｔ（ｎ）よりも遅い場合、設定部１６０は、以下のように送信禁止期間Ｂ（ｎ＋１）を設定する。すなわち、設定部１６０は、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）が終点となるように、基礎期間Ｂｂ（ｎ＋１）と調整期間Ｂａ（ｎ＋１）との合計期間を含む期間を、送信禁止期間Ｂ（ｎ＋１）として設定する。
【００９３】
前記の構成によれば、ＰＬＣ１０は、Ｎ周期目の送信開始時刻Ｓ（ｎ）がＮ周期目の基準時刻Ｔ（ｎ）よりも遅い場合、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）が終点となるように、基礎期間Ｂｂ（ｎ＋１）と調整期間Ｂａ（ｎ＋１）との合計期間を含む期間を、送信禁止期間Ｂ（ｎ＋１）として設定する。
【００９４】
ここで、Ｎ周期目の送信開始時刻Ｓ（ｎ）がＮ周期目の基準時刻Ｔ（ｎ）よりも遅い場合、Ｎ周期目の送信開始時刻Ｓ（ｎ）に送信周期Ｃに相当する時間間隔を付加して算出するＮ＋１周期目の基準時刻Ｔ（ｎ＋１）は、Ｎ＋１周期目の送信開始時刻Ｓ（ｎ＋１）よりも遅れるのが一般的である。
【００９５】
そのため、「Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）から、第２周期データＮＤの送信に要する時間に対応する基礎期間Ｂｂ（ｎ＋１）を遡った時刻」から「Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）」までの期間のみを、送信禁止期間Ｂ（ｎ＋１）として設定したのでは、十分ではない可能性がある。言い換えれば、望ましい送信禁止期間Ｂ（ｎ＋１）は、「Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）から基礎期間Ｂｂ（ｎ＋１）を遡った時刻」から「Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）」までの期間よりも、長いと考えられる。
【００９６】
そこで、ＰＬＣ１０は、さらに、Ｎ周期目における送信開始時刻Ｓ（ｎ）と基準時刻Ｔ（ｎ）との差を考慮して、Ｎ＋１周期目の送信禁止期間Ｂ（ｎ＋１）を設定する。すなわち、ＰＬＣ１０は、基礎期間Ｂｂ（ｎ＋１）を送信禁止期間Ｂ（ｎ＋１）として設定するのに加えて、送信開始時刻Ｓ（ｎ）と基準時刻Ｔ（ｎ）との差分期間である差分期間Ｖ（ｎ）を、送信禁止期間Ｂ（ｎ＋１）として設定する。具体的には、ＰＬＣ１０は、「Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）から、基礎期間Ｂｂ（ｎ＋１）と調整期間Ｂａ（ｎ＋１）との合計期間を含む期間を遡った時刻」から「Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）」までの期間を、送信禁止期間Ｂ（ｎ＋１）として設定する。
【００９７】
したがって、ＰＬＣ１０は、Ｎ周期目において送信開始時刻Ｓ（ｎ）が基準時刻Ｔ（ｎ）よりも遅い場合にも、両者の差、および、第２周期データＮＤのデータ量を考慮した、適切な送信禁止期間Ｂ（ｎ＋１）を設定することができるとの効果を奏する。
【００９８】
ＰＬＣ１０において、Ｎ周期目の制御周期に送信すべき第１周期データＣＤの送信開始時刻Ｓ（ｎ）が、Ｎ周期目の基準時刻Ｔ（ｎ）よりも早い場合、設定部１６０は、以下のように送信禁止期間Ｂ（ｎ＋１）を設定する。すなわち、設定部１６０は、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）が終点となるように、基礎期間Ｂｂ（ｎ＋１）を含む期間を、送信禁止期間Ｂ（ｎ＋１）として設定する。また、設定部１６０は、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）が始点となるように、調整期間Ｂａ（ｎ＋１）を含む期間を、送信禁止期間Ｂ（ｎ＋１）として設定する。
【００９９】
前記の構成によれば、ＰＬＣ１０は、Ｎ周期目の送信開始時刻Ｓ（ｎ）がＮ周期目の基準時刻Ｔ（ｎ）よりも早い場合、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）が終点となるように、基礎期間Ｂｂ（ｎ＋１）を含む期間を、送信禁止期間Ｂ（ｎ＋１）として設定する。さらに、ＰＬＣ１０は、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）が始点となるように、調整期間Ｂａ（ｎ＋１）を含む期間を、送信禁止期間Ｂ（ｎ＋１）として設定する。
【０１００】
ここで、Ｎ周期目の送信開始時刻Ｓ（ｎ）がＮ周期目の基準時刻Ｔ（ｎ）よりも早い場合、Ｎ周期目の送信開始時刻Ｓ（ｎ）に送信周期Ｃに相当する時間間隔を付加して算出するＮ＋１周期目の基準時刻Ｔ（ｎ＋１）は、Ｎ＋１周期目の送信開始時刻Ｓ（ｎ＋１）よりも早くなるのが一般的である。
【０１０１】
そのため、「Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）から、第２周期データＮＤの送信に要する時間に対応する基礎期間Ｂｂ（ｎ＋１）を遡った時刻」から「Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）」までの期間のみを、送信禁止期間Ｂ（ｎ＋１）として設定したのでは、十分ではない可能性がある。言い換えれば、望ましい送信禁止期間Ｂ（ｎ＋１）は、「Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）から基礎期間Ｂｂ（ｎ＋１）を遡った時刻」から「Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）」までの期間よりも、長いと考えられる。
【０１０２】
そこで、ＰＬＣ１０は、さらに、Ｎ周期目における送信開始時刻Ｓ（ｎ）と基準時刻Ｔ（ｎ）との差を考慮して、Ｎ＋１周期目の送信禁止期間Ｂ（ｎ＋１）を設定する。すなわち、ＰＬＣ１０は、基礎期間Ｂｂ（ｎ＋１）を送信禁止期間Ｂ（ｎ＋１）として設定するのに加えて、送信開始時刻Ｓ（ｎ）と基準時刻Ｔ（ｎ）との差分期間である差分期間Ｖ（ｎ）を、送信禁止期間Ｂ（ｎ＋１）として設定する。具体的には、ＰＬＣ１０は、「Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）から基礎期間Ｂｂ（ｎ＋１）を遡った時刻」から、「Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）」までの期間を、送信禁止期間Ｂ（ｎ＋１）として設定する。また、ＰＬＣ１０は、「Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）」から、「Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）から、調整期間Ｂａ（ｎ＋１）を含む期間を進んだ時刻」までの期間を、送信禁止期間Ｂ（ｎ＋１）として設定する。
【０１０３】
したがって、ＰＬＣ１０は、Ｎ周期目において送信開始時刻Ｓ（ｎ）が基準時刻Ｔ（ｎ）よりも早い場合にも、両者の差、および、第２周期データＮＤのデータ量を考慮した、適切な送信禁止期間Ｂ（ｎ＋１）を設定することができるとの効果を奏する。
【０１０４】
ＰＬＣ１０は、指示部１８０をさらに備えている。指示部１８０は、「第２送信部１７０（２）が、所定回数の制御周期（＝送信周期Ｃ）にわたって連続して、第２周期データＮＤを送信しない」と、送信禁止期間Ｂであっても強制的に、第２送信部１７０（２）に、第２周期データＮＤの送信を開始させる。
【０１０５】
前記の構成によれば、ＰＬＣ１０は、第２周期データＮＤを所定回数の制御周期にわたって連続して送信しないと、送信禁止期間Ｂであっても強制的に、第２周期データＮＤの送信を開始する。したがって、ＰＬＣ１０は、所定回数の制御周期にわたって連続して送信されなかった第２周期データＮＤを、送信することができるとの効果を奏する。
【０１０６】
ＰＬＣ１０は、通知部１９０をさらに備えている。通知部１９０は、「第２送信部１７０（２）が、所定回数の制御周期にわたって連続して、第２周期データＮＤを送信しない」と、「第２送信部１７０（２）が所定回数の制御周期にわたって連続して第２周期データＮＤを送信しない」ことを外部に通知する。
【０１０７】
前記の構成によれば、ＰＬＣ１０は、第２周期データＮＤを所定回数の制御周期にわたって連続して送信しないと、「第２周期データＮＤを所定回数の制御周期にわたって連続して送信していない」ことを外部に通知する。したがって、ＰＬＣ１０は、「第２周期データＮＤを所定回数の制御周期にわたって連続して送信していない」という状況が発生すると、そのような状況が発生していることを、外部に通知することができるとの効果を奏する。
【０１０８】
以上に概要を説明したＰＬＣ１０について、次に、図１を参照して、ＰＬＣ１０（特に、ＰＬＣ１０のＣＰＵユニット１００）のハードウェア構成例、および、（特に、ＦＰＧＡ１０１が備える）機能ブロックについて説明する。
【０１０９】
§２．構成例
（ＣＰＵユニットのハードウェア構成）
図１は、ＰＬＣ１０のＣＰＵユニット１００の構成例を示す図である。図１に例示する通り、ＣＰＵユニット１００は、ハードウェア構成として、ＦＰＧＡ１０１と、チップセット１０２と、マイクロプロセッサ１０３と、メインメモリ１０４と、不揮発性メモリ１０５と、を含む。ＣＰＵユニット１００は、さらに、不図示のＵＳＢコネクタを含んでもよい。チップセット１０２と他のコンポーネントとの間は、各種のバス（内部バス）を介してそれぞれ結合されている。なお、マイクロプロセッサ１０３とチップセット１０２とは、一体に形成されていてもよい。
【０１１０】
マイクロプロセッサ１０３およびチップセット１０２は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、マイクロプロセッサ１０３は、チップセット１０２から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット１０２は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、マイクロプロセッサ１０３に必要な命令コードを生成する。さらに、チップセット１０２は、マイクロプロセッサ１０３での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
【０１１１】
ＣＰＵユニット１００は、記憶手段として、メインメモリ１０４および不揮発性メモリ１０５を備えている。メインメモリ１０４は、揮発性の記憶領域（ＲＡＭ）であり、ＣＰＵユニット１００へ電源投入後にマイクロプロセッサ１０３で実行されるべき各種プログラムを保持する。また、メインメモリ１０４は、マイクロプロセッサ１０３による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ１０４として、例えば、ＤＲＡＭ（Dynamic Random Access Memory）、ＳＲＡＭ（Static Random Access Memory）等を用いることができる。
【０１１２】
一方、不揮発性メモリ１０５は、各種のプログラムおよびパラメータなどのデータを不揮発的に保持する。これらのデータは、必要に応じて、マイクロプロセッサ１０３がアクセスできるようにメインメモリ１０４にコピーされる。このような不揮発性メモリ１０５は、フラッシュメモリのような半導体メモリを用いることができる。あるいは、ハードディスクドライブのような磁気記録媒体、ＤＶＤ−ＲＡＭ（Digital Versatile Disk Random Access Memory）のような光学記録媒体などを用いることもできる。
【０１１３】
ＦＰＧＡ１０１は、製造後にユーザが回路構成を設定することのできるプログラマブル論理回路であって、例えば出力データの送信および入力データの受信などの通信処理を含む種々の処理を実行する。ＦＰＧＡ１０１は、通信処理として、ＣＰＵユニット１００以外のユニットおよびＰＬＣ１０以外の装置へ出力データの送信と、ＣＰＵユニット１００以外のユニットおよびＰＬＣ１０以外の装置からの入力データの受信とを実行する。さらに、ＦＰＧＡ１０１は、通信処理として、メインメモリ１０４との間でデータの送受信を実行する。ただし、ＦＰＧＡ１０１が実行する処理は通信処理に限られるものではない。
【０１１４】
なお本実施形態において、ＣＰＵユニット１００からＣＰＵユニット１００以外のユニットに出力されるデータ、および、ＰＬＣ１０からＰＬＣ１０以外の装置に出力されるデータを、「出力データ」とも称す。また、ＣＰＵユニット１００以外のユニットからＣＰＵユニット１００に入力されるデータ、および、ＰＬＣ１０以外の装置からＰＬＣ１０に入力されるデータを、「入力データ」とも称す。
【０１１５】
（第１周期データＣＤおよび第２周期データＮＤの送信準備処理の概要）
マイクロプロセッサ１０３は、ＣＰＵユニット１００の外部に送信する第１周期データＣＤ（例えば、制御データ）と第２周期データＮＤ（例えば、制御データ以外のデータ）とを、チップセット１０２を介して、例えばメインメモリ１０４に設定する（言い換えれば、データを格納する）。そして、マイクロプロセッサ１０３は、チップセット１０２を介して、ＦＰＧＡ１０１に、メインメモリ１０４に設定したデータの送信を依頼する。なお、例えばマイクロプロセッサ１０３を複数のコアによって構成し、各コアが、各コアに割り当てられているデータを、チップセット１０２を介して、メインメモリ１０４に格納してもよい。例えば、第１コアが第１周期データＣＤをメインメモリ１０４に格納し、第１周期データＣＤの送信をＦＰＧＡ１０１に依頼し、第２コアが第２周期データＮＤをメインメモリ１０４に格納し、第１周期データＣＤの送信をＦＰＧＡ１０１に依頼してもよい。すなわち、複数のコアの各々が、各々のコアに割り当てられているデータのメインメモリ１０４への格納、および、ＦＰＧＡ１０１への送信依頼を実行してもよい。言い換えれば、第１周期データＣＤのメインメモリ１０４への格納および送信依頼の実行主体と、第２周期データＮＤのメインメモリ１０４への格納および送信依頼の実行主体とは、別の主体（例えば、別のコア）であってもよい。
【０１１６】
ＦＰＧＡ１０１（特に、取得部１１０）は、ＤＭＡ（Dynamic Memory Access）機能にて、メインメモリ１０４に設定されたデータを、ＦＰＧＡ１０１の内部ＲＡＭ１２０（特に、送信キューテーブル１２１の送信キューＴＸＱ）に転送する。具体的には、ＦＰＧＡ１０１は、第１周期データＣＤをメインメモリ１０４から取得し、取得した第１周期データＣＤを第１送信キューＴＸＱ０にバッファリングする。同様に、ＦＰＧＡ１０１は、第２周期データＮＤをメインメモリ１０４から取得し、取得した第２周期データＮＤを第２送信キューＴＸＱ１にバッファリングする。
【０１１７】
ここで、第２周期データＮＤが第２送信キューＴＸＱ１にバッファリングされると、ＦＰＧＡ１０１（特に、第１生成部１４０）は、第２送信キューＴＸＱ１に格納されている第２周期データＮＤの送信データ長から、基礎期間Ｂｂを計算する。
【０１１８】
また、ＦＰＧＡ１０１（特に、第２生成部１５０）は、Ｎ周期目の第１周期データＣＤの送信が開始されると、Ｎ周期目の第１周期データＣＤの送信開始時刻Ｓ（ｎ）を取得し、取得した送信開始時刻Ｓ（ｎ）と、Ｎ周期目の基準時刻Ｔ（ｎ）とを比較する。そして、送信開始時刻Ｓ（ｎ）と基準時刻Ｔ（ｎ）とが一致しない場合、ＦＰＧＡ１０１は、両者の差である差分期間Ｖ（ｎ）を算出する。
【０１１９】
Ｎ周期目の送信開始時刻Ｓ（ｎ）がＮ周期目の基準時刻Ｔ（ｎ）より遅い場合、ＦＰＧＡ１０１（特に、設定部１６０）は、差分期間Ｖ（ｎ）を、Ｎ＋１回目の前側送信禁止期間として設定する。つまり、送信開始時刻Ｓ（ｎ）が基準時刻Ｔ（ｎ）より遅い場合、設定部１６０は、差分期間Ｖ（ｎ）を、基準時刻Ｔ（ｎ＋１）の前に、調整期間Ｂａ（ｎ＋１）として設定する。前側送信禁止期間は、基準時刻Ｔの前に、基礎期間Ｂｂに追加して設定される送信禁止期間Ｂであり、第２周期データＮＤの送信開始が禁止される期間である。
【０１２０】
具体的には、ＦＰＧＡ１０１は、基準時刻Ｔ（ｎ＋１）の前に、「基礎期間Ｂｂに、『送信開始時刻Ｓ（ｎ）が基準時刻Ｔ（ｎ）から遅れた期間（＝差分期間Ｖ（ｎ））』を加えた期間」を、送信禁止期間Ｂ（ｎ＋１）として設定する。つまり、ＦＰＧＡ１０１は、差分期間Ｖ（ｎ）（＝調整期間Ｂａ（ｎ＋１））と基礎期間Ｂｂ（ｎ＋１）との合計期間を含む期間の終点が基準時刻Ｔ（ｎ＋１）となるように、送信禁止期間Ｂ（ｎ＋１）を設定する。
【０１２１】
Ｎ周期目の送信開始時刻Ｓ（ｎ）がＮ周期目の基準時刻Ｔ（ｎ）より早い場合、ＦＰＧＡ１０１（特に、設定部１６０）は、差分期間Ｖ（ｎ）を、Ｎ＋１回目の後側送信禁止期間として設定する。つまり、送信開始時刻Ｓ（ｎ）が基準時刻Ｔ（ｎ）より早い場合、設定部１６０は、差分期間Ｖ（ｎ）を、基準時刻Ｔ（ｎ＋１）の後に、調整期間Ｂａ（ｎ＋１）として設定する。後側送信禁止期間は、基準時刻Ｔの後ろに設定される送信禁止期間Ｂであり、第２周期データＮＤの送信開始が禁止される期間である。
【０１２２】
具体的には、ＦＰＧＡ１０１は、基礎期間Ｂｂを、基準時刻Ｔ（ｎ＋１）の前に、送信禁止期間Ｂ（ｎ＋１）として設定する。また、ＦＰＧＡ１０１は、「送信開始時刻Ｓ（ｎ）がＮ周期目の基準時刻Ｔ（ｎ）より早い期間（＝差分期間Ｖ（ｎ））」を、基準時刻Ｔ（ｎ＋１）の後に、送信禁止期間Ｂ（ｎ＋１）として設定する。つまり、ＦＰＧＡ１０１は、基礎期間Ｂｂ（ｎ＋１）の終点が基準時刻Ｔ（ｎ＋１）となるように、送信禁止期間Ｂ（ｎ＋１）を設定する。また、ＦＰＧＡ１０１は、差分期間Ｖ（ｎ）（＝調整期間Ｂａ（ｎ＋１））の始点が基準時刻Ｔ（ｎ＋１）となるように、送信禁止期間Ｂ（ｎ＋１）を設定する。
【０１２３】
送信可能状態となった第２周期データＮＤについて、ＦＰＧＡ１０１（特に、第２送信部１７０（２））は、第１周期データＣＤの送信中でも、送信禁止期間Ｂ中でもなければ、第２周期データＮＤの送信を開始する。ＦＰＧＡ１０１は、第１周期データＣＤの送信中または送信禁止期間Ｂ中であれば、第２周期データＮＤの送信を開始しない。ＦＰＧＡ１０１は、第１周期データＣＤの送信完了後、例えば、送信禁止期間Ｂを解除し、第２周期データＮＤの送信を開始する。
【０１２４】
（ＦＰＧＡの備える機能ブロック）
ＦＰＧＡ１０１は、機能ブロックとして、取得部１１０、算出部１３０、第１生成部１４０、第２生成部１５０、設定部１６０、送信部１７０、指示部１８０、および、通知部１９０を含んでいる。
【０１２５】
取得部１１０は、第１周期データＣＤと、その第１周期データＣＤの送信開始時刻Ｓとを、チップセット１０２を介して、例えばメインメモリ１０４から取得する。そして、取得部１１０は、取得した第１周期データＣＤおよび送信開始時刻Ｓを、送信キューテーブル１２１の第１送信キューＴＸＱ０に格納し、言い換えれば、第１送信キューＴＸＱ０にセットする。
【０１２６】
ここで、送信開始時刻Ｓは、定周期で送信すべき高優先データである第１周期データＣＤの送信を開始する予定時刻である。送信開始時刻Ｓは、第１周期データＣＤと共に上位システムによってメインメモリ１０４にセットされ、例えば、マイクロプロセッサ１０３によって、チップセット１０２を介して、メインメモリ１０４に第１周期データＣＤと共に格納される。
【０１２７】
また、取得部１１０は、第２周期データＮＤを、チップセット１０２を介して、例えばメインメモリ１０４から取得し、取得した第２周期データＮＤを、送信キューテーブル１２１の第２送信キューＴＸＱ１に格納する。取得部１１０は、メインメモリ１０４から、第２周期データＮＤとその第２周期データＮＤの送信開始時刻とを取得し、取得した第２周期データＮＤとその第２周期データＮＤの送信開始時刻とを、第２送信キューＴＸＱ１に格納してもよい。ただし、以下の説明においては、「送信開始時刻Ｓでの第１周期データＣＤの送信開始を確保する」というＰＬＣ１０についての理解を容易にするため、第２周期データＮＤの送信開始時刻については、特に説明を行なわない。
【０１２８】
算出部１３０は、周期的に送信される第１周期データＣＤの送信周期Ｃに相当する時間間隔を送信開始時刻Ｓに付加した時刻である「基準時刻Ｔ（＝基準時刻）」を算出する。例えば、算出部１３０は、Ｎ周期目の第１周期データＣＤの送信開始時刻Ｓ（ｎ）に、「送信周期Ｃに相当する時間間隔」を付加した時刻を、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）とする。なお、「Ｔ（０）＝Ｓ（０）」とする。算出部１３０は、算出した基準時刻Ｔ（例えば、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１））を、基準時刻テーブル１２２に格納する。
【０１２９】
第１生成部１４０は、第２周期データＮＤが第２送信キューＴＸＱ１にバッファリングされると、第２送信キューＴＸＱ１に格納されている第２周期データＮＤのデータ量（例えば、送信データ長）から、基礎期間Ｂｂを算出する。基礎期間Ｂｂは、例えば「第２周期データＮＤの送信に要する時間」である。第１生成部１４０は、算出した、基礎期間Ｂｂを、設定部１６０に通知する。
【０１３０】
第２生成部１５０は、Ｎ周期目の第１周期データＣＤの送信開始時刻Ｓ（ｎ）を取得し、例えば、第１送信キューＴＸＱ０を参照して、第１送信キューＴＸＱ０に第１周期データＣＤと共にセットされている送信開始時刻Ｓ（ｎ）を取得する。また、第２生成部１５０は、基準時刻テーブル１２２を参照して、Ｎ周期目の基準時刻Ｔ（ｎ）を取得する。
【０１３１】
第２生成部１５０は、Ｎ周期目の第１周期データＣＤの送信開始時刻Ｓ（ｎ）と、Ｎ周期目のＮ周期目の基準時刻Ｔ（ｎ）とを比較し、両者が一致しない場合、両者の差である差分期間Ｖ（ｎ）を算出し、算出した差分期間Ｖ（ｎ）を、設定部１６０に通知する。
【０１３２】
なお、本実施形態においては、原則として、第１周期データＣＤを送信すべき時刻である「送信開始時刻Ｓ」と、第１送信部１７０（１）が第１周期データＣＤの送信を実際に開始した時刻（実際の送信開始時刻）とは、一致するものとする。或る制御周期Ｍにおいて、第１周期データＣＤを送信すべき時刻である「送信開始時刻Ｓ（ｍ）」と第１周期データＣＤの実際の送信開始時刻とが一致しない場合、第２生成部１５０は、以下のように差分期間Ｖ（ｎ）を算出する。すなわち、第２生成部１５０は、「制御周期Ｍにおいて第１周期データＣＤを送信すべき時刻である送信開始時刻Ｓ（ｍ）」と「制御周期Ｍの基準時刻Ｔ（Ｍ）」との差を、差分期間Ｖ（ｎ）として算出してもよい。また、第２生成部１５０は、「制御周期Ｍにおける第１周期データＣＤの実際の送信開始時刻」と「制御周期Ｍの基準時刻Ｔ（Ｍ）」との差を、差分期間Ｖ（ｎ）として算出してもよい。差分期間Ｖ（ｎ）の算出に「第１周期データＣＤの実際の送信開始時刻」を用いる場合、第２生成部１５０は、送信部１７０（特に、第１送信部１７０（１））から、「各制御周期（＝各送信周期）における、第１周期データＣＤの実際の送信開始時刻」を取得してもよい。
【０１３３】
設定部１６０は、基準時刻テーブル１２２を参照して取得した基準時刻Ｔに対して、第１生成部１４０から通知される基礎期間Ｂｂ、および、第２生成部１５０から通知される差分期間Ｖ（ｎ）を用いて、Ｎ＋１周期目の送信禁止期間Ｂ（ｎ＋１）を設定する。
【０１３４】
設定部１６０は、「差分期間Ｖ（ｎ）＝０」であると、基準時刻Ｔ（ｎ）と送信開始時刻Ｓ（ｎ）とが一致していると判定する。そして、設定部１６０は、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）が終点となるよう、基礎期間Ｂｂ（ｎ＋１）を含む期間を、送信禁止期間Ｂ（ｎ＋１）として設定する。例えば、設定部１６０は、「基準時刻Ｔ（ｎ＋１）から基礎期間Ｂｂ（ｎ＋１）を遡った時刻」を始点とし、「基準時刻Ｔ（ｎ＋１）」を終点とする期間を、送信禁止期間Ｂ（ｎ＋１）に設定する。
【０１３５】
設定部１６０は、「差分期間Ｖ（ｎ）＞０」であると、基準時刻Ｔ（ｎ）より送信開始時刻Ｓ（ｎ）が遅いと判定する。そして、設定部１６０は、差分期間Ｖ（ｎ）を、Ｎ＋１回目の前側送信禁止期間（つまり、調整期間Ｂａ（ｎ＋１））として設定する。具体的には、設定部１６０は、差分期間Ｖ（ｎ）（＝調整期間Ｂａ（ｎ＋１））と基礎期間Ｂｂ（ｎ＋１）との合計期間を含む期間の終点が基準時刻Ｔ（ｎ＋１）となるように、送信禁止期間Ｂ（ｎ＋１）を設定する。つまり、設定部１６０は、基準時刻Ｔ（ｎ＋１）の前に、「基礎期間Ｂｂに、『送信開始時刻Ｓ（ｎ）がＮ周期目の基準時刻Ｔ（ｎ）から遅れた期間（＝差分期間Ｖ（ｎ））』を加えた期間」を、送信禁止期間Ｂ（ｎ＋１）として設定する。例えば、設定部１６０は、「基準時刻Ｔ（ｎ＋１）から『差分期間Ｖ（ｎ）（＝調整期間Ｂａ（ｎ＋１））と基礎期間Ｂｂ（ｎ＋１）との合計期間』を遡った時刻」を始点とし、「基準時刻Ｔ（ｎ＋１）」を終点とする期間を、送信禁止期間Ｂ（ｎ＋１）に設定する。
【０１３６】
設定部１６０は、「差分期間Ｖ（ｎ）＜０」であると、基準時刻Ｔ（ｎ）より送信開始時刻Ｓ（ｎ）が早いと判定する。そして、設定部１６０は、差分期間Ｖ（ｎ）を、Ｎ＋１回目の後側送信禁止期間（つまり、調整期間Ｂａ（ｎ＋１））として設定する。具体的には、設定部１６０は、基礎期間Ｂｂ（ｎ＋１）の終点が基準時刻Ｔ（ｎ＋１）となるように、送信禁止期間Ｂ（ｎ＋１）を設定する。また、設定部１６０は、差分期間Ｖ（ｎ）（＝調整期間Ｂａ（ｎ＋１））の始点が基準時刻Ｔ（ｎ＋１）となるように、送信禁止期間Ｂ（ｎ＋１）を設定する。例えば、設定部１６０は、「基準時刻Ｔ（ｎ＋１）から基礎期間Ｂｂ（ｎ＋１）を遡った時刻」を始点とし、「基準時刻Ｔ（ｎ＋１）から調整期間Ｂａ（ｎ＋１）を経過した時刻」を終点とする期間を、送信禁止期間Ｂ（ｎ＋１）に設定する。
【０１３７】
送信部１７０は、データ送信を制御し、例えば、第１送信キューＴＸＱ０にセットされた第１周期データＣＤ、および、第２送信キューＴＸＱ１にセットされた第２周期データＮＤの送信を制御し、第１送信部１７０（１）と第２送信部１７０（２）とを含む。
【０１３８】
第１送信部１７０（１）は、第１周期データＣＤの送信を制御し、具体的には、第１送信キューＴＸＱ０にセットされた第１周期データＣＤの送信を、第１周期データＣＤと共に第１送信キューＴＸＱ０にセットされている送信開始時刻Ｓに、開始する。第１送信部１７０（１）は、第２周期データＮＤの送信中は、第１周期データＣＤを送信することができない。
【０１３９】
第２送信部１７０（２）は、第２周期データＮＤの送信を制御し、具体的には、第２送信キューＴＸＱ１にセットされた第２周期データＮＤの送信を、「第１周期データＣＤの送信中の期間および送信禁止期間Ｂの期間」以外の期間において、開始する。つまり、「第１周期データＣＤの送信中の期間」および「送信禁止期間Ｂの期間」においては、第２送信部１７０（２）は、第２周期データＮＤの送信を開始しない。第２送信部１７０（２）は、送信可能状態にある第２周期データＮＤを所定回数の制御周期にわたって連続して送信できないと、「第２周期データＮＤを所定回数の制御周期にわたって連続して送信できていない」ことを、指示部１８０と通知部１９０とに通知する。言い換えれば、第２送信部１７０（２）は、第２周期データＮＤが第２送信キューＴＸＱ１にセットされてから所定回数の制御周期にわたって連続して送信できないと、その状況を指示部１８０と通知部１９０とに通知する。
【０１４０】
指示部１８０は、第２送信部１７０（２）に、送信禁止期間Ｂ中であっても、第２周期データＮＤの送信を開始するように指示し、つまり、第２周期データＮＤの強制送信を指示する。指示部１８０は、第２送信部１７０（２）から「第２周期データＮＤが送信可能状態になってから所定回数の制御周期にわたって連続して第２周期データＮＤを送信していない」ことを通知されると、自動的に、第２送信部１７０（２）に強制送信を指示してもよい。また、指示部１８０は、ユーザから第２周期データＮＤの強制送信を指示されると、第２送信部１７０（２）に、強制送信を指示してもよい。指示部１８０からこの指示を受けた第２送信部１７０（２）は、送信禁止期間Ｂ中であっても、第２送信キューＴＸＱ１にセットされた第２周期データＮＤの送信を開始する。
【０１４１】
通知部１９０は、第２送信部１７０（２）から「第２周期データＮＤが送信可能状態になってから所定回数の制御周期にわたって連続して第２周期データＮＤを送信していない」ことを通知されると、以下の処理の実行を指示する。すなわち、通知部１９０は、「所定回数の制御周期にわたって連続して、第２周期データＮＤが送信されていない」旨を、例えばマイクロプロセッサ１０３等を介して、解析用デバイス５０に通知して、その旨を解析用デバイス５０に表示させる。
【０１４２】
（ＦＰＧＡの備える記憶部）
図１に例示するＦＰＧＡ１０１は、内部ＲＡＭ１２０を備えている。内部ＲＡＭ１２０は、ＦＰＧＡ１０１が使用する各種データを格納する記憶装置である。内部ＲＡＭ１２０は、ＦＰＧＡ１０１が実行する各種処理の制御プログラム、および、その制御プログラムを実行するときに読み出す各種データを非一時的に記憶している。内部ＲＡＭ１２０はさらに、送信キューテーブル１２１、基準時刻テーブル１２２、および、設定情報１２３を格納している。
【０１４３】
送信キューテーブル１２１は、複数の送信キューＴＸＱ０、ＴＸＱ１、・・・、ＴＸＱｎを含んでいる。なお、以下の説明において、複数の送信キューＴＸＱ０、ＴＸＱ１、・・・、ＴＸＱｎの各々を区別する必要が無い場合、単に「送信キューＴＸＱ」と称する。送信キューＴＸＱには上位システムからの送信データがバッファリングされ、例えば、マイクロプロセッサ１０３によって、チップセット１０２を介して、メインメモリ１０４にセットされた送信データは、取得部１１０によって送信キューＴＸＱにセットされる。
【０１４４】
例えば、第１送信キューＴＸＱ０には、第１周期データＣＤと、その第１周期データＣＤの送信開始時刻Ｓとが、バッファリングされる（言い換えれば、第１周期データＣＤと、送信開始時刻Ｓとが、セットされる）。同様に、第２送信キューＴＸＱ１には、第２周期データＮＤがバッファリングされる（つまり、セットされる）。
【０１４５】
送信キューＴＸＱへの送信データのセットが完了すると、送信データは、フィールドネットワーク２０およびＰＬＣシステムバス４００などの、実際のネットワーク回線への送信を開始できる状態になる。送信キューＴＸＱは、例えば、ＦＩＦＯ（first in, first out、先入れ先出し）方式を採用している。
【０１４６】
なお、内部ＲＡＭ１２０には、ＣＰＵユニット１００の外部から受信するデータが格納される、不図示の受信キューテーブルがさらに格納されていてもよい。受信キューテーブルは、複数の受信キューＲＸＱ０、ＲＸＱ１、・・・、ＲＸＱｎを含み、ＲＸＱ０、ＲＸＱ１、・・・、ＲＸＱｎの各々は、ＦＩＦＯ方式を採用していてもよい。
【０１４７】
基準時刻テーブル１２２には、算出部１３０により算出される基準時刻Ｔが格納される。基準時刻Ｔは、送信開始時刻Ｓの代わりに、送信禁止期間Ｂを設定するための基準として算出され、具体的には、算出部１３０によって算出される（＝生成される）。
算出部１３０は、例えば「Ｔ（０）＝Ｓ（０）」として、「或る制御周期における送信開始時刻Ｓ」に「第１周期データＣＤの送信周期Ｃに相当する時間間隔」を付加した時刻を、「次の制御周期における基準時刻Ｔ」として算出する。そして、算出部１３０は、算出した「次の制御周期における基準時刻Ｔ」を基準時刻テーブル１２２に格納する。
【０１４８】
設定情報１２３には、送信周期Ｃを含む、制御システム１の動作等に関係する、各種の設定情報が格納されている。送信周期Ｃは、「制御周期」とも称され、定周期で送信する高優先データである第１周期データＣＤの送信時間間隔である。ＦＰＧＡ１０１は、送信周期Ｃを以下の２つの方法のいずれかによって取得する。すなわち、ＦＰＧＡ１０１は、上位システムから（具体的には、チップセット１０２を介して、マイクロプロセッサ１０３から）通知される時間間隔を、送信周期Ｃとして、設定情報１２３に格納してもよい。また、ＦＰＧＡ１０１は、所定回数の制御周期分（例えば、Ｎ周期分）の、第１周期データＣＤの送信開始時刻Ｓの間の平均時間間隔を算出し、算出した平均時間間隔を、送信周期Ｃとして、設定情報１２３に格納してもよい。
【０１４９】
これまでに概要を説明してきたＣＰＵユニット１００（特に、ＦＰＧＡ１０１）について、次に、図３等を用いて、ＣＰＵユニット１００（特に、ＦＰＧＡ１０１）の実行する処理について、その概要を説明していく。
【０１５０】
§３．動作例
（ＰＬＣ１０が実行する処理の全体概要）
図３は、ＣＰＵユニット１００（特に、ＦＰＧＡ１０１）が実行する処理の全体概要を示すフロー図である。図３に例示するように、算出部１３０は、Ｎ周期目の送信開始時刻Ｓ（ｎ）を取得し（Ｓ１００）、取得した送信開始時刻Ｓ（ｎ）に送信周期Ｃに相当する時間を付加して、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）を算出する（Ｓ２００）。算出部１３０は、算出した基準時刻Ｔ（ｎ＋１）を基準時刻テーブル１２２に格納する。
【０１５１】
第１生成部１４０および第２生成部１５０は、送信禁止期間算出処理を実行する（Ｓ３００）。送信禁止期間算出処理の詳細については、図４を用いて後述する。また、設定部１６０は、送信禁止期間設定処理を実行する（Ｓ４００）。送信禁止期間設定処理の詳細については、図５を用いて後述する。
【０１５２】
第２送信部１７０（２）は、第２送信キューＴＸＱ１に第２周期データＮＤが格納されているかを確認する（Ｓ５００）。第２送信キューＴＸＱ１に第２周期データＮＤが格納されていないことが確認されると（Ｓ５００でＮｏ）、つまり、送信可能状態にある第２周期データＮＤがないことが確認されると、設定部１６０は処理を終了し、つまり、送信禁止期間Ｂは設定されない。送信可能状態にある第２周期データＮＤはないため、第２送信部１７０（２）は、第２周期データＮＤの送信を開始しない。また、第１送信部１７０（１）は、第１送信キューＴＸＱ０にセットされた第１周期データＣＤの送信を、第１周期データＣＤと共に第１送信キューＴＸＱ０にセットされている送信開始時刻Ｓに、開始する。
【０１５３】
第２送信キューＴＸＱ１に第２周期データＮＤが格納されていることが確認されると（Ｓ５００でＹｅｓ）、第２送信部１７０（２）は、送信禁止期間Ｂ中であるかを確認する（Ｓ６００）。第２送信部１７０（２）は、送信禁止期間Ｂ中であることを確認すると（Ｓ６００でＹｅｓ）、第１周期データＣＤの送信が完了した後、送信禁止期間Ｂ以外の期間に、第２周期データＮＤの送信を開始する（Ｓ７００）。第２送信部１７０（２）は、送信禁止期間Ｂ中でないことを確認すると（Ｓ６００でＮｏ）、第２周期データＮＤの送信を開始する（Ｓ８００）。
【０１５４】
図３に例示した処理フローは、以下のように整理することができる。すなわち、ＰＬＣ１０（特に、ＦＰＧＡ１０１）が実行する制御方法は、制御周期（具体的には、送信周期Ｃ）ごとに第１周期データＣＤを出力する制御装置の制御方法であって、第１周期データＣＤを、第１周期データＣＤの送信開始時刻Ｓと共に取得する取得ステップ（Ｓ１００）と、Ｎを０以上の自然数として、Ｎ周期目の制御周期（＝送信周期Ｃ）に送信すべき第１周期データＣＤの送信開始時刻Ｓ（ｎ）に、送信周期Ｃに相当する時間間隔を付加して、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）を算出する算出ステップ（Ｓ２００）と、Ｎ周期目の制御周期に送信すべき第１周期データＣＤの送信開始時刻Ｓ（ｎ）と、Ｎ周期目の基準時刻Ｔ（ｎ）との差を用いて生成された送信禁止期間Ｂ（ｎ＋１）を、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）の前および後ろの少なくとも一方に設定する設定ステップ（Ｓ４００）と、設定ステップにて設定された送信禁止期間Ｂ（ｎ＋１）でない期間に、第１周期データＣＤより優先度が低い第２周期データＮＤの送信を開始する送信ステップ（Ｓ７００）と、を含んでいる。
【０１５５】
前記の方法によれば、前記制御方法は、Ｎ周期目の制御周期に送信すべき第１周期データＣＤの送信開始時刻Ｓ（ｎ）と、Ｎ周期目の基準時刻Ｔ（ｎ）との差を考慮して、第２周期データＮＤの送信開始を禁止する送信禁止期間Ｂ（ｎ＋１）を算出する。そして、前記制御方法は、Ｎ周期目の送信開始時刻Ｓ（ｎ）に送信周期Ｃに相当する時間間隔を付加して算出した、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）の前および後ろの少なくとも一方に、送信禁止期間Ｂ（ｎ＋１）を設定する。その上で、前記制御方法は、送信禁止期間Ｂ（ｎ＋１）でない期間に、第２周期データＮＤの送信を開始する。つまり、前記制御方法は、Ｎ周期目における送信開始時刻Ｓ（ｎ）と基準時刻Ｔ（ｎ）とが乖離する場合にも、Ｎ周期目における送信開始時刻Ｓと基準時刻Ｔ（ｎ）との差を考慮した送信禁止期間Ｂ（ｎ＋１）を、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）の前および後ろの少なくとも一方に設定する。
【０１５６】
したがって、前記制御方法は、Ｎ周期目における送信開始時刻Ｓ（ｎ）と基準時刻Ｔ（ｎ）とが乖離する場合にも、両者の差を考慮した適切な送信禁止期間Ｂ（ｎ＋１）を設定し、Ｎ＋１周期目の送信開始時刻Ｓ（ｎ＋１）に第１周期データＣＤの送信を開始できるとの効果を奏する。
【０１５７】
（送信禁止期間算出処理の詳細）
図４は、図３の送信禁止期間算出処理の詳細を説明するフロー図である。図４に例示するように、先ず第２生成部１５０は、Ｎ周期目の第１周期データＣＤの送信開始時刻Ｓ（ｎ）を取得する（Ｓ３１０）。第２生成部１５０は、第１送信キューＴＸＱ０を参照して、第１送信キューＴＸＱ０に第１周期データＣＤと共にセットされている送信開始時刻Ｓ（ｎ）を取得してもよい。また、第２生成部１５０は、送信部１７０（特に、第１送信部１７０（１））から、「第１周期データＣＤの実際の送信開始時刻」を、送信開始時刻Ｓ（ｎ）として、取得てもよい。
【０１５８】
また、第２生成部１５０は、基準時刻テーブル１２２を参照して、Ｎ周期目の基準時刻Ｔ（ｎ）を取得する（Ｓ３２０）。第２生成部１５０は、取得した送信開始時刻Ｓ（ｎ）と基準時刻Ｔ（ｎ）とを比較し、Ｎ周期目の送信開始時刻Ｓ（ｎ）とＮ周期目の基準時刻Ｔ（ｎ）との差（＝差分期間Ｖ（ｎ））を算出する（Ｓ３３０）。第２生成部１５０は、例えば、「差分期間Ｖ（ｎ）＝送信開始時刻Ｓ（ｎ）−基準時刻Ｔ（ｎ）」として、差分期間Ｖ（ｎ）を算出する。第２生成部１５０は、算出した差分期間Ｖ（ｎ）を、設定部１６０に通知する。
【０１５９】
第１生成部１４０は、第２送信キューＴＸＱ１にセットされた第２周期データＮＤのデータ量を測定し（Ｓ３４０）、第２周期データＮＤの送信に要する期間（＝基礎期間Ｂｂ（ｎ＋１））を算出する（Ｓ３５０）。第１生成部１４０は、算出した基礎期間Ｂｂ（ｎ＋１）を、設定部１６０に通知する。
【０１６０】
（送信禁止期間設定処理の詳細）
図５は、図３の送信禁止期間設定処理の詳細を説明するフロー図である。図５に例示するように、設定部１６０は、Ｎ周期目の基準時刻Ｔ（ｎ）とＮ周期目の送信開始時刻Ｓ（ｎ）とが一致しているかを確認する（Ｓ４１０）。設定部１６０は、例えば、第２生成部１５０から通知された差分期間Ｖ（ｎ）について、「差分期間Ｖ（ｎ）＝０」であると、基準時刻Ｔ（ｎ）と送信開始時刻Ｓ（ｎ）とが一致していると判定し、差分期間Ｖ（ｎ）が０でないと、両者が一致しないと判定する。
【０１６１】
基準時刻Ｔ（ｎ）と送信開始時刻Ｓ（ｎ）とが一致した（つまり、差分期間Ｖ（ｎ）が０である）ことを確認すると（Ｓ４１０でＹｅｓ）、設定部１６０は、以下のように送信禁止期間Ｂ（ｎ＋１）を設定する。すなわち、設定部１６０は、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）が終点となるよう、基礎期間Ｂｂ（ｎ＋１）を含む期間を、送信禁止期間Ｂ（ｎ＋１）として設定する（Ｓ４２０）。例えば、設定部１６０は、「基準時刻Ｔ（ｎ＋１）から基礎期間Ｂｂ（ｎ＋１）を遡った時刻」を始点とし、「基準時刻Ｔ（ｎ＋１）」を終点とする期間を、送信禁止期間Ｂ（ｎ＋１）として設定する。
【０１６２】
基準時刻Ｔ（ｎ）と送信開始時刻Ｓ（ｎ）とが一致しない（つまり、差分期間Ｖ（ｎ）が０でない）ことを確認すると（Ｓ４１０でＮｏ）、設定部１６０は、Ｎ周期目の基準時刻Ｔ（ｎ）よりＮ周期目の送信開始時刻Ｓ（ｎ）が遅いかを判定する（Ｓ４３０）。設定部１６０は、「差分期間Ｖ（ｎ）＝送信開始時刻Ｓ（ｎ）−基準時刻Ｔ（ｎ）＞０」であると、Ｎ周期目の基準時刻Ｔ（ｎ）よりＮ周期目の送信開始時刻Ｓ（ｎ）が遅いと判定してもよい。また、設定部１６０は、「差分期間Ｖ（ｎ）＜０」であると、Ｎ周期目の基準時刻Ｔ（ｎ）よりＮ周期目の送信開始時刻Ｓ（ｎ）が早いと判定してもよい。
【０１６３】
基準時刻Ｔ（ｎ）より送信開始時刻Ｓ（ｎ）が遅いこと（つまり、「差分期間Ｖ（ｎ）＞０」）を確認すると（Ｓ４３０でＹｅｓ）、設定部１６０は、以下のように送信禁止期間Ｂ（ｎ＋１）を設定する。すなわち、設定部１６０は、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）が終点となるよう、基礎期間Ｂｂ（ｎ＋１）と調整期間Ｂａ（ｎ＋１）（＝差分期間Ｖ（ｎ））との合計を含む期間を、送信禁止期間Ｂ（ｎ＋１）として設定する（Ｓ４４０）。例えば、設定部１６０は、「基準時刻Ｔ（ｎ＋１）から、基礎期間Ｂｂ（ｎ＋１）と調整期間Ｂａ（ｎ＋１）との合計期間を遡った時刻」を始点とし、「基準時刻Ｔ（ｎ＋１）」を終点とする期間を、送信禁止期間Ｂ（ｎ＋１）として設定する。
【０１６４】
基準時刻Ｔ（ｎ）より送信開始時刻Ｓ（ｎ）が早いこと（つまり、「差分期間Ｖ（ｎ）＜０」）を確認すると（Ｓ４３０でＮｏ）、設定部１６０は、以下のように送信禁止期間Ｂ（ｎ＋１）を設定する。すなわち、設定部１６０は、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）が終点となるよう、基礎期間Ｂｂ（ｎ＋１）を含む期間を、送信禁止期間Ｂに設定する（Ｓ４５０）。例えば、設定部１６０は、「基準時刻Ｔ（ｎ＋１）から基礎期間Ｂｂ（ｎ＋１）を遡った時刻」を始点とし、「基準時刻Ｔ（ｎ＋１）」を終点とする期間を、送信禁止期間Ｂ（ｎ＋１）として設定する。
【０１６５】
さらに、設定部１６０は、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）が始点となるよう、調整期間Ｂａ（ｎ＋１）（＝差分期間Ｖ（ｎ））を含む期間を、送信禁止期間Ｂ（ｎ＋１）として設定する（Ｓ４６０）。例えば、設定部１６０は、「基準時刻Ｔ（ｎ＋１）」を始点とし、「基準時刻Ｔ（ｎ＋１）から調整期間Ｂａ（ｎ＋１）を経過した時刻」を終点とする期間を、送信禁止期間Ｂ（ｎ＋１）として設定する。
【０１６６】
Ｓ４５０およびＳ４６０によって、「基準時刻Ｔ（ｎ＋１）から基礎期間Ｂｂ（ｎ＋１）を遡った時刻」を始点とし、「基準時刻Ｔ（ｎ＋１）から調整期間Ｂａ（ｎ＋１）を経過した時刻」を終点とする期間が、送信禁止期間Ｂ（ｎ＋１）として設定される。
【０１６７】
図３から図５を用いて説明してきたように、ＰＬＣ１０は、Ｎ周期目における第１周期データＣＤの送信状態に合わせて、Ｎ＋１周期目に設定する送信禁止期間Ｂ（ｎ＋１）の長さを動的に変更し、最適な長さの送信禁止期間Ｂ（ｎ＋１）を設定する。以下、図６および図７を用いて、ＰＬＣ１０が実行する具体的な処理例を説明する。
【０１６８】
（処理例１  Ｎ周期目において、基準時刻Ｔより送信開始時刻Ｓが遅い場合）
図６は、Ｎ周期目において、基準時刻Ｔ（ｎ）より送信開始時刻Ｓ（ｎ）が遅い場合にＰＬＣ１０（特に、ＦＰＧＡ１０１）が実行する処理の一例を、従来までの調整方法と対比して説明する図である。
【０１６９】
すなわち、図６の（Ａ）は、図９の（Ａ）と同様であり、つまり、Ｎ周期目の送信開始時刻Ｓ（ｎ）が、Ｎ周期目の基準時刻Ｔ（ｎ）よりも遅れた場合について、従来技術において発生する問題が示されている。図６の（Ａ）に示すように、Ｎ周期目の送信開始時刻Ｓ（ｎ）が、Ｎ周期目の基準時刻Ｔ（ｎ）よりも遅れた場合、送信開始時刻Ｓ（ｎ）に「送信周期Ｃに相当する時間間隔」を付加した時刻である基準時刻Ｔ（ｎ＋１）は、以下の傾向を示す。すなわち、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）は、Ｎ＋１周期目の送信開始時刻Ｓ（ｎ＋１）よりも遅れる傾向がある。ここで、従来技術は、「第２周期データＮＤの送信に要する時間」を、基準時刻Ｔ（ｎ＋１）の前に、送信禁止期間Ｂとして設定する。つまり、従来技術は、送信開始時刻Ｓ（ｎ＋１）よりも遅れた時刻を基準時刻Ｔ（ｎ＋１）として、その基準時刻Ｔ（ｎ＋１）の前に、「第２周期データＮＤの送信に要する時間」である送信禁止期間Ｂを設定する。
【０１７０】
前述の通り、「送信開始時刻Ｓ（ｎ＋１）から第２周期データＮＤの送信に要する時間を遡った時刻」から「送信開始時刻Ｓ（ｎ＋１）」までの期間を送信禁止期間Ｂとすることで、送信開始時刻Ｓ（ｎ＋１）に第１周期データＣＤの送信を開始することができる。しかしながら、図６の（Ａ）においては、送信開始時刻Ｓ（ｎ＋１）よりも遅れた基準時刻Ｔ（ｎ＋１）の前に、「第２周期データＮＤの送信に要する時間」である送信禁止期間Ｂが設定されている。つまり、従来技術が基準時刻Ｔ（ｎ＋１）の前に設定する送信禁止期間Ｂは、「送信開始時刻Ｓ（ｎ＋１）から第２周期データＮＤの送信に要する時間を遡った時刻」から「送信開始時刻Ｓ（ｎ＋１）」までの期間よりも、遅れている。
【０１７１】
その結果、第２周期データＮＤが送信可能状態となった時点は、「第１周期データＣＤの送信中の期間」にも「送信禁止期間Ｂの期間」にも含まれておらず、第２周期データＮＤは、送信可能状態となった直後に、送信が開始されている。図６の（Ａ）において、第２周期データＮＤの送信が完了する時刻は送信開始時刻Ｓ（ｎ＋１）より遅く、第２周期データＮＤの送信中は第１周期データＣＤを送信できないため、送信開始時刻Ｓ（ｎ＋１）に第１周期データＣＤの送信を開始することができない。
【０１７２】
図６の（Ｂ）は、送信開始時刻Ｓ（ｎ）が基準時刻Ｔ（ｎ）よりも遅れた場合に、ＰＬＣ１０が設定する送信禁止期間Ｂ（ｎ＋１）について説明する図である。Ｎ周期目の送信開始時刻Ｓ（ｎ）がＮ周期目の基準時刻Ｔ（ｎ）より遅い場合、ＦＰＧＡ１０１（特に、設定部１６０）は、送信開始時刻Ｓ（ｎ）と基準時刻Ｔ（ｎ）との差分期間である差分期間Ｖ（ｎ）を、Ｎ＋１回目の前側送信禁止期間として設定する。すなわち、設定部１６０は、差分期間Ｖ（ｎ）（＝調整期間Ｂａ（ｎ＋１））と基礎期間Ｂｂ（ｎ＋１）との合計期間を含む期間の終点が基準時刻Ｔ（ｎ＋１）となるように、送信禁止期間Ｂ（ｎ＋１）を設定する。
【０１７３】
終点が基準時刻Ｔ（ｎ＋１）となるように、調整期間Ｂａ（ｎ＋１）と基礎期間Ｂｂ（ｎ＋１）との合計期間を含む送信禁止期間Ｂ（ｎ＋１）が設定されることにより、図６の（Ｂ）では第２周期データＮＤの送信が適切に禁止されている。すなわち、図６の（Ｂ）では、図６の（Ａ）の送信禁止期間Ｂ（ｎ＋１）よりも調整期間Ｂａ（ｎ＋１）分だけ長い送信禁止期間Ｂ（ｎ＋１）が設定されている。
【０１７４】
図６の（Ａ）では、「適切な送信禁止期間Ｂ（ｎ＋１）によって第２周期データＮＤの送信開始を禁止する」のに失敗しているため、第２周期データＮＤの送信によって、第１周期データＣＤの送信開始が、送信開始時刻Ｓ（ｎ＋１）よりも遅れている。これに対して、図６の（Ａ）では、「適切な送信禁止期間Ｂ（ｎ＋１）によって第２周期データＮＤの送信開始を禁止する」ことができており、第１周期データＣＤの送信は、送信開始時刻Ｓ（ｎ＋１）に開始されている。
【０１７５】
（処理例２  Ｎ周期目において、基準時刻Ｔより送信開始時刻Ｓが早い場合）
図７は、Ｎ周期目において、基準時刻Ｔ（ｎ）より送信開始時刻Ｓ（ｎ）が早い場合にＰＬＣ１０（特に、ＦＰＧＡ１０１）が実行する処理の一例を、従来までの調整方法と対比して説明する図である。
【０１７６】
すなわち、図７の（Ａ）は、図９の（Ｂ）と同様であり、つまり、Ｎ周期目の送信開始時刻Ｓ（ｎ）が、Ｎ周期目の基準時刻Ｔ（ｎ）よりも早い場合について、従来技術において発生する問題を説明する図である。図７の（Ａ）に示すように、Ｎ周期目の送信開始時刻Ｓ（ｎ）が、Ｎ周期目の基準時刻Ｔ（ｎ）よりも早い場合、送信開始時刻Ｓ（ｎ）に「送信周期Ｃに相当する時間間隔」を付加した時刻である基準時刻Ｔ（ｎ＋１）は、以下の傾向を示す。すなわち、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）は、Ｎ＋１周期目の送信開始時刻Ｓ（ｎ＋１）よりも早くなる傾向がある。ここで、従来技術は、「第２周期データＮＤの送信に要する時間」を、基準時刻Ｔ（ｎ＋１）の前に、送信禁止期間Ｂとして設定する。つまり、従来技術は、送信開始時刻Ｓ（ｎ＋１）よりも早い時刻を基準時刻Ｔ（ｎ＋１）として、その基準時刻Ｔ（ｎ＋１）の前に、「第２周期データＮＤの送信に要する時間」である送信禁止期間Ｂを設定する。
【０１７７】
前述の通り、「送信開始時刻Ｓ（ｎ＋１）から第２周期データＮＤの送信に要する時間を遡った時刻」から「送信開始時刻Ｓ（ｎ＋１）」までの期間を送信禁止期間Ｂとすることで、送信開始時刻Ｓ（ｎ＋１）に第１周期データＣＤの送信を開始することができる。しかしながら、図７の（Ａ）においては、送信開始時刻Ｓ（ｎ＋１）よりも早い基準時刻Ｔ（ｎ＋１）の前に、「第２周期データＮＤの送信に要する時間」である送信禁止期間Ｂが設定されている。つまり、従来技術が基準時刻Ｔ（ｎ＋１）の前に設定する送信禁止期間Ｂは、「送信開始時刻Ｓ（ｎ＋１）から第２周期データＮＤの送信に要する時間を遡った時刻」から「送信開始時刻Ｓ（ｎ＋１）」までの期間よりも、早い。
【０１７８】
その結果、第２周期データＮＤが送信可能状態となった時点は、「第１周期データＣＤの送信中の期間」にも「送信禁止期間Ｂの期間」にも含まれておらず、第２周期データＮＤは、送信可能状態となった直後に、送信が開始されている。図７の（Ａ）において、第２周期データＮＤの送信が完了する時刻は送信開始時刻Ｓ（ｎ＋１）より遅く、第２周期データＮＤの送信中は第１周期データＣＤを送信できないため、送信開始時刻Ｓ（ｎ＋１）に第１周期データＣＤの送信を開始することができない。
【０１７９】
図７の（Ｂ）は、送信開始時刻Ｓ（ｎ）が基準時刻Ｔ（ｎ）よりも早い場合に、ＰＬＣ１０が設定する送信禁止期間Ｂ（ｎ＋１）について説明する図である。Ｎ周期目の送信開始時刻Ｓ（ｎ）がＮ周期目の基準時刻Ｔ（ｎ）より早い場合、ＦＰＧＡ１０１（特に、設定部１６０）は、送信開始時刻Ｓ（ｎ）と基準時刻Ｔ（ｎ）との差分期間である差分期間Ｖ（ｎ）を、Ｎ＋１回目の後側送信禁止期間として設定する。すなわち、設定部１６０は、差分期間Ｖ（ｎ）（＝調整期間Ｂａ（ｎ＋１））を、基準時刻Ｔ（ｎ＋１）の後に、差分期間Ｖ（ｎ）の始点が基準時刻Ｔ（ｎ＋１）となるように、送信禁止期間Ｂ（ｎ＋１）として設定する。具体的には、設定部１６０は、「基準時刻Ｔ（ｎ＋１）」から「基準時刻Ｔ（ｎ＋１）から差分期間Ｖ（ｎ）（＝調整期間Ｂａ（ｎ＋１））を経過した時刻」までを、送信禁止期間Ｂ（ｎ＋１）として設定する。
【０１８０】
また、設定部１６０は、基礎期間Ｂｂ（ｎ＋１）の終点が基準時刻Ｔ（ｎ＋１）となるように、基礎期間Ｂｂ（ｎ＋１）を、送信禁止期間Ｂ（ｎ＋１）として設定する。具体的には、設定部１６０は、「基準時刻Ｔ（ｎ＋１）から基礎期間Ｂｂ（ｎ＋１）を遡った時刻」から「基準時刻Ｔ（ｎ＋１）」までを、送信禁止期間Ｂ（ｎ＋１）として設定する。
【０１８１】
したがって、設定部１６０は、「基準時刻Ｔ（ｎ＋１）から基礎期間Ｂｂ（ｎ＋１）を遡った時刻」から、「基準時刻Ｔ（ｎ＋１）から調整期間Ｂａ（ｎ＋１）を経過した時刻」までを、送信禁止期間Ｂ（ｎ＋１）として設定する。
【０１８２】
「基準時刻Ｔ（ｎ＋１）から基礎期間Ｂｂ（ｎ＋１）を遡った時刻」から、「基準時刻Ｔ（ｎ＋１）から調整期間Ｂａ（ｎ＋１）を経過した時刻」までが、送信禁止期間Ｂ（ｎ＋１）として設定されることにより、図７の（Ｂ）では第２周期データＮＤの送信が適切に禁止されている。すなわち、図７の（Ｂ）では、図７の（Ａ）の送信禁止期間Ｂ（ｎ＋１）よりも調整期間Ｂａ（ｎ＋１）分だけ長い送信禁止期間Ｂ（ｎ＋１）が設定されている。
【０１８３】
図７の（Ａ）では、「適切な送信禁止期間Ｂ（ｎ＋１）によって第２周期データＮＤの送信開始を禁止する」のに失敗しているため、第２周期データＮＤの送信によって、第１周期データＣＤの送信開始が、送信開始時刻Ｓ（ｎ＋１）よりも遅れている。これに対して、図７の（Ａ）では、「適切な送信禁止期間Ｂ（ｎ＋１）によって第２周期データＮＤの送信開始を禁止する」ことができており、第１周期データＣＤの送信は、送信開始時刻Ｓ（ｎ＋１）に開始されている。
【０１８４】
（通知処理および強制送信処理）
例えば、送信周期Ｃ（＝制御周期）に対して、送信時間が長い第２周期データＮＤ（つまり、データ量の大きい第２周期データＮＤ）を送信しようとする場合、第２周期データＮＤの送信について、以下の問題が発生し得る。すなわち、第２周期データＮＤのデータ量に比例して基礎期間Ｂｂは大きくなり、ここで、送信禁止期間Ｂの長さは、基礎期間Ｂｂの長さ以上である（送信禁止期間Ｂは、基礎期間Ｂｂと調整期間Ｂａとの合計期間を含んでいる）。そのため、第２周期データＮＤのデータ量が大きくなると、送信禁止期間Ｂの長さが、送信周期Ｃ（＝制御周期）の長さ以上となり得る。その場合、例えば、或る制御周期の送信開始時刻Ｓ（ｎ）と次の制御周期の送信開始時刻Ｓ（ｎ＋１）との間が常に送信禁止時間Ｂとなり、第２周期データＮＤを送信できなくなるという問題が発生し得る。
【０１８５】
その対応として、所定回数の制御周期にわたって連続して第２周期データＮＤの送信ができないと、ＰＬＣ１０は、そのような状況の発生を外部に通知する通知処理を実行する。また、ＰＬＣ１０は、送信禁止期間Ｂに関わらず、第２周期データＮＤの送信を開始する強制送信処理を実行する。
【０１８６】
例えば、通知部１９０は、「送信禁止期間Ｂが原因となって、第２周期データＮＤの送信ができない状態」を、予め決められている回数（例えば、Ｍ回）の制御周期にわたって連続で検知すると、以下の処理を実行する。
すなわち、通知部１９０は、「送信禁止期間Ｂが原因となって、Ｍ周期にわたって連続して、第２周期データＮＤの送信ができない状態」の発生を、上位システム（例えば、マイクロプロセッサ１０３）に、通知する。上位システムは、ＣＰＵユニット１００に接続されている解析用デバイス５０へ、「送信禁止期間Ｂが原因となって、Ｍ周期にわたって連続して、第２周期データＮＤの送信ができない状態」の発生を通知する。解析用デバイス５０は、上位システムからの通知を受信すると、「送信禁止期間Ｂが原因となって、Ｍ周期にわたって連続して、第２周期データＮＤの送信ができない状態」の発生を、ユーザに表示する。
【０１８７】
また、上位システム（例えば、マイクロプロセッサ１０３）は、第２周期データＮＤの強制送信処理の実行を指示するユーザ操作を受け付けると、第２周期データＮＤの強制送信処理の実行を、例えばチップセット１０２等を介して、ＦＰＧＡ１０１に指示する。ＦＰＧＡ１０１（特に、指示部１８０）は、第２送信部１７０（２）に、送信禁止期間Ｂ中であっても、第２周期データＮＤの送信を開始するように指示する。第２送信部１７０（２）は、指示部１８０からの指示に従って、第２送信キューＴＸＱ１にセットされている第２周期データＮＤの送信を、送信禁止期間Ｂであるか否かに関わらず、開始する。
【０１８８】
§４．変形例
これまで、第１送信キューＴＸＱ０および第２送信キューＴＸＱ１を用いて送信キューの説明を行なってきたが、送信キューが２つであることは必須ではなく、ＰＬＣ１０におけるＣＰＵユニット１００（特に、ＦＰＧＡ１０１）は複数の送信キューを備えてもよい。すなわち、ＣＰＵユニット１００（特に、ＦＰＧＡ１０１）が送信するデータに付与される複数の優先度（第１、第２、・・・第Ｎ）の各々に対応する、複数の送信キュー（ＴＸＱ０、ＴＸＱ１、・・・ＴＸＱ（ｎ−１））を、ＰＬＣ１０におけるＣＰＵユニット１００（特に、ＦＰＧＡ１０１）は備えていてもよい。
【０１８９】
また、ＰＬＣ１０におけるＣＰＵユニット１００（特に、ＦＰＧＡ１０１）は、複数の送信キュー（ＴＸＱ０、ＴＸＱ１、・・・ＴＸＱ（ｎ−１））の各々にセットされるデータについての送信を制御する、複数の送信部を備えていてもよい。例えば、ＦＰＧＡ１０１は、第１送信キューＴＸＱ０から第Ｎ＋１送信キューＴＸＱｎの各々にセットされているデータの各々の送信を制御する第１送信部１７０（１）から第Ｎ＋１送信部１７０（ｎ）を備えてもよい。
【０１９０】
これまで、Ｎを０以上の自然数として、算出部１３０が、Ｎ周期目の送信開始時刻Ｓ（ｎ）に、制御周期（＝送信周期Ｃ）に相当する時間間隔を付加して、Ｎ＋１周期目の基準時刻Ｔ（ｎ＋１）を算出する例を説明してきた。ここで、Ｍを１以上の自然数として、算出部１３０は、Ｎ周期目の送信開始時刻Ｓ（ｎ）に、「制御周期（＝送信周期Ｃ）に相当する時間間隔」のＭ倍の期間を付加して、Ｎ＋Ｍ周期目の基準時刻Ｔ（ｎ＋ｍ）を算出してもよい。
【０１９１】
また、前述の通り、ＦＰＧＡ１０１は、マイクロプロセッサ１０３等から送信周期Ｃを通知されてもよいし、所定回数の制御周期分の第１周期データＣＤの送信開始時刻Ｓの間の平均時間間隔を算出し、算出した平均時間間隔を、送信周期Ｃとしてもよい。ここで、複数の第１周期データＣＤの送信開始時刻Ｓの間の平均時間間隔から送信周期Ｃを算出する場合、或る制御周期において送信すべき第１周期データＣＤが無い場合、送信周期Ｃを正確に算出するため、ＦＰＧＡ１０１は、以下の処理を実行する。すなわち、ＦＰＧＡ１０１は、Ｐ番目の制御周期において送信すべき第１周期データＣＤがない場合、Ｐ−１番目の制御周期の送信開始時刻Ｓ（ｐ−１）と、Ｐ＋１番目の制御周期の送信開始時刻Ｓ（ｐ＋１）との間の時間間隔は、送信周期Ｃの算出に用いない。
【０１９２】
これまで、取得部１１０、内部ＲＡＭ１２０、算出部１３０、第１生成部１４０、第２生成部１５０、設定部１６０、送信部１７０、指示部１８０、および、通知部１９０が、ＦＰＧＡ（Field-Programmable gate array）において実現される例を説明してきた。しかしながら、これらの機能ブロックがＦＰＧＡを用いて実現されることは必須ではなく、例えば、ＡＳＩＣ（Application Specific Integrated Circuit）を用いて実現されてもよい。つまり、取得部１１０、内部ＲＡＭ１２０、算出部１３０、第１生成部１４０、第２生成部１５０、設定部１６０、送信部１７０、指示部１８０、および、通知部１９０は、ＡＳＩＣを用いて実現されてもよい。
【０１９３】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【０１９４】
１０  ＰＬＣ（制御装置）
１１０  取得部
１３０  算出部
１４０  第１生成部
１５０  第２生成部
１６０  設定部
１７０  第２送信部（送信部）
１８０  指示部
１９０  通知部
Ｂ  送信禁止期間
Ｃ  送信周期（制御周期）
Ｓ  送信開始時刻
Ｔ  基準時刻
Ｂａ  調整期間
Ｂｂ  基礎期間
ＣＤ  第１周期データ
ＮＤ  第２周期データ
Ｓ１００  取得ステップ
Ｓ２００  算出ステップ
Ｓ４００  設定ステップ
Ｓ７００  送信ステップ
【図１】
2019215818.tif 000003
【図２】
2019215818.tif 000004
【図３】
2019215818.tif 000005
【図４】
2019215818.tif 000006
【図５】
2019215818.tif 000007
【図６】
2019215818.tif 000008
【図７】
2019215818.tif 000009
【図８】
2019215818.tif 000010
【図９】
2019215818.tif 000011