设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9420|回复: 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'- v9 p6 ^& ^7 s
*/  A6 I, H3 M) I1 Z6 D% W
is
. X- s# X; E8 I/ Y1 Y# k7 h        part, GlobalDistObj, assignLObj:object;row,Lan:integer;' v& m4 k& p% p! n/ ?
do
7 f% R1 E1 U+ W/ |4 H# H        Lan := rootfolder.Internal.Tools.AOLlanguage;! `9 I/ I" O2 }9 Y0 k2 v
        if current = @.Destination -- else return
- r. r* e: L  T+ K8 Y; w" \        then4 [) D* M- y0 X
                @.Destination := void;6 @5 ?( y1 ^; @$ p& r/ U
                if @.occupied then( i% Z% R6 D0 V: V* g  l
                        part := @.cont;% {9 @4 u. }3 j6 X5 ~( I
                        @.transpOrder := void;/ t5 _. X0 A4 S# U& Q9 m0 x9 H0 F
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,1 X  P* I2 U7 Z9 B# g
                                @,root.eventcontroller.simTime);
1 A/ u' b% h+ y2 Z: x# }" l4 ^                        @.HasOrder := false;. ^& K2 h: t4 q1 W9 e# T) N7 ]0 v
                        @.DrivingHome := true;
1 V5 L2 N/ F# f5 j                        rgManager.tryToStartTransOrder;
- R) c6 D" b! n8 t2 A0 B                        if @.Destination = void" ~9 t4 y0 }0 v, y3 F5 i9 A* j
                        then -- no transport order for vehicle @
8 z/ \" L5 A, C0 s                                @.Destination :=) J" G9 X) J# {* ]$ s! x1 o  F0 Z$ e! z
                                rgManager.nearestFreeStation(@,track.~);( x% p, j, d0 F) z! d4 r
                                newDirection(@);   # ?2 K" P1 v0 A/ j8 U% X5 g
                                if @.Destination /= void then; O3 g1 I7 O) n. w, g* j
                                        @.Destination.NumReservation :=
6 [( G* A# y* H6 {: o' d                                        @.Destination.NumReservation + 1;2 o% o: \7 Z8 F; v: e2 [
                                end;: ^2 B7 `; ^8 ~5 K8 s
                                @.CurrIcon := "drivingHome";1 }+ ?* j- q' a  r* i9 L
                                @.DrivingHome := true;  d# \' p9 G  ]8 F' H
                        end;: t5 s- q" k( v! r
                else -- the vehicle @ is empty, both vehicle and part are in the same dock station9 v# W  R$ |9 {! f- f9 y
                        part := @.transpOrder;8 s7 }4 J6 ?8 L  g- n/ {
                        part.move(@);-- load part- g/ I4 {8 n; t& {+ \: n, b5 D
                        @.CurrIcon := "load";
8 }7 |+ X6 H* E; r+ ^- S1 c- L                        GlobalDistObj := part.globDestination;" L/ v+ }  C; e8 n8 k+ j, o8 F
                        assignLObj := rgmanager.rgAssignL;, Y3 Z& A) r1 }  @) T/ G; e0 R
                        row := assignLObj.getRowNo(GlobalDistObj);3 B8 V8 D: ]: g6 o) [5 u4 K0 d! J& O
                        if Row = -1 then -- since 706 @( R: n& |8 u- L8 p/ `+ ?
                                if lan=1 then
6 x3 {- `. z' P4 J" G% }: u  [                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
5 }% Q: k' n# _5 K6 Q                                                to_str("in der Andockstation: \"",?.~.name,"\""));
4 K1 q6 ^# F% [; t$ Q6 \8 I                                else8 j/ p4 p- m; X, p6 z
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
" s9 o/ }# O. e; X* |! R                                                to_str("in docking station: \"",?.~.name,"\""));                               
/ X( _6 n; m/ T) p3 ^                                end;
5 [# H  \: ]5 X! c1 f6 V7 ?                        else
2 _7 g9 t5 L0 ?! x0 \" \5 X                                @.Destination := assignLObj[1,row];6 d( m6 S, O  g) ~# t
                        end;                       
6 E$ ^3 a3 m6 g! P                        newDirection(@);7 d* Z* h4 z7 _; b5 K  E5 J1 F2 U
                        @.HasOrder := true;+ j' S- z/ S' H# s: F  J' G
                end;3 R" W. X2 Y7 |1 P
        end;
! g) J1 b4 c; N) oend;        -- of the method
- j5 ^/ y$ M9 K% b. Q0 i
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
9 R, Y; x4 |, y! B+ m
# R7 l: E" G4 `* _! U  j这是AGV_putin中arrive的method。
8 _% t+ I7 r8 r7 q, w: O9 f9 _* a$ r
$ |" u% Q. K8 I9 H- n8 t当到达物料速度越高时,这个报警更多,% x. j! `* ?$ X+ E
可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。# b# W  H- R0 V1 s7 u
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?. U* @: q1 t# S  V) g  E- p; \

1 W- |4 r/ ]2 R2 k. c6 r9 A! G5 i另外一个小建议,就是move,所有的move都可以这样
* _) g% e( V3 Gif not move() then debug end" G% ^& s2 \* P# F. e1 d# v7 J
这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。# U3 u( `; f9 I9 ?
plant simulation中的free libraries有AGV模板,
4 O0 q* G! n- e里面也有案例。
% x9 L: z& S0 {# M; Y5 z2 L我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。$ N$ z& {  H3 m* X5 c
% K% Z8 n  y; i& R
我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 ! y6 b( |& Y7 r8 k6 ?. \7 I

, m0 M1 ]0 u( ?5 B5 E那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 $ B  O& _3 _" ^; I' S4 t1 L
这是AGV_putin中arrive的method。9 b8 j# l8 w; A# T% }" N

$ _! v& U( T( n当到达物料速度越高时,这个报警更多,
+ o& y4 F5 b) D
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-31 06:35 , Processed in 0.020765 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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