陳惠鑫
級別: 工控俠客
精華主題: 0
發(fā)帖數(shù)量: 62 個(gè)
工控威望: 2448 點(diǎn)
下載積分: 250 分
在線時(shí)間: 51(小時(shí))
注冊時(shí)間: 2020-02-19
最后登錄: 2024-06-07
查看陳惠鑫的 主題 / 回貼
樓主  發(fā)表于: 2021-07-03 10:54
本人2年發(fā)那科機(jī)器人搬送應(yīng)用經(jīng)驗(yàn),+安川motoman+espon+配天機(jī)器人+雜七雜八的國產(chǎn)機(jī)器人應(yīng)用經(jīng)驗(yàn)。
總的來說機(jī)器人應(yīng)用方面用的最多應(yīng)該還是搬運(yùn),像其他細(xì)分領(lǐng)域里,焊接,噴涂還有視覺應(yīng)用,接觸比較少,所以可能給不了大家太多的分享。
首先,機(jī)器人應(yīng)用里面就躲不過一個(gè)東西,叫坐標(biāo)系。
何為坐標(biāo)系,讀過書都應(yīng)該知道,平面里建立一個(gè)x方向與y方向垂直,便能形成一個(gè)二維的直角坐標(biāo)系。在二維平面的坐標(biāo)系上面垂直一個(gè)Z方向就得到了一個(gè)三維的坐標(biāo)系。
之前在常州機(jī)電做培訓(xùn)的時(shí)候,老師們都問過一個(gè)問題就是,機(jī)器人是靠什么去準(zhǔn)確再現(xiàn)位置的。我簡單解釋說就是靠電機(jī)編碼器的數(shù)值去記錄,然后就得到一個(gè)新的問題,就是怎么知道它的位置就是原點(diǎn)。機(jī)器人本體下面有一個(gè)電池盒,電池是可以保存編碼器信息的,編碼器是絕對式,當(dāng)電池快沒電到時(shí)候,需要帶電更換電池,以防止掉電失掉數(shù)據(jù)。編碼器數(shù)據(jù)相當(dāng)于機(jī)器人再現(xiàn)動作的基礎(chǔ)。然后就是煩人的坐標(biāo)系。
回到我們的坐標(biāo)系,基本有以下幾種坐標(biāo)系:
1.世界坐標(biāo)/基坐標(biāo)/底坐標(biāo)/全局坐標(biāo)(反正就一個(gè),以第一軸基座中心為原點(diǎn)就是了,有些把世界坐標(biāo)系分開說是世界坐標(biāo)規(guī)定用戶坐標(biāo)的初始方向,倆坐標(biāo)是同一個(gè)點(diǎn)同一個(gè)方向,但有些廠家出廠標(biāo)定不一樣,沒辦法總有人要特立獨(dú)行)
2.法蘭坐標(biāo)系(以第六軸法蘭中心為原點(diǎn))
3.工具坐標(biāo)系/尖端坐標(biāo)系(以工具/夾持器/焊槍/噴槍/打磨頭等最終的中心位置為原點(diǎn))
4.用戶坐標(biāo)系/方向坐標(biāo)系/工件坐標(biāo)系(定義運(yùn)動方向,有一些把用戶跟工件坐標(biāo)系分開,因?yàn)楣ぜ鴺?biāo)系Z軸方向以右手定則確定,用戶坐標(biāo)系可自定義)
然后我們需要知道:
1.世界/基座標(biāo)一般不需要我們自己標(biāo)定,因?yàn)槭窍到y(tǒng)內(nèi)設(shè)置好的
2.法蘭坐標(biāo)系一般只有一個(gè)(雙臂的就不知道了,沒用過),也不用我們操心
3.工具坐標(biāo)系(tool)一般需要進(jìn)行尖端TCP標(biāo)定也就是需要至少三個(gè)不同面的姿態(tài)去確定工具中心,通常采用三點(diǎn)/六點(diǎn)/九點(diǎn)法進(jìn)行。而我比較喜歡在規(guī)矩的夾具上面直接通過設(shè)計(jì)參數(shù)去設(shè)定tcp(遇到60°安裝的或者是特殊角度的工具就老老實(shí)實(shí)還是三點(diǎn)法吧)
4.用戶/工件坐標(biāo)系,一般也是比較簡單的三點(diǎn)法即是原點(diǎn),X方向點(diǎn)Y方向點(diǎn),(方向距離越大,XY夾角越接近90度,坐標(biāo)系越準(zhǔn))
坐標(biāo)系是機(jī)器人應(yīng)用的基礎(chǔ),接觸過這么多的設(shè)備,有簡單也有復(fù)雜的,最開始不會的時(shí)候基本都是使用初始化狀態(tài)的坐標(biāo)系,即是法蘭坐標(biāo)+世界坐標(biāo)去做,因?yàn)榛径际谴怪辈季郑?dāng)你遇到45度布局的設(shè)備的時(shí)候就gg了,每次都是X+1Y+1,一點(diǎn)點(diǎn)的加,后面學(xué)會了坐標(biāo)系,上來就是先把坐標(biāo)系設(shè)定好了,對點(diǎn)編程的時(shí)候就相對輕松很多。
坐標(biāo)系制定是機(jī)器人應(yīng)用一個(gè)基礎(chǔ),也是比較多新手會不太喜歡去使用的一個(gè)東西,因?yàn)橛袝r(shí)候定好點(diǎn)運(yùn)行的時(shí)候發(fā)現(xiàn)坐標(biāo)系調(diào)用錯(cuò)了,整個(gè)程序就得重來或者重新使用那個(gè)坐標(biāo)系。一般我發(fā)現(xiàn)坐標(biāo)系錯(cuò)了我會試一下是不是某個(gè)坐標(biāo)系,然后偷懶的把坐標(biāo)系給改成那個(gè)坐標(biāo)系,但這個(gè)做法日后別人去讀程序的時(shí)候就會一臉懵不知道你為什么那樣干。所以該有的規(guī)矩還是得有,編程就是得邏輯清晰然后多做點(diǎn)備注吧。
坐標(biāo)系標(biāo)定好了之后,先別急著去編程,如果說新接觸一家機(jī)器人廠家,最好先把相應(yīng)的動作指令熟悉一下。
初次使用發(fā)那科機(jī)器人的時(shí)候我覺得跟三菱的機(jī)器人是差不多的,就是直線跟關(guān)節(jié),然后后帶個(gè)速度+截至類型,編程的時(shí)候溜得飛起,編完程序你還能一鍵把相應(yīng)點(diǎn)位重新按順序編號,要改哪個(gè)點(diǎn)位就點(diǎn)哪里然后選擇修改數(shù)據(jù)就萬事大吉。后來遇到了安川機(jī)器人就懵了,直接來個(gè)movj*****或者movl*****,點(diǎn)位呢沒有編號,尷尬的我都不得不吐槽這東西不科學(xué),用久了呢,也就摸出規(guī)律了,大概也就是各家人不一樣的做法而已。
說到底目前的機(jī)器人運(yùn)動指令無非就是:
MOVL直線運(yùn)動+點(diǎn)位標(biāo)簽+運(yùn)動速度+截止類型(+加減速)
MOVJ關(guān)節(jié)運(yùn)動+點(diǎn)位標(biāo)簽+運(yùn)動速度+截止類型(+加減速)
MOVC圓弧運(yùn)動+點(diǎn)位信息+運(yùn)動速度+截止類型(+加減速)
每一家人的指令方式都不一樣,編程之前最好了解一下指令的構(gòu)成是怎樣的。用習(xí)慣了發(fā)那科的fine/cnt100,突然來個(gè)F100/C50的截止類型,會有個(gè)一臉懵的感覺;蛘呤墙y(tǒng)一速度的speed=80,變成了speedset/vset,這些都得先提前了解。
經(jīng)驗(yàn)告訴我,角度變換選關(guān)節(jié),因?yàn)榭欤缒阈枰倔w轉(zhuǎn)移90度或者末端工具轉(zhuǎn)180度的時(shí)候,關(guān)節(jié)運(yùn)動是最快最安全的,因?yàn)閯幼骺深A(yù)見;蛘哌\(yùn)行到安全點(diǎn)這類外部安全位置的一般都是走關(guān)節(jié)。迫近與末端執(zhí)行一般就是使用直線,這樣確保準(zhǔn)確程度,且這個(gè)時(shí)候坐標(biāo)系 的作用就體現(xiàn)出來了,一個(gè)合適的坐標(biāo)系能讓你動作調(diào)試過程輕松很多倍。當(dāng)然,焊接工藝比較多還是走復(fù)雜曲線,我接觸的比較少,焊接是個(gè)工藝,為了子孫后代,沒想接觸。
然后有些特殊應(yīng)用場景可能會用到碼垛拆垛指令,這些指令需要各自去看指令代碼說明。初學(xué)機(jī)器人可能都會在機(jī)器人怎么保存數(shù)據(jù)跟怎么執(zhí)行動作上面比較難理解,搞兩個(gè)就知道了。實(shí)干才能深刻體會。
然后第三步就是機(jī)器人的io操作,首先了解io的手動觸發(fā),手動操作下io是如何觸發(fā)io監(jiān)控io,這是編程之前需要了解的。例如發(fā)那科可以設(shè)置快捷鍵shitf+數(shù)字鍵,安川也可以使用快捷方式觸發(fā),配天可以配置FN鍵,了解之后,對于你的操作會有很多幫助。進(jìn)入編程io觸發(fā),要了解編程指令中io是如何操作的。有些機(jī)器人io指令就是O1=ON/O1 ON/ON O1...復(fù)雜一點(diǎn)的可能就會pluse脈沖輸出或者是在指令后面有其他附加指令。也有些是在機(jī)器人動作后面加上動作結(jié)束后輸出或動作輸出前關(guān)閉。像發(fā)那科是DO1=on,wait DI1=OFF,配天的是SETDO(1,TRUE),WAITUNTIL getdi().IO操作基本會貫徹你應(yīng)用過程。
到這個(gè)過程,基本上一個(gè)動作就可以走完了。簡單的動作執(zhí)行,然后觸發(fā)IO,等待io到位,繼續(xù)下一步,一個(gè)簡單的邏輯就完成了。
主菜上完了,該上小菜了。
進(jìn)入實(shí)際編程,我們來說程序執(zhí)行結(jié)構(gòu)。到上面那一步,我們基本把機(jī)器人動作的基礎(chǔ)講完了,點(diǎn)位運(yùn)動+IO動作,簡單演示一個(gè)動作流程是沒問題了。
最近在看python,python把程序結(jié)構(gòu)分為順序結(jié)構(gòu),分支(選擇)結(jié)構(gòu),循環(huán)結(jié)構(gòu),在這里,我覺得可以套用。
順序結(jié)構(gòu)用于執(zhí)行動作,流程,工藝。上面說到的簡單的點(diǎn)位運(yùn)行然后執(zhí)行io操作,可以歸類為順序結(jié)構(gòu)。
分支結(jié)構(gòu)用的比較多還是在工藝選擇,流程選擇,子程序調(diào)用上面,具體體現(xiàn)為,滿足條件即跳轉(zhuǎn)。舉個(gè)例子,機(jī)器人一對多設(shè)備,運(yùn)行等待時(shí)如果期中一臺設(shè)備發(fā)送了上下料或空閑指令,機(jī)器人收到信息后,需要進(jìn)行設(shè)備選擇以及動作程序,其他設(shè)備后發(fā)送信息就得等相關(guān)流程處理完才會繼續(xù)執(zhí)行該動作。再舉個(gè)例子,一個(gè)動作里面如果有不同的工藝,工藝完成情況會決定相應(yīng)后續(xù)工藝,分支選擇便是決定工藝執(zhí)行的前提。有些機(jī)器人分支結(jié)構(gòu)命令為if(條件)then(執(zhí)行動作),然后動作內(nèi)部再嵌套一級if判斷,最多一般不超過7級。有些機(jī)器人則是if(條件成立)(執(zhí)行動作)else(執(zhí)行動作)endif,或者是if(條件成立)執(zhí)行動作elseif(條件成立)(執(zhí)行動作)elseif(條件成立)(執(zhí)行動作)endif。有些會直接把elseif簡寫elif或者其他,這時(shí)候廠家手冊就很有去看啦。不過我用的比較多還是使用
switch (條件)
  case(條件1)執(zhí)行動作
  case(條件2)執(zhí)行動作
  case(條件3)執(zhí)行動作
