设为首页收藏本站

最大的系统仿真与系统优化公益交流社区

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7444|回复: 9

[求助] 用AGV模板发生了以下错误,请解!

  [复制链接]
发表于 2011-11-5 16:38:28 | 显示全部楼层 |阅读模式
问题在哪里?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2011-11-14 10:37:54 | 显示全部楼层
没有解决,再顶一下。
 楼主| 发表于 2011-11-17 11:03:27 | 显示全部楼层
/* called by:        entrance ctrl of the object 'track'. a% n0 J% m4 K/ ?; B/ E
*/2 ]1 b8 D* A0 x, e5 T  ]
is6 L/ N. O7 P- l9 r! L4 I) J
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
% a6 G$ i  d  Ndo
# ^1 K  L% i9 i9 n6 e0 s; b4 o        Lan := rootfolder.Internal.Tools.AOLlanguage;) z% I) i. |$ l! _5 H& Y- ]; k
        if current = @.Destination -- else return
+ K( o  F# l% T( s" N        then4 A, \7 P' z. r* g% J: W1 `# w
                @.Destination := void;
: b0 N9 l* @& j/ {/ B                if @.occupied then2 Q0 I6 j. T% H/ @6 O* p6 K
                        part := @.cont;: ^) {& {6 M) R2 O. ]
                        @.transpOrder := void;) A" ?6 P" }! I" Y7 Q1 x
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
( {* Q9 O. J3 k                                @,root.eventcontroller.simTime);6 ~: ?# x: L  o; n- C3 c. w
                        @.HasOrder := false;9 |; c! U! m$ I# M1 e
                        @.DrivingHome := true;
, W% k7 z; A, Z5 \* ?                        rgManager.tryToStartTransOrder;2 h0 C8 b% `7 n+ B2 t  G
                        if @.Destination = void+ n9 m% I+ ~( i: w- x
                        then -- no transport order for vehicle @( e8 X  Q1 U3 ^! Z- E4 ^
                                @.Destination :=
- ~- Z0 O' o  H1 e( c/ t- z, c                                rgManager.nearestFreeStation(@,track.~);
) L$ Q4 ]2 x0 Z$ @                                newDirection(@);   & M; f! J1 p: J- `7 D" p2 Z
                                if @.Destination /= void then; c: v6 ?% o+ m" D* _1 W
                                        @.Destination.NumReservation :=' Y$ ]0 C* C% L, m, F
                                        @.Destination.NumReservation + 1;
, r$ u8 v. N- x; Q                                end;/ G2 ]$ D+ S8 t- u" n
                                @.CurrIcon := "drivingHome";9 a# W" j) d' {' k8 F
                                @.DrivingHome := true;+ Z- n3 s0 b2 N* Z
                        end;
$ w" S2 |  b% s5 O                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
6 c% r8 i9 A, g                        part := @.transpOrder;
& U7 \! C) ~, _( `9 b5 J0 J( y                        part.move(@);-- load part% _/ J6 u, \, R# s3 U7 a9 {. @
                        @.CurrIcon := "load";" {/ N* p% s4 ?0 Z5 c! R. W
                        GlobalDistObj := part.globDestination;/ {( W; T8 Y" E. f4 k8 @& a" w: _
                        assignLObj := rgmanager.rgAssignL;2 V- R! ^' i8 [5 H- Q
                        row := assignLObj.getRowNo(GlobalDistObj);  x6 n0 d) Q7 ]; r% G; i
                        if Row = -1 then -- since 702 L$ f! h- m% ]3 T2 E7 {' w
                                if lan=1 then
8 ~8 A. B, m: G. ]8 }. X$ D                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
& b- E9 t  k% t. \                                                to_str("in der Andockstation: \"",?.~.name,"\""));
/ @- w/ e/ D) m* x6 x9 F                                else
% Y2 }: P- \$ w3 S                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
, i2 t) z4 n& L* F: o1 ^                                                to_str("in docking station: \"",?.~.name,"\""));                               
. g. `  K1 ?7 g4 U0 p9 U7 H# _+ z3 N% V* |                                end;' s& k( B8 }" h4 }/ L
                        else2 n/ ^( R1 M0 }$ v' z
                                @.Destination := assignLObj[1,row];
* b( J, I: O( r$ p3 w6 e                        end;                        9 }/ Q2 i* Z8 c6 D& g- P
                        newDirection(@);
3 ^8 ?- _# G2 c& K5 ~, t' t, W                        @.HasOrder := true;
, z' R2 u, q, d8 ^4 {1 S7 i                end;" w+ x1 B. ^, ]8 z
        end;. J" ?' G5 ?# U7 F% C
end;        -- of the method
9 F" {2 Q+ M, W( b
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
6 S6 i  V" N7 M; |. x+ V; v& m) L" W; s
这是AGV_putin中arrive的method。: d9 J* b7 y. F4 ?3 n5 o: P

1 H! R/ T9 Q  e3 o当到达物料速度越高时,这个报警更多,, @& H1 `; T' [" a  y: K
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。. I* u1 ~1 K! q$ k5 \3 F
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?: D3 b$ A( ?( Q% H

5 s, w" k! |! W7 f2 B" U1 H另外一个小建议,就是move,所有的move都可以这样
! v6 p+ l  T. J- }9 c, [if not move() then debug end  S" ?, ]. z: i/ G  o5 N" v$ _, z
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
, w) Z; {2 {- r$ a4 X3 ^" r+ t6 X3 x5 cplant simulation中的free libraries有AGV模板,
; L7 g  t+ T" @' R里面也有案例。/ m1 _. a! h* q$ C
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
6 D8 A3 f+ B. g$ G8 f+ m$ P
! N% i# A8 D. T7 j我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
# L" B6 P( j! Z% V9 Q, f: @$ j1 d/ a9 ]4 \9 Q$ U7 a
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
# W+ z3 J7 a4 \4 L这是AGV_putin中arrive的method。% }9 M  D8 {4 [0 l2 W: L- L0 I: `
0 ?3 P! _" ^5 M/ v
当到达物料速度越高时,这个报警更多,
* X0 X. m6 V/ m# V9 D1 @9 l
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|SimulWay 道于仿真   

GMT+8, 2026-4-11 19:31 , Processed in 0.017241 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表