jiateng_ws/utils/register_handlers.py

133 lines
4.4 KiB
Python
Raw Normal View History

import logging
from PySide6.QtCore import QObject, Signal
from .modbus_monitor import RegisterHandler
class WeightDataHandler(RegisterHandler):
"""寄存器D11处理器处理称重数据值"""
def __init__(self, callback=None):
super().__init__()
self.callback = callback
self.last_weight = None
def handle_change(self, value):
weight = value # 可能需要转换单位或格式,这里简单处理
logging.info(f"称重数据变化: {self.last_weight} -> {weight}")
self.last_weight = weight
# 如果有回调函数,则调用
if self.callback:
self.callback(weight)
class LabelSignalHandler(RegisterHandler):
"""寄存器D13处理器处理贴标信号"""
def __init__(self, callback=None):
super().__init__()
self.callback = callback
self.status_map = {
0: "无贴标",
1: "贴标完成"
}
def handle_change(self, value):
status = self.status_map.get(value, f"未知状态({value})")
logging.info(f"贴标信号: {status}")
# 如果有回调函数,则调用
if self.callback:
self.callback(value, status)
class MachineStatusHandlers(QObject):
"""机器状态相关寄存器(D20-D24)处理器集合"""
# 定义信号
loading_feedback_changed = Signal(int, str) # 上料信息反馈
unloading_feedback_changed = Signal(int, str) # 下料信息反馈
error_1_changed = Signal(int, str) # 故障信息1
error_2_changed = Signal(int, str) # 故障信息2
error_3_changed = Signal(int, str) # 故障信息3
def __init__(self):
super().__init__()
# 上料信息反馈状态映射
self.loading_feedback_map = {
0: "无操作",
1: "上料中",
2: "上料完成",
3: "上料错误"
}
# 下料信息反馈状态映射
self.unloading_feedback_map = {
0: "无操作",
1: "下料中",
2: "下料完成",
3: "下料错误"
}
# 故障信息映射 - 可以根据实际设备故障码进行扩展
self.error_map = {
0: "正常",
1: "急停触发",
2: "通信错误",
3: "伺服报警",
4: "气压不足",
5: "材料不足"
}
class LoadingFeedbackHandler(RegisterHandler):
"""寄存器D20处理器处理上料信息反馈"""
def __init__(self, handlers):
self.handlers = handlers
def handle_change(self, value):
feedback = self.handlers.loading_feedback_map.get(value, f"未知状态({value})")
logging.info(f"上料信息反馈: {feedback}")
self.handlers.loading_feedback_changed.emit(value, feedback)
class UnloadingFeedbackHandler(RegisterHandler):
"""寄存器D21处理器处理下料信息反馈"""
def __init__(self, handlers):
self.handlers = handlers
def handle_change(self, value):
feedback = self.handlers.unloading_feedback_map.get(value, f"未知状态({value})")
logging.info(f"下料信息反馈: {feedback}")
self.handlers.unloading_feedback_changed.emit(value, feedback)
class Error1Handler(RegisterHandler):
"""寄存器D22处理器处理故障信息1"""
def __init__(self, handlers):
self.handlers = handlers
def handle_change(self, value):
error_desc = self.handlers.error_map.get(value, f"未知错误({value})")
logging.info(f"故障信息1: {error_desc}")
self.handlers.error_1_changed.emit(value, error_desc)
class Error2Handler(RegisterHandler):
"""寄存器D23处理器处理故障信息2"""
def __init__(self, handlers):
self.handlers = handlers
def handle_change(self, value):
error_desc = self.handlers.error_map.get(value, f"未知错误({value})")
logging.info(f"故障信息2: {error_desc}")
self.handlers.error_2_changed.emit(value, error_desc)
class Error3Handler(RegisterHandler):
"""寄存器D24处理器处理故障信息3"""
def __init__(self, handlers):
self.handlers = handlers
def handle_change(self, value):
error_desc = self.handlers.error_map.get(value, f"未知错误({value})")
logging.info(f"故障信息3: {error_desc}")
self.handlers.error_3_changed.emit(value, error_desc)