Files
wire_controlsystem/conveyor_controller/error_code.py

68 lines
3.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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