修改传送带电机、舵机、达妙电机等相关接口

This commit is contained in:
2026-02-26 15:42:22 +08:00
parent 5c9946dfc7
commit 8d2e91b8b3
10 changed files with 1642 additions and 331 deletions

View File

@ -22,7 +22,7 @@ class DMMotorController:
"""
初始化电机控制器
:param slave_id: 从机ID默认0x01
:param master_id: 主机ID默认0x11不要设为0x00
:param master_id: 主机ID默认0x11
:param port: 串口端口默认COM6
:param baudrate: 波特率默认921600
"""
@ -40,7 +40,6 @@ class DMMotorController:
# 初始化电机和串口
self.init_motor()
def init_motor(self):
"""初始化电机和串口"""
try:
@ -112,8 +111,8 @@ class DMMotorController:
:param v_desired: 目标速度rad/s, 范围[-30, 30]
"""
try:
# 归零 + 发送运动指令
self.motor_control.set_zero_position(self.motor)
# 发送运动指令
# self.motor_control.set_zero_position(self.motor)
self.motor_control.control_Pos_Vel(self.motor, p_desired, v_desired)
time.sleep(0.1)
print(f"✅ 位置-速度控制:位置={p_desired}rad | 速度={v_desired}rad/s")
@ -135,7 +134,10 @@ class DMMotorController:
return False
def _get_mode_name(self, control_type):
"""获取模式名称"""
"""
获取模式名称
:param control_type: 控制模式Control_Type.POS_VEl/VEL/MIT
"""
# 1.定义[枚举值--中文名称]的映射字典
mode_map = {
Control_Type.POS_VEL: "位置-速度模式",
@ -145,15 +147,55 @@ class DMMotorController:
# 2.根据控制模式值获取中文名称 字典方法
return mode_map.get(control_type, "未知模式") # “未知模式”默认值
def get_position(self):
self.refresh()
return self.motor.getPosition()
def save_param(self):
"""保存所有电机参数"""
try:
if self.motor is None:
raise ValueError("电机实例为None无法保存参数")
def refresh(self):
self.motor_control.refresh_motor_status(self.motor)
self.motor_control.save_motor_param(self.motor)
print("电机参数保存成功")
except Exception as e:
print(f"❌ 电机参数保存失败:{str(e)}")
def refresh_motor_status(self):
"""获得电机状态"""
try:
if self.motor is None:
raise ValueError("电机实例为None无法保存参数")
self.motor_control.refresh_motor_status(self.motor)
print("电机状态刷新成功")
except Exception as e:
print(f"❌ 电机状态刷新失败:{str(e)}")
def get_position(self):
"""获取电机位置"""
try:
if self.motor is None:
raise ValueError("电机实例为None无法保存参数")
position = self.motor.getPosition()
print(f"获取电机位置成功,当前位置: {position}")
return position
except Exception as e:
print(f"获取电机位置失败: {str(e)}")
def change_limit_param(self, motor_type, pmax, vmax, tmax):
self.motor_control.change_limit_param(motor_type, pmax, vmax, tmax)
"""
改变电机的PMAX VMAX TMAX
:param motor_type: 电机的类型
:param pmax: 电机的PMAX
:param vmax: 电机的VMAX
:param tmax: 电机的TAMX
"""
try:
self.motor_control.change_limit_param(motor_type, pmax, vmax, tmax)
print(
f"电机限位参数修改成功 | 类型: {motor_type} | PMAX: {pmax} | VMAX: {vmax} | TMAX: {tmax}"
)
except Exception as e:
print(f"修改电机限位参数失败: {str(e)}")
def __del__(self):
"""析构函数:确保程序退出时失能电机、关闭串口"""
@ -168,7 +210,6 @@ class DMMotorController:
except Exception as e:
print(f" 析构函数执行警告:{str(e)}")
if __name__ == '__main__':
# 1.创建电机控制器实例
motor_controller = DMMotorController(