JP2007213402A - プログラムコード生成装置 - Google Patents

プログラムコード生成装置 Download PDF

Info

Publication number
JP2007213402A
JP2007213402A JP2006033875A JP2006033875A JP2007213402A JP 2007213402 A JP2007213402 A JP 2007213402A JP 2006033875 A JP2006033875 A JP 2006033875A JP 2006033875 A JP2006033875 A JP 2006033875A JP 2007213402 A JP2007213402 A JP 2007213402A
Authority
JP
Japan
Prior art keywords
program code
calculation
input
warning
code generation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006033875A
Other languages
English (en)
Other versions
JP4887814B2 (ja
Inventor
Shuji Nakasaki
修二 中崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Denso Corp
Original Assignee
Denso Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Denso Corp filed Critical Denso Corp
Priority to JP2006033875A priority Critical patent/JP4887814B2/ja
Publication of JP2007213402A publication Critical patent/JP2007213402A/ja
Application granted granted Critical
Publication of JP4887814B2 publication Critical patent/JP4887814B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】入力された制御モデルに対応するプログラムコードを生成するプログラムコード生成装置において、制御モデルを図面として目視する際の可読性が悪化することを防止しつつ、生成したプログラムコードに基づいて生成されたプログラムを実行する際の演算速度が遅くなることを防止できるようにする。
【解決手段】プログラムコード生成装置1においては、演算ブロックにおいて各種演算の演算順序を入力する各種設定入力部52により入力された演算順序を、プログラムコード生成装置1の記憶装置が各種パラメータに関連付けて記憶する。そして、記述された制御モデル20に対応するプログラムコードを各種パラメータの入力順に生成するコード生成処理部12は、プログラムコード生成装置1の記憶装置に記憶された演算順序を入力順として、プログラムコードを生成する。
【選択図】図1

Description

本発明は、入力された制御モデルに対応するプログラムコードを生成するプログラムコード生成装置に関する。
従来より、使用者が演算ブロックを含む制御モデルを入力し、プログラムコード生成指令を入力すると、予め設定された生成ルールに基づいて、入力された制御モデルに対応したプログラムコードを出力するプログラムコード生成装置が知られている(例えば、特許文献1参照)。
このようなプログラムコード生成装置では、まず使用者により、例えば図12(a)に示すような制御モデルが入力される。即ち、この制御モデルは、各種パラメータとしての変数Aと定数Bとに対して行う演算が、変数Aおよび定数Bから延出された矢印を演算ブロック(図12では乗除算ブロック)に引き込む形態で記述されている。特に、図12(a)に示す制御モデルにおいては、変数Aには「÷(除算)」が対応づけられており、定数Bには「×(乗算)」が対応付けられている。
このような制御モデルが入力された後で、プログラムコード生成指令が入力されると、プログラムコード生成装置は、図12(a)に示すようなプログラムコードを出力する。
即ち、変数Aおよび定数Bは、この演算ブロックにおいて、この演算ブロックへの入力順(つまり上から順)に使用され、図12(a)に示すように、「rtB.Product = 1.0 / rtb#DataStoreReadA * rtP.ConstantB#Value(「解」=1.0/「変数A」*「定数B」)」というプログラムコードとして出力される。
特開2003−173256号公報
しかしながら、上記プログラムコード生成装置等の一般的なプログラムコード生成装置では、演算ブロックへの入力順(上から順)に各種パラメータ(ここでは変数Aおよび定数B)を使用するため、演算の先頭に除算(または減算)を行うパラメータを入力すると、「1.0/(または「−」)」というプログラムコードが追記される。よって、このプログラムコードに基づいて生成されたプログラムを実行する際には、プログラムコードが追記された分だけ余分な演算を行うことになるので、演算速度が遅くなるという問題点がある。
このような問題点を解決するためには、演算の先頭が除算(または減算)にならないように、乗算(または加算)が対応付けられた数値を演算の先頭に配置すればよい。即ち、図12(b)に示すように、除算が対応する変数Aから延びる矢印を、乗算が対応する定数Bから延びる矢印よりも演算ブロックの下方に記述する。このような制御モデルに基づいてプログラムコードの生成を実施すれば、図12(b)に示すようなプログラムコードが生成され、変数Aおよび定数Bは、「rtB.Product = rtP.ConstantB#Value / rtb#DataStoreReadA(「解」=「定数B」/「変数A」)」という演算順序が変更されたプログラムコードとして出力される。この場合には、「1.0/(または「−」)」というプログラムコードが追記されることがないので、演算速度が遅くなることを防止することができる。
しかしながら、図12(b)に示す制御モデルにおいては、演算順序を変更するために演算ブロックへの入力順を変更しているので、結線(変数Aから演算ブロックに延びる矢印と定数Bから演算ブロックに延びる矢印と)が交差してしまう。このように結線が交差すると、制御モデルを図面として目視する際の可読性が悪化するという問題点がある。
そこで、このような問題点を鑑み、入力された制御モデルに対応するプログラムコードを生成するプログラムコード生成装置において、制御モデルを図面として目視する際の可読性が悪化することを防止しつつ、生成したプログラムコードに基づいて生成されたプログラムを実行する際の演算速度が遅くなることを防止できるようにすることを本発明の目的とする。
かかる目的を達成するためになされた請求項1に記載のプログラムコード生成装置においては、演算ブロックにおいて各種演算の演算順序を入力する演算順序入力手段により入力された演算順序を、演算順序記憶手段が各種パラメータに関連付けて記憶する。そして、記述された制御モデルに対応するプログラムコードを各種パラメータの入力順に生成する生成手段は、演算順序記憶手段に記憶された演算順序を入力順として、プログラムコードを生成する。
従って、このようなプログラムコード生成装置によれば、入力された演算順序に従ってプログラムコードを生成することができるので、制御モデルの可読性を損なうことがない。また、この装置により生成されたプログラムコードに基づいて生成されたプログラムを実行する際の演算速度が遅くなることを防止することができる。
ところで、請求項1に記載のプログラムコード生成装置においては、請求項2に記載のように、生成手段の作動前に、演算順序記憶手段に記憶された演算順序に従って、生成手段により生成されるプログラムコードの内容を検証するシミュレーション手段を備えていてもよい。
このようなプログラムコード生成装置によれば、実際に生成したプログラムコードに基づくプログラムを実行するときと同様の条件でプログラムの検証作業(シミュレーション)を実行することができるので、プログラムの検証作業を容易に行うことができる。
また、請求項2に記載のプログラムコード生成装置において、演算ブロックに、入力されたパラメータ同士を加減算する加減算ブロックを備えている場合には、請求項3に記載のように、シミュレーション手段が加減算ブロックにて加減算するパラメータ同士のレンジの差が、予め設定された閾値よりも大きい場合に、加減算ブロックでの演算精度の悪化を警告する第1警告手段を備えていてもよい。また、請求項4に記載のように、シミュレーション手段が加減算ブロックにて加減算する前後で各種パラメータの値のレンジの差が、予め設定された閾値よりも大きく変化した場合に、この加減算ブロックでの演算精度の悪化を警告する第2警告手段を備えていてもよい。
このようなプログラムコード生成装置によれば、精度悪化箇所を特定することができるので、精度悪化箇所を適宜修正すればより演算精度を向上させることができる。
特に、浮動小数点演算を行う場合には、演算後の数値(解)の桁数が大きく変化すると、実質的に使用する桁数が減少してしまい、演算精度の悪化が発生するが、請求項4に記載の発明では、加減算ブロックにて加減算する前後で各種パラメータの値のレンジの差を監視するので、演算精度の悪化を防止することができる。
さらに、請求項3または請求項4に記載のプログラムコード生成装置においては、請求項5に記載のように、各警告手段が演算精度の悪化の判定を行う際に参照する閾値を入力するための閾値入力手段と、閾値入力手段を介して入力された閾値を記憶する閾値記憶手段と、を備えていてもよい。
このようなプログラムコード生成装置によれば、生成したプログラムコードに求められる演算精度(レベル)を使用者が設定することができる。
また、請求項3または請求項4に記載のプログラムコード生成装置が浮動小数点演算を実施する場合には、請求項6に記載のように、浮動小数点演算が単精度で実施されるか倍精度で実施されるかを判定し、判定結果に応じて予め設定された閾値を各警告手段が参照する閾値として設定する閾値設定手段を備えていてもよい。
このようなプログラムコード生成装置によれば、演算精度によって閾値を設定することができるので、演算精度が高く設定されており演算精度の悪化が発生しない場合には余分な警告を排除することができる。
次に、請求項3〜請求項6の何れかに記載のプログラムコード生成装置においては、各警告手段が警告する内容を全て表示すると、その警告の内容には使用者にとって不要なものがあったり、警告の数が多すぎて使用者が重要な警告を判別し難くなったりすることがある。そこで、請求項7に記載のように、各警告手段による精度悪化の警告の表示形態を予め設定された選択肢の中から設定するための警告内容設定入力手段と、警告内容設定入力手段により入力された設定内容を記憶する警告内容設定記憶手段と、警告内容設定記憶手段に記憶された設定内容に基づいて精度悪化の警告を出力する警告出力手段と、を備えていてもよい。
このようなプログラムコード生成装置によれば、警告の内容を使用者が任意に設定することができるので、使用者にとって重要な警告の内容を識別し易くすることができる。
また、請求項3〜請求項7の何れかに記載のプログラムコード生成装置においては、請求項8に記載のように、警告手段が加減算ブロックでの演算精度の悪化を警告した場合に、演算順序記憶手段に記憶された演算順序を予め設定された規則に基づいて変更する演算順序変更手段を備えていてもよい。また特に、演算順序変更手段は、請求項9に記載のように、演算ブロックに入力される各種パラメータ同士の大小関係に基づいて演算順序記憶手段に記憶された演算順序を変更するよう構成されていてもよい。
このようなプログラムコード生成装置によれば、演算精度の悪化を警告された場合に、演算順序を適切な順序に変更することができるので、演算精度を改善することができる。
また、演算順序を自動的に設定することができるので、プログラムコードを生成するための工数を削減することができる。
特に、請求項9に記載の発明では、演算ブロックに入力される各種パラメータ同士の大小関係に着目して演算順序を変更するので、演算後の値に着目して演算順序を変更する場合と比較して、演算順序を変更するためのアルゴリズムを簡素化することができる。
さらに、請求項2〜請求項9の何れかに記載のプログラムコード生成装置においては、請求項10に記載のように、シミュレーション手段の作動前に、制御モデルに同じ種類の演算ブロックが連続して記述されているか否かを判定し、同じ種類の演算ブロックが連続して記述されていれば、これらの演算ブロックを1つの演算ブロックとして集約して記述し直す集約手段を備えていてもよい。
このようなプログラムコード生成装置によれば、演算ブロックの数を集約することにより、演算回数を少なくすることができるので、演算速度を向上させることができる。
また、演算ブロックを集約することにより、演算順序を変更する際の自由度を高くすることができるので、より演算精度を向上させることができる。
次に、上記目的を達成するためになされた請求項11に記載のプログラムコード生成装置においては、生成手段の作動前に、生成手段により生成されるプログラムコードの内容を検証するシミュレーション手段と、請求項3に記載の第1警告手段と同様の第1警告手段とを備えている。
また、請求項12に記載のプログラムコード生成装置においては、請求項11に記載の第1警告手段に換えて、請求項4に記載の第2警告手段と同様の第2警告手段を備えている。
このようなプログラムコード生成装置によれば、各警告手段により精度悪化箇所を特定することができるので、精度悪化箇所を修正すればより演算精度を向上させることができる。
特に、浮動小数点演算を行う場合には、演算後の数値(解)の桁数が大きく変化すると、実質的に使用する桁数が減少してしまい、演算精度の悪化が発生するが、請求項12に記載の発明では、加減算ブロックにて加減算する前後で各種パラメータの値のレンジの差を監視するので、演算精度の悪化を防止することができる。
以下に本発明にかかる実施の形態を図面と共に説明する。図1は、プログラムコード生成装置1を用いたプログラム生成の流れを示す説明図である。
本実施例では、車両制御用のプログラム作成を目的としており、プログラム仕様を示す制御モデル20(以下「制御モデル20」という。)から、コード生成ツール100がプログラムコードを生成する。ここでいうプログラムコードはソースコードであり、コンパイラ・リンカ31によってオブジェクトコードに変換されて、電子制御装置(以下「ECU」という)のフラッシュROM32に書き込まれる。
プログラムコード生成装置1のハードウェア構成は、周知のコンピュータシステムとして構成されている。即ち、プログラムコード生成装置は、CPU、ROM、RAM、I/Oおよびこれらを接続するバスラインをはじめ、周辺機器としてのハードディスク装置、キーボード・ポインティングデバイス等の各種入力部(モデル入力部51、各種設定入力部52、開始指令入力部53等に相当)、ディスプレイ等の表示部40、および外部との間で通信を行うための通信装置等を備えている。
このようなハードウェア構成は従来より当業者によく知られたものであるため、一部記述を省略し、図1には、コード生成ツール10の機能をブロックにて示した。図1に示すように、コード生成ツール10は、抽出エンジン11と、コード生成処理部12と、シミュレーション処理部13と、生成ルール記憶部14とを備えている。なお、プログラムコード生成装置1において演算が実行される際には、より高精度な演算を行うために浮動小数点演算により実行される。
抽出エンジン11は、制御モデル20を読み込んで中間ファイルを出力する。このとき、制御モデル20から、演算ブロック(加減算ブロック21,乗除算ブロック22,三角関数ブロック23等)や、この演算ブロックに入力される各種パラメータの演算順序、パラメータ名等のプログラムコードの生成に必要な各種情報が抽出される。
コード生成処理部12は、抽出エンジン11から出力される中間ファイルに対応するプログラムコードを生成する。
このときコード生成処理部12は生成ルールを参照するが、この参照される生成ルールを格納しているのが、ROMやハードディスク装置の一部として構成された生成ルール記憶部14である。なお、生成ルール記憶部14には、抽出エンジン11にて抽出された演算順序が一時保持される。従って、コード生成処理部12は、演算順序を含む生成ルールに基づいてプログラムコードを生成することになる。
また、シミュレーション処理部13は、抽出エンジン11から出力される中間ファイルを入力し、シミュレーション処理を実行する。なお、このとき、シミュレーション処理部13は、生成ルール記憶部14に記憶された生成ルール(演算順序を含む)を用いてシミュレーション処理を行う。つまり、シミュレーション処理部13は、コード生成処理部12にて生成される予定のプログラムコードについての検証を行うのである。
次に、制御モデル20について説明する。
制御モデル20は、抽象化言語で記述されたものであり、例えば、図3等に示すように、各制御間のパラメータの動きを示したものである。この制御モデル20には、図1や図3等に示すように、変数28や定数29等のパラメータに対して各種演算を対応付けた加減算ブロック21、乗除算ブロック22、三角関数ブロック23等が記述される。
このようなプログラムコード生成装置1を用いてプログラムコードを生成する作業を実施する際には、例えば、図2に示すような手順でプログラムコード生成作業を行う。
なお、図2はプログラムコード生成作業の手順を示す説明図である。
プログラムコード生成作業では、まず、使用者が制御モデル20を入力する作業を実施する(S110)。この作業は、使用者がキーボード等の各種入力部をモデル入力部51として機能させ、例えば図3等に示すような制御モデル20を入力する。
そして、この制御モデル20を入力する作業が終了すると、使用者は、最適化処理(S120)を開始する指令を、開始指令入力部53として機能する各種入力部を用いて入力する。すると、シミュレーション処理部13(CPU)が最適化処理を実行する。この最適化処理について図3を用いて説明する。
この最適化処理において、シミュレーション処理部13は、例えば、制御モデル20として図3(a)に示すように、同じ種類の演算ブロック(図3では加減算ブロック)が連続して記述されている演算ブロックを抽出し、これらの演算ブロックを、図3(b)に示すように、ひとまとめにしたものに書き換え、書き換え前の制御モデル20を書き換え後の制御モデル20に置換する。
すべての演算ブロックに対して最適化処理(S120)が終了すれば、シミュレーション処理(S130)に移行する。なお、最適化処理は、図12に示すような乗除算ブロック22にも適用することができる。
シミュレーション処理(S130)は、使用者が開始指令入力部53を介してシミュレーション開始指令を入力すると開始される。このシミュレーション処理については、図4を用いて説明する。図4はシミュレーション処理部13(CPU)が実行するシミュレーション処理を示すフローチャートである。
シミュレーション処理においては、まず、閾値入力画面を表示部40に表示させる(S210)。この閾値入力画面は、例えば、図5(a)に示すように、後述する演算精度判定処理の際に用いられる2つの閾値α,β等の初期設定条件を入力するための画面である。また、この閾値入力画面においては、演算精度の判定結果を表示する際の表示形態を「時間毎に警告する」か否かを選択することができるよう設定されている。なお、この表示形態については後に説明する。
そして、この画面を表示させると、使用者により閾値等の条件が入力されたか否かを判定する(S220)。閾値等の条件が入力されていなければ(S220:NO)、S220の処理を繰り返し、閾値等の条件が入力されていれば(S220:YES)、シミュレーション処理を実行するに当たって必要なその他の各種設定を入力するための入力画面を表示する(S230)。
ここで、この処理において使用者に入力を求める条件としては、例えば、各種演算(浮動小数点演算)を単精度で実行するか、倍精度で実行するか等の設定が考えられる。
そして、これらの条件が入力されたか否かを判定する(S240)。これらの条件が入力されていなければ(S240:NO)、S240の処理を繰り返し、これらの条件が入力されていれば(S240:YES)、制御モデル20に記述された演算ブロックのうちの1つを選択する(S250)。
そして、この演算ブロックに関して演算順序を入力するための画面を表示する(S260)。ここで、演算順序を入力するための画面としては、例えば、この演算ブロックに2つの数値が入力されている場合には、図5(b)に示すように、演算順の欄に、「2 1」と入力することにより、初めに入力された数値を「2」番目に演算し、後から入力された数値を「1」番目に演算するよう設定する。
そして、このような入力画面において各欄の入力が終了したか否かを判定する(S270)。各欄の入力が終了していなければ(S270:NO)、S270の処理を繰り返し、各欄の入力が終了していれば(S270:YES)、該当する演算ブロックの各パラメータに演算順序を対応させてRAMやハードディスク装置に記録する(S280)。なお、この際には、制御モデル20そのものを書き換えるような処理は実行せずに、演算ブロックに演算順序を対応させるのみとする。このため、制御モデル20を図面として目視した際には演算順序の変更前と何も変わらない状態とされている。
そして、全ての演算ブロックについて演算順序を設定したか否かを判定する(S290)。
まだ演算順序を設定していない演算ブロックがあれば(S290:NO)、演算順序を選択していないブロックの1つを選択し(S300)、S260に戻る。
一方、全ての演算ブロックについて演算順序を設定していれば(S290:YES)、再び、演算ブロックのうちの1つを選択する(S310)。
そして、この演算ブロックに関する演算内容と演算順序とを抽出エンジン11に抽出させ、この演算順序を含む生成ルールに従って、この演算ブロックに関する演算を実施する(S320)。
そして、この演算における演算精度の判定をする演算精度判定処理を実施する(S330)。
この演算判定処理については、図6を用いて詳しく説明する。なお、図6(a)は演算ブロックと演算ブロックに入力される各種数値との対応関係を示す模式図、図6(b)はシミュレーション処理部13が実行する精度判定処理を示すフローチャートである。
ここで、図6(b)に示す演算精度判定処理および後述する演算順序変更処理(図7)においては、演算ブロックに入力されるパラメータ(変数28、定数29)を演算順にa(k)(ただしk=1〜n)と定義する。なお、減算が関連付けられたパラメータについては「−a(k)」として取り扱う。また、a(k)までの演算結果をb(k)(ただしb(1)=a(1))と定義する。
図6(b)に示す演算精度判定処理は、まず、現在加減算ブロックを選択中か否かを判定する(S510)。加減算ブロックを選択してなければ(S510:NO)、当該演算精度判定処理を終了する。また、加減算ブロックを選択していれば(S510:YES)、k=1として設定し(S520)、b(k)およびa(k+1)を選択する(S530)。そして、max(|b(k)|:|a(k+1)|)/min(|b(k)|:|a(k+1)|))>α、つまりb(k)とa(k+1)のうちの絶対値の大きいものを、b(k)とa(k+1)のうちの絶対値の小さいもので除算したものが、S220にて入力された閾値αよりも大きいか否かを判定する(S540)。
max(|b(k)|:|a(k+1)|)/min(|b(k)|:|a(k+1)|)>αであれば(S540:YES)、加減算ブロックにて加減算するパラメータ同士のレンジの差が閾値αよりも大きいことを示すタイプ1の警告をRAMに記憶し(S550)、S560に移行する。
また、max(b(k):a(k+1))/min(b(k):a(k+1))≦αであれば(S540:NO)、|b(k)+a(k+1)|/max(|b(k)|:|a(k+1)|)<β、つまりb(k)+a(k+1)の絶対値を、b(k)とa(k+1)とのうち絶対値が大きいもので除算したものが閾値β未満であるか否かを判定する(S560)。|b(k)+a(k+1)|/max(|b(k)|:|a(k+1)|)<βであれば(S560:YES)、加減算ブロックにて加減算する前後で各種パラメータの値のレンジの差が、予め設定された閾値βよりも大きく変化したことを示すタイプ2の警告RAMに記憶し(S570)、S580に移行する。
また、|b(k)+a(k+1)|/max(|b(k)|:|a(k+1)|)≧βであれば(S560:NO)、そのままS580に移行する。
次いで、k=n−1であるか否かを判定する(S580)。k=n−1であれば(S580:YES)、演算精度判定処理を終了し、k=n−1でなければ(S580:NO)、kをインクリメントし(S590)、S550の処理に戻る。
次に演算精度判定処理が終了すれば、図4のシミュレーション処理に戻り、演算判定処理(S330)において、警告が発生したか否かを、RAMを参照して判定する(S340)。また、警告が発生していなければ(S340:NO)、全ての演算ブロックを既に選択したか否かを判定する(S380)。
警告が発生していれば(S340:YES)、S240にて演算順序を自動的に修正する演算順序自動修正モードに設定されているか否かを判定する(S350)。演算順序自動修正モードに設定されていれば(S350:YES)、演算順序変更処理を実行する(S360)。また、演算順序指導修正モードに設定されていなければ(S350:NO)、全ての演算ブロックを既に選択したか否かを判定する(S380)。
この演算順序変更処理については、図7を用いて詳しく説明する。なお、図7はシミュレーション処理部13が実行する演算順序変更処理を示すフローチャートである。
この演算順序変更処理は、a(k+1)で演算精度判定で警告が発生した場合に、このa(k+1)の演算順序を演算精度判定で警告が発生しないa(j)の演算順序と入れ替えて、演算精度の向上を図る処理である。
より具体的に、演算順序変更処理では、図7に示すように、まずk=1に設定する(S710)。
そして、k=nであるか否かを判定する(S720)。k=nであれば(S720:YES)、演算順序変更処理を終了する。
一方、k=nでなければ(S720:NO)、j=k+1に設定し(S730)、max(|b(k)|:|a(j)|) / min(|b(k)|:|a(j)|) > α であるか否かを判定する(S740)。max(|b(k)|:|a(j)|) / min(|b(k)|:|a(j)|) > αでなければ(S740:NO)、 |b(k)+a(j)| / MAX(|b(k)|:|a(j)|) < β であるか否かを判定する(S750)
|b(k)+a(j)| / MAX(|b(k)|:|a(j)|) < βでなければ(S750:NO)、a(k+1)とa(j)との演算順序を入れ替える(S790)。なお、S790の処理が実行されると、演算ブロックに対応して記憶されている演算順序が変更される。その後、b(k+1) に b(k) + a(k+1) を設定し(S80 0)、kをインクリメントし(S810)、S720に戻る。
また、max(|b(k)|:|a(j)|) / min(|b(k)|:|a(j)|) > αである(S740:YES)、または|b(k)+a(j)| / MAX(|b(k)|:|a(j)|) < βであれば(S750:YES)、j=nであるか否かを判定する(S760)。j=nでなければ(S760:NO)、jをインクリメントし(S770)、S740に戻る。また。j=nであれば(S760:YES)、演算順序が変更できなかった旨を示す変更不能フラグをRAMにセットし(S780)、演算順序変更処理を終了する。
次に、演算順序変更処理が終了すると、図4のシミュレーション処理に戻り、演算順序変更処理(S360)にて変更不能フラグがセットされているか否かを判定する(S370)。変更不能フラグがセットされていなければ(S370:NO)、S320に戻る。また、変更不能フラグがセットされていれば(S370:YES)、全ての演算ブロックを既に選択したか否かを判定する(S380)。
まだ選択していない演算ブロックがあれば(S380:NO)、演算順序を選択していないブロックの1つを選択し(S390)、S320に戻る。
一方、全ての演算ブロックを選択していれば(S380:YES)、シミュレーション処理の結果を表示し(S400)、当該シミュレーション処理を終了する。
ここで、S400の処理の際には、例えば図8(a)に示すように、エラー表示71を表示画面上に表示させる。そして、詳細に表示させる指令を入力すると、例えば、S220にて、「時間毎に警告」を選択していれば、図8(b)に示すように、警告が発生したブロック名、警告タイプ(タイプ1または2)、警告発生時刻等の情報を表示部40に表示する。なお、この結果表示には、変更不能フラグの状態に応じて、自動で演算順序の変更をできなかった旨の表示等を含めてもよい。
また、例えば、S220にて、「時間毎に警告」を選択していなければ、図8(c)に示すように、警告が発生したブロック名、警告タイプ(タイプ1または2)、警告の発生回数/処理実行回数を表す発生頻度等を表示部40に表示する。
このようなシミュレーション処理(S130)が終了すると、図2に戻り、使用者にシミュレーション処理の修正を行うか否かを判断させる(S140)。使用者が修正を行う場合には(S140:YES)、S130に戻り、使用者が修正を行わず(S140:NO)、プログラムコード生成処理の実行指令を入力すれば、コード生成処理部12(CPU)は、プログラムコード生成処理を実行する(S150)。
このプログラムコード生成処理において、コード生成処理部12は、演算順序を含む生成ルールに基づいて制御モデル20に対応するプログラムコードを生成する。
そして、プログラムコード生成処理が終了すると、コード生成処理部12は、生成したプログラムコードをコンパイラ・リンカ31を介してECUのフラッシュROM32に記録し(S160)、プログラムコード作成作業は終了する。
ここで、このようなプログラムコード生成装置1において、例えば、図9(a)に示すような制御モデル20についてのプログラムコードを生成する場合を考える。即ち、制御モデル20においては、変数Aには「÷(除算)」が対応づけられており、定数Bには「×(乗算)」が対応付けられている。そして、変数A、定数Bの順で演算ブロック(ここでは乗除算ブロック22)に入力されている。
このような制御モデル20が入力された後で、シミュレーション処理開始指令が入力され、シミュレーション処理(図4)のS260,S270にて、演算順序が、定数B、変数Aの順に指定されると、プログラムコードの生成を実施すれば、図9(b)に示すようなプログラムコードが生成される。即ち、変数Aおよび定数Bは、「rtB.Product = rtP.ConstantB#Value / rtb#DataStoreReadA(「解」=「定数B」/「変数A」)」という演算順序が変更されたプログラムコードとして出力される。この場合には、演算順序を指定しなかった場合のように、「1.0/(または「−」)」というプログラムコードが追記されることがないので、演算速度が遅くなることを防止することができる。
なお、本実施形態において、コード生成処理部12は本発明でいう生成手段に相当し、各種設定入力部52は演算順序入力手段、閾値入力手段、および警告内容設定入力手段に相当する。また、プログラムコード生成装置1におけるROM、RAM、ハードディスク装置等の記憶装置は本発明でいう演算順序記憶手段、閾値記憶手段、および警告内容設定記憶手段に相当する。さらに、シミュレーション処理(図4)において、S310〜S400の処理は本発明でいうシミュレーション手段に相当し、S450〜S470の処理は閾値設定手段に相当し、S400の処理は警告出力手段に相当する。また、演算精度判定処理(図6(b)において、S520〜S530の処理は本発明でいう第1警告手段に相当し、S560〜S570の処理は第2警告手段に相当する。そして、最適化処理(図2:S120)は本発明でいう集約手段に相当し、演算順序変更処理(図7,図10)は演算順序変更手段に相当する。
以上のように詳述したプログラムコード生成装置1においては、演算ブロックにおいて各種演算の演算順序を入力する各種設定入力部52により入力された演算順序を、プログラムコード生成装置1の記憶装置が各種パラメータに関連付けて記憶する。そして、記述された制御モデル20に対応するプログラムコードを各種パラメータの入力順に生成するコード生成処理部12は、プログラムコード生成装置1の記憶装置に記憶された演算順序を入力順として、プログラムコードを生成する。
従って、このようなプログラムコード生成装置1によれば、入力された演算順序に従ってプログラムコードを生成することができるので、制御モデル20の可読性を損なうことがない。また、この装置1により生成されたプログラムコードに基づいて生成されたプログラムを実行する際の演算速度が遅くなることを防止することができる。
また、本実施形態のプログラムコード生成装置1においては、コード生成処理部12によるプログラムコード生成前に実行されるシミュレーション処理のS310〜S400にて、プログラムコード生成装置1の記憶装置に記憶された演算順序に従って、コード生成処理部12により生成されるプログラムコードの内容を検証する。
従って、このようなプログラムコード生成装置1によれば、実際に生成したプログラムコードに基づくプログラムを実行するときと同様の条件でプログラムの検証作業(シミュレーション)を実行することができるので、プログラムの検証作業を容易に行うことができる。
また、本実施形態のプログラムコード生成装置1においては、演算ブロックに、入力されたパラメータ同士を加減算する加減算ブロックを備え、演算精度判定処理のS520〜S530では、加減算ブロックにて加減算するパラメータ同士のレンジの差が、予め設定された閾値よりも大きい場合に、加減算ブロックでの演算精度の悪化を警告する。また、演算精度判定処理のS560〜S570では、加減算ブロックにて加減算する前後で各種パラメータの値のレンジの差が、予め設定された閾値よりも大きく変化した場合に、この加減算ブロックでの演算精度の悪化を警告する。
従って、このようなプログラムコード生成装置1によれば、精度悪化箇所を特定することができるので、精度悪化箇所を適宜修正すればより演算精度を向上させることができる。
特に、本実施形態のプログラムコード生成装置1のように浮動小数点演算を行う場合には、演算後の数値(解)の桁数が大きく変化すると、実質的に使用する桁数が減少してしまい、演算精度の悪化が発生するが、本実施形態においては、加減算ブロックにて加減算する前後で各種パラメータの値のレンジの差を監視するので、演算精度の悪化を防止することができる。
さらに、本実施形態のプログラムコード生成装置1においては、各種設定入力部52を介して、演算精度判定処理にて演算精度の悪化の判定を行う際に参照する閾値を入力可能に構成され、プログラムコード生成装置1の記憶装置には各種設定入力部52を介して入力された閾値を記憶可能に構成されている。
従って、このようなプログラムコード生成装置1によれば、生成したプログラムコードに求められる演算精度(レベル)を使用者が設定することができる。
また、本実施形態のプログラムコード生成装置1においては、各種設定入力部52を介して精度悪化の警告の表示形態を予め設定された選択肢の中から設定可能に構成され、プログラムコード生成装置1の記憶装置には各種設定入力部52により入力された設定内容を記憶可能に構成されている。そして、プログラムコード生成装置1は、シミュレーション処理のS400にて、記憶装置に記憶された設定内容に基づいて精度悪化の警告を出力する。
従って、このようなプログラムコード生成装置1によれば、警告の内容を使用者が任意に設定することができるので、使用者にとって重要な警告の内容を識別し易くすることができる。
また、本実施形態のプログラムコード生成装置1において、演算順序変更処理では、演算精度判定処理にて加減算ブロックでの演算精度の悪化を警告した場合に、プログラムコード生成装置1の記憶装置に記憶された演算順序を予め設定された規則に基づいて変更する。
従って、このようなプログラムコード生成装置1によれば、演算精度の悪化を警告された場合に、演算順序を適切な順序に変更することができるので、演算精度を改善することができる。
また、演算順序を自動的に設定することができるので、プログラムコードを生成するための工数を削減することができる。
さらに、プログラムコード生成装置1においては、シミュレーション処理の作動前に最適化処理(S120)を実行し、この最適化処理にて、制御モデル20に同じ種類の演算ブロックが連続して記述されているか否かを判定し、同じ種類の演算ブロックが連続して記述されていれば、これらの演算ブロックを1つの演算ブロックとして集約して記述し直す。
従って、このようなプログラムコード生成装置1によれば、演算ブロックの数を集約することにより、演算回数を少なくすることができるので、演算速度を向上させることができる。
また、演算ブロックを集約することにより、演算順序を変更する際の自由度を高くすることができるので、より演算精度を向上させることができる。
なお、本発明の実施の形態は、上記の実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態を採りうる。
例えば、本実施例において、シミュレーション処理における演算順序変更処理は、図10に示すような処理にしてもよい。即ち、変形例の演算順序変更処理では、演算ブロックに入力される各種パラメータ同士の大小関係に基づいてプログラムコード生成装置1の記憶装置に記憶された演算順序を変更する。
具体的には、図10に示す演算順序変更処理においては、まず、max(|a(1)|:|a(n)|)、つまりa(1)〜a(n)の絶対値の最大値を抽出し、この最大値を最大レンジとして設定する(S910)。
そして、a(1)〜a(n)の各パラメータの値を「正」または「負」により分類する(S920)。
続いて、a(1)〜a(n)の各パラメータのうち、「正」に分類されたものを絶対値の小さなものから順に加算したSpを算出する(S930)。
そして、a(1)〜a(n)の各パラメータのうち、「負」に分類されたものを絶対値の小さなものから順に加算したSmを算出する(S940)。
次いで、Spの絶対値(|Sp|)がSmの絶対値(|Sm|)以上であるかを判定する(S950)。|Sp|≧|Sm|であれば(S950:YES)、「正」に分類されたものを絶対値の小さなものから並べ、その後、「負」に分類されたものを絶対値の大きなものから並べた演算順序を設定する(S960)。一方、|Sp|<|Sm|であれば(S950:NO)、「負」に分類されたものを絶対値の小さなものから並べ、その後、「正」に分類されたものを絶対値の大きなものから並べた演算順序を設定する(S970)。そして、当該演算順序変更処理を終了する。
このような演算順序変更処理を実行するプログラムコード生成装置によれば、演算ブロックに入力される各種パラメータ同士の大小関係に着目して演算順序を変更するので、演算後の値に着目して演算順序を変更する場合と比較して、演算順序を変更するためのアルゴリズムを簡素化することができる。
また、上記実施形態の演算順序変更処理は、警告が発生した場合のみに実行するよう設定したが、警告の有無に関わらず演算順序変更処理を実行するようにしてもよい。つまり、この場合のシミュレーション処理においては、S260,S270,S340,S370の処理が不要となり、S320〜S330の処理と、S350〜S360の処理とを入れ替えた処理を実行すればよい。
また、上記実施形態のシミュレーション処理においては、S210〜S220の処理にて使用者が演算精度判定用の閾値を入力するよう設定したが、演算の精度に応じて自動的に閾値を設定するよう設定してもよい。即ち、図11に示すように、S210〜S220の処理に換えて、S310とS320の処理の間にてS450〜S470の処理を実行する。そして、シミュレーション処理のS450〜S470では、浮動小数点演算が単精度で実施されるか倍精度で実施されるかを判定し、判定結果に応じて予め設定された閾値を演算精度判定処理の際に参照する閾値として設定する。
このシミュレーション処理のより具体的な内容は、図11に示すように、S310の処理が終了すると、この演算ブロックにおける演算精度が倍精度に設定されているか否かを判定する(S450)。この演算ブロックにおける演算精度が倍精度に設定されていれば(S450:YES)、演算精度判定用の閾値α,βを予めROM等に記憶された倍精度用の閾値A1,A2にそれぞれ設定し(S460)、S320に移行する。また、この演算ブロックにおける演算精度が単精度に設定されていれば(S450:NO)、演算精度判定用の閾値α,βを予めROM等に記憶された単精度用の閾値B1,B2にそれぞれ設定し(S470)、S320に移行する。
なお、閾値αに関しては、「倍精度用の閾値A1」>「単精度用の閾値B1」の関係があり、閾値βに関しては、「倍精度用の閾値A2」<「単精度用の閾値B2」の関係がある。
以上のようなプログラムコード生成装置1によれば、演算精度によって閾値を設定することができるので、演算精度が高く設定されており演算精度の悪化が発生しない場合には余分な警告を排除することができる。
プログラムコード生成装置を用いたプログラム生成の流れを示す説明図である。 プログラムコード生成作業の手順を示す説明図である。 最適化処理の実行前(a)および実行後(b)における制御モデルの状態を示す説明図である。 シミュレーション処理を示すフローチャートである。 閾値の入力画面(a)および演算順序の入力画面(b)を示す説明図である。 演算ブロックと演算ブロックに入力される各種数値との対応関係を示す模式図(a)、および精度判定処理を示すフローチャート(b)である。 精度判定処理を示すフローチャートである。 シミュレーション結果の表示例を示す説明図である。 制御モデルおよびこの制御モデルから生成されるプログラムコードを示す説明図である。 変形例の演算順序変更処理を示すフローチャートである。 変形例のシミュレーション処理を示すフローチャートである。 背景技術の制御モデルおよびこの制御モデルから生成されるプログラムコードを示す説明図である。
符号の説明
1…プログラムコード生成装置、10…コード生成ツール、11…抽出エンジン、12…コード生成処理部、13…シミュレーション処理部、14…生成ルール記憶部、20…制御モデル、21…加減算ブロック、22…乗除算ブロック、23…三角関数ブロック、28…変数、29…定数、31…コンパイラ・リンカ、32…フラッシュROM、40…表示部、51…モデル入力部、52…各種設定入力部、53…開始指令入力部、71…エラー表示。

Claims (12)

  1. 各種パラメータを入力し該各種パラメータの入力順に該各種パラメータに対応する各種演算を行うよう設定された演算ブロックを含む制御モデルが記述されると、電子制御装置に搭載される制御プログラムに用いられるプログラムコードを生成するための生成ルールに基づいて、前記記述された制御モデルに対応するプログラムコードを前記各種パラメータの入力順に生成する生成手段を備えたプログラムコード生成装置であって、
    前記演算ブロックにおいて前記各種演算の演算順序を入力するための演算順序入力手段と、
    前記演算順序入力手段により入力された演算順序を前記各種パラメータに関連付けて記憶する演算順序記憶手段と、
    を備え、
    前記生成手段は、前記演算順序記憶手段に記憶された演算順序を前記入力順として、プログラムコードを生成すること
    を特徴とするプログラムコード生成装置。
  2. 前記生成手段の作動前に、前記演算順序記憶手段に記憶された演算順序に従って、前記生成手段により生成されるプログラムコードの内容を検証するシミュレーション手段を備えたこと
    を特徴とする請求項1に記載のプログラムコード生成装置。
  3. 前記演算ブロックには、入力されたパラメータ同士を加減算する加減算ブロックを備え、
    前記シミュレーション手段が前記加減算ブロックにて加減算するパラメータ同士のレンジの差が、予め設定された閾値よりも大きい場合に、前記加減算ブロックでの演算精度の悪化を警告する第1警告手段を備えたこと
    を特徴とする請求項2に記載のプログラムコード生成装置。
  4. 前記演算ブロックには、入力された数値同士を加減算する加減算ブロックを備え、
    前記シミュレーション手段が前記加減算ブロックにて加減算する前後で前記各種パラメータの値のレンジの差が、予め設定された閾値よりも大きく変化した場合に、この加減算ブロックでの演算精度の悪化を警告する第2警告手段を備えたこと
    を特徴とする請求項2に記載のプログラムコード生成装置。
  5. 前記閾値を入力するための閾値入力手段と、
    前記閾値入力手段を介して入力された閾値を記憶する閾値記憶手段と、
    を備え、
    前記各警告手段は、前記閾値記憶手段に記憶された閾値を参照して演算精度の悪化の判定を行うこと
    を特徴とする請求項3または請求項4に記載のプログラムコード生成装置。
  6. 当該プログラムコード生成装置は、浮動小数点演算を実施するとともに、
    浮動小数点演算が単精度で実施されるか倍精度で実施されるかを判定し、判定結果に応じて予め設定された閾値を前記各警告手段が参照する閾値として設定する閾値設定手段を備えたこと
    を特徴とする請求項3または請求項4に記載のプログラムコード生成装置。
  7. 前記各警告手段による精度悪化の警告の表示形態を予め設定された選択肢の中から設定するための警告内容設定入力手段と、
    前記警告内容設定入力手段により入力された設定内容を記憶する警告内容設定記憶手段と、
    前記警告内容設定記憶手段に記憶された設定内容に基づいて精度悪化の警告を出力する警告出力手段と、
    を備えたことを特徴とする請求項3〜請求項6の何れかに記載のプログラムコード生成装置。
  8. 前記警告手段が加減算ブロックでの演算精度の悪化を警告した場合に、前記演算順序記憶手段に記憶された演算順序を予め設定された規則に基づいて変更する演算順序変更手段を備えたこと
    を特徴とする請求項3〜請求項7の何れかに記載のプログラムコード生成装置。
  9. 前記演算順序変更手段は、前記演算ブロックに入力される各種パラメータ同士の大小関係に基づいて前記演算順序記憶手段に記憶された演算順序を変更すること
    を特徴とする請求項8に記載のプログラムコード生成装置。
  10. 前記シミュレーション手段の作動前に、前記制御モデルに同じ種類の演算ブロックが連続して記述されているか否かを判定し、同じ種類の演算ブロックが連続して記述されていれば、これらの演算ブロックを1つの演算ブロックとして集約して記述し直す集約手段を備えたこと
    を特徴とする請求項2〜請求項9の何れかに記載のプログラムコード生成装置。
  11. 電子制御装置に搭載される制御プログラムを生成するために用いられ、少なくとも入力されたパラメータ同士を加減算するための加減算ブロックを含む制御モデルが入力されると、プログラムコード生成のための生成ルールを用いて前記入力された制御モデルに対応するプログラムコードを生成する生成手段を備えたプログラムコード生成装置であって、
    前記生成手段の作動前に、前記生成手段により生成されるプログラムコードの内容を検証するシミュレーション手段と、
    前記シミュレーション手段が前記加減算ブロックにて加減算するパラメータ同士のレンジの差が、予め設定された閾値よりも大きい場合には、前記加減算ブロックでの演算精度の悪化を警告する第1警告手段と、
    を備えたことを特徴とするプログラムコード生成装置。
  12. 電子制御装置に搭載される制御プログラムを生成するために用いられ、少なくとも入力されたパラメータ同士を加減算するための加減算ブロックを含む制御モデルが入力されると、プログラムコード生成のための生成ルールを用いて前記入力された制御モデルに対応するプログラムコードを生成する生成手段を備えたプログラムコード生成装置であって、
    前記生成手段の作動前に、前記生成手段により生成されるプログラムコードの内容を検証するシミュレーション手段と、
    前記シミュレーション手段が前記加減算ブロックにて加減算する前後で前記各種パラメータの値のレンジの差が、予め設定された閾値よりも大きく変化した場合には、この加減算ブロックでの演算精度の悪化を警告する第2警告手段と、
    を備えたことを特徴とするプログラムコード生成装置。

JP2006033875A 2006-02-10 2006-02-10 プログラムコード生成装置 Expired - Fee Related JP4887814B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006033875A JP4887814B2 (ja) 2006-02-10 2006-02-10 プログラムコード生成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006033875A JP4887814B2 (ja) 2006-02-10 2006-02-10 プログラムコード生成装置

Publications (2)

Publication Number Publication Date
JP2007213402A true JP2007213402A (ja) 2007-08-23
JP4887814B2 JP4887814B2 (ja) 2012-02-29

Family

ID=38491765

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006033875A Expired - Fee Related JP4887814B2 (ja) 2006-02-10 2006-02-10 プログラムコード生成装置

Country Status (1)

Country Link
JP (1) JP4887814B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011209839A (ja) * 2010-03-29 2011-10-20 Fuji Electric Co Ltd プログラム自動生成装置
US9513875B2 (en) 2011-11-22 2016-12-06 International Business Machines Corporation Processing instruction information

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5848141A (ja) * 1981-09-16 1983-03-22 Fujitsu Ltd 桁落ち自動検出方式
JPH0357001A (ja) * 1989-07-25 1991-03-12 Yaskawa Electric Mfg Co Ltd プログラミング方式
JPH04229324A (ja) * 1990-12-27 1992-08-18 Nec Corp 誤差評価プログラム生成実行方式
JPH10124115A (ja) * 1996-10-15 1998-05-15 Shimadzu Corp プログラム作成支援装置およびプログラム作成支援用プログラムを記録した記憶媒体
JP2005250955A (ja) * 2004-03-05 2005-09-15 Mitsubishi Heavy Ind Ltd プログラム変更方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5848141A (ja) * 1981-09-16 1983-03-22 Fujitsu Ltd 桁落ち自動検出方式
JPH0357001A (ja) * 1989-07-25 1991-03-12 Yaskawa Electric Mfg Co Ltd プログラミング方式
JPH04229324A (ja) * 1990-12-27 1992-08-18 Nec Corp 誤差評価プログラム生成実行方式
JPH10124115A (ja) * 1996-10-15 1998-05-15 Shimadzu Corp プログラム作成支援装置およびプログラム作成支援用プログラムを記録した記憶媒体
JP2005250955A (ja) * 2004-03-05 2005-09-15 Mitsubishi Heavy Ind Ltd プログラム変更方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011209839A (ja) * 2010-03-29 2011-10-20 Fuji Electric Co Ltd プログラム自動生成装置
US9513875B2 (en) 2011-11-22 2016-12-06 International Business Machines Corporation Processing instruction information

Also Published As

Publication number Publication date
JP4887814B2 (ja) 2012-02-29

Similar Documents

Publication Publication Date Title
US10318290B2 (en) Merged floating point operation using a modebit
US9146901B2 (en) Vector floating point argument reduction
JPWO2019241428A5 (ja)
JP4345772B2 (ja) 文書編集装置、プログラムおよび記憶媒体
JP6756379B2 (ja) ログ分析方法、システムおよびプログラム
WO2020136859A1 (ja) 推定装置、推定方法、及びコンピュータ読み取り可能な記録媒体
JP4887814B2 (ja) プログラムコード生成装置
JP5589919B2 (ja) 設計支援装置、設計支援プログラム
CN107808336B (zh) 一种财务指标的计算方法及装置
WO2020148838A1 (ja) 推定装置、推定方法、及びコンピュータ読み取り可能な記録媒体
US10438093B2 (en) Software development test platform and associated method for evaluating visual output generated by execution of computer software
CN110516333A (zh) 一种pcb中的器件布局方法、装置、设备及可读存储介质
JP2015005228A (ja) カーソル移動制御装置、そのプログラム
JP2008009869A (ja) プログラムコード生成装置
KR20110106114A (ko) 레지스터, 프로세서 및 프로세서 제어 방법
JP7192914B2 (ja) 計算装置、計算支援方法及びプログラム
JP5530417B2 (ja) コントローラ開発ツール
JP2020077218A (ja) 解析モデル生成装置及びプログラム
JP5602273B1 (ja) 電力系統シミュレータならびに電力系統のシミュレーションプログラムおよびシミュレーション方法
JP2007219586A (ja) ソースコード解析装置
JP2016115189A (ja) コード生成装置、コード生成プログラムおよびコード生成方法
JP2014130627A (ja) コントローラ開発ツールとそれを利用して開発したモータドライブシステムを有する機器
US11036503B2 (en) Predicate indicator generation for vector processing operations
JP2009187492A (ja) 演算機能を備えた電子装置および演算処理プログラム
JP2016081331A (ja) 検算機能付き電子式計算機

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080408

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110330

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110830

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111018

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111115

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111128

R151 Written notification of patent or utility model registration

Ref document number: 4887814

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141222

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees