2014年 春期 応用情報技術者試験 問7
園芸用自動給水器
G社は,園芸用自動給水器(以下,給水器という)を開発している。
〔給水器の概要〕
給水器は庭に設置し,設定した時刻に庭の植物に霧状の水を噴射(以下,給水とい う)する。開発中の給水器の構成を,図1に示す。
給水器は,給水ユニット(以下,ユニットという)を最大4つまで接続することが できる。ただし,給水に必要な水圧を維持するために,同時に給水できるのは最大2 ユニットまでである。給水器の給水設定は,操作パネルで行う。図2に示すように, 操作パネルは表示部とキーから構成される。
項目 | 内容 |
---|---|
ユニット | 予約番号 |
1 | 2 |
給水時刻 給水時間 | |
12:30 10分 |
7 | 8 | 9 | 設定開始 |
4 | 5 | 6 | ユニット |
1 | 2 | 3 | 予約番号 |
戻る | 0 | 進む | 確定 |
一つの給水設定では,ユニット番号,予約番号,給水を開始する時刻(以下,給水 時刻という),給水を継続する時間(以下,給水時間という)を入力する(給水時間の 単位は"分")。予約番号を指定することで,ユニットごとに1日最大4回まで給水す ることができる。また,給水時間は最大20分まで設定できる。
〔給水器の組込みソフトウェア〕
給水器の組込みソフトウェアには,リアルタイムOSを用いる。タスクには,実行 状態,実行可能状態,待ち状態及び休止状態があり,イベントドリブンによるプリエ ンプティブ方式で状態遷移が行われる。各タスクの動作内容を,表1に示す。
タスク名 | 動作内容 |
---|---|
初期化 | ・システムの初期化を行い,不揮発性メモリに記憶されている全ての給水設定を給水ス ケジューラタスクに通知する。その後,給水設定タスクを起動し,終了する。 |
給水設定 | ・キースキャンタスクからのキーコードを待ち,キーコードを取得すると表示部に表示
する。 ・設定操作の最後で確定キーが押されると,入力された給水設定を給水スケジューラ タスクに通知するとともに,不意の電源断に備えて,不揮発性メモリに記憶する。この とき,一つの給水設定は8バイト構成とする。 |
キースキャン | ・10ミリ秒周期で起動し,操作パネルのキーをスキャンする。 ・スキャンした結果,キーが押されたと判断したときは,押されたキーに対応するキー コードを生成し,aタスクに送信する。 ・前回に生成したキーコードを記憶しており,今回のキーコードが前回と同じ場合はキー が押し続けられていると判断し,送信しない。 ・キーが離された場合は,前回のキーコードをクリアする。 |
給水スケジュー ル | ・1分周期で起動し,各ユニットの給水時刻と現在時刻を比較し,一致すれば,給水時
間を指定して,bタスクを起動する。 ・ユニットごとに起動され,次の順序で操作を行う。 ①ユニットに設定された給水弁を開いて,給水を開始する。 ②現在時刻と指定された給水時間から給水終了時刻を算出し,給水終了時刻まで待ち 状態に移行する。 ③待ち状態が解除されると,給水弁を閉じて終了する。 |
給水器では,同時に給水できるのは2ユニットまでなので,計数型セマフォを用い て次のように排他制御を行う。
・初期化タスクにおいて,セマフォの初期値をcに設定する。 ・給水弁操作タスクにおいて,給水弁を開く操作の前にdを獲得する。獲
得できたときは給水弁を開き,獲得できないときは獲得できるまで待ち状態に移行 する。
〔操作パネルのキースキャン動作〕
図3に示すキースキャン回路を用いて,操作パネルのキーを読み取る。この回路は 給水器を制御するMCUに接続されており,MCUに内蔵されている4個の出力ポート で列を選択し,4個の入力ポートを読むことによって,16個のキーの状態を読み取る。
〔機能拡張の検討〕
インターネットを経由して,外出先から給水器の設定を変更したり,状態を監視し たりする機能を,給水器に追加することを検討した。この通信はインターネットを経 由することから,"通信相手のeを行い,なりすましによる不正な給水器操 作を防止する","通信内容が漏えいしないように,通信データをfする" などのセキュリティ対策が必要である。