设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9363|回复: 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'* H' d& ?! d) c4 `
*/
- V; _4 m( a3 w; _* c# fis
9 q+ g# s" p6 q        part, GlobalDistObj, assignLObj:object;row,Lan:integer;* z* d! Q1 y5 _  M
do, z, ]2 G2 T' m" W- Z
        Lan := rootfolder.Internal.Tools.AOLlanguage;
; x# J# z/ Y+ W$ S        if current = @.Destination -- else return& Q' }$ S5 E" Z# y: V/ e) L5 A' `
        then
9 n1 d) `( B5 L5 Q/ P5 c  {3 f3 c4 Q                @.Destination := void;
; z2 E6 D. u& _  V& |" r                if @.occupied then5 K6 J6 G. o* p% L, L) D$ }
                        part := @.cont;' k1 Y: z0 D5 q4 m, F) p
                        @.transpOrder := void;+ u6 p% \7 Q1 a/ v) M* h
                        part.move(partExit);-- unload is already possible                        rgManager.freeVehL.writeRow(0,rgManager.freeVehL.yDim + 1,: T# c: ~% Z4 z
                                @,root.eventcontroller.simTime);- W" U' ^4 m2 J6 ]
                        @.HasOrder := false;
, [8 F+ ?! q1 P: h; f2 h                        @.DrivingHome := true;1 t- C4 ~" o% d' o/ n
                        rgManager.tryToStartTransOrder;
: N/ m0 t) p# `' R                        if @.Destination = void# f5 @3 _$ _* q0 B  x
                        then -- no transport order for vehicle @
% v9 a% B1 ~# N& ~* L                                @.Destination :=; s8 f6 \( }0 }3 t9 S1 C0 W/ W
                                rgManager.nearestFreeStation(@,track.~);
