Skip to main content

玄雅通信接口SDK

玄雅通信接口SDK(XuanYa_Comm.py)是Gloria-M系列机械臂的Python通信库,提供了电机控制的高级封装接口。

1. 概述

MotorComm 类是基于DM电机CAN通信协议的高级封装,提供了便于使用的电机状态读取和控制接口。该类主要用于:

  • 读取电机位置、速度和扭矩等状态信息
  • 提供不同单位的数据转换(弧度/角度)
  • 支持百分比位置表示(0-100%)

2. 主要功能

2.1 位置读取

getPosRad(Motor)

获取电机位置(弧度)

pos_rad = motor_comm.getPosRad(motor1)  # 返回弧度值

getAngle(Motor)

获取电机位置(度)

pos_deg = motor_comm.getAngle(motor1)  # 返回角度值(度)

getAngle100(Motor)

获取电机位置百分比(0-100%)

pos_percent = motor_comm.getAngle100(motor1)  # 返回0-100的百分比

说明:

  • 基于 gloria_max = 2.9 弧度作为100%位置
  • 自动进行范围限制:
    • pos ≤ 0 → 返回 0.0%
    • pos ≥ 2.9 → 返回 100.0%
    • 0 < pos < 2.9 → 返回线性映射值

2.2 速度读取

getVelRad(Motor)

获取电机速度(弧度/秒)

vel_rad = motor_comm.getVelRad(motor1)  # 返回 rad/s

getVel(Motor)

获取电机速度(度/秒)

vel_deg = motor_comm.getVel(motor1)  # 返回 °/s

转换公式: 度/秒 = 弧度/秒 × (30.0 / π)

2.3 扭矩读取

getTorque(Motor)

获取电机扭矩(Nm)

torque = motor_comm.getTorque(motor1)  # 返回扭矩值 (Nm)

2.4 温度读取

getTMos(Motor)

获取电机MOS管温度

temp_mos = motor_comm.getTMos(motor1)  # 返回MOS管温度

getTRoto(Motor)

获取电机转子温度

temp_rotor = motor_comm.getTRoto(motor1)  # 返回转子温度

2.5 工具函数

rad_to_angle(rad)

弧度转角度的工具函数

angle = motor_comm.rad_to_angle(1.57)  # 1.57弧度 → 90度

3. 使用示例

3.1 基础初始化

from XuanYa_Comm import MotorComm
from DM_CAN import Motor, DM_Motor_Type

# 创建通信对象
motor_comm = MotorComm()

# 创建电机对象
motor1 = Motor(DM_Motor_Type.DM4310, 0x02, 0x202)

3.2 状态监控示例

# 实时监控电机状态
while True:
# 获取位置信息
pos_percent = motor_comm.getAngle100(motor1)
pos_angle = motor_comm.getAngle(motor1)

# 获取速度信息
velocity = motor_comm.getVel(motor1)

# 获取扭矩信息
torque = motor_comm.getTorque(motor1)

# 获取温度信息
temp_mos = motor_comm.getTMos(motor1)
temp_rotor = motor_comm.getTRoto(motor1)

print(f"位置: {pos_percent:.1f}% ({pos_angle:.1f}°)")
print(f"速度: {velocity:.2f}°/s")
print(f"扭矩: {torque:.3f}Nm")
print(f"温度: MOS={temp_mos}°C, 转子={temp_rotor}°C")

time.sleep(0.1)

4. 重要参数

4.1 位置范围

  • 最大位置: gloria_max = 2.9 弧度 (≈166.2度)
  • 百分比映射: 0弧度 → 0%, 2.9弧度 → 100%

4.2 单位转换

  • 角度转换: 弧度 × (180/π) = 度
  • 速度转换: 弧度/秒 × (30/π) = 度/秒

5. 注意事项

  1. 依赖关系: 该模块依赖于 DM_CAN.py 模块
  2. 串口配置: 默认波特率为921600
  3. 温度监控: 建议定期监控MOS管和转子温度,避免过热
  4. 位置限制: 使用 getAngle100() 可以直观地了解电机位置百分比
  5. 异常处理: 在实际应用中应添加适当的异常处理机制

6. 故障排除

6.1 常见问题

  • 通信失败: 检查串口连接和波特率设置
  • 位置读取异常: 确认电机已正确使能
  • 温度过高: 检查电机负载和散热情况

6.2 调试建议

  • 使用 getAngle100() 函数便于观察位置变化
  • 监控温度信息预防过热保护
  • 检查速度和扭矩是否在合理范围内

使用建议

建议在实际应用中结合电机控制和状态监控功能,实现完整的闭环控制系统。