def 執(zhí)行動作
每一家的指令都不一樣,但是思想可以歸為一類。條件滿足執(zhí)行相應(yīng)的動作。這就是分支結(jié)構(gòu)的核心。不過使用分支結(jié)構(gòu)的話需要注意一點(diǎn)就是執(zhí)行結(jié)束后需要返回的位置,如果是循序工藝,那可以直接跳轉(zhuǎn)回下一行,如果是動作工藝,那需要返回的有時(shí)候會是條件判斷的選擇行,這個(gè)地方需要注意。就像上下料,你判斷是上下料了,取完下一步就是上料,如果你跳轉(zhuǎn)回判斷機(jī)臺動作,那鐵定出故障,如果你動作做完了,下一步是去放成品,那跳轉(zhuǎn)回去判斷下一步工藝應(yīng)該是符合邏輯的。
循環(huán)結(jié)構(gòu),循環(huán)結(jié)構(gòu)和選擇結(jié)構(gòu)有些類似,不同點(diǎn)在于循環(huán)結(jié)構(gòu)的條件判斷和循環(huán)體之間形成了一條回路,當(dāng)進(jìn)入循環(huán)體的條件成立時(shí),程序會一直在這個(gè)回路中循環(huán),直到進(jìn)入循環(huán)體的條件不成立為止。
最近在搞PLC,F(xiàn)OR...NEXT..指令。剛開始我覺得獨(dú)立的程序也可以達(dá)到我想要的效果。寫了一個(gè)累加的程序,從1-50,普通程序花了5秒完成,24行程序,后來用FOR k50然后程序也是差不多的程序邏輯,100ms就出結(jié)果,1-1000累加也是100ms,普通程序花了要30秒。后面查查資料,意思就是在一個(gè)周期里面它這個(gè)程序會根據(jù)設(shè)定的次數(shù)運(yùn)行相應(yīng)的次數(shù),所以會快一點(diǎn)。
不過這里用在機(jī)器人上面,較多應(yīng)該還是用在對工藝內(nèi)動作的選擇上面。可能需要多次執(zhí)行一個(gè)動作的時(shí)候,或者是判斷料號,料量的選擇。
循環(huán)結(jié)構(gòu)用得最多應(yīng)該還是在主程序進(jìn)入后的while(1)以及最后的endwhile結(jié)束。
循環(huán)結(jié)構(gòu)我用得比較少,因?yàn)槲乙话阒鞒绦蜓h(huán)我是使用條件分支進(jìn)行跳轉(zhuǎn),終止條件不達(dá)到就能一直按照我們設(shè)定的流程走下去。
=======================
基礎(chǔ)應(yīng)用到上面這里就差不多完結(jié)了。畢竟機(jī)器人入門是比較簡單的,坐標(biāo),動作,邏輯,三劍客熟悉之后,新手跟老鳥的差別就要開始慢慢拉開距離了。
前菜:
之前在做機(jī)床上下料的時(shí)候,最開始只有幾十個(gè)料位,對點(diǎn)位還是比較簡單,到了后來512個(gè)料位,加上64個(gè)刀位,一個(gè)料位有取料動作跟放料動作,對應(yīng)取料治具跟放料治具,也就是總的要1024+128個(gè)位置要對,然后加上每個(gè)位置需要有迫近位,取料位,離開位,也就是(1024+128)*3,這工作量就嘿嘿嘿了,單純基礎(chǔ)的1024個(gè)點(diǎn)位就要對兩天,對完手都是抖動的,更別說還不知這個(gè)數(shù)量。所以后來上來先搞坐標(biāo)系,然后對點(diǎn)的時(shí)候使用同一的坐標(biāo)方向,上下左右前后都統(tǒng)一規(guī)定,使用統(tǒng)一的方向進(jìn)行,后面對點(diǎn)就方便一點(diǎn)。此外摸索規(guī)律也很重要,基本動作可以分迫近位,取料位,離開位,那便是取放都可以通用同一種距離,只不過動作反過來進(jìn)行而已。后面其實(shí)就都是只對一個(gè)取料點(diǎn)跟放料點(diǎn),其他都是使用偏移指令進(jìn)行點(diǎn)位數(shù)據(jù)的偏移,這樣又簡單又快捷,只不過前期的坐標(biāo)系一定要對好還有就是方向要規(guī)定好,精度必須保證好。做好這個(gè)其實(shí)后面工作就解決了大概1/2.調(diào)試時(shí)間也能減少很多。
偏移指令在大量點(diǎn)位重復(fù)動作 的情況下是非常節(jié)省人工效率的一個(gè)操作方法,但是前提的條件是你對坐標(biāo)系需要做到比較靈活的應(yīng)用。不會因?yàn)檎{(diào)用出錯(cuò)導(dǎo)致撞機(jī)。
小菜:
說到大規(guī)模重復(fù)動作就不得不說碼垛這個(gè)指令了,偏移指令還需要進(jìn)行基礎(chǔ)點(diǎn)位的示教。但是機(jī)器人就是為了節(jié)約時(shí)間降低調(diào)試難度而升的。所以,當(dāng)你的動作基本都是重復(fù)且距離都是一致的情況,碼垛作為一個(gè)解決方法,不得不說它真的很省事。僅需要示教三到四個(gè)位置,輸入碼垛行數(shù)與列數(shù),運(yùn)行時(shí)候?qū)懭爰拇嫫鲾?shù)值,機(jī)器人會自動運(yùn)算進(jìn)行位置尋找。一個(gè)料架128個(gè)位置,你只需要進(jìn)行三到四個(gè)位置的對點(diǎn)工作。原先一天的工作量,半小時(shí)不到你就做完并驗(yàn)證好了。剩下時(shí)間就是放松身心了。不過碼垛要求精度的話你就祈禱加工商把精度做到位了,不然可能某個(gè)時(shí)候你撞機(jī)都不知道怎么撞得。
[ 此帖被陳惠鑫在2021-09-25 09:01重新編輯 ]
本帖最近評分記錄:
  • 下載積分:+1(宇文芳) 真誠感謝!
  • 下載積分:+1(qj_wgx) 感謝分享!
  • 下載積分:+1(lvpretend) 好貼好貼!
    宿遷電工
    級別: 論壇先鋒
    精華主題: 0
    發(fā)帖數(shù)量: 1029 個(gè)
    工控威望: 1169 點(diǎn)
    下載積分: 2836 分
    在線時(shí)間: 393(小時(shí))
    注冊時(shí)間: 2018-11-30
    最后登錄: 2024-11-12
    查看宿遷電工的 主題 / 回貼
    1樓  發(fā)表于: 2021-07-20 10:32
    四大家族中,用過ABB和KUKA,主要是搬運(yùn),研磨和點(diǎn)膠,焊接和噴涂沒搞過。使用感受如下。
    1.ABB的綜合性能要遠(yuǎn)遠(yuǎn)高于KUKA,ABB的功能指令都是開發(fā)好的,編程的時(shí)候可以直接用示教器編程調(diào)用,不需要硬記指令格式。而KUKA得需要用PC端軟件編寫。
    2.ABB的運(yùn)動流暢度要比KUKA好,在特別是在調(diào)試研磨程序的時(shí)候,機(jī)器人的第4,5,6軸切換要比KUKA靈活。
    3.ABB的示教器明顯比KUKA的要好,編程的時(shí)候,KUKA會出現(xiàn)莫名所以的BUG,這個(gè)時(shí)候就要進(jìn)入后臺windowsD的平臺進(jìn)行修改。而且KUKA的示教器容易損壞。
    4.ABB的缺點(diǎn),1.收費(fèi)的項(xiàng)目太多,諸如,多任務(wù)功能都得需要額外花錢買。2.程序保密性比較差。
    本帖最近評分記錄:
  • 下載積分:+1(宇文芳) 熱心助人!
  • 長三角地區(qū),PLC編程,工業(yè)機(jī)器人編程
    吸塑機(jī),軸承合套儀程序開發(fā)
    專業(yè)外協(xié)
     TEL:13815796487(微信同號)