Plant Simulation 學(xué)習(xí)—工廠利用吊裝機(jī)轉(zhuǎn)運(yùn)零件

首先我們要在管理類庫(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ì)象中

最終視圖如下:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容