- 首先我们要在管理类库中勾选标准库下面的Cranes and More 点击应用之后我们就可以在工具箱中看到里面的多个对象。
- 我们点一下MultiPortalCrane这个对象图标 然后在3D模型中创建这个对象,
- 然后创建一个源对象(Source),4个工位对象(Start,M1,M2,M3)和一个物料终结(Drain)。
- 创建一个变量
- 名称为Variable,五个方法
- 名称为to_which_obj,Control_motion,exit_control,init和write_sheet
- 变量Variable:用来记录吊装机目的对象,数据类型设置为Object
to_which_obj:用来控制吊装机移动到哪个为空的对象
Control_motion:用来控制吊装机的动作
Init:用来初始化对象或数据
exit_control:零件加工完成退出的方法
write_sheet:用来写入对象到数据表
再创建一个数据表(move_about_obj)
用来记录吊装机把零件从哪个对象移动到哪个对象。
双击move_about_obj打开数据表,选中第一列和第二列右键点击格式,选择Object,点击确定,然后关闭。
- 创建一个生成器用来调用Control_motion方法来控制吊装机的移动,
- 下面我们来输入控制代码
to_which_obj代码如下:
var target:object
--在(M1,M2,M3)中查找为空的对象
waituntil (m1.empty and Variable /= m1) or (m2.empty and Variable /= m2) or (m3.empty and Variable /= m3) prio 1
if (m1.empty and Variable /= m1)
target:=m1
elseif (m2.empty and Variable /= m2)
target:=m2
elseif (m3.empty and Variable /= m3)
target:=m3
end
write_sheet(?,target)
--调用write_sheet方法传递当前对象和目标对象,写入到数据表中
Variable:=target
--设置变量为目标对象
Control_motion代码如下:
var start:object
var target:object
var portal:object
portal:=multiPortalCrane.cont
-- portal为吊装机的钩子对象
if portal.state="idle" and move_about_obj.yDim>0
--判断吊装机是否为待机状态,并且数据表内存在数据
start:=move_about_obj[1,1]
--获取数据表中第一行第一列的对象
target:=move_about_obj[2,1]
--获取数据表中第一行第二列的对象
move_about_obj.cutRow(1)
--删除第一行的数据
portal.moveToObject(start)
--吊装机移动到目标对象
waituntil portal.state="waiting" prio 1
--吊装机钩子向下移动4米
portal.moveHook(4)
waituntil portal.state="waiting" prio 1
start.cont.move(portal.hook)
--从对象上取走零件
portal.moveHook(0.5)
waituntil portal.state="waiting" prio 1
portal.moveToObject(target)
waituntil portal.state="waiting" prio 1
portal.moveHook(4)
waituntil portal.state="waiting" prio 1
portal.hook.cont.move(target)
portal.moveHook(0.5)
waituntil portal.state="waiting" prio 1
portal.endSequence
--终止吊装机,当吊装机执行完成时,必须使用此命令终止,使吊装机为空闲状态("idle")
end
init(初始化) 代码:
move_about_obj.delete
--清空数据表
multiPortalCrane.cont.endSequence
write_sheet 代码:
param source:object,destination:object
--接收传递的参数
move_about_obj.writeRow(1,move_about_obj.yDim+1,source,destination)
--把传递的参数写入到数据表(move_about_obj)中
exit_control 代码:
write_sheet(?,drain)
--调用write_sheet方法,传递两个对象过去
- 下面我们来把上面的五个方法加入到对象中
最终视图如下: