flexsim 全局建模(重点为全局表调用)

学习内容

  • 如何创建并访问全局表
  • 如何创建和访问全局变量和全局宏
  • 如何根据模型需要编写简单的用户命令
  • 如何使用合成器和分解器实体

模型:创建两种货物,根据货物的不同进行分类加工并送到不同的仓库,在根据设定好的打包类型(全局表),对不同托盘类型进行不同打包方式,最后进行配送。

 

 第一步:端口连接

第二步参数设置

source

时间间隔设置: experional(0,10,0);创建触发设置:设置标签和颜色

Object current = ownerobject(c);
Object item = param(1);
int rownumber = param(2); //row number of the schedule/sequence table
{ // ************* PickOption Start ************* //
/***popup:SetLabelAndColor*/
/**设置标签和颜色*/
Object involved = /** \nObject: *//***tag:object*//**/item/**/;
string labelname = /** \nLabel: *//***tag:label*//**/"Type"/**/;
Variant value = /** \nValue: *//***tag:value*//**/duniform(1, 2, getstream(current))/**/;
involved.color = Color.fromPalette(value);
involved.labels.assert(labelname).value = value;
} // ******* PickOption End ******* //

palletsource

  • 临时实体类型:选择托盘;
  • 0时刻到达;
  • 创建触发:选择数据→设置标签→duniform(1,6);

添加Operators(操作员、叉车)

由于没有找到全局宏,这里暂且使用中间端口连接

PartQueue,Processor1、2

设置最大容量和加工时间(可以自己根据需求设定)

全局表

  • 合成器用于将多个临时实体合成在一起。整个作业过程如下:
  • 首先从合成器的第1个输入端口接收一个临时实体。它将变为一个容器,用来放置所有其它的临时实体。
  • 一旦接到第一个临时实体,它就开始按照component list(组件列表)接收剩余的临时实体。一旦完成整个批次,合成器就会执行预置和加工时间进行处理。

其中Row代表两种货物,Col代表托盘类型,数值表示对应打包的数量是多少。

合成器

调用全局表:是根据托盘类型的type值返回全局表对应的列。

合成器的进入触发设置:更新合成器组件列表的源代码。

/**Custom Code*/
Object current = ownerobject(c);
Object item = param(1);
int port = param(2);
{ // ************* PickOption Start ************* //


string tablename = "partlist"; //设定列表名
string labelname = "Type";     //托盘对应的类型


if (port == 1) {  


  Table thelist = getvarnode(current, "componentlist");  //获取合成器的组件列表
  treenode thesum = getvarnode(current, "targetcomponentsum"); //获取当前合成器的目标组件总和
  thesum.value = 0; //初始设为0

  Table table = Table(tablename); //获取全局组件
  for(int index = 1; index <= thelist.numRows; index++) {    //遍历组件列表的每一行。
    thelist[index][1] = table[index][item.labels[labelname].value];//更细将index的第一列的值根据Type的值找出全局表中对应的列数。
    inc(thesum, table[index][item.labels[labelname].value]); //总件数+1
  }
}
} // ******* PickOption End ******* //

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值