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

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

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