全球FlexSim系统仿真中文论坛

搜索
查看: 6519|回复: 3

FlexSim案例四 用户事件:定时更新订单到达时间表

[复制链接]
Yumaotuo 发表于 2018-4-27 09:15:05 | 显示全部楼层 |阅读模式
本帖最后由 Yumaotuo 于 2018-4-27 09:16 编辑

1、模型描述

发生器产生5种批次的订单,每种订单按不同的数量组合四种类型的产品,每隔60秒跟新发生器的订单批次。

2、模型布局


发生器1产生订单,下游暂存区和处理器按上图的方式依次全部A连接。

创建订单批次的全局表:创建4行5列的全局表,每批次的订单组合不同数量不同类型的产品,全局表命名为“dingdan”。


创建标签:订单发生器中创建标签,命名为biaoqian,这个标签用来记录用户事件执行的次数,并且对应订单批次


创建用户事件:打开工具箱下拉列表,选择建模逻辑里的用户事件,命名为gengxinpici,勾选重复执行,开始时间设置为50,重复时间设置为60秒。


3、代码编写:

Object dingdanf = model().find("发生器1");//声明订单发生器
inc(label(dingdanf,"biaoqian"),1);//订单发生器上的bianqian递增1
int m = dingdanf.biaoqian;//获取标签值,该标签代表事件执行的次数,也对应订单表中的批次

treenode schedule = getvarnode(dingdanf,"schedule");//引用达到时间表的节点
if(m<=5)//用户事件执行未超过5次
{
        for(int i=1;i<=4;i++)//for循环改变到达事件表的产品类型的个数
        {
                treenode arrival_i = schedule.subnodes;//找到不同类型的产品对应的到达时间表的行
                arrival_i.subnodes[3].value = Table("dingdan")[m];//达到时间表中的Quantity更新为全局表中的数值
        }
}
else
{
        closeoutput(dingdanf);//所有订单执行完毕后关闭输出端口
}
这个用户事件就可以实现按订单批次依次更新到达时间表,在所有订单产生之后停止输出,比把所有的订单批次都写入到达时间表要简单很多,当订单批次数量较多时使用用户事件的优势就越明显,当订单更新的时间间隔发生改变或者订单内容发生改变时,该方法的通用性更强。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
慧娴亚伦 发表于 2018-4-27 17:00:46 | 显示全部楼层
感谢分享
建议表明版本,否则会出现部分代码在部分版本中无法使用的问题
shangri 发表于 2018-5-21 20:39:15 | 显示全部楼层
flexsim2017.01中,用户事件在哪?找不到,望明示!新手
慧娴亚伦 发表于 2018-5-22 08:02:46 | 显示全部楼层
shangri 发表于 2018-5-21 20:39
flexsim2017.01中,用户事件在哪?找不到,望明示!新手

这是正式版才有的功能哦
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|全球FlexSim系统仿真中文论坛 ( 京ICP备14043114号-2 )

GMT+8, 2024-3-29 00:53 , Processed in 0.076155 second(s), 15 queries .

Powered by Discuz! X3.3© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表