令和6年度 春期 応用情報技術者試験 午後 問7 コーヒーマシンのタスク設計と安全制御

テクノロジ組込み・IoT

この問題は2024(R6)春 応用情報技術者 午後に出題されたものです。出題時点の法令・制度に基づく内容のため、現行の内容と一致しない場合があります。

本ページの問題文・選択肢は、原本の体裁を Web 表示用に正規化しています(改行・記号・数式・図表参照の調整)。設問の趣旨および正解に影響する変更は加えていません。

学習ガイド

業務用ホットコーヒーマシンを題材にした組込みシステムの問題で、熱湯を扱う機器ならではの安全確保がタスク設計の軸になります。開閉センサーの出力波形からドア状態の確定タイミングを読み取る設問や、カップ判定タスクの優先度を低くする理由など、リアルタイムOSの動作を波形・表と結び付けて考えさせる構成です。この記事ではタイマーの計算も含め、図3の時点記号を一つずつたどりながら解答を導きます。

この記事で押さえる論点

  • カップ判定・ドア開閉などセンサー入力とタスクの役割を対応付ける
  • タスク優先度の設定理由を応答性と安全性から説明する
  • チャタリングを考慮した開閉判定のタイミングを読み取る

問題本文

問7 業務用ホットコーヒーマシンに関する次の記述を読んで、設問に答えよ。

G社は、業務用ホットコーヒーマシン(以下,コーヒーマシンという)を開発している。コーヒーマシンの外観を図1に,コーヒーマシンの内部構成を図2に,コーヒーマシンの主な構成要素を表1に,それぞれ示す。

図1 コーヒーマシンの外観
図の説明テキスト

コーヒーマシンの外観を示す模式図。天面に「制御部」、前面上部に「タッチパネル」、内部に「抽出部」、前面中央に「コーヒー排出口」と「ドア」、排出口下部に「カップ載置部」、その奥に「カメラ」が配置されている。

図2 コーヒーマシンの内部構成
図の説明テキスト

コーヒーマシンの内部構成を示すブロック図。「制御部」のボックスから線が分岐し、「タッチパネル」「抽出部」「ドア」「カメラ」「カップ載置部」の各ボックスが縦に並んで接続されている。

表1 コーヒーマシンの主な構成要素
図の説明テキスト
構成要素名 概要
制御部 ・コーヒーマシン全体の制御及び状態管理を行う。また,カップの有無やサイズ,カップが空か否かを判定(以下,カップ判定という)するための画像認識を行う。
タッチパネル ・制御部から指示された画面を表示する。
・利用者がタッチした座標情報を制御部に通知する。
抽出部 ・制御部から指示された分量のコーヒーを抽出し,コーヒー排出口から排出する。
ドア ・開閉センサーをもち,開閉状態を 0/1 のデジタル信号で制御部に入力する。
・ドアを閉じた状態でロックすることができるロック機構をもつ。ロック機構は,制御部からの指示でロック及びロック解除ができる。ロック及びロック解除に掛かる時間は無視できるほど小さいものとする。
カップ載置部 ・コーヒー排出口から排出されたコーヒーを受けるカップを置く場所である。
カメラ ・カップ載置部を撮影するカメラで,制御部からの指示で撮影を行い,制御部と共有するメモリに画像データを書き出す。

〔カップ判定の仕様〕

カップ判定は,利用者がドアを閉じた時に,カメラでカップ載置部を複数回撮影して行う。カップ判定の結果一覧を,表2に示す。

表2 カップ判定の結果一覧
図の説明テキスト
結果 概要
カップなし ・カップ載置部に何も置かれていないことを示す。
空カップあり ・専用の紙カップが、空の状態でカップ載置部に置かれていることを示す。この結果には,カップのサイズ(大,中,小)が付加される。
カップあり ・専用の紙カップが空でない状態でカップ載置部に置かれていることを示す。
障害物あり ・専用の紙カップ以外の物がカップ載置部に置かれていることを示す。

〔ドアの開閉状態の判定仕様〕

ドアの開閉センサーは,ドアが完全に閉じているときは 0,それ以外は 1 を出力する。非常に短い間隔で 0 と 1 とを交互に出力することがあるので,制御部のソフトウェアは入力された値を 10 ミリ秒間隔で読み出し,4 回連続で同じ値が読み出されたらドアの開閉状態を確定する。

〔コーヒーマシンの動作概要〕

コーヒーマシンの動作概要を次に示す。
(1) 電源が入ると,初期化処理を行う。初期化処理が完了したら待機中となり,カップをカップ載置部に置くように促す画面をタッチパネルに表示する。
(2) 利用者がドアを開けて,購入したカップをカップ載置部に置く。
(3) 利用者がドアを閉じると,カップ判定を行う。
(4) カップ判定の結果が “空カップあり” となるので,カップのサイズを表す文字と,確認ボタンで構成される画面をタッチパネルに表示する。
(5) 利用者が確認ボタンにタッチすると,aし,カップのサイズに応じた分量のコーヒーを抽出してコーヒー排出口からカップに注ぎ込む。タッチパネルには,抽出中であることを示す画面を表示する。
(6) コーヒーの排出が終わると,ドアをロック解除し,タッチパネルにカップの引き取りを促す画面を表示する。
(7) 利用者がドアを開け,カップを引き取る。
(8) 利用者がドアを閉じると,カップ判定を行う。
(9) カップ判定の結果が “カップなし” となるので,待機中に戻る。

ここで,カップ判定中に利用者がドアを開けた場合は,カップ判定を中止し,利用者がドアを閉じるのを待つ。また,確認ボタンがタッチされる前に,利用者がドアを開けた場合は,カップ判定の結果を破棄して,利用者がドアを閉じるのを待つ。

カップ判定の結果が“カップあり”又は“障害物あり”の場合,カップ判定の結果に応じた適切な画面をタッチパネルに表示する。

〔制御部のソフトウェア構成〕

制御部のソフトウェアは,リアルタイムOSを用いて実装する。制御部の主なタスクの処理概要を表3に示す。

表3 制御部の主なタスクの処理概要
図の説明テキスト
タスク名 処理概要
メイン ・コーヒーマシンの状態管理を行う。
カップ判定 ・メインタスクから“判定”を受けると,カメラで複数回撮影を行い,得られた画像データを用いてカップ判定を行った後,結果を“判定結果”でメインタスクに通知する。判定に掛かる時間は,300ミリ秒以上500ミリ秒以下である。
・カップ判定中にメインタスクから“中止”を受けると,5ミリ秒以内にカップ判定を中止して“中止完了”をメインタスクに通知する。カップ判定中以外で“中止”を受けたときは無視する。
抽出 ・メインタスクから“抽出”を受けると,抽出部を起動して抽出を開始し,抽出部から抽出終了を受信するまで待つ。
・抽出終了を受信すると,コーヒーの排出が終了したと判断し,抽出部を停止して“抽出完了”をメインタスクに通知する。
タッチパネル ・メインタスクから“画面表示”を受けると,指定された画面をタッチパネルに表示する。
・利用者が確認ボタンに触れたことを検出すると,“確認”をメインタスクに通知する。
ドア ・開閉センサーの出力を10ミリ秒周期で読み出し,確定したドアの開閉状態を保持する。
・確定したドアの開閉状態が変化したら,“ドア開”又は“ドア閉”をメインタスクに通知する。
・メインタスクから“ロック”又は“ロック解除”を受けると,ロック機構を操作して,ドアをロック又はロック解除する。
図3 開閉センサーの出力と,ドアタスクの動作タイミングの例
図の説明テキスト

開閉センサーの出力を示す実線の矩形波と、ドアタスクの動作タイミングを示す破線の縦線からなるタイムチャート。縦軸は0と1。横軸は時間で、10ミリ秒間隔で破線が引かれている。各動作タイミングにはアからテまでのカタカナ記号が振られている。

図4 メインタスクの状態遷移
図の説明テキスト

メインタスクの状態遷移を示す状態遷移図。

  • 「待機中」から「ドア閉」で「カップ判定」へ遷移。
  • 「中止待ち」から「“中止完了”又は“b”」で「ドア開」へ遷移。
  • 「中止待ち」から「ドア開」で「カップ判定」へ遷移。
  • 「カップ判定」から「“判定結果”(カップなし)」で「待機中」へ遷移。
  • 「カップ判定」から「“判定結果”(空カップあり)」で「確認待ち」へ遷移。
  • 「カップ判定」から「“判定結果”(カップあり 又は 障害物あり)」で「引取り待ち」へ遷移。
  • 「ドア開」から「ドア閉」で「カップ判定」へ遷移。
  • 「確認待ち」から「“確認”」で「抽出中」へ遷移。
  • 「確認待ち」から「“ドア開”」で「ドア開」へ遷移。
  • 「抽出中」から「“抽出完了”」で「引取り待ち」へ遷移。
  • 「引取り待ち」から「“ドア閉”」で「カップ判定」へ遷移。

