19. チャタリング対策モデルと
そのコントローラ
void SWCheck(void)
{
static int st = 1;
off
low
low
on
!
high
SWCheck2
0
1
high
2
3
4
high
low
5
low
high
offは初期化で実施済みなので状態1から開始する
状態1でlowであれば状態2に遷移する。highなら何もしない。
状態2で再度lowであればonにセットして状態4に遷移する。
highなら状態1に戻る。
switch (st) {
case 1:
if (LOW1) st = 2;
break;
case 2:
if (LOW1) {
swon = 1;
st = 4;
} else st = 1;
break;
case 4:
if (HIGH1) {
st = 5;
}
break;
case 5:
if (HIGH1) {
swon = 0;
st = 1;
} else st = 4;
break;
}
return;
}
19
20. SSWWCChheecckk22のテキスト形式と
テスト方法
プラントモデルの振るまい
状態11からスタートして状態マシン上をランダムウォー
クしながらllooww,, hhiigghh,, oonn,, ooffff関数を呼び出す。llooww,, hhiigghhは電
圧レベルの出力、oonnはLLEEDD22に対する電圧レベルをモニタ
してoonnになるまで待つ。ooffffはLLEEDD22の電圧レベルがooffffに
なるまで待つ。oonn//ooffffを検出できない場合はエラーとする。
プラント
void SWCheck(void)
{
static int st = 1;
switch (st) {
case 1:
if (LOW1) st = 2;
break;
case 2:
if (LOW1) {
swon = 1;
st = 4;
} else st = 1;
break;
case 4:
if (HIGH1) {
st = 5;
}
break;
case 5:
if (HIGH1) {
swon = 0;
st = 1;
} else st = 4;
break;
}
return;
}
ドライバ
high/low
(1,high,1)
(2,low,3)
low
on/off
on
off
(0,off,1)
(1,low,2)
high
!
遷移データ
(2,high,1)
インタプリタ
(3,on,4)
(4,low,4)
(4,high,5)
遷移アルゴリズム (5,low,4)
(5,high,0)
20