设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7057|回复: 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': [9 A( [4 D1 E' p3 O# n
*/9 e$ t/ p- _2 j
is
7 _+ t3 W: v8 c/ |, A# i        part, GlobalDistObj, assignLObj:object;row,Lan:integer;7 e$ x6 T/ I3 Y; v
do/ H; N1 G8 ~1 b0 l: }0 H2 F3 B/ m
        Lan := rootfolder.Internal.Tools.AOLlanguage;
% |9 A/ }  V4 C4 i9 e        if current = @.Destination -- else return
" g, Z" M* T' D  x6 O/ F1 q        then
  k3 ?$ l1 \9 \: C' s: a( J$ ~; `                @.Destination := void;
6 S1 {" Q. k  L* S! c) v                if @.occupied then0 a" J6 f4 z6 G5 q/ G
                        part := @.cont;0 f$ L$ E$ b4 H4 S
                        @.transpOrder := void;
$ n0 L, m) H) Y) ~( N  J                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
& d) r# T# ]# z) g                                @,root.eventcontroller.simTime);
8 k& E+ @6 ^. L+ ^                        @.HasOrder := false;
4 P& G. i* r! H. O1 q! g                        @.DrivingHome := true;
6 _& M% c, n$ P* H                        rgManager.tryToStartTransOrder;
& j& _$ |3 @% N- F' y) d* N                        if @.Destination = void
7 U3 f5 Q* a/ q' A: s( K& l8 v0 q                        then -- no transport order for vehicle @! R, o8 J5 u( Y1 T& L% c, a0 ^6 B; b' N
                                @.Destination :=8 T) ]1 }& f% z% I1 u! `
                                rgManager.nearestFreeStation(@,track.~);
0 v! \9 V9 j6 K/ A                                newDirection(@);   
; q3 X% T! f3 _  j0 h2 ?1 \, t                                if @.Destination /= void then
% C1 l! t% L. m- a! c* m                                        @.Destination.NumReservation :=
8 ^& v0 s$ Z0 z# {6 E5 H* O                                        @.Destination.NumReservation + 1;
6 \' b% x8 p/ q, A" `& o                                end;+ Y- x) g7 p4 F; x0 P
                                @.CurrIcon := "drivingHome";
" G2 S( O$ t5 O1 X) }; g                                @.DrivingHome := true;
1 t% e+ Z( J' L& {. W: T                        end;; G- c1 g6 B8 [: w9 L$ w1 P  D' R
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station% g+ r! N" ?/ x, u( V" F+ e! g
                        part := @.transpOrder;
7 W9 b' i$ q6 i                        part.move(@);-- load part
1 d2 l+ m7 ~4 h2 l                        @.CurrIcon := "load";
5 [& J3 p( `7 v* p' p                        GlobalDistObj := part.globDestination;
6 a' _, X" ?4 R7 V6 R5 f                        assignLObj := rgmanager.rgAssignL;
& p8 N( E. a* t" [: ~. V* t& h; G                        row := assignLObj.getRowNo(GlobalDistObj);& \3 N7 w- i" i% \' O# j
                        if Row = -1 then -- since 709 e; w: p# P) |1 W+ k8 z0 ~& A
                                if lan=1 then
: g, ^* K2 Q6 K$ B) O/ V                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),, p" K9 U* n: [, f" p
                                                to_str("in der Andockstation: \"",?.~.name,"\""));" E) e3 S* N- }$ ^5 {5 `. _
                                else
7 T" D# C" g  b8 j: @( o: I# r1 o+ s  ?                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),  a. D' Q' l$ q1 i$ t3 b$ d5 }: q
                                                to_str("in docking station: \"",?.~.name,"\""));                                . B- U( a0 F; `, Y+ H0 T3 e
                                end;2 R4 U# t/ K* ~& V* G$ j8 `$ x6 c
                        else$ p  W9 `; N4 f: q& ?7 D
                                @.Destination := assignLObj[1,row];
, `- c) C- I5 e6 L1 P* d8 A                        end;                       
6 B+ w6 V& A+ W9 }                        newDirection(@);
- U: A5 g1 u! N: w                        @.HasOrder := true;/ ^* ?* u# ?$ o. l' ^1 G$ d  F" v: s' q
                end;
4 C7 v5 c  _9 C$ F+ L3 ]        end;
# i& D* R) m. I* U! Send;        -- of the method
; h( I! c" O3 K: O) ]% f
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
& \( B5 Y% g  G9 o5 ~$ k! ?, ?* [
这是AGV_putin中arrive的method。
  q! ^7 G6 C) z" S, E) V
3 P/ j5 ?# ?+ ^# H+ k: H* \当到达物料速度越高时,这个报警更多,
: A6 \0 p2 j- x9 D- s7 e可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。" A; H5 L2 ^  x
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?% x8 {6 _& M2 v5 U$ W. a
1 e' ^4 O; b' n
另外一个小建议,就是move,所有的move都可以这样6 S$ ]0 j$ C0 C, Q. C$ W8 @
if not move() then debug end3 C0 r  D2 n- u+ j5 w6 w
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。: `8 e  B1 |6 E( X) d' Y. D* d
plant simulation中的free libraries有AGV模板,! w- d# N- E3 }5 t
里面也有案例。( D3 w  l6 L. {2 T" f
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
, ?0 S5 R" _7 |( A: ^
4 Z8 |; E; z5 p. H* ^* k我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 * c' F  Q  c3 A! A# ~* I) }; M. W
1 {* t3 e  S9 q9 {( d0 Q  ^  z2 S
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
+ k" ]% r7 L5 S5 J' ^这是AGV_putin中arrive的method。
# g& i: W! e' A# S' [* ]
- l8 U/ ]& N  I6 y当到达物料速度越高时,这个报警更多,
1 X$ F6 N9 p; ^& q. C
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-14 00:57 , Processed in 0.019854 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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