エンベデッドシステムスペシャリスト 2013年 午後1 問01
4サイクルガソリンエンジンの可変バルブタイミング機構の制御に関する次の記述を読んで、設問1~3に答えよ。
A社は、4サイクルガソリンエンジン(以下、エンジンという)の燃焼効率を向上させるために、可変バルブタイミング機構の制御(以下、VVTCという)システムを開発している。
〔エンジンの動作概要〕
エンジンの動作における、バルブ開閉量とクランク角度との関係を、図1に示す。

エンジンは、吸気→圧縮→燃焼・膨張→排気のサイクルを繰り返し、吸気から排気までのサイクルで、クランク軸は2回転する。図1に示すクランク角度は、圧縮サイクルと燃焼・膨張サイクルの間でピストンが最も上がったところを0°と定義する。VVTCは、このクランク角度を基に、吸気バルブが開き始めるタイミングを制御する。
〔VVTCの動作概要〕
VVTCは、クランク軸の回転数、エンジンの負荷状況などに応じて、吸気バルブが開き始めるタイミングを変えることによって燃焼効率を向上させる。吸気バルブが開き始めるクランク角度(以下、開タイミングという)の可変範囲を、図2に示す。

本VVTCシステムは、吸気バルブの閉期間中にモータを動作させて、開タイミングを設定する。モータを停止した時点で開タイミングが決まる。
〔VVTCシステムの構成〕
VVTCを実現するシステム構成を図3に、VVTC電子制御ユニット(VVTC ECU)の機能概要を表1に示す。エンジン電子制御ユニット(エンジンECU)はエンジン全体の制御を行い、VVTC ECUは吸気バルブの開タイミングの制御を行う。


