设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9039|回复: 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'( M. q7 {! v- k- X  P
*/
5 K6 P4 Z, |3 J9 h: Kis! R4 l3 V2 `* Y9 w. F) p
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
# ?5 z+ H8 N+ l" t6 j2 t# B4 l1 ddo
% c5 M: S( r5 s' M0 x* |! p        Lan := rootfolder.Internal.Tools.AOLlanguage;5 m2 D6 f. W- o8 V2 [# h) t
        if current = @.Destination -- else return: N- O3 S0 J. p( I4 X
        then# J) z. X  a+ X$ |: h) F
                @.Destination := void;
3 P: z4 x" m8 p+ d+ k8 d: s6 K3 L( X                if @.occupied then
! t$ r0 B. O3 Q* o2 ~                        part := @.cont;4 t8 A8 U6 a  N" ~; s
                        @.transpOrder := void;
) \8 T( H- E4 v* ^0 z" ^( @0 I                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
! {! ?3 F5 ]  R6 b* _, x                                @,root.eventcontroller.simTime);
; J$ t2 S1 N4 w                        @.HasOrder := false;, a9 Z% b9 W: H; ~! z: i3 O3 x
                        @.DrivingHome := true;
5 p: Z$ G0 x7 q6 `7 `2 D                        rgManager.tryToStartTransOrder;! |$ v) `' N: B5 g
                        if @.Destination = void
; P% @4 N0 r3 V  b; s2 }8 x                        then -- no transport order for vehicle @
4 Y; i7 O) E/ i; J: q8 s5 e0 q                                @.Destination :=
+ ?" A- G$ h1 }( n                                rgManager.nearestFreeStation(@,track.~);
, @) ]1 y5 a  |& ]- c                                newDirection(@);   7 d7 {2 s! V, m' i
                                if @.Destination /= void then& L6 L5 v9 _8 i
                                        @.Destination.NumReservation :=" @- N3 I8 g- W+ U  k! N
                                        @.Destination.NumReservation + 1;
# H+ P" K2 B2 E% K! q                                end;
1 h' R0 [7 y9 b2 G/ [5 _, g                                @.CurrIcon := "drivingHome";1 }9 l8 m! u) F1 B6 r) ^4 p5 d
                                @.DrivingHome := true;$ m/ x8 w' x$ B& |* g
                        end;
* {- N3 W8 G( [3 s1 l+ C                else -- the vehicle @ is empty, both vehicle and part are in the same dock station8 X' e& K: ~  e1 M* f) e
                        part := @.transpOrder;! z. k1 r% H) u: s7 l
                        part.move(@);-- load part* y: D' y+ o* U! k
                        @.CurrIcon := "load";7 T+ k8 W9 Q% h  ^! ]6 `
                        GlobalDistObj := part.globDestination;0 D, W) k* O* U; ~0 d
                        assignLObj := rgmanager.rgAssignL;
! R" r% f; v, i4 ?                        row := assignLObj.getRowNo(GlobalDistObj);
; t% S) e& t! R+ Z' I9 H7 ^- U                        if Row = -1 then -- since 70$ N; s4 ]! d2 p4 C4 D3 q1 {
                                if lan=1 then8 F) Y' D- S% j! w
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
  T0 e* G$ P! ^/ |. O                                                to_str("in der Andockstation: \"",?.~.name,"\""));  B# }# D5 F) X' ]
                                else
( p  k8 K6 J7 [% F                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),4 H( n5 p, v7 o! I& D" d7 R9 y6 m
                                                to_str("in docking station: \"",?.~.name,"\""));                               
3 y7 i; _- b% N2 H: K" j6 Y4 D                                end;. B9 y8 l, A$ d! _/ G" t
                        else
5 @5 j. E9 B) x8 K8 h/ A                                @.Destination := assignLObj[1,row];
3 b4 k, i& Y# v                        end;                        8 i3 Q* x& [) X9 U# f
                        newDirection(@);
" H7 S) l0 ~0 q* Q$ h                        @.HasOrder := true;1 Y  V+ w: Y) `
                end;
% H' `- B/ }( {, G5 ^; \3 T; C6 C        end;
) h8 Z# y4 W/ q3 I% j4 eend;        -- of the method
" ?* y; e$ M3 }! `  Y/ R
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 5 `+ P: @7 [# q+ ?' @# J
- e/ H( P6 w" k! @  o4 Y
这是AGV_putin中arrive的method。
' q6 }2 J% J- F& U& d
/ a+ C0 ]- u& `: g2 ~当到达物料速度越高时,这个报警更多,* O* k' s; @, K6 D; T5 i* H
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。9 [# L  i6 o6 h
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?& M+ W4 P, l& J5 V1 Z0 l/ G
. O% z. |0 D: t8 \' X1 K
另外一个小建议,就是move,所有的move都可以这样* V; H$ V* h" _4 b: ~& v
if not move() then debug end
  V: z7 S& `) B这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。8 ~3 b! u3 r# b2 o* v' G' E
plant simulation中的free libraries有AGV模板,
# }% m) [/ ~/ g里面也有案例。+ D& n: o( i) g! Q  L1 x9 Q
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。5 ?6 |" C, K! s$ }- n5 s2 r

/ R0 [" X8 m2 e我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
: Q, Z9 q& q, T9 N
  k: I" A4 l, X( G) w6 y, i# L那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 ! z8 c: {: }% }
这是AGV_putin中arrive的method。
4 j! J* l: k( A5 B' T* ]0 V7 u! k2 @
当到达物料速度越高时,这个报警更多,
9 F! t+ T) `8 e& m+ s! Y
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-10 02:53 , Processed in 0.016480 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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