实时控制软件设计第二周作业
作业要求
根据本周课堂内容,设计一个停车场门禁控制系统的状态机。
作答如下
状态机的所有状态
s0:红灯
s1:绿灯- 外部事件
e0:入闸传感器值True,且杆位置信号为落下
e1:出闸传感器值True,且杆位置信号为升起
e2:杆位置信号为升起
e3:杆位置信号为落下产生动作
a0:起落杆上升
a1:起落杆下降
C程序片段如下
cur_state = nxt_state;
switch(cur_state) //在当前状态中判断事件
{
case s0: //在s0状态
if(e0) //如果发生e0事件,那么就执行a0动作;
{
a0();//执行a0动作;
}
else if(e2) //如果发生e2事件,那么就将状态转移到s1;
{
nxt_state = s1;
}
else
{
break;
}
case s1: //在s1状态
if(e1) //如果发生e1事件,那么就执行a1动作;
{
a1();//执行a1动作;
}
else if(e3) //如果发生e3事件,那么就将状态转移到s0;
{
nxt_state = s0;
}
else
{
break;
}
}