1.図について 2.ポット・オートマトン 2.1.全体図について

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