常用場(chǎng)景為:流水線(xiàn)點(diǎn)膠、流水線(xiàn)產(chǎn)品分揀、流水線(xiàn)產(chǎn)品搬運(yùn)等。
常見(jiàn)機(jī)械結(jié)構(gòu):XYZ (R)、SCARA、DELTA等。

1、指令介紹
同步跟隨是指點(diǎn)的跟隨,跟隨的是位置,皮帶與跟隨軸的位置之間由算子去協(xié)調(diào)位置關(guān)系,需要處理的僅僅是第一個(gè)跟隨時(shí)刻的位置。
MOVESYNC指令內(nèi)重要參數(shù)是給出皮帶的位置和跟隨軸的位置,只需要把跟隨點(diǎn)跟隨的這個(gè)“時(shí)刻”靜態(tài)化處理就行,即可以想象成當(dāng)皮帶上物體到了傳感器mark位置時(shí)刻皮帶停止了。
跟隨軸這個(gè)時(shí)候移動(dòng)到達(dá)產(chǎn)品mark點(diǎn),這個(gè)時(shí)刻得到了兩組坐標(biāo)位置:
支持單軸或多軸同步跟隨。
模式 | |
-1 | 同步結(jié)束模式,運(yùn)動(dòng)到指定的絕對(duì)位置,此模式運(yùn)動(dòng)如果后面緊接著其它MOVESYNC指令,會(huì)被覆蓋,此模式下syncaxis無(wú)效 |
-2 | 強(qiáng)制結(jié)束模式,調(diào)用時(shí)強(qiáng)制停止原來(lái)的MOVESYNC,運(yùn)動(dòng)到指定結(jié)束位置,此模式運(yùn)動(dòng)如果后面緊接著其它MOVESYNC指令,會(huì)被覆蓋,此模式下syncaxis無(wú)效 |
0 | BASE第1個(gè)軸(x)跟隨皮帶軸物體 |
10 | BASE第2個(gè)軸(y)跟隨皮帶軸物體 |
20 | BASE第3個(gè)軸跟隨皮帶軸物體 |
(3)syncposition:皮帶軸物體被感應(yīng)到時(shí)皮帶軸的位置
(4)syncaxis:皮帶軸軸號(hào),-1表示沒(méi)有皮帶軸,可以是電機(jī)軸,也可以是編碼器
(5)pos1:皮帶軸物體被感應(yīng)到時(shí)的BASE第1個(gè)軸(一般是跟隨軸)的絕對(duì)位置
(6)posn:皮帶軸物體被感應(yīng)到時(shí)的BASE第n個(gè)軸的絕對(duì)位置
5、指令使用圖解(單軸為例)
假設(shè)當(dāng)產(chǎn)品到傳感器位置時(shí)實(shí)現(xiàn)跟隨;借助傳感器的信號(hào)實(shí)現(xiàn)皮帶位置鎖存,即當(dāng)產(chǎn)品到達(dá)傳感器鎖存的位置時(shí),依靠鎖存記錄下皮帶坐標(biāo)(syncposition參數(shù)),此時(shí)將跟隨軸X軸運(yùn)行到產(chǎn)品鎖存點(diǎn)位置,得到跟隨軸X軸位置為(pos1);
下面示例以單軸跟隨為例子,輔助以感應(yīng)器作為位置記錄條件。

⊙第一次運(yùn)行,需要進(jìn)行對(duì)位操作,確認(rèn)跟隨軸的位置,點(diǎn)擊產(chǎn)品到位,模擬產(chǎn)品放到了傳送帶上開(kāi)始運(yùn)動(dòng),到達(dá)鎖存位置停止,將跟隨軸移動(dòng)到產(chǎn)品位置處停下。記錄下跟隨軸此時(shí)的坐標(biāo),此坐標(biāo)MOVESYNC指令將會(huì)用到。
⊙配置軸號(hào),軸的運(yùn)動(dòng)參數(shù),合理設(shè)置三段運(yùn)動(dòng)的時(shí)間。
global sub get_mark_pos(mode) '使用3或者4,其他方式修改等待條件和獲取的數(shù)據(jù)寄存器,reg_pos REG_INPUTS(belt_axis) = $0000 '映射皮帶鎖存輸入 reg_count = 0 DMSET mark_flag(0,100,-1) '每次開(kāi)始前清空標(biāo)志,避免誤判 WHILE 1 base(belt_axis)REGIST(mode)axis(belt_axis) wait until mark if reg_count >= 100 then '位置數(shù)組循環(huán)存儲(chǔ)值判斷 reg_count = 0 endif mark_pos(reg_count) = REG_POS ?REG_POS mark_flag(reg_count) = 1 reg_count = reg_count + 1 wend endsub
同步跟隨函數(shù):依靠鎖存函數(shù)給的參數(shù),設(shè)置跟隨時(shí)間,執(zhí)行同步跟隨動(dòng)作,分為加速、同步和減速回原位置三個(gè)階段,注意每個(gè)階段的時(shí)間規(guī)劃合理,完成一個(gè)跟隨步驟之后等待觸發(fā)下一次跟隨。
global sub run_sync() base(sync_axis) move_count = 0 '運(yùn)動(dòng)計(jì)數(shù)清0 TABLE(10) = -1 '以table 10 的值,作為同步結(jié)束標(biāo)志 WHILE 1 if move_count >= 100 then '循環(huán) move_count = 0 endif if mark_flag(move_count) = 1 then '判斷是否有產(chǎn)品觸發(fā) if abs(sync_star_dis + mark_pos(move_count)) >= abs(mpos(belt_axis)) then '尚在有效觸發(fā)距離內(nèi),即可以跟隨 '開(kāi)始跟隨 '第一段:加速段(追趕段) 跟隨模式看機(jī)構(gòu)具體而定,一般皮帶編碼器方向與跟隨軸運(yùn)動(dòng)方向一致就用0 反方向就用 0 + pi/2 MOVESYNC(0, accel_time, mark_pos(move_count), belt_axis, sync_pos) '第二段:同步段與加速段唯一不同是時(shí)間 MOVESYNC(0, sync_time, mark_pos(move_count), belt_axis, sync_pos) '此處可以開(kāi)啟線(xiàn)程去操作其他動(dòng)作 '使用 move_task 指令操作 '用table 10 的值來(lái)作為其他運(yùn)動(dòng)的結(jié)束標(biāo)志,這里使用move_table,是為了使同步完全結(jié)束,后面開(kāi)發(fā)時(shí)可以將MOVE_TABLE放在其他運(yùn)動(dòng)的線(xiàn)程里面使用 MOVE_TABLE(10,10) elseif abs(sync_star_dis + mark_pos(move_count)) < abs(mpos(belt_axis)) then '超出范圍,直接跳過(guò), TABLE(10) = 10 ?"跳過(guò)" '?abs(sync_star_dis + mark_pos(move_count)) , abs(mpos(belt_axis)) endif '判斷結(jié)束 wait UNTIL table(10) = 10 '第三段:復(fù)位段 以當(dāng)前位置為停止位置,可以添加變量設(shè)置待機(jī)位。 MOVESYNC(-1, decel_time, mark_pos(move_count),-1, sync_pos) move_table(10,-1) '結(jié)束標(biāo)志復(fù)位 mark_flag(move_count) = -1 '同步條件標(biāo)志復(fù)位 move_count = move_count + 1 '計(jì)數(shù)+ 1 endif wend endsub