応用情報技術者試験 過去問 2014年(平成26年) 春期 午後 問7

園芸用自動給水器

G社は,園芸用自動給水器(以下,給水器という)を開発している。

〔給水器の概要〕

給水器は庭に設置し,設定した時刻に庭の植物に霧状の水を噴射(以下,給水という)する。開発中の給水器の構成を,図1に示す。

給水器の構成
図1 給水器の構成

給水器は,給水ユニット(以下,ユニットという)を最大4つまで接続することができる。ただし,給水に必要な水圧を維持するために,同時に給水できるのは最大2ユニットまでである。給水器の給水設定は,操作パネルで行う。図2に示すように,操作パネルは表示部とキーから構成される。

操作パネルと表示例
図2 操作パネルと表示例

一つの給水設定では,ユニット番号,予約番号,給水を開始する時刻(以下,給水時刻という),給水を継続する時間(以下,給水時間という)を入力する(給水時間の単位は"分")。予約番号を指定することで,ユニットごとに1日最大4回まで給水することができる。また,給水時間は最大20分まで設定できる。

〔給水器の組込みソフトウェア〕

給水器の組込みソフトウェアには,リアルタイムOSを用いる。タスクには,実行状態,実行可能状態,待ち状態及び休止状態があり,イベントドリブンによるプリエンプティブ方式で状態遷移が行われる。各タスクの動作内容を,表1に示す。

表1 タスクの動作内容
タスク名 動作内容
初期化
  • システムの初期化を行い,不揮発性メモリに記憶されている全ての給水設定を給水スケジューラタスクに通知する。
給水設定
  • キースキャンタスクからのキーコードを待ち,キーコードを取得すると表示部に表示する。
  • 設定操作の最後で確定キーが押されると,入力された給水設定を給水スケジューラタスクに通知するとともに,不意の電源断に備えて,不揮発性メモリに記憶する。このとき,一つの給水設定は8バイト構成とする。
キースキャン
  • 10ミリ秒周期で起動し,操作パネルのキーをスキャンする。
  • スキャンした結果,キーが押されたと判断したときは,押されたキーに対応するキーコードを生成し,aタスクに送信する。
  • 前回に生成したキーコードを記憶しており,今回のキーコードが前回と同じ場合はキーが押し続けられていると判断し,送信しない。
  • キーが離された場合は,前回のキーコードをクリアする。
給水スケジュール
  • 1分周期で起動し,各ユニットの給水時刻と現在時刻を比較し,一致すれば,給水時間を指定して,bタスクを起動する。
給水弁操作
  • ユニットごとに起動され,次の順序で操作を行う。
  • ①ユニットに設定された給水弁を開いて,給水を開始する。

    ②現在時刻と指定された給水時間から給水終了時刻を算出し,給水終了時刻まで待ち状態に移行する。

    ③待ち状態が解除されると,給水弁を閉じて終了する。

給水器では,同時に給水できるのは2ユニットまでなので,計数型セマフォを用いて次のように排他制御を行う。

  • 初期化タスクにおいて,セマフォの初期値をcに設定する。
  • 給水弁操作タスクにおいて,給水弁を開く操作の前にdを獲得する。獲得できたときは給水弁を開き,獲得できないときは獲得できるまで待ち状態に移行する。

〔操作パネルのキースキャン動作〕

図3に示すキースキャン回路を用いて,操作パネルのキーを読み取る。この回路は給水器を制御するMCUに接続されており,MCUに内蔵されている4個の出力ポートで列を選択し,4個の入力ポートを読むことによって,16個のキーの状態を読み取る。

キースキャン回路
図3 キースキャン回路

〔機能拡張の検討〕

インターネットを経由して,外出先から給水器の設定を変更したり,状態を監視したりする機能を,給水器に追加することを検討した。この通信はインターネットを経由することから,"通信相手のeを行い,なりすましによる不正な給水器操作を防止する","通信内容が漏えいしないように,通信データをfする"などのセキュリティ対策が必要である。

平成26年度 春期 応用情報技術者試験 午後 問7