説明

コントローラ通信方法およびコントローラ通信装置

【課題】転写メモリを用いたコントローラ間の通信方法において、データの送受信を確認しながら通信を行うハンドシェイク通信を実現することを目的とする。
【解決手段】伝送路に接続されるコントローラと、他の複数のコントローラから前記伝送路を介して周期的に行われるデータ送信によって、受信エリア上のデータが逐次更新される転写メモリと、前記転写メモリの送信エリア上のデータを周期的に前記他の複数のコントローラへ送信する通信プロセッサと、送信元と受信先を設定した送信データを、前記転写メモリ上の前記送信エリアへ書き込むCPUとを有し、前記CPUまたは前記通信プロセッサは、前記転写メモリの前記受信エリアのデータ更新を検出し、前記CPUは、更新データが自コントローラ宛であったときは当該更新データの送信元に対しての応答を前記転写メモリに書き込むことを特徴とするコントローラ通信装置。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、転写メモリを用いたコントローラ通信方法およびコントローラ通信装置に関する。
【背景技術】
【0002】
複数のコントローラが接続されたネットワークシステムにおいて、各コントローラ間でデータを共有するための手法として、特許文献1に記載のような転写メモリを用いたサイクリックメモリ転写方法がある。
【0003】
例えば特許文献1記載の通信方法では、複数のコントローラの各々に転写メモリが設けられ、コントローラ間の通信を制御するローカルプロセッサによってコントローラ間の通信を行う。各ローカルプロセッサは、転写メモリ上の自コントローラに割り当てられたデータを他の計算機に向けて周期的にブロードキャストすることにより、転写メモリ領域のデータの一致化を図っている。
【0004】
このように、転写メモリを用いたサイクリックメモリ転写方法では、一定周期で転写メモリのデータが更新されるため、各コントローラのCPUは転写メモリへの読み出しと書き込みで複数のコントローラ間でデータを共有することができる。これにより、コントローラの通信負荷を軽減しコントローラの運用への影響が少ないため、一定周期での運用が求められるプラントシステム、例えば発電プラント制御システムのコントローラ間通信などに適用されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平7−219902号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
一方、プラントシステムのリスク軽減のため、コントローラ間の通信システムには機能安全が求められている。機能安全とは、故障が発生してもシステムや機器の安全性を確保できるように機能を実装しておくという考え方であり、機能安全の通信は1対1の要求−応答パケット通信を想定している。しかし、上記のような従来のサイクリックメモリ転写方法では、ブロードキャスト通信によって実現されていたため、1対1でのデータ授受や、要求−応答パケット通信のような送受信を確認しながらのハンドシェイク通信は実現できず機能安全の要件を満たせない。
【0007】
本発明は上記課題に鑑み、転写メモリを用いた複数のコントローラ間の通信方法において、データの送受信を確認しながら通信を行うハンドシェイク通信を実現することを目的とする。
【課題を解決するための手段】
【0008】
本発明は、伝送路に接続されるコントローラと、他の複数のコントローラから前記伝送路を介して周期的に行われるデータ送信によって、受信エリア上のデータが逐次更新される転写メモリと、前記転写メモリの送信エリア上のデータを周期的に前記他の複数のコントローラへ送信する通信プロセッサと、送信元と受信先を設定した送信データを、前記転写メモリ上の前記送信エリアへ書き込むCPUとを有し、前記CPUまたは前記通信プロセッサは、前記転写メモリの前記受信エリアのデータ更新を検出し、前記CPUは、更新データが自コントローラ宛であったときは当該更新データの送信元に対しての応答を前記転写メモリに書き込むことを特徴とするコントローラ通信装置によって解決される。
【発明の効果】
【0009】
本発明によれば、転写メモリを介して行うコントローラ通信において、各コントローラがデータの送受信を確認しながら通信を行うため、異常や故障が発生した際の検出精度を向上できる。
【図面の簡単な説明】
【0010】
【図1】第1の実施例であるコントローラシステムの全体構成図である。
【図2】転写メモリ104,転写メモリ204および転写メモリ304のデータ構成図およびブロック使用例である。
【図3】要求ブロックと応答ブロックの構成図である。
【図4】CPU102の構成図である。
【図5】本発明によりハンドシェイク通信を行うデータ送信側コントローラとデータ受信側コントローラの処理の流れを示すフロー図である。
【図6】第2の実施例の転写メモリのブロック使用例を示した図である。
【図7】第3の実施例のデータ送信側コントローラと受信側コントローラの処理フロー図である。
【図8】時間経過に伴うCPUとNCPの処理動作を表わした図である。
【図9】図8の時刻t1〜t8の各時点における転写メモリ上のデータ構成図である。
【図10】第3の実施例における要求ブロックと応答ブロックの構成図である。
【発明を実施するための形態】
【0011】
以下、図面を用いて本発明の実施例について説明する。
【実施例1】
【0012】
図1は本発明を適用した第1の実施例であるコントローラシステムの全体構成図を示したブロック図である。本発明によるコントローラシステムは、図示しない制御対象の演算・制御を行うコントローラ101と、制御対象を作動するアクチュエータ109と、制御対象の動作状態を検出するセンサ107と、センサ107から検出信号を受信しコントローラ101へ送る入力装置106と、コントローラ101からの制御信号をアクチュエータ109へ送信する出力装置208と、複数のコントローラを接続する伝送路901とによって構成されている。また、制御対象を制御するコントローラは、コントローラの情報処理を行う中央処理装置(CPU)102と、コントローラ間の通信処理を行いCPU102から直接読み書きされる転写メモリ104を具備する通信プロセッサ(NCP)103と、CPU102とNCP103をつなぐシステムバス105によって構成されている。本実施例のコントローラシステムは、コントローラ101,コントローラ201,コントローラ301,コントローラ401,コントローラ501,コントローラ601,コントローラ701,コントローラ801の8台(コントローラ201,コントローラ301,コントローラ401,コントローラ501,コントローラ601,コントローラ701については図示せず)が伝送路901を介して接続される。
【0013】
次に、本実施例のコントローラシステムにおけるコントローラ間の通信方法について説明する。ここでは、CPU102からデータを送信する例を挙げる。
【0014】
CPU102はセンサ107から受信した検出信号や、受信した検出信号に基づき演算を行い、伝送路に接続される複数のコントローラ間で共有が必要なデータ、もしくは伝送路に接続される特定のコントローラへのデータを要求ブロックとして作成し、転写メモリ104のコントローラ101に割り当てられた送信ブロックに書き込む。
【0015】
一方NCP103は、CPU102のタスクとは独立に、一定周期で伝送路に接続される全てのコントローラの転写メモリへ、転写メモリ104上のコントローラ101に割り当てられた送信ブロックのデータを同報送信する。CPU102によって転写メモリに書き込まれた要求ブロックは、上記のNCP103の周期的な転写によってコントローラ201〜コントローラ801の転写メモリ204〜転写メモリ804に転写される。
【0016】
CPU102〜CPU802は各々の転写メモリに転写された要求ブロックが、自分宛のものであるか判断し、自分宛であった場合に転写メモリから該当ブロックの読み出しを行う。要求ブロックを読み出したCPU202〜CPU802はCPU102に対して要求ブロックが正確に受信されたことを示す応答ブロックを作成し、転写メモリ204,転写メモリ304の各々に割り当てられた送信領域に書き込む。
【0017】
ここでNCP203〜NCP803は、NCP103と同様に一定周期で順々に伝送路に接続される全てのNCPの転写メモリへデータの転写を行っている。CPU202〜CPU802によって書き込まれた応答ブロックは、NCP203〜NCP803によって他のNCPの転写メモリへ転写される。
【0018】
CPU102は転写メモリ104に書き込まれた応答ブロックが自分宛であるか判断し、自分宛であった場合に転写メモリ104から応答ブロックを読み出す。CPU102は読み出した応答ブロックが、自身が書き込んだ要求ブロックに対するものか判断し、受信先がエラー無く要求ブロックを受信したことを確認する。
【0019】
このように、NCP103〜NCP803が各々の転写メモリを一定周期で他の転写メモリへ転写していくことで、データの授受を確認しながら複数のコントローラ間で通信すること、つまりハンドシェイク通信が可能になる。ここで、NCPの転写周期は任意に定めることができ、例えばNCP103,NCP203,NCP303,NCP403,NCP503,NCP603,NCP703,NCP803の順に一定周期で自身の転写メモリの転写を行うよう定める。
【0020】
図2に、転写メモリ104,転写メモリ204および転写メモリ304のデータ構成図およびブロック使用例を示す。転写メモリ104,転写メモリ204,転写メモリ304は、それぞれ自コントローラのCPUによって書き込まれる送信ブロック(転写メモリ104,転写メモリ204,転写メモリ304の斜線部)と、自コントローラのCPUによって読み出される受信ブロック(転写メモリ104,転写メモリ204,転写メモリ304の無地部)とにブロック分けされている。
【0021】
転写メモリ104の送信ブロックは要求ブロックを書き込むエリア(CPU1−2〜CPU1−8)と応答ブロックを書き込むエリア(CPU1−A1〜CPU1−A8)に分けられ、さらに受信先のCPUごとにブロック分けされている。受信ブロックも同様に、要求ブロックが転写されるエリア(CPU2−1〜CPU2−8,CPU3−1〜CPU3−8)と応答ブロックが転写されるエリア(CPU2−A1〜CPU2−A8,CPU3−A1〜CPU3−A8)に分けられ、さらに送信元のCPUごとにブロック分けされている。
【0022】
転写メモリ204の送信ブロックは要求ブロックを書き込むエリア(CPU2−1〜CPU2−8)と応答ブロックを書き込むエリア(CPU2−A1〜CPU2−A8)に分けられ、さらに受信先のCPUごとにブロック分けされている。受信ブロックも同様に、要求ブロックが転写されるエリア(CPU1−2〜CPU1−8,CPU3−1〜CPU3−8)と応答ブロックが転写されるエリア(CPU1−A1〜CPU1−A8,CPU3−A1〜CPU3−A8)に分けられ、さらに送信元のCPUごとにブロック分けされている。
【0023】
転写メモリ304の送信ブロックは要求ブロックを書き込むエリア(CPU3−1〜CPU3−8)と応答ブロックを書き込むエリア(CPU3−A1〜CP3−A8)に分けられ、さらに受信先のCPUごとにブロック分けされている。受信ブロックも同様に、要求ブロックが転写されるエリア(CPU1−2〜CPU1−8,CPU2−1〜CPU2−8)と応答ブロックが転写されるエリア(CPU1−A1〜CPU1−A8,CPU2−A1〜CPU2−A8)に分けられ、さらに送信元のCPUごとにブロック分けされている。
【0024】
例えば、CPU1−2はCPU102によってCPU202への要求ブロックが書き込まれるブロックであり、CPU1−A2はCPU102によってCPU202への応答ブロックが書き込まれるブロックである。
【0025】
次に転写メモリの各ブロックの使用例について説明する。図2の[1]はCPU102からCPU202へのデータを他のCPUの転写メモリに同報送信し、CPU202からCPU102へ応答を返す際のブロック使用例である。
【0026】
CPU102は転写メモリ104のCPU1−2の領域にCPU202への要求ブロックを書き込む。書き込まれた要求ブロックは、他の転写メモリのCPU1−2に転写される。CPU202は、転写メモリ204のCPU1−2の領域から要求ブロックを読み出し、応答として転写メモリ204のCPU2−A1の領域に応答ブロックを書き込む。書き込まれた応答ブロックは、他の転写メモリのCPU2−A1に転写される。応答ブロックが転写されたことを検出したCPU102は、転写メモリ104のCPU2−A1の領域から応答ブロックを読み出す。
【0027】
[2]では、CPU102からCPU302へのデータを他のCPUの転写メモリに同報送信し、CPU302からCPU102へ応答を返す際のブロック使用例である。CPU102は転写メモリ104のCPU1−3の領域にCPU302への要求ブロックを書き込む。書き込まれた要求ブロックは、他の転写メモリのCPU1−3に転写される。CPU302は、転写メモリ304のCPU1−3の領域から要求ブロックを読み出し、応答として転写メモリ304のCPU3−A1の領域に応答ブロックを書き込む。書き込まれた応答ブロックは、他の転写メモリのCPU3−A1に転写される。CPU102は、転写メモリ104のCPU3−A1の領域から応答ブロックを読み出す。
【0028】
同様に[3]に示すCPU202からCPU102へデータを送信する際は、CPU2−1およびCPU1−A2を使用し、[4]に示すCPU202からCPU302へデータを送信する際は、CPU2−3およびCPU3−A2を使用し、[5]に示すCPU302からCPU102へデータを送信する際は、CPU3−1およびCPU1−A3を使用し、[6]に示すCPU302からCPU202へデータを送信する際は、CPU3−2およびCPU2−A3を使用する。
【0029】
転写メモリ104,転写メモリ204および転写メモリ304上の送信ブロックのデータは各々の転写を制御するNCP103,NCP203およびNCP303によって一定周期で全ての転写メモリの受信ブロックへ転写される。そのため、転写メモリ104,転写メモリ204および転写メモリ304のデータは一致化され、一定周期で行われるメモリ転写によって逐次最新のデータに更新されていく。ここで、上記のようにCPUごとに送信ブロック,受信ブロックに分け、さらに要求ブロックと応答ブロック、受信先のCPUと送信元のCPUごとにブロック分けすることで、使用するデータエリアが重なることがない。そのため、処理前のデータが上書きされることや、他のCPU間のデータ通信によって自CPUが通信待ちになることがなく定周期のタスクを保ったままコントローラ間の通信を行うことができる。
【0030】
図3は、図2に示す要求ブロックと応答ブロックの構成例を示した図である。図3に示す要求ブロックおよび応答ブロックは、ヘッダーとして受信先アドレスを示すDA、送信元アドレスを示すSA、転写メモリのブロック位置を示すBLK#、シーケンス番号を示すSEQ#を持ち、テーラーとしては、データチェックコードであるCRC32を持つ。
また、要求ブロックには他のCPUへの送信データであるボディを持つ。応答ブロックは、DAに要求ブロックの送信元アドレス設定し、SAに自身のアドレスを設定し、SEQ#に受信した要求ブロックのSEQ#を設定し、BLK#に転写メモリのブロック位置を設定して送信元へ返すことで最小の応答となるためボディは必要ないが、付加情報としてボディを加えることも可能である。
【0031】
ここでCRC32は、CRC(Cyclic Redundancy Check:巡回冗長検査)の一種であり、データ長が274ビット以下であれば最高8ビットまでのエラー検出が可能である。
本ブロック構成例では、CRC32によるエラー検出を確実に行うため、ヘッダーを32ビット、ボディを192ビットに設定してあり、ヘッダーとボディを合わせたデータ長は224ビットとなっている。これにより、データ転送やCPUによる書き込み,読み出しよってデータ化け等が発生した場合においても8ビットまでのエラーであれば確実に検出できる。
【0032】
本ブロック構成例では、伝送路に接続されるコントローラの台数が8台であるため、DAおよびSAは8ビットに設定され、ボディは192ビット=24バイトに定められている。本ブロック構成例では、固定長のブロックの例を示したが、データが可変長である場合はヘッダーまたはボディにデータ長情報を加えることもできる。
【0033】
次に、本実施例のコントローラ間通信におけるCPUとNCPの時間経過に伴う動作について、図8,図9を用いて説明する。図8は、時間経過に伴うCPUとNCPの処理動作を表わした図であり、図9は図8の時刻t1〜t8の各時点における転写メモリ上のデータ構成図である。ここでは、簡易的にコントローラ101,コントローラ102,コントローラ103の三台のコントローラが伝送路を介して接続されるとし、CPU102からCPU202とCPU302へ異なるデータを送信する例を用いる。
【0034】
それぞれのCPUは所定の周期で、転写メモリからの読み書きを行っている。ここで、CPU102はCPU202への送信データをボディとした要求ブロックReq1−2を作成し、CPU1−2の領域に書き込む(図8のS1)。同様にCPU302への送信データをボディとした要求ブロックReq1−3を作成し、CPU1−3の領域に書き込む(図8のS1)。ここでReq1−2およびReq1−3のSEQ#は、CPU1−2およびCPU1−3の領域上のSEQ#を更新するように定める。これにより各CPUはSEQ#の更新を確認することで、新たにデータが書き込まれたことを検出できる。このとき時刻t1では、図9の(t1)に示すように転写メモリ104のCPU1−2およびCPU1−3の領域に当該要求ブロックが書き込まれた状態になる。
【0035】
一方、NCP103,NCP203,NCP303はCPUのタスクとは独立に、それぞれの転写メモリの送信ブロックを他の2つの転写メモリへ所定の周期で順々に同報送信している。NCP103は、自分の同報送信のタイミングになると転写メモリ104の送信ブロックを他の2つの転写メモリへ同報送信する(図8のS2)。ここで時刻t2では、図9の(t2)に示すように転写メモリ104の送信ブロックが、転写メモリ204,転写メモリ304の受信ブロックに転写され、データが共有化される。
【0036】
CPU202は、自身のタスクのタイミングで転写メモリ204の受信ブロックのSEQ#の更新をチェックする。CPU202は、自分宛のブロックであるCPU1−2のSEQ#の更新を検出し、Req1−2を読み出す(図8のS3)。CPU302も同様に、自身のタスクのタイミングで転写メモリ304の受信ブロックのSEQ#の更新をチェックする。CPU302は、自分宛のブロックであるCPU1−3のSEQ#の更新を検出し、Req1−3を読み出す(図8のS4)。
【0037】
CPU202は、Req1−2を正確に受信したことをCPU102に知らせるため、CPU102に対して応答ブロックAck2−1を作成し、転写メモリ204のCPU2−A1の領域に書き込む(図8のS5)。このとき、時刻t3では図9の(t3)に示すように転写メモリ204のCPU2−A1の領域に当該応答ブロックが書き込まれた状態になる。
【0038】
同様に、CPU302は、Req1−3を正確に受信したことをCPU102に知らせるため、CPU102に対して応答ブロックAck3−1を作成し、転写メモリ304のCPU3−A1の領域に書き込む(図8のS6)。このとき、時刻t4では図9の(t4)に示すように転写メモリ304のCPU3−A1の領域に当該応答ブロックが書き込まれた状態になる。
【0039】
NCP203は、自分の同報送信のタイミングになると転写メモリ204の送信ブロックを他の2つの転写メモリへ同報送信する(図8のS7)。ここで時刻t5では、図9の(t5)に示すように、転写メモリ204の送信ブロックが、転写メモリ104,転写メモリ304の受信ブロックに転写され、データが共有化される。
【0040】
CPU102は、図8のS1で転写メモリ104に書き込みを行った次のタスク周期になると、転写メモリ104の受信ブロックをチェックし、CPU2−A1のSEQ#の更新を検出し、Ack2−1を読み出す(図8のS8)。これにより、Req1−2がCPU202に正しく受信されたことを確認する。
【0041】
一方、NCP303は、自分の同報送信のタイミングになると転写メモリ304の送信ブロックを他の2つの転写メモリへ同報送信する(図8のS9)。ここで時刻t6では、図9の(t6)に示すように、転写メモリ304の送信ブロックが、転写メモリ104,転写メモリ204の受信ブロックに転写され、データが共有化される。
【0042】
CPU102は、自身のタスクのタイミングで転写メモリ104の受信ブロックをチェックし、CPU3−A1のSEQ#の更新を検出し、Ack3−1を読み出す(図8のS10)。これにより、Req1−3がCPU302に正しく受信されたことを確認する。
【0043】
データが正しく受信されたことを確認したCPU102は、次の送信データを転写メモリ104の送信ブロックに書き込み(図8のS11)、NCP103は自分の同報送信のタイミングで転写メモリ104の送信ブロックを他の2つの転写メモリへ同報送信する(図8のS12)。
【0044】
このように、各CPUは自身の処理周期で転写メモリへの読み書きを行うだけで、各々のコントローラと通信を行うことができる。転写メモリ上のデータは各NCPの周期的な同報送信によって逐次更新されるため、CPUが転写メモリに書き込みを行った次のタスクのタイミングで他のCPUからの応答を受信できる。これにより、CPUの通信待ちを発生させないハンドシェイク通信が可能になり、定周期でのコントローラの運用が可能になる。
【0045】
また、要求ブロックと応答ブロック、受信先のCPUと送信元のCPUごとにブロック分けすることで、使用するデータエリアが重なることがない。そのため、読み出し前のデータが上書きされることや、他のCPU間のデータ通信による通信待ちを防ぐ事ができる。
【0046】
ここで、一定周期経過後も応答がない場合にエラーとするタイムアウトを設定すれば、通信途中に生じた異常を検出することも可能である。
【0047】
図8,図9で示した例では、CPUが一定周期で転写メモリへのポーリングを行うよう設定しているが、NCPが転写メモリ上のSEQ#の更新を検出し、CPUへ通知するようにしてもよい。これによれば、CPUが適宜応答を返すことができるので、ハンドシェイク通信にかかる時間を短縮することができる。
【0048】
図4はCPU102の構成図である。CPU102は、MPU111と主メモリ112と補助メモリ113とCRC作成部114とによって構成される。またCPU202〜CPU802も同様に、MPU211〜MPU811と主メモリ212〜主メモリ812と補助メモリ213〜補助メモリ813とCRC作成部214〜CRC作成部814とによって構成されるが、図では省略する。主メモリ112には、コントローラ101の制御対象の制御情報や、駆動情報,演算結果、他のコントローラからの通信データ等が格納されている。CPU102は、主メモリ112から他のCPUへ送信が必要なデータを読み出し、DA,SA,BLK#,SEQ#を設定した要求ブロックを作成する。
【0049】
MPU111は、作成した要求ブロックを補助メモリ113上の転写メモリ104のブロック位置に対応したメモリ位置へ書き込む。ここで、補助メモリ113は、転写メモリ104と同様に要求ブロックを書き込むエリアと応答ブロックを書き込むエリアに分けられ、さらに送信元のCPUおよび受信先のCPUごとにブロック分けされている。
【0050】
CPU中にハードウェアとして実装されるCRC作成部114は、補助メモリ113への書き込みを検出し、書き込まれた要求ブロックに対してCRC32を算出し、CRC作成部114内のレジスタ115に格納する。MPU111は、レジスタ115からCRC32を読み出し、補助メモリ113に書き込まれた要求ブロックにCRC32を付し、最終的に転写メモリに書き込みを行う要求ブロックを形成する。形成された要求ブロックは、MPUによってNCP103内の転写メモリ104の送信ブロックに書き込まれる。
【0051】
またMPU111は、転写メモリ104の受信ブロックから、他のコントローラからの要求ブロックまたは応答ブロックを読み出し、補助メモリ113上の転写メモリ104のブロック位置に対応したメモリ位置へ書き込む。CRC作成部114は、補助メモリ113への書き込みを検出し、書き込まれた要求ブロックまたは応答ブロックのヘッダーとボディに対してCRC32を算出しレジスタ115に格納する。MPU111は、CRC作成部114によって算出されたCRC32と、読み出した要求ブロックまたは応答ブロックに付されたCRC32を照合し、データが正しく受信されたものか確認する。
【0052】
読み出したブロックが要求ブロックであったとき、MPU111は要求ブロックの送信元CPUへデータが正しく受信されたことを通知するため、送信元のCPUに対して応答ブロックを作成し、補助メモリ113に書き込む。CRC作成部114は補助メモリ113への書き込みを検出し、書き込まれた応答ブロックに対してCRC32を算出し、CRC作成部114内のレジスタ115に格納する。MPU111は、レジスタ115からCRC32を読み出し、補助メモリ113に書き込まれた応答ブロックにCRC32を付し、最終的に転写メモリ104に書き込みを行う応答ブロックを形成する。
【0053】
また、読み出したブロックが応答ブロックであったときは、応答ブロックのヘッダーから自身が送信した要求ブロックが受信先CPUに正しく受信されたことを確認することができる。また、CRC作成部114によって算出されたCRC32と、読み出した応答ブロックに付されたCRC32を照合することで、応答ブロック自体のデータ化けを検出できる。
【0054】
また、本実施例のCRC作成部114はハードウェアとして実装され、MPU111による補助メモリ113への書き込みを検出し、自動的に書き込まれたデータに対してCRC32を算出し、レジスタ115に格納する。これによりCRC32の照合にかかるMPU111の負荷を軽減することができる。
【0055】
図5は、本発明によりハンドシェイク通信を行うデータ送信側コントローラとデータ受信側コントローラの処理の流れを示すフロー図である。ここでは、コントローラ101が送信側コントローラ、コントローラ201が受信側コントローラとし、NCP103およびNCP203がSEQ#の更新を検出し、CPU102およびCPU202へ通知する例を用いて説明する。
【0056】
送信側コントローラ101のCPU102は、送信データをボディとし、ヘッダーとしてDA,SA,BLK#,SEQ#を設定した要求ブロックを作成し補助メモリ113へ格納する(S1)。
【0057】
CPU102は、ヘッダーとボディに対してCRC32を作成する(S2)。次にCPU102は、テーラーとしてCRC32を付したボディを転写メモリ104の送信ブロックに書き込む(S3)。その後ヘッダーを転写メモリ104へ書き込み(S4)、送信側コントローラのNCP103は、転写メモリ104に書き込まれた要求ブロックを受信側コントローラ202の転写メモリ204へ送信する(S5)。
【0058】
データを受信した受信側コントローラ102のNCP203は、要求ブロックのSEQ#の更新を検出し、DAが自コントローラであるか判断し、DAが自コントローラであったとき受信側コントローラのCPU202へ通知する(S6)。
【0059】
通知を受けたCPU202は要求ブロックを補助メモリ213へ読み出す(S7)。CPU202は、読み出した要求ブロックのBLK#と補助メモリ213上の位置の一致を確認する(S8)。位置が一致しなった場合は(S7)から1回リトライする。再度不一致だった場合は、エラーを検出する(S9)。
【0060】
BLK#と補助メモリ213上の位置が一致したら、要求ブロックのヘッダーとボディに対してCRC32を作成し、要求ブロックに付されたCRC32と照合する(S10)。CRC32が不一致な場合、(S7)から1回リトライする。再度不一致だった場合は、エラーを検出する(S11)。
【0061】
CRC32が一致した場合、要求ブロックのボディを主メモリ212に格納し、要求ブロックに対する応答ブロックを作成し、補助メモリ213へ格納する(S12)。このとき応答ブロックのヘッダーには、DAへ要求ブロックのSAを複写し、SAへ自コントローラ201のアドレスを設定し、BLK#へ要求ブロックのBLK#を複写し、SEQ#へ要求ブロックのSEQ#を複写する。次に、受信側コントローラ201のCPU202は作成した応答ブロックに対しCRC32を作成し、CRC32を付したボディを転写メモリ204の送信ブロックに書き込む(S14)。その後ヘッダーを転写メモリ204へ書き込み、受信側コントローラ201のNCP203は、転写メモリ204に書き込まれた応答ブロックを送信側コントローラ101の転写メモリ104へ送信する(S15)。
【0062】
送信側コントローラ104のNCP103は、受信した転写メモリ104上の応答ブロックのSEQ#更新をチェックし、一定時間内に自身が送信した要求ブロックのBLK#とSEQ#が一致するか確認する(S16)。一定時間内に一致しなかった場合は、タイムアウトとなる。
【0063】
SEQ#の更新を検出し、DAが自コントローラで、自身が送信した要求ブロックのBLK#とSEQ#が一致した場合はCPU102へ通知する(S17)。通知を受けたCPU102は応答ブロックを読み出し(S18)、応答ブロックのヘッダーに対してCRC32を作成し、応答ブロックに付されたCRC32と照合する(S19)。
【0064】
CRC32が不一致な場合は、(S18)から1回リトライする。再度不一致だった場合は、エラーを検出する(S20)。CRC32が一致した場合に、ハンドシェイク通信完了となる(S21)。
【0065】
(S1)〜(S21)までの処理で、上記エラーを検出した場合、CPU102およびCPU202はエラーが検出されたデータを主メモリ112および主メモリ212へは格納せず、当該データなしでコントローラの運用が可能か判断する。運用が可能であると判断されたときは、続けてコントローラの運用を維持する。運用が不可能であると判断されたときは、安全にコントローラを停止させる。
【0066】
ここで、NCPは転写メモリのSEQ#の更新を検出し、CPUへ通知を行っているが、CPUが一定周期で転写メモリ上のSEQ#の更新をポーリングしてもよい。このとき、CPUが転写メモリへ書き込みを行う周期よりも、SEQ#の更新をポーリングする周期を短く設定することで、書き込み周期の間で必ずSEQ#の更新チェックがされるため、応答待ちを軽減できる。
【0067】
次に、本発明によるエラー検出について具体例を挙げて説明する。発電プラントの制御システムとして、図1のように伝送路に8台のコントローラが接続され、コントローラ101がボイラの駆動制御を行っているとする。
【0068】
以下、コントローラ101が制御を行うボイラの駆動情報を、コントローラ201に送信する例について図5を用いて説明する。図5において、送信側コントローラはコントローラ101、受信側コントローラはコントローラ201である。コントローラ101はセンサ107から得られたボイラの駆動情報や、駆動情報から演算された制御情報などを主メモリに格納する。コントローラ101のCPU102は、主メモリからボイラの駆動情報を読み出し、駆動情報をボディとして、ヘッダーを設定した要求ブロックを補助メモリへ格納する(S1)。このとき、DAはCPU202、SAはCPU102に設定される。
【0069】
CPU102は、格納されたヘッダーとボディに対してCRC32を作成する(S2)。次にCPU102は、テーラーとしてCRC32を付したボディを転写メモリ104の送信ブロックに書き込む(S3)。その後ヘッダーを転写メモリへ書き込み(S4)、コントローラ101のNCP103は、転写メモリに書き込まれた要求ブロックをコントローラ201の転写メモリ204へ送信する(S5)。
【0070】
ここで、コントローラ101からコントローラ201へのデータ送信で異常が発生し、ボディである駆動情報のデータがデータ化けを起こしたとする。データを受信したコントローラ201のNCP203は、要求ブロックのSEQ#の更新を検出し、DAが自コントローラであるか判断し、DAが自コントローラであったときコントローラ201のCPU202へ通知する(S6)。通知を受けたCPU202は要求ブロックを補助メモリへ読み出す(S7)。CPU202は、読み出した要求ブロックのBLK#と補助メモリ上の位置の一致を確認する(S8)。位置の確認後、要求ブロックのヘッダーとボディに対してCRC32を作成し、要求ブロックに付されたCRC32と照合する(S10)。
【0071】
このとき、ボディである駆動情報はデータ化けを起こしているため、作成したCRC32と要求ブロックに付されたCRC32は不一致となり(S7)から1回リトライする。
再度転写メモリから読み出した要求ブロックに対してCRC32を作成,照合し、不一致によりエラーを検出する。
【0072】
このように、データの送受信の間で起こるエラーをCRC32の照合により検出することができる。また各CPUは、転写メモリの読み出し、書き込み毎にCRC32を作成し照合・付与を行うので、CPUから転写メモリへのデータ書き込み、転写メモリからCPUへのデータ読み出し、NCP間の通信、いずれの処理で異常が起こってもエラーを検出できるだけでなく、転写メモリ内の時間経過などによるデータ化けに対してもエラーを検出できる。
【0073】
加えて、本実施例ではシーケンス番号を示すSEQ#の更新を確認しながらデータの送受信を行うため、同じ処理の反復,データの消失,別処理の挿入,処理の誤順等のエラーを検出可能である。同様に、ハンドシェイク通信によって逐次データの送受信を確認しながら処理を行うため、データの消失,処理の遅延,誤データによる成り済まし等のエラーを検出できる。また、上記ハンドシェイク通信のタイムアウトによっても、データの消失、処理の遅延を検出可能である。
【0074】
以上本実施例では、転写メモリを介して行うコントローラ通信において各CPUが、データが正しく送受信されたか確認しながら通信を行うため、通信上の異常や故障が起きた場合でも、速やかに検出できる。
【0075】
また、CPUは各転写メモリの特定のブロックへの書き込み、特定のブロックからの読み出しという少ない負荷で、複数のコントローラの中から任意のコントローラと通信できる。ここで、転写メモリは送受信を行うCPUごとにブロックわけされるため、一度の同報送信で、複数のコントローラと1対1の通信を実現できる。同時に要求ブロック,応答ブロックごとに書き込みエリアが分けられるため、一度の同報送信で複数のコントローラとの応答・要求の両方を含むデータ通信が実現できる。さらに、使用するデータエリアが重なることがないため、処理前のデータが上書きされることや、特定のCPUとのデータ通信によって他のCPUとの通信が遅れることがない。
【0076】
また、通常NCPによる転写周期はCPUの処理周期に比べ速く設定されており、逐次新しいデータに更新されていく。そのため、CPUは通信待ちを軽減でき、定周期のタスクを保ったままコントローラを運用できる。
【実施例2】
【0077】
本発明の第2の実施例を図面を用いて説明する。本実施例では、同一のデータを複数のCPUへ送信するのに、1つの要求ブロックで送信を行う。例えば、CPU102からCPU202とCPU302へと同じデータを渡すには、CPU102から1つの要求ブロックでCPU202,CPU302へ送信する。これには、要求ブロックの受信先アドレスを示すDAを複数のCPUを示すグループアドレスに設定し、受信側はグループアドレスが自CPUを含むものか判定する。8台のコントローラが伝送路に接続され、受信先アドレスを示すDAが8ビットであるとき、各ビットがそれぞれのコントローラを表わし、CPU202とCPU302のビットをONとすることで、CPU202とCPU302への送信データを示すことができる。応答ブロックは、CPU202からCPU102へと、CPU302からCPU102へと1対1で返す。
【0078】
図6は、本実施例による転写メモリの各ブロックの使用例を示した図である。尚、この他の構成については実施例1と同様である。[1]はCPU102からCPU202とCPU302へデータを送信する際のブロック使用例である。
【0079】
CPU102はヘッダーのDAにCPU202とCPU302を示すグループアドレスを設定し、転写メモリ104のCPU1−2の領域に要求ブロックを書き込む。書き込まれた要求ブロックは、転写メモリ204および転写メモリ304のCPU1−2の領域に転写される。CPU202は、転写メモリ204のCPU1−2の領域から要求ブロックを読み出し、応答として転写メモリ204のCPU2−A1の領域に応答ブロックを書き込む。同様にCPU302は、転写メモリ304のCPU1−2の領域から要求ブロックを読み出し、応答として転写メモリ304のCPU3−A1の領域に応答ブロックを書き込む。書き込まれた応答ブロックは、転写メモリ104のCPU2−A1およびCPU3−A1の領域に転写される。CPU102は、転写メモリ104のCPU2−A1およびCPU3−A1の領域から応答ブロックを読み出す。
【0080】
同様に[2]に示すCPU2からCPU102とCPU302へデータを送信する際は、CPU2−1,CPU1−A2およびCPU3−A2を使用し、[3]に示すCPU302からCPU102とCPU202へデータを送信する際は、CPU3−1,CPU1−A3およびCPU2−A3を使用する。
【0081】
このように、要求ブロックの受信先アドレスを示すDAを複数のCPUを示すグループアドレスに設定することで、効率よく複数のCPUへの通信を行うことができる。また、DAの全ビットをONとすると、全CPUへの送信データを示すことができる。
【実施例3】
【0082】
本発明の第3の実施例を図面を用いて説明する。図10は、本実施例における要求ブロックと応答ブロックの構成図である。本実施例では、送信データ量が多く1つの要求ブロックに収まらない場合に、図10に示すように1つのハンドシェイク通信に要求ブロックを2つ使用しデータの送信を行う。このとき、2つの要求ブロックに対して1つ応答ブロックを返し、ハンドシェイク通信とする。このとき応答ブロックのヘッダーには1つ目の要求ブロックのヘッダー情報を代表して設定する。
【0083】
図7は、本発明の第3の実施例であるデータ送信側コントローラと受信側コントローラの処理フロー図である。ただし、コントローラ101が送信側コントローラ、コントローラ201が受信側コントローラとする。送信側コントローラ101のCPU102は、1つのブロックに収まらない送信データに対し、送信データを2つにボディに分割して、2つのブロックのDA,SA,BLK#,SEQ#を設定し2つの要求ブロックを補助メモリ113へ格納する(S1)。CPU102は、1つ目の要求ブロックのヘッダーとボディに対してCRC32を作成する(S2)。次に、作成したCRC32を付した1つ目のボディを転写メモリ104の送信ブロックに書き込む(S3)。次にCPU102は、分割した2つ目の要求ブロックのヘッダーとボディに対してCRC32を作成する(S4)。次にCPUは、作成したCRC32を付した2つ目の要求ブロックを転写メモリ104の送信ブロックに書き込む(S5)。その後2つの要求ブロックに設定したヘッダーを転写メモリ104へ書き込み(S6)、送信側コントローラ101のNCP103は、転写メモリ104に書き込まれた要求ブロックを受信側コントローラ201の転写メモリ204へ送信する(S7)。
【0084】
データを受信した受信側コントローラ201のNCP203は、2つの要求ブロックのSEQ#の更新を検出し、DAが自コントローラであるか判断し、DAが自コントローラであったとき受信側コントローラ201のCPU202へ通知する(S8)。通知を受けたCPU202は2つの要求ブロックを補助メモリ213へ読み出す(S9)。CPU202は、読み出した要求ブロックのBLK#と補助メモリ213上の位置の一致を確認する(S10)。位置が一致しなった場合は(S9)から1回リトライする。再度不一致だった場合は、エラーを検出する(S11)。BLK#と補助メモリ上の位置が一致したら、1つ目の要求ブロックのヘッダーとボディに対してCRC32を作成し、1つ目の要求ブロックに付されたCRC32と照合する(S12)。CRC32が不一致な場合、(S9)から1回リトライする。再度不一致だった場合は、エラーを検出する(S13)。
【0085】
CRC32が一致した場合、2つ目の要求ブロックのヘッダーとボディに対してCRC32を作成し、2つ目の要求ブロックに付されたCRC32と照合する(S14)。CRC32が不一致な場合、(S15)から1回リトライする。再度不一致だった場合は、エラーを検出する。
【0086】
CRC32が一致した場合、2つの要求ブロックのボディを主メモリ212に格納し、2つの要求ブロックに対して1つの応答ブロックを作成し、補助メモリ213へ格納する(S16)。
このとき応答ブロックのヘッダーには、DAへ1つ目の要求ブロックのSAを複写し、SAへ自コントローラ201を設定し、BLK#へ1つ目の要求ブロックのBLK#を複写し、SEQ#へ1つ目の要求ブロックのSEQ#を複写する。次に、受信側コントローラ201のCPU202は作成した応答ブロックに対しCRC32を作成し、CRC32を付した応答ブロックを転写メモリ204の送信ブロックに書き込む(S17)。受信側コントローラ201のNCP203は、転写メモリ204に書き込まれた応答ブロックを送信側コントローラ101の転写メモリ104へ送信する(S18)。
【0087】
その後送信側コントローラ101は、受信側コントローラ201からデータを受信し、図5のS16以降と同様の処理を行う。ハンドシェイク通信過程で、上記エラーを検出した場合、CPU102およびCPU202はエラーが検出されたデータを主メモリ112および主メモリ212へは格納せず、当該データなしでコントローラの運用が可能か判断する。運用が可能であると判断されたときは、続けてコントローラの運用を維持する。運用が不可能であると判断されたときは、安全にコントローラを停止させる。
【0088】
本実施例では、送信データが大きくなった場合においても要求ブロックを2つ使用することでCRC32によるデータチェック機能を保ったままハンドシェイク通信を行うことができる。また、本実施例では2つの要求ブロックを使用したが、複数個の要求ブロックを使用するよう設定してもよい。
【0089】
以上本発明によれば、転写メモリを介して行うコントローラ通信において各CPUが、データが正しく送受信されたか確認しながら通信を行うため、通信上の異常や故障が起きた場合でも、速やかに検出できる。ここで、機能安全規格IEC61508で求められる機能安全の1つ要件として以下の故障に対策することが挙げられる。
【0090】
1.データ化け (Corrupted Date)
2.反復 (Repetition)
3.消失 (Loss)
4.挿入 (Insertion)
5.誤順 (Incorrect Sequence)
6.遅延 (Delay)
7.成り済まし (Masquerade)
これらの対策手段として、本発明では以下の手段を転写メモリの通信に用いて機能安全の要件を満たすコントローラ通信方法を実現できる。
【0091】
1.CRCによるデータ化け検出
2.シーケンス番号による反復,消失,挿入,誤順の検出
3.タイムアウトによる、消失,遅延の検出
4.受信先,送信元のハンドシェイク通信による消失,遅延,成り済ましの検出
【0092】
上記のように、転写メモリを用いた複数のコントローラ間の通信方法において、データの送受信を確認しながらのハンドシェイク通信により、機能安全の要件を満たすコントローラ間通信方法を実現可能である。また、CPUは各転写メモリの特定のブロックへの書き込み、特定のブロックからの読み出しという少ない負荷で、任意のコントローラと通信できる。
【符号の説明】
【0093】
101〜801 コントローラ
102〜802 CPU
103〜803 NCP
104〜804 転写メモリ
105〜805 システムバス
106〜806 入力装置
107〜807 センサ
108〜808 出力装置
109〜809 アクチュエータ
111〜811 MPU
112〜812 主メモリ
113〜813 補助メモリ
114〜814 CRC作成部
115〜815 レジスタ
901 伝送路

