全球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* F
2 E' ?5 K. W3 [4 r! O; q* f
[size=14.3999996185303px]********************************************
! _/ P4 y; [* @
/**Custom Code*/
( f+ C J i- \! s! \0 P( C M
Object current = param(1);
& p. K3 J9 \, z
Object item = param(2);
2 _" Q. A$ b1 M5 i9 Z
int port = param(3);
4 r' U4 ] D7 O! C R% H& M3 N6 E
treenode destination = param(4);
2 q# f* [4 C6 n9 V: B
double 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 q
4 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) D
int 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 );//3
0 Z! S7 ^, Q; Z* P0 F
insertsynctask(ts,liftloc);//6
) J! o) F+ P3 T+ |/ l' F
insertsynctask(ts,oploc);//5
1 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* K
int opload=insertproxytask(ts,liftkey,TASKTYPE_LOAD,opkey,liftkey);// 7
0 R2 Z" B6 Q& w5 b7 ~& Q7 u
insertsynctask(ts,opload);//8
9 }! 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 t
int 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# i
insertdeallocatetask(ts,liftkey);
3 c6 Y! Z K+ f4 z* k
insertproxytask(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# u
insertproxytask(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);//20
0 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/ B
insertdeallocatetask(ts,opkey);
' H: E6 q7 m1 a2 j' \( \- Q
- T4 k( a" g0 \) c& I, o
dispatchcoordinatedtasksequence(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:22
3 b# w. S9 g1 ^0 g
我之前做使用的是PF做的,代码做的还是更好封装,就是容易逻辑不清楚,目前来看你的模型穿梭车还有一些问题 ...
) f" p$ P/ Q! u
用PF我大概知道怎么搞 了,但是不用PF怎么搞,版主帮我想想招!
欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/)
Powered by Discuz! X3.3