本帖最后由 Yumaotuo 于 2018-5-2 09:30 编辑
如果在一个模型中有大量代码重复,我们可以使用用户命令,来自定义命令函数,应用于整个模型。
1、模型描述
有3种类型均匀分布的产品在四个加工处理器上按照以下处理顺序处理,产品1:processor1~ processor3~ processor2;产品2:processor4~ processor2~ processor1~ processor3;产品3:processor2~ processor3~processor1;最后放置在暂存区内。如果在一个模型中有大量代码重复,我们可以使用用户命令,来自定义命令函数,应用于整个模型。 2、模型布局:
3、模型分析
货物经过处理器后被发送至暂存区进行下一步加工,我们应该考虑到它可能会继续回到上一步加工处理器上,所以中间的缓冲暂存区应该与每一个处理器都要A连接。根据item的类型值及item的当前所处的加工次数,来查询全局表,决定下一步的加工发送端口。因此每个暂存区的代码逻辑相同,可使用用户命令自定义函数来进行建模。
4、用户命令界面
名称为我们将要定义使用的函数命令(不能与已有函数相同),参数为此命令将要用到的参数,返回类型,我们是要返回端口号,所以为num值,对于此函数的逻辑我们在代码里进行编写。
5、代码设置
在发生器的创建触发中,对item类型及当前加工步骤进行添加标签设定。 int type = duniform(1,3); item.Type = type; item.color = Color.byNumber(item.Type); item.step = 0;
每个处理器要添加相应的机器设备号标签。
暂存区的进入触发中对stpe进行加一,来表示即将进入第几次加工步骤。 item.step++;
在用户命令里编写发送至端口的逻辑。 Object item = param(1);//定义第一个参数 Object current = param(2);//定义第二个参数
int type = item.Type;//获取item的类型值 int step = item.step;//获取即将进入的步骤数
for(int i = 1;i <= current.outObjects.length;i++)//对全局表检索获取端口号与处理器机器标签一致的端口进行返回 { Object processi = current.outObjects; int stationnum = processi.station; int portnum = Table("step")[type][step]; if(stationnum == portnum) { return i; } } 对于暂存区发送至端口直接写入我们定义好的函数命令就可以。 return findstation(item,current); |