全球FlexSim系统仿真中文论坛

搜索
查看: 3631|回复: 3
打印 上一主题 下一主题

案例六 用户命令的创建使用

[复制链接]
跳转到指定楼层
1#
Yumaotuo 发表于 2018-5-2 09:26:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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);

本帖子中包含更多资源

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

x

评分

参与人数 1威望 +10 收起 理由
非凡 + 10 赞一个!

查看全部评分

2#
非凡 发表于 2018-5-3 21:57:15 | 只看该作者
谢谢分享,之前是通过全局表和端口推拉操作实现的呢,这种方法也可以学习一下呢
3#
慧娴亚伦 发表于 2018-5-4 08:28:17 | 只看该作者
非凡 发表于 2018-5-3 21:57
谢谢分享,之前是通过全局表和端口推拉操作实现的呢,这种方法也可以学习一下呢

这个方法的本质原理还是没有离开推动和拉动的选择。建议可以尝试一下list功能
4#
zjj0605 发表于 2018-5-4 17:51:49 | 只看该作者
谢谢楼主的分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-29 14:36 , Processed in 0.070437 second(s), 15 queries .

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

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