设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7370|回复: 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'
, w) R- E0 W% E8 V- L*/! z% M1 p% d# H' G$ v5 A
is
! ~( `$ M& q+ a  v' _        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
0 Y, c. z* |0 M9 [% T! Pdo
1 r8 N. T) g. z# H7 N        Lan := rootfolder.Internal.Tools.AOLlanguage;
. k" R$ ?: u% ]3 x. t        if current = @.Destination -- else return
$ z- e) W' U5 D) ~& X/ }        then
' p: ^. j2 ], y- @6 g                @.Destination := void;$ @, O. e& A6 n' s
                if @.occupied then
: @: P; b+ F! ?) _, z                        part := @.cont;2 N2 X. R# K& t$ r) E
                        @.transpOrder := void;
5 P) F& p! Z9 }6 @7 F. Q                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
& h/ F* A& M( Y. F: Q# q' g                                @,root.eventcontroller.simTime);/ T, N  G7 n# b4 `; X1 e
                        @.HasOrder := false;' ]$ K2 g5 p6 p0 V; }7 z
                        @.DrivingHome := true;
$ f* H, |6 w/ H7 X1 Q                        rgManager.tryToStartTransOrder;
- [2 }0 |, C! I; |1 z8 ~; [                        if @.Destination = void
5 t( L2 J7 \5 x, c! Z( Z+ s                        then -- no transport order for vehicle @
; w) M/ j# C. x" n# O  q$ Y& _                                @.Destination :=
# n; L, I) x* k$ \" \( D) v+ U6 q                                rgManager.nearestFreeStation(@,track.~);- G. i. E) @- J: m+ ~
                                newDirection(@);   
2 E2 R' l8 E' e7 _. c0 R/ W                                if @.Destination /= void then
* |6 s( R) w: @0 a& t                                        @.Destination.NumReservation :=- s% P" A" a. ~9 L
                                        @.Destination.NumReservation + 1;
! d# ?+ B6 C. C                                end;3 j( E  g% q; ^' d& Z# n. E
                                @.CurrIcon := "drivingHome";
3 f) s$ n$ A; S7 n8 f8 F                                @.DrivingHome := true;
% l( N3 n& b& h5 k: x- s/ O                        end;5 h" v; S$ M9 K  _3 |
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
) J2 x' `) m8 A6 P9 A                        part := @.transpOrder;
) e; @% H3 d. Y                        part.move(@);-- load part  f: F. P% t9 z0 T6 K# q7 l; g
                        @.CurrIcon := "load";) a6 y  c! e% H. r
                        GlobalDistObj := part.globDestination;
4 V1 c1 O5 v* `! u7 Y# l) P                        assignLObj := rgmanager.rgAssignL;
& F/ ]3 Z/ K' J9 ~8 y7 ]& \) ]1 q                        row := assignLObj.getRowNo(GlobalDistObj);8 m2 \: R2 b5 k6 G
                        if Row = -1 then -- since 70" t$ N- @9 Y  T
                                if lan=1 then7 `* ?8 j% ?  z1 A1 G; s( i
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\"")," C2 X$ J3 b$ @9 R5 u* }
                                                to_str("in der Andockstation: \"",?.~.name,"\""));
2 q& Q* q5 D) }  p: X8 Q) X& W3 f                                else
; X. X, W9 ?5 f5 l                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
. i" N5 X1 e# m0 b% F$ P- R                                                to_str("in docking station: \"",?.~.name,"\""));                               
+ ~# f; k/ ?: ~2 \- E                                end;
! b" b5 w9 C$ _9 R/ A                        else6 y2 I# r5 `- m( p3 p! @
                                @.Destination := assignLObj[1,row];
) n# [: Y$ f) H; d& `                        end;                       
( @7 ^( a2 y3 V# E2 Y' ?8 i; K) x                        newDirection(@);9 ^- k' ]4 L- T
                        @.HasOrder := true;
. |+ `5 t3 Z+ \, ~. k- ]& m) c                end;; m, |3 z1 m/ H2 {9 H/ x
        end;
, a+ _6 T' q0 o$ m; Eend;        -- of the method
1 |; H( ^! d; b  x  n
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
# k# f8 L4 @6 ]/ m* d  r
' q8 U' r$ @' k- d: |这是AGV_putin中arrive的method。% l+ q2 y# L6 y

% u8 l" a8 c6 l+ R& w- S* W4 W当到达物料速度越高时,这个报警更多,
5 b2 ~  [* J6 b* l: K可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
( j: E6 ~: E& ?) u+ p  F- c& v2 x程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?2 v- \0 R6 u/ \. f, O" }. \$ H7 w- d
+ [% S: O' d7 B7 S/ X
另外一个小建议,就是move,所有的move都可以这样
9 F' X, E* O$ d/ p8 N2 h& k, @9 Mif not move() then debug end! y0 w1 k/ n/ L0 |7 D. a6 W
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。3 S2 j. E! s; e. }. s
plant simulation中的free libraries有AGV模板,
2 g# J0 y5 U' a9 i' n& O里面也有案例。4 z! o5 @3 t' m% M# U, n
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
. _) F8 C/ H7 O
2 C, j! e2 m2 s' b  K我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
9 S) @# v& q! y% H+ p1 M: V; l
1 x) W/ ?( F9 Q4 N3 _9 R3 H' }1 Q那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08
! m+ c$ F0 |2 ~6 r0 s这是AGV_putin中arrive的method。4 i0 i/ |$ |9 I4 a, W9 r

' @: N* @, D5 w1 X当到达物料速度越高时,这个报警更多,
: _4 N1 Q9 n) v- v! s3 M! h
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-7 19:48 , Processed in 0.018143 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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