作业二

本文介绍了一种基于状态机的停车场门禁控制系统设计方案。系统利用传感器监测车辆进出,并通过控制起落杆和通行灯实现自动化管理。具体包括起落杆位置、车辆进出传感器等输入信号及对应的控制逻辑。

停车场门禁控制系统


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

门禁控制系统的输入信号包括:
起落杆位置传感器:有两个位置值信号(升起/落下)
汽车入闸传感器:有两个值(True/False)
汽车出闸传感器:有两个值(True/False)

门禁控制系统的输出信号包括:
起落杆电机控制信号:(上升/下降)
通行灯信号:(红灯/绿灯)

一辆汽车的通过流程为:

  1. 起落杆处于落下状态,通行灯为红灯。
  2. 汽车进入门禁系统,入闸传感器值变为True。
  3. 控制起落杆上升,直到起落杆位置传感器到达升起位置。
  4. 通行灯为绿灯。
  5. 汽车离开门禁,触发汽车出闸传感器值为True。
  6. 控制起落杆下降,直到起落杆位置传感器到达落下位置。
  7. 通行灯变为红灯。

所描述的控制系统的状态机包括:
状态机的所有状态
状态机所接收到的外部事件
状态机所产生的动作
状态机的所有状态跃迁:(原状态、新状态、触发条件、产生动作)


定义状态量:

杆位置状态:gateOn=1表示升起位置,gateOn=0表示落下位置;

灯状态:light=0表示红灯,light=1表示绿灯;

入闸传感器:carIn=0表示没有汽车进入,carIn=1表示有汽车进入;

出闸传感器:carOut=0表示没有汽车离开,carOut=1表示有汽车离开;

其中carIn和carOut作为输入状态,gate和light作为输出状态。


定义动作:

杆动作:杆上升gateOpen(),杆下降gateClose();

灯动作:灯变绿lightOn(),灯变红lightOff();


可以将所有状态列为下表:
1069184-20161214112355526-1195783878.jpg


状态跃迁图入下:
1069184-20161214112410792-889462630.jpg


代码如下:

#include<iostream>
using namespace std;

bool carIn = 0, carOut = 0;
bool  light = 0;
bool gateOn = 0;

bool gateOpen()
{
    cout << "杆上升......" << endl;
    gateOn = 1;
    return gateOn;
}

bool gateClose()
{
    cout << "杆下降......" << endl;
    gateOn = 0;
    return gateOn;
}

void lightOn()
{
    cout << "--------------------------绿灯,请通行------------------------" << endl;
    light = 1;
}

void lightOff()
{
    cout << "-----------------------红灯,禁止通行--------------------------" << endl;
    light = 0;
}

int main()
{
    while (1)
    {
        cout << "是否有车进入:";
        cin >> carIn;
        if (carIn == 1)
        {
            if (gateOpen())         lightOn();
        }

        while (light)
        {
            cout << "车是否离开:";
            cin >> carOut;
            if (carOut == 1)
            {
                if (!gateClose())         lightOff();
            }
        }
    }
    return 0;
}

贴张效果图:
1069184-20161214112427026-2147142065.jpg

转载于:https://www.cnblogs.com/lihanyan/p/6171973.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值