全球FlexSim系统仿真中文论坛

标题: 穿梭车模型代码问题,有点粗糙,逻辑还有些问题(V19) [打印本页]

作者: 17080134968    时间: 2019-10-22 00:53
标题: 穿梭车模型代码问题,有点粗糙,逻辑还有些问题(V19)
本帖最后由 17080134968 于 2019-10-22 00:55 编辑
6 u" j7 Z2 Q( i( G1 k5 e$ D1 {; v- |: `9 ]
穿梭车模型,代码还有些问题,有懂的可以给支支招啊!  1 z* P& g# C5 c: G% r* u
1、小车运动轨迹问题,小车与提升机协作的时候,实体怎么引用以获取坐标?
! e+ P& P  E0 ?2、小车[size=14.3999996185303px]调度问题   9 }: w( k/ T6 v* H4 L. n
[size=14.3999996185303px]2 L- B2 b% U8 {) }0 h
  _4 m. o5 f- `# u6 F8 J
[size=14.3999996185303px]********************************************
* o) C' ^$ L4 D  D) C9 x/**Custom Code*/
1 Y! P8 v  h' }; N. G: rObject current = param(1);( u; v- f4 R6 O; @( ~
Object item = param(2);! y- b3 _: ^% N2 ~3 e
int port = param(3);
2 K5 v0 F, b9 p" {/ u( w- U) w, Ftreenode destination = param(4);- E6 Q+ f  D) m* L
double priority = param(5);7 }0 {" F2 S" g: Z8 H* d* d3 }
int preempt = param(6);
, W/ d; b* m5 r' Z- l; d0 q) X: M& A$ r  r
treenode dispatcher = current.centerObjects[1];  
$ J+ s% R: S8 A+ ?1 q0 ]1 Xtreenode lift=Model.find("Elevator1"); $ o# r, p; \& N9 l/ c
, V- m$ b/ j7 x/ |2 M

0 M1 x, j# [  q3 [1 Ytreenode ts = createcoordinatedtasksequence(dispatcher);  # z! s8 x3 J. j8 t$ ~. E9 ~/ L8 w
int opkey = insertallocatetask(ts, dispatcher, 0, 0);
1 ~1 I1 X" Z! Y* xint liftkey = insertallocatetask(ts, lift, 0, 0);  
- f3 v/ C9 S9 a  w) _6 [
) @' c6 G, I# L: }0 [8 G+ Jint oploc=insertproxytask(ts,opkey,TASKTYPE_TRAVEL,liftkey,NULL );//3* G. E  ~. a; A& i  n: {# S
int liftloc=insertproxytask(ts,liftkey,TASKTYPE_TRAVEL,opkey,NULL );//37 K+ D3 y' f' h7 p) M( i7 ~/ N
insertsynctask(ts,liftloc);//6
8 |4 p' Y  o4 X* g8 B% c7 d9 ginsertsynctask(ts,oploc);//5
' J5 }/ R' V% g+ x+ k9 M& y9 W" S4 W- R: m( Z' y1 ^$ a, E* |
+ A- G2 h8 R9 H2 X( A( U+ @1 y

4 Y) g0 E7 ?8 b' |+ U5 ?1 v" Kint opload=insertproxytask(ts,liftkey,TASKTYPE_LOAD,opkey,liftkey);// 7! o9 m5 T8 }. k+ t7 h, \9 o7 q
insertsynctask(ts,opload);//8
. p6 i$ p8 V8 y; K5 iint moveupdes1=insertproxytask(ts,liftkey,TASKTYPE_TRAVELTOLOC,NULL,NULL,xloc(lift),yloc(lift),vectorprojectz(up(item),xloc(item),yloc(item),zloc(item),model()));
- F% {1 r5 M& Q1 v& F& hinsertsynctask(ts,moveupdes1);//11
% E7 Y( `1 Z# z* c& U
7 F/ \) ^6 D0 n9 ~  p$ E! u4 x
% ~- l5 [% [. yint loadupdes1=insertproxytask(ts,opkey,TASKTYPE_FRLOAD,item,NULL);//18
4 l% t) K$ D5 `insertsynctask(ts,loadupdes1);//11
+ v' p7 z/ |- |' C8 |, u7 Q" A9 u* e/ W( C9 Q; r* ~
int moveupdes2=insertproxytask(ts,liftkey,TASKTYPE_TRAVELTOLOC,NULL,NULL,xloc(lift),yloc(lift),item.level-1); ! Z: n  ^' I& e
insertsynctask(ts,moveupdes2);
! b2 N; W& ~/ I2 a
6 b' q3 y' f! i7 O- u6 I
7 N6 M* M9 M* P: Q6 v$ C/ W4 R& oint opmoveout=insertproxytask(ts,liftkey,TASKTYPE_MOVEOBJECT,opkey,model()); //139 ]) M' H  W8 F
insertsynctask(ts,opmoveout); - |! b% N6 j6 i  n
insertdeallocatetask(ts,liftkey); 8 i( w9 O0 H0 f+ X1 K
insertproxytask(ts,opkey,TASKTYPE_SENDMESSAGE,opkey,item,1,0,0);
% w; F& r7 }3 E+ f2 p- {/ R& m9 z' F" C

1 D# g9 B5 H! N1 Z1 q$ K
' d2 t3 ?8 E! X$ @* }9 |4 |insertproxytask(ts,opkey,TASKTYPE_TRAVELTOLOC,NULL,NULL,-0.31+0.6*(item.bay)+1.25,0.72,item.level-1);
% C- N" y! Q1 v% q% Y8 Vinsertproxytask(ts,opkey,TASKTYPE_UNLOAD,item,destination);//20
+ O& o% p7 w/ |6 c* ~
9 h$ P! t9 D8 s" f7 W5 ^, `+ {" o

  ^$ v. m# N9 q4 |insertdeallocatetask(ts,opkey); 6 a' D( ~# U) f- W7 X' z- a. S
8 L1 m0 V  T$ z3 A6 I
dispatchcoordinatedtasksequence(ts);  ) n& ^+ i0 f: E2 {
9 J" f8 L9 D' |, f3 T: _, Y

5 x# T& N* x0 P' X1 o
/ m6 f  O3 ~6 ?6 W3 xreturn 0;  
$ `, b4 J4 a* N3 K: Y# I: I8 k* `( [

5 }# B" G3 d% D% e0 E3 J* K% Q. U: [" y

作者: 沈瑞祥    时间: 2019-10-24 18:22
我之前做使用的是PF做的,代码做的还是更好封装,就是容易逻辑不清楚,目前来看你的模型穿梭车还有一些问题,一般是坐标出现问题。我晚点帮你再看看
作者: 17080134968    时间: 2019-11-4 17:01
沈瑞祥 发表于 2019-10-24 18:22
3 M3 x! f$ l% q. k8 o我之前做使用的是PF做的,代码做的还是更好封装,就是容易逻辑不清楚,目前来看你的模型穿梭车还有一些问题 ...

. d* ?3 Y3 s2 A! u  [5 G! B用PF我大概知道怎么搞 了,但是不用PF怎么搞,版主帮我想想招!




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