單位轉換

為了方便開發工程師在開發應用程式時使用慣用的單位進行程式設計,KINGSTAR 提供了單位轉換功能,可用來將驅動器使用的單位轉換成使用者單位。KINGSTAR 子系統中的預設單位皆為 CAN 標準規範單位,例如:

- 位置/距離:脈衝(編碼器計數)
- 速度:脈衝/秒
- 加速度/減速度:脈衝/秒2
- 加加速度:脈衝/秒3
- 加加加速度:脈衝/秒4

透過 KINGSTAR 單位轉換功能,您可以將上述單位轉換成您偏好的單位。例如,您可以將軸的位置單位從脈衝(編碼器計數)轉換為角度;或將加速度和加加速度的單位轉換為秒。舉例而言,假設您的軸設定為 1000 脈衝轉一圈,此時若將單位從脈衝轉換為角度,由於一圈為 360 度,因此當指令為 360 度時,軸實際上走了 1000 脈衝;當指令為 180 度時,軸實際上走了 500 脈衝。

由於 KINGSTAR 單位轉換功能是方便開發工程師在編寫程式時使用其慣用的單位進行編寫,因此並不會改變驅動器原先的設定。以上例而言,當位置單位從原來的脈衝轉換為角度後,驅動器使用的位置單位仍為脈衝。

以下示意圖為驅動器在直接位置 (Direct Position) 模式下以週期同步位置模式 (CSP) 運行的局部架構圖,由左而右分為三個區域,分別為控制器、驅動器及馬達。當控制器下達指令給驅動器後,驅動器即負責運動規劃並控制馬達。KINGSTAR 單位轉換功能僅發生在控制器區域,僅對於控制器下達的指令本身有效,不會影響驅動器內部如電子齒輪比的設定,電子齒輪比可透過 SDO 進行變更。

您可使用 API 或 KINGSTAR 設定工具 進行單位轉換。

使用 API 進行單位轉換:

  1. 使用 SetAxisCountsPerUnit 或 SetAxisSecondEncoderCountsPerUnit 將軸使用的計數單位轉換為使用者單位。
    • SetAxisCountsPerUnit:設定轉換比率以將軸使用的計數(脈衝)單位轉換為使用者定義的單位。
    • SetAxisSecondEncoderCountsPerUnit:設定轉換比率以將軸的第二編碼器所使用的計數(脈衝)單位轉換為使用者定義的單位。
  2. 使用 EnableAxisUnitConversion 以啟用步驟 1 中設定的轉換比率。
  3. 更新 PID 及運動參數以匹配使用者定義的單位。需在軸停用的狀態下才可進行此設定。

範例

以下範例為將軸的位置單位從脈衝轉換為角度,接著啟用單位轉換功能。

SetAxisCountsPerUnit(TargetAxis, 1000, 360, FALSE);
EnableAxisUnitConversion(TargetAxis, TRUE);

注意:關於單位轉換的範例,您亦可參考 KINGSTAR 範例程式,如 Motion 範例 中的 “Motion 參數、單位轉換及模擬 I/O 模組" 或是 使用者插補範例 中的 “轉換軸單位”、“啟用單位轉換” 與 “更新 PID 與運動參數”。

 

使用 KINGSTAR 設定工具 進行單位轉換:

  1. 開啟 KINGSTAR 設定工具,在 專案設定 (Project Configuration) 窗格中點選一個軸。
  2. 在右方窗格中,點擊設定 (Configure) 並勾選單位轉換 (Unit conversion) 以啟用單位轉換。
  3. 在分子 (Numerator) 及分母 (Denominator) 欄位中輸入值以將驅動器單位轉換為使用者單位。
    • 分子 (Numerator):若裝置為編碼器,分子通常是編碼器的解析度。
    • 分母 (Denominator):若使用角度,則值為 360,因旋轉一圈為 360 度。
  4. 更新 PID 及運動 (設定 > Motion) 參數以匹配使用者定義的單位。需在軸停用的狀態下才可進行此設定。