ESW−WG2(2002−5−30)向け 組み込みシステム設計資料 No.SESSAME-WG2-Matsumoto-2.3 組み込みシステム設計のためのリアクティブ・オートマトン法(2.3) 伊藤聡司、佐藤雄宇、都丸将行、濱田雅、中村慎也、島田耕吉、松本吉弘 http://www.sft.cs.musashi-tech.ac.jp/ 1.図について 状態遷移図の部品を図 1 に示す。主な部品については図の通りであり、また UML に準拠 するものとする。ポットにおける「入力/出力」には、ソフト・ハードでの入出力が記述 されている。 2.ポット・オートマトン ポット側から見た状態遷移図について述べていく。 また、以下説明していくポット・オートマトンの階層図を図 2 に示す。 2.1.全体図について ポットの状態推移の全体図を図 3 に示す。図の上部に書いてある、 ・センサ(第1∼第4水位センサ、満水センサ、蓋センサ、サーミスタ)の状態 ・ロックの状態 ・保温モードの設定状況 ・タイマの設定状況 ・現在の状態(どの状態にいるか) ・沸騰終了 は、ポットの状態遷移図で用いる共通データである。 最初に電源が ON になると、ポットが使用出来る状態になるので「ポット使用」に推移 する。「ポット使用」状態では、まず「タイマ・保温モードの初期化」に推移する。 この状態では、「全状態チェック・更新・表示」以外のデータ、すなわち 1 ・タイマの設定状況 ・保温モード設定状況 に関するデータの初期化をする状態である。 「タイマ・保温モードの初期化」が完了すると、 ポットの機能を使用するため「状態データを見つつ機能使用」に推移する。この状態はポ ットの機能(給湯、沸騰・保温、タイマ)を使用する状態である。「状態を見つつ機能使用」 の詳細は 2.3 に後述する。「状態を見つつ機能使用」にてその状態の中では解決できない状 態が生まれたとき、すなわちイベントリストの入力が起きたとき「イベント発生」に推移 する。 「イベント発生」の詳細は 2.4 に後述する。 「イベント発生」から「状態を見つつ機能 使用」に推移するときは「イベント発生」に推移する前の状態に推移する場合と「状態デ ータを見つつ機能使用」の最初に推移する場合がある。つまり「イベント発生」に推移し ても元の状態に戻れる場合と、戻らず最初の状態に戻る場合があるということである。ど ちらに推移するかも 2.4 に後述する。また、「タイマ・保温モードの初期化」、「状態を見つ つ機能使用」、「イベント発生」の三つの状態と並列に「全状態チェック・更新・表示」が ある。これはポットがいかなる状態でも、センサ等で水位や温度等が変化に影響するため 設けられている状態である。「全状態チェック・更新・表示」の詳細は 2.2 に後述する。 2.2.「全状態チェック・更新・表示」について 「全状態チェック・更新・表示」の図を図 4 に示す。 「全状態チェック・更新・表示」は センサ、ボタン入力の受け付け、現在の状態の監視等をしている状態である。この状態で 監視しているデータは、2.1 で示した共通データのことであり、ポットの状態推移「タイマ・ 保温モードの初期化」、「状態を見つつ機能使用」、「イベント発生」に常に影響している。 ここでデータの更新が行われると、そのデータに伴った水量、水温を表示する。 2.3.「状態データを見つつ機能使用」について 「状態を見つつ機能使用」の図を図 5 に示す。ポットの電源がONになりタイマ等の初 期化が完了するとこの状態に推移する。蓋が閉められると ON/OFF 方式により水温を制御 し、沸騰ランプを ON、初期化されていた保温モードの表示部分(▼)の表示をして、 「沸騰」 の状態に推移する。 沸騰終了又は「沸騰」状態において沸騰ボタンを ON にすると、PID 方式による水温の 制御をし、保温ランプ ON、沸騰ランプ OFF にして、「保温」の状態に推移する。「保温」 状態で沸騰ボタンをONにすると、ON/OFF方式による水温の制御が始まり、沸騰ラ ンプ ON、保温ランプ OFF にして、「沸騰」状態に推移する。また、「保温」状態において 保温設定ボタンが押され、保温モードが変わると、表示部分(▼)を変更し、その設定された 温度になるよう PID 方式による水温の制御をする。 「沸騰」状態で保温設定ボタンが押され 2 た場合は、保温モード、表示部分(▼)を変更し、沸騰終了した後、その設定された温度にな るよう PID 方式による水温の制御する。 またこの二つの状態と並列な状態として「タイマ使用」と「給湯」の状態がある。共に 詳細は 2.3.1、2.3.2 にて後述する。 この「状態データを見つつ機能使用」の状態の時、2.1 で述べたように「イベント発生」 へ推移する状況が起これば推移し、解決すれば元の状態に戻る場合とデフォルトの状態に 戻る場合がある。 2.3.1.「タイマ使用」について 「タイマ使用」の図を図 6 に示す。この状態はポットにあるタイマ機能を使用している 状態である。 タイマボタン ON という入力を得てこの状態へ推移すると、タイマ時間=1 にし「タイマ 使用中」という状態へ推移する。 「タイマ使用中」の状態においてタイマ時間>0 である限り この「タイマ使用中」の状態へ推移し、再度入力としてタイマボタンを押すと、残り時間 を1分増やす。その際、タイマの残り時間を表示し続ける。タイマの残り時間=0、すなわ ちタイムアウトとなるとブザーを 3 回鳴らし、タイマの初期化をしてこの状態が終了する。 2.3.2.「給湯」について 「給湯」の図を図 7 に示す。この状態はポットに保温されているお湯を給湯する状態で ある。 給湯ボタン ON という入力を得てこの状態へ推移すると、給湯、解除ボタンを停止させ て「給湯中」という状態へ推移する。「給湯中」の状態において、給湯ボタンを押しつづけ ている間は給湯し続ける。給湯ボタン OFF、すなわち給湯ボタンを離すと給湯を停止させ、 解除ボタンを復活させてこの状態は終了する。 2.4.「イベント発生」について 「イベント発生」の図を図 8 に示す。この状態はイベントが発生した場合に推移する状 態である。推移する時の入力、すなわちイベントに関してはイベントリストに記述されて いる。 まず蓋を開けると、はじめに推移する状態は「蓋開放中 入力待ち」であり、推移する 時にヒータを OFF にし、沸騰ボタンを停止させ、保温ランプ、沸騰ランプを OFF にする。 この状態は、蓋が閉まるまで待つ状態である。ここで蓋が閉まると沸騰ボタンを復活させ、 「状態を見つつ機能使用」へ推移する。これによってポットの機能が使用できるようにな 3 る。 次に解除ボタン ON というイベントが発生した場合、ロックの判断、すなわちロックさ れている状態なのかロックされていない状態なのかを判断する。ロックされている状態な らばロックを解除しロックランプを OFF に、ロックされていない状態ならばロック(給湯ボ タンの停止)し、ロックランプを ON にする。この処理が終了すると「状態を見つつ機能使 用」へ推移する。ここで推移するときは、履歴指示になっているので、図 5 の通り「沸騰」 または「保温」の前にいた状態へ戻ることになる。 次にエラーが発生した場合、エラーとして、 ・高温エラー ・温度上がらずエラー ・水位の超過(満水センサ ON) ・水位の不足(第 1 水位センサ OFF) があげられる。 高温エラー、温度上がらずエラーについて、どちらかがイベントとして発生したら、「温 度エラー」という状態へ推移する。これはポットの温度に関するエラーが発生した状態で ある。この状態へ推移するとブザーを 30 秒鳴らしヒータを OFF にし「何もしない」とい う状態へ推移する。これはその状態名のとおり何もしない状態である。 水位の超過・不足について、どちらかのイベントが発生したら、「水位エラー 入力待ち 状態」へ推移する。推移するときヒータを停止する。この状態はポットに入っている水位 が正常値、すなわち 第 1 センサ < 水位 < 満水センサ となるのを待つ状態である。 ここで水量を調整する時、まず水位の超過の場合は ・蓋を開けて水を捨てる ・給湯することによって水を捨てる があげられる。前者の場合は蓋を開けるが入力となるので、先に述べたように蓋が開くと いうイベントが発生したことになり、再度「イベント発生」へ推移する。後者の場合は、 「状 態を見つつ機能使用」へ推移し給湯することで水を捨てる。水の捨てる量が足りなかった 場合、再度「イベント発生」へ推移する。 水位の不足の場合は、蓋を開けて水を足すことになるので、水の超過の場合と同様の推 移をする。足す量が少なかった場合も再度「イベント発生」へ推移することになる。 また、先の水位不足の時に蓋を開けるというイベントが発生するように、この「イベン ト発生」の状態にいる時にイベントが発生する場合もある。この場合も「イベント発生」 状態へ再度推移し、対応する処理をして状態を抜けることになる。さらに、これらのイベ ントが同時に発生した場合の対応として、イベントに対して優先度を付けた。イベントが 同時に発生した場合、この優先度の高い順から処理をしていき、それらの処理が終わると 「状態を見つつ機能使用」状態へ推移する(優先度については図 8 を参照)。 4 2.5.ポットの入出力表について ポット・オートマトンにおける、ハード・ソフトの入出力表を表1に示す。 5 マインドステート及びポットの状態遷移図の見方 初期状態 ポットへの入力 / ポットの出力 状態1 最終状態 状態名 状態2 状態 判断 入力1 / 出力1 履歴指示 H 複合状態 判断する 内容 上位状態名 入力2 / 出力2 入力3 / 出力3 [ガード2] 入力2 / 出力2 [ガード1] 入力1 / 出力1 下位状態1 判断する 内容 下位状態2 [ガード3] 入力3 / 出力3 並列動作 合流 上位状態名 入力1 / 出力1 入力3 / 出力3 入力2 / 出力2 並列状態1 並列状態2 入出力に関する記号 入力 / 出力 {マインドからの入力} / 出力 図1:状態遷移図の部品 6 ポット使用 並列動作_1 タイマ・保温モードの初期化 状態データを見つつ機能使用 並列動作_2 沸騰 保温 並列動作_2 タイマ使用 タイマ使用中 並列動作_2 給湯 給湯中 イベント発生 蓋開放中 入力待ち 温度エラー 何もしない 水位エラー 入力待ち 並列動作_1 状態チェック・更新・表示 状態チェック&共通データ作成 図2:ポット・オートマトンの階層図 7 共通データ ・センサ(第1∼4水位センサ、満水センサ、 蓋センサ、サーミスタ)の状態 ・ロックの状態 ・保温モードの設定状況 ・タイマの設定状況 ・現在の状態(どの状態にいるのか) ・沸騰終了 ポットの状態推移 ポット使用 イベントリスト * / タイマ・保温モードの初期化 電源ON / 電源ON / 完了 / イベントリスト * / 状態データを見つつ 機能使用 (図5) H 状態チェック・更新・表示 (図4) 電源 OFF || ハードウェアエラー / ポットの使用終了 イベントリスト * [ ]内はイベントの優先順位を示す 高温エラー [1] (サーミスタ、タイマによる) 温度上がらずエラー [2] (サーミスタ、タイマによる) 解除ボタンON [3] (解除ボタンによる) 蓋開放 [4] (蓋センサによる) 水位超過 [5] (水位センサによる) 水位不足 [6] (水位センサによる) 図3 ポットの状態推移 全体図 8 イベント発生 (図8) 状態チェック・更新・表示 状態チェック& 共通データ作成 データの更新 / 水量、水温表示 図4 状態チェック・更新・表示 イベント 発生 (図8) 状態データを見つつ機能使用 蓋閉 / ON/OFF方式による制御 沸騰ランプON 保温モード表示 保温設定ボタン / モード変更 ON/OFF方式による制御 保温モード表示 H 沸騰 沸騰終了 || 沸騰ボタンON / PID方式による制御 (沸騰終了の場合 ブザー3回鳴らす) 保温ランプON 沸騰ランプOFF 沸騰ボタンON / ON/OFF方式による制御 沸騰ランプON 保温ランプOFF 保温 保温設定ボタン / PID方式による制御 モード変更 保温モード表示 給湯 (図7) タイマ使用 (図6) 図5 状態データを見つつ機能使用 詳細図 9 タイマ使用 タイマボタンON / タイマ時間 = 1 残り時間表示 タイマ時間 > 0 / 残り時間表示 タイマ時間 = 0 / ブザーを3回鳴らす タイマ初期化 タイマ使用中 タイマボタンON / 残り時間 + 1 残り時間表示 図6 タイマ使用 詳細図 給湯 給湯ボタンON / 給湯 解除ボタン停止 給湯中 給湯ボタンOFF / 給湯停止 解除ボタン復活 給湯ボタンON / 給湯 図7 給湯 詳細図 10 イベント発生 イベントリスト * / 蓋開放 / ヒータOFF 沸騰ボタン停止 沸騰,保温ランプOFF 蓋開放中 入力待ち 水位の超過(満水センサON) || 不足(第一水位センサOFF) / 沸騰ボタン,ヒータ停止 保温,沸騰ランプOFF エラーの 種類を判定 イベントの 種類を判定 水位の超過 水位の不足 温度上がらずエラー 高温エラー / 水位エラー 入力待ち 温度上がらずエラー || 高温エラー / 解除ボタンON / 温度エラー 水位エラーへの対応 / / ブザーを30秒鳴らす ヒータOFF 蓋が閉まる / 沸騰ボタン復活 ロックされている状態 / ロック解除 ロックランプOFF 対応の 種類 ロック状態の 状態判断 ロックされていない状態 / ロックする (給湯ボタン停止) ロックランプON 蓋開放 / 何もしない 給湯ボタンON / イベントリスト * / 状態データを見つつ 機能使用 (図5) H イベントリスト * [ ]内はイベントの優先順位を示す 高温エラー [1] (サーミスタ、タイマによる) 温度上がらずエラー [2] (サーミスタ、タイマによる) 解除ボタンON [3] (解除ボタンによる) 蓋開放 [4] (蓋センサによる) 水位超過 [5] (水位センサによる) 水位不足 [6] (水位センサによる) 図8 イベント発生 詳細図 11 表1:ポットの状態推移図の入出力リスト 図3:ポットの状態推移 全体図より 入力 出力 備考 ポット使用へ推移し、 電源 ON イベントリスト中の入力があった場合、 イベント発生へ推移する。 完了 イベントリスト 電源 OFF || ハードウェアエラー ポットの使用終了 イベントリスト 入力 検出する方法 水位超過 満水センサ 水位不足 第一水位センサ 蓋開放 蓋センサ 高温エラー サーミスタ && タイマ 温度上がらずエラー サーミスタ && タイマ 解除ボタン ON 解除ボタン 図4:状態チェック・更新・表示 詳細図 より 入力 出力 備考 データの更新 水量、水温表示 データは、図3の共通データを指す。 12 図5:状態データを見つつ機能使用 詳細図 より 入力 出力 備考 ON/OFF 方式による制御 蓋閉 沸騰ランプ ON 蓋が閉じられると、沸騰状態へ必ず推移する 保温モード表示 モード変更 保温設定ボタン ON/OFF 方式による制御 沸騰状態での入力 保温モード表示 PID 方式による制御 保温設定ボタン モード変更 保温状態での入力 保温モード表示 PID 方式による制御 沸騰終了 保温ランプ ON || 沸騰ボタン ON 沸騰ランプ OFF (沸騰終了の場合ブザー3回鳴らす) ON/OFF 方式による制御 沸騰ボタン ON 沸騰ランプ ON 保温ランプ OFF 図6:タイマ使用 詳細図 より 入力 タイマボタン ON タイマボタン ON タイマ時間 >0 タイマ時間 =0 出力 備考 タイマ時間 =1 デフォルトからの推移 残り時間表示 タイマ時間 +1 タイマ使用中からの推移 残り時間表示 残り時間表示 ブザーを3回鳴らす タイマ初期化 図7: 給湯 詳細図 より 入力 給湯ボタン ON 給湯ボタン OFF 出力 備考 給湯 状態が給湯の場合、給湯しつづけ、 解除ボタン停止 解除ボタンの停止はしない 給湯停止 解除ボタン復活 13 図8:イベント発生 詳細図 より 入力 出力 備考 イベントの種類の判定へ推移 イベントリスト イベント発生にいる時に、イベントリストが 入力された場合、再度イベント発生へ推移する ヒータ OFF 蓋開放 沸騰ボタン停止 蓋が閉まるのを待つ 沸騰・保温ランプ OFF 蓋が閉まる 沸騰ボタン復活 沸騰へ推移する 水位の超過 水位の不足 エラーの種類の判定へ推移 温度上がらずエラー 高温エラー 水位超過 沸騰ボタン、ヒータ停止 || 不足 保温、沸騰ランプ OFF 水位エラーへの対応を待つ 水位エラーへの対応 対応の種類の判定へ推移 給湯ボタン ON 状態を見つつ機能使用へ戻る 蓋開放 イベント発生のデフォルトに戻る 解除ボタン ON ロックの状態判定へ推移 ロックされている状態 ロックされていない状態 ロック解除 ロックランプ OFF ロックする(給湯ボタン停止) ロックランプ ON 14
© Copyright 2024 ExpyDoc