エンベデッドシステムスペシャリスト 2013年 午後1 問03
DCモータ扇風機の開発に関する次の記述を読んで、設問1~3に答えよ。
C社は、DCモータ扇風機(以下、扇風機という)を開発している。この扇風機は三相DCインバータモータ(以下、ファンモータという)で羽根を回転させ、超微風から強風まで安定送風することを特徴とする。
〔扇風機の概要〕
扇風機の外観を図1に、扇風機の仕様を表1に示す。
(1) 構成
扇風機は、羽根が装着されたファン部と、床に置くためのベース部から構成される。
・ファン部には、ファンモータと二つの首振り用モータを搭載し、水平方向及び垂直方向に首振りをする。また、赤外線人感センサ(以下、人感センサという)とファンガードセンサを搭載し、それを利用した動作を行う。
・ベース部には、温度センサと湿度センサを搭載し、温度と湿度によって風量を調整するために使用する。

(2) 仕様
・風量調整
風量の設定は256段階指定及び自動調整モード選択があり、ベース部のタッチスイッチによって選択する。
自動調整モードでは、温度、湿度が高くなると風量を大きくし、低くなると小さくする。指定した風量に対して、±64段階の範囲で調整する。
・首振り
水平方向の首振りには、一定速度で首を振る定速モードと、人感センサによって首を振る速度を変えるセンサモードがある。センサモードでは、人がいる方向に送風するときは首振りを遅くし、そうでないときには速くする。
・タイマ機能
OFFタイマの設定は、1~5時間の範囲で15分刻みとする。設定した時間が残り30分になると徐々に風量を小さくし、設定した時間が経過したら完全に羽根の回転と首振りを停止する。
ONタイマの設定は、1~10時間の範囲で15分刻みとする。ONにするときの風量もあらかじめ設定する。
〔ハードウェアの構成〕
扇風機のブロック図を図2に示す。
・ファン部には、ファン制御MCU、ファン制御MCUからドライバを介して駆動されるファンモータ、首振り制御MCU、首振り制御MCUからドライバを介して駆動される水平首振りモータ・垂直首振りモータ、人感センサ及びファンガードセンサを搭載する。
・ベース部には、システム制御MCU、温度センサ、湿度センサ、タッチスイッチ及び表示部を搭載する。タッチスイッチは、システム制御MCUのポートに接続される。
ファン制御MCU、首振り制御MCU及びシステム制御MCUは、システム制御MCUをマスタとするシリアルバスで接続する。
〔MCUの動作制御〕
・ファン制御MCUは、システム制御MCUから指定された回転速度でファンモータを回転させる。
・首振り制御MCUは、システム制御MCUから指定された条件で首振りをさせる。また、ファンガードに接触したことを検出すると、システム制御MCUに通知する。
・システム制御MCUは、LCDコントローラと時計機能をもち、表示部に時刻を表示する。また、ファンモータの回転速度指定コマンドと首振り指定コマンドを送信したり、ファン部の状態を受信したりする。
設問1:扇風機の仕様実現について、(1)~(3)に答えよ。
設問1(1)
問題文を見るファンモータの制御に関する次の記述中のa~dに入れる適切な字句を答えよ。
省エネルギーと低騒音化を実現するために、三相の正弦波状波形の電流(以下、正弦波電流という)でファンモータを駆動する。ファンモータのaで風量が決まり、aは駆動する正弦波電流のbで決まる。また、トルクはファンモータに流す正弦波電流のcで決まる。ファンモータのaを少しずつ上げていって、定常回転になった後、aがdしそうになったら、トルクを大きくすることでファンモータのaを一定に保つ。
模範解答
a:回転速度
b:周波数
c:振幅
d:低下
解説
解答の導き方
この設問では、ファンモータの風量・回転速度・トルクが、それぞれ正弦波電流のどの性質と関係するかを整理します。
本文には、ファンモータを「三相の正弦波状波形の電流」で駆動するとあります。まず、羽根の回転が速くなるほど風量も大きくなるため、風量を決めるのはファンモータの回転速度です。したがって、最初の空欄には「回転速度」が入ります。
次に、三相の正弦波電流の周波数を変えると、モータを回転させる磁界の回転速度が変わり、ファンモータの回転速度も変わります。このため、回転速度を決める電流の性質は「周波数」です。
一方、電流の振幅はモータに流れる電流の大きさに関係し、モータが発生するトルクを決めます。よって、トルクを決める性質は「振幅」です。
最後に、本文は回転速度を少しずつ上げて定常回転にした後、その回転速度が保てなくなりそうな場合にトルクを大きくするとしています。回転速度が下がりそうなときにトルクを増やして、回転速度を一定に保つ流れです。したがって、最後の空欄は「低下」です。
誤りやすいポイント
- 回転速度とトルクを混同しないようにします。回転速度を決めるのは電流の周波数であり、トルクを決めるのは電流の振幅です。
- 風量を直接、電流の振幅で決めると考えないようにします。この設問では、風量はファンモータの回転速度によって決まります。
- 回転速度が下がりそうなとき、周波数を上げるのではなく、トルクを大きくして回転速度を保つという制御の流れに注目します。
FAQ
Q: 周波数と振幅は、どちらもモータの回転速度に影響しますか?
A: この設問では、回転速度を決める要素は周波数、トルクを決める要素は振幅として区別します。
A: この設問では、回転速度を決める要素は周波数、トルクを決める要素は振幅として区別します。
Q: 回転速度が下がりそうなとき、なぜトルクを大きくするのですか?
A: モータに必要なトルクを確保し、負荷などによる回転速度の低下を抑えて、一定の回転速度を保つためです。
A: モータに必要なトルクを確保し、負荷などによる回転速度の低下を抑えて、一定の回転速度を保つためです。
Q: 風量を保つために直接調整するのは何ですか?
A: 風量はファンモータの回転速度で決まるため、回転速度を一定に保つことが風量の維持につながります。
A: 風量はファンモータの回転速度で決まるため、回転速度を一定に保つことが風量の維持につながります。
関連キーワード: 三相交流、正弦波電流、周波数制御、電流振幅、トルク制御
設問1(2)
問題文を見る首振りモータの制御に関して、独立した二つの首振り専用モータを搭載した理由を、30字以内で述べよ。
模範解答
水平方向と垂直方向の首振りを独立に行うから
解説
解答の導き方
この設問は、首振り用モータを二つ搭載する理由を問うています。まず、本文にはファン部が「水平方向及び垂直方向に首振りをする」とあります。首振りには、水平の動きと垂直の動きという、向きの異なる二つの動きがあります。
図2でも、首振り用のモータは「水平首振りモータ」と「垂直首振りモータ」に分かれ、それぞれドライバを介して駆動されています。つまり、一方は水平方向、もう一方は垂直方向の動きを担当します。
このように方向ごとにモータを分けることで、水平と垂直の首振りを別々に制御できます。したがって、独立した二つの首振り専用モータを搭載した理由は、水平方向と垂直方向の首振りを独立に行うためです。
誤りやすいポイント
- 「二つのモータで首振りを速くするため」と考えるのは誤りです。本文や図2では、二つのモータがそれぞれ異なる方向の首振りを担当しています。
- ファンモータと首振り用モータを混同しないようにします。ファンモータは羽根を回転させ、首振り用モータはファン部の向きを変えます。
- 「水平方向と垂直方向に首振りをする」というだけでなく、二つのモータを使うことでそれぞれを別々に動かせる点まで結び付けることが大切です。
FAQ
Q: 水平方向と垂直方向を、必ず同時に動かすという意味ですか?
A: いいえ。本文から分かるのは、二つの方向の首振りを独立に行うことです。同時動作が必須とは述べられていません。
A: いいえ。本文から分かるのは、二つの方向の首振りを独立に行うことです。同時動作が必須とは述べられていません。
Q: 首振り用モータが二つなのは、風量を調整するためですか?
A: いいえ。風量はファンモータの回転で調整します。首振り用モータは、ファン部の水平方向・垂直方向の向きを変えるためのものです。
A: いいえ。風量はファンモータの回転で調整します。首振り用モータは、ファン部の水平方向・垂直方向の向きを変えるためのものです。
関連キーワード: アクチュエータ、独立制御、回転軸、モータドライバ、自由度
設問1(3)
問題文を見る人感センサによって、人のいる方向を特定する方法について検討した。人感センサは、人のいる方向が人感センサの正面から水平方向±30°の範囲ではHighレベル、その範囲から外れるとLowレベルを出力する。人のいる方向をより高い精度で特定するために、首振りをするファン部分に人感センサを設置する。ここで、首振り制御MCUは首振りの方向を検出することができるものとする。このとき、人のいる方向を特定するための判定方法を35字以内で述べよ。
模範解答
Highになった角度の範囲の30°内側を人のいる方向と判断する。
解説
解答の導き方
人感センサの出力と、首振り方向の角度を組み合わせて人のいる方向を求めます。
- 問題文では、人のいる方向がセンサの正面から「水平方向±30°の範囲ではHighレベル」とあります。つまり、センサの正面が人の方向から左右それぞれ30°以内にある間、出力はHighになります。
- 首振り制御MCUは首振りの方向を検出できます。そのため、首振り中に人感センサがHighになっている角度の範囲を特定できます。
- Highになる範囲は、人の方向を中心に両側へ30°ずつ広がります。したがって、人の方向はHighの範囲の端から30°内側、すなわちその範囲の中央にあります。
誤りやすいポイント
- Highになった瞬間の角度を、そのまま人のいる方向と判断しないでください。Highは人の方向そのものではなく、センサの正面が人から±30°以内にある範囲を示します。
- ±30°を、合計30°の範囲と取り違えないようにしてください。Highになる角度の範囲は、両側を合わせて60°です。
- 首振りの角度を使わず、HighかLowかだけで判断すると、角度の範囲を絞り込めません。
FAQ
Q: Highになった範囲の中央が、人のいる方向になるのはなぜですか?
A: センサは、人の方向を中心に両側30°の範囲でHighになるためです。Highの範囲の中央が、人の方向に対応します。
A: センサは、人の方向を中心に両側30°の範囲でHighになるためです。Highの範囲の中央が、人の方向に対応します。
Q: 首振りの方向を検出できる必要があるのはなぜですか?
A: Highになったときのセンサの向きを角度として特定し、Highの範囲の中央を求めるためです。
A: Highになったときのセンサの向きを角度として特定し、Highの範囲の中央を求めるためです。
Q: Highの範囲のどちら側から30°内側を取ればよいですか?
A: どちらの端からでも、Highの範囲の内側へ30°進んだ位置が中央になります。
A: どちらの端からでも、Highの範囲の内側へ30°進んだ位置が中央になります。
関連キーワード: 赤外線センサ、角度検出、信号判定、首振り制御
設問2:扇風機の設計について、(1)、(2)に答えよ。
設問2(1)
問題文を見るファンモータの駆動に関する次の記述中のe~hに入れる適切な字句を答えよ。
ファンモータを駆動する電流波形は、タイマの16ビットPWM出力機能を利用して発生させる。省エネルギーと低騒音化を高めるために、モータに流す電流をできるだけ正弦波に近づける。1周期を400分割してPWM信号を発生させる。その場合、電流の周波数を50Hzとすると、PWM信号の周期はe秒となる。この中で、回転角に応じたPWM信号のデューティ比を決定する設定値は、制御が必要なタイミングで三相分のfに応じて計算する必要がある。
三角関数の計算処理をできるだけ少なくするために、データテーブルを使うことにした。また、テーブルのデータサイズをgするために、大まかな回転角でテーブルを検索し、前後のデータからhを行って目的の値を得ることにする。
模範解答
e:50マイクロ
f:位相
g:小さく
h:補間処理
解説
解答の導き方
まず、[e]はPWM信号1回分の周期を求める問題です。本文には「電流の周波数を50Hz」とあり、電流波形1周期の長さは 秒です。さらに「1周期を400分割してPWM信号を発生させる」ので、PWM信号1回分の周期は次のとおりです。
これは50マイクロ秒です。問題文では空欄の後に「秒」が続くため、[e]に入るのは「50マイクロ」です。なお、16ビットというタイマの情報ではなく、電流の周波数と分割数から求めます。
次に、[f]は各相のPWM信号のデューティ比を決めるときに使う情報です。三相の電流は、同じ周波数でも各相の波形のタイミングがずれています。したがって、回転角に応じたデューティ比を求めるには、三相それぞれの「位相」を考慮する必要があります。
最後に、[g]と[h]はデータテーブルの使い方から判断します。テーブルを細かい回転角ごとに用意すると、格納するデータが多くなります。そこで、大まかな回転角に対応する値だけをテーブルに持たせれば、テーブルのデータサイズを小さくできます。ただし、検索した角度と目的の角度は一致しないことがあるため、前後のデータから目的の値を求めます。この処理が補間処理です。
誤りやすいポイント
- 電流波形の周期とPWM信号の周期を混同しないようにします。電流波形の周期を400分割したものが、PWM信号の周期です。
- PWM信号の周期の計算に、タイマの16ビットという情報を使わないようにします。この設問では、電流の周波数と分割数を使います。
- 三相それぞれのデューティ比を決める情報は、周波数ではなく位相です。周波数は波形の周期に関係します。
- テーブルを粗い角度で検索するだけでは、目的の角度に対応する値は得られません。前後のデータを用いて補間します。
FAQ
Q: なぜ電流波形の周波数からPWM信号の周期が求められるのですか?
A: 電流波形1周期の時間を400等分してPWM信号を出すためです。電流波形1周期の時間を求め、それを400で割ります。
A: 電流波形1周期の時間を400等分してPWM信号を出すためです。電流波形1周期の時間を求め、それを400で割ります。
Q: 位相は各相のデューティ比にどう関係しますか?
A: 各相の波形はタイミングが異なるため、回転角に対する各相の波形値も異なります。その値に応じて各相のデューティ比を決めます。
A: 各相の波形はタイミングが異なるため、回転角に対する各相の波形値も異なります。その値に応じて各相のデューティ比を決めます。
Q: 補間処理を使うと、なぜテーブルを小さくできますか?
A: すべての角度の値を保存せず、間隔を空けた値だけを保存し、その間の値を前後のデータから求められるためです。
A: すべての角度の値を保存せず、間隔を空けた値だけを保存し、その間の値を前後のデータから求められるためです。
関連キーワード: PWM、三相電流、位相、データテーブル、補間処理
設問2(2)
問題文を見るOFFタイマの設計を行った。制御が必要なタイミングになったら、システム制御MCUからファン部に対して制御のための情報を送信する。システム制御MCUから送信すべき情報を二つ、それぞれ15字以内で答えよ。
模範解答
・ファンの回転速度情報
・首振りの停止情報
・情報の送信先MCUの情報
解説
解答の導き方
まず、OFFタイマで時間の経過に応じて何を制御するかを確認します。仕様では、設定時間の残りが30分になると「徐々に風量を小さくし」、設定時間が経過すると「羽根の回転と首振りを停止する」とあります。
したがって、システム制御MCUから送る制御内容は、風量を調整するためのファンの回転速度情報と、設定時間の経過後に首振りを止める情報です。
また、図2の構成では、ファンモータはファン制御MCUが、首振りモータは首振り制御MCUが制御します。システム制御MCUがシリアルバスで情報を送るときは、どちらのMCU宛てかを示す情報も必要です。そのため、模範解答では制御内容に加えて、情報の送信先MCUの情報も挙げています。
誤りやすいポイント
- OFFタイマの終了時に、羽根の回転だけでなく首振りも停止する点を見落とさないようにします。
- 残り30分で行うのは、風量を徐々に小さくする制御です。単に停止情報だけを送るのでは不十分です。
- ファンモータと首振りモータは別のMCUが制御するため、制御内容だけでなく送信先も区別する必要があります。
FAQ
Q: 残り30分になったときに送る情報は何ですか?
A: 風量を徐々に小さくするための、ファンの回転速度情報です。
A: 風量を徐々に小さくするための、ファンの回転速度情報です。
Q: 首振りの停止情報はいつ必要ですか?
A: 設定した時間が経過し、首振りを停止するときに必要です。
A: 設定した時間が経過し、首振りを停止するときに必要です。
Q: 送信先MCUの情報も必要なのはなぜですか?
A: ファンモータと首振りモータを、それぞれ別のMCUが制御しているためです。
A: ファンモータと首振りモータを、それぞれ別のMCUが制御しているためです。
関連キーワード: OFFタイマ、回転速度制御、首振り制御、シリアル通信、制御コマンド
設問3:扇風機の安全対策に関する次の記述を読んで、(1)~(3)に答えよ。
扇風機の制御は、システム制御MCUが100ミリ秒の周期(以下、制御周期という)で行っている。制御周期の構成を図3に示す。一つの制御周期は、図3に示す三つの期間①~③で構成されている。

