实时控制软件设计第二周作业
Posted JOKER.ISOL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实时控制软件设计第二周作业相关的知识,希望对你有一定的参考价值。
一.汽车出入门禁系统状态机设计
状态机所有状态:
入闸传感器(两种状态): 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 << "状态初始化..." << \'\\n\'; cout << "当前状态为红灯,起落杆落下状态,禁止通行" << \'\\n\'; while (1) { cout << "检测是否有车进入或离开门禁系统y or n" << \'\\n\'; cin >> enter_or_out; if (enter_or_out == \'y\') { cout << "入闸ture,有车进入" << \'\\n\'; up_or_downt = 1; cout << "起落杆up ture" <<\'\\n\'; cout << "通行灯为红灯,汽车可通行" << \'\\n\'; //delay(); } else { cout << "出闸ture,汽车出闸" << \'\\n\'; up_or_downt = 0; cout << "起落杆down ture" << \'\\n\'; cout << "通行灯为红灯,汽车禁止通行" << \'\\n\'; //delay(); } } }
二.其他任务
实时操作系统应用程序练习,程序能正常运行和停止;
练习了git的简单命令操作,并将git与guihub已创建关联;
简单了解了 ODE的功能和案例;
以上是关于实时控制软件设计第二周作业的主要内容,如果未能解决你的问题,请参考以下文章