〔クランク角度の検出〕
サイクル信号とクランク角信号の波形を図4に示す。
・サイクル信号は、排気及び吸気のサイクルでLowになり、その他のサイクルでは、Highになる。
・クランク角信号は、クランク角度が10°変化するごとにパルスが1回出力される。ただし、−20°~−10°の期間及び340°~350°の期間は、パルスが出力されず、Highのままである。
〔吸気バルブの開タイミング制御〕
吸気バルブの開タイミング制御は、次のように行う。
① クランク角信号とサイクル信号から、クランク角度及び1分間当たりのクランク軸の回転数(以下、エンジン回転速度という)を算出する。
② クランク軸が2回転するごとに、エンジンECUに負荷情報要求を送信し、エンジンECUから負荷情報を受信する。
③ クランク角度、エンジン回転速度及びエンジンの負荷情報から、吸気バルブの開タイミングを算出する。
④ 適切なときに、算出した開タイミングをモータ制御部に送信する。モータ制御部は、直ちにモータを動作させて、受け取った開タイミングで吸気バルブが開くように設定する。クランク角度が開タイミングになると、吸気バルブが開く。設問1:VVTCの仕様について、(1)、(2)に答えよ。
設問1(1)
問題文を見る吸気サイクルの開始から排気サイクルの終了までの間に、クランク角センサが出力するパルス数は、幾つか。
模範解答
70
解説
解答の導き方
-
吸気サイクルの開始から排気サイクルの終了までは、吸気・圧縮・燃焼・膨張・排気の4サイクル全体です。本文には、このサイクルで「クランク軸は2回転する」とあります。クランク軸1回転はなので、対象となる角度はです。
-
クランク角信号は、クランク角度が変化するごとにパルスを1回出力します。したがって、パルスが欠けない場合は、回です。
-
ただし、本文には「−20°~−10°の期間及び340°~350°の期間は、パルスが出力されず」とあります。この二つの期間はそれぞれ分のパルスが欠ける区間で、2回転分の範囲に含まれます。そのため、通常の72回から2回分を差し引き、出力されるパルス数は70回になります。
誤りやすいポイント
- 4サイクル全体をクランク軸1回転分のとして計算しないようにします。4サイクルではクランク軸が2回転するため、角度はです。
- パルスが出ない期間は1か所ではなく、本文に示された2か所です。どちらも分なので、それぞれ1回分を差し引きます。
- をで割って得られる回数は、欠落がない場合の回数です。欠パルスの分を反映してから答えます。
FAQ
Q: なぜをで割るのですか?
A: 吸気から排気までの4サイクルでクランク軸が2回転し、角度の変化ごとにパルスが出るためです。
A: 吸気から排気までの4サイクルでクランク軸が2回転し、角度の変化ごとにパルスが出るためです。
Q: パルスが出ない区間は、なぜ2回分差し引くのですか?
A: 本文にパルスが出ない期間が二つ示されており、それぞれ分の区間だからです。
A: 本文にパルスが出ない期間が二つ示されており、それぞれ分の区間だからです。
Q: クランク軸が1回転する間のパルス数を求める場合も、同じ考え方ですか?
A: はい。まずをごとの区間に分け、対象となる回転中の欠パルス分を差し引きます。
A: はい。まずをごとの区間に分け、対象となる回転中の欠パルス分を差し引きます。
関連キーワード: 4サイクルエンジン、クランク角、パルス信号、角度計測、欠パルス
設問1(2)
問題文を見るモータ制御部に開タイミングの情報を送ってはいけない期間がある。どのような期間か。20字以内で答えよ。ここで、モータ制御部の動作時間及びモータの動作時間は考慮しなくてよいものとする。
模範解答
吸気バルブが閉期間でない期間
解説
解答の導き方
-
まず、モータを動かして何をするのかを確認します。本文には「吸気バルブの閉期間中にモータを動作させて、開タイミングを設定する」とあります。つまり、開タイミングの設定に必要なモータの動作は、吸気バルブが閉じている間に行う必要があります。
-
次に、開タイミングの情報を送った後の動作を確認します。モータ制御部は受け取った情報を基に「直ちにモータを動作させ」ます。また、「モータを停止した時点で開タイミングが決まる」とあります。したがって、モータの動作中に吸気バルブが開いてしまうタイミングで情報を送ることはできません。
-
設問ではモータ制御部とモータの動作時間を考慮しないため、動作時間を見越して早めに送信する必要はありません。情報を送るべきなのは吸気バルブの閉期間であり、それ以外の期間に送ると、その期間中にモータを動作させることになります。したがって、送信してはいけないのは、吸気バルブが閉期間でない期間です。
誤りやすいポイント
- モータを動かす目的は、吸気バルブをその場で開閉することではなく、開タイミングを設定することです。
- 情報を受信するとモータは直ちに動作するため、開いている期間に送って、閉期間まで待たせるとは考えません。
- 「モータの動作時間を考慮しなくてよい」ことは、どの期間に送ってもよいという意味ではありません。モータが動作する期間とバルブの状態との関係は考える必要があります。
FAQ
Q: 吸気バルブが開き始める直前なら、開タイミングの情報を送ってもよいですか?
A: モータの動作時間を考慮しない条件なので、送信後すぐにモータが動作します。吸気バルブが閉期間でないタイミングでの送信は避けます。
A: モータの動作時間を考慮しない条件なので、送信後すぐにモータが動作します。吸気バルブが閉期間でないタイミングでの送信は避けます。
Q: 「閉期間でない期間」には、バルブが開き始める途中も含まれますか?
A: 含まれます。吸気バルブが閉じている期間以外は、設問で求める送信してはいけない期間です。
A: 含まれます。吸気バルブが閉じている期間以外は、設問で求める送信してはいけない期間です。
関連キーワード: バルブタイミング、吸気バルブ、クランク角、モータ制御、制御タイミング
設問2:サイクル信号及びクランク角信号を基に、エンジン回転速度を求める方法について、(1)、(2)に答えよ。
設問2(1)
問題文を見るクランク角度0°は、タイマの計測値からどのように検出したらよいか。各信号の波形、及びタイマの計測値に着目して、50字以内で述べよ。
模範解答
サイクル信号がHighで、割込み処理でタイマ計測値を読み、直近の約2倍になるのを検出する。
解説
解答の導き方
-
まず、タイマが何を計測しているかを確認します。表1には、タイマは「クランク角信号の立上がりから、次の立上がりまでの間隔を計測する」とあります。したがって、クランク角信号の立上がりで割込みが発生したときに読む計測値は、直前の立上がりから今回の立上がりまでにかかった時間です。
-
図4では、クランク角信号は通常、クランク角度が10°変化するごとにパルスを出します。一方、−20°~−10°の期間はパルスがありません。そのため、−20°の立上がりの後、次の立上がりは−10°ではなく0°になります。0°で割込みが発生したときの計測値は、通常の10°分ではなく20°分の時間となり、直近の通常の計測値の約2倍になります。
-
ただし、340°~350°の期間にもパルスがありません。この欠落による長い計測値と、0°での計測値を区別するため、サイクル信号も確認します。図4では、0°のときサイクル信号はHighですが、340°~350°の欠落に続く360°付近ではLowです。
以上から、サイクル信号がHighのときにクランク角信号の割込み処理でタイマ計測値を読み、直近の計測値の約2倍になったことを検出すれば、クランク角度0°を判定できます。
誤りやすいポイント
- 計測値が大きくなったことだけで0°と判断しないでください。340°~350°にもパルスがないため、サイクル信号の状態も使って区別します。
- タイマは角度そのものではなく、立上がり間の時間を計測します。エンジン回転速度によって計測値は変わるため、一定の値をしきい値にするのではなく、直近の通常時の計測値と比べます。
- −10°の位置ではパルスが出ないため、そこで割込みは発生しません。タイマ計測値を読み取って長い間隔を検出するのは、次の立上がりである0°です。
FAQ
Q: なぜ「2倍」ではなく「約2倍」と考えるのですか?
A: 角度の間隔は通常の10°から20°になりますが、エンジン回転速度が変化すれば、時間の計測値も変化します。そのため、直近の計測値との比較では「約2倍」と判断します。
A: 角度の間隔は通常の10°から20°になりますが、エンジン回転速度が変化すれば、時間の計測値も変化します。そのため、直近の計測値との比較では「約2倍」と判断します。
Q: サイクル信号がHighであることは、なぜ必要なのですか?
A: パルスが欠ける箇所は0°付近だけではありません。0°ではサイクル信号がHigh、360°付近ではLowなので、信号の状態を併用して区別できます。
A: パルスが欠ける箇所は0°付近だけではありません。0°ではサイクル信号がHigh、360°付近ではLowなので、信号の状態を併用して区別できます。
Q: パルスが欠けた角度でタイマ計測値を読みますか?
A: いいえ。パルスが欠けた位置では立上がりがなく、割込みも発生しません。次の立上がりで割込みが発生したときに、前回からの長い計測時間を読み取ります。
A: いいえ。パルスが欠けた位置では立上がりがなく、割込みも発生しません。次の立上がりで割込みが発生したときに、前回からの長い計測時間を読み取ります。
関連キーワード: クランク角センサ、タイマ計測、割込み処理、サイクル信号、パルス欠落検出
設問2(2)
問題文を見るクランク角度が50°のとき、タイマの計測値が500であった。タイマのカウントクロックが1MHzのとき、エンジン回転速度は幾つか。答えは小数第1位を四捨五入して、整数で求めよ。
模範解答
3,333
解説
解答の導き方
-
タイマは「クランク角信号の立上がりから、次の立上がりまでの間隔」を計測します。また、クランク角信号はクランク角度が10°変化するごとにパルスが1回出力されます。クランク角度が50°のときは欠落期間ではないため、立上がり間隔に対応する角度は10°です。
-
タイマのカウントクロックは1MHzなので、1カウントにかかる時間は秒、つまりマイクロ秒です。計測値が500ですから、クランク軸が10°回転する時間はマイクロ秒、すなわち秒です。
-
クランク軸は1回転で360°回転します。10°ごとの間隔は個あるため、1回転にかかる時間は秒です。
-
エンジン回転速度は、1分間にクランク軸が何回転するかで求めます。したがって、回転/分となり、小数第1位を四捨五入すると3,333回転/分です。
誤りやすいポイント
- 500は時間そのものではなく、タイマのカウント値です。カウントクロックから時間に換算してから計算します。
- 500カウントでクランク軸が回転する角度は360°ではなく、パルス間の10°です。1回転分の時間を求めるには、10°分の時間を36倍します。
- 4サイクルではクランク軸が2回転しますが、エンジン回転速度はクランク軸の回転数なので、1回転の角度は360°です。720°を1回転として計算しないようにします。
FAQ
Q: 500カウントを、そのまま500マイクロ秒として扱えるのはなぜですか。
A: カウントクロックが1MHzなので、1カウントが1マイクロ秒だからです。別のクロック周波数の場合は、カウント値をそのまま時間として扱えません。
A: カウントクロックが1MHzなので、1カウントが1マイクロ秒だからです。別のクロック周波数の場合は、カウント値をそのまま時間として扱えません。
Q: 欠落するパルスがある区間では、同じ計算ができますか。
A: 欠落区間では立上がり間隔が通常より長くなるため、1間隔を10°として計算できません。この設問のクランク角度50°では、通常どおり10°ごとの間隔として扱えます。
A: 欠落区間では立上がり間隔が通常より長くなるため、1間隔を10°として計算できません。この設問のクランク角度50°では、通常どおり10°ごとの間隔として扱えます。
関連キーワード: クランク角、タイマ計測、パルス周期、回転速度、単位換算
設問3:VVTC ECUには、リアルタイムOSを使用している。VVTC ECUの主なタスクの機能概要を表2に、タスクの実行状態を図5に示す。VVTC ECUのソフトウェアについて、(1)、(2)に答えよ。
ここで、タスクの切替え時間など、OSの処理時間は無視できるものとする。



