(57)【要約】【課題】使用しないモジュールが含まれる場合であっても、演算処理時間を使用するモジュールに合わせて短縮し、高速化した演算処理装置の提供。【解決手段】所定の演算処理を複数のモジュールに分割し、一定の演算処理周期ごとにモジュールを割り当て実行する演算処理装置であって、前記モジュールごとに演算処理の実行が有効か無効かを示すモジュール有効／無効情報と、前記モジュールの演算処理に要するモジュール最大処理時間と、全モジュールの演算処理の順番であるモジュール処理順と、が格納された記憶部と、モジュール有効／無効情報が有効であるモジュールを選択し、当該選択されたモジュールを、前記モジュール処理順に従い、前記演算処理周期ごとに、前記モジュール最大処理時間の和が前記演算周期の一周期の時間を超えない限度で最大数のモジュールを割り当て、前記有効であるモジュールを割り当てた順で前記演算周期ごとに演算処理する処理部と、を備えた演算処理装置。【選択図】図１０
2012173845.tif 000002
【特許請求の範囲】
【請求項１】
所定の演算処理を複数のモジュールに分割し、一定の演算処理周期ごとにモジュールを割り当て実行する演算処理装置であって、
前記モジュールごとに演算処理の実行が有効か無効かを示すモジュール有効／無効情報と、前記モジュールの演算処理に要するモジュール最大処理時間と、全モジュールの演算処理の順番であるモジュール処理順と、が格納された記憶部と、
モジュール有効／無効情報が有効であるモジュールを選択し、当該選択されたモジュールを、前記モジュール処理順に従い、前記演算処理周期ごとに、前記モジュール最大処理時間の和が前記演算周期の一周期の時間を超えない限度で最大数のモジュールを割り当て、前記有効であるモジュールを割り当てた順で前記演算周期ごとに演算処理する処理部と、
を備えた演算処理装置。
【請求項２】
前記記憶部は、
前記演算周期の現在の周期数を示す周期カウンタと、前記周期カウンタを初期値にリセットする最大周期数と、を登録する変数テーブルと、
前記モジュールごとに、前記モジュール処理順と、前記モジュール有効／無効情報と、モジュールを実行する前記周期カウンタ値である実行サイクルとを登録するモジュール実行テーブルと、を備え、
前記処理部は、
前記有効であるモジュールを実行する前記周期カウンタの値を前記実行サイクルに登録することで前記演算周期に割り当てると共に、前記有効であるモジュールを全て割り当てた際の前記実行サイクルに登録された最大値を前記最大周期数に登録し、
前記モジュール有効／無効情報が無効であるモジュールについて、前記最大周期数よりも大きい値を、前記モジュール実行サイクルに登録し、
前記周期カウンタ値と前記実行サイクルの値が等しいモジュールを実行すると共に、前記演算処理周期ごとに前記周期カウンタを更新し、前記周期カウンタが前記最大周期数と等しい演算周期が終了した後に前記周期カウンタを初期値に更新する、
請求項１に記載の演算処理装置。
【請求項３】
前記演算処理装置は、制御対象である外部装置とデータを入出力する接続部を備え、
前記外部装置は前記接続部を介して、前記演算処理装置からの要求信号に応じて、必要な前記モジュールの情報を出力し、
前記処理部は、前記演算処理装置の起動処理において前記要求信号を前記外部装置に出力して必要な前記モジュールの情報を受け取り、前記記憶部に記憶されたモジュール有効／無効情報を更新する、
請求項１または２に記載の演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は所定の演算処理を複数のモジュールに分割し、一定の演算処理周期ごとにモジュールを割り当て実行する演算処理装置に関する。
【背景技術】
【０００２】
例えば図１１に示すような、入力信号９０２を計測して安定した出力信号９０４を出力する組込み装置９００（例えば安定化電源装置）においては、高調波なども含まれる不安定な入力信号９０２に対して精度良く演算する必要がある。このためには、数十マイクロ秒程度の定周期内において、入出力信号ならびに入力装置９１２および出力装置９１４の内部の信号を計測し、測定した信号データを用いて演算処理装置９１６によって演算処理を行い、出力制御して安定した出力信号９０４を生成する必要がある。
【０００３】
一方、出力制御の演算処理は、使用する演算処理装置（プロセッサ）の性能などにより１回の定周期内で完了できない場合は、演算処理を複数のモジュールに分け、複数の周期によって１つの演算処理を行う。モジュールに分ける場合は、予め各モジュールの最大処理時間を求め、定周期に収まるように演算処理シーケンス順にモジュールを割振り、定周期内で順に実行するように作成して装置に組み込む。
【０００４】
例えば、演算処理が３０μ秒毎の定周期割り込みであって、モジュール１、モジュール２、モジュール３およびモジュール４から構成され、各モジュールの最大処理時間が図１２のテーブルに示す各値である場合、図１３に示すように、最初の定周期でモジュール１を実行し、次の定周期でモジュール２およびモジュール３を実行し、次の周期でモジュール４を実行し、そしてこれを繰り返すこととなる。
【０００５】
また、これに関連した従来公知の提案として、特許文献１には、シーケンスプログラムの実行処理およびＥＮＤ処理を実行しながらシーケンス制御を行なうプログラマブルコントローラが記載されており、このようなプログラマブルコントローラは、前記ＥＮＤ処理を行なう際に所定回数のスキャン毎に１回の割合で実行すればよい所定回限定スキャン機能を何回目のスキャンで実行するかをスケジューリングして、各スキャン毎の所定回限定スキャン機能をスキャン手順情報として設定するスケジューリング部と、各スキャンを実行する際に、前記ＥＮＤ処理として毎回実行する必要のある機能および前記所定回限定スキャン機能を実行するＥＮＤ処理部と、を備え、前記スケジューリング部は、各回のスキャンに設定される前記所定回限定スキャン機能の実行に要する合計時間がそれぞれ所定の範囲内に入るようスキャン手順情報を設定し、前記ＥＮＤ処理部は、前記スキャン手順情報に従って、各回のスキャンに設定されている所定回限定スキャン機能を実行することを特徴とするプログラマブルコントローラであり、これによれば、所定回数に１回の割合でスキャンすればよい所定回限定スキャン機能を何回目のスキャンで実行するかをスケジューリングするので、簡易な構成で、ＥＮＤ処理に対するスキャンタイムの遅延を防止するとともに被制御装置を安定して動作させることができると記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９―１８７１２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、近年は、上記した組込み装置等の各種装置において顧客要求の多様化の流れから演算処理に対する機能追加が多い。そこで、全ての追加可能な機能を組み込んだ演算処理を複数のモジュールに分け、複数の周期によって１つの演算処理を行う構成としている。
しかしながら、各種装置の使用条件等によっては、追加可能な機能を使用しない場合もある。このような場合、使用しないモジュールについても演算処理するため、本来必要な演算処理時間に比べると演算処理の時間が長くなり、演算処理の高速化が妨げられる。
【０００８】
本発明は上記のような課題を解決することを目的とする。すなわち、使用しないモジュールが含まれる場合であっても、演算処理時間を使用するモジュールに合わせて短縮できる演算処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明者は上記の課題を解決するために鋭意検討し、本発明を完成させた。
本発明に係る演算処理装置は、
所定の演算処理を複数のモジュールに分割し、一定の演算処理周期ごとにモジュールを割り当て実行する演算処理装置であって、
前記モジュールごとに演算処理の実行が有効か無効かを示すモジュール有効／無効情報と、前記モジュールの演算処理に要するモジュール最大処理時間と、全モジュールの演算処理の順番であるモジュール処理順と、が格納された記憶部と、
モジュール有効／無効情報が有効であるモジュールを選択し、当該選択されたモジュールを、前記モジュール処理順に従い、前記演算処理周期ごとに、前記モジュール最大処理時間の和が前記演算周期の一周期の時間を超えない限度で最大数のモジュールを割り当て、前記有効であるモジュールを割り当てた順で前記演算周期ごとに演算処理する処理部と、を備えている。
【発明の効果】
【００１０】
本発明によれば、使用しないモジュールが含まれる場合であっても、演算処理時間を使用するモジュールに合わせて短縮し、高速化した演算処理装置を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の演算処理装置の好適実施例を示す概略図である。
【図２】設定テーブルを示す図である。
【図３】モジュール時間テーブルを示す図である。
【図４】変数テーブルを示す図である。
【図５】モジュール実行テーブル生成処理の手順を示すフローチャートである。
【図６】モジュール実行テーブルを示す図である。
【図７】テーブルＸを示す図である。
【図８】変数テーブルを示す図である。
【図９】定周期割り込み処理の手順を示すフローチャートである。
【図１０】定周期割り込み処理を説明するための概念図である。
【図１１】従来の制御装置の概略図である。
【図１２】従来技術を説明するための各モジュールの最大処理時間を示すテーブルを示す図である。
【図１３】従来の定周期処理を説明するための概念図である。
【発明を実施するための形態】
【００１２】
本発明の演算処理装置について図を用いて詳細に説明する。以下の説明は、本発明の演算処理装置における好適実施例であって、本発明はこれに限定されない。
【００１３】
図１は、本発明の演算処理装置の好適実施例を示す図である。
図１において、制御装置１は入力装置１１、出力装置１３および演算処理装置１５を有しており、演算処理装置１５は、プロセッサ１５１、フラッシュＲＯＭ１５３、ＲＯＭ１５５およびＲＡＭ１５７を有している。
ここで、制御装置１が有する入力装置１１および出力装置１３は、本発明における制御対象である外部装置に相当する。また、制御装置１が有する演算処理装置１５が、本発明に係る演算処理装置に相当する。また、演算処理装置１５が有するプロセッサ１５１は、本発明に係る演算処理装置における処理部に相当する。また、演算処理装置１５が有するフラッシュＲＯＭ１５３、ＲＯＭ１５５およびＲＡＭ１５７は、本発明の演算処理装置における記憶部に相当する。
【００１４】
図１において、入力装置１１は、演算処理装置１５からの制御信号により入力信号を変換し出力装置１３に伝達すると共に、入力装置１１内の変換過程の信号をデジタル変換し、演算処理装置１５に伝達する。
また、出力装置１３は、演算処理装置１５からの制御信号により入力装置１１からの信号を変換し出力信号を出力すると共に、出力装置１３内の変換過程の信号をデジタル変換し、演算処理装置１５に伝達する。
なお、演算処理装置１５には図１に図示しない接続部を備え、当該接続部を介して入力装置１１および出力装置１３とデータの入出力を行い、接続部を介してプロセッサ１５１に入力装置１１および出力装置１３のデータが入力されている。
また、演算処理装置１５内のプロセッサ１５１、設定値を保持するフラッシュＲＯＭ１５３およびＲＡＭ１５７は、内部バスで接続されている。また、ＲＯＭ１５５は、プロセッサ１５１に内蔵されている。
そして、プロセッサ１５１は、入力装置１１および出力装置１３からの信号（入力情報および出力情報）を一定の演算処理周期で演算処理し、入力装置１１および出力装置１３を制御して、出力信号を出力する。
【００１５】
このような演算処理装置１５において、プロセッサ１５１の演算処理は、モジュール１、モジュール２、モジュール３およびモジュール４から構成されている。
また、一定の演算処理周期に行う演算処理における１周期の時間（以下、「定周期時間」とも称す）は３０μ秒とする。
【００１６】
また、フラッシュＲＯＭ１５３は、図２に示す設定テーブルを情報αとして格納している。この設定テーブルは、各モジュールの演算処理の実行が有効か無効かの情報であるモジュール有効／無効情報である設定値が含まれており、具体的にはモジュール１、３および４が「有効」であり、モジュール２が「無効」と設定されている。また、図２に示す設定テーブルは、全モジュールの演算処理を実行する場合の各モジュールの演算処理の処理順である番号（Ｎｏ．）が付されており、具体的には、モジュール１〜４に対して、順にＮｏ．０〜Ｎｏ．３が付されている。つまり、各モジュールは原則として処理順である番号（Ｎｏ．）の小さい順に演算処理を実行する。
このようなフラッシュＲＯＭ１５３に格納される設定テーブル（情報α）は、ＲＳ２３２Ｃ等で接続されたパソコン等によってプロセッサ１５１を介して設定することができる。
【００１７】
なお、例えば制御装置１の起動時等において、演算処理装置１５は制御装置１の各構成要素（入力装置１１、出力装置１３等）および各モジュールをチェックし、制御装置１を動作させる上で必要のないモジュールが存在する場合は、そのモジュールを「無効」とする情報を設定テーブルに含ませる機能をさらに有すると、予めパソコン等によって設定する必要がなくなり好ましい。この時、各構成要素（入力装置１１、出力装置１３等）は演算処理装置１５からの要求信号を受け取ると必要となるモジュールに関する情報を出力する機能を有する。さらに、演算処理装置１５は当該要求信号を出力する機能と、各構成要素から出力されたモジュールに関する情報を受け取り、当該情報に基づいて設定テーブルのモジュール有効／無効情報を更新する機能を有している。
【００１８】
また、ＲＯＭ１５５は、図３に示すモジュール時間テーブルを情報βとして格納している。このモジュール時間テーブルは、各モジュールが実行する関数を呼び出すための関数エントリと、各モジュールの演算処理に要するモジュール最大処理時間（μ秒）の情報が含まれており、具体的には、モジュール１の関数エントリは「関数１」、モジュール最大処理時間は１５μ秒であり、モジュール２の関数エントリは「関数２」、モジュール最大処理時間は２０μ秒であり、モジュール３の関数エントリは「関数３」、モジュール最大処理時間は１０μ秒であり、モジュール４の関数エントリは「関数４」、モジュール最大処理時間は２０μ秒である。
また、図３に示すモジュール時間テーブルは、各モジュールに図２に示す設定テーブルと同じ各モジュールの演算処理の処理順である番号（Ｎｏ．）が付されており、具体的には、モジュール１〜４に対して、順にＮｏ．０〜Ｎｏ．３が付されている。
【００１９】
また、演算処理装置１５においてプロセッサ１５１は、その起動時に、図４に示す変数テーブルを作成し、これをＲＡＭ１５７に格納する。変数テーブルはカウント、実行Ｎｏ．、処理時間、周期カウンタ、最大周期数を含むものである。
【００２０】
そして、プロセッサ１５１は、図５のフローチャートに示すモジュール実行テーブル生成処理を行うことで図６に示すモジュール実行テーブルを作成し、これをＲＡＭ１５７に格納する。
【００２１】
図５にフローチャートでモジュール実行テーブル生成処理について説明する。
初めに、プロセッサ１５１は、フラッシュＲＯＭ１５３およびＲＯＭ１５５から、設定テーブル（図２）およびモジュール時間テーブル（図３）の情報を読み込み、各モジュールに付した各モジュールの演算処理の処理順である番号（Ｎｏ．）、モジュール、関数エントリ、最大処理時間、設定値（モジュール有効／無効情報）および実行サイクルを関連付けたテーブルを作成する（ステップＳ２１）。ここで作成したテーブルを「テーブルＸ」とする。
また、このステップＳ２１においては、テーブルＸにおける全ての実行サイクルを、モジュール時間テーブルのＮｏ．の最大値（以下「最大テーブル数」と称す）に１より大きい数を足した値（この好適実施例においては１を足して「４」）とする。
作成したテーブルＸを図７に示す。
【００２２】
次に、ＲＡＭ１５７に格納した図４に示す変数テーブルにおける各々（カウント、実行Ｎｏ．、処理時間、周期カウンタ）の値を０とする（ステップＳ２２）。
【００２３】
次に、テーブルＸにおいて、図４に示す変数テーブルにおける「カウント」と同じ「Ｎｏ．」が付されているモジュールを検索する（ステップＳ２３）。
例えば、初めはステップＳ２２によって「カウント」が「０」とされているが、この場合、テーブルＸにおいて「Ｎｏ．」が「０」である「モジュール１」を取得する。
【００２４】
次に、取得したモジュールが、テーブルＸにおいて有効かを判断する（ステップＳ２４）。そして、「有効」の場合は次のステップＳ２５を実行し（ステップＳ２４、Ｙｅｓ）、「無効」の場合は後述するステップＳ２９を実行する（ステップＳ２４、Ｎｏ）。
【００２５】
ステップＳ２４において、テーブルＸにおける設定値が「有効」である場合、取得したモジュールのテーブルＸにおけるモジュール最大処理時間と、図４に示す変数テーブルにおける処理時間とを加算し、得た値が定周期時間（３０μ秒）よりも小さいか判断する（ステップＳ２５）。
そして、定周期時間より小さい場合は、後述するステップＳ２７を実行し（ステップＳ２５、Ｙｅｓ）、定周期時間以上の場合は、次のステップＳ２６を実行する（ステップＳ２５、Ｎｏ）。
【００２６】
ステップＳ２５において、取得したモジュールのテーブルＸにおけるモジュール最大処理時間と変数テーブルにおける処理時間とを加算して得た値が定周期時間（３０μ秒）以上の場合、変数テーブルにおける「実行Ｎｏ．」の値に「１」を加算し、さらに「処理時間」を「０」とする（ステップＳ２６）。そして、その後、次のステップＳ２７を実行する。
【００２７】
ステップＳ２５において、取得したモジュールのテーブルＸにおけるモジュール最大処理時間と変数テーブルにおける処理時間とを加算して得た値が定周期時間（３０μ秒）よりも小さい場合、またはステップＳ２６の処理を行った後、取得したモジュールのテーブルＸにおける「実行サイクル」を、変数テーブルにおける「実行Ｎｏ．」と同じ値にする（ステップＳ２７）。
【００２８】
次に、取得したモジュールのテーブルＸにおける「モジュール最大処理時間」を、図４に示す変数テーブルにおける「処理時間」に加算する（ステップＳ２８）。
【００２９】
ステップＳ２８の処理を行った後、またはステップＳ２４において判断した結果、「有効」ではない場合（ステップＳ２４、Ｎｏ）、図４に示す変数テーブルにおける「カウント」が最大テーブル数（この好適実施例においては「３」）と同じか否かを判断する（ステップＳ２９）。
そして、異なる場合は（ステップＳ２９、Ｎｏ）、図４に示す変数テーブルにおける「カウント」に「１」を加算し（ステップＳ３０）、その後、ステップＳ２３を行う。
また、同じである場合は（ステップＳ２９、Ｙｅｓ）、図４に示す変数テーブルの「最大周期数」を現在の「実行Ｎｏ．」と同じ値として（ステップＳ３１）、終了とする。
【００３０】
なお、ここで説明している好適実施例の場合、上記のようなモジュール実行テーブル生成処理を終了した時点で、変数テーブルにおける各々は、図８に示す値となっている。これらの値は、後述する定周期の割り込み処理においても用いる。
【００３１】
このようなモジュール実行テーブル生成処理を行うことで図６に示すモジュール実行テーブル（情報γ）を作成することができる。
本発明の演算処理装置は、このようなモジュール実行テーブルを、例えば起動時に作成する。そして、予め、モジュール実行テーブル（情報γ）をＲＡＭ１５７に格納する。
【００３２】
制御装置１の演算処理装置１５は、上記のようにして作成したモジュール実行テーブルの情報をＲＡＭ１５７から読み込む。そして、モジュール実行テーブルの「実行サイクル」（スケジュール情報）に則って、各モジュールを順番に演算処理する。
演算処理（定周期の割り込み処理）の方法を、図９に示すフローチャートを用いて説明する。
【００３３】
初めに、図８に示す変数テーブルにおける「カウント」を「０」とする（ステップＳ４１）。
【００３４】
次に、モジュール実行テーブルにおいて、「カウント」と同じ「Ｎｏ．」が付されたモジュールを検索する（ステップＳ４２）。
初めは「カウント」は「０」であるので、「Ｎｏ．」が「０」であるモジュール１が取得される。
【００３５】
次に、モジュール実行テーブルにおいて、取得したモジュールの設定値が「有効」か否かを判断する（ステップＳ４３）。
そして、「有効」である場合、次のステップＳ４４を実行し（ステップＳ４３、Ｙｅｓ）、「有効」ではない場合（すなわち「無効」である場合）、後述するステップＳ４６を実行する（ステップＳ４３、Ｎｏ）。
【００３６】
ステップＳ４３において、取得したモジュールの設定値が「有効」である場合、取得したモジュールの、モジュール実行テーブルにおける「実行サイクル」と、図８に示す変数テーブルにおける「周期カウンタ」とが同じか否かを判断する（ステップＳ４４）。
そして、「実行サイクル」と「周期カウンタ」とが同じ場合は、次のステップＳ４５を実行し（ステップＳ４４、Ｙｅｓ）、同じでない場合は、後述するステップＳ４６を実行する（ステップＳ４４、Ｎｏ）。
【００３７】
ステップＳ４４において、取得したモジュールの、モジュール実行テーブルにおける「実行サイクル」と図８に示す変数テーブルにおける「周期カウンタ」とが同じである場合、取得したモジュールの、モジュール実行テーブルにおける「関数エントリ」を実行する（ステップＳ４５）。
【００３８】
ステップＳ４５を実行した後、または、ステップＳ４３において、取得したモジュールの設定値が「有効」でない場合（ステップＳ４３、Ｎｏ）、もしくは、ステップＳ４４において、取得したモジュールの、モジュール実行テーブルにおける「実行サイクル」と図８に示す変数テーブルにおける「周期カウンタ」とが同じでない場合（ステップＳ４４、Ｎｏ）、図８に示す変数テーブルにおける「カウント」が、最大テーブル数（この好適実施例においては「３」）と同じか否かを判断する（ステップＳ４６）。
そして、「カウント」と「最大テーブル数」とが同じでない場合は次に示すステップＳ４７を実行し（ステップＳ４６、Ｎｏ）、同じである場合は、後述するステップＳ４８を実行する（ステップＳ４６、Ｙｅｓ）。
【００３９】
ステップＳ４６において、「カウント」と「最大テーブル数」とが同じでない場合（ステップＳ４６、Ｎｏ）、図８に示す変数テーブルにおける「カウント」に１を加算し（ステップＳ４７）、その後、ステップ４２を実行する。
【００４０】
ステップＳ４６において、「カウント」と「最大テーブル数」とが同じである場合（ステップＳ４６、Ｙｅｓ）、図８に示す変数テーブルにおいて「周期カウンタ」と「最大周期数」とが同じか否かを判断する（ステップＳ４８）。
そして、「周期カウンタ」と「最大周期数」とが同じである場合（ステップＳ４８、Ｙｅｓ）、次に示すステップＳ４９を実行し、同じでない場合（ステップＳ４８、Ｎｏ）、後述するステップＳ５０を実行する。
【００４１】
ステップＳ４８において、「周期カウンタ」と「最大周期数」とが同じである場合（ステップＳ４８、Ｙｅｓ）、図８に示す変数テーブルにおける「周期カウンタ」を「０」とし（ステップＳ４９）、終了とする。
【００４２】
ステップＳ４８において、「周期カウンタ」と「最大周期数」とが同じでない場合（ステップＳ４８、Ｎｏ）、図８に示す変数テーブルにおける「周期カウンタ」に「１」を加算し（ステップＳ５０）、終了とする。
【００４３】
このような定周期割り込み処理を行った例を図１０に示す。ここで説明した好適実施例の場合、最初の周期でモジュール１およびモジュール３を実行し、次の周期でモジュール４を実行し、これを繰り返すこととなる。ここでモジュール２は設定値が「無効」のため実行されない。
本発明の制御装置は上記のような演算処理を行うので、使用しないモジュールが含まれる場合であっても、演算処理時間を短縮し、入力に対する出力制御をより高速化することができる。
例えば、使用しないモジュールを実行する従来の演算処理（図１３）の場合は演算処理を完了するためには３周期を要しているが、本発明の制御装置の場合（図１０）、演算処理を完了するためには２周期で完了することができる。
【符号の説明】
【００４４】
１      制御装置
１１    入力装置
１３    出力装置
１５    演算処理装置
１５１  プロセッサ
１５３  フラッシュＲＯＭ
１５５  ＲＯＭ
１５７  ＲＡＭ
９００  制御装置
９０２  入力信号
９０４  出力信号
９１２  入力装置
９１４  出力装置
９１６  演算処理装置
【図１】
2012173845.tif 000003
【図２】
2012173845.tif 000004
【図３】
2012173845.tif 000005
【図４】
2012173845.tif 000006
【図５】
2012173845.tif 000007
【図６】
2012173845.tif 000008
【図７】
2012173845.tif 000009
【図８】
2012173845.tif 000010
【図９】
2012173845.tif 000011
【図１０】
2012173845.tif 000012
【図１１】
2012173845.tif 000013
【図１２】
2012173845.tif 000014
【図１３】
2012173845.tif 000015