2014年 春期 応用情報技術者試験 問7

園芸用自動給水器

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

〔給水器の概要〕

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

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

表1 操作パネルと表示例
項目内容
ユニット予約番号
12
給水時刻 給水時間
12:30 10分
キー配置
789設定開始
456ユニット
123予約番号
戻る0進む確定

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

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

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

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

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

・初期化タスクにおいて,セマフォの初期値をcに設定する。 ・給水弁操作タスクにおいて,給水弁を開く操作の前にdを獲得する。獲

得できたときは給水弁を開き,獲得できないときは獲得できるまで待ち状態に移行 する。

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

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

凡例:⚬ :キースイッチ

〔機能拡張の検討〕

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

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