全球FlexSim系统仿真中文论坛
标题:
【TFT 2014.10.14 FlexSim仿真模型题(21)】
[打印本页]
作者:
慧娴亚伦
时间:
2014-10-14 10:23
标题:
【TFT 2014.10.14 FlexSim仿真模型题(21)】
问题描述:本题来源于FlexSim官方交流群中一位朋友遇到的问题。在运用一些自动化设备的时候,我们通常对打包设备的逻辑要求与FlexSim自带的任务执行逻辑有一些不同,如何通过控制作业实体完成实际生产物流所需要的逻辑,通常是仿真建模的重难点。
模型要求:
1、附件中有本题7.1版本的原始布局,使用其他版本请也按照附件中的模型进行布局,以方便审核和对比;
2、Source10负责无限量产生托盘,两条传送生产线负责传输提供产品,由机械手完成打包需要的产品运输作业,每个托盘打包8个产品;
3、机械手完成打包作业的过程中需要严格遵循以下原则:例如上方传送带先达到产品,机械手开始上方传送带的搬运工作,在搬运过程中,除非机械手已经完成了上方传送带1个托盘产品的任务(即往上方合成器垒了8个产品),或者上方传送带暂时没有可以进行搬运的产品,否则机械手将不进行下方传送带的搬运作业,下方传送带先达到产品亦然。
提示:1 可能涉及的代码gettaskinvolved();
2 可以添加您认为需要的任何辅助实体来完成模型要求。
作者:
蓝桥书生
时间:
2014-10-14 11:21
[attach]2266[/attach] 不知道是不是这个意思
作者:
someone
时间:
2014-10-14 11:21
[attach]2267[/attach]
作者:
ldd001
时间:
2014-10-14 12:01
还是用全局表
第一列是传送带上有多少实体
第二列从哪个传送带拿的实体,哪行为“1”
第三列是组合器上放置了多少个实体
利用if逻辑判断实现的,通过开关输出端口。
从哪个拿的就一直在哪个拿,除非1.组合器装满一箱;2.传送带上没有了,
满足之一还另外一路
作者:
FFFrenk
时间:
2014-10-14 13:49
辛苦版主大大审阅
作者:
慧娴亚伦
时间:
2014-10-14 20:29
回复2楼:
完成了部分模型的要求,但是模型在运行至77秒左右,会出现下方传送带末端已经没有货物处于等待,此时机械手按照题目要求应该去拾取上方传送带等待的实体,但是此模型中机械手却仍然在等待搬运下方传送带的实体,这是与题目不符的。由于本题的核心就是要避免有可执行任务,而机械手却在等待一边任务,因此2楼的回复无法记为有效回复。
作者:
加油陶陶
时间:
2014-10-14 20:37
我做的也是有等待的情况,可能和2楼的思路差不多。。。
作者:
慧娴亚伦
时间:
2014-10-14 20:37
回复3楼:
完成的很好。在机械手的move触发器中通过判断装载任务的位置,利用标签作为对比,然后在机械手Queue Strategy触发器中对照是否符合标签值,以改变优先级。
恭喜您!论坛ID为 someone 的朋友在第三层的回复是第一个有效回复,获得积分5分。
24小时后本题结束(即2014年10月15日20时35分),其后的回复不计为有效回复。
作者:
慧娴亚伦
时间:
2014-10-14 20:42
回复4楼:
在模型运行至75时,会出现下方传送带末端已经没有货物处于等待,此时机械手按照题目要求应该去拾取上方传送带等待的实体,但是此模型中机械手却仍然在等待搬运下方传送带的实体,这是与题目不符的。究其原因,是在这个时刻,下方传送带虽然没有可以进行搬运的box,但是代码判定的标准却是这个传送带上面有没有box,此时正好有box进入传送带,但还没有到达末端,导致逻辑判定仍有可以搬运的box。
由于本题的核心就是要避免有可执行任务,而机械手却在等待一边任务,因此4楼的回复无法记为有效回复。
作者:
慧娴亚伦
时间:
2014-10-14 20:56
回复5楼:
完成的很好,仅仅在机械手的unload触发器中有代码,当机械手卸载时,如果机械手有2个任务(即两个传送带都有可搬运box),则转换任务序列排序,本例中正好在仅能产生2个任务,因此该方法很巧妙的实现了题目的要求。
恭喜您!论坛ID为 FFFrenk 的朋友在第五层的回复是第二个有效回复,获得积分4分。
由于代码的简便和实行的巧妙,额外再奖励积分2分。
作者:
慧娴亚伦
时间:
2014-10-15 08:54
回复7楼:
何不将您制作的模型上传与大家分享一下呢?集思广益一起解决问题。
作者:
蓬莱仙
时间:
2014-10-15 09:43
学习学习!
作者:
ldd001
时间:
2014-10-15 09:44
审题不细,以为只要传送带上有实体就等着呢?!
后来又试了一下没有什么好办法~
参照FFFrank的模型做了一个!
求给1分!
作者:
加油陶陶
时间:
2014-10-15 13:38
这就是我做的了
作者:
shiny0801
时间:
2014-10-15 14:34
學習
作者:
shiny0801
时间:
2014-10-15 16:46
樓主辛苦啦,學習完畢
作者:
慧娴亚伦
时间:
2014-10-15 20:49
回复13楼:
您的模型实现了题目的要求。
但是由于出现与5楼模型高度雷同的情况,因此,id为 ldd001 只能获得积分1分。
作者:
yangkaichong
时间:
2014-10-15 20:57
请楼主看一下。
作者:
慧娴亚伦
时间:
2014-10-15 20:58
回复14楼
您的模型是控制一个先进入的合成器的输入端口来达到同时只能处理一个合成器的任务,虽然跟题目的要求有一定的出入,但是在box产生的量很大的时候(足够完成一个合成器作业且不发生等待),还是可以做到轮流完成两边合成器的搬运工作。
处于鼓励目的特别奖励ID为 加油陶陶 朋友积分1分,希望您能继续支持和参与TFT活动。
作者:
慧娴亚伦
时间:
2014-10-15 21:09
[i=s] 本帖最后由 慧娴亚伦 于 2014-10-15 21:16 编辑 [/i]
本次TFT活动已经截止。
本次活动是TFT的第二十一次正式活动。机械手的使用在实现过程中与flexsim自带的一些逻辑是有一定的出入的,需要仿真建模工程师进行一定的修改,来适应不同机械手的搬运和装卸等相关的显示逻辑。
本次题目一共有5位朋友得到了有效回复。他们的论坛ID分别是:
someone、FFFrenk、 ldd001、 加油陶陶、yangkaichong
他们将获得指定积分,没有获得积分的朋友期待您的下次参与.
由于本题是TFT活动的第七次结算的最后试题,题目相对较难,由于涉及到任务执行器执行任务的序列,可能超出了初级入门朋友的掌握范围。但我个人认为作为一个契机来充分理解任务执行器的本质,对于flexsim进一步的建模,特别是在实际项目中的运用将会很有帮助。参与活动的朋友模型制作方式都非常巧妙,均是有针对性的根据题目条件来修改了任务的顺序,其中3楼的模型代码和实现方式较为复杂,写代码的地方也比较隐蔽,可能需要大家深入理解解决的原理,而5楼的模型代码非常简单巧妙,但是灵活性受到一定的限制,需要合成器上游必须是仅能一次产生一个搬运任务序列的实体(比如本题中的传送带)。
3楼和5楼的模型都非常具有代表性,有兴趣的朋友可以参考他们的模型,本次试题不提供参考答案。同时新参与的朋友希望能更多的贡献出自己的模型,即使不能很好的完成题目要求,但至少大家尝试解决,我认为这对自己建模水平的提高是很有帮助的,同时活动也非常鼓励新朋友参与活动。
本次试题结束之后将进行TFT活动第七次结算,请有机会换取激活码的朋友查收并及时回复论坛短消息。最后再次感谢大家对活动的支持!
作者:
慧娴亚伦
时间:
2014-10-15 21:16
回复18楼:
完成了模型的要求,您的模型原理上是对4楼模型的完善。非常巧妙地判断了多种情况,来控制开关两个传送带的端口!
很遗憾超出了有效回复的范围时间,但是18楼的模型由于对模型的改进很成功,由此特别奖励ID为 yangkaichong 的朋友积分3分以资鼓励,请下次及时上传您的模型以免错过积分!
作者:
missman
时间:
2014-10-16 12:39
[b] [url=http://www.flexsim.asia/redirect.php?goto=findpost&pid=14364&ptid=4787]5#[/url] [i]FFFrenk[/i] [/b]
大神啊!证明了一个结论:思路决定结果!
作者:
tang1991tang
时间:
2014-10-21 15:12
学习学习
作者:
ldd001
时间:
2014-10-22 13:08
[quote] 5# FFFrenk
大神啊!证明了一个结论:思路决定结果!
[size=2][color=#999999]missman 发表于 2014-10-16 12:39[/color] [url=http://www.flexsim.asia/redirect.php?goto=findpost&pid=14430&ptid=4787]http://www.flexsim.asia/images/common/back.gif[/url][/size][/quote]
同感
作者:
草原一棵树
时间:
2014-11-3 14:11
学习学习
作者:
xinglei
时间:
2014-12-9 20:47
学习学习
作者:
657776724
时间:
2015-6-29 09:39
通过在卸载时寻找机械手的任务序列队列中与当前激活的任务序列的临时实体类型相同的任务,并将其置顶。
请楼主指教。[attach]2668[/attach]
作者:
1010265352
时间:
2015-8-13 17:49
学习啦
作者:
1010265352
时间:
2015-8-13 20:08
学习啦
作者:
yuzhu
时间:
2015-12-4 19:23
太赞;啦
作者:
yuzhu
时间:
2015-12-7 18:02
学习了
作者:
zorsite
时间:
2017-5-14 07:48
[i=s] 本帖最后由 zorsite 于 2017-5-14 14:22 编辑 [/i]
任务序列好麻烦,偷懒使用端口控制。
根据两条传送带4种不同情况来分别判断机器人的工作位置。
默认两条传送带的输出都处于开启状态。
1.都没有临时实体:
哪一条传送带先有临时实体到达传送带末尾,就在哪一条传送带工作,同时关闭另一条传送带的输出。
2.都有临时实体:
比较两条传送带上的第一临时实体被创建的时间,去创建时间比较小(早)的那条传送带工作。
可以描述为:
2.1如果这条传送带上第一临时实体创建的时间小于另一条,则开启这一条,关闭另一条
2.2如果这条传送带上第一临时实体创建的时间大于另一条,则关闭这一条,开启另一条
3.这条有,那条没有
开启这一条,关闭另一条
4.这条没有,那条有
关闭这一条,开启另一条
仔细分析以上四条规则,其实可以总结为两条:
1.模型开始时
这是模型开始时的特殊状态,当然在模型运行后期也可能会发生。这条规则应写在“传送结束触发”之中。
2.模型运行后开始工作之后一旦开始工作,机器人就要连续抓取8个临时实体,之后再判断下一步去哪里工作,这条规则应写在传送带离开触发中。而这段代码被执行,就意味着:本条传送带(正在输出的这条)输出端口处于打开状态,另一条输出端口处于关闭状态。
所以情况2.1和情况3就不用进行任何处理,保持现状。
对于情况2.2:如果当前传送带有,并且另一条传送带也有,并且这条传送带上第一临时实体创建的时间大于另一条,则关闭这一条,开启另一条
对于情况4:如果这条没有,另一条有,则关闭这一条,开启另一条
[attach]3709[/attach][attach]3711[/attach]
一般而言,只要能用语言或流程图把逻辑表述出来,代码反倒是最容易的事情。
思考:如果有3条、甚至4条传送带,该如何设置?
作者:
慧娴亚伦
时间:
2017-5-15 01:39
[b] [url=http://www.flexsimasia.com/redirect.php?goto=findpost&pid=22696&ptid=4787]32#[/url] [i]zorsite[/i] [/b]
哈哈,简单和麻烦都是相对的。所以说FlexSim建模好玩的地方就在于每个人都有自己的角度来解决问题,没有所谓优劣之分,关键是实现目标。
多个传送带情况只得考虑,但是实际上不是很经常遇到(一个运输设备要管这么多输入情况较少)
作者:
gaoshanliushui
时间:
2017-10-23 21:23
学习
作者:
xingchen159
时间:
2025-1-8 12:43
感谢分享!!!
欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/)
Powered by Discuz! X3.3