设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9879|回复: 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'
+ w9 z& u& }( k: U# ?( I$ }*/- [9 x: C% i; k9 R0 r5 l0 z
is' K, |+ z8 A( l" H% c
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;1 t# p9 P' e8 Y; H2 l8 {6 q+ ^
do; W( h3 Z- S8 o4 u- z& y
        Lan := rootfolder.Internal.Tools.AOLlanguage;
& W/ n# h  Z5 K( \9 X        if current = @.Destination -- else return  Q0 ]1 p9 W1 E+ H
        then. x- r/ s7 M" m/ e8 I
                @.Destination := void;5 i* X4 U# }1 Z9 E9 ^
                if @.occupied then
& }+ s$ B+ A8 w0 U  \8 |                        part := @.cont;
2 n7 H7 c% q0 z3 d4 O                        @.transpOrder := void;
& b4 C  m. I3 v! Q                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,, A" a# p4 p# C, x- }
                                @,root.eventcontroller.simTime);
' w2 q3 L# N& J# p$ E                        @.HasOrder := false;
, s, Q" l8 d; F* B/ v                        @.DrivingHome := true;
2 v1 p! `: F! h3 j  O3 b                        rgManager.tryToStartTransOrder;: A  c8 _" A/ P, N8 c
                        if @.Destination = void' c4 Q' Z2 W$ S" ]9 O5 F$ V* r' c& ?" j
                        then -- no transport order for vehicle @, Y" {2 K8 Y6 g' V7 M
                                @.Destination :=
0 X3 P3 x% q" q                                rgManager.nearestFreeStation(@,track.~);3 p0 }7 P5 T$ n+ y! j; s# U
                                newDirection(@);   # B1 m2 }; ^! y: s" x' T
                                if @.Destination /= void then
/ q% \3 X& B& u' N                                        @.Destination.NumReservation :=
/ v; l0 c6 }. j, }* [/ O                                        @.Destination.NumReservation + 1;3 Y' q4 y8 l, M; \3 K, Z; {# g
                                end;5 k8 b. X3 ^8 R9 g
                                @.CurrIcon := "drivingHome";
$ T9 d6 j. Y5 P                                @.DrivingHome := true;7 W$ O/ i9 M% n. ]* M
                        end;, _7 j$ s( a+ W3 M
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
; Q% L2 w7 \: Q2 o                        part := @.transpOrder;' \8 z/ a0 p4 [" u+ l# L" |" [
                        part.move(@);-- load part
; [* O2 F$ C1 n5 Q) e, G7 v0 n                        @.CurrIcon := "load";
- S3 J/ Z1 A/ ?, j; l( ^- s                        GlobalDistObj := part.globDestination;
0 r" P5 k" B9 w+ T8 U* V                        assignLObj := rgmanager.rgAssignL;8 a' i5 d& x0 S2 \7 {
                        row := assignLObj.getRowNo(GlobalDistObj);
6 X" M" N, ?0 B; O8 l* |                        if Row = -1 then -- since 70& u& `+ g' i, Q, D& ?
                                if lan=1 then8 J$ B# {( J$ g) H
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
, G$ o; ?9 l7 t' j  N                                                to_str("in der Andockstation: \"",?.~.name,"\""));
" w2 o/ l' g" P4 r0 ?                                else0 V; J7 ]- K! o- J/ L0 w0 Q
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
/ G. O8 V0 n  c& T( j                                                to_str("in docking station: \"",?.~.name,"\""));                               
0 V8 ?8 J; _5 l) z* {; M                                end;
: q" L& P7 `& L                        else" x6 q9 V4 b* P0 ~4 R' i8 g! I
                                @.Destination := assignLObj[1,row];' Z9 M. T; i8 [& u9 b* A8 F  w8 W
                        end;                       
" y( O! I$ {4 e+ `5 |1 O                        newDirection(@);4 G6 r) k3 r! \0 _- @
                        @.HasOrder := true;
/ w5 E! U& L' B0 V% Q0 p- k' P                end;
5 L7 v! c" {# Y- j        end;
( [  Q8 u% c3 Bend;        -- of the method
% _( T2 P+ ]8 F! {8 W" ?* z
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
* r* @: F$ @- o5 T( z$ b# _/ x; U% |' |6 V) ^5 Q7 o7 H1 V! n
这是AGV_putin中arrive的method。
& U2 ?+ z8 h" d9 Y$ A6 i' T' P; p5 K0 Q
当到达物料速度越高时,这个报警更多,
* [; [' d6 y4 q) i! Y; e可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
$ w) H& _( D+ z. A" ~9 y程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
) J; M+ X3 B6 l  X0 U" ~
# S0 V# X5 H1 o& m另外一个小建议,就是move,所有的move都可以这样
9 F7 ?8 R+ P/ jif not move() then debug end' x# {2 |" |& x  B- P0 b
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
1 J% l. M4 D0 E' r* @plant simulation中的free libraries有AGV模板,9 |/ ]! U1 ^4 G7 o; h3 ?5 t# }
里面也有案例。) t! W0 @, ]0 R; L8 Q
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。6 }" p6 ?$ U- m9 \1 W

( Y8 c" E1 F: O2 X0 `我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 # j2 `$ `# U6 D

2 }+ f. t' M4 R+ o7 ~% C那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
: }! M9 U" B. K! w4 J这是AGV_putin中arrive的method。
) A2 A3 p3 V0 \: w6 Q1 _' z( o- d3 _5 C1 G6 P6 Z
当到达物料速度越高时,这个报警更多,
% N# J8 M. q' V$ b1 |4 h
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-31 06:36 , Processed in 0.024080 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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