【特許請求の範囲】
【請求項1】
伝送路に接続される複数のコントローラのそれぞれに備えられた通信プロセッサは、各コントローラが有する転写メモリの自コントローラに割り当てられた送信領域上のデータを、他の複数のコントローラの転写メモリの受信領域へ同報送信し、各コントローラの転写メモリ上のデータを逐次更新するように各々のコントローラが所定の周期で順々に前記同報送信し、
一のコントローラに備えられるCPUは、送信元アドレス,受信先アドレス,処理順序を示すシーケンス番号を付した要求ブロックを作成し、前記転写メモリの自コントローラに割り当てられた送信領域上の要求ブロックに前記作成した要求ブロックを上書きし、
前記一のコントローラの通信プロセッサは、前記周期的な同報送信によって複数のコントローラの転写メモリ上の前記要求ブロックを更新し、
他のコントローラに備えられるCPUは、自転写メモリの受信領域上の要求ブロックの前記シーケンス番号が更新され、前記受信先アドレスが自コントローラであったとき、前記要求ブロックを前記受信領域から読み出し、送信元アドレス,受信先アドレスとして前記一のコントローラのアドレス,シーケンス番号を付した応答ブロックを作成し、前記転写メモリの自コントローラに割り当てられた送信領域上の応答ブロックに前記作成した応答ブロックを上書きし、
前記他のコントローラの通信プロセッサは、前記周期的な同報送信によって複数のコントローラの転写メモリ上の前記応答ブロックを更新し、
前記一のコントローラに備えられるCPUは、自転写メモリの受信領域上の応答ブロックの前記シーケンス番号が更新され、前記受信先アドレスが自コントローラであったとき、前記応答ブロックを前記受信領域から読み出し、前記一の要求ブロックが受けられたことを確認することを特徴とするコントローラ通信方法。
【請求項2】
請求項1において、
前記送信領域は、前記要求ブロックを書き込むエリアと前記応答ブロックを書き込むエリアとからなり、それぞれのエリアは受信先のコントローラごとに領域分けされ、
前記受信領域は、前記要求ブロックが書き込まれるエリアと前記応答ブロックが書き込まれるエリアとからなり、それぞれのエリアは送信元のコントローラごとに領域分けされることを特徴とするコントローラ通信方法。
【請求項3】
請求項1において、
前記要求ブロックおよび前記応答ブロックには、前記要求ブロックまたは前記応答ブロックから算出されるデータチェックコードが付されることを特徴とするコントローラ通信方法。
【請求項4】
請求項3において、
前記データチェックコードは32ビットのCRCであり、
前記要求ブロックまたは前記応答ブロックからデータチェックコードを除いたデータ長が274ビット以下で、8ビットまでのエラーを検出することができることを特徴とするコントローラ通信方法。
【請求項5】
請求項3において、
前記コントローラにチェックコード算出部をハードウェアとして備え、
前記チェックコード算出部は、指定メモリへの書き込みおよび指定メモリからの読み出しに基づき、書き込んだブロックおよび読み出したブロックから前記データチェックコードを算出することを特徴とするコントローラ通信方法。
【請求項6】
請求項1において、
前記要求ブロックの受信先アドレスを複数のコントローラを示すアドレスに設定し、
当該要求ブロックを読み出した前記複数のコントローラ各々は、前記送信元アドレスに自コントローラを設定し、前記受信先アドレスに当該要求ブロックを作成した前記コントローラを設定した前記応答ブロックを作成することを特徴とするコントローラ通信方法。
【請求項7】
請求項1において、
前記通信プロセッサは、前記シーケンス番号の更新を検出し、前記シーケンス番号が更新された前記要求ブロックまたは前記応答ブロックの前記受信先アドレスが当該通信プロセッサに接続される前記コントローラであるとき、当該コントローラのCPUに割り込みを通知することを特徴とするコントローラ通信方法。
【請求項8】
請求項1において、
前記コントローラのCPUは、所定の周期で前記要求ブロックを前記転写メモリへ上書きし、前記転写メモリへ上書きを行う周期より早い周期で前記受信領域のシーケンス番号が更新されたかどうかポーリングを行い、前記シーケンス番号が更新され、前記受信先アドレスが自コントローラであったとき、前記要求ブロックまたは前記応答ブロックを読み出すことを特徴とするコントローラ通信方法。
【請求項9】
請求項1において、
複数の前記要求ブロックの送信元アドレスが同一のコントローラであり、同周期で前記複数の要求ブロックの前記シーケンス番号が更新されたとき、
前記複数の要求ブロックを読み出した前記コントローラは、前記複数の要求ブロックに対し一つの前記応答ブロックを作成することを特徴とするコントローラ通信方法。
【請求項10】
伝送路に接続されるコントローラと、
他の複数のコントローラから前記伝送路を介して周期的に行われるデータ送信によって、受信エリア上のデータが逐次更新される転写メモリと、
前記転写メモリの送信エリア上のデータを周期的に前記他の複数のコントローラへ送信する通信プロセッサと、
送信元と受信先を設定した送信データを、前記転写メモリ上の前記送信エリアへ書き込むCPUとを有し、
前記CPUまたは前記通信プロセッサは、前記転写メモリの前記受信エリアのデータ更新を検出し、
前記CPUは、更新データが自コントローラ宛であったときは当該更新データの送信元に対しての応答を前記転写メモリに書き込むことを特徴とするコントローラ通信装置。
【請求項11】
請求項10において、
前記転写メモリ上の前記送信エリアは、受信先のコントローラごとに領域分けされ、
前記転写メモリ上の前記受信エリアは、送信元のコントローラごとに領域分けされることを特徴とするコントローラ通信装置。
【請求項12】
請求項10において、
前記送信エリアに書き込まれる送信データには、前記送信データから算出されるデータチェックコードが付されることを特徴とするコントローラ通信装置。
【請求項13】
請求項12において、
前記データチェックコードは32ビットのCRCであり、
前記送信データは274ビット以下で、8ビットまでのエラーを検出することができることを特徴とするコントローラ通信装置。
【請求項14】
プラント内の運用装置の駆動制御を行う複数のコントローラを伝送路に接続し、
送信側コントローラは、自身が制御する制御対象の駆動情報、または駆動情報に基づき演算された制御情報を要求情報として送信側コントローラに備えられる転写メモリの自コントローラに割り当てられた送信領域に書き込み、
各コントローラが、それぞれに備えられる前記転写メモリの自コントローラに割り当てられた送信領域のデータを、複数のコントローラへ所定の周期で順々に同報送信し、
前記要求情報は、前記同報送信によって受信側コントローラの転写メモリに送信され、 前記受信側コントローラは、前記要求情報を自身の転写メモリから読み出し、前記要求情報に対する応答情報を自身の転写メモリの自コントローラに割り当てられた送信領域に書き込み、
前記応答情報は、前記同報送信によって送信側コントローラの転写メモリに送信され、 前記送信側コントローラは、前記応答情報を自身の転写メモリから読み出すことを特徴とするコントローラ通信方法。
【請求項15】
少なくとも3のコントローラが通信回線を介して接続されるものであって、
前記3のコントローラの各々は演算部と通信部を有し、
前記各々の通信部は転写メモリを有し、
前記各々の転写メモリは送信ブロックと受信ブロックを有し、
前記各々の受信ブロックは、前記3のコントローラのうちの他の2のコントローラの一方のコントローラに係る第1の受信領域と、他方のコントローラに係る第2の受信領域を有し、
前記各々の送信ブロックは、前記一方のコントローラに係る第1の送信領域と、前記他方のコントローラに係る第2の送信領域を有し、
前記各々の演算部は、自コントローラに係る前記送信ブロックに情報を書き込むと共に、前記受信ブロックから情報を読み出し、
前記各々の通信部は互いに衝突しないように所定のタイミングで送信を行い、
前記送信においては、前記通信部のうちの所定のものが自コントローラの前記第1の送信領域と第2の送信領域に格納される情報を通信回線介して同報的に送信するに際して、他の通信部は、前記通信回線を介して送信された情報を対応する前記第1の受信領域あるいは第2の受信領域に格納し、
前記各々の通信部において、前記第1の送信領域に前記一方のコントローラからの情報に対する応答が、前記第2の送信領域に前記他方のコントローラからの情報に対する応答が格納されることを特徴とするコントローラ通信装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate