feeding
This commit is contained in:
@ -7,12 +7,32 @@ class SystemState(QObject):
|
||||
state_updated=Signal(str,object)
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
#
|
||||
self._watched_props = []
|
||||
self.lock = threading.RLock()
|
||||
|
||||
# 系统运行状态
|
||||
self.running = False
|
||||
self.running = True
|
||||
|
||||
# 下料控制相关
|
||||
# 上料斗控制相关
|
||||
self._upper_door_position = 'default' # default(在搅拌楼下接料), over_lower(在下料斗上方), returning(返回中)
|
||||
# 是否破拱
|
||||
self._upper_is_arch_=False
|
||||
self._upper_door_closed=True
|
||||
self._upper_weight=0
|
||||
self._upper_volume=0.0
|
||||
|
||||
#下料斗状态想着
|
||||
self._lower_feeding_stage = 0 # 0:未下料, 1:第一阶段, 2:第二阶段, 3:第三阶段, 4:等待模具车对齐
|
||||
self._lower_is_arch_=False
|
||||
self._lower_weight=0
|
||||
self._lower_angle=0.0
|
||||
|
||||
#模具车状态
|
||||
self._mould_weight=0
|
||||
self._mould_frequency=220
|
||||
self._mould_vibrate_status=0 #1振动中0未振动
|
||||
|
||||
self.lower_feeding_cycle = 0 # 下料斗下料循环次数
|
||||
self.upper_feeding_count = 0 # 上料斗已下料次数
|
||||
self.upper_feeding_max = 2 #上料斗最大下料次数
|
||||
@ -21,7 +41,11 @@ class SystemState(QObject):
|
||||
self.last_upper_weight = 0
|
||||
self.last_lower_weight = 0
|
||||
self.last_weight_time = 0
|
||||
self.need_total_weight=0
|
||||
#需要下料的总重量
|
||||
self._mould_need_weight=0
|
||||
#完成下料的总重量
|
||||
self._mould_finish_weight=0
|
||||
|
||||
self.initial_upper_weight=0
|
||||
self.initial_lower_weight=0
|
||||
|
||||
@ -31,7 +55,8 @@ class SystemState(QObject):
|
||||
|
||||
# 视觉系统状态
|
||||
self.angle_control_mode = "normal" # 角度控制模式: normal, reducing, maintaining, recovery
|
||||
self.overflow_detected = False # 堆料检测
|
||||
self.overflow_detected = "0" # 堆料检测
|
||||
self.current_finish_status=False # 当前是否完成浇筑满
|
||||
self.door_opening_large = False # 夹角
|
||||
self.vehicle_aligned = False # 模具车是否对齐
|
||||
self.last_angle = None # 上次检测角度
|
||||
@ -42,16 +67,13 @@ class SystemState(QObject):
|
||||
#当前生产的管片
|
||||
self.current_artifact=None
|
||||
#当前生产状态
|
||||
self.feed_status=FeedStatus.FNone
|
||||
self._feed_status=FeedStatus.FNone
|
||||
#每方重量
|
||||
self.density=2500
|
||||
|
||||
|
||||
# 记录需要监听的属性名(筛选掉不需要发信号的内部变量)
|
||||
#是否破拱
|
||||
self._upper_is_arch_=False
|
||||
self._lower_is_arch_=False
|
||||
self.lock = threading.RLock()
|
||||
|
||||
|
||||
#
|
||||
self._watched_props = [k for k in self.__dict__ if k.startswith('_')]
|
||||
|
||||
def __setattr__(self, name, value):
|
||||
|
||||
@ -8,7 +8,7 @@ from hardware.relay import RelayController
|
||||
from hardware.inverter import InverterController
|
||||
from hardware.transmitter import TransmitterController
|
||||
from hardware.RFID.rfid_service import rfid_service
|
||||
from vision.camera import CameraController
|
||||
from vision.camera import DualCameraController
|
||||
from vision.detector import VisionDetector
|
||||
from feeding.controller import FeedingController
|
||||
|
||||
@ -28,9 +28,15 @@ class FeedingControlSystem:
|
||||
self.transmitter_controller = TransmitterController(self.relay_controller)
|
||||
|
||||
# 初始化视觉系统
|
||||
self.camera_controller = CameraController()
|
||||
self.camera_controller = DualCameraController(settings.camera_configs)
|
||||
|
||||
self.vision_detector = VisionDetector(settings)
|
||||
|
||||
# 初始化RFID控制器
|
||||
self.rfid_controller = rfid_service(
|
||||
host=settings.rfid_host,
|
||||
port=settings.rfid_port
|
||||
)
|
||||
# 初始化下料控制器
|
||||
self.feeding_controller = FeedingController(
|
||||
self.relay_controller,
|
||||
@ -43,11 +49,7 @@ class FeedingControlSystem:
|
||||
settings
|
||||
)
|
||||
|
||||
# 初始化RFID控制器
|
||||
self.rfid_controller = rfid_service(
|
||||
host=settings.rfid_host,
|
||||
port=settings.rfid_port
|
||||
)
|
||||
|
||||
|
||||
# 线程管理
|
||||
self.monitor_thread = None
|
||||
@ -60,39 +62,38 @@ class FeedingControlSystem:
|
||||
print("初始化控制系统...")
|
||||
|
||||
# 设置摄像头配置
|
||||
self.camera_controller.set_config(
|
||||
camera_type=self.settings.camera_type,
|
||||
ip=self.settings.camera_ip,
|
||||
port=self.settings.camera_port,
|
||||
username=self.settings.camera_username,
|
||||
password=self.settings.camera_password,
|
||||
channel=self.settings.camera_channel
|
||||
)
|
||||
# self.camera_controller.set_config(
|
||||
# camera_type=self.settings.camera_type,
|
||||
# ip=self.settings.camera_ip,
|
||||
# port=self.settings.camera_port,
|
||||
# username=self.settings.camera_username,
|
||||
# password=self.settings.camera_password,
|
||||
# channel=self.settings.camera_channel
|
||||
# )
|
||||
|
||||
# 初始化摄像头
|
||||
if not self.camera_controller.setup_capture():
|
||||
raise Exception("摄像头初始化失败")
|
||||
# # 初始化摄像头
|
||||
# if not self.camera_controller.setup_capture():
|
||||
# raise Exception("摄像头初始化失败")
|
||||
|
||||
# 加载视觉模型
|
||||
if not self.vision_detector.load_models():
|
||||
raise Exception("视觉模型加载失败")
|
||||
# if not self.vision_detector.load_models():
|
||||
# raise Exception("视觉模型加载失败")
|
||||
if not self.settings.debug_feeding:
|
||||
if not self.check_device_connectivity():
|
||||
raise Exception("设备连接失败")
|
||||
self.camera_controller.start_cameras()
|
||||
# 启动系统监控(要料,破拱)线程
|
||||
self.start_monitoring()
|
||||
|
||||
if not self.check_device_connectivity():
|
||||
raise Exception("设备连接失败")
|
||||
# 启动视觉控制(角度、溢出)线程
|
||||
self.start_visual_control()
|
||||
|
||||
# 启动系统监控
|
||||
self.start_monitoring()
|
||||
# 启动对齐检查线程
|
||||
self.start_alignment_check()
|
||||
|
||||
# 启动视觉控制
|
||||
self.start_visual_control()
|
||||
|
||||
# 启动对齐检查
|
||||
self.start_alignment_check()
|
||||
|
||||
# 启动下料轮询线程
|
||||
# 启动下料线程
|
||||
self.start_lower_feeding()
|
||||
|
||||
|
||||
print("控制系统初始化完成")
|
||||
|
||||
def start_monitoring(self):
|
||||
@ -126,7 +127,8 @@ class FeedingControlSystem:
|
||||
"""视觉控制循环"""
|
||||
while self.state.running:
|
||||
try:
|
||||
current_frame = self.camera_controller.capture_frame()
|
||||
print('visual_control')
|
||||
current_frame = self.camera_controller.get_single_latest_frame()
|
||||
if current_frame is not None:
|
||||
# 执行视觉控制逻辑
|
||||
self.feeding_controller.visual_control(current_frame)
|
||||
@ -148,13 +150,15 @@ class FeedingControlSystem:
|
||||
while self.state.running:
|
||||
try:
|
||||
if self.state._lower_feeding_stage == 4: # 等待对齐阶段
|
||||
current_frame = self.camera_controller.capture_frame()
|
||||
current_frame = self.camera_controller.get_single_latest_frame()
|
||||
if current_frame is not None:
|
||||
self.state.vehicle_aligned = self.vision_detector.detect_vehicle_alignment(current_frame)
|
||||
if self.state.vehicle_aligned:
|
||||
print("检测到模具车对齐")
|
||||
else:
|
||||
print("模具车未对齐")
|
||||
else:
|
||||
print('未检测到图像')
|
||||
time.sleep(self.settings.alignment_check_interval)
|
||||
except Exception as e:
|
||||
print(f"对齐检查循环错误: {e}")
|
||||
|
||||
Reference in New Issue
Block a user