设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6868|回复: 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'
, z% S6 G; p; O7 p" R9 u" u*/
, L: j' p% x& H$ E" jis
1 }' v1 L3 N- y( c0 ~- t        part, GlobalDistObj, assignLObj:object;row,Lan:integer;
+ w  H2 d7 ^9 D' z& M. zdo
  ]3 \+ N' m+ G( S  u        Lan := rootfolder.Internal.Tools.AOLlanguage;
6 ^0 q. v+ s+ K; J/ {3 d1 b) v        if current = @.Destination -- else return& W( R* _/ N! Z
        then
$ b. j/ q* I6 O5 O+ O                @.Destination := void;
, z2 Z' C, f, H& X% @                if @.occupied then
  o! ^7 g% }: K6 D7 Y$ K# C                        part := @.cont;! P2 k  z2 `8 o% X* C0 y( e6 M
                        @.transpOrder := void;
! m7 g  L9 Q( ^; q, m% R/ B# t                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,% }$ f- ^5 [1 w9 c
                                @,root.eventcontroller.simTime);
/ G  R" V+ P( T! u6 r& L1 E; o                        @.HasOrder := false;
5 }. _, c- b/ y+ T* ?  \' L* H" d                        @.DrivingHome := true;
8 a0 w; }- r9 m- P" E                        rgManager.tryToStartTransOrder;
( B* W8 O; I& [  i. N" ^* t; R                        if @.Destination = void
/ K5 C1 Z* q8 z2 X                        then -- no transport order for vehicle @
/ p2 ]: p$ x6 D                                @.Destination :=0 [# h8 f1 z% Y5 x
                                rgManager.nearestFreeStation(@,track.~);# n& g% f' r3 I1 Q# x+ O( U! |  u" M% i
                                newDirection(@);   8 u  u, r4 @; H
                                if @.Destination /= void then1 m* s' Q, Z. |$ Q* ~
                                        @.Destination.NumReservation :=9 {. P. Z8 Z1 V1 I2 b
                                        @.Destination.NumReservation + 1;
/ n/ A+ y$ }: }                                end;6 e8 D3 e. [, O5 d
                                @.CurrIcon := "drivingHome";
* h" W1 T) c, ]/ t                                @.DrivingHome := true;
( y9 }1 V5 V/ g9 ]                        end;
6 R0 j; f* V, Y1 x                else -- the vehicle @ is empty, both vehicle and part are in the same dock station& O$ l; s4 O/ E" {' O3 {8 @
                        part := @.transpOrder;2 M& C7 V# K/ U& S: J2 G" M
                        part.move(@);-- load part, E1 Z6 a( R" i9 K6 q5 _
                        @.CurrIcon := "load";# Y: g0 e0 Y7 p3 W! l0 j; m: l* A
                        GlobalDistObj := part.globDestination;
7 h! ~! k6 V3 o" V7 ^& J! R  v                        assignLObj := rgmanager.rgAssignL;
$ k- ?! {& S( w" g6 e                        row := assignLObj.getRowNo(GlobalDistObj);
* A1 s3 ^8 |$ s- m) e# J                        if Row = -1 then -- since 70% ?) y$ }) S8 k6 z+ `
                                if lan=1 then% C! ~7 Q' Q3 B  k8 J
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),
2 s' u" z, v4 \7 w# l4 e                                                to_str("in der Andockstation: \"",?.~.name,"\""));
1 d. v1 C" \' k9 V- l, Q                                else" N' O( L2 E. M+ |* }/ U; Y
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\""),
& j8 ?/ H. X6 U7 x2 h4 U9 _# D                                                to_str("in docking station: \"",?.~.name,"\""));                               
, Q. C0 r' h" }' a) g                                end;, Q: K  F+ s1 n7 [8 ]
                        else
7 Y' l' |9 o: z* z9 I- ]# G: I                                @.Destination := assignLObj[1,row];: W  P4 v: q1 O  S
                        end;                        . ]0 s- X/ ^( B& C( Q8 q! w. H; T
                        newDirection(@);
6 J2 g; G. P. g( Y: U* M4 h                        @.HasOrder := true;- N7 u) S" E. z
                end;9 T# W6 u/ R* p+ M4 v- K; L- O
        end;
) x! h; k4 q$ w- E$ \" C0 @7 Bend;        -- of the method+ W9 @5 I% Q! d: t9 H/ M
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
( T& U; }! F+ n7 P
+ M& _, G" t/ c" y9 N! @这是AGV_putin中arrive的method。
5 j2 [, w8 B3 l. I: I1 y7 {1 X
当到达物料速度越高时,这个报警更多,
% V5 U. P# W- {% ^可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。4 U7 ?# X/ y* {; C
程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?* Y+ k+ ?& t$ j  s+ J: `* }
  R, ]0 C5 k- v$ T. e4 K: b) G% v
另外一个小建议,就是move,所有的move都可以这样
! Z% W$ J6 D9 yif not move() then debug end
# d6 U; L7 z/ x3 `% g4 S这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
1 m0 Y+ K) c3 U' C+ U& h( }plant simulation中的free libraries有AGV模板,( r% {2 O- X0 H5 B7 ?
里面也有案例。9 d) p0 J% Y. b/ S
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。& \' H7 `/ b, E  q

: k8 @$ Z/ e, t* o* i3 J0 E  v我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑 2 o& b7 v8 z; O0 e9 `
5 @$ K& |$ w; A! s5 g. ^; y% a& }
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 4 r( w9 m8 F8 H9 v/ M( V: x
这是AGV_putin中arrive的method。
- t" [, a1 Q/ F, Z. B% N/ o
0 T& g# M0 H; |% d当到达物料速度越高时,这个报警更多,
1 B7 \! V( ^! Q* [
另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-3 16:30 , Processed in 0.018837 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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