(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-24
(45)【発行日】2023-09-01
(54)【発明の名称】産業用ネットワークに接続されるスレーブ装置を制御するマスタ装置及び当該マスタ装置に備えられる通信モジュール
(51)【国際特許分類】
H04L 12/28 20060101AFI20230825BHJP
H04L 7/00 20060101ALI20230825BHJP
G06F 13/38 20060101ALI20230825BHJP
G06F 13/42 20060101ALI20230825BHJP
【FI】
H04L12/28 200Z
H04L7/00 930
G06F13/38 340D
G06F13/42 350A
(21)【出願番号】P 2020079365
(22)【出願日】2020-04-28
【審査請求日】2022-04-22
(73)【特許権者】
【識別番号】502129933
【氏名又は名称】株式会社日立産機システム
(73)【特許権者】
【識別番号】512066772
【氏名又は名称】株式会社エヌ・ディ・アール
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】松本 豊
(72)【発明者】
【氏名】鳫金 憲一
(72)【発明者】
【氏名】村岡 勇
【審査官】中川 幸洋
(56)【参考文献】
【文献】特開2019-062288(JP,A)
【文献】中国特許出願公開第111034128(CN,A)
【文献】特開平11-275126(JP,A)
【文献】欧州特許出願公開第03288198(EP,A1)
【文献】特開平10-336771(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/28
H04L 7/00
G06F 13/38
G06F 13/42
(57)【特許請求の範囲】
【請求項1】
産業用ネットワークに接続されるスレーブ装置を制御しプロセッサを有するマスタ装置に備えられる通信モジュールであって、
それぞれ定周期タイマを有し所定のイベントが検出された場合に第1の信号を送信する複数のマスタ回路と、
前記複数のマスタ回路のうちの使用対象の一つ以上のマスタ回路の全てから前記第1の信号を受信した場合に当該一つ以上のマスタ回路の全てに第2の信号を送信する同期回路と
を備え、
前記複数のマスタ回路には、複数のスレーブ装置群がそれぞれ接続され、
前記複数のスレーブ装置群の各々は、一つ以上のスレーブ装置であり、
前記一つ以上のマスタ回路の各々は、第2の信号を受信した場合に、当該マスタ回路の定周期タイマを開始し、
前記一つ以上のマスタ回路が有する一つ以上の定周期タイマの各々は、当該定周期タイマが開始された後、定周期で、開始の命令である開始信号を送信し、
前記複数のマスタ回路が有する複数の定周期タイマの定周期は同じであり、
前記一つ以上のマスタ回路の各々は、定周期で、
当該マスタ回路に接続されているスレーブ装置群に対する制御用パケットを、前記プロセッサからの制御指令に基づき生成し、
当該マスタ回路の定周期タイマから送信された開始信号に応答して、当該制御用パケットを、当該マスタ回路に接続されているスレーブ装置群に送信し、
前記複数のマスタ回路の各々について、前記所定のイベントは、当該マスタ回路に接続されている全てのスレーブ装置の初期化が終了したことを意味する値が前記プロセッサから当該マスタ回路に入力されたことである、
通信モジュール。
【請求項2】
同一のクロック信号が前記複数のマスタ回路の各々に入力され、
前記一つ以上のマスタ回路の各々について、
当該マスタ回路は、前記第2の信号を受信したことを検出し、且つ、前記クロック信号の所定の変化を検出した場合に、第3の信号を、当該マスタ回路の定周期タイマに入力し、
当該第3の信号が入力された定周期タイマが、当該定周期タイマに入力される前記クロック信号の所定の変化を検出した場合に、当該定周期タイマが開始する、
請求項1に記載の通信モジュール。
【請求項3】
前記複数のマスタ回路の各々では、前記所定のイベントの検出に相当する信号がラッチされた後の信号が前記第1の信号であり、当該第1の信号は、前記クロック信号に同期して変化する、
請求項2に記載の通信モジュール。
【請求項4】
前記一つ以上のマスタ回路の各々は、前記第1の信号の送信と前記第2の信号の受信とを検出し、且つ、前記クロック信号の所定の変化を検出した場合に、前記第3の信号を前記定周期タイマに入力する、
請求項3に記載の通信モジュール。
【請求項5】
前記複数のマスタ回路の各々が、前記定周期タイマの定周期を規定する値が前記プロセッサにより設定される記憶領域を有し、
前記複数のマスタ回路の各々の前記記憶領域に、同じ定周期の値が設定される、
請求項1に記載の通信モジュール。
【請求項6】
前記一つ以上のマスタ回路の各々が、当該マスタ回路の定周期タイマを開始したことを、前記プロセッサに、割込みにより、又は、前記同期回路を通じて、通知する、
請求項1に記載の通信モジュール。
【請求項7】
前記同期回路が、前記定周期タイマが開始されたか否かを表す値が前記一つ以上のマスタ回路の各々について設定される第1の記憶領域を有し、
前記一つ以上のマスタ回路の各々の定周期タイマが開始されたか否かを表す値が前記プロセッサにより読み出される、
請求項6に記載の通信モジュール。
【請求項8】
前記同期回路が、前記複数のマスタ回路の各々について当該マスタ回路が使用対象か否かを表す値が設定される第2の記憶領域を有し、
前記同期回路が、前記複数のマスタ回路の各々について、前記第1の信号を受信したか或いは使用対象ではないことを表す値が前記第2の記憶領域に設定された場合に、前記第2の記憶領域に設定されている値が使用対象であることを表す値である使用対象のマスタ回路に対して、前記第2の信号を送信する、
請求項1に記載の通信モジュール。
【請求項9】
前記複数のマスタ回路の各々について当該マスタ回路が使用対象か否かを表す値が前記プロセッサにより送信されて前記第2の記憶領域に設定され、
前記複数のマスタ回路の各々について当該マスタ回路が使用対象か否かを表す値が前記プロセッサにより読み出される、
請求項8に記載の通信モジュール。
【請求項10】
前記複数のマスタ回路の各々について、当該マスタ回路に接続されるスレーブ装置群は、当該マスタ回路が送信する制御用パケットに含まれるデータの量と、前記定周期の時間の長さとに基づき、各マスタ回路のパケット通信時間が均等になるように決定されたスレーブ装置群であり、
各マスタ回路について、パケット通信時間の要素として、制御用パケットの開始から送信完了までの時間であるパケット送信時間と、当該制御用パケットがスレーブ装置を通過する時に生じる遅延の時間であるスレーブ通過遅延時間とがある、
請求項1に記載の通信モジュール。
【請求項11】
一つの回路基板を備え、
前記一つの回路基板が、前記プロセッサと、前記複数のマスタ回路と、前記同期回路とを有する、
請求項1に記載の通信モジュール。
【請求項12】
一つの第1の回路基板と、
一つ以上の第2の回路基板と
を備え、
前記第1の回路基板が、前記同期回路と、前記複数のマスタ回路のうちの一つ又は二つ以上のマスタ回路とを有し、
前記一つ以上の第2の回路基板が、前記複数のマスタ回路のうちの残りのマスタ回路を有する、
請求項1に記載の通信モジュール。
【請求項13】
産業用ネットワークに接続されるスレーブ装置を制御しプロセッサを有するマスタ装置に備えられる通信モジュールに、それぞれ定周期タイマを有する複数のマスタ回路と、同期回路とを構築し、
前記複数のマスタ回路には、複数のスレーブ装置群がそれぞれ接続され、
前記複数のスレーブ装置群の各々は、一つ以上のスレーブ装置であり、
前記複数のマスタ回路の各々は、当該マスタ回路について所定のイベントが検出された場合に、第1の信号を送信し、
前記同期回路は、前記複数のマスタ回路のうちの使用対象の一つ以上のマスタ回路の全てから前記第1の信号を受信した場合に当該一つ以上のマスタ回路の全てに第2の信号を送信し、
前記一つ以上のマスタ回路の各々は、第2の信号を受信した場合に、当該マスタ回路の定周期タイマを開始し、
前記一つ以上のマスタ回路が有する一つ以上の定周期タイマの各々は、当該定周期タイマが開始された後、定周期で、開始の命令である開始信号を送信し、
前記複数のマスタ回路が有する複数の定周期タイマの定周期は同じであり、
前記一つ以上のマスタ回路の各々は、定周期で、
当該マスタ回路に接続されているスレーブ装置群に対する制御用パケットを、前記プロセッサからの制御指令に基づき生成し、
当該マスタ回路の定周期タイマから送信された開始信号に応答して、当該制御用パケットを、当該マスタ回路に接続されているスレーブ装置群に送信する、
制御方法。
【請求項14】
請求項1に記載の通信モジュールを備え一つ以上の産業用ネットワークに接続された複数のスレーブ装置を前記一つ以上の産業用ネットワークを介して制御するマスタ装置。
【請求項15】
一つ以上の産業用ネットワークに接続された複数のスレーブ装置と、
請求項1に記載の通信モジュールを備え前記一つ以上の産業用ネットワークを介して制御するマスタ装置と
を備えた通信システム。
【請求項16】
複数のマスタ回路と同期回路とを構築するための記述を含んだコンフィグレーションデータをPLD(Programmable Logic Device)に読み込ませることで請求項1に記載の通信モジュールを製造する方法。
【請求項17】
複数のマスタ回路と同期回路を構築するための記述を含んだコンフィグレーションデータを一つ以上のPLD(Programmable Logic Device)に読み込ませることで前記一つ以上のPLDにて前記複数のマスタ回路と前記同期回路を構築させて請求項1に記載の通信モジュールを製造する方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、産業用ネットワークに接続されるスレーブ装置の制御に関する。
【背景技術】
【0002】
産業用ネットワークの一例として、Ethernetネットワークがある(Ethernetは登録商標)。Ethernetネットワークは、Ethernet又はEthernetベースのネットワークである。Ethernetネットワークの一例として、産業用リアルタイムネットワークがある。産業用リアルタイムネットワークの一例として、PROFINET及びCC-Link IE TSN(登録商標)がある。
【0003】
Ethernetネットワークには、一つのマスタ装置に対して、一つ以上のスレーブ装置、典型的には複数のスレーブ装置が存在し、マスタ装置が、複数のスレーブ装置を制御する。具体的には、例えば、マスタ装置は、制御用パケットの一例であるEthernetフレームを生成することと、当該Ethernetフレームを送信することとを周期的に行うことを含む通信制御を行う。
【0004】
このような通信制御を、マスタ装置のプロセッサが行うと、言い換えれば、通信制御をソフトウェアが行うと、例えば下記のうちの少なくとも一つの問題がある。
・一般に、産業用ネットワークのマスタ装置が有するプロセッサの性能は徐々に高くなっているが、制御対象であるスレーブ装置の増加やより複雑で高速な制御の必要性が高くなってきており、リアルタイム制御に従う制御周期を満たしつつ、通信制御を行うことが困難になる場合がある。
・マスタ装置が有するプロセッサの性能が十分に高いとしても、リアルタイム制御に従う制御周期を維持することは困難であると考えられる。ジッターが生じ得るからである。
【0005】
そこで、通信制御を、ソフトウェアではなくハードウェアで行うことが考えられる。制御用パケットの生成と送信を含む通信制御を行うハードウェアとして、特許文献1に開示の通信用LSIがある。
【先行技術文献】
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
産業用ネットワーク(特に産業用リアルタイムネットワーク)の高速化により、制御用パケットのパケット通信時間は、通信速度に応じて短縮できる。このため、システム全体の制御周期の短縮(言い換えれば高速化)が期待できる。
【0008】
パケット通信時間の要素として、パケット送信時間とスレーブ通過遅延時間とがある。パケット送信時間は、制御用パケットの送信開始から送信完了までの時間であり、制御用パケットに含まれるデータの量に応じた時間となる。スレーブ通過遅延時間は、スレーブ装置を制御用パケットが通過する時に生じる遅延の時間であり、制御用パケットが通過するスレーブ装置の数に応じた時間となる。このため、制御用パケットが通過するスレーブ装置の数によっては、スレーブ通過遅延時間が長くなり、故に、制御周期の短縮が困難となる。例えば、スレーブ装置が、ON(又は点灯)とOFF(又は消灯)を切り替えるスイッチであり、多数のそのようなスイッチ(例えば1000個程のスイッチ)を高速に(例えば100μ秒周期で)制御するニーズがあるとする。しかし、制御用パケットが一つのスイッチを通過する際に生じる遅延時間を鑑みると、多数のスイッチを高速に一つの通信LSIにより制御することは困難である。
【0009】
以上のような問題は、Ethernetネットワーク以外の産業用ネットワークについても起こり得る。
【課題を解決するための手段】
【0010】
制御用パケットの生成と送信とを含む通信制御を行うハードウェアでありマスタ装置に備えられる通信モジュールが、定周期通信を行うマスタ回路を複数備える。複数のマスタ回路に一つ以上の産業用ネットワークを介して複数のスレーブ装置が接続される。例えば、各マスタ回路に、一つ以上(典型的には二つ以上)のスレーブ装置が接続されている産業用ネットワークが接続される。
【0011】
そして、通信モジュールが、複数のマスタ回路のうちの使用対象の一つ以上のマスタ回路(典型的には二つ以上のマスタ回路)の定周期を同期化する同期回路を備える。同期回路により一つ以上のマスタ回路が一つのマスタ回路システムとして振る舞うことができる。具体的には、一つ以上のマスタ回路の各々の開始タイミング(例えば、制御用パケットの生成開始又は送信開始のタイミング)が定周期毎に同じとなる。
【発明の効果】
【0012】
本発明によれば、複数のスレーブ装置が複数のマスタ回路に分散され、故に、スレーブ通過遅延時間が分散される。そして、複数のマスタ回路のうちの使用対象の一つ以上のマスタ回路が同時に定周期を開始し、以後、定周期毎に、各マスタ回路の開始タイミングが同じである。これにより、産業用ネットワークを介して複数のスレーブ装置を高速に制御することができる。
【図面の簡単な説明】
【0013】
【
図1】第1の実施形態に係る通信モジュールを有するマスタ装置の構成の一例を示す。
【
図4】マスタIPの定周期の同期化に関わる構成の一例を示す。
【
図5】第1の実施形態に係る同期回路の構成の一例を示す。
【
図6】複数のマスタIPの同期化を示すタイミングチャートの一例である。
【
図7】一比較例に係るパケット通信時間の一例を示す。
【
図8】第1の実施形態に係るパケット通信時間の一例を示す。
【
図9】第2の実施形態に係る通信モジュールを有するマスタ装置の構成の一例を示す。
【
図10】第2の実施形態に係る同期回路の構成の一部の一例を示す。
【
図11】第3の実施形態に係る通信モジュール製造方法の概要の一例を示す。
【発明を実施するための形態】
【0014】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別する場合は、参照符号を使用することがある。
【0015】
以下、幾つかの実施形態を説明する。
[第1の実施形態]
【0016】
図1は、第1の実施形態に係る通信モジュールを有するマスタ装置の構成の一例を示す。
【0017】
マスタ装置18は、共有メモリ12と、通信モジュールの一例としてのSoC FPGA17と、複数のPHY6と、複数のEC(Ethernetコネクタ)7とを備える。
【0018】
SoC FPGA17は、CPU13(プロセッサの一例)と、PLL(Phase
Locked Loop)11と、複数のマスタIP10(複数のマスタ回路の一例)と、同期回路15と、複数のMAC5と、バス16(例えば、PCI(Peripheral Component Interconnect)バス)とを備える。バス16は、
図1において白抜き矢印で表現されている。バス16を通じて、CPU13が、共有メモリ12、各マスタIP10及び同期回路15に対して入出力が可能である。また、バス16を通じて、各マスタIP10が、共有メモリ12に対する入出力が可能である。また、SoC FPGA17において、FPGA(Field-Programmable Gate Array)上に、少なくとも各マスタIP10及び同期回路15が構築される。
【0019】
MAC5は、Ethernet用の通信コントローラであり、例えばMAC(Media Access Control)層の処理を行う。PHY6は、産業用ネットワーク8との通信機能を実装した送受信機IC(Integrated Circuit)である。EC7(例えばRJ45)に、一つ以上(典型的には二つ以上)のスレーブ装置14が接続された産業用ネットワーク8が接続される。本実施形態では、MAC5とPHY6とは別れているが、MAC5とPHY6とを含んだICが、SoC FPGA17上に存在してもよいし、SoC FPGA17の外に存在してもよい。
【0020】
マスタ装置18において、SoC FPGA17の外部の装置又は回路から、SoC FPGA17に、リセット信号Reset*が入力される。Reset*は、CPU13、各マスタIP10及び同期回路15に入力される。CPU13、各マスタIP10及び同期回路15の各々は、Reset*(例えばHレベル)が入力された場合、接続された状態となる。すなわち、CPU13、各マスタIP10及び同期回路15間の通信が可能となる。
【0021】
PLL11が、SoC FPGA17の入力クロック信号CLKINを基にクロック信号CLKを出力する。CLKは、CPU13、各マスタIP10及び同期回路15の各々に入力される。
【0022】
マスタIP10は、制御用パケットの生成と送信とを含む通信制御を定周期で行うハードウェアである。複数のこのようなマスタIP10がSoC FPGA17に備えられる。一つ以上の産業用ネットワーク8に接続された複数のスレーブ装置14が複数のマスタIP10に分散する。本実施形態では、産業用ネットワーク8は、Ethernetネットワークであるため、一つのEC7に一つの産業用ネットワーク8が接続され、産業用ネットワーク8は、リング状のネットワークである。マスタIP10-x(xは、0以上の整数(本実施形態では、“0”、“1”、“2”又は“3”)と産業用ネットワーク8-x間の経路は、MAC5-x、PHY6-x及びEC7-xを含む。マスタIP10-xから送信された制御用パケットは、産業用ネットワーク8-xに従って各スレーブ装置14-xへと順に転送された後、送信元のマスタIP10-xへと戻る。
【0023】
各マスタIP10及び同期回路15に、CLKが入力される。マスタIP10-xが信号cs_o(x)及びcs_c(x)を同期回路15に出力する。同期回路15が、信号cs_e(x)をマスタIP10-xに入力する。それぞれの信号については後述する。なお、「cs」は、cyclic_statusの略である。「cs_o」は、cyclic_status_outの略である。「cs_c」は、cyclic_status_checkの略である。「cs_e」は、cyclic_status_enableの略である。
【0024】
マスタIP10は、例えば、特許文献1に開示の通信用LSI102の機能を含む。マスタIP10の処理の概要の例は、
図2及び
図3が示す通りである。マスタIP10-0を例に取る。
【0025】
すなわち、
図2が示す例によれば、定周期で送信されるEthernetフレーム(本実施形態で言う制御用パケット)のEthernetヘッダ情報は固定であるため、予めこのヘッダ情報がマスタIP10-0に設定される。マスタIP10-0は、パケット生成部28と、パケット送信部29とを有する。パケット生成部28が、予め設定されたヘッダ情報と共有メモリ12から読み出された値V0-0~V0-N(マスタIP10-0宛のデータの一例でありCPU13により更新されたデータ)とを統合したEthernetフレームを生成する。パケット送信部29が、当該Ethernetフレームを、産業用ネットワーク8-0(複数のスレーブ装置14-0)に送信する。
【0026】
また、
図2が示す例によれば、CPU13が更新するデータ(マスタIP10-0宛のデータ)は、Ethernetフレーム内のヘッダ情報を除くV0-0~V0-Nでよいため、CPU13とマスタIP10-0間のデータアクセスを効率化することができる。
【0027】
これらの点から、通信処理時間を短縮し高速化を実現することができる。
【0028】
なお、CPU13とマスタIP10-0間の共有メモリ12を介したやり取りは、例えば次の通りでよい。すなわち、CPU13とマスタIP10-0間で共有領域(共有メモリ12における領域)のアドレスが共有されている。CPU13が、そのアドレスが表す領域にバス16を介してデータを書き込む。マスタIP10-0が、そのアドレスが表す領域からバス16を介してデータを読み出し、当該データを含んだEthernetフレームを生成する。
【0029】
図3が示す例によれば、マスタIP10-0が高精度に定周期でEthernetフレームを送信するため、CPU13からマスタIP10-0へのデータの更新タイミングとEthernetフレームの送信タイミングとが非同期化している。
【0030】
図3が示す例によれば、マスタIP10-0における送信経路及び受信経路の各々について、バッファが2面化されている。具体的には、マスタIP10-0は、2面化された送信用の排他制御バッファ30A及び30Bと、2面化された受信用の排他制御バッファ31A及び31Bとを備える。また、マスタIP10-0は、パケットバッファ32を備える。送信経路については、共有メモリ12からバッファ30Aへデータが書き込まれ、バッファ30Aからバッファ30Bへ当該データが転送され、バッファ30Bから読み出されたデータを含んだ送信パケット(Ethernetフレーム)が生成されてパケットバッファ32へ格納されることが、順次に行われる。定周期で、パケットバッファ32に格納された送信パケットが、産業用ネットワーク8-0に送信される。同様に、当該送信パケットに対する返信パケットがパケットバッファ32に格納され、当該返信パケット内のデータがバッファ31Aに書き込まれ、バッファ31Aからバッファ31Bへ当該データが転送され、バッファ31Bから読み出されたデータが共有メモリ12に格納されることが、順次に行われる。このようにして、CPU13による書き込み又は読み出しと、マスタIP10-0による読み出し又は書き込みの衝突を避けることができ、以って、データ一貫性を確保することができる。
【0031】
また、
図3が示す例によれば、スレーブ装置14-0の種類によって(例えば、スレーブ装置14-0が所定のドライバの場合においてはフィードバックデータを使用して次の指令データを作成する必要があるため)、CPU13側で返信パケットの受信タイミングを検出できるように割り込み機能が採用されている。これにより、送信タイミングをCPU13側に依存することなくマスタIP10-0で生成できるようになり、定周期通信の高精度化を実現することができる。
【0032】
以上のような複数のマスタIP10のうちの使用対象の一つ以上のマスタIP10(例えば、複数のマスタIP10の全て)の定周期が同期回路15により同期化される。
【0033】
図4は、マスタIP10の定周期の同期化に関わる構成の一例を示す。以下、任意のマスタIP10を「マスタIP10-x」と表記する。xは、上述したように、0以上の整数であり、本実施形態では、“0”、“1”、“2”又は“3”である。また、本実施形態では、複数のマスタIP10は、マスタIP10-0~10-3である。
【0034】
マスタIP10-xは、周期レジスタ45-xと、定周期タイマ43-xと、第1のフリップフロップ41-xと、AND回路42-xと、第2のフリップフロップ44-xとを有する。
【0035】
周期レジスタ45-xは、定周期を表す値が、例えばCPU13により設定される。当該値が、定周期タイマ43-xの動作の定周期を表す。全ての周期レジスタ45-0~45-3に同じ定周期を表す値が設定される。これにより、全ての定周期タイマ43-0~43-3の定周期は同じである。
【0036】
定周期タイマ43-xは、開始後、周期レジスタ45-xに設定されている値が表す定周期で開始信号st(x)を出力する。信号m_cs(x)“1”が定周期タイマ43-xに入力され、且つ、定周期タイマ43-xに入力されるCLKが所定の変化をした場合(例えばLレベルからHレベルに変わった場合)に、定周期タイマ43-xは開始する。m_cs(x)“1”は、複数マスタIP10の同期開始の命令、別の言い方をすれば、定周期タイマ43-xの開始命令に相当する。
【0037】
第1のフリップフロップ41-xは、信号i_cs(x)を入力とし信号cs_o(x)を出力する。i_cs(x)“1”の入力(ラッチ)は、所定のイベントの検出の一例に相当する。具体的には、例えば、i_cs(x)“1”の入力は、全てのスレーブ装置14-xの初期化が完了したことを意味する値が例えばCPU13によりマスタIP10-x内の所定の記憶領域(例えばレジスタ)に記録されたことに相当する。全てのスレーブ装置14-xの初期化が完了したならば、マスタIP10-xとスレーブ装置14-xとの通信が可能である。このため、i_cs(x)“1”がラッチ(入力)されると、ラッチ後の信号がcs_o(x)“1”となる。cs_o(x)“1”は、定周期タイマ43-xの開始許可に相当する。なお、出力されたcs_o(x)は、同期回路15に入力される。第1のフリップフロップ41-xは、Reset*が解除された場合、信号の入出力が可能な状態となる。
【0038】
AND回路42-xは、cs_o(x)とcs_e(x)とを入力とする。AND回路42-xは、cs_o(x)“1”且つcs_e(x)“1”が入力された場合に、信号“1”を出力する。cs_e(x)“1”は、後述するように、使用対象の各マスタIP10-xの定周期タイマ43-xの開始許可に相当する。従って、cs_o(x)“1”(マスタIP10-xの定周期タイマ43-xの開始許可)に加えて、cs_e(x)“0”(使用対象の各マスタIP10-xの定周期タイマ43-xの開始許可)がAND回路42-xに入力された場合に、AND回路42-xの出力信号が“1”となる。
【0039】
第2のフリップフロップ44-xは、AND回路42-xの出力信号を入力としCLKに応じて信号m_cs(x)を出力する。AND回路42-xの出力信号“1”が入力されると、CLKに応じて、m_cs(x)“1”が出力される(例えば、m_cs(x)がアサートされる)。m_cs(x)“1”は、定周期タイマ43-xに入力される。なお、第2のフリップフロップ44-xは、Reset*が解除された場合、信号の入出力が可能な状態となる。
【0040】
上述したように、m_cs(x)“1”が定周期タイマ43-xに入力され、且つ、CLKが所定の変化をした場合に、定周期タイマ43-xが開始する。使用対象の各マスタIP10-xがマスタIP10-0~10-3の各々であるとすると、本実施形態では、定周期タイマ43-0~43-3は同時に開始し、且つ、定周期タイマ43-0~43-3の定周期は同じである。このため、同じ定周期で、定周期タイマ43-0~43-3から同時にst(0)~st(3)が出力される。マスタIP10-xにおいて、st(x)は、例えば、
図2が例示するパケット生成部28及びパケット送信部29のうちの両方又は一方、本実施形態ではパケット送信部29に入力される。st(x)に応答して、生成された制御用パケット(送信パケット)が送信される。このようにして、マスタIP10-0~10-3から定周期で同時に制御用パケットの送信が開始される。なお、本実施形態では、「定周期」は、制御周期でよい。例えば、制御周期が100μsの場合、100μs毎に制御用パケットの送信が開始される。定周期毎の送信タイミング前に、制御用パケットが準備されている(例えば、
図3に示したパケットバッファ32に制御用パケットが格納されている)。
【0041】
なお、m_cs(x)が信号cs_c(x)としてマスタIP10-xから出力され同期回路15に入力される。cs_c(x)は、後述するように、CPU13へフィードバックされる信号である。cs_c(x)はm_cs(x)にも相当するため、cs_c(x)は、使用対象の各マスタIP10の同期が開始されたか否か(使用対象の各マスタIP10の定周期タイマ43が開始されたか否か)を表す。例えば、m_cs(x)が“1”の場合、cs_c(x)も“1”であり、これは、使用対象の各マスタIP10の同期が開始されたことを表す。
【0042】
【0043】
同期回路15は、バッファ51(第1の記憶領域の一例)と、レジスタ52(第2の記憶領域の一例)と、第1のAND回路53と、第2のAND回路54と、複数のOR回路55と、第3のAND回路58と、複数のNOT回路56と、複数の第4のAND回路57とを備える。なお、バッファ51とレジスタ52に代えて一つのメモリのような記憶領域が採用されてもよい。例えば、バッファ51を一例とする第1の記憶領域とレジスタ52を一例とする第2の記憶領域とがそれぞれ一つの記憶領域の一部領域であってもよい。
【0044】
バッファ51には、cs_o(0)~cs_o(3)の各々の値と、マスタIP10-0~10-3の各々について当該マスタIP10が使用対象であるか否かを表す値とが格納される。以下、マスタIP10-xが使用対象であるか否かの値を、「ut(x)」と表す。ut(x)“0”が、マスタIP10-xが使用対象であることを表す。
【0045】
レジスタ52には、CPU13からのライトデータCPU_WDATが格納される。ここでは、CPU_WDATは、マスタIP10-0~10-3の各々について当該マスタIP10が使用対象であるか否かを表す値、すなわち、ut(0)~ut(3)である。これらの値は、レジスタ52からバッファ51に格納される。また、レジスタ52には、CLK及びReset*も入力される。Reset*(例えばLレベル)が入力された場合、レジスタ52には初期値が設定される。
【0046】
第1のAND回路53は、CPU13からの信号CPU_CS及び信号CPU_RDを入力とし、出力イネーブル信号OEを出力とする。OEは、バッファ51に入力される。
【0047】
第2のAND回路54は、CPU13からの信号CPU_CS及び信号CPU_WRを入力とし、ラッチ信号LTを出力とする。LTは、レジスタ52に入力される。
【0048】
マスタIP10と同数のOR回路55-0~55-3が備えられる。OR回路55-xは、ut(x)及びcs_o(x)を入力とする。
【0049】
第3のAND回路58は、OR回路55-0~55-3の各々の出力信号を入力とする。
【0050】
マスタIP10と同数のNOT回路56-0~56-3が備えられる。NOT回路56-xは、ut(x)を入力とする。
【0051】
マスタIP10と同数の第4のAND回路57-0~57-3が備えられる。第4のAND回路57-xは、第3のAND回路58の出力信号と、NOT回路56-xの出力信号とを入力としcs_e(x)を出力信号とする。
【0052】
このような同期回路15の動作は、例えば以下の通りである。
【0053】
使用対象のマスタIP10は、例えば予めて全マスタIP10とされていてもよいが、本実施形態では、同期回路15が、CPU13から、マスタIP10-0~10-3のいずれを使用対象とするか(言い換えれば、いずれをマスクするか(未使用対象とするか))の選択を受け付ける。具体的には、第2のAND回路54が、CPU13から、CPU_CS“1”及びCPU_WR“1”を受けて、LT“1”をレジスタ52へ出力する。これにより、CPU13から指定されたアドレスCPU_ADRが指す場所、すなわち、レジスタ52の指定された領域に、CPU13からのライトデータCPU_WDAT、すなわち、ut(0)~ut(3)がレジスタ52に書き込まれる。そして、ut(0)~ut(3)が、レジスタ52からバッファ51に書き込まれ、且つ、OR回路55-0~55-3にそれぞれ入力される。なお、同期回路15は、CPU13から入力されたut(0)~ut(3)をCPU13に提供することができる。具体的には、第1のAND回路53が、CPU13から、CPU_CS“1”及びCPU_RD“1”を受けて、OE“1”をバッファ51へ出力する。これにより、CPU13からのCPU_ADRが指す場所、すなわち、バッファ51の指定された領域から、CPU13へのリードデータCPU_RDATとして、ut(0)~ut(3)が読み出される。CPU13は、読み出されたut(0)~ut(3)と、CPU_WDATとして送信したut(0)~ut(3)とを比較することで、当該送信したut(0)~ut(3)が正しく同期回路15に書き込まれたことを確認することができる。
【0054】
OR回路55-xに入力されるut(x)が“0”であれば(マスタIP10-xが使用対象であれば)、OR回路55-xに入力されるcs_o(x)が“1”になったときに、OR回路55-xから出力され第3のAND回路58に入力される信号も“1”となる。一方、OR回路55-xに入力されるut(x)が“1”であれば(マスタIP10-xがマスクされていれば)、OR回路55-xに入力されるcs_o(x)が“0”であっても(マスタIP10-xが未だ定周期タイマ43-xを開始してよい状態になっていなくても)、OR回路55-xから出力され第3のAND回路58に入力される信号は“1”となる。結果として、使用対象の各マスタIP10-xのcs_o(x)が“1”になったときに、第3のAND回路に入力される全ての信号が“1”となり、第3のAND回路58の出力信号が“1”となる。
【0055】
第4のAND回路57-xに、第3のAND回路58の出力信号“1”が入力され、且つ、NOT回路56-xの出力信号が“1”となると、第4のAND回路57-xの出力信号cs_e(x)は“1”となる。NOT回路56-xの出力信号は、NOT回路56-xに入力されるut(x)が“0”のときに(マスタIP10-xが使用対象のときに)、“1”となる。言い換えれば、NOT回路56-xの出力信号は、NOT回路56-xに入力されるut(x)が“1”のときは(マスタIP10-xが未使用対象のときは)、“1”とならない。このように、cs_e(x)は、マスタIP10-xが使用対象のときに“1”となり得て、マスタIP10-xがマスクされているときは“1”になり得ないようになっている。
【0056】
本実施形態では、ut(0)~ut(3)がOR回路55-0~55-3に入力された後、OR回路55-0~55-3が、cs_o(1)~cs_o(3)の各々について“1”を受け付ける。使用対象の各マスタIP10-xについて、cs_o(x)“1”がOR回路55-xに入力されたときに、第3のAND回路58の出力信号“1”が同時に第4のAND回路57-0~57-3に入力される。このように、使用対象の各マスタIP10-xのcs_o(x)“1”になったときに、使用対象の各マスタIP10-xについて、cs_e(x)“1”が、同時に出力され、マスタIP10-xに入力される。そして、マスタIP10-0~10-3及び同期回路15に共通のCLKに従い、同時にm_cs(x)“1”が定周期タイマ43-xに入力され、故に、同時にst(x)が出力されることとなる。
【0057】
また、使用対象の各マスタIP10-xについて、m_cs(x)“1”が出力されると、バッファ51に書き込まれるcs_c(x)も“1”となる。同期回路15は、各マスタIP10-xについて、定周期タイマ43-xが開始したか否かをCPU13に提供することができる。具体的には、第1のAND回路53が、CPU13から、CPU_CS“1”及びCPU_RD“1”を受けて、OE“1”をバッファ51へ出力する。これにより、CPU13からのCPU_ADRが指す場所、すなわち、バッファ51の指定された領域から、CPU13へのCPU_RDATとして、cs_c(0)~cs_c(3)が読み出される。CPU13は、読み出されたcs_c(0)~cs_c(3)と、送信したut(0)~ut(3)とを比較することで、使用対象の各マスタIP10-xの定周期タイマ43-xが開始したか否かを確認することができる。
【0058】
図4及び
図5を参照した説明によれば、例えば以下のことが言える(なお、本実施形態では、エラー等が発生した場合には全マスタIP10が再起動され再同期化されてよい)。
【0059】
図6にも示すように、各マスタIP10に入力されるCLKは同一であり、各マスタIP10の定周期等は同一の設定である。cs_o(x)が“1”になるタイミングは、マスタIP10-xによって異なる。使用対象のマスタIP10-0~10-3のうち最後の一つのマスタIP10-3のcs_o(3)が“1”になったときに、cs_e(0)~cs_e(3)が同時に“1”となり、CLKに応じて、定周期タイマ43-0~43-3が同時に開始し、結果として、同時にts(0)~ts(3)が出力されることとなる。
【0060】
一比較例によれば、一つのマスタIPに全てのスレーブ装置が接続されることになる。このため、送信パケット(制御用パケット)が通過することになるスレーブ装置の数が多く、また、送信パケットに含まれるデータの量も多い。故に、
図7が例示するように、パケット送信時間T1もスレーブ通過遅延時間T2もそれぞれ長く、結果として、パケット通信時間T3も長い(なお、
図7において、「SP」は、送信パケットを意味し、「RP」は、当該送信パケットに対する返信パケットを意味する)。
【0061】
一方、本実施形態によれば、複数のスレーブ装置14が複数のマスタIP10に分散され、故に、一つのマスタIP10に接続されるスレーブ装置14の数が減ってスレーブ通過遅延時間が分散されると共に、一つのマスタIPが送信する送信パケットに含まれるデータの量は減る。そして、マスタIP10-0~10-3は定周期で同時に送信パケットを送信することができる。故に、
図8が例示するように、パケット送信時間Taもスレーブ通過遅延時間Tbもそれぞれ短く、結果として、パケット通信時間Tcも短い。例えば、全てのスレーブ装置14の性能が同じで全ての産業用ネットワーク8の性能も同じで、スレーブ装置14が均等にマスタIP10-0~10-3に分散されたと仮定した場合、TaもTbもT1及びT2(
図7参照)のそれぞれ4分の1程度となり、結果として、Tcは、T3の4分の1程度となることが期待される。なお、各マスタIP10について、当該マスタIP10にいずれのスレーブ装置14を接続するかや当該マスタIP10に接続するスレーブ装置14の数を幾つにするかは、当該マスタIP10が定周期時間内に処理可能なデータの量(生成且つ送信可能な制御用パケットのデータの量)、スレーブ装置14の性能等に応じて、決定されてよい。その際、全てのマスタIP10のパケット通信時間が均一であるように、各IPマスタ10について当該マスタIP10に接続されるスレーブ装置14が決定されることが望ましい。
[第2の実施形態]
【0062】
第2の実施形態を説明する。その際、第1の実施形態との相違点を主に説明し、第1の実施形態との共通点については説明を省略又は簡略する。
【0063】
第1の実施形態では、複数のマスタIP10が、一つのFPGA(具体的には、SoC FPGA17)に存在するが、第2の実施形態では、複数のマスタIP10が、複数のFPGAに分散している。
【0064】
図9は、第2の実施形態に係る通信モジュールを有するマスタ装置の構成の一例を示す。
【0065】
マスタ装置98は、通信モジュールとして、複数のFPGA90(FPGA90-0~90-n)を備える。マスタ装置98のCPU93が、バス96を通じて、FPGA90-0~90-nに接続されている(バス96は、FPGA90-0~90-nの各々におけるバス97に接続されている)。すなわち、CPU93は、FPGA90-0~90-nに共通の外部CPUである。CPU93は、FPGA90-0~90-nの各々について、上述のCPU13と同様の処理を行う。以下、任意のFPGA90を、「FPGA90-x」と表記する。xは、第1の実施形態と同様、0以上の整数である(本実施形態では、0~nのうちのいずれか)。また、
図9において、マスタIPの参照符号の構成“10-x-y”の“y”は、FPGA90-xにおけるマスタIPの番号である。同様に、種々の信号を表す記号における番号“x-y”の“y”も、FPGA90-xにおけるマスタIPの番号である。
【0066】
FPGA90-xが、複数(又は一つ)のマスタIP10-xを有する。
図9が示す例によれば、FPGA90-nは、マスタIP10-0-0~10-0-3を有する。マスタIP10の数は、FPGA90-0~90-n間で同じでもよいし異なっていてもよい。
【0067】
各FPGA90が、共有メモリ92を備える。言い換えれば、FPGA90-x内のメモリ(図示せず)の少なくとも一部が、ローカルの共有メモリ92-xとして使用される。CPU93とマスタIP10-x間のデータのやり取りは、FPGA90-x内の共有メモリ92-xを通じて行われる。FPGA90-xに共有メモリ92-xが備えられる理由は、マスタIP10-xから共有メモリ92-xへのアクセスを速くするためである。具体的には、FPGA90-0~90-nに共通の共有メモリがFPGA90-0~90-nの外部に備えられた場合、FPGA90間で共有メモリへのアクセスの取り合いの時間が生じ得るが、本実施形態のように、CPU93とマスタIP10-x間のデータのやり取りにFPGA90-x内のローカルの共有メモリ92-xが使用されることで、そのような時間を無くすことができる。
【0068】
同一のCLKが、FPGA90-0~90-nの各々に入力される。また、Reset*が、FPGA90-0~90-nの各々に入力される。各マスタIP10の構成は、第1の実施形態と同じである。
【0069】
FPGA90-0~90-nのうちの一つがマスタFPGAであり残りがサブFPGAである。
図9が示す例によれば、FPGA90-0が、マスタFPGAであり、FPGA90-nが、サブFPGAの一例である。以下、サブFPGAとして、サブFPGA90-nを例に取る。
【0070】
マスタFPGA90-0とサブFPGA90-nの相違点は、同期回路15が備えられるか否かである。具体的には、同期回路15を備えたFPGA90-0が、マスタFPGA90-0であり、同期回路15を備えないFPGA90-nが、サブFPGA90-nである。
【0071】
メインFPGA90-0において、マスタIP10-0-0~10-0-3と同期回路15間の接続は、
図4及び
図5に示した接続(マスタIP10-0~10-3と同期回路15間の接続)と同様である。すなわち、マスタIP10-0-0~10-0-3から同期回路95にcs_o(0-0)~cs_o(0-3)及びcs_c(0-0)~cs_c(0-3)が入力され、同期回路95からマスタIP10-0-0~10-0-3にcs_e(0-0)~cs_e(0-3)が出力される。
【0072】
サブFPGA90-nのマスタIP10-n-0~10-n-3と同期回路95間の接続も、
図4及び
図5に示した接続と同様である。すなわち、cs_o(n-0)~cs_o(n-3)、cs_c(n-0)~cs_c(n-3)及びcs_e(n-0)~cs_e(n-3)の信号線が、マスタIP10-n-0~10-n-3と同期回路95に接続される。マスタIP10-n-0~10-n-3から同期回路95にcs_o(n-0)~cs_o(n-3)及びcs_c(n-0)~cs_c(n-3)が入力され、同期回路95からマスタIP10-n-0~10-n-3にcs_e(n-0)~cs_e(n-3)が出力される。
【0073】
同一のCLKが、FPGA90-0~90-nの各々に入力され、また、同期回路95が例えば以下のように構成されているので、FPGA90-0~90-n間で、使用対象の各マスタIP10-xの定周期タイマ43-xを同時に開始することができる。
【0074】
同期回路95は、FPGA90-0~90-nにおける使用対象の各マスタIP10-xのcs_o(x)が“1”になったときにFPGA90-0~90-nにおける使用対象の各マスタIP10-xのcs_e(x)が同時に“1”になるよう構成されている。例えば、
図10が示す構成が採用される。
図10において、種々の回路の参照符号の構成“A-x-y”の“A”は、当該回路の共通の符号であり、“x”は、FPGA90-xの“x”であり、“y”は、FPGA90-xにおけるマスタIPの番号である。
【0075】
図10が例示する構成によれば、OR回路55、第3のAND回路58、NOT回路56及び第4のAND回路57を含んだ回路セットが、FPGA90毎に同期回路95に備えられる。そして、FPGA90-0~90-nの各々について、当該FPGA90に対応した各第4のAND回路57に、FPGA90-0~90-nに対応した第3のAND回路58-0~58-nの各々の出力信号が入力される。例えば、サブFPGA90-nに対応した第4のAND回路57-n-0~57-n-3の各々には、第3のAND回路58-0~58-nの各々の出力信号が入力される。
【0076】
図10が例示する構成によれば、同期回路95は次のように動作する。すなわち、例えばサブFPGA90-nにおける使用対象(ut(n)“0”)の各マスタIP10-nのcs_o(n)が“1”になれば、第3のAND回路58-nの出力信号は“1”となる。しかし、第3のAND回路58-n以外の第3のAND回路58のうちの少なくとも一つの出力信号が“0”のままだと、第4のAND回路57-n-0~57-n-3のいずれの出力信号も(cs_e(n-0)~cs_e(n-3)のいずれも)“1”にならない。第3のAND回路58-0~58-nの全ての出力信号が“1”になったときに、FPGA90-0~90-nにおける使用対象の各マスタIP10-xのcs_e(x)が同時に“1”になる。そして、上述したように、同一のCLKがFPGA90-0~90-nの各々に入力されるので、FPGA90-0~90-nにおける全ての使用対象のマスタIP10の定周期タイマ43が同時に開始する。
【0077】
本実施形態によれば、FPGA90の増減によりマスタIP10の数を可変することができる。
【0078】
なお、FPGA90-0~90-n間でFPGA90に入力されるクロック信号が異なる場合、メインFPGA90-0が、クロック信号の調整を行ってよい。例えば、メインFPGA90-0が、サブFPGA90-nに入力されメインFPGA90-0に入力されるクロック信号と異なるクロック信号の周期を、メインFPGA90-0に入力されるクロック信号の周期と同じになるよう調整してよい。
[第3の実施形態]
【0079】
第3の実施形態は、第1の実施形態に係る通信モジュールの製造方法に関する(詳細説明は省略するが、この方法は第2の実施形態に係る通信モジュールの製造方法にも適用できる)。
【0080】
具体的には、例えば、
図11が示すように、計算機1169が、SoC FPGA17におけるFPGA1109のコンフィグレーションデータ1101を、例えばユーザからの入力を基に生成し、コンフィグレーションデータ1101をSoC FPGA17に入力する。コンフィグレーションデータ1101は、FPGA1109に構築される回路の構成を表す記述、例えば、複数のマスタIP10と同期回路15とを構築するための記述を含む。
【0081】
CPU13が、OS1164、デバイスドライバ1165、ライブラリ1166、API167、アプリケーション1168及び設定プログラム1161を実行する。
【0082】
OS1164は、プログラム管理やハードウェアへのアクセスなどの基本機能を提供する。デバイスドライバ1165は、OS1164の機能を用いてバス16を介しSoC FPGA17の公開するデータ領域や動作管理情報等にアクセスする(例えば、デバイスドライバ1165は、OS1164の一部でもよい)。ライブラリ1166は、利用頻度の多い関数をまとめたものであり、例えば、OS1164の機能を利用してメモリ管理や入出力といった基本機能を提供する。API1167は、ライブラリ1166を介して、デバイスドライバ1165やOS1164の提供する機能を利用するためのソフトウェアインターフェースである。アプリケーション1168は、マスタIP10が生成する制御用パケットに含まれるデータのI/Oを共有メモリ12に対して実行するソフトウェアの一例である。
【0083】
設定プログラム1161が、例えばOS1164の機能を利用して、FPGA1109にコンフィグレーションデータ1101を設定する。
【0084】
FPGA1109は、PLD(Programmable Logic Device)の一例である。CPU13(例えば、設定プログラム1161)が、設定されたコンフィグレーションデータ1101をFPGA1109に読み込ませることで、上述したマスタIP10及び同期回路15をFPGA1109上に構築する。
【0085】
以上の第1~第3の実施形態の説明を、例えば下記のように総括できる。
【0086】
産業用ネットワーク8に接続されるスレーブ装置14を制御しCPU13又は93を有するマスタ装置18又は98に備えられる通信モジュールが、複数のマスタIP10と同期回路15又は95とを備える。マスタIP10-xは、定周期タイマ43-xを有しi_cs(x)“1”(所定のイベントの一例)が検出された場合にcs_o(x)“1”(第1の信号の一例)を送信する。同期回路15又は95は、複数のマスタIPのうちの使用対象(ut(x)“0”)の各マスタIP10-xからcs_o(x)“1”を受信した場合に使用対象の各マスタIP10-xにcs_e(x)“1”(第2の信号の一例)を送信する。
【0087】
複数のマスタIP10には、複数のスレーブ装置群がそれぞれ接続される。複数のスレーブ装置群の各々は、一つ以上のスレーブ装置14である。
【0088】
使用対象の各マスタIP10-xは、cs_e(x)“1”を受信した場合に、当該マスタIP10-xの定周期タイマ43-xを開始する。使用対象の各マスタIP10-xの定周期タイマ43-xは、当該定周期タイマ43-xが開始された後、定周期で、st(x)(開始信号の一例)を送信する。複数のマスタIP10が有する複数の定周期タイマ43の定周期は同じである。
【0089】
使用対象の各マスタIP10-xは、定周期で、当該マスタIP10に接続されているスレーブ装置群に対する制御用パケットを、CPU13又は95からの制御指令(例えば、コマンド)に基づき生成し、当該マスタIP10の定周期タイマから送信された開始信号に応答して、当該制御用パケットを、当該マスタIP10に接続されているスレーブ装置群に送信する。
【0090】
この構成によれば、複数のスレーブ装置14が複数のマスタIP10に分散され、故に、スレーブ通過遅延時間が分散される。そして、使用対象の一つ以上のマスタIP10が同時に定周期を開始し、以後、定周期毎に、各マスタIP10の開始タイミングが同じである。これにより、複数(又は一つ)の産業用ネットワーク8を介して複数のスレーブ装置14を高速に制御することができる。
【0091】
同一のCLKが複数のマスタIP10の各々に入力されてよい。使用対象の各マスタIP10-xについて、当該マスタIP10-xは、cs_e(x)“1”を受信したことを検出し、且つ、CLKの所定の変化(例えば立ち上がり)を検出した場合に、m_cs(x)“1”(第3の信号の一例)を、当該マスタIP10-xの定周期タイマ43-xに入力してよい。当該m_cs(x)“1”が入力された定周期タイマ43-xが、当該定周期タイマ43-xに入力されるCLKの所定の変化を検出した場合に、当該定周期タイマ43-xが開始してよい。これにより、同一のCLKに従い使用対象の各マスタIP10-xの定周期タイマ43-xを同時に開始することができる。
【0092】
各マスタIP10-xでは、i_cs(x)“1”がラッチされラッチ後の信号がcs_o(x)“1”となるが、cs_o(x)は、CLKに同期して変化する。
【0093】
各マスタIP10-xは、cs_o(x)“1”の送信とcs_e(x)“1”の受信とを検出し、且つ、CLKの所定の変化を検出した場合に、m_cs(x)“1”を定周期タイマ43-xに入力してよい。このように、cs_o(x)“1”の送信も検出された場合にm_cs(x)“1”が入力されるので、マスタIP10-xが正常であるときに定周期タイマ43-xを開始することの確実性を高めることができる。
【0094】
各マスタIP10-xについて、i_cs(x)“1”は、当該マスタIP10-xに接続されている全てのスレーブ装置14-xの初期化が終了したことを意味する値がCPU13又は93から当該マスタIP10-xに入力されたことでよい。これにより、マスタIP10-xとスレーブ装置14-xとの通信が可能になる前に当該通信が開始されることを避けることができる。
【0095】
各マスタIP10-xが、定周期タイマ43-xの定周期を規定する値(定周期時間を表す値)がCPU13又は93により設定される周期レジスタ45-x(記憶領域の一例)を有してよい。各マスタIP10-xの周期レジスタ45-xに、同じ定周期の値が設定されてよい。これにより、各定周期タイマ43-xの開始後に定周期で制御用パケットが同じタイミングで送信されることを維持することができる。
【0096】
使用対象の各マスタIP10-xが、定周期タイマ43-xを開始したことを、CPU13又は93に、直接的に(例えば、割込みにより)、又は、同期回路15又は95を通じて、通知してよい。これにより、CPU13又は93が、使用対象の各マスタIP10-xが定周期通信を開始したか否かに応じた制御を行うことができる。なお、同期回路15又は95が、cs_c(x)(定周期タイマ43-xが開始されたか否かを表す値の一例)が使用対象の各マスタIP10-xについて設定されるバッファ51(第1の記憶領域の一例)を有してよい。使用対象の各マスタIP10-xについてcs_c(x)がCPU13又は93により読み出されてよい。これにより、CPU13又は93が任意のタイミングで各マスタIP10-xのcs_c(x)(すなわち、有効(マスクされていない)マスタIP10-xが定周期通信が開始したこと確認するための信号)を取得し制御を行うことができる。
【0097】
同期回路15又は95が、各マスタIP10-xについてut(x)(マスタIP10-xが使用対象か否かを表す値)が設定されるレジスタ52(第2の記憶領域の一例)を有してよい。同期回路15又は95が、各マスタIP10-xについて、cs_o(x)“1”を受信したか或いはut(x)“1”がレジスタ52に設定された場合に、使用対象(ut(x)“0”)のマスタIP10-xに対してcs_e(x)“1”を送信してよい。このようにして、マスクされたマスタIP10-xの定周期タイマ43-xまで開始してしまうことを避けることができる。なお、レジスタ52に設定されたut(x)の設定はCPU13又は93から送信された値であり、設定されたut(x)がCPU13又は93により読み出されてよい。これにより、CPU13又は93は、送信されたut(x)が正しく設定されたか否かを確認できる。ut(x)のCPU13又は93への読み出し元は、レジスタ52に代えてバッファ51でよい。すなわち、レジスタ52が、CPU13又は93からデータが書き込まれる記憶領域の一例であり、バッファ51が、CPU13又は93からデータが読み出される記憶領域の一例でよい。
【0098】
各マスタIP10-xについて、当該マスタIP10-xに接続されるスレーブ装置群は、当該マスタIP10-xが送信する制御用パケットに含まれるデータの量と、定周期の時間の長さとに基づき、各マスタIP10のパケット通信時間が均等になるように決定されたスレーブ装置群でよい。これにより、複数のマスタIP10を含んだ通信モジュール全体として、パケット通信時間が長くなることを避けることができる。言い換えれば、一つのマスタIP10のパケット通信時間が残りのマスタIP10の各々についてのパケット通信時間より長いが故に通信モジュール全体としてパケット通信時間が長くなるといったことを避けることができる。なお、各マスタIP10-xについて、パケット通信時間の要素として、制御用パケットの開始から送信完了までの時間であるパケット送信時間と、当該制御用パケットがスレーブ装置を通過する時に生じる遅延の時間であるスレーブ通過遅延時間とがある。
【0099】
通信モジュールが、SoC FPGA17(一つの回路基板の一例)を備えてよい。SoC FPGA17が、CPU13と、複数のマスタIP10と、同期回路15とを有してよい。これにより、高速な定周期通信が可能である。
【0100】
通信モジュールが、FPGA90-0(一つの第1の回路基板の一例)と、FPGA90-n(一つ以上の第2の回路基板の一例)とを備えてよい。FPGA90-0が、同期回路95と、一つ又は二つ以上のマスタIP10-0とを有してよい。FPGA90-nを含む残りのFPGA90が、一つ又は複数のマスタIP10を有してよい。これにより、通信モジュールの拡張又は縮小がし易いことが期待される。すなわち、サブFPGA90の増設又は減設によりマスタIP10の増減が可能である。
【0101】
以上、幾つかの実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。例えば、複数のマスタIP10及び同期回路15又は95は、FPGA上に構築されるが、それに代えて、ASIC(Application Specific Integrated Circuit)のような他種の回路基板(ハードウェア)上に構築されてよい。
【符号の説明】
【0102】
18:マスタ装置