(57)【特許請求の範囲】
【請求項１】
２重化して冗長性を持たせた１乃至複数組のＣＰＵを持ち、稼動側ＣＰＵと待機側ＣＰＵとの間でデータの等値化を行うプログラマブルコントローラにおいて、
前記稼動側ＣＰＵは、
等値化対象としているデータを収集する等値化データ収集手段と、
前記等値化データ収集手段が収集したデータを等値化フレームによって前記待機側ＣＰＵに送信する等値化データ送信手段と、
前記等値化データ収集手段による収集処理中に定周期タスクを開始するタイミングになった時、該収集処理完了後前記等値化データ送信手段によるデータの送信開始前に該定周期タスクを実行する定周期タスク実行手段と
を備えることを特徴とするプログラマブルコントローラ。
【請求項２】
前記等値化データ送信手段は、前記等値化データ収集手段が収集したデータを複数の等値化フレームに分けて送信することを特徴とする請求項１に記載のプログラマブルコントローラ。
【請求項３】
前記等値化データ送信手段は、プログラマブルコントローラの構成に基づいて前記等値化フレームの大きさを調整することを特徴とする請求項１又は２に記載のプログラマブルコントローラ。
【請求項４】
前記等値化データ送信手段は、前記等値化フレームのシリアルナンバー及びフレームナンバーを格納し、前記待機側ＣＰＵは、受信した等値化フレームの前記シリアルナンバー及びフレームナンバーを調べて、整合性が確認された時のみ等値化データを分配する等値化データ分配手段を備えることを特徴とする請求項２又は３に記載のプログラマブルコントローラ。
【請求項５】
前記整合性をチェックする情報は、どの収集処理による等値化データかを表すフレームナンバーと複数に分割したうちの何番目の等値化フレームかを示すシリアルナンバーであること特徴とする請求項４に記載のプログラマブルコントローラ。
【請求項６】
前記待機側ＣＰＵは、前記等値化データ分配手段が分配している間に受信した等値化フレーム内のデータを該分配しているデータの格納領域とは異なるダミー領域に格納するフレーム受信手段を更に備えることを特徴とする請求項４又は５に記載のプログラマブルコントローラ。
【請求項７】
前記等値化データ送信手段は、前記等値化データ収集手段が収集したデータを全て送信後、該前記等値化データ収集手段が次の収集処理を完了するまでの間、ダミーフレームを送信することを特徴とする請求項１乃至６のいずれか１に記載のプログラマブルコントローラ。
【請求項８】
前記等値化データ送信手段は、等値化フレームの送信中に送信異常が発生した時、残りの等値化フレームの送信を止めて、前記等値化データ収集手段に次の収集処理の開始を指示することを特徴とする請求項２乃至７のいずれか１に記載のプログラマブルコントローラ。
【請求項９】
前記等値化データ収集手段は、アプリケーションデータ領域からフレーム送受信作業領域へ等値化データを収集するとき、前記アプリケーションデータ領域のどの位置のデータを前記フレーム送受信作業領域のどの位置に収集するかを記録している転送テーブルを参照して行ない、前記等値化データ分配手段は、前記転送テーブルと同じ転送テーブルを用いてデータの分配を行うことを特徴とする請求項４乃至８のいずれかに記載のプログラマブルコントローラ。
【請求項１０】
前記等値化データ収集手段及び等値化データ分配手段は、等値化対象となるデータの転送元若しくは転送先の領域での配置のされ方に基づいて、データの収集・分配時のデータ転送効率が最適な転送方式の選択することを特徴とする請求項４乃至９のいずれかに記載のプログラマブルコントローラ。
【請求項１１】
前記等値化データ収集手段は、デフォルトタスクの終了のタイミングに基づいて前記収集処理の開始のタイミングを決定することを特徴とする請求項１乃至１０のいずれかに記載のプログラマブルコントローラ。
【請求項１２】
前記等値化データ収集手段は、等値化データ送信手段が等値化フレームを送信中に前記定周期タスクを開始するタイミングになった時、その等値化フレームの送信処理完了後、次の等値化フレームの送信開始前に該定周期タスクを実行することを特徴とする請求項１乃至１１に記載のプログラマブルコントローラ。
【請求項１３】
２重化して冗長性を持たせた１乃至複数組のＣＰＵを持つプログラマブルコントローラにおける、稼動側ＣＰＵと待機側ＣＰＵとの間でのデータの等値化方法であって、前記稼動側ＣＰＵは、等値化対象としているデータを収集し、前記収集したデータを格納した等値化フレームを前記待機側ＣＰＵに送信し、前記収集中に定周期タスクを開始するタイミングになった時、該収集が完了した後、前記等値化フレームの送信前に該定周期タスクを実行することを特徴とする等値化方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、産業用制御装置であるプログラマブルコントローラにおける入出力制御方式に関し、更に詳しくは制御データの等値化に関する。
【０００２】
【従来の技術】
現在、プラント、工場などでは、機械や装置のシーケンス制御に多くのプログラマブルコントローラ（以下ＰＣという）を用い、ＦＡ（ファクトリーオートメーション）化を実現している。
【０００３】
図１６に一般的なマルチＣＰＵ構成のＰＣの例を示す。
１つのＰＣは、プログラムの実行やデータの演算処理等を行うＣＰＵモジュールや、制御機器とプロセスデータの入出力を行うＩ／Ｏモジュール及び不図示の通信モジュールが複数接続されて構成されている。これら各モジュールは、システムバス１０１を介して互いにデータのやりと合りを行い、接続機器の制御処理を行う。
【０００４】
ＰＣが複数のＣＰＵモジュール１０２を備えるマルチＣＰＵ構成の場合、各ＣＰＵモジュール１０２はそれぞれ個別に動作する。よって従来から行われている入出力制御方式では、ＣＰＵモジュール１０２によるＩ／Ｏモジュール１０３などからのプロセスデータの取込みや、Ｉ／Ｏモジュールなどへのプロセスデータの出力を行う入出力処理は、各ＣＰＵモジュール１０２間で非同期に行われる。
【０００５】
このため各ＣＰＵモジュール１０２間では同期したデータを使用した処理は行っていない。さらにＩ／Ｏモジュール１０３へのプロセスデータの出力についても、各ＣＰＵモジュール１０２は独自のタイミングで出力しているので、Ｉ／Ｏモジュール１０３へのプロセスデータの出力は各ＣＰＵモジュール１０２間で同期していない。
【０００６】
各Ｉ／Ｏモジュール１０３は、接続機器からのプロセスデータの出力をリアルタイムで行い、またＣＰＵモジュール１０２からのデータをリアルタイムで必要とする。よって、複数のＣＰＵモジュール１０２が連携して処理を行う場合には、ＣＰＵモジュール１０２間やタスク間で同期が行われていないと異なるデータを同じデータと認識して処理してしまうなどの問題が生じる場合がある。
【０００７】
上記問題点を考慮し、ＣＰＵモジュール間やマルチタスク処理時のタスク間で同期してデータのやり取りを行うことを可能としたものとして、本出願と同一出願人による特開平１１−３３８５２３号「プログラマブルコントローラにおける入出力制御方式」（以下先願の方式という）がある。
【０００８】
先願の方式では、各ＣＰＵモジュール１０２内で、システムバス１０１の転送速度と同じ速度で実行プロセッサにタクト割込みを一定周期で発生させ、各ＣＰＵモジュール１０２内の実行プロセッサが、このタクト割込みの発生周期（タクト周期）に同期させてＩ／Ｏモジュール１０３に対する入出力処理を行うことによってＣＰＵモジュール１０２間の同期処理を実現している。
【０００９】
【発明の解決しようとする課題】
ところで、システムの信頼性を向上させるためＣＰＵモジュールをデュプレックス構成にして冗長性を持たせる場合がある。例えば、図１６の構成において、ＣＰＵモジュール１０２−１，１０２−３を稼動側とし、ＣＰＵモジュール１０２−２，１０２−４をその待機側とする。そして稼動側のＣＰＵモジュール１０２−１や１０１−３にエラーが生じると対応する待機側のＣＰＵモジュール１０２−２や１０１−４が稼動状態に切り替ってエラーが生じたＣＰＵモジュール１０２の代わりに処理を務める。
【００１０】
この様なデュプレックス構成の場合、切り替り時に処理を引き継げるように、稼動側ＣＰＵモジュール１０２−１，１０２−３から待機側のＣＰＵモジュール１０２−２，１０２−４に対して制御データの等値化が行われる。先願の方式の様にＰＣが特定周期（タクト周期）によりＣＰＵモジュール間やＩＯモジュールなどとの間で制御データの受け渡しを行い、タクト周期に同期してタスクを実行する構成においては、上記データの等値化の処理を行う場合、以下の問題点がある。
１）図１７は等値化処理のタイミングを示す図である。同図に示すように、先願の方式で等値化処理を行った場合、デフォルトタスクの終了（タスクエンド）のタイミングでシステムの等値化処理を行うことになる。この等値化処理を行っている間、定周期タスクは処理を行えず、ＣＰＵが空くのを待つことになる。よって等値化処理にＣＰＵが取られる時間が長いと、定周期タスクはその分ＣＰＵが解放されるのを待つこととなり、処理の定周期性が崩される。
２）１フレーム内に格納されている等値化処理の為のデータが１タクト周期内に処理しきれない大きさのものであった場合、タクト周期が伸びてしまう。従ってタクト周期に同期して実行されている定周期タスクの周期も大きくなってしまう。
３）等値化処理の為のデータを格納しているフレーム内に、その等値化データがどのタイミングで収集されたデータなのかを示す情報が無いので収集したデータの同期保証が出来ない。
４）全フレームのデータ収集の同期を保証しなければならないのに、送り出すデータを収集している間に、通常のフレームを送信してしまうと、不定なデータが送られてしまい、データの同期保証ができない。
５）稼動側ＣＰＵ用と待機側ＣＰＵ用とで、等値化データの収集、及びアプリケーションデータ領域への分配にそれぞれ転送テーブルを必要とするが、この転送テーブルを用意するためにメモリ資源を多く消費してしまう。
【００１１】
上記問題点を鑑み、本発明は定周期タスクの定周期性を崩さずに、等値化処理を実現する仕組を持つプログラマブルコントローラ及び等値化方法を提供することを課題とする。
【００１２】
また不定な等値化データを待機側に送信したり、無駄なフレームを送信しないようにする仕組を持つプログラマブルコントローラを提供することを課題とする。
【００１３】
更に待機側では、受信データで分配処理が完了する前のデータを破壊したり、不定なデータをアプリケーションデータ領域に分配しない仕組を持つプログラマブルコントローラを提供することを課題とする。
【００１４】
また資源を有効利用し、更に等値化データの収集、分配のパフォーマンスを向上させる仕組を持つプログラマブルコントローラを提供することを課題とする。更に高速に制御データの等値化処理を行うことが出来るプログラマブルコントローラを提供することを課題とする。
【００１５】
【課題を解決するための手段】
上記問題点を解決するため、本発明によるプログラマブルコントローラは、２重化して冗長性を持たせた１乃至複数組のＣＰＵを持ち、稼動側ＣＰＵと待機側ＣＰＵとの間でデータの等値化を行うことを前提とし、等値化データ収集手段、定周期タスク実行手段及び等値化データ送信手段を備える。
【００１６】
等値化データ収集手段は、上記稼動側ＣＰＵは、等値化対象としているデータを収集する。
等値化データ送信手段は、上記等値化データ収集手段が収集したデータを等値化フレームによって上記待機側ＣＰＵに送信する。
【００１７】
定周期タスク実行手段は、上記上記等値化データ収集手段による収集処理中に定周期タスクを開始するタイミングになった時、該収集処理完了後上記等値化データ送信手段によるデータの送信開始前に該定周期タスクを実行する。
【００１８】
この構成により、定周期タスクは等値化処理が完了するのを待たずに実行することが出来る。
また上記等値化データ送信手段は、上記等値化データ収集手段が収集したデータを複数の等値化フレームに分けて送信する構成とすることが出来る。この構成により等値化データの量が多くてもタクト周期の周期性を壊すことが無い。またこの時各等値化フレームに等値化フレーム内のデータの整合性をチェックする情報を格納し、これを待機側ＣＰＵで受信した等値化フレームの上記整合性をチェックする情報を調べて、整合性が確認された時のみ等値化データを分配する構成にすることにより、整合性が取れた等値化データのみが等値化される。
【００１９】
更に、上記等値化データ収集手段及び等値化データ分配手段は、等値化対象となるデータの配置に基づいて、データの収集・分配時のデータ転送に最適な転送方式を組合わせて構成することにより、高速な等値化処理を実現できる。
【００２０】
【発明の実施の形態】
図１は本実施形態のＰＣの構成を示す図である。
本実施形態のＰＣでは、複数のＣＰＵモジュール２、複数のＩ／Ｏモジュール３及び通信モジュール４がリング型の伝送トポロジーをもつシステムバス１によって接続されるネットワーク構成をもつ。このシステムバス１に接続されている各モジュールは、そのネットワーク上での通信局としてそれぞれを一意に識別する局番が設定されている。また各ＣＰＵモジュール２は、１対１のデュプレックス構成にして冗長性を持たせてあり、図１ではＣＰＵ１〜ＣＰＵ４が稼動側、ＣＰＵ５〜ＣＰＵ８が稼動側それぞれに１対１対応する待機側となっている。
【００２１】
モジュール間の通信は、データ送信を行うモジュールが、送信先を局番で指定したフレームをシステムバス１上に送信する。このフレームは、システムバス１上を一定方向に巡回し、システムバス１上の各局は、上流局から送信されてきたフレームが自局宛のものでなければそのまま下流局に送り、自局宛のものあればそれを取込む。これによってシステムバス１上をフレームが一定方向に巡回する。
【００２２】
本実施形態では、稼動側ＣＰＵから待機側ＣＰＵへ送信される等値化データは、マルチキャスト方式によるデータ通信によって転送される。
以下にマルチキャスト方式によるデータ転送について説明する。
【００２３】
マルチキャスト方式は、システムバス１上にマルチキャスト通信用のフリートークンを巡回させ、データ伝送を要求する局（出力装置に出力するための送信データが用意されており、また当該送信帯域の送信許可設定がされている局）はそのフリートークンを確保して代わりにマルチキャストフレームの送信を行う。マルチキャストフレームはシステムバス１上を巡回し、このマルチキャストフレームを受信したネットワーク上の局は、それを下流へ中継して巡回させると共にフレーム内の出力データの設定内容に基づいてデータの取込みを行う。
【００２４】
図２は、マルチキャスト方式による通信の説明図である。
本実施形態では、システムバス１の局の内の１つをリングマスター局とし、このリングマスター局によってマルチキャスト方式によるデータ転送を管理する。また図２中のＤｉはＩ／Ｏモジュール３の中で入力装置、Ｄｏは出力装置の局を示す。
【００２５】
マルチキャスト方式は、稼動側ＣＰＵモジュールから待機側ＣＰＵモジュールに等値化データを送信する他に、ＣＰＵモジュール２から出力機器が接続されているＩ／Ｏモジュール３に対してデータの出力を行う時用いられるデータ転送方式である。
【００２６】
マルチキャスト方式による通信では、まず、システムバス１上に１つだけ存在するネットワーク管理を行うリングマスター局が、データ転送の権限を制御するフリートークンを生成し、システムバス１上にリリースする。このフリートークンのリリースによって、マルチキャスト通信は開始される。
【００２７】
リリースされたフリートークンは、各局が順次下流局へ中継してゆき、システムバス１上を巡回する。そしてデータの出力を行いたいＣＰＵモジュール２は、このフリートークンを受信すると、これをシステムバス１から確保し、マスター局となる。
【００２８】
マスター局は、用意してある送信データを、ＳＤ部にこのフレームがマルチキャスト通信のフレームであることを示すデータを設定したマルチキャストフレームとしてシステムバス１上に流す。図２では、マスター局は、保持したフリートークンの代わりにＤｏ１局に対する出力データ（Ｍ−＞Ｄｏ１）とＤｏ２局に対する出力データ（Ｍ−＞Ｄｏ２）の２つの局に対する出力データがマルチキャストフレームとして、下流局Ｄｏ２へ送信される。
【００２９】
このマルチキャストフレームを受取った局は、そのフレーム内の出力データに設定されている出力データの格納先の局番を参照し、この出力データが自局に対するものであれば、それを取込むと共にそのフレームをそのまま下流局へ送信する。図２では、マルチキャストフレームを受信したＤｏ２局及びＤｏ１局はそれぞれ自局にあててマスタ局が出力した出力データ（Ｍ−＞Ｄｏ２、Ｍ−＞Ｄｏ１）を取込むと共に、その受信フレームをそのまま隣の下流局であるリングマスター局及びマスター局へ送信する。
【００３０】
フレームが１巡すると、そのフレームを最初に送信したマスタ局は、これをシステムバス１から除去し、代わりにフリートークンを生成して１上にリリースする。
【００３１】
そしてフリートークンがシステムバス１を１巡して戻ってくると、リングマスター局はデータ伝送要求の有無をチェックし、要求があれば当該送信データの送信を行う。その後、自局が送信したデータフレームがシステムバス１を１巡して自局に戻ってきたことでリングマスター局はフリートークンをシステムバス１上から除去し、これによってマルチキャスト通信は終了する。
【００３２】
尚、マルチキャスト通信に限らず、システムバス１上では、リングマスター局のデータフレームは常に最後に送信される。
次に本実施形態におけるシステムでの等値化処理について説明する。
【００３３】
図３は、本システムにおける稼動側ＣＰＵ１１と待機側ＣＰＵ１２との間の等値化データの流れを示す図である。同図は、稼動側ＣＰＵ１１とその稼動側ＣＰＵ１１に対応する待機側ＣＰＵ１２の等値化データの送受信に関連する部分のみを抽出して示している。本実施形態では、等値化データはシステムバス１を介してマルチキャスト方式によって稼動側ＣＰＵ１１から待機側ＣＰＵ１２へ送信される。
【００３４】
稼動側ＣＰＵ１１では、収集処理として、アプリケーションデータ領域１４から等値化が必要なデータのみスキャンしてフレーム送受信作業領域１５に収集する。そしてこの収集した等値化データをマルチキャスト方式で待機側ＣＰＵ１２に送信する（以下の説明では等値化データを送信するフレームを等値化フレームという）。この際、等値化データ数が多く、１タクト周期で送信出来ない量の場合、後述する様に複数のフレームに分けて送信することになる。フレーム送受信領域１５は、複数のフレーム領域に分かれており、各フレーム領域が１つの送信フレームで送るデータを格納する場所となっている。稼動側ＣＰＵ１１及び待機側ＣＰＵ１２では、イニシャライズ時にシステムを構成するモジュール数等から１タクト周期で送信できる等値化フレームサイズを計算することにより、等値化データをいくつの等値化フレームで送信するかを判断し、その分の領域及びダミー領域（ダミー領域については後述する）をフレーム送受信作業領域１５に用意する。
【００３５】
フレーム送受信領域１５内の等値化データは、バスコントローラ１６内の送信バッファ１７を介してマルチキャストフレームに格納されて、システムバス１上に送信される。送信ポインタ１８は、次にフレーム送信するデータが格納されているフレーム領域を指すポインタでデータを送信する度に、次のフレーム領域に動く。
【００３６】
待機側ＣＰＵ１２では、このマルチキャストフレームを受信し、バスコントローラ１６内の受信バッファ１９を介してフレーム送受信作業領域１５に各受信フレーム毎に格納する。尚この時フレーム送受信領域１５の格納位置を受信ポインタ２０によってポイントし、受信ポインタ２０はフレームを受信する度に次のフレーム領域に動く。フレーム送受信作業領域１５に格納された等値化データは、アプリケーションデータ領域１４へ古い等値化データを上書きする形で分配され、格納されてゆく。そして待機側ＣＰＵ１２が稼動側に切り替わった際には、アプリケーションプログラムはこのアプリケーションデータ領域１４内のデータを用いて稼動側ＣＰＵ１１上のアプリケーションプログラムの処理を引き継ぐ。
【００３７】
本システムでは、等値化処理を行うタスク（以下等値化タスクという）を、等値化データの収集処理（等値化準備）と等値化データを送信する処理とに分ける。このうち収集処理は、デフォルトタスクのタスク実行処理終了のタイミングで行う。また等値化データ送信処理は、タスク実行とは独立にし、定周期タスクと並列に行わせるようにする。また、等値化データの量が多い場合、等値化データを複数のフレームに分けて送信し、これら各等値化フレームの送信処理はそれぞれ独立させてある。この様に本実施形態では、等値化処理を複数の細かい処理に分けてそれぞれを独立させてある。従って等値化処理が開始された後に定周期タスクを実行させなければならなくなっても、等値化処理が完了するのを待たずに、細かく分けた処理と処理の間に定周期タスクを割込ませ、定周期タスクが完了したら等値化処理に戻ることが出来る。この構成により、等値化データの量が多く等値化処理に多くの時間がかかる場合においても、定周期タスクの定周期性を崩さないで、等値化処理を行うことが出来る。
【００３８】
図４は、定周期タスク、デフォルトタスク及び等値化タスクによる等値化データの収集・送信のタイミングを示すタイミング図である。同図中の縦線はタクト割込みを示し、このタクト割込みの間が１つのタクト周期となる。また各タスク処理は、ＩＯデータの入力処理（網かけ部分）、ＩＯデータの出力処理（斜線部分）、計算処理等入出力処理以外のタスク実行処理（無地部分）に分けて示してある。
【００３９】
図４での「デフォルトタスクエンド有り」、「デフォルトタスク起動禁止」、「デフォルトタスクＯ禁止」及び「収集要求」は、稼動側ＣＰＵ１１上に設けられた状態フラグの変化を示してる。また「送信ポインタ」は、送信ポインタがどのフレーム領域を指しているかを示している。「等値化タスクのステート」は、等値化処理を行うタスクの処理状態を示している。
【００４０】
「デフォルトタスクエンド有り」フラグは、等値化対象のデータの収集タイミングを作るフラグで、デフォルトタスクのタスク実行処理が終了するとＯＮ（１）になり、等値化対象のデータの収集処理が終了するとＯＦＦ（０）となる。
【００４１】
「デフォルトタスク起動禁止」フラグは、等値化処理が行われている期間を示すフラグで、デフォルトタスクの実行処理が終了して「デフォルトタスクエンド有り」フラグがＯＮとなった状態で新たなタクト周期に入るとＯＮとなり、全ての等値化データの送信が完了して等値化処理が完了するとＯＦＦとなる。このフラグがＯＮの間、定周期タスクの起動は許可されるが、デフォルトタスクの起動は禁止される。
【００４２】
「デフォルトタスクＯ禁止」フラグは、デフォルトタスクによる出力処理の開始を等値化処理が完了するまで待たせるフラグで、デフォルトタスクのタスク実行処理が終了するとＯＮとなり、最後の等値化フレームの送信を開始するとＯＦＦとなる。このフラグがＯＦＦになってからデフォルトタスクはＩＯデータ出力処理を開始する。
【００４３】
「収集要求」は、等値化処理を行うタスクが収集処理を可能な期間を示すフラグで、「デフォルトタスク起動禁止」フラグと共にＯＮとなり、収集処理が完了するとＯＦＦとなる。
【００４４】
図４の４１部分に示す様に、デフォルトタスクのタスク実行処理の終了に対応して「デフォルトタスクエンド有り」フラグがＯＮになる。これにより等値化データの収集、送信処理（システムデータ処理）を開始できるようになる。「デフォルトタスクエンド有り」フラグがＯＮになると次のタクト割込みで「収集要求フラグ」がＯＮとなる。定周期タスクのＩＯ入力処理が完了した時、この「収集要求フラグ」の状態を見て、ＯＮとなっていれば等値化データの収集処理を開始する。そして収集処理が完了すると、収集した等値化データの待機側ＣＰＵへの送信処理を行う。
【００４５】
この等値化データの収集、送信処理を行っている間、「デフォルトタスクＯ禁止」フラグをＯＮにして、デフォルトタスクの出力処理がこの収集、送信処理に割り込むことを禁止する。しかしこの間、定周期タスクに対しては処理に割込んで起動することを許可する。これにより定周期タスクは定周期性を崩さずに処理を実行することが出来る。
【００４６】
また本システムでは、稼動側ＣＰＵと待機側ＣＰＵとの間で等値化を行うデータの数が多く、待機側ＣＰＵに送信する量が多い場合、システムで取り決めた１タクト周期内で送信できる大きさに等値化データを分割し、これらを固定サイズの複数の等値化フレームに分けて格納し、タクト周期に同期して１フレームづつ送信する。図４の４２部分ではＮ個のフレームに分割して等値化データを送信した場合を示している。
【００４７】
等値化データを待機側ＣＰＵへ送信する等値化フレームの構成例を図５に示す。
図５の等値化フレームは、マルチキャスト方式で送信されるフレームで、ＣＰＵ間マルチキャストフレームヘッダ部とデータ部に分けられる。このうちＣＰＵ間マルチキャストフレームヘッダ部には、フレームの種類を知らせるＦＣ、フレームの大きさを示すＴＳ、自ＣＰＵモジュールのシステムバス１上のアドレスＳＡ、送信先である待機側ＣＰＵモジュールのアドレスＤＡ、等値化フレーム部分の大きさを示すサイズが格納されている。また、データ部には等値化データの他に、受信したフレーム内の等値化データの整合性をチェックする為のシリアルNo. 及びフレームNo. が格納されている。このシリアルNo. とフレームNo. については後述する。
【００４８】
この等値化フレームは固定長で、１タクト周期内で送信できる最大のデータサイズからシステムが求めた大きさになっている。
図６は、１タクト周期内に稼動側ＣＰＵから送信されるデータを示す図である。１タクト周期内には等値化データの他に、Ｉ／Ｏモジュール３や通信モジュール４等のシステムを構成している他のモジュールへの送信データであるシステム制御データが送信される。このシステム制御データを送信するフレームには、Ｉ／Ｏモジュール３への出力データを含む制御ＩＯ入出力フレーム、モジュールの各種ステータスを含む状態フレーム及び通信モジュールへのメッセージを含むメッセージフレームがある。
【００４９】
稼動側ＣＰＵ及び待機側ＣＰＵでは、１タクト周期内に送信できる最大データサイズとこのシステム制御データの大きさを考慮して、１フレームに格納する等値化データの数を可変制御する。稼動側ＣＰＵ及び待機側ＣＰＵは、システムを構成するモジュールの種類や数から、等値化フレームの大きさを決定するが、基本的には、システム構成が大きくなればなるほど１フレームで送信できる等値化データサイズは小さくなり、システム構成が小さければ小さいほど大きくなる。
【００５０】
この等値化フレームに格納できる等値化データの大きさ（等値化データ数）は、システム制御データ数と等値化データ数から式(1) の様に求まる。
１タクト周期内で送信できる最大データサイズ＝システム制御データサイズ＋等値化データサイズ・・(1)
式(1) でシステム制御データサイズは、図６の制御ＩＯ入出力フレーム、状態フレーム及びメッセージフレームで送信される制御用のＩ／Ｏモジュール３に対する入出力データ、通信モジュール４へのメッセージデータ及び各種ステータスの大きさを加えたものである。よって、等値化データサイズは、式(2) に示すように１タクト周期で転送できる最大のフレームでのデータサイズから、システム制御データサイズを引いたものである。
等値化データサイズ＝１タクト周期内で送信できる最大データサイズ−システム制御データサイズ・・(2)
本実施形態では等値化データを複数のフレームに分割して送信するため、これを受信する待機側ＣＰＵで受信フレームの整合性をチェック出来るように、等値化データを送信する等値化フレームには、フレームNo. 及びシリアルNo. を挿入してある。
【００５１】
図７は、等値化データを３つのフレームに分けて送信する場合を例とした、稼動側ＣＰＵでのフレーム送信時、及び待機側ＣＰＵがフレーム受信時のフレーム送受信作業領域１５と送信ポインタ１８及び受信ポインタ２０の状態を示す図である。
【００５２】
稼動側ＣＰＵでは、収集処理により収集された等値化データは、フレーム送受信作業領域１５の３つのフレーム領域に分けて格納される。そして送信ポインタ１８の指すフレーム領域のデータから順次等値化フレームに格納されて送信される。これらの等値化フレームにはフレームNo. 及びシリアルNo. が格納されており、図７のシステムバス領域部分に記されているｘ／ｙが各フレーム内のフレームNo. 、Ser.ｚがシリアルNo. を表している。
【００５３】
フレームNo. は、複数に分割された等値化データのうちの何番目かを示す番号で同図ではｘ／ｙで表されているもののうちのｙ部分が分割した数、ｘ部分がそのうちの何番目のデータにあたるかを示しｘ部分がそのうちの何番目のデータにあたるかを示す。同図の場合３つのフレームに分割されているので、フレームNo. は、１／３〜３／３の値を取る。このフレームNo. は待機側ＣＰＵで、等値化フレームが飛ばされずに到達しているかをチェックするのに用いる。
【００５４】
シリアルNo. は、そのフレームがどの等値化処理に対する等値化データを含むフレームかを示すもので、稼動側ＣＰＵで等値化データの収集処理を行う毎に１，２，・・と番号がインクリメントされて付せられる。シリアルNo. は、収集したデータの同期を保証するために用いられ、待機側ＣＰＵは、同一のシリアルNo. が付せられているフレームは同じ処理処理によって集められた等値化データの一部と認識して処理する。
【００５５】
稼動側ＣＰＵでは、収集処理が完了するとフレーム送受信作業領域１５内の送信ポインタ１８が指すフレーム領域内の等値化データをマルチキャスト送信により待機側ＣＰＵに送信する。この時、各等値化フレームには、同じシリアルNo. を格納し、また送信順に例えば１，２，・・とその順番が分るようにフレームNo. を格納する。
【００５６】
またアプリケーションデータ領域１４から等値化データを収集している間等、全等値化データの送信完了後次の等値化データを送信するまでの間、稼動側ＣＰＵは等値化データを含まないダミーフレームを待機側ＣＰＵに送信する。このダミーフレームには、シリアルNo. として予め決められた特別な番号が設定されており、フレームを受信した待機側ＣＰＵでは、受信フレームのシリアルNo. にこの番号が格納されているとこのフレームがダミーフレームであるとを認識する。そして待機側ＣＰＵは、ダミーフレームを受信することにより、稼動側ＣＰＵでは１つの収集処理によって集められた等値化データを送信する全ての等値化フレームの送信を完了したと認識する。図７の場合、ダミーフレームにはシリアルNo. として０が格納されている。
【００５７】
待機側ＣＰＵは、稼動側ＣＰＵが複数のファイルに分割して送った等値化データを全て正常に受信した場合にのみ、アプリケーションデータ領域１４に等値化データを分配する。この受信した等値化データの整合性のチェックは、フレームNo. 及びシリアルNo. によって行われる。
【００５８】
待機側ＣＰＵは、ダミーフレームを受信すると全ての等値化データを受信したと判断して、全等値化フレームのフレームNo. とシリアルNo. から受信した等値化データの整合性を調べる。そして問題なければ、フレーム送受信作業領域１５からアプリケーションデータ領域１４に等値化データを分配する。
【００５９】
待機側ＣＰＵは、稼動側ＣＰＵが送り出すことになっている等値化フレームのフレームNo. 及びシリアルNo. と、実際に受信した等値化フレーム内のフレームNo. 及びシリアルNo. とを比較する。そして両者が一致すれば、これをアプリケーションデータ領域１４に分配し、一致しなければ伝送異常等によりフレームが欠落したなど正常にフレームが届かなかったので、受信データを破棄する。
【００６０】
図７の７１部分には両者が一致し、受信データを等値化データとしてアプリケーション領域１４に分配する場合を、又同図７２部分には両者が一致せず、送られてきた等値化データを破棄してアプリケーションデータ領域１４への等値化データの分配は行わない場合を示す。同図７１部分の場合、受信した等値化フレームのシリアルNo. が全て１で、フレームNo. が１／３，２／３，３／３の順だったので正常の受信として、フレーム送受信作業領域１５からアプリケーションデータ領域１４に受信した等値化データを分配している。また７２部分では受信した等値化フレームにシリアルNo. が１のものと２のものがあるので、これらの受信フレーム内の等値化データはアプリケーションデータ領域１４へ分配せずに破棄している。
【００６１】
また稼動側ＣＰＵは、全フレームのデータ収集の同期を保証するため、等値化データを全て送信してから新たな等値化データの収集処理が完了するまで、ダミーフレームを送信する。収集処理が完了する前に等値化データを送信してしまうと不定なデータが送られてしまうので、稼動側ＣＰＵでは、最後の等値化フレームを送信してから次の収集処理が完了するまでの間、送信ポインタ１８をダミー領域のアドレスであるダミーアドレスに固定しておき、ダミーフレームを送信する。
【００６２】
この時待機側ＣＰＵでは、アプリケーションデータ領域１４への等値化データの分配処理を行っているが、フレーム送受信作業領域１５内の等値化データがダミーフレームのデータで上書きされないように、この分配処理が終るまで、受信ポインタ２０をフレーム送受信作業領域１５内のダミーアドレスに固定しておく。これにより、受信したダミーフレームは、ダミーアドレスの指す等値化データが未格納な領域に格納され、等値化データが格納されているフレーム送受信作業領域１５への上書きがされないようになっている。尚等値化データの分配処理が終了したら、受信フレームがまたダミーフレームであっても受信ポインタ２０を通常の等値化フレームの受信位置に戻す。ただこの場合ダミーフレームを受信している間は、受信ポインタ２０は移動させない。
【００６３】
図７の７３部分に示すように、稼動側ＣＰＵは、アプリケーションデータ領域１４からの等値化データの収集処理が完了するまでの間は、ダミーフレームを待機側ＣＰＵに送信する。ダミーフレームには予め決めておいた特別な番号である０がシリアルNo. として格納されているので、等値化フレームを受信した待機側ＣＰＵでは、シリアルNo. を調べることによってこのフレームがダミーフレームであることを認識する。
【００６４】
稼動側ＣＰＵは、ダミーフレームを送信することにより、待機側ＣＰＵに稼動側ＣＰＵが等値化データの送信を完了して次の等値化データの送信準備中であることを認識させる。また受信したフレーム内のデータはフレーム送受信作業領域１５に上書きして格納するが、ダミーフレームを受信中は、受信ポインタ１５を移動させないことにより、受信したダミーフレーム内のデータを同じ領域に上書きして格納する。
【００６５】
また稼動ＣＰＵは、複数の等値化フレームに分けて等値化データを送信する際、途中の等値化フレーム送信に中送信異常が起きた場合、以降残っているフレームの送信をやめる。そして直ちにアプリケーションデータ領域１４をスキャンをして等値化データの再収集処理を行い、等値化処理を継続をする。この様に送信異常が発生してしまった等値化データの送信処理を中止することにより、新たな等値化データの収集処理、及びその等値化データの送信処理に直ちに取り掛かれる。図７の７４部分では、最初の等値化フレーム（フレームNo. が１／３のフレーム）の送信中に送信異常が発生したので、以降のフレーム（フレームNo. が２／３，３の／３フレーム）の送信を取り止め、次の等値化データの収集処理を開始している。尚この等値化データの再収集処理が完了するまでの間、稼動側ＣＰＵはダミーフレームを送信する。
【００６６】
またこの７４の部分では、収集処理を開始するタイミングと定周期タスクによる処理が同時期に重なってしまっているが、この様な場合は、定周期タスクのＩＯ入力処理を先に行い、これが完了した後等値化データの収集処理を行い、その後に定周期タスクの実行に移る。
【００６７】
次に稼動側ＣＰＵで行われる等値化データの収集処理及び待機側ＣＰＵで行われる等値化データの分配処理について説明する。
稼動側ＣＰＵで行われるアプリケーションデータ領域１４からフレーム送受信作業領域１５への等値化データの収集処理及び待機側ＣＰＵで行われるフレーム送受信作業領域１５からアプリケーションデータ領域１４への等値化データの分配処理では、稼動側ＣＰＵ、待機側ＣＰＵ共に同じ内容の転送テーブルを用いて行われる。
【００６８】
図８に稼動側ＣＰＵで行われる等値化データの収集処理、図９に待機側ＣＰＵで行われる等値化データの分配処理を示す。図８及び図９は、等値化データを２つの等値化フレームに分けて送信する場合を例としており、フレーム送受信作業領域１５には、送受信する２つのフレームのＣＰＵ間マルチキャストフレームヘッダ部内のデータを格納しているヘッダ部及びデータ部のデータを格納しているデータ部が示されている。
【００６９】
図８に示す稼動側ＣＰＵで行われる等値化データの収集処理の場合、アプリケーションデータ領域１４からフレーム送受信作業領域１５へ等値化データを収集するが、この処理は、アプリケーションデータ領域１４のどの位置のデータをフレーム送受信作業領域１５のどの位置に収集するかを記録している転送テーブル３０を参照して行われる。
【００７０】
この転送テーブル３０は、稼動側ＣＰＵ及び待機側ＣＰＵにおいて、ＣＰＵのイニシャライズ時に、ＣＰＵモジュール上で稼動されるユーザが作成したアプリケーションプログラムから等値化対象のデータを認識して作成される。稼動側ＣＰＵとそれに対応する待機側ＣＰＵでは、同じアプリケーションプログラムがインストールされているため、稼動側ＣＰＵと待機側ＣＰＵでは等値化対象データも同じ、更にその転送方式も同じになる。よって稼動側ＣＰＵ及び待機側ＣＰＵでは、転送テーブル３０として全く同じものが作成されることになる。稼動側ＣＰＵ及び待機側ＣＰＵでは、稼動／待機の切替えに備え、等値化データの収集用の転送テーブルとアプリケーションデータ領域１４への分配用転送テーブルの両方を実装するが、本実施形態では同じ転送テーブルを用いて収集処理と分配処理を行えるので、メモリ資源を有効に用いることが出来る。
【００７１】
転送テーブル３０にはいくつのフレームに分けて等値化データを送信するかを示すブロック数Ｎ、後述するアプリケーションデータ領域１４とフレーム送受信作業領域１５の間のデータの転送方式、及びブロック数Ｎ分のフレーム送受信作業領域１５側のアドレスを示すフレーム側アドレス、データの個数及びアプリケーションデータ領域側アドレスが記録されており、その構成は転送方式によって異なる。また複数の転送方式を組合わせて行う場合（例えば図８に於て、Ｄ１〜Ｄ５をブロック転送、Ｄ１００〜Ｄ１０４を構造体転送で行う場合等）には、転送テーブル３０には、各転送方式毎にこれらの情報が記録されている。稼動側ＣＰＵで行われる等値化データの収集処理では、この転送テーブル３０のアプリケーションデータ領域側アドレスを転送元アドレス、フレーム側アドレスが転送先アドレスとして等値化データを収集する。
【００７２】
稼動側ＣＰＵで収集された等値化データは、等値化フレームに格納されて待機側ＣＰＵに送信され、待機側ＣＰＵでは、受信した等値化フレームをフレーム送受信作業領域１５に格納し、この中のデータ部内の等値化データを図９に示すように転送テーブル３０を用いてアプリケーションデータ領域１４に分配する。
【００７３】
この分配処理では稼動側ＣＰＵでこの等値化データの収集処理に用いられた転送テーブル３０と同じ転送テーブル３０を、図８の収集処理の時とは逆に、フレーム側アドレスを送信元、アプリケーションデータ領域側アドレスを送信先としてデータの転送を行う。このように同じ転送テーブル３０を、稼動側ＣＰＵと待機側ＣＰＵとで転送元アドレスと転送先アドレスを逆にして用いることによりメモリ資源の節約をすることが出来る。
【００７４】
本実施形態では、アプリケーションデータ領域１４とフレーム送受信作業領域１５との間で行われる等値化データの転送方式として、ブロック転送、ワード転送及び構造対転送の３つの転送方式を持つ。また各転送方式によって用いられる転送テーブル３０は、転送方式毎にアプリケーションデータ領域側アドレス部分の構成が異なっている。稼動側ＣＰＵ及び待機側ＣＰＵでは、イニシャライズ時に等値化対象とするデータのアプリケーションデータ領域１４の配置位置からデータの収集・分配時のデータ転送に最適な転送方式を選択し、或いは必要に応じて複数の転送方式を組合わせて対応する転送テーブル３０を作成する。
【００７５】
図１０に、ブロック転送方式によって用いられる転送テーブルの構成例を示す。尚同図及び図１１及び図１２は、ブロック数Ｎ＝１の時のものでブロック数Ｎが２以上の時は、転送テーブル３０はフレーム側アドレス、個数及びアプリケーションデータ領域側アドレスに対応する部分をブロック数分持つことになる。
【００７６】
ブロック転送方式は、アプリケーションデータ領域１４の一定の領域の全てのデータを等値化する時に行う転送方式で、ブロック単位でデータ転送を行う。
図１０の転送テーブルには、アプリケーションデータ領域側アドレスとして個数部分に記録されている組分のワード数とアドレスが組となって記録されている。
【００７７】
ブロック転送の際は、転送テーブルに格納されているアドレスからワード数分のデータをブロック単位で転送する。例えば図８の等値化データの収集処理が、ブロック転送によるものである時、図１０のアドレス１にはアプリケーションデータ領域１４のＤ１の先頭アドレス、ワード数１にはＤ１の総ワード数が格納され、アドレス２にはアプリケーションデータ領域１４のＤ２の先頭アドレス、ワード数２にはＤ２の総ワード数が格納されている。等値化データの収集処理時には、Ｄ１としてアドレス１からデータをワード数１分読み出し、フレーム送受信作業領域１５のフレーム側アドレスに格納されているアドレス部分に格納する。次にＤ２としてアドレス２からデータをワード数２分読み出し、フレーム送受信作業領域１５のＤ１を格納した続きに格納する。以降、転送テーブル３０のアプリケーションデータ領域側アドレス部分に記録されている全アドレス及びワード数に対して同様の処理を行う。
【００７８】
また等値化データの分配処理では、Ｄ１としてフレーム送受信作業領域１５のフレーム側アドレスに記憶されている位置からワード数１分データを読み出し、これをアプリケーションデータ領域１４のアドレス１部分に格納し、次にＤ２としてフレーム送受信作業領域１５のＤ１を読み出した続きからワード数２分のデータを読み出し、これをアプリケーションデータ領域１４のアドレス２部分に格納する。以降全データに対して同様の処理を行うことで、転送テーブル３０を用いた等値化データのアプリケーションデータ領域１４への分配が行える。
【００７９】
次にワード転送方式について説明する。
ワード転送方式は、１ワード単位で独立に制御して等値化する時に使用する転送方式で、転送テーブル３０で転送するデータを１ワード単位で指定する。
【００８０】
図１１に、ワード転送方式によって用いられる転送テーブルの構成例を示す。図１１の転送テーブルには、アプリケーションデータ領域側アドレス部分に個数部分に記録されている数のアドレスが記録されている。
【００８１】
等値化データの収集処理をワード転送で行う際は、アプリケーションデータ領域１４のアプリケーションデータ領域側アドレス部分に格納されている各アドレスから１ワードづつ読み出し、フレーム送受信作業領域１５のフレーム側アドレスに格納されている部分に順次転送する。また等値化データのアプリケーションデータ領域１４への分配処理時には、フレーム送受信作業領域１５のフレーム側アドレス部分に格納されたアドレスから順次１ワードづつ読み出し、アプリケーションデータ領域１４のアプリケーションデータ領域側アドレス部分に格納されているアドレスの位置に転送して行く。
【００８２】
次に構造体転送について説明する。
構造体転送は、変則的な位置のデータを指定して転送する場合に用いる転送方式でで３種類のモードが有る。
【００８３】
図１２は、構造体転送に用いられる転送テーブルの構成例である。
図１２の転送テーブルには、アプリケーションデータ領域側アドレス部分に個数部分にアドレスが１つ記録されている。また転送方式部分には、どのモードによる構造体転送かを示すモード番号０〜２が記録されている。
【００８４】
図１３、図１４及び図１５はモード１，２および３での構造体の例を示す図である。各図中の（Ｒ）の印のワードの所を等値化対象としてアプリケーションデータ領域１４から読み出し、（Ｍ）部分を等値対象としないことを表している。
【００８５】
モード番号０のモード１の場合は、図１３に示すように２ワード構造のうち２ワード共等値化対象とする。このモード１の構造体転送において、例えば個数に３が設定されていたならば、収集処理においてアプリケーションデータ領域側アドレスのアドレス部分から連なる２×３＝６ワードのデータを読み出して収集する。又分配処理の時は、上記アドレスに記録されているアドレス値の部分にフレーム送受信作業領域１５からのフレーム側アドレス部分から読み出した６ワードのデータを格納する。
【００８６】
モード番号１のモード２の場合は、図１４に示す様に４ワード構造のうち３・４ワード目を等値化対象としてデータ転送を行う。このモード２の構造体転送において、例えば個数に３が設定されていたならば、収集処理においてアプリケーションデータ領域１４の指定アドレス部分から３・４ワード目、７・８ワード目及び１１・１２ワード目のデータを等値化データとして読み出して収集する。また分配処理時には、フレーム送受信作業領域１５の転送テーブルによって指定された位置から読み出した６ワードのデータをアプリケーションデータ領域１４の指定アドレスから３・４ワード目、７・８ワード目及び１１・１２ワード目の位置に格納して行く。
【００８７】
モード番号２のモード３場合は、図１５に示すように８ワード構造のうち、１・２・５・６ワード目を等値化する。例えば、個数に２が設定されていたならば、収集処理においてアプリケーションデータ領域１４の指定アドレス部分から１・２・５・６ワード目及び７・８・１１・１２ワード目のデータを等値化データとして読み出して収集し、分配処理時には、フレーム送受信作業領域１５の転送テーブルによって指定された位置から読み出した６ワードのデータをアプリケーションデータ領域１４の指定アドレスから１・２・５・６ワード目及び７・８・１１・１２ワード目の位置に格納して行く。
【００８８】
この様に、本実施形態では、等値化対象のデータのアプリケーションデータ領域１４での配置によって最適な転送方式を選択したり、或いは複数の転送方式を組合わせることが出来るので、スピーディに収集・分配処理を行うことが可能となり、高速に制御データの等値化処理を行うことが出来る。
【００８９】
【発明の効果】
以上説明のように、本発明によれば、稼動側ＣＰＵで行われている定周期タスクの定周期性を崩すことなく、等値化処理を実行することが出来る。
【００９０】
また、複数の等値化フレームに分けて等値化データを送信することにより、等値化データの量が多くてもタクト周期の周期性を壊すことが無い。
更に稼動側ＣＰＵでは、収集処理中には、ダミーフレームを送信することにより収集が完了する前のデータが送信されることが無い。
【００９１】
また複数の等値化フレームの送信中に送信異常が発生してしまった時、以降の等値化データの送信処理を中止することにより、新たな等値化データの収集処理、及びその等値化データの送信処理に直ちに取り掛かれる。
【００９２】
更に待機側ＣＰＵでは、受信した等値化データの整合性のチェックを行うことが出来る。
また、等値化データの分配処理中に受信したフレームのデータで分配処理中のデータが上書きされることが無い。
【００９３】
更に収集処理と分配処理で転送テーブルを共用することにより、メモリ資源の有効化を図れる。
また等値化対象となるデータの配置に基づいて、データの収集・分配時のデータ転送に最適な転送方式を選択し、必要に応じて組合わせることにより、高速な等値化処理を実現できる。
【図面の簡単な説明】
【図１】本実施形態のＰＣの構成を示す図である。
【図２】マルチキャスト方式による通信の説明図である。
【図３】稼動側ＣＰＵと待機側ＣＰＵとの間の等値化データの流れを示す図である。
【図４】定周期タスク、デフォルトタスク及び等値化タスクによる等値化データの収集・送信のタイミングを示すタイミング図である。
【図５】等値化フレームの構成例を示す図である。
【図６】１タクト周期内に稼動側ＣＰＵから送信されるデータを示す図である。
【図７】稼動側ＣＰＵでのフレーム送信時及び待機側ＣＰＵがフレーム受信時のフレーム送受信作業領域と送信／受信ポインタの状態を示す図である。
【図８】稼動側ＣＰＵで行われる等値化データの収集処理を示す図である。
【図９】待機側ＣＰＵで行われる等値化データの分配処理を示す図である。
【図１０】ブロック転送方式によって用いられる転送テーブルの構成例を示す図である。
【図１１】ワード転送方式によって用いられる転送テーブルの構成例を示す図である。
【図１２】構造体転送方式によって用いられる転送テーブルの構成例を示す図である。
【図１３】モード１の構造体例を示す図である。
【図１４】モード２の構造体例を示す図である。
【図１５】モード３の構造体例を示す図である。
【図１６】一般的なマルチＣＰＵ構成のＰＣの例を示す図である。
【図１７】等値化処理のタイミングを示す図である。
【符号の説明】
１、１０１  システムバス
２、１０２  ＣＰＵモジュール
３、１０３  Ｉ／Ｏモジュール
４  通信モジュール
１１  稼動側ＣＰＵ
１２  待機側ＣＰＵ
１３  実行プロセッサ
１４  アプリケーションデータ領域
１５  フレーム送受信作業領域
１６  バスコントローラ
１７  送信バッファ
１８  送信ポインタ
１９  受信バッファ
２０  受信ポインタ
３０  転送テーブル
【図１】
0004154853.tif 000002
【図２】
0004154853.tif 000003
【図３】
0004154853.tif 000004
【図４】
0004154853.tif 000005
【図５】
0004154853.tif 000006
【図６】
0004154853.tif 000007
【図７】
0004154853.tif 000008
【図８】
0004154853.tif 000009
【図９】
0004154853.tif 000010
【図１０】
0004154853.tif 000011
【図１１】
0004154853.tif 000012
【図１２】
0004154853.tif 000013
【図１３】
0004154853.tif 000014
【図１４】
0004154853.tif 000015
【図１５】
0004154853.tif 000016
【図１６】
0004154853.tif 000017
【図１７】
0004154853.tif 000018