Files
wire_controlsystem/conveyor_controller/error_code.py

68 lines
3.2 KiB
Python
Raw Normal View History

#!/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}")