(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-27
(45)【発行日】2024-06-04
(54)【発明の名称】通信制御機器および通信制御機器の制御方法
(51)【国際特許分類】
H04L 69/00 20220101AFI20240528BHJP
【FI】
H04L69/00
(21)【出願番号】P 2020039983
(22)【出願日】2020-03-09
【審査請求日】2023-01-11
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】100155712
【氏名又は名称】村上 尚
(72)【発明者】
【氏名】玉井 俊規
【審査官】中川 幸洋
(56)【参考文献】
【文献】米国特許出願公開第2013/0315237(US,A1)
【文献】米国特許出願公開第2016/0301631(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 69/00
(57)【特許請求の範囲】
【請求項1】
メインメモリへと転送するために、ネットワークから受信した受信データを、互いに異なる優先順位が予め付与された複数の受信キューのいずれかに格納する通信制御機器であって、
前記複数の受信キューの少なくとも1つについて、格納されるべき前記受信データの、送信元アドレス、宛先アドレス、イーサーネットフレームのタイプの少なくとも1つを規定した基準テーブルと、
前記受信データの、送信元アドレス、宛先アドレス、イーサーネットフレームのタイプの少なくとも1つを用いて、前記基準テーブルに従って、前記受信データを格納する受信キューを、前記複数の受信キューの中から選択する選択部と
を備
え、
或る受信データを受信した後に受信した別の受信データを、前記或る受信データよりも先に前記メインメモリへと転送した回数を示すログである順序変更ログを生成する、通信制御機器。
【請求項2】
前記ネットワークから前記受信データの受信を開始した時刻である受信開始時刻と、前記受信データの前記メインメモリへの転送を開始した時刻である転送開始時刻とを対応付けたログである開始時刻ログを生成する
請求項1に記載の通信制御機器。
【請求項3】
前記ネットワークからの前記受信データの受信を完了した時刻である受信終了時刻と、前記受信データの前記メインメモリへの転送を完了した時刻である転送終了時刻とを対応付けたログである終了時刻ログを生成する
請求項1
または2のいずれか1項に記載の通信制御機器。
【請求項4】
前記受信終了時刻は、前記ネットワークから前記受信データの受信を開始した時刻である受信開始時刻と、前記ネットワークの通信速度と、前記受信データのデータサイズとから算出され、
前記転送終了時刻は、前記受信データの前記メインメモリへの転送を開始した時刻である転送開始時刻と、前記メインメモリへの転送速度と、前記受信データのデータサイズとから算出される
請求項
3に記載の通信制御機器。
【請求項5】
前記選択部は、前記受信データの送信元アドレスのみを用いて、前記基準テーブルに従って、前記受信データを格納する受信キューを、前記複数の受信キューの中から選択する請求項1から
4のいずれか1項に記載の通信制御機器。
【請求項6】
前記基準テーブルは、前記ネットワークの構成情報を含む、ユーザが前記ネットワークについて規定した各種設定情報を用いて生成される
請求項1から
5のいずれか1項に記載の通信制御機器。
【請求項7】
前記開始時刻ログは、自装置内または外部の不揮発性メモリに格納される
請求項2に記載の通信制御機器。
【請求項8】
メインメモリへと転送するために、ネットワークから受信した受信データを、互いに異なる優先順位が予め付与された複数の受信キューのいずれかに格納する通信制御機器の制御方法であって、
前記複数の受信キューの少なくとも1つについて、格納されるべき前記受信データの、送信元アドレス、宛先アドレス、イーサーネットフレームのタイプの少なくとも1つを規定した基準テーブルに従って、前記受信データの、送信元アドレス、宛先アドレス、イーサーネットフレームのタイプの少なくとも1つを用いて、前記受信データを格納する受信キューを、前記複数の受信キューの中から選択する選択ステップと、
前記選択ステップにて選択された前記受信キューに、前記受信データを格納する格納ステップとを含
み、
或る受信データを受信した後に受信した別の受信データを、前記或る受信データよりも先に前記メインメモリへと転送した回数を示すログである順序変更ログを生成する、制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メインメモリへと転送するために、ネットワークから受信した受信データを、互いに異なる優先順位が予め付与された複数の受信キューのいずれかに格納する通信制御機器等に関する。
【背景技術】
【0002】
従来、受信した複数のデータをメインメモリへと転送する通信制御機器について、複数の転送キューを備え、当該複数のデータの各々の処理優先度に従って、当該複数の転送キューのいずれに、当該複数のデータの各々を格納するかを決定する技術が知られている。例えば、下掲の特許文献1には、データフレームに付与されているプライオリティタグに基づいて、転送キューを選択する通信制御装置が開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上述のような従来技術は、複数の転送キューの中から、データを格納する転送キューを選択するために、当該データに付与された付加情報(上述の特許文献1では「プライオリティタグ」)を利用しなければならないという問題がある。
【0005】
本発明の一態様は、処理優先度を示すための付加情報をデータに付与せずとも、当該データの処理優先度に従って、複数の転送キューの中から、当該データを格納する転送キューを選択することができるようにすることを目的とする。
【課題を解決するための手段】
【0006】
上記の課題を解決するために、本発明の一態様に係る通信制御機器は、メインメモリへと転送するために、ネットワークから受信した受信データを、互いに異なる優先順位が予め付与された複数の受信キューのいずれかに格納する通信制御機器であって、前記複数の受信キューの少なくとも1つについて、格納されるべき前記受信データの、送信元アドレス、宛先アドレス、イーサーネットフレームのタイプの少なくとも1つを規定した基準テーブルと、前記受信データの、送信元アドレス、宛先アドレス、イーサーネットフレームのタイプの少なくとも1つを用いて、前記基準テーブルに従って、前記受信データを格納する受信キューを、前記複数の受信キューの中から選択する選択部とを備えている。
【0007】
前記の構成によれば、前記通信制御機器は、前記受信データの、送信元アドレス、宛先アドレス、イーサーネットフレームのタイプの少なくとも1つを用いて、前記受信データを格納する受信キューを、前記複数の受信キューの中から選択する。
【0008】
ここで、送信元アドレス、宛先アドレス、イーサーネットフレームのタイプは、いずれも、前記受信データが元々有している情報であって、前記受信データを格納すべき受信キューを選択するために新たに付与された情報ではない。
【0009】
したがって、前記通信制御機器は、処理優先度を示すための付加情報を用いずに、前記受信データを、互いに異なる優先順位が予め付与された前記複数の受信キューの中から選択した所望の受信キューに、格納することができるとの効果を奏する。
【0010】
本発明の一態様に係る通信制御機器は、前記ネットワークから前記受信データの受信を開始した時刻である受信開始時刻と、前記受信データの前記メインメモリへの転送を開始した時刻である転送開始時刻とを対応付けたログである開始時刻ログを生成してもよい。
【0011】
前記の構成によれば、前記通信制御機器は、前記受信データの前記受信開始時刻および前記転送開始時刻を対応付けたログである開始時刻ログを生成する。したがって、前記通信制御機器は、前記開始時刻ログによって、前記通信制御機器内での挙動も含む、前記受信データのデータトレースを可能にするとの効果を奏する。
【0012】
本発明の一態様に係る通信制御機器は、或る受信データを受信した後に受信した別の受信データを、前記或る受信データよりも先に前記メインメモリへと転送した回数を示すログである順序変更ログを生成してもよい。
【0013】
前記の構成によれば、前記通信制御機器は、或る受信データを受信した後に受信した別の受信データを、前記或る受信データよりも先に前記メインメモリへと転送した回数を示すログである前記順序変更ログを生成する。
【0014】
したがって、前記通信制御機器は、「先に受信した前記受信データよりも後に受信した前記受信データを、先に前記メインメモリへと転送する」というデータ競合の発生を示す指標として前記順序変更ログを利用することを可能とするとの効果を奏する。
【0015】
本発明の一態様に係る通信制御機器は、前記ネットワークからの前記受信データの受信を完了した時刻である受信終了時刻と、前記受信データの前記メインメモリへの転送を完了した時刻である転送終了時刻とを対応付けたログである終了時刻ログを生成してもよい。
【0016】
前記の構成によれば、前記通信制御機器は、前記受信データの前記受信終了時刻および前記転送終了時刻を対応付けたログである終了時刻ログを生成する。したがって、前記通信制御機器は、前記終了時刻ログによって、前記通信制御機器内での挙動も含む、前記受信データのデータトレースを可能にするとの効果を奏する。
【0017】
本発明の一態様に係る通信制御機器について、前記受信終了時刻は、前記ネットワークから前記受信データの受信を開始した時刻である受信開始時刻と、前記ネットワークの通信速度と、前記受信データのデータサイズとから算出され、前記転送終了時刻は、前記受信データの前記メインメモリへの転送を開始した時刻である転送開始時刻と、前記メインメモリへの転送速度と、前記受信データのデータサイズとから算出されてもよい。
【0018】
前記の構成によれば、前記通信制御機器は、前記受信終了時刻および前記転送終了時刻を算出する。したがって、前記通信制御機器は、前記受信開始時刻と、前記転送開始時刻と、算出した前記受信終了時刻と、算出した前記転送終了時刻とを用いて、前記受信データの通信全般を監視することができるとの効果を奏する。
【0019】
本発明の一態様に係る通信制御機器において、前記選択部は、前記受信データの送信元アドレスのみを用いて、前記基準テーブルに従って、前記受信データを格納する受信キューを、前記複数の受信キューの中から選択してもよい。
【0020】
前記の構成によれば、前記通信制御機器は、前記受信データの送信元アドレスのみを用いて、前記基準テーブルに従って、前記受信データを格納する受信キューを、前記複数の受信キューの中から選択する。したがって、前記通信制御機器は、前記受信データの送信元アドレスのみによって、前記受信データを、互いに異なる優先順位が予め付与された前記複数の受信キューの中から選択した所望の受信キューに、格納することができるとの効果を奏する。
【0021】
本発明の一態様に係る通信制御機器において、前記基準テーブルは、前記ネットワークの構成情報を含む、ユーザが前記ネットワークについて規定した各種設定情報を用いて生成されてもよい。
【0022】
前記の構成によれば、前記通信制御機器は、前記ネットワークの構成情報を含む、ユーザが前記ネットワークについて規定した各種設定情報を用いて生成された前記基準テーブルに従って、前記受信データを格納する受信キューを選択する。
【0023】
例えば、前記通信制御機器を含む制御装置は、前記各種設定情報において、前記ネットワークを介して自装置と周期的に通信するデバイスのうち、通信周期を維持する必要が、他のデバイスより高く設定されているデバイス(高優先デバイス)がないかを確認してもよい。前記各種設定情報において高優先デバイスが規定されていると、前記制御装置は、高優先デバイスを送信元アドレスとする受信データが、高い優先順位が付与された受信キューに格納されるように、前記基準テーブルを生成または更新する。
【0024】
同様に、前記各種設定情報において、或るデバイス群との通信周期を維持する必要が、別のデバイス群より高く設定されていると、前記制御装置は、以下のように、前記基準テーブルを生成または更新してもよい。すなわち、前記制御装置は、第二受信キューよりも高い優先順位が付与された第一受信キューに、前記或るデバイス群に含まれるデバイスを送信元アドレスとする受信データが格納されるように、前記基準テーブルを生成または更新してもよい。また、前記制御装置は、第一受信キューよりも低い優先順位が付与された第二受信キューに、前記別のデバイス群に含まれるデバイスを送信元アドレスとする受信データが格納されるように、前記基準テーブルを生成または更新してもよい。
【0025】
また、前記各種設定情報において、或る宛先アドレスとの通信の通信優先度が、別の宛先アドレスとの通信の通信優先度よりも高く規定されていると、前記制御装置は、以下のように、前記基準テーブルを生成または更新してもよい。すなわち、前記制御装置は、第二受信キューよりも高い優先順位が付与された第一受信キューに、前記或る宛先アドレスを宛先アドレスとする受信データが格納されるように、前記基準テーブルを生成または更新してもよい。また、前記制御装置は、第一受信キューよりも低い優先順位が付与された第二受信キューに、前記別の宛先アドレスを宛先アドレスとする受信データが格納されるように、前記基準テーブルを生成または更新してもよい。
【0026】
さらに、前記各種設定情報において、或るフレームタイプの受信データの処理優先度が、別のフレームタイプの受信データの処理優先度よりも高く規定されていると、前記制御装置は、以下のように、前記基準テーブルを生成または更新してもよい。すなわち、前記制御装置は、第二受信キューよりも高い優先順位が付与された第一受信キューに、前記或るフレームタイプの受信データが格納されるように、前記基準テーブルを生成または更新してもよい。また、前記制御装置は、第一受信キューよりも低い優先順位が付与された第二受信キューに、前記別のフレームタイプの受信データが格納されるように、前記基準テーブルを生成または更新してもよい。
【0027】
したがって、前記通信制御機器は、ユーザに二度手間をかけさせることなく生成された前記基準テーブルに従って、前記受信データを格納する受信キューを適宜選択することができるとの効果を奏する。
【0028】
本発明の一態様に係る通信制御機器について、前記開始時刻ログは、自装置内または外部の不揮発性メモリに格納されてもよい。
【0029】
前記の構成によれば、前記通信制御機器は、前記開始時刻ログを、自装置内または外部の不揮発性メモリに格納する。したがって、前記通信制御機器は、前記開始時刻ログを、前記開始時刻ログの利用がしやすいように、適宜、自装置内または外部の不揮発性メモリに格納することができるとの効果を奏する。
【0030】
上記の課題を解決するために、本発明の一態様に係る制御方法は、メインメモリへと転送するために、ネットワークから受信した受信データを、互いに異なる優先順位が予め付与された複数の受信キューのいずれかに格納する通信制御機器の制御方法であって、前記複数の受信キューの少なくとも1つについて、格納されるべき前記受信データの、送信元アドレス、宛先アドレス、イーサーネットフレームのタイプの少なくとも1つを規定した基準テーブルに従って、前記受信データの、送信元アドレス、宛先アドレス、イーサーネットフレームのタイプの少なくとも1つを用いて、前記受信データを格納する受信キューを、前記複数の受信キューの中から選択する選択ステップと、前記選択ステップにて選択された前記受信キューに、前記受信データを格納する格納ステップとを含んでいる。
【0031】
前記の構成によれば、前記制御方法は、前記受信データの、送信元アドレス、宛先アドレス、イーサーネットフレームのタイプの少なくとも1つを用いて、前記受信データを格納する受信キューを、前記複数の受信キューの中から選択する。
【0032】
ここで、送信元アドレス、宛先アドレス、イーサーネットフレームのタイプは、いずれも、前記受信データが元々有している情報であって、前記受信データを格納すべき受信キューを選択するために新たに付与された情報ではない。
【0033】
したがって、前記制御方法は、処理優先度を示すための付加情報を用いずに、前記受信データを、互いに異なる優先順位が予め付与された前記複数の受信キューの中から選択した所望の受信キューに、格納することができるとの効果を奏する。
【発明の効果】
【0034】
本発明の一態様によれば、処理優先度を示すための付加情報をデータに付与せずとも、当該データの処理優先度に従って、複数の転送キューの中から、当該データを格納する転送キューを選択することができるとの効果を奏する。
【図面の簡単な説明】
【0035】
【
図1】本発明の実施形態1に係る通信コントローラを含むPLCの要部構成を示す図である。
【
図2】
図1のPLCを含む制御システムの概要を示す図である。
【
図3】本発明の実施形態1に係る通信コントローラにより解決しようとする状況を説明する図である。
【
図4】本発明の実施形態1に係る通信コントローラによって、受信データのメインメモリへの転送順序が、受信データの受信順序から変更されることを説明する図である。
【
図5】本発明の実施形態1に係る通信コントローラが利用するキュー選択テーブルについて説明する図である。
【
図6】本発明の実施形態1に係る通信コントローラが生成する開始時刻ログ等について説明する図である。
【
図7】
図1のPLCの実行する処理の全体概要を示すフロー図である。
【
図8】
図7におけるキュー選択処理の詳細例を説明するフロー図である。
【
図9】
図7における転送処理の詳細例を説明するフロー図である。
【
図10】
図9における調停処理および格納処理の詳細例を説明するフロー図である。
【発明を実施するための形態】
【0036】
〔実施形態1〕
以下、本発明の一側面に係る実施の形態(以下、「本実施形態」とも表記する)を、図面に基づいて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。本実施の形態においては、機械および設備等の制御対象を制御するPLC(プログラマブル・ロジック・コントローラ、Programmable Logic Controller)1の備える通信コントローラ10を通信制御機器の典型例として説明を行なう。
【0037】
以下の説明において、「n」、「N」、「p」、「q」は、各々、「1」以上の整数を示すものとし、「p」と「q」とは互いに異なる整数であるものとする。
【0038】
また、以下の説明においては、記載の簡潔性を担保するため、「受信キュー」を「RX」と称することがある。例えば、第一受信キュー13(0)を「RX0」、第二受信キュー13(1)を「RX1」とすることがある。なお、第一受信キュー13(0)(つまり、RX0)と、第二受信キュー13(1)(つまり、RX1)とを特に区別する必要がない場合には、「受信キュー13」、または単に「RX」とすることがある。
【0039】
§1.適用例
本発明の一態様に係る通信コントローラ10(通信制御機器)についての理解を容易にするため、先ず、本発明が適用される場面の一例について、具体的には、通信コントローラ10を備えるPLC1を含む制御システム0の概要について、
図2を用いて説明する。
【0040】
(制御システムの概要)
図2は、制御システム0の概要を示す図である。制御システム0は、PLC1と、ネットワークハブ2と、各々がネットワークハブ2を介してPLC1に接続されているネットワーク3(1)および3(2)とを含んでいる。以下、ネットワーク3(1)と、ネットワーク3(2)とを特に区別する必要がない場合には、単に「ネットワーク3」と称することがある。ネットワーク3は、1つ以上のネットワークデバイスを含んでいる。
【0041】
図2に例示する制御システム0においては、ネットワークハブ2を介して、複数のネットワーク3が、PLC1に接続している。制御システム0における通信には、ギガ帯域が使用されてもよい。
【0042】
PLC1は、制御システム0の全体を制御する制御装置であり、ネットワークハブ2は、PLC1と複数のネットワーク3との間の通信を管理するネットワークハブまたはネットワークスイッチである。
図2に示す制御システム0においては、PLC1の1つのネットワークポート(すなわち、
図1の受信ポート11)に対して、複数のネットワーク3が、例えば、ネットワーク3(1)および3(2)が、存在している。
【0043】
ここで、ネットワーク3(1)および3(2)のいずれもが制御ネットワークであってもよいし、すなわち、PLC1と通信を行う全てのネットワーク3が制御ネットワークであってもよい。また、ネットワーク3(1)および3(2)のいずれか一方が制御ネットワークであり、他方がデータネットワークであってもよく、つまり、PLC1と通信を行うネットワーク3について、制御ネットワークとデータネットワークとが混在していてもよい。
【0044】
例えば、ネットワーク3が制御ネットワークである場合、PLC1は、生産設備内の入力機器及び出力機器の制御を司る制御装置であり、また、ネットワークデバイスは、例えば、生産設備内の入力機器及び出力機器である。PLC1とネットワークデバイスとは、ネットワーク3を介してサイクリックに通信を行なうことで、INデータ及びOUTデータ(以下、「IOデータ」という)の送受信を行ない、PLC1は、生産設備の全体を制御する。すなわち、ネットワーク3が制御ネットワークである場合、制御システム0は、PLC1をマスタ装置(データ伝送を管理するマスタ装置)とし、ネットワークデバイスをスレーブ装置とするマスタ・スレーブ制御システムと捉えることができる。
【0045】
ネットワーク3が制御ネットワークである場合、ネットワーク3は、EtherCAT(Ethernet for Control Automation Technology:登録商標)規格等の産業用イーサネット(登録商標)規格に準拠するものであってもよい。ネットワーク3が制御ネットワークである場合、ネットワーク3は、EtherNet/IP(登録商標)規格に準拠するものであってもよい。
【0046】
以下では、
図2におけるPLC1とネットワークデバイスとの間の通信(以下、「ネットワーク通信」とも称する)がEthernet規格に準拠する例について説明する。また、CPU30と通信コントローラ10とは、PCIe(Peripheral Component Interconnect Express)によって通信可能に接続されているものとする。
【0047】
なお、
図2には、ネットワークハブ2を介して、複数のネットワーク3が、PLC1に接続する制御システム0を例示したが、制御システム0において、PLC1に、複数のネットワーク3がネットワークハブ2を介して接続することは必須ではない。制御システム0において、1つのネットワーク3(特に、1つの制御ネットワーク)が、ネットワークハブ2を介さずに、PLC1に接続してもよい。例えば、マスタ・スレーブ制御システムである制御システム0において、マスタ装置であるPLC1と、各々がスレーブ装置である1つ以上のネットワークデバイスとを、一筆書きの形式で通信可能に接続してもよい。
【0048】
(本実施形態に係る通信コントローラによって解決しようとする状況の具体例)
図3は、通信コントローラ10(特に、転送制御部12)により解決しようとする状況を説明する図である。具体的には、
図3は、複数の受信データを、ネットワーク3からの受信順序に従って、メインメモリ20へと転送(格納)した場合に発生し得る状況を説明する図である。
【0049】
以下の説明において、PLC1(特に、通信コントローラ10)がネットワーク3から受信するデータ(受信データ)について、「CPU30がどのような順序で処理すべきか」を、「処理優先度P」との語を用いて示す。ただし、PLC1(特に、通信コントローラ10)がネットワーク3から受信するデータ(受信データ)に、処理優先度P自体が付与されている必要はない。詳細は後述するが、PLC1(特に、通信コントローラ10)は、受信データの、送信元アドレス、宛先アドレス、イーサーネットフレームのタイプ(例えば、IPv4、ECATなどを区別する情報)の少なくとも1つを用いて、受信データの処理優先度Pを把握できるからである。
【0050】
すなわち、受信データの処理優先度Pは、受信データに付与されているものではなく、受信データについて「CPU30がどのような順序で処理すべきか」を簡易に説明するために、「処理優先度P」との語を用いているに過ぎない。
【0051】
「処理優先度P」は、値が小さくなるほど高くなり、「処理優先度P=1」は「処理優先度P=2」よりも高い。したがって、「処理優先度P=1」であるデータは、「処理優先度P=2」であるデータよりも先に、CPU30によって処理されることが望ましい。「処理優先度P=1」であるデータは、「処理優先度P=2」であるデータよりも処理優先度Pが高いため、「高優先データ」とも称される。同様に、「処理優先度P=2」であるデータは、「処理優先度P=1」であるデータ(つまり、高優先データ)よりも処理優先度Pが低いため、「低優先データ」とも称される。
【0052】
また、「PLC1(特に、通信コントローラ10)が、ネットワーク3からデータ(受信データ)を受信した順序」は、「受信順序」とも称される。「ネットワーク3から受信したデータを、通信コントローラ10がメインメモリ20へと転送する(格納する)順序」は、「転送順序」とも称される。メインメモリ20に格納されているデータは、原則として転送順序に一致する順序で、CPU30によって処理される。
【0053】
図3の(A)は、CPU30と通信コントローラ10との間の通信の速度より、ネットワーク通信の速度の方が早い場合に、複数の受信データを、ネットワーク3からの受信順序に従って、メインメモリ20へと転送(格納)した時の状況を説明する図である。
【0054】
Ethernet規格に準拠する通信が高速化することで、CPU30と通信コントローラ10との間の通信の速度よりも、ネットワーク通信の速度の方が早くなるケースがある。例えば、Ethernet規格に準拠する通信の通信速度が10Gbits/sであるのに対して、PCIe Gen2の通信速度は、5Gbits/sである。
【0055】
CPU30と通信コントローラ10との間の通信速度より、ネットワーク通信の通信速度の方が早いケースにおいて、転送順序を受信順序に一致させた場合、
図3の(A)に示す状況が発生し得る。
【0056】
すなわち、PLC1(特に、通信コントローラ10)が、ネットワーク3から、データD3をデータD2よりも後の順序で受信した場合、転送順序を受信順序に一致させると、データD3は、データD2よりも後の順序で、メインメモリ20へと転送される。
【0057】
ここで、
図3の(A)において、データD3(処理優先度P=1)は高優先データであり、データD2(処理優先度P=2)は低優先データである。
【0058】
しかしながら、転送順序を受信順序に一致させた場合、高優先データであるデータD3は、低優先データであるデータD2よりも後の順序で、メインメモリ20へと転送され、つまり、高優先データであるデータD3のメインメモリ20への転送が遅れる。その結果、高優先データであるデータD3を、低優先データであるデータD2よりも先に、CPU30によって処理させることが困難となる。特に、CPU30と通信コントローラ10との間の通信の速度よりネットワーク通信の速度の方が早い場合、高優先データであるデータD3の処理の遅延は、制御システム0全体の制御に大きな影響を与えることになる。
【0059】
図3の(B)は、メインメモリ20へのアクセスが禁止される期間(アクセス禁止期間)が設けられている場合に、複数の受信データを、ネットワーク3からの受信順序に従って、メインメモリ20へと転送(格納)した時の状況を説明する図である。
【0060】
ここで、メインメモリ20に対する複数のアクセス要求が同一のタイミングで発生することにより、「メモリ競合」が発生する。このメモリ競合を防止するための調停処理を演算部(つまり、CPU30)に実行させることなく、メモリ競合の発生を抑制するために、メインメモリ20へのアクセスが禁止される期間、すなわち、「アクセス禁止期間」が設けられることがある。また、CPU30以外のデバイス(例えば、通信コントローラ10)がメインメモリ20にアクセスしている間に、メインメモリ20に格納されているデータを使用してCPU30が実行する重要な処理が発生すると、CPU30の処理速度が低下する。それを防ぐために、CPU30以外のデバイスが、メインメモリ20にアクセスできないようにした期間である「アクセス禁止期間」が設けられることがある。PLC1(特に、通信コントローラ10)には、アクセス禁止期間が設けられていてもよい。
【0061】
アクセス禁止期間が設定されている場合であって、アクセス禁止期間中に高優先データを受信した場合に、メインメモリ20への転送順序を受信順序に一致させると、高優先データの転送が、低優先データの転送の後になり、大きく遅れることがある。
【0062】
すなわち、
図3の(B)において、データD2(処理優先度P=1)は高優先データであり、データD1(処理優先度P=2)は低優先データである。そして、PLC1(特に、通信コントローラ10)は、ネットワーク3から、データD2(処理優先度P=1)を、データD1(処理優先度P=2)よりも後の順序で、アクセス禁止期間中に受信している。
【0063】
転送順序を受信順序に一致させた場合、データD2(処理優先度P=1)がメインメモリ20へと転送されるタイミングは、データD1(処理優先度P=2)がメインメモリ20へと転送された後になる。しかも、アクセス禁止期間が設けられていた場合、アクセス禁止期間中は通信コントローラ10によるメインメモリ20へのアクセスはできないから、データD1(処理優先度P=2)のメインメモリ20への転送は、アクセス禁止期間の経過後となる。そのため、アクセス禁止期間が設けられていない場合に比べて、アクセス禁止期間が設けられていた場合には、データD2(処理優先度P=1)がメインメモリ20へと転送されるタイミングは、さらに遅れる。
【0064】
図3の(B)に示すように、転送順序を受信順序に一致させた場合、低優先データであるデータD1の後に受信した、高優先データであるデータD2を、データD2よりも先にCPU30によって処理させることは困難となる。特に、アクセス禁止期間を設け、かつ、転送順序を受信順序に一致させた場合、高優先データであるデータD2の、CPU30による処理は、アクセス禁止期間を設けない場合に比べてさらに遅れる。
【0065】
(本実施形態に係る通信コントローラが実現する転送順序の具体例)
図4は、通信コントローラ10(特に、転送制御部12)によって、受信データのメインメモリ20への転送順序が、受信データの受信順序から変更されることを説明する図である。
【0066】
図3に示した状況を克服するために、通信コントローラ10は、高優先データを、低優先データよりも先に、メインメモリ20へと転送する(格納する)。具体的には、通信コントローラ10の転送制御部12は、受信データの、送信元アドレス、宛先アドレス、イーサーネットフレームのタイプ(例えば、IPv4、ECATなどを区別する情報)に従って、受信データを格納する受信キュー13を切替える。
【0067】
ここで、通信コントローラ10は、複数の受信キュー13を備えており、例えば、第一受信キュー13(0)(つまり、RX0)、および、第二受信キュー13(1)(つまり、RX1)を備えている。そして、複数の受信キュー13の各々には予め異なる優先順位NPが付与されており、つまり、複数の受信キュー13の各々の優先順位NPは、互いに異なる。例えば、第一受信キュー13(0)(つまり、RX0)に予め付与されている優先順位NP(RX0)は、第二受信キュー13(1)(つまり、RX1)に予め付与されている優先順位NP(RX1)よりも高い。
【0068】
なお、複数の受信キュー13の各々には予め付与されている優先順位NPは、「メインメモリ20に格納されているデータ(受信データ)について、CPU30による処理の、望ましい順序」を示す処理優先度Pとは異なる。
【0069】
第一受信キュー13(0)と第二受信キュー13(1)とが同時にアクセスを要求した場合、調停部14は、より高い優先順位NPが付与された受信キュー13にアクセス権を与える。そして、アクセス権を取得した受信キュー13が、データFIFO131に格納されているデータ(受信データ)を、メインメモリ20へと転送する。つまり、予め高い優先順位NPが付与された受信キュー13の先頭に格納された受信データは、予め低い優先順位NPが付与された受信キュー13の先頭に格納された受信データよりも先に、メインメモリ20へと転送される。
【0070】
そのため、通信コントローラ10は、受信データを格納する受信キュー13を切替えることで、ネットワーク3からの受信順序とは異なる順序で受信データをメインメモリ20へと転送することができる。具体的には、通信コントローラ10は、処理優先度Pが高いと判定した受信データのみを、予め高い優先順位NPが付与された受信キュー13に格納することで、高優先データを低優先データよりも先に、メインメモリ20へと転送することができる。
【0071】
通信コントローラ10は、受信データの処理優先度Pを、その受信データの、「宛先アドレス」、「送信元アドレス」、および、「イーサーネットフレームのタイプ(フレームタイプ)」の少なくとも1つによって判定する。通信コントローラ10は、受信データの処理優先度Pを、その受信データの「送信元アドレス」のみによって判定してもよい。「宛先アドレス」、「送信元アドレス」、および、「フレームタイプ」はいずれも、受信データが元々持っている情報であり、その受信データの処理優先度Pを示すために新たに付加された情報ではない。
【0072】
転送制御部12が受信データの格納先を切り替える際に参照する、受信データの「宛先アドレス」は、ユニキャストアドレス、マルチキャストアドレス、ブロードキャストアドレス等に大別することができる。通信コントローラ10を一般的なNIC(Network Interface Card、ネットワーク・インターフェイス・カード)として実現した場合、マルチキャストアドレスとして、複数のアドレスを登録することができる。そのため、通信コントローラ10(特に、転送制御部12)は、例えば、受信データの「宛先アドレス」が「マルチキャストアドレスA」であると、その受信データの格納先として第一受信キュー13(0)を選択してもよい。同様に、通信コントローラ10(特に、転送制御部12)は、例えば、受信データの「宛先アドレス」が「マルチキャストアドレスB」であると、その受信データの格納先として第二受信キュー13(1)を選択してもよい。
【0073】
転送制御部12は、受信データの送信元アドレスに従って、その受信データの格納先を選択してもよい。通信コントローラ10(特に、転送制御部12)は、例えば、受信データの「送信元アドレス」が「addr_txa」または「addr_txb」であると、その受信データの格納先として第一受信キュー13(0)を選択してもよい。同様に、通信コントローラ10(特に、転送制御部12)は、例えば、受信データの「送信元アドレス」が「addr_txa」でも「addr_txb」でもないと、その受信データの格納先として第二受信キュー13(1)を選択してもよい。
【0074】
転送制御部12は、受信データのフレームタイプに従って、その受信データの格納先を選択してもよい。通信コントローラ10(特に、転送制御部12)は、例えば、受信データの「フレームタイプ」が「IPv4以外」であると、その受信データの格納先として第一受信キュー13(0)を選択してもよい。同様に、通信コントローラ10(特に、転送制御部12)は、例えば、受信データの「フレームタイプ」が「IPv4」であると、その受信データの格納先として第二受信キュー13(1)を選択してもよい。
【0075】
図4の(A)は、CPU30と通信コントローラ10との間の通信の速度より、ネットワーク通信の速度の方が早い場合であっても、通信コントローラ10は、複数の受信データを、受信順序とは異なる順序で、メインメモリ20へと格納することを示す図である。
【0076】
図4の(A)において、データD3(処理優先度P=1)は高優先データであり、データD2(処理優先度P=2)は低優先データである。また、PLC1(特に、通信コントローラ10)は、ネットワーク3から、データD3をデータD2よりも後の順序で受信している。
【0077】
通信コントローラ10(転送制御部12)は、データD3の、送信元アドレス、宛先アドレス、イーサーネットフレームのタイプの少なくとも1つに従って、データD3を、RX1よりも高い優先順位NPが付与されたRX0に格納する。つまり、転送制御部12は、データD3を、第二受信キュー13(1)よりも高い優先順位NPが付与された第一受信キュー13(0)に格納する。
【0078】
同様に、通信コントローラ10(転送制御部12)は、データD2の、送信元アドレス、宛先アドレス、イーサーネットフレームのタイプの少なくとも1つに従って、データD2を、RX0よりも低い優先順位NPが付与されたRX1に格納する。つまり、転送制御部12は、データD2を、第一受信キュー13(0)よりも低い優先順位NPが付与された第二受信キュー13(1)に格納する。
【0079】
そして、RX0には、RX1よりも高い優先順位NPが付与されているため、RX0とRX1とが同時にアクセスを要求した場合、調停部14は、より高い優先順位NPが付与されたRX0にアクセス権を与える。
【0080】
その結果、RX0は、RX1がデータD2をメインメモリ20へと転送するタイミングよりも早いタイミングで、データD3をメインメモリ20へと転送することができている。つまり、通信コントローラ10は、「低優先データであるデータD2」よりも後に受信した「高優先データであるデータD3」を、「低優先データであるデータD2」よりも先に、メインメモリ20へと転送することができている。
【0081】
このように、通信コントローラ10は、「低優先データよりも後に受信した高優先データを、低優先データより先に、メインメモリ20へと転送する」ことで、高優先データを、低優先データより先に、CPU30によって処理させることができる。特に、CPU30と通信コントローラ10との間の通信の速度よりネットワーク通信の速度の方が早い場合、通信コントローラ10は、制御システム0全体の制御に大きな影響を与える「高優先データの処理遅延」を、防ぐことができる。
【0082】
図4の(B)は、アクセス禁止期間が設けられている場合であっても、通信コントローラ10は、複数の受信データを、受信順序とは異なる順序で、メインメモリ20へと格納することを示す図である。
【0083】
図4の(B)において、データD2(処理優先度P=1)は高優先データであり、データD1(処理優先度P=2)は低優先データである。そして、PLC1(特に、通信コントローラ10)は、ネットワーク3から、データD2(処理優先度P=1)を、データD1(処理優先度P=2)よりも後の順序で、アクセス禁止期間中に受信している。
【0084】
通信コントローラ10(転送制御部12)は、データD2の、送信元アドレス、宛先アドレス、イーサーネットフレームのタイプの少なくとも1つに従って、データD2を、RX1よりも高い優先順位NPが付与されたRX0に格納する。つまり、転送制御部12は、データD2を、第二受信キュー13(1)よりも高い優先順位NPが付与された第一受信キュー13(0)に格納する。
【0085】
同様に、通信コントローラ10(転送制御部12)は、データD1の、送信元アドレス、宛先アドレス、イーサーネットフレームのタイプの少なくとも1つに従って、データD1を、RX0よりも低い優先順位NPが付与されたRX1に格納する。つまり、転送制御部12は、データD1を、第一受信キュー13(0)よりも低い優先順位NPが付与された第二受信キュー13(1)に格納する。
【0086】
そして、RX0には、RX1よりも高い優先順位NPが付与されているため、RX0とRX1とが同時にアクセスを要求した場合、調停部14は、より高い優先順位NPが付与されたRX0にアクセス権を与える。
【0087】
その結果、RX0は、RX1がデータD1をメインメモリ20へと転送するタイミングよりも早いタイミングで、データD2をメインメモリ20へと転送することができている。具体的には、RX0は、アクセス禁止期間の経過直後に、データD2をメインメモリ20へと転送し、その後に、RX1がデータD1をメインメモリ20へと転送している。つまり、通信コントローラ10は、「低優先データであるデータD1」よりも後に受信した「高優先データであるデータD2」を、「低優先データであるデータD1」よりも先に、メインメモリ20へと転送することができている。
【0088】
このように、通信コントローラ10は、「低優先データよりも後に受信した高優先データを、低優先データより先に、メインメモリ20へと転送する」ことで、高優先データを、低優先データより先に、CPU30によって処理させることができる。特に、アクセス禁止期間を設けている場合、通信コントローラ10は、アクセス禁止期間を設けていない場合に比べて大きくなる「高優先データの処理遅延」を、防ぐことができる。
【0089】
(本実施形態に係る通信コントローラについての整理)
これまでに
図2、
図3、および、
図4を用いて概要を説明してきた通信コントローラ10について、その理解を容易にするため、以下のように整理しておく。
【0090】
すなわち、通信コントローラ10は、メインメモリ20へと転送するために、ネットワーク3から受信したデータ(受信データ)を、互いに異なる優先順位NPが予め付与された複数の受信キュー13のいずれかに格納する通信制御機器である。通信コントローラ10は、キュー選択テーブル121(基準テーブル)と、選択部122とを備えている。
【0091】
キュー選択テーブル121は、複数の受信キュー13の少なくとも1つについて、格納されるべき受信データの、「送信元アドレス」、「宛先アドレス」、「イーサーネットフレームのタイプ」の少なくとも1つを規定している。
【0092】
選択部122は、受信データの、「送信元アドレス」、「宛先アドレス」、「イーサーネットフレームのタイプ」の少なくとも1つを用いて、キュー選択テーブル121に従って、その受信データを格納する受信キュー13を選択する。
【0093】
前記の構成によれば、通信コントローラ10は、受信データの、「送信元アドレス」、「宛先アドレス」、「イーサーネットフレームのタイプ」の少なくとも1つを用いて、受信データを格納する受信キュー13を、複数の受信キュー13の中から選択する。
【0094】
ここで、「送信元アドレス」、「宛先アドレス」、「イーサーネットフレームのタイプ」は、いずれも、受信データが元々有している情報であって、受信データを格納すべき受信キュー13を選択するために新たに付与された情報ではない。
【0095】
したがって、通信コントローラ10は、処理優先度Pを示すための付加情報を用いずに、受信データを、互いに異なる優先順位NPが予め付与された複数の受信キュー13の中から選択した所望の受信キュー13に、格納することができるとの効果を奏する。
【0096】
通信コントローラ10において、選択部122は、受信データの「送信元アドレス」のみを用いてキュー選択テーブル121に従って、その受信データを格納する受信キュー13を、複数の受信キュー13の中から選択してもよい。
【0097】
例えば、キュー選択テーブル121には、第一受信キュー13(0)に格納されるべき受信データの「送信元アドレス」のみが規定されていてもよい。そして、選択部122は、受信データの「送信元アドレス」が、キュー選択テーブル121に規定される「送信元アドレス」と一致すると、その受信データの格納先として、第一受信キュー13(0)を選択してもよい。
【0098】
前記の構成によれば、通信コントローラ10は、受信データの「送信元アドレス」のみを用いて、キュー選択テーブル121に従って、その受信データを格納する受信キュー13を、複数の受信キュー13の中から選択する。したがって、通信コントローラ10は、受信データの「送信元アドレス」のみによって、その受信データを、互いに異なる優先順位NPが予め付与された複数の受信キュー13の中から選択した所望の受信キュー13に、格納することができるとの効果を奏する。
【0099】
§2.構成例
これまでに概要を説明してきた通信コントローラ10、および、通信コントローラ10を含むPLC1について、次に、
図1を用いてその詳細を説明していく。
【0100】
図1は、PLC1の構成例を示す図である。
図1に例示する通り、PLC1は、ハードウェア構成として、通信コントローラ10と、メインメモリ20と、CPU30と、不揮発性メモリ40とを含む。PLC1は、さらに、外部装置とPLC1とを接続するためのUSBコネクタなどを含んでもよい。通信コントローラ10と、メインメモリ20と、CPU30と、不揮発性メモリ40との間は、各種のバス(内部バス)を介してそれぞれ結合されている。
【0101】
CPU30は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成され、内部クロックに従って順次命令コードを解釈して実行する。CPU30は、ハードウェア構成としては、1つ以上のCPUコアと、ネットワーク制御部とを含んでいる。
図1に例示するCPU30は、機能ブロックとして、テーブル生成部31を含んでいる。
【0102】
テーブル生成部31は、ユーザが設定PCを用いて生成した「制御システム0のネットワーク構成等を含む各種設定情報42」から、キュー選択テーブル121を生成する。テーブル生成部31によって生成されたキュー選択テーブル121は、通信コントローラ10の転送制御部12(特に、選択部122)によって、受信データを格納すべき受信キュー13を選択するのに用いられる。
【0103】
メインメモリ20は、PLC1の記憶手段であり、例えば、PLC1(特に、通信コントローラ10)がネットワーク3から受信したデータ(受信データ)が格納される。CPU30は、メインメモリ20に格納されているデータに対して、各種の演算処理を実行する。
【0104】
メインメモリ20は、揮発性の記憶領域(RAM)であり、ネットワーク3から受信し、CPU30による各種の演算処理の対象となる受信データの格納に加えて、PLC1へ電源投入後にCPU30で実行されるべき各種プログラムを保持する。また、メインメモリ20は、CPU30による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ20として、例えば、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)等を用いることができる。
【0105】
図1に例示するメインメモリ20には、受信データと共に、受信データに対応するディスクリプタデータ(ディスクリプタ)が格納されている。ディスクリプタは、対応する受信データのメインメモリ20中での格納先アドレス、対応する受信データのメインメモリ20中でのデータサイズ等を示す情報を含んでいる。
【0106】
不揮発性メモリ40は、各種のプログラムおよびパラメータなどのデータを不揮発的に保持する。これらのデータは、必要に応じて、CPU30がアクセスできるようにメインメモリ20にコピーされる。このような不揮発性メモリは、フラッシュメモリのような半導体メモリを用いることができる。あるいは、ハードディスクドライブのような磁気記録媒体、DVD-RAM(Digital Versatile Disk Random Access Memory)のような光学記録媒体などを用いることもできる。
【0107】
図1に例示する不揮発性メモリ40には、ユーザが設定PCを用いて生成した「制御システム0のネットワーク構成等を含む各種設定情報42」が格納されている。また、不揮発性メモリ40は、通信コントローラ10のログ生成部16が生成した各種のログが格納されるログテーブル41を含んでいる。
【0108】
通信コントローラ10は、ネットワーク3からのデータを受信し、受信したデータ(受信データ)をメインメモリ20へと格納するデータ転送装置であり、例えば、NIC(Network Interface Card、ネットワーク・インターフェイス・カード)として実現される。通信コントローラ10は、典型的には、FPGA(Field-Programmable gate array)またはASIC(Application Specific Integrated Circuit)等のハードウェアによる論理回路で構成される。通信コントローラ10は、メインメモリ20、CPU30、および、不揮発性メモリ40の各々と、データの送受信が可能に構成されている。
【0109】
通信コントローラ10は、受信ポート11を介してネットワーク3と接続され、ネットワーク3とのデータの遣り取りを制御し、特に、受信データの受信を制御する。通信コントローラ10は、例えば、ネットワーク3における物理層およびデータリンク層の機能を提供する。すなわち、通信コントローラ10は、ネットワーク3の準拠する規格に従い、送信データの送信および受信データの受信を制御する。具体的には、通信コントローラ10は、ネットワーク3に接続されているネットワークデバイスから受信データを受信し、受信したデータ(受信データ)を受信キュー13に格納する。特に、通信コントローラ10は、互いに異なる優先順位NPが予め付与されている複数の受信キュー13の中から、受信データを格納すべき受信キュー13を選択し、選択した受信キュー13に、受信データを格納する。
【0110】
詳細は後述するが、PLC1は、CPU30ではなく、ハードウェアによる論理回路で構成した通信コントローラ10によって、ネットワーク3からの受信データの、メインメモリ20への転送順序を制御する。したがって、PLC1は、CPU30の処理負荷を増大させることなく、ハードウェアによる論理回路で構成した通信コントローラ10によって、受信データの、メインメモリ20への転送順序を所望の順序に制御することができるとの効果を奏する。
【0111】
図1に例示する通信コントローラ10は、機能ブロックとして、受信ポート11、転送制御部12、2つ以上の受信キュー13、調停部14、IF15、および、ログ生成部16を備えている。
【0112】
図1に示す例では、通信コントローラ10は、受信キュー13として、第一受信キュー13(0)(つまり、RX0)と、第二受信キュー13(1)(つまり、RX1)とを備えている。複数の受信キュー13の各々には予め異なる優先順位NPが付与されており、例えば、第一受信キュー13(0)に予め付与されている優先順位NP(RX0)は、第二受信キュー13(1)に予め付与されている優先順位NP(RX1)よりも高い。
【0113】
図1に例示する通信コントローラ10について、記載の簡潔性を担保するため、送信ポートを介してネットワーク3へと送信データを送信する構成などの、本実施の形態に直接関係のない構成は、省略している。ただし、実施の実情に則して、通信コントローラ10は、当該省略された構成を備えてもよい。
【0114】
転送制御部12は、受信ポート11を介してネットワーク3から受信したデータ(受信データ)を格納すべき受信キュー13を、互いに異なる優先順位NPが予め付与されている複数の受信キュー13の中から選択する。
図1に例示する転送制御部12は、受信ポート11がネットワーク3から受信したデータ(受信データ)を、第一受信キュー13(0)および第二受信キュー13(1)のいずれに格納すべきかを選択する。転送制御部12は、キュー選択テーブル121と、選択部122と、格納部123とを含んでいる。
【0115】
キュー選択テーブル121には、複数の受信キュー13の少なくとも1つについて、格納されるべき受信データの条件を示す情報が格納されている。具体的には、キュー選択テーブル121には、複数の受信キュー13の少なくとも1つについて、格納されるべき受信データの「送信元アドレス」、「宛先アドレス」、「イーサーネットフレームのタイプ」の少なくとも1つを規定する情報が格納されている。
図1に例示するキュー選択テーブル121には、第二受信キュー13(1)に付与されている優先順位NP(RX1)よりも高い優先順位NPが予め付与されている第一受信キュー13(0)に格納されるべき受信データの条件を示す情報が格納されている。
【0116】
選択部122は、受信データの、「送信元アドレス」、「宛先アドレス」、「イーサーネットフレームのタイプ」の少なくとも1つを用いて、キュー選択テーブル121に従って、受信データを格納する受信キュー13を選択する。
図1に例示する選択部122は、受信データの、「送信元アドレス」、「宛先アドレス」、「イーサーネットフレームのタイプ」の少なくとも1つを用いて、受信データの格納先として、第一受信キュー13(0)または第二受信キュー13(1)を選択する。特に、受信データの、「送信元アドレス」、「宛先アドレス」、「イーサーネットフレームのタイプ」の少なくとも1つが、キュー選択テーブル121に規定されている条件を満たすと、選択部122は、第一受信キュー13(0)を、格納先として選択する。選択部122は、受信データの格納先として選択した受信キュー13を、つまり、第一受信キュー13(0)または第二受信キュー13(1)を、格納部123に通知する。
【0117】
格納部123は、選択部122によって選択された受信キュー13に、受信データを格納し、特に、選択部122によって選択された受信キュー13のデータFIFO131に、受信データを格納する。例えば、選択部122によって第一受信キュー13(0)が選択されると、格納部123は、第一受信キュー13(0)の第一データFIFO131(0)に、受信データを格納する。同様に、選択部122によって第二受信キュー13(1)が選択されると、格納部123は、第二受信キュー13(1)の第二データFIFO131(1)に、受信データを格納する。
【0118】
受信キュー13は、PLC1(特に、通信コントローラ10)がネットワーク3から受信したデータ(受信データ)を一時的に保持し、ディスクリプタに従って、受信データをメインメモリ20へと転送する。受信キュー13は、データFIFO131と、ディスクリプタFIFO132と、DMAC(Direct Memory Access Controller、ダイレクトメモリアクセスコントローラ)133とを含んでいる。
【0119】
データFIFO131には、PLC1(特に、通信コントローラ10)がネットワーク3から受信したデータ(受信データ)が、FIFO(first in, first out、先入れ先出し)方式で格納される。
【0120】
ディスクリプタFIFO132には、ディスクリプタ(ディスクリプタデータ)が、FIFO(first in, first out、先入れ先出し)方式で格納される。CPU30が、ディスクリプタデータのメインメモリ20への設定を完了して、通信コントローラ10に受信許可を発行すると、通信コントローラ10は、メインメモリ20からディスクリプタを読み出してディスクリプタFIFO132に格納する。
【0121】
DMAC133は、メインメモリ20と、データFIFO131およびディスクリプタFIFO132の各々との間のデータ交換を実行する。例えば、DMAC133は、CPU30によってメインメモリ20に設定されたディスクリプタデータを読み出して、ディスクリプタFIFO132に格納する。また、DMAC133は、調停部14からアクセスを許可されると、データFIFO131に格納されている受信データを、先頭から順に、メインメモリ20へと格納する。特に、DMAC133は、ディスクリプタFIFO132に格納されているディスクリプタに従って、データFIFO131に格納されている受信データを、ディスクリプタに規定されているメインメモリ20のアドレスに格納する。さらに、DMAC133は、調停部14からアクセスを許可されると、ライトバックディスクリプタをメインメモリ20へと転送し、つまり、メインメモリ20中のディスクリプタをライトバックディスクリプタで上書きする。
【0122】
調停部14は、メインメモリ20への複数のアクセス要求を調整し、つまり、複数の受信キュー13の各々からのアクセス要求を調整する。具体的には、略同時に、複数の受信キュー13の各々からのアクセス要求があると、調停部14は、最も高い優先順位NPが付与されている受信キュー13のみにアクセス権を付与し、つまり、アクセスを許可する。例えば、第一受信キュー13(0)からのアクセス要求と第二受信キュー13(1)からのアクセス要求とが略同時にあると、調停部14は、第二受信キュー13(1)よりも高い優先順位NPが付与されている第一受信キュー13(0)に、アクセスを許可する。
【0123】
IF15は、通信コントローラ10(特に、DMAC133)が、メインメモリ20、CPU30、および、不揮発性メモリ40の各々と通信するためのインターフェースである。
【0124】
ログ生成部16は、受信データの受信および転送に係る種々の時刻等を示すログ(具体的には、開始時刻ログ、順序変更ログ、終了時刻ログ)を生成する。ログ生成部16は、生成したログを、不揮発性メモリ40のログテーブル41に格納する。ログ生成部16の生成するログについて、詳細は
図6を用いて後述する。
【0125】
(キュー選択テーブルについて)
図5は、キュー選択テーブル121について説明する図であり、
図5の(A)は、キュー選択テーブル121の一例を示している。また、
図5の(B)は、キュー選択テーブル121の生成方法の一例を説明する図である。
図5には、キュー選択テーブル121の一例として、「高い優先順位NPが付与された受信キュー13に格納されるべき受信データの条件を規定したキュー選択テーブル121」が示されている。
【0126】
図5の(A)に例示するキュー選択テーブル121には、第一受信キュー13(0)(つまり、RX0)に格納すべき受信データの条件が規定されている。すなわち、
図5の(A)のキュー選択テーブル121には、第一受信キュー13(0)に格納すべき受信データの「条件:1」として、「送信元アドレス」が「addr_txa」であることが規定されている。同様に、
図5の(A)のキュー選択テーブル121には、「条件:2」として、「送信元アドレス」が「addr_txb」であることが規定されている。
【0127】
また、
図5の(A)のキュー選択テーブル121には、「条件:n」として、「宛先アドレス」が「マルチキャスト(addr_rxa)」であって、「フレームタイプ」が「!IPv4(つまり、IPv4以外)」であることが規定されている。
【0128】
転送制御部12は、選択部122が受信データの格納先を選択するのに用いるキュー選択テーブル121を含む。キュー選択テーブル121は、通信前にソフトウェア(つまり、CPU30)により設定される。キュー選択テーブル121には、例えば、高い優先順位NPが付与されている受信キュー13(例えば、第一受信キュー13(0))に格納すべき受信データの条件が予め設定されている。
図5の(A)に例示するキュー選択テーブル121には、第一受信キュー13(0)に格納すべき受信データの条件として、受信データの「送信元アドレス」、「宛先アドレス」、「イーサーネットフレームのタイプ」の少なくとも1つが設定されている。
【0129】
格納すべき受信キュー13を選択する際の条件は、各項目(すなわち、受信データの「送信元アドレス」、「宛先アドレス」、「イーサーネットフレームのタイプ」)ごとに、または複数の項目の組合せごとに、複数設定することができる。
【0130】
複数の項目を組み合わせて条件にすることができるが、全ての項目を設定する必要はない。例えば、「送信元アドレス」のみ設定し、他の項目は設定しないとしてもよい。その場合、受信データの送信元アドレスが、条件として設定された「送信元アドレス」を満たしさえすれば、その受信データの、宛先アドレスおよびイーサーネットフレームのタイプに関係なく、「その受信データは条件を満たす」と判定される。
また、各項目について、「○○以外」として、設定した値(つまり、○○)以外であれば、選択部122が「条件は満たされた」と判定する条件を設定してもよい。例えば、「フレームタイプ」について、「!IPv4(つまり、IPv4以外)」との条件が設定されている場合、受信データのフレームタイプが「IPv4」以外であれば、選択部122は、「その受信データは条件を満たす」と判定する。
【0131】
図5の(B)は、キュー選択テーブル121の生成方法の一例として、PLC1(特に、CPU30)がキュー選択テーブル121を生成する方法を示している。
【0132】
ユーザは、設定PCを用いて、機器設定情報、プログラムデータを生成し、つまり、「制御システム0のネットワーク構成等を含む各種設定情報42」を生成する。ここで一般的に、産業用コントローラとデバイス(例えば、
図2の「ネットワークデバイス」)とは、一定周期でデータ交換を実行する。
図5の(B)に示す例では、ユーザは、設定PCを用いて、1つ以上のデバイスDを含むユニット群について、1つ以上のデータ交換周期、および、そのユニット群の通信優先度CPを設定している。ユーザは、設定PCを用いて、複数のユニット群の各々について、データ交換周期および通信優先度CPを設定できてもよい。つまり、ユーザが設定PCを用いて生成する各種設定情報42には、ユニット群の通信優先度CPが含まれている。
【0133】
ここで、通信優先度CPと処理優先度Pとは対応付けられていてもよい。また、或るユニット群(例、ユニット群U1)の通信優先度CPが、別のユニット群(例、ユニット群U2)の通信優先度CPよりも高いことは、その或るユニット群の通信周期を維持する必要が、その別のユニット群より高いことを意味してもよい。さらに、或るユニット群(例、ユニット群U1)の通信優先度CPが、別のユニット群(例、ユニット群U2)の通信優先度CPよりも高いことは、その或るユニット群の通信周期が、その別のユニット群の通信周期よりも早い(短い)ことを意味してもよい。
【0134】
言い換えれば、通信周期を維持する必要が高いことを「高優先周期」と呼び、また、通信周期が早い(短い)ことを「高優先周期」と呼んでもよい。すなわち、「高優先周期」は、設定されている通信優先度CPが高いことを意味し、通信周期を維持する必要が高いこと、および、通信周期が早い(短い)ことの少なくとも一方を意味してもよい。
【0135】
例えば、
図5の(B)には、デバイスD1-1、D1-2、・・・、D1-nを含むユニット群U1について、ユーザが、設定PCを用いて、高い通信優先度CPとデータ交換周期とを付与する例が示されている。つまり、
図5の(B)には、「ユーザが、ユニット群U1に対し、高優先周期を設定する」例が示されている。
【0136】
また、
図5の(B)に示す例では、ユーザは、設定PCを用いて、デバイスD2-1、D2-2、・・・、D2-nを含むユニット群U2について、低い通信優先度CPとデータ交換周期とを付与する例が示されている。つまり、
図5の(B)には、「ユーザが、ユニット群U2に対し、低優先周期を設定する」例が示されている。
【0137】
なお、以下の説明では、デバイスD1-1、D1-2、・・・、D1-n、D2-1、D2-2、・・・、D2-nの各々を区別する必要がない場合、単に「デバイスD」と略記する。同様に、デバイスD1-1、D1-2、・・・、D1-nの各々を区別する必要がない場合、単に「デバイスD1」と略記し、また、デバイスD2-1、D2-2、・・・、D2-nの各々を区別する必要がない場合、単に「デバイスD2」と略記する。
【0138】
設定PCは、ユーザにより生成された上述の各種設定情報42を、PLC1に通知する(アップロードする)。PLC1は、設定PCからロードした各種設定情報42を、不揮発性メモリ40に格納する。「キュー選択テーブル作成」が有効となっている場合、CPU30のテーブル生成部31は、PLC1(特に、通信コントローラ10)に接続されたデバイスDの送信元アドレスを取得する。テーブル生成部31は、取得した送信元アドレスから、デバイスDを含むユニット群Uを特定する。そして、テーブル生成部31は、不揮発性メモリ40に格納されている各種設定情報42を参照して、デバイスDを含むユニット群Uに対して設定されている通信優先度CPを取得する。
【0139】
テーブル生成部31は、各種設定情報42を参照して、高い通信優先度CPの付与されているユニット群Uに含まれるデバイスDに対応する送信アドレスを、キュー選択テーブル121の「送信元アドレス」項目に格納する。つまり、テーブル生成部31は、高優先周期が設定されているユニット群Uに含まれるデバイスDに対応する送信アドレスを、キュー選択テーブル121の「送信元アドレス」項目に格納する。
【0140】
例えば、テーブル生成部31は、或るデバイスDpがPLC1(特に、通信コントローラ10)に接続されると、そのデバイスDpの送信元アドレスを取得する。テーブル生成部31は、各種設定情報42を参照して、取得した送信元アドレスから、デバイスDpがデバイスD1-1であり、デバイスD1-1を含むユニット群Uがユニット群U1であることを特定する。また、テーブル生成部31は、各種設定情報42を参照して、ユニット群U1に対して「高優先周期」が設定されていることを確認する。
【0141】
テーブル生成部31は、ユニット群U1に含まれるデバイスD1に対応する送信アドレスを、キュー選択テーブル121の「送信元アドレス」項目に格納し、つまり、キュー選択テーブル121を設定する(生成する)。例えば、テーブル生成部31は、デバイスD1-1であるデバイスDpの送信アドレスを、キュー選択テーブル121の「送信元アドレス」項目に格納する。
【0142】
キュー選択テーブル121の「宛先アドレス」および「フレームタイプ」には、「産業用ネットワークを介さずにPLC1(特に、通信コントローラ10)と通信可能に接続されたデバイス」を特定することのできる条件が設定される。産業用ネットワークとしては、例えば、EtherCAT(登録商標)、あるいは、Ethernet/IP等を挙げることができる。
【0143】
テーブル生成部31は、不揮発性メモリ40に格納されている各種設定情報42を参照して、「PLC1(特に、通信コントローラ10)への接続が、産業用ネットワークを介していない」デバイスが存在するかを確認する。「PLC1への接続が、産業用ネットワークを介していない」デバイスが存在すると、テーブル生成部31は、そのデバイスからの受信データが条件を満たすように、キュー選択テーブル121の「宛先アドレス」および「フレームタイプ」の条件を設定する。
【0144】
テーブル生成部31は、不揮発性メモリ40に格納されている各種設定情報42を参照して生成したキュー選択テーブル121を、不揮発性メモリ40に格納し、また、通信コントローラ10に通知する。通信コントローラ10(特に、転送制御部12)は、テーブル生成部31の生成したキュー選択テーブル121を取得する。
【0145】
図5の(B)を用いて説明してきた内容は、以下のように整理することができる。すなわち、通信コントローラ10の利用するキュー選択テーブル121は、ネットワーク3の構成情報を含む、ユーザがネットワーク3について規定した各種設定情報42を用いて生成される。
【0146】
前記の構成によれば、通信コントローラ10は、ネットワーク3の構成情報を含む、ユーザがネットワーク3について規定した各種設定情報42を用いて生成されたキュー選択テーブル121に従って、受信データを格納する受信キュー13を選択する。
【0147】
例えば、PLC1は、各種設定情報42において、ネットワーク3を介して自装置と周期的に通信するデバイスDのうち、通信周期を維持する必要が、他のデバイスDより高く設定されているデバイスD(高優先デバイス。例、D1-1)がないかを確認してもよい。各種設定情報42において高優先デバイスが規定されていると、PLC1は、高優先デバイスを「送信元アドレス」とする受信データが、高い優先順位NPが付与された受信キュー13に格納されるように、キュー選択テーブル121を生成または更新する。
【0148】
同様に、各種設定情報42において、或るユニット群U(デバイス群)との通信周期を維持する必要が、別のユニット群Uより高く設定されていると、PLC1は、以下のように、キュー選択テーブル121を生成または更新してもよい。すなわち、PLC1は、その或るユニット群U(例、ユニット群U1)に含まれるデバイスDを「送信元アドレス」とする受信データが、第一受信キュー13(0)に格納されるように、キュー選択テーブル121を生成または更新してもよい。また、PLC1は、その別のユニット群U(例、ユニット群U2)に含まれるデバイスを「送信元アドレス」とする受信データが、第二受信キュー13(1)に格納されるように、キュー選択テーブル121を生成または更新してもよい。
【0149】
また、各種設定情報42において、或る宛先アドレスとの通信の通信優先度CPが、別の宛先アドレスとの通信の通信優先度CPよりも高く規定されていると、PLC1は、以下のように、キュー選択テーブル121を生成または更新してもよい。すなわち、PLC1は、その或る宛先アドレスを「宛先アドレス」とする受信データが、第一受信キュー13(0)に格納されるように、キュー選択テーブル121を生成または更新してもよい。また、PLC1は、その別の宛先アドレスを「宛先アドレス」とする受信データが、第二受信キュー13(1)に格納されるように、キュー選択テーブル121を生成または更新してもよい。
【0150】
さらに、各種設定情報42において、或るフレームタイプの受信データの処理優先度Pが、別のフレームタイプの受信データの処理優先度Pよりも高く規定されていると、PLC1は、以下のように、キュー選択テーブル121を生成または更新してもよい。すなわち、通信コントローラ10は、その或るフレームタイプの受信データが、第一受信キュー13(0)に格納されるように、キュー選択テーブル121を生成または更新してもよい。また、PLC1は、その別のフレームタイプの受信データが、第二受信キュー13(1)に格納されるように、キュー選択テーブル121を生成または更新してもよい。
【0151】
したがって、通信コントローラ10は、ユーザに二度手間をかけさせることなく生成されたキュー選択テーブル121に従って、受信データを格納する受信キュー13を適宜選択することができるとの効果を奏する。
【0152】
(各種のログについて)
図6は、通信コントローラ10(特に、ログ生成部16)が生成する開始時刻ログ等について説明する図である。具体的には、
図6の(A)は、開始時刻ログの受信開始時刻および転送開始時刻を説明する図であり、
図6の(B)は、開始時刻ログの格納先の例を示している。
【0153】
図6の(A)に示すように、ログ生成部16は、各データ(各受信データ)について、ネットワーク3からの受信を開始した時刻である受信開始時刻と、メインメモリ20への転送を開始した時刻である転送開始時刻とをセットとする開始時刻ログを生成する。
【0154】
図6の(A)に示す例では、PLC1(特に、通信コントローラ10)は、ネットワーク3から、データD1、D2、D3をこの順で受信している。特に、PLC1は、受信開始時刻T1-0(D1)にデータD1の受信を開始し、受信開始時刻T1-0(D2)にデータD2の受信を開始し、受信開始時刻T0-0(D3)にデータD3の受信を開始している。
【0155】
通信コントローラ10は、データD1(処理優先度P=2)およびデータD2(処理優先度P=2)を、第二受信キュー13(1)(つまり、RX1)に格納し、データD3(処理優先度P=1)を、第一受信キュー13(0)(つまり、RX0)に格納している。
【0156】
その結果、データD1(処理優先度P=2)の、RX1からメインメモリ20への転送が開始される時刻は、転送開始時刻T1-1(D1)となっている。また、データD2(処理優先度P=2)の、RX1からメインメモリ20への転送が開始される時刻は、転送開始時刻T1-1(D2)となっている。さらに、データD3(処理優先度P=1)の、RX0からメインメモリ20への転送が開始される時刻は、転送開始時刻T0-1(D3)となっている。
図6の(A)に示すように、転送開始時刻T0-1(D3)は、転送開始時刻T1-1(D2)よりも前である。
【0157】
ログ生成部16は、受信開始時刻T1-0(D1)と転送開始時刻T1-1(D1)とを対応付けた開始時刻ログを生成し、また、受信開始時刻T1-0(D2)と転送開始時刻T1-1(D2)とを対応付けた開始時刻ログを生成する。さらに、ログ生成部16は、受信開始時刻T0-0(D3)と転送開始時刻T0-1(D3)とを対応付けた開始時刻ログを生成する。
【0158】
ログ生成部16によって生成された開始時刻ログを利用することにより、例えばユーザは、データD1、D2、D3の各々について、通信コントローラ10内での挙動も含めたデータトレースを行うことができる。
【0159】
また、
図6の(A)に示す例では、データD1、D2、D3をこの順で受信した通信コントローラ10は、データD1、D3、D2の順でメインメモリ20へと転送しており、つまり、転送順序を受信順序から変更している。
【0160】
そこで、通信コントローラ10(特に、ログ生成部16)は、転送順序を受信順序から変更するごとにカウンタをインクリメントし、データ競合の発生を示す指標となるログ(順序変更ログ)を生成する。
図6に示す例では、転送順序を、受信順序から「1回」変更している。
【0161】
ログ生成部16はさらに、各データ(各受信データ)について、ネットワーク3からの受信を完了した時刻である受信終了時刻と、メインメモリ20への転送を完了した時刻である転送終了時刻とをセットとする終了時刻ログを生成する。
図6に示す例では、ログ生成部16は、データD1のネットワーク3からの受信を完了した受信完了時刻と、データD1のメインメモリ20への転送を完了した転送完了時刻とをセットとする終了時刻ログを生成する。また、ログ生成部16は、データD2のネットワーク3からの受信を完了した受信完了時刻と、データD2のメインメモリ20への転送を完了した転送完了時刻とをセットとする終了時刻ログを生成する。さらに、ログ生成部16は、データD3のネットワーク3からの受信を完了した受信完了時刻と、データD3のメインメモリ20への転送を完了した転送完了時刻とをセットとする終了時刻ログを生成する。
【0162】
例えば、ログ生成部16は、受信データの受信開始時刻および転送開始時刻と、その受信データのデータサイズとを用いて、その受信データの受信終了時刻および転送終了時刻を算出する。
【0163】
ここで、PLC1は、起動時および動作中に、(1)ネットワーク3との通信(つまり、ネットワーク通信)に係る通信速度、および、(2)CPU30と通信コントローラ10との間の通信の通信速度について、記録(ログ)を残している。また、PLC1は、各受信データのデータサイズを、記録(ログ)を残している。
【0164】
そのため、ログ生成部16は、ネットワーク通信に係る通信速度と受信データのデータサイズとから、その受信データの受信を開始してから完了するまでに要する時間(受信動作期間)を算出することができる。そして、ログ生成部16は、算出した受信動作期間をその受信データの受信開始時刻に加えることによって、その受信データの受信終了時刻を算出することができる。
【0165】
また、ログ生成部16は、CPU30と通信コントローラ10との間の通信の通信速度と受信データのデータサイズとから、その受信データの転送を開始してから完了するまでに要する時間(転送動作期間)を算出することができる。そして、ログ生成部16は、算出した転送動作期間をその受信データの転送開始時刻に加えることによって、その受信データの転送終了時刻を算出することができる。
【0166】
そして、ログ生成部16は、算出した受信終了時刻と転送終了時刻とを対応付けた終了時刻ログを生成する。ログ生成部16によって生成された終了時刻ログを利用することにより、例えばユーザは、データD1、D2、D3の各々について、通信コントローラ10内での挙動も含めたデータトレースを行うことができる。
【0167】
つまり、ログ生成部16によって生成されたログ(開始時刻ログ、順序変更ログ、終了時刻ログ)によって、ユーザは、受信データをモニタリングすることができる。
【0168】
なお、これまで通信コントローラ10(特に、ログ生成部16)が、開始時刻ログ、順序変更ログ、終了時刻ログを生成する例を説明してきたが、開始時刻ログ、順序変更ログ、終了時刻ログを生成する主体が通信コントローラ10であることは必須ではない。開始時刻ログ、順序変更ログ、終了時刻ログの少なくとも1つは、CPU30が生成してもよく、開始時刻ログ、順序変更ログ、終了時刻ログは、PLC1によって生成されればよい。例えば、CPU30がログ生成部16を備える構成を採用してもよい。
【0169】
図6の(B)は、通信コントローラ10(特に、ログ生成部16)の生成したログ(開始時刻ログ、順序変更ログ、終了時刻ログ)の格納先の例を示す図である。
図6の(B)に示すように、ログ生成部16の生成したログの格納先は、通信コントローラ10の外部の不揮発性メモリであってもよいし、通信コントローラ10内の不揮発性メモリであってもよい。
【0170】
すなわち、ログ生成部16の生成したログは、通信コントローラ10の外部にあって、CPU30の管理する不揮発性メモリに格納されてもよい。なお、通信コントローラ10の外部にあって、CPU30の管理する不揮発性メモリに格納されるログは、CPU30が受信ディスクリプタから必要なデータを取得し生成するものであってもよく、つまり、CPU30がログ生成部16を備えていてもよい。
【0171】
また、ログ生成部16の生成したログは、通信コントローラ10が内部に備える不揮発性メモリに格納されてもよい。すなわち、ログ生成部16は、生成したログを、通信コントローラ10が内部に備える不揮発性メモリに格納してもよい。
【0172】
さらに、ログ生成部16の生成したログは、通信コントローラ10の外部に設けられた不揮発性メモリに格納されてもよい。すなわち、ログ生成部16は、生成したログを、通信コントローラ10の外部に設けられた不揮発性メモリに格納してもよい。
【0173】
図6(特に、
図6の(A))を用いて説明してきた内容は、以下のように整理することができる。すなわち、ログ生成部16は、ネットワーク3から受信データの受信を開始した時刻である受信開始時刻と、その受信データのメインメモリ20への転送を開始した時刻である転送開始時刻とを対応付けたログである開始時刻ログを生成する。
【0174】
前記の構成によれば、通信コントローラ10は、受信データの受信開始時刻および転送開始時刻を対応付けたログである開始時刻ログを生成する。したがって、通信コントローラ10は、開始時刻ログによって、通信コントローラ10内での挙動も含む、受信データのデータトレースを可能にするとの効果を奏する。
【0175】
また、ログ生成部16は、或る受信データを受信した後に受信した別の受信データを、その或る受信データよりも先にメインメモリ20へと転送した回数を示すログである順序変更ログを生成する。
【0176】
前記の構成によれば、通信コントローラ10は、或る受信データを受信した後に受信した別の受信データを、その或る受信データよりも先にメインメモリ20へと転送した回数を示すログである前記順序変更ログを生成する。
【0177】
したがって、通信コントローラ10は、「先に受信した受信データよりも後に受信した受信データを、先にメインメモリ20へと転送する」というデータ競合の発生を示す指標として順序変更ログを利用することを可能とするとの効果を奏する。
【0178】
さらに、ログ生成部16は、ネットワーク3からの受信データの受信を完了した時刻である受信終了時刻と、その受信データのメインメモリ20への転送を完了した時刻である転送終了時刻とを対応付けたログである終了時刻ログを生成する。
【0179】
前記の構成によれば、通信コントローラ10は、受信データの受信終了時刻および転送終了時刻を対応付けたログである終了時刻ログを生成する。したがって、通信コントローラ10は、終了時刻ログによって、通信コントローラ10内での挙動も含む、受信データのデータトレースを可能にするとの効果を奏する。
【0180】
ここで、終了時刻ログについて、受信終了時刻は、ネットワーク3から受信データの受信を開始した時刻である受信開始時刻と、ネットワーク3の通信速度と、その受信データのデータサイズとから算出される。また、転送終了時刻は、受信データのメインメモリ20への転送を開始した時刻である転送開始時刻と、メインメモリ20への転送速度と、その受信データのデータサイズとから算出される。
【0181】
前記の構成によれば、通信コントローラ10は、受信終了時刻および転送終了時刻を算出する。したがって、通信コントローラ10は、受信開始時刻と、転送開始時刻と、算出した受信終了時刻と、算出した転送終了時刻とを用いて、受信データの通信全般を監視することができるとの効果を奏する。
【0182】
通信コントローラ10(特に、ログ生成部16)の生成したログ(開始時刻ログ、順序変更ログ、終了時刻ログ)は、自装置内または外部の不揮発性メモリ40に格納される。
【0183】
前記の構成によれば、通信コントローラ10は、開始時刻ログ、順序変更ログ、終了時刻ログの各々を、自装置内または外部の不揮発性メモリ40に格納する。したがって、通信コントローラ10は、開始時刻ログ、順序変更ログ、終了時刻ログの各々を、各々のログの利用がしやすいように、適宜、自装置内または外部の不揮発性メモリ40に格納することができるとの効果を奏する。
【0184】
§3.動作例
図1等を用いて説明してきたように、通信コントローラ10は、互いに異なる優先順位NPが予め付与された複数の受信キュー13を備えている。そして、通信コントローラ10は、受信データの、「送信元アドレス」、「宛先アドレス」、「イーサーネットフレームのタイプ」の少なくとも1つを用いて、キュー選択テーブル121に従って、その受信データを格納する受信キュー13を選択する。以下、
図7から
図10を用いて、PLC1(特に、通信コントローラ10)が実行する処理について、その詳細を説明していく。
【0185】
(PLCによって実行される処理の全体概要)
図7は、PLC1の実行する処理の全体概要を示すフロー図である。
図7に例示するように、先ず、CPU30は、通信コントローラ10のキュー選択テーブル121を予め設定しておく(S10)。その後、CPU30は、受信ディスクリプタ(つまり、ディスクリプタデータ)をメインメモリ20に設定する(格納する)(S20)。また、CPU30は、通信コントローラ10に、受信ディスクリプタの設定を完了した旨と、受信許可とを通知する(S30)。
【0186】
S30におけるCPU30からの通知を受け付けると、通信コントローラ10は、メインメモリ20に格納されている受信ディスクリプタを、自装置内に読み込み(S40)、つまり、受信キュー13のディスクリプタFIFO132へと格納する。
【0187】
通信コントローラ10(特に、転送制御部12)は、受信開始を検知したかを判定し(S50)、受信開始を検知していない間は(S50でNO)、受信開始を検知するまで待機しておく。受信開始を検知すると(S50でYES)、転送制御部12(特に、選択部122)は、「キュー選択処理」を実行し(S60)、受信したデータ(受信データ)を格納すべき受信キュー13を、選択する。
【0188】
格納部123は、S60で選択部122によって選択された受信キュー13のデータFIFO131へと受信データを格納し、受信キュー13は、データFIFO131に格納されている受信データを、メインメモリ20へと転送する(S70、転送処理)。
【0189】
(キュー選択処理の詳細)
図8は、
図7におけるキュー選択処理(S60)の詳細例を説明するフロー図であり、つまり、転送制御部12(特に、選択部122)によって実行されるキュー選択処理の一例を示すフロー図である。
【0190】
図8に示すように、先ず、選択部122は、受信データのヘッダ部分(受信ヘッダ)から、各種の情報を取得し、具体的には、受信データの「送信元アドレス、宛先アドレス、および、イーサーネットフレームのタイプ」の少なくとも1つを取得する(S610)。
【0191】
選択部122は、「条件番号変数Num」に「1」をセットする(S620)。選択部122は、キュー選択テーブル121から、「条件=条件番号変数Num」に対応するデータ(つまり、条件)を取得する(S630)。
【0192】
例えば、「条件番号変数Num=1」の時、選択部122は、キュー選択テーブル121から、「条件1」に対応する条件を取得し、キュー選択テーブル121が
図5の(A)に例示する内容であれば、「送信元アドレス=addr_txa」との条件を取得する。同様に、「条件番号変数Num=2」の時、選択部122は、キュー選択テーブル121から、「条件2」に対応する条件を取得し、キュー選択テーブル121が
図5の(A)に例示する内容であれば、「送信元アドレス=addr_txb」との条件を取得する。また、「条件番号変数Num=n」の時、選択部122は、キュー選択テーブル121から、「条件n」に対応する条件を取得し、キュー選択テーブル121が
図5の(A)に例示する内容であれば、以下の条件を取得する。すなわち、選択部122は、「宛先アドレスがマルチキャスト(addr_rxa)」であって、「フレームタイプが!IPv4(つまり、IPv4以外)」であるとの「条件n」を取得する。
【0193】
選択部122は、受信データの「送信元アドレス、宛先アドレス、および、イーサーネットフレームのタイプ」の少なくとも1つが、S630で取得した条件に一致するか(つまり、条件を満たすか)を判定する(S640)。
【0194】
S640で条件に一致すると判定すると(S640でYES)、選択部122は、RX0を選択し(S650)、つまり、受信データの格納先として第一受信キュー13(0)を(特に、第一データFIFO131(0))を選択する。
【0195】
S640で条件に一致しないと判定すると(S640でNO)、選択部122は、「条件番号変数Numが、条件数:nに一致するか」を判定する(S670)。つまり、選択部122は、キュー選択テーブル121に規定された、条件1から条件nまでの全ての条件について、「S640の判定を行ったか」を判定する。
【0196】
「条件番号変数Numが、条件数:nに一致する(つまり、キュー選択テーブル121に規定された全ての条件について、S640の判定を行った)」場合(S670でYES)、選択部122は、RX1を選択する(S680)。つまり、選択部122は、「受信データが、キュー選択テーブル121に規定された条件のいずれも満たさない」と判定すると、その受信データの格納先として、第二受信キュー13(1)を(特に、第二データFIFO131(1))を選択する。
【0197】
「条件番号変数Numが、条件数:nに一致しない」場合(S670でNO)、選択部122は、「条件番号変数Num = 条件番号変数Num + 1」を実行する(S660)。つまり、「キュー選択テーブル121に規定された条件のうち、S640の判定を行っていない条件が残っている」場合、選択部122は、「条件番号変数Num」に「条件番号変数Num+1(条件番号変数Numに1を加えた値)」をセットする。そして、選択部122は、S630以降の処理を再び実行する。
【0198】
(転送処理の詳細)
図9は、
図7における転送処理(S70)の詳細例を説明するフロー図であり、つまり、格納部123と、S60で選択部122によって選択された受信キュー13と、調停部14とによって実行される、受信データの転送処理の一例を示すフロー図である。
【0199】
図9に示すように、先ず、格納部123は、S60で選択部122によって選択された受信キュー13のデータFIFO131に、受信データを格納する(S710)。例えば、S60で選択部122によって第一受信キュー13(0)(つまり、RX0)が選択されると、格納部123は、受信データを、第一受信キュー13(0)の第一データFIFO131(0)に格納する。同様に、例えば、S60で選択部122によって第二受信キュー13(1)(つまり、RX1)が選択されると、格納部123は、受信データを、第二受信キュー13(1)の第二データFIFO131(1)に格納する。
【0200】
受信キュー13は、データFIFO131に格納された受信データについて、データサイズ、エラーフィールドなど、「データFIFO131に格納された受信データが、正常データである」ことを確認するためのチェックを実行する(S720)。そして、受信キュー13は、データFIFO131に格納された受信データについて、「異常が無いか」を判定する(S730)。
【0201】
受信キュー13は、データFIFO131に格納された受信データに「異常がある」と判定すると(S730でNO)、データFIFO131に格納された受信データを破棄して(S750)、処理を終了する。
【0202】
受信キュー13は、データFIFO131に格納された受信データに「異常が無い」と判定すると(S730でYES)、ディスクリプタFIFO132を参照して、受信ディスクリプタを取得する(S740)。例えば、S60で選択部122によって第一受信キュー13(0)(つまり、RX0)が選択されると、第一受信キュー13(0)は、第一ディスクリプタFIFO132(0)の先頭に格納されている受信ディスクリプタを取得する。同様に、S60で選択部122によって第二受信キュー13(1)(つまり、RX1)が選択されると、第二受信キュー13(1)は、第二ディスクリプタFIFO132(1)の先頭に格納されている受信ディスクリプタを取得する。
【0203】
受信キュー13は、取得した受信ディスクリプタに規定されているアドレス(メインメモリ20における格納先アドレス)と、受信データサイズとを、DMAC133に設定する(S760)。例えば、S60で選択部122によって第一受信キュー13(0)(つまり、RX0)が選択されると、第一受信キュー13(0)は、第一DMAC133(0)に、S740で取得した受信ディスクリプタが規定しているアドレスおよびデータサイズを設定する。同様に、S60で選択部122によって第二受信キュー13(1)(つまり、RX1)が選択されると、第二受信キュー13(1)は、第二DMAC133(1)に、S740で取得した受信ディスクリプタが規定しているアドレスおよびデータサイズを設定する。
【0204】
S760での設定がなされたDMAC133と調停部14とは、調停処理および格納処理を実行する(S770)。DMAC133と調停部14とによる調停処理および格納処理が完了すると、受信キュー13は、終了ビットおよびログデータを設定したライトバックディスクリプタを作成する(S780)。そして、受信キュー13は、作成したライトバックディスクリプタが規定している内容を、再びDMAC133に設定する。
【0205】
ライトバックディスクリプタの規定している内容が設定されたDMAC133と調停部14とは、調停処理および格納処理を再び実行する(S790)。S790の調停処理および格納処理が完了すると、受信キュー13は、CPU30に転送終了の割込み通知を発行する(S800)。
【0206】
図7、
図8、および、
図9を用いて説明してきた内容は、以下のように整理することができる。すなわち、通信コントローラ10の実行する制御方法は、メインメモリ20へと転送するために、ネットワーク3から受信した受信データを、互いに異なる優先順位NPが予め付与された複数の受信キュー13のいずれかに格納する通信制御機器の制御方法である。通信コントローラ10の実行する制御方法は、キュー選択処理(選択ステップ、
図7のS60)と、選択ステップにて選択された受信キュー13に、受信データを格納する格納ステップ(
図7のS70、特に、
図9のS710)とを含んでいる。
【0207】
選択ステップは、キュー選択テーブル121(基準テーブル)に従って、受信データを格納する受信キュー13を、複数の受信キュー13の中から選択する。特に、選択ステップは、受信データの、「送信元アドレス」、「宛先アドレス」、「イーサーネットフレームのタイプ」の少なくとも1つを用いて、その受信データを格納する受信キュー13を選択する。前述の通り、キュー選択テーブル121には、複数の受信キュー13の少なくとも1つについて、格納されるべき受信データの、「送信元アドレス」、「宛先アドレス」、「イーサーネットフレームのタイプ」の少なくとも1つが規定されている。
【0208】
前記の構成によれば、通信コントローラ10の実行する制御方法は、受信データの、「送信元アドレス」、「宛先アドレス」、「イーサーネットフレームのタイプ」の少なくとも1つを用いて、その受信データを格納する受信キュー13を選択する。
【0209】
ここで、「送信元アドレス」、「宛先アドレス」、「イーサーネットフレームのタイプ」は、いずれも、受信データが元々有している情報であって、その受信データを格納すべき受信キュー13を選択するために新たに付与された情報ではない。
【0210】
したがって、前記制御方法は、処理優先度Pを示すための付加情報を用いずに、受信データを、互いに異なる優先順位NPが予め付与された複数の受信キュー13の中から選択した所望の受信キュー13に、格納することができるとの効果を奏する。
【0211】
(調停処理および格納処理の詳細)
図10は、
図9における調停処理および格納処理(S770およびS790)の詳細例を説明するフロー図であり、具体的には、調停部14の実行する調停処理と、DMAC133の実行する格納処理の一例を示すフロー図である。
【0212】
図10に例示するように、ディスクリプタにおいて規定されている内容が設定されたDMAC133は、調停部14へアクセスリクエストを発行する(S771)。そして、DMAC133は、「調停部14によって、アクセスが許可されたか」を判定する(S772)。調停部14によるアクセスの許可がないと(S772でNO)、DMAC133は、調停部14によるアクセスの許可があるまで待機しておく。
【0213】
調停部14によってアクセスが許可されると(S772でYES)、DMAC133は、ディスクリプタにおいて規定されている内容に従って、メインメモリ20にデータを格納する(S773)。例えば、DMAC133は、受信ディスクリプタにおいて規定されている内容に従って、データFIFO131に格納されている受信データを、メインメモリ20の所定のアドレスに格納し、つまり、受信データをメインメモリ20へと転送する。また、例えば、DMAC133は、ライトバックディスクリプタにおいて規定されている内容に従って、メインメモリ20のライトバック領域に、追加情報が付加された、更新後の受信ディスクリプタを格納する。DMAC133は、ライトバックディスクリプタにおいて規定されている内容に従って、メインメモリ20に格納されているディスクリプタデータの内容を、更新後の受信ディスクリプタの内容に上書きしてもよい。更新後の受信ディスクリプタの含む追加情報は、例えば、その受信ディスクリプタが指定するアドレスに書き込みした受信データのサイズ、および、受信データの書き込み完了を示す終了判定フラグ、の少なくとも一方を示してもよい。
【0214】
そして、DMAC133は、メインメモリ20に格納すべき全てのデータについて、メインメモリ20への格納を完了したかを判定する(S774)。メインメモリ20に格納すべき全てのデータについて、メインメモリ20への格納を完了すると(S774でYES)、DMAC133は処理を終了する。メインメモリ20に格納すべき全てのデータについて、メインメモリ20への格納を完了していないと(S774でNO)、メインメモリ20への格納が完了していないデータについて、S771以降の処理が行われる。
【0215】
§4.変形例
(ネットワーク構成例について)
図2に例示した制御システム0において、複数のネットワーク3が、ネットワークハブ2を介して、PLC1に接続している。しかしながら、制御システム0において、1つのネットワーク3がネットワークハブ2を介さずにPLC1に接続し、例えば、PLC1と、1つ以上のネットワークデバイスとが、一筆書きの形式で互いに通信可能に接続されていてもよい。
【0216】
(各種のログ生成処理、および、ログの格納先について)
図1には、「通信コントローラ10が、機能ブロックとしてのログ生成部16を備える」例が示されているが、機能ブロックとしてのログ生成部16を備えるのはCPU30であってもよい。すなわち、CPU30が、開始時刻ログ、順序変更ログ、終了時刻ログ等の各種のログを生成してもよい。
【0217】
また、
図1には、開始時刻ログ、順序変更ログ、終了時刻ログ等の各種のログが、通信コントローラ10の外部の不揮発性メモリ40に格納される例が示されている。しかしながら、それら各種のログが、通信コントローラ10の外部の不揮発性メモリに格納されることは必須ではない。通信コントローラ10の内部に不揮発性メモリを設け、それら各種のログの少なくとも一つを、通信コントローラ10の内部の不揮発性メモリに格納してもよい。
【0218】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【0219】
3 ネットワーク
13 受信キュー
10 通信コントローラ(通信制御機器)
20 メインメモリ
42 各種設定情報
121 キュー選択テーブル(基準テーブル)
122 選択部
NP 優先順位
S60 キュー選択処理(選択ステップ)
S70 転送処理(格納ステップ)
S710 格納ステップ