From d0d71b9efe04e6a3ce1483ffcd5342f65603f33d Mon Sep 17 00:00:00 2001 From: fujinliang Date: Sun, 4 Jan 2026 11:48:12 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E9=87=8F=E8=AE=B0=E5=BD=950104?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- busisness/blls.py | 2 +- doc/table表设计.doc | Bin 87603 -> 74752 bytes hardware/relay.py | 2 +- hardware/upper_plc.py | 2 +- vision/visual_callback_dq.py | 66 +++++++++++++++++++++++++++++------ 5 files changed, 59 insertions(+), 13 deletions(-) diff --git a/busisness/blls.py b/busisness/blls.py index 3ebd9f7..8111cc7 100644 --- a/busisness/blls.py +++ b/busisness/blls.py @@ -69,7 +69,7 @@ class ArtifactBll: "BlockNumber": model["BlockNumber"], "BetonVolume": model["BetonVolume"], "PStatus":1, - "Status": 2, + "Status": 1, "Source": 2, "OptTime": datetime.now(), }) diff --git a/doc/table表设计.doc b/doc/table表设计.doc index 9d8a23d21eb9a36cac9734b9f84f00d35afb0189..f19a6bb76d63c854d613fdd5ec67834d33e0df55 100644 GIT binary patch literal 74752 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 literal 87603 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 {new_status.value} {message}") + # self.logger.info(f"状态变更: {old_status.value} -> {new_status.value} {message}") for callback in self._status_callbacks: try: diff --git a/vision/visual_callback_dq.py b/vision/visual_callback_dq.py index 906d2f9..32d7276 100644 --- a/vision/visual_callback_dq.py +++ b/vision/visual_callback_dq.py @@ -8,6 +8,7 @@ import time import threading from datetime import datetime import logging +import queue from hardware.upper_plc import OmronFinsPollingService from vision.muju_cls.muju_utils import run_stable_classification_loop @@ -49,6 +50,9 @@ class VisualCallback: self._max_f_angle_ratio=0.7 #完成多少,调整角度比例 ,多于0.8就没记录了(注意) self._max_angle_radio=0.8 + + #重量大于95%,停留时间2秒,其他的1秒 + self._weight_ratio_955=0.955 #完成多少,忽略未浇筑满 self._max_ignore_radio=0.5 @@ -58,6 +62,8 @@ class VisualCallback: self._time_mould_begin='' #模具结束浇筑时间 self._time_mould_end='' + + # self.db_queue=queue.Queue() # self.plc_data=5 self.plc_service = OmronFinsPollingService("192.168.250.233") @@ -85,6 +91,16 @@ class VisualCallback: name='monitor' ) self.monitor_thread.start() + + """启动数据库监控""" + # self.db_thread = threading.Thread( + # target=self._monitor_db_loop, + # daemon=True, + # name='db_monitor' + # ) + # self.db_thread.start() + + def init_val(self): #初始化值 @@ -123,8 +139,11 @@ class VisualCallback: #采集数据用,下料重量=之前下的重量+最后一阶段(下-->模具车)重量差 #记录最后一次下料斗到模具车前的重量 self._finish_weight=0 + #记录最后一次下料斗到车初始重量 self._inital_finish_lweight=0 + #记录视觉停止下料时的重量(计算后面加了多少) + self._last_lower_weight=0 # 初始化控制间隔和堆料状态跟踪属性 self._last_overflow_state = False @@ -150,7 +169,7 @@ class VisualCallback: # 更新参数 if overflow_detected is not None: - #print(f"{datetime.now().strftime('%H:%M:%S.%f')[:-3]} 收到溢料:{overflow_detected}") + # print(f"{datetime.now().strftime('%H:%M:%S.%f')[:-3]} 收到溢料:{overflow_detected}") self._overflow_detected = overflow_detected if current_angle is not None: #print(f"{datetime.now().strftime('%H:%M:%S.%f')[:-3]} 收到角度:{current_angle}") @@ -341,6 +360,7 @@ class VisualCallback: #未对齐,检测对齐 _is_not_aligned=self._aligned_get_times(2) if _is_not_aligned: + #标志位 self._mould_before_aligned=False print('------------连续盖板未对齐-------------') else: @@ -350,6 +370,11 @@ class VisualCallback: self._mould_before_aligned=True print('-----------进入连续块111111-----------') # self.is_start_visual=True + if self._last_lower_weight>0: + _current_weight=self.transmitter_controller.read_data(2) + if _current_weight is not None: + with open('weight.txt', 'a') as f: + f.write(f"{self._last_lower_weight-_current_weight}\n") self.init_val() self.run_feed_all() @@ -392,9 +417,17 @@ class VisualCallback: print(f'--------进入关闭(浇筑满)-----------') self.safe_control_lower_close(3) print(f'--------关闭完成-----------') + # try: + # self.db_queue.put_nowait({ + # "f":self._is_small_f, + # "Status": 3 + # }) + # except queue.Full: + # print("数据库队列已满,无法添加数据") #记录重量 _current_weight=self.transmitter_controller.read_data(2) if _current_weight is not None: + self._last_lower_weight=_current_weight self._finish_weight= self._finish_weight+(self._inital_finish_lweight-_current_weight) with open('weight.txt', 'a') as f: timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") @@ -552,7 +585,10 @@ class VisualCallback: return continue cur_weight_none=0 - if current_upper_weight<3000 and current_upper_weight>0: + _two_lower_weight=loc_mitter.read_data(2) + if _two_lower_weight is None: + _two_lower_weight=0 + if (current_upper_weight<3000 and current_upper_weight>0) or _two_lower_weight>3200: #关5秒,loc_time_count多关一秒 loc_relay.control_upper_close_sync(5+loc_time_count) break @@ -670,7 +706,7 @@ class VisualCallback: second_finish_weight=initial_lower_weight-current_weight self._is_finish_ratio=(second_finish_weight+first_finish_weight)/need_total_weight print(f'------------已下料比例: {self._is_finish_ratio}-------------') - if self._is_finish_ratio>self._max_angle_radio: + if self._is_finish_ratio>=1: #关5秒 # print(f'------------已下料比例: {self._is_finish_ratio}-------------') break @@ -725,18 +761,24 @@ class VisualCallback: self._pulse_control('open',0.3) time.sleep(0.3) self._pulse_control('close',0.4) - - time.sleep(1) + print(f'--------比例:{self._is_finish_ratio}-----------') + if self._is_finish_ratio>= self._weight_ratio_955: + time.sleep(2) + else: + time.sleep(1) self._is_before_finish=True else: # self._pulse_control('open',0.5) # time.sleep(0.3) - # self._pulse_control('close',0.6) + # self._pulse_control('close',0.6) + # print(f'--------比例:{self._is_finish_ratio}-----------') self._pulse_control('open',0.6) time.sleep(0.3) self._pulse_control('close',0.7) - - time.sleep(1) + if self._is_finish_ratio>= self._weight_ratio_955: + time.sleep(2) + else: + time.sleep(1) self._is_before_finish=True if self._is_finish_ratio<=self._max_ignore_radio: #如果重量未达到最大忽略角度,需要跳出 @@ -972,7 +1014,7 @@ class VisualCallback: def on_plc_update(self,data: int, binary: str): #4即将振捣室5振捣室 64即将搅拌楼 66到达搅拌楼 - print(f"[数据回调] 数值: 0x{data:02X} | 十进制: {data:3d} | 二进制: {binary}") + # print(f"[数据回调] 数值: 0x{data:02X} | 十进制: {data:3d} | 二进制: {binary}") self.plc_data=data @classmethod @@ -989,7 +1031,9 @@ class VisualCallback: self._is_running=False self._is_finish=True - + self.is_start_visual=False + # #关闭下料斗 + # self.safe_control_lower_close() if self.plc_service: self.plc_service.stop_polling() # 等待线程结束 @@ -1001,6 +1045,8 @@ class VisualCallback: if self.monitor_thread.is_alive(): self.monitor_thread.join(timeout=1.0) + + # self.relay_controller._close_lower_5s def __del__(self): """析构函数,确保线程安全关闭"""