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: