• 行業新聞
    當前位置:首頁 > 新聞動態 > 行業新聞

    運動控制卡應用常見位置偏差來源分析與解決

    所屬分類:行業新聞 發表日期:2017-04-10 文章來源:

     研控MCC系列運動控制卡使用方便,功能可靠,一般來說是不會在使用過程中產生位置偏差的。但是在長期客戶服務的過程中我們也遇到了一些因使用不當造成的位置偏差,如果沒有豐富的經驗,往往會判斷為運動控制卡的問題,而實際上真正的原因是在使用過程中有一些軟硬件問題未加以注意造成的。不管使用運動控制卡或其他類別的運動控制產品,如果對這些問題不加注意,它往往會在不經意間出現,引起機械運動誤差,造成損失。而當你在實驗室中針對它進行測試時,又因為參數和使用環境的變化,問題卻不能重現,所以非常難以捕捉。本文主要針對這幾個最常見的疑難問題進行描述、分析、并提出一定的解決方法。


    第一節 首先應該做什么

          在客戶提出使用控制卡出現了位置偏差的時候,首先應該做的就是定位偏差來源,也就是定位“究竟是控制卡的問題,還是電機和機械的問題”?這是非常關鍵的定位思路。

    運動控制卡,運動控制器,運動控制卡品牌-深圳研控科技


     1.最關鍵的測試點

           原因在于,“軟件和控制卡的問題”的尋找定位和“電機和機械的問題”的尋找定位是完全不同的方式,如果首先不區分好是哪一個模塊的問題就直接深入到細節上,往往會找錯方向。

           最常見的定位工具是伺服驅動器的“顯示指令位置”功能,如果問題軸所用電機正好是伺服電機,那就非常方便了。如果使用的是步進電機,則可能需要外接一個伺服電機進行測試。其他如示波器、邏輯分析儀也可以進行測試,但是不如伺服電機方便。

    測試方法非常簡單,就是首先計算出某一工位處,控制卡“按理應該發送多少個脈沖”,然后觀察伺服驅動器的顯示,是否“接受到了同樣數量的脈沖”。如果兩個數量一致,并且長期工作后(過程中沒有借助傳感器的復位動作,如果有復位動作則是另一回事,后文有詳述),還是精確一致的話,就說明軟件和運動控制卡沒有問題,需要在電機和機械上找問題。相反,如果運行一段時間后,到達指定工位時,控制卡“理應發送的脈沖數”與“伺服電機接受的脈沖數”不相同了,并且有誤差越來越大或者誤差大小隨機變化的情況,則可以判斷是下文中提到的“疑難問題”之一。


    第二節 取整誤差累計

    取整誤差累計是因為上位機控制軟件在設計時,全部采用“相對位置運動”功能,在計算相對位置脈沖數時,由于取整誤差造成的小數位脈沖數丟棄,而當正向丟棄數和反向丟棄數不一至時就會造成微小的位置偏差,經過長期運行反復積累后,此偏差逐漸會發展到肉眼可見的程度。舉例如下:

    某客戶在數控平面鉆孔機上采用了運動控制卡,工位和運動方式如下:

    運動控制卡,運動控制器,運動控制卡品牌-深圳研控科技


    如圖所示,鉆頭從原點出發,到達工位A開始鉆第一個孔,然后向右逐個鉆孔,孔之間橫向間距10mm,鉆到工位B后,X方向橫向平移,同時Y方向移動,到達工位C。

    程序員是這樣設計程序的:

    float ValueX = 500.19;                 //脈沖當量,500.19個脈沖機械走1mm

    float MMTargetX=0;                          //運行目標相對位置

    long PulseTargetX=0;                         //運行目標相對位置


    MMTargetX=10;                             //橫向運行距離10mm

    PulseTargetX= (long) (MMTargetX * ValueX);     //得到運行脈沖數5001

    YK_start_s_move(XAxisNum, PulseTargetX);     //發指令讓X軸正向走5001個脈沖

    //等待運行結束


    MMTargetX=10;                             //橫向運行距離10mm

    PulseTargetX= (long) (MMTargetX * ValueX);     //得到運行脈沖數5001

    YK_start_s_move(XAxisNum, PulseTargetX);     //發指令讓X軸正向走5001個脈沖

    //等待運行結束


    ……運行10次


    MMTargetX=-100;                            //橫向運行距離-100mm

    PulseTargetX= (long) (MMTargetX * ValueX);     //得到運行脈沖數-50019

    YK_start_s_move(XAxisNum, PulseTargetX);     //發指令讓X軸反向走50019個脈沖

    //等待運行結束 

    從上面的程序很容易看出來,正向運行時,總共走了5001×10=50010個脈沖,而反向運行時,走了50019個脈沖。雖然看起來每次正向運行了10mm,運行10次后,反向運行了100mm,所以在工位CX軸坐標應該跟工位A一致,但是實際上由于正向運行時取整誤差舍去了100.9個脈沖,而反向運行時則沒有因為取整誤差而舍去脈沖,所以一來一回就會有9個脈沖的累計。

    對于一般的機械設備來說,9個脈沖可能還看不出來位置的偏差,但是隨著反復的加工,如果沒有借助傳感器的復位動作的話,這個誤差會逐漸隨機積累,位置會越來越偏,最終導致加工失敗。

    這個問題的出現純屬軟件工程師經驗不足。如果想要在程序設計時避免此問題,有以下方法可以解決。

    方法一:避免在整個加工過程中全部使用“相對位置運動”,在一個加工流程中添加一定量的,至少一條絕對運動指令,就可以消除掉取整誤差的帶來的積累偏差。

    如在上述工序中,在工位A處記錄X軸坐標,然后將從工位B到工位C的移動改用“絕對位置移動”指令。在工位B時,運動控制卡會自動讀取當前的實際坐標,與工位A處的坐標進行對比,然后準確地走出50010個脈沖,這樣一來,從工位A到工位B的所有取整誤差就全部糾正過來了。

    方法二:增加復位動作。

    每個工件加工完成后利用傳感器進行一次原點復位動作,不僅能消除取整誤差的積累,而且還能消除機械誤差的積累,也是不錯的選擇。

    除了上述的“往返”運動,有些單向送料系統,如制袋機類,在重復進行單方向運行時,由于取整誤差的積累也會引起加工問題。而此類系統又無法進行復位或者插入“絕對位置運動”指令。這種情況下推薦在編程時采用一種簡單實現的“四舍五入法”,具體方法如下。

    在計算指令脈沖數時,在浮點數的結果后面+0.5,再取整,以上文中的程序為例:

    MMTargetX=10;                                 //橫向運行距離10mm

    PulseTargetX= (long) (MMTargetX * ValueX+0.5);     //得到運行脈沖數

    YK_start_s_move(XAxisNum, PulseTargetX);         //發指令讓X軸正向運行

    在計算指令脈沖數時采用了此方法可以減小取整誤差帶來的干擾,但是并不能消除,這是針對無法進行上述兩種方法時的折衷辦法。不過由于簡單易行,推薦給軟件工程師在計算脈沖數時使用。

     

    第三節  換向時第一個脈沖的運動方向誤差

    在試機的過程中出現過這樣的問題:當使用某一品牌的驅動器,運行就非常準確;而換用另一品牌的驅動器,走一些固定的動作時就會越走越偏。而容易走偏的驅動器換了另一家的控制器,就又好了。

    問題的原因出現在方向信號提前不足。

    當前大部分驅動器是按周期掃描鎖存方向信號,當捕捉到PULSE的有效信號沿時,再去根據鎖存的方向信號進行運動,在讀取鎖存方向信號到判斷PULSE信號有跳變之間有一個偏差τ。而對于PULSE的有效邊沿,有些驅動器是上升沿有效,而有些驅動器是下降沿有效。文中將上述類型的驅動器簡稱為先方向上升沿類型和先方向下降沿類型驅動器。

          也有一些國內不太知名公司提供的驅動器,采取這樣的方式:當捕捉到PULSE的有效信號沿時,再去即時讀取方向信號,判斷運動方向。在讀取到有效信號沿后,距離讀取方向信號也有一個時間偏差τ。下文中將此類驅動器稱之為上升沿后方向和下降沿后方向類型驅動器。這種情況比較少見,在此不做討論。


    運動控制卡,運動控制器,運動控制卡品牌-深圳研控科技


                            圖3先方向上升沿型驅動器                                                                    4 先方向下降沿型驅動器

    不同公司的驅動器,甚至同一公司的不同型號驅動器,時間τ都不一樣。有些驅動器比如研控模擬驅動器,這個時間非常??;但是對于新型的數字型驅動器,由于采樣周期的原因,此周期長達125μS,這就給控制信號提出了要求:

    方向信號必須要早于脈沖信號到位,最少要早τ秒,否則會引起換向后,第一個起跳脈沖的運動方向錯誤。

    當然,即使滿足不了此要求,對于普通的運動來說,如果發生了這類錯誤無非就是起跳時少了2個脈沖,一般情況下不會影響設備精度。但是當設備被要求反復折返的啟停運動時,就有可能引起誤差的積累。但是同時,因為此誤差類似于機械間隙,只出現在換向后的第一次運動時;而大部分情況下,正反運動會對此誤差進行抵消。因此,此情況只會帶來微小的誤差,不會產生太大的影響,但在對精度要求非常高的場合需要注意這個問題。

    規避方法:查看驅動器產品說明書,大部分驅動器都會對此時間τ進行規定。而研控MCC1410C的方向提前時間受起跳速度影響,最短情況下105μS;但只要將起跳速度降到100KHz以下,方向信號的提前時間就到了毫秒級別,不會產生上述錯誤的情況。


    第四節 原點復位誤差

    有的客戶反饋,在進行復位動作的時候,就會產生位置偏差。

    一般來說,我們推薦客戶在設計工序時,每完成一整套加工步驟后,進行一次復位動作,這樣可以消除積累誤差,包括機械打滑誤差、齒輪間隙誤差和驅動器少量丟步造成的誤差。但復位動作的運動參數設置、復位動作順序設置、傳感器的選擇和安裝位置、以及伺服參數設置的恰當與否都會影響復位精度。當客戶發現復位會導致運行位置不準時,客戶通常會首要考慮排除傳感器靈敏度、動作是否過猛等,因此問題往往不大,本節主要描述當伺服參數設置不當這一較少能考慮到的情況會引起的復位偏差。當使用伺服電機時,如果參數調整不當,剛性太弱,會造成該軸原點復位時的誤差。

    總的來說,伺服是一個必須要考慮其滯后特性的執行部件。當設置伺服參數時,剛性越小,運行時的實際滯后就越大。直觀上看起來就是“軟軟的,懶懶的”,指令脈沖開始發送了,它才會慢慢動起來;指令脈沖已經發完不發了,它還要往前走一陣才能停下來。這種特性跟它的閉環控制特性有一定的關系。

    當單軸運動進行時,這種滯后通常不會影響生產,甚至覺察不出來,因為雖然運動滯后,但是最終還是會準確到位。但是當進行插補運動或者原點復位時就會產生很大的影響。

    比如當系統復位時,當傳感器被觸發,發出限位信號給控制卡,控制卡馬上停止了脈沖的發送。但是此時伺服電機由于反應的滯后,還是會往前走一陣,這一段距離就造成了偏差。

    解決的方法就是:

    1.在系統穩定沒有太大沖擊的情況下盡量調高伺服的剛性;

    2.在不影響生產效率的情況下降低復位運動的速度,或者采取二次復位的方法,第一次高速復位,到位后,再低速向回找原點信號。

     

    第五節    其他情況

    情況一:驅動電壓/電流不足

    當客戶采用一路控制信號帶多路驅動器時,可能會出現驅動電流不足的情況,繼而導致驅動器無法順利獲取信號。

    研控運動控制卡多采用AM26C31芯片來產生驅動電流,限流電阻20歐姆,最大電流150mA,因此不推薦采用一路運動控制信號帶多路驅動器。如果必須采用這種接法,則最多帶兩臺驅動器,如果超過此數值可能會造成芯片過熱燒壞或者信號丟失等情況;同時要注意,不保證此種接法的運動穩定性。

     

    情況二:限位信號干擾/誤碰

        客戶采用非研控生產的運動控制卡時,可能會隨機地出現設定的運動距離還沒走到,就停下來的問題。甚至會帶來撞機等嚴重的情況。這種偏差會非常大,隨機無規律地出現,一次出現馬上就造成運行的混亂。

           這種情況往往是某軸在運行時,該軸的“限位信號”受到了干擾,令板卡認為應該停止該軸的動作。

    對于這種情況的判定要從軟件上進行抓取,當調用函數判斷一個軸是否停止的時候,如果返回值不是“脈沖發送完停止”,而是“未知異常停止”或者“遇到限位點停止”,就基本可以定位是限位點受到了干擾。然后可以將受到干擾的軸的限位信號從接線板上斷開,看看是否還有此情況產生。

    針對此問題,需要從硬件上查找干擾源、干擾傳遞的通路。常規的濾波,分開供電,屏蔽,重新布線等方法都可以試一下。不過最有效的,是換用研控的運動控制卡產品,具備強大的抗干擾特性(濾波參數可設置),能夠根除此類問題。

     

     

    報告人:余挺

    報告時間:2017-3-24





    激色貓視頻在線看