JP2004213183A - 制御用プログラムの作成支援プログラム、作成支援方法及び作成支援装置 - Google Patents
制御用プログラムの作成支援プログラム、作成支援方法及び作成支援装置 Download PDFInfo
- Publication number
- JP2004213183A JP2004213183A JP2002379759A JP2002379759A JP2004213183A JP 2004213183 A JP2004213183 A JP 2004213183A JP 2002379759 A JP2002379759 A JP 2002379759A JP 2002379759 A JP2002379759 A JP 2002379759A JP 2004213183 A JP2004213183 A JP 2004213183A
- Authority
- JP
- Japan
- Prior art keywords
- module
- program
- pld
- processing function
- mpu
- 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.)
- Pending
Links
Images
Landscapes
- Combined Controls Of Internal Combustion Engines (AREA)
- Programmable Controllers (AREA)
Abstract
【課題】MPUモジュール3と、PLDモジュール2とを含む制御ユニット1に実行させる実行形式プログラムを作成する際に、効率的にプログラム作成が可能になる制御用プログラムの作成支援プログラム、作成支援方法及び作成支援装置Aを提供する。
【解決手段】MPUモジュール3及びPLDモジュール2の空き容量がそれぞれ所定値以下にならないように、入力させた制御設計CAD図に含まれる複数の処理機能を、MPUモジュール3に実行させる処理機能と、PLDモジュール2に実行させる処理機能とに割り振る。
【選択図】図1
【解決手段】MPUモジュール3及びPLDモジュール2の空き容量がそれぞれ所定値以下にならないように、入力させた制御設計CAD図に含まれる複数の処理機能を、MPUモジュール3に実行させる処理機能と、PLDモジュール2に実行させる処理機能とに割り振る。
【選択図】図1
Description
【0001】
【発明の属する技術分野】
本発明は、MPUモジュールと、PLDモジュールとを含む制御ユニットに実行させるプログラムの作成を支援するための制御用プログラムの作成支援プログラム、作成支援方法及び作成支援装置に関し、例えば自動車等のエンジンの燃焼制御系の制御用プログラムの作成業務に適用して好適な制御用プログラムの作成支援プログラム、作成支援方法及び作成支援装置に関する。
【0002】
【従来の技術】
従来より、コンピュータで実行するソフトウエアの開発業務の効率化を図るべく、表示画面上でオペレータによって定義された所定のシンボルや矢線に応じて、予め記憶しているプログラムライブラリの中から必要となるプログラムを自動的に選択すると共に、その選択したプログラムを、当該定義された所定のシンボルや矢線の情報に従って関連付けすることが可能な制御用プログラムの作成支援装置等が使用されている。
【0003】
また、上記のようなプログラム作成支援装置で作成したプログラムと、そのプログラムが搭載される実機の諸動作がモデル化されたプログラムとをコンピュータ上で実行することにより、その実機による検証及びチューニングに先立ってシミュレーションすることが可能なシミュレーションソフトウエアも使用されている。
【0004】
また、近年においては、EDA(Electronic Design Automation)化が進んでおり、上記の如く所定のシンボル等を用いて表示画面上で作成した制御設計CAD図の情報に従って、C言語等の高級言語プログラムにより、その制御設計CAD図の全体動作を制御するMPU(Micro Processing Unit)のプログラムと、その制御設計CAD図において実行させるべき論理回路をプログラム可能なCPLD(Complex Programmable Logic Device)やFPGA (Field Programmable Gate Array)等のPLD (Programmable Logic Device)のプログラムとを自動的に作成可能なプログラム作成支援装置が普及しつつある。
【0005】
例えば特許文献1には、制御用プログラムの作成支援装置であって、作成された制御設計CAD図の情報に従って、高級言語プログラムを一般的なコンパイラによって機械語に変換したMPUの実行形式プログラムと、HDL(Hardware Description Language)に変換したPLDの実行形式プログラムとを自動的に作成可能な作成支援装置が提案されている。
【0006】
【特許文献1】
特開2000−311007号公報
【0007】
【発明が解決しようとする課題】
ところが、上記特許文献1に記載の制御用プログラムの作成支援装置では、制御設計CAD図に含まれる各処理機能をMPUモジュールによって実現するか、PLDモジュールによって実現するかは、その制御設計CAD図を作成する際に作業者が宣言するようにしている。例えばPLDモジュールは、フィルタ処理機能やI/Oデバイス関連処理機能等の、いわゆる入力信号に対する流れるような処理が得意であり、これらの処理機能はPLDモジュール側に割り振るのが好ましい。一方、MPUモジュールは、浮動小数点演算処理機能等が得意であり、これらの処理機能はMPUモジュール側に割り振るのが好ましい。また、入力信号に対してマップを参照して出力するマップ処理機能におけるマップは、ソフトウエアの開発途中に修正・変更を行うことが多々あるため、マップ処理機能はMPUモジュールに割り振った方がマップの修正・変更が容易であるため好ましい。このように、制御設計CAD図に含まれる各処理機能を割り振るには、これらの事情を考慮して割り振らなければならず、割り振りを行う作業者には専門的知識が必要となる。
【0008】
しかしながら、制御設計CAD図を作成する機械技術者が、こうした専門的知識に乏しい場合もあり、EDAの手法を導入したものの業務の効率化が十分に高まらないことも予想される。
【0009】
本発明は、このような事情に鑑みてなされたものであり、その目的とするところは、MPUモジュールとPLDモジュールとを含む制御ユニットに実行させる実行形式プログラムを作成する際に、効率的にプログラム作成が可能になる制御用プログラムの作成支援プログラム、作成支援方法及び作成支援装置を提供することにある。
【0010】
【課題を解決するための手段】
本発明による制御用プログラムの作成支援プログラムは、MPUモジュールと、PLDモジュールとを含む制御ユニットに実行させる実行形式プログラムの作成支援を行う作成支援装置を制御するための作成支援プログラムである。
【0011】
そして、上記作成支援プログラムは、上記作成支援装置に、上記MPUモジュールの容量とPLDモジュールの容量とのそれぞれをユーザに入力させる容量入力処理と、上記制御ユニットに実行させる複数の処理機能を、所定のシンボルを用いた制御設計図として上記ユーザに入力させる設計図入力処理と、上記容量入力処理によってユーザに入力させた容量に基づいて、上記MPUモジュールの空き容量とPLDモジュールの空き容量とがそれぞれ所定値以下にならないように、上記設計図入力処理によってユーザに入力させた制御設計図に含まれる複数の処理機能を、上記MPUモジュールに実行させる処理機能と、PLDモジュールに実行させる処理機能とに割り振る割り振り処理と、上記割り振り処理によって上記MPUモジュールに割り振った各処理機能を該MPUモジュールに実行させるための実行形式プログラムと、上記PLDモジュールに割り振った各処理機能を該PLDモジュールに実行させるための実行形式プログラムとをそれぞれ作成するプログラム作成処理と、を実行させるものとする。
【0012】
この構成によると、容量入力処理では、制御ユニットに含まれるMPUモジュールとPLDモジュールとのそれぞれの容量を作業者(ユーザ)に入力させる。また、設計図入力処理では、上記制御ユニットに実行させる複数の処理機能を、所定のシンボルを用いた制御設計(CAD)図として作業者(ユーザ)に入力させる。
【0013】
そして、割り振り処理では、上記設計図入力処理によって入力させた制御設計図に含まれる複数の処理機能を、上記MPUモジュールに実行させる処理機能と、PLDモジュールに実行させる処理機能とに割り振る。このように、作業者が処理機能の割り振りを行わなくても、制御設計図に含まれる複数の処理機能が、割り振り処理によってMPUモジュール側とPLDモジュール側とに自動的に割り振られる。このため、MPUモジュール及びPLDモジュールの特性等の、ソフトウエアに関する専門的知識に乏しい作業者が制御設計図を入力しても、その制御設計図に含まれる各処理機能を適切に割り振ることが可能になる。
【0014】
また、上記割り振り処理では、上記容量入力処理によって入力させたMPUモジュール及びPLDモジュールの各容量に基づいて、上記MPUモジュールの空き容量とPLDモジュールの空き容量とがそれぞれ所定値以下にならないように、各処理機能が割り振られる。これにより、例えば作成した制御用プログラムを実機にて検証・調整する工程において処理機能の変更や処理機能の追加の必要が明らかになった場合でも、MPUモジュール及びPLDモジュールの各容量にはそれぞれ空きがあるため、制御設計図の変更に対応可能となる。このように、MPUモジュール及びPLDモジュールのそれぞれについて、所定値よりも大きい空き容量を確保することにより、開発業務の効率化が高まる。
【0015】
そして、各処理機能が割り振られれば、プログラム作成処理によって、MPUモジュールに割り振られた各処理機能を該MPUモジュールに実行させる実行形式プログラムと、PLDモジュールに割り振られた各処理機能を該PLDモジュールに実行させる実行形式プログラムとがそれぞれ作成される。
【0016】
こうして作成されたMPUモジュールの実行形式プログラムは、そのMPUモジュールに書き込まれ、PLDモジュールの実行形式プログラムは、そのPLDモジュールに書き込まれて制御ユニットが完成する。つまり、上記作成支援プログラムは、上記作成支援装置に対して、プログラム作成処理によって作成したMPUモジュールの実行形式プログラムを該MPUモジュールに書き込むと共に、PLDモジュールの実行形式プログラムを該PLDモジュールに書き込む書き込み処理をさらに実行させればよい。
【0017】
ここで、上記割り振り処理は、制御設計図に含まれる、少なくともフィルタ処理機能、パルス処理機能、I/Oデバイス関連処理機能、フェイルセーフ処理機能、設計上の変更頻度が小さい処理機能、及び実行頻度が大きい処理機能をPLDモジュールに割り振る処理とすればよい。
【0018】
すなわち、ここで挙げた各処理機能の内、フィルタ処理機能、パルス処理機能及びI/Oデバイス関連処理機能は、入力信号に対する流れるような処理を行うためPLDモジュールでの実行に適した処理機能に該当する。また、実行頻度が大きい処理機能やフェイルセーフ処理機能は、処理をハード的に行うPLDモジュールで実現することにより、信頼性が向上する。さらに、PLDモジュールはMPUモジュールに比べて、一旦作成したプログラムの変更が困難であるため、設計上(開発上)の変更頻度が大きい処理機能はPLDモジュールで実現するのは不適切である。逆に、設計上の変更頻度が小さい処理機能はPLDモジュールで実現するのが好ましい。尚、実行頻度が大きい処理機能や、設計上の変更頻度が小さい処理機能は、予めその候補を設定しておけばよい。そして、その設定した処理機能が制御設計図に含まれるときに、その処理機能をPLDモジュール側に割り振ればよい。
【0019】
こうして割り振り処理では、これらPLDモジュールにより実現するのに適した処理機能をPLDモジュールに割り振る。その結果、制御用プログラムの最適化が図られる。
【0020】
また、上記割り振り処理は、制御設計図に含まれる、少なくとも浮動小数点演算処理機能、及びマップ処理機能をMPUモジュールに割り振る処理とすればよい。
【0021】
上記とは逆に、ここで挙げた各処理機能の内、浮動小数点演算処理機能は、MPUモジュールでの実行に適した処理機能である。また、マップ処理機能は設計上の変更頻度が大きい処理機能に該当し、上述したように、設計上の変更頻度が大きい処理機能をPLDモジュールで実現することは開発業務の効率が悪くなる。そこで、マップ処理機能はMPUモジュールで実現することが好ましい。
【0022】
こうして割り振り処理では、これらMPUモジュールにより実現するのに適した処理機能をMPUモジュールに割り振る。その結果、制御用プログラムの最適化が図られる。
【0023】
上記割り振り処理は、各処理機能をPLDモジュールに割り振ったときの該PLDモジュールの空き容量を演算すると共に、その空き容量が所定値以下になるときには、上記PLDモジュールに割り振ったフィルタ処理をMPUモジュールに割り振り直す処理とするのがよい。
【0024】
上述したように、開発業務の効率化の観点からは、PLDモジュールの空き容量を所定値よりも大きくするのが好ましい。一方で、PLDモジュールでの実現に適した各処理機能(フィルタ処理機能、パルス処理機能、I/Oデバイス関連処理機能、フェイルセーフ処理機能、設計上の変更頻度が小さい処理機能、及び実行頻度が大きい処理機能)を全てPLDモジュールに割り振ると、PLDモジュールの空き容量が所定値以下となる場合も起こり得る。
【0025】
そこで、割り振り処理では、上記の各処理機能をPLDモジュールに割り振ったときの該PLDモジュールの空き容量を演算する。そして、上記PLDモジュールの空き容量が所定値以下になるときには、上記の各処理機能の内でも比較的MPUモジュールでの実現に適した処理機能、つまりフィルタ処理機能をMPUモジュールに割り振り直す。こうして、制御設計図に含まれる各処理機能をMPUモジュール側とPLDモジュール側とに適切に割り振りつつも、所定値よりも大きいPLDモジュールの空き容量が確保される。
【0026】
ここで、MPUモジュールの特性上、フィルタ処理機能の内でも、高次のフィルタ処理をMPUモジュール側に割り振ることが好ましい。
【0027】
また、PLDモジュールの空き容量を所定値よりも大きくするには、複数の処理機能をMPUモジュール側に割り振り直さなければならない場合もある。この場合は、制御設計図に含まれる各フィルタ処理機能に、次数の高い順に優先順位を付し、その優先順位に従って次数の高いフィルタ処理から順にMPUモジュールに順次割り振り、それによって、PLDモジュールの空き容量を所定値よりも大きくするのが好ましい。
【0028】
また、上記割り振り処理は、各処理機能をPLDモジュールに割り振ったときの該PLDモジュールの空き容量を演算すると共に、その空き容量が所定値以下になるときには、上記PLDモジュールに割り振ったいずれかの処理機能をMPUモジュールに割り振り直す一方で、フェイルセーフ処理機能のMPUモジュールへの割り振りを抑制する処理とするのが好ましい。
【0029】
上述したように、PLDモジュールでの実現に適した処理機能の内、フェイルセーフ処理機能はPLDモジュールで実現することがその信頼性の観点から特に好ましい。このため、PLDモジュールでの実現に適した各処理機能をPLDモジュールに割り振ったときにそのPLDモジュールの空き容量が所定値以下となるときには、いずれかの処理機能をMPUモジュールに割り振ってPLDモジュールの空き容量を所定値よりも大きくする一方で、フェイルセーフ処理機能はPUモジュールに割り振ることを抑制する。つまり、フェイルセーフ処理機能は、PLDモジュール側に割り振る。これにより、制御設計図に含まれる各処理機能をMPUモジュール側とPLDモジュール側とに適切に割り振りつつも、所定値よりも大きいPLDモジュールの空き容量が確保される。
【0030】
さらに、上記割り振り処理は、各処理機能をMPUモジュールに割り振ったときの該MPUモジュールの空き容量を演算すると共に、その空き容量が所定値以下になるときには、上記MPUモジュールに割り振った浮動小数点演算処理機能をPLDモジュールに割り振り直す処理であるとするのが好ましい。
【0031】
上述したように、開発業務の効率化の観点からは、MPUモジュールの空き容量も、PLDモジュールと同様に所定値よりも大きくするのが好ましい。一方で、MPUモジュールでの実現に適した各処理機能(浮動小数点演算処理機能、及びマップ処理機能)をMPUモジュールに割り振ると、MPUモジュールの空き容量が所定値以下となる場合も起こり得る。
【0032】
そこで、割り振り処理では、上記の各処理機能をMPUモジュールに割り振ったときの該MPUモジュールの空き容量を演算し、その空き容量が所定値以下になるときには、浮動小数点演算処理機能をMPUモジュールに割り振り直す。浮動小数点演算処理機能はプログラムサイズが比較的大きいため、この浮動小数点演算処理機能をPLDモジュール側に割り振り直すことで、MPUモジュールの空き容量を効果的に大きくすることが可能になる。こうして、制御設計図に含まれる各処理機能をMPUモジュール側とPLDモジュール側とに適切に割り振りつつも、所定値よりも大きいPLDモジュールの空き容量が確保される。
【0033】
加えて、上記割り振り処理は、各処理機能をMPUモジュールに割り振ったときの該MPUモジュールの空き容量を演算すると共に、その空き容量が所定値以下になるときには、上記MPUモジュールに割り振ったいずれかの処理機能をPLDモジュールに割り振り直す一方で、マップ処理機能のPLDモジュールへの割り振りを抑制する処理とするのが好ましい。
【0034】
上述したように、MPUモジュールでの実現に適した処理機能の内、マップ処理機能は設計上の変更頻度が大きい処理機能であり、このマップ処理機能はMPUモジュールに割り振ることで開発業務の効率が高まる。このため、MPUモジュールでの実現に適した各処理機能をMPUモジュールに割り振ったときにそのMPUモジュールの空き容量が所定値以下となるときには、いずれかの処理機能をPLDモジュールに割り振ってMPUモジュールの空き容量を所定値よりも大きくする一方で、マップ処理機能はPLDモジュールに割り振ることを抑制する。こうしてマップ処理機能以外の処理機能をPLDモジュールに割り振ることで、制御設計図に含まれる各処理機能をMPUモジュール側とPLDモジュール側とに適切に割り振りつつも、所定値よりも大きいMPUモジュールの空き容量が確保され、さらに、開発業務の効率を低下させることがなくなる。
【0035】
本発明による制御用プログラムの作成支援方法は、MPUモジュールと、PLDモジュールとを含む制御ユニットに実行させる実行形式プログラムの作成支援を行う作成支援方法である。
【0036】
そして、上記作成支援方法は、上記MPUモジュールの容量とPLDモジュールの容量とのそれぞれをユーザに入力させる容量入力ステップと、上記制御ユニットに実行させる複数の処理機能を、所定のシンボルを用いた制御設計図として上記ユーザに入力させる設計図入力ステップと、上記容量入力ステップでユーザに入力させた容量に基づいて、上記MPUモジュールの空き容量とPLDモジュールの空き容量とがそれぞれ所定値以下にならないように、上記設計図入力ステップでユーザに入力させた制御設計図に含まれる複数の処理機能を、上記MPUモジュールに実行させる処理機能と、PLDモジュールに実行させる処理機能とに割り振る割り振りステップと、上記割り振りステップで上記MPUモジュールに割り振った各処理機能を該MPUモジュールに実行させるための実行形式プログラムと、上記PLDモジュールに割り振った各処理機能を該PLDモジュールに実行させるための実行形式プログラムとをそれぞれ作成するプログラム作成ステップと、を含む。
【0037】
この構成によると、上記制御用プログラムの作成支援プログラムと同様の作用効果が得られる。
【0038】
本発明による制御用プログラムの作成支援装置は、MPUモジュールと、PLDモジュールとを含む制御ユニットに実行させる実行形式プログラムの作成支援を行う作成支援装置である。
【0039】
そして、上記作成支援装置は、上記MPUモジュールの容量とPLDモジュールの容量とのそれぞれをユーザに入力させる容量入力手段と、上記制御ユニットに実行させる複数の処理機能を、所定のシンボルを用いた制御設計図として上記ユーザに入力させる設計図入力手段と、上記容量入力手段によってユーザに入力させた容量に基づいて、上記MPUモジュールの空き容量とPLDモジュールの空き容量とがそれぞれ所定値以下にならないように、上記設計図入力手段によってユーザに入力させた制御設計図に含まれる複数の処理機能を、上記MPUモジュールに実行させる処理機能と、PLDモジュールに実行させる処理機能とに割り振る割り振り手段と、上記割り振り手段によって上記MPUモジュールに割り振られた各処理機能を該MPUモジュールに実行させるための実行形式プログラムと、上記PLDモジュールに割り振られた各処理機能を該PLDモジュールに実行させるための実行形式プログラムとをそれぞれ作成するプログラム作成手段と、を備える。
【0040】
この構成によると、上記制御用プログラムの作成支援プログラムと同様の作用効果が得られる。
【0041】
【発明の効果】
以上説明したように、本発明による制御用プログラムの作成支援プログラム、作成支援方法及び作成支援装置によれば、入力された制御設計図に含まれる複数の処理機能が、MPUモジュールに実行させる処理機能と、PLDモジュールに実行させる処理機能とに割り振られかつ、MPUモジュールに実行させる実行形式プログラムと、PLDモジュールに実行させる実行形式プログラムとがそれぞれ作成される。このように、制御設計図に含まれる複数の処理機能がMPUモジュール側とPLDモジュール側とに自動的に割り振られるため、各処理機能を適切に割り振ることができる。その結果、プログラム作成の効率化を図ることができる。
【0042】
また、上記の各処理機能は、MPUモジュールの空き容量とPLDモジュールの空き容量とがそれぞれ所定値以下にならないように割り振られるため、制御設計図を一旦作成した後でも、その制御設計図を容易に変更することができ、開発業務の効率化を高めることができる。
【0043】
【発明の実施の形態】
以下、本発明の実施形態を図面に基いて説明する。
【0044】
図1は、本発明の一実施形態におけるプログラム作成支援装置Aによるプログラムの作成及び検証作業の流れを説明する図である。
【0045】
同図に示す破線より上側は、本実施形態に係るプログラム作成支援装置Aの内部における処理を示しており、当該破線の下側は、チューニング対象の制御ボード(制御ユニット)1、その制御ボード1に搭載されるPLDモジュール2及びMPUモジュール3を示す。ここで、当該プログラム作成支援装置Aを使用したプログラムの作成及び検証作業の手順について概説する。
【0046】
(1)まず、作業者は、当該プログラム作成支援装置Aの表示画面上で、制御ボード1で実現すべき制御動作を、制御設計CAD図として入力する。次に、制御ボード1やその制御ボード1によって実際に制御する装置(例えばエンジン等)の特性モデルを予め入力した一般的なシミュレーションモジュールを使用して、当該制御設計CAD図が所望する制御動作を実行可能な否かを仮想的に検証する。
【0047】
(2)この検証作業が完了したときには、当該プログラム作成支援装置Aにより、当該制御設計CAD図を、予め記憶している高級言語(例えば、C言語)コード生成用のプログラムライブラリを使用して、MPU用のプログラムコードと、PLD用のプログラムコードとに自動的に変換する。このとき、上記制御設計CAD図に含まれる各処理機能は、当該プログラム作成支援装置Aにより、MPUモジュールに実行させる処理機能と、PLDモジュールに実行させる処理機能とに自動的に割り振られる(詳細については後述する)。更に、それら変換されたC言語等の高級言語のコードは、当該プログラム作成支援装置Aにより、MPU用のプログラムコードはコンパイラによって機械語に自動的に変換され、PLD用のプログラムコードはHDLに自動的に変換される。尚、高級言語コードの機械語へのコンパイル自体は一般的なため、詳細な説明は省略する。また、ここでは、C言語等の高級言語のコードに変換したPLD用のプログラムコードをHDLに変換しているが、PLD用のプログラムは、制御設計CAD図から(C言語等の高級言語のコードに変換せずに)HDLに直接変換するようにしてもよい。
【0048】
(3)次に、作業者は、生成された機械語をMPUモジュール3のROM等に書き込むと共に、生成されたHDLをPLDモジュール2に搭載される各PLDに書き込む。この書き込み作業自体は一般的なため、詳細な説明は省略する。
【0049】
(4)次に、作業者は、プログラムの書き込みが完了した制御ボード1を使用して、実際に制御する装置(或いは、当該装置のエミュレータであってもよい)を動作させる検証作業を行う。この検証作業において不具合が発見された場合には、工程(1)で入力した制御設計CAD図の変更を行うと共に、その変更した制御設計CAD図を対象として、工程(2)以降の手順を改めて行えば良い。
【0050】
図2は、本発明の一実施形態におけるプログラム作成支援装置Aの表示画面に入力された制御設計CAD図の一例を示す図である。作業者は、ブロックや矢線等により所望する制御動作を入力して制御設計CAD図を作成する。このとき、作業者は、制御設計CAD図に対して、当該制御設計CAD図全体で表わす制御機能の基本制御周期、入力した個々のブロックの名称やそれらブロック毎の制御周期、並びに入出力ポートの定義や各種パラメータ等も設定する。
【0051】
ここで、図2に示す制御設計CAD図について簡単に説明する。この制御設計CAD図には、a1〜a5の信号が入力されてb1,b2の信号を出力するブロック41と、b1信号が入力されてa1〜a3信号を出力するブロック42と、b2信号及びc1〜c3信号が入力されてa5信号を出力するブロック43と、a4信号を出力するブロック44との、4つのブロックが含まれている。上記ブロック41には割り込み要求信号が入力され、上記各ブロック42〜44には、そのブロックの制御周期の信号が入力される。
【0052】
例えば図2に示す制御設計CAD図が、ディーゼルエンジンの燃焼制御系及び吸気制御系の制御プログラムに係る場合、上記ブロック41は、コモンレールタイプの燃料噴射及び吸気量制御を行う制御本体ブロック41に相当し、ブロック42は、水温や吸気温等の応答の遅いセンサ検出値用のセンサ検出ブロック42に相当し、ブロック43は、例えばクランク角(気筒番号b2)、コモンレール圧c1、エアフロー流量c2及びインテークマニホールド圧c3等の応答の早いセンサ検出値用のセンサ検出ブロック43に相当し、ブロック44は、制御係数a4をまとめて制御本体ブロック41に入力するキャリブレーション用ブロック44に相当する。
【0053】
制御設計CAD図は、例えば図3に示すような階層構造に構成することが可能である。例えば図2に示す制御設計CAD図が最上位層の制御設計CAD図である場合には、その最上位層の制御設計CAD図に含まれる各トップブロックを構成する下位層の制御設計CAD図が存在する。この下位層の制御設計CAD図には複数のサブブロックが含まれる。作業者は、下位層の制御設計CAD図に含まれる各サブブロックについても制御動作等を設定する必要がある。また、所望する複数のサブブロックをまとめた1つのブロックを、1階層上位の1つのブロックとしてまとめることができる。
【0054】
図4は、下位層の制御設計CAD図の一例として、図2に示す制御設計CAD図に含まれるブロック43を構成する下位層の制御設計CAD図を示している。
【0055】
この制御設計CAD図には、b2信号が入力されてd1信号を出力する第1ブロック51と、d1信号が入力されてf1信号を出力する第2ブロック52と、入力信号(c1〜c3)に対して所定値を乗算する乗算ブロック56と、入力信号に対してテーブルを参照して信号(e1〜e3)を出力するテーブルブロック57と、上記d1信号及びe1〜e3信号(Sample In)が入力されてそのSample In信号の積分値を出力(Integrated Signal)する第3〜第5ブロック53〜55とが含まれる。
【0056】
図4に示す制御設計CAD図が、ディーゼルエンジンの燃焼制御系及び吸気制御系の制御プログラムに係る場合、b2信号は気筒番号に相当し、第1ブロック51は、クランク角180°タイミングを出力(d1)するブロックに相当する。第2ブロックは、クランク角180°の時間(f1)を計測するブロックに相当する。
【0057】
また、各乗算ブロック56は、コモンレール圧力c1、エアフロー流量c2及びインテークマニホールド圧c3のセンサ信号値が入力されてA/D値の電圧変換を行うブロックに相当し、テーブルブロック57は、その各電圧値を物理量に変換するブロックに相当する。また、第3〜第5ブロックは、クランク角180°間の各センサ信号値(Sample In)の積分を行い、それを出力(Integrated Signal)するブロックに相当する。
【0058】
図5は、下位層の制御設計CAD図の一例として、図3に示す制御設計CAD図に含まれる第1ブロック51を構成する下位層の制御設計CAD図を示している。
【0059】
この制御設計CAD図には、b2信号が入力されてそのb2信号の前回値を出力するユニットディレイブロック61と、入力されたb2信号とその前回値との比較を行い、その比較に応じてd1信号を出力するリレーショナルオペレータブロック62とが含まれる。
【0060】
図5に示す制御設計CAD図が、ディーゼルエンジンの燃焼制御系及び吸気制御系の制御プログラムに係る場合、b2信号は気筒番号に相当し、リレーショナルオペレータブロック62は、入力された気筒番号(b2)が前回と同じであればd1信号として「1」を出力し、入力された気筒番号(b2)が前回と異なればd1信号として「0」を出力する。従って、第1ブロック51は、気筒番号が異なる毎に「0」を出力するブロックであるため、4気筒エンジンにおいてクランク角180°タイミングを出力するブロックに相当する。
【0061】
また、図6は、下位層の制御設計CAD図の別の例として、図3に示す制御設計CAD図に含まれる第3〜第5ブロック53〜55を構成する下位層の制御設計CAD図を示している。
【0062】
この制御設計CAD図には、2つの入力値の内積を演算してそれを出力するドットプロダクトブロック71と、ユニットディレイブロック72と、2つの入力値の和を演算してそれを出力するブロック73とが含まれている。
【0063】
図6に示す制御設計CAD図が、ディーゼルエンジンの燃焼制御系及び吸気制御系の制御プログラムに係る場合、Sample In信号はセンサ信号値に相当し、d1はクランク角180°タイミング信号に相当する。ドットプロダクトブロック71は、ユニットディレイブロック72から出力された前回の積分値とd1信号(「0」又は「1」)との内積を演算し、ブロック73は、この内積とセンサ信号値とを足し合わせる(前回の積分値+センサ信号値)。従って、第3〜第5ブロック53〜55はそれぞれ、クランク角180°間のセンサ信号値の積分を出力するブロックに相当する。
【0064】
次に、プログラム作成支援装置Aのハードウエアについて、図7を参照しながら説明する。このプログラム作成支援装置Aは、例えば一般的なコンピュータを採用可能である。
【0065】
図中、22は、CRT等のディスプレイ、23は入力手段であるキーボードである。24は、ブートプログラム等を記憶しているROMである。25は、各種処理結果を一時記憶するRAMである。26は、一般的なシミュレーション処理や、後述するプログラム作成処理を実現するプログラム等を記憶するハードディスクドライブ(HDD)等の記憶装置である。27は、外部の装置と通信回線30を介して通信するための通信インタフェースである。そして28は、作成した機械語をMPUモジュールのROM等への書き込みと、PLDモジュールを構成する個々のPLDへのHDLの書き込みを行う一般的な書き込みユニットである。これらの各構成は、内部バス29を介して接続されており、CPU21は記憶装置26に記憶したプログラムに従って当該プログラム作成支援装置Aの全体を制御する。
【0066】
次に、図8に示すフローチャートを参照しながら、上記プログラム作成支援装置Aによるプログラム作成支援の手順について説明する。
【0067】
先ずステップS1では、各種のデータ入力を行い、ステップS2では、MPU情報及びPLD情報を入力させる(容量入力手段81)。これは、具体的には、MPUモジュール3の容量及びPLDモジュール2の容量を作業者に入力させる。
【0068】
続くステップS3では、作業者に制御設計CAD図を作成させる(設計図入力手段82)。これにより、例えば図2及び図4〜図6に示す制御設計CAD図が作成される。
【0069】
ステップS4では、作業者から、上記ステップS3で作成した制御設計CAD図について実行形式プログラムの作成指示がされたか否かを判定し、指示がされていないのNOのときには上記ステップS1〜ステップS3を繰り返す。一方、指示がされたのYESのときにはステップS5に移行する。
【0070】
上記ステップS5では、作成された制御設計CAD図の内容を分析する。これは、制御設計CAD図をC言語のソースコードプログラムに変換した後に分析を行う。制御設計CAD図からソースコードプログラムへの変換処理は、一般的であるため、その詳細な説明は省略する。尚、制御設計CAD図の内容分析は、ソースコードプログラムに変換する前に行ってもよい。
【0071】
そして、ステップS6で、その制御設計CAD図に含まれる処理機能の内、フィルタ処理機能、パルス処理機能、I/Oデバイス関連処理機能、フェイルセーフ(F/S)処理機能、制御実行頻度の大きい処理、及び変更頻度の小さい処理機能を抽出する。ここで抽出した各処理機能の内、フィルタ処理機能、パルス処理機能及びI/Oデバイス関連処理機能は、PLDモジュール2の特性上、PLDモジュール2での実行に適した処理機能である。また、実行頻度が大きい処理機能やF/S処理機能は、処理をハード的に行うPLDモジュール2で実現することにより、信頼性を向上させることができる。さらに、PLDモジュール2は一旦書き込んだプログラムの変更がMPUモジュール3に比べて困難であるため、設計上(開発上)の変更頻度が大きい処理機能はPLDモジュール2で実現するのは不適切である。このため、設計上の変更頻度が小さい処理機能をPLDモジュール2で実現する。尚、制御実行頻度の大きい処理及び変更頻度の小さい処理機能は予めその候補が設定されており、その情報がプログラム作成支援装置Aの例えば記憶装置26に記憶されている。ステップS5では、記憶装置26に記憶されている情報を参照して、作成された制御設計CAD図に含まれる各処理機能が、制御実行頻度の大きい処理又は変更頻度の小さい処理機能に該当するか否かを判断する。
【0072】
そして、ステップS5では、抽出した各処理機能をPLD用の実行形式プログラム(HDL)にしたときのサイズを演算する。
【0073】
続くステップS7では、制御設計CAD図に含まれる各処理機能であって、上記ステップS6で抽出した以外の処理機能(MPUモジュール3の特性上、MPUモジュール3での実行に適した処理機能である浮動小数点演算処理機能や、設計上の変更頻度の大きい処理機能の一つであるマップ処理機能が含まれる)を、MPU用の実行形式プログラムにしたときのサイズを演算する。
【0074】
そして、ステップS8では、上記ステップS6で演算したプログラムサイズとステップS2で入力されたPLDモジュール2の容量とに基づいて、ステップS6で抽出した各処理機能をPLDモジュール2側に割り振ったときに、そのPLDモジュール2の空き容量が所定値以下となるか否かを判定する。所定値以下となるとき(YESのとき)にはステップS9に移行し、所定値以下とならないとき(NOのとき)にはステップS10に移行する。
【0075】
ステップS9では、PLDモジュール2側に割り振った各処理機能の内、F/S処理機能以外の処理機能を抽出する。特に、フィルタ処理機能を抽出する。また、フィルタ処理機能の内でも次数の高いフィルタ処理機能を優先して抽出する。そして、その抽出したフィルタ処理をMPUモジュール3側に割り振り直す。割り振り直した結果、PLDモジュール2の空き容量が未だ所定値以下であるときには、PLDモジュール2の空き容量が所定値よりも大きくなるまで、次数の高い順にフィルタ処理機能を抽出して、それをMPUモジュール3側に順次割り振り直す。こうして、PLDモジュール2の空き容量が所定値以上となれば、ステップS12に移行する。尚、MPUモジュール3側に割り振り直す処理機能はフィルタ処理機能には限る必要はないが、少なくともF/S処理機能をMPUモジュール3側に割り振ることは抑制する。
【0076】
一方、ステップS10では、上記ステップS7で演算したプログラムサイズとステップS2で入力されたMPUモジュール3の容量とに基づいて、ステップS7で抽出した各処理機能をMPUモジュール3側に割り振ったときに、そのMPUモジュール3の空き容量が所定値以下となるか否かを判定する。所定値以下となるとき(YESのとき)にはステップS11に移行し、所定値以下とならないとき(NOのとき)にはステップS12に移行する。
【0077】
ステップS11では、MPUモジュール3側に割り振った各処理機能の内、浮動小数点処理機能を抽出して、それをPLDモジュール2側に割り振り直す。割り振り直した結果、MPUモジュール3の空き容量が所定値以下となるときには、MPUモジュール3の空き容量が所定値よりも大きくなるまで、このMPUモジュール3に割り振られた他の処理機能を抽出する。但しこのとき、マップ処理機能は抽出しない。そして、抽出した処理機能をPLDモジュール2側に割り振り直し、それによってMPUモジュール3の空き容量が所定値以上となれば、ステップS12に移行する。従って、ステップS5〜ステップS11が割り振り手段83に対応する。
【0078】
上記ステップS12では、PLDモジュール2側に割り振られた各処理機能を実行するためのソースコードプログラムをHDLに変換し、MPUモジュール3側に割り振られた各処理機能を実行するためのソースコードプログラムを機械語に変換する(プログラム作成手段84)。ソースコードプログラムからHDLへの変換処理は、特許文献1の記載に準じて行えばよく、その詳細は特許文献1を参照するとして、ここではその説明を省略する。
【0079】
尚、上記ステップS8〜ステップS11の割り振り処理において、PLDモジュール2の空き容量及びMPUモジュール3の空き容量が共に所定値よりも大きくならないときには、PLDモジュール2及び/又はMPUモジュール3をさらに大容量のものに取り替える。そして、ステップS2に戻って新たなMPUモジュール3の容量及びPLDモジュール2の容量を再入力した上で、その後の各ステップを繰り返せばよい。
【0080】
このように、本実施形態では、制御ボード1に実行させるための制御設計CAD図を作成すれば、プログラム作成支援装置Aによって、上記制御設計CAD図に含まれる複数の処理機能が、MPUモジュール3に実行させる処理機能と、PLDモジュール2に実行させる処理機能とに割り振られる。具体的には、制御設計CAD図に含まれる、少なくともフィルタ処理機能、パルス処理機能、I/Oデバイス関連処理機能、フェイルセーフ処理機能、設計上の変更頻度が小さい処理機能、及び実行頻度が大きい処理機能がPLDモジュールに割り振られ、少なくとも浮動小数点演算処理機能、及びマップ処理機能がMPUモジュールに割り振られる。このように、作業者が制御設計CAD図に含まれる処理機能の割り振りを行わなくても、複数の処理機能がMPUモジュール側とPLDモジュール側とに自動的に割り振られるため、ソフトウエアの専門的知識に乏しい作業者が制御設計CAD図を作成しても、その制御設計CAD図に含まれる各処理機能を適切に割り振ることができる。
【0081】
また、プログラム作成支援装置Aは、各処理機能を割り振る際には、MPUモジュール3の空き容量とPLDモジュール2の空き容量とがそれぞれ所定値以下にならないように、各処理機能を割り振る。具体的には、PLDモジュール2での実行に適した上記の処理機能をPLDモジュール2に割り振ったときの、そのPLDモジュール2の空き容量を演算し、PLDモジュール2の空き容量が所定値以下となるときには、PLDモジュール2側に割り振った処理機能の一部をMPUモジュール3側に割り振り直す。
【0082】
このとき、PLDモジュール2での実行に適した処理機能の内でも、MPUモジュール3での実行に比較的適した、フィルタ処理機能をMPUモジュール3側に割り振る。また、フィルタ処理機能の内でも、次数の高いフィルタ処理機能から順にMPUモジュール3側の割り振る。一方で、信頼性の観点から、F/S処理機能のMPUモジュール3への割り振りは抑制する。
【0083】
逆に、MPUモジュール3での実行に適した上記の処理機能をMPUモジュール3に割り振ったときの、そのMPUモジュール3の空き容量を演算し、MPUモジュール3の空き容量が所定値以下となるときには、MPUモジュール3側に割り振った処理機能の一部をPLDモジュール2側に割り振り直す。
【0084】
このとき、MPUモジュール3での実行に適した処理機能の内でも、浮動小数点演算処理機能をPLDモジュール2側に割り振る。これにより、MPUモジュール3の空き容量を効果的に増やすことができる。また、マップ処理機能のPLDモジュール2への割り振りは抑制する。このようにマップ処理機能はMPUモジュール3に割り振ることで、マップを設計(開発)途中にで容易に変更させることが可能になり、開発業務の効率を向上させることができる。
【0085】
このようにして制御設計CAD図に含まれる各処理機能をMPUモジュール3側とPLDモジュール2側とに適切に割り振りつつも、PLDモジュール2及びMPUモジュール3の空き容量を所定値よりも大きくすることができ、例えば作成した制御用プログラムを実機にて検証・調整する工程において、各処理機能の変更や処理機能の追加の必要が明らかになり、制御設計CAD図を変更する場合、言い換えると、PLDモジュール2及び/又はMPUモジュール3に書き込まれるプログラムのサイズが変更される場合でも、その変更に対応可能になる。その結果、開発業務の効率化を高めることができる。
【図面の簡単な説明】
【図1】本発明の実施形態におけるプログラム作成支援装置Aによるプログラムの作成及び検証作業の流れを説明する図である。
【図2】制御設計CAD図の一例を示す図である。
【図3】制御設計CAD図の階層構造を説明する図である。
【図4】下位層の制御設計CAD図の一例を示す図である。
【図5】さらに下位層の制御設計CAD図の一例を示す図である。
【図6】図5とは異なる下位層の制御設計CAD図の一例を示す図である。
【図7】プログラム作成支援装置Aのブロック構成図である。
【図8】プログラム作成支援の処理を示すフローチャートである。
【符号の説明】
1 制御ボード(制御ユニット)
2 PLDモジュール
3 MPUモジュール
81 容量入力手段
82 設計図入力手段
83 割り振り手段
84 プログラム作成手段
A 作成支援装置
【発明の属する技術分野】
本発明は、MPUモジュールと、PLDモジュールとを含む制御ユニットに実行させるプログラムの作成を支援するための制御用プログラムの作成支援プログラム、作成支援方法及び作成支援装置に関し、例えば自動車等のエンジンの燃焼制御系の制御用プログラムの作成業務に適用して好適な制御用プログラムの作成支援プログラム、作成支援方法及び作成支援装置に関する。
【0002】
【従来の技術】
従来より、コンピュータで実行するソフトウエアの開発業務の効率化を図るべく、表示画面上でオペレータによって定義された所定のシンボルや矢線に応じて、予め記憶しているプログラムライブラリの中から必要となるプログラムを自動的に選択すると共に、その選択したプログラムを、当該定義された所定のシンボルや矢線の情報に従って関連付けすることが可能な制御用プログラムの作成支援装置等が使用されている。
【0003】
また、上記のようなプログラム作成支援装置で作成したプログラムと、そのプログラムが搭載される実機の諸動作がモデル化されたプログラムとをコンピュータ上で実行することにより、その実機による検証及びチューニングに先立ってシミュレーションすることが可能なシミュレーションソフトウエアも使用されている。
【0004】
また、近年においては、EDA(Electronic Design Automation)化が進んでおり、上記の如く所定のシンボル等を用いて表示画面上で作成した制御設計CAD図の情報に従って、C言語等の高級言語プログラムにより、その制御設計CAD図の全体動作を制御するMPU(Micro Processing Unit)のプログラムと、その制御設計CAD図において実行させるべき論理回路をプログラム可能なCPLD(Complex Programmable Logic Device)やFPGA (Field Programmable Gate Array)等のPLD (Programmable Logic Device)のプログラムとを自動的に作成可能なプログラム作成支援装置が普及しつつある。
【0005】
例えば特許文献1には、制御用プログラムの作成支援装置であって、作成された制御設計CAD図の情報に従って、高級言語プログラムを一般的なコンパイラによって機械語に変換したMPUの実行形式プログラムと、HDL(Hardware Description Language)に変換したPLDの実行形式プログラムとを自動的に作成可能な作成支援装置が提案されている。
【0006】
【特許文献1】
特開2000−311007号公報
【0007】
【発明が解決しようとする課題】
ところが、上記特許文献1に記載の制御用プログラムの作成支援装置では、制御設計CAD図に含まれる各処理機能をMPUモジュールによって実現するか、PLDモジュールによって実現するかは、その制御設計CAD図を作成する際に作業者が宣言するようにしている。例えばPLDモジュールは、フィルタ処理機能やI/Oデバイス関連処理機能等の、いわゆる入力信号に対する流れるような処理が得意であり、これらの処理機能はPLDモジュール側に割り振るのが好ましい。一方、MPUモジュールは、浮動小数点演算処理機能等が得意であり、これらの処理機能はMPUモジュール側に割り振るのが好ましい。また、入力信号に対してマップを参照して出力するマップ処理機能におけるマップは、ソフトウエアの開発途中に修正・変更を行うことが多々あるため、マップ処理機能はMPUモジュールに割り振った方がマップの修正・変更が容易であるため好ましい。このように、制御設計CAD図に含まれる各処理機能を割り振るには、これらの事情を考慮して割り振らなければならず、割り振りを行う作業者には専門的知識が必要となる。
【0008】
しかしながら、制御設計CAD図を作成する機械技術者が、こうした専門的知識に乏しい場合もあり、EDAの手法を導入したものの業務の効率化が十分に高まらないことも予想される。
【0009】
本発明は、このような事情に鑑みてなされたものであり、その目的とするところは、MPUモジュールとPLDモジュールとを含む制御ユニットに実行させる実行形式プログラムを作成する際に、効率的にプログラム作成が可能になる制御用プログラムの作成支援プログラム、作成支援方法及び作成支援装置を提供することにある。
【0010】
【課題を解決するための手段】
本発明による制御用プログラムの作成支援プログラムは、MPUモジュールと、PLDモジュールとを含む制御ユニットに実行させる実行形式プログラムの作成支援を行う作成支援装置を制御するための作成支援プログラムである。
【0011】
そして、上記作成支援プログラムは、上記作成支援装置に、上記MPUモジュールの容量とPLDモジュールの容量とのそれぞれをユーザに入力させる容量入力処理と、上記制御ユニットに実行させる複数の処理機能を、所定のシンボルを用いた制御設計図として上記ユーザに入力させる設計図入力処理と、上記容量入力処理によってユーザに入力させた容量に基づいて、上記MPUモジュールの空き容量とPLDモジュールの空き容量とがそれぞれ所定値以下にならないように、上記設計図入力処理によってユーザに入力させた制御設計図に含まれる複数の処理機能を、上記MPUモジュールに実行させる処理機能と、PLDモジュールに実行させる処理機能とに割り振る割り振り処理と、上記割り振り処理によって上記MPUモジュールに割り振った各処理機能を該MPUモジュールに実行させるための実行形式プログラムと、上記PLDモジュールに割り振った各処理機能を該PLDモジュールに実行させるための実行形式プログラムとをそれぞれ作成するプログラム作成処理と、を実行させるものとする。
【0012】
この構成によると、容量入力処理では、制御ユニットに含まれるMPUモジュールとPLDモジュールとのそれぞれの容量を作業者(ユーザ)に入力させる。また、設計図入力処理では、上記制御ユニットに実行させる複数の処理機能を、所定のシンボルを用いた制御設計(CAD)図として作業者(ユーザ)に入力させる。
【0013】
そして、割り振り処理では、上記設計図入力処理によって入力させた制御設計図に含まれる複数の処理機能を、上記MPUモジュールに実行させる処理機能と、PLDモジュールに実行させる処理機能とに割り振る。このように、作業者が処理機能の割り振りを行わなくても、制御設計図に含まれる複数の処理機能が、割り振り処理によってMPUモジュール側とPLDモジュール側とに自動的に割り振られる。このため、MPUモジュール及びPLDモジュールの特性等の、ソフトウエアに関する専門的知識に乏しい作業者が制御設計図を入力しても、その制御設計図に含まれる各処理機能を適切に割り振ることが可能になる。
【0014】
また、上記割り振り処理では、上記容量入力処理によって入力させたMPUモジュール及びPLDモジュールの各容量に基づいて、上記MPUモジュールの空き容量とPLDモジュールの空き容量とがそれぞれ所定値以下にならないように、各処理機能が割り振られる。これにより、例えば作成した制御用プログラムを実機にて検証・調整する工程において処理機能の変更や処理機能の追加の必要が明らかになった場合でも、MPUモジュール及びPLDモジュールの各容量にはそれぞれ空きがあるため、制御設計図の変更に対応可能となる。このように、MPUモジュール及びPLDモジュールのそれぞれについて、所定値よりも大きい空き容量を確保することにより、開発業務の効率化が高まる。
【0015】
そして、各処理機能が割り振られれば、プログラム作成処理によって、MPUモジュールに割り振られた各処理機能を該MPUモジュールに実行させる実行形式プログラムと、PLDモジュールに割り振られた各処理機能を該PLDモジュールに実行させる実行形式プログラムとがそれぞれ作成される。
【0016】
こうして作成されたMPUモジュールの実行形式プログラムは、そのMPUモジュールに書き込まれ、PLDモジュールの実行形式プログラムは、そのPLDモジュールに書き込まれて制御ユニットが完成する。つまり、上記作成支援プログラムは、上記作成支援装置に対して、プログラム作成処理によって作成したMPUモジュールの実行形式プログラムを該MPUモジュールに書き込むと共に、PLDモジュールの実行形式プログラムを該PLDモジュールに書き込む書き込み処理をさらに実行させればよい。
【0017】
ここで、上記割り振り処理は、制御設計図に含まれる、少なくともフィルタ処理機能、パルス処理機能、I/Oデバイス関連処理機能、フェイルセーフ処理機能、設計上の変更頻度が小さい処理機能、及び実行頻度が大きい処理機能をPLDモジュールに割り振る処理とすればよい。
【0018】
すなわち、ここで挙げた各処理機能の内、フィルタ処理機能、パルス処理機能及びI/Oデバイス関連処理機能は、入力信号に対する流れるような処理を行うためPLDモジュールでの実行に適した処理機能に該当する。また、実行頻度が大きい処理機能やフェイルセーフ処理機能は、処理をハード的に行うPLDモジュールで実現することにより、信頼性が向上する。さらに、PLDモジュールはMPUモジュールに比べて、一旦作成したプログラムの変更が困難であるため、設計上(開発上)の変更頻度が大きい処理機能はPLDモジュールで実現するのは不適切である。逆に、設計上の変更頻度が小さい処理機能はPLDモジュールで実現するのが好ましい。尚、実行頻度が大きい処理機能や、設計上の変更頻度が小さい処理機能は、予めその候補を設定しておけばよい。そして、その設定した処理機能が制御設計図に含まれるときに、その処理機能をPLDモジュール側に割り振ればよい。
【0019】
こうして割り振り処理では、これらPLDモジュールにより実現するのに適した処理機能をPLDモジュールに割り振る。その結果、制御用プログラムの最適化が図られる。
【0020】
また、上記割り振り処理は、制御設計図に含まれる、少なくとも浮動小数点演算処理機能、及びマップ処理機能をMPUモジュールに割り振る処理とすればよい。
【0021】
上記とは逆に、ここで挙げた各処理機能の内、浮動小数点演算処理機能は、MPUモジュールでの実行に適した処理機能である。また、マップ処理機能は設計上の変更頻度が大きい処理機能に該当し、上述したように、設計上の変更頻度が大きい処理機能をPLDモジュールで実現することは開発業務の効率が悪くなる。そこで、マップ処理機能はMPUモジュールで実現することが好ましい。
【0022】
こうして割り振り処理では、これらMPUモジュールにより実現するのに適した処理機能をMPUモジュールに割り振る。その結果、制御用プログラムの最適化が図られる。
【0023】
上記割り振り処理は、各処理機能をPLDモジュールに割り振ったときの該PLDモジュールの空き容量を演算すると共に、その空き容量が所定値以下になるときには、上記PLDモジュールに割り振ったフィルタ処理をMPUモジュールに割り振り直す処理とするのがよい。
【0024】
上述したように、開発業務の効率化の観点からは、PLDモジュールの空き容量を所定値よりも大きくするのが好ましい。一方で、PLDモジュールでの実現に適した各処理機能(フィルタ処理機能、パルス処理機能、I/Oデバイス関連処理機能、フェイルセーフ処理機能、設計上の変更頻度が小さい処理機能、及び実行頻度が大きい処理機能)を全てPLDモジュールに割り振ると、PLDモジュールの空き容量が所定値以下となる場合も起こり得る。
【0025】
そこで、割り振り処理では、上記の各処理機能をPLDモジュールに割り振ったときの該PLDモジュールの空き容量を演算する。そして、上記PLDモジュールの空き容量が所定値以下になるときには、上記の各処理機能の内でも比較的MPUモジュールでの実現に適した処理機能、つまりフィルタ処理機能をMPUモジュールに割り振り直す。こうして、制御設計図に含まれる各処理機能をMPUモジュール側とPLDモジュール側とに適切に割り振りつつも、所定値よりも大きいPLDモジュールの空き容量が確保される。
【0026】
ここで、MPUモジュールの特性上、フィルタ処理機能の内でも、高次のフィルタ処理をMPUモジュール側に割り振ることが好ましい。
【0027】
また、PLDモジュールの空き容量を所定値よりも大きくするには、複数の処理機能をMPUモジュール側に割り振り直さなければならない場合もある。この場合は、制御設計図に含まれる各フィルタ処理機能に、次数の高い順に優先順位を付し、その優先順位に従って次数の高いフィルタ処理から順にMPUモジュールに順次割り振り、それによって、PLDモジュールの空き容量を所定値よりも大きくするのが好ましい。
【0028】
また、上記割り振り処理は、各処理機能をPLDモジュールに割り振ったときの該PLDモジュールの空き容量を演算すると共に、その空き容量が所定値以下になるときには、上記PLDモジュールに割り振ったいずれかの処理機能をMPUモジュールに割り振り直す一方で、フェイルセーフ処理機能のMPUモジュールへの割り振りを抑制する処理とするのが好ましい。
【0029】
上述したように、PLDモジュールでの実現に適した処理機能の内、フェイルセーフ処理機能はPLDモジュールで実現することがその信頼性の観点から特に好ましい。このため、PLDモジュールでの実現に適した各処理機能をPLDモジュールに割り振ったときにそのPLDモジュールの空き容量が所定値以下となるときには、いずれかの処理機能をMPUモジュールに割り振ってPLDモジュールの空き容量を所定値よりも大きくする一方で、フェイルセーフ処理機能はPUモジュールに割り振ることを抑制する。つまり、フェイルセーフ処理機能は、PLDモジュール側に割り振る。これにより、制御設計図に含まれる各処理機能をMPUモジュール側とPLDモジュール側とに適切に割り振りつつも、所定値よりも大きいPLDモジュールの空き容量が確保される。
【0030】
さらに、上記割り振り処理は、各処理機能をMPUモジュールに割り振ったときの該MPUモジュールの空き容量を演算すると共に、その空き容量が所定値以下になるときには、上記MPUモジュールに割り振った浮動小数点演算処理機能をPLDモジュールに割り振り直す処理であるとするのが好ましい。
【0031】
上述したように、開発業務の効率化の観点からは、MPUモジュールの空き容量も、PLDモジュールと同様に所定値よりも大きくするのが好ましい。一方で、MPUモジュールでの実現に適した各処理機能(浮動小数点演算処理機能、及びマップ処理機能)をMPUモジュールに割り振ると、MPUモジュールの空き容量が所定値以下となる場合も起こり得る。
【0032】
そこで、割り振り処理では、上記の各処理機能をMPUモジュールに割り振ったときの該MPUモジュールの空き容量を演算し、その空き容量が所定値以下になるときには、浮動小数点演算処理機能をMPUモジュールに割り振り直す。浮動小数点演算処理機能はプログラムサイズが比較的大きいため、この浮動小数点演算処理機能をPLDモジュール側に割り振り直すことで、MPUモジュールの空き容量を効果的に大きくすることが可能になる。こうして、制御設計図に含まれる各処理機能をMPUモジュール側とPLDモジュール側とに適切に割り振りつつも、所定値よりも大きいPLDモジュールの空き容量が確保される。
【0033】
加えて、上記割り振り処理は、各処理機能をMPUモジュールに割り振ったときの該MPUモジュールの空き容量を演算すると共に、その空き容量が所定値以下になるときには、上記MPUモジュールに割り振ったいずれかの処理機能をPLDモジュールに割り振り直す一方で、マップ処理機能のPLDモジュールへの割り振りを抑制する処理とするのが好ましい。
【0034】
上述したように、MPUモジュールでの実現に適した処理機能の内、マップ処理機能は設計上の変更頻度が大きい処理機能であり、このマップ処理機能はMPUモジュールに割り振ることで開発業務の効率が高まる。このため、MPUモジュールでの実現に適した各処理機能をMPUモジュールに割り振ったときにそのMPUモジュールの空き容量が所定値以下となるときには、いずれかの処理機能をPLDモジュールに割り振ってMPUモジュールの空き容量を所定値よりも大きくする一方で、マップ処理機能はPLDモジュールに割り振ることを抑制する。こうしてマップ処理機能以外の処理機能をPLDモジュールに割り振ることで、制御設計図に含まれる各処理機能をMPUモジュール側とPLDモジュール側とに適切に割り振りつつも、所定値よりも大きいMPUモジュールの空き容量が確保され、さらに、開発業務の効率を低下させることがなくなる。
【0035】
本発明による制御用プログラムの作成支援方法は、MPUモジュールと、PLDモジュールとを含む制御ユニットに実行させる実行形式プログラムの作成支援を行う作成支援方法である。
【0036】
そして、上記作成支援方法は、上記MPUモジュールの容量とPLDモジュールの容量とのそれぞれをユーザに入力させる容量入力ステップと、上記制御ユニットに実行させる複数の処理機能を、所定のシンボルを用いた制御設計図として上記ユーザに入力させる設計図入力ステップと、上記容量入力ステップでユーザに入力させた容量に基づいて、上記MPUモジュールの空き容量とPLDモジュールの空き容量とがそれぞれ所定値以下にならないように、上記設計図入力ステップでユーザに入力させた制御設計図に含まれる複数の処理機能を、上記MPUモジュールに実行させる処理機能と、PLDモジュールに実行させる処理機能とに割り振る割り振りステップと、上記割り振りステップで上記MPUモジュールに割り振った各処理機能を該MPUモジュールに実行させるための実行形式プログラムと、上記PLDモジュールに割り振った各処理機能を該PLDモジュールに実行させるための実行形式プログラムとをそれぞれ作成するプログラム作成ステップと、を含む。
【0037】
この構成によると、上記制御用プログラムの作成支援プログラムと同様の作用効果が得られる。
【0038】
本発明による制御用プログラムの作成支援装置は、MPUモジュールと、PLDモジュールとを含む制御ユニットに実行させる実行形式プログラムの作成支援を行う作成支援装置である。
【0039】
そして、上記作成支援装置は、上記MPUモジュールの容量とPLDモジュールの容量とのそれぞれをユーザに入力させる容量入力手段と、上記制御ユニットに実行させる複数の処理機能を、所定のシンボルを用いた制御設計図として上記ユーザに入力させる設計図入力手段と、上記容量入力手段によってユーザに入力させた容量に基づいて、上記MPUモジュールの空き容量とPLDモジュールの空き容量とがそれぞれ所定値以下にならないように、上記設計図入力手段によってユーザに入力させた制御設計図に含まれる複数の処理機能を、上記MPUモジュールに実行させる処理機能と、PLDモジュールに実行させる処理機能とに割り振る割り振り手段と、上記割り振り手段によって上記MPUモジュールに割り振られた各処理機能を該MPUモジュールに実行させるための実行形式プログラムと、上記PLDモジュールに割り振られた各処理機能を該PLDモジュールに実行させるための実行形式プログラムとをそれぞれ作成するプログラム作成手段と、を備える。
【0040】
この構成によると、上記制御用プログラムの作成支援プログラムと同様の作用効果が得られる。
【0041】
【発明の効果】
以上説明したように、本発明による制御用プログラムの作成支援プログラム、作成支援方法及び作成支援装置によれば、入力された制御設計図に含まれる複数の処理機能が、MPUモジュールに実行させる処理機能と、PLDモジュールに実行させる処理機能とに割り振られかつ、MPUモジュールに実行させる実行形式プログラムと、PLDモジュールに実行させる実行形式プログラムとがそれぞれ作成される。このように、制御設計図に含まれる複数の処理機能がMPUモジュール側とPLDモジュール側とに自動的に割り振られるため、各処理機能を適切に割り振ることができる。その結果、プログラム作成の効率化を図ることができる。
【0042】
また、上記の各処理機能は、MPUモジュールの空き容量とPLDモジュールの空き容量とがそれぞれ所定値以下にならないように割り振られるため、制御設計図を一旦作成した後でも、その制御設計図を容易に変更することができ、開発業務の効率化を高めることができる。
【0043】
【発明の実施の形態】
以下、本発明の実施形態を図面に基いて説明する。
【0044】
図1は、本発明の一実施形態におけるプログラム作成支援装置Aによるプログラムの作成及び検証作業の流れを説明する図である。
【0045】
同図に示す破線より上側は、本実施形態に係るプログラム作成支援装置Aの内部における処理を示しており、当該破線の下側は、チューニング対象の制御ボード(制御ユニット)1、その制御ボード1に搭載されるPLDモジュール2及びMPUモジュール3を示す。ここで、当該プログラム作成支援装置Aを使用したプログラムの作成及び検証作業の手順について概説する。
【0046】
(1)まず、作業者は、当該プログラム作成支援装置Aの表示画面上で、制御ボード1で実現すべき制御動作を、制御設計CAD図として入力する。次に、制御ボード1やその制御ボード1によって実際に制御する装置(例えばエンジン等)の特性モデルを予め入力した一般的なシミュレーションモジュールを使用して、当該制御設計CAD図が所望する制御動作を実行可能な否かを仮想的に検証する。
【0047】
(2)この検証作業が完了したときには、当該プログラム作成支援装置Aにより、当該制御設計CAD図を、予め記憶している高級言語(例えば、C言語)コード生成用のプログラムライブラリを使用して、MPU用のプログラムコードと、PLD用のプログラムコードとに自動的に変換する。このとき、上記制御設計CAD図に含まれる各処理機能は、当該プログラム作成支援装置Aにより、MPUモジュールに実行させる処理機能と、PLDモジュールに実行させる処理機能とに自動的に割り振られる(詳細については後述する)。更に、それら変換されたC言語等の高級言語のコードは、当該プログラム作成支援装置Aにより、MPU用のプログラムコードはコンパイラによって機械語に自動的に変換され、PLD用のプログラムコードはHDLに自動的に変換される。尚、高級言語コードの機械語へのコンパイル自体は一般的なため、詳細な説明は省略する。また、ここでは、C言語等の高級言語のコードに変換したPLD用のプログラムコードをHDLに変換しているが、PLD用のプログラムは、制御設計CAD図から(C言語等の高級言語のコードに変換せずに)HDLに直接変換するようにしてもよい。
【0048】
(3)次に、作業者は、生成された機械語をMPUモジュール3のROM等に書き込むと共に、生成されたHDLをPLDモジュール2に搭載される各PLDに書き込む。この書き込み作業自体は一般的なため、詳細な説明は省略する。
【0049】
(4)次に、作業者は、プログラムの書き込みが完了した制御ボード1を使用して、実際に制御する装置(或いは、当該装置のエミュレータであってもよい)を動作させる検証作業を行う。この検証作業において不具合が発見された場合には、工程(1)で入力した制御設計CAD図の変更を行うと共に、その変更した制御設計CAD図を対象として、工程(2)以降の手順を改めて行えば良い。
【0050】
図2は、本発明の一実施形態におけるプログラム作成支援装置Aの表示画面に入力された制御設計CAD図の一例を示す図である。作業者は、ブロックや矢線等により所望する制御動作を入力して制御設計CAD図を作成する。このとき、作業者は、制御設計CAD図に対して、当該制御設計CAD図全体で表わす制御機能の基本制御周期、入力した個々のブロックの名称やそれらブロック毎の制御周期、並びに入出力ポートの定義や各種パラメータ等も設定する。
【0051】
ここで、図2に示す制御設計CAD図について簡単に説明する。この制御設計CAD図には、a1〜a5の信号が入力されてb1,b2の信号を出力するブロック41と、b1信号が入力されてa1〜a3信号を出力するブロック42と、b2信号及びc1〜c3信号が入力されてa5信号を出力するブロック43と、a4信号を出力するブロック44との、4つのブロックが含まれている。上記ブロック41には割り込み要求信号が入力され、上記各ブロック42〜44には、そのブロックの制御周期の信号が入力される。
【0052】
例えば図2に示す制御設計CAD図が、ディーゼルエンジンの燃焼制御系及び吸気制御系の制御プログラムに係る場合、上記ブロック41は、コモンレールタイプの燃料噴射及び吸気量制御を行う制御本体ブロック41に相当し、ブロック42は、水温や吸気温等の応答の遅いセンサ検出値用のセンサ検出ブロック42に相当し、ブロック43は、例えばクランク角(気筒番号b2)、コモンレール圧c1、エアフロー流量c2及びインテークマニホールド圧c3等の応答の早いセンサ検出値用のセンサ検出ブロック43に相当し、ブロック44は、制御係数a4をまとめて制御本体ブロック41に入力するキャリブレーション用ブロック44に相当する。
【0053】
制御設計CAD図は、例えば図3に示すような階層構造に構成することが可能である。例えば図2に示す制御設計CAD図が最上位層の制御設計CAD図である場合には、その最上位層の制御設計CAD図に含まれる各トップブロックを構成する下位層の制御設計CAD図が存在する。この下位層の制御設計CAD図には複数のサブブロックが含まれる。作業者は、下位層の制御設計CAD図に含まれる各サブブロックについても制御動作等を設定する必要がある。また、所望する複数のサブブロックをまとめた1つのブロックを、1階層上位の1つのブロックとしてまとめることができる。
【0054】
図4は、下位層の制御設計CAD図の一例として、図2に示す制御設計CAD図に含まれるブロック43を構成する下位層の制御設計CAD図を示している。
【0055】
この制御設計CAD図には、b2信号が入力されてd1信号を出力する第1ブロック51と、d1信号が入力されてf1信号を出力する第2ブロック52と、入力信号(c1〜c3)に対して所定値を乗算する乗算ブロック56と、入力信号に対してテーブルを参照して信号(e1〜e3)を出力するテーブルブロック57と、上記d1信号及びe1〜e3信号(Sample In)が入力されてそのSample In信号の積分値を出力(Integrated Signal)する第3〜第5ブロック53〜55とが含まれる。
【0056】
図4に示す制御設計CAD図が、ディーゼルエンジンの燃焼制御系及び吸気制御系の制御プログラムに係る場合、b2信号は気筒番号に相当し、第1ブロック51は、クランク角180°タイミングを出力(d1)するブロックに相当する。第2ブロックは、クランク角180°の時間(f1)を計測するブロックに相当する。
【0057】
また、各乗算ブロック56は、コモンレール圧力c1、エアフロー流量c2及びインテークマニホールド圧c3のセンサ信号値が入力されてA/D値の電圧変換を行うブロックに相当し、テーブルブロック57は、その各電圧値を物理量に変換するブロックに相当する。また、第3〜第5ブロックは、クランク角180°間の各センサ信号値(Sample In)の積分を行い、それを出力(Integrated Signal)するブロックに相当する。
【0058】
図5は、下位層の制御設計CAD図の一例として、図3に示す制御設計CAD図に含まれる第1ブロック51を構成する下位層の制御設計CAD図を示している。
【0059】
この制御設計CAD図には、b2信号が入力されてそのb2信号の前回値を出力するユニットディレイブロック61と、入力されたb2信号とその前回値との比較を行い、その比較に応じてd1信号を出力するリレーショナルオペレータブロック62とが含まれる。
【0060】
図5に示す制御設計CAD図が、ディーゼルエンジンの燃焼制御系及び吸気制御系の制御プログラムに係る場合、b2信号は気筒番号に相当し、リレーショナルオペレータブロック62は、入力された気筒番号(b2)が前回と同じであればd1信号として「1」を出力し、入力された気筒番号(b2)が前回と異なればd1信号として「0」を出力する。従って、第1ブロック51は、気筒番号が異なる毎に「0」を出力するブロックであるため、4気筒エンジンにおいてクランク角180°タイミングを出力するブロックに相当する。
【0061】
また、図6は、下位層の制御設計CAD図の別の例として、図3に示す制御設計CAD図に含まれる第3〜第5ブロック53〜55を構成する下位層の制御設計CAD図を示している。
【0062】
この制御設計CAD図には、2つの入力値の内積を演算してそれを出力するドットプロダクトブロック71と、ユニットディレイブロック72と、2つの入力値の和を演算してそれを出力するブロック73とが含まれている。
【0063】
図6に示す制御設計CAD図が、ディーゼルエンジンの燃焼制御系及び吸気制御系の制御プログラムに係る場合、Sample In信号はセンサ信号値に相当し、d1はクランク角180°タイミング信号に相当する。ドットプロダクトブロック71は、ユニットディレイブロック72から出力された前回の積分値とd1信号(「0」又は「1」)との内積を演算し、ブロック73は、この内積とセンサ信号値とを足し合わせる(前回の積分値+センサ信号値)。従って、第3〜第5ブロック53〜55はそれぞれ、クランク角180°間のセンサ信号値の積分を出力するブロックに相当する。
【0064】
次に、プログラム作成支援装置Aのハードウエアについて、図7を参照しながら説明する。このプログラム作成支援装置Aは、例えば一般的なコンピュータを採用可能である。
【0065】
図中、22は、CRT等のディスプレイ、23は入力手段であるキーボードである。24は、ブートプログラム等を記憶しているROMである。25は、各種処理結果を一時記憶するRAMである。26は、一般的なシミュレーション処理や、後述するプログラム作成処理を実現するプログラム等を記憶するハードディスクドライブ(HDD)等の記憶装置である。27は、外部の装置と通信回線30を介して通信するための通信インタフェースである。そして28は、作成した機械語をMPUモジュールのROM等への書き込みと、PLDモジュールを構成する個々のPLDへのHDLの書き込みを行う一般的な書き込みユニットである。これらの各構成は、内部バス29を介して接続されており、CPU21は記憶装置26に記憶したプログラムに従って当該プログラム作成支援装置Aの全体を制御する。
【0066】
次に、図8に示すフローチャートを参照しながら、上記プログラム作成支援装置Aによるプログラム作成支援の手順について説明する。
【0067】
先ずステップS1では、各種のデータ入力を行い、ステップS2では、MPU情報及びPLD情報を入力させる(容量入力手段81)。これは、具体的には、MPUモジュール3の容量及びPLDモジュール2の容量を作業者に入力させる。
【0068】
続くステップS3では、作業者に制御設計CAD図を作成させる(設計図入力手段82)。これにより、例えば図2及び図4〜図6に示す制御設計CAD図が作成される。
【0069】
ステップS4では、作業者から、上記ステップS3で作成した制御設計CAD図について実行形式プログラムの作成指示がされたか否かを判定し、指示がされていないのNOのときには上記ステップS1〜ステップS3を繰り返す。一方、指示がされたのYESのときにはステップS5に移行する。
【0070】
上記ステップS5では、作成された制御設計CAD図の内容を分析する。これは、制御設計CAD図をC言語のソースコードプログラムに変換した後に分析を行う。制御設計CAD図からソースコードプログラムへの変換処理は、一般的であるため、その詳細な説明は省略する。尚、制御設計CAD図の内容分析は、ソースコードプログラムに変換する前に行ってもよい。
【0071】
そして、ステップS6で、その制御設計CAD図に含まれる処理機能の内、フィルタ処理機能、パルス処理機能、I/Oデバイス関連処理機能、フェイルセーフ(F/S)処理機能、制御実行頻度の大きい処理、及び変更頻度の小さい処理機能を抽出する。ここで抽出した各処理機能の内、フィルタ処理機能、パルス処理機能及びI/Oデバイス関連処理機能は、PLDモジュール2の特性上、PLDモジュール2での実行に適した処理機能である。また、実行頻度が大きい処理機能やF/S処理機能は、処理をハード的に行うPLDモジュール2で実現することにより、信頼性を向上させることができる。さらに、PLDモジュール2は一旦書き込んだプログラムの変更がMPUモジュール3に比べて困難であるため、設計上(開発上)の変更頻度が大きい処理機能はPLDモジュール2で実現するのは不適切である。このため、設計上の変更頻度が小さい処理機能をPLDモジュール2で実現する。尚、制御実行頻度の大きい処理及び変更頻度の小さい処理機能は予めその候補が設定されており、その情報がプログラム作成支援装置Aの例えば記憶装置26に記憶されている。ステップS5では、記憶装置26に記憶されている情報を参照して、作成された制御設計CAD図に含まれる各処理機能が、制御実行頻度の大きい処理又は変更頻度の小さい処理機能に該当するか否かを判断する。
【0072】
そして、ステップS5では、抽出した各処理機能をPLD用の実行形式プログラム(HDL)にしたときのサイズを演算する。
【0073】
続くステップS7では、制御設計CAD図に含まれる各処理機能であって、上記ステップS6で抽出した以外の処理機能(MPUモジュール3の特性上、MPUモジュール3での実行に適した処理機能である浮動小数点演算処理機能や、設計上の変更頻度の大きい処理機能の一つであるマップ処理機能が含まれる)を、MPU用の実行形式プログラムにしたときのサイズを演算する。
【0074】
そして、ステップS8では、上記ステップS6で演算したプログラムサイズとステップS2で入力されたPLDモジュール2の容量とに基づいて、ステップS6で抽出した各処理機能をPLDモジュール2側に割り振ったときに、そのPLDモジュール2の空き容量が所定値以下となるか否かを判定する。所定値以下となるとき(YESのとき)にはステップS9に移行し、所定値以下とならないとき(NOのとき)にはステップS10に移行する。
【0075】
ステップS9では、PLDモジュール2側に割り振った各処理機能の内、F/S処理機能以外の処理機能を抽出する。特に、フィルタ処理機能を抽出する。また、フィルタ処理機能の内でも次数の高いフィルタ処理機能を優先して抽出する。そして、その抽出したフィルタ処理をMPUモジュール3側に割り振り直す。割り振り直した結果、PLDモジュール2の空き容量が未だ所定値以下であるときには、PLDモジュール2の空き容量が所定値よりも大きくなるまで、次数の高い順にフィルタ処理機能を抽出して、それをMPUモジュール3側に順次割り振り直す。こうして、PLDモジュール2の空き容量が所定値以上となれば、ステップS12に移行する。尚、MPUモジュール3側に割り振り直す処理機能はフィルタ処理機能には限る必要はないが、少なくともF/S処理機能をMPUモジュール3側に割り振ることは抑制する。
【0076】
一方、ステップS10では、上記ステップS7で演算したプログラムサイズとステップS2で入力されたMPUモジュール3の容量とに基づいて、ステップS7で抽出した各処理機能をMPUモジュール3側に割り振ったときに、そのMPUモジュール3の空き容量が所定値以下となるか否かを判定する。所定値以下となるとき(YESのとき)にはステップS11に移行し、所定値以下とならないとき(NOのとき)にはステップS12に移行する。
【0077】
ステップS11では、MPUモジュール3側に割り振った各処理機能の内、浮動小数点処理機能を抽出して、それをPLDモジュール2側に割り振り直す。割り振り直した結果、MPUモジュール3の空き容量が所定値以下となるときには、MPUモジュール3の空き容量が所定値よりも大きくなるまで、このMPUモジュール3に割り振られた他の処理機能を抽出する。但しこのとき、マップ処理機能は抽出しない。そして、抽出した処理機能をPLDモジュール2側に割り振り直し、それによってMPUモジュール3の空き容量が所定値以上となれば、ステップS12に移行する。従って、ステップS5〜ステップS11が割り振り手段83に対応する。
【0078】
上記ステップS12では、PLDモジュール2側に割り振られた各処理機能を実行するためのソースコードプログラムをHDLに変換し、MPUモジュール3側に割り振られた各処理機能を実行するためのソースコードプログラムを機械語に変換する(プログラム作成手段84)。ソースコードプログラムからHDLへの変換処理は、特許文献1の記載に準じて行えばよく、その詳細は特許文献1を参照するとして、ここではその説明を省略する。
【0079】
尚、上記ステップS8〜ステップS11の割り振り処理において、PLDモジュール2の空き容量及びMPUモジュール3の空き容量が共に所定値よりも大きくならないときには、PLDモジュール2及び/又はMPUモジュール3をさらに大容量のものに取り替える。そして、ステップS2に戻って新たなMPUモジュール3の容量及びPLDモジュール2の容量を再入力した上で、その後の各ステップを繰り返せばよい。
【0080】
このように、本実施形態では、制御ボード1に実行させるための制御設計CAD図を作成すれば、プログラム作成支援装置Aによって、上記制御設計CAD図に含まれる複数の処理機能が、MPUモジュール3に実行させる処理機能と、PLDモジュール2に実行させる処理機能とに割り振られる。具体的には、制御設計CAD図に含まれる、少なくともフィルタ処理機能、パルス処理機能、I/Oデバイス関連処理機能、フェイルセーフ処理機能、設計上の変更頻度が小さい処理機能、及び実行頻度が大きい処理機能がPLDモジュールに割り振られ、少なくとも浮動小数点演算処理機能、及びマップ処理機能がMPUモジュールに割り振られる。このように、作業者が制御設計CAD図に含まれる処理機能の割り振りを行わなくても、複数の処理機能がMPUモジュール側とPLDモジュール側とに自動的に割り振られるため、ソフトウエアの専門的知識に乏しい作業者が制御設計CAD図を作成しても、その制御設計CAD図に含まれる各処理機能を適切に割り振ることができる。
【0081】
また、プログラム作成支援装置Aは、各処理機能を割り振る際には、MPUモジュール3の空き容量とPLDモジュール2の空き容量とがそれぞれ所定値以下にならないように、各処理機能を割り振る。具体的には、PLDモジュール2での実行に適した上記の処理機能をPLDモジュール2に割り振ったときの、そのPLDモジュール2の空き容量を演算し、PLDモジュール2の空き容量が所定値以下となるときには、PLDモジュール2側に割り振った処理機能の一部をMPUモジュール3側に割り振り直す。
【0082】
このとき、PLDモジュール2での実行に適した処理機能の内でも、MPUモジュール3での実行に比較的適した、フィルタ処理機能をMPUモジュール3側に割り振る。また、フィルタ処理機能の内でも、次数の高いフィルタ処理機能から順にMPUモジュール3側の割り振る。一方で、信頼性の観点から、F/S処理機能のMPUモジュール3への割り振りは抑制する。
【0083】
逆に、MPUモジュール3での実行に適した上記の処理機能をMPUモジュール3に割り振ったときの、そのMPUモジュール3の空き容量を演算し、MPUモジュール3の空き容量が所定値以下となるときには、MPUモジュール3側に割り振った処理機能の一部をPLDモジュール2側に割り振り直す。
【0084】
このとき、MPUモジュール3での実行に適した処理機能の内でも、浮動小数点演算処理機能をPLDモジュール2側に割り振る。これにより、MPUモジュール3の空き容量を効果的に増やすことができる。また、マップ処理機能のPLDモジュール2への割り振りは抑制する。このようにマップ処理機能はMPUモジュール3に割り振ることで、マップを設計(開発)途中にで容易に変更させることが可能になり、開発業務の効率を向上させることができる。
【0085】
このようにして制御設計CAD図に含まれる各処理機能をMPUモジュール3側とPLDモジュール2側とに適切に割り振りつつも、PLDモジュール2及びMPUモジュール3の空き容量を所定値よりも大きくすることができ、例えば作成した制御用プログラムを実機にて検証・調整する工程において、各処理機能の変更や処理機能の追加の必要が明らかになり、制御設計CAD図を変更する場合、言い換えると、PLDモジュール2及び/又はMPUモジュール3に書き込まれるプログラムのサイズが変更される場合でも、その変更に対応可能になる。その結果、開発業務の効率化を高めることができる。
【図面の簡単な説明】
【図1】本発明の実施形態におけるプログラム作成支援装置Aによるプログラムの作成及び検証作業の流れを説明する図である。
【図2】制御設計CAD図の一例を示す図である。
【図3】制御設計CAD図の階層構造を説明する図である。
【図4】下位層の制御設計CAD図の一例を示す図である。
【図5】さらに下位層の制御設計CAD図の一例を示す図である。
【図6】図5とは異なる下位層の制御設計CAD図の一例を示す図である。
【図7】プログラム作成支援装置Aのブロック構成図である。
【図8】プログラム作成支援の処理を示すフローチャートである。
【符号の説明】
1 制御ボード(制御ユニット)
2 PLDモジュール
3 MPUモジュール
81 容量入力手段
82 設計図入力手段
83 割り振り手段
84 プログラム作成手段
A 作成支援装置
Claims (9)
- MPUモジュールと、PLDモジュールとを含む制御ユニットに実行させる実行形式プログラムの作成支援を行う作成支援装置を制御するための制御用プログラムの作成支援プログラムであって、
上記作成支援装置に、
上記MPUモジュールの容量とPLDモジュールの容量とのそれぞれをユーザに入力させる容量入力処理と、
上記制御ユニットに実行させる複数の処理機能を、所定のシンボルを用いた制御設計図として上記ユーザに入力させる設計図入力処理と、
上記容量入力処理によってユーザに入力させた容量に基づいて、上記MPUモジュールの空き容量とPLDモジュールの空き容量とがそれぞれ所定値以下にならないように、上記設計図入力処理によってユーザに入力させた制御設計図に含まれる複数の処理機能を、上記MPUモジュールに実行させる処理機能と、PLDモジュールに実行させる処理機能とに割り振る割り振り処理と、
上記割り振り処理によって上記MPUモジュールに割り振った各処理機能を該MPUモジュールに実行させるための実行形式プログラムと、上記PLDモジュールに割り振った各処理機能を該PLDモジュールに実行させるための実行形式プログラムとをそれぞれ作成するプログラム作成処理と、
を実行させることを特徴とする制御用プログラムの作成支援プログラム。 - 請求項1において、
割り振り処理は、制御設計図に含まれる、少なくともフィルタ処理機能、パルス処理機能、I/Oデバイス関連処理機能、フェイルセーフ処理機能、設計上の変更頻度が小さい処理機能、及び実行頻度が大きい処理機能をPLDモジュールに割り振る処理である
ことを特徴とする制御用プログラムの作成支援プログラム。 - 請求項1において、
割り振り処理は、制御設計図に含まれる、少なくとも浮動小数点演算処理機能、及びマップ処理機能をMPUモジュールに割り振る処理である
ことを特徴とする制御用プログラムの作成支援プログラム。 - 請求項2において、
割り振り処理は、各処理機能をPLDモジュールに割り振ったときの該PLDモジュールの空き容量を演算すると共に、その空き容量が所定値以下になるときには、上記PLDモジュールに割り振ったフィルタ処理をMPUモジュールに割り振り直す処理である
ことを特徴とする制御用プログラムの作成支援プログラム。 - 請求項2において、
割り振り処理は、各処理機能をPLDモジュールに割り振ったときの該PLDモジュールの空き容量を演算すると共に、その空き容量が所定値以下になるときには、上記PLDモジュールに割り振ったいずれかの処理機能をMPUモジュールに割り振り直す一方で、フェイルセーフ処理機能のMPUモジュールへの割り振りを抑制する処理である
ことを特徴とする制御用プログラムの作成支援プログラム。 - 請求項3において、
割り振り処理は、各処理機能をMPUモジュールに割り振ったときの該MPUモジュールの空き容量を演算すると共に、その空き容量が所定値以下になるときには、上記MPUモジュールに割り振った浮動小数点演算処理機能をPLDモジュールに割り振り直す処理である
ことを特徴とする制御用プログラムの作成支援プログラム。 - 請求項3において、
割り振り処理は、各処理機能をMPUモジュールに割り振ったときの該MPUモジュールの空き容量を演算すると共に、その空き容量が所定値以下になるときには、上記MPUモジュールに割り振ったいずれかの処理機能をPLDモジュールに割り振り直す一方で、マップ処理機能のPLDモジュールへの割り振りを抑制する処理である
ことを特徴とする制御用プログラムの作成支援プログラム。 - MPUモジュールと、PLDモジュールとを含む制御ユニットに実行させる実行形式プログラムの作成支援を行う作成支援方法であって、
上記MPUモジュールの容量とPLDモジュールの容量とのそれぞれをユーザに入力させる容量入力ステップと、
上記制御ユニットに実行させる複数の処理機能を、所定のシンボルを用いた制御設計図として上記ユーザに入力させる設計図入力ステップと、
上記容量入力ステップでユーザに入力させた容量に基づいて、上記MPUモジュールの空き容量とPLDモジュールの空き容量とがそれぞれ所定値以下にならないように、上記設計図入力ステップでユーザに入力させた制御設計図に含まれる複数の処理機能を、上記MPUモジュールに実行させる処理機能と、PLDモジュールに実行させる処理機能とに割り振る割り振りステップと、
上記割り振りステップで上記MPUモジュールに割り振った各処理機能を該MPUモジュールに実行させるための実行形式プログラムと、上記PLDモジュールに割り振った各処理機能を該PLDモジュールに実行させるための実行形式プログラムとをそれぞれ作成するプログラム作成ステップと、
を含むことを特徴とする制御用プログラムの作成支援方法。 - MPUモジュールと、PLDモジュールとを含む制御ユニットに実行させる実行形式プログラムの作成支援を行う作成支援装置であって、
上記MPUモジュールの容量とPLDモジュールの容量とのそれぞれをユーザに入力させる容量入力手段と、
上記制御ユニットに実行させる複数の処理機能を、所定のシンボルを用いた制御設計図として上記ユーザに入力させる設計図入力手段と、
上記容量入力手段によってユーザに入力させた容量に基づいて、上記MPUモジュールの空き容量とPLDモジュールの空き容量とがそれぞれ所定値以下にならないように、上記設計図入力手段によってユーザに入力させた制御設計図に含まれる複数の処理機能を、上記MPUモジュールに実行させる処理機能と、PLDモジュールに実行させる処理機能とに割り振る割り振り手段と、
上記割り振り手段によって上記MPUモジュールに割り振られた各処理機能を該MPUモジュールに実行させるための実行形式プログラムと、上記PLDモジュールに割り振られた各処理機能を該PLDモジュールに実行させるための実行形式プログラムとをそれぞれ作成するプログラム作成手段と、
を備えていることを特徴とする制御用プログラムの作成支援装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002379759A JP2004213183A (ja) | 2002-12-27 | 2002-12-27 | 制御用プログラムの作成支援プログラム、作成支援方法及び作成支援装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002379759A JP2004213183A (ja) | 2002-12-27 | 2002-12-27 | 制御用プログラムの作成支援プログラム、作成支援方法及び作成支援装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004213183A true JP2004213183A (ja) | 2004-07-29 |
Family
ID=32816164
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002379759A Pending JP2004213183A (ja) | 2002-12-27 | 2002-12-27 | 制御用プログラムの作成支援プログラム、作成支援方法及び作成支援装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004213183A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007183726A (ja) * | 2006-01-05 | 2007-07-19 | Nec Corp | データ処理装置及びデータ処理方法 |
JP2017506377A (ja) * | 2013-12-20 | 2017-03-02 | ウエスチングハウス・エレクトリック・カンパニー・エルエルシー | 産業用制御システムを防護するためのシステムおよび方法 |
US10126726B2 (en) | 2015-07-10 | 2018-11-13 | Mitsubishi Electric Corporation | Apparatus and method for generating program |
-
2002
- 2002-12-27 JP JP2002379759A patent/JP2004213183A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007183726A (ja) * | 2006-01-05 | 2007-07-19 | Nec Corp | データ処理装置及びデータ処理方法 |
JP2017506377A (ja) * | 2013-12-20 | 2017-03-02 | ウエスチングハウス・エレクトリック・カンパニー・エルエルシー | 産業用制御システムを防護するためのシステムおよび方法 |
US10126726B2 (en) | 2015-07-10 | 2018-11-13 | Mitsubishi Electric Corporation | Apparatus and method for generating program |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3921367B2 (ja) | データ処理装置および方法、コンピュータプログラム、情報記憶媒体、並列演算装置、データ処理システム | |
US6226777B1 (en) | Method and system for improving the performance of a circuit design verification tool | |
Corbetta et al. | Internal and external bitstream relocation for partial dynamic reconfiguration | |
JP2001202397A (ja) | システム・オン・チップのアーキテクチャ設計支援システム及びアーキテクチャ生成方法 | |
EP0847022A2 (en) | Method for designing an architectural system | |
CN1667622A (zh) | 使用形式技术的设计验证 | |
US20230120227A1 (en) | Method and apparatus having a scalable architecture for neural networks | |
JP3907398B2 (ja) | 半導体集積回路装置の設計方法 | |
JPH0869447A (ja) | データ処理装置 | |
JP6763411B2 (ja) | 設計支援装置、設計支援方法、および設計支援プログラム | |
JP2004213183A (ja) | 制御用プログラムの作成支援プログラム、作成支援方法及び作成支援装置 | |
TW201331775A (zh) | 用於硬體描述語言環境之全域時鐘處理常式物件 | |
US7398496B1 (en) | Unified placer infrastructure | |
JPH05101141A (ja) | 高位合成装置 | |
US9135384B1 (en) | Compilation and simulation of a circuit design | |
US10223077B2 (en) | Determination of signals for readback from FPGA | |
JP4631493B2 (ja) | シミュレーション装置 | |
US20080201673A1 (en) | Semiconductor design support device, semiconductor design support method, and manufacturing method for semiconductor integrated circuit | |
JP2006202330A (ja) | システムlsiの設計方法及びこれを記憶した記録媒体 | |
JP4787711B2 (ja) | データ処理装置および方法、コンピュータプログラム、情報記憶媒体、並びにデータ処理システム | |
US7191412B1 (en) | Method and apparatus for processing a circuit description for logic simulation | |
JP2007018313A (ja) | 回路設計プログラム、回路設計装置、回路設計方法 | |
JP2004280279A (ja) | トップダウン設計装置およびトップダウン設計プログラム | |
JP5332598B2 (ja) | 設計方法及び設計装置 | |
CN110110362B (zh) | 一种使用嵌入式命令设计芯片的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051110 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080724 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080729 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090407 |