设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6945|回复: 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'; m7 U! s2 D& c* u0 K! A; H
*/
3 e6 T7 j9 g  V/ X; n) \is7 o/ N0 R/ B" Q
        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
) ~, L$ R' C! m, pdo
9 E0 @! s: d8 o9 ~% Y        Lan := rootfolder.Internal.Tools.AOLlanguage;
% y* u0 D: X0 z  j        if current = @.Destination -- else return
7 O5 h( J: N2 t# {, p0 u        then) }4 p0 k5 b3 f0 k2 @& i+ A# P
                @.Destination := void;
5 G3 n* P* K: |# I& [+ F                if @.occupied then4 z1 O: n  m0 q
                        part := @.cont;
% o# o: e( @. t6 A                        @.transpOrder := void;
* m/ ^4 r2 n5 c: d3 V                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,
( {5 I- }& g7 f2 I& p& s                                @,root.eventcontroller.simTime);6 q) Q) h9 _9 Q' J
                        @.HasOrder := false;0 o2 {$ E0 q/ |8 x0 i$ p
                        @.DrivingHome := true;
; A% D& a1 b  E# M1 q/ y8 w                        rgManager.tryToStartTransOrder;
2 N. v- ?, y, f  o; q4 m# `& x7 t                        if @.Destination = void+ b- w6 A, a, L; y) Z8 Y
                        then -- no transport order for vehicle @1 M4 R: I2 q; E, `; V6 J- v/ e, V
                                @.Destination :=
; x2 n! |! F; X' b: B                                rgManager.nearestFreeStation(@,track.~);
1 f1 X+ I# i7 z5 M$ g( N' h; \                                newDirection(@);   , a" m* S- l5 l# c7 [
                                if @.Destination /= void then
8 s9 \! e# c+ G) v6 v( F% H0 _                                        @.Destination.NumReservation :=- i/ \% ^, N( \, d& W- J7 h+ _
                                        @.Destination.NumReservation + 1;8 k) `! Q% L, T9 ~
                                end;  l. t0 N6 A" \% N$ H
                                @.CurrIcon := "drivingHome";
2 O$ P$ H) o, Z7 A                                @.DrivingHome := true;: ~/ j' U' K# E' _1 m
                        end;
4 T* L" X( F5 j* C0 x' ]                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
' y7 T( t0 W/ G# s6 x) Q                        part := @.transpOrder;
7 k% S8 f8 e9 o; A, e% v+ q9 P2 ^                        part.move(@);-- load part
- r" }' n5 P& {+ {                        @.CurrIcon := "load";
; K3 D( R  x6 n, ]                        GlobalDistObj := part.globDestination;" P, l7 x: Q: h. M! s/ C9 V. O
                        assignLObj := rgmanager.rgAssignL;
" t+ F* S8 T/ h                        row := assignLObj.getRowNo(GlobalDistObj);
: @8 n; t) i. Z, b1 o                        if Row = -1 then -- since 70
7 L  W) Y; v8 b8 b! g                                if lan=1 then& C) O5 F1 d# e% s% x
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),5 H/ y) ^$ I5 H3 R
                                                to_str("in der Andockstation: \"",?.~.name,"\""));  Y& u7 x. `) X4 e; P/ \
                                else
9 z2 R3 e# A6 {                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
1 P' L1 N$ _. b7 u) A                                                to_str("in docking station: \"",?.~.name,"\""));                                * m( O8 u; T  u* `, W
                                end;. W& h9 _9 q$ M3 q5 {
                        else, s+ ?) S* _- H0 b# v
                                @.Destination := assignLObj[1,row];
3 I8 ]5 j* e1 \/ I* a7 e                        end;                       
% `6 \+ ]" t: |4 U1 d0 p  v                        newDirection(@);  Y0 f" d5 y$ t9 P1 D# L. l
                        @.HasOrder := true;* d& w8 M0 Z/ s/ T3 u) i5 p0 ?
                end;3 \' z* @, k: a0 E
        end;; e& h; o0 U, W& [0 o/ t
end;        -- of the method0 t6 y5 j! o; e; W, L
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑 - e# _: C# j+ [9 n' A% k9 ~+ [

* H* D  Z0 b0 s6 e' p这是AGV_putin中arrive的method。2 K& v% B+ G, g
  {6 ]( y) D5 l$ C8 r
当到达物料速度越高时,这个报警更多,
# n" m  @; M- [% f$ T/ q可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。+ l8 U4 i8 _! b8 d
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?
5 Y0 u( j9 P0 a) q) M( E- h  D: Q: G9 l7 _4 Z
另外一个小建议,就是move,所有的move都可以这样
+ E. |2 M* [- M% ?" d) Kif not move() then debug end
1 {/ |& g+ x9 x这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。% I$ {8 e* z1 q! ~
plant simulation中的free libraries有AGV模板,. Q; C7 @! p9 h' n" J5 B4 B
里面也有案例。: S  j& U* ~4 l- ~3 f
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。( V0 X. Z; @$ |( X$ u* X

; _# X' w8 `3 O; `- V, k我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑
" N5 {: r$ T- M8 r. V/ m! ~1 j* E2 h. @
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 % o: v  F; m, O  |
这是AGV_putin中arrive的method。( n2 M; Y( Q" ?8 c2 w
3 B  u2 h- }$ |
当到达物料速度越高时,这个报警更多,
* J! O; C# {* W9 l
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-7 15:27 , Processed in 0.021121 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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