〔実施形態1〕
以下、本発明の一側面に係る実施の形態(以下、「本実施形態」とも表記する)を、図面に基づいて説明し、具体的には、本発明の実施形態1について、図1から図9に基づいて詳細に説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。本実施の形態においては、機械および設備等の制御対象を制御するPLC(プログラマブル・ロジック・コントローラ、Programmable Logic Controller)10を、特に、PLC10のCPUユニット100を、制御装置の典型例として説明を行う。なお、「CPU」は「Central Processing Unit」の略である。また、以下の説明において「N」は、「0以上の自然数」を表わす。
PLC10についての理解を容易にするため、以下では先ず、図8および図9を参照して従来技術の概要を説明し、その後に、PLC10の概要を説明していくこととする。
§1.適用例
(従来技術の概要および課題)
図8において、第1周期データCDの送信と第2周期データNDの送信とは同一経路を利用し、第1周期データCDの送信中は、第2周期データNDを送信ができず、第2周期データNDの送信中は、第1周期データCDを送信ができない。第1周期データCDは、第1周期データCDを送信すべき時刻である「送信開始時刻S」と共に第1送信キューTXQ0にバッファリングされ、バッファリングが完了すると送信可能状態となる。同様に、第2周期データNDは、第2送信キューTXQ1にバッファリングされ、バッファリングが完了すると送信可能状態となる。第1周期データCDは周期的に送信され、N周期目に送信すべき第1周期データCDの送信開始時刻Sは「送信開始時刻S(n)」、N+1周期目に送信すべき第1周期データCDの送信開始時刻Sは「送信開始時刻S(n+1)」と表現される。
従来技術は、送信可能状態となった第1周期データCDの送信を、送信開始時刻Sに開始するため、「第2周期データNDの送信に要する時間」第2周期データNDのデータ量に基づいて算出される「第2周期データNDの送信に要する時間」を利用する。
すなわち、従来技術は先ず、「N周期目の第1周期データCDの送信開始時刻S(n)」に「送信周期Cに相当する時間間隔」を付加して、「N+1周期目の基準時刻T(n+1)」を算出する。そして、従来技術は、N+1周期目の基準時刻T(n+1)が終点となるよう、「第2周期データNDの送信に要する時間」を、第2周期データNDの送信開始を禁止する送信禁止期間B(図8における「送信禁止期間B(n+1)」)として、設定する。
ただし、図9に示すように、第2周期データNDのデータ量に基づいて算出される「第2周期データNDの送信に要する時間」を送信禁止期間Bとして利用する従来技術は、基準時刻T(n)とN周期目の送信開始時刻S(n)とが乖離した場合に対応できない。すなわち、N周期目の第1周期データCDの基準時刻(=基準時刻T(n))と実際の送信開始時刻(=送信開始時刻S(n))とが乖離した場合、従来技術は、N+1周期目の送信開始時刻S(n+1)に第1周期データCDの送信を開始できないことがあり得る。
図8および図9を参照して説明したように、第2周期データNDのデータ量(データサイズの大きさ)のみから送信禁止期間Bを設定する従来技術には、以下の問題がある。すなわち、第2周期データNDのデータ量のみから送信禁止期間Bを設定すると、定期送信の周期から算出する基準時刻(=基準時刻T)と実際の定期送信の送信時刻(=送信開始時刻S)とが一致しない場合、定期送信を守れないことがある。つまり、N+1回目の送信開始時刻S(n+1)とN+1回目の基準時刻T(n+1)との誤差が大きい場合、従来技術は適切な送信禁止期間Bを設定することができないことがあり得る。その結果、例えばTXQ0の送信よりも先にTXQ1の送信が開始され、送信開始時刻S(n+1)に第1周期データCDの送信を開始できないことがあり得る。
そこで、PLC10は、第2周期データNDのデータ量に基づいて算出される「第2周期データNDの送信に要する時間(=基礎期間Bb)」に加えて、調整期間Ba(余裕時間)を、送信禁止期間Bとして設定する。特に、PLC10は、前回送信の状態(つまり、N周期目における第1周期データCDの送信状態)に合わせて、(N+1周期目の)調整期間Baを動的に変更し、調整期間Baの最適化を実行する。以下、図2を用いて、PLC10を含む制御システム1の概要について説明する。
(本実施形態に係るPLCの概要)
図2は、制御システム1の全体概要を示す図である。図1に例示する制御システム1において、1つ以上のPLC10と、PLC10により動作が制御される機器とは、フィールドネットワーク20等の制御系のネットワークに接続されている。図2のPLC10には、フィールドネットワーク20およびPLCシステムバス400などのネットワークを介して、サーボドライバ33および34が接続され、サーボドライバ33および34の各々にはさらにサーボモータ41および42の各々が接続されている。
PLC10は、生産設備内の入力機器および出力機器の制御等を司る制御装置である。例えば、PLC10は、フィールドネットワーク20およびPLCシステムバス400などのネットワークに、第1周期データCDおよび第2周期データNDを送信し、特に、第1周期データCDおよび第2周期データNDの送信について、以下の処理を実行する。すなわち、PLC10は、「第2周期データNDの送信によって送信開始時刻Sに第1周期データCDの送信を開始できない」事態が発生するのを回避するため、第2周期データNDの送信が禁止される送信禁止期間Bを設定する。なお以下では、PLC10は、周期的に(具体的には、制御周期(具体的には、送信周期C)ごとに)、第1周期データCDを送信するものとする。以下、PLC10が制御する、第1周期データCDおよび第2周期データNDの送受信について、詳細に説明する。
(第1周期データCDの送受信)
第1に、PLC10と機器とは、生産設備に対する高速高精度な制御を実行するために、フィールドネットワーク20を介してサイクリック(つまり、周期的に)に通信を行なって、INデータおよびOUTデータ(以下、「IOデータ」という)を送受信する。第1周期データCDは、例えば、このような「生産設備に対する高速高精度な制御を実行するためのIOデータ」であり、「生産設備に対する高速高精度な制御を実行するためのデータ」は「制御データ」とも称される。
PLC10は、ラダーロジック(ラダー言語)によって記述されたラダープログラム(ソースプログラム)などがコンパイルされることにより生成されたユーザプログラムを実行することにより、制御対象に対する高速かつ高精度の制御を実行する。ここで、「ユーザプログラム」は、ユーザの制御対象(例えば、対象のラインおよびプロセス)に応じて作成され、すなわち、制御システム1を用いて制御する制御対象のライン(プロセス)などに応じて、任意に設計されるプログラムである。オブジェクトプログラム形式のユーザプログラムは、PLC10の不揮発性メモリ105などに格納される。ユーザプログラムは、CPUユニット100のマイクロプロセッサ103で実行され、その実行結果が、制御データとして、つまり、第1周期データCDとして、PLC10の制御対象へと送信される。
具体的には、制御対象に対する高速かつ高精度の制御のためのユーザプログラムは、高速周期で、マイクロプロセッサ103によって繰り返し実行され、PLC10は、その実行結果である第1周期データCDを定周期で制御対象へと送信する。PLC10(特に、CPUユニット100)は、IOユニット301〜303および特殊ユニット304などの機能ユニットと、サーボドライバ33および34、リモートIOターミナル35などのスレーブ装置とに、第1周期データCDを定周期で送信する。ここで、生産設備に対する高速かつ高精度の制御のためには、PLC10から各制御機器への命令頻度を高める必要があり、PLC10によるスレーブ装置(フィールド機器)への第1周期データCDの送信については、μsオーダーでの通信が要求される。
(第2周期データNDの送受信)
第2に、PLC10(特に、CPUユニット100)は、生産設備の高速かつ高精度な制御に加えて、以下の処理を実行する。すなわち、PLC10は、例えば、(1)外部のデータベースとの接続に係る処理、(2)外部の表示装置との接続に係る処理、および(3)制御対象から取得する情報を蓄積し、蓄積した情報を外部のサーバに送信する処理などを実行する。具体的には、PLC10は、第1周期データCD(制御データ)以外のデータの送信および受信(収集)を実行し、例えば、機能ユニット、スレーブ装置、および、各種の外部機器(例えば、外部の情報系サーバ)との間で、第2周期データNDを送受信する。
第2周期データNDは、例えば、制御システム1の故障診断に使用するセンサ受光信号の減衰値の統計情報などを示す情報系データである。第2周期データNDは第1周期データCDよりも優先度が低く、詳細は後述するが、第1周期データCDの信開始時刻における送信が、第2周期データNDの送信によって、妨げられることがないよう、第2周期データNDの送信開始が制御される(禁止される)。第2周期データNDは、非周期的に、または、「周期的に送信される第1周期データCDの送信周期C(=制御周期)」以上の時間間隔(周期)で繰り返し、送信される。前述の通り、PLC10において、定周期で送信する第1周期データCDについては「μs(100万分の1秒)」オーダーの定時性が求められる。これに対し、第2周期データNDの送信について求められる定時性は、例えば、ms(千分の1秒)のオーダーである。
(制御システムを構成する機器の概要)
PLC10は、制御システム1において、機械および設備などの制御対象を制御する制御装置であり、制御システム1における、フィールドネットワーク20を介したデータ伝送を管理するマスタ装置である。PLC10は、例えばユーザプログラムとも称される制御プログラムを実行して、制御システム1全体の動作を統括的に制御する。PLC10は、主たる演算処理を実行するCPUユニット100と、電源ユニット200と、1つ以上のIO(Input/ Output)ユニット(図2の例では、IOユニット301〜303)と、特殊ユニット304と、を含む。IOユニット301〜303、および、特殊ユニット304は、機能ユニットと呼ばれることもある。CPUユニット100と、IOユニット301〜303の各々と、特殊ユニット304とは、PLCシステムバス400を介して、互いにデータを遣り取りできるように構成される。
CPUユニット100は、制御対象の状態等に係る種々の処理を実行し、例えば、「出力データの送信と、入力データの受信と、入力データを使用して出力データを生成する制御プログラムの実行とを繰り返すことによって制御対象を制御する」処理を実行する。CPUユニット100の詳細については、図1を参照して後述する。
電源ユニット200は、CPUユニット100、IOユニット301〜303、および、特殊ユニット304に、適切な電圧の電源を供給する。
IOユニット301〜303は、各々、一般的な入出力処理に関するユニットであり、オン/オフといったデータ(つまり、2値化されたデータ)の入出力を司る。具体的には、IOユニット301〜303の各々は、センサなどの入力機器であるデバイス31が何らかの対象物を検出している状態(オン)、および、何らの対象物も検出していない状態(オフ)のいずれであるかという情報を収集する。また、IOユニット301〜303の各々は、リレー、アクチュエータといった出力機器であるデバイス32に対して、活性化するための指令(オン)、および、不活性化するための指令(オフ)のいずれかを出力する。
特殊ユニット304は、IOユニット301〜303が処理するデータとは異なるデータ(例えば、アナログデータ)の入出力、温度制御、特定の通信方式による通信といった、IOユニット301〜303ではサポートしない機能を有する。
フィールドネットワーク20は、CPUユニット100とフィールド機器(サーボドライバ33、サーボドライバ34、および、リモートIOターミナル35等)との間で遣り取りされる各種データを伝送する。フィールドネットワーク20としては、典型的には、各種の産業用イーサネット(登録商標)を用いることができる。産業用イーサネットとしては、例えば、EtherCAT(登録商標)、Profinet IRT、MECHATROLINK(登録商標)−III、Powerlink、SERCOS(登録商標)−III、CIP Motionなどが知られている。なお、フィールドネットワーク20として、産業用イーサネット以外のフィールドネットワークを用いてもよい。例えば、モーション制御を行わない場合であれば、DeviceNet、CompoNet/IP(登録商標)などを用いてもよい。
なおPLC10は、CPUユニット100にIOユニット301〜303の各々の機能およびサーボドライバ33および34の機能を持たせることにより、そのような内蔵機能でまかなえる範囲については、CPUユニット100が直接制御対象を制御してもよい。
サーボドライバ33および34の各々は、フィールドネットワーク20を介してCPUユニット100と接続されるとともに、CPUユニット100からの指令値に従ってサーボモータ41および42の各々を駆動する。なお、図2には、サーボモータ41および42の各々とサーボドライバ33および34の各々とを組み合わせたシステム例を示したが、その他の構成、たとえば、パルスモータとパルスモータドライバとを組み合わせたシステムを採用することもできる。
リモートIOターミナル35は、基本的には、IOユニット301〜303と同様に、一般的な入出力処理に関する処理を行う。より具体的には、リモートIOターミナル35は、フィールドネットワーク20でのデータ伝送に係る処理を行うための通信カプラ36と、1つ以上のIOユニット(図2の例では、IOユニット37および38)とを含む。通信カプラ36と、IOユニット37および38の各々とは、リモートIOターミナルバス39を介して、データを互いに遣り取りできるように構成される。
PLC10には、任意の通信ケーブル40によって、解析用デバイス50が接続されており、例えば、Ether IP(登録商標)により通信接続されていてもよい。PLC10は、第2周期データNDが送信可能状態になってから所定回数の制御周期にわたって連続して第2周期データNDを送信していないと、「所定回数の制御周期にわたって連続して第2周期データNDを送信していない」旨を解析用デバイス50に通知する。解析用デバイス50は、PLC10から、「所定回数の制御周期にわたって連続して第2周期データNDを送信していない」旨を通知されると、その旨をユーザに表示する。解析用デバイス50は、通常のPC(Personal Computer)によって構成され、タッチパネル、ディスプレイなどの入出力デバイスを備える。
(CPUユニットの概要)
これまで図2を用いてPLC10を含む制御システム1の全体概要を説明してきたが、次に、PLC10におけるCPUユニット100、特にCPUユニット100の備えるFPGA101について、その概要を説明しておく。
PLC10は、制御周期(具体的には、送信周期C)ごとに第1周期データCDを出力する制御装置であって、取得部110と、算出部130と、設定部160と、第2送信部170(2)(送信部)と、を備えている。取得部110は、第1周期データCDを、第1周期データCDの送信開始時刻Sと共に取得する。算出部130は、Nを0以上の自然数として、N周期目の制御周期(=送信周期C)に送信すべき第1周期データCDの送信開始時刻S(n)に、送信周期Cに相当する時間間隔を付加して、N+1周期目の基準時刻T(n+1)を算出する。設定部160は、N周期目の制御周期に送信すべき第1周期データCDの送信開始時刻S(n)と、N周期目の基準時刻T(n)との差を用いて生成された送信禁止期間B(具体的には、送信禁止期間B(n+1))を、N+1周期目の基準時刻T(n+1)の前および後ろの少なくとも一方に設定する。第2送信部170(2)は、設定部160により設定された送信禁止期間Bでない期間に、第1周期データCDより優先度が低い第2周期データNDの送信を開始する。
前記の構成によれば、PLC10は、N周期目の制御周期に送信すべき第1周期データCDの送信開始時刻S(n)と、N周期目の基準時刻T(n)との差を考慮して、第2周期データNDの送信開始を禁止する送信禁止期間Bを算出する。そして、PLC10は、N周期目の送信開始時刻S(n)に送信周期Cに相当する時間間隔を付加して算出した、N+1周期目の基準時刻T(n+1)の前および後ろの少なくとも一方に、送信禁止期間B(n+1)を設定する。その上で、PLC10は、送信禁止期間B(n+1)でない期間に、第2周期データNDの送信を開始する。つまり、PLC10は、N周期目における送信開始時刻S(n)と基準時刻T(n)とが乖離する場合にも、N周期目における送信開始時刻S(n)と基準時刻T(n)との差を考慮した送信禁止期間B(n+1)を、N+1周期目の基準時刻T(n+1)の前および後ろの少なくとも一方に設定する。
したがって、PLC10は、N周期目における送信開始時刻S(n)と基準時刻T(n)とが乖離する場合にも、両者の差を考慮した適切な送信禁止期間B(n+1)を設定し、N+1周期目の送信開始時刻S(n+1)に第1周期データCDの送信を開始できるとの効果を奏する。
PLC10は、第1生成部140と、第2生成部150と、をさらに備えている。第1生成部140は、第2周期データNDのデータ量から、第2周期データNDの送信に要する期間である基礎期間Bbを生成する。第2生成部150は、「N周期目の制御周期に送信すべき第1周期データCDの送信開始時刻S(n)と、N周期目の基準時刻T(n)との差(=差分期間V(n))」である調整期間Baを生成する。そして、PLC10において、設定部160によって設定される送信禁止期間Bは、基礎期間Bbと調整期間Baとの合計期間を含んでいる。
前記の構成によれば、PLC10は、「N周期目の制御周期における送信開始時刻S(n)と基準時刻T(n)との差」および「第2周期データNDのデータ量」を考慮して、第2周期データNDの送信開始が禁止される送信禁止期間Bを設定する。
ここで、第2周期データNDの送信中は、第1周期データCDを送信することはできないため、N+1周期目の送信開始時刻S(n+1)に第1周期データCDの送信を開始するには、理論的には、以下のように、送信禁止期間B(n+1)を設定する必要がある。すなわち、「N+1周期目の送信開始時刻S(n+1)から、第2周期データNDの送信に要する時間(=基礎期間Bb)を遡った時刻」から「N+1周期目の送信開始時刻S(n+1)」までの期間を送信禁止期間Bとする必要がある。
そして、「第2周期データNDの送信に要する時間(=基礎期間Bb)」は、第2周期データNDのデータ量に比例すると考えられ、すなわち、第2周期データNDのデータ量から算出される。そこで、PLC10は、第2周期データNDのデータ量から生成した基礎期間Bbを含む期間を、送信禁止期間Bとして利用する。
また、「N+1周期目の送信開始時刻S(n+1)」は、N+1周期目の第1周期データCDの取得前には把握できないのに対し、「N+1周期目の基準時刻T(n+1)」は、N+1周期目の第1周期データCDの取得前に把握することができる。すなわち、PLC10は、「N周期目の送信開始時刻S(n)」に「制御周期(=送信周期C)に相当する時間間隔」を付加して、「N+1周期目の基準時刻T(n+1)」を、N+1周期目の第1周期データCDの取得前に予め算出する。
さらに、「N+1周期目における、送信開始時刻S(n+1)と基準時刻T(n+1)との差」は、「N周期目における、送信開始時刻S(n)と基準時刻T(n)との差」以下となることが、一般的である。
そこで、PLC10は、「N+1周期目の基準時刻T(n+1)」に対し、「N周期目における送信開始時刻S(n)と基準時刻T(n)との差から生成した調整期間Ba」を含む期間を、送信禁止期間Bとして設定する。
したがって、PLC10は、N周期目における送信開始時刻S(n)と基準時刻T(n)とが乖離する場合にも、両者の差、および、第2周期データNDのデータ量を考慮した、適切な送信禁止期間B(n+1)を設定することができるとの効果を奏する。
PLC10において、N周期目の制御周期に送信すべき第1周期データCDの送信開始時刻S(n)が、N周期目の基準時刻T(n)よりも遅い場合、設定部160は、以下のように送信禁止期間B(n+1)を設定する。すなわち、設定部160は、N+1周期目の基準時刻T(n+1)が終点となるように、基礎期間Bb(n+1)と調整期間Ba(n+1)との合計期間を含む期間を、送信禁止期間B(n+1)として設定する。
前記の構成によれば、PLC10は、N周期目の送信開始時刻S(n)がN周期目の基準時刻T(n)よりも遅い場合、N+1周期目の基準時刻T(n+1)が終点となるように、基礎期間Bb(n+1)と調整期間Ba(n+1)との合計期間を含む期間を、送信禁止期間B(n+1)として設定する。
ここで、N周期目の送信開始時刻S(n)がN周期目の基準時刻T(n)よりも遅い場合、N周期目の送信開始時刻S(n)に送信周期Cに相当する時間間隔を付加して算出するN+1周期目の基準時刻T(n+1)は、N+1周期目の送信開始時刻S(n+1)よりも遅れるのが一般的である。
そのため、「N+1周期目の基準時刻T(n+1)から、第2周期データNDの送信に要する時間に対応する基礎期間Bb(n+1)を遡った時刻」から「N+1周期目の基準時刻T(n+1)」までの期間のみを、送信禁止期間B(n+1)として設定したのでは、十分ではない可能性がある。言い換えれば、望ましい送信禁止期間B(n+1)は、「N+1周期目の基準時刻T(n+1)から基礎期間Bb(n+1)を遡った時刻」から「N+1周期目の基準時刻T(n+1)」までの期間よりも、長いと考えられる。
そこで、PLC10は、さらに、N周期目における送信開始時刻S(n)と基準時刻T(n)との差を考慮して、N+1周期目の送信禁止期間B(n+1)を設定する。すなわち、PLC10は、基礎期間Bb(n+1)を送信禁止期間B(n+1)として設定するのに加えて、送信開始時刻S(n)と基準時刻T(n)との差分期間である差分期間V(n)を、送信禁止期間B(n+1)として設定する。具体的には、PLC10は、「N+1周期目の基準時刻T(n+1)から、基礎期間Bb(n+1)と調整期間Ba(n+1)との合計期間を含む期間を遡った時刻」から「N+1周期目の基準時刻T(n+1)」までの期間を、送信禁止期間B(n+1)として設定する。
したがって、PLC10は、N周期目において送信開始時刻S(n)が基準時刻T(n)よりも遅い場合にも、両者の差、および、第2周期データNDのデータ量を考慮した、適切な送信禁止期間B(n+1)を設定することができるとの効果を奏する。
PLC10において、N周期目の制御周期に送信すべき第1周期データCDの送信開始時刻S(n)が、N周期目の基準時刻T(n)よりも早い場合、設定部160は、以下のように送信禁止期間B(n+1)を設定する。すなわち、設定部160は、N+1周期目の基準時刻T(n+1)が終点となるように、基礎期間Bb(n+1)を含む期間を、送信禁止期間B(n+1)として設定する。また、設定部160は、N+1周期目の基準時刻T(n+1)が始点となるように、調整期間Ba(n+1)を含む期間を、送信禁止期間B(n+1)として設定する。
前記の構成によれば、PLC10は、N周期目の送信開始時刻S(n)がN周期目の基準時刻T(n)よりも早い場合、N+1周期目の基準時刻T(n+1)が終点となるように、基礎期間Bb(n+1)を含む期間を、送信禁止期間B(n+1)として設定する。さらに、PLC10は、N+1周期目の基準時刻T(n+1)が始点となるように、調整期間Ba(n+1)を含む期間を、送信禁止期間B(n+1)として設定する。
ここで、N周期目の送信開始時刻S(n)がN周期目の基準時刻T(n)よりも早い場合、N周期目の送信開始時刻S(n)に送信周期Cに相当する時間間隔を付加して算出するN+1周期目の基準時刻T(n+1)は、N+1周期目の送信開始時刻S(n+1)よりも早くなるのが一般的である。
そのため、「N+1周期目の基準時刻T(n+1)から、第2周期データNDの送信に要する時間に対応する基礎期間Bb(n+1)を遡った時刻」から「N+1周期目の基準時刻T(n+1)」までの期間のみを、送信禁止期間B(n+1)として設定したのでは、十分ではない可能性がある。言い換えれば、望ましい送信禁止期間B(n+1)は、「N+1周期目の基準時刻T(n+1)から基礎期間Bb(n+1)を遡った時刻」から「N+1周期目の基準時刻T(n+1)」までの期間よりも、長いと考えられる。
そこで、PLC10は、さらに、N周期目における送信開始時刻S(n)と基準時刻T(n)との差を考慮して、N+1周期目の送信禁止期間B(n+1)を設定する。すなわち、PLC10は、基礎期間Bb(n+1)を送信禁止期間B(n+1)として設定するのに加えて、送信開始時刻S(n)と基準時刻T(n)との差分期間である差分期間V(n)を、送信禁止期間B(n+1)として設定する。具体的には、PLC10は、「N+1周期目の基準時刻T(n+1)から基礎期間Bb(n+1)を遡った時刻」から、「N+1周期目の基準時刻T(n+1)」までの期間を、送信禁止期間B(n+1)として設定する。また、PLC10は、「N+1周期目の基準時刻T(n+1)」から、「N+1周期目の基準時刻T(n+1)から、調整期間Ba(n+1)を含む期間を進んだ時刻」までの期間を、送信禁止期間B(n+1)として設定する。
したがって、PLC10は、N周期目において送信開始時刻S(n)が基準時刻T(n)よりも早い場合にも、両者の差、および、第2周期データNDのデータ量を考慮した、適切な送信禁止期間B(n+1)を設定することができるとの効果を奏する。
PLC10は、指示部180をさらに備えている。指示部180は、「第2送信部170(2)が、所定回数の制御周期(=送信周期C)にわたって連続して、第2周期データNDを送信しない」と、送信禁止期間Bであっても強制的に、第2送信部170(2)に、第2周期データNDの送信を開始させる。
前記の構成によれば、PLC10は、第2周期データNDを所定回数の制御周期にわたって連続して送信しないと、送信禁止期間Bであっても強制的に、第2周期データNDの送信を開始する。したがって、PLC10は、所定回数の制御周期にわたって連続して送信されなかった第2周期データNDを、送信することができるとの効果を奏する。
PLC10は、通知部190をさらに備えている。通知部190は、「第2送信部170(2)が、所定回数の制御周期にわたって連続して、第2周期データNDを送信しない」と、「第2送信部170(2)が所定回数の制御周期にわたって連続して第2周期データNDを送信しない」ことを外部に通知する。
前記の構成によれば、PLC10は、第2周期データNDを所定回数の制御周期にわたって連続して送信しないと、「第2周期データNDを所定回数の制御周期にわたって連続して送信していない」ことを外部に通知する。したがって、PLC10は、「第2周期データNDを所定回数の制御周期にわたって連続して送信していない」という状況が発生すると、そのような状況が発生していることを、外部に通知することができるとの効果を奏する。
以上に概要を説明したPLC10について、次に、図1を参照して、PLC10(特に、PLC10のCPUユニット100)のハードウェア構成例、および、(特に、FPGA101が備える)機能ブロックについて説明する。
§2.構成例
(CPUユニットのハードウェア構成)
図1は、PLC10のCPUユニット100の構成例を示す図である。図1に例示する通り、CPUユニット100は、ハードウェア構成として、FPGA101と、チップセット102と、マイクロプロセッサ103と、メインメモリ104と、不揮発性メモリ105と、を含む。CPUユニット100は、さらに、不図示のUSBコネクタを含んでもよい。チップセット102と他のコンポーネントとの間は、各種のバス(内部バス)を介してそれぞれ結合されている。なお、マイクロプロセッサ103とチップセット102とは、一体に形成されていてもよい。
マイクロプロセッサ103およびチップセット102は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、マイクロプロセッサ103は、チップセット102から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット102は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、マイクロプロセッサ103に必要な命令コードを生成する。さらに、チップセット102は、マイクロプロセッサ103での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
CPUユニット100は、記憶手段として、メインメモリ104および不揮発性メモリ105を備えている。メインメモリ104は、揮発性の記憶領域(RAM)であり、CPUユニット100へ電源投入後にマイクロプロセッサ103で実行されるべき各種プログラムを保持する。また、メインメモリ104は、マイクロプロセッサ103による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ104として、例えば、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)等を用いることができる。
一方、不揮発性メモリ105は、各種のプログラムおよびパラメータなどのデータを不揮発的に保持する。これらのデータは、必要に応じて、マイクロプロセッサ103がアクセスできるようにメインメモリ104にコピーされる。このような不揮発性メモリ105は、フラッシュメモリのような半導体メモリを用いることができる。あるいは、ハードディスクドライブのような磁気記録媒体、DVD−RAM(Digital Versatile Disk Random Access Memory)のような光学記録媒体などを用いることもできる。
FPGA101は、製造後にユーザが回路構成を設定することのできるプログラマブル論理回路であって、例えば出力データの送信および入力データの受信などの通信処理を含む種々の処理を実行する。FPGA101は、通信処理として、CPUユニット100以外のユニットおよびPLC10以外の装置へ出力データの送信と、CPUユニット100以外のユニットおよびPLC10以外の装置からの入力データの受信とを実行する。さらに、FPGA101は、通信処理として、メインメモリ104との間でデータの送受信を実行する。ただし、FPGA101が実行する処理は通信処理に限られるものではない。
なお本実施形態において、CPUユニット100からCPUユニット100以外のユニットに出力されるデータ、および、PLC10からPLC10以外の装置に出力されるデータを、「出力データ」とも称す。また、CPUユニット100以外のユニットからCPUユニット100に入力されるデータ、および、PLC10以外の装置からPLC10に入力されるデータを、「入力データ」とも称す。
(第1周期データCDおよび第2周期データNDの送信準備処理の概要)
マイクロプロセッサ103は、CPUユニット100の外部に送信する第1周期データCD(例えば、制御データ)と第2周期データND(例えば、制御データ以外のデータ)とを、チップセット102を介して、例えばメインメモリ104に設定する(言い換えれば、データを格納する)。そして、マイクロプロセッサ103は、チップセット102を介して、FPGA101に、メインメモリ104に設定したデータの送信を依頼する。なお、例えばマイクロプロセッサ103を複数のコアによって構成し、各コアが、各コアに割り当てられているデータを、チップセット102を介して、メインメモリ104に格納してもよい。例えば、第1コアが第1周期データCDをメインメモリ104に格納し、第1周期データCDの送信をFPGA101に依頼し、第2コアが第2周期データNDをメインメモリ104に格納し、第1周期データCDの送信をFPGA101に依頼してもよい。すなわち、複数のコアの各々が、各々のコアに割り当てられているデータのメインメモリ104への格納、および、FPGA101への送信依頼を実行してもよい。言い換えれば、第1周期データCDのメインメモリ104への格納および送信依頼の実行主体と、第2周期データNDのメインメモリ104への格納および送信依頼の実行主体とは、別の主体(例えば、別のコア)であってもよい。
FPGA101(特に、取得部110)は、DMA(Dynamic Memory Access)機能にて、メインメモリ104に設定されたデータを、FPGA101の内部RAM120(特に、送信キューテーブル121の送信キューTXQ)に転送する。具体的には、FPGA101は、第1周期データCDをメインメモリ104から取得し、取得した第1周期データCDを第1送信キューTXQ0にバッファリングする。同様に、FPGA101は、第2周期データNDをメインメモリ104から取得し、取得した第2周期データNDを第2送信キューTXQ1にバッファリングする。
ここで、第2周期データNDが第2送信キューTXQ1にバッファリングされると、FPGA101(特に、第1生成部140)は、第2送信キューTXQ1に格納されている第2周期データNDの送信データ長から、基礎期間Bbを計算する。
また、FPGA101(特に、第2生成部150)は、N周期目の第1周期データCDの送信が開始されると、N周期目の第1周期データCDの送信開始時刻S(n)を取得し、取得した送信開始時刻S(n)と、N周期目の基準時刻T(n)とを比較する。そして、送信開始時刻S(n)と基準時刻T(n)とが一致しない場合、FPGA101は、両者の差である差分期間V(n)を算出する。
N周期目の送信開始時刻S(n)がN周期目の基準時刻T(n)より遅い場合、FPGA101(特に、設定部160)は、差分期間V(n)を、N+1回目の前側送信禁止期間として設定する。つまり、送信開始時刻S(n)が基準時刻T(n)より遅い場合、設定部160は、差分期間V(n)を、基準時刻T(n+1)の前に、調整期間Ba(n+1)として設定する。前側送信禁止期間は、基準時刻Tの前に、基礎期間Bbに追加して設定される送信禁止期間Bであり、第2周期データNDの送信開始が禁止される期間である。
具体的には、FPGA101は、基準時刻T(n+1)の前に、「基礎期間Bbに、『送信開始時刻S(n)が基準時刻T(n)から遅れた期間(=差分期間V(n))』を加えた期間」を、送信禁止期間B(n+1)として設定する。つまり、FPGA101は、差分期間V(n)(=調整期間Ba(n+1))と基礎期間Bb(n+1)との合計期間を含む期間の終点が基準時刻T(n+1)となるように、送信禁止期間B(n+1)を設定する。
N周期目の送信開始時刻S(n)がN周期目の基準時刻T(n)より早い場合、FPGA101(特に、設定部160)は、差分期間V(n)を、N+1回目の後側送信禁止期間として設定する。つまり、送信開始時刻S(n)が基準時刻T(n)より早い場合、設定部160は、差分期間V(n)を、基準時刻T(n+1)の後に、調整期間Ba(n+1)として設定する。後側送信禁止期間は、基準時刻Tの後ろに設定される送信禁止期間Bであり、第2周期データNDの送信開始が禁止される期間である。
具体的には、FPGA101は、基礎期間Bbを、基準時刻T(n+1)の前に、送信禁止期間B(n+1)として設定する。また、FPGA101は、「送信開始時刻S(n)がN周期目の基準時刻T(n)より早い期間(=差分期間V(n))」を、基準時刻T(n+1)の後に、送信禁止期間B(n+1)として設定する。つまり、FPGA101は、基礎期間Bb(n+1)の終点が基準時刻T(n+1)となるように、送信禁止期間B(n+1)を設定する。また、FPGA101は、差分期間V(n)(=調整期間Ba(n+1))の始点が基準時刻T(n+1)となるように、送信禁止期間B(n+1)を設定する。
送信可能状態となった第2周期データNDについて、FPGA101(特に、第2送信部170(2))は、第1周期データCDの送信中でも、送信禁止期間B中でもなければ、第2周期データNDの送信を開始する。FPGA101は、第1周期データCDの送信中または送信禁止期間B中であれば、第2周期データNDの送信を開始しない。FPGA101は、第1周期データCDの送信完了後、例えば、送信禁止期間Bを解除し、第2周期データNDの送信を開始する。
(FPGAの備える機能ブロック)
FPGA101は、機能ブロックとして、取得部110、算出部130、第1生成部140、第2生成部150、設定部160、送信部170、指示部180、および、通知部190を含んでいる。
取得部110は、第1周期データCDと、その第1周期データCDの送信開始時刻Sとを、チップセット102を介して、例えばメインメモリ104から取得する。そして、取得部110は、取得した第1周期データCDおよび送信開始時刻Sを、送信キューテーブル121の第1送信キューTXQ0に格納し、言い換えれば、第1送信キューTXQ0にセットする。
ここで、送信開始時刻Sは、定周期で送信すべき高優先データである第1周期データCDの送信を開始する予定時刻である。送信開始時刻Sは、第1周期データCDと共に上位システムによってメインメモリ104にセットされ、例えば、マイクロプロセッサ103によって、チップセット102を介して、メインメモリ104に第1周期データCDと共に格納される。
また、取得部110は、第2周期データNDを、チップセット102を介して、例えばメインメモリ104から取得し、取得した第2周期データNDを、送信キューテーブル121の第2送信キューTXQ1に格納する。取得部110は、メインメモリ104から、第2周期データNDとその第2周期データNDの送信開始時刻とを取得し、取得した第2周期データNDとその第2周期データNDの送信開始時刻とを、第2送信キューTXQ1に格納してもよい。ただし、以下の説明においては、「送信開始時刻Sでの第1周期データCDの送信開始を確保する」というPLC10についての理解を容易にするため、第2周期データNDの送信開始時刻については、特に説明を行なわない。
算出部130は、周期的に送信される第1周期データCDの送信周期Cに相当する時間間隔を送信開始時刻Sに付加した時刻である「基準時刻T(=基準時刻)」を算出する。例えば、算出部130は、N周期目の第1周期データCDの送信開始時刻S(n)に、「送信周期Cに相当する時間間隔」を付加した時刻を、N+1周期目の基準時刻T(n+1)とする。なお、「T(0)=S(0)」とする。算出部130は、算出した基準時刻T(例えば、N+1周期目の基準時刻T(n+1))を、基準時刻テーブル122に格納する。
第1生成部140は、第2周期データNDが第2送信キューTXQ1にバッファリングされると、第2送信キューTXQ1に格納されている第2周期データNDのデータ量(例えば、送信データ長)から、基礎期間Bbを算出する。基礎期間Bbは、例えば「第2周期データNDの送信に要する時間」である。第1生成部140は、算出した、基礎期間Bbを、設定部160に通知する。
第2生成部150は、N周期目の第1周期データCDの送信開始時刻S(n)を取得し、例えば、第1送信キューTXQ0を参照して、第1送信キューTXQ0に第1周期データCDと共にセットされている送信開始時刻S(n)を取得する。また、第2生成部150は、基準時刻テーブル122を参照して、N周期目の基準時刻T(n)を取得する。
第2生成部150は、N周期目の第1周期データCDの送信開始時刻S(n)と、N周期目のN周期目の基準時刻T(n)とを比較し、両者が一致しない場合、両者の差である差分期間V(n)を算出し、算出した差分期間V(n)を、設定部160に通知する。
なお、本実施形態においては、原則として、第1周期データCDを送信すべき時刻である「送信開始時刻S」と、第1送信部170(1)が第1周期データCDの送信を実際に開始した時刻(実際の送信開始時刻)とは、一致するものとする。或る制御周期Mにおいて、第1周期データCDを送信すべき時刻である「送信開始時刻S(m)」と第1周期データCDの実際の送信開始時刻とが一致しない場合、第2生成部150は、以下のように差分期間V(n)を算出する。すなわち、第2生成部150は、「制御周期Mにおいて第1周期データCDを送信すべき時刻である送信開始時刻S(m)」と「制御周期Mの基準時刻T(M)」との差を、差分期間V(n)として算出してもよい。また、第2生成部150は、「制御周期Mにおける第1周期データCDの実際の送信開始時刻」と「制御周期Mの基準時刻T(M)」との差を、差分期間V(n)として算出してもよい。差分期間V(n)の算出に「第1周期データCDの実際の送信開始時刻」を用いる場合、第2生成部150は、送信部170(特に、第1送信部170(1))から、「各制御周期(=各送信周期)における、第1周期データCDの実際の送信開始時刻」を取得してもよい。
設定部160は、基準時刻テーブル122を参照して取得した基準時刻Tに対して、第1生成部140から通知される基礎期間Bb、および、第2生成部150から通知される差分期間V(n)を用いて、N+1周期目の送信禁止期間B(n+1)を設定する。
設定部160は、「差分期間V(n)=0」であると、基準時刻T(n)と送信開始時刻S(n)とが一致していると判定する。そして、設定部160は、N+1周期目の基準時刻T(n+1)が終点となるよう、基礎期間Bb(n+1)を含む期間を、送信禁止期間B(n+1)として設定する。例えば、設定部160は、「基準時刻T(n+1)から基礎期間Bb(n+1)を遡った時刻」を始点とし、「基準時刻T(n+1)」を終点とする期間を、送信禁止期間B(n+1)に設定する。
設定部160は、「差分期間V(n)>0」であると、基準時刻T(n)より送信開始時刻S(n)が遅いと判定する。そして、設定部160は、差分期間V(n)を、N+1回目の前側送信禁止期間(つまり、調整期間Ba(n+1))として設定する。具体的には、設定部160は、差分期間V(n)(=調整期間Ba(n+1))と基礎期間Bb(n+1)との合計期間を含む期間の終点が基準時刻T(n+1)となるように、送信禁止期間B(n+1)を設定する。つまり、設定部160は、基準時刻T(n+1)の前に、「基礎期間Bbに、『送信開始時刻S(n)がN周期目の基準時刻T(n)から遅れた期間(=差分期間V(n))』を加えた期間」を、送信禁止期間B(n+1)として設定する。例えば、設定部160は、「基準時刻T(n+1)から『差分期間V(n)(=調整期間Ba(n+1))と基礎期間Bb(n+1)との合計期間』を遡った時刻」を始点とし、「基準時刻T(n+1)」を終点とする期間を、送信禁止期間B(n+1)に設定する。
設定部160は、「差分期間V(n)<0」であると、基準時刻T(n)より送信開始時刻S(n)が早いと判定する。そして、設定部160は、差分期間V(n)を、N+1回目の後側送信禁止期間(つまり、調整期間Ba(n+1))として設定する。具体的には、設定部160は、基礎期間Bb(n+1)の終点が基準時刻T(n+1)となるように、送信禁止期間B(n+1)を設定する。また、設定部160は、差分期間V(n)(=調整期間Ba(n+1))の始点が基準時刻T(n+1)となるように、送信禁止期間B(n+1)を設定する。例えば、設定部160は、「基準時刻T(n+1)から基礎期間Bb(n+1)を遡った時刻」を始点とし、「基準時刻T(n+1)から調整期間Ba(n+1)を経過した時刻」を終点とする期間を、送信禁止期間B(n+1)に設定する。
送信部170は、データ送信を制御し、例えば、第1送信キューTXQ0にセットされた第1周期データCD、および、第2送信キューTXQ1にセットされた第2周期データNDの送信を制御し、第1送信部170(1)と第2送信部170(2)とを含む。
第1送信部170(1)は、第1周期データCDの送信を制御し、具体的には、第1送信キューTXQ0にセットされた第1周期データCDの送信を、第1周期データCDと共に第1送信キューTXQ0にセットされている送信開始時刻Sに、開始する。第1送信部170(1)は、第2周期データNDの送信中は、第1周期データCDを送信することができない。
第2送信部170(2)は、第2周期データNDの送信を制御し、具体的には、第2送信キューTXQ1にセットされた第2周期データNDの送信を、「第1周期データCDの送信中の期間および送信禁止期間Bの期間」以外の期間において、開始する。つまり、「第1周期データCDの送信中の期間」および「送信禁止期間Bの期間」においては、第2送信部170(2)は、第2周期データNDの送信を開始しない。第2送信部170(2)は、送信可能状態にある第2周期データNDを所定回数の制御周期にわたって連続して送信できないと、「第2周期データNDを所定回数の制御周期にわたって連続して送信できていない」ことを、指示部180と通知部190とに通知する。言い換えれば、第2送信部170(2)は、第2周期データNDが第2送信キューTXQ1にセットされてから所定回数の制御周期にわたって連続して送信できないと、その状況を指示部180と通知部190とに通知する。
指示部180は、第2送信部170(2)に、送信禁止期間B中であっても、第2周期データNDの送信を開始するように指示し、つまり、第2周期データNDの強制送信を指示する。指示部180は、第2送信部170(2)から「第2周期データNDが送信可能状態になってから所定回数の制御周期にわたって連続して第2周期データNDを送信していない」ことを通知されると、自動的に、第2送信部170(2)に強制送信を指示してもよい。また、指示部180は、ユーザから第2周期データNDの強制送信を指示されると、第2送信部170(2)に、強制送信を指示してもよい。指示部180からこの指示を受けた第2送信部170(2)は、送信禁止期間B中であっても、第2送信キューTXQ1にセットされた第2周期データNDの送信を開始する。
通知部190は、第2送信部170(2)から「第2周期データNDが送信可能状態になってから所定回数の制御周期にわたって連続して第2周期データNDを送信していない」ことを通知されると、以下の処理の実行を指示する。すなわち、通知部190は、「所定回数の制御周期にわたって連続して、第2周期データNDが送信されていない」旨を、例えばマイクロプロセッサ103等を介して、解析用デバイス50に通知して、その旨を解析用デバイス50に表示させる。
(FPGAの備える記憶部)
図1に例示するFPGA101は、内部RAM120を備えている。内部RAM120は、FPGA101が使用する各種データを格納する記憶装置である。内部RAM120は、FPGA101が実行する各種処理の制御プログラム、および、その制御プログラムを実行するときに読み出す各種データを非一時的に記憶している。内部RAM120はさらに、送信キューテーブル121、基準時刻テーブル122、および、設定情報123を格納している。
送信キューテーブル121は、複数の送信キューTXQ0、TXQ1、・・・、TXQnを含んでいる。なお、以下の説明において、複数の送信キューTXQ0、TXQ1、・・・、TXQnの各々を区別する必要が無い場合、単に「送信キューTXQ」と称する。送信キューTXQには上位システムからの送信データがバッファリングされ、例えば、マイクロプロセッサ103によって、チップセット102を介して、メインメモリ104にセットされた送信データは、取得部110によって送信キューTXQにセットされる。
例えば、第1送信キューTXQ0には、第1周期データCDと、その第1周期データCDの送信開始時刻Sとが、バッファリングされる(言い換えれば、第1周期データCDと、送信開始時刻Sとが、セットされる)。同様に、第2送信キューTXQ1には、第2周期データNDがバッファリングされる(つまり、セットされる)。
送信キューTXQへの送信データのセットが完了すると、送信データは、フィールドネットワーク20およびPLCシステムバス400などの、実際のネットワーク回線への送信を開始できる状態になる。送信キューTXQは、例えば、FIFO(first in, first out、先入れ先出し)方式を採用している。
なお、内部RAM120には、CPUユニット100の外部から受信するデータが格納される、不図示の受信キューテーブルがさらに格納されていてもよい。受信キューテーブルは、複数の受信キューRXQ0、RXQ1、・・・、RXQnを含み、RXQ0、RXQ1、・・・、RXQnの各々は、FIFO方式を採用していてもよい。
基準時刻テーブル122には、算出部130により算出される基準時刻Tが格納される。基準時刻Tは、送信開始時刻Sの代わりに、送信禁止期間Bを設定するための基準として算出され、具体的には、算出部130によって算出される(=生成される)。
算出部130は、例えば「T(0)=S(0)」として、「或る制御周期における送信開始時刻S」に「第1周期データCDの送信周期Cに相当する時間間隔」を付加した時刻を、「次の制御周期における基準時刻T」として算出する。そして、算出部130は、算出した「次の制御周期における基準時刻T」を基準時刻テーブル122に格納する。
設定情報123には、送信周期Cを含む、制御システム1の動作等に関係する、各種の設定情報が格納されている。送信周期Cは、「制御周期」とも称され、定周期で送信する高優先データである第1周期データCDの送信時間間隔である。FPGA101は、送信周期Cを以下の2つの方法のいずれかによって取得する。すなわち、FPGA101は、上位システムから(具体的には、チップセット102を介して、マイクロプロセッサ103から)通知される時間間隔を、送信周期Cとして、設定情報123に格納してもよい。また、FPGA101は、所定回数の制御周期分(例えば、N周期分)の、第1周期データCDの送信開始時刻Sの間の平均時間間隔を算出し、算出した平均時間間隔を、送信周期Cとして、設定情報123に格納してもよい。
これまでに概要を説明してきたCPUユニット100(特に、FPGA101)について、次に、図3等を用いて、CPUユニット100(特に、FPGA101)の実行する処理について、その概要を説明していく。
§3.動作例
(PLC10が実行する処理の全体概要)
図3は、CPUユニット100(特に、FPGA101)が実行する処理の全体概要を示すフロー図である。図3に例示するように、算出部130は、N周期目の送信開始時刻S(n)を取得し(S100)、取得した送信開始時刻S(n)に送信周期Cに相当する時間を付加して、N+1周期目の基準時刻T(n+1)を算出する(S200)。算出部130は、算出した基準時刻T(n+1)を基準時刻テーブル122に格納する。
第1生成部140および第2生成部150は、送信禁止期間算出処理を実行する(S300)。送信禁止期間算出処理の詳細については、図4を用いて後述する。また、設定部160は、送信禁止期間設定処理を実行する(S400)。送信禁止期間設定処理の詳細については、図5を用いて後述する。
第2送信部170(2)は、第2送信キューTXQ1に第2周期データNDが格納されているかを確認する(S500)。第2送信キューTXQ1に第2周期データNDが格納されていないことが確認されると(S500でNo)、つまり、送信可能状態にある第2周期データNDがないことが確認されると、設定部160は処理を終了し、つまり、送信禁止期間Bは設定されない。送信可能状態にある第2周期データNDはないため、第2送信部170(2)は、第2周期データNDの送信を開始しない。また、第1送信部170(1)は、第1送信キューTXQ0にセットされた第1周期データCDの送信を、第1周期データCDと共に第1送信キューTXQ0にセットされている送信開始時刻Sに、開始する。
第2送信キューTXQ1に第2周期データNDが格納されていることが確認されると(S500でYes)、第2送信部170(2)は、送信禁止期間B中であるかを確認する(S600)。第2送信部170(2)は、送信禁止期間B中であることを確認すると(S600でYes)、第1周期データCDの送信が完了した後、送信禁止期間B以外の期間に、第2周期データNDの送信を開始する(S700)。第2送信部170(2)は、送信禁止期間B中でないことを確認すると(S600でNo)、第2周期データNDの送信を開始する(S800)。
図3に例示した処理フローは、以下のように整理することができる。すなわち、PLC10(特に、FPGA101)が実行する制御方法は、制御周期(具体的には、送信周期C)ごとに第1周期データCDを出力する制御装置の制御方法であって、第1周期データCDを、第1周期データCDの送信開始時刻Sと共に取得する取得ステップ(S100)と、Nを0以上の自然数として、N周期目の制御周期(=送信周期C)に送信すべき第1周期データCDの送信開始時刻S(n)に、送信周期Cに相当する時間間隔を付加して、N+1周期目の基準時刻T(n+1)を算出する算出ステップ(S200)と、N周期目の制御周期に送信すべき第1周期データCDの送信開始時刻S(n)と、N周期目の基準時刻T(n)との差を用いて生成された送信禁止期間B(n+1)を、N+1周期目の基準時刻T(n+1)の前および後ろの少なくとも一方に設定する設定ステップ(S400)と、設定ステップにて設定された送信禁止期間B(n+1)でない期間に、第1周期データCDより優先度が低い第2周期データNDの送信を開始する送信ステップ(S700)と、を含んでいる。
前記の方法によれば、前記制御方法は、N周期目の制御周期に送信すべき第1周期データCDの送信開始時刻S(n)と、N周期目の基準時刻T(n)との差を考慮して、第2周期データNDの送信開始を禁止する送信禁止期間B(n+1)を算出する。そして、前記制御方法は、N周期目の送信開始時刻S(n)に送信周期Cに相当する時間間隔を付加して算出した、N+1周期目の基準時刻T(n+1)の前および後ろの少なくとも一方に、送信禁止期間B(n+1)を設定する。その上で、前記制御方法は、送信禁止期間B(n+1)でない期間に、第2周期データNDの送信を開始する。つまり、前記制御方法は、N周期目における送信開始時刻S(n)と基準時刻T(n)とが乖離する場合にも、N周期目における送信開始時刻Sと基準時刻T(n)との差を考慮した送信禁止期間B(n+1)を、N+1周期目の基準時刻T(n+1)の前および後ろの少なくとも一方に設定する。
したがって、前記制御方法は、N周期目における送信開始時刻S(n)と基準時刻T(n)とが乖離する場合にも、両者の差を考慮した適切な送信禁止期間B(n+1)を設定し、N+1周期目の送信開始時刻S(n+1)に第1周期データCDの送信を開始できるとの効果を奏する。
(送信禁止期間算出処理の詳細)
図4は、図3の送信禁止期間算出処理の詳細を説明するフロー図である。図4に例示するように、先ず第2生成部150は、N周期目の第1周期データCDの送信開始時刻S(n)を取得する(S310)。第2生成部150は、第1送信キューTXQ0を参照して、第1送信キューTXQ0に第1周期データCDと共にセットされている送信開始時刻S(n)を取得してもよい。また、第2生成部150は、送信部170(特に、第1送信部170(1))から、「第1周期データCDの実際の送信開始時刻」を、送信開始時刻S(n)として、取得てもよい。
また、第2生成部150は、基準時刻テーブル122を参照して、N周期目の基準時刻T(n)を取得する(S320)。第2生成部150は、取得した送信開始時刻S(n)と基準時刻T(n)とを比較し、N周期目の送信開始時刻S(n)とN周期目の基準時刻T(n)との差(=差分期間V(n))を算出する(S330)。第2生成部150は、例えば、「差分期間V(n)=送信開始時刻S(n)−基準時刻T(n)」として、差分期間V(n)を算出する。第2生成部150は、算出した差分期間V(n)を、設定部160に通知する。
第1生成部140は、第2送信キューTXQ1にセットされた第2周期データNDのデータ量を測定し(S340)、第2周期データNDの送信に要する期間(=基礎期間Bb(n+1))を算出する(S350)。第1生成部140は、算出した基礎期間Bb(n+1)を、設定部160に通知する。
(送信禁止期間設定処理の詳細)
図5は、図3の送信禁止期間設定処理の詳細を説明するフロー図である。図5に例示するように、設定部160は、N周期目の基準時刻T(n)とN周期目の送信開始時刻S(n)とが一致しているかを確認する(S410)。設定部160は、例えば、第2生成部150から通知された差分期間V(n)について、「差分期間V(n)=0」であると、基準時刻T(n)と送信開始時刻S(n)とが一致していると判定し、差分期間V(n)が0でないと、両者が一致しないと判定する。
基準時刻T(n)と送信開始時刻S(n)とが一致した(つまり、差分期間V(n)が0である)ことを確認すると(S410でYes)、設定部160は、以下のように送信禁止期間B(n+1)を設定する。すなわち、設定部160は、N+1周期目の基準時刻T(n+1)が終点となるよう、基礎期間Bb(n+1)を含む期間を、送信禁止期間B(n+1)として設定する(S420)。例えば、設定部160は、「基準時刻T(n+1)から基礎期間Bb(n+1)を遡った時刻」を始点とし、「基準時刻T(n+1)」を終点とする期間を、送信禁止期間B(n+1)として設定する。
基準時刻T(n)と送信開始時刻S(n)とが一致しない(つまり、差分期間V(n)が0でない)ことを確認すると(S410でNo)、設定部160は、N周期目の基準時刻T(n)よりN周期目の送信開始時刻S(n)が遅いかを判定する(S430)。設定部160は、「差分期間V(n)=送信開始時刻S(n)−基準時刻T(n)>0」であると、N周期目の基準時刻T(n)よりN周期目の送信開始時刻S(n)が遅いと判定してもよい。また、設定部160は、「差分期間V(n)<0」であると、N周期目の基準時刻T(n)よりN周期目の送信開始時刻S(n)が早いと判定してもよい。
基準時刻T(n)より送信開始時刻S(n)が遅いこと(つまり、「差分期間V(n)>0」)を確認すると(S430でYes)、設定部160は、以下のように送信禁止期間B(n+1)を設定する。すなわち、設定部160は、N+1周期目の基準時刻T(n+1)が終点となるよう、基礎期間Bb(n+1)と調整期間Ba(n+1)(=差分期間V(n))との合計を含む期間を、送信禁止期間B(n+1)として設定する(S440)。例えば、設定部160は、「基準時刻T(n+1)から、基礎期間Bb(n+1)と調整期間Ba(n+1)との合計期間を遡った時刻」を始点とし、「基準時刻T(n+1)」を終点とする期間を、送信禁止期間B(n+1)として設定する。
基準時刻T(n)より送信開始時刻S(n)が早いこと(つまり、「差分期間V(n)<0」)を確認すると(S430でNo)、設定部160は、以下のように送信禁止期間B(n+1)を設定する。すなわち、設定部160は、N+1周期目の基準時刻T(n+1)が終点となるよう、基礎期間Bb(n+1)を含む期間を、送信禁止期間Bに設定する(S450)。例えば、設定部160は、「基準時刻T(n+1)から基礎期間Bb(n+1)を遡った時刻」を始点とし、「基準時刻T(n+1)」を終点とする期間を、送信禁止期間B(n+1)として設定する。
さらに、設定部160は、N+1周期目の基準時刻T(n+1)が始点となるよう、調整期間Ba(n+1)(=差分期間V(n))を含む期間を、送信禁止期間B(n+1)として設定する(S460)。例えば、設定部160は、「基準時刻T(n+1)」を始点とし、「基準時刻T(n+1)から調整期間Ba(n+1)を経過した時刻」を終点とする期間を、送信禁止期間B(n+1)として設定する。
S450およびS460によって、「基準時刻T(n+1)から基礎期間Bb(n+1)を遡った時刻」を始点とし、「基準時刻T(n+1)から調整期間Ba(n+1)を経過した時刻」を終点とする期間が、送信禁止期間B(n+1)として設定される。
図3から図5を用いて説明してきたように、PLC10は、N周期目における第1周期データCDの送信状態に合わせて、N+1周期目に設定する送信禁止期間B(n+1)の長さを動的に変更し、最適な長さの送信禁止期間B(n+1)を設定する。以下、図6および図7を用いて、PLC10が実行する具体的な処理例を説明する。
(処理例1 N周期目において、基準時刻Tより送信開始時刻Sが遅い場合)
図6は、N周期目において、基準時刻T(n)より送信開始時刻S(n)が遅い場合にPLC10(特に、FPGA101)が実行する処理の一例を、従来までの調整方法と対比して説明する図である。
すなわち、図6の(A)は、図9の(A)と同様であり、つまり、N周期目の送信開始時刻S(n)が、N周期目の基準時刻T(n)よりも遅れた場合について、従来技術において発生する問題が示されている。図6の(A)に示すように、N周期目の送信開始時刻S(n)が、N周期目の基準時刻T(n)よりも遅れた場合、送信開始時刻S(n)に「送信周期Cに相当する時間間隔」を付加した時刻である基準時刻T(n+1)は、以下の傾向を示す。すなわち、N+1周期目の基準時刻T(n+1)は、N+1周期目の送信開始時刻S(n+1)よりも遅れる傾向がある。ここで、従来技術は、「第2周期データNDの送信に要する時間」を、基準時刻T(n+1)の前に、送信禁止期間Bとして設定する。つまり、従来技術は、送信開始時刻S(n+1)よりも遅れた時刻を基準時刻T(n+1)として、その基準時刻T(n+1)の前に、「第2周期データNDの送信に要する時間」である送信禁止期間Bを設定する。
前述の通り、「送信開始時刻S(n+1)から第2周期データNDの送信に要する時間を遡った時刻」から「送信開始時刻S(n+1)」までの期間を送信禁止期間Bとすることで、送信開始時刻S(n+1)に第1周期データCDの送信を開始することができる。しかしながら、図6の(A)においては、送信開始時刻S(n+1)よりも遅れた基準時刻T(n+1)の前に、「第2周期データNDの送信に要する時間」である送信禁止期間Bが設定されている。つまり、従来技術が基準時刻T(n+1)の前に設定する送信禁止期間Bは、「送信開始時刻S(n+1)から第2周期データNDの送信に要する時間を遡った時刻」から「送信開始時刻S(n+1)」までの期間よりも、遅れている。
その結果、第2周期データNDが送信可能状態となった時点は、「第1周期データCDの送信中の期間」にも「送信禁止期間Bの期間」にも含まれておらず、第2周期データNDは、送信可能状態となった直後に、送信が開始されている。図6の(A)において、第2周期データNDの送信が完了する時刻は送信開始時刻S(n+1)より遅く、第2周期データNDの送信中は第1周期データCDを送信できないため、送信開始時刻S(n+1)に第1周期データCDの送信を開始することができない。
図6の(B)は、送信開始時刻S(n)が基準時刻T(n)よりも遅れた場合に、PLC10が設定する送信禁止期間B(n+1)について説明する図である。N周期目の送信開始時刻S(n)がN周期目の基準時刻T(n)より遅い場合、FPGA101(特に、設定部160)は、送信開始時刻S(n)と基準時刻T(n)との差分期間である差分期間V(n)を、N+1回目の前側送信禁止期間として設定する。すなわち、設定部160は、差分期間V(n)(=調整期間Ba(n+1))と基礎期間Bb(n+1)との合計期間を含む期間の終点が基準時刻T(n+1)となるように、送信禁止期間B(n+1)を設定する。
終点が基準時刻T(n+1)となるように、調整期間Ba(n+1)と基礎期間Bb(n+1)との合計期間を含む送信禁止期間B(n+1)が設定されることにより、図6の(B)では第2周期データNDの送信が適切に禁止されている。すなわち、図6の(B)では、図6の(A)の送信禁止期間B(n+1)よりも調整期間Ba(n+1)分だけ長い送信禁止期間B(n+1)が設定されている。
図6の(A)では、「適切な送信禁止期間B(n+1)によって第2周期データNDの送信開始を禁止する」のに失敗しているため、第2周期データNDの送信によって、第1周期データCDの送信開始が、送信開始時刻S(n+1)よりも遅れている。これに対して、図6の(A)では、「適切な送信禁止期間B(n+1)によって第2周期データNDの送信開始を禁止する」ことができており、第1周期データCDの送信は、送信開始時刻S(n+1)に開始されている。
(処理例2 N周期目において、基準時刻Tより送信開始時刻Sが早い場合)
図7は、N周期目において、基準時刻T(n)より送信開始時刻S(n)が早い場合にPLC10(特に、FPGA101)が実行する処理の一例を、従来までの調整方法と対比して説明する図である。
すなわち、図7の(A)は、図9の(B)と同様であり、つまり、N周期目の送信開始時刻S(n)が、N周期目の基準時刻T(n)よりも早い場合について、従来技術において発生する問題を説明する図である。図7の(A)に示すように、N周期目の送信開始時刻S(n)が、N周期目の基準時刻T(n)よりも早い場合、送信開始時刻S(n)に「送信周期Cに相当する時間間隔」を付加した時刻である基準時刻T(n+1)は、以下の傾向を示す。すなわち、N+1周期目の基準時刻T(n+1)は、N+1周期目の送信開始時刻S(n+1)よりも早くなる傾向がある。ここで、従来技術は、「第2周期データNDの送信に要する時間」を、基準時刻T(n+1)の前に、送信禁止期間Bとして設定する。つまり、従来技術は、送信開始時刻S(n+1)よりも早い時刻を基準時刻T(n+1)として、その基準時刻T(n+1)の前に、「第2周期データNDの送信に要する時間」である送信禁止期間Bを設定する。
前述の通り、「送信開始時刻S(n+1)から第2周期データNDの送信に要する時間を遡った時刻」から「送信開始時刻S(n+1)」までの期間を送信禁止期間Bとすることで、送信開始時刻S(n+1)に第1周期データCDの送信を開始することができる。しかしながら、図7の(A)においては、送信開始時刻S(n+1)よりも早い基準時刻T(n+1)の前に、「第2周期データNDの送信に要する時間」である送信禁止期間Bが設定されている。つまり、従来技術が基準時刻T(n+1)の前に設定する送信禁止期間Bは、「送信開始時刻S(n+1)から第2周期データNDの送信に要する時間を遡った時刻」から「送信開始時刻S(n+1)」までの期間よりも、早い。
その結果、第2周期データNDが送信可能状態となった時点は、「第1周期データCDの送信中の期間」にも「送信禁止期間Bの期間」にも含まれておらず、第2周期データNDは、送信可能状態となった直後に、送信が開始されている。図7の(A)において、第2周期データNDの送信が完了する時刻は送信開始時刻S(n+1)より遅く、第2周期データNDの送信中は第1周期データCDを送信できないため、送信開始時刻S(n+1)に第1周期データCDの送信を開始することができない。
図7の(B)は、送信開始時刻S(n)が基準時刻T(n)よりも早い場合に、PLC10が設定する送信禁止期間B(n+1)について説明する図である。N周期目の送信開始時刻S(n)がN周期目の基準時刻T(n)より早い場合、FPGA101(特に、設定部160)は、送信開始時刻S(n)と基準時刻T(n)との差分期間である差分期間V(n)を、N+1回目の後側送信禁止期間として設定する。すなわち、設定部160は、差分期間V(n)(=調整期間Ba(n+1))を、基準時刻T(n+1)の後に、差分期間V(n)の始点が基準時刻T(n+1)となるように、送信禁止期間B(n+1)として設定する。具体的には、設定部160は、「基準時刻T(n+1)」から「基準時刻T(n+1)から差分期間V(n)(=調整期間Ba(n+1))を経過した時刻」までを、送信禁止期間B(n+1)として設定する。
また、設定部160は、基礎期間Bb(n+1)の終点が基準時刻T(n+1)となるように、基礎期間Bb(n+1)を、送信禁止期間B(n+1)として設定する。具体的には、設定部160は、「基準時刻T(n+1)から基礎期間Bb(n+1)を遡った時刻」から「基準時刻T(n+1)」までを、送信禁止期間B(n+1)として設定する。
したがって、設定部160は、「基準時刻T(n+1)から基礎期間Bb(n+1)を遡った時刻」から、「基準時刻T(n+1)から調整期間Ba(n+1)を経過した時刻」までを、送信禁止期間B(n+1)として設定する。
「基準時刻T(n+1)から基礎期間Bb(n+1)を遡った時刻」から、「基準時刻T(n+1)から調整期間Ba(n+1)を経過した時刻」までが、送信禁止期間B(n+1)として設定されることにより、図7の(B)では第2周期データNDの送信が適切に禁止されている。すなわち、図7の(B)では、図7の(A)の送信禁止期間B(n+1)よりも調整期間Ba(n+1)分だけ長い送信禁止期間B(n+1)が設定されている。
図7の(A)では、「適切な送信禁止期間B(n+1)によって第2周期データNDの送信開始を禁止する」のに失敗しているため、第2周期データNDの送信によって、第1周期データCDの送信開始が、送信開始時刻S(n+1)よりも遅れている。これに対して、図7の(A)では、「適切な送信禁止期間B(n+1)によって第2周期データNDの送信開始を禁止する」ことができており、第1周期データCDの送信は、送信開始時刻S(n+1)に開始されている。
(通知処理および強制送信処理)
例えば、送信周期C(=制御周期)に対して、送信時間が長い第2周期データND(つまり、データ量の大きい第2周期データND)を送信しようとする場合、第2周期データNDの送信について、以下の問題が発生し得る。すなわち、第2周期データNDのデータ量に比例して基礎期間Bbは大きくなり、ここで、送信禁止期間Bの長さは、基礎期間Bbの長さ以上である(送信禁止期間Bは、基礎期間Bbと調整期間Baとの合計期間を含んでいる)。そのため、第2周期データNDのデータ量が大きくなると、送信禁止期間Bの長さが、送信周期C(=制御周期)の長さ以上となり得る。その場合、例えば、或る制御周期の送信開始時刻S(n)と次の制御周期の送信開始時刻S(n+1)との間が常に送信禁止時間Bとなり、第2周期データNDを送信できなくなるという問題が発生し得る。
その対応として、所定回数の制御周期にわたって連続して第2周期データNDの送信ができないと、PLC10は、そのような状況の発生を外部に通知する通知処理を実行する。また、PLC10は、送信禁止期間Bに関わらず、第2周期データNDの送信を開始する強制送信処理を実行する。
例えば、通知部190は、「送信禁止期間Bが原因となって、第2周期データNDの送信ができない状態」を、予め決められている回数(例えば、M回)の制御周期にわたって連続で検知すると、以下の処理を実行する。
すなわち、通知部190は、「送信禁止期間Bが原因となって、M周期にわたって連続して、第2周期データNDの送信ができない状態」の発生を、上位システム(例えば、マイクロプロセッサ103)に、通知する。上位システムは、CPUユニット100に接続されている解析用デバイス50へ、「送信禁止期間Bが原因となって、M周期にわたって連続して、第2周期データNDの送信ができない状態」の発生を通知する。解析用デバイス50は、上位システムからの通知を受信すると、「送信禁止期間Bが原因となって、M周期にわたって連続して、第2周期データNDの送信ができない状態」の発生を、ユーザに表示する。
また、上位システム(例えば、マイクロプロセッサ103)は、第2周期データNDの強制送信処理の実行を指示するユーザ操作を受け付けると、第2周期データNDの強制送信処理の実行を、例えばチップセット102等を介して、FPGA101に指示する。FPGA101(特に、指示部180)は、第2送信部170(2)に、送信禁止期間B中であっても、第2周期データNDの送信を開始するように指示する。第2送信部170(2)は、指示部180からの指示に従って、第2送信キューTXQ1にセットされている第2周期データNDの送信を、送信禁止期間Bであるか否かに関わらず、開始する。
§4.変形例
これまで、第1送信キューTXQ0および第2送信キューTXQ1を用いて送信キューの説明を行なってきたが、送信キューが2つであることは必須ではなく、PLC10におけるCPUユニット100(特に、FPGA101)は複数の送信キューを備えてもよい。すなわち、CPUユニット100(特に、FPGA101)が送信するデータに付与される複数の優先度(第1、第2、・・・第N)の各々に対応する、複数の送信キュー(TXQ0、TXQ1、・・・TXQ(n−1))を、PLC10におけるCPUユニット100(特に、FPGA101)は備えていてもよい。
また、PLC10におけるCPUユニット100(特に、FPGA101)は、複数の送信キュー(TXQ0、TXQ1、・・・TXQ(n−1))の各々にセットされるデータについての送信を制御する、複数の送信部を備えていてもよい。例えば、FPGA101は、第1送信キューTXQ0から第N+1送信キューTXQnの各々にセットされているデータの各々の送信を制御する第1送信部170(1)から第N+1送信部170(n)を備えてもよい。
これまで、Nを0以上の自然数として、算出部130が、N周期目の送信開始時刻S(n)に、制御周期(=送信周期C)に相当する時間間隔を付加して、N+1周期目の基準時刻T(n+1)を算出する例を説明してきた。ここで、Mを1以上の自然数として、算出部130は、N周期目の送信開始時刻S(n)に、「制御周期(=送信周期C)に相当する時間間隔」のM倍の期間を付加して、N+M周期目の基準時刻T(n+m)を算出してもよい。
また、前述の通り、FPGA101は、マイクロプロセッサ103等から送信周期Cを通知されてもよいし、所定回数の制御周期分の第1周期データCDの送信開始時刻Sの間の平均時間間隔を算出し、算出した平均時間間隔を、送信周期Cとしてもよい。ここで、複数の第1周期データCDの送信開始時刻Sの間の平均時間間隔から送信周期Cを算出する場合、或る制御周期において送信すべき第1周期データCDが無い場合、送信周期Cを正確に算出するため、FPGA101は、以下の処理を実行する。すなわち、FPGA101は、P番目の制御周期において送信すべき第1周期データCDがない場合、P−1番目の制御周期の送信開始時刻S(p−1)と、P+1番目の制御周期の送信開始時刻S(p+1)との間の時間間隔は、送信周期Cの算出に用いない。
これまで、取得部110、内部RAM120、算出部130、第1生成部140、第2生成部150、設定部160、送信部170、指示部180、および、通知部190が、FPGA(Field-Programmable gate array)において実現される例を説明してきた。しかしながら、これらの機能ブロックがFPGAを用いて実現されることは必須ではなく、例えば、ASIC(Application Specific Integrated Circuit)を用いて実現されてもよい。つまり、取得部110、内部RAM120、算出部130、第1生成部140、第2生成部150、設定部160、送信部170、指示部180、および、通知部190は、ASICを用いて実現されてもよい。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。