1 Q6 Y8 ~' [3 v+ {# W                                newDirection(@);   
* W; _4 }1 t2 k( X" @. c  g0 {                                if @.Destination /= void then' m& M9 a5 L: H! q8 b6 a
                                        @.Destination.NumReservation :=: }1 E: {" k2 V
                                        @.Destination.NumReservation + 1;
( @% {, @% c- _                                end;
8 R. h! v; Z6 r6 n( d# y! U* ?# {/ f' f                                @.CurrIcon := "drivingHome";
- p7 |7 P% D! Y& U/ L, s" L1 ~3 o                                @.DrivingHome := true;. ~9 a3 g$ |& Q% ~& a2 [/ U$ [
                        end;
/ Y, Q" C0 E1 o$ G0 k& \2 L" V                else -- the vehicle @ is empty, both vehicle and part are in the same dock station
: c# N9 s" s  R5 Q0 V7 ~! X                        part := @.transpOrder;
( @  f' B* U1 ]9 l                        part.move(@);-- load part; X; y# v; J, H
                        @.CurrIcon := "load";& g- g" `) a  q
                        GlobalDistObj := part.globDestination;, O$ S" ~0 }+ l) [, L% k
                        assignLObj := rgmanager.rgAssignL;/ I7 d2 N# U, L/ ~  D* u
                        row := assignLObj.getRowNo(GlobalDistObj);
6 R: X4 D8 e, A  S                        if Row = -1 then -- since 70, d) r* W3 E4 K/ L0 F
                                if lan=1 then+ ]! g0 |. y9 g+ p
                                        promptmessage(to_str("Unbekanntes Ziel: \"",GlobalDistObj,"\""),7 v9 F) s5 l; {  o
                                                to_str("in der Andockstation: \"",?.~.name,"\""));0 J+ a. X8 Z2 ?, z* x9 J
                                else+ m- w* U- _# o  i) Z: a+ {$ `) R
                                        promptmessage(to_str("Unknown destination: \"",GlobalDistObj,"\"")," ?; @6 x0 `; l" J3 r+ l
                                                to_str("in docking station: \"",?.~.name,"\""));                               
' {. O# @3 r7 ?% X  u4 L                                end;
2 w3 `' w& e& N) j# h                        else
  D0 C/ Z! L. p- e4 w                                @.Destination := assignLObj[1,row];7 d' U' W  P3 R* P+ v7 O
                        end;                        ' ?! }. J' m% Y% a
                        newDirection(@);
* J7 v1 M% ]! e- E( a  N1 W' V                        @.HasOrder := true;  G* C( k: `) ?
                end;
4 O1 m; f; p( \/ Z; N        end;
; Z1 K) B* `8 p' q# D& wend;        -- of the method# s; o% R( R9 P! {: `, @- {
 楼主| 发表于 2011-11-17 11:08:06 | 显示全部楼层
本帖最后由 kuka 于 2011-11-17 11:10 编辑
4 O$ _  B! D0 s9 B  i9 n5 h) C8 q! w$ w
这是AGV_putin中arrive的method。* Q3 I2 B% ~8 r- |5 C
) R- u* h3 }4 x: Q5 i" ?" y
当到达物料速度越高时,这个报警更多,
" O7 v+ Z  _# x9 `- z可能是到达物料分给了小车,而小车上已有有物料不能接受,所以发生了冲突。
6 t0 @/ g; Z5 A2 P7 u, u' L* E程序解决这个冲突程序是暂缓到partExit,但是AGV模板提示这个无效。
发表于 2011-11-25 19:15:24 | 显示全部楼层
是不是partexit未定义或者路径不对?3 ~# |8 L9 D  V& M# Y  f6 O# E
' s1 @+ \1 @% J5 O; q5 Q7 z
另外一个小建议,就是move,所有的move都可以这样8 H& ?% S% w2 F6 {1 h7 _
if not move() then debug end
+ b  ?9 b7 F1 Q/ a6 [% t  W' {这样一旦move有问题就会报错 便于检查和修改
发表于 2011-11-25 19:20:37 | 显示全部楼层
另外弱弱的问一句 AGV是神马 o(╯□╰)o
 楼主| 发表于 2011-11-26 19:26:51 | 显示全部楼层
AGV(Automated Guided Vehicle)自动导引小车。
+ d4 X$ U' U( @% H5 A( Z, k' bplant simulation中的free libraries有AGV模板,
! k- ~7 b& T$ m; g里面也有案例。& ], {7 z8 ~3 q& x. [
我运行过案例,没有发现这种报错,可能案例模型没有发生冲突,运行不到if下面这块。
. b9 r& Y! B) l
; u. w4 ^! W9 {1 A) C4 P* {. d$ w我开了一下模板,的确没有定义partexit,它可能是一个队列对象,不知道怎么定义。
发表于 2011-11-26 20:09:15 | 显示全部楼层
因为是用的move,可以直接在模型里建立一个缓存模块,比如buffer之类的,容量定义为-1,move的目标指向这个缓存就可以了,囧。。。不过其实我个人不推荐这种解决方法,因为实际中并不存在这种缓存。。。
发表于 2011-11-26 20:10:15 | 显示全部楼层
本帖最后由 五五 于 2011-11-26 20:10 编辑   K5 ]3 l  V7 ?' @  s% h% H2 A
& r- j* ?. p( \
那么 Automated Guided Vehicle 是不是就是小车的自动寻路系统那个呀 还是还有其他功能或者模块咩
发表于 2011-11-26 20:12:36 | 显示全部楼层
kuka 发表于 2011-11-17 11:08 # X, L- U% ?1 S, T5 Y! o: D7 o
这是AGV_putin中arrive的method。5 p4 {9 B& Q4 Q
& [1 }2 [7 h  r7 E" [* e  @
当到达物料速度越高时,这个报警更多,

( U! Z. l$ U: F9 @) k) e5 L另外 一般对于容量有限的小车 我个人觉得还是更早引入容量控制比较好些 而不是在装运是才报警
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-28 00:09 , Processed in 0.020890 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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