設問と解答・解説

設問1

コーヒーマシンについて答えよ。

(1)

本文中の a に入れる,適切なコーヒーマシンの動作を答えよ。

模範解答

ドアをロック

採点基準(配点 3点)

知識・理解度(内容)(2点)

  • 2: 「ドアのロック」または同等の安全確保動作を正しく示している。
  • 1: 動作の対象または動作のいずれかが不明確。
  • 0: 安全確保に関わらない動作を解答している、または無解答。

論理性(構造)(1点)

  • 1: 動作を示す適切な表現となっている。
  • 0: 動作として意味が通らない、または無解答。

解説

コーヒーマシンの動作に関する空所補充問題です。

安全確保のための仕組みとして、抽出中に利用者が火傷などを負わないよう、抽出前にドアをロックし、完了後にロックを解除する動作が必要です。

高得点のポイント

  • 利用者の安全を考慮し、ドアをロックする動作を的確に表現すること。

(2)

開閉センサーの出力を読み出す周期を,周波数 32kHz32\text{kHz} のカウントダウンタイマー(以下,タイマーという)を用いて計っている。このタイマーは,あらかじめ設定された初期値からカウントダウンを行い,カウント値が 0 になったら,次のカウントダウンまでの間に初期値をリロードして動作を継続する。タイマーに設定する初期値は幾つか,整数で求めよ。ここで,1k=1031\text{k}=10^3とする。

模範解答

320

配点 3

解説

カウントダウンタイマーの初期値設定に関する問題です。

問題文より、タイマーの周波数は 32kHz32\text{kHz} (32000Hz32000\text{Hz}) です。これは1秒間に32000回カウントダウンを行うことを意味します。

周期が 10ms10\text{ms} (0.010.01秒) である場合、タイマーの初期値は 32000×0.01=32032000 \times 0.01 = 320 となります。

したがって、設定する初期値は 320 です。

各選択肢の解説

  • ※数値解答のため選択肢の解説はありませんが、計算ミスのないよう単位変換(k=103\text{k}=10^3ms=103\text{ms}=10^{-3} など)に注意しましょう。

設問1(2)は,正答率が平均的であった。タイマーのカウント値をリロードするタイミングに関する考慮が不足している解答が散見された。設問のカウントダウンタイマーの仕組みに留意して解答してほしい。

設問2

制御部のタスクについて答えよ。

(1)

カップ判定タスクは,メインタスク及びドアタスクよりも優先度を低くしている。その理由を 30 字以内で答えよ。

模範解答

カップ判定中にドアが開けられたことを検出したいから

採点基準(配点 3点)

知識・理解度(内容)(2点)

  • 2: カップ判定中という状況と、ドア開という事象の検出目的が明確に記述されている。
  • 1: ドア開の検出には触れているが、カップ判定中という状況の記述が欠けている、または曖昧。
  • 0: タスクの優先度設計と無関係な理由、または無解答。

論理性(構造)(1点)

  • 1: 理由として論理的で分かりやすい構成となっている。
  • 0: 文脈が不自然で理由として成立していない、または無解答。

解説

リアルタイムOSにおけるタスク優先度の設計理由を問う問題です。

優先度の低いタスク(カップ判定タスク)を実行中に、安全確保などのためにより優先度の高いタスク(ドアタスク)の起動条件が発生した場合、プリエンプション(実行権の移行) を発生させる必要があります。

カップの判定を行っている最中でも、ドアが開けられた場合は即座にそれを検知して処理を中断するなどの対応が求められます。

高得点のポイント

  • 「カップ判定中」という特定のタイミングを明記すること。

  • 「ドアが開けられたこと」を検出・優先処理したいという目的を簡潔に表現すること。

(2)

メインタスクが抽出タスクに“抽出”を通知する際のパラメータとして,必要な情報を答えよ。

模範解答

コーヒーの分量

採点基準(配点 3点)

知識・理解度(内容)(2点)

  • 2: 抽出タスクへの通知において、分量の情報が必要であることを正しく理解している。
  • 1: コーヒーに関するパラメータであることは分かるが、「分量」という核心部分の表現が不十分。
  • 0: 全く無関係な情報を記載している、または無解答。

論理性(構造)(1点)

  • 1: 通知パラメータとして適切な名詞・体言止めで表現されている。
  • 0: パラメータとしての記載形式になっていない、または無解答。

解説

