设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8200|回复: 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'
: p. T7 B0 A8 m: x$ V2 @" s*/
7 U, O% a5 p3 `is
% R0 c+ ^) r8 |3 |, U) @        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
7 [) U  t4 Z* C3 Bdo5 I. m  @2 y1 u6 ~* d
        Lan := rootfolder.Internal.Tools.AOLlanguage;7 R( v3 r- a- Q. ?
        if current = @.Destination -- else return: \8 P. M! U$ \& b5 E2 _
        then
% P$ U  H0 n5 ~1 h0 U                @.Destination := void;5 ]% h0 R+ H% I  \- g
                if @.occupied then
# b  T* u( V0 W" t. o- _: U0 C                        part := @.cont;8 X- g  @. X9 H5 j! [7 F5 b
                        @.transpOrder := void;
- b+ E. e& f3 C, i2 @                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,/ ^) l9 F& K8 {* S6 V4 t& f
                                @,root.eventcontroller.simTime);- r& J, R! L* J" i1 i2 |
                        @.HasOrder := false;
  h4 _$ J* \/ T' X! H                        @.DrivingHome := true;. s& ^& @& r/ y- @# Y
                        rgManager.tryToStartTransOrder;' z- f$ ^, h- j
                        if @.Destination = void( @: K% E2 c3 K. K* m  V" x  b2 F5 ?
                        then -- no transport order for vehicle @3 `2 o- X* Z& f& k! f2 t5 E8 {+ Y
                                @.Destination :=
, W, a# k/ `4 m( t                                rgManager.nearestFreeStation(@,track.~);
7 J2 q4 p$ v* F: M  n9 S                                newDirection(@);   
/ H3 u/ @6 H) p! A" ~8 F5 J: I                                if @.Destination /= void then
- s0 T2 L  l4 b- u' g                                        @.Destination.NumReservation :=
$ r% b, m2 p) z                                        @.Destination.NumReservation + 1;
' c# }& Z+ L' ?" y4 |                                end;
2 L8 e; R9 O1 g+ z1 q) c# q                                @.CurrIcon := "drivingHome";  o3 @& i, H  [1 d: z
                                @.DrivingHome := true;8 U; @" Y6 B6 F! t& ]: ?+ R
                        end;
5 b) t. L; c/ o- F8 o% [                else -- the vehicle @ is empty, both vehicle and part are in the same dock station5 b) Q6 M8 I5 A. ?5 b
                        part := @.transpOrder;
3 b: ?% X0 a' E                        part.move(@);-- load part# ]1 ?! v& N. C
                        @.CurrIcon := "load";5 I9 P% F: _! L
                        GlobalDistObj := part.globDestination;6 V  X' e( ~& O7 T2 V/ r! b
                        assignLObj := rgmanager.rgAssignL;% R- f5 x3 g/ `
                        row := assignLObj.getRowNo(GlobalDistObj);* C- w( {* W/ e+ ~
                        if Row = -1 then -- since 70
5 ]0 a" B" [5 r                                if lan=1 then
( |+ m/ W- F5 d- M                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
- _* _9 q& c; ?3 _5 }                                                to_str("in der Andockstation: \"",?.~.name,"\""));" H, C2 j' I; E! b# F' m2 q
                                else9 [$ A9 ?7 {8 N
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),0 _8 \) `" f% ^( a. m( y0 q- I
                                                to_str("in docking station: \"",?.~.name,"\""));                                + X: Z# D7 V2 s; m. E) z; [
                                end;
& U. |5 n9 N1 {6 z0 z                        else
. D9 |0 z: Q' R4 d/ N                                @.Destination := assignLObj[1,row];
, W8 m. m/ q6 J8 H                        end;                        * d5 q5 n, P7 O: Q8 n
                        newDirection(@);, E9 H& k) ?+ d# ^2 G8 Q2 S  D5 {
                        @.HasOrder := true;
. i- ?% q" b. ^                end;  k# Y( M- Q8 y  e% w0 {
        end;
6 W& I4 p+ P& ~; Fend;        -- of the method/ _! D4 _8 Y9 a( Z3 P2 O* z9 T/ F
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 * `3 U' y7 @$ n! j3 Q! l

/ J! h0 p2 [* i, j2 ?这是AGV_putin中arrive的method。
* O# _" [* q; j) O1 |5 v9 l3 H1 H1 h
当到达物料速度越高时,这个报警更多,
9 N2 j; D& E8 ]6 }$ Q% z3 k8 G可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
( A) z0 r% Z% s2 r6 S程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?$ u: S8 ?7 `! o+ R7 z
( A* f  D2 ~  P8 s' C4 J: N( j
另外一个小建议,就是move,所有的move都可以这样
8 u' l6 B* B& ^; X% jif not move() then debug end) h4 z6 {( G9 p( ]3 G6 o0 A) A
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。. `9 \: e, v3 ^0 g3 Z4 i3 B/ y9 n
plant simulation中的free libraries有AGV模板,5 k+ a: ]  b! M9 @" n  Y
里面也有案例。* d0 F7 N* ~4 n4 L" F: J  R
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
6 y- j3 ^) O  `/ Z
, X8 t+ |9 ]! ]3 X# p/ M+ ^  C; o我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ! }; D4 G, }1 G! r* `9 a9 P5 d5 ]$ R
- q* y7 d) U- L6 A& ~! M
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
' T! g3 S4 [/ d9 D0 S+ D* u这是AGV_putin中arrive的method。; _; z  ]- q8 d
; d7 R# r' r9 d) M
当到达物料速度越高时,这个报警更多,
, H# t, \, A5 u. b
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-20 11:16 , Processed in 0.020650 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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