单位转换
为了方便开发工程师在开发应用程式时使用惯用的单位进行程式设计,KINGSTAR 提供了单位转换功能,可用来将驱动器使用的单位转换成使用者单位。KINGSTAR 子系统中的预设单位皆为 CAN 标准规范单位,例如:
- 位置/距离:脉冲(编码器计数)
- 速度:脉冲/秒
- 加速度/减速度:脉冲/秒2
- 加加速度:脉冲/秒3
- 加加加速度:脉冲/秒4
透过 KINGSTAR 单位转换功能,您可以将上述单位转换成您偏好的单位。例如,您可以将轴的位置单位从脉冲(编码器计数)转换为角度;或将加速度和加加速度的单位转换为秒。举例而言,假设您的轴设定为 1000 脉冲转一圈,此时若将单位从脉冲转换为角度,由于一圈为 360 度,因此当指令为 360 度时,轴实际上走了 1000 脉冲;当指令为 180 度时,轴实际上走了 500 脉冲。
由于 KINGSTAR 单位转换功能是方便开发工程师在编写程式时使用其惯用的单位进行编写,因此并不会改变驱动器原先的设定。以上例而言,当位置单位从原来的脉冲转换为角度后,驱动器使用的位置单位仍为脉冲。
以下示意图为驱动器在直接位置 (Direct Position) 模式下以周期同步位置模式 (CSP) 运行的局部架构图,由左而右分为三个区域,分别为控制器、驱动器及马达。当控制器下达指令给驱动器后,驱动器即负责运动规划并控制马达。KINGSTAR 单位转换功能仅发生在控制器区域,仅对于控制器下达的指令本身有效,不会影响驱动器内部如电子齿轮比的设定,电子齿轮比可透过 SDO 进行变更。
您可使用 API 或 KINGSTAR 设定工具 进行单位转换。
使用 API 进行单位转换:
- 使用 SetAxisCountsPerUnit 或 SetAxisSecondEncoderCountsPerUnit 将轴使用的计数单位转换为使用者单位。
- SetAxisCountsPerUnit:设定转换比率以将轴使用的计数(脉冲)单位转换为使用者定义的单位。
- SetAxisSecondEncoderCountsPerUnit:设定转换比率以将轴的第二编码器所使用的计数(脉冲)单位转换为使用者定义的单位。
- 使用 EnableAxisUnitConversion 以启用步骤 1 中设定的转换比率。
- 更新 PID 及运动参数以匹配使用者定义的单位。需在轴停用的状态下才可进行此设定。
- 在速度模式下,请使用 SetAxisVelocityPid 更新 PID。
- 在扭矩模式下,请使用 SetAxisTorquePid 更新 PID。
- 使用 SetAxisMotionProfile 配置轴的运动设定。
范例
以下范例为将轴的位置单位从脉冲转换为角度,接著启用单位转换功能。
SetAxisCountsPerUnit(TargetAxis, 1000, 360, FALSE); EnableAxisUnitConversion(TargetAxis, TRUE);
注意:关於单位转换的范例,您亦可参考 KINGSTAR 范例程式,如 Motion 范例 中的 “Motion 参数、单位转换及模拟 I/O 模组" 或是 使用者插补范例 中的 “转换轴单位”、“启用单位转换” 与 “更新 PID 与运动参数”。
使用 KINGSTAR 设定工具 进行单位转换:
- 开启 KINGSTAR 设定工具,在 专案设定 (Project Configuration) 窗格中点选一个轴。
- 在右方窗格中,点击设定 (Configure) 并勾选单位转换 (Unit conversion) 以启用单位转换。
- 在分子 (Numerator) 及分母 (Denominator) 栏位中输入值以将驱动器单位转换为使用者单位。
- 分子 (Numerator):若装置为编码器,分子通常是编码器的解析度。
- 分母 (Denominator):若使用角度,则值为 360,因旋转一圈为 360 度。
- 更新 PID 及运动 (设定 > Motion) 参数以匹配使用者定义的单位。需在轴停用的状态下才可进行此设定。