(57)【要約】【課題】  共有メモリを搭載するマルチコアマイコンにおいて、排他制御による待ち時間なしに、共有データの更新及び参照の履歴を管理することによって更新状態に応じた参照を行うための技術を提供する。【解決手段】  共有カウンタ１２と各ＣＰＵ用カウンタ１０，１１を設け、共有データ７ａの更新時には共有カウンタ１２をインクリメントし、共有データ７ａの参照時には各ＣＰＵ用カウンタ１０，１１を共有カウンタ１２と同じ値に更新する。【選択図】図２
2019168882.tif 000002
【特許請求の範囲】
【請求項１】
複数のＣＰＵと、
複数の前記ＣＰＵが共通にアクセスする共有データ及び固定値が格納される共有メモリと、
更新履歴と、
参照履歴と、
を備えた車両用制御装置において、
前記更新履歴は、前記共有データがいずれかの前記ＣＰＵによって更新された場合に更新され、
前記参照履歴は、前記ＣＰＵが前記共有データの値又は前記固定値を参照処理する前に、前記更新履歴と同じ値に更新される
ことを特徴とする車両用制御装置。
【請求項２】
請求項１に記載の車両用制御装置において、
前記更新履歴を比較する履歴比較部を備え、
該履歴比較部は、
前記更新履歴と前記参照履歴の比較を行い、
前記比較が一致しない場合、前記共有データは未処理であると判定し、
前記比較が一致する場合、前記共有データは初期状態かもしくは処理済であると判定し、比較結果フラグの値を更新する
ことを特徴とする車両用制御装置。
【請求項３】
請求項２に記載の車両用制御装置において、
前記ＣＰＵが更新処理を行う場合に、前記履歴比較部の前記比較結果フラグの値を判定し、前記共有データを更新処理するかもしくは更新処理しないかを切り替える
ことを特徴とする車両用制御装置。
【請求項４】
請求項２又は３に記載の車両用制御装置において、
前記ＣＰＵが参照処理を行う場合に、前記履歴比較部の前記比較結果フラグの値を判定し、前記共有データを参照処理するかもしくは前記固定値を参照処理するかを切り替える
ことを特徴とする車両用制御装置。
【請求項５】
請求項１から４のいずれか一項に記載の車両用制御装置において、
前記更新履歴及び前記参照履歴としてカウンタを用いる
ことを特徴とする車両用制御装置。
【請求項６】
請求項１から５のいずれか一項に記載の車両用制御装置において、
前記共有データは車載機器の制御値である
ことを特徴とする車両用制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両用制御装置に関する。
【背景技術】
【０００２】
本技術分野の背景技術として、特許文献１（特開２００９-１１００６３号公報）、特許文献２（特開２０１３-１７１５４７号公報）がある。
【０００３】
特許文献１の要約欄には、「共有メモリ３４に記憶されたデータを操作する記憶装置５０であって、複数のブロックに分割されブロック毎にデータを記憶する共有メモリ３４と、複数のブロックの状態を個別に示すポインタ３５と、ポインタ３５を排他する排他制御手段４０と、排他制御手段４０がポインタを排他している間、ポインタ３５を操作してブロックの状態を制御するポインタ制御手段４２、４４と、共有メモリ３４を排他することなく、状態に従いブロックに記憶されたデータを更新又は参照するアクセス手段４３、４５と、を有することを特徴とする。」と開示されている。
【０００４】
特許文献２の要約欄には、「データバッファを多重化し、各演算装置１０１、１０２が多重化された別のデータバッファに更新処理や参照処理を行い、データ更新処理が更新した１つのデータバッファを、データ更新処理を実行する演算装置１０１、１０２とは別の演算装置１０１、１０２がデータ更新処理の実行周期よりも短い時間の間に多重化したデータバッファを同期させる。」と開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９-１１００６３号公報
【特許文献２】特開２０１３-１７１５４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１では、ポインタの更新や参照に排他制御を使用しており、このポインタに全ＣＰＵがアクセスするため、排他制御により他のＣＰＵに待ち時間が発生し、厳しいリアルタイム性が求められるエンジン制御等の高速制御には、この待ち時間を許容できない課題がある。
【０００７】
また、特許文献２では、例えばいずれかのＣＰＵから一度だけ共有データを参照処理し、各ＣＰＵが同じ共有データを冗長に参照処理することを回避する必要がある場合にはこれを実現できない。
【０００８】
本発明は、上記のような課題を解決するためのものであり、共有メモリを搭載するマルチコアマイコンにおいて、排他制御による待ち時間なしに、共有データの更新及び参照の履歴を管理することによって更新状態に応じた参照を行うための技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、複数のＣＰＵと、複数の前記ＣＰＵが共通にアクセスする共有データ及び固定値が格納される共有メモリと、更新履歴と、参照履歴と、を備えた車両用制御装置において、前記更新履歴は、前記共有データがいずれかの前記ＣＰＵによって更新された場合に更新され、前記参照履歴は、前記ＣＰＵが前記共有データの値又は前記固定値を参照処理する前に、前記更新履歴と同じ値に更新される。
【発明の効果】
【００１０】
本発明に係る車両用制御装置によれば、共有メモリを搭載するマルチコアマイコンにおいて、排他制御による待ち時間なしに、共有データの更新及び参照の履歴を管理することによって更新状態に応じた参照を行うことが可能となる。
【００１１】
上記以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施例１，２における車両用制御装置のシステム構成を示すブロック図
【図２】本発明の実施例１，２におけるマイコンの構成を示すブロック図
【図３】本発明の実施例１，２におけるカウンタ値比較部の動作を示すフローチャート
【図４】本発明の実施例１，２における共有データの更新処理を示すフローチャート
【図５】本発明の実施例１，２における共有データ及び固定値の参照処理を示すフローチャート
【図６】本発明の実施例１における共有データ内の診断結果の更新処理及び参照処理を示すシーケンス図
【図７】本発明の実施例２における共有データ内の受信データを示す図表
【図８】本発明の実施例２における共有データ内の受信データの更新処理及び参照処理を示すシーケンス図
【発明を実施するための形態】
【００１３】
本実施例は、複数ＣＰＵ間で共有メモリのデータを更新・参照するための技術に関するものである。
【００１４】
近年の多くの車両システムは、電子化された車両制御機器を操作するＥＣＵ、すなわち電子制御装置（Electronic Control Unit）と、複数のＥＣＵ間の通信を可能にする車載ＬＡＮ（Local Area Network）から構成される。
【００１５】
車両システムでは演算量の増加に伴い、複数のＣＰＵを搭載するマルチコアマイクロコントローラ（マルチコアマイコン）を搭載したＥＣＵが採用され始めている。
【００１６】
マルチコアマイコンでは、複数のＣＰＵ間でデュアルポートＲＡＭなどの共有メモリの共有データにアクセス（データの書き込みやデータの読み出し）するときにデータの競合が発生する可能性がある。
【００１７】
データの競合を回避するための方法として、排他制御が知られている。排他制御は共有データにアクセスするタイミングが同時に発生しないことを実現するための手法で、セマフォ（semaphore）等が用いられる。共有データをアクセスする前にセマフォの取得を行い、取得に成功した場合にデータの更新（書き込み）、参照（読み出し）を行う。データの更新や参照が終わった後にセマフォの解放を行う。セマフォの解放はセマフォを取得したＣＰＵ又はタスクしかできない。一方のＣＰＵがセマフォを取得しているとき、他のＣＰＵがセマフォを取得しようとすると、セマフォが解放されるまで待ち状態となる。セマフォが解放されると、セマフォの解放を待っていたＣＰＵのうち１つのＣＰＵがセマフォを取得できる。マルチコア間のセマフォは複数ＣＰＵが同時にセマフォを取得できないハードウェアにより実現される。
これを踏まえて以下、本発明の実施の形態を図に基づき説明する。
【実施例１】
【００１８】
以下に、本発明の第１の実施形態について説明する。
【００１９】
図１は、車両用制御装置２のシステム構成を示すブロック図である。
【００２０】
車載センサ１から各種のセンサ情報としてスイッチ入力、エンジン回転数、吸入空気量などを示す情報が、車両用制御装置２に入力される。
【００２１】
車両用制御装置２は、エンジン、トランスミッション、インバータなどを制御するために使用される装置であり、入力回路４、マイコン６、出力ドライバ５から構成されている。
【００２２】
入力回路４は、入力フィルタやＡＤコンバータなどから構成されており、デジタル入力信号やアナログ入力信号をマイコン６に入力できる信号レベルやデジタル値に変換することを行っている。
【００２３】
マイコン６は、入力回路４からの各種の入力信号を元に制御量を演算し、出力ドライバ５への出力信号を生成している。
【００２４】
出力ドライバ５は、マイコン６の出力信号に従いアクチュエータ３が駆動できる信号の形態への変換や電圧増幅をし、オンオフ出力、パルス出力、ＰＷＭ出力などを行っている。
【００２５】
アクチュエータ３は、ソレノイドバルブ、モータ、リレーなどの部品であり、燃料噴射装置や点火装置などを駆動させることを行っている。
【００２６】
図２は、マイコン６の構成を示すブロック図である。
【００２７】
マイコン６は、共有メモリ７、演算装置８（ＣＰＵ１）、演算装置９（ＣＰＵ２）、ＣＰＵ１用カウンタ（参照履歴）１０、ＣＰＵ２用カウンタ（参照履歴）１１、共有カウンタ（更新履歴）１２、カウンタ値比較部（履歴比較部）１３を有している。
【００２８】
共有メモリ７は、共有データ７ａ、固定値７ｂを有している。
【００２９】
共有データ７ａは、車載機器の制御に必要な制御値であり、比較結果フラグ１４が０の時に演算装置８（ＣＰＵ１）から更新処理され、比較結果フラグ１４が１の時に演算装置８（ＣＰＵ１）又は演算装置９（ＣＰＵ２）から参照処理される。
【００３０】
固定値７ｂは、共有データ７ａの代わりに参照処理されるデータであり、比較結果フラグ１４が０の時に演算装置８（ＣＰＵ１）又は演算装置９（ＣＰＵ２）から参照処理される。
【００３１】
演算装置８（ＣＰＵ１）は、共有データ７ａを更新処理後、共有カウンタ（更新履歴）１２をインクリメントする。また、ＣＰＵ１用カウンタ（参照履歴）１０を共有カウンタ１２と同じ値に更新後、共有データ７ａもしくは固定値７ｂを参照処理する。
【００３２】
演算装置９（ＣＰＵ２）は、ＣＰＵ２用カウンタ（参照履歴）１１を共有カウンタ１２と同じ値に更新後、共有データ７ａもしくは固定値７ｂを参照処理する。
【００３３】
ＣＰＵ１用カウンタ（参照履歴）１０は、演算装置８（ＣＰＵ１）が共有データ７ａ又は固定値７ｂを参照処理する前に、共有カウンタ１２と同じ値に更新される。
【００３４】
ＣＰＵ２用カウンタ（参照履歴）１１は、演算装置９（ＣＰＵ２）が共有データ７ａ又は固定値７ｂを参照処理する前に、共有カウンタ１２と同じ値に更新される。
【００３５】
共有カウンタ１２は、演算装置８（ＣＰＵ１）が共有データ７ａを更新処理後にインクリメントされるとともに、演算装置８（ＣＰＵ１）、演算装置９（ＣＰＵ２）、カウンタ値比較部（履歴比較部）１３によって参照される。
【００３６】
カウンタ値比較部１３は、共有カウンタ１２の値とＣＰＵ１用カウンタ１０及びＣＰＵ２用カウンタ１１の比較を行い、全て一致しない場合にはその共有データ７ａは未処理であると判断し比較結果フラグ１４を１に更新する。また、いずれかが一致する場合には共有データ７ａは初期状態かもしくは処理済であると判断し比較結果フラグ１４を０に更新する。
【００３７】
比較結果フラグ１４は、演算装置８（ＣＰＵ１）及び演算装置９（ＣＰＵ２）によって参照される。
【００３８】
図３は、カウンタ値比較部１３の動作を示すフローチャートである。
【００３９】
ステップＳ３０１：共有カウンタ１２とＣＰＵ１用カウンタ１０及びＣＰＵ２用カウンタ１１の値が一致するかを判定する。
【００４０】
ステップＳ３０２：共有データ７ａは未処理であると判断し、比較結果フラグ１４を１に更新する。
【００４１】
ステップＳ３０３：共有データ７ａは処理済であると判断し、比較結果フラグ１４を０に更新する。
【００４２】
図４は、共有データの更新処理を示すフローチャートである。
【００４３】
ステップＳ４０１：カウンタ値比較部１３を呼出す。
【００４４】
ステップＳ４０２：比較結果フラグ１４の値を判定する。
【００４５】
ステップＳ４０３：共有データ７ａは処理済の状態であるため更新処理する。
【００４６】
ステップＳ４０４：共有カウンタ１２をインクリメントする。
【００４７】
図５は、共有データ及び固定値の参照処理を示すフローチャートである。
【００４８】
ステップＳ５０１：カウンタ値比較部１３を呼出す。
【００４９】
ステップＳ５０２：比較結果フラグ１４の値を判定する。
【００５０】
ステップＳ５０３：そのＣＰＵ用カウンタを共有カウンタ１２と同じ値に更新する。
【００５１】
ステップＳ５０４：共有データ７ａは未処理であると判断し、共有データ７ａを参照処理する。
【００５２】
ステップＳ５０５：そのＣＰＵ用カウンタを共有カウンタ１２と同じ値に更新する。
【００５３】
ステップＳ５０６：共有データ７ａは処理済であると判断し、固定値７ｂを参照処理する。
【００５４】
図６は、共有データ内の診断結果の更新処理及び参照処理を示すシーケンス図である。
【００５５】
診断結果を処理する際には、処理の効率化のためＣＰＵ１とＣＰＵ２の両方を使用することが求められる。
【００５６】
共有メモリ７内の共有データ７ａに格納された診断結果をＣＰＵ１は周期的に更新処理する。診断は、図１の出力ドライバ５内で、アクチュエータ３を動作させるためのＥＣＵの出力信号に対して実施され、ＮｏＦａｕｌｔ検出の場合には共有データ７ａは０ｘＡで更新され、Ｆａｕｌｔ検出の場合には共有データ７ａは０ｘＦで更新される。また、ＣＰＵ１及びＣＰＵ２はこの周期的な更新とは非同期に共有データ７ａを参照処理する。共有データ７ａが処理済の場合に参照処理される固定値７ｂには、共有データ７ａが処理済であることを示す０ｘＣが格納されている。
【００５７】
ステップＳ６０１：ＣＰＵ１は更新処理によって診断結果としてＦａｕｌｔを検出後、カウンタ値比較部１３を呼出す。カウンタ値比較部１３は共有カウンタ１２とＣＰＵ１用カウンタ１０及びＣＰＵ２用カウンタ１１を比較し、共有データ７ａは処理済であると判断し比較結果フラグ１４の値を初期値である０のまま保持する。ＣＰＵ１は比較結果フラグ１４の値を参照し、０であるため共有データ７ａ（診断結果）を０ｘＦに更新処理後、共有カウンタ１２をインクリメントする。
【００５８】
ステップＳ６０２：ＣＰＵ１は更新処理によって診断結果としてＮｏＦａｕｌｔを検出後、カウンタ値比較部１３を呼出す。カウンタ値比較部１３は共有カウンタ１２とＣＰＵ１用カウンタ１０及びＣＰＵ２用カウンタ１１を比較し、共有データ７ａは未処理であると判断し比較結果フラグ１４の値を１に更新する。ＣＰＵ１は比較結果フラグ１４の値を参照し、１であるため共有データ７ａ（診断結果）を更新処理せず、共有カウンタ１２をインクリメントしない。
【００５９】
ステップＳ６０３：ＣＰＵ２は参照処理によってカウンタ値比較部１３を呼出す。カウンタ値比較部１３は共有カウンタ１２とＣＰＵ１用カウンタ１０及びＣＰＵ２用カウンタ１１を比較し、共有データ７ａは未処理であると判断し比較結果フラグ１４の値を１のまま保持する。ＣＰＵ２は比較結果フラグ１４の値を参照し、１であるためＣＰＵ２用カウンタ１１を共有カウンタ１２と同じ値に更新後、共有データ７ａ（診断結果）を参照処理する。
【００６０】
ステップＳ６０４：ＣＰＵ１は参照処理によってカウンタ値比較部１３を呼出す。カウンタ値比較部１３は共有カウンタ１２とＣＰＵ１用カウンタ１０及びＣＰＵ２用カウンタ１１を比較し、共有データ７ａは処理済であると判断し比較結果フラグ１４の値を０に更新する。ＣＰＵ１は比較結果フラグ１４の値を参照し、０であるためＣＰＵ１用カウンタ１１を共有カウンタ１２と同じ値に更新後、固定値７ｂを参照処理する。
【００６１】
ステップＳ６０５：ＣＰＵ１は更新処理によって診断結果としてＮｏＦａｕｌｔを検出後、カウンタ値比較部１３を呼出す。カウンタ値比較部１３は共有カウンタ１２とＣＰＵ１用カウンタ１０及びＣＰＵ２用カウンタ１１を比較し、共有データ７ａは処理済であると判断し比較結果フラグ１４の値を０のまま保持する。ＣＰＵ１は比較結果フラグ１４の値を参照し、０であるため共有データ７ａ（診断結果）を０ｘＡに更新処理後、共有カウンタ１２をインクリメントする。
【００６２】
以上説明した本実施形態によれば、共有カウンタ１２と各ＣＰＵ用カウンタを設け、共有データの更新時には共有カウンタ１２をインクリメントし、共有データ７ａの参照時には各ＣＰＵ用カウンタを共有カウンタ１２と同じ値に更新する仕組みとする。
【００６３】
これにより、共有メモリ７を搭載するマルチコアマイコン６において、排他制御による待ち時間なしに、共有データ７ａ（診断結果）の更新及び参照の履歴を管理することによって更新状態に応じた参照を行うことが可能となる。
【実施例２】
【００６４】
以下に、本発明の第２の実施形態について説明する。
【００６５】
図７は、共有データ７ａ内の受信データを示す図表である。図８は、共有データ７ａ内の受信データの更新処理及び参照処理を示すシーケンス図である。
【００６６】
実施例１との相違点は、共有メモリ７内の共有データ７ａに図１の車載センサ１から入力回路４を経由して受信した１００ｂｙｔｅ単位の比較的大きな一連の受信データを格納することである。図７の受信データＡ〜Ｅをこの順番に処理する場合、それぞれにＩｎｄｅｘ１〜５を付加し更新及び参照の処理単位を管理している。また、受信データはすべてのデータを処理する必要があることから、更新処理時には比較結果フラグ１４の値を参照せず必ず更新処理し、更新処理の間には必ず１回以上の参照処理をする。参照処理時には比較結果フラグ１４の値が処理済みを示す０であっても固定値７ｂは処理すべきデータではないため参照処理しない。
【００６７】
受信データのような比較的大きなデータを処理する際には、処理の効率化のためＣＰＵ１とＣＰＵ２の両方を使用することが求められる。
【００６８】
ステップＳ８０１：ＣＰＵ１は更新処理によってカウンタ値比較部１３を呼出す。カウンタ値比較部１３は共有カウンタ１２とＣＰＵ１用カウンタ１０及びＣＰＵ２用カウンタ１１を比較し、共有データ７ａは処理済であると判断し比較結果フラグ１４の値を初期値である０のまま保持する。ＣＰＵ１は本実施形態では比較結果フラグ１４の値を参照せずに、共有データ７ａの受信データＡ（Ｉｎｄｅｘ１）を更新処理後、共有カウンタ１２をインクリメントする。
【００６９】
ステップＳ８０２：ＣＰＵ１は参照処理によってカウンタ値比較部１３を呼出す。カウンタ値比較部１３は共有カウンタ１２とＣＰＵ１用カウンタ１０及びＣＰＵ２用カウンタ１１を比較し、共有データ７ａは未処理であると判断し比較結果フラグ１４の値を１に更新する。ＣＰＵ１は比較結果フラグ１４の値を参照し、１であるためＣＰＵ１用カウンタ１０を共有カウンタ１２と同じ値に更新後、共有データ７ａの受信データＡ（Ｉｎｄｅｘ１）を参照処理する。
【００７０】
ステップＳ８０３：ＣＰＵ１は更新処理によってカウンタ値比較部１３を呼出す。カウンタ値比較部１３は共有カウンタ１２とＣＰＵ１用カウンタ１０及びＣＰＵ２用カウンタ１１を比較し、共有データ７ａは処理済であると判断し比較結果フラグ１４を０に更新する。ＣＰＵ１は本実施形態では比較結果フラグ１４の値を参照せずに、共有データ７ａの受信データＢ（Ｉｎｄｅｘ２）を更新処理後、共有カウンタ１２をインクリメントする。
【００７１】
ステップＳ８０４：ＣＰＵ２は参照処理によってカウンタ値比較部１３を呼出す。カウンタ値比較部１３は共有カウンタ１２とＣＰＵ１用カウンタ１０及びＣＰＵ２用カウンタ１１を比較し、共有データ７ａは未処理であると判断し比較結果フラグ１４の値を１に更新する。ＣＰＵ２は比較結果フラグ１４の値を参照し、１であるためＣＰＵ２用カウンタ１１を共有カウンタ１２と同じ値に更新後、共有データ７ａの受信データＢ（Ｉｎｄｅｘ２）を参照処理する。
【００７２】
ステップＳ８０５：ＣＰＵ１は参照処理によってカウンタ値比較部１３を呼出す。カウンタ値比較部１３は共有カウンタ１２とＣＰＵ１用カウンタ１０及びＣＰＵ２用カウンタ１１を比較し、共有データ７ａは処理済であると判断し比較結果フラグ１４の値を０に更新する。ＣＰＵ１は比較結果フラグ１４の値を参照し、０であるためＣＰＵ１用カウンタ１１を共有カウンタ１２と同じ値に更新するが、本実施形態では固定値７ｂは処理すべきデータではないため参照処理しない。
【００７３】
ステップＳ８０６：ＣＰＵ１は更新処理によってカウンタ値比較部１３を呼出す。カウンタ値比較部１３は共有カウンタ１２とＣＰＵ１用カウンタ１０及びＣＰＵ２用カウンタ１１を比較し、共有データ７ａは処理済であると判断し比較結果フラグ１４の値を０のまま保持する。ＣＰＵ１は本実施形態では比較結果フラグ１４の値を参照せずに、共有データ７ａの受信データＣ（Ｉｎｄｅｘ３）を更新処理後、共有カウンタ１２をインクリメントする。
【００７４】
以上説明した本実施形態によれば、共有メモリ７を搭載するマルチコアマイコン６において、排他制御による待ち時間なしに、共有データ７ａ（受信データ）の更新及び参照の履歴を管理することによって更新状態に応じた参照を行うことが可能となる。
【００７５】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段などは、それらの一部又は全部を、例えば集積回路で設計するなどによりハードウェアで実現してもよい。また、上記の各構成、機能などは、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。
【符号の説明】
【００７６】
１  車載センサ、２  車両用制御装置、３  アクチュエータ、４  入力回路、５  出力ドライバ、６  マイコン、７  共有メモリ、７ａ  共有データ、７ｂ  固定値、８  演算装置（ＣＰＵ１）、９  演算装置（ＣＰＵ２）、１０  ＣＰＵ１用カウンタ（参照履歴）、１１  ＣＰＵ２用カウンタ（参照履歴）、１２  共有カウンタ（更新履歴）、１３  カウンタ値比較部（履歴比較部）、１４  比較結果フラグ
【図１】
2019168882.tif 000003
【図２】
2019168882.tif 000004
【図３】
2019168882.tif 000005
【図４】
2019168882.tif 000006
【図５】
2019168882.tif 000007
【図６】
2019168882.tif 000008
【図７】
2019168882.tif 000009
【図８】
2019168882.tif 000010