(システム例)
本発明を適用した第一実施例におけるシステム構成を図1に示す。通信装置120a〜120l(以下、通信装置120a〜120lを総称して通信装置120と称することがある。)は、ネットワーク122、ネットワーク中継装置121a〜121h(以下、ネットワーク中継装置121a〜121hを総称してネットワーク中継装置121と称することがある。)を介して、他の通信装置120と接続し、通信する。
通信装置120は、IEC62439−3で定義されるHSRノード(DANH:Double attached node implementing HSR)を一例として、本発明の効果を説明する。
通信装置120は、HSRに対応した装置であり、他の通信装置120に対して、パケットを送受信することにより、制御指令値の伝送、計測値の取得や各種設定を実行する。
通信装置120は、電力系統の保護制御装置のように、各制御システム内のサンプリングデータや、制御指令、状態信号をやりとりすることが例示される。同一制御システム内のデータをパケット内に格納してもよい。
通信装置120として、専用コントローラ、産業用パソコン、制御用計算機、IED(Intelligent Electronic Device)、保護制御装置が例示される。
ネットワーク中継装置121は、ネットワーク122における中継装置であり、通信装置120やネットワーク中継装置121の通信する同期パケット(以下、パケットと称することもある。)を経路制御し、転送する。ネットワーク中継装置121として、L2スイッチ、L3スイッチを含むネットワークスイッチ、ブリッジ、ルータ、IEEE 1588のTC(Transparent Clock)、BC(Boundary Clock)、OpenFlowスイッチ、IEC 62439−3で定義されるRedBox、QuadBox、光スイッチ、光合波器、光分波器等の各種ネットワーク中継装置が例示される。通信装置120とネットワーク中継装置121は、後述するように、いずれも、同期パケットを送受信する1又は2以上の送受信手段と、送受信手段の受信した同期パケットを処理する処理手段とを有する通信制御装置としての機能を有している。
ネットワーク122は、時刻情報を含む同期パケットの通信経路を構成するネットワークであって、通信装置120、ネットワーク中継装置121を接続するネットワークであり、IEEE 802.3(Ethernet)、IEC61784、IEC61158で定義される制御用ネットワークを含む各種産業用ネットワーク、リングネットワーク、IEEE802.17等を含む。
なお、図1では、ネットワーク中継装置121間に3つの通信装置120を接続しているが、異なる数でもよいし、各中継装置121間の通信装置120の数が拠点ごとに異なっていてもよい。例えば、ネットワーク中継装置121aとネットワーク中継装置121hの間は、通信装置120が1台、ネットワーク中継装置121bとネットワーク中継装置121cの間が4台であってもよい。
また、図1では、リングネットワークを構成する通信装置120間を2つのネットワーク中継装置121で接続している(例えば、通信装置120aと通信装置120c間をネットワーク中継装置121aとネットワーク中継装置121hで接続)が、ネットワーク中継装置121の数は一つでも、複数でもよい。
図1に示すシステム構成として、電力分野の監視制御・保護制御システムや、産業用機器、半導体製造装置、車載システム、建設機械や鉄道車両内の制御システム、鉄道地上信号システム、航空機内の制御システムなどの通信制御システムが例示される。あるいは、ネットワーク122を介して収集した情報をもとに、通信装置120あるいは、図示していないクラウドやコンピュータ上で人工知能にて解析し、制御システムの性能向上を図るIoT(Internet of Things)システムなどが例示される。
(ハード構成)
図2に通信装置120のハードウェア構成を示す。
通信装置120は、CPU(Central Processing Unit)101、通信制御部102、複数の送受信機(以下、PHYと称することがある。)103、メモリ104、不揮発性記憶媒体105、バス106から構成される。CPU101、須通信制御部102、メモリ104、不揮発性記憶媒体105は、処理手段に属する要素として構成され、複数のPHY103は、送受信手段に属する要素として構成される。
CPU101は、不揮発性記憶媒体105からプログラムをメモリ104に転送して実行する。実行処理プログラムとしては、オペレーティングシステム(以下、OSと称す)やOS上で動作するアプリケーションプログラムが例示される。CPU101上で動作するプログラムは、通信制御部102の動作設定や、状態情報を取得する。
通信制御部102は、IEC62439−3のHSRの通信機能を提供するIC(Integrated Circuit)である。
PHY103は、ネットワーク122との通信機能を実装した送受信機ICである。PHY103の提供する通信規格としてIEEE 802.3のPHY(物理層)チップが例示される。なお、図2の構成では、PHY103と通信制御部102が接続しているので、IEEE 802.3のMAC(Media Access Control)層の処理は通信制御部102に含まれる。ただし、MAC機能を提供するICを通信制御部102とPHY103間に配置する構成や、MAC機能を提供するICとPHY103を組み合わせた通信用ICと通信制御部102を接続する構成においても、本発明の効果は失われるものではない。なお、PHY103は、通信制御部102に含まれていてもよい。
メモリ104は、CPU101が動作するための一時的な記憶領域であり、不揮発性記憶媒体105から転送したOS、アプリケーションプログラム等が格納される。また、図2の構成では、PHY103を2つ示しているが、PHY103の数は、通信制御部102が対応する通信ポート数と同じである。
不揮発性記憶媒体105は、情報の記憶媒体で、OS、アプリケーション、デバイスドライバ等や、CPU101を動作させるためのプログラムの保存、プログラムの実行結果の保存に利用される。不揮発性記憶媒体105として、ハードディスクドライブ(HDD)やソリッドステートドライブ(SSD)、フラッシュメモリが例示される。また、取り外しが容易な外部記憶媒体として、フロッピーディスク(FD)、CD(Compact Disc)、DVD(Digital Video Disc)、ブルーレイ(登録商標)、USB(Universal Serial Bus)メモリ、コンパクトフラッシュ(登録商標)等の利用が例示される。
バス106は、CPU101、通信制御部102、メモリ104、不揮発性記憶媒体105をそれぞれ接続する。バス106としては、PCI(Peripheral Component Interconnect)バス、ISA(Industry Standard Architecture)バス、PCI Expressバス、システムバス、メモリバス等が例示される。
(HSR機能ブロックの構成)
通信制御部102の機能構成を図3に示す。
通信制御部102は、送信制御部130、受信制御部131、送信部132(132a、132b)、受信部133(133a、133b)、マルチプレクサ(MUX)136(136a、136b)、システム識別子137、システム識別子変換部138、ネットワーク中継装置設定部139、グループ位置識別子140を備え、送信制御部130がマルチプレクサ(MUX)136(136a、136b)及びバス134に接続され、受信制御部131がマルチプレクサ(MUX)136(136a、136b)と受信部133(133a、133b)及バス135に接続され、マルチプレクサ(MUX)136(136a、136b)が送信部132a又は送信部132bに接続されている。この際、送信制御部130と受信制御部131が、時刻補正部として機能する。
送信制御部130は、バス134から通知されたデータ、あるいはパケットを加工し、送信部132a、送信部132bのいずれか、または両方へ送信する。送信制御部130の加工処理は、データからフレームを生成する処理や、データまたはパケットの複製、所定のタグを追加することや、CRC(Cyclic Redundancy Check)などの異常診断データの計算と付加が例示される。
送信制御部130が付加するタグとして、IEC62439−3で定義されるHSRタグ、PRPタグが例示される。
送信制御部130は、通信制御部102またはCPU101上のソフトウェアのいずれか、または両方で実装することが例示される。
受信制御部131は、受信部133a、受信部133bから受信したデータを加工し、所定の規則に従ってバス135、または送信部132a、送信部132bへ転送する。受信制御部131の加工処理としては、パケットに付加されたタグの除去やデータの抽出が例示される。
受信制御部131がパケットを転送する規則としては、パケットに付与された宛先アドレス、送信元アドレス、パケット種別、IEEE 802.1Qで定義されるVLAN(Virtual Local Area Network)グループ、優先度、シーケンス番号などに基づくことが例示される。アドレス体系としては、IEEE 802.3のMACアドレス、IP(Internet Protocol)アドレスが例示される。例えば、IEC62439−3のHSRでは、受信部133aから受信したパケットの送信元MACアドレスとシーケンス番号で判別されるパケットが最初の受信であれば、送信部132bへ転送し、2回目以降のパケットであれば破棄する。パケットの宛先アドレスがマルチキャスト、またはブロードキャストである場合は、他の通信ポートだけでなく、バス135へ転送する場合もあり得る。
受信制御部131は、処理したパケットの情報を一定期間記憶するために情報記憶手段を有し、処理したパケットの情報(例えば、送信元アドレス、シーケンス番号)を記憶する。
受信制御部131は、通信制御部102またはCPU101上のソフトウェアのいずれか、または両方で実装することが例示される。
送信部132は、PHY103と接続して、PHY103に対して、パケット、データを送信する機能部である。PHY103で説明したとおり、送信部132がMAC機能を有することが例示され、通信制御部102で実装することが例示される。
受信部133は、PHY103と接続して、PHY103からパケット、データを受信する機能部である。PHY103で説明したとおり、受信部133がMAC機能を有することが例示され、通信制御部102で実装することが例示される。
バス134は、通信装置120のバス106に接続し、バス106からデータを受信する。バス135は、バス106に接続し、バス106へデータを転送する。バス134、バス135を分離して記載しているが、これは論理的なデータの流れを示すためであって、物理的にバス106と同じである。送信部132、受信部133がバス106への接続機能を提供することが例示される。
マルチプレクサ(MUX)136は、複数のデータ入力から、1つのデータ出力を生成する機能であって、複数入力から1入力を選択してもよいし、結合、あるいは多重化してもよい。
マルチプレクサ(MUX)136は、通信制御部102で実装することが例示される。
システム識別子137は、通信装置120が所属するシステムの識別子である。
システム識別子変換部138は、システム識別子137をネットワークプロトコル上での識別子に変換する。これにより、システム識別子137は、数字、文字列といった種類の情報を設定でき、システム識別子変換部138により、VLANのVID(仮想LAN用タグのVLAN識別子)、HSRタグのパス識別子(PathId)、プロトコルアドレス(IPアドレス、IEEE 802.3のMACアドレス等)のユニキャストアドレス、マルチキャストアドレス、ブロードキャストアドレスに変換することができる。
システム識別子変換部138は、通信制御部102またはCPU101上で動作するソフトウェアのいずれか、または両方で実装することが例示される。
ネットワーク中継装置設定部139は、システム識別子変換部138が作成したネットワークプロトコル上の識別子を用いて、ネットワーク中継装置121の論理ネットワーク構築に関して設定する。
図4では、通信装置120がネットワーク中継装置121に対して、タグVLANを設定する。例えば、通信装置120aは、4つの通信ポート190a〜190d、通信ポート190e〜190hを有するネットワーク中継装置121h、121aに対して、論理ネットワークに対する宛先ポートを設定する。例えば、ネットワーク中継装置121hにおいて、タグ1をある論理ネットワークに割り当て、タグ2を別の論理ネットワークに割り当てる。
なお、ネットワーク中継装置121における論理ネットワークの設定は、図3のネットワーク中継装置設定部139を用いずに、ネットワーク中継装置121の提供する設定手段を用いて設定してもよい。また、図4のネットワーク中継装置121の通信ポート190a〜190d、190e〜190hの数は、4つで例示しているが、4以外の数でも構わない。
ネットワーク中継装置設定部139は、通信制御部102またはCPU101上で動作するソフトウェアのいずれか、または両方で実装することが例示される。
なお、システム識別子137、システム識別子変換部138、ネットワーク中継装置設定部139を通信装置120の機能部として示したが、CPU101におけるソフトウェアとして実装してもよい。その際、通信装置120内には、システム識別子変換部138の生成した識別子の保持手段をもうけることが例示され、システム識別子137、システム識別子変換部138となるソフトウェアはバス106経由で、該保持手段に識別子を設定することが例示される。
グループ位置識別子140は、通信装置120が位置する拠点を表す識別子である。例えば、図5におけるグループ位置200aといったグループ位置を表す。システム識別子137の情報として、グループ位置識別子140を含めることが例示される。例えば、グループ位置識別子140をシステム識別子137の一部とする。また、ネットワーク中継装置設定部139は、グループ位置識別子140を用いてネットワーク中継装置121を設定してもよい。
(動作手順)
通信装置120aの送信に関する動作手順を図6に示す。
はじめに、CPU101上で動作するアプリケーションが通信制御部102に対して、データを用意し、バス106、バス134を用いて、送信するデータを伝送する(S001)。データを受け取った通信制御部102では、送信制御部130がデータを複製し(S002)、複製したデータそれぞれに対して加工する(S003)。送信制御部130が実行する加工は、HSRタグの付加や、VLANタグの付加、CRCの計算、付加、パケットへの成形が例示される。
送信制御部130で加工された各データは送信部132へ伝送され、送信部132、PHY103を用いて、ネットワーク122へ送信される(S004)。
パケットを受信した通信装置120における転送処理を図7に示す。
はじめに、通信制御部102に接続される受信部133(受信部133a、133b)は、パケットを受信したか否かを判定し、パケットを受信するまで待機する(S010)。受信部133は、パケットを受信したら、受信パケットの識別子を保持し(S011)、受信したパケットを受信制御部131へ転送する(S012)。受信制御部131は、最初に受信したパケット(先着パケット)かどうかを判定する(S013)。先着パケットであれば、受信制御部131は、この通信装置120宛のパケットかどうかを判定する(S014)。S013で、先着パケットでなければ、受信制御部131は、受信したパケットを破棄する(S015)。
S014で、この通信装置120宛のパケットであれば、受信制御部131は、パケットを通信装置120で受信するために、バス135、バス106を用いて、パケットをCPU101に伝送する(S016)。S014で、この通信装置120宛のパケットでない場合、あるいはS016の処理後に、受信制御部131は、このパケットを転送すべきかどうかを判定する(S017)。パケットを転送すべきかどうかは、パケットの宛先がマルチキャストアドレスかブロードキャストアドレスである場合が例示される。
受信パケットが転送すべきパケットである場合、受信制御部131は、パケットを受信した通信ポート以外の通信ポートの送信部132(送信部132a又は132b)からパケットを送信する(S018)。
なお、S013で、先着パケットかどうかを判定するために、受信制御部131は、処理したパケットの情報を一定期間記憶するために情報記憶手段を有し、処理したパケットの情報(例えば、送信元アドレス、シーケンス番号)を記憶する(図7のS011)。なお、HSRでは、該情報記憶手段において、一定期間後に記憶されている情報は消去される。そのため、同じ識別子を有するパケットであっても、該情報記憶手段に識別子が保持されていなければ、S013において、先着パケットであると判定する。
(パケット受信処理)
通信装置120におけるパケット受信処理は、図7と同様の手順をとり、S016における受信処理によって、パケットを受信する。
(システム識別子の利用)
送信制御部130は、図6のS003のデータ加工処理において、システム識別子変換部138の生成した識別子を用いることができる。例えば、システム識別子変換部138の生成したVIDを用いてVLANタグを生成することやEthernetヘッダの宛先アドレスを設定することが例示される。
受信制御部131は、システム識別子変換部138の生成した識別子を用いて、受信、転送を制御することができる。例えば、受信パケットのVLANタグのVIDが、パケットを受信した通信装置120の所属するVIDと異なれば、図7のS014の判断において、パケットを受信しないことが例示される。
(冗長経路の利用)
図1のネットワーク中継装置121h、121a、通信装置120a、120b、120cに着目して、ネットワーク中継装置121の設定例を図8に示す。図8におけるネットワーク中継装置121の設定は、転送先の宛先ポートを複数設定している。図8に示すようにタグ1を有するパケット150が、通信ポート190a〜190dを有するネットワーク中継装置121hに入力されると、ネットワーク中継装置121hから、パケット150の宛先となる宛先の通信装置120aに対して、通信経路160、161、162を経由して、パケット150が伝送される。したがって、通信経路160、161、162のいずれかに障害が起きた場合であっても、パケット150が宛先の通信装置120に到達することができる。同様に、パケット150の宛先がネットワーク中継装置121aの先に接続している場合も通信装置120a、120b、120cを経由する3つの通信経路160、161、162を通って伝送することができる。
経路数(通信経路の数)の制御は、ポートベースVLANとタグVLANを組み合せて設定してもよい。
なお、転送経路の数(各タグに対する転送ポート)は、システムの重要性や、通信装置120の演算能力、計算機資源の性能によって決定してもよい。
(通信装置によるVIDの変更)
あるいは、通信装置120がVLANタグのVIDを変更して経路数を制御してもよい。
図9は、各通信装置120において、VLANタグのVIDを変更する処理を示す。例えば、通信装置120aにおいて、VLANのVIDを2に変更し、ネットワーク中継装置121aにおいて、VIDが2であるパケットに対して、通信ポート190e、190hに転送するように設定している。このような設定により、冗長化する経路数を制御することができる。
(所属システム、グループ位置に基づいた転送制御)
加えて、リングネットワーク内での位置情報を考慮したパケット転送制御を、図5を用いて説明する。
各通信装置120は、所属する制御システムの識別子(例、1、2、3)とともに、グループ位置(例、200a、200b、200c、200d)を有する。制御システムの情報とグループ位置情報をパケット上に反映し、各通信装置120は該情報にしたがって転送制御することが例示される。
バケットへの制御システム情報とグループ位置情報の反映方法は、例えば、マルチキャストアドレス、VLANのVID、HSRタグ、IPアドレス、その他のプロトコルヘッダに反映することが例示される。例えば、HSRで利用可能なマルチキャストアドレスの範囲01−15−4E−00−01−XXのうち、最後の1オクテットのうち、上位4ビットをシステム識別子、下位4ビットをグループ位置とすることが例示される。例えば、01−15−4E−00−01−12は、制御システム1(12の”1”)に所属し、グループ位置200b(グループ位置200aをMACアドレス1、グループ位置200bをMACアドレス2に割り当てるとする。12の“2”)に位置する通信装置120を表すとする。
通信装置120で受信したパケットから取得した制御システム情報、グループ位置情報と、経路制御ルール220を利用して制御する。
経路制御ルール220は、受信パケットから得られる制御システム情報、グループ位置情報と、パケットを受信した通信装置120の制御システム情報、グループ位置情報との比較による経路制御である。
制御システムが同じで、グループ位置が同じであれば、パケットを受信する。制御システムが同じで、グループ位置が異なれば、パケットを転送する。制御システムが異なり、グループ位置が同じであれば、パケットを転送する。制御システムが異なり、グループ位置が異なれば、パケットを転送する。このような設定であれば、冗長経路を利用し、高信頼化できる。
なお、送信制御部130や受信制御部131は、経路の状態に応じて、動的に経路制御ルール220を変更してもよい。例えば、受信パケット数が少ない場合は、通信量の増加を許容できるため、多経路にパケットを転送して高信頼を図ることができる。同様に通信装置120の処理負荷が低い場合は、転送処理による負荷の影響が低いと考えられるため、多経路にパケットを転送して高信頼を図ることができる。
これらの転送制御は通信装置120ごとに異なっていてもよい。
(時刻情報の補正)
ここで、図10を用いて冗長経路を利用する場合の時刻の補正について述べる。
通信装置120aに対する同期パケット(例えば、IEEE 1588のSyncメッセージ)を対象とした場合、例えば、通信装置120lからネットワーク中継装置121hを介して通信装置120aにパケット150を送信する場合、本来の通信経路160ではなく、通信装置120bを経由する場合は、冗長経路となる通信経路161を通るため、通信遅延が異なる。したがって、この遅延(遅延時間)を補正する必要がある。
通信装置120b、通信装置120a及びネットワーク中継装置121aがIEEE 1588のpeer delayメカニズムに対応している場合は、事前に接続経路における対向装置間の遅延を計測している(通信装置120aとネットワーク中継装置121h間、通信装置120bとネットワーク中継装置121h間、通信装置120aとネットワーク中継装置121a間、通信装置120bとネットワーク中継装置121a間の経路の遅延)。IEEE 1588のpeer delayの時刻補正においては、事前に計測した遅延を入力経路とする装置が補正するため、例えば、通信装置120aとネットワーク中継装置121h間の経路遅延は通信装置120aがSyncメッセージを受信した際に、Syncメッセージ上のcorrection field(図11のIEEE 1588のパケットフォーマット中のcorrectionField178)を補正する。
(Correction Fieldの補正)
なお、ネットワーク中継装置121がIEEE 1588に対応しない場合について説明する。
このとき、本来、通信装置120aへの通信経路は、通信装置120lからの通信経路231か、通信装置120kからの通信経路232、通信経路160があり得る。これが通信装置120bを経由する通信経路161となるため、その遅延を補正する必要がある。
このとき、遅延を補正する装置は、通信装置120bと通信装置120aがあり得る。通信装置120aが補正する場合は、通信経路231または通信経路232の遅延を通信装置120aにて補正する場合である。
この場合は、通信装置120aによる補正を考慮して、通信装置120bで通信経路161の遅延を補正する。
通信経路(第一の通信経路)160での遅延(第一の通信経路を同期パケットが通信する際の第一の通信遅延)をD1、通信経路(第二の通信経路)161での遅延(第二の通信経路を同期パケットが通信する際の第二の通信遅延)をD2とすると、通信装置120bでの補正遅延(遅延変化分)は、D2−D1となる。
パケット上の遅延補正対象はタイムスタンプ、またはcorrectionFieldであり、通信装置120bにおける受信時のcorrectionFieldをCFold、補正後のcorrectionFieldをCFnewとすると、補正は以下の(1)式となる。
CFnew=CFold+(D2−D1) ・・・(1)
タイムスタンプを補正する場合、通信装置120bにおける受信時のタイムスタンプをTSold、補正後のタイムスタンプをTSnewとすると、補正は以下の(2)式となる。
TSnew=TSold+(D2−D1) ・・・(2)
このように補正すれば、通信装置120aでは従来どおりの計算方法で同期することができる。
具体例を用いて説明する。
今、ネットワーク中継装置121hの出力ポートでSyncメッセージを出力する瞬間を仮定する。このとき送信元が格納したタイムスタンプ(図11のoriginTimestamp183)TSが10秒000で、correctionField(図11のcorrectionField178)CFoldが10マイクロ秒であったとする。通信経路160の遅延D1を10マイクロ秒、通信経路161の遅延D2を20マイクロ秒とする。また、その瞬間の通信装置120aの時刻Ca1を11秒10マイクロ秒とする。
経路異常がなく、通信装置120aが通信経路160を介して、Syncメッセージを受信したとすると、通信装置120aの時刻Ca2は11秒20マイクロ秒(Ca1+D1)である。このとき、Syncメッセージの送信元の時刻Cs2は10秒20マイクロ秒(TS+CFold+D1)である。したがって、送信元の通信装置120と通信装置120aの時刻オフセットOffsetは次の(3)式となる。
Offset = Cs2 − Ca2
= 10秒20マイクロ秒 − 11秒20マイクロ秒
= −1秒 ・・・(3)
したがって、通信装置120aにおける同期時刻Crefは通信装置120aにおける時刻Caと時刻オフセットOffsetを用いて、次の(4)式で求まる。
Cref = Ca + Offset ・・・(4)
通信経路160で経路異常が発生したとして、correctionFieldを補正する場合は、通信装置120bにて、次の(5)式を実行する。
CFnew = CFold +(D2 − D1)
= 10マイクロ秒 + (20マイクロ秒 ― 10マイクロ秒)
= 20マイクロ秒 ・・・(5)
通信装置120bを経由した場合、通信装置120aでSyncメッセージを受信した時刻Ca3は11秒30マイクロ秒(Ca1+D2)となる。
このとき、Syncメッセージの送信元の時刻Cs3は10秒30マイクロ秒(TS+CFold+D2)である。通信装置120aは、従来どおり、通信経路160の遅延D1を用いて、送信元の通信装置120の時刻を推定する。したがって、送信元の通信装置120と通信装置120aの時刻オフセットOffsetは次の(6)式となる。
Offset = Cs3 − Ca3
= 10秒30マイクロ秒 − 11秒30マイクロ秒
= −1秒 ・・・(6)
したがって、通信装置120aは、自身が保持している遅延D1の情報をそのまま利用し、従来どおり、送信元の通信装置120との時刻同期を実行することができる。
通信装置120aではなく、通信装置120lまたは通信装置120kが通信経路231または通信経路232及び通信経路160の遅延を補正する場合は、同様に通信装置120bにて、(1)式または(2)式によってD2とD1との差分(遅延変化分)を基に、同期パケットに付加される時刻情報を補正することが例示される。
以上の仕組みを実現するための構成を述べる。
通信装置120aでcorrectionFieldを補正する場合は、本来の通信経路と、その通信遅延を把握する必要がある。加えて、通信装置120bにおいては、どの通信装置120への通信であるか(今回の場合は通信装置120a)とその際の遅延(D2)が必要となる。
送信元の通信装置120l、通信装置120kの情報についてはパケット上に該通信装置120の識別子を格納する方法が例示される。これは通信装置120l、通信装置120kの識別子でもよいし、通信装置120lまたは通信装置120kが所属するシステム識別子でもよい。なお、VLANを用いてシステム識別子を表現する場合は、パケット上のVLAN IDをそのままシステム識別子として利用できない可能性があることに注意しなければならない。これは通信装置120a宛のパケットが通信装置120bを通るように、通信装置120l、通信装置120kにおいても異なるグループの経路を通る場合があるためである。
また、経路遅延D1、D2の計測は、ネットワーク中継装置121aを介したDelay Request Responseメカニズムやpeer delayメカニズムなどを用いた遅延計測を実行することが例示される。これは制御システムの動作実行前に計測してもよいし、動作中に継続的に計測してもよい。
なお、通信装置120b内のパケットの滞留時間(転送時間)は、通信装置120bにて計測し、correctionFieldまたはタイムスタンプを補正することが例示される。なお、補正対象はFollow_Upメッセージでもよい。
また、隣接するネットワーク中継装置121間が複数の経路となるように構成してもよく(例えば、図1のネットワーク中継装置121aとネットワーク中継装置121bを複数経路で接続する)、どの経路を通るかという情報をパケット上に含め、通信装置120bにおいて、利用する経路に応じた遅延を補正してもよい。補正の方法は、(1)式、(2)式と同様である。また通信装置120ではなく、correctionFieldまたはタイムスタンプの補正はネットワーク中継装置121が実行してもよい。
以上のタイムスタンプまたはcorrectionFieldの補正を含む、補正に係わる処理は受信制御部131または送信制御部130で実行することが例示される。
なお、冗長経路を有する二重系ネットワークにおいて、経路異常後に冗長経路を利用する場合は、通信装置120において、事前あるいは動的に冗長経路上の通信遅延を計測しておき、冗長経路へ切り替え時に同期パケット上の時刻情報を、遅延変化分を用いて補正してもよい。
これはネットワーク122上の一部の通信装置120が対応している状況でも構わない。この場合は、最終宛先ノードへの遅延を事前に計測しておく必要があるが、時刻の補正回数を削減できるため、補正処理時間にともなう同期誤差を低減でき、かつ、高速に転送できる。
本実施例によれば、時刻同期と経路冗長化が両立するので、経路冗長化により高信頼化が実現されるネットワークであっても、時刻同期が可能になる。また、HSR、PRPでは二重化までしか対応できないが、本実施例では、多重化したシステムの数だけの経路を利用することができ、より高信頼化できる。さらに、通信経路が冗長化されても、冗長化された通信経路中の通信装置やネットワーク中継装置で遅延変化分を基に同期パケットに属する時刻情報が補正され、同期パケットの受信側で遅延変化分を考慮して時刻情報を補正する必要がないので、受信側の通信装置が多くなる程、通信制御システム全体のコストを低減することができる。
図12は、本発明を適用した制御用計算機240を用いて構成するシステム例である。
制御用計算機240は、制御用ネットワーク242を介して、複数の被制御装置241(241a〜241d)と接続し、各被制御装置241を制御する。制御用計算機240は、2つの通信ポートを有し、制御用ネットワーク242と接続する。制御用計算機240として、専用コントローラ、産業用パソコン、制御用計算機、PLC(Programmable Logic Controller)、IED(Intelligent Electronic Device)、保護制御装置が例示される。
被制御装置241は、制御用計算機240からの制御指令を受けて動作する。被制御装置241から動作情報を制御用計算機240へ提供してもよい。被制御装置241として、MU(Merging Unit)、電力分野の主機(遮断器等)、インバータ、モータ、サーボアンプとサーボモータによる構成が例示される。なお、制御用計算機240と被制御装置241は、後述するように、いずれも、同期パケットを送受信する1又は2以上の送受信手段と、送受信手段の受信した同期パケットを処理する処理手段とを有する通信制御装置としての機能を有している。
制御用ネットワーク242として、Ethernet(登録商標:IEEE802.3)、各種産業用ネットワーク、IEC 61784、IEC 61158、IEC 61850(IEC 61850−90−3含む)、IEC 62439、IEC 61850−7−420、IEC 60870−5−104、DNP(Distributed Network Protocol)3、IEC 61970、IEEE 802.1 AVB、CAN(Controller Area Network:登録商標)、DeviceNet、RS−232C、RS−422、RS−485、ZigBee(登録商標)、Bluetooth(登録商標)、IEEE 802.15、IEEE 802.1、モバイル通信、OpenADR、ECHONET Lite(登録商標)、OpenFlow(登録商標)等が例示される。
図13は、本発明を適用した制御用計算機240のハードウェア構成の一実施例である。
制御用計算機240は、CPU101、冗長化通信制御部250、PHY103(103a、PHY103b)、メモリ104、不揮発性記憶媒体105、バス106を備えている。CPU101、冗長化通信制御部250、メモリ104、不揮発性記憶媒体105は、処理手段に属する要素として構成され、PHY103a、PHY103bは、送受信手段に属する要素として構成される。
冗長化通信制御部250は、CPU101上で動作するプログラムから通信要求を受け取り、PHY103(PHY103a又は103b)を用いて制御用ネットワーク242(242a又は242b)に対して通信する。冗長化通信制御部250の実装例としては、FPGA、CPLD、ASIC、ゲートアレイ等のICが例示される。なお、冗長化通信制御部250は、CPU101に含まれていてもよい。
(各機能部の説明)
図14に本発明を適用した冗長化通信制御部250の機能構成図を示す。
冗長化通信制御部250は、出力選択部260(出力選択部260a、260b)、入力選択部261(入力選択部261a、261b)、経路制御部262、時刻補正部263、バス264(バス264a、264b、264c、264d、264e)、計時部265、通信遅延記憶部266、送信部132(132a、132b)、受信部133(133a、133b)を備えている。
説明の便宜上、送信部132aと受信部133aを主ポート、送信部132bと受信部133bを冗長ポートとして以下説明する。
出力選択部260は、バス264aからのデータ入力に対して、2つの出力のいずれに転送するかを決定する。これは、CPU101上のソフトウェアから冗長化通信制御部250に対して設定してもよいし、出力先の通信経路の状態から判定してもよい。例えば、出力選択部260aにおいて、送信部132aがPHY103aと接続し、制御用ネットワーク242aとの通信が確立している場合は、データを送信部132aへと出力し、制御用ネットワーク242aにて何らかの異常があり、通信が確立していない場合は、データを入力選択部261aへと出力することが例示される。
入力選択部261は、2つのデータ入力に対して、どちらを出力するかを決定する。出力するデータ入力の選択は、CPU101上のソフトウェアから冗長化通信制御部250に対して設定してもよいし、タイムスロット通信方式を採用して時間帯ごとに入力先を選択してもよい。選択されていない入力(データ)は廃棄してもよいし、バッファを用いて保持してもよい。バッファに保持されたデータは、該入力データが出力として選択された場合に出力してもよいし、所定時間経過で廃棄してもよい。またバッファが満杯になった場合には、新しい入力(データ)を廃棄してもよいし、古いデータから廃棄してもよい。また入力選択部261はバッファリングにともなう処理時間を計時、記憶しておくことが例示される。あるいはバッファリングにともなう処理時間をデータ内に含めてもよいし(例えば図11のcorrectionField178)、あるいはデータの前後のいずれかに付加してもよい。
また、2つの入力(データ入力)が同時にあった場合は、事前に、あるいは冗長化通信制御部250に対して設定済みの入力を常に選択してもよいし、それぞれの入力データの内容に基づいて選択してもよい。選択されない入力は廃棄してもよいし、バッファを用いて保持してもよい。バッファに保持されたデータの扱いは上記と同様である。
経路制御部262は、バス264c、バス264eから入力されたデータをバス264b、バス264dの一方もしくは両方に出力する。これは入力データの内容または制御用ネットワーク242との接続状態、バス106との接続状態に基づいて制御する。
時刻補正部263は、経路制御部262から入力されたデータ上の時刻情報を補正する。
バス264は、機能部、ハードウェア間を接続するバスである。バス264aとバス264bは、バス106であるが、説明の便宜上、バス106と区別して示している。
計時部265は、所定の事象の発生時または発生期間を計時する機能部である。実装として、タイマと、少なくとも所定事象を受けた時点のタイマ値の記憶手段から構成される。
所定の事象とは、特定のパケット、データグラムの送信時、または受信時や、各機能部へのEthernetフレームまたはデータグラムの入力、出力等が例示される。
通信遅延記憶部266は、通信遅延に異常が発生して、変更された通信経路にかかわる情報を記憶する。それは、通信遅延そのものであってもよいし、変更後の通信遅延を算出可能な値であってもよい。また、変更前の正常時の通信遅延を記憶していてもよい。
(EtherCATでの時刻同期とスレーブ動作)
本発明は、冗長経路へパケットを転送する際の同期パケット上の時刻情報を補正することで、冗長経路の利用による高信頼化と時刻同期の両立を図る。本実施例においては、被制御装置241の動作が関係する。IEC61158、IEC61784パート2のCommunication Profile Family 12で定義されるEtherCAT仕様に準拠した被制御装置241を例に説明する。ただし、本発明の効果はEtherCAT仕様に限定されない。
(被制御装置241の説明)
図15に被制御装置241におけるハードウェア構成を示す。
通信ハードウェア270は、CPU101、複数のPHY103、不揮発性記憶媒体105、スレーブIC271を備えている。CPU101、複数のPHY103、不揮発性記憶媒体105、スレーブIC271は、処理手段に属する要素として構成され、複数のPHY103は、送受信手段に属する要素として構成される。
通信ハードウェア270は、被制御装置241における通信機能を実現する。実際の構成では、CPU101に周辺デバイスが接続し、センサやアクチュエータを制御するが、本発明の効果に関して説明するため、周辺デバイスは図15には図示していない。また、構成によっては、CPU101を有せず、スレーブIC271から直接、周辺デバイスに接続する構成であってもよい。また、ライントポロジを構成するため、通信機能であるPHY103を2つ有している。ただし、終端デバイスとして構成する場合は、PHY103は1つでもよいし、パケットを周回させることができれば3つ以上であってもよい。図16のスレーブIC271は、4つのPHY103と接続可能な構成を示している。
スレーブIC271は、IEC61158、IEC61784パート2のCommunication Profile Family 12で定義されるEtherCAT仕様に準拠したスレーブ専用のICである。
(スレーブICの説明)
スレーブIC271の構成を図16に示す。
スレーブIC271は、EtherCAT Processing Unit280、4つの自動転送部281(281a〜281d)、4つのループバック機能部282(282a〜282d)を備えている。
EtherCAT Processing Unit280は、EtherCAT仕様に準拠して、通信処理を実行するICである。EtherCAT Processing Unit280は、所定の事象に関連して、計時する機能を有する。具体的には、所定のアドレスにアクセスする、所定のコマンドを受信した場合に、各通信ポートで受信した時刻を計時し、レジスタとして公開する。制御用計算機240は、該レジスタにアクセスして、これらの時刻を取得可能である。
EtherCAT Processing Unit280は、バス283を介して、CPU101、あるいは周辺デバイスと接続し、CPU101、あるいは周辺デバイスへのEtherCATに関する情報の通知、あるいはCPU101からEtherCAT Processing Unit280を設定するため、あるいは周辺デバイスの情報をEtherCAT Processing Unit280に通知するために用いられる。また、バス283上に割込み信号をもうけてもよい。割込みを通知する方向は、EtherCAT Processing Unit280から対向装置(CPU101または周辺デバイス)でも構わないし、対向装置からEtherCAT Processing Unit280でもよい。
自動転送部281は、受信したパケットを、隣接する通信ポートへ転送する機能部である。転送方向は、図16に示すとおり、スレーブIC271内で一定になっている。
ループバック機能部282は、EtherCAT Processing Unit280からの設定とループバック機能部282が接続する通信経路の接続状態によって、通信ポートへパケットを送信するか、あるいは隣接するループバック機能部282へパケットを転送する機能部である。ループバック機能部282は、制御用計算機240から送信される通信内容にしたがって、EtherCAT Processing Unit280によって設定される。その設定内容の例として、接続している通信ポートの設定状態によってパケットの送信経路を切り替えるAutoモードがある。Autoモードでは、通信ポートを介して隣接する制御用計算機240、あるいは被制御装置241と通信が確立している場合は、ループバック機能部282は通信ポートへパケットを送信する。あるいは、通信経路が接続していないか、通信経路中に異常、故障があり、隣接する制御用計算機240、あるいは被制御装置241と通信経路が確立していない場合は、ループバック機能部282は隣接するループバック機能部282へパケットを転送する。
なお、EtherCAT仕様に限定せずに、被制御装置241は通信経路の異常に対して、パケットを制御用計算機240へ折り返す機能を有していれば、本発明の効果は失われない。すなわち、CPU101が通信経路の異常を検知して、パケットを折り返す方法や、制御用計算機240が被制御装置241に対して、パケットを折り返すように設定してもよい。被制御装置241における通信経路の異常の判定方法は、IEEE802.3で規定されるMDI(Management Data Interface)におけるPHY ICの状態レジスタのリンクステータスを用いる方法や、PHY ICで一般的に用いられるLED点灯用の出力信号を、CPU101や、別途もうけるFPGA、CPLD等(図示なし)で用いる方法が例示される。制御用計算機240における通信経路の異常の判定方法は、パケットを送信してから、受信する前に所定期間が経過したかどうかや、応答パケットがないこと、あるいは各被制御装置241が所定規則にしたがって操作(加減乗除など)するパラメータをパケット上に設け、応答パケットの該値を評価する方法(後述するワーキングカウンタを用いる方法等)が例示される。
(スレーブの時刻同期機能)
また、被制御装置241における時刻同期機能について説明する。
被制御装置241は、基準時刻に同期するための機能を具える。例えば、被制御装置241自身の管理する時刻(以下、ローカルクロックとする)と、基準時刻との差(以下、時刻オフセットとする)を保持し、ローカルクロックを基準時刻に同期する。あるいは、基準時刻を有する被制御装置241(制御用計算機240でもよい)と被制御装置241間の通信遅延を、時刻オフセットとは別に管理し、時刻オフセットとあわせて、ローカルクロックを基準時刻に同期してもよい。
図17を例に、これらの動作を説明する。スレーブAのローカルクロックを基準時刻とし、スレーブBが同期する場合を説明する。スレーブBにおける時刻オフセットOffsetBは以下の(7)式によって求める。
OffsetB = TAP − TBP ・・・(7)
スレーブBとスレーブA間の通信遅延tdiffABと、時刻オフセットOffsetBを用いて、スレーブBのローカルクロックCBは、次の(8)式のように基準時刻CAに同期させる。スレーブBにおける同期時刻をCrefBとする。
CrefB = CB + OffsetB − tdiffAB ・・・(8)
通信遅延tdiffABは、スレーブAとスレーブBにおけるタイムスタンプTa、Tb、Td、Teを用いて計算することができる(tdiffAB=((Te−Ta)―(Td−Tb))/2)。これらのタイムスタンプTa、Tb、Td、Teは、専用のデータグラムを受信した際に記録され、この専用データグラムは、例えば物理アドレス0x0900(ポート0における受信時刻レジスタ)に対する4byteサイズのBWR(ブロードキャストライト)コマンドである。以降、このデータグラムをタイムスタンプ用データグラムとして説明する。
スレーブ間の通信遅延を積算することで、基準時刻を提供する基準スレーブ(図17のスレーブA)と、それ以外のスレーブとの通信遅延を求めることができ、スレーブごとに時刻オフセットを求めることで、EtherCATネットワークにおけるスレーブは基準スレーブに時刻同期することができる。
なお、時刻オフセットや、通信遅延は複数回求めて最小値あるいは最大値を用いてもよいし、平均値や統計処理を施した数値を用いてもよい。
また、基準時刻の計算においても(8)式による推定だけでなく、定期的に基準時刻を取得し、基準時刻を所定の数学モデルで近似する方法が例示される。
加えて、各スレーブのローカルクロックの基準となる物理的な精度誤差(例えば、水晶振動子の誤差)から、一度同期をしたとしても、経時にしたがい同期精度は低下していく。
これを防止するため、定期的に基準スレーブの基準時刻をスレーブ群に配信し、時刻同期する。この基準スレーブの時刻配信に用いられるデータグラムとして、物理アドレス0x0910(システムタイムレジスタ)に対する8byteサイズのARMW(オートインクリメントリード、マルチプルライト)コマンドあるいはFRMW(Configured Read Multiple Write)が例示される。これは指定のスレーブ(例えば基準スレーブ)に対してリード命令となり、それ以外のスレーブに対してライト命令となるコマンドである。このコマンドを用いて基準スレーブの基準時刻をリードし、基準スレーブ以外のスレーブに対して基準時刻を配信する。以降、基準時刻配信用のデータグラムを基準時刻配信用データグラムとして説明する。
(EtherCATスレーブのタイムスタンプ)
EtherCATにおいては、スレーブ間の通信遅延を計算するために図17で示す機能を有している。すなわち、所定のパケットの受信にともなって、各通信ポートでの受信時刻(Ta、Tb、Tc、Td、Te)やEtherCAT Processing Unit280での受信時刻(TAP、TBP、TCP)を計時する機能を具える。なお、スレーブ間の通信遅延を求めることができれば、被制御装置241が具えなければならない機能は上記の計時機能に限定されない。例えば、NTP(Network Time Protocol)やIEEE1588のバウンダリクロック機能や、end−to−end TC(Transparent Clock)、peer−to―peer TC(Transparent Clock)、あるいはそれらに類する機能を用いることが例示される。
(動作シーケンス)
本実施例における動作を図18(経路異常が発生していない場合)、図19(経路異常が発生している場合)を用いて説明する。本実施例の動作を説明するため、冗長化通信制御部250における経路制御部262、時刻補正部263を中心に説明する。出力選択部260、入力選択部261については図示していない。送信部132はTx、受信部133はRxとして図示している。
図18、図19では、図17に示す時刻同期プロトコルによって、各被制御装置241間の通信遅延は既知の状態とする。なお、被制御装置241aがEtherCATネットワーク全体の基準時刻を提供する基準スレーブとなる。
また、冗長化通信制御部250の送信部132、受信部133あるいはPHY103において、タイムスタンプ用データグラムの送信時刻、受信時刻を計時部265にて計時し、図17と同様の方法により、制御用計算機240と基準スレーブ間の通信遅延を算出することが例示される。この通信遅延を用いて、制御用計算機240自体を被制御装置241aと同期できる。
被制御装置241bに着目した場合、基準スレーブである被制御装置241aとの通信遅延はtABであり、この値を制御用計算機240から設定されて被制御装置241bは自身に保持する。また、基準スレーブとの遅延として被制御装置241cはtAB+tBC、被制御装置241dはtAB+tBC+tCDの値をそれぞれ保持する。
ここで、被制御装置241aと被制御装置241b間の通信経路で異常が発生した場合(図19)、被制御装置241aは経路異常を検知して、冗長化通信制御部250へとパケットを折り返す。
冗長化通信制御部250では、経路制御部262にて経路を制御し、冗長ポートの送信部132へと転送する。結果、パケットは、被制御装置241b、被制御装置241c、被制御装置241dと、順に転送され、全ての被制御装置241へと伝送される。
このとき、被制御装置241b、被制御装置241c、被制御装置241dへは本来の経路(図18)とは異なる経路を経由するため、基準時刻配信用データグラムで基準時刻を受信しても、誤って同期計算をする。そこで、時刻補正部263において、経路異常発生時の基準時刻配信用データグラム上の時刻を補正して、冗長ポートから送信する。具体的には、以下のように遅延が変化する。遅延が変化する箇所は被制御装置241aと被制御装置241b間であり、経路異常がない場合の遅延(第一の通信遅延)は、tABである。経路異常が発生した場合は、被制御装置241aと被制御装置241b間の遅延(第二の通信遅延)Dchは、Dch=tAm’+tmD+tDC+tCB+tBに変化する。
したがって、遅延tABと遅延Dchとの差分である遅延変化分は、Dch―tABとなり、時刻補正部263は、基準時刻配信用データグラム上の基準時刻Toldを次の(9)式ように補正する。
Tnew = Told + Dch ― tAB ・・・(9)
具体例を用いて説明する。
今、Toldが10秒000で、tABが10マイクロ秒であったとする。被制御装置241bが基準時刻配信用データグラムを受信した際の被制御装置241bのローカルクロックCb1が11秒10マイクロ秒だったとする。
経路異常がない状態では、被制御装置241bが基準時刻配信用データグラムを受信した際の基準スレーブの時刻Ca1は10秒10マイクロ秒(Told+tAB)である。したがって、被制御装置241aと被制御装置241bの時刻オフセットOffsetは次の(10)式となる。
Offset = Ca1 − Cb1
= 10秒10マイクロ秒 − 11秒10マイクロ秒
= −1秒 ・・・(10)
したがって、被制御装置241bにおける同期時刻Crefは被制御装置241bにおけるローカルクロックCbと時刻オフセットOffsetを用いて次の(11)式で求まる。
Cref = Cb + Offset ・・・(11)
経路異常が発生したとして、Toldを補正する場合は、時刻補正部263にて、次の(12)式を実行する。ここで、Dchが50マイクロ秒だったとする。
Tnew = Told + Dch − tAB
= 10秒000 + 50マイクロ秒 ― 10マイクロ秒
= 10秒40マイクロ秒 ・・・(12)
経路異常の場合、被制御装置241bで基準時刻配信用データグラムを受信した際の被制御装置241bのローカルクロックCb2は11秒50マイクロ秒(Cb1−tAB+Dch)となる。
このとき、基準スレーブの時刻Ca2は10秒50マイクロ秒(Told+Dch=Tnew+tAB)である。被制御装置241bは、従来どおり、基準スレーブとの遅延(第一の通信遅延)tABを用いて、基準スレーブの時刻を推定する。したがって、被制御装置241bと被制御装置241aの時刻オフセットOffsetは次の(13)式となる。
Offset = Ca2 − Cb2
= Tnew + tAB − Cb2
= 10秒40マイクロ秒 + 10マイクロ秒 − 11秒50マイクロ秒
= −1秒 ・・・(13)
したがって、被制御装置241bは、自身が保持している遅延tABの情報をそのまま利用し、従来どおり、基準スレーブとの時刻同期を実行できる。つまり、経路異常箇所以降に位置するスレーブであっても、経路異常の発生を意識することなく、同期処理を実行できる。
なお、遅延(第二の通信遅延)Dch=tAm’+tmD+tDC+tCB+tBの算出において、tDC、tCBは、図17に示す時刻同期プロトコルの過程で算出可能である。tAm’、tmDは、前述のとおり、冗長化通信制御部250における遅延計測により算出可能である。tmDは、遅延の一部に冗長化通信制御部250内の遅延を含むが、計時部265で計測可能である。図18と図19でtmDの経路は異なるが、冗長化通信制御部250内部の遅延として等価としている。もし遅延が異なれば、その差を踏まえて補正する。tBは、被制御装置241b内の遅延であり、被制御装置241bまたはスレーブIC271の仕様であり、既知である。
また、入力選択部261でデータを出力するまでに遅延が生じる場合は、これを計測し、補正時刻の算出に反映してもよい。
また、時刻補正に用いる遅延は継続的に計測してもよいし、システムの再稼働時、経路状態の変更等の所定事象の発生時に計測し直してもよい。
(実現に必要な機能)
以上の仕組みを実現するためには、経路制御部262で経路を制御するための経路異常発生の判定と経路制御、時刻補正部263における遅延変化分を決定するための経路異常位置の特定が必要である。これらについて以下説明する。
(経路異常の発生)
はじめに、冗長ポートからパケットを受信する前に、主ポートからパケットを受信したかどうかをみる方法が例示される。冗長ポートでパケットを受信せず、主ポートで受信した場合に、通信経路を異常と判定する。
また、異常判定の方法として、全てのスレーブが処理すべきレジスタに対するBRD(Broadcast Read)コマンドをEtherCATフレームに付与し、そのワーキングカウンタを見る方法が例示される。EtherCATフレームのワーキングカウンタの値が、事前に設定した所定数よりも小さければ通信経路を異常と判定する。例えば、図19の場合、主ポートで該コマンドを含むデータグラムを受信すると、被制御装置241aのみがワーキングカウンタに1を足すため、受信したテレグラムのワーキングカウンタの値は1となっている。これは全スレーブ数4よりも小さいため、異常の発生及び異常の発生位置を特定できる。全スレーブ数は事前に通信遅延記憶部266等に記憶しておくことが例示される。これは、例えば、主ポートが同期パケットを受信した際に、記憶した送受信情報(ワーキングカウンタ)の中に冗長ポートから同期パケットを送信済みであることを示す情報が存在しない場合であり、経路異常と判定され、主ポートが受信した同期パケットは冗長ポートに転送される。
これらの異常判定の方法は組み合わせて用いてもよい。いずれかの判定方法によって異常と判定した場合に異常と判定してもよいし(論理和)、両方の判定方法で異常と判定した場合に異常と判定してもよい(論理積)。
なお、冗長ポートに接続する通信経路に異常がある場合、主ポートから送信されたパケットは冗長ポートで受信する前に主ポートで受信するが、BRDコマンドのワーキングカウンタの値は全スレーブ数と一致する。この場合、主ポートで受信したパケットは冗長ポートへ転送してもよいし、通信経路の異常をユーザやオペレータに通知して、パケットは冗長化通信制御部250内部に取り込んでもよい。
(EtherCATフレームとWKCの説明)
EtherCATのパケット構成を図20に示す。EtherCATの通信内容は、Ethernetフレーム290のデータ領域292に格納される。EtherCATにおける、Ethernetヘッダ291のTypeフィールドは0x88A4である。データが正しいかどうかをFCS(Frame Check Sequence)293を用いて検査する。
EtherCATのデータ構造は、EtherCATヘッダ294と、ひとつ、または複数のデータグラム295で構成され、データグラム295は、データグラムヘッダ296、データ297、ワーキングカウンタ(WKC)298から構成される。ワーキングカウンタ298は、そのデータグラム295を処理すべきスレーブで正しく処理されるたびに、スレーブによって所定の数だけカウントアップされるフィールドである。なお、データグラムヘッダ296には、コマンド299、インデックス(index)300、アドレス301、データサイズ302、予約303、C304、M305、IRQ306が含まれる。
(通信経路異常の発生箇所の特定方法)
あるいは、各スレーブの各通信ポートのロストリンクカウンタレジスタを読み、非ゼロの値が取得された通信ポートが接続する通信経路が異常であると判定する。なお、ロストリンクカウンタレジスタは読み込みと同時に、書込みによってレジスタ値をクリアしてもよい。以上の方法によって、通信経路の異常が起きたと判定した位置を特定できる。これはCPU101上で動作するプログラム等に提示してもよい。
(変化遅延を制御用計算機240で保持)
本発明を実現する上で、補正する遅延を算出する必要がある。補正する遅延は、経路異常の発生位置によって変わる。したがって、経路異常の発生位置を特定する必要がある。これは前記のとおり、ワーキングカウンタ298を用いる方法等が例示される。
発生位置は、オートインクリメントアドレスを用いたコマンドを用いてもよい。被制御装置241は、オートインクリメントアドレスに対するコマンドを受信すると、アドレス値の一部をカウントアップするため、経路異常発生時に主ポートで受信したアドレス値と初期値を比較することで発生位置を特定することができる。被制御装置241によっては、MACアドレスの一部をカウントアップする場合もあるため、オートインクリメントアドレスと同様の方法により、経路異常の発生位置を特定することができる。
あるいは、スレーブごとに異なる値を所定アドレスに設定し、これを読むことで経路異常位置を特定する方法が例示される。例えば、被制御装置241の数だけのビットのデータを用意し、アクセスされた場合に被制御装置241ごとに異なるビットを1にする方法である。ビット0を最初の被制御装置241、ビット1を2番目の被制御装置241、ビット2を3番目の被制御装置241・・・、と設定する。経路異常の直前の被制御装置241がデータを設定するため、例えば、2番目と3番目の被制御装置241間の通信経路で異常が発生した場合、論理アドレスに対するリードコマンド(LRD)で読み出した値は0x02(1byte、8台分の被制御装置241の場合)となり、ブロードキャストリードコマンドの場合、論理和となるので、読み出した値は0x03となる。
なお、ビット単位で被制御装置241を割り当てるのではなく、各被制御装置241が所定の値(例えば、単純に順番)を返すようにしてもよい。この場合、ブロードキャストリードコマンドは論理和となるため、論理アドレスに対するリードコマンド(LRD)が望ましい。
発生位置を特定できれば、図17、図19の遅延計測の仕組みによって変化遅延を算出できるため、遅延計測時に経路異常の発生位置と、対応する変化遅延を通信遅延記憶部266に保持しておく。
経路異常時に制御用計算機240でパケットを受信した際、ワーキングカウンタ等の手段から、発生位置を特定し、通信遅延記憶部266から、該当する変化遅延を取得して、時刻補正部263にて基準時刻配信用データグラム上の基準時刻を補正する。
(スレーブで変化遅延を保持する)
あるいは変化遅延に関する情報を被制御装置241に格納し、その値を用いてもよい。EtherCATでは、論理アドレスによるアドレス方法を用いることができる。論理アドレスとは、仮想上のアドレス空間であり、任意のスレーブの物理アドレスを対応付けることができる。各スレーブは論理アドレスへのアクセスコマンドを受信した場合、該当の論理アドレスが自身の物理アドレスに割り当てられているかを確認する。もし割り当てられていれば、該当の物理アドレスの情報に対してアクセスする(リードコマンドであればデータグラムに情報を載せ、ライトコマンドであれば該当の物理アドレスにデータを書き込む)。論理アドレスにアクセスすることで、対応付けられたスレーブの物理アドレスの情報にアクセスすることができる。
(論理アドレスによる補正)
変化遅延の情報取得に論理アドレスの仕組みを用いることができる。
同じ論理アドレスに対して、異なる物理アドレス(同じスレーブまたは異なるスレーブの物理アドレス)が対応付けられた場合、データグラム上のデータは最後にアクセスされた物理アドレスの情報に上書きされる。
したがって、各スレーブに対して、所定の物理アドレス(スレーブによって異なっていてよい)に変化遅延情報を格納し、それらの物理アドレスを同一の論理アドレス(例えば0x10000)に対応付け、EtherCATフレーム上に該論理アドレスへアクセスするリードコマンド(Logical Read:LRD)のデータグラムを格納することが例示される。
このようにすれば、経路異常発生時に経路異常発生位置で折り返されてマスタで受信した論理アドレスリードコマンドのデータグラムのデータには、経路異常発生位置直前のスレーブ(図19の被制御装置241a)が設定したデータが格納される。つまり、マスタは、経路異常発生位置に応じたデータ(変化遅延情報)を一つのデータグラムで取得することができる。スレーブの変化遅延情報を各スレーブに分散させて保持することで、マスタ内で記憶容量を減らすことができる。これにより、計算機資源に制約のある組み込み機器等でのマスタ装置の実現が可能となる。
これを実現するため、事前に変化遅延情報を算出しておき、各被制御装置241に論理アドレスを設定し、変化遅延情報を記憶させておく。
あるいは、スレーブの数だけデータグラムを付加し、各スレーブが該当するデータグラムに変化遅延情報を格納してもよい。
なお、対応付けるデータ領域のサイズは変化遅延の最大値を表現可能なデータサイズに依存する。したがって、変化遅延の分解能や要求精度に依存する。例えば、時間分解能をナノ秒として変化遅延情報の最大値が65535ナノ秒以下であれば16ビット(2byte)で表現可能である。
このデータは、時刻補正部263の実装に依存するため、時刻補正部263の処理内容と時間分解能等の処理方法が一致していればよい。
また、EtherCATでの制御通信で論理アドレスを用いる場合は、それらの論理アドレス空間と連続するように変化遅延情報の物理アドレスを論理アドレス空間上に対応付けてもよい。このようにすれば、制御用途の論理アドレスアクセス用データグラムと、変化遅延情報の取得用データグラムをまとめられるため、EtherCATフレーム上のデータ利用効率が向上する。
なお、論理アドレスのかわりに設定済み(configured)アドレスを用いてもよいし、専用のコマンドを定義してもよい。
また、論理アドレスの代わりにブロードキャストアドレスの利用は困難である。これは、ブロードキャストアドレスへのリードが上書きではなく、論理和であるためである。
(マスタの同期)
なお、制御用計算機240自身を基準スレーブに同期する場合は、基準時刻配信用データグラム上の基準時刻を変更していることに注意する必要がある。経路異常がない状態(図18)では、冗長化通信制御部250が基準時刻配信用データグラムを受信した後、遅延tmAと、基準時刻配信用データグラム上の基準時刻Caを用いて同期する。この関係を次の(14)式に示す。
Cref = Ca − tmA ・・・(14)
このCrefと、基準時刻配信用データグラムを主ポートで送信した時刻Cmとの比較により時刻オフセットを求めて同期する。
しかしながら、図19の場合、時刻補正部263を経由後に基準時刻をCanewに変更しているため、次の(15)式に示すように、差分Dを補正して同期する必要がある。
Cref = Canew − D − tmA ・・・(15)
(正常時の迂回経路遅延を用いた変化遅延の補正)
なお、各スレーブに格納する変化遅延情報は、基準時刻配信用データグラム上の基準時刻に加算する値そのもの(例えば(9)式のDch−tAB)を計算して求めてもよいし、制御用計算機240で計測可能な値に対する補正分としてもよい。一例を示せば、これは図18のTm−Tsに対する差分である。
(9)式等で用いた経路異常後の遅延(第二の通信遅延)Dchの算出においては、被制御装置241の数が変化した場合や、各被制御装置241間の通信遅延を個別に計算しなければならないため、面倒である。そこで、経路異常発生後の経路遅延と図18に示すTm−Tsまでの経路とその遅延で共通する部分が多いことを活かし、算出を容易にする。なお、Tmは経路正常時の主ポートでのパケット受信時刻であり、Tsは冗長ポートでの受信時刻であり、Tm−Ts含め、いずれも制御用計算機240において計測可能な時刻である。
遅延Dch=tAm’+tmD+tDC+tCB+tBに対して、Tm−Tsは以下の(16)式の構成となる。
Tm − Ts = tAm + tBA + tCB + tDC
+tmD ・・・(16)
したがって、変化遅延DchとTm−Tsの差分は次の(17)式となる。
Dch−(Tm―Ts)=tAm’+tmD+tDC+tCB+tB
−(tAm + tBA + tCB + tDC
+ tmD)
= tAm’−tAm+tB―tBA
= tdiffA + tB ― tBA ・・・(17)
ここで、tdiffAは、被制御装置241aにおけるEtherCAT Processing Unit280の経過遅延であり、仕様として既知である。なお、図18と図19のtmDをそれぞれ等価としているが、異なる場合は差分を補正する。
したがって、(17)式の値を被制御装置241bに記憶しておけば、時刻補正部263にて、データグラム上の(17)式の値と、事前に計測したTm―Tsの値を加算することで変化遅延(第二の通信遅延)Dchを求めることができ、(9)式によって基準時刻配信用データグラムの基準時刻を補正できる。
このようにすれば、個々のスレーブにおける設定値の算出が容易となり、場合によって設定値の最大を減らせるため、スレーブにおける記憶データ容量、論理アドレスの割り当てサイズを減らすことができる。
(Tm、Ts計測の対象データグラム)
なお、TmとTsは、同じパケット、データグラムに対して計時する必要がある。時刻補正部263による基準時刻の変更は、基準時刻配信用データグラムに対して実行するため、基準時刻配信用データグラムを対象とすることが例示されるが、それ以外のデータグラムやEthernetフレームを対象としてもよい。なお、計測遅延の誤差を低減するため、Ethernetフレーム上の同一箇所を対象に計測することが望ましく、Ethernetヘッダの先頭やプリアンブルの先頭、EtherCATヘッダの先頭などが例示される。
なお、TmとTsの計測対象パケットが同じかどうかを特定する必要がある。パケットを特定する方法としては、パケットへ所定の処理を加えることや、冗長化通信制御部250でパケットを識別するための情報を記憶する方法が例示される。
パケットへ加える処理としては、パケット上の所定パラメータを所定値にすることや、シーケンス番号を設定する方法、特定のパラメータを設定する方法、スレーブの動作に影響を与えない情報領域をパケットへ付加する方法が例示される。具体的には、IRQ306の所定ビットを1にすることや、図20に示すindex300を所定値にすること、存在しないアドレス301にアクセスするデータグラムを付加することや、コマンド299をNOP(No Operation)としたデータグラムを付加することが例示される。
冗長化通信制御部250で情報を記憶する方法としては、パケットのデータグラムヘッダ296のパラメータ(コマンド299、index300、アドレス301等図20参照)を記憶する方法や、データサイズ等のパケットにかかわる属性値を記憶する方法が例示される。
あるいは、パケットを識別する必要のないようにパケットを1つずつ通信処理するようにしてもよい。このようにすれば、あるパケットを送信してから、受信するパケットは、送信したパケットと同じであることを保証できる。または、常時、パケットを1つずつ通信処理するのではなく、受信時刻Tm、Tsを計測するために、所定回数のみ、パケットを1つずつ通信処理してもよい。所定回数は1回でもよいし、複数回でもよい。
なお、差分D=Tm−Tsは、複数回求めて最小値あるいは最大値を用いてもよいし、平均値や統計処理を施した数値を用いてもよい。
また、差分Dは、通信経路に異常が発生した時に、変更した通信遅延を求めるために必要であるが、別の方法で求めてもよい。例えば、各スレーブのEtherCAT Processing Unit280を経由しない通信遅延Pがわかっている場合は、通信遅延Pをスレーブ数分合計した値Dpを差分Dとしてもよい。また、事前に制御用計算機240内の転送遅延を計測し、計測値をスレーブ数分合計した値Dpに加えてもよい。
なお、アプリケーションの実行開始時に、すでに通信経路異常が発生している場合は受信時刻Tm、Tsを保持していないため、差分Dを算出できない。したがって、実行開始時にCPU101上のソフトウェアでユーザやオペレータに通知して、通信経路の異常発生箇所の特定や、被制御装置241の点検、通信ケーブルの交換、確認等が例示される。
(パケット上のデータを用いた経路制御)
なお、制御用計算機240がどのようにパケットを経路制御したかをパケット上に記憶し、それを用いて経路制御部262においてパケットの経路を制御してもよい。
これは、通信経路の一時的な障害や復帰による通信経路への変更に対応することを目的としている。例えば、経路異常を検知して冗長ポートへ転送して送信後に、再度冗長ポートで受信予定であったパケットが、経路異常が復旧し、主ポートで受信する場合である。このような場合に、パケット上に経路制御の履歴を示すことで適切にパケットを処理できる。
(データグラム上の4ビットを用いた経路判定)
データグラム上の4ビットを用いる例を図21に示す。なお、図21に示すビット情報のパラメータを格納する領域として、index300、IRQ306、MACアドレスの一部やNOPなどの付加データグラムを利用してもよい。
各ビットを図21に示す意味づけとする。
つまり、ビット0は主ポートから送信した場合に1とする。ビット1は主ポートで受信した場合に1とする。ビット2は、冗長ポートから送信した場合に1とする。ビット3は冗長ポートで受信した場合に1とする。なお、主ポートからは必ず送信するとした場合はビット0を省略可能である。主ポートあるいは冗長ポートで受信後、上記ビットを確認し、該パケットの経路制御を実行する。
図22に主ポート、冗長ポートでの受信時の処理例を示す。図22(a)は、主ポートでの受信時の処理であり、図22(b)は、冗長ポートでの受信時の処理である。なお、これらは受信時に図21のビットを設定する前の経路制御例であるが、図21のビットを設定後に経路制御してもよい。
例えば、主ポートで受信した際にビット3−0が「0001」である場合は、主ポートから送信後に経路異常で折り返しを想定し、冗長ポートで受信することなく、主ポートで受信したことを意味するため、図19の状態である。この場合は、パケット処理内容は、冗長ポートへ転送するとなる。図14の経路制御部262においては、バス264cで受信したパケットをバス264dに出力することを示す。
なお、主ポートで受信した際の「0111」の場合は、冗長ポートへ転送後に経路復帰であることを想定し、冗長ポートで受信した際の「1101」の場合は、冗長ポートから送信後に経路異常を想定し、いずれも一時的な経路異常または復帰であるため、パケット処理内容は廃棄または冗長ポートから送信が考えられる。構成を容易にするためには破棄することが望ましい。
これらの経路制御のマークは、先頭のデータグラムなどの一部のデータグラムでもよいし、全てのデータグラムに対して実施してもよい。なお、以上の処理はパケット内容を改変するため、送信時にはCRCを再計算することが例示される。
(MACアドレスを用いた経路制御)
なお、Ethernetフレームの先頭に近いデータを用いる方が、経路制御にともなうEthernetフレームのバッファリングを最小限にできるため、高速な経路制御処理及びバッファ容量の削減といった効果がある。
したがって、宛先MACアドレスの先頭1byteを用いることが例示される。
特にEtherCATではスレーブとの通信においてMACアドレスを用いないため、MACアドレスの利用が可能である。
(経路制御の別実施例)
別の実施例を図18、図19、図23、図24に示す。
この実施例は、データグラムの種類と、経由した経路に応じてパケット上の識別子を変更し、各部で処理する。識別子は、Ethernetフレームヘッダの宛先MACアドレス、index300、IRQ306、NOPなどの付加データグラム上のパラメータのいずれか、または複数を利用して表現することが例示される。図24では、識別子としてDC1、DC2、DC3、N1、N2を示しているが、具体的な値は相互に識別可能であれば、どのような値でも構わない。
対象データグラムの区別としては、EtherCATの遅延計測の仕組み上、各スレーブの受信時刻の記憶に用いるタイムスタンプ用データグラムのみ、経路異常がない状態で周回する必要がある。
したがって、送信部132aから送信する際にタイムスタンプ用データグラムの識別子をDC1とし、それ以外のデータグラムの識別子をN1とする。経路制御部262、時刻補正部263等で識別子の変更及び識別子に基づいたパケット処理を制御する。
以下、タイムスタンプ用データグラム、それ以外の通常データグラムについて、経路異常がない場合と、経路異常がある場合の処理について説明する。
タイムスタンプ用データグラムで経路異常がない場合は、受信部133bで受信され、図24の入力選択部261の入力側Aにて識別子をDC1からDC2に変更する。その後、時刻補正部263で識別子をDC2からDC3に変更して送信部132bから送信する。これは受信部133aで受信されてバス264bを経由して制御用計算機240内部に受信される。これは図18に示す経路を通過する。
なお、時刻補正部263で識別子をDC2からDC3に変更せず、仮に受信部133aから、経路制御部262内部の入力選択部261へ転送する際に識別子DC2のデータグラムを破棄し、同様に受信部133aからバス264bへ転送する際に識別子DC2を通過するように構成してもよい。
タイムスタンプ用データグラムで経路異常がある場合は、受信部133aで受信される。このデータグラムは破棄すべきであるため、バス264bへの出力途中あるいは時刻補正部263にて破棄される。
通常データグラムで経路異常がない場合は、受信部133bで受信され、バス264bに出力される。通常データグラムは全ての被制御装置241のEtherCAT Processing Unit280を経由すれば、冗長ポートから出力する必要が無いため、図23の経路を通過し、冗長ポートで受信した後にパケットを内部に取り込む。
通常データグラムで経路異常がある場合は、受信部133aで受信され、時刻補正部263において、識別子をN1からN2に変更して送信部132bから送信される。これは受信部133bで受信されて、バス264bを経由して内部に取り込まれる。これは図19の経路を通過する。なお、識別子としては、例えば、計時の要否(同期対象装置に計時されるか否か)と、主ポートでの受信後のパケットの転送先と、冗長ポートでの受信後のパケットの転送先と、冗長ポートによる送信の要否をそれぞれ識別する識別子が例示される。この際、被制御装置241では、各識別子を同期パケットに関連づけて記憶し、主ポート又は冗長ポートが同期パケットを受信した際に、識別子に基づいて、同期パケットの受信、同期パケットの破棄或いは同期パケットの転送のうち少なくとも一つの処理を実行する。
以上の方法を用いれば、通信経路の一時的な障害や復帰によるパケットのネットワーク上での残存及び氾濫を防止することができる。
(ステートマシンによる制御。パケットごとの判定ではない方法)
なお、経路制御部262の内部経路の切り替えは、受信パケットごとに異常の有無を判定して、切り替えてもよいし、図18、図19、図23に示す経路構成を状態遷移で管理してもよい。状態間の遷移は、受信パケットの異常判定、正常判定に基づいて制御することが例示される。
正常判定の方法として、主ポートから送信後に冗長ポートでパケットを受信し、その後、冗長ポートからパケットを送信後に主ポートでパケットを受信したかどうかのいずれか、または両方に該当する方法が例示される。対象データグラムの特定方法は前記のとおりである。
あるいは正常判定の方法として、全てのスレーブが処理すべきレジスタに対するBRDコマンドをEtherCATフレームに付与し、そのワーキングカウンタを見る方法が例示される。EtherCATフレームのワーキングカウンタの値と、事前に設定した所定数と等しい場合に通信経路を正常と判定する。
なお、経路の切り替えや異常判定、正常判定等の動作を、バス106を介してCPU101上で動作するプログラム等に通知してもよい。バス106の通信手段には割込み通知等の手段がある。この通知を受けたプログラムでは、通信経路上に異常が生じていること、あるいは正常に復帰したことをユーザやオペレータに通知することで、ユーザやオペレータは異常を復旧させるために通信ケーブルの置換等の対策の実施や、その対策の完了を確認することができる。
なお、制御用計算機240は主ポート、冗長ポートの2つのポートを有するとして説明したが、本実施例で説明した主ポートと冗長ポートの組み合わせを複数分用意した複数ポートで構成してもよい。その場合、本実施例ではパケットが最後に通過するバス264bはバス106へと接続するとしたが、別の主ポートへの接続となる。なお、通信ポートが奇数の場合は、余りの1つのポートではライントポロジで被制御装置241を接続する構成が例示される。
(効果)
本実施例によれば、通信経路に異常が発生したとしても、制御用計算機240は冗長経路を利用し、かつ、冗長経路を利用した場合の遅延の変化を基準時刻配信用データグラム上の基準時刻に反映することで、被制御装置241は経路異常の発生を意識することなく時刻同期を維持することができる。したがって、制御用途のリアルタイム通信において、経路冗長化による高信頼化と高精度な時刻同期を実現できる。
また、パケット、データグラムの識別子、あるいは状態遷移を用いて経路制御することで、一時的な通信経路の変化によるパケットのネットワーク上での残存及び氾濫を防止することができる。さらに、定期的に基準スレーブの基準時刻をスレーブ群に配信し、時刻同期するようにしているので、各スレーブのローカルクロックの基準となる物理的な精度誤差から、一度同期をしたとしても、経時にしたがい同期精度が低下していくのを防止することができる。