中交三航控制系统

This commit is contained in:
cdeyw
2025-09-19 20:30:37 +08:00
parent 9725b890df
commit 1d1812cb3a

View File

@ -86,6 +86,7 @@ class FeedingControlSystem:
self.min_required_weight = 500 # 模具车最小需要重量(kg) self.min_required_weight = 500 # 模具车最小需要重量(kg)
self.upper_door_position = 'default' # default(在搅拌楼下接料), over_lower(在下料斗上方), returning(返回中) self.upper_door_position = 'default' # default(在搅拌楼下接料), over_lower(在下料斗上方), returning(返回中)
self.lower_feeding_stage = 0 # 0:未下料, 1:第一阶段, 2:第二阶段, 3:等待上料, 4:等待模具车对齐 self.lower_feeding_stage = 0 # 0:未下料, 1:第一阶段, 2:第二阶段, 3:等待上料, 4:等待模具车对齐
self.lower_feeding_cycle = 0 # 下料斗下料循环次数 (1, 2, 3)
self.upper_feeding_count = 0 # 上料斗已下料次数 (0, 1, 2) self.upper_feeding_count = 0 # 上料斗已下料次数 (0, 1, 2)
self.last_upper_weight = 0 self.last_upper_weight = 0
self.last_lower_weight = 0 self.last_lower_weight = 0
@ -454,8 +455,10 @@ class FeedingControlSystem:
if not self._check_device_connectivity(): if not self._check_device_connectivity():
print("关键设备连接失败,无法开始下料") print("关键设备连接失败,无法开始下料")
return return
# 先进行上料斗向下料斗下料
print("开始分步下料过程") print("开始分步下料过程")
self.transfer_material_from_upper_to_lower()
self.lower_feeding_stage = 4 # 从等待模具车对齐开始 self.lower_feeding_stage = 4 # 从等待模具车对齐开始
self.upper_feeding_count = 0 self.upper_feeding_count = 0
self.wait_for_vehicle_alignment() self.wait_for_vehicle_alignment()
@ -497,6 +500,25 @@ class FeedingControlSystem:
print(f"设备连接检查失败: {e}") print(f"设备连接检查失败: {e}")
return False return False
def transfer_material_from_upper_to_lower(self):
"""上料斗向下料斗下料"""
print(f"上料斗向下料斗下料 (第 {self.upper_feeding_count + 1} 次)")
# 确保下料斗出砼门关闭
self.control_relay(self.DOOR_LOWER_2, 'close')
# 打开上料斗出砼门
self.control_relay(self.DOOR_LOWER_1, 'open')
# 等待物料流入下料斗(根据实际情况调整时间)
time.sleep(3)
# 关闭上料斗出砼门
self.control_relay(self.DOOR_LOWER_1, 'close')
# 增加上料计数
self.upper_feeding_count += 1
print("上料斗下料完成")
def wait_for_vehicle_alignment(self): def wait_for_vehicle_alignment(self):
"""等待模具车对齐""" """等待模具车对齐"""
print("等待模具车对齐...") print("等待模具车对齐...")
@ -510,14 +532,17 @@ class FeedingControlSystem:
break break
time.sleep(self.alignment_check_interval) time.sleep(self.alignment_check_interval)
def feeding_stage_one(self): def feeding_stage_one(self):
"""第一阶段下料2.5吨""" """第一阶段下料:下料斗向模具车下料(低速"""
print("开始第一阶段下料 (1/2)") print("开始第一阶段下料:下料斗低速下料")
self.upper_feeding_count = 1 self.lower_feeding_cycle = 1
self.set_inverter_frequency_via_relay(self.frequencies[0]) self.set_inverter_frequency_via_relay(self.frequencies[0])
self.control_inverter_via_relay('start') self.control_inverter_via_relay('start')
self.control_relay(self.DOOR_LOWER_1, 'open') # 确保上料斗出砼门关闭
self.control_relay(self.DOOR_LOWER_1, 'close')
# 打开下料斗出砼门
self.control_relay(self.DOOR_LOWER_2, 'open') self.control_relay(self.DOOR_LOWER_2, 'open')
start_time = time.time() start_time = time.time()
@ -547,10 +572,15 @@ class FeedingControlSystem:
time.sleep(2) time.sleep(2)
def feeding_stage_two(self): def feeding_stage_two(self):
"""第二阶段下料剩余2.5吨""" """第二阶段下料:下料斗向模具车下料(中速"""
print("开始第二阶段下料 (2/2)") print("开始第二阶段下料:下料斗中速下料")
self.upper_feeding_count = 2 self.lower_feeding_cycle = 2
self.set_inverter_frequency_via_relay(self.lower_feeding_frequencies[1]) self.set_inverter_frequency_via_relay(self.frequencies[1])
# 保持下料斗出砼门打开
self.control_relay(self.DOOR_LOWER_2, 'open')
# 确保上料斗出砼门关闭
self.control_relay(self.DOOR_LOWER_1, 'close')
start_time = time.time() start_time = time.time()
initial_weight = self.read_transmitter_data_via_relay(2) initial_weight = self.read_transmitter_data_via_relay(2)
@ -573,16 +603,21 @@ class FeedingControlSystem:
self.lower_weight_error_count = 0 self.lower_weight_error_count = 0
if (current_weight is not None and current_weight >= target_weight) or (time.time() - start_time) > 30: if (current_weight is not None and current_weight >= target_weight) or (time.time() - start_time) > 30:
self.lower_feeding_stage = 3 # 改为跳转到第三阶段 self.lower_feeding_stage = 3
self.feeding_stage_three() # 调用第三阶段 self.feeding_stage_three()
break break
time.sleep(2) time.sleep(2)
def feeding_stage_three(self): def feeding_stage_three(self):
"""第三阶段下料""" """第三阶段下料:下料斗向模具车下料(高速)"""
print("开始第三阶段下料 (3/3)") print("开始第三阶段下料:下料斗高速下料")
self.upper_feeding_count = 3 self.lower_feeding_cycle = 3
self.set_inverter_frequency_via_relay(self.lower_feeding_frequencies[2]) # 使用第三个频率 self.set_inverter_frequency_via_relay(self.frequencies[2])
# 保持下料斗出砼门打开
self.control_relay(self.DOOR_LOWER_2, 'open')
# 确保上料斗出砼门关闭
self.control_relay(self.DOOR_LOWER_1, 'close')
start_time = time.time() start_time = time.time()
initial_weight = self.read_transmitter_data_via_relay(2) initial_weight = self.read_transmitter_data_via_relay(2)
@ -1033,6 +1068,10 @@ if __name__ == "__main__":
# 启动对齐检查 # 启动对齐检查
system.start_alignment_check() system.start_alignment_check()
print("系统准备就绪5秒后开始下料...")
time.sleep(5)
system.start_lower_feeding() # 启动下料流程
try: try:
while True: while True:
time.sleep(1) time.sleep(1)