瀏覽單個文章
山賊
Major Member
 

加入日期: Jun 2002
文章: 125
引用:
作者老柏(第四)
好說
目前架構是這樣,驅動器啟動龍門同動模式,軸卡就只能控一個軸(兩個馬達當一個用),在龍門同動模式下只要左右ENCODE誤差超過設定值會自動跳掉

問題是發現用過一段時間後還是會斜掉,原因不明,我的推測是他在非啟動時間(龍門同動還沒SERVOR ON之前)被其他機構推到或頂到,但確切原因我還是沒找到
以往龍門同動校正我都是在馬達斷電狀態先把一邊靠到底(用手轉聯軸器),另一邊用手轉聯軸器直到感覺最鬆的狀態

所以我想說寫一個程式,繞過軸卡直接控制驅動器
->暫時性解除龍門同動模式
->單軸驅動器以低扭力限制模式往復移動一次(兩端都移動直到卡住)
->邊移動邊紀錄當時的馬達出力、座標位置
->計算出馬達出力最低點的座標位置(這就是這一篇主題我要問的數學)
->叫馬達移動到扭力最低點的座標位置

至於這個程式可以包進去你上面說的執行程序中也沒問題


1. 就是因為使用兩組馬達在平行雙軸上運行, 只要兩組馬達或驅動機構本體直徑有誤差, 時間久了兩端運行累積距離就會不一樣進而造成歪斜..

2. 被其它機構影響也不無可能, 譬如運行平台上還有其它機械機構 (此處簡稱為 A ) 在運行, 因為慣性使然, 該 A 機構運行時所產生的反作用力最終是由雙軸的兩個馬達機構承擔, 若兩個馬達機構所承擔的軸向作用力大小不同, 難保不會造成歪斜..

3. 既然您是用手動方式, 先將一軸靠到底以進行歸零定位, 為何不將另一軸也靠到底便完成歸零定位? 您只要確定兩個底是在同一軸向位準即可; 而所謂的底, 可以是光電介面, 也可以是機械檔板, 看您自己方便..

4. 若每次歪斜的角度與距離差距都一樣, 那麼您只要再手動校準一次, 便可以量出校準時, 需要移動該單一軸的方向與距離量, 以後只要偵測到歪斜程度超過容許值, 便進行驅動該單軸往該方向與所需距離量即可..

5. 若每次歪斜的角度與距離都不同, 那麼在程式上可以這麼做:

5a. 只要驅動單軸即可.
5b. 您有提到可以記錄扭力輸出值, 那麼先進行單一方向的單軸驅動, 若偵測到扭力增加, 代表方向錯誤, 便往另一方向驅動即可..
5c. 您可以只律定扭力低於某一值, 便完成校準..
5d. 或是偵測扭力增加時, 便往另一方向進行驅動, 此時扭力降低, 待偵測到扭力變化再度呈現由低變高, 從這些記錄裡, 便可以獲得扭力最小值的點..
5e. 因為 A/D 轉換會有變化低於最低解析量的問題, 您可以單純採用兩方向扭力由低變高的兩個位置的中心點為最低扭力點, 或是它們斜率的交叉點為最低扭力點也可, 這是數值方法中, 對非線性方程式求根的兩個基本技巧的運用..
5f. 程式上需有一計數記時器, 若自動校準超時, 代表卡死, 須尋求人工協助..

我想以上方式, 應該很容易解決您目前所遇到的問題..
 
舊 2014-06-28, 02:37 PM #22
回應時引用此文章
山賊離線中