网淘吧来吧,欢迎您!

Tutorial Task 5.1 - Create a Custom Fixed Resource

2026-04-13 新闻来源:网淘吧 围观:203
电脑广告
手机广告

任务概述

在本教程任务中,您将学习如何使用对象流程流为固定资源设计自定义逻辑。您将在模型中添加一个 BasicFR 对象,并将其连接到对象流程流,该流程流将接收并批量处理流动物体。本教程还将涵盖设计自定义固定资源时常见的难题与陷阱。完成后,您的模型将类似于下图所示:

接收与释放物体

BasicFR 对象是一张白纸,这意味着它们自身不具备接收和释放物体的逻辑。您需要通过创建对象流程流,将相关逻辑显式添加到 BasicFR 对象中。您将使用事件监听活动中的“接收物体”和“释放物体”选择列表来处理此逻辑。

请注意,如果您要将标准固定资源(如队列或处理器)连接到流程流,则不应使用“接收物体”和“释放物体”选择列表。而应使用“关闭端口”和“打开端口”选择列表。具体示例可参考教程 2 - 任务序列中相关选择列表的应用场景。

步骤 1构建 3D 模型

在这一步中,你将构建一个基础的3D模型。完成时,你的3D模型应 看起来与下图类似:

构建此模型的步骤如下:

  1. 从库中拖拽以下对象:
    • 1Source(源)
    • 2Queues(队列)
    • 1BasicFR(基础FR)
    • 1Operator(操作员)
    • 3Processors(处理器)
    • 1Sink(接收器)
    • 1Plane(平面)
  2. 移动这些对象,使它们大致按照本步骤开头图片所示的布局排列。
  3. 为清晰起见,请按以下方式重命名对象:
  4. 对象 新名称
    Source1 Source(源)
    BasicFR1 批次
    操作员1 操作员
    接收器1 接收器
    平面 休息室
  5. 点击批次以选中它。
  6. 在属性中,按如下方式更改批次的尺寸:
    • X尺寸3.00
    • Y尺寸1.50
    • Z尺寸0.50
  7. 创建端口连接(A-连接),从:
    • 队列1
    • 队列1批次
    • 批次处理器1
    • 处理器1队列2
    • 队列2处理器2处理器3
    • 处理器2处理器3接收器
  8. 创建一个中心端口连接(S-连接)从队列2运算符
  9. 点击队列2以在右侧打开其属性。
  10. 输出部分下,勾选使用 传输勾选复选框并确认此队列将使用连接到其中心端口的操作员。

检查以确保您的模型与本部分开头显示的图像类似。

步骤 2向对象流程中添加活动

在此步骤中,您将向对象流程中添加活动,以构建一个自定义的固定资源,该资源将接收三个流动物品,批量处理这些物品,然后将它们释放到下一个下游资源。完成后,您的流程应类似于下图:

目前,您只需将这些活动添加到流程中并进行连接。您将在后续步骤中编辑属性以添加功能。

要添加并连接这些活动:

  1. 在主工具栏上,单击流程按钮以打开菜单。指向添加对象流程,然后选择空白
  2. 在属性面板的流程名称框中, 删除当前文本并将该流程重命名为BatchLogic
  3. 从库中,添加一个计划源活动 (位于令牌创建下)。
  4. 从库中,添加一个等待事件活动,并 在其末尾添加一个延迟活动,以创建一个 堆叠块。
  5. 重复上一步两次,再创建两个相同的堆叠块。
  6. 从库中,添加以下活动以再创建一个堆叠块:
    • 一个延迟活动(位于基础下)
    • 3个等待事件活动(位于基本)
  7. 为了清晰起见,将这些活动重命名为:
  8. 活动 新名称
    来源 来源:开始模拟
    首次等待事件 等待事件:接收项目1
    首次延迟 延迟:处理项目1
    第二次等待事件 等待事件:接收项目2
    第二次延迟 延迟:处理项目2
    第三次等待事件 等待事件:接收项目3
    第三次延迟 延迟:处理项目3
    第四次延迟 延迟:处理所有项目
    第四次等待事件 等待事件:释放项目1
    第五次等待事件 等待事件:释放项目2
    第六次等待事件 等待事件:释放项目3
  9. 根据以下活动创建一个连接器:
    • 源:开始模拟等待事件:接收项目1活动
    • 延迟:处理项目1等待事件:接收项目2活动
    • 延迟:处理项目2等待事件:接收项目3活动
    • 延迟:处理项目3延迟:处理所有项目活动
  10. 创建一个从等待 事件:释放物料 3活动到等待事件: 接收物料 1活动的连接器。

请考虑保存您的仿真模型。

