张世舜

导航

团队大作业_第二周完成情况

一、第二周任务概述

这一周我们主要完成了第三阶段和第四阶段的工作任务,即基于simulinke/stateflow设计各个软件模块的控制逻辑和算法,并与咖啡机物理模型进行协同仿真,实现整个咖啡制作流程以及手动编写或用自动代码生成工具,完成C代码设计工作。

二、具体完成情况

这周,我首先把我所负责的Feeder模块的概要设计部分进行了完善,具体到整个模块的输入,输出,chart里面的几个状态,并进一步明确了状态之间的转换关系。

Feeder模块概要设计如下:
Feeder模块共有两个输入和两个输出接口,两个输入接口即为sensor1 和sensor2,两个输出为电机(motor2)和气缸(cylinder)。sensor1和sensor2分别有“0”、“1”两种状态分别对应前一阶段杯子是否落下和转盘转动后杯子是否到位,一开始sensor1=0,进入电机的OFF状态,通过sensor1=1这一条件转移指令来决定电机motor2从off到on的状态,通过sensor2=1决定电机从on回到off(off2)并以此时的motor2=0为新的条件转移指令,延迟1s后使气缸Cylinder=1,即:使得气缸到达最大行程状态,带动整个转盘下移。使气缸最大行程状态保持3秒,由after(3,sec)指令,使Cylinder=0,即气缸回到最小行程,转盘复位,整个过程完成。

之后,我通过Mathworks官网上的视频教程以及stateflow操作手册独立完成了feeder模块的物理模型构建,一开始,我在simulink中设置了两个chart,一个用于反应电机motor2之间的状态转化关系,一个用于反应气缸Cylinder的状态转化关系,两个chart分别命名为Feeder_motor2 和 Feeder_Cylinder,其中前者的输入为整个模块的原始输入,即sensor1 和sensor2,后者的输入为前者的输出,即motor2的状态(若motor2由“1”回到“0”,则气缸动作),因此一开始构建的模型是这样的,以motor2为输出接在示波器上,并另外引出作为cylinder的输入。

然而,组长表示,后面为了把各模块拼接方便,还是要把两个chart合为一个,因此,我又花了点功夫将两个合并起来。

在Signal Builder中,我将sensor1和sensor2信号用两个方波分别表示,设置如下

对于示波器Scope的输出,我考虑到有气缸和电机两个输出,由于一开始我忘记了气缸的工作原理,认为气缸和电机一样需要有上升(对应电机正转)、下降(对应电机反转)、静止三种状态,所以一开始的设想是,等到电机停止转动后,先使得气缸中的活塞向下运动三秒(转盘整体向下)再静止三秒(放杯子时间)再向上运动三秒(复位),因此产生的波形为这样:(黄色代表电机、蓝色代表气缸)

然后在队友的提醒下我回想起气缸实际工作时状态只有两个,即最小行程和最大行程。于是我使电机停止工作后,延迟1s,使气缸到达最大行程状态,带动整个转盘下移。使气缸最大行程状态保持3秒,再回到最小行程,转盘复位。

其中Signal Builder部分仍保持不变,chart部分内部转化关系确定如下:

示波器显示则为:(上面为电机,下面为气缸)

之后组长万学远将我们五个人所建的模块拼接在了一起,完成了整体模型的构建,实现联调和自动代码生成

三、阶段总结

在这个过程中我负责的部分可以说是比较简单的,真正花在建模上的时间其实并不多,主要花在对软件的学习和理解上面,小组中谢鑫磊和潘捷所负责的模块要考虑的东西很多,组长万学远可以说也做了很多工作,之后我也要尽力把自己负责部分做好的同时,在后面阶段的SIL/PIL测试部分做更多的工作。

posted on 2017-10-29 00:14  zss1995  阅读(281)  评论(0编辑  收藏  举报