全球FlexSim系统仿真中文论坛

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

作者: 17080134968    时间: 2019-10-22 00:53
标题: 穿梭车模型代码问题,有点粗糙,逻辑还有些问题(V19)
本帖最后由 17080134968 于 2019-10-22 00:55 编辑 ! y8 g! F/ S& j. e/ h
- e$ Z3 _, @; ?, a, @
穿梭车模型,代码还有些问题,有懂的可以给支支招啊!  
: L1 }" |) Q/ v8 R. V/ D! X1、小车运动轨迹问题,小车与提升机协作的时候,实体怎么引用以获取坐标?
: E2 D. U$ M4 L2、小车[size=14.3999996185303px]调度问题   " Q5 ]2 C; ]; b$ P) G+ {
[size=14.3999996185303px]: {! e5 S% k! J4 E
  T+ X/ b. C/ }4 T  T# U
[size=14.3999996185303px]********************************************
8 C) l; Q6 K, }8 M/**Custom Code*/& G, c; ^8 N( R  R: {
Object current = param(1);/ X6 S1 [; Q3 G3 j7 _
Object item = param(2);
( m9 P+ B1 @9 ^# ?' Y' U+ `6 M- oint port = param(3);
1 e) W% {! j8 M- Vtreenode destination = param(4);7 ~3 w& O# ^1 q1 i; }
double priority = param(5);. ^# w' w: X1 Q! l. A
int preempt = param(6);- u+ g# z/ Q3 e0 W6 p4 e7 t9 _1 }% F
# L( h, ]- f, U' P9 E
treenode dispatcher = current.centerObjects[1];  
& h* l, Z0 X2 p5 W3 j/ Ftreenode lift=Model.find("Elevator1");
- V# K8 `  S' W9 V
2 a1 F! z# B/ F4 A( v7 h
% b# C6 h& `* ?' Ztreenode ts = createcoordinatedtasksequence(dispatcher);  
8 q! B7 n/ j) j6 q" W, ^int opkey = insertallocatetask(ts, dispatcher, 0, 0); 4 J7 Q5 X4 S: Y1 Z2 v, }
int liftkey = insertallocatetask(ts, lift, 0, 0);  # ^+ m& e# d# {4 ^; V

; B, g0 x( f0 {# Y7 b; ?int oploc=insertproxytask(ts,opkey,TASKTYPE_TRAVEL,liftkey,NULL );//3) a) ?6 l& }4 t+ x  D
int liftloc=insertproxytask(ts,liftkey,TASKTYPE_TRAVEL,opkey,NULL );//3
# H; c  x% F, y) C( Rinsertsynctask(ts,liftloc);//6  Y/ ?; q. R% a$ V! v: u6 V" }
insertsynctask(ts,oploc);//5; B1 t/ @# V1 K  i# S0 }  p

4 o" ?/ ~5 C2 R4 G  k
2 {& g& s8 M0 v* C, j  D
: A$ c0 }8 j" a# r; N! A, eint opload=insertproxytask(ts,liftkey,TASKTYPE_LOAD,opkey,liftkey);// 70 h) x# M( j3 {4 M, x3 s
insertsynctask(ts,opload);//89 A$ `- e# F6 p; q0 l, c) O: n! V
int moveupdes1=insertproxytask(ts,liftkey,TASKTYPE_TRAVELTOLOC,NULL,NULL,xloc(lift),yloc(lift),vectorprojectz(up(item),xloc(item),yloc(item),zloc(item),model()));
: Q; g- i; v0 o- U# ginsertsynctask(ts,moveupdes1);//11
% Z" l" ^8 _& t- X6 M! a" U* U4 e' K; A+ h, x% U  B
0 j; a& v" V6 s
int loadupdes1=insertproxytask(ts,opkey,TASKTYPE_FRLOAD,item,NULL);//18! b9 b9 G: M" p
insertsynctask(ts,loadupdes1);//11, C8 h: E  O0 h" M) ]
4 T1 f; Z+ O# q4 w( }# K
int moveupdes2=insertproxytask(ts,liftkey,TASKTYPE_TRAVELTOLOC,NULL,NULL,xloc(lift),yloc(lift),item.level-1); & r0 V8 V: j* P  q, G
insertsynctask(ts,moveupdes2);
1 u* q, L5 j7 h# k* Y
5 b! V9 r# J0 |6 K" |7 S3 ^) {6 N3 h1 f
int opmoveout=insertproxytask(ts,liftkey,TASKTYPE_MOVEOBJECT,opkey,model()); //13
$ M! R4 @" I. }6 L# h, Yinsertsynctask(ts,opmoveout);
, `$ @' ?" @: Y' }insertdeallocatetask(ts,liftkey);
2 d, y, Y* n; xinsertproxytask(ts,opkey,TASKTYPE_SENDMESSAGE,opkey,item,1,0,0);
( {; P2 s9 h3 M6 C3 |+ H
3 d' S2 B- w) \5 z7 y% z
4 V4 C$ D4 z: K, p; y; B" l& Q9 O. ]1 J6 d& D- l% w
insertproxytask(ts,opkey,TASKTYPE_TRAVELTOLOC,NULL,NULL,-0.31+0.6*(item.bay)+1.25,0.72,item.level-1);) E3 o/ Q1 i% L9 X. t
insertproxytask(ts,opkey,TASKTYPE_UNLOAD,item,destination);//20
- d! \4 _8 w" ^3 u! [3 e$ b. ^3 _9 m0 b" V
: d# A; ?6 K( T0 W( N

  k- O, i8 z& ^insertdeallocatetask(ts,opkey);   }$ U6 m4 L0 j2 f' `( K
& m# X7 ^* r) i
dispatchcoordinatedtasksequence(ts);  
* B0 l0 B5 q  X9 I$ j6 v/ ~
7 l# ]/ p0 c) x3 b0 a2 z- L( I1 y  U' C9 w

* [- {7 {, f, G' B) e: t6 ureturn 0;    j9 w, N8 v8 R9 P# F
" G, i0 F& o& G# _& S. A

0 T- X) `5 Y* T! I3 w
9 G3 d: F8 K( e' \1 V) o. `9 ~& H
作者: 沈瑞祥    时间: 2019-10-24 18:22
我之前做使用的是PF做的,代码做的还是更好封装,就是容易逻辑不清楚,目前来看你的模型穿梭车还有一些问题,一般是坐标出现问题。我晚点帮你再看看
作者: 17080134968    时间: 2019-11-4 17:01
沈瑞祥 发表于 2019-10-24 18:22
8 g( [$ F! T- Y我之前做使用的是PF做的,代码做的还是更好封装,就是容易逻辑不清楚,目前来看你的模型穿梭车还有一些问题 ...

8 `! U1 U& Q6 K! j0 P& f! x( j6 x# Z用PF我大概知道怎么搞 了,但是不用PF怎么搞,版主帮我想想招!




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