68 lines
3.2 KiB
Python
68 lines
3.2 KiB
Python
#!/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}") |