応用情報技術者過去問題 令和6年春期 午後問7
⇄問題文と設問を画面2分割で開く⇱問題PDF問7 組込みシステム開発
業務用ホットコーヒーマシンに関する次の記述を読んで,設問に答えよ。
G社は,業務用ホットコーヒーマシン(以下,コーヒーマシンという)を開発している。コーヒーマシンの外観を図1に,コーヒーマシンの内部構成を図2に,コーヒーマシンの主な構成要素を表1に,それぞれ示す。![pm07_1.png/image-size:549×252](img/pm07_1.png)
〔カップ判定の仕様〕
カップ判定は,利用者がドアを閉じた時に,カメラでカップ載置部を複数回撮影して行う。カップ判定の結果一覧を,表2に示す。
〔ドアの開閉状態の判定仕様〕
ドアの開閉センサーは,ドアが完全に閉じているときは0,それ以外は1を出力する。非常に短い間隔で0と1とを交互に出力することがあるので,制御部のソフトウェアは入力された値を10ミリ秒間隔で読み出し,4回連続で同じ値が読み出されたらドアの開閉状態を確定する。
〔コーヒーマシンの動作概要〕
コーヒーマシンの動作概要を次に示す。
カップ判定の結果が"カップあり"又は"障害物あり"の場合,カップ判定の結果に応じた適切な画面をタッチパネルに表示する。
〔制御部のソフトウェア構成〕
制御部のソフトウェアは,リアルタイムOSを用いて実装する。制御部の主なタスクの処理概要を表3に示す。![pm07_4.png/image-size:600×337](img/pm07_4.png)
G社は,業務用ホットコーヒーマシン(以下,コーヒーマシンという)を開発している。コーヒーマシンの外観を図1に,コーヒーマシンの内部構成を図2に,コーヒーマシンの主な構成要素を表1に,それぞれ示す。
![pm07_1.png/image-size:549×252](img/pm07_1.png)
![pm07_2.png/image-size:546×293](img/pm07_2.png)
カップ判定は,利用者がドアを閉じた時に,カメラでカップ載置部を複数回撮影して行う。カップ判定の結果一覧を,表2に示す。
![pm07_3.png/image-size:581×158](img/pm07_3.png)
ドアの開閉センサーは,ドアが完全に閉じているときは0,それ以外は1を出力する。非常に短い間隔で0と1とを交互に出力することがあるので,制御部のソフトウェアは入力された値を10ミリ秒間隔で読み出し,4回連続で同じ値が読み出されたらドアの開閉状態を確定する。
〔コーヒーマシンの動作概要〕
コーヒーマシンの動作概要を次に示す。
- 電源が入ると,初期化処理を行う。初期化処理が完了したら待機中となり,カップをカップ載置部に置くように促す画面をタッチパネルに表示する。
- 利用者がドアを開けて,購入したカップをカップ載置部に置く。
- 利用者がドアを閉じると,カップ判定を行う。
- カップ判定の結果が"空カップあり"となるので,カップのサイズを表す文字と,確認ボタンで構成される画面をタッチパネルに表示する。
- 利用者が確認ボタンにタッチすると,aし,カップのサイズに応じた分量のコーヒーを抽出してコーヒー排出口からカップに注ぎ込む。タッチパネルには,抽出中であることを示す画面を表示する。
- コーヒーの排出が終わると,ドアをロック解除し,タッチパネルにカップの引取りを促す画面を表示する。
- 利用者がドアを開け,カップを引き取る。
- 利用者がドアを閉じると,カップ判定を行う。
- カップ判定の結果が"カップなし"となるので,待機中に戻る。
カップ判定の結果が"カップあり"又は"障害物あり"の場合,カップ判定の結果に応じた適切な画面をタッチパネルに表示する。
〔制御部のソフトウェア構成〕
制御部のソフトウェアは,リアルタイムOSを用いて実装する。制御部の主なタスクの処理概要を表3に示す。
![pm07_4.png/image-size:600×337](img/pm07_4.png)
設問1
コーヒーマシンについて答えよ。
- 本文中のaに入れる,適切なコーヒーマシンの動作を答えよ。
- 開閉センサーの出力を読み出す周期を,周波数32kHzのカウントダウンタイマー(以下,タイマーという)を用いて計っている。このタイマーは,あらかじめ設定された初期値からカウントダウンを行い,カウント値が0になったら,次のカウントダウンまでの間に初期値をリロードして動作を継続する。タイマーに設定する初期値は幾つか,整数で求めよ。ここで,1k=103とする。
解答入力欄
- a:
解答例・解答の要点
- a:ドアをロック
- 320
解説
- 〔aについて〕
空欄にはタッチパネルの確認ボタンを押した後、コーヒーがカップに注ぎ込まれるまでに必要な動作が入ります。〔コーヒーマシンの動作概要〕(6)には「コーヒーの抽出が終わると,ドアをロック解除し」とあります。表1より、ドアには閉じた状態でロックできる機構があることがわかっていますが、ロックの解除はあるのに、その前にドアをロックしている処理が存在しません。この矛盾と動作のタイミングがコーヒー抽出の直前である点から、空欄aには「ドアをロック」が入ると判断できます。
∴a=ドアをロック - ドアタスクが開閉センサーの出力を読み出す周期は、〔ドアの開閉状態の判定仕様〕の記述や表3の"ドア"タスクの処理概要より10ミリ秒とわかります。カウントダウン周期は周波数32kHzなので、1周期(1Hz)は 1/32000 [秒] です。したがって、10ミリ秒のカウントに必要な周期数は、
10 [ミリ秒] ÷ 132000 [秒]
= 10 [ミリ秒] ÷ 132 [ミリ秒]
= 10×321 = 320
したがって、カウントの初期値は「320」に設定することになります。
∴320
【補足】
カウントダウンタイマーの動作を確認すると、問題文には「カウント値が0になって次のカウントダウンまでの間に初期値がリロードされる」とあります。そのため、カウントが0になった次のカウントダウンでは、カウントが「初期値 - 1」になります。例えば初期値が3だった場合、次のような動作を繰り返します。- カウントダウンを行い、カウント値が0になる
- 初期値3がリロードされる
- カウントダウンを行い、カウント値が2になる
- カウントダウンを行い、カウント値が1になる
- カウントダウンを行い、カウント値が0になる
設問2
制御部のタスクについて答えよ。![pm07_5.png/image-size:562×143](img/pm07_5.png)
- カップ判定タスクは,メインタスク及びドアタスクよりも優先度を低くしている。その理由を30字以内で答えよ。
- メインタスクが抽出タスクに"抽出"を通知する際のパラメータとして,必要な情報を答えよ。
- 開閉センサーの出力と,ドアタスクの動作タイミングの例を図3に示す。図3中の,アの時点でドアタスクが保持しているドアの開閉状態が開状態であるとき,ドアタスクがメインタスクに"ドア開"及び"ドア閉"を通知するタイミングを,それぞれ,ア~テの記号で答えよ。
![pm07_5.png/image-size:562×143](img/pm07_5.png)
解答入力欄
- ドア開:
- ドア閉:
解答例・解答の要点
- カップ判定中にドアが開けられたことを検出したいから (25文字)
- コーヒーの分量
- ドア開:タ
- ドア閉:カ
解説
- リアルタイムOSでは、静的優先度順方式のタスクスケジューリングを行います。優先度順方式では、より優先度の高いタスクにCPUの使用権が与えられるため、実行中のタスクより優先度の高いタスクが実行可能状態になると、優先度の低いタスクは中断され、優先度の高いタスクが実行状態に移ります。優先度を適切に設定することで、複数のタスクが競合した際の動作を制御します。
カップ判定タスクの優先度が、メインタスク・ドアタスクよりも低いということは、メインタスク・ドアタスクの実行が優先されるということです。これらのタスクが競合する場面を本文中から探すと、「カップ判定中に利用者がドアを開けた場合は,カップ判定を中止し,利用者がドアを閉じるのを待つ」という仕様があります。表3の処理概要を踏まえれば、カップ判定中にドアが開けられたときは、次のように動作しなくてはなりません。- ドアタスクは、開閉センサーで"ドア開"を検出する
- ドアタスクは、メインタスクに"ドア開"を通知する
- メインタスクは、カップ判定タスクに"中止"を通知する
- カップ判定タスクは、カップ判定を中止する
以上より、カップ判定タスクの優先度を低くする理由は「カップ判定中にドアが開いたことを検出したいから」となります。「ドアが開いたときにカップ判定を中止させたいから」でも良いと思います。
∴カップ判定中にドアが開けられたことを検出したいから - 抽出タスクはメインタスクから"抽出"を受けると、抽出部を起動して抽出を開始します。この"抽出"で受け渡すべきパラメータが問われています。
抽出するコーヒーの分量はカップのサイズによって異なるので、適切な量を選択するには抽出タスクではコーヒーの量を識別できる情報が必要です。カップのサイズはメインタスクが保持しているため、メインタスクから抽出タスクにはコーヒーの量に関するパラメータを受け渡すべきであると考えられます。渡すべきパラメータとしては、カップのサイズ、コーヒーの分量、カップ判定の結果など様々考えられますが、表1には抽出部の説明として「制御部から指示された分量のコーヒーを抽出し,…」とあるため、抽出タスクには直接「コーヒーの分量」をパラメータとして受け渡すと判断できます。
∴コーヒーの分量 - 〔ドアの開閉状態の判定仕様〕には「ドアの開閉センサーは,ドアが完全に閉じているときは0,それ以外は1を出力する」とあります。よって、図3の出力1は"ドア開"状態、出力0は"ドア閉"状態を示しています。ドアの開閉状態が確定するのは「4回連続で同じ値が読み出された」場合なので、"4回連続"に注意して左から順に確認していきます。ア時点の開状態から、カのタイミングで"ドア閉"が確定し、タのタイミングで"ドア開"が確定することがわかります。したがって、"ドア開"のタイミングは「タ」、"ドア閉"のタイミングは「カ」となります。なお、キ~コの間にも4回連続で0となりますが、"ドア閉"状態のままで変化はないので通知はされません。
∴ドア開=タ
ドア閉=カ
設問3
図4に示すメインタスクの状態遷移について答えよ。![pm07_6.png/image-size:528×264](img/pm07_6.png)
![pm07_6.png/image-size:528×264](img/pm07_6.png)
- メインタスクがドアタスクに通知を行うのは,何のメッセージを受けたときか。図4中のメッセージ名で全て答えよ。
- 図4中のbに入れる適切なメッセージ名を,表3中の字句で答えよ。
解答入力欄
- b:
解答例・解答の要点
- "確認","抽出完了"
- b:判定結果
解説
- 表3のドアタスク処理概要から、メインタスクがドアタスクに通知するメッセージは"ロックと"ロック解除"とわかります。〔コーヒーマシンの動作概要〕(5)より、ロックは「❶利用者が確認ボタンをタッチしたとき」、(6)よりロック解除は「❷コーヒーの排出が終わったとき」に行います。つまり、コーヒー抽出の前後です。
表3より、メインタスクが❶を認識するのはタッチパネルタスクが"確認"を通知したとき、同じく❷を認識するのは抽出タスクが"抽出完了"を通知したときです。メインタスクは"確認"を受けるとドアタスクに"ロック"を通知し、"抽出完了"を受けるとドアタスクに"ロック解除"を通知する流れになります。したがって、"確認"・"抽出完了"という2つのメッセージが適切です。図4中で"抽出中"の前後に位置するメッセージであることからも、ロックとロック解除に適切なタイミングであることが確認できます。
∴"確認","抽出完了" - 〔bについて〕
空欄の条件で遷移する前の状態は"中止待ち"で、これは"カップ判定"状態から"ドア開"を受けて遷移する状態です。"中止待ち"状態は、メインタスクがカップ判定タスクに"中止"を通知した後、中止するのを待っている状態であると考えられます。カップ判定タスクの処理概要には、"中止"を受けてから中止するまで最大5ミリ秒の時間がかかるとあり、その間を待期することになります。このとき、処理のタイミングによっては"中止完了"より前に"判定結果"を受け取る可能性があります。"判定結果"を先に受けた場合、その時点でカップ判定処理は終了しているので、このタイミングで中止が完了したとみなして問題ありません。
また、"判定結果"と"中止"がほぼ同時に通知された場合、カップ判定タスクでは"中止"通知が無視されるため、メインタスクは永遠に"中止完了"通知を受け取ることはできません。これを回避するためにも遷移条件に「判定結果」を加える必要があります。以上より、空欄bには「判定結果」が当てはまります。
∴b=判定結果
![問7成績](img/pm07_result.png)