设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9859|回复: 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'5 d7 e: m- t. f4 J- s5 e! J  R
*/
4 {' ^+ b4 @# \1 Ois9 y3 I  O/ @' {# K) B7 O
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;- m% b+ m. ]  F& R+ B+ W: U* e
do5 X* o- R% `: V' m9 b7 @9 s( ^
        Lan := rootfolder.Internal.Tools.AOLlanguage;
9 }" }$ \. L  Y+ N        if current = @.Destination -- else return
! ]! ]" O+ y& T. x8 g! N        then
! y- z& O" ]$ T, E. m0 X+ k9 x                @.Destination := void;" c8 p- d' ]& ]) d) e, d; U* e$ P
                if @.occupied then0 z" y4 H. J! H
                        part := @.cont;$ x; K5 O- {0 ]
                        @.transpOrder := void;
) l1 g) j5 i4 B, k. I                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,# g) _6 s4 o% V5 K' w7 @# }! y
                                @,root.eventcontroller.simTime);! H% x/ C, R2 ]% E) Z) k" L4 g* D; p
                        @.HasOrder := false;
1 M7 m. ~) K0 P4 C% u                        @.DrivingHome := true;0 U2 B3 F" w/ `1 N  k
                        rgManager.tryToStartTransOrder;
2 U/ E0 e2 B) S% _3 ~7 D                        if @.Destination = void
  R+ u/ {, ^, `0 s                        then -- no transport order for vehicle @
5 M" ]- L+ C8 ^! Q1 W( A                                @.Destination :=
! J' }- T1 m( g, o                                rgManager.nearestFreeStation(@,track.~);
% D; M* V! A; r: O                                newDirection(@);   
( g4 \7 r1 a8 ?; }                                if @.Destination /= void then
/ W' d9 d$ ]* [3 A                                        @.Destination.NumReservation :=- ^* z) C$ X3 }3 T* g
                                        @.Destination.NumReservation + 1;0 e( K6 l. R2 D) N
                                end;
# n, x) u- c) b4 p4 X) m                                @.CurrIcon := "drivingHome";+ K+ O1 e; g- s
                                @.DrivingHome := true;7 j# N0 p8 B( A/ o" S7 Y
                        end;& D! q; `2 W/ ]+ s
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
  N" Z% |6 A6 X! _5 q                        part := @.transpOrder;6 e0 g8 i  n1 t
                        part.move(@);-- load part
0 O5 d+ K( h8 |                        @.CurrIcon := "load";" k9 K1 D% H2 ~
                        GlobalDistObj := part.globDestination;6 @+ z$ i$ Q' _6 O& s" X. w
                        assignLObj := rgmanager.rgAssignL;& q; R3 p* O9 c- B& Z3 o3 f
                        row := assignLObj.getRowNo(GlobalDistObj);5 z) A# T7 A6 u" l& ?  `6 f% s* Z
                        if Row = -1 then -- since 702 Q5 e  a" U2 r
                                if lan=1 then, q. Q! p- n( R" D
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
) N& l$ ?4 ~" a$ ~                                                to_str("in der Andockstation: \"",?.~.name,"\""));/ ^3 B: t6 E$ F& V2 M
                                else& m2 p, m( q  a' L. n
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
. t: [8 N% D' e                                                to_str("in docking station: \"",?.~.name,"\""));                                # X% n& e5 c) H: C: x
                                end;
2 i% q* U* ^' E1 C5 z$ z2 J                        else
" {. X! r7 `3 U6 l                                @.Destination := assignLObj[1,row];
, _9 _* {2 A* B8 @- r                        end;                        * Q* g6 b9 t) x7 H0 w* q5 u4 c
                        newDirection(@);
: O1 R' [4 |, x5 t2 `                        @.HasOrder := true;8 L/ B9 U9 J" I& S! O6 Z
                end;0 t9 c: B  Z4 p% P, F4 W! |/ s
        end;
3 C$ z. |& s( C; M6 E# r1 ^: G  Bend;        -- of the method9 O4 H- L6 j6 v  S8 z
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 , T/ J9 I: T: B/ D3 ~+ T* M% y
- B' p" _! }2 f! l( p' M
这是AGV_putin中arrive的method。8 Q5 o. C; I. @
! k8 l4 }1 N! C5 h1 g4 y
当到达物料速度越高时,这个报警更多,# [9 D1 L, u. O7 w) k/ n) A. b
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。7 c' w! w3 G3 F. W) g
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?" \8 S* k: m3 Q3 P% ]7 ~

/ t; [. m& J; q, ~% B. l$ e另外一个小建议,就是move,所有的move都可以这样
% |3 X) o1 q6 O1 Qif not move() then debug end
; N  g( I8 q* I/ _这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。( ^/ _1 Q+ k' h" N% }. X% Q0 n
plant simulation中的free libraries有AGV模板,2 a' n1 k3 k8 v- L. D  W* w9 v/ U
里面也有案例。
- z8 ]$ |( c0 \& ?2 M我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
8 j1 m  H3 ^  y) j* [3 n- C9 _, U# b
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
& v* i, h8 E0 y, Z+ C3 b
- L- {4 R' a+ F4 v7 e那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
9 I+ E! u2 X* A! @, K9 @  y这是AGV_putin中arrive的method。' a9 L% T( G  t8 R8 g
& _/ I: U/ g5 ?% Y# [8 p# @
当到达物料速度越高时,这个报警更多,
4 ^! Q8 Y; |0 W$ D6 {" Z# D  e
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-29 21:40 , Processed in 0.020694 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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