設問3(1)
問題文を見る図5中のa~dに入れる適切なタスク名を答えよ。また、太い破線枠内のタスクの実行状態を、解答欄の枠内に示せ。
模範解答
a:クランク角
b:回転速度算出
c:バルブ可変量算出
d:モータ制御


解説
解答の導き方
図5の割込み要求を境に、割込みによって起動するタスクと、その処理後に再開するタスクを整理します。表2では、タスクの優先度は値が小さいほど高く、処理時間も示されています。
-
12マイクロ秒からの実行状態でタスク名を判別します。
図5では、最初の割込み要求の後、aが12マイクロ秒実行され、続いてbが28マイクロ秒実行されています。表2で、クランク角信号の割込みで起動し、処理時間が12マイクロ秒のタスクは「クランク角」です。そのタスクが起動するタスクのうち、処理時間が28マイクロ秒なのは「回転速度算出」です。したがって、aは「クランク角」、bは「回転速度算出」です。 -
592マイクロ秒から実行されるタスクを判別します。
図5では、メインの実行後にcが動き始めます。表2では、メインタスクの指示でバルブの可変量を算出し、その後にモータ制御タスクを起動するタスクがあります。この機能に該当するのは「バルブ可変量算出」なので、cは「バルブ可変量算出」です。 -
600マイクロ秒の割込み後の実行順序を決めます。
cは592マイクロ秒から実行中ですが、600マイクロ秒に割込み要求が発生します。その時点でcは8マイクロ秒実行済みです。割込みで起動する「クランク角」は優先度が高いため、cを中断して600~612マイクロ秒に実行されます。次に「クランク角」から起動される「回転速度算出」が612~640マイクロ秒に実行されます。 -
中断されたタスクと、その後に起動されるタスクを配置します。
「バルブ可変量算出」の処理時間は28マイクロ秒です。すでに8マイクロ秒実行しているため、「回転速度算出」の終了後に残りの20マイクロ秒を実行し、640~660マイクロ秒で処理を終えます。その後、「バルブ可変量算出」が起動した「モータ制御」が実行されます。したがって、太い破線枠内では、596~600マイクロ秒と640~660マイクロ秒にc、600~612マイクロ秒にa、612~640マイクロ秒にb、660~664マイクロ秒にdを配置します。dは「モータ制御」です。
誤りやすいポイント
- 優先度の数値は、小さいほど優先度が高い点に注意してください。「バルブ可変量算出」の処理中でも、割込みで起動する優先度の高いタスクが実行可能になると、中断されます。
- 割込み後に「バルブ可変量算出」を最初からやり直すのではありません。中断時までの実行時間を差し引いた残りを、ほかのタスクの処理後に実行します。
- 「クランク角」の処理後に「回転速度算出」が起動する順序を、表2の機能概要と図5の処理時間の両方から確認します。
FAQ
Q: 「バルブ可変量算出」は、なぜ600マイクロ秒で処理を終えないのですか?
A: 600マイクロ秒に割込み要求が発生し、より優先度の高いタスクが実行されるためです。「バルブ可変量算出」は中断され、割込み処理後に残りの実行時間を使って処理を続けます。
A: 600マイクロ秒に割込み要求が発生し、より優先度の高いタスクが実行されるためです。「バルブ可変量算出」は中断され、割込み処理後に残りの実行時間を使って処理を続けます。
Q: 中断後に実行する「モータ制御」は、いつ起動しますか?
A: 表2では、「バルブ可変量算出」が処理を終えた後に「モータ制御」を起動するとされています。そのため、「バルブ可変量算出」が660マイクロ秒に完了した後に実行されます。
A: 表2では、「バルブ可変量算出」が処理を終えた後に「モータ制御」を起動するとされています。そのため、「バルブ可変量算出」が660マイクロ秒に完了した後に実行されます。
Q: 太い破線枠内で、最初に実行するタスクは何ですか?
A: 596~600マイクロ秒は、中断前から実行している「バルブ可変量算出」です。600マイクロ秒の割込み要求を受けた後、「クランク角」が実行されます。
A: 596~600マイクロ秒は、中断前から実行している「バルブ可変量算出」です。600マイクロ秒の割込み要求を受けた後、「クランク角」が実行されます。
関連キーワード: リアルタイムOS、タスク優先度、プリエンプション、割込み処理、実行時間
設問3(2)
問題文を見るメインタスクがバルブ可変量算出タスクに通知する三つの情報のうち、一つはクランク角度である。他の二つの情報を答えよ。
模範解答
①:エンジン回転速度
②:エンジンの負荷情報
解説
解答の導き方
-
問われているのは、メインタスクがバルブ可変量算出タスクに渡す三つの情報です。そのうち、クランク角度は問題文で示されているので、残り二つを制御の手順から確認します。
-
吸気バルブの開タイミング制御では、まずクランク角信号などから「クランク角度及びエンジン回転速度」を算出します。したがって、クランク角度とともに、開タイミングの算出に使う情報としてエンジン回転速度が必要です。
-
さらに、クランク軸が2回転するごとにエンジンECUへ負荷情報を要求して受信し、開タイミングの算出に利用します。よって、もう一つの情報はエンジンの負荷情報です。
-
問題文では、開タイミングを「クランク角度、エンジン回転速度及びエンジンの負荷情報」から算出すると説明されています。すでに示されているクランク角度以外の二つが、求める情報です。
誤りやすいポイント
- モータ制御部へ送る「開タイミング」と、バルブ可変量算出タスクに渡す情報を混同しないようにします。開タイミングは、三つの情報を基に算出される結果です。
- 負荷情報だけをエンジンECUから受信するため、エンジン回転速度もエンジンECUから受け取ると誤解しないようにします。問題文では、エンジン回転速度はクランク角信号などから算出します。
- クランク角度がすでに一つの情報として指定されているため、残り二つとして同じ制御手順にあるエンジン回転速度とエンジンの負荷情報を選びます。
FAQ
Q: エンジン回転速度は、どのように得ますか?
A: 問題文では、クランク角信号とサイクル信号からクランク角度及びエンジン回転速度を算出すると説明されています。
A: 問題文では、クランク角信号とサイクル信号からクランク角度及びエンジン回転速度を算出すると説明されています。
Q: 負荷情報は、いつ取得しますか?
A: クランク軸が2回転するごとにエンジンECUへ要求を送信し、受信します。
A: クランク軸が2回転するごとにエンジンECUへ要求を送信し、受信します。
Q: 開タイミングそのものも、バルブ可変量算出タスクに渡す情報ですか?
A: いいえ。開タイミングは、クランク角度、エンジン回転速度、エンジンの負荷情報を基に算出する結果です。
A: いいえ。開タイミングは、クランク角度、エンジン回転速度、エンジンの負荷情報を基に算出する結果です。
関連キーワード: エンジン回転速度、負荷情報、タスク間通信、制御入力、リアルタイムOS



