(58)【調査した分野】(Int.Cl.,DB名)
前記CPUは、前記割込制御部から前記割込信号が通知されたものの、前記フラグデータを読み込めないときには、ポーリングにより前記フラグデータの有無を監視することを特徴とする
請求項9に記載の通信制御装置。
【発明を実施するための形態】
【0011】
以下、本発明の一実施形態を、図面を参照して詳細に説明する。
【0012】
図1(a)は、リングネットワークの通信システムの構成図である。
通信システムは、マスタ装置(通信制御装置)1とスレーブ装置2とが制御ネットワーク9で接続されて構成される。
マスタ装置1が送信するパケットは、各スレーブ装置2に対して右回りで順番に到達し、前のスレーブ装置2は後のスレーブ装置2へとパケットを転送する。スレーブ装置2は、転送されてくるパケットに対して、必要に応じてデータアクセスしてもよいし、自身と関係ないパケットであれば、データアクセスをせずに転送してもよい。そして、パケットが一巡することで、マスタ装置1へとパケットが戻ってくる。
【0013】
このパケットには、マスタ装置1が生成した情報(制御指令、管理情報など)だけでなく、途中のスレーブ装置2が追記した情報(計測情報、管理情報など)も含まれる。このスレーブ装置2の追記処理により、パケットのデータサイズが途中で増えることもある。マスタ装置1は、自身が送信したパケットが一巡して戻ってきたとき、その受信パケットに再度アクセスすることで、途中のスレーブ装置2が追記した計測情報などを読み取る。そのため、マスタ装置1はパケットの送信時だけでなく、パケットの受信時にもパケット処理を起動する。
【0014】
ここで、マスタ装置1はパケットの到着を常時監視すると、その監視の負荷によりCPUの処理能力が他の処理に使えなくなってしまう。よって、マスタ装置1はパケットの到着時に自装置内で発行される「割込信号」をもとに、パケット処理を起動する。本実施形態の主な特徴は、マスタ装置1のCPUの待ち時間がなるべく少なくなるように、割込信号の発行時期を最適化したところである。
【0015】
マスタ装置1は、産業分野、FA(Factory automation)、半導体製造装置、制御用装置、コントローラ、PLC(Programmable Logic Controller)、電力系統におけるIED(Intelligent Electronic Device)、保護制御装置、車載システムのECUなどに適用可能である。
スレーブ装置2として、産業制御機器、車載ECU(Engine Control Unit)、変電所監視制御システムを構成する保護制御装置、IED(Intelligent Electronic Device)、MU(Merging Unit)、サーボコントローラ、サーボアンプ、サーボモータなどが例示される。サーボモータは、産業用製造装置(ロボットアーム、チップマウンタ、工作機械テーブルなど)を動作させる。
【0016】
図1(b)は、ツリーネットワークの通信システムの構成図である。
図1(a)との違いとして、ネットワークトポロジをツリー状にし、かつ、装置間を接続する中継装置3を追加している。
中継装置3は、制御ネットワーク9を構成し、マスタ装置1、スレーブ装置2、中継装置3から通信されるパケットを他の装置に対して転送する機能を有する。中継装置3として、ネットワークスイッチ、ルータ、ハブ、リピータ、ゲートウェイ、SDN(Software Defined Network)におけるパケット・経路制御を書き換え可能なスイッチなどが挙げられる。
【0017】
さらに、
図1(b)では、マスタ装置1の各種処理に必要なパラメータを送信する管理装置8も追加している。管理装置8は、マスタ装置1などから通信システムの最新のシステム構成(例えば、特定装置に障害が発生していないか)の通知を受け、前記の必要なパラメータを作成する。
なお、管理装置8は、単独の機器、装置とは限らず、複数の機器、装置で構成してもよい。管理装置8の実装として、PC、サーバ、ワークステーション、クラウド、SAAS(Software as a Service)、SCADAなどによる構成が例示される。
また、管理装置8は、他装置(マスタ装置1、スレーブ装置2、中継装置3)と通信し、その通信相手の設定や状態を監視するためのHMI(Human Machine Interface)機能、SCADA(Supervisory Control and Data Acquisition)の機能、DCS(Distributed Control System)の機能、ストレージサーバの機能を有していてもよい。
【0018】
制御ネットワーク9は、IEEE 802.3、各種産業用ネットワーク、IEC 61784、IEC 61158、電力分野における監視制御通信プロトコルIEC 61850、IEC 62439、車載ネットワークにおけるIEEE 802.1 AVB(Audio Video Bridging)、CAN(Controller Area Network:登録商標)、DeviceNet、RS−232C、RS−422、RS−485などが例示される。また、制御ネットワーク9において、通信パケットの優先度を高くしてもよいし、所定時間帯、または通信帯域を確保、予約してもよい。
【0019】
また、制御ネットワーク9は、高信頼化のため、冗長化されることがある。冗長化の方式は通信経路を冗長に構成し、障害時の冗長化した経路の利用方法は、IEEE802.17のRPR(Resilient Packet Ring)などの障害発生時に冗長経路を利用する方式と、IEC62439−3におけるHSR(High availability Seamless Redundancy)、PRP(Parallel Redundancy Protocol)などの冗長経路を常時用いる方式がある。
IEEE802.17は、障害復帰時間が0ではないが、効率よくネットワーク回線の帯域を利用できる。一方、PRPとHSRは、常時、冗長経路を利用するため、通信帯域の利用効率は下がるが、障害復帰時間が0である。障害復帰時間が0であるため、PRP、HSRは制御システムに適している。RPR、HSRは、ネットワークを構成するノードがリングトポロジを構成するリングネットワークである。
【0020】
そこで、
図1(a)では、制御ネットワーク9として、IEC 62439−3のHSRに定義される冗長化のリングネットワークを例示している。このネットワークでは、マスタ装置1から同じパケットが複製され、右回りと左回りとで別々に送信される。パケットの宛先となるスレーブ装置2において、片方の複製パケットが処理されると、そのパケットは転送されず、マスタ装置1にパケットが戻ってくることはない。そのため、何らかの異常がスレーブ装置2に発生した場合には、複製パケットはマスタ装置1へ周回して戻ってくる。これにより、マスタ装置1はスレーブ装置2に異常が発生したと判定できる。
【0021】
以上、
図1で説明した各装置の台数は図示した台数に限定されず、0台も含めて任意の台数でもよい(例えば、中継装置3を用いないで制御ネットワーク9を構成する場合)。また、マスタ装置1とスレーブ装置2を区別して説明するが、あるパケットについてのマスタ装置1が別のパケットについてのスレーブ装置2として機能してもよい。つまり、1台の装置が、マスタ装置1とスレーブ装置2との両方の機能を有していてもよい。
【0022】
図2は、
図1の通信システムで転送されるパケットのフォーマットを示す図である。
1つのパケットは、先頭から順に、イーサヘッダ、データ領域、トレイラが含まれる。
1つのデータ領域には、1つの共通ヘッダと、1つ以上のデータグラムとが含まれる。
1つのデータグラムには、ヘッダ、データ、トレイラが含まれる。
【0023】
図3(a)は、通信システムのマスタ装置1の構成図である。マスタ装置1は、CPU11と、通信制御部12と、メモリ14と、不揮発性記憶媒体15とがバス16で接続される。また、通信制御部12の先にはPHY13が接続されており、そのPHY13を介して他装置(スレーブ装置2)と通信が行われる。
CPU11は、不揮発性記憶媒体15からプログラムをメモリ14に転送して実行する。実行処理プログラムとしては、オペレーティングシステム(以下、OSと称す)やOS上で動作するアプリケーションプログラムが例示される。CPU11は、マルチコアCPU、メニーコアCPUを用いてもよい。
【0024】
通信制御部12は、CPU11上で動作するソフトウェアから送信要求、送信データを受け取り、PHY13を用いて制御ネットワーク9に対して送信する。また、制御ネットワーク9から受信したデータを、バス16を介してCPU11、メモリ14、不揮発性記憶媒体15へ転送する。通信制御部12の実装例としては、FPGA、CPLD、ASIC、ゲートアレイなどのICが例示される。あるいは、CPU11と一体化して構成されてもよい。通信制御部12をMAC層、PHY層を含めたIEEE 802.3通信デバイスとしてもよいし、また、PHY機能まで含めて通信制御部12に包含してもよい。この場合、通信制御部12の実装例としては、IEEE 802.3規格のMAC(Media Access Control)チップ、PHY(物理層)チップ、MACとPHYの複合チップを含む。なお、通信制御部12は、CPU11や、コンピュータ内部の情報経路を制御するチップセットに含まれていてもよい。
【0025】
PHY13は、制御ネットワーク9との通信機能を実装した送受信機ICである。PHY13の提供する通信規格としてIEEE 802.3のPHY(物理層)チップが例示される。なお、図示した構成では、PHY13と通信制御部12が接続されているので、IEEE 802.3のMAC(Media Access Control)層の処理は通信制御部12に含まれる。ただし、MAC機能を提供するICを通信制御部12とPHY13間に配置する構成や、MAC機能を提供するICとPHY13を組み合わせた通信用ICと通信制御部12を接続する構成にしてもよい。
【0026】
メモリ14は、CPU11が動作するための一時的な記憶領域であり、不揮発性記憶媒体15から転送したOS、アプリケーションプログラムなどが格納される。メモリ14として、スタティックRAM、DRAM、NVRAMなどが挙げられる。
不揮発性記憶媒体15は、情報の記憶媒体で、OS、アプリケーション、デバイスドライバなどや、CPU11を動作させるためのプログラムの保存、プログラムの実行結果の保存に利用される。不揮発性記憶媒体15として、ハードディスクドライブ(HDD)やソリッドステートドライブ(SSD)、フラッシュメモリが例示される。また、取り外しが容易な外部記憶媒体として、フロッピー(登録商標)ディスク(FD)、CD、DVD、ブルーレイ(登録商標)、USBメモリ、コンパクトフラッシュ(登録商標)などの利用が例示される。
【0027】
バス16は、CPU11、通信制御部12、メモリ14、不揮発性記憶媒体15をそれぞれ接続する。バス16を流れるバス信号は、通信制御部12と、バス16に接続する他のデバイス(CPU11、メモリ14、不揮発性記憶媒体15など)との通信を可能とする。通信するデータは、制御指令や計測データ、あるいは通信制御部12の設定や状態情報が例示される。バス16としては、PCIバス、ISAバス、PCI Expressバス、システムバス、メモリバス、オンチップバスなどが例示される。
なお、マスタ装置1のハードウェア構成は、CPU11、通信制御部12、PHY13、メモリ14、不揮発性記憶媒体15のいずれか、または複数を一体化したIC、CPU、SoC(System on Chip) FPGAを用いてもよい。
【0028】
なお、マスタ装置1の各処理時間、通信遅延は確定的でジッタが少ないことが望ましい。例えば、CPU11上で動作するソフトウェアにおいて、割込信号の優先度を高く設定し、他の割込と割込処理の影響を受けないように構成することが例示される。バス16上の転送においても、送信データ、受信データの転送時はバスを最優先に利用できるように設定することや、所定のバス帯域、時間帯を確保、予約する構成が例示される。
また、通信制御部12の各機能部(
図3(b)で後記)においても、確定的に処理する構成(例えば、データサイズにより、処理時間が一意に決定される)が望ましい。スレーブ装置2、中継装置3においても、通信処理時間、転送時間が確定的(データサイズにより、一意に決定される)であることが望ましい。
【0029】
図3(b)は、マスタ装置1の通信制御部12の構成図である。
通信制御部12は、パケット通信に関する処理部(バス接続部30と、通信処理部31と、送信部32と、受信部33と、時刻同期制御部38)と、割込信号に関する処理部(起算契機検知部34と、割込制御部35と、計時部41)と、記憶部(処理時間情報記憶部36と、ネットワーク情報記憶部37)とを含めて構成される。
【0030】
バス接続部30は、マスタ装置1のハードウェア構成において、バス16と接続する。バス接続部30は、バス16の通信仕様に応じて、CPU11やメモリ14と通信する。通信制御部12内においては、バス16から転送された通信データを通信処理部31と送受信する。通信制御部12に関する制御情報、状態情報を保持し、バス16を通じてCPU11から設定され、またはCPU11へ提示する。
【0031】
通信処理部31は、通信データの生成、抽出や通信データの転送または転送タイミングの制御などの通信処理を実行する。バス接続部30と通信するデータの形式は、アプリケーションデータのみの形式でもよい。この場合、通信処理部31において、送信時は制御ネットワーク9の通信プロトコルにしたがうようにヘッダなどを付与してもよいし、受信時は受信パケットから通信プロトコルのヘッダなどを取り除いてもよい。あるいは制御ネットワーク9のプロトコルにしたがったパケット形式でバス接続部30と通信してもよい。
【0032】
通信データの転送タイミングは、バス接続部30からデータを転送されて、所定の処理(ヘッダ付与など)実行後に送信部32へ転送してもよいし、時刻同期制御部38が通知する所定のタイミングまで待機してから、送信部32へデータを転送してもよい。この場合、ヘッダ付与などの処理は、バス接続部30からデータ転送後に実行してもよいし、時刻同期制御部38からのタイミング通知後に実行してもよい。なお、時刻同期制御部38からの所定タイミングの通知は、制御システム内で同期した時刻に基づくが、そのような同期した時刻ではなく、通信制御部12内の時刻に基づいて、データ転送を開始してもよい。
【0033】
上記の説明は、主に送信処理を対象としたが、受信処理でも同様である。すなわち、受信部33から転送されたデータをバス接続部30へ転送する場合である。
また、PHY13が複数ある場合やバス16に接続するデバイス(CPU11やメモリ14、その他IC)に転送する場合の宛先を制御してもよい。例えば、通信データに宛先を示す情報(バス16上のアドレス、PHY13の指定)を付加し、その情報に基づいて制御してもよい。
【0034】
送信部32は、通信制御部12における送信機能部であり、マスタ装置1から制御ネットワーク9に対してパケットを送信する。なお、通信制御部12、PHY13のいずれか、または複数で構成してもよい。
受信部33は、通信制御部12における受信機能部であり、制御ネットワーク9から送信されたパケットを受信する。なお、通信制御部12、PHY13のいずれか、または複数で構成してもよい。
【0035】
起算契機検知部34は、通信制御部12内の「起算契機」の発生を検知して、割込制御部35へ通知する(起算契機の発生を検知するための他の機能部との論理的接続関係は図示なし)。
起算契機とは、割込制御部35からCPU11に通知される割込信号の割込発生時刻t_s2(
図5)までの割込待ち時間Tsの開始時刻(起算時刻t_s1)となる事象(イベント)である。以下、起算契機を例示する。
起算契機(1)パケットの送信開始
起算契機(2)パケットの受信開始
起算契機(3)パケットの送受信とは関係ない所定時刻。例えば、他装置との間で同期処理が発生した時刻や、他装置とは関係なく1時間ごとなどの予め設定した時刻など。
起算契機(4)パケットに関する処理で異常が発生したとき
【0036】
ここで、起算契機(1)または(2)は、各機能部(通信処理部31、送信部32、受信部33)ごとの起算契機を識別可能としてもよい。例えば、通信処理部31が送信パケットの生成を開始した時刻と、送信部32が通信処理部31から通知された送信パケットの送信を開始した時刻とを、別々の起算契機としてもよい。
【0037】
そして、起算契機(1)として、1つの通信パケットを対象としてもよいし、連続して送る複数のパケットを対象としてもよい。例えば、複数のパケットのうちの最後のパケットに係る処理(送信、受信)を起算契機としてもよいし、所定個数ごと(例えば5個のパケットごと)のパケットに係る処理を起算契機としてもよい。
このとき、計時部41には複数の割込待ち時間Tsを設定され、それぞれの時間経過毎に割込制御部35へ時間経過を通知する。また、CPU11上で動作するソフトウェアから通信制御部12への送信設定方法において、起算契機とするかどうかで異なる設定方法(送信開始要求、受信要求)を有することで、通信処理部31はソフトウェアが指定したパケットに対して起算契機を選択することができる。
【0038】
あるいは、起算契機=(1)において、周期通信がなされる制御システムで複数回の周期通信後にまとめて受信データを用いたい場合は、起算後工程時間Tcに複数周期分を加算してもよい。
(起算後工程時間Tc)=(1周期目での起算契機から演算処理開始までの時間)+(周期数−1)×(一つの周期の長さ)
【0039】
また、起算契機(3)の同期時刻について、例えば、スレーブ装置2が同期時刻に通信パケットをマスタ装置1に送信する場合や、スレーブ装置2において何らかのセンサ情報を計測してマスタ装置1に送信する場合を想定している。さらに、割込発生時刻t_s2を同期時刻として指定し、その同期時刻経過後すぐに割込信号を生成してもよい。あるいは、以下の各時刻を同期時刻としてもよい。
・送信データのバス転送処理(
図4のS101)の開始時刻
・パケット生成処理(
図4のS102)の開始時刻
・パケット送信処理(
図4のS103)の開始時刻
また、マスタ装置1内の処理に基づいてタイミングを制御する場合を想定し、同期時刻ではなくマスタ装置1自身の時刻の所定時刻経過を起算契機としてもよい。
【0040】
割込制御部35は、処理時間情報記憶部36、ネットワーク情報記憶部37からの情報に基づいて、起算契機検知部34が起算契機を検知した後に割込信号を生成する。割込信号は、割込制御部35から起算契機の発生を通知する信号である。割込信号は、バス16の規格に含まれていてもよい。割込信号は、特に制御通信ソフトウェアを実行するCPU11に対して割込を通知する。
なお、処理時間情報記憶部36、ネットワーク情報記憶部37、割込制御部35による通信処理時間、通信遅延、経過時間の算出はマスタ装置1の通信制御部12で実現する構成を説明したが、別の装置で実現してもよい。
【0041】
処理時間情報記憶部36は、割込制御部35の割込生成に必要なマスタ装置1内の処理時間を保持する。そのような処理時間として、CPU11の処理性能(OS、アプリケーション含む)や処理時間、バス16、メモリ14のデータ転送性能、転送データのサイズと関連する情報(プロトコルに関連する情報)、通信制御部12内の各機能の通信処理性能が例示される。例示のとおり、処理時間情報記憶部36は所定の通信処理時間だけでなく、通信処理時間の算出に必要な情報(処理性能、転送性能、データサイズなど)でもよい。
【0042】
ネットワーク情報記憶部37は、割込制御部35の割込生成に必要な制御ネットワーク9、スレーブ装置2、中継装置3の処理時間、転送遅延を保持する。そのような処理時間、転送遅延として、制御ネットワーク9の転送遅延、通信スループット、トポロジ情報、スレーブ装置2の接続台数、スレーブ装置2に関する情報(処理時間、処理性能など)、制御ネットワーク9に中継装置3があればその情報(転送遅延、処理性能など)が例示される。例示のとおり、ネットワーク情報記憶部37は所定の通信処理時間だけでなく、通信処理時間の算出に必要な情報(装置台数、トポロジなど)でもよい。
以上の算出または計測した通信処理時間、あるいは途中の計算結果、算出、計測に用いる情報は処理時間情報記憶部36、ネットワーク情報記憶部37のいずれか、または両方に保持、記憶することが例示される。
【0043】
時刻同期制御部38は、所定の時刻同期プロトコルにしたがって、制御ネットワーク9を構成するマスタ装置1、スレーブ装置2の時刻を同期する。時刻同期プロトコルとしては、IEEE 1588やNTP(Network Time Protocol)、SNTP(Simple Network Time Protocol)が挙げられる。同期する時刻は、協定世界時のように世界共通の絶対時刻でも構わないし、制御システム内で共通の時刻でもよい。
【0044】
時刻同期制御部38は、CPU11上のソフトウェアで実現してもよいし(この場合、時刻誤差情報、通信遅延を時刻同期制御部38で保持してもよい)、通信制御部12をLSI(FPGA、CPLD含む)で構成した場合のハードウェア論理として実現してもよい。あるいはCPU11上のソフトウェアと通信制御部12の両方で構成してもよい。この場合は、時刻同期用パケットの送信タイミング、受信タイミングの計測機能、あるいは時刻同期用パケットの生成を通信制御部12で処理することが例示される。
【0045】
計時部41は、所定時間の経過を計測して、割込制御部35に通知するタイマである。時間経過を計測できれば、絶対時刻や相対時刻を示す時計でもよいし、単位時間毎にカウントアップまたはカウントダウンするカウンタでもよい。また、時刻そのものや時間の進み方を時刻同期制御部38によって制御されてもよい。他の実装として専用のタイマデバイスや、ハードウェアクロック、あるいはCPU11上で動作するソフトウェアによるソフトウェアクロックが例示される。
【0046】
図4は、通信制御部12のパケット処理を示すフローチャートである。このフローチャートでは、各処理ステップにおいて、その処理内容(例えばS101の「送信データのバス転送」)に加え、その処理に要する時間(例えばS101の「時間=Tbs」)を併記している。なお、各処理に要する時間は、条件(データサイズなど)と、マスタ装置1の各構成要素の性能や仕様(例えば制御ネットワーク9の通信スループット、通信制御部12内のオンチップバスの転送スループットなど)から、パケットの送信前に事前計算される。
【0047】
S101は、CPU11が送信データを作成し、その送信データをバス16を介して通信処理部31に転送する処理である。この処理時間(送信データバス転送時間Tbs)は、以下の式で計算される。
(送信データバス転送時間Tbs)=(送信データのサイズ)/(バス16の転送スループット)+(オーバーヘッド時間)
なお、オーバーヘッド時間は、バス通信プロトコルに基づく処理時間であり、例えば、バス調停によるバスの利用権を獲得するまでの時間や、データサイズに依存しないオーバーヘッドである。オーバーヘッド時間を0としてもよい。
【0048】
S102は、
図2のパケットフォーマットに従って、通信処理部31がS101の送信データ(1つ以上のサブデータ)を含む送信パケットを生成する処理である。この処理時間(パケット生成時間Tds)は、以下の式で計算される。
(パケット生成時間Tds)=(各サブデータの生成時間)の総和+(オーバーヘッド時間)
(各サブデータの生成時間)=(各サブデータのサイズ)/(通信処理部31の処理スループット)+(各サブデータのオーバーヘッド)
S103は、通信処理部31(送信部32)がS102の送信パケットを制御ネットワーク9を介してスレーブ装置2に送信する処理である。この処理時間(パケット送信時間Tps)は、後記の
図7で示すように、ストア&フォワード方式やカットスルー方式などの転送方式によって異なり、またパケットサイズにも依存する。
【0049】
S110は、通信処理部31(受信部33)がS103の送信パケットが一巡して受信パケットとして戻ってくるのを待つ処理である。この待ち時間(ネットワーク転送時間Tn)は、パケットの経路上の各デバイスが要する時間の総和であり、以下の式で計算される。
(ネットワーク転送時間Tn)=(通信ケーブルの通過時間)の総和+(通過する各中継装置3内の転送遅延)の総和+(通過する各スレーブ装置2内の転送遅延)の総和+(オーバーヘッド時間)
【0050】
S111は、通信処理部31(受信部33)が(S110,Yes)で到着した受信パケットをメモリ14内に受信する処理である。この処理時間(パケット受信時間Tpr)もS103のパケット送信時間Tpsと同様に、後記の
図7で示すように、ストア&フォワード方式やカットスルー方式などの転送方式によって異なる。
S112は、
図2のパケットフォーマットに従って、通信処理部31がS111の受信パケットから受信データを抽出する時間である。この待ち時間(受信データ抽出時間Tdr)もS102のパケット生成時間Tdsと同様に、パケットを構成する複数のサブデータから計算できる。なお、CPU11がS102およびS112の少なくとも1つの処理を実行してもよい。
S113は、通信処理部31がS112で抽出した受信データをバス16を介してCPU11に転送する処理である。この処理時間(受信データバス転送時間Tbr)もS101の送信データバス転送時間Tbsと同様に、データサイズとバス転送スループットとから算出することができる。
【0051】
S114は、CPU11がS113の受信データを対象とした演算処理であり、演算時間Tpで実行される。この演算処理は、受信データに基づく制御指令値の演算や、操作者のHMIによる指令値入力の取得などの時間であるが、例えば、スレーブ装置2がパケットに計測データを追記したときには、その計測データが異常値か否かを判定し、異常値の計測データが発生したときには、その旨をアラート出力する処理を含む。
【0052】
以上、各処理ステップとその所要時間について説明した。一方、マスタ装置1を実際に動作させて(試験用パケットまたは実データパケットをもとにしたベンチマーク処理)、各所要時間の実測値を取得してもよい。このような場合、通信制御部12とCPU11上で動作するソフトウェアを含む、マスタ装置1のハードウェア、ソフトウェアあるいは制御ネットワーク9に接続するスレーブ装置2、中継装置3のいずれか、または複数に計時機構をもうけて計測してもよい。
CPU11上で動作するソフトウェアと、通信制御部12の計時機構が同期していない場合は、該ソフトウェアで起算契機が発生した場合に、通信制御部12に計時指令を出し、通信制御部12内で計時してもよい。
これらの計測は、制御システム稼働前の事前に試験計測してもよいし、制御システム稼働中に計測した時間を利用してもよい。計測を複数回繰り返して、計測値が複数の場合は、最悪値を利用してもよいし、平均値や所定の統計処理を適用した値を用いてもよい。また、計測値にばらつきがある場合は、所定のはずれ値を除いた値を対象に最悪値や統計処理した値を用いてもよい。
【0053】
図5(a)は、送信データのバス転送を割込待ち時間Tsの起算契機としたときのタイムチャートである。パケットに関する各工程に要する時間(先頭から順にTbs、Tds、Tps、Tn、Tpr、Tdr、Tbr)は、
図4のフローチャートで説明した通りである。ここで、送信データバス転送時間Tbsの開始時刻をパケット発生時刻t_p1とし、受信データバス転送時間Tbrの終了時刻(≒演算時間Tpの開始時刻)をパケット演算時刻t_p2とする。
【0054】
さらに、
図5(a)では、起算後工程時間Tc、割込待ち時間Ts、割込遅延時間Tiを定義する。
割込遅延時間Tiは、割込制御部35が割り込みを生成してから、CPU11上で動作する演算時間Tpの演算処理が起動するまでの遅延時間である。
(割込遅延時間Ti)=(通信制御部12からCPU11へ割込を通知するためにかかる時間)+(CPU11が割込を受けてから、割込に対応するソフトウェアを起動するまでの時間)+(一連の割込処理にかかるオーバーヘッド)
なお、第1項〜第3項のうちの第1項または第2項を省略してもよく、第3項を省略してもよい。
【0055】
起算後工程時間Tcは、起算契機の発生時刻(=起算時刻t_s1)以後、パケット演算時刻t_p2までのパケット処理の各工程時間の総和である。
図5(a)では、起算契機として、(1)送信開始(送信データバス転送時間Tbsの開始時刻)の場合を例示しており、起算後工程時間Tcは以下の式で計算される。
(起算後工程時間Tc)=(Tbs+Tds+Tps+Tn+Tpr+Tdr+Tbr)
図5(b)では、起算契機として、(3)同期時刻の場合を例示しており、起算後工程時間Tcは以下の式で計算される。
(起算後工程時間Tc)=(Tnb+Tpr+Tdr+Tbr)
なお、Tnbとはネットワーク転送時間Tnのうちの起算契機の発生後の残り時間である。
【0056】
割込待ち時間Tsは、起算時刻t_s1から割込信号を発生させる時刻(=割込発生時刻t_s2)までの時間である。
(割込待ち時間Ts)=(起算後工程時間Tc)−(割込遅延時間Ti)+(マージン)
マージンは、0でも正の値でも負の値でもよい。ここで、割込待ち時間Tsを起算後工程時間Tcよりも割込遅延時間Tiの分だけ前倒しにすることで、割込発生時刻t_s2に発生させた割込信号がCPU11に届いて演算処理を起動させるタイミングを、受信データバス転送時間Tbrの終了時刻(受信データの処理準備が整う時刻)に近づけることができ、無駄な待ち時間を最小化できる。
【0057】
さらに、
図5以外の起算契機でも同様に起算後工程時間Tcを計算できる。例えば、起算契機=(2)受信開始の場合、起算時刻t_s1=パケット受信時間Tprの開始時刻なので、起算後工程時間Tc=(Tpr+Tdr+Tbr)である。
【0058】
図6は、抽出データのバス転送処理を割込待ち時間Tsの起算契機としたときのタイムチャートである。起算時刻t_s1=受信データバス転送時間Tbrの開始時刻とする。
なお、
図5では「起算後工程時間Tc>割込遅延時間Ti」であったが、
図6では「起算後工程時間Tc<割込遅延時間Ti」である。よって、
図5と同じ計算式を用いたときには、
図6では、割込待ち時間Tsが負の値となってしまう。
そこで、割込待ち時間Ts=0とし、起算契機が発生した瞬間に割込信号を生成することとする。このとき、受信データバス転送時間Tbrの終了時刻t_p2よりも、割込遅延時間Tiを経て割込信号がCPU11で受け付けるパケット演算時刻t_p3が遅いため、その待ち時間Twが発生してしまう。
【0059】
以上、
図5,
図6のタイムチャートを参照して、起算契機のちがいによる割込待ち時間Tsのちがいについて説明した。
図5(a)のように割込待ち時間Tsを長くしすぎると、その待ち時間に発生した予期せぬ変化(パケットサイズの変更)などにより、割込発生時刻t_s2の精度が落ちてしまうこともある。
図6のように割込待ち時間Tsを短くしすぎると、割込遅延時間Tiによる無駄な待ち時間が発生してしまう。
よって、割込待ち時間Tsの長さを割込遅延時間Tiよりも長くしつつ、あまり長すぎないように起算契機を選択することが望ましい。例えば、
図5(a)の例では、割込遅延時間Tiよりも長い工程の時間は「Tdr+Tbr」なので、受信データ抽出時間Tdrの開始時刻を起算契機とすればよい。
【0060】
さらに、設定画面において管理者に設定させた「割込遅延時間Ti’」を、実際の「割込遅延時間Ti」の代わりに用いてもよい。
・(割込遅延時間Ti’)>(割込遅延時間Ti)の場合は、割込待ち時間Tsが実際より短くなることで割込発生時刻t_s2が早めになる。よって、受信データの転送完了後からCPU11が起動するまでの空白時間を減らすことができる。
・(割込遅延時間Ti’)<(割込遅延時間Ti)の場合は、割込待ち時間Tsが実際より長くなることで割込発生時刻t_s2が遅めになる。よって、CPU11がソフトウェアを起動した際には、受信データ転送完了の情報が示されているなど、受信データの転送が完了されていることが期待され、すぐに受信データの処理を開始できる。
【0061】
以上説明したように、ソフトウェアが起動した際に受信データの転送が完了しているかどうかを設定画面のGUIなどで確認できるようにすることで、管理者は起算契機の変更や設定の変更といった対応をとることができる。
対応の一例として、管理者は、設定画面の中継装置3やスレーブ装置2の台数を入力する手段を介して、各装置の台数を実際よりも多く設定したり、少なく設定したりすることで、それらの各装置の転送に要するネットワーク転送時間Tnを柔軟に変更できる。
【0062】
図7(a)は、ストア&フォワード方式でパケット転送をするときのタイムチャートである。
マスタ装置1の通信処理部31からスレーブ装置2に向けて送信されるパケットのデータは、各スレーブ装置2内で一度全てバッファリングしてから(パケット全体を受信し終えてから)、次のスレーブ装置2へと送信(転送)される。そのため、ネットワーク転送時間Tnとして、パケットのデータサイズに依存する処理時間がかかる。
【0063】
図7(b)は、カットスルー方式でパケット転送をするときのタイムチャートである。
スレーブ装置2は、前の装置から受信したパケットについて、データの宛先が判明した時点で次の装置へとデータ転送を開始する。そのため、以下に示すように、パケットサイズに依存する処理時間は、パケット送信時間Tpsとパケット受信時間Tprのどちらか一方のみに含まれ、他方は固定オーバーヘッドとなる。
(パケット送信時間Tps)=(通信処理部31の通信処理における固定オーバーヘッド)
(パケット受信時間Tpr)=(パケットサイズ)/(制御ネットワーク9の転送スループット)+(オーバーヘッド時間)
なお、送信部32や受信部33の処理時間は、Tpsの固定オーバーヘッドと、Tprのオーバーヘッド時間に含まれている。
(ネットワーク転送時間Tn)=(通過する各スレーブ装置2の固定オーバーヘッド)の総和
【0064】
図8は、通信制御部12の割込制御処理を示すフローチャートである。この割込制御処理は、
図4の転送処理と並列に実行される。
S201として、割込制御部35は、
図3(b)の起算契機検知部34で説明したように、割込信号の割込待ち時間Tsの開始時刻となる起算契機を決定する。
【0065】
S202として、割込制御部35は、
図5で説明したように、S201で決定した起算契機をもとに、その起算後工程時間Tcと割込遅延時間Tiとから割込待ち時間Tsを決定する。
なお、S201,S202の計算を行う回数は1回でもよいし、2回以上(再計算)としてもよい。再計算された場合は、前回の計算結果を破棄して、今回の再計算された結果をもとに再度
図8の処理を最初から実行すればよい。
【0066】
再計算する契機としては、例えば、
図6のように「起算後工程時間Tc<割込遅延時間Ti」となるとき、毎回の演算処理(S114)の後、データサイズの変化などによりネットワーク転送時間Tnが当初の見積もりから変化したとき(変化の度合いが所定のしきい値を超えた場合)などが挙げられる。
例えば、割込制御部35は、送信サイズが小さいものとしてパケット送信時(S103)を起算契機とした後、スレーブ装置2がデータを付加することでパケットサイズが増加したときには、そのパケットのパケット受信時(S111)を新たな起算契機として、割込待ち時間Tsを再計算すればよい。
または、起算契機をパケット受信(S111)の開始としていたが、CPU11上で動作するソフトウェアの負荷が高まる場合や、優先度の高い割込が追加されるなどして、割込遅延時間Tiが長くなり、「起算後工程時間Tc<割込遅延時間Ti」となった場合は、起算契機をパケット送信(S103)の開始に変更してもよい。
【0067】
このように起算契機を動的に変更してもよい。起算契機を変更する場合は、割込待ち時間Tsを起算契機ごとに処理時間情報記憶部36、割込制御部35のいずれか、または複数に保持し、CPU11上で動作するソフトウェアに通知する。また、起算契機の設定手段をCPU11上で動作するソフトウェアが用意してもよい。これにより、状況にあわせてソフトウェアは任意の起算契機を選択することができる。
【0068】
S203として、割込制御部35は、起算契機検知部34にS201の起算契機を設定し、計時部41にS202の割込待ち時間Tsを設定する。
S210として、割込制御部35は、起算契機検知部34に設定された起算契機が発生するまで待機する。
S211として、割込制御部35は、起算契機が発生した後に、計時部41に対してS203で設定した割込待ち時間Ts分のタイマ(計時)を開始する。なお、S203の計時部41に対する割込待ち時間Tsの設定処理は、S210の処理の後でもよい。このようにすれば、起算契機発生後に、処理時間に影響する状況が確定する場合に対応することができる。
S212として、割込制御部35は、計時部41に設定された割込待ち時間Tsが経過するまで待機する。
S213として、割込制御部35は、割込信号を生成し、割込信号の伝送路を活性化し、その伝送路を介して割込信号をCPU11に通知する。
【0069】
図9は、
図8の割込制御処理に対して異常割込処理(S210b,S210c,S213b)を追加したフローチャートである。これにより、起算契機=(4)処理異常にも対処できる。
S210bとして、起算契機の発生後(S210,Yes)の異常を起算契機検知部34または割込制御部35が検出すると(S210b,Yes)、その異常を割込制御部35に通知して、処理をS213bへと進める。なお、受信データ抽出(S112)または抽出データのバス転送(S113)以降を起算契機とすれば、パケット全体を受信し終えているため、例えば、IEEE 802.3のCRC(Cyclic Redundancy Check)の確認によって、パケットの異常(データ化け、データの欠損など)を判定することができる。
【0070】
なお、前記のCRC異常の他に、検出対象の異常を以下に例示する。
・
図2に例示したような制御ネットワーク9のプロトコルに、パケットのデータフォーマットがしたがっていないこと
・所定の時間経過してもマスタ装置1がパケットを受信しないタイムアウト異常
・スレーブ装置2、中継装置3が異常を検出してマスタ装置1へ通知した異常
【0071】
S210cも、S210bと同様に異常を検出する処理であるが、割込待ち時間Tsのタイマ開始(S211)の後でも異常を検出する。
そして、S213bとして、S210bまたはS210cで検出された異常を通知された割込制御部35は、S213の通常の割込信号を割込発生時刻t_s2に生成する代わりに、割込待ち時間Tsを待たずに直ちに異常が発生したことを示す割込信号を生成する。この割込信号を受けたCPU11は、パケット演算時刻t_p2にパケット処理を起動する必要がなくなる。なお、正常な受信データのみを必要とし、特に異常発生時に対応する必要がない場合は、S213bの割込信号を発生させなくともよい。
【0072】
あるいは、S210bまたはS210cの異常発生時点を起算契機(4)としてもよい。この場合、異常パケット(パケットを受信している異常の場合)をCPU11(実行されるソフトウェア)に転送して異常要因を解析することができる。あわせて、起算契機検知部34が異常と判定した結果や関連情報をパケットデータに付加してもよいし、あるいは起算契機検知部34自身が、その情報を保持してCPU11上で動作するソフトウェアに開示してもよい。
【0073】
以上説明した本実施形態によれば、割込待ち時間Tsを計算するときに、あらかじめ割込遅延時間Tiの分だけ引き算して割込発生時刻t_s2を前倒しにすることで、パケット演算時刻t_p2を受信データバス転送時間Tbrの終了時刻に近づけることができる。よって、パケットが処理可能な状態になっても割込信号の発生前でCPU11が起動していない状態(割込信号の発生遅れ)や、パケットが処理可能な状態にならないうちにCPU11が割込信号で起動してしまった状態(割込信号の早すぎる発生)を減らすことができる。
【0074】
これにより、高速周期通信、演算処理時間の増加、高速な応答処理が可能である。また、異常発生時は余計な割込みを発生させることなく、計算機資源を有効に活用できる。
さらに、管理装置8は、割込み生成タイミングに必要な情報の保持や情報の算出を実行することで、柔軟なシステム構成や、システム構成の変更に応じて、本発明を最適に継続して実現、提供させることができる。
【0075】
なお、前記の説明ではCPU11が起動する条件として、割込信号を受信したことだけを記載したが、割込信号を受信したことに加えて、さらに別の条件を満たすときとしてもよい。以下、別の条件の一例として、パケットの受信を示すメモリフラグがメモリ14上に書き込まれたこととする場合を説明する。
【0076】
まず、割込信号を生成し、CPU11上で動作するソフトウェアが起動した場合、バス転送や受信処理時間のジッタにより、メモリ14への受信データ転送が完了していない場合があり得る。そこで、受信データ転送の完了を判断するため、通信制御部12が、受信データに関連するメモリ14の所定領域を更新(メモリフラグを書き込む)し、データ転送完了を示してもよい。
そのため、例えば、パケットデータの管理情報をメモリ14上にもうけ、受信データ転送後に、受信完了かどうかを示す領域を通信制御部12がメモリフラグ「1」にする。加えて、ソフトウェアが該受信データを利用後に、該領域をメモリフラグ「0」とする。あるいはメモリ14上の領域ではなく、転送完了したかどうかを通信制御部12が保持し、CPU11に通知してもよい。
【0077】
ソフトウェアは割込信号によって起動後、メモリフラグの領域を確認する。もし、メモリフラグ「0」なら、ポーリング処理により、当該領域を継続的に監視してもよい。ポーリング処理は、計算機資源(プロセッサなど)を占有するために、CPU11上で動作するソフトウェアの処理スループットが低下し得るが、上記構成を用いれば割込信号による起動後にポーリングするため、ポーリングによる占有時間は受信データ転送処理のジッタ程度に制限することができる。これにより、ポーリング処理によるスループット低下を最小限にすることができる。
これは、例えば、低頻度で受信データ転送時間が長くなる場合にも有効である。ほとんどの場合では割込信号起動後に演算処理を即座に実行でき、受信データ転送時間が長くなった場合のみ、ポーリングすることで、割込信号による待ち時間を最小化しながら、CPU11上で動作するソフトウェアの処理スループットを向上させることができる。
【0078】
なお、本発明は前記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、前記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。
また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段などは、それらの一部または全部を、例えば集積回路で設計するなどによりハードウェアで実現してもよい。
また、前記の各構成、機能などは、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。
【0079】
各機能を実現するプログラム、テーブル、ファイルなどの情報は、メモリや、ハードディスク、SSD(Solid State Drive)などの記録装置、または、IC(Integrated Circuit)カード、SDカード、DVD(Digital Versatile Disc)などの記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
さらに、各装置を繋ぐ通信手段は、無線LANに限定せず、有線LANやその他の通信手段に変更してもよい。