From e6ea873294b9043b82050a6cdd90650480e1a3f4 Mon Sep 17 00:00:00 2001
From: TotMaxim
Date: Wed, 26 Nov 2025 14:08:49 +0300
Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?=
=?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA=D0=B8?=
=?UTF-8?q?=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BA=D0=BB=D1=8E=D1=87=D0=B5=D0=BD?=
=?UTF-8?q?=D0=B8=D0=B9=20=D0=BB=D1=83=D1=87=D0=B5=D0=B9=20=D0=B2=D0=BE=20?=
=?UTF-8?q?=D0=B2=D1=80=D0=B5=D0=BC=D1=8F=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80?=
=?UTF-8?q?=D0=BE=D0=BB=D1=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
scenes/контроль/контроль.tscn | 1 +
scripts/pribor-prd.gd | 38 +++++++++++++++++------------------
2 files changed, 19 insertions(+), 20 deletions(-)
diff --git a/scenes/контроль/контроль.tscn b/scenes/контроль/контроль.tscn
index 55489fa6..792ac797 100644
--- a/scenes/контроль/контроль.tscn
+++ b/scenes/контроль/контроль.tscn
@@ -1908,6 +1908,7 @@ theme_override_font_sizes/font_size = 17
text = "Сбой"
[node name="lbl_header" type="Label" parent="."]
+visible = false
layout_mode = 0
offset_left = 88.0
offset_top = 27.0
diff --git a/scripts/pribor-prd.gd b/scripts/pribor-prd.gd
index 2439cca3..111cbd50 100644
--- a/scripts/pribor-prd.gd
+++ b/scripts/pribor-prd.gd
@@ -14,6 +14,7 @@ const PROGRESS_RAY_STATES: float = 50.0
const PROGRESS_COMPLETE: float = 100.0
## Константы для работы с лучами управления
+const COUNT_PACK_POWER_RECIEVE = 5
const RAY_MASK = 0x07
const SPECIAL_LITERAS = [3, 5, 7]
const RAY_m5: String = 'RAY_m5'
@@ -257,13 +258,13 @@ func _ready() -> void:
## Инициализация маппинга состояний лучей
func _initialize_ray_mapping() -> void:
_ray_state_mapping = {
- STATE_MACHINE.UG_SET_RAY_0: 'RAY_CTRL',
- STATE_MACHINE.UG_SET_RAY_1: 'RAY_m5',
- STATE_MACHINE.UG_SET_RAY_2: 'RAY_5',
- STATE_MACHINE.UG_SET_RAY_3: 'RAY_15',
- STATE_MACHINE.UG_SET_RAY_4: 'RAY_25',
- STATE_MACHINE.UG_SET_RAY_5: 'RAY_35',
- STATE_MACHINE.UG_SET_RAY_CTRL: 'RAY_45',
+ STATE_MACHINE.UG_SET_RAY_0: 'RAY_m5',
+ STATE_MACHINE.UG_SET_RAY_1: 'RAY_5',
+ STATE_MACHINE.UG_SET_RAY_2: 'RAY_15',
+ STATE_MACHINE.UG_SET_RAY_3: 'RAY_25',
+ STATE_MACHINE.UG_SET_RAY_4: 'RAY_35',
+ STATE_MACHINE.UG_SET_RAY_5: 'RAY_45',
+ STATE_MACHINE.UG_SET_RAY_CTRL: 'RAY_CTRL',
}
@@ -550,17 +551,18 @@ func _handle_ray_write_mode(ray_num: int) -> void:
if not _can_write_ray():
return
- # Особые условия для луча 0
- if ray_num == 0:
+ # Особые условия для луча 0 и 5 на 1 литере
+ if ray_num == 0 and current_litera != 1 and not control_timer.is_stopped():
+ control_timer.stop()
+ elif ray_num == 5 and not control_timer.is_stopped():
control_timer.stop()
- # Ожидание пяти пакетов от ЯУ-07
- if ray_num == 6:
- if count_packets_power < 20: return
- elif count_packets_power < 10: return
-
# Установка луча
- _handle_ug_set_state(ray_num)
- flags.write_isa = true
+ if not flags.write_isa:
+ _handle_ug_set_state(ray_num)
+ flags.write_isa = true
+
+ # Ожидание COUNT_PACK_POWER_RECIEVE пакетов от ЯУ-07
+ if count_packets_power < COUNT_PACK_POWER_RECIEVE: return
state = STATE_MACHINE.READ_ISA
@@ -586,9 +588,6 @@ func _can_process_ray_state(addr: int) -> bool:
## Проверка возможности записи луча
func _can_write_ray() -> bool:
- if flags.write_isa:
- return false
-
if not flags.si_fs_input:
_set_status('Ожидание сигнала излучения от ФС-%s' % current_litera )
return false
@@ -1384,7 +1383,6 @@ func _set_control_result(key: String, status: bool)-> void:
if key == 'is_over_control' or old_value != status:
control_results[key] = status
emit_signal('control_results_updated', control_results)
- print_debug('control_results_updated: ',[key, status])
func _get_control_result(key: String) -> bool: