设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6356|回复: 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& y9 s; I* N) s9 ~% t4 C9 V  Z
*/8 k/ v9 U3 e! ]! Q$ J3 Y3 \
is4 G0 _& [  N2 B" F; ?3 ~; z
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
+ S% |. m. e& \; m# \6 bdo4 Y$ W- V, {$ U: w
        Lan := rootfolder.Internal.Tools.AOLlanguage;  ~, N, j6 y% L& O1 R
        if current = @.Destination -- else return; p4 ^2 t5 d0 k, k
        then
, e: z5 H9 |! c& |5 o                @.Destination := void;, Q- V( U1 `& q, M6 R
                if @.occupied then3 l; R# T) u) }# u
                        part := @.cont;
1 U: ^$ k" S  P. |                        @.transpOrder := void;0 c1 _  n& F. R3 H
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
; c4 H  ]. w% G                                @,root.eventcontroller.simTime);
" J# O; R& M; x                        @.HasOrder := false;
" f  p& X& S% L' x1 H; N                        @.DrivingHome := true;
1 F8 O. b1 a/ W! X2 |                        rgManager.tryToStartTransOrder;
1 E' v5 s/ P- o; o2 S7 i- ?                        if @.Destination = void
4 b& Y  E1 d6 k- ^% q                        then -- no transport order for vehicle @
* D8 p  O* K8 e' F2 y- z  d1 g                                @.Destination :=1 {) Z' G' `# ~% P$ Y6 G2 e
                                rgManager.nearestFreeStation(@,track.~);! z9 D7 A) g* D7 Z( ]
                                newDirection(@);   , @/ Y# U0 l' Q# ?" e
                                if @.Destination /= void then$ y! N, x4 x4 A/ S
                                        @.Destination.NumReservation :=. \, U& Q5 c; }
                                        @.Destination.NumReservation + 1;+ T# t- F) `9 v
                                end;
/ J* k) t3 n4 s                                @.CurrIcon := "drivingHome";
  }) o0 ?) `. F                                @.DrivingHome := true;
& R. V" @( g1 U. `$ ~' e                        end;
. ~: m; H1 b% E/ o6 b% ]9 l; B                else -- the vehicle @ is empty, both vehicle and part are in the same dock station6 V5 y" I6 H( e2 A# K
                        part := @.transpOrder;; o  W; \! W2 W7 q* g
                        part.move(@);-- load part% g$ b) J5 ~, V* {
                        @.CurrIcon := "load";6 I9 R: S* Q4 w" _. r- d; O, p" h
                        GlobalDistObj := part.globDestination;
1 W* ~7 X' Q! k( J4 p                        assignLObj := rgmanager.rgAssignL;9 `; x' S3 E6 Y) {, S9 @$ V. j
                        row := assignLObj.getRowNo(GlobalDistObj);
4 ~' Q. E& K% x/ F( c2 u                        if Row = -1 then -- since 70
, u& |, J7 i0 Q                                if lan=1 then/ }( W4 q, ?# Q$ ]5 q" S
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),% I8 ]2 o$ C0 P4 h, }! Y) }
                                                to_str("in der Andockstation: \"",?.~.name,"\""));& K* E. Y7 s8 B, d: t
                                else
3 A8 s6 O% S7 Y8 r$ h. y3 Z# ]$ S                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),# Z* Z# H/ P+ r1 F
                                                to_str("in docking station: \"",?.~.name,"\""));                               
' E( _* @8 ?( V: L                                end;
7 d0 T/ N! b' g3 p! ~( I+ S) }                        else
% A  |, W# x* L. d5 Z                                @.Destination := assignLObj[1,row];* s7 K, L3 H& D1 A, w
                        end;                       
) g. d- _  {& @% K5 H, j                        newDirection(@);5 Y  b# G# w4 F. [6 S- j8 l( s% q
                        @.HasOrder := true;
& V2 H$ S. U, U% K                end;( x4 M9 A: X; X) ^
        end;1 `0 s0 ?" A% V0 Q
end;        -- of the method; D" y1 V6 {6 |, F% ^( L! z9 ~
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 6 u; J  e3 e3 l6 t0 i! r1 \
, V9 c) T" F- w7 e
这是AGV_putin中arrive的method。
1 z8 R( o- @" h" o0 I' \( @8 I4 ?6 x
当到达物料速度越高时,这个报警更多,, b# y' y+ h. A
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
9 R3 R" A) c" B/ @2 L1 Y; ], p程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
* D. Y" E2 {$ X/ S
' \; Y  z7 o9 H6 t' [* l# i另外一个小建议,就是move,所有的move都可以这样/ z3 p$ K3 w' y) H: I! T
if not move() then debug end
- o3 A+ C' y! D这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。( E  d4 s) g2 V& ?
plant simulation中的free libraries有AGV模板,
. U8 Y7 V; ~& [% V8 f( W1 [里面也有案例。! W# e3 L4 {( Q0 J+ _- V
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
+ d! m* @' w1 [, F2 p! ]8 Z, N9 I6 v6 j) B: D  }
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ' g9 f+ B9 R; G7 I
# b" [3 N7 ^/ w! g' v
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 1 l9 P, A4 k* ]
这是AGV_putin中arrive的method。
" }9 w/ I1 K/ }9 y, g5 Z( }) I' |: l  |7 r. p& z0 V' _3 C$ g; V
当到达物料速度越高时,这个报警更多,
4 V7 e0 D* j! P' n6 \, t
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-1 12:53 , Processed in 0.028504 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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