① コマンド送信期間:制御周期の最初の期間。システム制御MCUは、前の制御周期で決定した、ファン制御MCU及び首振り制御MCUに送信すべきコマンドがある場合には、直ちに送信する。
② ポーリング期間:制御周期の二つ目の期間。ファン制御MCU、首振り制御MCUの順番で、各MCUからの情報をポーリングする。二つのポーリングは、①でのコマンド送信の有無にかかわらず、制御周期開始タイミングから10ミリ秒で完了する。
③ システム制御MCU処理期間:ポーリングによって得た情報とセンサからの情報を基に、次の制御周期のコマンド送信期間に送信するコマンドを決定する。この期間、首振り制御MCUは、シリアルバスを使用可能である。
ファンガードに接触したときのファンモータ回転停止と首振り停止は、次の手順で行う。
① 首振り制御MCUは、ファンガードセンサからの割込み信号を、最大10マイクロ秒遅れで検出
② 首振り制御MCUは、システム制御MCUからのポーリングに対して異常を通知
③ 異常を通知されたシステム制御MCUは、次の制御周期でファンモータ回転停止コマンドと首振り停止コマンドを送信
設問3(1)
問題文を見るファンガードセンサが異常を検出してから、システム制御MCUが対応のためのコマンドを送信開始するまで、最大何ミリ秒掛かるか。答えは小数第2位を四捨五入して、小数第1位まで求めよ。ここで、首振り制御MCUは、ポーリングタイミング完了500マイクロ秒前までの状態を、ポーリングに対する応答として送信できるものとする。
模範解答
190.5
解説
解答の導き方
-
ポーリング結果に反映できる時刻を求めます。
本文では、二つのポーリングは「制御周期開始タイミングから10ミリ秒で完了する」とあります。また、設問では、首振り制御MCUがポーリング完了の「500マイクロ秒前までの状態」を応答として送信できるとされています。
したがって、制御周期の開始を時刻0とすると、今回のポーリングに反映できる状態は、遅くともミリ秒時点までのものです。 -
現在のポーリングに間に合わない異常検出の時刻を考えます。
首振り制御MCUが割込み信号を検出するまでには、最大「10マイクロ秒」掛かります。これはミリ秒です。
そのため、センサが異常を検出した時刻がミリ秒を過ぎた直後だと、首振り制御MCUによる検出はミリ秒以降となり、現在のポーリング応答に間に合いません。このとき、異常は次の制御周期のポーリングで通知されます。 -
異常通知後にコマンドが送信される時刻を求めます。
現在の制御周期の開始を時刻0とすると、次の制御周期はミリ秒後に始まり、そのポーリングはミリ秒までに完了します。異常を受けたシステム制御MCUは、その次の制御周期でコマンドを送信するため、送信開始は時刻ミリ秒です。 -
異常検出から送信開始までの時間を計算します。
異常検出がミリ秒を過ぎた直後に起きた場合、送信開始までの時間は、ほぼミリ秒です。小数第2位を四捨五入して小数第1位まで求めると、ミリ秒となります。
誤りやすいポイント
- ポーリングの完了時刻である10ミリ秒を、そのまま応答に反映できる状態の締切時刻と考えないようにします。応答できる状態は、完了の500マイクロ秒前までです。
- 異常が今回のポーリングに間に合わない場合、次のポーリングを待つだけでは終わりません。異常通知を受けた後、さらに次の制御周期でコマンドが送信されます。
- 割込み検出の最大遅れである10マイクロ秒は、異常が現在のポーリングに間に合わなくなる時刻を考えるときに加味します。ミリ秒の差は小さいですが、設問で指定された条件です。
FAQ
Q: なぜ制御周期1回分の100ミリ秒だけではないのですか。
A: 異常が現在のポーリングに間に合わないと、次の制御周期のポーリングまで待ちます。その通知を受けてから、さらに次の制御周期でコマンドが送信されるためです。
A: 異常が現在のポーリングに間に合わないと、次の制御周期のポーリングまで待ちます。その通知を受けてから、さらに次の制御周期でコマンドが送信されるためです。
Q: 500マイクロ秒は、どの計算に使いますか。
A: ポーリング完了時刻から、応答に反映できる状態の締切時刻を求めるために使います。完了が10ミリ秒なので、締切は9.5ミリ秒です。
A: ポーリング完了時刻から、応答に反映できる状態の締切時刻を求めるために使います。完了が10ミリ秒なので、締切は9.5ミリ秒です。
Q: 10マイクロ秒を計算に含めても、答えが変わらないのはなぜですか。
A: 10マイクロ秒はミリ秒です。計算結果はミリ秒となりますが、小数第1位までに丸めるとミリ秒です。
A: 10マイクロ秒はミリ秒です。計算結果はミリ秒となりますが、小数第1位までに丸めるとミリ秒です。
関連キーワード: 制御周期、ポーリング、割込み処理、タイミング解析、応答遅延
設問3(2)
問題文を見る(1)の処理時間を短縮するために、図3中の③の期間に首振り制御MCUからファン制御MCUに直接、ファンモータ回転停止コマンドを送信することにした。
(a) 首振り制御MCUが送信を開始してから、ファン制御MCUでファンモータ回転停止コマンドを認識するまでに、シリアルI/Fの受信割込み応答時間以外に必要な処理時間を二つ答えよ。
(b) 処理時間を更に短縮するために、図2に信号を追加することにした。どのような信号にすべきか。20字以内で述べよ。
模範解答
(a):①:シリアルI/Fの通信時間
②:コマンドの解析時間
(b):ファン制御MCUへの割込み信号
解説
解答の導き方
この設問では、首振り制御MCUからファン制御MCUへファンモータ回転停止コマンドを送る場合に、コマンドの送信開始からファン制御MCUがコマンドを認識するまでに必要な処理を考えます。
(a) まず、コマンドを送信してから相手のMCUに届くまでには、シリアルバスを介してデータを送る時間が必要です。これは「シリアルI/Fの通信時間」です。
次に、コマンドを受信したファン制御MCUは、その内容を読み取って何を実行するコマンドなのか判断します。この処理が「コマンドの解析時間」です。設問では「シリアルI/Fの受信割込み応答時間以外」と指定されているため、受信割込みへの応答時間は答えに含めません。
したがって、送信開始からコマンド認識までに必要な処理時間のうち、指定された二つは、シリアルI/Fの通信時間とコマンドの解析時間です。
(b) 「処理時間を更に短縮するため」に図2へ信号を追加するので、シリアル通信でコマンドを送る方法よりも、ファン制御MCUへ停止をすぐに知らせられる信号が適切です。首振り制御MCUからファン制御MCUへ割込み信号を送り、ファン制御MCUに停止処理を優先的に開始させます。これにより、シリアル通信でコマンドを届ける時間や、そのコマンドを解析する時間を省けます。
誤りやすいポイント
- 受信割込み応答時間を(a)の二つに含めないようにします。設問で明示的に除外されています。
- 「コマンドの送信開始」から「コマンドの認識」までの流れを分けて考えます。データを届ける時間と、受信した内容を解釈する時間は別です。
- (b)は停止コマンドそのものではなく、停止処理を速やかに始めさせるための信号を問うています。信号の送り先はファン制御MCUです。
FAQ
Q: (a)で、割込みへの応答時間を答えないのはなぜですか?
A: 設問が、必要な処理時間を「シリアルI/Fの受信割込み応答時間以外」と限定しているためです。
A: 設問が、必要な処理時間を「シリアルI/Fの受信割込み応答時間以外」と限定しているためです。
Q: (b)で、シリアル通信の停止コマンドを速く送るのでは不十分ですか?
A: 送信を速くしても、通信時間と受信後のコマンド解析時間は残ります。割込み信号なら、ファン制御MCUに停止処理の開始を直接知らせられます。
A: 送信を速くしても、通信時間と受信後のコマンド解析時間は残ります。割込み信号なら、ファン制御MCUに停止処理の開始を直接知らせられます。
Q: 図3の③の期間に送ることには、どのような意味がありますか?
A: 本文では、この期間に首振り制御MCUがシリアルバスを使用できるとされています。そのため、次の制御周期を待たずに、首振り制御MCUからファン制御MCUへ直接通知できます。
A: 本文では、この期間に首振り制御MCUがシリアルバスを使用できるとされています。そのため、次の制御周期を待たずに、首振り制御MCUからファン制御MCUへ直接通知できます。
関連キーワード: シリアル通信、割込み処理、コマンド解析、応答時間、マイコン間通信
設問3(3)
問題文を見る(2)の対応策だけでは、ファン部での停止処理直後の制御周期でシステム制御MCUからファンモータの回転速度指定コマンドが送信された場合に、ファンモータ回転停止までの時間を短縮できないことが判明した。この対策として、ファンモータの回転速度指定コマンドと首振り指定コマンドに加えて、新たなコマンドを定め、このコマンドを利用した新たな制御を追加するようにした。追加する新たなコマンドの機能を10字以内で、制御を30字以内で述べよ。
模範解答
機能:動作を再開する機能
制御:異常検出時には動作再開以外のコマンドは無視する。
解説
解答の導き方
-
この設問では、ファン部で異常を検出した後、いったん停止したファンモータが、通常の制御によって再び回転してしまう問題を防ぐ方法を考えます。
-
(2)の対応策では、首振り制御MCUからファン制御MCUへ「ファンモータ回転停止コマンド」を直接送ります。これにより、システム制御MCUのポーリングや次の制御周期を待たずに、ファン部で停止処理を始められます。
-
ただし、小問説明には「停止処理直後の制御周期でシステム制御MCUからファンモータの回転速度指定コマンドが送信された場合」とあります。停止処理の直後に通常の回転速度指定コマンドが届くと、ファン制御MCUがその指示に従い、停止状態を解除してしまうおそれがあります。つまり、停止コマンドを直接送るだけでは、異常時の停止状態を維持できません。
-
そこで、回転速度指定コマンドとは別に、停止状態から明示的に運転へ戻すためのコマンドを設けます。このコマンドの機能は「動作を再開する機能」と考えられます。
-
さらに、異常を検出した後は、通常の回転速度指定コマンドや首振り指定コマンドを受け取っても動作を再開しないようにします。再開を許すのは、専用の動作再開コマンドだけです。これにより、異常による停止状態を保ちつつ、再開の指示があったときだけ通常動作に戻せます。
誤りやすいポイント
- 回転速度指定コマンドを受け取ったら、その値がゼロでなくても停止を維持する、とだけ考えるのは不十分です。異常時に通常の指示を受け付けない制御が必要です。
- 動作再開コマンドを、回転速度を指定するコマンドと同じものとして扱うと、異常時に通常の速度指示だけで停止状態が解除される可能性があります。
- 「異常検出時にはコマンドをすべて無視する」とすると、停止状態を解除する指示まで受け付けられません。動作再開以外を無視する点が重要です。
FAQ
Q: なぜ回転速度指定コマンドとは別に、動作再開のコマンドが必要なのですか?
A: 通常の回転速度指定コマンドを受けただけで停止状態が解除されると、異常が残っているときにファンモータが再び回転するおそれがあるためです。再開を明示する専用コマンドを分けておけば、通常の指示と安全状態の解除を区別できます。
A: 通常の回転速度指定コマンドを受けただけで停止状態が解除されると、異常が残っているときにファンモータが再び回転するおそれがあるためです。再開を明示する専用コマンドを分けておけば、通常の指示と安全状態の解除を区別できます。
Q: 異常時に、動作再開以外のコマンドを無視するのはなぜですか?
A: 通常の速度指定などが届いても停止状態を維持し、動作再開の指示があるまで運転に戻らないようにするためです。
A: 通常の速度指定などが届いても停止状態を維持し、動作再開の指示があるまで運転に戻らないようにするためです。
Q: 動作再開コマンドを受け取れば、直ちに回転速度が決まりますか?
A: この設問で問われているのは、停止状態から動作を再開する機能と、異常時に受け付けるコマンドの制御です。回転速度そのものは、回転速度指定コマンドで指定します。
A: この設問で問われているのは、停止状態から動作を再開する機能と、異常時に受け付けるコマンドの制御です。回転速度そのものは、回転速度指定コマンドで指定します。
関連キーワード: 異常処理、状態遷移、コマンド制御、フェイルセーフ、優先制御




