mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2025-12-15 13:44:39 +00:00
59 lines
1.9 KiB
Python
59 lines
1.9 KiB
Python
|
|
import logging
|
|
from xyz_stepper_driver import (
|
|
ModbusRTUTransport,
|
|
ModbusClient,
|
|
XYZStepperController,
|
|
MotorAxis,
|
|
)
|
|
|
|
logger = logging.getLogger("XYZStepperCommTest")
|
|
logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s")
|
|
|
|
|
|
def test_xyz_stepper_comm():
|
|
"""仅测试 Modbus 通信是否正常(并输出寄存器数据,不做电机运动)"""
|
|
port = "/dev/ttyUSB1"
|
|
baudrate = 115200
|
|
timeout = 1.2 # 略长避免响应被截断
|
|
|
|
logger.info(f"尝试连接 Modbus 设备 {port} ...")
|
|
transport = ModbusRTUTransport(port, baudrate=baudrate, timeout=timeout)
|
|
transport.open()
|
|
|
|
client = ModbusClient(transport)
|
|
ctrl = XYZStepperController(client)
|
|
|
|
try:
|
|
logger.info("✅ 串口已打开,开始读取三个轴状态(打印寄存器内容) ...")
|
|
for axis in [MotorAxis.X, MotorAxis.Y, MotorAxis.Z]:
|
|
addr = ctrl.axis_addr[axis]
|
|
|
|
try:
|
|
# # 在 get_status 前打印原始寄存器内容
|
|
# regs = client.read_registers(addr, ctrl.REG_STATUS, 6)
|
|
# hex_regs = [f"0x{val:04X}" for val in regs]
|
|
# logger.info(f"[{axis.name}] 原始寄存器 ({len(regs)} 个): {regs} -> {hex_regs}")
|
|
|
|
# 调用 get_status() 正常解析
|
|
status = ctrl.get_status(axis)
|
|
logger.info(
|
|
f"[{axis.name}] ✅ 通信正常: steps={status.steps}, speed={status.speed}, "
|
|
f"current={status.current}, status={status.status.name}"
|
|
)
|
|
|
|
except Exception as e_axis:
|
|
logger.error(f"[{axis.name}] ❌ 通信失败: {e_axis}")
|
|
|
|
|
|
except Exception as e:
|
|
logger.error(f"❌ 通讯测试失败: {e}")
|
|
|
|
finally:
|
|
transport.close()
|
|
logger.info("🔌 串口已关闭")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
test_xyz_stepper_comm()
|