IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社東芝の特許一覧 ▶ 東芝電機サービス株式会社の特許一覧

<>
  • 特開-集積回路 図1
  • 特開-集積回路 図2
  • 特開-集積回路 図3
  • 特開-集積回路 図4
  • 特開-集積回路 図5
  • 特開-集積回路 図6
  • 特開-集積回路 図7
  • 特開-集積回路 図8
  • 特開-集積回路 図9
  • 特開-集積回路 図10
  • 特開-集積回路 図11
  • 特開-集積回路 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023049416
(43)【公開日】2023-04-10
(54)【発明の名称】集積回路
(51)【国際特許分類】
   G06F 13/28 20060101AFI20230403BHJP
【FI】
G06F13/28 310H
G06F13/28 310M
【審査請求】未請求
【請求項の数】3
【出願形態】OL
(21)【出願番号】P 2021159141
(22)【出願日】2021-09-29
(71)【出願人】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(71)【出願人】
【識別番号】598076591
【氏名又は名称】東芝インフラシステムズ株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】山田 裕太
(72)【発明者】
【氏名】本島 大地
【テーマコード(参考)】
5B061
【Fターム(参考)】
5B061DD08
(57)【要約】
【課題】非連続的に配置されたメモリエリアへのアクセスを効率的に実行する。
【解決手段】実施形態の集積回路は、データの読み出し対象として選択可能なメモリのブロック番号と第1の終了フラグを第1のテーブルに記憶する。また、集積回路は、データの書き込み対象として選択可能なブロック番号と第2の終了フラグを第2のテーブルに記憶する。集積回路は、読み出し開始要求と、第1のテーブルの読み出し開始行と、を取得した場合、メモリの複数のブロックのうち第1のテーブルにおける読み出し開始行から第1の終了フラグが設定された行までに記憶された番号のブロックからデータを読み出す。集積回路は、書き込み開始要求と、第2のテーブルの読み出し開始行と、メモリへの書き込み用データと、を取得した場合、第2のテーブルにおける読み出し開始行から第2の終了フラグが設定された行までに記憶された番号のブロックに書き込み用データを書き込む。
【選択図】図2
【特許請求の範囲】
【請求項1】
メモリの記憶エリアを規定のサイズごとに分割した複数のブロックのうちデータの読み出し対象として選択可能なブロックのブロック番号と前記読み出し対象として選択可能なブロックのうち読み出し順が最後となる最終ブロックを示す第1の終了フラグの登録を受け付けた場合に、前記読み出し対象として選択可能なブロックのブロック番号と前記第1の終了フラグとを関連付けてレジスタの第1のテーブルに記憶し、
前記複数のブロックのうちデータの書き込み対象として選択可能なブロックのブロック番号と前記書き込み対象として選択可能なブロックのうち書き込み順が最後となる最終ブロックを示す第2の終了フラグの登録を受け付けた場合に、前記書き込み対象として選択可能なブロックのブロック番号と前記第1の終了フラグとを関連付けて前記レジスタの第2のテーブルに記憶し、
前記メモリからデータを読み出す読み出し開始要求と、当該読み出し開始要求における前記第1のテーブルの読み出し開始行と、を取得した場合、前記メモリの前記複数のブロックのうち前記第1のテーブルにおける読み出し開始行から前記第1の終了フラグが設定された行までに記憶されたブロック番号に該当するブロックからデータを読み出し、
前記メモリに対する書き込み開始要求と、当該書き込み開始要求における前記第2のテーブルの読み出し開始行と、前記メモリへの書き込み用データと、を取得した場合、前記メモリの前記複数のブロックのうち前記第2のテーブルにおける読み出し開始行から前記第2の終了フラグが設定された行までに記憶されたブロック番号に該当するブロックに前記書き込み用データを書き込む、
集積回路。
【請求項2】
前記読み出し対象として選択可能なブロックのブロック番号と、前記第1の終了フラグと、各ブロック番号に対応する各ブロックの先頭から読み出し対象のデータが格納された読み出しエリアの終了アドレスまでのデータサイズの登録を受け付けた場合に、前記読み出し対象として選択可能なブロックのブロック番号と、前記第1の終了フラグと、各ブロック番号に対応する各ブロックの先頭から読み出し対象のデータが格納された読み出しエリアの終了アドレスまでのデータサイズを関連付けて前記第1のテーブルに記憶し、
前記複数のブロックのうちデータの書き込み対象として選択可能なブロックのブロック番号と、前記第2の終了フラグと、各ブロック番号に対応する各ブロックの先頭から書き込み範囲の終了アドレスまでのデータサイズを関連付けて前記第2のテーブルに記憶し、
前記読み出し開始要求と、前記読み出し開始要求における前記第1のテーブルの読み出し開始行と、を取得した場合、前記メモリの前記複数のブロックのうち、前記第1のテーブルにおける読み出し開始行から前記第1の終了フラグが設定された行までに記憶されたブロック番号に該当する各ブロックの先頭アドレスから前記読み出しエリアの終了アドレスまでの範囲に格納されたデータを読み出し、
前記書き込み開始要求と、前記書き込み開始要求における前記第2のテーブルの読み出し開始行と、前記メモリへの書き込み用データと、を取得した場合、前記メモリの前記複数のブロックのうち、前記第1のテーブルにおける読み出し開始行から前記第1の終了フラグが設定された行までに記憶されたブロック番号に該当する各ブロックの先頭アドレスから前記書き込み範囲の終了アドレスまでの範囲に前記書き込み用データを書き込む、
請求項1に記載の集積回路。
【請求項3】
前記第1のテーブルは、さらに、各ブロック番号に対応する各ブロックにおいて読み出し対象のデータが格納された読み出しエリアの先頭アドレスと、前記読み出しエリアのデータサイズを記憶するための領域を有し、
前記第2のテーブルは、さらに、各ブロック番号に対応する各ブロックにおいてデータが書き込みされる書き込みエリアの先頭アドレスと、当該先頭アドレスから前記書き込みエリアの終了までのデータサイズを記憶するための領域を有し、
前記読み出し対象として選択可能なブロックのブロック番号と、前記第1の終了フラグと、各ブロック番号に対応する各ブロックにおいて読み出し対象のデータが格納された読み出しエリアの先頭アドレスと、前記読み出しエリアのデータサイズの登録を受け付けた場合に、前記読み出し対象として選択可能なブロックのブロック番号と、前記第1の終了フラグと、前記読み出しエリアの先頭アドレスと、前記読み出しエリアのデータサイズとを関連付けて前記第1のテーブルに記憶し、
前記書き込み対象として選択可能なブロックのブロック番号と、前記第2の終了フラグと、各ブロック番号に対応する各ブロックにおいてデータが書き込みされる書き込みエリアの先頭アドレスと、前記書き込みエリアのデータサイズの登録を受け付けた場合に、前記書き込み対象として選択可能なブロックのブロック番号と、前記第2の終了フラグと、前記書き込みエリアの先頭アドレスと、前記書き込みエリアのデータサイズとを関連付けて前記第2のテーブルに記憶し、
前記読み出し開始要求と、当該読み出し開始要求における前記第1のテーブルの読み出し開始行とを取得した場合、前記メモリの前記複数のブロックのうち、前記第1のテーブルにおける読み出し開始行から前記第1の終了フラグが設定された行までに記憶されたブロック番号に該当する各ブロックにおける前記読み出しエリアに格納されたデータを読み出し、
前記書き込み開始要求と、当該書き込み開始要求における前記第2のテーブルの読み出し開始行と、前記メモリへの書き込み用データと、を取得した場合、前記メモリの前記複数のブロックのうち、前記第2のテーブルにおける読み出し開始行から前記第2の終了フラグが設定された行までに記憶されたブロック番号に該当するブロックにおける前記書き込みエリアに前記書き込み用データを書き込む、
請求項1に記載の集積回路。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、集積回路に関する。
【背景技術】
【0002】
従来、メモリアクセス手法としてPIO(Programmed Input/Output)とDMA(Direct Memory Access)の2つのプロトコルが知られている。PIOはCPU(Central Processing Unit)がコンピュータ内部の各デバイスとメモリとの間のデータ転送を管理する。これに対して、DMAではCPUを介さずに各デバイスとメモリとの間で直接データ転送を行うため、PIOより速い転送速度が実現できる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2008-165724号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来技術においては、DMAによりメモリアクセスをする場合、一度のアクセスでは連続的な領域に対するアクセスしか実行できず、非連続的に配置されたメモリエリアへのアクセスは複数回に分けて実行する必要があった。
【課題を解決するための手段】
【0005】
実施形態の集積回路は、メモリの記憶エリアを規定のサイズごとに分割した複数のブロックのうちデータの読み出し対象として選択可能なブロックのブロック番号と読み出し対象として選択可能なブロックのうち読み出し順が最後となる最終ブロックを示す第1の終了フラグの登録を受け付けた場合に、読み出し対象として選択可能なブロックのブロック番号と第1の終了フラグとを関連付けてレジスタの第1のテーブルに記憶する。また、集積回路は、複数のブロックのうちデータの書き込み対象として選択可能なブロックのブロック番号と書き込み対象として選択可能なブロックのうち書き込み順が最後となる最終ブロックを示す第2の終了フラグの登録を受け付けた場合に、書き込み対象として選択可能なブロックのブロック番号と第1の終了フラグとを関連付けてレジスタの第2のテーブルに記憶する。集積回路は、メモリからデータを読み出す読み出し開始要求と、当該読み出し開始要求における第1のテーブルの読み出し開始行と、を取得した場合、メモリの複数のブロックのうち第1のテーブルにおける読み出し開始行から第1の終了フラグが設定された行までに記憶されたブロック番号に該当するブロックからデータを読み出す。集積回路は、メモリに対する書き込み開始要求と、当該書き込み開始要求における第2のテーブルの読み出し開始行と、メモリへの書き込み用データと、を取得した場合、メモリの複数のブロックのうち第2のテーブルにおける読み出し開始行から第2の終了フラグが設定された行までに記憶されたブロック番号に該当するブロックに書き込み用データを書き込む。
【図面の簡単な説明】
【0006】
図1図1は、第1の実施形態に係る制御システムの全体構成の一例を示す図である。
図2図2は、第1の実施形態に係るPLCおよび伝送モジュールの構成の一例を示す図である。
図3図3は、第1の実施形態に係るDMA用テーブル設定APIによる読み出し用DMAテーブルの設定の一例を示す図である。
図4図4は、第1の実施形態に係るDMA用テーブル設定APIの処理の流れの一例を示すフローチャートである。
図5図5は、第1の実施形態に係るDMA読み出し実行APIの処理の流れの一例を示すフローチャートである。
図6図6は、第1の実施形態に係るFPGAのハードウェアロジックにより実行されるDMA読み出し処理の流れの一例を示すフローチャートである。
図7図7は、第1の実施形態に係るDMA書き込み実行APIの処理の流れの一例を示すフローチャートである。このフローチャートの処理は、例えば、規定の周期ごとに実行される。
図8図8は、第1の実施形態に係るFPGAのハードウェアロジックにより実行されるDMA書き込み処理の流れの一例を示すフローチャートである。
図9図9は、第2の実施形態に係るPLCおよび伝送モジュールの構成の一例を示す図である。
図10図10は、第1の実施形態に係る読み出し対象ブロックの特定手法の一例を示す図である。
図11図11は、第3の実施形態に係るPLCおよび伝送モジュールの構成の一例を示す図である。
図12図12は、第3の実施形態に係る読み出し対象ブロックの特定手法の一例を示す図である。
【発明を実施するための形態】
【0007】
(第1の実施形態)
図1は、第1の実施形態に係る制御システムSの全体構成の一例を示す図である。制御システムSは、例えば産業プラント(以下、単に「プラント」という)を制御するシステムである。図1に示すように、制御システムSは、PLC(Programmable Logic Controller)ステーション1a,1b、各種のセンサ6a,6b、およびHMI(Human Machine Interface)7等を備える。HMI7とPLCステーション1a,1bとは、制御ネットワーク5によって接続される。
【0008】
HMI7は、PLC2a,2bで実行される処理の状況等を、オペレータおよびエンジニアが監視するために用いられる装置である。
【0009】
PLCステーション1a,1bは、複数のモジュールが組み合わされて構成される。具体的には、PLCステーション1a,1bは、PLC2a,2b、I/O(Input/Output)伝送モジュール3a,3b、伝送モジュール4a,4bを備える。以下、個々のPLCステーション1a,1bを特に区別しない場合には、単にPLCステーション1という。
【0010】
PLC2a,2bは、ソフトウェアPLC24の機能により、プラントに設けられた各種の機器の動作を制御する装置である。以下、個々のPLC2a,2bを特に区別しない場合には、単にPLC2という。PLC2a,2bは、それぞれ、CPU(Central Processing Unit)20a,20bを備える。以下、個々のCPU20a,20bを特に区別しない場合には、単にCPU20という。
【0011】
I/O伝送モジュール3a,3bは、PLC2による制御の下、各種のセンサ6a,6b等との間でデータの入出力をする。以下、個々のI/O伝送モジュール3a,3bを特に区別しない場合には、単にI/O伝送モジュール3という。また、以下、個々のセンサ6a,6bを特に区別しない場合には、単にセンサ6という。また、I/O伝送モジュール3は、センサ6だけではなく、各種の制御機器との間でデータの入出力をしてもよい。I/O伝送モジュール3a,3bは、それぞれ、FPGA(field-programmable gate array)31a、31bを備える。以下、個々のI/O伝送モジュール3a,3bのFPGA31a、31bを特に区別しない場合には、単にFPGA31という。
【0012】
伝送モジュール4a,4bは、制御ネットワーク5を介したPLCステーション1a,1b間、およびPLCステーション1a,1bとHMI7との間でデータを伝送する。以下、個々の伝送モジュール4a,4bを特に区別しない場合には、単に伝送モジュール4という。伝送モジュール4a,4bは、それぞれ、FPGA41a、41bを備える。以下、個々の伝送モジュール4a,4bのFPGA41a、41bを特に区別しない場合には、単にFPGA41という。
【0013】
伝送モジュール4a,4bによりPLCステーション1a,1b間、およびPLCステーション1a,1bとHMI7との間で送受信されるデータは、伝送モジュール4内のメモリに保存され、PLC2a,2bから書き込みおよび読み出しされる。
【0014】
図2は、第1の実施形態に係るPLC2および伝送モジュール4の構成の一例を示す図である。
【0015】
PLC2と伝送モジュール4とは、例えばPCI(Peripheral Component Interconnect) Express(登録商標)等の規格に準拠したバス10により接続する。
【0016】
図2に示すように、PLC2は、CPU20と、記憶部25とを備える。
【0017】
記憶部25は、例えばROM(Read Only Memory)、RAM(Random Access Memory)、およびHDD(Hard Disk Drive)等の記憶装置である。記憶部25は、CPU20により実行される各種の処理に対応するプログラムを記憶する。
【0018】
本実施形態では、CPU20が記憶部25に記憶されたデバイスドライバ21、DMA(Direct Memory Access)用テーブル設定API(Application Programming Interface)231、DMA読み出し実行API232、DMA書き込み実行API233、およびソフトウェアPLC24による各種処理を実行する。DMA用テーブル設定API231、DMA読み出し実行API232、およびDMA書き込み実行API233を総称する場合、ドライバAPI23という。
【0019】
ソフトウェアPLC24は、センサ6から取得されたデータを用いてプラントに含まれる各種機器を制御する。ソフトウェアPLC24は、伝送モジュール4のメモリ42へのアクセスを要求するホストである。
【0020】
デバイスドライバ21は、伝送モジュール4とPLC2とのデータの送受信を仲介するプログラムである。CPU20がドライバAPI23を実行することにより、デバイスドライバ21を介して伝送モジュール4へのアクセスが実行される。
【0021】
DMA用テーブル設定API231は、伝送モジュール4のFPGA41内の読み出し用DMAテーブル421および書き込み用DMAテーブル422にデータを設定するAPIである。
【0022】
DMA読み出し実行API232は、伝送モジュール4のFPGA41に、伝送モジュール4内のメモリ42の決まったエリアからデータを読み出すことを要求するAPIである。本実施形態においては、メモリ42からのデータの読み出し、およびメモリ42へのデータの書き込みを総称する場合、メモリ42へのアクセスという。
【0023】
DMA書き込み実行API233は、伝送モジュール4のFPGA41に、伝送モジュール4内のメモリ42の決まったエリアにデータを書き込みすることを要求するAPIである。
【0024】
伝送モジュール4は、FPGA41と、メモリ42とを備える。
【0025】
メモリ42の記憶エリア(メモリエリア)は、規定のサイズごとに複数のブロックに分割される。図1では、一例として、メモリ42の記憶エリアは、ブロック1~ブロックZZを含む。各ブロックの規定のサイズおよび1つのメモリ42に含まれるブロックの数は、予め定められる。PLCステーション1a,1b間、およびPLCステーション1a,1bとHMI7との間で伝送されるデータは、メモリエリア内の決まったブロックに保存される。
【0026】
FPGA41は、内部に記憶領域であるレジスタ410、およびバッファメモリ430を備える。FPGA41は、本実施形態における集積回路の一例である。FPGA41には、ハードウェア記述言語(ハードウェアロジック)により、論理処理機能を実装可能である。
【0027】
レジスタ410には、テーブル読み出し開始行411、サイズ412、読み出し用DMAテーブル421、書き込み用DMAテーブル422、ブロックマップ423、およびDMA完了ステータス424を記憶する領域が設けられる。
【0028】
テーブル読み出し開始行411は、読み出し用DMAテーブル421および書き込み用DMAテーブル422の読み出し開始行を示す。なお、本実施形態においては、読み出し用DMAテーブル421および書き込み用DMAテーブル422の読み出し開始位置を示す情報としてテーブル読み出し開始行411を例示するが、読み出し用DMAテーブル421および書き込み用DMAテーブル422の読み出し開始位置を示す情報であれば、情報の形式は特に限定されない。
【0029】
サイズ412は、読み出しまたは書き込みされるデータのサイズである。
【0030】
読み出し用DMAテーブル421は、メモリ42のブロックのうち、PLC2のDMA読み出し実行API232により読み出しが要求されるブロックのブロック番号が保存されるテーブルである。読み出し用DMAテーブル421は、本実施形態における第1のテーブルの一例である。
【0031】
書き込み用DMAテーブル422は、メモリ42のブロックのうち、PLC2のDMA書き込み実行API233により書き込みが要求されるブロックのブロック番号が保存されるテーブルである。書き込み用DMAテーブル422は、本実施形態における第2のテーブルの一例である。
【0032】
バッファメモリ430は、メモリ42のデータの読み出しおよび書き込みの際に一時的にデータが保存される記憶領域である。
【0033】
ブロックマップ423は、メモリの記憶エリアを分割する各ブロックのブロック番号と、各ブロック番号に対応する記憶エリアのアドレスとが登録されたテーブルである。各ブロックのブロック番号と記憶エリアのアドレスとの対応付けは、伝送モジュール4の製造時に定めら、ブロックマップ423に記憶される。
【0034】
DMA完了ステータス424は、読み出し用DMAおよび書き込み用DMAの完了の有無を表すステータス情報である。例えば、FPGA41のハードウェアロジックは、DMA読み出し実行API232によるDMA読み出し開始要求を受けて実行した読み出しの処理、またはDMA書き込み実行API233によるDMA書き込み開始要求を受けて実行した書き込みの処理が終了した場合に、処理の完了をDMA完了ステータス424に登録する。DMA完了ステータス424は、例えば、初期状態は“0”またはnullであり、処理が完了した場合にはフラグ“1”が設定される。
【0035】
図3は、第1の実施形態に係るDMA用テーブル設定API231による読み出し用DMAテーブル421の設定の一例を示す図である。DMA用テーブル設定API231は、項目として、「終了フラグ」と「ブロック番号」とを有する。DMA用テーブル設定API231の各レコードは、行コードにより特定可能である。なお、図3では、DMA用テーブル設定API231内の位置を示すために行コードを用いているが、DMA用テーブル設定API231内の位置を示す情報であれば、行コード以外の情報が用いられてもよい。
【0036】
伝送モジュール4の初期状態においては、読み出し用DMAテーブル421に値は登録されていない。FPGA41は、PLC2のDMA用テーブル設定API231による読み出し用DMAテーブル421の各項目への値の設定を受け付ける。具体的には、FPGA41は、DMA用テーブル設定API231による「終了フラグ」と「ブロック番号」との登録を受けると、受け付けた「終了フラグ」と「ブロック番号」とを、レジスタ410の読み出し用DMAテーブル421に記憶する。
【0037】
読み出し用DMAテーブル421に登録されるブロック番号は、メモリ42の記憶エリアを規定のサイズごとに分割した複数のブロックのうち、データの読み出し対象として選択可能なブロックのブロック番号である。読み出しの対象として選択可能なブロック番号とは、DMA読み出し実行API232により、読み出しの対象として指定され得る全てのブロック番号である。
【0038】
複数のブロックが読み出しの対象として選択可能である場合、当該複数のブロックは非連続である場合もある。例えば、図3に示すように、ブロック番号“1”のブロックの次に、ブロック番号“2”ではなく、ブロック番号“3”のブロックが指定される場合もある。
【0039】
読み出し用DMAテーブル421に登録される終了フラグは、読み出し対象として選択可能なブロックのうちの最終ブロックを示す。読み出し用DMAテーブル421における最終ブロックとは、読み出し対象として選択可能なブロックをFPGA41がメモリ42から読み出す場合に、読み出し順が最後となるブロックである。本実施形態においては、FPGA41は、メモリ42のブロックをブロック番号の昇順で読み出すため、最終ブロックは、読み出し対象として選択可能なブロックのうちブロック番号が最も大きいものとなる。図3に示す例では、最終ブロックではないブロック番号には終了フラグ“0”、最終ブロックのブロック番号には終了フラグ“1”が設定される。読み出し用DMAテーブル421に格納される終了フラグは、本実施形態における第1の終了フラグの一例である。
【0040】
なお、図3では、読み出し用DMAテーブル421を例として図示したが、書き込み用DMAテーブル422も同様の項目を有する。書き込み用DMAテーブル422に登録されるブロック番号は、メモリ42の記憶エリアを規定のサイズごとに分割した複数のブロックのうち、データの書き込み対象として選択可能なブロックのブロック番号である。書き込みの対象として選択可能なブロック番号とは、DMA書き込み実行API233により、書き込みの対象として指定され得る全てのブロック番号である。
【0041】
また、書き込み用DMAテーブル422に設定される終了フラグは、書き込み対象と選択可能なブロックのうちの最終ブロックを示す。書き込み用DMAテーブル422における最終ブロックは、書き込み対象として選択可能なブロックにFPGA41が書き込みをする際に、書き込み順が最後となるブロックである。本実施形態においては、FPGA41は、メモリ42のブロックをブロック番号の昇順で書き込みするため、最終ブロックは、書き込み対象として選択可能なブロックのうちブロック番号が最も大きいものとなる。書き込み用DMAテーブル422に設定される終了フラグは、本実施形態における第2の終了フラグの一例である。FPGA41は、DMA用テーブル設定API231による「終了フラグ」と「ブロック番号」との登録を受けると、受け付けた「終了フラグ」と「ブロック番号」とを、レジスタ410の書き込み用DMAテーブル422に記憶する。
【0042】
ここで、図3に例示した読み出し用DMAテーブル421の使われ方について説明する。図2の構成に図示したDMA読み出し実行API232により、読み出し用DMAテーブル421の読み出し開始行が指定される。例えば、図3に示す読み出し用DMAテーブル421の行コード“AAA”が読み出し開始行として指定されたとする。この場合、FPGA41は、行コード“AAA”のレコードから順に、読み出し用DMAテーブル421の各レコードを読み出す。そして、FPGA41は、行コード“AAA”のレコードから終了フラグ“1”が設定されたレコードまでに格納されたブロック番号に対応するメモリ42のブロックに保存されたデータを読み出す。テーブル読み出し開始行として、読み出し用DMAテーブル421の途中の行が指定される場合もある。例えば、図3の行コード“BBB”以下の行がテーブル読み出し開始行として指定されてもよい。
【0043】
FPGA41は、読み出し用DMAテーブル421から読み出したブロック番号に対応するメモリエリアを図2に示したブロックマップ423を参照して特定し、特定したメモリエリアからデータを読み出す。例えば、図3に示す読み出し用DMAテーブル421の行コード“AAA”が読み出し開始行として指定された場合、メモリ42の複数のブロックのうち、ブロック1、3、4、YYが読み出し対象ブロックとなる。
【0044】
なお、書き込み用DMAテーブル422の使用方法も、読み出し用DMAテーブル421と同様である。
【0045】
次に、以上のように構成された本実施形態のPLC2およびFPGA41で実行される処理の流れについて説明する。
【0046】
図4は、第1の実施形態に係るDMA用テーブル設定API231の処理の流れの一例を示すフローチャートである。このフローチャートの処理は、例えば、PLC2に制御プログラムがダウンロードされた場合に実行される。この場合、ダウンロードされた制御プログラムで使用されるデータが保存されたブロックまたはダウンロードされた制御プログラムで書き込みに使用されるブロックが読み出し用DMAテーブル421、および書き込み用DMAテーブル422へ登録される。なお、このフローチャートの処理は、後述のDMA読み出し実行API232およびDMA書き込み実行API233が実行される前に実行される。
【0047】
DMA用テーブル設定API231は、ソフトウェアPLC24から、読み出しの対象として選択可能なブロック番号、書き込みの対象として選択可能なブロック番号、読み出しおよび書き込みのそれぞれの最終ブロック番号、および読み出しおよび書き込みのそれぞれテーブル開始行を受け取る(S1)。
【0048】
そして、DMA用テーブル設定API231は、バス10を介して伝送モジュール4のFPGA41へアクセスし、読み出し用DMAテーブル421、および書き込み用DMAテーブル422へデータを登録する(S2)。
【0049】
例えば、DMA用テーブル設定API231は、読み出しの対象として選択可能なブロック番号を、受け取ったテーブル開始行から順に読み出し用DMAテーブル421に登録する。また、DMA用テーブル設定API231は、読み出しの最終ブロック番号に対応する「終了フラグ」に“1”を登録する。
【0050】
また、DMA用テーブル設定API231は、書き込みの対象となる全てのブロック番号を、受け取ったテーブル開始行から順に書き込み用DMAテーブル422に登録する。また、DMA用テーブル設定API231は、書き込みの最終ブロック番号に対応する「終了フラグ」に“1”を登録する。
【0051】
ここで、このフローチャートの処理は終了する。また、ソフトウェアPLC24の変更などにより読み込みまたは書き込み対象のブロックが変更された場合、再度このフローチャートの処理が実行されるものとする。
【0052】
図5は、第1の実施形態に係るDMA読み出し実行API232の処理の流れの一例を示すフローチャートである。このフローチャートの処理は、例えば、規定の周期ごとに実行される。
【0053】
DMA読み出し実行API232は、バス10を介して伝送モジュール4のFPGA41へアクセスし、FPGA41のレジスタ410に、テーブル読み出し開始行411、および読み出し対象のデータのサイズ412を設定する(S11)。具体的には、DMA読み出し実行API232は、テーブル読み出し開始行411および読み出し対象のデータのサイズ412を、例えばソフトウェアPLC24から取得する。サイズ412は、DMA読み出し実行API232が、ソフトウェアPLC24から受け取ったサイズ情報を転送パケットサイズおよび転送パケット数に変換した値である。転送パケット数は、FPGA41からメモリ42へデータアクセスする際、対象データをサイズ単位(パケット)で分割した数である。転送パケット数は、対象データのデータサイズと1パケットあたりのサイズから決定される。
【0054】
そして、DMA読み出し実行API232は、DMA読み出し開始要求をFPGA41に送信する(S12)。
【0055】
そして、DMA読み出し実行API232は、FPGA41によるDMAデータ読み出しが完了するまで待機する(S13“No”)。FPGA41によってメモリ42から読み出されたデータは、FPGA41のバッファメモリ430に保存される。
【0056】
FPGA41によるDMAデータ読み出しが完了した場合(S13“Yes”)、DMA読み出し実行API232は、FPGA41によってメモリ42から読み出されたデータを、バッファメモリ430から取り出し、バス10を介してPLC2へ転送する(S14)。具体的には、DMA読み出し実行API232は、レジスタ410内のDMA完了ステータス424を参照し、DMA完了ステータス424にDMA読み出しが完了したことが登録されている場合には、S14の処理を実行する。また、DMA読み出し実行API232は、PLC2への読み出しデータの転送処理後、DMA完了ステータス424を、初期状態に戻す。ここで、このフローチャートの処理は終了する。
【0057】
図6は、第1の実施形態に係るFPGA41のハードウェアロジックにより実行されるDMA読み出し処理の流れの一例を示すフローチャートである。このフローチャートの処理は、図5で説明したDMA読み出し実行API232によるDMA読み出し開始要求をFPGA41が受けた場合に開始する。
【0058】
まず、FPGA41は、レジスタ410からテーブル読み出し開始行411およびサイズ412を取得する(S31)。
【0059】
そして、FPGA41は、読み出し用DMAテーブル421のテーブル読み出し開始行411から、読み出しを開始する(S32)。
【0060】
そして、FPGA41は、読み出したレコードに記載されているブロック番号に該当するメモリエリアのブロックから、データをDMAで読み出し、バッファメモリ430に保存する(S33)。
【0061】
そして、FPGA41は、読み出したレコードに終了フラグ“1”が設定されていない場合(S34“No”)、読み出し用DMAテーブル421の次の行に登録されたブロック番号を読み出す(S35)。そして、S33の処理に戻り、メモリ42からのデータの読み出しを行う。
【0062】
そして、FPGA41は、読み出したレコードに終了フラグ“1”が設定されている場合(S34“Yes”)、レジスタ410のDMA完了ステータス424にDMA読み出しが完了したことを登録する(S36)。例えば、FPGA41は、DMA完了ステータス424にフラグ“1”を設定する。ここで、このフローチャートの処理は終了する。このフローチャートの処理の終了後、図5で説明したDMA読み出し実行API232によるS14の処理が実行される。
【0063】
図7は、第1の実施形態に係るDMA書き込み実行API233の処理の流れの一例を示すフローチャートである。このフローチャートの処理は、例えば、規定の周期ごとに実行される。
【0064】
まず、DMA書き込み実行API233は、バス10を介して伝送モジュール4のFPGA41へアクセスし、書き込み用データをバッファメモリ430へセットする(S21)。
【0065】
そして、DMA書き込み実行API233は、FPGA41のレジスタ410に、テーブル読み出し開始行411、および読み出し対象のデータのサイズ412を設定する(S22)。
【0066】
そして、DMA書き込み実行API233は、DMA書き込み開始要求をFPGA41に送信する(S23)。
【0067】
そして、DMA書き込み実行API233は、FPGA41によるDMAデータ書き込みが完了するまで待機する(S24“No”)。
【0068】
FPGA41によるDMAデータ書き込みが完了した場合(S24“Yes”)、このフローチャートの処理は終了する。具体的には、DMA書き込み実行API233は、レジスタ410内のDMA完了ステータス424を参照し、DMA完了ステータス424にDMA書き込みが完了したことが登録されている場合には、DMA書き込み実行API233は、DMA完了ステータス424を初期状態に戻し、このフローチャートの処理は終了する。
【0069】
図8は、第1の実施形態に係るFPGA41のハードウェアロジックにより実行されるDMA書き込み処理の流れの一例を示すフローチャートである。このフローチャートの処理は、図7で説明したDMA書き込み実行API233によるDMA書き込み開始要求をFPGA41が受けた場合に開始する。
【0070】
まず、FPGA41は、レジスタ410からテーブル読み出し開始行411およびサイズ412を取得する(S41)。
【0071】
そして、FPGA41は、書き込み用DMAテーブル422のテーブル読み出し開始行411から、読み出しを開始する(S42)。
【0072】
そして、FPGA41は、読み出したレコードに記載されているブロック番号に該当するメモリエリアのブロックへ、書き込み用データをバッファメモリ430からDMAで書き込む(S43)。
【0073】
そして、FPGA41は、読み出したレコードに終了フラグ“1”が設定されていない場合(S44“No”)、書き込み用DMAテーブル422の次の行に登録されたブロック番号を読み出す(S45)。そして、S43の処理に戻り、メモリ42への書き込み用データの書き込みを行う。
【0074】
そして、FPGA41は、読み出したレコードに終了フラグ“1”が設定されている場合(S44“Yes”)、レジスタ410のDMA完了ステータス424にDMA書き込みが完了したことを登録する(S46)。例えば、FPGA41は、DMA完了ステータス424にフラグ“1”を設定する。ここで、このフローチャートの処理は終了する。
【0075】
このように、本実施形態のFPGA41は、ドライバAPIからDMA書き込み開始要求またはDMA読み出し開始要求を受けた場合、メモリ42に含まれる複数のブロックのうち、読み出し用DMAテーブル421または書き込み用DMAテーブル422におけるテーブル読み出し開始行411から終了フラグが設定された位置までに記憶されたブロック番号に該当するブロックのデータの読み出しまたは書き込みを実行する。このため、本実施形態のFPGA41によれば、1度のDMA書き込み開始要求またはDMA読み出し開始要求により、メモリ42内に非連続的に配置された複数のブロックを対象とした読み出しまたは書き込みの処理を実行することができる。
【0076】
比較例として、PLCのドライバAPIが伝送モジュールのメモリ内の非連続的な領域を個別に指定してDMAを実行する場合、1度のDMA書き込み開始要求またはDMA読み出し開始要求では、連続する1個所のメモリエリアを対象とした読み出しまたは書き込みの処理しか実行できない。このため、このような比較例では、メモリ内に非連続的に配置された複数のエリアを対象とした読み出しまたは書き込みの処理を実行するためには、非連続的に配置された複数のエリアの数だけ、PLCのドライバAPIがDMA書き込み開始要求またはDMA読み出し開始要求を実行することとなり、これらの要求の都度、PLCと伝送モジュール間のバスを介したPCI Express(登録商標)等による通信が実行されることとなる。
【0077】
これに対して、本実施形態のFPGA41によれば、上述のように、1度のDMA書き込み開始要求またはDMA読み出し開始要求により、メモリ42内に非連続的に配置された複数のブロックを対象とした読み出しまたは書き込みの処理を実行することができるため、PLC2と伝送モジュール4間のバス10を介したPCI Express(登録商標)等による通信回数を低減することができる。また、これにより、PLC2からメモリ42へのアクセスに要する時間を低減することができる。
【0078】
(第2の実施形態)
上述の第1の実施形態では、読み出しまたは書き込み対象のメモリ42のメモリエリアをブロック単位で特定していた。この第2の実施形態では、各ブロック内の一部の領域を指定したメモリアクセスを可能とする。
【0079】
図9は、第2の実施形態に係るPLC2および伝送モジュール4の構成の一例を示す図である。図9では、メモリ42の各ブロックのうち、網掛けされた領域が、読み出しまたは書き込みの対象となる範囲である。図9に示すように、メモリ42のブロックにデータが格納されている場合、対象のデータが1つのブロック全体に格納されているとは限らず、1つのブロック内の一部の領域のみに対象のデータが格納される場合がある。
【0080】
本実施形態の伝送モジュール4は、読み出し用DMAテーブル421aおよび書き込み用DMAテーブル422aを備える。
【0081】
図10は、第1の実施形態に係る読み出し対象ブロックの特定手法の一例を示す図である。本実施形態の読み出し用DMAテーブル421aは、第1の実施形態と同様の「終了フラグ」および「ブロック番号」に加えて、「ブロックの先頭アドレスからデータ格納
エリアの終了までのデータサイズ」の項目を有する。
【0082】
読み出し用DMAテーブル421aおよび書き込み用DMAテーブル422aの各項目の値は、第1の実施形態と同様に、DMA用テーブル設定API231により設定される。
【0083】
ブロックの先頭アドレスは、ブロックの先頭位置に該当するアドレスである。「ブロックの先頭アドレスからアクセス対象エリアの終了までのデータサイズ」は、読み出し対象として選択可能なブロックの先頭アドレスから読み出し対象のデータが格納された読み出しエリアの終了アドレスまでのデータサイズである。読み出しエリアの終了アドレスは、読み出しエリアの終了位置に該当するアドレスである。
【0084】
なお、図10では、読み出し用DMAテーブル421aを例として図示したが、書き込み用DMAテーブル422aも同様に、項目として「終了フラグ」、「ブロック番号」、および「ブロックの先頭アドレスからアクセス対象エリアの終了までのデータサイズ」を有する。
【0085】
本実施形態において、DMA読み出し実行API232およびDMA書き込み実行API233の処理は、図5、7で説明した第1の実施形態の処理と同様である。
【0086】
また、本実施形態において、FPGA41のハードウェアロジックにより実行されるDMA読み出し処理では、読み出し用DMAテーブル421aのテーブル読み出し開始行から終了フラグ“1”が設定された行までに記憶された「ブロック番号」と、「ブロックの先頭アドレスからアクセス対象エリアの終了までのデータサイズ」とを1レコードずつ読み出す。
【0087】
そして、FPGA41は、読み出したレコードに記載されているブロック番号に該当するメモリ42のブロックにおける読み出し対象データが格納された範囲の終了アドレスを、「ブロックの先頭からアクセス対象エリアの終了までのデータサイズ」に基づいて特定する。FPGA41は、メモリ42の複数のブロックのうち、読み出し用DMAテーブル421aから読み出したブロック番号に該当するブロックの先頭アドレスから、読み出し対象データが格納された範囲の終了アドレスまでの範囲に格納されたデータをDMAで読み出し、バッファメモリ430に保存する。
【0088】
具体的には、図10に示す読み出し用DMAテーブル421aでは、ブロック番号“1”に対応付けられた「ブロックの先頭アドレスからアクセス対象エリアの終了までのデータサイズ」は“n1”である。この場合、FPGA41は、メモリ42のブロック1の先頭アドレスから、データサイズが“n1”となるまでのエリアのデータを読み出す。
【0089】
また、図10に示す読み出し用DMAテーブル421aでは、ブロック番号“3”に対応付けられた「ブロックの先頭アドレスからアクセス対象エリアの終了までのデータサイズ」は“n7”である。この場合、FPGA41は、メモリ42のブロック3の先頭アドレスから、データサイズが“n7”となるまでのエリアのデータを読み出す。FPGA41は、読み出し用DMAテーブル421aに設定された他のブロック番号に対応するブロックについても同様に、ブロックの先頭アドレスから「ブロックの先頭アドレスからアクセス対象エリアの終了までのデータサイズ」分のデータを読み出す。
【0090】
また、本実施形態において、FPGA41のハードウェアロジックにより実行されるDMA書き込み処理では、書き込み用DMAテーブル422aのテーブル読み出し開始行から終了フラグ“1”が設定された行までに記憶された「ブロック番号」と、「ブロックの先頭アドレスからアクセス対象エリアの終了までのデータサイズ」とを1レコードずつ読み出す。そして、FPGA41は、読み出したレコードに記載されているブロック番号に該当するメモリ42のブロックにおける書き込み範囲の終了アドレスを、「ブロックの先頭からアクセス対象エリアの終了までのデータサイズ」に基づいて特定する。FPGA41は、メモリ42の複数のブロックのうち、書き込み用DMAテーブル422aから読み出したブロック番号に該当するブロックの先頭アドレスから、書き込み範囲の終了アドレスまでの範囲に、書き込み用データを書き込む。
【0091】
なお、メモリ42のブロックの先頭位置からFPGA41が実際にデータを書き込む範囲までに空白の範囲が存在する場合があるが、本実施形態の書き込み用データは、書き込み範囲に含まれる空白部分も加味して、ソフトウェアPLC24により生成される。例えば、「ブロックの先頭からアクセス対象エリアの終了までのデータサイズ」が16バイトであり、ブロック先頭から8バイトは空白である場合、ソフトウェアPLC24は、先頭8バイト分は空白で後半8バイトが意味のあるデータである合計16バイトの書き込み用データを作成する。
【0092】
このように、本実施形態のFPGA41は、「終了フラグ」および「ブロック番号」に加えて、「ブロックの先頭アドレスからアクセス対象エリアの終了までのデータサイズ」の項目を有する読み出し用DMAテーブル421aを備え、メモリ42からのデータの読み出しの際、読み出し用DMAテーブル421aから読み出したブロック番号に該当するブロックの先頭アドレスからアクセス対象エリアの終了までのデータサイズ分のデータを読み出す。このような構成により、本実施形態のFPGA41は、第1の実施形態と同様の効果を奏した上で、さらに、読み出し対象のデータのサイズを削減することができる。このため、本実施形態のFPGA41によれば、伝送モジュール4からPLC2へのデータ転送量を低減することにより、転送時間を低減することができる。
【0093】
(第3の実施形態)
上述の第2の実施形態では、アクセス対象のブロックの先頭アドレスからアクセス対象エリアの終了までのデータサイズにより、読み出し対象のメモリエリアを特定していた。この第3の実施形態では、各ブロックに対する読み出しまたは書き込みの際の、アクセス先頭アドレスを、ブロックの先頭アドレス以外でも指定可能とする。
【0094】
図11は、第3の実施形態に係るPLC2および伝送モジュール4の構成の一例を示す図である。本実施形態においても、メモリ42においても、対象のデータが1つのブロック全体に格納されているとは限らず、1つのブロック内の一部の領域のみに対象のデータが格納される場合がある。
【0095】
本実施形態の伝送モジュール4は、読み出し用DMAテーブル421bおよび書き込み用DMAテーブル422bを備える。
【0096】
図12は、第3の実施形態に係る読み出し対象ブロックの特定手法の一例を示す図である。本実施形態の読み出し用DMAテーブル421bは、第1の実施形態と同様の「終了フラグ」および「ブロック番号」に加えて、「アクセス先頭アドレス」および「アクセス先頭アドレスからアクセス対象エリアの終了までのデータサイズ」の項目を有する。
【0097】
読み出し用DMAテーブル421bにおける「アクセス先頭アドレス」は、ブロック番号に対応するブロックにおいて読み出し対象のデータが格納された読み出しエリアの先頭位置に対応するアドレスである。当該先頭アドレスは、ブロックの先頭アドレスに限定されず、ブロックの途中に位置するアドレスでもよい。例えば、図11に示した例では、メモリ42のブロック3では、網掛けで表示された読み出し対象のデータが格納されたエリアは、ブロック3の途中から開始している。
【0098】
読み出し用DMAテーブル421bにおける「アクセス先頭アドレスからアクセス対象エリアの終了までのデータサイズ」は、読み出しエリアのデータサイズである。
【0099】
読み出し用DMAテーブル421bの各項目の値は、第1、第2の実施形態と同様に、DMA用テーブル設定API231により設定される。
【0100】
本実施形態において、DMA読み出し実行API232およびDMA書き込み実行API233の処理は、図5、7で説明した第1の実施形態の処理と同様である。
【0101】
また、本実施形態において、FPGA41のハードウェアロジックにより実行されるDMA読み出し処理では、メモリ42の複数のブロックのうち、読み出し用DMAテーブル421bにおいてテーブル読み出し開始行から終了フラグ“1”が設定された位置までに記憶された「ブロック番号」と、「アクセス先頭アドレスからアクセス対象エリアの終了までのデータサイズ」とを1レコードずつ読み出す。
【0102】
そして、FPGA41は、読み出したレコードに記載されているブロック番号に該当するブロックにおける読み出し対象データが格納された範囲の先頭アドレスを、「アクセス先頭アドレス」に基づいて特定する。また、FPGA41は、当該ブロックにおける読み出し対象データが格納された範囲の終了アドレスを、「アクセス先頭アドレスからアクセス対象エリアの終了までのデータサイズ」に基づいて特定する。FPGA41は、読み出し用DMAテーブル421bから読み出したブロック番号に該当するブロックの「アクセス先頭アドレス」から、読み出し対象データが格納された範囲の終了アドレスまでの範囲に格納されたデータをDMAで読み出し、バッファメモリ430に保存する。
【0103】
具体的には、図12に示す読み出し用DMAテーブル421bでは、ブロック番号“1”に対応付けられた「アクセス先頭アドレス」は“m1”、「アクセス先頭アドレスからアクセス対象エリアの終了までのデータサイズ」は“n1”である。この場合、FPGA41は、メモリ42のブロック1のアドレス“m1”から、データサイズが“n1”となるまでのエリアのデータを読み出す。
【0104】
また、図12に示す読み出し用DMAテーブル421bでは、ブロック番号“3”に対応付けられた「アクセス先頭アドレス」は“m6”、「アクセス先頭アドレスからアクセス対象エリアの終了までのデータサイズ」は“n2”である。この場合、FPGA41は、メモリ42のブロック3のアドレス“m6”から、データサイズが“n2”となるまでのエリアのデータを読み出す。FPGA41は、読み出し用DMAテーブル421bに設定された他のブロック番号に対応するブロックについても同様に、「アクセス先頭アドレス」から「アクセス先頭アドレスからアクセス対象エリアの終了までのデータサイズ」分のデータを読み出す。
【0105】
なお、図12では、読み出し用DMAテーブル421bを例として図示したが、書き込み用DMAテーブル422bも同様に、項目として「終了フラグ」、「ブロック番号」、「アクセス先頭アドレス」および「アクセス先頭アドレスからアクセス対象エリアの終了までのデータサイズ」を有する。
【0106】
書き込み用DMAテーブル422bにおける「アクセス先頭アドレス」は、ブロック番号に対応するブロックにおいて書き込み用データが書き込まれる書き込みエリアの先頭アドレスを示すアドレスである。
【0107】
また、書き込み用DMAテーブル422bにおける「アクセス先頭アドレスからアクセス対象エリアの終了までのデータサイズ」は、書き込み用データが書き込まれる書き込みエリアのデータサイズである。
【0108】
また、図12では、読み出し対象ブロックの特定手法を例示したが、FPGA41のハードウェアロジックにより実行されるDMA書き込み処理においても、図12で説明した手法と同様に、書き込み用DMAテーブル422bに設定された「ブロック番号」、「終了フラグ」、「アクセス先頭アドレス」および「アクセス先頭アドレスからアクセス対象エリアの終了までのデータサイズ」に基づいて書き込み対象のブロックおよび当該ブロックにおける書き込み対象エリアを特定する。
【0109】
このように、本実施形態のFPGA41は、「終了フラグ」および「ブロック番号」に加えて、「アクセス先頭アドレス」および「アクセス先頭アドレスからアクセス対象エリアの終了までのデータサイズ」の項目を有する読み出し用DMAテーブル421bおよび書き込み用DMAテーブル422bを備え、メモリ42に対するアクセスの際、読み出し用DMAテーブル421bまたは書き込み用DMAテーブル422bから読み出したブロック番号に該当するブロックのアクセス先頭アドレスからアクセス対象エリアの終了までのデータサイズ分のデータにアクセスする。このような構成により、本実施形態のFPGA41は、第2の実施形態よりもさらに、アクセス対象のデータのサイズを削減することができる。
【0110】
なお、上述の各実施形態では、FPGA41が読み出し用DMAテーブル421,421a,421bと書き込み用DMAテーブル422,422a,422bとを1つずつ有する例を図示したが、PLC2側にメモリ42の異なるブロックを対象とする読み出し処理および書き込み処理が複数存在する場合、各処理の対象となるブロックのセットに応じて複数の読み出し用DMAテーブル421,421a,421bと複数の書き込み用DMAテーブル422,422a,422bとが設けられてもよい。
【0111】
上述の各実施形態では、伝送モジュール4を例としてブロック単位でのDMAの手法を説明したが、I/O伝送モジュール3においても、上述の伝送モジュール4と同様の構成により、ブロック単位でのDMAを実行してもよい。また、伝送モジュール4とI/O伝送モジュール3とを総称して伝送モジュールと称してもよい。
【0112】
以上説明したとおり、第1から第3の実施形態によれば、非連続的に配置されたメモリエリアへのアクセスを効率的に実行することができる。
【0113】
上述の各実施形態のPLC2で実行される各種のプログラムは、エンジニアリングツールからダウンロードされる。あるいは、上述の各実施形態のPLC2で実行される各種のプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD-ROM、フレキシブルディスク(FD)、CD-R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供されてもよい。
【0114】
また、上述の各実施形態のPLC2で実行される各種のプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、上述の各実施形態のPLC2で実行される各種のプログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。また、上述の各実施形態のPLC2で実行される各種のプログラムを、ROM等に予め組み込んで提供するように構成してもよい。
【0115】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0116】
1,1a,1b PLCステーション
3,3a,3b I/O伝送モジュール
4,4a,4b 伝送モジュール
5 制御ネットワーク
6,6a,6b センサ
7 HMI
10 バス
21 デバイスドライバ
23 ドライバAPI
24 ソフトウェアPLC
25 記憶部
41 FPGA
42 メモリ
231 DMA用テーブル設定API
232 DMA読み出し実行API
233 DMA書き込み実行API
410 レジスタ
411 テーブル読み出し開始行
412 サイズ
421,421a,421b 読み出し用DMAテーブル
422,422a,422b 書き込み用DMAテーブル
430 バッファメモリ
S 制御システム
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12