回覆列表
  • 1 # 老韓在東莞

    我是初冬,我來回答!!!

    ABB型號IRB1600的機械手碼垛程式怎麼編寫:

    我們首先要理解碼垛是什麼,碼垛其實就是機械手的基於一個基準點所做的偏移,思想就是滿幾進1。

    我們來解釋下,我們首先要定一個基準點,我們的下面所有的點位的偏移都是在基準點X Y Z方向上的偏移,如圖所示:以物體1的位置為基準點,當我們在X正方向以40mm的距離的偏移做偏移運動

    如圖在X方向我們假設擺放5個物體,我們這一行的空間就用完了,我們就需要在重新開始一行來擺放我們的物體,所以我們就是需要在Y方向進行偏移,偏移35mm的距離,來繼續擺放我們的物體。如下圖:

    假設當我們在Y方向上只能擺放4行物體時,當我們擺滿4行物體,最下面一層就已經被我們擺滿,這時候我們還要擺放就只能接著向上擺放,也就是往Z方向上偏移了。如下圖所示;

    當我們明白碼垛的含義之後,我們再來看下在ABB機械手中如何編寫碼垛程式。機器計算的方式和我們運算的剛好相反,機器是先計算層數,再計算行數,在計算在一列中的位置。如下

    PROC pallet1() !碼垛計算程式

    jishu1 := nproduct; !產品計數

    nx := 0; !列數

    ny := 0; ! 行數

    nz := 0; ! 層數

    dx := 0 - kuan; ! X方向偏移距離

    dy := chang; ! Y方向偏移距離

    dz := 0 - gao; !Z方向偏移距離

    WHILE jishu1 > 20 DO !程式會先計算產品有幾層,當產品滿足一層有20時,會在Z方向 jishu1 := jishu1 - 20; 加1。當產品不滿一層時,程式會繼續往下執行。

    nz := nz + 1;

    ENDWHILE

    WHILE jishu1 > 5 DO !計算產品有幾行,一行產品有5個, 當產品滿足5時.會在Y方向 jishu1 := jishu1 - 5; 加1.當產品不滿1行時,程式會繼續往下執行。

    ny := ny + 1;

    ENDWHILE

    WHILE jishu1 > 1 DO ! 最後計算產品在一列有幾個產品,也就是產品在X方向的位置

    jishu1 := jishu1 - 1;

    nx := nx + 1;

    ENDWHILE

    X := nx * dx; !X方向偏移的距離

    Y := ny * dy; !Y方向偏移的距離

    Z := nz * dz; !Z方向偏移的距離

    ENDPROC

    PROC quliao() ! 放料程式

    IF nproduct = 1 THEN

    fristpoint;

    ENDIF

    IF nproduct > 1 THEN

    pallet1; !碼垛計算程式

    SetDO DO11_CONTROL_1, 1;

    MoveJ Offs(q10,X,Y,Z + 200), v1000, z1, tool0\WObj:=wobj_shangxialiao; !抬高點

    MoveL Offs(q10,X,Y,Z), v300, fine, tool0\WObj:=wobj_shangxialiao; !放料點,偏移點位

    WaitTime 1;

    MoveL Offs(q10,X,Y,Z+200), v300, fine, tool0\WObj:=wobj_shangxialiao; !抬高點

    ENDIF

    ENDPROC

  • 中秋節和大豐收的關聯?
  • 軟體不相容會不會導致電腦自動關機啊?