(57)【要約】【課題】メモリ競合を防止するための調停処理を制御装置の演算部に実行させることなく、メモリ競合の発生を防止する。【解決手段】ＰＬＣの時刻カウンタに同期して動作する時刻カウンタから出力される信号に基づいて、ＣＰＵ（１１）の制御周期（Ｃ１）においてＣＰＵ（１１）がメモリ（１２）と通信する期間（Ｔｃｐｕ）に少なくとも重畳する期間（Ｔ１）中に、シリアルバスを介してメモリ（１２）と通信せず、期間（Ｔ１）の後に開始される期間（Ｔ２）中に、シリアルバスを介してメモリ（１２）と通信するＤＭＡＣ（３１）を備えているユニット（２０）。【選択図】図２
2020187658.tif 000002
【特許請求の範囲】
【請求項１】
シリアルバスに接続される第１メモリと、一定時間ごとに第１信号を出力する第１カウンタと、前記シリアルバスに接続されると共に、前記第１信号に基づいて、所定の制御周期ごとに前記シリアルバスを介して前記第１メモリと通信する第１通信部とを備えている制御装置に接続される情報処理装置であって、
前記第１カウンタに同期して動作すると共に、前記一定時間ごとに第２信号を出力する第２カウンタと、
前記シリアルバスに接続されると共に、前記第２信号に基づいて、前記制御周期において前記第１通信部が前記第１メモリと通信する期間に少なくとも重畳する第１期間中に、前記シリアルバスを介して前記第１メモリとシリアル通信せず、前記第１期間の後に開始される第２期間中に、前記シリアルバスを介して前記第１メモリと通信する第２通信部とを備えている情報処理装置。
【請求項２】
複数の情報処理装置が、前記制御装置に接続されており、
前記情報処理装置ごとに、異なる前記制御周期に前記第２期間が割り当てられる請求項１に記載の情報処理装置。
【請求項３】
複数の情報処理装置が、前記制御装置に接続されており、
前記情報処理装置ごとに、同一の前記制御周期内における前記第１期間の長さおよび前記第２期間の開始タイミングが互いに異なる請求項１に記載の情報処理装置。
【請求項４】
前記情報処理装置ごとに、ある前記制御周期と、他の前記制御周期とにおいて、前記第２期間の開始タイミングが互いに異なる請求項３に記載の情報処理装置。
【請求項５】
前記第２通信部は、特定のデータについては前記第１期間中であっても前記第１メモリに送信する請求項１に記載の情報処理装置。
【請求項６】
第２メモリを備えており、
前記第２通信部は、定期的に、前記第１メモリと前記第２メモリとの間のミラーリングを実行する請求項１に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御対象の制御を実行する制御装置と協働して動作する情報処理装置に関する。
【背景技術】
【０００２】
従来、産業用コントローラの処理負荷を低減させるために、コントローラと協働して動作する各種のユニットを併用する形態の産業用制御システムが知られている。このようなシステムでは、コントローラおよびユニットが同一のメモリを共有しており、コントローラまたはユニットがそれぞれ共有メモリにアクセスしてデータを読み書きする、という形で運用されることも良くある。しかし、共有メモリに対してコントローラおよびユニットが無秩序にアクセスできるようにすると、それぞれのアクセスが同一のタイミングで発生することによる「メモリ競合」が起こり、その結果として、優先して処理すべきデータの読み書きが遅延してしまうといった問題が生じ得る。
【０００３】
そこで従来、このようなメモリ競合の発生を避けるための技術の例が、例えば特許文献１および２に提案されている。
【０００４】
特許文献１には、共有メモリの使用許可を求めるリクエスト信号をランダムなタイミングで出力する第１制御手段と、前記共有メモリの使用許可を求めるリクエスト信号を一定サイクル毎に出力する第２制御手段と、前記第１制御手段、及び第２制御手段からそれぞれ出力される前記リクエスト信号を調停する調停手段とを備えたメモリアクセス調停装置において、前記第２制御手段からのリクエスト信号の出力を受けて、前記調停手段に対し、該調停手段が前記第１制御手段に対してａｃｋ信号を出力するのを禁止するａｃｋ禁止信号を出力する判定手段を備える、ことを特徴とするメモリアクセス調停装置が開示される。
【０００５】
特許文献２には、共用資源に対する複数のデバイスからの使用要求を予め定めた優先順位により調停して選択的に前記共用資源の使用許可をする調停システムにおいて、調停の対象となる前記複数のデバイスの中で一定時間内にデータを転送する必要のある特定デバイスの使用要求許可開始から次の使用要求許可開始までの時間を計時して、前記特定のデバイスの使用要求許可の選択が所定時間されていないことを検知するとタイムアウト信号を発生する計時手段と、前記計時手段からの前記タイムアウト信号に応じて前記特定のデバイスの優先順位を最も高く、または少なくとも２番目に高く変更することで前記特定デバイスの使用要求を一定時間毎に許可する調停手段とを具備したことを特徴とする調停システムが開示される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−１１５４２１号
【特許文献１】特開平９−９１１９４号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１の技術では、第１制御手段および第２制御手段がいずれも調停手段にアクセスして、メモリへのアクセスを調停して貰う必要がある。そのため、例えば第１制御手段を産業用コントローラのＣＰＵとした場合、調停のためのＣＰＵの処理負荷（リクエスト送信、ＡＣＫ受信など）が増えるため、ＣＰＵの制御周期が長くなってしまう。その結果、ＣＰＵが一定の周期で処理を実行できなくなる問題が発生する。
【０００８】
特許文献２の技術でも、複数のデバイスと、１つのＣＰＵとが、メモリ競合を避けるために調停回路にアクセスする必要がある。これにより、調停のためのＣＰＵの処理負荷（リクエスト送信、ＡＣＫ受信など）が増えるため、ＣＰＵの制御周期が長くなってしまう。その結果、ＣＰＵが一定の周期で処理を実行できなくなる問題が発生する。
【０００９】
本発明は、前記の課題を解決するためになされたものであり、その目的は、メモリ競合を防止するための調停処理を制御装置の演算部に実行させることなく、メモリ競合の発生を防止することにある。
【課題を解決するための手段】
【００１０】
本発明の一態様に係る情報処理装置は、シリアルバスに接続される第１メモリと、一定時間ごとに第１信号を出力する第１カウンタと、前記シリアルバスに接続されると共に、前記第１信号に基づいて、所定の制御周期ごとに前記シリアルバスを介して前記第１メモリと通信する第１通信部とを備えている制御装置に接続される情報処理装置であって、前記第１カウンタに同期して動作すると共に、前記一定時間ごとに第２信号を出力する第２カウンタと、前記シリアルバスに接続されると共に、前記第２信号に基づいて、前記制御周期において前記第１通信部が前記第１メモリと通信する期間に少なくとも重畳する第１期間中に、前記シリアルバスを介して前記第１メモリとシリアル通信せず、前記第１期間の後に開始される第２期間中に、前記シリアルバスを介して前記第１メモリと通信する第２通信部とを備えている構成である。
【００１１】
前記の構成によれば、各制御周期内の第１期間中に、第２通信部が第１メモリと通信せずに、第１通信部のみが第１メモリと通信することが保証される。一方、各制御周期内の第２期間中では、第２通信部は第１メモリと通信することができ、さらには第１通信部は第１メモリと通信してもしなくても良い。これらのことから、各制御周期内の第１期間において、第１通信部および第２通信部が第１メモリに対するメモリ競合を起こすことがない。この際、メモリ競合の回避は、第１カウンタに同期する第２カウンタの出力に基づいて実現されており、したがってメモリ競合を回避するための調整処理を第１通信部が実行する必要はない。このように、本発明の一態様に係る情報処理装置は、メモリ競合を防止するための調停処理を制御装置の第１通信部に実行させることなく、メモリ競合を起こさずに済む。これにより、第１通信部の負荷を低減することもできる。
【００１２】
本発明の一態様に係る情報処理装置は、前記の構成において、複数の情報処理装置が、前記制御装置に接続されており、前記情報処理装置ごとに、異なる前記制御周期に前記第２期間が割り当てられる構成である。
【００１３】
前記の構成によれば、各制御周期において、いずれかの情報処理装置の第２通信部のみがシリアルバスを介して通信することが担保されるため、各情報処理装置の第２通信部が互いにメモリ競合を起こすことを防止できる。
【００１４】
本発明の一態様に係る情報処理装置は、前記の構成において、複数の情報処理装置が、前記制御装置に接続されており、前記情報処理装置ごとに、同一の前記制御周期内における前記第１期間の長さおよび前記第２期間の開始タイミングが互いに異なる構成である。
【００１５】
前記の構成によれば、各制御周期において、複数の情報処理装置が同一のタイミングで通信を開始することがないため、複数の情報処理装置による通信がシリアルバスに集中することを防止できる。
【００１６】
本発明の一態様に係る情報処理装置は、前記の構成において、前記情報処理装置ごとに、ある前記制御周期と、他の前記制御周期とにおいて、前記第２期間の開始タイミングが互いに異なる構成である。
【００１７】
前記構成によれば、各制御周期において特定の情報処理装置のみが優先して通信することがないため、各情報処理装置における通信速度を均一にすることができる。
【００１８】
本発明の一態様に係る情報処理装置は、前記の構成において、前記第２通信部は、特定のデータについては前記第１期間中であっても前記第１メモリに送信する構成である。
【００１９】
前記の構成によれば、特定のデータ、例えば制御システムが最優先で処理すべき最優先データについては、第１通信部が第１メモリにアクセスする期間であっても第１メモリに送信されるので、特定のデータの送信が遅延することを防止することができる。これにより、緊急事態の発生時などに制御装置が確実に素早く対応できるので、制御システムの安定性を高めることができる。
【００２０】
本発明の一態様に係る情報処理装置は、前記構成において、第２メモリを備えており、前記第２通信部は、定期的に、前記第１メモリと前記第２メモリとの間のミラーリングを実行する構成である。
【００２１】
前記の構成によれば、第１メモリおよび第２メモリにそれぞれ格納されるデータを定期的に同一にすることができる。
【発明の効果】
【００２２】
本発明によれば、メモリ競合を防止するための調停処理を制御装置の演算部に実行させることなく、メモリ競合の発生を防止することができるという効果を奏する。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施形態１に係る制御システムの要部構成を示すブロック図である。
【図２】本発明の実施形態１に係る制御システムによる処理の流れの一例を示すシーケンス図である。
【図３】本発明の実施形態２に係る制御システムの要部構成を示すブロック図である。
【図４】本発明の実施形態２に係る制御システムによる処理の流れの一例を示すシーケンス図である。
【図５】本発明の実施形態３に係る制御システムによる処理の流れの一例を示すシーケンス図である。
【図６】本発明の実施形態４に係る制御システムの要部構成を示すブロック図である。
【図７】本発明の実施形態４に係る制御システムによる処理の流れの一例を示すシーケンス図である。
【発明を実施するための形態】
【００２４】
〔実施形態１〕
以下、本発明の一側面に係る実施の形態（以下、「本実施形態」とも表記する）を、図面に基づいて説明する。
【００２５】
§１  適用例
まず、図１および２を参照して、本発明が適用される場面の一例について説明する。図１に示すように、本実施形態に係るユニット２０は、制御システム１においてＰＬＣ１０に接続され、ＰＬＣ１０と協働して動作する情報処理装置である。ユニット２０内のＤＭＡＣ３１は、ＰＬＣ１０内のＣＰＵ１１と、ＰＬＣ１０内のメモリ１２を共有しており、いずれもシリアルバス１４を介してメモリ１２と通信する。すなわち、ＣＰＵ１１およびＤＭＡＣ３１はメモリ１２を共有している。制御システム１には、ＣＰＵ１１とＤＭＡＣ３１とによるメモリ競合を防止するための仕組みが導入されている。
【００２６】
図２に示すように、ユニット２０は、ＰＬＣ１０内の時刻カウンタ１３から出力される信号に基づいて、所定の制御周期ごとにメモリ１２と周期的に通信する。これにより、制御システム１内の制御対象を制御するための制御データをメモリ１２から読み出し、制御対象に送信する。
【００２７】
ユニット２０では、時刻カウンタ３３が時刻カウンタ１３と同期して動作しており、時刻カウンタ１３と同一のタイミングで一定時間ごとに指示信号を出力する。ユニット２０内の転送制御部３２は、時刻カウンタ３３から出力されたマスク信号に基づいて、メモリ１２との通信の可否を指定するマスク信号を生成し、ＤＭＡＣ３１に出力する。マスク信号の信号レベルは、ＣＰＵ１１がメモリ１２と通信する期間に少なくとも重畳する期間Ｔ１中にハイレベルに維持され、期間Ｔ１の後に開始される期間Ｔ２にローレベルに維持される。ＤＭＡＣ３１は、マスク信号がハイレベルの間、メモリ１２と通信せず、ローレベルの間、メモリ１２と通信する。これにより、ＣＰＵ１１がメモリ１２と通信する際に、ＤＭＡＣ３１がメモリ１２と通信しないので、メモリ競合が発生しない。
【００２８】
ＣＰＵ１１がメモリ１２との通信を終了した後に、ＤＭＡＣ３１はメモリ１２と通信する。この際、ＣＰＵ１１はメモリ１２と通信しても良いし、あるいはしなくても良い。したがって、期間Ｔ２ではメモリ競合の発生が許容される。これらのことから、マスク信号がハイレベルの間は、ＣＰＵ１１のみがメモリ１２と通信できることが保証されるので、ＣＰＵ１１は遅延無くメモリ１２にアクセスすることができる。
【００２９】
以上のように、ＣＰＵ１１は、メモリ競合を防止するための調停処理を実行することなく、周期的にメモリ１２にアクセスすることができる。ＤＭＡＣ３１は、時刻カウンタ１３と同期している時刻カウンタ３３の出力に基づき生成されるマスク信号に従って、メモリ１２へのアクセス有無を決定するため、ＣＰＵ１１と同様に、メモリ競合を防止するための調停処理を実行する必要がない。このように、本実施形態に係るユニット２０は、メモリ競合を防止するための調停処理をＣＰＵ１１に実行させることなく、ＣＰＵ１１とＤＭＡＣ３１との間でメモリ競合を起こさずに済むことができる。
【００３０】
§２  構成例
（制御システム１の構成）
図１は、本実施形態に係る制御システム１の要部構成を示すブロック図である。この図の例では、制御システム１は、ＰＬＣ（Programmable Logic Controller）１０（制御装置）およびユニット２０を備えている。図１のＰＬＣ１０は、ＣＰＵ（Central Processing Unit）１１（第１通信部）、メモリ１２（第１メモリ）、時刻カウンタ１３（第１カウンタ）、およびシリアルバス１４を備えている。図１のユニット２０は、ＭＰＵ２１、メモリ２２（第２メモリ）、および転送部２３を備えている。図１の転送部２３は、ＤＭＡＣ（Direct Memory Access Controller）３１（第２通信部）、転送制御部３２、時刻カウンタ３３（第２カウンタ）、およびシリアルバス２４を備えている。
【００３１】
制御システム１は、図示しない各種の機器または設備などの複数の制御対象が設置される生産設備を制御するためのシステムである。ＰＬＣ１０は、制御システム１においてこれらの制御対象を制御するように構成されるコントローラの一種である。ＰＬＣ１０および制御対象は、図示しないフィールドネットワーク等の制御系のネットワークに接続されている。ＰＬＣ１０は、制御系のネットワークを介して制御対象と周期的に通信することによって、各種の制御データを制御対象に送受信し、これにより生産設備を制御する。ＰＬＣ１０は、さらに、各制御対象から収集したデータに基づいて、制御システム１の運用状況などの統計処理などに用いられる大容量データを生成し、メモリ１２に格納する。
【００３２】
ユニット２０は、ＰＬＣ１０に接続され、かつＰＬＣ１０と協働的に動作するデバイスである。本実施形態では、ユニット２０は、例えばＰＬＣ１０のＣＰＵ１１の処理負荷を低減させるために、ＰＬＣ１０によって生成される大容量データに対して適用される各種の処理を担当する。このような処理として、例えばパケット分割処理および異常処理などが挙げられる。
【００３３】
（ＰＬＣ１０の詳細構成）
ＰＬＣ１０において、ＣＰＵ１１、メモリ１２、および時刻カウンタ１３が、それぞれシリアルバス１４に接続されている。シリアルバス１４の一端は、ユニット２０のＤＭＡＣ３１に接続されている。シリアルバス１４は、シリアル通信を実行される通信経路であり、例えばＰＣＩｅ（Peripheral Component Interconnect express）バスである。
【００３４】
ＣＰＵ１１は、ＰＬＣ１０の動作を統括的に制御するプロセッサである。メモリ１２は、ＲＡＭ（Read Only Memory）などの各種の不揮発性記憶媒体である。時刻カウンタ１３は、時計およびタイマーの要素を有する。
【００３５】
メモリ１２には、制御システム１における制御対象を制御するための制御データが格納されている。ＣＰＵ１１は、制御データをメモリ１２から周期的に読み出し、かつ周期的に制御対象に送信する。その周期性は、時刻カウンタ１３によって実現される。時刻カウンタ１３には、所定の初期設定時刻が設定されている。ＰＬＣ１０が動作を開始すると、初期設定時刻を起点として時刻のカウントを開始する。そして、カウント数が基準数に達すると、言い換えればカウント開始後に一定時間が経過すると、ＣＰＵ１１に対して周期動作を指示する指示信号（第１信号）をＣＰＵ１１に出力する。ＣＰＵ１１は、指示信号の受信をトリガーとして、１つの制御周期を開始させる。そして、制御周期が継続する間、当該周期内に実行すべき各種の制御（例えば制御データの送信など）を実行する。
【００３６】
時刻カウンタ１３は、指示信号を送信した場合、時刻のカウントを継続する。そして、指示信号の送信後にカウントした数が新たに基準数に達すると、指示信号を新たにＣＰＵ１１に送信する。このように、時刻カウンタ１３は一定の周期で指示信号を繰り返しＣＰＵ１１に出力するように設定されている。ＣＰＵ１１は、新しい指示信号を受信した場合、現在の制御周期を終了させ、直ちに次の制御周期を開始させる。このようにして、ＣＰＵ１１は、一定周期で制御対象を制御し続ける。
【００３７】
本実施形態では、ＣＰＵ１１の制御周期は、例えば１２５マイクロ秒以下の短い時間である。すなわち本実施形態の制御システム１は、ＰＬＣ１０が高頻度で制御対象を周期的に制御するシステムである。
【００３８】
（ユニット２０の詳細構成）
ユニット２０において、ＭＰＵ２１、メモリ２２、およびＤＭＡＣ３１が、シリアルバス２４に接続されている。ＤＭＡＣ３１は、さらにシリアルバス１４にも接続されている。シリアルバス２４は、例えばＰＣＩｅ（Peripheral Component Interconnect express）バスである。ＣＰＵ１１およびＤＭＡＣ３１の双方がシリアルバス１４を介してメモリ１２に接続されることによって、ＣＰＵ１１およびＤＭＡＣ３１はメモリ１２を共有している。
【００３９】
ＭＰＵ（Micro Processing Unit）２１は、ユニット２０の動作を統括的に制御するプロセッサである。ＭＰＵ２１は、例えば上述したパケット分割処理および異常処理などの各種の処理を実行する。メモリ２２は、ＲＡＭ（Read Only Memory）などの各種の不揮発性記憶媒体である。メモリ２２には、ユニット２０から転送される大容量データなどが格納される。
【００４０】
転送部２３は、ＭＰＵ２１またはＣＰＵ１１による制御に従って、ＰＬＣ１０とユニット２０との間のデータ転送を実行する。転送部２３内のＤＭＡＣ３１が、シリアルバス１４を介したメモリ１２との通信を担当する。ＤＭＡＣ３１は、ＣＰＵ１１を介さずにメモリ１２に直接アクセスすることによって、メモリ１２に大容量データを読み書きするコントローラである。ＤＭＡＣ３１は、例えば、メモリ１２から読み出した大容量データをシリアルバス１４上のシリアル通信によってＤＭＡＣ３１まで転送し、さらにシリアルバス２４上のシリアル通信によってメモリ２２まで転送することによって、メモリ２２に書き込む。ＤＭＡＣ３１は、あるいは、メモリ２２から読み出した大容量データを、シリアルバス１４上のシリアル通信によってメモリ１２まで転送することによって、メモリ１２に書き込むこともできる。
【００４１】
ＤＭＡＣ３１は、ＣＰＵ１１から独立して個別に形成される集積回路として実現される。言い換えれば、ＰＬＣ１０およびユニット２０はそれぞれ独立した個別の基板を備えており、ＣＰＵ１１はＰＬＣ１０を構成する基板上に形成され、ＤＭＡＣ３１は、ユニット２０を構成する基板上に形成される。このように、ＣＰＵ１１およびＤＭＡＣ３１は、互いに独立した別のデバイス（装置）である。
【００４２】
時刻カウンタ３３は、時計およびタイマーの要素を有する。本実施形態では、ユニット２０の時刻カウンタ３３は、ＰＬＣ１０の時刻カウンタ１３に同期して動作する。すなわち、時刻カウンタ３３には、時刻カウンタ１３に設定される初期設定時刻および基準数と同一の初期設定時刻および基準数が設定されている。制御システム１の動作開始時に、ユニット２０はＰＬＣ１０と同時に動作を開始する。これにより、時刻カウンタ３３が時刻カウンタ１３と同時に時刻のカウントを開始することが担保される。時刻カウンタ３３は、ユニット２０が動作を開始すると、初期設定時刻を起点として時刻のカウントを開始する。そして、カウント数が基準数に達すると、言い換えればカウント開始後に所定の時刻が経過すると、転送制御部３２に対して、転送制御部３２にマスク信号の出力を指示する指示信号（第２信号）を転送制御部３２に出力する。
【００４３】
マスク信号の出力タイミングは、ＣＰＵ１１が制御データの転送を開始するタイミングと同一の時点に設定する。したがって、例えばＣＰＵ１１が指示信号を受信すると直ちに制御データの転送を開始する態様では、マスク信号の出力タイミングを、時刻カウンタ１３からＣＰＵ１１への指示信号の出力タイミングと同一の時点に設定する。一方、ＣＰＵ１１が指示信号を受信するとまず特定の処理を実行してからその後に制御データの転送を開始する態様では、マスク信号の出力タイミングを、時刻カウンタ１３からＣＰＵ１１への指示信号の出力タイミングよりも、当該特定の処理の実行に要する時間だけ後の時点に、設定すればよい。
【００４４】
転送制御部３２は、指示信号の受信をトリガーとして、所定のマスク信号をＤＭＡＣ３１に出力する。マスク信号は、大容量データ転送の可否をＤＭＡＣ３１に指示する信号であり、ハイレベルおよびオフレベルのいずれかの信号レベルを取る。マスク信号がハイレベルの間、ＤＭＡＣ３１による大容量データの転送は禁止され、マスク信号がローレベルの間、ＤＭＡＣ３１による大容量データの転送は許可される。これらの詳細は後に図２などを参照して詳細に説明する。
【００４５】
（データ転送の流れ）
図２は、本実施形態に係る制御システム１による処理の流れの一例を示すシーケンス図である。時刻カウンタ１３は、時刻ｔ１において指示信号をＣＰＵ１１に出力する。ＣＰＵ１１は、時刻ｔ１において制御周期Ｃ１を開始させ、これにより制御データの処理を開始する。ここでは、制御データをメモリ１２から読み出す処理、言い換えれば、メモリ１２内の制御データをシリアルバス１４上のシリアル通信によってメモリ１２からＣＰＵ１１まで転送する処理を、実行する。
【００４６】
時刻カウンタ３３は時刻カウンタ１３に同期している。したがって、時刻カウンタ３３は時刻ｔ１において指示信号を転送制御部３２に出力する。転送制御部３２は、時刻ｔ１において、ハイレベルのマスク信号をＤＭＡＣ３１に出力する。これにより、ＤＭＡＣ３１が大容量データをメモリ１２に転送する処理が禁止される。したがって、ＤＭＡＣ３１は時刻ｔ１においてメモリ１２にアクセスすることがない。これにより、時刻ｔ１において、メモリ１２に対するメモリ競合が発生しない。
【００４７】
ユニット２０には、各制御周期においてＣＰＵ１１が制御データを処理するために必要な処理時間Ｔｃｐｕを表す情報が、予め設定されている。転送制御部３２は、この情報に基づいて、各制御周期においてハイレベルのマスク信号の出力を継続する期間Ｔ１（第１期間）を決定する。期間Ｔ１は処理時間Ｔｃｐｕよりも長ければよく、図２の例では両者の長さは互いに等しい。また、期間Ｔ１は、制御周期Ｃ１における処理時間Ｔｃｐｕが占める期間に少なくとも重畳すればよく、図２の例では両者は互いに完全に重畳している。ＣＰＵ１１は、時刻ｔ１から、時刻ｔ１よりも処理時間Ｔｃｐｕだけ後の時刻ｔ２までの間、制御データの転送を継続する。転送制御部３２は、時刻ｔ１から期間Ｔ１だけ後の時刻ｔ２までの間、ハイレベルのマスク信号の出力を継続する。これにより、時刻ｔ１から時刻ｔ２までの間、ＤＭＡＣ３１による大容量データの転送が禁止されるので、ＣＰＵ１１は、メモリ競合を起こすことなく制御データをメモリ１２から読み出すことができる。
【００４８】
ＣＰＵ１１は、時刻ｔ２の後、制御データの転送を終了し、他の処理を実行する。転送制御部３２は、時刻ｔ２において、期間Ｔ１を終了し、各制御周期においてローレベルのマスク信号の出力を継続する期間Ｔ２（第２期間）を開始させる。すなわち転送制御部３２は、時刻ｔ２において、ローレベルのマスク信号をＤＭＡＣ３１に出力する。これにより、時刻ｔ２においてＤＭＡＣ３１による大容量データの転送が許可される。したがって、ＤＭＡＣ３１は、時刻ｔ２において、大容量データの転送を開始する。転送制御部３２は、次の指示信号が時刻カウンタ３３から入力されるまで、すなわち制御周期Ｃ１の終了時点まで、マスク信号をローレベルに維持する。
【００４９】
ＣＰＵ１１は、時刻ｔ２から時刻ｔ３までの間（期間Ｔ２に等しい）、必要に応じてメモリ１２にアクセスすることができる。したがって、期間Ｔ２ではメモリ競合の発生が許容される。期間Ｔ２においてＣＰＵ１１がメモリ１２にアクセスしない場合、ＤＭＡＣ３１は、期間Ｔ２において、ＣＰＵ１１とのメモリ競合を起こすこと無く、メモリ１２からＤＭＡＣ３１への大容量データの転送を遅延無く継続することができる。一方、期間Ｔ２においてＣＰＵ１１がメモリ１２にアクセスする場合、ＤＭＡＣ３１は、ＣＰＵ１１との間でメモリ競合を起こしつつも、大容量データの転送を継続することができる。この際、大容量データの転送に多少の遅延が生じることもあり得るが、ユニット２０にとってそのような遅延は大きな問題にならない。
【００５０】
時刻ｔ３において、時刻カウンタ１３が次の指示信号をＣＰＵ１１に出力し、これにより、制御周期Ｃ１が終了する。ＣＰＵ１１は、時刻ｔ３において次の制御周期Ｃ２を開始させ、これにより時刻ｔ３において制御データの処理を開始する。時刻カウンタ３３は、時刻ｔ３において次の指示信号を転送制御部３２に出力する。これにより、転送制御部３２はハイレベルのノイズ信号をＤＭＡＣ３１に出力する。
【００５１】
制御周期Ｃ２における制御データおよび大容量データの転送の手順は、制御周期Ｃ１におけるそれと同一である。結果、制御周期Ｃ２における時刻ｔ３から時刻ｔ４（時刻ｔ３＋Ｔｃｐｕ）までの期間Ｔ１では、マスク信号がハイレベルに維持されるので、ＣＰＵ１１はＤＭＡＣ３１とメモリ競合を起こすことなく、制御データをメモリ１２から読み出すことができる。また、時刻ｔ４から時刻ｔ５までの間、すなわち制御周期Ｃ１における時刻ｔ４以降の残りの期間Ｔ２では、メモリ競合の発生が多少は起こる可能性もあるが、ＤＭＡＣ３１は大容量データをメモリ１２から着実に転送することができる。
【００５２】
ＰＬＣ１０およびユニット２０は、制御周期Ｃ２よりも後の各制御周期においても、制御周期Ｃ１およびＣ２と同様の処理を実行する。したがって、各制御周期内の期間Ｔ１において、ＣＰＵ１１はＤＭＡＣ３１とのメモリ競合を起こさずに、制御データの転送処理
を独占的に実行できる。
【００５３】
（主要な作用効果）
本実施形態では、ユニット２０およびＣＰＵ１１がメモリ１２を共有する場合であっても、各制御周期内で制御データが転送される期間Ｔ１においては、メモリ競合を起こすことなく制御データの転送を可能にすることができる。したがって、メモリ競合を原因とする制御データの転送遅延が生じない。さらには、メモリ競合を防止するための調停処理をＣＰＵ１１に対して実行する必要がないため、ＣＰＵ１１の各制御周期が調整処理の実行により遅延することもない。このように、メモリ競合または調停処理を原因とする制御周期の遅延が発生しないため、ＣＰＵ１１は安定した制御周期で制御対象を制御することができる。特に、ＣＰＵ１１が１２５マイクロ秒以下の制御周期でメモリ１２にアクセスする場合、数マイクロ秒は必要な調整処理が不要になることにより、各制御周期の同一性および安定性をより高めることができる。また、ＣＰＵ１１およびＤＭＡＣ３１をそれぞれ別デバイスとする（別の集積回路として実装する）場合でも、ＣＰＵ１１の制御周期を正しく維持することができる。
【００５４】
なお、ＤＭＡＣ３１は、転送制御部３２に対してマスク信号の出力を要求するリクエスト信号を出力する必要がなく、したがって転送制御部３２がマスク信号の出力を許可するＡＣＫを転送制御部３２からＤＭＡＣ３１が受信する必要もない。したがって、ＤＭＡＣ３１の処理負荷を軽減することもできる。
【００５５】
（変形例）
ＤＭＡＣ３１は、メモリ１２とメモリ２２との間で大容量データを定期的にミラーリングしてもよい。これにより、メモリ１２に格納される大容量データと、メモリ２２に格納される大容量データとを、定期的に同一にすることができる。このミラーリングは、各制御周期内の期間Ｔ２において実行される。
【００５６】
〔実施形態２〕
以下、本発明の他の側面に係る実施の形態（以下、「本実施形態」とも表記する）を、図面に基づいて説明する。
【００５７】
§２  構成例
（制御システム１Ａの構成）
図３は、本実施形態に係る制御システム１Ａの要部構成を示すブロック図である。この図の例では、制御システム１は、ＰＬＣ１０、ユニット２０、およびユニット２０Ａを備えている。図３のＰＬＣ１０およびユニット２０の内部構成は、それぞれ図１のＰＬＣ１０およびユニット２０の内部構成と同一であるため、詳細な説明を繰り返さない。ユニット２０Ａはユニット２０と同一のデバイスであり、ユニット２０Ａの内部構成はユニット２０の内部構成と同一である。すなわち、制御システム１Ａは、複数のユニット２０を備えているシステムであるとも言える。本実施形態では、両者を区別するため、ユニット２０Ａが備える各部材にはＡの参照番号を追加で付与する。例えば、ＭＰＵ２１Ａは、ユニット２０Ａが備えるＭＰＵである。
【００５８】
制御システム１Ａにおいて、ＣＰＵ１１、ＤＭＡＣ３１、およびＤＭＡＣ３１Ａが、シリアルバス１４に接続される。これにより、ＣＰＵ１１、ＤＭＡＣ３１、およびＤＭＡＣ３１Ａが、メモリ１２を共有している。ＤＭＡＣ３１Ａは、ＤＭＡＣ３１と同様に、ＣＰＵ１１から独立して個別に形成される集積回路として実現される。ＤＭＡＣ３１および３１Ａのそれぞれも、互いに独立して個別に形成される集積回路として実現される。
【００５９】
（データ転送の流れ）
本実施形態に係る制御システム１Ａは、ユニット２０および２０Ａがメモリ１２にアクセスする期間Ｔ２を、時分割する。すなわち、ユニット２０ごとに異なる制御周期に期間Ｔ２を割り当てる。詳細には、ある制御周期Ｃ１ではユニット２０に期間Ｔ２を割り当て、他の制御周期Ｃ２ではユニット２０Ａに期間Ｔ２を割り当てる。これらの制御によって、ユニット２０および２０Ａは、異なるタイミングで（異なる期間Ｔ２に）メモリ１２にアクセスできるようにする。その際、期間Ｔ１では、ＣＰＵ１１、ＤＭＡＣ３１、およびＤＭＡＣ３１Ａがメモリ競合を起こすことはない。また、各期間Ｔ２では、ユニット２０および２０Ａがメモリ競合を起こすことはない。
【００６０】
図４は、本実施形態に係る制御システム１Ａによる処理の流れの一例を示すシーケンス図である。時刻ｔ１において、時刻カウンタ１３が指示信号をＣＰＵ１１に出力する。これにより、ＣＰＵ１１は、時刻ｔ１において制御周期Ｃ１を開始させ、制御データの処理を開始する。時刻カウンタ３３および３３Ａは、時刻カウンタ１３に同期している。したがって、時刻カウンタ３３は時刻ｔ１において指示信号を転送制御部３２に出力し、時刻カウンタ３３Ａは時刻ｔ１において指示信号を転送制御部３２Ａに出力する。
【００６１】
本実施形態では、転送制御部３２は、時刻ｔ１において、マスク信号および共通マスク信号をＤＭＡＣ３１に出力する。共通マスク信号は、大容量データの転送可否をＤＭＡＣ３１に指示する信号である。マスク信号および共通マスク信号のうち少なくとも一方がハイレベルである場合、ＤＭＡＣ３１による大容量データの転送が禁止される。マスク信号および共通マスク信号の双方がローレベルである場合、ＤＭＡＣ３１による大容量データの転送が許可される。
【００６２】
転送制御部３２Ａは、時刻ｔ１において、マスク信号Ａおよび共通マスク信号ＡをＤＭＡＣ３１Ａに出力する。共通マスク信号Ａは、大容量データの転送可否をＤＭＡＣ３１Ａに指示する信号である。マスク信号Ａおよび共通マスク信号Ａのうち少なくとも一方がハイレベルである場合、ＤＭＡＣ３１Ａによる大容量データの転送が禁止される。マスク信号Ａおよび共通マスク信号Ａの双方がローレベルである場合、ＤＭＡＣ３１Ａによる大容量データの転送が許可される。
【００６３】
図４に示すように、共通マスク信号および共通マスク信号Ａは、互いに同一の波形を有する。その意味では、これらの信号は、ＤＭＡＣ３１および３１Ａの双方に対して共通に大容量データの転送を禁止する期間を指定する信号であると言える。
【００６４】
転送制御部３２は、時刻ｔ１において、ハイレベルのマスク信号およびローレベルの共通マスク信号をＤＭＡＣ３１に出力する。これにより、ＤＭＡＣ３１が大容量データをメモリ１２に転送する処理が禁止される。転送制御部３２Ａは、時刻ｔ１において、ハイレベルのマスク信号Ａおよびハイレベルの共通マスク信号ＡをＤＭＡＣ３１Ａに出力する。これにより、ＤＭＡＣ３１Ａが大容量データをメモリ１２に転送する処理も禁止される。したがって、ＤＭＡＣ３１および３１Ａは時刻ｔ１においてメモリ１２にアクセスすることがない。これにより、時刻ｔ１において、メモリ１２に対するメモリ競合が発生しないので、ＣＰＵ１１はメモリ１２から制御データを遅延なく読み出すことができる。
【００６５】
各制御周期におけるＣＰＵ１１の処理は、実施形態１と同一である。ＣＰＵ１１は、時刻ｔ１から時刻ｔ２までの間、制御データの転送を続ける。時刻ｔ１から時刻ｔ２までの間、各マスク信号の現在出力レベルが維持されるので、メモリ競合が発生することはない。
【００６６】
ＣＰＵ１１は、時刻ｔ２において制御データの転送を終了する。転送制御部３２は、時刻ｔ２において、ローレベルの共通マスク信号をＤＭＡＣ３１に出力すると共に、ローレベルのマスク信号の出力を維持する。これにより、ＤＭＡＣ３１による大容量データの転送が許可される。したがって、ＤＭＡＣ３１は、時刻ｔ２において、メモリ１２からＤＭＡＣ３１への大容量データの転送を開始する。一方、転送制御部３２Ａは、時刻ｔ２において、ローレベルの共通マスク信号ＡをＤＭＡＣ３１Ａに出力すると共に、ハイレベルのマスク信号Ａの出力を維持する。これにより、ＤＭＡＣ３１Ａによる大容量データの転送禁止が維持される。したがって、ＤＭＡＣ３１Ａは、時刻ｔ２において、大容量データの転送を開始しない。
【００６７】
転送制御部３２は、次の指示信号が入力されるまで、すなわち制御周期Ｃ１の終了時点である時刻ｔ３まで、マスク信号および共通マスク信号の現在出力レベルを維持する。転送制御部３２Ａも、次の指示信号が入力されるまで、すなわち制御周期Ｃ１の終了時点である時刻ｔ３まで、マスク信号Ａおよび共通マスク信号Ａの現在出力レベルを維持する。一方、ＣＰＵ１１は、時刻ｔ２から時刻ｔ３までの間、メモリ１２にアクセスしない。これによりＤＭＡＣ３１は、時刻ｔ２から時刻ｔ３までの間、ＣＰＵ１１およびＤＭＡＣ３１Ａとのメモリ競合を起こすこと無く、メモリ１２からＤＭＡＣ３１に大容量データを転送し続ける。
【００６８】
時刻ｔ３において、時刻カウンタ１３が次の指示信号をＣＰＵ１１に出力し、時刻カウンタ３３が次の指示信号を転送制御部３２に出力し、時刻カウンタ３３Ａが次の指示信号を転送制御部３２Ａに出力する。これにより、制御周期Ｃ１が終了する。ＣＰＵ１１は、時刻ｔ３において次の制御周期Ｃ２を開始させ、制御データの転送を開始する。
【００６９】
転送制御部３２は、時刻ｔ３において、ハイレベルのマスク信号およびハイレベルの共通マスク信号をＤＭＡＣ３１に出力する。これにより、ＤＭＡＣ３１が大容量データをメモリ１２に転送する処理が禁止される。転送制御部３２Ａは、時刻ｔ３において、ハイレベルのマスク信号Ａおよびローレベルの共通マスク信号ＡをＤＭＡＣ３１Ａに出力する。これにより、ＤＭＡＣ３１Ａが大容量データをメモリ１２に転送する処理も禁止される。したがって、ＤＭＡＣ３１および３１Ａは時刻ｔ３においてメモリ１２にアクセスすることがない。これにより、時刻ｔ３において、メモリ１２に対するメモリ競合が発生しないので、ＣＰＵ１１はメモリ１２から制御データを遅延なく読み出すことができる。
【００７０】
ＣＰＵ１１は、時刻ｔ３から時刻ｔ４までの間、制御データの転送を続ける。時刻ｔ３から時刻ｔ４までの間、各マスク信号の現在出力レベルが維持されるので、メモリ競合が発生することはない。
【００７１】
ＣＰＵ１１は、時刻ｔ４において、制御データの転送を終了する。転送制御部３２は、時刻ｔ４において、ローレベルの共通マスク信号をＤＭＡＣ３１に出力すると共に、ハイレベルのマスク信号の出力を維持する。これにより、ＤＭＡＣ３１による大容量データの転送禁止が維持される。したがって、ＤＭＡＣ３１は、時刻ｔ４において、大容量データの転送を開始しない。一方、転送制御部３２Ａは、時刻ｔ４において、ローレベルの共通マスク信号およびローレベルのマスク信号をＤＭＡＣ３１Ａに出力する。これにより、ＤＭＡＣ３１Ａによる大容量データの転送が許可される。したがって、ＤＭＡＣ３１Ａは、時刻ｔ４において、大容量データの転送を開始する。
【００７２】
転送制御部３２は、次の指示信号が入力されるまで、すなわち制御周期Ｃ２の終了時点である時刻ｔ５まで、マスク信号および共通マスク信号の現在出力レベルを維持する。転送制御部３２Ａも、次の指示信号が入力されるまで、すなわち制御周期Ｃ２の終了時点である時刻ｔ５まで、マスク信号Ａおよび共通マスク信号Ａの現在出力レベルを維持する。一方、ＣＰＵ１１は、時刻ｔ４から時刻ｔ５までの間、メモリ１２にアクセスしない。これによりＤＭＡＣ３１Ａは、時刻ｔ４から時刻ｔ５までの間、ＣＰＵ１１およびＤＭＡＣ３１とのメモリ競合を起こすこと無く、メモリ１２からＤＭＡＣ３１Ａに大容量データを転送し続ける。
【００７３】
（主要な作用効果）
本実施形態では、複数のユニット２０および２０ＡがＣＰＵ１１と共にメモリ１２を共有する場合であっても、各制御周期内の期間Ｔ１においてメモリ競合を起こすことなく制御データの転送を可能にすることができる。したがって、メモリ競合を原因とする制御データの転送遅延が生じないため、各制御周期が遅延することがない。さらには、メモリ競合を防止するための調停処理をＣＰＵ１１に対して実行する必要がないため、各制御周期が調整処理の実行により遅延することもない。したがって、各制御周期が遅延することがないため、ＰＬＣ１０は安定した周期で制御対象を制御することができる。特に、ＣＰＵ１１が１２５マイクロ秒以下の周期でメモリ１２にアクセスする場合、数マイクロ秒が必要な調整処理が不要になることにより、各周期の同一性および安定性をよりよく高めることができる。
【００７４】
さらには、各制御周期内の期間Ｔ２においてＤＭＡＣ３１とＤＭＡＣ３１Ａとの間でメモリ競合が発生しないので、ＤＭＡＣ３１および３１Ａはそれぞれに割り当てられた期間Ｔ２中に大容量データを遅延無く安定して転送することができる。
【００７５】
〔実施形態３〕
以下、本発明の他の側面に係る実施の形態（以下、「本実施形態」とも表記する）を、図面に基づいて説明する。
【００７６】
§２  構成例
本実施形態に係る制御システム１Ａの構成は、実施形態２と同一である。ただし、ＤＭＡＣ３１および３１Ａは、互いに同一の制御周期内に同時に大容量データを転送する。その際、ユニット２０および２０Ａがメモリ１２にアクセスする期間を、大容量データの最小ペイロード単位で時分割する。転送制御部３２および３２Ａは、共通マスク信号を出力せずに、マスク信号またはマスク信号Ａのみを出力する。また、ユニット２０ごとに、同一の制御周期における期間Ｔ１の長さおよび期間Ｔ２の開始タイミングが互いに異なっている。さらに、ユニット２０およびユニット２０Ａのそれぞれについて、ある制御周期Ｃ１における期間Ｔ２の開始タイミングと、他の制御周期Ｃ２における期間Ｔ２とが、互いに異なっている。
【００７７】
（データ転送の流れ）
図５は、本実施形態に係る制御システム１Ａによる処理の流れの一例を示すシーケンス図である。ＣＰＵ１１による制御データの処理は、実施形態１などと同一である。すなわち、ＣＰＵ１１は時刻ｔ１から時刻ｔ２までの間、制御データを転送する。転送制御部３２は、時刻ｔ１から時刻ｔ２までの間、ハイレベルのマスク信号をＤＭＡＣ３１に出力する。転送制御部３２Ａは、時刻ｔ１から時刻ｔ２までの間、ハイレベルのマスク信号をＤＭＡＣ３１Ａに出力する。これにより、ＣＰＵ１１との間のメモリ競合を起こすことなく、制御データを転送する。
【００７８】
転送制御部３２は、時刻ｔ２において、ローレベルのマスク信号をＤＭＡＣ３１に出力する。これによりＤＭＡＣ３１は、時刻ｔ２において大容量データの転送を開始する。一方、転送制御部３２Ａは、時刻ｔ２において、ハイレベルのマスク信号Ａの出力を維持する。これにより、ＤＭＡＣ３１Ａは、時刻ｔ２において制御データの転送を開始しない。
【００７９】
転送制御部３２および３２Ａには、大容量データのうち最小ペイロードサイズのデータ（以下、最小ペイロードデータ）を転送するために必要な転送時間Ｔｐｄが設定されている。最小ペイロードデータは、シリアルバス１４上のシリアル通信時に通信される最小単位のデータのことである。ＤＭＡＣ３１は、転送対象の大容量データを複数の最小ペイロードデータに分割して、最小ペイロードデータごとにシリアルバス１４上での転送処理を順に実行する。
【００８０】
転送制御部３２は、時刻ｔ２から時刻ｔ３までの間、ローレベルのマスク信号の出力を維持する。転送制御部３２Ａは、時刻ｔ２から、時刻ｔ２に転送時間Ｔｐｄを加えた時刻ｔ２１までの間、ハイレベルのマスク信号Ａの出力を続ける。これにより、ＤＭＡＣ３１は、時刻ｔ２から時刻ｔ２１までの間に、最小ペイロードデータの転送を完了することができる。
【００８１】
ＤＭＡＣ３１Ａは、時刻ｔ２１において、ローレベルのマスク信号ＡをＤＭＡＣ３１Ａに出力する。これにより、ＤＭＡＣ３１Ａは、大容量データの転送を開始する。このとき、ＤＭＡＣ３１も大容量データの転送を実行しているので、ＤＭＡＣ３１とＤＭＡＣ３１Ａとの間でメモリ競合が発生する。これにより、ＤＭＡＣ３１ＡとＤＭＡＣ３１とが、最小ペイロードデータを交互にメモリ１２から転送するようになる。すなわち、時刻ｔ２１の後、まずＤＭＡＣ３１Ａがメモリ１２から最小ペイロードデータを転送し、その完了後に、ＤＭＡＣ３１が最小ペイロードデータをメモリ１２から転送する。これらの各処理が、時刻ｔ２１から時刻ｔ３までの間に交互に実行される。したがって、図５に示すように、制御周期Ｃ１では、ＤＭＡＣ３１は３つの最小ペイロードデータの転送に成功し、ＤＭＡＣ３１Ａは２つの最小ペイロードデータの転送に成功する。
【００８２】
時刻ｔ３において、制御周期Ｃ２が開始され、ＣＰＵ１１は時刻ｔ３から時刻ｔ４までの間、制御データを転送する。この際、マスク信号およびマスク信号Ａはいずれもハイレベルに維持されているので、ＣＰＵ１１は、メモリ競合を起こすことなく、制御データをメモリから読み出すことができる。
【００８３】
転送制御部３２Ａは、時刻ｔ４において、ローレベルのマスク信号ＡをＤＭＡＣ３１Ａに出力する。これによりＤＭＡＣ３１Ａは、時刻ｔ４において大容量データの転送を開始する。転送制御部３２Ａは、時刻ｔ４から時刻ｔ５までの間、ローレベルのマスク信号Ａの出力を維持する。転送制御部３２は、時刻ｔ４から、時刻ｔ４に転送時間Ｔｐｄを加えた時刻ｔ４１までの間、ハイレベルのマスク信号の出力を続ける。これにより、ＤＭＡＣ３１Ａは、時刻ｔ４から時刻ｔ４１までの間に、ＣＰＵ１１およびＤＭＡＣ３１との間でメモリ競合を起こすことなく、最小ペイロードデータの転送を完了することができる。
【００８４】
ＤＭＡＣ３１は、時刻ｔ４１において、ローレベルのマスク信号ＡをＤＭＡＣ３１に出力する。これにより、ＤＭＡＣ３１は、大容量データの転送を開始する。このとき、ＤＭＡＣ３１Ａも大容量データの転送を実行しているので、メモリ競合が発生する。これにより、ＤＭＡＣ３１ＡとＤＭＡＣ３１とが、最小ペイロードデータを交互にメモリ１２から転送するようになる。すなわち、時刻ｔ４１の後、まずＤＭＡＣ３１がメモリ１２から最小ペイロードデータを転送し、その完了後に、ＤＭＡＣ３１Ａが最小ペイロードデータをメモリ１２から転送する。これらの各処理が、時刻ｔ２１から時刻ｔ３までの間に交互に実行される。したがって、図５に示すように、制御周期Ｃ２では、ＤＭＡＣ３１は２つの最小ペイロードデータの転送に成功し、ＤＭＡＣ３１Ａは３つの最小ペイロードデータの転送に成功する。
【００８５】
（主要な作用効果）
制御データの転送完了後、制御周期Ｃ１では時刻ｔ２においてＤＭＡＣ３１のみが大容量データの転送をまず開始し、制御周期Ｃ２では時刻ｔ４においてＤＭＡＣ３１Ａのみが大容量データの転送をまず開始する。これにより、大容量データの転送が開始された直後に、複数のユニット２０による通信がシリアルバス１４に集中することを防止することができる。
【００８６】
各ユニット２０において、大容量データの転送を開始するタイミングが制御周期ごとに異なっている。これにより、各制御周期においてユニット２０または２０Ａのいずれかのみが優先してより多くのデータを転送することがなくなるため、各ユニット２０における転送速度を均一にすることができる。実際、図５に示すように、制御周期Ｃ１およびＣ２における最小ペイロードデータの転送数をユニット２０ごとに合算すると、ユニット２０では３個＋２個＝５個であり、ユニット２０Ａでは３個＋２個＝５個であり、両者は等しい。そのため、各ユニット２０における所定期間内の最小ペイロードデータの転送数は、ユニット２０ごとに同一になり、これは大容量データの転送速度がユニット２０によらず同一であることを意味する。
【００８７】
〔実施形態４〕
以下、本発明の他の側面に係る実施の形態（以下、「本実施形態」とも表記する）を、図面に基づいて説明する。
【００８８】
§２  構成例
（制御システム１Ｂの構成）
図６は、本実施形態に係る制御システム１Ｂの要部構成を示すブロック図である。この図の例では、制御システム１は、ＰＬＣ１０およびユニット２０Ｂを備えている。図６のＰＬＣ１０の内部構成は、図１のＰＬＣ１０の内部構成と同一であるため、詳細な説明を繰り返さない。ユニット２０Ｂは、実施形態１のユニット２０が備える各部材に加えて、さらに、ＤＭＡＣ３４を備えている。
【００８９】
ＤＭＡＣ３４は、転送部２３に設けられており、シリアルバス１４およびシリアルバス２４に接続されている。本実施形態ではメモリ２２に最優先データ（特定のデータ）が格納されており、ＤＭＡＣ３４は、ＭＰＵ２１による制御に従って、この最優先データをＰＬＣ１０に転送する役割を有する。最優先データは、制御システム１Ｂが最優先に処理する必要があるデータであり、例えばシステムの緊急停止を指示するデータである。ＤＭＡＣ３４は、マスク信号がハイレベルであっても、これを無視してシリアルバス１４を通じて最優先データをメモリ１２に転送することができる。
【００９０】
（データ転送の流れ）
図７は、本実施形態に係る制御システム１Ａによる処理の流れの一例を示すシーケンス図である。以下では、ＤＭＡＣ３１が大容量データをメモリ２２からメモリ１２に転送する例を説明する。時刻ｔ１において、時刻カウンタ１３が指示信号をＣＰＵ１１に出力する。これにより、ＣＰＵ１１は、時刻ｔ１において制御周期Ｃ１を開始させ、制御データの処理を開始する。時刻カウンタ３３は時刻ｔ１において指示信号を転送制御部３２に出力し、これにより、転送制御部３２はハイレベルのマスク信号をＤＭＡＣ３１に出力する。したがって、ＤＭＡＣ３１は時刻ｔ１において大容量データの転送を開始しない。なお、マスク信号はＤＭＡＣ３１Ｂには出力されない。
【００９１】
ＭＰＵ２１は、時刻ｔ１において、最優先データをＰＬＣ１０に転送すべき事象が生じたことを検出する。これによりＭＰＵ２１は、最優先データの転送をＤＭＡＣ３４に指示する。ＤＭＡＣ３４は、これを受けて、時刻ｔ１においてメモリ１２に対する最優先データの転送を開始する。時刻ｔ１ではＣＰＵ１１が制御データの転送を開始しているが、最優先データが制御データに優先してメモリ１２に転送されるため、制御データの実際の転送開始は、メモリ１２への最優先データの転送が完了する時刻ｔ１１まで遅延される。すなわち、時刻ｔ１において最優先データの転送が完了すると、制御データの転送が改めて開始される。制御データの転送は、最優先データの転送に必要に時間だけ遅延しているため、時刻ｔ２になってもまだ完了しない。
【００９２】
転送制御部３２は、時刻ｔ２において、ローレベルのマスク信号をＤＭＡＣ３１に出力する。ＤＭＡＣ３１は、時刻ｔ２において大容量データの転送を開始する。この際、制御データがまだ転送中であるため、メモリ競合が発生する。これにより、メモリ１２への大容量データの書き込みは、制御データの転送が完了した後から開始される。
【００９３】
図７では、制御周期Ｃ１において制御データの転送が遅延したことから、制御周期Ｃ１もその分だけ延長されることになる。このままでは、制御周期Ｃ１が完了する前に、時刻カウンタ１３および時刻カウンタ３３が指示信号を出力することになるので、制御周期Ｃ１の正しい終了時点と制御周期Ｃ２の正しい開始時点とが一致しなくなる。そこで、ＣＰＵ１１は、指示信号を出力するタイミングを、制御データの転送遅延時間に相当する時間だけ修正する（遅らせる）修正指示を、制御周期Ｃ１が終了する前の任意の時点で、シリアルバス１４を通じて時刻カウンタ１３およびＤＭＡＣ３１にそれぞれ出力する。ＤＭＡＣ３１は、受信した修正指示を、転送制御部３２を介して時刻カウンタ３３に出力する。時刻カウンタ１３および時刻カウンタ３３は、受信した修正指示に基づいて、次に指示信号を出力するタイミングを修正する。例えば、現在のカウント数から、転送遅延時間を減算することによって、カウント数を変更する。これにより、制御データの転送遅延中に進んでしまったカウント数を無くすことができるので、制御周期Ｃ１が終了する正しいタイミングで、次の制御周期Ｃ２を開始するための指示信号を出力することができる。さらには、次の制御周期Ｃ２の開始時点において、ハイレベルのマスク信号を出力することもできる。
【００９４】
図７の例では、時刻カウンタ１３は、時刻ｔ３よりも転送遅延時間だけ後の時刻ｔ３１において、次の指示信号をＣＰＵ１１に出力する。時刻カウンタ３３は、時刻ｔ３１において、指示信号を転送制御部３２に出力する。これにより、転送制御部３２は、時刻ｔ３１において、ハイレベルのマスク信号をＤＭＡＣ３１に出力する。これらの結果、制御周期Ｃ２では制御データの転送期間と、マスク信号のハイレベル維持期間とが一致するので、ＣＰＵ１１はメモリ競合を起こすことなく制御データをメモリ１２から転送ことができる。また、制御データの転送終了後、ＤＭＡＣ３１はメモリ競合を起こすことなく、大容量データをメモリ１２から転送ことができる。
【００９５】
（主要な作用効果）
制御システム１Ｂが最優先で処理すべき最優先データについては、マスク信号の信号レベルに関わらず、ＰＬＣ１０に最優先で転送するため、ＰＬＣ１０に対する最優先データの転送が遅延することを防止することができる。これにより、緊急事態の発生時などに制御システム１Ｂが確実に素早く対応できるので、制御システム１Ｂの安定性を高めることができる。
【００９６】
（変形例）
マスク信号による転送制御を受けるＤＭＡＣ３１が転送するデータの中に、最優先データを含めても良い。この場合、最優先データにはマスク信号を無視できるフラグを設定する。ＤＭＡＣ３１は、転送対象の各データの中に、このようなフラグが設定された最優先データを発見した場合、この最優先データの転送順位を最上位に変更すると共に、マスク信号がハイレベルであってもこれを無視してシリアルバス１４を通じて最優先データをメモリ１２に転送する。これにより、最優先データを制御データおよび大容量データよりも優先してメモリ１２に書き込むことができる。したがって、この例であっても、本実施形態と同様の利点が得られる。
【００９７】
〔ソフトウェアによる実現例〕
ユニット２０、２０Ａ、および２０Ｂの制御ブロック（特に転送部２３およびＤＭＡＣ３４）は、集積回路（ＩＣチップ）等に形成された論理回路（ハードウェア）によって実現してもよいし、ソフトウェアによって実現してもよい。
【００９８】
後者の場合、ユニット２０、２０Ａ、および２０Ｂは、各機能を実現するソフトウェアであるプログラムの命令を実行するコンピュータを備えている。このコンピュータは、例えば１つ以上のプロセッサを備えていると共に、前記プログラムを記憶したコンピュータ読み取り可能な記録媒体を備えている。そして、前記コンピュータにおいて、前記プロセッサが前記プログラムを前記記録媒体から読み取って実行することにより、本発明の目的が達成される。前記プロセッサとしては、例えばＣＰＵ（Central Processing Unit）を用いることができる。前記記録媒体としては、「一時的でない有形の媒体」、例えば、ＲＯＭ（Read Only Memory）等の他、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、前記プログラムを展開するＲＡＭ（Random Access Memory）などをさらに備えていてもよい。また、前記プログラムは、該プログラムを伝送可能な任意の伝送媒体（通信ネットワークや放送波等）を介して前記コンピュータに供給されてもよい。なお、本発明の一態様は、前記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【００９９】
本発明は前述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態も、本発明の技術的範囲に含まれる。各実施形態にそれぞれ開示された技術的手段を組み合わせることによって、新しい技術的特徴を形成することもできる。
【符号の説明】
【０１００】
１、１Ａ、１Ｂ  制御システム
１０  ＰＬＣ
１１、１１Ａ  ＣＰＵ
１２、２２  メモリ
１３、３３、３３Ａ  時刻カウンタ
１４、２４  シリアルバス
２０、２０Ａ、２０Ｂ  ユニット
２１  ＭＰＵ
２３  転送部
３１、３１Ａ、３１Ｂ、３４  ＤＭＡＣ
３２、３２Ａ  転送制御部
【図１】
2020187658.tif 000003
【図２】
2020187658.tif 000004
【図３】
2020187658.tif 000005
【図４】
2020187658.tif 000006
【図５】
2020187658.tif 000007
【図６】
2020187658.tif 000008
【図７】
2020187658.tif 000009