设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9098|回复: 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'1 `! h% g  y8 H: G# G' I# D
*/
) [  ]- M' ?1 {is  A, U7 J- x* z" O6 j/ J
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;0 e9 H" r4 m3 e+ n0 R. d
do" w4 ]/ o* m3 e4 M+ u7 |
        Lan := rootfolder.Internal.Tools.AOLlanguage;4 k6 z$ I6 I/ b+ v8 L
        if current = @.Destination -- else return* \0 O1 L; x1 t
        then, C& R& s. A# a0 {( ?
                @.Destination := void;0 U) g" l8 i+ _7 {4 z
                if @.occupied then
- M: B; k0 W8 `  p                        part := @.cont;
5 D7 @* P" T" D) h                        @.transpOrder := void;# S) a( x8 G" S$ P; j
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
3 z0 W1 ], |; s                                @,root.eventcontroller.simTime);
8 t" k% P6 w: }- f" T                        @.HasOrder := false;9 q; y& j8 \* O, I1 y
                        @.DrivingHome := true;0 s) H$ i& _+ A& c. A8 B9 Q9 b
                        rgManager.tryToStartTransOrder;6 V8 J6 E- g! r, Q6 T) g( h
                        if @.Destination = void9 [3 S0 p0 `0 N- I- U  j
                        then -- no transport order for vehicle @  m* j1 E5 O7 |" R7 }1 y
                                @.Destination :=% r  e' o- q) \. j1 A* Z
                                rgManager.nearestFreeStation(@,track.~);
- ?* a. D6 Y5 A# _! K$ O. j                                newDirection(@);   
0 O9 y; f& M; h7 V8 r                                if @.Destination /= void then
' }) m( o8 C6 {; J! O5 S" B$ ?                                        @.Destination.NumReservation :=( g2 \; B; |  X% w
                                        @.Destination.NumReservation + 1;
: G5 q1 }% m/ F! q                                end;
1 C" _: s: V/ x# d                                @.CurrIcon := "drivingHome";
+ K/ L/ P! \, |! M2 [  f                                @.DrivingHome := true;% U) b- j. H, ]' y0 w: m
                        end;
' j/ v. z) H' n                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
4 i) H& c: ?3 ^                        part := @.transpOrder;
8 v, b8 G* m7 j) ?( F) @2 M                        part.move(@);-- load part
; g. C! K5 U: O! f) y$ j4 U& O                        @.CurrIcon := "load";
! h. V  L6 p( b                        GlobalDistObj := part.globDestination;
% |0 V2 L; a$ \9 \! }: F                        assignLObj := rgmanager.rgAssignL;
6 {. ~1 ^/ B$ f5 W                        row := assignLObj.getRowNo(GlobalDistObj);
; }9 t% E# V1 L                        if Row = -1 then -- since 70
  I' |+ h  ]2 z" X7 G                                if lan=1 then4 ^, e1 v$ y& L7 h! z, |
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
2 D8 C$ f. P2 S) d$ t9 h$ P                                                to_str("in der Andockstation: \"",?.~.name,"\""));9 R4 @; c$ X% j
                                else; ^, O0 u! }- [# C/ n. t  S. h) Z
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),. X( y$ s" b* S" U( C0 ?% J( U& d3 E) G
                                                to_str("in docking station: \"",?.~.name,"\""));                               
+ M9 d/ C- a7 {* @                                end;
* w5 Y0 ^0 {( _) J8 D# t                        else
2 A! }: a' v9 G0 K4 S" Q                                @.Destination := assignLObj[1,row];
2 h$ H2 k( d3 l  {" ~# b                        end;                        : y: J. u& r* a: W* R
                        newDirection(@);
) W$ Z) q# O# f% x( R                        @.HasOrder := true;
* q3 c- x5 I- w' F# m                end;3 C2 b  c  \% _' f
        end;
4 J5 k2 f' T; X" K) _* m7 \4 Aend;        -- of the method
# {: |0 A- W/ o+ ~
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 6 Y) T6 W$ m, m! D
( v6 D' f4 f# ?) O  A" [) I
这是AGV_putin中arrive的method。1 }+ q/ w+ r; L+ p" V" L! p/ ?& \. Y3 `% x

9 G: \6 x7 q8 [' s* _. _& k当到达物料速度越高时,这个报警更多,3 V) y5 I) o6 y9 i. I4 {; k
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
! }( }& _/ z2 T" A0 W程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?- j  A: z+ ]1 x- M9 h1 U3 n! C

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

本版积分规则

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

GMT+8, 2026-7-13 20:20 , Processed in 0.017426 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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