设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6174|回复: 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'9 S$ x' s( o' n: r! u* d
*/, ^& a: {, Q8 b' a
is* r9 w3 `) z" B/ e
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;9 y1 Y. |" D3 {4 s+ L
do
. {) I2 l* h' i! D: q  Y  |9 A3 R        Lan := rootfolder.Internal.Tools.AOLlanguage;" R; f& k& A7 h( @4 M
        if current = @.Destination -- else return
0 j, q/ p* i/ F& z        then
, X) N) a: q* k2 u                @.Destination := void;
9 y8 {) [% k, `1 N( J' e: |                if @.occupied then) p5 M4 O8 [3 U9 r0 U
                        part := @.cont;
: ~# o# N4 K: |- I' q7 ]                        @.transpOrder := void;
7 f; [- D& ]& G1 L9 k' F                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
! K5 ?" }3 t5 K7 d" r6 E. r  T6 J2 d                                @,root.eventcontroller.simTime);3 K8 b3 |: `- f3 V0 p2 S9 G: a( v
                        @.HasOrder := false;: ~: R+ B9 [2 s  a* |
                        @.DrivingHome := true;
4 M" h0 \8 \4 [                        rgManager.tryToStartTransOrder;
$ f' M# j7 a0 P. |, p+ f1 l. m( p4 X                        if @.Destination = void* o4 Q8 }4 W! C& b2 D* w2 K0 N
                        then -- no transport order for vehicle @
& s6 B1 E% j9 c) R                                @.Destination :=1 p1 V1 E' C% b; a
                                rgManager.nearestFreeStation(@,track.~);8 q/ E, [$ }, d( G! D
                                newDirection(@);   
- c8 B& ]6 j% T* C3 c# y3 s3 P                                if @.Destination /= void then- B$ |% Y) O, h
                                        @.Destination.NumReservation :=
. Y& O3 X1 _( m+ Q: e                                        @.Destination.NumReservation + 1;: f- K0 ^' \" `3 U
                                end;+ u6 I, `3 q- I; @6 x
                                @.CurrIcon := "drivingHome";' W4 G+ n5 \& b
                                @.DrivingHome := true;
6 n; E; p, Y" A( j1 s) y% ?                        end;( p; X/ O6 D% H, r
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
' B" f% [/ R9 a; n; B                        part := @.transpOrder;+ U$ J1 Z" b) V% l% D: s
                        part.move(@);-- load part/ }' {: C9 ]& E3 z/ ^+ F; Y9 z
                        @.CurrIcon := "load";. G* B9 V( A7 f: _+ d
                        GlobalDistObj := part.globDestination;7 W# H3 E" h8 M7 E0 h  z
                        assignLObj := rgmanager.rgAssignL;
  Q& l. h, Z4 @: O0 `6 T                        row := assignLObj.getRowNo(GlobalDistObj);  i* M. w+ |, h) C: _: ?5 G$ v
                        if Row = -1 then -- since 70& x( A6 V& R5 ~4 F; f
                                if lan=1 then" F" G! T+ S7 \' ?( b1 z- _4 z
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
* ^8 [& B6 L2 D" @. B8 @0 _                                                to_str("in der Andockstation: \"",?.~.name,"\""));
3 t4 v6 ]3 }+ s% T$ k8 h- G! d                                else
, L* W' `& E% X. Z8 h. m                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
6 z5 b5 M% S/ i' @0 Z. D                                                to_str("in docking station: \"",?.~.name,"\""));                                ( Q( Z2 A: g9 R( W* n1 h: [
                                end;) z# ~/ Z9 Z9 ~4 i; Z  u
                        else
4 `% A; `4 Y. c2 B/ F                                @.Destination := assignLObj[1,row];) Z5 ~/ Z5 Z2 p7 ^: Y
                        end;                       
7 k& \' c* L/ I2 |# U' I+ h                        newDirection(@);
( Y6 S0 B1 K4 W$ B! J% A+ l                        @.HasOrder := true;4 m+ C6 f  t9 q& Y" j* |( q
                end;5 }' A; `" ]- T: H
        end;
  K: A$ v* [/ O2 }3 `- Y& Zend;        -- of the method
6 {* E8 h2 n' y: C% b0 ~
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
4 k; I- M" x. v7 f' S
; C2 Z+ S2 E1 T* |0 A/ k8 [这是AGV_putin中arrive的method。
1 Y0 h' s* x5 a* A9 j: y, B( ^" t- A* F
当到达物料速度越高时,这个报警更多,
+ j* e. I3 T- z可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。; y' r* d/ b9 o5 _3 u4 L
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
  R. k/ X( Z# g' n: `. P8 a' m! a' ^5 ]- ~1 k
另外一个小建议,就是move,所有的move都可以这样
  c  A) m  w6 E# G5 |if not move() then debug end% }# q) P! l% j/ Z4 x
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。& F0 ?0 s+ K! }9 ~' N6 N4 m4 }2 q2 l
plant simulation中的free libraries有AGV模板,
) O) ]: A5 p! m里面也有案例。
: B/ Y) _+ l& {5 g7 K, H7 O我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。) h& g( l7 i+ M! b5 v3 O. R

- ?3 z$ d% q& }! T我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
7 e* L, y0 R6 r/ e/ ?2 e4 \0 t/ N  E- m4 q9 y. [6 z
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 2 W! x3 W/ K7 A* ^2 n$ k
这是AGV_putin中arrive的method。
2 v8 `; e! t, b$ _  c: @. u% }2 S! u0 U) a, O
当到达物料速度越高时,这个报警更多,

; s' l! l6 a+ P另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-22 22:25 , Processed in 0.019184 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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