в процессе отладки отправки помех

This commit is contained in:
MaD_CaT
2025-12-02 11:40:03 +03:00
parent 98cc111092
commit d622001db6
2 changed files with 35 additions and 34 deletions

View File

@@ -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)
# Остановка таймеров