
首先我們要在管理類庫(kù)中勾選標(biāo)準(zhǔn)庫(kù)下面的Cranes and More 點(diǎn)擊應(yīng)用之后我們就可以在工具箱中看到里面的多個(gè)對(duì)象。
我們點(diǎn)一下MultiPortalCrane這個(gè)對(duì)象圖標(biāo) 然后在3D模型中創(chuàng)建這個(gè)對(duì)象,
然后創(chuàng)建一個(gè)源對(duì)象(Source),4個(gè)工位對(duì)象(Start,M1,M2,M3)和一個(gè)物料終結(jié)(Drain)。
創(chuàng)建一個(gè)變量名稱為Variable,五個(gè)方法 名稱為to_which_obj,Control_motion,exit_control,init和write_sheet
變量Variable:用來(lái)記錄吊裝機(jī)目的對(duì)象,數(shù)據(jù)類型設(shè)置為Object
to_which_obj:用來(lái)控制吊裝機(jī)移動(dòng)到哪個(gè)為空的對(duì)象
Control_motion:用來(lái)控制吊裝機(jī)的動(dòng)作
Init:用來(lái)初始化對(duì)象或數(shù)據(jù)
exit_control:零件加工完成退出的方法
write_sheet:用來(lái)寫入對(duì)象到數(shù)據(jù)表
再創(chuàng)建一個(gè)數(shù)據(jù)表(move_about_obj)用來(lái)記錄吊裝機(jī)把零件從哪個(gè)對(duì)象移動(dòng)到哪個(gè)對(duì)象。
雙擊move_about_obj打開(kāi)數(shù)據(jù)表,選中第一列和第二列右鍵點(diǎn)擊格式,選擇Object,點(diǎn)擊確定,然后關(guān)閉。
創(chuàng)建一個(gè)生成器用來(lái)調(diào)用Control_motion方法來(lái)控制吊裝機(jī)的移動(dòng),
下面我們來(lái)輸入控制代碼
var target:object
--在(M1,M2,M3)中查找為空的對(duì)象
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)
--調(diào)用write_sheet方法傳遞當(dāng)前對(duì)象和目標(biāo)對(duì)象,寫入到數(shù)據(jù)表中
Variable:=target
--設(shè)置變量為目標(biāo)對(duì)象
Control_motion代碼如下:
var start:object
var target:object
var portal:object
portal:=multiPortalCrane.cont
-- portal為吊裝機(jī)的鉤子對(duì)象
if portal.state="idle" and move_about_obj.yDim>0
? ? --判斷吊裝機(jī)是否為待機(jī)狀態(tài),并且數(shù)據(jù)表內(nèi)存在數(shù)據(jù)
? ? start:=move_about_obj[1,1]
--獲取數(shù)據(jù)表中第一行第一列的對(duì)象
? ? target:=move_about_obj[2,1]
--獲取數(shù)據(jù)表中第一行第二列的對(duì)象
? ? move_about_obj.cutRow(1)
--刪除第一行的數(shù)據(jù)
? ? portal.moveToObject(start)
--吊裝機(jī)移動(dòng)到目標(biāo)對(duì)象
? ? waituntil portal.state="waiting" prio 1
? ? --吊裝機(jī)鉤子向下移動(dòng)4米
? ? portal.moveHook(4)
? ? waituntil portal.state="waiting" prio 1
? ? start.cont.move(portal.hook)
? ? --從對(duì)象上取走零件
? ? 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
? ? --終止吊裝機(jī),當(dāng)?shù)跹b機(jī)執(zhí)行完成時(shí),必須使用此命令終止,使吊裝機(jī)為空閑狀態(tài)("idle")
end
init(初始化)?代碼:
move_about_obj.delete
--清空數(shù)據(jù)表
multiPortalCrane.cont.endSequence
write_sheet?代碼:
param source:object,destination:object
--接收傳遞的參數(shù)
move_about_obj.writeRow(1,move_about_obj.yDim+1,source,destination)
--把傳遞的參數(shù)寫入到數(shù)據(jù)表(move_about_obj)中
exit_control?代碼:
write_sheet(?,drain)
--調(diào)用write_sheet方法,傳遞兩個(gè)對(duì)象過(guò)去
下面我們來(lái)把上面的五個(gè)方法加入到對(duì)象中
最終視圖如下: