全球FlexSim系统仿真中文论坛

标题: 任务序列代码 [打印本页]

作者: 啊钟    时间: 2014-5-29 14:53
标题: 任务序列代码
本帖最后由 啊钟 于 2014-5-29 21:31 编辑 + V# q/ I# I; t; ^
8 m6 L& U& L# I) t6 s
这是我想用的任务序列,可是不知道为什么设置完了以后会显示程序出错,请问我是错在哪里呢?
8 K: C2 X2 }, v, v% s
2 \; q. q% C: Btreenode item = parnode(1);
% K* l8 ~6 `0 e" Ltreenode current = ownerobject(c);; B* v/ K& c. J, C5 i3 z
int port = parval(2);& Q! X- F0 h) d3 E/ E/ f$ d2 i
4 u0 ?& v0 ]; n4 Z1 y
treenode ts = createemptytasksequence(centerobject(current,1),0,0);
; u3 @! Y! f8 U( {  z, N8 i, B0 a9 q! z5 i% M( l
inserttask(ts,TASKTYPE_TRAVEL,current,NULL);) J; }, g# Z5 s4 V# r& }0 S
inserttask(ts,TASKTYPE_FRLOAD,item,current,port);
. s; K( @' G) ginserttask(ts,TASKTYPE_TRAVEL,centerobject(current,2),NULL);
. o# s6 g0 C' z/ w) Finserttask(ts,TASKTYPE_DELAY,NULL,NULL,60,STATE_BUSY);
* x8 W3 u/ m5 X' V- I( Binserttask(ts,TASKTYPE_TRAVEL,outobject(current,port),NULL);& B. G, z9 O8 c* q+ J
inserttask(ts,TASKTYPE_FRUNLOAD,item,outobject(current,port),opipno(current,port));& Z) a: c( k" E9 ~; S8 @
& H2 x+ {, c# T5 I+ c0 I6 l/ y
dispatchtasksequence(ts);
8 v) B7 Z3 U! {& Q, w& L0 Q4 Y6 b1 n* \4 r! @& V
return 0;  // return a 0 so this object will know that you made your own tasksequence and it doesn't need to make the standard tasksequence automatically
作者: 慧娴亚伦    时间: 2014-5-30 10:07
单看代码是没有问题,但是需要结合具体的模型中的情况来看,您最好是能把报错截图上传。
作者: 啊钟    时间: 2014-5-31 09:13
2# 慧娴亚伦 ( l! X+ E" G. Y( `

5 v+ G2 s: \  P& h, c9 G7 R6 q6 t& w  e3 h7 f3 o$ C) ?
报错是这样的。其实我第一次输入代码的时候是可以运行的,但后来就一直不行了。[attach]1977[/attach]
作者: 啊钟    时间: 2014-5-31 09:13
本帖最后由 啊钟 于 2014-5-31 09:18 编辑 # e! K1 h- k# L, n  h+ S
; g6 r. p3 k8 k; |* r* h
[attach]1978[/attach] 3# 啊钟 就是这个" i3 e5 ]' F9 _/ e

8 q5 d0 B0 C& N" p( \! W由于模型要到实验室才可以修改,我自己的软件item有限所以上传不了加入了任务序列的模型,我的任务序列是添加给每一个source后的queue,下面是没有添加任务序列的模型。我的模型还有一个问题,就是货物会不断地堆积在queue中,而不会被sink吸收,这是为什么呢?求解,谢谢!![attach]1979[/attach]
作者: 啊钟    时间: 2014-5-31 16:19
2# 慧娴亚伦
3 t. L+ C' b! M3 R! c' U, Y" g0 T! Q
, ~, v* t! _+ b$ v4 j" e' E7 b4 W, {- D
我仔细看了一下发现代码的顺序有点问题,改了一下,发现可以运行了
4 B4 o9 C2 e0 S8 |# c" d/ U" u: S- g( U2 B& |) F9 t3 r
treenode item = parnode(1);7 `3 L8 |& L8 ?# V& Z7 u$ h
treenode current = ownerobject(c);
- \, R, R6 K! I: ]# V# Bint port = parval(2);
7 I- r. X' ~  [7 ~8 z* v# n% V& l7 ^& b- ~" O- h; C4 P
treenode ts = createemptytasksequence(centerobject(current,1),0,0);       //创建空任务序列
+ f: E! N2 l  ]; {3 _# dinserttask(ts,TASKTYPE_TRAVEL,current,NULL);                                   //走到本序列
+ F6 A  I1 Z9 Sinserttask(ts,TASKTYPE_DELAY,NULL,NULL,60,STATE_BUSY);                       //延时60秒7 D7 ]' u! z2 i  J$ E3 _
inserttask(ts,TASKTYPE_FRLOAD,item,current,port);                             //装载实体
/ f" ]8 x8 q) Y3 H& pinserttask(ts,TASKTYPE_TRAVEL,outobject(current,port),NULL);                //走到下一序列
" h: i6 z7 w# |3 f0 i7 T. Rinserttask(ts,TASKTYPE_DELAY,NULL,NULL,60,STATE_BUSY);                       //延时60秒
* ^3 J1 s& U  x0 u3 f  x6 H/ kinserttask(ts,TASKTYPE_FRUNLOAD,item,outobject(current,port),opipno(current,port));# l, f, O: n. ?; @6 ?" c# K# p
//卸载实体: E* `9 ~" g/ ~3 O0 [
$ m) i/ G/ e7 o: Q
dispatchtasksequence(ts);                                                          //分配任务序列- j6 ?& E1 J' j. H2 T. `
1 x1 N) j  [5 d# y2 ?' O- P$ n
return 0;                                                                           // 返回0表示本对象创建自己的任务序列,而不是使用默认的自动创建的任务序列* B0 d. l8 J7 |
2 F, c7 G( {/ W4 ^! x7 K, e- f

, @3 `. O  E* q0 H9 D% S' k8 B这样是可以的吗?谢谢您!
作者: guozhongyun    时间: 2014-8-21 19:42
学习学习!!




欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/) Powered by Discuz! X3.3