平成25年春期試験午後問題 問7

問7 組込みシステム開発

⇱問題PDF
ワイヤレス充電ステーションに関する次の記述を読んで,設問1~4に答えよ。
 G社は,携帯機器用のワイヤレス充電ステーション(以下,ステーションという)で稼働する組込みソフトウェアを開発している。
 ワイヤレス充電とは,コネクタなどを介さずに充電する機能である。G社が開発しているのは,ステーションに内蔵された送電コイルに電流を流すことによって,携帯機器に内蔵された受電コイルに電流が発生し,携帯機器が充電されるというものである。

〔ステーションの概要〕
 ステーションの主要部分は,送電コイルに流す電流を制御する送電回路部と,携帯機器との通信を行う近距離無線通信部である。近距離無線通信部は,充電テーブル上に携帯機器が置かれているかどうかを調べ,携帯機器が置かれている場合は,その充電状況を確認する。一度に充電できる携帯機器は1台である。
 ステーションの外観を図1に,ステーションの動作状態と,各状態に応じて表示部に表示される内容を表1に示す。
pm07_1.png
〔携帯機器との通信〕
 待機状態では,充電テーブル上に携帯機器が置かれているかどうかを調べるために,近距離無線通信部で携帯機器との通信を約1秒周期で試みる。通信に成功すると,携帯機器の情報を取得して,ステーション内の RAM に携帯機器情報として記録する。携帯機器情報の構成項目を表2に示す。
pm07_2.png
〔残り充電時間の表示〕
 充電動作状態では,携帯機器情報の電池残量割合の推移から,満充電になるまでの概算残り充電時間を表示部に表示する。残り充電時間は,携帯機器の電池残量の増分が充電時間に比例すると仮定して算出する。推移情報が不十分で残り充電時間を算出できない場合は"--:--"を表示する。

〔ステーションの組込みソフトウェア〕
 開発する組込みソフトウェアのタスク一覧を,表3に示す。
pm07_3.png
 タスクの優先度は1~4の4段階で,値が小さいほど優先度が高い。また,それぞれのタスクは異なる優先度をもつ。主電源スイッチを入れると,メインタスクと安全監視タスクが起動される。
 組込みソフトウェアで使用する送電制御関数を,表4に示す。
pm07_4.png
 メインタスク処理の流れ図を図2に示す。
pm07_5.png
〔安全設計〕
 充電テーブル上に携帯機器の他に金属異物があると,金属異物に電流が流れて熱を帯び,発火などの危険性がある。異常発熱の検出は安全監視タスクが行うが,充電テーブル上に金属異物があっても,充電テーブルと接していない場合は発熱を検出できない。そこで,図2中の下線②異常検出において,送電効率が規定値より低い状態が規定時間以上続いた場合も,異常として検出することにする。送電効率は,次の式で算出する。

  送電効率(%)=受電電力÷送電電力×100

設問1

電池残量割合が43.0%の携帯機器をステーションを使って充電したところ,10分経過した時点で電池残量割合は49.0%に変化した。このときの表示内容を答えよ。

解答例・解答の要点

01:25

解説

電池残量が43.0%の携帯機器をステーションで10分間充電し、電池残量割合が49.0%に変化したときの表示内容を考えます。

まず、ステーションの表示内容について考えます。
問題文の表1「ステーションの動作状態と表示内容」より、充電動作状態の場合は、表示部に「残り充電時間」を表示することがわかります。また表1の注記に「表示形式は"hh:mm"とする」と記載されています。

次に、問題文の〔残り充電時間の表示〕の2行目に記載されている以下の記述に着目します。

「残り充電時間は、携帯機器の電池残量の増分が充電時間に比例すると仮定して算出する」

この記述から、充電が一定速度で行われると仮定して計算できることがわかります。つまり、本設問の残り充電時間は以下の式で求めることが可能です。

 残り充電時間[分] = 100%までの残りの充電量[%] ÷ 1分あたりの充電量[%]

各値は以下の式で求められます。
100%までの残りの充電量[%]
100% - 現在の電池残量割合
100% - 49% = 51%
1分あたりの充電量[%]
10分の充電量[%] ÷ 充電時間[分]
(49% - 43%) ÷ 10分 = 0.6%
したがって、残り充電時間[分]は、

 51% ÷ 0.6% = 85[分] = 1時間25分

表示形式"hh:mm"に合わせると「01:25」となります。

∴01:25

設問2

表3について,(1)~(3)に答えよ。
  • abに入れる適切な数値を答えよ。
  • cに入れる適切な字句を解答群の中から選び,記号で答えよ。
  • dに入れる適切な関数名を,表4から選んで答えよ。
