応用情報技術者過去問題 平成30年春期 午後問7
⇄問題文と設問を画面2分割で開く⇱問題PDF問7 組込みシステム開発
児童の見守り機能付き防犯ブザーに関する次の記述を読んで,設問1~3に答えよ。
Q社は,児童の見守り機能付き防犯ブザー(以下,防犯ブザーという)を開発している。防犯ブザーは,ストラップを引き抜くとブザーを大音量で鳴動させて周囲に危険を知らせる機能,ブザーが鳴動開始した場合及び鳴動停止した場合に,その動作(以下,ブザー動作という)をサーバに通知する機能,及びGPSで測位した緯度・経度をサーバに通知(以下,位置登録という)することを定期的に行う機能をもつ。サーバとの通信は,携帯電話回線経由で行う。
保護者は,利用者IDとパスワードでサーバにログインして,ブザー動作の通知を電子メールで受信するためのメールアドレスを登録したり,防犯ブザーの位置を地図画面で確認したりすることができる。
防犯ブザーの外観とシステムの構成を図1に示す。〔防犯ブザーの構成〕
防犯ブザーは,省電力機能を備えたMPU,日付時刻用タイマ,ブザー,挿抜式のストラップ,GPSユニット,移動検出ユニット,通信部,充電式電池,及び充電のためのUSB端子で構成される。
MPUは,通常モード及び省電力モードの二つのモードをもち,省電力モードに移行する命令を実行すると,消費電力の少ない省電力モードに移行する。省電力モードで割込みが発生すると,通常モードに復帰する。
MPUは,16ビットタイマをもつ。このタイマはダウンカウンタで,カウンタに値を設定して動作を開始すると,カウント値が0になった次のカウントクロックで割込みを発生させる。また,このタイマのカウントクロックはMPUの動作クロックを32分周した信号である。
なお,MPUの動作クロックは,16MHzである。
日付時刻用タイマは,1秒単位で日付時刻を設定することができる。日付時刻を設定して動作を開始すると,設定した日付時刻になったときに割込みを発生させる。
移動検出ユニットは,一定以上の揺れを検出するたびに,防犯ブザーが移動しているものとして割込みを発生させる。
〔防犯ブザーの仕様〕
〔防犯ブザーのソフトウェア構成〕
防犯ブザーの組込みソフトウェアには,リアルタイムOSを使用する。防犯ブザーの主な割込みハンドラの処理概要を表1に,防犯ブザーの主なタスクの処理概要を表2に,それぞれ示す。〔メインタスクの主な処理〕
Q社は,児童の見守り機能付き防犯ブザー(以下,防犯ブザーという)を開発している。防犯ブザーは,ストラップを引き抜くとブザーを大音量で鳴動させて周囲に危険を知らせる機能,ブザーが鳴動開始した場合及び鳴動停止した場合に,その動作(以下,ブザー動作という)をサーバに通知する機能,及びGPSで測位した緯度・経度をサーバに通知(以下,位置登録という)することを定期的に行う機能をもつ。サーバとの通信は,携帯電話回線経由で行う。
保護者は,利用者IDとパスワードでサーバにログインして,ブザー動作の通知を電子メールで受信するためのメールアドレスを登録したり,防犯ブザーの位置を地図画面で確認したりすることができる。
防犯ブザーの外観とシステムの構成を図1に示す。〔防犯ブザーの構成〕
防犯ブザーは,省電力機能を備えたMPU,日付時刻用タイマ,ブザー,挿抜式のストラップ,GPSユニット,移動検出ユニット,通信部,充電式電池,及び充電のためのUSB端子で構成される。
MPUは,通常モード及び省電力モードの二つのモードをもち,省電力モードに移行する命令を実行すると,消費電力の少ない省電力モードに移行する。省電力モードで割込みが発生すると,通常モードに復帰する。
MPUは,16ビットタイマをもつ。このタイマはダウンカウンタで,カウンタに値を設定して動作を開始すると,カウント値が0になった次のカウントクロックで割込みを発生させる。また,このタイマのカウントクロックはMPUの動作クロックを32分周した信号である。
なお,MPUの動作クロックは,16MHzである。
日付時刻用タイマは,1秒単位で日付時刻を設定することができる。日付時刻を設定して動作を開始すると,設定した日付時刻になったときに割込みを発生させる。
移動検出ユニットは,一定以上の揺れを検出するたびに,防犯ブザーが移動しているものとして割込みを発生させる。
〔防犯ブザーの仕様〕
- ストラップの引抜き(以下,抜去という)が発生するとブザーの鳴動を開始し,ストラップの差込み(以下,挿入という)が発生するとブザーの鳴動を停止する。
- 防犯ブザーが通信圏外にある場合は,位置登録及びブザー動作のサーバへの通知は行わない。
- 防犯ブザーが通信圏内にある場合は,定期的に位置登録を行う。また,ブザー動作を行ったときは,その内容をサーバに通知する。
- 通信圏内では,移動状態又は静止状態の,いずれかの状態をとる。移動状態では,位置登録の周期(以下,登録周期という)を5分にする。静止状態では,消費電力の低減を図るために登録周期を30分にする。通信圏外から通信圏内に入った直後は,状態を静止状態にする。
- 静止状態で移動を検出すると,直ちに位置登録を行い,状態を移動状態にする。
- 移動状態で,登録周期中に一度も移動を検出しなかったときは,位置登録を行った後,状態を静止状態にする。
〔防犯ブザーのソフトウェア構成〕
防犯ブザーの組込みソフトウェアには,リアルタイムOSを使用する。防犯ブザーの主な割込みハンドラの処理概要を表1に,防犯ブザーの主なタスクの処理概要を表2に,それぞれ示す。〔メインタスクの主な処理〕
- 通信圏外にある場合に,通信タスクから通信圏内となったことを通知されると,状態を静止状態にして位置登録を行い,登録周期の計測を開始して移動検出割込みを許可する。
- 移動を検出したことが通知されると,移動検出割込みを禁止する。その後,防犯ブザーの状態に従って次の処理を行う。
- 静止状態であれば,aを行い,状態を移動状態にしてbを変更した後,移動を検出したことを記憶するメモリ領域(以下,移動検出情報という)をクリアして,移動検出割込みを許可する。
- 移動状態であれば,移動検出情報のセットだけを行い,移動検出割込みは禁止したままとする。
- 移動状態で位置登録のタイミングであることが通知されると,①移動検出情報を確認して処理を行う。その後,移動検出情報をクリアして移動検出割込みを許可する。
- 通信圏外であることが通知されると,移動検出割込みを禁止し,登録周期の計測を停止する。
設問1
防犯ブザーの動作について,(1),(2)に答えよ。
- 通信圏内にある防犯ブザーが,ある日の午前8時00分に静止状態から移動状態となった。防犯ブザーが次に静止状態になったのは午前8時20分であり,その後,同日の午前9時20分まで静止状態のままであった。防犯ブザーが午前8時台に位置登録を行った回数は何回か。整数で求めよ。
- 通信圏内にある防犯ブザーが,5分よりも短い間隔で位置登録を行うことがある。それはどのようなときか。40字以内で述べよ。
解答入力欄
- 回
解答例・解答の要点
- 6
- 静止状態で位置登録を行った後,5分経過する前に移動を検出したとき (32文字)
解説
- 設問(1)の条件から、防犯ブザーは下記の時刻に状態遷移しています。
- 8時00分 静止状態から移動状態へ遷移
- 8時20分 移動状態から静止状態へ遷移
- 9時20分まで静止状態のまま
・「静止状態で移動を検出すると,直ちに位置登録を行い,状態を移動状態にする」
→8時00分に位置登録を行った。
・「移動状態では,位置登録の周期を5分にする」
→8時05分、8時10分、8時15分に位置登録を行った。
・「移動状態で,登録周期中に一度も移動を検出しなかったときは, 位置登録を行った後,状態を静止状態にする」
→8時15分の次の登録周期である8時20分までに移動を検出しなかった。
8時20分に位置登録を行った後、静止状態になった。
・「静止状態では,消費電力の低減を図るために登録周期を30分にする」
→静止状態に遷移した30分後の8時50分に位置登録を行った。
8時50分の次の登録周期は9時20分ですので、9時00分までに位置登録は行っていない。
以上から、防犯ブザーが午前8時台に位置登録を行った回数は、8時00分、8時05分、8時10分、8時15分、8時20分、8時50分の合計6回になります。
∴6 - 通信圏内で静止状態から移動状態に遷移する際には、登録周期に関係なく必ず位置登録が行われます。つまり静止状態で位置登録が行われた後、5分以内に移動を検出したときには、5分よりも短い間隔で位置登録が行われることになります。
∴静止状態で位置登録を行った後,5分経過する前に移動を検出したとき
設問2
タイマタスクの設計に関する検討について,(1),(2)に答えよ。
- 登録周期の計測に16ビットタイマを用いて100ミリ秒を計測し,16ビットタイマ割込みの発生が通知された回数を数えて位置登録のタイミングを通知する方式を考えてみた。この場合に,16ビットタイマのカウント値に設定する値を10進数で求めよ。ここで,1MHz=106Hzとし,ソフトウェアの動作時間は考慮しなくてよいものとする。
- 検討の結果,登録周期の計測には16ビットタイマを使用せず,日付時刻用タイマを使用することにした。日付時刻用タイマを使用する理由を20字以内で述べよ。
解答入力欄
解答例・解答の要点
- 49,999
- 消費電力を小さくできるから (13文字)
解説
- まず、問題文に、
- MPUの動作クロックが16MHz
- タイマのカウントクロックはMPUの動作クロックを32分周(1/32)した信号
16,000,000÷32=500,000(カウント)
とわかります。
計測したい時間間隔は100ミリ秒ですので、必要なカウント数は以下のように計算できます。
500,000×1/10=50,000(カウント)
ここで、問題文中に16ビットカウントタイマの動作として「カウンタ値が0になった次のカウントクロックで割込みを発生させる」(つまり、カウント値が0になってから割込みが発生するまでに追加の1カウントが生じる)と説明されていることに注意します。もし目的のカウント数が10のときにカウンタ値を10に設定してしまうと、10→9→8→…→0→割込み というように割込みの発生は11カウント後になってしまいます。
このためちょうど50,000カウント(100ミリ秒)後に割込みを発生させるには、目的のカウント数よりも1小さい49,999をカウンタ値として設定しなければなりません。
∴49,999 - 16ビットカウントタイマはMPUに内蔵されており、カウントされる度に割込みを発生させます。MPUは割込みを検知すると、省電力モードから通常モードに復帰するので、16ビットカウントタイマを用いた場合には通信圏内でのカウント中は常に通常モードでの利用になります。これに対して、日付時刻用タイマでは設定時刻になったときにだけ割込みを発生させるので、カウント中でもMPUはアイドル状態になり省電力モードへと切り替わります。
以上より、「MPUの消費電力を小さくできる」ことが日付時刻用タイマを用いる理由であると結論づけられます。
∴消費電力を小さくできるから
設問3
〔メインタスクの主な処理〕について,(1),(2)に答えよ。
- 本文中のa,bに入れる適切な字句を答えよ。
- 本文中の下線①について,移動検出情報がセットされていないときだけ,メインタスクがタイマタスクに行う要求を,表2中の字句で答えよ。
解答入力欄
- a:
- b:
解答例・解答の要点
- a:位置登録
- b:登録周期
- 登録周期の変更
解説
- 〔aについて〕
問題文中の「静止状態で移動を検出すると,直ちに位置登録を行い,状態を移動状態にする」という記述からaに位置登録が入るとわかります。
∴a=位置登録
〔bについて〕
問題文中の「移動状態では,位置登録の周期(以下,登録周期)を5分にする」という記述から、静止状態から移動状態に切り替わった際に変更するのは登録周期であるとわかります。
∴b=登録周期 - 移動情報がセットされていないということは、前回の位置登録から登録周期の5分間、一度も移動を検出しなかったということです。このとき、防犯ブザーは位置登録を行った後、状態を静止状態に変更します。
メインタスクからタイマタスクへの要求には、「登録周期の計測開始」「登録周期の計測停止」「登録周期の変更」がありますが、この場合にメインタスクから行うべき要求は登録周期の変更です。なぜなら、静止状態への切り替わりに伴い、移動状態では5分だった登録周期を静止状態の30分に変更しなくてはならないからです。
∴登録周期の変更