本帖最后由 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);//所有订单执行完毕后关闭输出端口 } 这个用户事件就可以实现按订单批次依次更新到达时间表,在所有订单产生之后停止输出,比把所有的订单批次都写入到达时间表要简单很多,当订单批次数量较多时使用用户事件的优势就越明显,当订单更新的时间间隔发生改变或者订单内容发生改变时,该方法的通用性更强。 |