c に関する解答群
  • 温度
  • 湿度
  • 人感

解答例・解答の要点

  • a:4
    b:2
  • c:
  • d:Stop_Power

解説

  • abについて〕
    空欄は、メインタスクとと安全監視タスクの優先度です。

    問題文の〔ステーションの組み込みソフトウェア〕の2行目には、以下の記述があります。
    • タスクの優先度は1~4の4段階で、値が小さいほど優先度が高い。
    • それぞれのタスクは異なる優先度をもつ。
    既に通信タスクには"3"、異常検出状態タスクには"1"が与えられているので、メインタスクとと安全監視タスクには"2"あるいは"4"が当てはまることがわかります。

    メインタスクはシステム全体を制御する役割を持って常時起動しており、必要に応じて別のタスクを呼び出します。優先度方式のタスク制御では、優先度が高いタスクが優先して実行されるので、メインタスクの優先度が他のタスクよりも高いと、他のタスクを起動してもメインタスクに割り込んで実行することができません。本問のシステムでも、「主電源スイッチを入れると,メインタスクと安全監視タスクが起動」されますが、安全監視タスクの優先度がメインタスクの優先度よりも低いと、安全監視機能が正しく動作しません。安全監視タスクは異常検出状態タスクを起動する役割を持つので、メインタスクよりも優先して実行する必要があります。

    本システムでは値が小さいほど優先度が高いので、[a](メインタスク)には"4"が、[b](安全監視タスク)には"2"が当てはまります。

    ※組込みシステム開発では、優先度を解答する問題が頻繁に出題されます。一般的にメインタスク(制御タスク)の優先度は、他のタスクよりも低くなることを覚えておきましょう。

    a=4
     b=2

  • 安全監視タスクで使用するセンサー名が入ります。
    問題文の表3「組み込みソフトウェアのタスク一覧」の安全監視タスクの処理概要には、以下の記述があります。

    「その結果、充電テーブルの異常発熱を検知した場合は、異常検出状態タスクを起動する」

    解答群にある、温度、湿度、人感の3つセンサーの中で、充電テーブル上に置かれている機器の異常発熱を検知できるのは「温度」センサーのみです。よって、[c]には「温度」が入ります。

    c=ア:温度

  • 異常発熱を検知した場合に呼び出す関数名が入ります。
    表4「送電制御関数」より、Start_Power関数、Stop_Power関数、Get_Watt関数の3つの関数があることがわかります。

    送電中に異常発熱(危険)を検知したのですから、(メインタスクの停止させるための)無限ループに入る前に送電を停止しなければなりません。よって、[d]に入るのは送電停止処理を行う「Stop_Power」関数です。

    d=Stop_Power

設問3

図2中の下線①条件は,携帯機器情報のある構成項目を用いて判定する。判定条件を,適切な構成項目を使って10字以内で答えよ。

解答例・解答の要点

機器IDがゼロ (7文字)

解説

図2「メインタスクの処理の流れ図」の①条件に当てはまる条件を考えます。

この条件が"Yes"の場合は、「表示部に"STANDBY"を表示する」ことになっています。表1を見ると"STANDBY"を表示するのは「待機状態」で、待機状態は「充電テーブル上に携帯機器が置かれるまで待機している状態である」とあります。"STANDBY"を表示するのは充電テーブル上に携帯機器が置かれていないときですから、①の分岐は、この状態を正しく判定できる条件となっていなければなりません。

表2「携帯機器情報の構成項目」の「機器ID」の説明を読むと、「充電テーブル上の携帯機器が認識できない場合は、ゼロが設定される」とあります。充電テーブル上に何も置かれていない場合は、機器IDはゼロに設定されるので、これを利用して分岐を行うことが可能です。充電テーブル上に携帯電話が置かれていない場合に"Yes"に分岐するようにしたいので、条件としては「機器IDがゼロ」が適切です。

∴機器IDがゼロ

設問4

図2中の下線②異常検出において,送電効率の算出に必要な受電電力は携帯機器情報の受電電力を用い,送電電力についてはあるソフトウェア処理によって得る。その処理内容を,20字以内で述べよ。

解答例・解答の要点

Get_Watt関数を呼び出す (15文字)

解説

送電効率の算出式中の、送電電力を得るために行う処理を考えます。

表4「送電制御関数」の「Get_Watt」関数の処理概要には、以下の記述があります。

「送電回路で送電している電力値をミリW単位で算出し、戻り値として返す」

この記述から、組込みソフトウェアのGet_Watt関数を呼び出すことで、送電電力量を得られることがわかります。よって、「Get_Watt関数を呼び出す」が適切です。

∴Get_Watt関数を呼び出す
模範解答

Pagetop