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: