设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9831|回复: 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'# n) E  m" i. F/ O
*/9 C6 z! m/ ?! Z, r
is
' ?. ], m" s/ y+ |1 @2 Z/ i        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
, j+ j, }' m  y% g/ Ldo
  h  ]( l: ?( b; A+ `        Lan := rootfolder.Internal.Tools.AOLlanguage;
8 V5 G5 v% s8 L2 {) D3 r' X        if current = @.Destination -- else return
  O8 S! [2 e% y! V! Y        then
1 Z4 g+ i. Y3 _" B                @.Destination := void;
* A( P& q/ D3 q  {                if @.occupied then
: q" X% l; L6 E; e, j                        part := @.cont;' l. Y: \- h' K$ C, G. R7 \4 Z
                        @.transpOrder := void;
  v- R7 d) ~7 i9 I9 d6 n                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
* L: m0 U0 t  f6 q6 ^3 `" [* R$ x; J                                @,root.eventcontroller.simTime);
4 g# D9 E5 G8 T- S                        @.HasOrder := false;
/ J7 W, A" c1 Q5 ]( h" }2 ?" }                        @.DrivingHome := true;5 q" u9 b* t8 `- g2 k& I& n" V  S
                        rgManager.tryToStartTransOrder;9 u5 f- s# t8 _3 O
                        if @.Destination = void
) `& D# k2 R% j. z6 i  u, |7 b                        then -- no transport order for vehicle @
: z8 v' b" i# S                                @.Destination :=" J. ^" |4 `9 X7 u3 ^1 ]: E" D
                                rgManager.nearestFreeStation(@,track.~);; r# t4 a2 a3 d
                                newDirection(@);   
1 b7 z/ G9 b7 c6 g8 I# R; ]                                if @.Destination /= void then: W$ @: u+ s2 M( [2 ~2 U; u. [! X
                                        @.Destination.NumReservation :=2 _  D2 X. Q) I; T9 U
                                        @.Destination.NumReservation + 1;
' x8 k/ U, R' Y                                end;5 C% r  l1 x8 B6 d/ l# f
                                @.CurrIcon := "drivingHome";3 c0 v0 d4 Z4 G8 w
                                @.DrivingHome := true;
0 |7 V6 |. }0 _3 R- _                        end;
$ J" b0 ?2 R& m                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
8 z$ X& I6 `4 u6 ]" s                        part := @.transpOrder;
& A! T2 {4 G7 a  u5 F7 a! y                        part.move(@);-- load part* R) o8 K1 ^* Y( y9 W8 ?
                        @.CurrIcon := "load";6 y7 e. H0 N% E* U
                        GlobalDistObj := part.globDestination;  v7 |+ x5 X8 r7 R3 p
                        assignLObj := rgmanager.rgAssignL;
9 B5 p( ?$ S/ d0 D5 v" [( x7 `                        row := assignLObj.getRowNo(GlobalDistObj);+ D& ^  `5 g2 Y6 ?2 A& t8 z0 @
                        if Row = -1 then -- since 70
$ F( L0 Z, T& d7 n5 A8 ]. C" w                                if lan=1 then7 {5 j6 C( O3 @6 U* e! K3 S1 M- v
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),' {; R5 }; [8 _6 R6 K- M
                                                to_str("in der Andockstation: \"",?.~.name,"\""));/ t  J4 A- b  ]$ i
                                else
/ _' }+ s( U+ a" R                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
0 U- S7 \1 G. W- w% u                                                to_str("in docking station: \"",?.~.name,"\""));                                1 v3 f# ]) I6 {
                                end;0 A. U, F. ?3 i3 C- t
                        else
8 ?+ [. ^8 [3 Z+ B' [                                @.Destination := assignLObj[1,row];
0 P7 w$ |- ]; f0 d                        end;                       
# J" M6 m3 h3 g2 `0 ?                        newDirection(@);8 }" B% w9 I3 |7 X. g6 }& F" N4 P
                        @.HasOrder := true;' j) M2 z2 Q8 a$ d. h! N
                end;4 e* C& |; [6 U
        end;  _! C' ~& i( t  O
end;        -- of the method
5 A( a' ?% Y8 H4 m3 i
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
$ }% n+ M4 Q+ ^6 w7 E# i8 k/ ^8 e+ I, |& Q5 [5 `! p
这是AGV_putin中arrive的method。+ \# E% T2 U2 h, Z! z/ \( P

  ]( t/ k3 \* ]* C当到达物料速度越高时,这个报警更多,
# D/ o9 R5 H) H7 s* U1 z6 d& R可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
8 _8 N4 S5 m; p4 t4 F5 k程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?$ B) d- K1 H) y% w6 Q- R

+ n2 O2 N% k; D+ E4 C+ o; ]6 W另外一个小建议,就是move,所有的move都可以这样3 I. X( v! e6 I$ R: j  L4 }7 ^5 l
if not move() then debug end4 t) \7 m" D5 X: q
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。: [) l) d; t4 t+ q2 q/ A
plant simulation中的free libraries有AGV模板,7 O# s9 T# T' e4 _
里面也有案例。3 Q) ]% g8 Y. w9 ?; f/ o
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
! S# y% w5 @, \# i5 O
' ?' y; n# Z0 K& N6 y我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 8 K; S4 a2 K: b

' @( [' W  D, S2 S, U那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
) y# ^5 ?" a% I& ]9 W6 ]) A! S" I这是AGV_putin中arrive的method。
0 W5 D. A- \! D& l3 k% T6 E$ O$ V* J
当到达物料速度越高时,这个报警更多,
6 S' B) p9 Y  |7 f8 I- ]
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-27 23:32 , Processed in 0.016876 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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