全球FlexSim系统仿真中文论坛

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

作者: 17080134968    时间: 2019-10-22 00:53
标题: 穿梭车模型代码问题,有点粗糙,逻辑还有些问题(V19)
本帖最后由 17080134968 于 2019-10-22 00:55 编辑 9 }( |1 v$ p5 Z9 I
/ L9 I8 |/ j& E3 \
穿梭车模型,代码还有些问题,有懂的可以给支支招啊!  ) M& N2 C- C' b% a
1、小车运动轨迹问题,小车与提升机协作的时候,实体怎么引用以获取坐标?
( b% ~/ g8 u$ a0 G2、小车[size=14.3999996185303px]调度问题   . d5 j- ~9 Z' N* f! X
[size=14.3999996185303px]
" t, o  D! H" ^: {; ?8 z! k; s, Q( C  c0 h3 f7 Y, l' s8 D
[size=14.3999996185303px]********************************************
% F. C% j4 k& I$ j/**Custom Code*/6 H) x1 ^8 z/ J, D* b, r) f" G0 A
Object current = param(1);' p& k- O2 h% n$ G+ H- |8 W
Object item = param(2);1 x- w  r# t. `+ X  a: }6 L0 J
int port = param(3);
# T/ N) c+ L: X. \8 F  Rtreenode destination = param(4);3 {2 }( U  q+ R' H; m
double priority = param(5);' D; s- R1 x; y$ ~$ M% [  }
int preempt = param(6);
! l9 k4 {- Q, v1 T# T- O4 b6 m- w% Y. L' G7 P9 ~
treenode dispatcher = current.centerObjects[1];  
) h- c8 F) h$ F% t% _1 t# Etreenode lift=Model.find("Elevator1"); 7 f5 r" P  W' \6 p  `
2 o* h% H4 t9 ?: X, x

# ]/ {" H  x+ l# H3 ^. Ztreenode ts = createcoordinatedtasksequence(dispatcher);  ! M3 ^! m4 j) e7 W& m7 L; J1 k
int opkey = insertallocatetask(ts, dispatcher, 0, 0);
1 h. U5 {: l+ |int liftkey = insertallocatetask(ts, lift, 0, 0);  6 O8 b+ m- q' ^7 d; S: ^4 @
: {; e% B) Q5 Q$ n
int oploc=insertproxytask(ts,opkey,TASKTYPE_TRAVEL,liftkey,NULL );//3
- b9 P6 X0 ?  T& O$ Lint liftloc=insertproxytask(ts,liftkey,TASKTYPE_TRAVEL,opkey,NULL );//3: L6 D, {1 B$ ?, n
insertsynctask(ts,liftloc);//6
& t2 m: w+ h- }8 p6 M" qinsertsynctask(ts,oploc);//58 y* d) N1 H! P/ {3 \
" ~2 V" S: ?2 Z0 u
- Y& ?1 R4 \6 r7 E

1 z6 ]+ X  Q7 x0 \' ~7 G2 Iint opload=insertproxytask(ts,liftkey,TASKTYPE_LOAD,opkey,liftkey);// 78 @# {" H2 i8 w! s1 n3 r0 P& s
insertsynctask(ts,opload);//85 C/ w& h0 n; B
int moveupdes1=insertproxytask(ts,liftkey,TASKTYPE_TRAVELTOLOC,NULL,NULL,xloc(lift),yloc(lift),vectorprojectz(up(item),xloc(item),yloc(item),zloc(item),model())); 5 ~0 }1 J- ~0 u# n* m
insertsynctask(ts,moveupdes1);//11! }) M; V6 R: S- s# T

: Q6 g$ J# P  r3 i) h5 d+ }5 t8 G, S0 `2 l& S
int loadupdes1=insertproxytask(ts,opkey,TASKTYPE_FRLOAD,item,NULL);//18
7 @( W# u7 S5 N/ ~6 L8 vinsertsynctask(ts,loadupdes1);//11
2 t' P5 I! s0 ^( C3 x- {/ c/ Q9 S: Z+ L0 \8 ~% L9 c
int moveupdes2=insertproxytask(ts,liftkey,TASKTYPE_TRAVELTOLOC,NULL,NULL,xloc(lift),yloc(lift),item.level-1); 3 F  V3 S3 v. D. r7 D
insertsynctask(ts,moveupdes2); * @, W1 ], o+ ~( g5 K
+ Q7 G, |; O5 Z: l" L! q1 u$ c$ r
& m% n1 x/ `6 b4 ]3 |* s
int opmoveout=insertproxytask(ts,liftkey,TASKTYPE_MOVEOBJECT,opkey,model()); //13
( k( X+ r! D* o6 V9 X3 L6 }" ^% T1 }insertsynctask(ts,opmoveout); - [9 a0 U& \3 }" P3 _
insertdeallocatetask(ts,liftkey); & n: Y( W9 J: p5 W4 i
insertproxytask(ts,opkey,TASKTYPE_SENDMESSAGE,opkey,item,1,0,0);
0 T; {' D9 {: ~4 [5 k
; ~" H* ~5 |/ A* [
  u3 ]( Q" }* c& O+ s1 S+ O8 s7 y
9 _; p3 Y. v) G. c+ M0 \) pinsertproxytask(ts,opkey,TASKTYPE_TRAVELTOLOC,NULL,NULL,-0.31+0.6*(item.bay)+1.25,0.72,item.level-1);
* W( u/ D& |* b1 `: Tinsertproxytask(ts,opkey,TASKTYPE_UNLOAD,item,destination);//20
/ l7 J7 I; r% P+ l$ V  Q7 W) ^
) @8 ~9 O( E, a1 y) M6 U9 w3 {5 y6 X/ x( @. L. d- a6 y

2 M1 z0 U; K( D9 R8 g* I' O; X$ N6 Binsertdeallocatetask(ts,opkey); , Q1 A5 \, F3 j, [, v6 z
4 {0 B& r! L. s. ~4 r
dispatchcoordinatedtasksequence(ts);  
$ B( G0 r, b2 {5 R% K6 y% l! j( L9 z) n
) U0 Z8 o+ t$ X' g

5 k; G4 ~. J6 l3 S8 X9 h" x/ h1 ]return 0;    i7 N' @- g0 Y+ Y) `0 ^3 T
; E' q# k/ r0 G" ?% Q% v8 y! X

9 N) k) [: d9 N5 G8 [2 Q: f( J5 W; Z6 M, A$ V

作者: 沈瑞祥    时间: 2019-10-24 18:22
我之前做使用的是PF做的,代码做的还是更好封装,就是容易逻辑不清楚,目前来看你的模型穿梭车还有一些问题,一般是坐标出现问题。我晚点帮你再看看
作者: 17080134968    时间: 2019-11-4 17:01
沈瑞祥 发表于 2019-10-24 18:22, U. Z( {. |% q+ _' _, Y& x
我之前做使用的是PF做的,代码做的还是更好封装,就是容易逻辑不清楚,目前来看你的模型穿梭车还有一些问题 ...
7 ]0 z0 N) k* b  R# B+ [
用PF我大概知道怎么搞 了,但是不用PF怎么搞,版主帮我想想招!




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