步骤 3编辑接收活动

在此步骤中,您将编辑流程中处理接收物料活动的属性。首先,您需要将 Batch 作为一个实例附加到流程中。这将使您能够使用current关键字来动态引用 Batch。这使得扩展更复杂的模型变得更加容易:您可以添加额外的 BasicFR 对象作为流程的附件,而无需为每个对象复制流程。

以下是每个活动功能的概述:

活动 说明
源:开始仿真 此计划源活动将在仿真开始后立即创建一个令牌,并将其发送至"等待事件"活动。生成此令牌后,它将不再创建任何额外令牌。该令牌将在其他活动之间持续循环,直至仿真结束。请为此活动使用默认属性设置。
等待事件:接收物料 等待事件活动属于事件监听型活动。这意味着令牌将在此活动处等待,直到被监听的事件发生。在此流程中,前三个等待事件活动将监听批次对象的"进入时"事件。由于批次属于基础固定资源对象,您需要明确指示其接收流动物料。当批次接收到流动物料时,您需要为其分配一个名为Item1Item2Item3的标签,该标签将存储触发事件的流动物料的引用。
延迟:处理时间 您将添加5秒延迟,用以表示批次处理每个流动物料所需的时间。

编辑这些属性的方法:

  1. 点击流程中的一个空白区域,确保未选中任何内容。在"快速属性"面板的流程实例分组下,找到附加对象(实例)列表。点击采样器按钮进入采样模式。
  2. 在3D模型中,点击批次进行采样。
  3. 点击等待事件:接收物品1活动以选中它。在属性面板中,确认对象框显示为当前 实例
  4. 事件方框中,点击采样器按钮进入采样模式。
  5. 在3D模型中,点击批次打开菜单。选择进入时对此事件进行采样。
  6. 现在找到标签匹配/分配表格。在进入项行,位于标签名称列下,输入Item1
  7. 点击操作列下的单元格以打开菜单。选择分配
  8. 监听器初始化时框,点击添加按钮以打开菜单。指向控制,然后BasicFR,接着接收项目以打开拣选列表选项。
  9. 您将使用默认设置,因此请确认拣选列表选项与下图类似:
  10. 等待事件:接收项目 2等待事件:接收项目 3活动重复步骤4-11,但在第8步应使用标签名称项目2项目3
  11. 点击延迟:处理项目 1活动以选中它。在属性面板的框,删除 当前文本并输入5.00
  12. 延迟:处理项目2延迟:处理项目3活动重复上一步操作。

考虑保存您的仿真模型。

步骤4编辑释放活动

在此步骤中,您将编辑流程中处理项目释放活动的属性。以下是每个活动功能的概述:

活动 说明
延迟:处理时间 您将添加5秒的延迟,以表示批次处理每个流项目所需的时间。
等待事件:释放项目 最后三个“等待事件”活动与前三个“等待事件”活动形成镜像对应关系。这三个活动将监听批次的“On Exit”事件。由于批次属于BasicFR对象,您需要在物料处理完毕后明确指示其释放物料。为确保批次释放正确的物料,您需要引用前三个“等待事件”活动创建的名为Item1Item2Item3的标签。

按以下步骤编辑属性:

  1. 点击Delay: Process All Items活动以选中它。在属性面板的Delay Time框中,删除当前文本并输入10.00
  2. 点击Wait for Event: Release Item 1活动以选中它。在属性面板中,确认Object盒子 显示当前 ( 实例)
  3. 事件框旁,点击采样器按钮进入采样模式。
  4. 在3D模型中,点击批量打开菜单。选择退出时对此事件进行采样。
  5. 监听器初始化时框旁,点击添加按钮打开菜单。指向控制,然后BasicFR, 然后释放项目以打开选项列表。
  6. 指定要释放的项目框中,将当前文本更改为令牌项目1
  7. 针对等待事件:释放项目2等待事件:释放项目3活动重复步骤3-8,但在第8步中应使用标签名称令牌项目2令牌项目3

考虑保存您的仿真模型。

步骤5测试模型

你可能还没意识到,但你的自定义固定资源目前存在一些问题。尝试重置并运行模型,看看是否能自己发现问题所在。如果卡住了,本步骤的其余部分将解释问题所在。

如果你仍然不确定问题所在,请尝试以下操作:

  1. 重置并运行模型。
  2. 等到批量处理器将流动实体推送到处理器1
  3. 暂停仿真模型,尝试移动处理器1上的一个流动实体。你会发现处理器中实际上有三个实体:

这里实际上存在两个问题。首先,你在批量处理器中看不到箱子。由于流程流没有明确设置箱子的位置,它们被批量处理器“吞没”而无法被看到。如果你能在批量处理器中看到它们,你还会发现所有三个流动实体都出现在同一空间(就像它们在处理器1中一样)。这与FlexSim自动偏移对象的方式有关。

其次(也是更重要的),你会发现批次对象同时释放了所有三个流动物体,然后直接跳转到下一批次的开始。同时释放流动物体导致处理器同时处理三个物体,这是错误的行为。这种行为是由FlexSim事件处理机制的工作方式引起的。

你将在接下来的两个步骤中学习如何解决这两个问题。

步骤 6更改流动物体视觉效果

在这一步中,你将修复批次对象中流动物体视觉效果的问题。你将通过添加三个“更改视觉效果”活动(每个物体一个)到控制批次接收物体的活动块中来解决这个问题。你将使用“更改位置”下拉选项来设置在批次活动中流动物体的偏移量。完成后,你的过程流将类似于下图:

在这一步中,你会看到一个FlexScript表达式,即当前.尺寸.z表达式。这个表达式获取包含流动物体的物体(即批次)的Z位置,并将流动物体放置在容器物体的顶部,使其不会被物体“吞没”。

要更改流程项目相对于批次的视觉效果:

  1. 将鼠标悬停在分隔等待事件: 接收项目1延迟:处理项目1活动之间的线条上。当线条变为黄色时,双击它以打开快速库。
  2. 视觉效果组下,点击更改视觉效果按钮来添加此活动。
  3. 重复这些步骤,在接下来的两个堆叠块之间也插入更改视觉效果活动。
  4. 为清晰起见,将这些活动重命名为:
  5. 活动 新名称
    第一个更改视觉效果 更改视觉效果:项目1位置
    第二个更改视觉效果 更改视觉效果:项目2位置
    第三项视觉变化 视觉变化:项目3位置
  6. 点击视觉变化:项目1位置以选中它。在 属性面板中,紧邻视觉变化框,点击添加按钮以打开菜单。选择设置位置以打开一些选择列表选项。
  7. 按如下方式设置选择列表选项:
    • 对象框中,输入token项目1
    • X坐标框中,输入0.6
    • Y坐标框中,输入-0.8
    • Z位置框中,输入current.size.z

  8. 更改视觉效果:项目2 位置重复之前的步骤,但这次请使用以下设置:
    • 对象框中,输入token.Item2
    • X位置框中,输入1.5
    • Y位置框中,输入-0.8
    • Z 位置框中,输入当前.尺寸.z

  9. 更改视觉:项目 3 位置重复前面的步骤,但这次使用以下设置:
    • 对象框中,输入token.Item3
    • X 位置框中,输入2.4
    • Y 位置框中,输入-0.8
    • Z坐标位置框中,输入当前尺寸z

尝试运行模型,观察这会如何改变流程物料在批处理器中的堆叠方式:

步骤7在流程中添加呼吸活动

您可能还记得在测试模型的步骤中,批处理器存在一个问题:它会将所有流程物料同时释放到下游处理器。这个问题是由FlexSim的事件处理机制导致的。具体来说,当处理器准备接收下一个物料时,它会打开输入端口,这导致第一个物料离开批处理器。当批处理器的“退出时”事件触发时,它会同时触发所有“等待事件”活动,从而一次性释放所有物料。所有这些事件监听逻辑甚至在处理器意识到已接收物料并关闭输入端口之前就已经发生。因此,在处理器输入端口仍处于开启状态时,所有物料都会被立即释放并离开。

同样的问题也可能出现在其他场景中。在流程流工具中,这种情况通常发生在监听事件在"等待事件"或"事件触发源"上触发后,紧接着一个或多个其他活动可能引发模型中其他事件的触发,且原始触发事件与后续事件触发逻辑之间没有任何延迟。逻辑执行速度过快,导致原始事件没有足够时间"喘息"并完成其正在执行的操作。在这些情况下,您可以通过添加一个喘息活动来解决问题,该活动是一个延迟时间设置为0秒的延迟活动。这将允许原始触发事件在令牌继续前进之前完成其正在执行的操作。

完成后,您的流程流将类似于下图所示:

要添加这些喘息活动:

  1. 将鼠标悬停在分隔等待事件:释放物品1等待事件:释放物品2活动的线上。当线条变为黄色时,双击它以打开快速库。
  2. 基础组下,点击延迟按钮以添加此活动。
  3. 重复这些步骤以再添加两个延迟活动 在等待事件:释放项目 2等待事件:释放项目 3活动之后。
  4. 为清晰起见,将这些活动重命名为:
  5. 活动 新名称
    第一个延迟 呼吸 1
    第二个延迟 呼吸 2
    第三个延迟 呼吸 3
  6. 在属性中,将所有三个延迟时间呼吸活动设置为0.00

尝试重置并运行模型。这次您会注意到,流程项会逐个离开批次,而非一次性全部离开:

您可能需要使用“等待事件”活动来接收和释放项,这似乎有点反直觉。您可能会问自己,如果在每个“等待事件:释放项”活动之前,在自定义代码活动中使用releaseitem()命令,是否会更简单。

这种方法的问题在于,它实际上可能导致项在命令执行完成之前就退出。等到令牌到达“等待事件:释放项 1”活动时,项 1 可能已经退出了。由于监听的事件可能已经触发,令牌将永远卡在等待状态。

这个问题的解决方案是在“等待事件”活动上使用 OnListenerInitialized 触发器。这允许您以正确的顺序执行逻辑:先执行事件监听逻辑,然后执行接收/释放项的逻辑。

结论

到目前为止,您已经学会了如何在流程流工具中为自定义固定资源创建逻辑。在下一个任务中,您将学习如何为自定义任务执行器创建逻辑。请继续前往教程任务 5.2 - 创建自定义任务执行器.

______
icon-svg-close-thick

Cookie preferences

Your privacy is important to us and so is an optimal experience. To help us customize information and build applications, we collect data about your use of this site.

May we collect and use your data?

Learn more about the Third Party Services we use and our Privacy Statement.

Strictly necessary – required for our site to work and to provide services to you

These cookies allow us to record your preferences or login information, respond to your requests or fulfill items in your shopping cart.

Improve your experience – allows us to show you what is relevant to you

These cookies enable us to provide enhanced functionality and personalization. They may be set by us or by third party providers whose services we use to deliver information and experiences tailored to you. If you do not allow these cookies, some or all of these services may not be available for you.

Customize your advertising – permits us to offer targeted advertising to you

These cookies collect data about you based on your activities and interests in order to show you relevant ads and to track effectiveness. By collecting this data, the ads you see will be more tailored to your interests. If you do not allow these cookies, you will experience less targeted advertising.

icon-svg-close-thick

THIRD PARTY SERVICES

Learn more about the Third-Party Services we use in each category, and how we use the data we collect from you online.

icon-svg-hide-thick

icon-svg-show-thick

Strictly necessary – required for our site to work and to provide services to you

Qualtrics
W
Akamai mPulse
W
Digital River
W
Dynatrace
W
Khoros
W
Launch Darkly
W
New Relic
W
Salesforce Live Agent
W
Wistia
W
Tealium
W
Upsellit
W
CJ Affiliates
W
Commission Factory
W
Google Analytics (Strictly Necessary)
W
Typepad Stats
W
Geo Targetly
W
SpeedCurve
W
Qualified
#

icon-svg-hide-thick

icon-svg-show-thick

Improve your experience – allows us to show you what is relevant to you

Google Optimize
W
ClickTale
W
OneSignal
W
Optimizely
W
Amplitude
W
Snowplow
W
UserVoice
W
Clearbit
#
YouTube
#

icon-svg-hide-thick

icon-svg-show-thick

Customize your advertising – permits us to offer targeted advertising to you

Adobe Analytics
W
Google Analytics (Web Analytics)
W
AdWords
W
Marketo
W
Doubleclick
W
HubSpot
W
Twitter
W
Facebook
W
LinkedIn
W
Yahoo! Japan
W
Naver
W
Quantcast
W
Call Tracking
W
Wunderkind
W
ADC Media
W
AgrantSEM
W
Bidtellect
W
Bing
W
G2Crowd
W
NMPI Display
W
VK
W
Adobe Target
W
Google Analytics (Advertising)
W
Trendkite
W
Hotjar
W
6 Sense
W
Terminus
W
StackAdapt
W
The Trade Desk
W
RollWorks
W

Are you sure you want a less customized experience?

We can access your data only if you select "yes" for the categories on the previous screen. This lets us tailor our marketing so that it's more relevant for you. You can change your settings at any time by visiting our privacy statement

Your experience. Your choice.

We care about your privacy. The data we collect helps us understand how you use our products, what information you might be interested in, and what we can improve to make your engagement with Autodesk more rewarding.

May we collect and use your data to tailor your experience?

Explore the benefits of a customized experience by managing your privacy settings for this site or visit our Privacy Statement to learn more about your options.
免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏

文章底部电脑广告
手机广告位-内容正文底部
上一篇:Tutorial 5 - Creating Logic for Custom Objects 下一篇:没有了

相关文章

遇到问题?请给我们留言

请填写您的电话号码,我们将回复您电话

您是本站第631626名访客 今日有0篇新文章/评论