全球FlexSim系统仿真中文论坛

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

作者: 17080134968    时间: 2019-10-22 00:53
标题: 穿梭车模型代码问题,有点粗糙,逻辑还有些问题(V19)
本帖最后由 17080134968 于 2019-10-22 00:55 编辑
, e( K' H8 W2 \1 i. o& k
* q9 B- d9 r; i$ Z5 v$ W穿梭车模型,代码还有些问题,有懂的可以给支支招啊!  5 [! Z" d8 Y# d; A! o9 M
1、小车运动轨迹问题,小车与提升机协作的时候,实体怎么引用以获取坐标?- b, G. G- q; h, [
2、小车[size=14.3999996185303px]调度问题   
4 d5 C1 q- ^* c, {1 _- A[size=14.3999996185303px]
- N( v; S, p1 t. u* F2 E' ?5 K. W3 [4 r! O; q* f
[size=14.3999996185303px]********************************************! _/ P4 y; [* @
/**Custom Code*/
( f+ C  J  i- \! s! \0 P( C  MObject current = param(1);
& p. K3 J9 \, zObject item = param(2);
2 _" Q. A$ b1 M5 i9 Zint port = param(3);
4 r' U4 ]  D7 O! C  R% H& M3 N6 Etreenode destination = param(4);
2 q# f* [4 C6 n9 V: Bdouble priority = param(5);: N3 w( A0 y3 X- o8 d/ |6 x
int preempt = param(6);2 K/ S: q0 U% g: P8 }9 D
; F) m0 h) ~- W
treenode dispatcher = current.centerObjects[1];  : P( S1 i' u' D3 ^5 V
treenode lift=Model.find("Elevator1");
! X: b) c) x9 A) p  F6 q4 A3 [  S; y' e% W2 B6 a
! h7 X0 W4 {, A: m
treenode ts = createcoordinatedtasksequence(dispatcher);  # d1 j' Q6 j4 E/ g8 O0 d/ Y
int opkey = insertallocatetask(ts, dispatcher, 0, 0); ; e' V0 S# c' {/ D9 l) d- M: u
int liftkey = insertallocatetask(ts, lift, 0, 0);  
: O0 E* g: \- @
: U( [6 H+ l$ j4 C- N) Dint oploc=insertproxytask(ts,opkey,TASKTYPE_TRAVEL,liftkey,NULL );//3
0 {" h$ N# D- k" j( J# n1 V! `int liftloc=insertproxytask(ts,liftkey,TASKTYPE_TRAVEL,opkey,NULL );//30 Z! S7 ^, Q; Z* P0 F
insertsynctask(ts,liftloc);//6) J! o) F+ P3 T+ |/ l' F
insertsynctask(ts,oploc);//51 Y+ X- c: B5 a, K2 Q

- `5 H: l$ u; u6 b2 P1 n3 q
9 a0 Y6 x8 j( U; Q' F- c
% M5 @& F, C$ k* Kint opload=insertproxytask(ts,liftkey,TASKTYPE_LOAD,opkey,liftkey);// 7
0 R2 Z" B6 Q& w5 b7 ~& Q7 uinsertsynctask(ts,opload);//89 }! s- S' B. A- C' q) Q: j& S% b
int moveupdes1=insertproxytask(ts,liftkey,TASKTYPE_TRAVELTOLOC,NULL,NULL,xloc(lift),yloc(lift),vectorprojectz(up(item),xloc(item),yloc(item),zloc(item),model())); 0 l' c6 S, _% x1 X  D. @
insertsynctask(ts,moveupdes1);//11: n" J: a9 _, B& K1 Z& U" V

# F. v4 d# S5 q1 y' {7 P9 {8 r7 q8 U
; l  q* L6 i9 b  tint loadupdes1=insertproxytask(ts,opkey,TASKTYPE_FRLOAD,item,NULL);//18% L5 |, ]" M. j) l6 B
insertsynctask(ts,loadupdes1);//11- p$ g' y) a0 J% |
1 e# j; P- L2 V5 g1 J
int moveupdes2=insertproxytask(ts,liftkey,TASKTYPE_TRAVELTOLOC,NULL,NULL,xloc(lift),yloc(lift),item.level-1); $ p( G/ s' z! a! y! u; Q" A" J
insertsynctask(ts,moveupdes2); 0 r$ I6 a4 }7 O# W7 _
9 P* P- {1 H! R/ v# u
3 i; w% h/ Z4 F. }
int opmoveout=insertproxytask(ts,liftkey,TASKTYPE_MOVEOBJECT,opkey,model()); //13
$ E2 E2 _) \5 ~; h8 j8 O( N9 p5 }' R% |insertsynctask(ts,opmoveout);
! R' z' \/ c* Z9 m6 l, N- X7 v, x# iinsertdeallocatetask(ts,liftkey);
3 c6 Y! Z  K+ f4 z* kinsertproxytask(ts,opkey,TASKTYPE_SENDMESSAGE,opkey,item,1,0,0); 3 m5 a  c6 H$ t  |. E

- q4 Q% C8 l! p/ M
1 m1 i* n9 S. d) f
) I( M5 y% _" E; ?8 c0 a0 Y# uinsertproxytask(ts,opkey,TASKTYPE_TRAVELTOLOC,NULL,NULL,-0.31+0.6*(item.bay)+1.25,0.72,item.level-1);
. @. O# T1 ]! \1 H& @insertproxytask(ts,opkey,TASKTYPE_UNLOAD,item,destination);//200 M( h& R% P5 z7 ^* c& M

4 i; a+ \) g/ x) K( e: B6 {; C
1 o" {+ t  R' q4 z
" C" ^; S+ e/ Binsertdeallocatetask(ts,opkey); ' H: E6 q7 m1 a2 j' \( \- Q

- T4 k( a" g0 \) c& I, odispatchcoordinatedtasksequence(ts);  2 |3 X0 e* x: ]1 q8 S, V! @/ _

8 |' c! g1 W/ G" W! U" P
: J9 C+ s9 R; }3 l: L: L# c# D* j7 k8 C
return 0;  
- v+ g' s. m2 n2 h4 m' X4 y
6 L2 C8 O# H; {5 {  G
9 H+ Z# B2 o: u5 q: Z- ~3 x; ^, v0 b# Z/ \) M1 B" z

作者: 沈瑞祥    时间: 2019-10-24 18:22
我之前做使用的是PF做的,代码做的还是更好封装,就是容易逻辑不清楚,目前来看你的模型穿梭车还有一些问题,一般是坐标出现问题。我晚点帮你再看看
作者: 17080134968    时间: 2019-11-4 17:01
沈瑞祥 发表于 2019-10-24 18:223 b# w. S9 g1 ^0 g
我之前做使用的是PF做的,代码做的还是更好封装,就是容易逻辑不清楚,目前来看你的模型穿梭车还有一些问题 ...
) f" p$ P/ Q! u
用PF我大概知道怎么搞 了,但是不用PF怎么搞,版主帮我想想招!




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