タスク間通信におけるメッセージ・パラメータに関する問題です。

メインタスクから抽出タスクに対して「抽出」を指示する際、ただ抽出を開始するだけでなく、「どれくらいの量」を抽出するかの指定が必要です。

したがって、通知する際のパラメータとしては コーヒーの分量 が適切です。

高得点のポイント

  • 抽出処理を具体的に制御するために不可欠な「分量」という情報を明記すること。

(3)

開閉センサーの出力と,ドアタスクの動作タイミングの例を図3に示す。図3中の,アの時点でドアタスクが保持しているドアの開閉状態が開状態であるとき,ドアタスクがメインタスクに“ドア開”を通知するタイミングを,ア〜テの記号で答えよ。

模範解答

選択肢タ: タ

配点 1

解説

タイマーとセンサ出力を元にしたタスクの動作タイミングに関する問題です。

ドアタスクは周期的にセンサの出力を読み取り、状態の変化を検出してメインタスクに通知します。

開状態が一定時間継続した場合に「ドア開」として確定し、通知を行う仕組み(チャタリング防止など)が図3のタイムチャートに示されています。

タイムチャートを読み解くと、条件を満たしてドアタスクが「ドア開」を通知するタイミングは となります。

各選択肢の解説

  • 正答以外の選択肢は、センサの出力が変化した直後や、状態が確定する前のタイミングを指しており、システム仕様として不適切です。

(4)

同条件のとき、ドアタスクがメインタスクに“ドア閉”を通知するタイミングを,ア〜テの記号で答えよ。

模範解答

選択肢カ: カ

配点 1

解説

ドアタスクが「ドア閉」を通知するタイミングを問う問題です。

閉状態が一定時間継続したことをドアタスクが確認したタイミングでメインタスクに「ドア閉」を通知します。

タイムチャート上では、その条件が成立するタイミングは となります。

各選択肢の解説

  • 正答以外の選択肢は、閉状態が十分に継続していない時点や、ノイズ(チャタリング)の可能性があるタイミングを指しています。

設問2(1)は,正答率がやや低かった。タスク優先度の設計理由を問うたのに対し,タスクの処理が始まるまでの動作順序やタスクの処理が終わった後の動作仕様を理由とした解答,及びリアルタイムOSを用いて実装するソフトウェアの理解が不足していると思われる解答が散見された。タスクの優先度について正しく把握することは,組込みシステムのソフトウェア設計において極めて重要である。是非理解を深めてほしい。

設問3

図4に示すメインタスクの状態遷移について答えよ。

(1)

メインタスクがドアタスクに通知を行うのは,何のメッセージを受けたときか。図4中のメッセージ名で全て答えよ。

模範解答

確認

抽出完了

採点基準(配点 3点)

正確性(内容)(3点)

  • 3: 「確認」と「抽出完了」の両方を過不足なく抜き出している。
  • 1: 「確認」または「抽出完了」のいずれか1つのみを抜き出している。
  • 0: どちらも正しく抜き出せていない、または無解答。

解説

状態遷移図(図4)の読み取り問題です。

メインタスクがドアタスクに対して通知(メッセージ送信)を行う契機となる受信メッセージを特定します。

図4の状態遷移において、メインタスクが状態遷移に伴いドアタスクへ通知を行っているアクション(遷移のトリガとなる受信メッセージ)を確認すると、「確認」 メッセージを受けた時と、「抽出完了」 メッセージを受けた時であることが読み取れます。

高得点のポイント

  • 状態遷移図のアーク(矢印)に付与された「イベント(受信メッセージ) / アクション(送信メッセージ)」の表記を正確に読み取ること。

  • 対象となる2つのメッセージを漏れなく抽出すること。

(2)

図4中の b に入れる適切なメッセージ名を,表3中の字句で答えよ。

模範解答

判定結果

採点基準(配点 3点)

正確性(内容)(3点)

  • 3: 「判定結果」という表3中の字句を完全に正確に抜き出している。
  • 1: 意味は合っているが表3中の字句と完全に一致していない(軽微な誤字等)。
  • 0: 不一致または無解答。

解説

メインタスクの状態遷移における空所補充問題です。

メインタスクがカップの有無や種類を把握するためには、カップ判定タスクからの結果を受け取る必要があります。

表3のメッセージ一覧と図4の状態遷移を照らし合わせると、遷移の契機となるメッセージは、カップ判定タスクから送られる 判定結果 であることが分かります。

高得点のポイント

  • 表3に定義されている字句をそのまま正確に使用すること。