Twincat3.0飛鋸(Flying-Saw)功能的實現以及開發

本人所做的機器人項目涉及到機器人的自動化分揀領域,前兩篇博客介紹了上位機與控制器的一些通訊問題,這些是信息傳遞的媒介,而最終還需要利用採集的物料信息,進行抓取,即對傳送帶上的物料進行動態分揀,因此本文介紹實現動態抓取的功能–飛鋸(Flying-Saw),這是Twincat軟件自帶的功能,而我們在此基礎上進行開發,實現基於傳送帶的動態抓取。

1.飛鋸(Flying-Saw)功能的介紹1

飛鋸是指從軸可以同步到正在運動的主軸,並與主軸同步運行以完成一個加工週期。
這種同步到主軸的運動,意味着工件可以在傳輸的過程中進行加工,一些工廠需要在工件運輸的過程中進行加工,例如切割正在運輸的木板,並且保證動態切割時方向垂直於木板,如圖1所示。
飛鋸

圖1 飛鋸示意圖1

飛鋸功能的介紹在官方文檔的介紹已經很清楚,在此不具體敘述,重點介紹實際應用。

2.飛鋸功能在機器人動態抓取方面的應用

機器人動態抓取的項目需要在運動的傳送帶上抓取正在被輸送的物料,如示意圖圖2,同時,由於物料在運動狀態下被抓取,爲了保證抓取準確性,需要有合適的算法進行抓取點的計算,我們在項目開發過程中用了兩種方式進行抓取:
一是利用機器人運動參數,傳送帶速度以及相機拍攝物料的時刻和對應的位置座標,求解出機器人和物料某一時刻的相遇點,進而執行抓取;
二是利用倍福的飛鋸功能的速度同步,在機器人抓取時使其沿傳送帶方向的軸與傳送帶軸速度進行耦合疊加,到達物料上方時解耦並執行抓取,也能保證抓取的準確性。

示意圖
圖2 機器人動態抓取示意圖

本文主要介紹第二種方式,以直角座標機器人爲例,本人做了一個簡易的流程圖圖3以供參考。

流程圖
圖3 機器人動態抓取流程圖

以下主要介紹應用飛鋸功能進行動態抓取的關鍵步驟:
1).首先建立axis
下圖中X,Y,Z,和Q1軸對應的是四軸座標機器人的四個實際軸,需要鏈接plc變量和實際I/O,而X_1只鏈接plc,作爲nc通道的x軸;Axis_band鏈接實際傳送帶軸,也是飛鋸速度同步的主軸,Axis_slave鏈接plc虛軸,也是飛鋸速度同步的虛軸。(Ps:執行飛鋸功能時X軸是X_1和Axis_slave兩個軸的速度疊加)
axis
2).速度耦合
抓取動態的物體,需要進行速度疊加,即速度耦合,因此我們將與傳送帶進行同步的從軸Axis_slave和執行G代碼插補nc通道的軸X_1進行耦合,輸出的速度賦給實際io軸,如下:

fb_GEARMutil:MC_GearInMultiMaster;//聲明速度耦合功能塊
fb_GEARMutil(
 Master1:=aAxis_xchannel , //執行G代碼插補nc通道的軸X_1對應的變量
 Master2:=aAxis_slave , 
 Master3:= , 
 Master4:= , 
 Slave:=aAxis[0] , //實際IO軸
 Enable:=b_gearin , //上升沿觸發
 GearRatio1:= 1, 
 GearRatio2:=1 , 
 GearRatio3:=0 , 
 GearRatio4:=0 , 
 Acceleration:= , 
 Deceleration:= , 
 Jerk:= , 
 BufferMode:= , 
 Options:= , 
 InGear=> , 
 Busy=> , 
 Active=> , 
 CommandAborted=> , 
 Error=> , 
 ErrorID=> );
 

3).速度同步
接下來設置速度同步的功能塊,速度加速度等參數按照軸參數進行設置。

fb_gearin_velo:MC_GearInVelo;//聲明速度同步功能塊
fb_gearin_velo(
 Master:= aAxis_band , 
 Slave:=aAxis_slave , 
 Execute:=b_flygear , //上升沿觸發
 RatioNumerator:= 1, 
 RatioDenominator:=1 , 
 SyncMode:= , 
 Velocity:=400, 
 Acceleration:=15000 , 
 Deceleration:=15000, 
 Jerk:= 30000, 
 BufferMode:= , 
 Options:= , 
 StartSync=> , 
 InSync=> , 
 Busy=> , 
 Active=> , 
 CommandAborted=> , 
 Error=> , 
 ErrorID=> );

4).執行抓取邏輯程序
執行抓取邏輯程序流程如圖3所示,當物料進入抓取範圍時,判斷進入時觸發主從軸同步。

b_flygear:=TRUE;
IF fb_gearin_velo.InSync THEN
  Grab_start:=TRUE;//抓取執行標識位
END_IF

同步完成後執行G代碼,當G代碼運行到物料上方位置時,觸發M函數執行從軸停止動作,取消同步。

fb_stop:mc_stop;//聲明軸停止功能塊
fb_stop(
 Axis:=aAxis_slave , 
 Execute:=b_stop ,//上升沿觸發 
 Deceleration:=4633.33 , 
 Jerk:=36697.1 , 
 Options:= , 
 Done=> , 
 Busy=> , 
 Active=> , 
 CommandAborted=> , 
 Error=> , 
 ErrorID=> );
IF fb_stop.Done THEN 
 fb_stop(Axis:=aAxis_slave,Deceleration:=4633.33 ,Execute:=FALSE  );
 b_stop:=FALSE;
END_IF

隨後機器人繼續執行後續G代碼,完成一整個抓放動作。
其中圖3流程圖中最後的框圖中,還需要執行記錄從軸位置動作,目的是爲了方便下一次的絕對定位,因爲我們項目G代碼採用的時絕對定位,直線插補的方式,執行的是nc通道的軸X_1,而實際x軸的位置等於從軸axis_slave和通道中軸X_1的和,經過一次抓取後axis_slave的位置有相對偏移,卻又無法在軸耦合的情況下置0位,若需要運動到實際位置,需要對X_1運行的目標位置作一定的偏移,我們用R參數記錄axis_slave的位置,下一次抓取的實際目標位置減去該R參數,即爲X_1軸運動的目標位置。

3.總結

通過運用飛鋸功能的速度同步,在執行抓取前使x軸與傳送帶的速度進行同步,實現物料的動態抓取定位,免於設計計算動態抓取點的算法。
由於項目程序涉及產權保護,因此未全部進行上傳,僅對應用飛鋸功能的主要步驟進行闡述,建議先了解附錄1內的飛鋸功能介紹,方便理解。


  1. 畢孚自動化設備貿易(上海)有限公司,《TwinCAT 3 運動控制教程V1.1》,2018. ↩︎ ↩︎ ↩︎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章