JP2010224971A - ソフトウェア開発装置、実車試験方法、及びエミュレーション方法 - Google Patents
ソフトウェア開発装置、実車試験方法、及びエミュレーション方法 Download PDFInfo
- Publication number
- JP2010224971A JP2010224971A JP2009072725A JP2009072725A JP2010224971A JP 2010224971 A JP2010224971 A JP 2010224971A JP 2009072725 A JP2009072725 A JP 2009072725A JP 2009072725 A JP2009072725 A JP 2009072725A JP 2010224971 A JP2010224971 A JP 2010224971A
- Authority
- JP
- Japan
- Prior art keywords
- control logic
- microcomputer
- output
- control
- data
- 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.)
- Withdrawn
Links
Images
Abstract
【課題】先行開発された電子制御装置の制御ロジックを迅速かつ適切に検証可能なソフトウェア開発装置を提供する。
【解決手段】マイクロコンピュータのCPUにより実行される制御ロジックを実行する制御ロジック処理部と、当該マイクロコンピュータのCPUにより実行される周辺回路に対するI/O処理を模擬するI/O処理部を備え、制御ロジック処理部が、基本機能が同一である複数の制御ロジックを並行して実行するように構成され、制御ロジック処理部とI/O処理部との間に介在して、I/O処理部を経由した入力データを制御ロジック処理部で実行される各制御ロジックに個別に供給し、入力データに基づき各制御ロジックにより演算されたそれぞれの出力データの何れか一方をI/O処理部に出力するインタフェース部を備えているソフトウェア開発装置。
【選択図】図1
【解決手段】マイクロコンピュータのCPUにより実行される制御ロジックを実行する制御ロジック処理部と、当該マイクロコンピュータのCPUにより実行される周辺回路に対するI/O処理を模擬するI/O処理部を備え、制御ロジック処理部が、基本機能が同一である複数の制御ロジックを並行して実行するように構成され、制御ロジック処理部とI/O処理部との間に介在して、I/O処理部を経由した入力データを制御ロジック処理部で実行される各制御ロジックに個別に供給し、入力データに基づき各制御ロジックにより演算されたそれぞれの出力データの何れか一方をI/O処理部に出力するインタフェース部を備えているソフトウェア開発装置。
【選択図】図1
Description
本発明は、CPUと当該CPUの周辺回路とを内部に備えるマイクロコンピュータを模擬する模擬マイクロコンピュータを備え、制御ロジックをエミュレートするソフトウェア開発装置、実車試験方法、及びエミュレーション方法に関する。
電子制御機器を制御するマイクロコンピュータを備えた電子制御装置、例えば車両のエンジンを制御する電子制御ユニット(ECU)のような電子制御装置では、エンジン等の制御対象機器の高性能化、高機能化の流れの中で、使用されるマイクロコンピュータの性能も年々進化しており、現状の電子制御装置の性能に先行して新しい制御ロジックが開発されているのが現状である。
このため、先行制御ロジックは、性能向上が見込まれる次期マイクロコンピュータがターゲットとなることが多い。次期マイクロコンピュータを組み込んだ電子制御装置は実在せず、次世代のマイクロコンピュータも実在しない場合があるため、多くの場合は現状のマイクロコンピュータをベースにして先行制御ロジックの開発が行われている。
しかし、現状のマイクロコンピュータを組み込んだ電子制御装置を用いて先行制御ロジックの開発を行う場合には、マイクロコンピュータのCPUの処理能力に不足、メモリ容量の不足、周辺リソースの不足等の問題があるため、次期マイクロコンピュータ及びそのアプリケーションの開発が遅れ、新製品の開発に支障を来していた。
尚、現状の電子制御機器に組み込まれるマイクロコンピュータは、電子制御機器のコストを低く抑えるために、現状のシステムに最適な仕様でCPU性能及び周辺機能が選択され、CPUやマイクロコンピュータ周辺リソースが1つのパッケージの中に組み込まれているため、それぞれの機能変更はマイクロコンピュータを変更しない限り不可能である。
そこで、特許文献1には、アプリケーション処理機能と通信機能を備えた中央ブロックと、マイクロコンピュータの周辺装置を擬似的にソフトウェアで実現して入出力処理を行う疑似マイクロコンピュータ周辺装置、演算機能、及び通信機能を有し、前記中央ブロックとPCIバスで接続される周辺ブロックと、電子制御ユニットのハードウェアに相当する回路を有し、前記周辺ブロックに接続するインタフェース回路ブロックとを備え、前記中央ブロックの通信機能と、前記疑似マイクロコンピュータ周辺装置との間にある前記演算機能に、バスコントローラが設けられ、前記PCIバスで前記中央ブロックの通信機能とこのバスコントローラとの間が接続され、前記バスコントローラと前記疑似マイクロコンピュータ周辺装置との間は内部バスで接続され、前記PCIバス、前記バスコントローラ、及び前記内部バスを介して、前記通信機能と前記疑似マイクロコンピュータ周辺装置との間で、直接データの送受信が行われるように構成されたソフトウェア開発装置が提案されている。
当該ソフトウェア開発装置では、中央ブロック及び周辺ブロックにマイクロコンピュータリソースに接続するバス相当の機能を実現するソフトウェアであるIOドライバが実装され、その間がPCIバスで接続されるとともに、中央ブロックにはIOドライバとアプリケーションソフトウェアを接続するソフトウェアであるプラットフォームが実装され、周辺ブロックにはFPGAでなる疑似マイクロコンピュータ周辺装置がファームウェアとして実装されている。
上述した従来のソフトウェア開発装置は、図5に示すように、CPUと、割り込みコントローラやキャプチャ等のCPUの周辺リソースで構成されるマイクロコンピュータの機能を分解して、制御ロジックを実行するCPUの処理内容を中央ブロックであるCPUボードに割り付け、マイクロコンピュータの周辺リソースによる処理内容を周辺ブロックであるI/Oボードに割り付け、マイクロコンピュータのCPUが処理していた周辺リソースに対するI/O処理(図中、「マイコンI/O」と記す。)をCPUボードで処理する構成となっている。
即ち、上述のソフトウェア開発装置では、例えば、I/Oボードを増加する或いはCPUボードに備えられたCPUの処理能力やメモリ容量を増加する等、ハードウェアリソースを柔軟に拡張可能な構成となっている。したがって、当該ソフトウェア開発装置をベースにして先行制御ロジックの開発を行うことにより、現状のマイクロコンピュータを組み込んだ電子制御装置を用いて先行制御ロジックの開発を行う場合における、上述したリソース不足の問題を回避できるようになる。
このようなソフトウェア開発装置を用いて先行制御ロジックの開発を行う場合、先ず、検証済みの制御ロジックを現状のマイクロコンピュータで実行した結果と、検証済みの制御ロジックをソフトウェア開発装置で実行した結果とが一致することを確認する必要がある。ソフトウェア開発装置により既存の制御ロジックがエミュレート可能であることが前提となるからである。
次に、新規ロジックがソフトウェア開発装置により実行されて検証される。
近年、開発効率の向上等のため、例えば、マトラボ/シムリンク(MATLAB/Simulink(登録商標))等の汎用のモデル生成装置を利用して、制御ロジックが開発されている。
予めライブラリに登録されている加減算、積分、微分、各種の論理演算等を実現する部品が操作画面上に表示され、それらを選択して、適宜入出力関係を定義(マウス等を用いて結線する)することにより、所望のロジックが簡易的に生成されるのである。
当然のことながらモデル生成装置では、新規に生成した制御ロジックの単体試験、つまり、所定の入力値に対して適正な出力値が得られるか否か等の試験が可能であるが、他の多くの制御ロジックと組み合わせ、制御対象が様々な条件にある時に適正に動作するか否か等の動的な試験が困難である。
生成されたロジックは、モデル生成装置で自動的にC言語のソースファイルで出力されるが、直ちに製品として活用可能なレベルの最適化されたソースではないため、最終的には、設計者によって、最適化のための編集処理が必要となる。
このようなモデル生成装置で生成され、最適化される前の制御ロジックに対して、動的な試験を行う場合に、上述のソフトウェア開発装置に実装される。
しかし、ソフトウェア開発装置を実際の被制御装置と接続して制御ロジックの動作を検証する場合に、制御ロジックに破綻をきたすと、被制御装置を破損する虞があるという問題があった。特に、車両に搭載されるエンジンECUの制御ロジックを検証するために、実車試験を行うような場合、エンジンの故障に起因して事故を引き起こす虞があり、容易に実車試験が行えなかった。
最終的な制御ロジックは、他の制御ロジックとの間で予期しないタイミングで入力されたデータに対して、異常動作が発生しないようなプロテクトや、演算変数の桁数の制限等の様々な最適化処理が行なわれているが、モデル生成装置で自動生成された制御ロジックにはそこまでの実装上の最適化処理がなされていないためである。
逆に、モデル生成装置で自動生成された制御ロジックを実装条件に合わせて設計者が最適化すると、その制御ロジックが使えない場合に、無駄な工数を費やすことになる。
本発明の目的は、上述の問題点に鑑み、先行開発された電子制御装置の制御ロジックを迅速かつ適切に検証可能なソフトウェア開発装置を提供する点にある。
上述の目的を達成するため、本発明によるソフトウェア開発装置の特徴構成は、CPUと当該CPUの周辺回路とを内部に備えるマイクロコンピュータを模擬する模擬マイクロコンピュータを備え、マイクロコンピュータで処理する制御ロジックを実行するソフトウェア開発装置であって、当該マイクロコンピュータのCPUにより実行される制御ロジックを実行する制御ロジック処理部と、当該マイクロコンピュータのCPUにより実行される周辺回路に対するI/O処理を模擬するI/O処理部を備え、前記制御ロジック処理部が、基本機能が同一である複数の制御ロジックを並行して実行するように構成され、前記制御ロジック処理部と前記I/O処理部との間に介在して、前記I/O処理部を経由した入力データを前記制御ロジック処理部で実行される各制御ロジックに個別に供給し、前記入力データに基づき各制御ロジックにより演算されたそれぞれの出力データの何れか一方を前記I/O処理部に出力するインタフェース部を備えている点にある。
上述の構成によれば、インタフェース部により、I/O処理部を経由した入力データが、基本機能が同一である複数の制御ロジックに個別に供給され、制御ロジック処理部により、当該入力データに基づき各制御ロジックが並行して実行されるため、実行環境の相違による影響を考慮することなく、各制御ロジックの出力データを適切に比較評価できるようになる。また、インタフェース部により、各制御ロジックの出力データの何れか一方がI/O処理部に出力されるため、当該制御対象は、制御ロジックに対応して構成を変更する必要なく、既存の構成のままで、当該各制御ロジックの出力データの何れか一方を入力して動作することができるようになる。
以上説明した通り、本発明によれば、先行開発された電子制御装置の制御ロジックを迅速かつ適切に検証可能なソフトウェア開発装置を提供することができるようになった。
以下に、本発明によるソフトウェア開発装置、当該ソフトウェア開発装置を使用した実車試験方法、及びエミュレーション方法を説明する。
本実施形態では、ソフトウェア開発装置を用いて、車両のエンジンを制御する電子制御ユニット(以下、「ECU」と記す。)に組み込まれるマイクロコンピュータのアプリケーションソフトウェア(以下、「制御ロジック」と記す。)を開発する場合を例にして説明する。
ソフトウェア開発装置100は、図3に示すように、車両CのエンジンENGがマウントされるエンジンルームに搭載されるECU101の接続コネクタを外し、ECU101に替えてこのコネクタにハーネスHを介してソフトウェア開発装置100を直接接続して、実車試験に使用される。
ソフトウェア開発装置100は、ホストコンピュータ200にLANで接続されている。ホストコンピュータ200には表示器210と、データを入力するためのキーボード220が接続されている。S1,S2はそれぞれソフトウェア開発装置100とホストコンピュータ200を起動するための電源スイッチである。
表示器210は、ソフトウェア開発装置100の状態をモニタすることができ、キーボード220からは、ソフトウェア開発装置100の設定を変更するための入力を行うことができる。
尚、ソフトウェア開発装置100は、対象となる車両Cが存在しない場合であっても、パーソナルコンピュータ240によって制御され、車両Cの様々な運転状況を擬似的に発生することができる車両Cのシミュレータ230に接続することにより、ECUに組み込まれるマイクロコンピュータの制御ロジックをエミュレートして、検証することができる。
ECU101は、図2に示すように、エンジン回転数信号や車速信号等のパルス入力、水温センサや吸気温センサ等からのアナログ入力、及びスタータスイッチ、電気負荷スイッチ、シフト位置スイッチやエアコン信号等のデジタル入力が入力される。ECU101は、これらの入力信号を処理するマイクロコンピュータMと、マイクロコンピュータMで処理された信号を増幅して出力するECU入出力回路であるドライバDとを備えて構成される。
このECU101から出力されるのは、シフト制御ソレノイドやVVT(可変バルブタイミング)ソレノイドへのアナログ出力、点火信号や燃料の噴射信号等のパルス出力、ISC(アイドル速度制御)用のパルス出力、及び、チェックエンジンランプ、メインリレーやエヤコンカット信号等のデジタル信号等である。
ECU101に組み込まれたマイクロコンピュータMは、制御ロジックが格納されるROMや演算処理に使用されるRAM等のメモリ109、制御ロジックを実行するCPU102、及び入出力制御を行う周辺リソースが、1つのパッケージに収納されたものである。
周辺リソースには、入力系のリソースと出力系のリソースとがあり、入力系のリソースとして、デジタル信号を扱う入力ポート103とラッチポート104、アナログ入力を扱うA/Dコンバータ105、及びパルス入力を扱うキャプチャ106等が設けられ、出力系のリソースとして、デジタル出力を出力する出力ポート112、パルス出力を出力するPWM(パルス幅変調器)113とコンペア114、及びアナログ信号を出力するシリアル115等が設けられている。
これらの周辺リソースは内部バス110によってメモリ109及びCPU102に相互に接続されている。また、マイクロコンピュータMの内部には、これらの周辺リソースに加えて、内部タイマ107や割り込みコントローラ108が設けられている。
車両Cの運転状態を表す各センサやスイッチ類からの信号がECU101に取り込まれると、ECU101の入力回路で入力信号が信号処理され、マイクロコンピュータMに入力される。
入力された信号は入力系の周辺リソースでCPU値、つまり入力論理データに変換され、演算部であるメモリ109とCPU102では入力論理データに基づいて車両状態が検出され、車両状態に応じた出力論理データが生成される。出力論理データは、出力系の周辺リソースを介して物理信号である出力信号に変換されてマイクロコンピュータMから出力される。
ECU101の入出力回路であるドライバDはこの出力信号に従って車両Cに装備された各アクチュエータを駆動し、この出力制御の結果が破線で示すように、車両Cからの入力信号に反映される。
本発明によるソフトウェア開発装置100は、上述のECU101を模擬し、ECU101に組み込まれたマイクロコンピュータMで実行される制御ロジックを実行するエミュレータとして機能する。
図1に示すように、ソフトウェア開発装置100は、マイクロコンピュータMのCPUにより実行される制御ロジックを実行する模擬CPUを備えたマザーボード10と、マイクロコンピュータMのCPUにより実行される周辺回路に対するI/O処理を模擬する周辺I/O処理部、及び、当該周辺回路を模擬する模擬周辺回路を含むI/Oボード20と、マイクロコンピュータMの外部に構築される入出力周辺回路を備えたインタフェースボード30とを備えている。
即ち、マザーボード10により、マイクロコンピュータMのCPUにより実行される制御ロジックを実行する制御ロジック処理部が構成され、I/Oボード20により、マイクロコンピュータMのCPUにより実行される周辺回路に対するI/O処理を模擬するI/O処理部が構成されている。
マザーボード10とI/Oボード20とが高速のバスブリッジを介したPCIバスで接続され、I/Oボード20とインタフェースボード30とが複数の入出力信号ラインで接続され、インタフェースボード30とエンジンがハーネスH(図3参照)で接続されている。
インタフェースボード30は、ポート割付変換ボードと、ポート変換割付ボードのコネクタに挿入される複数の標準回路ボード及び機能ボードでなるECU入出力回路31を備え、ポート割付変換ボードに挿入される標準回路ボード及び機能ボードの組み合わせにより、エンジンに備えたセンサやアクチュエータ等と接続するための任意の数の入出力回路を実現できるように構成されている。
標準回路ボードはウォーニングランプの点灯信号やCANバス等のシリアル信号を入出力する各種のドライバ回路やバッファ回路を備えたデジタル信号回路で構成され、機能ボードはパワートレーン出力回路、アナログ信号入出力回路、エンジンに対する噴射信号、点火信号、電子スロットル制御信号等を入出力する信号処理用の低機能マイクロコンピュータを備えた入出力処理回路で構成されている。
マザーボード10には、動作周波数が数GHz程度のデュアルコアCPUと、ROMやRAMを含むメモリと、PCIバスインタフェース回路と、PCIバスを中継するブリッジであるスターファブリックのような高速LANインタフェース回路と、ホストコンピュータ200と接続するLANインタフェース回路等が搭載されている。
マザーボード10のメモリには、デュアルコアCPUを含むシステムを管理するオペレーティングシステムプログラム(以下、「OS」と記す。)、エミュレーション対象であるエンジンに対する制御ロジック15、メモリドライバ17、PCI通信ドライバ16、スターファブリック用のLAN通信ドライバ18、ホストコンピュータ200用のLAN通信ドライバ等のプログラムが格納されている。
マザーボード10のメモリには、マイクロコンピュータMの入出力用のレジスタや割込み用のレジスタ等として機能する仮想レジスタとしてのデータ領域が区画されている。
メモリドライバ17は、I/Oボード20を介して転送された入力論理データ及び割込みフラグを対応する入力レジスタ(仮想レジスタに区画されている領域)に書き込んで、割込みフラグがセットされている入力論理データに対応する制御ロジック15を起動して当該割込みフラグをリセットし、制御ロジック15で生成され、対応する出力レジスタ(仮想レジスタに区画されている領域)に書き込まれた論理出力データ及び割込みフラグを、I/Oボード20に転送するI/Oドライバとして機能する。
つまり、メモリドライバ17は、入力レジスタに書き込まれた割込みフラグに対応する制御ロジックを起動する割込みハンドラとしての機能を備えている。また、メモリドライバ17は、マザーボード10に備えたタイマ回路からの定時のタイマ割込みによって、対応する制御ロジックを起動する割込みハンドラとしての機能を備えている。
I/Oボード20には、主にマザーボード10との間の通信処理を実行する動作周波数が百数十MHz程度のCPUと、ROMやRAMを備えたメモリと、PCIバスブリッジである高速LANインタフェース回路と、PCIバスインタフェース回路と、共有メモリ22が組み込まれたFPGAと、共有メモリ22とPCIバスインタフェース回路との間でデータをDMA転送するDMAコントローラと、複数のファームウェア21を備えている。
I/Oボード20のメモリには、CPUで実行されるスターファブリック用のLAN通信ドライバ28、PCI通信ドライバ26等が格納されている。
ファームウェア21は、上述の模擬周辺回路として機能する回路ブロックで、既存の複数のマイクロコンピュータで構成されている。当該マイクロコンピュータの内部ROMには、共有メモリ22に書き込まれた出力データをインタフェースボード30に出力し、インタフェースボード30から入力されたデータを共有メモリ22に書き込む入出力ポートとして機能するプログラムが格納されている。
当該プログラムが実行されるマイクロコンピュータにより、上述した入力ポート103やラッチポート104、A/Dコンバータ105、キャプチャ106、出力ポート112、PWM(パルス幅変調器)113やコンペア114、シリアル115、内部タイマ107等の周辺回路が模擬される。
尚、個々の周辺リソースをFPGAやハードウェア回路で構成することも可能であるが、既存のマイクロコンピュータを用いて構成することにより、異なる周辺リソースを容易に構築でき、ターゲットとなるマイクロコンピュータに応じてフレキシブル且つ迅速に機能を変更することができるのである。
インタフェースボード30を介してエンジンからの入力信号がファームウェア21に入力されると、ファームウェア21で入力信号が入力論理データに変換され、ファームウェア21からFPGAにノンマスカブル割込み信号NMIが出力される。
ノンマスカブル割込み信号NMIを受けたFPGAは、ファームウェア21とFPGAを接続するデータ転送専用バスMEMCを介して転送された入力論理データ及び対応する割込みフラグを共有メモリ22に格納して、PCI通信ドライバを起動する。PCI通信ドライバは、DMAコントローラを介して共有メモリ22に格納された入力論理データをマザーボード10に転送する。
尚、I/Oボード20とマザーボード10間のPCIバスによる通信はバスブリッジとして機能するスターファブリックを介して行われるが、I/Oボード20とマザーボード10を同一のラックに組み込む場合や、I/Oボード20の数が少ない場合には、必ずしもバスブリッジは必要としない。
また、PCIバスによってマザーボード10から転送された出力論理データ及び対応する割込みフラグがDMAコントローラを介して共有メモリ22に格納されると、FPGAは、共有メモリ22に格納された割込みフラグに対応する出力論理データを、データ転送専用バスMEMCを介してファームウェア21に転送して当該割込みフラグをリセットする。
出力論理データが転送されたファームウェア21は、出力論理データを物理的な電気信号に変換して出力ポートから出力する。出力ポートから出力された出力信号が、インタフェースボード30を介してエンジンに出力される。
共有メモリ22を含むFPGAと、PCI通信ドライバ26と、LAN通信ドライバ28によって、マイクロコンピュータMのCPUと入力系及び出力系の周辺回路を接続する内部バスとしての機能が実現される。
即ち、図4に示すように、マザーボード10とI/Oボード20によりターゲットとなるマイクロコンピュータが模擬され、インタフェースボード30によりマイクロコンピュータを備えたECUの入出力回路が模擬され、インタフェースボード30を介して制御対象であるエンジンと接続可能に構成されることにより、制御ロジック15が実行されるECUとしての実環境が模擬される。
さらに、図5に示す周辺リソースに対する入出力処理(図中、「マイコンI/O」)がI/Oボード上に具現化されるため、ターゲットとなるマイクロコンピュータMが変更された場合であっても、マザーボード10上の制御ロジック15を変更する必要が無く、共有メモリ22に格納されたデータマップの内容を変更して、変更後のターゲットとなるマイクロコンピュータの制御ロジック15にマッチングさせるだけで、当該ターゲットとなるマイクロコンピュータの変更に対応できるようになる。
ここで、ECUのマイクロコンピュータに組み込まれる制御プログラムの構成について説明する。通常、制御プログラムは、リアルタイムOSと、制御ロジックと、リアルタイムOSと制御ロジックの橋渡しを行うインタフェースを備えている。
制御ロジックには、エンジン回転数の算出、燃料噴射量の演算、点火パルス出力タイミングや出力時間の演算等が含まれる。制御ロジックには、時間に同期して処理される制御ロジックと、入出力イベントが発生したときに処理される制御ロジックが含まれる。時間同期処理は外部状態に依存せず、一定の時間間隔で定期的に行う処理であり、非時間同期処理は、外部状態、即ち、エンジンの運転状態に依存して発生する処理である。
リアルタイムOSには、制御ロジック間の処理の優先順序を制御するスケジューラが含まれる。インタフェースには、エンジンから出力された信号を取り込んで、必要な制御ロジックに引き渡し、制御ロジックで生成された信号値をエンジンに出力する入出力処理、定期的に特定の制御ロジックを起動するタイマ割込み処理等の割込みハンドラが含まれる。
上述したマザーボード10のメモリに格納される制御ロジック15が、エンジン回転数の算出、燃料噴射量の演算、点火パルス出力タイミングや出力時間の演算等の制御対象に対する基本機能を実行する制御ロジックであり、メモリドライバが入出力処理や割込みハンドラ、さらにはマザーボードのOSと制御プログラムとの橋渡しとして機能する。
図6に示すように、マザーボード10のメモリには、同一の制御対象に対する由来の異なる、つまり、基本機能が同一である開発プロセスが異なる複数の制御ロジック群15(A,B,・・・,Z)が格納されている。各制御ロジック15(A,B,・・・,Z)には複数の制御ロジックが含まれている。
制御ロジック15(A)は、既に開発が終了し、検証済みの最適化された既存の制御ロジックであり、制御ロジック15(B,・・・,Z)は、新たに開発されている未検証の制御ロジック、または、既存の制御ロジック15(A)の一部を新たな制御ロジックに置換した制御ロジックや既存の制御ロジック15(A)に新たな制御ロジックを追加した制御ロジックである。
通常、制御ロジックは、制御仕様に基づいて設計者によりC言語等のプログラミング言語を用いて最適設計されるが、開発段階では動作確認等を迅速に行う必要性や開発効率の向上のために、例えば、マトラボ/シムリンク(MATLAB/Simulink(登録商標))等の汎用のモデル生成プログラムを利用して、制御ロジックを自動設計し、ある程度の実証試験等を重ねて、動作が確認された後に、最適化設計される傾向にある。
制御ロジック15(A)は、前者の最適設計された信頼性の高い制御ロジックであり、制御ロジック15(B,・・・,Z)は、モデル生成プログラムを用いて自動設計された制御ロジックである。
最適設計された信頼性の高い制御ロジックは、実際にマイクロコンピュータに実装するために、演算変数の桁数の制限等様々な制限が課され、例えば、複数の制御ロジックの実行順序が異なる場合であっても異常な値が出力されないように適正化されているが、モデル生成プログラムを用いて自動設計された制御ロジックは、そのような細かな最適化処理がなされていないため、そのまま実装すると、想定されていない状況下で異常な値が出力される虞がある。
本発明によるソフトウェア開発装置は、そのようなモデル生成プログラムを用いて自動設計された制御ロジックにより実車試験を行なう場合であっても、車両に損傷が発生しないように構成されている。
具体的には、メモリドライバ17に、OSと制御ロジック15との間及びマザーボード10とI/Oボード20との間に介在して、I/Oボード20を経由した入力データを各制御ロジック15に個別に供給し、入力データに基づき各制御ロジック15により演算されたそれぞれの出力データの何れか一方をI/Oボード20に出力するインタフェース部が組み込まれている。
インタフェース部は、各制御ロジックにより演算されたそれぞれの出力データを比較した結果に基づいて、予め設定された制御ロジックの出力データをI/Oボード20に出力し、或いは、各制御ロジックにより演算されたそれぞれの出力データを比較した結果に基づいて、予め設定された両制御ロジック以外の出力データをI/Oボードに出力する。
制御ロジック15及びメモリドライバ17は、ホストコンピュータ200からマザーボード10のメモリにロードされ、さらに、ホストコンピュータ200を介して、マザーボード10のCPUで実行される二つの制御ロジックが選択され、共有メモリ22のメモリマップ情報、共有メモリ22に対応してマザーボード10のメモリ領域に区画される仮想レジスタのマップ情報、I/Oボード20に組み込まれたファームウェア21の入出力ポートに対する信号割付情報、I/Oボード20とインタフェースボード30間の信号系路情報等の初期設定情報が設定される。
仮想レジスタのマップ情報は、二つの制御ロジックに対応してそれぞれ異なる領域に区画された少なくとも二つのレジスタ領域であるI/Oデータ領域が含まれる。図6では、共有メモリ22のメモリマップ情報に対応する統括仮想レジスタと制御ロジック15(A,B,・・・,Z)に個別に対応する個別仮想レジスタ(A,B,・・・,Z)が区画されている。個別仮想レジスタ(A,B,・・・,Z)は、対応する制御ロジック15(A,B,・・・,Z)以外からアクセスされないように、各制御ロジック15(A,B,・・・,Z)毎にアドレス設定されている。
ホストコンピュータ200によって選択される制御ロジックの一つは制御ロジック15(A)であり、他の一つは制御ロジック15(B,・・・,Z)の何れかである。
その後、ホストコンピュータ200からの指令に基づいてメモリドライバ17及び二つの制御ロジック15が起動され車両のエンジンが制御される。
本ソフトウェア開発装置では、マザーボード10にデュアルコアCPUが搭載されており、予めOSの設定によって、制御ロジック15(A)が一方のCPUコアで、他方の制御ロジック15(B,・・・,Z)が他方のCPUコアで実行されるように設定され、両制御ロジックが並行して実行されるように環境設定されている。
メモリドライバ17は、例えば、1msec.のタイマ割込みが発生すると、制御ロジック15A,15Bのそれぞれに含まれる時間同期処理のための制御ロジックを起動する。
メモリドライバ17に組み込まれたインタフェース部は、統括仮想レジスタに区画された入力レジスタに割込みフラグがセットされていると、当該割込みフラグをリセットして、個別仮想レジスタA,Bに入力論理データ(入力データ)を書き込み、制御ロジック15A,15Bのそれぞれに含まれる当該割込みフラグに対応する時間非同期の制御ロジックを起動する。
メモリドライバ17に組み込まれたインタフェース部は、各制御ロジック15A,15Bから個別仮想レジスタA,Bに割込みフラグがセットされると、個別仮想レジスタA,Bに書き込まれた出力論理データ(出力データ)を比較し、双方の値が一致するとき、或いは、双方の差分が予め設定された許容範囲内であるときには、制御ロジック15Bの出力論理データ及び割込みフラグを、統括仮想レジスタに区画された出力レジスタに書き込み、PCI通信ドライバを起動する。
PCI通信ドライバは、出力レジスタに書き込まれたデータをI/Oボード20に転送した後に、当該割込みフラグをリセットする。
メモリドライバ17に組み込まれたインタフェース部は、個別仮想レジスタA,Bに書き込まれた出力論理データを比較し、双方の値が一致せず、差分が予め設定された許容範囲を逸脱するときには、制御ロジック15Aの出力論理データ及び割込みフラグを、統括仮想レジスタに区画された出力レジスタに書き込み、PCI通信ドライバを起動する。許容範囲は、予めホストコンピュータ200からデータ種類毎に設定入力されている。
PCI通信ドライバは、出力レジスタに書き込まれたデータをI/Oボード20に転送した後に、当該割込みフラグをリセットする。
つまり、双方の値が一致せず、差分が予め設定された許容範囲を逸脱するときには、新規に開発した制御ロジックBに何らかの破綻をきたしていると判断して、既存の検証済みの制御ロジックAの出力論理データ及び割込みフラグを、優先して統括仮想レジスタに区画された出力レジスタに書き込むのである。
このようなインタフェース部を備えることにより、開発中の新規ロジックに何らかの異常が発生した場合であっても、エンジンや車両に重大な損傷を与えることなく、ロジックの検証を行なうことができるのである。
インタフェース部は、制御ロジックの異常を検知すると、マザーボード10に設けたLEDを点灯させ、或いはブザーを鳴動させて、オペレータに異常を報知する。
尚、インタフェース部は、各制御ロジック15A,15Bから個別仮想レジスタA,Bに割込みフラグが同時にセットされない場合に備えて、一定の許容時間内にセットされない場合には、何れかの制御ロジックが破綻していると判断して、予め設定された両制御ロジック以外の出力論理データをI/Oボード20に出力するように構成されている。
予め設定された両制御ロジック以外の出力データとは、車両の破損を招くことに無い出力論理データであり、許容時間を含めて、予めホストコンピュータ200から設定されたデータである。
それぞれの制御ロジックA,Bによる出力論理データ双方の値が一致せず、差分が予め設定された許容範囲を逸脱するときに、何れの制御ロジックの出力論理データを採用するかを、予めホストコンピュータ200を介して設定しておき、設定された制御ロジックの出力論理データ及び割込みフラグを統括仮想レジスタに区画された出力レジスタに書き込むように構成してもよい。
さらに、双方の値が一致せず、差分が予め設定された許容範囲を逸脱するときに、何れかの制御ロジックが破綻していると判断して、予め設定された両制御ロジック以外の出力論理データを統括仮想レジスタに区画された出力レジスタに書き込むように構成してもよい。
またさらに、例えば、図7に示すように、制御ロジックAの出力データ及び制御ロジックBの出力論理データがパルス信号を示す出力データである場合において、図中に示す、時刻t1から時刻t2までの期間及び時刻t2から時刻t3までの期間に示すように各出力データが異なる場合は、安全側の出力データを出力するように構成してもよい。
安全側の出力データとして、例えば、0に近い側の出力データを選択するように設定することができる。図中に示す時刻t1から時刻t2までの期間は、制御ロジックBの出力データを出力し、図中に示す時刻t2から時刻t3までの期間は、制御ロジックAの出力データを出力するのである。また、安全側の出力データとして、現在出力中のデータとの差分が小さい方のデータを選択するようにしてもよい。走行状態の急変を回避するためである。
上述した実施形態では、それぞれの制御ロジックA,Bによる出力論理データ双方の値が一致せず、差分が予め設定された許容範囲を逸脱するときに、何れかの出力論理データまたは第三の出力論理データを選択して出力する場合を説明したが、このような非常事態に備えて、マザーボード10のメモリに、フェールセーフ用のロジック、例えば、低速に減速して安全に停車するための退避走行用の制御ロジックを格納しておき、それぞれの制御ロジックA,Bによる出力論理データ双方の値が一致せず、差分が予め設定された許容範囲を逸脱するときに、退避走行用の制御ロジックの出力論理データ及び割込みフラグを、統括仮想レジスタに区画された出力レジスタに書き込ように構成してもよい。
上述した実施形態では、それぞれの制御ロジックA,Bによる出力論理データ双方の値が一致せず、差分が予め設定された許容範囲を逸脱するときに、異常が発生したと判断するインタフェース部を備えた例を説明したが、これに加えて、各制御ロジックA,Bの何れかに、オーバーフローエラーやゼロ除算等のCPU例外が発生したとき、制御ロジックに実装されているエラー発生時のシステムリセット関数がコールされたとき、ユーザ定義エラーが発生したときに、インタフェース部が、他方の制御ロジックの出力論理データ或いは予め設定された出力論理データを統括仮想レジスタに区画された出力レジスタに書き込ように構成してもよい。
ユーザ定義エラーの発生は、各制御ロジックA,Bの所定のロジック、例えば、新規開発で検証が必要な制御ロジックに、出力論理データの異常判定ロジックを組み込むことにより実現できる。
インタフェース部がこれらの異常を検知する方法は公知の技術を適宜使用することができる。例えば、各制御ロジックA,Bに、それらの異常が発生したときに、メモリに異常フラグをセットするロジックを実装しておけばよい。
上述した実施形態では、制御ロジックAに検証済みの制御ロジックが採用される場合を説明したが、制御ロジックA,Bともに未検証の制御ロジックを採用することガ可能であることはいうまでもない。
本発明によるソフトウェア開発装置には、マザーボード10のメモリに、制御ロジックA,Bにより処理される入出力データ、特に共有メモリを介して遣り取りされるデータをモニタしてホストコンピュータ200に送信するRAMモニタが格納されている。
従って、ホストコンピュータ200の表示器210には、RAMモニタによって転送されたエンジンとソフトウェア開発装置との間でやり取りされるデータがリアルタイムで表示され、開発者等が、表示器210に表示されたデータを目視して、各制御ロジックを検証できるように構成されている。また、これらのデータは、後に詳細に評価できるように、ログデータとしてホストコンピュータ200のハードディスクに格納される。
表示器210に表示される画面は、制御ロジックA,B双方のデータが同時に表示され、対比することが可能な対比モードと、何れか一方のデータのみが表示される単一表示モードが選択可能である。
RAMモニタは、モニタしたデータをリアルタイムでホストコンピュータ200に転送するものに限らず、マザーボード10のメモリに区画されたモニタデータ格納領域に時刻情報とともに格納され、後に一括してホストコンピュータ200に転送するように構成してもよい。
メモリ容量の制限によって、全てデータをログデータとして記憶できない場合には、規定の容量に達するまで記憶してもよいし、リングバッファ方式で、古いデータから上書きして、最新のデータを確保するように構成してもよい。
さらに、リングバッファ方式を採用して、リグデータを記憶しながら、制御ロジックの不一致等の異常が発生した前後のデータをフリーズデータとして、メモリの他の領域に保存するように構成してもよい。このようなフリーズデータが後にホストコンピュータ200に転送され、詳しく検証されるのである。
尚、上述したソフトウェア開発装置100の用途は、車両Cに搭載されるECUの制御ロジックの開発に限るものではなく、広く組み込みソフトウェアの開発に使用可能であることはいうまでもない。
上述したソフトウェア開発装置100の具体構成は例示に過ぎず、各部の具体的な構成は、本発明の作用効果を奏する限りにおいて、構築するシステムに応じて適宜変更設計することが可能である。
10:制御ロジック処理部(マザーボード)
15:制御ロジック
17:メモリドライバ(インタフェース部)
20:I/O処理部(I/Oボード)
21:ファームウェア
22:共有メモリ
100:ソフトウェア開発装置
C:車両
15:制御ロジック
17:メモリドライバ(インタフェース部)
20:I/O処理部(I/Oボード)
21:ファームウェア
22:共有メモリ
100:ソフトウェア開発装置
C:車両
Claims (5)
- CPUと当該CPUの周辺回路とを内部に備えるマイクロコンピュータを模擬する模擬マイクロコンピュータを備え、マイクロコンピュータで処理する制御ロジックを実行するソフトウェア開発装置であって、
当該マイクロコンピュータのCPUにより実行される制御ロジックを実行する制御ロジック処理部と、当該マイクロコンピュータのCPUにより実行される周辺回路に対するI/O処理を模擬するI/O処理部を備え、
前記制御ロジック処理部が、基本機能が同一である複数の制御ロジックを並行して実行するように構成され、
前記制御ロジック処理部と前記I/O処理部との間に介在して、前記I/O処理部を経由した入力データを前記制御ロジック処理部で実行される各制御ロジックに個別に供給し、前記入力データに基づき各制御ロジックにより演算されたそれぞれの出力データの何れか一方を前記I/O処理部に出力するインタフェース部を備えているソフトウェア開発装置。 - インタフェース部は、各制御ロジックにより演算されたそれぞれの出力データを比較した結果に基づいて、予め設定された制御ロジックの出力データを前記I/O処理部に出力する請求項1記載のソフトウェア開発装置。
- インタフェース部は、各制御ロジックにより演算されたそれぞれの出力データを比較した結果に基づいて、予め設定された両制御ロジック以外の出力データを前記I/O処理部に出力する請求項1記載のソフトウェア開発装置。
- 車両を制御する電子制御装置に替えて請求項1記載のソフトウェア開発装置を車両に接続し、前記インタフェース部により、前記I/O処理部を経由した車両からの入力データを検証済みの制御ロジックと未検証の制御ロジックに個別に供給し、前記検証済みの制御ロジックと前記未検証の制御ロジックの双方を前記ソフトウェア開発装置により実行させ、前記入力データに基づき各制御ロジックにより演算されたそれぞれの出力データを比較した結果に基づいて、前記未検証の制御ロジックの出力データまたは前記検証済みの制御ロジックの出力データを切り替えて前記I/O処理部に出力する実車試験方法。
- CPUと当該CPUの周辺回路とを内部に備えるマイクロコンピュータを模擬する模擬マイクロコンピュータにより制御ロジックをエミュレートするエミュレーション方法であって、
同一の制御対象を制御する制御ロジックであって、検証済みの制御ロジックと、汎用のモデル生成プログラムで生成された未検証の制御ロジックの双方を並行してエミュレートし、各制御ロジックの出力データを比較することにより、前記未検証の制御ロジックを検証するエミュレーション方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009072725A JP2010224971A (ja) | 2009-03-24 | 2009-03-24 | ソフトウェア開発装置、実車試験方法、及びエミュレーション方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009072725A JP2010224971A (ja) | 2009-03-24 | 2009-03-24 | ソフトウェア開発装置、実車試験方法、及びエミュレーション方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010224971A true JP2010224971A (ja) | 2010-10-07 |
Family
ID=43042075
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009072725A Withdrawn JP2010224971A (ja) | 2009-03-24 | 2009-03-24 | ソフトウェア開発装置、実車試験方法、及びエミュレーション方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010224971A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105512023A (zh) * | 2014-09-26 | 2016-04-20 | 腾讯科技(深圳)有限公司 | 一种Monkey测试方法及装置 |
-
2009
- 2009-03-24 JP JP2009072725A patent/JP2010224971A/ja not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105512023A (zh) * | 2014-09-26 | 2016-04-20 | 腾讯科技(深圳)有限公司 | 一种Monkey测试方法及装置 |
CN105512023B (zh) * | 2014-09-26 | 2019-02-19 | 腾讯科技(深圳)有限公司 | 一种Monkey测试方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5059017B2 (ja) | シミュレーション装置 | |
US9836384B2 (en) | Testing device for real-time testing of a virtual control unit | |
US9128913B2 (en) | Method and device for testing input/output interfaces of avionic modules of IMA type | |
JP2005050329A (ja) | 信頼性マイクロコントローラ、マイクロコントローラにおける欠陥検出方法、マイクロコントローラ用欠陥許容システム設計方法、およびコンピュータプログラム製品 | |
JP6692278B2 (ja) | 演算装置及び仮想開発環境装置 | |
JP5295355B2 (ja) | シミュレーション方法、システム及びプログラム | |
JP2011022702A (ja) | シミュレーション方法、システム及びプログラム | |
WO2021049130A1 (ja) | シミュレーション方法および記録媒体 | |
US8386228B2 (en) | Microcomputer simulator | |
JP5680514B2 (ja) | 自己診断機能を備えたコンピュータ、ソフトウェア作成方法、およびソフトウェア作成装置 | |
US7539610B2 (en) | Microcomputer logic development | |
JP2010224971A (ja) | ソフトウェア開発装置、実車試験方法、及びエミュレーション方法 | |
JP2009054041A (ja) | 模擬マイクロコンピュータ装置 | |
US11372706B2 (en) | Vehicle control device | |
JP3827615B2 (ja) | マイコンのロジック開発装置及び開発方法 | |
JP2015123748A (ja) | 検査システム | |
JP5753508B2 (ja) | プログラム検証システムおよびその検証方法 | |
JP2010244376A (ja) | ソフトウェア開発装置、及び、ソフトウェア開発装置を用いたデバッグ方法 | |
JP2010049355A (ja) | 模擬マイクロコンピュータ装置 | |
JP5156440B2 (ja) | マイクロコンピュータの模擬装置 | |
WO2022201597A1 (ja) | 車両制御装置 | |
CN115774406A (zh) | 一种多余度航行器控制系统的半物理仿真系统与测试方法 | |
JP2011081560A (ja) | システムレベルシミュレーション方法および装置 | |
JPS6151578A (ja) | 電子回路装置障害診断方式 | |
JP2009276985A (ja) | 半導体集積回路装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120220 |
|
A072 | Dismissal of procedure |
Free format text: JAPANESE INTERMEDIATE CODE: A073 Effective date: 20130625 |
|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20130702 |