diff --git a/scripts/interfer.gd b/scripts/interfer.gd index 405dacbe..66db3599 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -218,6 +218,7 @@ func _ready() -> void: ProjectSettings.connect('settings_changed', on_settings_changed) var unit_nav: = network.get_unit_instance('навигация') unit_nav.connect('data_received', on_nav_data_received.bind(unit_caps)) + call_deferred('emit_signal', 'interfer_resized', ecms) func on_trenazh_mode(val: bool): trenazh_mode = val diff --git a/scripts/pribor-prd.gd b/scripts/pribor-prd.gd index daa73825..3f86de24 100644 --- a/scripts/pribor-prd.gd +++ b/scripts/pribor-prd.gd @@ -14,7 +14,7 @@ const PROGRESS_RAY_STATES: float = 50.0 const PROGRESS_COMPLETE: float = 100.0 ## Константы для работы с лучами управления -const COUNT_PACK_POWER_RECIEVE = 5 +const COUNT_PACK_POWER_RECIEVE = 15 const RAY_MASK = 0x07 const SPECIAL_LITERAS = [3, 5, 7] const RAY_m5: String = 'RAY_m5' @@ -212,7 +212,6 @@ func _initialize_default_states() -> void: 'control_results': control_results.duplicate(true), 'power_result': power_result.duplicate(true), 'temperature_um': temperature_um.duplicate(true), - 'ecms': ecms.duplicate(true), # Конфигурации блоков 'block_ip_config': block_ip_config.duplicate(true), @@ -410,6 +409,8 @@ func _handle_init_state() -> void: func _handle_fs_turn_on_state() -> void: _set_status('Включение ФС-%s' % current_litera) manage_fs(self_name, pribor_config, fs_parameters, current_litera, constants.POWER_UM) + current_ecm_key = take_ecm_id(ecms, self_name, current_litera) + flags.ecm_is_comming = current_ecm_key != -1 control_timer.wait_time = constants.TIMER_DELAY control_timer.start() state = STATE_MACHINE.FS_WORK @@ -429,29 +430,27 @@ static func take_ecm_id(ecm_dic: Dictionary, device_name: String, current_lit: i ## Обработка состояния FS_WORK - проверка работы ФС func _handle_fs_work_state() -> void: - _set_status('Проверка связи сервиса КАПС РПБ') - if not flags.ecm_is_comming: return - if current_ecm_key != 0 and flags.fs_status_ok: + _set_status('Проверка связи сервиса КАПС РПБ') + _set_status('Ожидание выполнения помехи состояние %s литеры %s' % [ecms[current_ecm_key].svk, current_litera]) + if current_ecm_key > 0 and ecms[current_ecm_key].svk == 1: if not flags.si_fs_input: _set_status('Ожидание сигнала излучения от ФС-%s' % current_litera) - else: - _set_status('Проверка ФС-%s' % current_litera) # Если ФС в порядке if (current_litera == 2 and control_results.fs_2) or \ - (current_litera == 3 and control_results.fs_3) or \ - (current_litera == 4 and control_results.fs_4) or \ - (current_litera == 5 and control_results.fs_5) or \ - (current_litera == 6 and control_results.fs_6) or \ - (current_litera == 7 and control_results.fs_7) or \ - (current_litera == 1 and control_results.fs_1): - if not block_kasseta_y5_config['yau07']: - _set_status('Ожидание данных от ЯУ-07...') - return # НЕ переходим дальше пока нет данных от сервиса МП550 + (current_litera == 3 and control_results.fs_3) or \ + (current_litera == 4 and control_results.fs_4) or \ + (current_litera == 5 and control_results.fs_5) or \ + (current_litera == 6 and control_results.fs_6) or \ + (current_litera == 7 and control_results.fs_7) or \ + (current_litera == 1 and control_results.fs_1): + if not block_kasseta_y5_config['yau07']: + _set_status('Ожидание данных от ЯУ-07...') + return # НЕ переходим дальше пока нет данных от сервиса МП550 - if flags.only_fs: - state = STATE_MACHINE.IN_EMS_STOP - else: - state = STATE_MACHINE.UG_SET_RAY_5 if current_litera == 1 else STATE_MACHINE.UG_SET_RAY_CTRL + if flags.only_fs: + state = STATE_MACHINE.IN_EMS_STOP + else: + state = STATE_MACHINE.UG_SET_RAY_5 if current_litera == 1 else STATE_MACHINE.UG_SET_RAY_CTRL ## Обработка состояния CHECK_KASSETA - проверка кассеты Y5 @@ -556,7 +555,7 @@ func _handle_ray_write_mode(ray_num: int) -> void: if not _can_write_ray(): return - if ray_num == 0 and current_litera != 1 and not control_timer.is_stopped(): + if (ray_num == 6 or ray_num == 5) and not control_timer.is_stopped(): control_timer.stop() # Установка луча if not flags.write_isa: @@ -580,6 +579,7 @@ func _process_ray_value(ray_value: int) -> void: control_results = check_dou_result(control_results, power_for_litera, self_name, current_litera, constants) state = STATE_MACHINE.IN_EMS_STOP 6: + if count_packets_power < COUNT_PACK_POWER_RECIEVE: return state = STATE_MACHINE.UG_SET_RAY_0 @@ -737,6 +737,7 @@ func on_state_mashine(): func on_stop_control() -> void: if state == STATE_MACHINE.UG_SET_RAY: flags.no_trust_yau07 = true + push_error('no_trust_yau07: ', self_name) state = STATE_MACHINE.IN_EMS_STOP #endregion @@ -845,8 +846,6 @@ func on_fs_update_state(packet_type_7: Dictionary, fs_mapping: Dictionary) -> vo ## Обработка изменения размера интерферометра func on_interfer_resized(ecms_dic: Dictionary) -> void: ecms = ecms_dic - current_ecm_key = take_ecm_id(ecms, self_name, current_litera) - flags.ecm_is_comming = (current_ecm_key != 0) # Явное установление состояния ## Обработка запуска контроля устройства @@ -996,17 +995,19 @@ static func on_y5_control_result(block_kasseta: Dictionary) -> bool: ## Установка угла и аттенюации для УМ static func on_ug_setting(prd_unit: Object, settings_ug: Dictionary, prd_cmd_array: Array, cur_litera: int) -> bool: - var result: int - if cur_litera in [2, 4, 6]: - result = ((settings_ug.ATT_UM_1 & 0x07) << 3) | (settings_ug.RAY_DOU_NUM & 0x07) - prd_cmd_array.append([prd_unit.CmdCode.WRITE_ISA, [settings_ug.ADDR_UG_LITERA_1, result]]) - elif cur_litera in [3, 5, 7]: - result = ((settings_ug.ATT_UM_2 & 0x07) << 3) | (settings_ug.RAY_DOU_NUM & 0x07) - prd_cmd_array.append([prd_unit.CmdCode.WRITE_ISA, [settings_ug.ADDR_UG_LITERA_2, result]]) - elif cur_litera == 1: - result = ((settings_ug.ATT_UM_1 & 0x07) << 3) | (settings_ug.RAY_DOU_NUM & 0x07) - prd_cmd_array.append([prd_unit.CmdCode.WRITE_ISA, [settings_ug.ADDR_UG_LITERA_1, result]]) + var result_1: int + var result_2: int + if cur_litera == 1: + result_1 = ((settings_ug.ATT_UM_1 & 0x07) << 3) | (settings_ug.RAY_DOU_NUM & 0x07) + prd_cmd_array.append([prd_unit.CmdCode.WRITE_ISA, [settings_ug.ADDR_UG_LITERA_1, result_1]]) prd_cmd_array.append([prd_unit.CmdCode.WRITE_ISA, [settings_ug.ADDR_UG_LITERA_3, settings_ug.ATT_UM_3]]) + else: + #if cur_litera in [2, 4, 6]: + result_1 = ((settings_ug.ATT_UM_1 & 0x07) << 3) | (settings_ug.RAY_DOU_NUM & 0x07) + prd_cmd_array.append([prd_unit.CmdCode.WRITE_ISA, [settings_ug.ADDR_UG_LITERA_1, result_1]]) + #elif cur_litera in [3, 5, 7]: + result_2 = ((settings_ug.ATT_UM_2 & 0x07) << 3) | (settings_ug.RAY_DOU_NUM & 0x07) + prd_cmd_array.append([prd_unit.CmdCode.WRITE_ISA, [settings_ug.ADDR_UG_LITERA_2, result_2]]) return true @@ -1348,7 +1349,6 @@ func restore_default_states() -> void: control_results = _default_states['control_results'].duplicate(true) power_result = _default_states['power_result'].duplicate(true) temperature_um = _default_states['temperature_um'].duplicate(true) - ecms = _default_states['ecms'].duplicate(true) block_ip_config = _default_states['block_ip_config'].duplicate(true) # Остановка таймеров