2026年8月17日 星期一

Cargo Transfer Process Simulation 「貨物轉移過程模擬」

Cargo Transfer Process Simulation「貨物轉移過程模擬」

https://www.youtube.com/watch?v=Ic9PpPG-_NU



 以下是操作步驟:

  1. 打開 EasyBuilder Pro,選擇「新建專案」(New Project),接著選擇「MT8102iE」機型。
這是威綸科技(Weintek)人機介面(HMI)的專案設定步驟。若您需要,我可以繼續為您:
  • 翻譯後續的 EasyBuilder Pro 操作步驟
  • 提供 MT8102iE 與 PLC 連線的通訊設定教學
  1. 彈出「系統屬性」(System Properties)視窗,點擊「確定」(OK)。
  2. 進入 HMI 畫面,請參照下表新增對應的元件:
  3. 夾爪、瓶子和紙箱的圖片,請至此連結下載:[HMI 圖片]
  4. HMI 畫面上的元件外觀,理應呈現如下圖所示:
  5. 為了讓這些元件能依據期望的流程運行,請新增巨集(Macro)。本次將建立 2 個巨集:第一個巨集用於設定所有元件的初始狀態,且僅在程式啟動時執行一次。第二個巨集用於持續循環執行程式,使期望的製程得以運作。欲建立第一個巨集,請開啟「專案」(Project)選單,點擊「巨集」(Macro)按鈕,並在巨集視窗中輸入以下程式碼:macro-0
  6. 將 macro-0 程式碼輸入至工作區(Work Space)後,勾選「HMI 啟動時執行一次」(Execute one time when HMI starts)選項。
  7. 點擊「儲存並編譯」(Save & Compile)按鈕,畫面應顯示 0 錯誤(0 error)訊息。接著點擊「離開」(Exit)按鈕關閉工作區視窗。
  8. 接下來建立第二個巨集,點擊「新建」(New)。在工作區中勾選「週期性執行」(Periodical execution),設定時間間隔(Time Interval) = 1 x 100ms,隨後輸入以下程式碼:macro-1。
  9. 點擊「儲存並編譯」(Save & Compile)按鈕,畫面應顯示 0 錯誤(0 error)訊息。
  10. 點擊「離線模擬」(Off-line Simulation)按鈕。
備註: 當沒有 PLC 或其他設備連接 HMI 時,請使用「離線模擬」。若有其他設備與 HMI 連接,則請使用「線上模擬」(On-line Simulation)。
這段教學完整說明了威綸 HMI 巨集的初始化與週期性控制設定。若您需要,我可以繼續為您:
  • 撰寫或解構 macro-0 的初始化程式碼(例如設定初始座標或變數)
  • 撰寫或優化 macro-1 的邏輯程式碼(實現瓶子移動、夾爪搬運等動畫邏輯)
  • 提供威綸巨集常用的 GetData / SetData 語法說明 與暫存器對照

  1. 按下 Start 按鈕以點亮指示燈,按下 Stop 按鈕則熄滅指示燈。 當指示燈熄滅時,所有後續製程皆無法執行。
  2. 按下 S1 按鈕以產生瓶子,並讓瓶子在 1 號輸送帶上運行。
  3. 按下 S2 按鈕將瓶子從 1 號輸送帶夾起,並放入 2 號輸送帶上的紙箱內。
  4. 按下 S3 按鈕讓夾爪(Gripper)返回初始位置。
  5. 若紙箱尚未裝滿,則無法按下 S4 按鈕。 為此,請重複按下 S1 至 S3 按鈕,直到紙箱內裝滿 3 個瓶子。裝滿 3 個瓶子後即可按下 S4 按鈕,使紙箱移動到 2 號輸送帶的最右端。
  6. 按下 S1 按鈕將會把(已裝滿的)紙箱運走,接著 2 號輸送帶的最左端會出現一個新紙箱,同時 1 號輸送帶上也會運行一個新瓶子,整個流程將重新循環。







macro-0

