全球FlexSim系统仿真中文论坛
标题: FlexSim案例四 用户事件:定时更新订单到达时间表 [打印本页]
作者: Yumaotuo 时间: 2018-4-27 09:15
标题: FlexSim案例四 用户事件:定时更新订单到达时间表
本帖最后由 Yumaotuo 于 2018-4-27 09:16 编辑
1、模型描述
发生器产生5种批次的订单,每种订单按不同的数量组合四种类型的产品,每隔60秒跟新发生器的订单批次。
2、模型布局
[attach]4301[/attach]
发生器1产生订单,下游暂存区和处理器按上图的方式依次全部A连接。
创建订单批次的全局表:创建4行5列的全局表,每批次的订单组合不同数量不同类型的产品,全局表命名为“dingdan”。
[attach]4302[/attach]
创建标签:订单发生器中创建标签,命名为biaoqian,这个标签用来记录用户事件执行的次数,并且对应订单批次
[attach]4303[/attach]
创建用户事件:打开工具箱下拉列表,选择建模逻辑里的用户事件,命名为gengxinpici,勾选重复执行,开始时间设置为50,重复时间设置为60秒。
[attach]4304[/attach]
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);//所有订单执行完毕后关闭输出端口
}
这个用户事件就可以实现按订单批次依次更新到达时间表,在所有订单产生之后停止输出,比把所有的订单批次都写入到达时间表要简单很多,当订单批次数量较多时使用用户事件的优势就越明显,当订单更新的时间间隔发生改变或者订单内容发生改变时,该方法的通用性更强。
作者: 慧娴亚伦 时间: 2018-4-27 17:00
感谢分享
建议表明版本,否则会出现部分代码在部分版本中无法使用的问题
作者: shangri 时间: 2018-5-21 20:39
flexsim2017.01中,用户事件在哪?找不到,望明示!新手
作者: 慧娴亚伦 时间: 2018-5-22 08:02
这是正式版才有的功能哦
欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/) |
Powered by Discuz! X3.3 |