设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8355|回复: 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'
) |2 `7 a1 Q9 x( M& w8 ?2 g*/7 m4 L1 X* \! w
is
! C" G  R- O0 c6 u6 o        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
) n9 n! Q3 o$ M* l8 G1 |3 g% b% S+ Sdo
2 Z- K6 p7 H! L9 X" w$ e        Lan := rootfolder.Internal.Tools.AOLlanguage;1 L8 L* K% }- L
        if current = @.Destination -- else return
/ s# Z3 M% _$ F  a        then
; d. O% g5 D4 S. q                @.Destination := void;% u6 F+ y0 m# `$ R$ @& d$ w
                if @.occupied then% X8 k. e* a! ^4 \
                        part := @.cont;1 q, K/ [! v; [# y* X9 ]7 i
                        @.transpOrder := void;2 ?" b5 q4 a! M; W! W- U
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,1 H  ^1 v$ V% j% D
                                @,root.eventcontroller.simTime);6 o( ?2 n( k; ~7 H- v
                        @.HasOrder := false;
- W: t$ D$ D# `0 J! W9 n! q                        @.DrivingHome := true;! x- w- k6 y$ Y2 G' ?& ~9 W, J/ S# U8 z4 I
                        rgManager.tryToStartTransOrder;0 b; o9 T+ Q- K3 {# @
                        if @.Destination = void
- U( W, |+ O7 i5 y! \& R7 ^                        then -- no transport order for vehicle @
* u. s& O6 V6 b  a/ v5 K  `                                @.Destination :=
) }, {$ o" J( e& J                                rgManager.nearestFreeStation(@,track.~);
2 W& B" r0 `! n6 S$ ~  L                                newDirection(@);   
3 V0 I7 w) e# K                                if @.Destination /= void then6 }! G/ J8 u0 K0 X+ G
                                        @.Destination.NumReservation :=8 l4 l8 @! v- r. \8 a* N' y: t
                                        @.Destination.NumReservation + 1;/ j; Y, X! r6 y% S: p
                                end;; a3 T0 Y7 t0 w& \: e/ p
                                @.CurrIcon := "drivingHome";0 G9 c7 t; _/ e+ R: S3 S
                                @.DrivingHome := true;
5 J9 D5 b% P  ?. Z( M( o4 f                        end;5 R! H9 M- j. x( L3 I* P: f
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station2 a6 N! Z1 k6 s8 H3 K- L; I
                        part := @.transpOrder;
% [. K, C! k: Y1 t/ P' O                        part.move(@);-- load part
4 M5 d3 q$ G' h9 R9 n* U                        @.CurrIcon := "load";5 R* r6 E4 A( q3 L7 g
                        GlobalDistObj := part.globDestination;9 B& j4 |7 ?7 q
                        assignLObj := rgmanager.rgAssignL;( q) x# C% A; \
                        row := assignLObj.getRowNo(GlobalDistObj);# p' y' ^1 z3 E  I
                        if Row = -1 then -- since 70
0 c  r% X8 D: u. b0 P' V7 c                                if lan=1 then" p, u- K$ q2 `/ X
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),/ w$ C% T/ H! Z/ X/ B: U3 z( m
                                                to_str("in der Andockstation: \"",?.~.name,"\""));# |/ @; V2 l9 p; V- ^$ x  N3 U1 E$ i
                                else
) h0 R: |: T: v                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),& R% Q5 M) D4 b3 D5 H
                                                to_str("in docking station: \"",?.~.name,"\""));                                . s" z5 D. d+ [* j6 ^3 q8 d0 d
                                end;8 X) c" l; a+ d( l
                        else
. }4 ^5 U. S0 G/ v2 F                                @.Destination := assignLObj[1,row];! M, q8 s1 h( u+ E
                        end;                        % h$ Y& c$ S$ g/ h; l$ t' o2 \
                        newDirection(@);
% H4 ]7 D( E, D  G, J3 f                        @.HasOrder := true;# G- ]* n# v5 u7 [5 Q
                end;
- `9 j' }% r6 e" j. k0 b1 [        end;
* H  U. Z/ {: P, bend;        -- of the method) {, V' C) ~% j( u
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
4 K, d  M. b. [' i0 s
2 I& z# i( u. |' Y5 [9 Z* k4 m. C8 |这是AGV_putin中arrive的method。3 I5 k1 N9 T. j, J4 g; V
/ p% \' t6 N9 W/ R( }5 T' N5 {
当到达物料速度越高时,这个报警更多,
: Z9 e  y& T5 U8 W, u可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。1 E3 K; ^7 `1 t  T5 j
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?8 q8 M/ q. L, Y4 X

3 A4 F: t) a5 K) I$ v另外一个小建议,就是move,所有的move都可以这样
( P. J; i3 B$ O. ^& r8 @. Cif not move() then debug end  Z: g: V' n0 l# Z
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
. `% p$ P, ]6 w- ?% M- qplant simulation中的free libraries有AGV模板,
: E; a6 g/ I1 B; {: [9 d里面也有案例。; A4 e; J: X$ ?, @  ?3 n1 V
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
2 |' |* c" K9 E  r' F1 e% j' G, n5 v+ l) Z; _
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
  b/ D' S9 F' V- C! j& M* V, g/ Q0 y7 R  x
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
* |4 O& Q# H/ p# f" [, F这是AGV_putin中arrive的method。$ Q7 O, y% e% f  z1 C8 N& D6 S
/ ~) k1 U' T' u/ ^2 P
当到达物料速度越高时,这个报警更多,
5 D  L; P- G, a
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-30 01:30 , Processed in 0.019129 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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