macro_command main()
short data_lw[10]
bool data_lb[11]
data_lb[7]=1
data_lb[8]=0
data_lb[9]=0
data_lb[10]=0
//lw[0] dan lw[1] dikosongkan untuk mqtt
data_lw[2]=0 	//kondisi gripper membuka
data_lw[3]=390	//posisi griper sumbu x
data_lw[4]=10	//posisi griper sumbu y
data_lw[5]=0 	//kondisi botol 
data_lw[6]=0	//posisi botol sumbu x
data_lw[7]=0	//posisi botol sumbu y
data_lw[8]=0 	//box kosong 
data_lw[9]=510	//posisi box di konveyor2
SetDataEx(data_lw[0], "Local HMI", LW, 0, 10)
SetDataEx(data_lb[0], "Local HMI", LB, 0, 11)
end macro_command

macro-1

macro_command main()
bool data_lb[11]
bool turun1
bool turun2
bool naik1
bool naik2
bool geser1
bool geser2
bool geser3
bool geser4
bool awal=1
short data_lw[10]
GetDataEx(data_lw[0], "Local HMI", LW, 0, 10)
GetDataEx(data_lb[0], "Local HMI", LB, 0, 11)
if data_lb[1]==1 then  //tombol Start ditekan
	data_lb[0]=1	   //indikator menyala
end if
if data_lb[2]==1 then  //tombol Stop ditekan
	data_lb[0]=0       //indikator padam
end if
if data_lb[3]==1  then //tombol S1 ditekan
	data_lw[5]=1
	data_lw[6]=98
	data_lw[7]=275
	data_lb[7]=0
	geser1=1
	if data_lw[9]>700 then
		data_lw[8]=0
		data_lw[9]=510
	end if
end if
if geser1==1 and data_lb[0]==1 then
	data_lw[6]=data_lw[6]+5
	if data_lw[6]>412 then 
		geser1=0
		data_lb[8]=1
	end if
end if	
if data_lb[4]==1 then //tombol S2 ditekan
	data_lb[8]=0
	turun1=1
end if
if turun1==1 and data_lb[0]==1 then
	data_lw[4]=data_lw[4]+5
	if data_lw[4]>136 then
		turun1=0
		naik1=1
	end if
end if
if naik1==1 and data_lb[0]==1 then
	data_lw[2]=1
	data_lw[4]=data_lw[4]-5
	data_lw[7]=data_lw[7]-5
	if data_lw[4]<15 then
		naik1=0
		geser2=1
	end if
end if
if geser2==1 and data_lb[0]==1 then
	data_lw[3]=data_lw[3]+5
	data_lw[6]=data_lw[6]+5
	if data_lw[6]>(530+data_lw[8]*56) then
		geser2=0
		turun2=1
	end if
end if
if turun2==1 and data_lb[0]==1 then
	data_lw[4]=data_lw[4]+5
	data_lw[7]=data_lw[7]+5
	if data_lw[4]>130 then
		turun2=0
		data_lb[9]=1
	end if
end if
if data_lb[5]==1 then //tombol S3 ditekan
	data_lw[5]=0
	data_lw[6]=0
	data_lw[7]=0
	data_lb[5]=0
	data_lb[9]=0
	data_lb[7]=1
	naik2=1
	data_lw[8]=data_lw[8]+1
	if data_lw[8]==3 then
		data_lb[10]=1
		data_lb[7]=0
	end if
	if data_lw[8]>3 then 
		data_lw[8]=0
	end if
end if
if naik2==1 and data_lb[0]==1 then
	data_lw[2]=0
	data_lw[4]=data_lw[4]-5
	if data_lw[4]<15 then
		naik2=0
		geser3=1
	end if
end if
if geser3==1 and data_lb[0]==1 then
	data_lw[3]=data_lw[3]-5
	if data_lw[3]<395 then
		geser3=0
	end if
end if
if data_lw[8]==3 and data_lb[6]==1 then //tombol S4 ditekan
	data_lb[10]=0
	geser4=1
end if
if geser4==1 and data_lb[0]==1 then
	data_lw[9]=data_lw[9]+5
	if data_lw[9]>700 then
		data_lb[7]=1
		geser4=0
	end if
end if
SetDataEx(data_lb[0], "Local HMI", LB, 0, 11)
SetDataEx(data_lw[0], "Local HMI", LW, 0, 10)
end macro_command

沒有留言:

張貼留言

Cargo Transfer Process Simulation 「貨物轉移過程模擬」

Cargo Transfer Process Simulation「貨物轉移過程模擬」 https://www.youtube.com/watch?v=Ic9PpPG-_NU   以下是操作步驟: 打開 EasyBuilder Pro,選擇「新建專案」(New Project),...