设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10138|回复: 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'. S! K7 t0 Z' c: D! F3 S. U$ [
*/, @0 U9 i4 V# P5 C8 X8 |1 g
is
4 W, w: N$ Q' n( O# \! ^) }        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
( e2 S1 ]+ G, C* `2 A% B9 ?do3 m# ]% u1 `0 f9 F% i
        Lan := rootfolder.Internal.Tools.AOLlanguage;: |* w) f- l! `# R9 e
        if current = @.Destination -- else return- u% \2 z+ Y: C3 y* g. M/ s& }8 K
        then
3 y6 r. Z( j& M8 C4 R) c' H                @.Destination := void;
5 r* O3 X) c* R" O, j% [0 i                if @.occupied then
% }4 ~2 L: f$ d) Z2 P, ?0 h4 E  f                        part := @.cont;# a3 |7 n$ D$ E& [: u
                        @.transpOrder := void;
5 x+ ]2 D6 w' }# g0 M) t* _                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
6 T  S; C& Q! e                                @,root.eventcontroller.simTime);  ~9 q: U/ X# K+ m" p
                        @.HasOrder := false;
: m" R: I! _& i* {; ~                        @.DrivingHome := true;
: F2 k( B1 ^3 k8 t1 Z                        rgManager.tryToStartTransOrder;$ G5 L* ^! [; v% [# S
                        if @.Destination = void4 ^+ Z% f8 P$ e( |: H2 B
                        then -- no transport order for vehicle @
, |% y# n) M& C. @  J                                @.Destination :=$ e" g+ m: v& v0 |8 m
                                rgManager.nearestFreeStation(@,track.~);8 m7 u$ e& w# A
                                newDirection(@);   
) _( n8 z% f$ T4 l) P# J: J. ]. N  {                                if @.Destination /= void then1 O$ u! c9 b$ f+ _' k) X2 s# j
                                        @.Destination.NumReservation :=% W1 g) B3 d8 x' V: Y3 p' X
                                        @.Destination.NumReservation + 1;$ {1 K/ J( {8 ~6 F# H3 w  W: W5 O
                                end;7 f6 U, W1 k# F4 Q1 X5 W
                                @.CurrIcon := "drivingHome";0 q& t4 P: k( w
                                @.DrivingHome := true;% J- Q+ c* ]$ ]8 T
                        end;( ]7 V; F: N- |) r3 \
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station  ]2 l- m5 L2 y; {
                        part := @.transpOrder;
5 \% C! M  l  \( o                        part.move(@);-- load part
! q3 ?; u: l- a' |1 {3 H                        @.CurrIcon := "load";. m8 M2 D1 F$ Q; U3 L! K4 v# ]  q
                        GlobalDistObj := part.globDestination;
: G- g# F8 Q0 c) Y  f( F' l4 s                        assignLObj := rgmanager.rgAssignL;7 u; A9 n$ ^0 _3 G7 W  x$ T
                        row := assignLObj.getRowNo(GlobalDistObj);* R& J' _9 R- u5 b, F
                        if Row = -1 then -- since 70
+ Z$ k5 P& w' H6 p: Y                                if lan=1 then
( ~) |! v1 T# h                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),- E. U8 y, k, `6 _
                                                to_str("in der Andockstation: \"",?.~.name,"\""));$ @7 E7 i0 ^, y5 D$ b! \6 }
                                else
# F- T3 O. v/ S                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),  [6 @# I* N  f8 M% D$ s
                                                to_str("in docking station: \"",?.~.name,"\""));                                ) I6 [- R& n, [2 S  D
                                end;# Y) N4 j$ `0 N( X! {; z
                        else
8 ?, D+ H3 x, z                                @.Destination := assignLObj[1,row];- x! D# d/ q8 X" g6 Z  j3 i
                        end;                       
, M+ k1 F" Z0 G! N! h. y                        newDirection(@);( v6 ~) D! n" e1 b
                        @.HasOrder := true;, l3 s5 V' g- Q3 i5 f9 r4 L1 a& O. j
                end;/ X4 H0 r: @5 y
        end;
3 x' P1 D/ `* r2 l5 |5 U$ pend;        -- of the method
8 c6 m% I2 s! m0 v
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 , y2 g  t! n: s8 s3 T" \
4 D3 ]! `+ M7 N- b' h
这是AGV_putin中arrive的method。
! b9 u- Y6 d3 g% J  ]' C' f5 k0 k
, w2 m3 ~# x5 g+ a$ o当到达物料速度越高时,这个报警更多,7 ?+ C& j% P/ e2 M' v
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。$ W2 x( |# r9 q7 o, ?% f% P  K/ [3 _8 m% p
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?$ j$ V/ }" ]% Z$ R5 [
# x1 w) t# l. P, L' P* K& Q0 ?  B
另外一个小建议,就是move,所有的move都可以这样# _4 A1 |0 P, r: {3 S
if not move() then debug end, C; C( Z8 c: k& }
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
& o$ V. l( N+ m! c, A0 }+ a1 gplant simulation中的free libraries有AGV模板,. O: F9 M8 _; q7 C
里面也有案例。
0 |& U- b) N. l9 u' j我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。' e6 R0 o) M) x- l* m% w
& ^. e+ C' \4 c% \
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
+ t/ X5 W! `( D) J# `3 I2 m# M# c1 |4 y. d/ ^
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
7 J! s% c# p( g) N这是AGV_putin中arrive的method。
, M% U1 C6 m* w' d! w3 o3 z7 t5 o+ p$ T9 v, S
当到达物料速度越高时,这个报警更多,

# P- p# u7 Q7 b0 l! q6 `另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-15 14:57 , Processed in 0.019809 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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