Plant Simulation 学习—工厂利用吊装机转运零件

首先我们要在管理类库中勾选标准库下面的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方法来控制吊装机的移动,

下面我们来输入控制代码

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方法,传递两个对象过去

下面我们来把上面的五个方法加入到对象中

最终视图如下:

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容