|
@@ -28,8 +28,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('推钢机激光')
|
|
@@ -213,51 +213,47 @@ class Trace_pusher:
|
|
|
|
|
|
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])}根")
|
|
|
+ self.billet_to_bed_impl(billets, self.bed_left)
|
|
|
+ self.logger.debug(f"左侧冷床目前情况:{len(self.bed_left[0])}根|{len(self.bed_left[1])}根|{len(self.bed_left[2])}根")
|
|
|
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)
|
|
|
+ self.billet_to_bed_impl(billets, self.bed_right)
|
|
|
+ self.logger.debug(f"右侧冷床目前情况:{len(self.bed_right[2])}根|{len(self.bed_right[1])}根|{len(self.bed_right[0])}根")
|
|
|
+
|
|
|
+
|
|
|
+ def billet_to_bed_impl(self, billets: list, dst: list):
|
|
|
+ i = 0
|
|
|
+ count = 0
|
|
|
+ while i < len(dst) and dst[i]:
|
|
|
+ count += 1
|
|
|
+
|
|
|
+ if count == 0:
|
|
|
+ dst[0].extend(billets)
|
|
|
+ elif count == 3 and len(billets) >= 4:
|
|
|
+ self.logger.error(f"组坯异常!")
|
|
|
+ flag = False
|
|
|
+ for j in dst:
|
|
|
+ if len(j) < 4:
|
|
|
+ flag = True
|
|
|
+ dst.remove(j)
|
|
|
+ break
|
|
|
+ if flag:
|
|
|
+ dst.append(billets)
|
|
|
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])}根")
|
|
|
-
|
|
|
+ dst.remove(dst[0])
|
|
|
+ dst.append(billets)
|
|
|
+ count -= 1
|
|
|
+ elif count == 3 and len(dst[count-1]) + len(billets) > 4:
|
|
|
+ self.logger.error(f"组坯异常!")
|
|
|
+ dst[count-1].extend(billets)
|
|
|
+ count -= 1
|
|
|
+ elif len(billets) >= 4:
|
|
|
+ dst[count].extend(billets)
|
|
|
+ else:
|
|
|
+ dst[count-1].extend(billets)
|
|
|
+ count -= 1
|
|
|
|
|
|
- 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] = []
|
|
|
+ if len(dst[count]) >= 4:
|
|
|
+ self.billet_union(dst[count])
|
|
|
|
|
|
|
|
|
def billet_union(self, billets):
|
|
@@ -326,8 +322,24 @@ class Trace_pusher:
|
|
|
with self.count_lock:
|
|
|
self.pusher_left_list = []
|
|
|
self.pusher_right_list = []
|
|
|
- self.bed_left = [[], []]
|
|
|
- self.bed_right = [[], []]
|
|
|
+ self.bed_left = [[], [], []]
|
|
|
+ self.bed_right = [[], [], []]
|
|
|
+
|
|
|
+ def get_billet(self, direc):
|
|
|
+ if direc == "left":
|
|
|
+ return self.get_billet_action(self.bed_left)
|
|
|
+ if direc == "right":
|
|
|
+ return self.get_billet_action(self.bed_right)
|
|
|
+
|
|
|
+ def get_billet_action(self, src):
|
|
|
+ for i in range(len(src)-1, -1, -1):
|
|
|
+ if len(src[i]) >= 4:
|
|
|
+ tmp = [j[0] for j in src[i]]
|
|
|
+ src[i] = []
|
|
|
+ return tmp
|
|
|
+
|
|
|
+ return []
|
|
|
+
|
|
|
|
|
|
|
|
|
# [坯号, 炉次信息, 定尺, 拉速, 开切时间, 停切时间]
|