Prechádzať zdrojové kódy

修改组坯逻辑(不稳定版)

oldwine 5 mesiacov pred
rodič
commit
4bdc8aeb1d
1 zmenil súbory, kde vykonal 60 pridanie a 32 odobranie
  1. 60 32
      models/billet_trace_pusher.py

+ 60 - 32
models/billet_trace_pusher.py

@@ -25,8 +25,8 @@ class Trace_pusher:
         self.pusher_left_list = []
         self.pusher_right_list = []
 
-        self.bed_left = []
-        self.bed_right = []
+        self.bed_left = [[], []]
+        self.bed_right = [[], []]
 
         self.pusher_left = data_s7.make_point('推钢机激光')
         self.pusher_right = data_s7.make_point('推钢机激光')
@@ -192,42 +192,70 @@ class Trace_pusher:
     def arrive_cooling_bed(self, direc):
         with self.count_lock:
             if direc == 'left':
-                if len(self.pusher_left_list) >= 4:
-                    if len(self.bed_left):
-                        self.logger.warning(f"有左侧冷床上的钢坯无法录入:{'、'.join([i[0] for i in self.bed_left])}")
-                        self.bed_left = []
-                
                 self.logger.debug(f"左侧冷床上推入{len(self.pusher_left_list)}根钢坯")
-                self.bed_left.extend(self.pusher_left_list)
+                tmp = self.pusher_left_list
                 self.pusher_left_list = []
-                if len(self.bed_left) >= 4:
-                    for i in self.bed_left:
-                        if not (i[0].startswith(self.current_heatNo) or i[0].startswith(self.old_heatNo)):
-                            self.change_heat(i)
-                            break
-
-                    tmp = self.bed_left
-                    self.bed_left = []
-                    self.billet_union(tmp)
 
             elif direc == 'right':
-                if len(self.pusher_right_list) >= 4:
-                    if len(self.bed_right):
-                        self.logger.warning(f"有右侧冷床上的钢坯无法录入:{'、'.join([i[0] for i in self.bed_right])}")
-                        self.bed_right = []
-                    
                 self.logger.debug(f"右侧冷床上推入{len(self.pusher_right_list)}根钢坯")
-                self.bed_right.extend(self.pusher_right_list)
+                tmp = self.pusher_right_list
                 self.pusher_right_list = []
-                if len(self.bed_right) >= 4:
-                    for i in self.bed_right:
-                        if not (i[0].startswith(self.current_heatNo) or i[0].startswith(self.old_heatNo)):
-                            self.change_heat(i)
-                            break
-
-                    tmp = self.bed_right
-                    self.bed_right = []
-                    self.billet_union(tmp)
+
+            for i in tmp:
+                if not (i[0].startswith(self.current_heatNo) or i[0].startswith(self.old_heatNo)):
+                    self.change_heat(i)
+                    break
+
+            self.billet_to_bed(tmp, direc)
+
+    def billet_to_bed(self, billets, direc):
+        if direc == 'left':
+            if self.bed_left[0]:
+                if len(billets) >= 4:
+                    if self.bed_left[1]:
+                        self.logger.error(f"组坯冲突!")
+                    self.billet_to_bed_impl(billets, self.bed_left, 1)
+                else:
+                    if len(self.bed_left[1]) == 0 and len(self.bed_left[0]) + len(billets) <= 4:
+                        self.billet_to_bed_impl(billets, self.bed_left, 0)
+                    elif len(self.bed_left[1]) + len(billets) <= 4:
+                        self.billet_to_bed_impl(billets, self.bed_left, 1)
+                    else:
+                        self.logger.error(f"组坯冲突!")
+                        self.billet_to_bed_impl(billets, self.bed_left, 1)
+            else:
+                self.billet_to_bed_impl(billets, self.bed_left, 0)
+
+            self.logger.debug(f"左侧冷床目前情况:{len(self.bed_left[0])}根|{len(self.bed_left[1])}根")
+        elif direc == 'right':
+            if self.bed_right[0]:
+                if len(billets) >= 4:
+                    if self.bed_right[1]:
+                        self.logger.error(f"组坯冲突!")
+                    self.billet_to_bed_impl(billets, self.bed_right, 1)
+                else:
+                    if len(self.bed_right[1]) == 0 and len(self.bed_right[0]) + len(billets) <= 4:
+                        self.billet_to_bed_impl(billets, self.bed_right, 0)
+                    elif len(self.bed_right[1]) + len(billets) <= 4:
+                        self.billet_to_bed_impl(billets, self.bed_right, 1)
+                    else:
+                        self.logger.error(f"组坯冲突!")
+                        self.billet_to_bed_impl(billets, self.bed_right, 1)
+            else:
+                self.billet_to_bed_impl(billets, self.bed_right, 0)
+            self.logger.debug(f"右侧冷床目前情况:{len(self.bed_right[1])}根|{len(self.bed_right[0])}根")
+
+
+    def billet_to_bed_impl(self, billets: list, dst: list, index):
+        dst[index].extend(billets)
+        if len(dst[index]) >= 4:
+            self.billet_union(dst[index])
+            # 此处加入天车模块时删掉
+            dst[index].clear()
+            if index == 0:
+                dst[0] = dst[1]
+                dst[1] = []
+
 
     def billet_union(self, billets):
         billetsNo = []