实时控制软件设计第二次作业

实时控制软件设计第二周作业


作业要求

根据本周课堂内容,设计一个停车场门禁控制系统的状态机。

作答如下

  • 状态机的所有状态
    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;
	}

}

posted @ 2016-12-06 22:21  周佩  阅读(182)  评论(1)    收藏  举报