设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7003|回复: 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'4 _- n7 N) @/ j* K
*/
; k- u7 n" H5 R3 V8 A) m% A9 qis+ f9 b4 @9 a/ a. A
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;+ P8 s* y* |2 m
do
, `# s8 T6 J5 X" w2 f# S        Lan := rootfolder.Internal.Tools.AOLlanguage;5 E  H. u! P# d, H# _
        if current = @.Destination -- else return
( Z1 O. U/ |8 I3 U+ c        then  }% H* B1 V1 r# E7 `) K
                @.Destination := void;( t! K; m: S7 w( R  \: o8 h
                if @.occupied then+ s: x3 T8 Y0 B; v0 n; x
                        part := @.cont;
9 i& {- A5 p& ]& |                        @.transpOrder := void;5 R, X- U4 B+ Z$ z" k1 I. q
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
  f! `" @( Y: h" s1 B7 O                                @,root.eventcontroller.simTime);
0 }! T" R; E' p6 x3 P$ N! ^8 M( ?3 o4 N                        @.HasOrder := false;; @. r! O- b! c1 V
                        @.DrivingHome := true;! `. L* ?, F, }/ ?1 q% N" R" R
                        rgManager.tryToStartTransOrder;
( F1 b6 D" c: Y' i& I; [! E5 e! g( U                        if @.Destination = void: \( R; }1 F) a% l$ g$ y& y
                        then -- no transport order for vehicle @  e9 x+ B  Z8 N5 u
                                @.Destination :=! b$ I: `6 N. V$ [" y7 ^
                                rgManager.nearestFreeStation(@,track.~);8 G2 d0 e7 z' t0 t- o6 W
                                newDirection(@);   
3 l5 c4 ~6 m, b! h" ^; F% E                                if @.Destination /= void then
- y8 K+ w) ~8 p                                        @.Destination.NumReservation :=! q2 C# D" `* z" z+ |
                                        @.Destination.NumReservation + 1;
$ a" e6 `4 [6 B                                end;/ k* r# q4 m6 Q$ S
                                @.CurrIcon := "drivingHome";
/ h4 L. \: D5 @% f                                @.DrivingHome := true;
4 s4 F0 ~+ [8 |! H) A  f. J( F                        end;
8 V' t# s, n3 ~4 w2 t& `                else -- the vehicle @ is empty, both vehicle and part are in the same dock station! T) U8 e0 r& z3 f% B7 q
                        part := @.transpOrder;- W0 ^: W1 p4 C! Z
                        part.move(@);-- load part1 c6 c$ w) R/ n0 `, E
                        @.CurrIcon := "load";4 D4 D; `1 H: b
                        GlobalDistObj := part.globDestination;
% ]( y, a) @* D" R: @. P                        assignLObj := rgmanager.rgAssignL;$ k3 c; a$ z+ |+ V* X$ h. Z2 W
                        row := assignLObj.getRowNo(GlobalDistObj);9 p) ~2 h; d7 |2 a7 ]
                        if Row = -1 then -- since 70/ Y! R8 S& v( x7 k8 W* u" d% \
                                if lan=1 then
, t; [* A7 z+ T+ E5 ^                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),/ C/ W: u( Q" j) s: Q* i/ P; _- J8 F
                                                to_str("in der Andockstation: \"",?.~.name,"\""));& y# h! [4 c- C' t# x2 r9 T
                                else
, }, N, _+ @1 R                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
3 L; n8 L% P: p' Z4 b8 u                                                to_str("in docking station: \"",?.~.name,"\""));                                8 j7 L, D" z: o. `: e+ ?8 x, }
                                end;
) Q( L/ Z4 @6 |( I# {# s- _* e/ W2 w$ k' z                        else; `  _# X1 @% Y# X8 H" ^
                                @.Destination := assignLObj[1,row];  }; G$ d  V' M3 C9 c$ q
                        end;                        # R1 J2 S) r0 W+ s
                        newDirection(@);
) Y  Q  p. C3 a% R0 C                        @.HasOrder := true;
1 `4 T2 W5 `# s- c                end;
9 K2 G6 H' @) ~) j, Y' j/ Y        end;6 J; i* v* z: m7 _7 `9 N
end;        -- of the method! s# Z1 H% F! o, U7 H! i1 q1 }7 f
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
% R5 s' q' A0 @  y+ j( A% v& `1 n% x3 h4 L* T0 u9 y6 U5 }
这是AGV_putin中arrive的method。4 _: A) ?  i6 W) e' k7 C  n

* M- |9 H/ b; c$ _, \$ v6 l当到达物料速度越高时,这个报警更多,
& D' I2 C/ K( |可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。9 d1 i7 D0 n$ h  _7 c; s- c
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
2 Y# Q/ h/ W' {- }' [5 D& q! y, i) ]( j4 J
另外一个小建议,就是move,所有的move都可以这样# A5 s6 B, M% z( X/ `
if not move() then debug end
+ y& j' y6 D# ^( Q/ Z; s这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
; d! `2 t6 w$ m! Q$ u, bplant simulation中的free libraries有AGV模板,' N; s3 l& ?/ L4 {# e9 h9 K  ~
里面也有案例。) J/ s) K  e2 E  F; B' S
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
! F5 }; q1 y' I7 q; u& s7 c9 J2 R5 _. b0 L3 ^+ S
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
; j0 w2 I6 w% h7 ^) t  d. \4 l
" A" ^: _$ d8 ^% R那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
& ?6 Y* k0 V5 E- l) Y这是AGV_putin中arrive的method。
) j- Z- n0 t' ?+ d9 d- v8 ^: V6 I. O. `2 b& S( r" x' b) |) x6 q3 J1 z
当到达物料速度越高时,这个报警更多,

6 ?; [9 O1 @2 w5 M5 _2 f另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-10 17:43 , Processed in 0.017280 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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