Plant Simulation 学习生产系统仿真工厂利用吊装机转运零件

 

  1. 首先我们要在管理类库中勾选标准库下面的Cranes and More 点击应用之后我们就可以在工具箱中看到里面的多个对象。
  2. 我们点一下MultiPortalCrane这个对象图标  然后在3D模型中创建这个对象,
  3. 然后创建一个源对象(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,点击确定,然后关闭。

  1. 创建一个生成器用来调用Control_motion方法来控制吊装机的移动,

  1. 下面我们来输入控制代码

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方法,传递两个对象过去
  1. 下面我们来把上面的五个方法加入到对象中

最终视图如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值