021-80392549
您好,歡迎光臨工博士,我們將竭誠為您服務 點擊這里給我發消息
 
首頁 > 資訊 > 機器人 > 正文機器人 新零售 人工智能 物聯網IoT 5G 3D打印 企業新聞 業內資訊 行業趨勢 產品應用 方案應用 人物專訪 本站原創 展會資訊 

ABB機器人編程指令開發過程

放大字體  縮小字體 發布日期:2020-05-18  來源:工控網  瀏覽次數:750
       在編程的靈活性方面相比,ABB機器人比一般國產和日系機器人要方便很多,比如用PERS前綴聲明任意類型的變量,甚至自定義數據類型變量,就可以將數據永久保存,保存的數量基本沒有限制,再如獲取位置數據的指定方向分量異常方便,p1.trans.z就可表示p1位置在z軸方向距離工件坐標系原點的距離。本文簡單介紹ABB機器人指令開發過程,其實也就是編寫附帶了參數的程序。

在編程之前需要弄清幾個基本概念。

任務與模塊

       RAPID應用被稱作一項任務。一項任務包括一組模塊。一個模塊包含一組數據和程序聲明。

數據類型:

       Atomic(內置原子型/基本數據類型)數據類型:

       bool為枚舉類型,其值為真或假,提供了一種開展邏輯計算和關聯計算的方式。

       num型支持精確算術計算和近似算術計算。

       string型表示字符序列。

       Record(記錄型)數據類型:為一種帶命名有序分量的復合類型。record類型的值為由各分量的值組成的復合值。一個分量可具備atomic型或record型,用戶自定義復雜數據類型一般就是記錄型。內置記錄型有:

       pos型表示空間位置(矢量)。

       orient型表示在空間中的方位。

       pose型表示坐標系(位置/方位組合)。

       alias數據類型被定義為等同于另一種類型。alias類型提供一種對象分類手段。系統可采用alias分類來查找和顯示與類型相關的對象,內置別名型數據有errnum和intnum。Errnum和intnum均為num的別名,用于表示錯誤和中斷編號。

數據對象:

       有四種數據對象:常量(CONST)、變量(VAR)、永久數據對象(PERS)和參數。永久(數據對象)可描述為“永久”變量。在兩次會話之間,永久變量將保持值。在每次新會話開始時,即,當加載模塊時(模塊變量)或調用程序時(程序變量),將失去(重新初始化)變量值。

