feat: 修复急停信号异常

This commit is contained in:
zhu-mengmeng 2025-07-01 10:15:57 +08:00
parent ce8483d298
commit 7457cd8b4c
4 changed files with 42 additions and 14 deletions

View File

@ -90,6 +90,6 @@
} }
}, },
"electricity": { "electricity": {
"auto_start": true "auto_start": false
} }
} }

Binary file not shown.

View File

@ -2260,10 +2260,10 @@ class MainWindow(MainWindowUI):
@Slot(int, str) @Slot(int, str)
def handle_error_1(self, error_code, error_desc): def handle_error_1(self, error_code, error_desc):
"""机器人视觉报警""" """机器人视觉报警"""
logging.info(f"[处理] 机器人视觉报警: {error_desc}") logging.info(f"[处理] 机械手报警: {error_desc}")
from utils.register_handlers import Error1Handler from utils.register_handlers import Error1Handler
error_handler = Error1Handler() error_handler = Error1Handler()
detailed_desc = error_handler.error_map.get(error_code, f"器人视觉报警-{error_code}") detailed_desc = error_handler.error_map.get(error_code, f"械手报警-{error_code}")
# 保存故障码 # 保存故障码
self.error_1 = error_code self.error_1 = error_code
@ -2271,7 +2271,7 @@ class MainWindow(MainWindowUI):
# 只有当错误码为1、2或3时才弹框提示 # 只有当错误码为1、2或3时才弹框提示
if error_code in [1, 2, 3]: if error_code in [1, 2, 3]:
QMessageBox.warning(self, "器人视觉报警", f"机器人视觉报警: {detailed_desc}") QMessageBox.warning(self, "械手报警", f"机械手报警: {detailed_desc}")
# 获取Modbus连接 # 获取Modbus连接
modbus = ModbusUtils() modbus = ModbusUtils()
client = modbus.get_client() client = modbus.get_client()

View File

@ -173,7 +173,6 @@ class Error2Handler(RegisterHandler):
self.callback = callback self.callback = callback
self.error_map = { self.error_map = {
0: "无报警", 0: "无报警",
1: "急停报警",
2: "贴标故障" 2: "贴标故障"
} }
def handle_change(self, value): def handle_change(self, value):
@ -246,20 +245,49 @@ class NGHandler(RegisterHandler):
self.callback(value) self.callback(value)
class EmergencyStopHandler(RegisterHandler): class EmergencyStopHandler:
"""寄存器D25处理器处理急停信号""" """处理急停信号"""
def __init__(self, callback=None): def __init__(self, callback=None):
super().__init__() """初始化处理器
Args:
callback: 回调函数接收两个参数value(int), desc(str)
"""
self.callback = callback self.callback = callback
self.prev_value = 0
# 急停状态描述映射
self.status_map = { self.status_map = {
0: "正常", 0: "正常",
1: "急停触发" 1: "急停触发"
} }
def handle_change(self, value): def handle(self, value):
status = self.status_map.get(value, f"未知状态({value})") """处理急停信号
logging.info(f"急停信号: {status}")
# 如果有回调函数,则调用 Args:
if self.callback and value == 1: value: 寄存器值
self.callback(value, "监听到急停信号")
Returns:
tuple: (是否变化, 状态描述)
"""
# 检查值是否有效
if value not in [0, 1]:
return False, f"无效的急停状态值: {value}"
# 检查值是否变化
if value == self.prev_value:
return False, self.status_map.get(value, "未知状态")
# 更新上一次的值
self.prev_value = value
# 获取状态描述
desc = self.status_map.get(value, "未知状态")
# 调用回调函数
if self.callback:
self.callback(value, desc)
return True, desc