(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024144216
(43)【公開日】2024-10-11
(54)【発明の名称】制御装置
(51)【国際特許分類】
G06F 13/28 20060101AFI20241003BHJP
【FI】
G06F13/28 310C
G06F13/28 310L
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2024040185
(22)【出願日】2024-03-14
(31)【優先権主張番号】P 2023051883
(32)【優先日】2023-03-28
(33)【優先権主張国・地域又は機関】JP
(71)【出願人】
【識別番号】000006013
【氏名又は名称】三菱電機株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】矢野 哲夫
(57)【要約】
【課題】制御対象機器を制御する制御装置において、受信データを用いてプロセッサが演算処理を実行する時間をできるだけ確保することが可能な技術を提供する。
【解決手段】制御対象機器を制御するための制御装置は、キャッシュメモリを有するプロセッサと、ディスクリプタを有するDMAコントローラと、共有メモリと、接続ポートを介して制御対象機器と通信する通信装置とを備える。通信装置は、接続ポートを介して受信した受信フレームを共有メモリに格納した後、起動信号をDMAコントローラへ送信することによりDMAコントローラを起動する。DMAコントローラは、ディスクリプタに含まれる複数のエントリの中から受信フレームに対応する第1エントリを選択し、選択された第1エントリに含まれるDMA転送に関する設定情報に基づいて、受信フレームを共有メモリからキャッシュメモリへ転送する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
制御対象機器を制御するための制御装置であって、
キャッシュメモリを有するプロセッサと、
ディスクリプタを有するDMAコントローラと、
共有メモリと、
接続ポートを介して前記制御対象機器と通信する通信装置とを備え、
前記通信装置は、前記接続ポートを介して受信した受信フレームを前記共有メモリに格納した後、起動信号を前記DMAコントローラへ送信することにより前記DMAコントローラを起動し、
前記DMAコントローラは、
前記ディスクリプタに含まれる複数のエントリの中から前記受信フレームに対応する第1エントリを選択し、
選択された前記第1エントリに含まれるDMA転送に関する設定情報に基づいて、前記受信フレームを前記共有メモリから前記キャッシュメモリへ転送する、制御装置。
【請求項2】
前記通信装置は、
前記複数のエントリにそれぞれ対応する複数の設定値と、前記受信フレームに含まれる規定情報が示す値とを比較することにより、前記複数の設定値の中から前記規定情報に対応する1の設定値を判定し、
前記1の設定値に対応するエントリの番号を前記起動信号とともに前記DMAコントローラへ送信し、
前記DMAコントローラは、前記1の設定値に対応するエントリの番号に基づいて、前記複数のエントリの中から前記第1エントリを選択する、請求項1に記載の制御装置。
【請求項3】
前記1の設定値は、前記規定情報が示す値と同一の値であり、
前記DMAコントローラは、前記複数のエントリのうち、前記1の設定値に対応するエントリの番号と同一の番号を有するエントリを、前記第1エントリとして選択する、請求項2に記載の制御装置。
【請求項4】
前記設定情報は、転送元アドレスと、転送先アドレスと、転送データのサイズとを含む、請求項1~請求項3のいずれか1項に記載の制御装置。
【請求項5】
前記規定情報は、前記受信フレームに含まれる送信元アドレスまたはタイプである、請求項3に記載の制御装置。
【請求項6】
前記第1エントリに含まれる前記設定情報は、前記受信フレームの前記共有メモリから前記キャッシュメモリへの転送処理が完了した後に、他のエントリに含まれる前記設定情報に基づく前記転送処理が実行されるか否かを示す第1フラグをさらに含み、
前記他のエントリに含まれる前記設定情報に基づく前記転送処理が実行されないことを前記第1フラグが示している場合、前記DMAコントローラは、前記第1エントリに含まれる前記設定情報に基づく前記転送処理が完了した後に当該完了を示す第1完了情報を前記通信装置へ送信する、請求項1~請求項3のいずれか1項に記載の制御装置。
【請求項7】
前記通信装置は、
第1通信周期において前記受信フレームを受信する毎に前記受信フレームを前記共有メモリに格納するとともに、前記起動信号を前記DMAコントローラへ送信し、
前記第1通信周期が終了して第2通信周期へ切り替わり、かつ、前記第1通信周期において受信した各前記受信フレームについての前記第1完了情報を前記DMAコントローラから受信した場合、前記第1通信周期における前記転送処理の完了を示す第2完了情報を前記プロセッサに送信する、請求項6に記載の制御装置。
【請求項8】
前記第1エントリに含まれる前記設定情報は、前記第1エントリが最終エントリであるか否かを示す第2フラグをさらに含み、
前記他のエントリに含まれる前記設定情報に基づく前記転送処理が実行されることを前記第1フラグが示しており、かつ、前記第1エントリが前記最終エントリではないことを前記第2フラグが示している場合、前記DMAコントローラは、前記複数のエントリのうち、前記第1エントリの番号の次の番号を有する第2エントリを選択し、前記第2エントリに含まれる前記設定情報に基づいて、前記受信フレームを前記共有メモリから前記キャッシュメモリへ転送する、請求項6に記載の制御装置。
【請求項9】
前記DMAコントローラは、複数の前記ディスクリプタを有し、
前記通信装置は、前記接続ポートの番号および前記通信装置の通信周期の番号の少なくとも一方に基づいて、複数の前記ディスクリプタのうちの対応するディスクリプタを起動するための前記起動信号を前記DMAコントローラに送信する、請求項1~請求項3のいずれか1項に記載の制御装置。
【請求項10】
前記通信装置は、前記受信フレームに含まれる規定サイズのデータを受信する毎に、前記規定サイズのデータを前記共有メモリに格納した後、前記起動信号を前記DMAコントローラへ送信し、
前記DMAコントローラは、前記起動信号を受信する毎に、前記受信フレームに対応する前記第1エントリに含まれる前記設定情報に基づいて、前記規定サイズのデータを前記共有メモリから前記キャッシュメモリへ転送する、請求項1~請求項3のいずれか1項に記載の制御装置。
【請求項11】
前記通信装置は、
前記受信フレームの全データを受信した場合に、前記受信フレームが正常であるか否かを判断し、
前記受信フレームが正常であると判断した場合には、前記受信フレームの受信が完了したことを示す受信完了信号を前記DMAコントローラに送信し、
前記受信フレームが異常であると判断した場合には、前記受信フレームの受信が異常であることを示す受信異常信号を前記DMAコントローラに送信する、請求項10に記載の制御装置。
【請求項12】
前記DMAコントローラは、
前記規定サイズのデータを前記共有メモリから前記キャッシュメモリへ転送した後、前記設定情報に基づく転送データのサイズから前記規定サイズを減算した減算後のサイズを保持し、
前記受信完了信号を受信しており、かつ前記減算後のサイズが0である場合には、前記受信フレームの前記共有メモリから前記キャッシュメモリへの転送処理を完了し、
前記受信異常信号を受信している場合には前記受信フレームの前記転送処理を中断する、請求項11に記載の制御装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、制御装置に関する。
【背景技術】
【0002】
プログラマブルロジックコントローラ(以下、PLC)、コンピュータ数値制御(以下、CNC)装置等は、産業用ネットワークを介して、I/Oデバイス、インバータ、サーボアンプ等の機器と接続される。産業用ネットワークには、複数の機器を安定的に制御するために通信周期が設定され、それによりリアルタイム性が確保される。
【0003】
しかし、接続される機器によって制御周期が異なったり、機器の制御データおよびその他のデータ等が存在したりする。そのため、重要なデータをより多くCPU(Central Processing Unit)が処理するために、より優先度の高いデータを共有メモリへ優先的に転送することが考えられる。
【0004】
例えば、国際公開第2021/181874号(特許文献1)に係る通信制御機器は、ネットワークから受信した受信データをメインメモリへと転送するために、受信データを互いに異なる優先順位が予め付与された複数の受信キューのいずれかに格納する。通信制御機器は、基準テーブルに従って、受信データを格納する受信キューを、複数の受信キューの中から選択する。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1によると、優先度の高いデータをより多くメインメモリに転送することができると考えられる。しかし、CPUがデータを用いて演算等の処理を行なうためには、CPUが共有メモリとキャッシュメモリとの間でデータを転送(コピー)する必要があり、CPUが演算等の処理を行なうための時間が消費される。
【0007】
CPUの代わりに、DMA(Direct Memory Access)コントローラがデータの転送処理を行なうことによりデータ転送時間を短縮することが考えられる。この場合、ネットワークからデータを受信する毎に、CPUがDMAコントローラを起動するための設定処理を行なう時間が必要となる。そのため、CPUが実行する他処理の実行時間も延びてしまい、CPUが演算等の処理を行なうための時間が消費されてしまうという課題がある。
【0008】
本開示のある局面における目的は、制御対象機器を制御する制御装置において、受信データを用いてプロセッサが演算処理を実行する時間をできるだけ確保することが可能な技術を提供することである。
【課題を解決するための手段】
【0009】
ある実施の形態に従うと、制御対象機器を制御するための制御装置が提供される。制御装置は、キャッシュメモリを有するプロセッサと、ディスクリプタを有するDMAコントローラと、共有メモリと、接続ポートを介して制御対象機器と通信する通信装置とを備える。通信装置は、接続ポートを介して受信した受信フレームを共有メモリに格納した後、起動信号をDMAコントローラへ送信することによりDMAコントローラを起動する。DMAコントローラは、ディスクリプタに含まれる複数のエントリの中から受信フレームに対応する第1エントリを選択し、選択された第1エントリに含まれるDMA転送に関する設定情報に基づいて、受信フレームを共有メモリからキャッシュメモリへ転送する。
【発明の効果】
【0010】
本開示によると、制御対象機器を制御する制御装置において、受信データを用いてプロセッサが演算処理を実行する時間をできるだけ確保することが可能となる。
【図面の簡単な説明】
【0011】
【
図1】本実施の形態に従う制御システムの全体構成の一例を示す図である。
【
図2】DMA実行番号の生成方式の一例を説明するための図である。
【
図3】DMA設定情報の選択方式の一例を説明するための図である。
【
図4】従来のデータ転送方式の一例を説明するための図である。
【
図5】本実施の形態に従うデータ転送方式の一例を説明するための図である。
【
図6】本実施の形態に従うデータ転送方式の他の例を説明するための図である。
【
図7】DMACの処理手順の一例を示すフローチャートである。
【
図8】本実施の形態の変形例に従うデータ転送方式を説明するための図である。
【発明を実施するための形態】
【0012】
以下、図面を参照しつつ、本開示の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【0013】
<全体構成>
図1は、本実施の形態に従う制御システムの全体構成の一例を示す図である。
図1を参照して、制御システム1000は、制御装置100と、複数の制御対象機器20_1~20_6(以下、「制御対象機器20」とも総称する。)とを含む。
【0014】
制御装置100は、例えば、PLCのような産業用コントローラである。ただし、制御装置100は、産業用コントローラに限定されることなく、任意の制御装置であってもよい。制御対象機器20は、I/Oデバイス、インバータ等の機器である。
【0015】
制御装置100は、産業用ネットワークを介して各制御対象機器20と接続されており、各制御対象機器20とデータの送受信を行なう。産業用ネットワークには、例えば、CC-Link IE TSN(登録商標)、EtherCAT(登録商標)、PROFINET(登録商標)等が採用される。なお、
図1では、制御装置100と制御対象機器20とをライン接続というトポロジーで接続しているが、これは一例であり、接続のトポロジーについて制約するものではない。
【0016】
制御装置100は、プロセッサ10と、共有メモリ11と、通信装置12と、DMAコントローラ(以下、「DMAC」とも称する。)13とを含む。なお、制御装置100は、その他のハードウェアを含む構成であってもよい。また、制御装置100の一部または全ての構成は、SystemOnChip(以下、「SoC」とも称する。)等により一つの部品で実現されてもよいし、個別の部品で実現されてもよい。
【0017】
プロセッサ10は、例えば、CPU、MPU(microprocessor unit)等で構成される。プロセッサ10は、図示しないストレージに記憶された各種プログラムを読み出し、制御対象機器20に応じた制御を行なう。プロセッサ10は、制御対象機器20を制御するために、送信データの生成、通信装置12の設定、その他の必要な処理を実行する。ストレージは、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)等の不揮発性記憶装置で構成される。
【0018】
また、プロセッサ10は、共有メモリ11、メインメモリ等へのアクセス頻度を低減して高速に処理を実行するためのキャッシュメモリ101を有している。
【0019】
共有メモリ11は、プロセッサ10と、プロセッサ10以外の周辺装置(例えば、通信装置12等)とデータを共有するためのメモリである。共有メモリ11は、例えば、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、SoC内のメモリ等で構成される。また、メインメモリの一部領域を共有メモリ11として使用してもよいし、メインメモリとは別に共有メモリ11を設けてもよい。
【0020】
通信装置12は、規定の通信周期で、産業用ネットワークを介して各制御対象機器20と通信する。通信装置12は、産業用ネットワークに接続される複数の接続ポート121,122を有する。
図1の例では、通信装置12は、接続ポート121を介して、制御対象機器20_1~20_4とデータを送受信し、接続ポート122を介して、制御対象機器20_5,20_6とデータを送受信する。なお、接続ポートは2つに限られず、1つであってもよいし、3つ以上であってもよい。
【0021】
通信装置12は、通信周期の切り替わりを起点として、制御対象機器20とフレーム(データ)の送受信を開始する。制御対象機器20から受信する受信フレーム、および制御対象機器20へ送信する送信フレームは、プロセッサ10が参照可能な共有メモリ11に格納される。共有メモリ11における送信フレームおよび受信フレームの格納場所は、事前に指定されていてもよいし、プロセッサ10が通信装置12にアドレス設定を行なうことにより指定されてもよい。通信装置12は、事前の指定またはアドレス設定に従って、共有メモリ11から送信フレームを取得し、共有メモリ11へ受信フレームを格納する。
【0022】
通信装置12は、採用する産業用ネットワークのプロトコルに従って、受信フレームのエラーチェックを実行する。Ethernet(登録商標)をベースとした産業用ネットワークが採用される場合、通信装置12は、例えば、FCS(Frame Check Sequence)を用いてエラーチェックを実行する。通信装置12は、エラーチェックの実行結果に基づいて受信フレームが正常であると判定した場合に受信フレームを共有メモリ11へ格納する。続いて、通信装置12は、DMAC13を起動するための起動信号を発行する(すなわち、起動信号をDMAC13へ送信する)ことにより、DMAC13を起動する。なお、受信フレームが異常である場合には、通信装置12は、受信フレームを共有メモリ11へ格納せず、起動信号をDMAC13に送信しない。
【0023】
起動信号は、例えば、通信装置12とDMAC13とを1対1で接続した論理信号であり、パルスまたはレベルで通知される。なお、起動信号は、PCI Express(登録商標)のMSI(Message Signaled Interrupt)のように、バスを用いたメッセージで通知されてもよい。
【0024】
通信装置12は、正常であると判定した受信フレームを共有メモリ11へ格納した後、起動信号とともにDMA実行番号をDMAC13に送信する。DMA実行番号は、各受信フレームに対応したDMA設定情報を指定するための情報である。DMA設定情報は、DMAC13によるデータ転送処理のためのDMA転送に関する設定情報であり、DMAC13のディスクリプタに格納される。後述するように、ディスクリプタは、複数のエントリを有し、各エントリには番号が付与されている。ディスクリプタは、複数のDMA設定情報をそれぞれ複数のエントリに格納する。
【0025】
DMA実行番号は、受信フレームの中に含まれる規定情報、ネットワーク接続ポート情報、通信周期の情報等に基づいて生成される。規定情報は、例えば、送信元アドレス、タイプ等の情報である。
【0026】
図2は、DMA実行番号の生成方式の一例を説明するための図である。ここでは、受信フレームの規定情報に基づいてDMA実行番号を生成する方式について説明する。
図2を参照して、受信フレームは、複数のフィールド31~35を含む。フィールド31,32,33,34,35には、それぞれ宛先MACアドレス、送信元MACアドレス、タイプ、ペイロード、FCSが格納される。
【0027】
通信装置12は、受信フレームの規定情報(例えば、送信元MACアドレス、タイプ)が示す値を抽出する。通信装置12は、例えば、フィールド33のタイプの値を抽出する。フィールド33を2Byteとした場合、タイプの値は0~65535を取り得る。
【0028】
通信装置12は、DMA実行番号の生成機能として、設定値格納部50と、複数の比較器52_0~52_nと、生成器54とを含む。設定値格納部50は、DMAC13のディスクリプタのエントリに対応する設定値を格納する。例えば、設定値X0はエントリ0に対応する設定値であり、設定値X1はエントリ1に対応する設定値であり、設定値Xnはエントリnに対応する設定値である。各エントリに対応する設定値は、プロセッサ10により予め設定される。
【0029】
比較器52_0は、規定情報の値(ここでは、タイプの値)と、エントリ0に対応する設定値X0とを比較して、これらが同一である場合には、エントリ0の番号である“0”を出力する。これらが同一ではない場合には、比較器52_0は、同一ではないことを示す番号(ただし、0~n以外の番号)を出力する、あるいは何も出力しない。同様に、比較器52_nは、タイプの値と設定値Xnとを比較して、これらが同一である場合には、エントリnの番号である“n”を出力する。
【0030】
生成器54は、各比較器52_0~52_nの出力結果に基づいて、0~nのいずれか1つの番号をDMA実行番号として出力する。例えば、タイプの値(例えば、0)とエントリ9に対応する設定値X9の値(例えば、0)とが同一である場合、生成器54は、設定値X9に対応するエントリの番号(すなわち、9)をDMA実行番号として生成する。
【0031】
上記のように、通信装置12は、複数のエントリ0~nにそれぞれ対応する複数の設定値X0~Xnと、受信フレームに含まれる規定情報が示す値(例えば、タイプの値)とを比較することにより、複数の設定値X0~Xnの中から規定情報に対応する設定値(例えば、タイプの値と同一の設定値)を判定し、当該設定値に対応するエントリの番号(例えば、DMA実行番号)を起動信号とともにDMAC13へ送信する。
【0032】
図2の例では、規定情報の値としてタイプの値を適用する構成について説明したが当該構成に限られない。例えば、規定情報の値として、宛先MACアドレス、送信元MACアドレス、タイプ等のヘッダに含まれるフィールド値の他、産業用ネットワークに用意されているペイロード中のサブヘッダ等のフィールド値を適用してもよく、フィールド位置を制限する必要はない。
【0033】
なお、受信フレームの順番がシステム構成等から固定されている場合には、通信装置12はDMA実行番号をDMAC13へ通知しなくてもよい。典型的には、受信フレームの順番が固定されていない場合、および毎周期同じフレームを受信するとは限らない場合等に、通信装置12は、DMA実行番号をDMAC13に通知する。
【0034】
再び、
図1を参照して、DMAC13は、プロセッサ10を介さずに共有メモリ11とキャッシュメモリ101との間で直接データ転送を行なうDMA転送処理(以下、単に「転送処理」とも称する。)を実行する。DMAC13は、通信装置12から起動信号およびDMA実行番号を受信すると、ディスクリプタに含まれる複数のエントリの中から受信フレームに対応するエントリを選択し、選択されたエントリに含まれるDMA設定情報に基づいて、受信フレームを共有メモリ11からキャッシュメモリ101へ転送する。
【0035】
図3は、DMA設定情報の選択方式の一例を説明するための図である。
図3を参照して、DMAC13は、DMA設定情報の選択機能として、ディスクリプタ60と、選択器61とを含む。
【0036】
ディスクリプタ60は、複数のエントリ0~nを含む。選択器61は、複数のエントリ0~nの番号と、通信装置12から受信したDMA実行番号とを比較して、DMA実行番号と同一の番号のエントリを選択し、当該エントリのDMA設定情報を出力する。
【0037】
このように、DMAC13は、DMA実行番号に対応するエントリの番号に基づいて、複数のエントリの中から所望のエントリを選択する。具体的には、DMAC13は、複数のエントリのうち、DMA実行番号と同一の番号を有するエントリを、所望のエントリとして選択する。続いて、DMAC13は、選択されたエントリに含まれるDMA設定情報に基づいて、受信フレームを共有メモリ11からキャッシュメモリ101へ転送する。
【0038】
ディスクリプタ60の各エントリ0~nは、DMA設定情報として、転送元アドレス、転送先アドレス、転送データのサイズ情報(例えば、転送データ量)と、ウェイトフラグと、エンドフラグとを含む。
【0039】
転送元アドレスは、DMAC13がデータを転送する際の転送元のアドレスである。転送先アドレスは、DMAC13が転送する際のデータの転送先のアドレスである。例えば、転送元として共有メモリ11、転送先としてキャッシュメモリ101が設定されている場合、DMAC13は、転送元アドレス、転送先アドレスおよび転送データ量に従って、受信フレームを共有メモリ11からキャッシュメモリ101に転送する。
【0040】
ウェイトフラグは、DMAC13がエントリのDMA設定情報(例えば、転送元アドレス、転送先アドレスおよび転送データ量)に基づく転送処理を完了した後に、他のエントリのDMA設定情報に基づく転送処理を実行するか否かを示す情報である。
【0041】
DMAC13は、例えば、選択したエントリkのウェイトフラグが0である場合、エントリkのDMA設定情報に基づく第1転送処理の完了後、他のエントリのDMA設定情報に基づく第2転送処理を実行する。一方、DMAC13は、エントリkのウェイトフラグが1である場合、第1転送処理の完了後にDMA転送処理の完了を示す転送完了情報を通信装置12に送信する。この場合、DMAC13は、第2転送処理を実行せずに新たな起動信号を通信装置12から受信するまで待機する。
【0042】
エンドフラグは、エントリが最終エントリであるか否かを示す。例えば、エンドフラグが0である場合には当該エンドフラグを有するエントリが最終エントリではないことを示し、エンドフラグが1である場合には当該エンドフラグを有するエントリが最終エントリであることを示す。
【0043】
上記において、DMA実行番号が通知されない場合、DMAC13は、例えば、ディスクリプタの先頭エントリに含まれるDMA設定情報に基づく転送処理を実行してもよい。
【0044】
また、各エントリをメモリで実装する構成であってもよい。この場合、DMAC13は、DMA実行番号をアドレスとしてメモリにリードアクセスを行ない、リードデータとしてエントリに含まれるDMA設定情報を取得してもよい。
【0045】
再び、
図1を参照して、DMAC13は、ディスクリプタ60を有する設定回路を複数チャンネル(以下、「CH」と称する。)保有していてもよい。
図1の例のように、通信装置12が2つの接続ポート121,122を有する場合、DMAC13が複数の設定回路(すなわち、複数のディスクリプタ60)を有することにより、同一タイプのフレームを受信した場合においても、各接続ポートに応じて異なるDMA転送に関する設定が可能となる。また、DMAC13は、2つの接続ポートからそれぞれ受信したフレームに対するDMA転送処理を並列に実行することができる。
【0046】
さらに、同一の接続ポートを利用してフレームを送受信する場合であっても、通信周期の種類(例えば、番号)に応じて送受信するフレームが異なる場合には、通信周期の番号の数だけ設定回路を保有することにより、通信周期ごとに異なるDMA設定情報を用いることができる。
【0047】
通信装置12は、DMAC13の起動回数(すなわち、起動信号を送信した回数)だけ、DMAC13からDMA転送処理の転送完了情報を受信する。通常、産業用ネットワークから受信フレームを受信するデータレートと、DMA転送処理のデータレートには差異があることから、DMAC13の起動回数および転送完了情報の受信回数の管理にはキュー等が用いられる。
【0048】
通信装置12は、通信周期T1が終了して通信周期T2へ切り替わり、かつ、通信周期T1において受信した複数の受信フレームについての転送完了情報をDMAC13から受信した場合、通信周期T1における各受信フレームの転送処理の完了を示す周期完了情報をプロセッサ10に送信する。
【0049】
周期完了情報が送信される時点で、共有メモリ11からキャッシュメモリ101への受信フレームの転送処理が完了している。そのため、プロセッサ10は、通信装置12からの周期完了情報を受信した時点から、キャッシュメモリ101に格納された受信フレームを用いた演算を実行することができ、通信周期の多くの時間を当該演算に活用することができる。
【0050】
<データ転送方式>
本実施の形態に従うデータ転送方式について説明する。まず、本実施の形態の効果の理解を容易にするため、従来のデータ転送方式について説明する。
【0051】
図4は、従来のデータ転送方式の一例を説明するための図である。
図4を参照して、通信装置には2つの接続ポートP1,P2が設けられており、通信装置は、各接続ポートP1,P2を用いてフレームを受信する。
【0052】
通信周期T1において、通信装置は、接続ポートP1を介してフレーム1_1,1_2,・・・,1_Nを受信し、接続ポートP2を介してフレーム2_1,2_2,・・・,2_Mを受信する。通信装置は、受信した各フレーム1_1~1_Nおよびフレーム2_1~2_Mを共有メモリに格納する。
【0053】
通信周期T2において、通信装置は、同様に、各フレーム1_1~1_Nおよびフレーム2_1~2_Mを受信し、これらを共有メモリに格納する。プロセッサは、通信周期T1において受信された各フレーム1_1~1_Nおよび各フレーム2_1~2_Mを共有メモリからキャッシュメモリに転送する。プロセッサは、当該転送が終了した後、受信された各フレームを用いた演算処理および他の処理を実行する。
【0054】
このように、従来のデータ転送方式では、通信周期T1で受信したフレームは、通信周期T1から通信周期T2に切り替わった後に、プロセッサによって共有メモリからキャッシュメモリへ転送される。したがって、通信周期T2において、プロセッサは、各フレームを用いた演算等の処理を行なうための時間を十分に確保することができない。通信周期T3においても同様である。
【0055】
図5は、本実施の形態に従うデータ転送方式の一例を説明するための図である。
図5を参照して、通信装置12は、接続ポートP1,P2(例えば、
図1のポート121,122等)を用いてフレームを受信する。
図5の例では、各フレーム1_1~1_Nおよび各フレーム2_1~2_MのDMA設定情報のウェイトフラグは“1”であるとする。
【0056】
各通信周期T1~T3において、通信装置12が、接続ポートP1を介してフレーム1_1~1_Nを受信し、接続ポートP2を介して各フレーム2_1~2_Mを受信し、これらの各フレームを共有メモリ11に格納する点は
図4の例と同様である。
【0057】
本実施の形態に従う通信装置12は、各通信周期T1~T3において、フレームを受信する毎に当該フレームを共有メモリ11に格納するとともに起動信号をDMAC13に送信する。
図5の例では、DMAC13は、ディスクリプタ60を有する設定回路を2CH(すなわち、CH1,CH2)保有している。例えば、CH1用のディスクリプタ60は接続ポートP1と対応付けられ、CH2用のディスクリプタ60は接続ポートP2と対応付けられている。そのため、CH1用のディスクリプタ60には、各フレーム1_1~1_NをDMA転送するためのDMA設定情報が格納され、CH2用のディスクリプタ60には、各フレーム2_1~2_MをDMA転送するためのDMA設定情報が格納される。
【0058】
通信装置12は、フレーム1_1を共有メモリ11へ格納後、フレーム1_1のタイプに基づいてDMA実行番号を選択し、DMA実行番号とCH1用のディスクリプタ60を起動するための起動信号とをDMAC13に送信する。DMAC13は、CH1用のディスクリプタ60の複数のエントリからDMA実行番号に対応するエントリを選択し、当該選択されたエントリのDMA設定情報に従って、フレーム1_1を共有メモリ11からキャッシュメモリ101に転送する。DMAC13は、時刻t2にフレーム1_1ついての転送完了情報を通信装置12に送信する。
【0059】
各フレーム1_2~1_Nについても、通信装置12およびDMAC13によって同様の処理が実行される。なお、DMAC13は、時刻t4,t5にそれぞれフレーム1_2,1_Nについての転送完了情報を通信装置12に送信する。
【0060】
また、通信装置12は、フレーム2_1を共有メモリ11へ格納後、フレーム2_1のタイプに基づくDMA実行番号と、CH2用のディスクリプタ60を起動するための起動信号とをDMAC13に送信する。DMAC13は、CH2用のディスクリプタ60の複数のエントリからDMA実行番号に対応するエントリを選択し、当該選択されたエントリのDMA設定情報に従って、フレーム2_1を共有メモリ11からキャッシュメモリ101に転送する。DMAC13は、時刻t1にフレーム2_1ついての転送完了情報を通信装置12に送信する。
【0061】
各フレーム2_2~2_Mについても、通信装置12およびDMAC13によって同様の処理が実行される。なお、DMAC13は、時刻t3,t6にそれぞれフレーム2_2,2_Mについての転送完了情報を通信装置12に送信する。
【0062】
通信装置12は、DMAC13からすべてのフレーム1_1~1_N,2_1~2_Mについての転送完了情報を受信し、かつ、通信周期T1が終了して通信周期T2に切り替わったと判断した場合、通信周期T1における転送処理の完了を示す周期完了情報をプロセッサ10に送信する。例えば、通信装置12は、起動信号の送信回数と同一の回数だけ転送完了情報を受信した場合にすべての転送完了情報を受信したと判断する。
図5の例の場合、時刻t6に、通信装置12は、すべての転送完了情報を受信したと判断する。
【0063】
プロセッサ10が周期完了情報を受信した時点で、共有メモリ11からキャッシュメモリ101への各フレーム1_1~1_N,2_1~2_Mの転送は完了している。そのため、プロセッサ10は、周期完了情報を受信した直後(例えば、通信周期T2の初期段階)から各フレームを用いた演算処理および他の処理を実行できる。これにより、プロセッサ10は、多くの時間を当該演算処理等に活用できる。
【0064】
したがって、本実施の形態によると、同じ通信周期において、従来例よりも多くの制御対象機器20を制御することができる。また、制御対象機器20の数に差異がない場合には、本実施の形態の方が従来例よりも通信周期をより短くすることができる。
【0065】
さらに、受信フレームを受信した通信周期から、受信フレームに基づいて送信フレームを変更するようなフィードバック制御を行なう場合には、受信から送信までの制御周期を短縮することができ、フィードバック制御の応答性を高めることができる。
【0066】
また、従来例の場合、通信周期の時間は、“フレームを通信する時間”、あるいは“次の通信周期で実施するフレームの転送時間と演算等の処理時間との合計時間”のいずれか長い方により規定される。一方、本実施の形態の場合、フレームの通信およびフレーム転送が並行して実施される。そのため、通信周期の時間は、概ね“フレームを通信する時間”あるいは“演算等の処理時間”のいずれか長い方により規定される。そのため、従来例において、上記合計時間の方がフレームを通信する時間よりも長い場合、本実施の形態を適用することにより、通信周期を短くすることができる。
【0067】
また、通信装置12は、複数の接続ポートPの番号(例えば、“1”,“2”)に基づいて、複数のディスクリプタ60のうちの対応するディスクリプタ60を起動するための起動信号をDMAC13に送信する。
図5の例では、通信装置12は、接続ポートP1を介して受信したフレーム(例えば、フレーム1_N)のタイプに基づくDMA実行番号と、CH1用のディスクリプタ60を起動するための起動信号とをDMAC13に送信する。通信装置12は、接続ポートP2を介して受信したフレーム(例えば、フレーム2_N)のタイプに基づくDMA実行番号と、CH2用のディスクリプタ60を起動するための起動信号とをDMAC13に送信する。これにより、DMAC13は、複数の接続ポートP1,P2を介して受信されたそれぞれのフレームに対するDMA転送処理を並列に実行できる。
【0068】
図6は、本実施の形態に従うデータ転送方式の他の例を説明するための図である。
図6を参照して、通信周期T1において、通信装置12は、接続ポートP1を介してフレーム2_1,2_2を受信し、接続ポートP2を介してフレーム2_5,2_6を受信する。通信装置12は、接続ポートP1を介して受信したフレーム2_1,2_2のタイプに基づくDMA実行番号と、CH1用のディスクリプタ60を起動するための起動信号をDMAC13に送信する。また、通信装置12は、接続ポートP2を介して受信したフレーム2_5,2_6のタイプに基づくDMA実行番号と、CH2用のディスクリプタ60を起動するための起動信号をDMAC13に送信する。DMAC13は、CH1用のディスクリプタ60のDMA設定情報に基づいて、フレーム2_1,2_2の転送処理を実行し、CH2用のディスクリプタ60のDMA設定情報に基づいて、フレーム2_5,2_6の転送処理を実行する。
【0069】
また、通信周期T2において、通信装置12は、接続ポートP1を介してフレーム2_3,2_4を受信し、接続ポートP2を介してフレーム2_5,2_6を受信する。通信装置12は、接続ポートP1を介して受信したフレーム2_3,2_4のタイプに基づくDMA実行番号と、CH3用のディスクリプタ60を起動するための起動信号をDMAC13に送信する。また、通信装置12は、接続ポートP2を介して受信したフレーム2_5,2_6のタイプに基づくDMA実行番号と、CH2用のディスクリプタ60を起動するための起動信号をDMAC13に送信する。DMAC13は、CH3用のディスクリプタ60のDMA設定情報に基づいて、フレーム2_3,2_4の転送処理を実行し、CH2用のディスクリプタ60のDMA設定情報に基づいて、フレーム2_5,2_6の転送処理を実行する。
【0070】
このように、通信装置12は、接続ポートPの番号(例えば、“1”または“2”)および通信周期Tの番号(例えば、“1”または“2”)に基づいて、複数のディスクリプタ60のうちの対応するディスクリプタ60を起動するための起動信号をDMAC12に送信する。例えば、通信周期T1において接続ポートP1を介して受信されたフレーム2_1の転送処理のために、通信装置12は、CH1用のディスクリプタ60を起動するための起動信号をDMAC12に送信する。また、通信周期T2において接続ポートP1を介して受信されたフレーム2_3の転送処理のために、通信装置12は、CH3用のディスクリプタ60を起動するための起動信号をDMAC12に送信する。
【0071】
フレーム2-1~2_4は同一の接続ポートP1を介して受信されている。例えば、フレーム2_1およびフレーム2_3に対応するDMA実行番号が同一であり、フレーム2_2およびフレーム2_4に対応するDMA実行番号が同一であるような場合であっても、
図6の例のように、DMAC13に複数のCHを設け、通信装置12が通信周期の番号に応じて起動するCHを変更することにより、それぞれのフレームに対応したDMA転送を実行することができる。なお、接続ポートPが1つのみである場合、通信装置12は、通信周期Tの番号のみに基づいて、対応するディスクリプタ60を起動するための起動信号をDMAC12に送信してもよい。
【0072】
以上より、通信装置12は、接続ポートPの番号および通信周期Tの番号の少なくとも一方に基づいて、対応するディスクリプタ60を起動するための起動信号をDMAC12に送信するように構成される。
【0073】
<フローチャート>
図7は、DMACの処理手順の一例を示すフローチャートである。
図7を参照して、DMAC13は、起動信号(およびDMA実行番号)を通信装置12から受信したか否かを判断する(ステップS10)。DMAC13は、これらを受信していない場合(ステップS10においてNO)、ステップS10の処理を繰り返す。
【0074】
DMAC13は、これらを受信した場合(ステップS10においてYES)、DMA実行番号で指定されたエントリのDMA設定情報を取得する(ステップS12)。続いて、DMAC13は、当該DMA設定情報に含まれる転送元アドレス、転送先アドレス、転送データのサイズ情報(以下、単に「転送データサイズ」とも称する。)に従って、共有メモリ11からキャッシュメモリ101へ受信フレームを転送する(ステップS14)。
【0075】
DMAC13は、当該DMA設定情報のウェイトフラグが有効(すなわち、ウェイトフラグが“1”)であるか否かを判断する(ステップS16)。ウェイトフラグが有効である場合(ステップS16においてYES)、DMAC13はステップS10に戻る。このとき、DMAC13は、受信フレームの転送完了情報を通信装置12へ送信する。
【0076】
ウェイトフラグが無効(すなわち、ウェイトフラグが“0”)である場合(ステップS16においてNO)、DMAC13はエンドフラグが有効(すなわち、エンドフラグが“1”)であるか否かを判断する(ステップS18)。エンドフラグが有効である場合(ステップS18においてYES)、DMAC13は、受信フレームの転送完了情報を通信装置12へ送信し、処理を終了する。
【0077】
エンドフラグが無効(すなわち、エンドフラグが“0”)である場合(ステップS18においてNO)、DMAC13は、ステップS12において指定されたエントリの番号の次の番号のエントリのDMA設定情報を取得して(ステップS20)、ステップS14の処理を実行する。具体的には、DMAC13は、次の番号のエントリのDMA設定情報に含まれる転送元アドレス、転送先アドレス、転送データサイズに従って、共有メモリ11からキャッシュメモリ101へ受信フレームを転送する。
【0078】
上記フローチャートによると、ウェイトフラグが有効である場合には、DMAC13は、受信フレームの転送処理が完了した後、起動信号が送信されるまで待機する。一方、ウェイトフラグが無効であって、かつ、エンドフラグが無効である場合には、DMAC13は、複数のエントリのうち、今回のエントリの番号の次の番号を有するエントリを選択し、当該選択したエントリに含まれるDMA設定情報に基づいて、受信フレームを共有メモリ11からキャッシュメモリ101へ転送する。これは、受信フレームのサイズが大きく、1つのエントリのDMA設定情報に基づく転送処理では転送しきれないような場合に適用される転送方式である。
【0079】
本実施の形態によると、1つの受信フレームと、ディスクリプタ60の1つのエントリとを関連付けることができる。例えば、各エントリのDMA設定情報のウェイトフラグを“1”に設定することで、フレームを受信する度に、DMA転送の実行および完了を管理できる。
【0080】
なお、送信フレームをキャッシュメモリ101から共有メモリ11へDMA転送する場合には、プロセッサ10は、全ての送信フレームを生成した後にDMAC13を起動する。そのため、各送信フレームに対応するエントリのDMA設定情報を作成し、最後の送信フレームに対応するエントリのDMA設定情報のエンドフラグを1に設定し、それ以外のエントリに対応するDMA設定情報のウェイトフラグおよびエンドフラグを“0”に設定することにより、複数のエントリを用いた連続したDMA転送が可能となる。
【0081】
また、DMAC13に受信フレーム用、送信フレーム用のディスクリプタ60を設けて、ディスクリプタ60の各エントリの初期設定を実施しておけば、各エントリの設定をプロセッサ10が動的に変更する必要がない。
【0082】
<変形例>
変形例に従う通信装置12は、受信フレームに含まれる規定サイズ(例えば、8Byte、64Byte等)のデータを受信する毎に、当該データを共有メモリ11に格納した後、起動信号をDMAC13へ送信する。DMAC13は、当該起動信号を受信する毎に、受信フレームに対応するエントリに含まれるDMA設定情報に基づいて、当該データを共有メモリ12からキャッシュメモリ101へ転送する。以下、具体的な処理内容について説明する。
【0083】
図8は、本実施の形態の変形例に従うデータ転送方式を説明するための図である。
図8におけるデータ転送方式において、
図5で説明したデータ転送方式と同様の部分についてはその詳細な説明は繰り返さない。
【0084】
図8を参照して、通信装置12は、通信周期T1においてフレーム1_1における規定サイズZのデータD1を受信し、データD1を共有メモリ11に格納する。通信装置12は、フレーム1_1のタイプに基づくDMA実行番号mと、CH1用のディスクリプタ60を起動するための起動信号(以下、単に「CH1起動信号」とも称する。)とをDMAC13に送信する。以下、説明の容易化のため、フレーム1_1のサイズが“24Byte”、規定サイズZが“8Byte”であるとする。
【0085】
DMAC13は、通信装置12からDMA実行番号mおよびCH1起動信号を受信し、CH1用のディスクリプタ60の複数のエントリからDMA実行番号mに対応するエントリを選択し、当該選択されたエントリのDMA設定情報に従って共有メモリ11からキャッシュメモリ101にデータD1を転送する。DMAC13は、データD1の転送後、DMA設定情報に基づく転送データサイズYから規定サイズZを減算した減算後の残転送データサイズ(ここでは、“Y-Z”)を保持する。転送データサイズYは、フレーム1_1のサイズ以下に設定されている。ここでは、説明の容易化のため、転送データサイズYは、フレーム1_1のサイズと同一の“24Byte”とする。この場合、Y-Z=16Byteである。
【0086】
通信装置12は、フレーム1_1の次の規定サイズZのデータD2を受信して、データD2を共有メモリ11に格納し、DMA実行番号mとCH1起動信号とをDMAC13に送信する。
【0087】
DMAC13は、通信装置12からDMA実行番号mおよびCH1起動信号を受信し、DMA実行番号mに対応するエントリのDMA設定情報に従って共有メモリ11からキャッシュメモリ101にデータD2を転送する。この時点では、残転送データサイズが0ではないため、DMAC13は、DMA設定情報に含まれる転送元アドレスGおよび転送先アドレスH自体ではなく、アドレス(G+Z)およびアドレス(H+Z)に従ってデータD2を転送する。DMAC13は、データD2の転送後、現在の残転送データサイズから、規定サイズZを減算して更新した残転送データサイズ(ここでは、“Y-2×Z”=8Byte)を保持する。
【0088】
通信装置12は、フレーム1_1の次の規定サイズZのデータD3を受信して、データD3を共有メモリ11に格納し、DMA実行番号mとCH1起動信号とをDMAC13に送信する。
【0089】
また、通信装置12は、8Byteの各データD1~D3の受信に基づいて、24Byteのフレーム1_1の全データの受信を完了したと判断する。この場合、通信装置12は、FCSを用いたエラーチェックの結果に基づいて、フレーム1_1が正常であるか否かを判断する。通信装置12は、フレーム1_1が正常であると判断した場合には、フレーム1_1の受信が完了したことを示す受信完了信号をDMAC12に送信する。一方、通信装置12は、フレーム1_1が異常であると判断した場合には、受信したフレーム1_1が異常であることを示す受信異常信号をDMAC13に送信する。以下の説明では、DMA実行番号mおよびCH1起動信号の送信タイミングTs1と、受信完了信号または受信異常信号の送信タイミングTs2とは同一であるとする。なお、送信タイミングTs1が、送信タイミングTs2よりも早いタイミングであってもよい。
【0090】
DMAC13は、通信装置12からDMA実行番号mと、CH1起動信号と、受信完了信号または受信異常信号とを受信する。DMAC13は、受信完了信号を受信している場合には、DMA実行番号mに対応するエントリのDMA設定情報に従って共有メモリ11からキャッシュメモリ101にデータD3を転送する。このとき、DMAC13は、現在の残転送データサイズ(すなわち、“Y-2×Z”)から規定サイズZを減算して、残転送データサイズが0であると判断する。
【0091】
そして、DMAC13は、受信完了信号を受信し、かつ残転送データサイズが0である場合、転送データサイズYで規定されたフレーム1_1の転送処理を完了し、時刻p2にフレーム1_1についての転送完了情報を通信装置12に送信する。なお、DMAC13は、受信異常信号を受信している場合、フレーム1_1の転送処理を中断し、次の起動信号を受信するまで待機する。
【0092】
各フレーム1_2~1_Nについても、通信装置12およびDMAC13によって上記と同様の転送処理が実行される。DMAC13は、時刻p4,p5にそれぞれフレーム1_2,1_Nについての転送完了情報を通信装置12に送信する。
【0093】
さらに、接続ポートP2を介して受信される各フレーム2_2~2_Nについても、通信装置12およびDMAC13によって上記と同様の転送処理が実行される。DMAC13は、時刻p1,p3,p6にそれぞれフレーム2_1,2_2,2_Nについての転送完了情報を通信装置12に送信する。また、時刻p6に、通信装置12は、すべての転送完了情報を受信したと判断する。
【0094】
ここで、フレームのサイズおよび転送データサイズYが同一(すなわち、24Byte)ではなく、フレームのサイズが、転送データサイズYよりも大きい場合について説明する。例えば、フレームのサイズが“24Byte”、転送データサイズYが“20Byte”、規定サイズZが“8Byte”であるとする。この場合、データD1,D2の転送後に、残転送データサイズは“4Byte”となる。したがって、DMAC13は、データD3のサイズ“8Byte”のうちの残転送データサイズ“4Byte”分のデータを、共有メモリ11からキャッシュメモリ101に転送する。
【0095】
上述した
図8に示す変形例に従うデータ転送方式によると、フレームに含まれる規定サイズのデータの受信とほぼ同一のタイミングで、当該データが共有メモリ11からキャッシュメモリ101に転送される。そのため、例えば、
図8のフレーム1_1の転送完了タイミング(すなわち、転送完了情報の送信タイミング)である時刻p2は、
図5の当該転送完了タイミングである時刻t2よりも早い。他のフレームについても同様である。そして、
図8において通信装置12がすべての転送完了情報を受信するタイミングである時刻p6も、
図5の当該タイミングである時刻t6よりも早い。したがって、プロセッサ10は、より多くの時間を各フレームを用いた演算処理等に活用できる。
【0096】
<利点>
本実施の形態によると、プロセッサ10がDMAC13を起動する必要がないため、プロセッサ10は、他処理のプログラムの実行停止、必要な情報の退避、DMACの起動プログラムの実行、退避した情報の復元、他処理のプラグラム再開等のプロセスの切り替えが不要となる。また、通信周期が切り替わった後の早い段階で、プロセッサ10は、キャッシュメモリ101に格納された受信フレームにアクセスできるため、受信フレームを用いた演算等の処理を行なうための時間を最大限確保することができる。
【0097】
その他の実施の形態.
上述の実施の形態として例示した構成は、本開示の構成の一例であり、別の公知の技術と組み合わせることも可能であるし、本開示の要旨を逸脱しない範囲で、一部を省略する等、変更して構成することも可能である。また、上述した実施の形態において、他の実施の形態で説明した処理および構成を適宜採用して実施する場合であってもよい。
【0098】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本開示の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【0099】
以下、本開示の諸態様を付記としてまとめて記載する。
(付記1)
制御対象機器を制御するための制御装置であって、キャッシュメモリを有するプロセッサと、ディスクリプタを有するDMAコントローラと、共有メモリと、接続ポートを介して前記制御対象機器と通信する通信装置とを備え、前記通信装置は、前記接続ポートを介して受信した受信フレームを前記共有メモリに格納した後、起動信号を前記DMAコントローラへ送信することにより前記DMAコントローラを起動し、前記DMAコントローラは、前記ディスクリプタに含まれる複数のエントリの中から前記受信フレームに対応する第1エントリを選択し、選択された前記第1エントリに含まれるDMA転送に関する設定情報に基づいて、前記受信フレームを前記共有メモリから前記キャッシュメモリへ転送する、制御装置。
【0100】
(付記2)
前記通信装置は、前記複数のエントリにそれぞれ対応する複数の設定値と、前記受信フレームに含まれる規定情報が示す値とを比較することにより、前記複数の設定値の中から前記規定情報に対応する1の設定値を判定し、前記1の設定値に対応するエントリの番号を前記起動信号とともに前記DMAコントローラへ送信し、前記DMAコントローラは、前記1の設定値に対応するエントリの番号に基づいて、前記複数のエントリの中から前記第1エントリを選択する、付記1に記載の制御装置。
【0101】
(付記3)
前記1の設定値は、前記規定情報が示す値と同一の値であり、前記DMAコントローラは、前記複数のエントリのうち、前記1の設定値に対応するエントリの番号と同一の番号を有するエントリを、前記第1エントリとして選択する、付記2に記載の制御装置。
【0102】
(付記4)
前記設定情報は、転送元アドレスと、転送先アドレスと、転送データのサイズとを含む、付記1~付記3のいずれかに記載の制御装置。
【0103】
(付記5)
前記規定情報は、前記受信フレームに含まれる送信元アドレスまたはタイプである、付記1~付記4のいずれかに記載の制御装置。
【0104】
(付記6)
前記第1エントリに含まれる前記設定情報は、前記受信フレームの前記共有メモリから前記キャッシュメモリへの転送処理が完了した後に、他のエントリに含まれる前記設定情報に基づく前記転送処理が実行されるか否かを示す第1フラグをさらに含み、前記他のエントリに含まれる前記設定情報に基づく前記転送処理が実行されないことを前記第1フラグが示している場合、前記DMAコントローラは、前記第1エントリに含まれる前記設定情報に基づく前記転送処理が完了した後に当該完了を示す第1完了情報を前記通信装置へ送信する、付記1~付記5のいずれかに記載の制御装置。
【0105】
(付記7)
前記通信装置は、第1通信周期において前記受信フレームを受信する毎に前記受信フレームを前記共有メモリに格納するとともに、前記起動信号を前記DMAコントローラへ送信し、前記第1通信周期が終了して第2通信周期へ切り替わり、かつ、前記第1通信周期において受信した各前記受信フレームについての前記第1完了情報を前記DMAコントローラから受信した場合、前記第1通信周期における前記転送処理の完了を示す第2完了情報を前記プロセッサに送信する、付記6に記載の制御装置。
【0106】
(付記8)
前記第1エントリに含まれる前記設定情報は、前記第1エントリが最終エントリであるか否かを示す第2フラグをさらに含み、前記他のエントリに含まれる前記設定情報に基づく前記転送処理が実行されることを前記第1フラグが示しており、かつ、前記第1エントリが前記最終エントリではないことを前記第2フラグが示している場合、前記DMAコントローラは、前記複数のエントリのうち、前記第1エントリの番号の次の番号を有する第2エントリを選択し、前記第2エントリに含まれる前記設定情報に基づいて、前記受信フレームを前記共有メモリから前記キャッシュメモリへ転送する、付記6または付記7に記載の制御装置。
【0107】
(付記9)
前記DMAコントローラは、複数の前記ディスクリプタを有し、前記通信装置は、前記接続ポートの番号および前記通信装置の通信周期の番号の少なくとも一方に基づいて、複数の前記ディスクリプタのうちの対応するディスクリプタを起動するための前記起動信号を前記DMAコントローラに送信する、付記1~付記3のいずれかに記載の制御装置。
【0108】
(付記10)
前記通信装置は、前記受信フレームに含まれる規定サイズのデータを受信する毎に、前記規定サイズのデータを前記共有メモリに格納した後、前記起動信号を前記DMAコントローラへ送信し、前記DMAコントローラは、前記起動信号を受信する毎に、前記受信フレームに対応する前記第1エントリに含まれる前記設定情報に基づいて、前記規定サイズのデータを前記共有メモリから前記キャッシュメモリへ転送する、付記1~付記3のいずれかに記載の制御装置。
【0109】
(付記11)
前記通信装置は、
前記受信フレームの全データを受信した場合に、前記受信フレームが正常であるか否かを判断し、前記受信フレームが正常であると判断した場合には、前記受信フレームの受信が完了したことを示す受信完了信号を前記DMAコントローラに送信し、前記受信フレームが異常であると判断した場合には、前記受信フレームの受信が異常であることを示す受信異常信号を前記DMAコントローラに送信する、付記10に記載の制御装置。
【0110】
(付記12)
前記DMAコントローラは、前記規定サイズのデータを前記共有メモリから前記キャッシュメモリへ転送した後、前記設定情報に基づく転送データのサイズから前記規定サイズを減算した減算後のサイズを保持し、前記受信完了信号を受信しており、かつ前記減算後のサイズが0である場合には、前記受信フレームの前記共有メモリから前記キャッシュメモリへの転送処理を完了し、前記受信異常信号を受信している場合には前記受信フレームの前記転送処理を中断する、付記11に記載の制御装置。
【符号の説明】
【0111】
10 プロセッサ、11 共有メモリ、12 通信装置、20 制御対象機器、31~35 フィールド、50 設定値格納部、52 比較器、54 生成器、60 ディスクリプタ、61 選択器、100 制御装置、101 キャッシュメモリ、121,122 接続ポート、1000 制御システム。