程序:

       Rapid程序分為三類:無返回值程序(PROC)、有返回值程序(FUNC)和軟中斷程序。程序聲明指定了程序的下列內容:名稱,數據類型(僅對有返回值程序有效),參數(不適用于軟中斷程序),數據聲明和語句(體),回退處理器(僅對無返回值程序有效),錯誤處理器和撤銷處理器

       程序聲明的參數表指定了調用程序時必須/可提供的參數(實參)。參數將為必要參數或可選參數?蛇x參數可從程序調用的參數表省去,聲明或調用時需要使用符號“”。兩項或兩項以上可選參數可聲明為彼此排斥(用符號“|“分隔,在此情況下,程序調用中最多只可有其中一項可選參數?衫妙A定義有返回值程序Present來測試可選參數是否存在?蓪⑻厥忸愋蛃witch分配給可選參數,這能提供采用“開關型參數”的手段,即,僅以名稱(非值)賦予的參數。開關型的域為空,沒有值能轉移給開關型參數。

下面通過三則示例演示指令開發。

如何實現碼垛指令

       碼垛是機器人最常用的功能之一,與其他多數機器人不同,ABB沒有碼垛包,但實現起來也很簡單,也甚至可以實現復雜碼垛情況。下面以簡單的碼垛為例。pBase為基準示教點,partColumns為列數,partWidth為列寬,PartHeight為單層碼垛高度,numCounter已經存在的工件數量,返回robtarget機器人應該放置或抓取的位置。

FUNC robtarget pStack(robtarget pBase,num partColumns,num partWidth,num PartHeight,num numCounter)

       VAR num Columns;

       VAR num Rows;

       Columns:=( numCounter -1) MOD partColumns;

       Rows:=( numCounter -1-Columns)/partColumns;

       RETURN Offs(pBase,0,Columns*(PartWidth),Rows*PartHeight);

ENDFUNC

如何實現機器人在任意路徑上可自動回原點

多數項目機器人直接自動回原點可能會導致撞機,只能通過增加過渡點的方式實現,有的時候過渡點可以設置成機器人當前位置在指定坐標系中往指定方向偏移指定位移的位置,如果需要更加嚴格保證安全,可以根據位置和旋轉方向來判定機器人需要往何種方向偏移,這里不做深究。

FUNC robtarget getRobT(switch Rel,num x,num y,num z,inout tooldata tool,wobjdata wobj)

       VAR robtarget pCurrent;

       pCurrent:=crobT(tool:=toolwobj:=wobj);

       IF Present(Rel) THEN

       IF Present(x) THEN

       pCurrent.trans.x:=pCurrent.trans.x+x;

ENDIF

       IF Present(y) THEN

       pCurrent.trans.y:=pCurrent.trans.y+y;

ENDIF

       IF Present(z) THEN

       pCurrent.trans.z:=pCurrent.trans.z+z;

ENDIF

ELSE

       IF Present(x) THEN

       pCurrent.trans.x:=x;

ENDIF

       IF Present(y) THEN

       pCurrent.trans.y:=y;

ENDIF

       IF Present(z) THEN

       pCurrent.trans.z:=z;

ENDIF

ENDIF

RETURN pCurrent;

tENDFUNC

       其中實現了有開關型參數Rel情況下,實現增量偏移,無Rel時實現絕對偏移,也可以根據可選參數x,y,z實現指定方向偏移,返回robtarget目標位置(過渡點)。下面是指令的使用示例,調用形式上與RAPID內置Offs等指令有些相識。

       movel getRobPos(rel,y:=100, ,tool0,wobj0),v100,z0,tool0;

       movel getRobPos(z:=1000,tool0,wobj0),v100,z0,tool0;

       p1:= getRobPos(y:=200,tool0,wobj0),

如何判定機器人是否在指定位置附近:

       此功能類似于機器人的安全區域功能,在實時任務中調用此函數可實現安全區域差不多的效果。如果結合crobT 指令可以實現更加復雜的空間判斷,這里不做深究。示例中pCheck是指定位置,num1為判斷符合區域閾值,返回bool型判定結果。

FUNC bool rCheckPos(jointtarget pCheck,num num1)

       VAR jointtarget pCurrent;

       VAR num numTemp;

       IF Present(num1) THEN

       numTemp:=num1;

       ENDIF

       pCurrent:=CalcJointT(CRobT(),tool0);

       IF pCurrent.robax.rax_1《=pcheck.robax.rax_1+num1 and=“” pcurrent.robax.rax_1=“”》=pCheck.robax.rax_1-num1 AND

       pCurrent.robax.rax_2《=pcheck.robax.rax_2+num1 and=“” pcurrent.robax.rax_2=“”》=pCheck.robax.rax_2-num1 AND

       pCurrent.robax.rax_3《=pcheck.robax.rax_3+num1 and=“” pcurrent.robax.rax_3=“”》=pCheck.robax.rax_3-num1 AND

       pCurrent.robax.rax_4《=pcheck.robax.rax_4+num1 and=“” pcurrent.robax.rax_4=“”》=pCheck.robax.rax_4-num1 AND

       pCurrent.robax.rax_5《=pcheck.robax.rax_5+num1 and=“” pcurrent.robax.rax_5=“”》=pCheck.robax.rax_5-num1 AND

       pCurrent.robax.rax_6《=pcheck.robax.rax_6+num1 and=“” pcurrent.robax.rax_6=“”》=pCheck.robax.rax_6-num1 THEN

       RETURN TRUE;

ELSE

RETURN FALSE;

ENDIF

ENDFUNC

       當然,熟悉編寫如何去編寫指令是不夠的,還需深刻認識坐標系的概念和一些基本指令,結合實際操作。
工博士工業品商城聲明:凡資訊來源注明為其他媒體來源的信息,均為轉載自其他媒體,并不代表本網站贊同其觀點,也不代表本網站對其真實性負責。您若對該文章內容有任何疑問或質疑,請立即與商城(www.843280.live)聯系,本網站將迅速給您回應并做處理。
聯系電話:021-31666777
新聞、技術文章投稿QQ:3267146135  投稿郵箱:[email protected]
分享到: 

分享與收藏:  資訊搜索  告訴好友  關閉窗口  打印本文 本文關鍵字:

新聞視頻

 
推薦資訊
最新文章
 
 
工業品代運營:您好,歡迎光臨,我們將竭誠為您服務 廣告業務:您好,歡迎光臨,我們將竭誠為您服務 會員管理:您好,歡迎光臨,我們將竭誠為您服務 售后服務:您好,歡迎光臨,我們將竭誠為您服務 新聞投稿:您好,歡迎光臨,我們將竭誠為您服務 戰略合作:您好,歡迎光臨,我們將竭誠為您服務 滬公網備31011402005898號
 
哈尔滨打麻将胡卡技巧 股票融资开户有什么条件 基金配资平台 内部半波中特免费公开 北京11选5最新开奖走势图 湖北11选五任三遗漏 北京赛车开奖苹果直播 贵州快3和值跨度走势圄表 最安全正规的理财平台 德国赛车pk软件 江苏快三开奖结果今天