设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9880|回复: 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'7 u: Q6 `) [5 P! \& ]! j
*/
3 M/ b& k1 ]* ^8 t  kis, g# e% K. t+ l/ P
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
/ h5 P8 c/ d9 w0 H, Gdo
  w0 ~: ?5 y- E$ E: i& M$ v        Lan := rootfolder.Internal.Tools.AOLlanguage;4 I" p0 `$ \' f6 K
        if current = @.Destination -- else return) o: L; `; C/ \5 ~3 \
        then$ v+ z% H) K4 G5 X" Y  N
                @.Destination := void;
" m. `: ?) U9 a+ X1 p                if @.occupied then
  s4 A5 L- k% v  n/ Q. v                        part := @.cont;
' G7 `0 a4 X, }2 j; D& h                        @.transpOrder := void;
% }# T+ f# ]* e. W9 S                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
% G3 Y. j: r- `& u' t# u' J' O                                @,root.eventcontroller.simTime);6 D; ^% L; U; m. ?9 S
                        @.HasOrder := false;! Z' s6 M. k7 H
                        @.DrivingHome := true;! p# g% \5 |. y
                        rgManager.tryToStartTransOrder;
5 t( e. o( P- l) z                        if @.Destination = void6 q( x0 F  n# p
                        then -- no transport order for vehicle @
& Z' g) \7 z8 J5 {/ X( P( Q                                @.Destination :=
  B: |8 e# s! Z/ m* w                                rgManager.nearestFreeStation(@,track.~);- E/ ~  b4 G! z$ ^. y
                                newDirection(@);   / ^  _2 `5 V$ L$ r
                                if @.Destination /= void then; }" K6 i8 a6 o
                                        @.Destination.NumReservation :=) @) Y* h$ I+ {0 k8 w' j
                                        @.Destination.NumReservation + 1;5 w) T$ a% u; x, D. ~
                                end;
# S2 R5 e2 L4 n$ ]: c                                @.CurrIcon := "drivingHome";/ r6 K7 o+ O1 k; e. E" s' d
                                @.DrivingHome := true;
: }2 I: }( s! C8 A- K$ i                        end;
0 a/ D: p# S; _  Q( L, D                else -- the vehicle @ is empty, both vehicle and part are in the same dock station, F' |9 `- b9 o7 m3 y( F- d0 w% E
                        part := @.transpOrder;  e# j" E! _, r. J0 E
                        part.move(@);-- load part
8 Q8 W+ w" a' N# t                        @.CurrIcon := "load";
% ^8 f/ B$ i2 C                        GlobalDistObj := part.globDestination;
4 I1 g5 v0 F% X( Y% ]( V                        assignLObj := rgmanager.rgAssignL;7 ?. ^% y2 a( `, u5 o
                        row := assignLObj.getRowNo(GlobalDistObj);% X1 }0 }0 Y  L5 a
                        if Row = -1 then -- since 70  b, w; {: Y3 ?7 N" `/ b+ D' v
                                if lan=1 then7 M% r1 K; o$ M+ M8 D8 u
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),  g) _: \- C0 g1 [' J
                                                to_str("in der Andockstation: \"",?.~.name,"\""));  f- G: {. ]; {0 x
                                else
! k2 m/ ^' Y4 C4 G  I6 Q                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),3 d) ?' y3 U( J) z  x( _
                                                to_str("in docking station: \"",?.~.name,"\""));                                " Q0 `9 F' a7 w  T( l' R8 \
                                end;9 H4 O+ U" `! S8 M$ a
                        else( R$ H& l$ B+ j2 p
                                @.Destination := assignLObj[1,row];' I2 [' v+ k- A' C6 S
                        end;                       
4 y# H( Z9 b4 Y' f/ l" H                        newDirection(@);
% f$ {0 R# J# A0 D8 D$ I                        @.HasOrder := true;  ]5 f% g9 R' d" O
                end;8 \& M7 [8 @2 g5 ]) _" l. g+ x' u
        end;
+ m. r. w' q# ~end;        -- of the method
$ K! z- m& r( t; @
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
/ a& P" Y% j; S5 _: ]1 v4 V$ C5 X, A6 A! V/ ^6 z' e
这是AGV_putin中arrive的method。" _" ^" T4 t" c$ c

$ o" Q8 i1 T) M当到达物料速度越高时,这个报警更多,5 b0 g+ B& e5 d- Z! l
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。: X. O9 T9 H6 H
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?3 G" k7 s: y  w/ Y
, U3 q: R" O. @* w8 T; n! W& I
另外一个小建议,就是move,所有的move都可以这样
5 u& E# d, V8 ?* l' g6 g2 Wif not move() then debug end) W' n. h8 ^& H8 H4 B
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。2 {7 u6 C% I4 C6 j" I3 z- v
plant simulation中的free libraries有AGV模板,9 z3 D3 t) [8 B3 t- g
里面也有案例。/ H9 z  y2 }: _1 A
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
' i7 F7 c; M  q# z0 [, u9 {2 R; R$ s8 W- n/ X5 v
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
2 f+ Y" D1 |: E1 e+ J" N. U" S* m& K. P( x3 }/ }
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 3 }5 p6 W1 n% W. V
这是AGV_putin中arrive的method。7 ^% K% R) I2 |" P% s( q
/ P4 ?! `  u6 c7 w
当到达物料速度越高时,这个报警更多,
) S# Q% k5 ~7 P) ^3 r4 |) e+ Y
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-31 06:38 , Processed in 2.320975 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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