2017-06-20 16:20:47

  研控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個脈衝

//等待運行結束

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

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

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

第1頁  第2頁  第3頁  

http://www.autooo.net/papers/paper/2017-06-20/172345.html