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

一.汽车出入门禁系统状态机设计

状态机所有状态:

入闸传感器(两种状态): Ture  False  (分别用ET和EF表示)

出闸传感器(两种状态): Ture  False  (分别用OT和OF表示)

起落杆(两种状态):     UP DOWN   (分别用UP和DW表示)

通行灯(两种状态):       Red Green   (分别用R和G表示)

状态机所接收到的外部事件:

汽车进入和驶离门禁系统区: Enter  Out (分别用E和O表示)

状态机所产生的动作:

起落杆的动作:   go up   go down (分别用GU和GD表示)

   

状态机的所有状态跃迁:(原状态、新状态、触发条件、产生动作)

  原状态  触发条件   新状态/动作

EF    - ( E ) ->      ET

OF    - ( O ) ->     OT

UP    -( OT ) ->     GW  (动作)

DW   - ( ET ) ->     GP  (动作)

R     - ( UP ) ->     G

G     -( DW ) ->     B 

由于matlab的stateflow还正在学习,之前简单建立一个状态流图错误比较多,今天进一步修改并做了仿真,基本实现了门禁系统的功能,如下图:

说明: Moter三个值,0表示停止,1表示正转(up),-1表示反转(down)。

         R_G表示表示灯的状态,0表示红灯,1表示绿灯,

后续,会继续学习将图详细设计,并纠正错误,并利用matlab直接生成代码。

用c++简单设计小程序表示门禁系统的逻辑工作原理,如下图所示:

#include<iostream>
using namespace std;


//void delay()
//{
//    
//    for (int i=10000; i > 0; i--)
//    {
//        for (int j=10000; j > 0; j--);
//    }
//}

void main()
{
    char enter_or_out;   //1表示入闸ture,0表示出闸ture
    int up_or_downt = 0;    //1表示起落杆up,0表示起落杆down

    cout << "状态初始化..." << '
';
    cout << "当前状态为红灯,起落杆落下状态,禁止通行" << '
';

    while (1)
    {
        cout << "检测是否有车进入或离开门禁系统y or n" << '
';
        cin >> enter_or_out;

        if (enter_or_out == 'y')
        {
            cout << "入闸ture,有车进入" << '
';
            up_or_downt = 1;
            cout << "起落杆up ture" <<'
';
            cout << "通行灯为红灯,汽车可通行" << '
';
            //delay();
        }

        else
        {
            cout << "出闸ture,汽车出闸" << '
';
            up_or_downt = 0;
            cout << "起落杆down ture" << '
';
            cout << "通行灯为红灯,汽车禁止通行" << '
';
            //delay();
        }

    }
}

二.其他任务

    实时操作系统应用程序练习,程序能正常运行和停止;

    练习了git的简单命令操作,并将git与guihub已创建关联;

    简单了解了 ODE的功能和案例;

原文地址:https://www.cnblogs.com/jokerisol/p/6135878.html