#!/usr/bin/env python # -*- coding: utf-8 -*- """ # @Time : 2026/2/6 17:15 # @Author : reenrr # @File : error_code.py # @Desc : Modbus RTU错误码定义 """ from enum import IntEnum class ModbusError(IntEnum): """Modbus RTU操作错误码枚举(覆盖传送带电机所有场景)""" # 基础成功/通用错误 MODBUS_SUCCESS = 0 # 成功返回码(对齐C接口) MODBUS_ERR_UNKNOWN = 99 # 未知错误 # 串口相关错误 MODBUS_ERR_SERIAL = 1 # 串口错误(打开/关闭/配置失败) MODBUS_ERR_SERIAL_HANDLE = 10 # 串口句柄无效/未初始化/未打开 MODBUS_ERR_SERIAL_TIMEOUT = 5 # 串口通信超时 # 数据校验/转换错误 MODBUS_ERR_CRC = 2 # CRC校验错误 MODBUS_ERR_DATA_CONVERT = 11 # 十进制<->16位数据转换失败 MODBUS_ERR_DATA_FORMAT = 12 # 寄存器返回数据格式异常(长度/值非法) # 参数错误 MODBUS_ERR_PARAM = 4 # 参数错误(通用) MODBUS_ERR_PARAM_STATION = 13 # 从站地址非法(非1-247) MODBUS_ERR_PARAM_VALUE = 14 # 数值超出范围(如速度/加速度超出int16) MODBUS_ERR_PARAM_TYPE = 15 # 参数类型错误(如启停指令非布尔值) # 响应/寄存器操作错误 MODBUS_ERR_RESPONSE = 3 # 响应异常(从站无响应/响应非法) MODBUS_ERR_REG_WRITE = 20 # 写寄存器失败(返回非0码) MODBUS_ERR_REG_READ = 21 # 读寄存器失败(返回数据为空/长度不匹配) MODBUS_ERR_REG_ADDR = 22 # 寄存器地址非法 # 电机模式/控制错误 MODBUS_ERR_MOTOR_MODE = 30 # 电机模式设置失败 MODBUS_ERR_MOTOR_START_STOP = 31 # 电机启停指令执行失败 MODBUS_ERR_MOTOR_SYNC = 32 # 电机同步操作失败 @classmethod def get_error_desc(cls, err_code: int) -> str: """获取错误码对应的描述信息""" desc_map = { cls.MODBUS_SUCCESS: "操作成功", cls.MODBUS_ERR_UNKNOWN: "未知错误", cls.MODBUS_ERR_SERIAL: "串口错误(打开/关闭/配置失败)", cls.MODBUS_ERR_SERIAL_HANDLE: "串口句柄无效/未初始化/未打开", cls.MODBUS_ERR_SERIAL_TIMEOUT: "串口通信超时", cls.MODBUS_ERR_CRC: "CRC校验错误", cls.MODBUS_ERR_DATA_CONVERT: "十进制<->16位数据转换失败", cls.MODBUS_ERR_DATA_FORMAT: "寄存器返回数据格式异常", cls.MODBUS_ERR_PARAM: "参数错误(通用)", cls.MODBUS_ERR_PARAM_STATION: "从站地址非法(必须是1-247的整数)", cls.MODBUS_ERR_PARAM_VALUE: "数值超出范围(如int16:-32768~32767)", cls.MODBUS_ERR_PARAM_TYPE: "参数类型错误", cls.MODBUS_ERR_RESPONSE: "从站响应异常", cls.MODBUS_ERR_REG_WRITE: "写寄存器失败", cls.MODBUS_ERR_REG_READ: "读寄存器失败", cls.MODBUS_ERR_REG_ADDR: "寄存器地址非法", cls.MODBUS_ERR_MOTOR_MODE: "电机模式设置失败", cls.MODBUS_ERR_MOTOR_START_STOP: "电机启停指令执行失败", cls.MODBUS_ERR_MOTOR_SYNC: "电机同步操作失败" } return desc_map.get(err_code, f"未定义的错误码:{err_code}")