工人开车搬运及装卸货物
Transporter的复合使用
初始化
.MUs.Transporter.create(track,2)
Icon更改
Transporter的Icon更改
Icon-Animation添加动画点,可以配合修改XDim,YDim
Worker的Icon更改
将一个Transporter的名称改为Worker,并将其Icon图标更换为Worker图标,关闭其Graphics显示,即显示为Worker
工人等待策略
--有车然后上车
waituntil car_is_waiting prio 1
@.move(Track.cont)
car_is_waiting:=false
Track传感器策略
param SensorID: integer, Front: boolean, BookPos: boolean
if sensorID=1
if @.cont=void
@.stopped:=true
car_is_waiting:=true
waituntil @.occupied prio 1
@.stopped:=false
end
elseif sensorID=2
@.stopped:=true
Job_finished:=false
@.cont.move(Load1)
waituntil Job_finished prio 1
@.stopped:=false
elseif sensorID=3
@.stopped:=true
Job_finished:=false
@.cont.move(Unload2,4)
waituntil Job_finished prio 1
@.stopped:=false
end
装载出口策略
if ?.name="Load1"
waituntil station.occupied prio 1
station.cont.move(@)
@.move(Load2)
elseif ?.name="Load2"
--给工人留位置
@.cont.move(Track.cont.pe(num_part+2,1))
num_part:=num_part+1
if num_part<4
@.move(Load1)
else
--如果工人位置被占,将该位置的工件移到最后一个位置
if track.cont.pe(1,1).cont /= void
track.cont.pe(1,1).cont.move(track.cont.pe(5,1))
end
@.move(track.cont)
Job_finished:=true
end
end
卸载出口策略
if ?.name="Unload1"
@.cont.move(Drain)
@.move(Unload2)
elseif ?.name="Unload2"
if num_part>0
Track.cont.cont.move(@)
num_part:=num_part-1
@.move(Unload1)
else
@.move(track.cont)
Job_finished:=true
end
end
pe函数
<MU-Path>.pe(X:integer, Y:integer) → object
<MU-Path>[X:integer, Y:integer] → boolean
pe函数访问基于矩阵的存储空间,可以用于MUs,PlaceBuffer和Store