Добавление проверки в serviceability
This commit is contained in:
@@ -25,13 +25,13 @@ const RAY_45: String = 'RAY_45'
|
||||
|
||||
## Конфигурация лучей: состояния, названия, задержки и требования
|
||||
const RAY_CONFIG = {
|
||||
0: { 'state': 'UG_SET_RAY_0', 'name': '-5°', 'requires_si_fs': true },
|
||||
1: { 'state': 'UG_SET_RAY_1', 'name': '5°', 'requires_si_fs': false },
|
||||
2: { 'state': 'UG_SET_RAY_2', 'name': '15°', 'requires_si_fs': false },
|
||||
3: { 'state': 'UG_SET_RAY_3', 'name': '25°', 'requires_si_fs': false },
|
||||
4: { 'state': 'UG_SET_RAY_4', 'name': '35°', 'requires_si_fs': false },
|
||||
5: { 'state': 'UG_SET_RAY_5', 'name': '45°', 'requires_si_fs': false },
|
||||
6: { 'state': 'UG_SET_RAY_0', 'name': 'Контроль', 'requires_si_fs': false } # ДКМ
|
||||
0: { 'state': 'UG_SET_RAY_0', 'name': '-5°'},
|
||||
1: { 'state': 'UG_SET_RAY_1', 'name': '5°'},
|
||||
2: { 'state': 'UG_SET_RAY_2', 'name': '15°'},
|
||||
3: { 'state': 'UG_SET_RAY_3', 'name': '25°'},
|
||||
4: { 'state': 'UG_SET_RAY_4', 'name': '35°'},
|
||||
5: { 'state': 'UG_SET_RAY_5', 'name': '45°'},
|
||||
6: { 'state': 'UG_SET_RAY_0', 'name': 'Контроль'} # ДКМ
|
||||
}
|
||||
|
||||
const RAY_TYPES := [RAY_m5, RAY_5, RAY_15, RAY_25, RAY_35, RAY_45]
|
||||
@@ -462,7 +462,10 @@ func _handle_check_block_ip_state() -> void:
|
||||
if not block_ip_config[ip][1]:
|
||||
block_ip = false
|
||||
if block_ip:
|
||||
state = STATE_MACHINE.UG_SET_RAY_CTRL
|
||||
if current_litera == 1:
|
||||
state = STATE_MACHINE.UG_SET_RAY_5
|
||||
else:
|
||||
state = STATE_MACHINE.UG_SET_RAY_CTRL
|
||||
elif flag_only_fs:
|
||||
state = STATE_MACHINE.IN_EMS_STOP
|
||||
|
||||
@@ -510,10 +513,7 @@ func _advance_to_next_fs() -> void:
|
||||
5: current_litera = 0
|
||||
6: current_litera = 7
|
||||
7: current_litera = 0
|
||||
|
||||
# Сброс прогресса при переходе к следующей ФС
|
||||
if current_litera != 0:
|
||||
current_fs_progress = 0.0
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -540,17 +540,14 @@ func _handle_ray_read_mode() -> void:
|
||||
|
||||
## Обработка записи состояния луча
|
||||
func _handle_ray_write_mode(ray_num: int) -> void:
|
||||
if not _can_write_ray(ray_num):
|
||||
if not _can_write_ray():
|
||||
return
|
||||
|
||||
# Особые условия для луча 0
|
||||
if ray_num == 0:
|
||||
control_timer.stop()
|
||||
|
||||
# Ожидание пяти пакетов от ЯУ-07
|
||||
if count_packets_power < 5:
|
||||
return
|
||||
|
||||
if count_packets_power < 5: return
|
||||
# Установка луча
|
||||
_handle_ug_set_state(ray_num)
|
||||
flag_write_isa = true
|
||||
@@ -570,8 +567,6 @@ func _process_ray_value(ray_value: int) -> void:
|
||||
state = STATE_MACHINE.IN_EMS_STOP
|
||||
6:
|
||||
state = STATE_MACHINE.UG_SET_RAY_0
|
||||
if current_litera == 1:
|
||||
state = STATE_MACHINE.UG_SET_RAY_5
|
||||
|
||||
|
||||
## Проверка возможности обработки состояния луча
|
||||
@@ -580,16 +575,15 @@ func _can_process_ray_state(addr: int) -> bool:
|
||||
|
||||
|
||||
## Проверка возможности записи луча
|
||||
func _can_write_ray(ray_num: int) -> bool:
|
||||
func _can_write_ray() -> bool:
|
||||
if flag_write_isa:
|
||||
return false
|
||||
|
||||
var ray_config = RAY_CONFIG[ray_num]
|
||||
# Для луча 0 требуется flag_si_fs_input, для остальных - нет
|
||||
if ray_num == 0:
|
||||
return ray_config.requires_si_fs and flag_si_fs_input
|
||||
|
||||
return true
|
||||
|
||||
if not flag_si_fs_input:
|
||||
_set_status('Ожидание сигнала излучения от ФС-%s' % current_litera )
|
||||
return false
|
||||
else:
|
||||
return true
|
||||
|
||||
|
||||
## Получение адреса UG для текущей литеры
|
||||
@@ -601,13 +595,14 @@ func _get_ug_address() -> int:
|
||||
#region UG_OPERATIONS
|
||||
## Подготовка к настройке и записи в УГ
|
||||
func _handle_ug_set_state(RAY_DOU_NUM: int) -> void:
|
||||
var def_att: int = 0x00
|
||||
_set_status('Настройка угла %s' % _get_ray_name(RAY_DOU_NUM))
|
||||
var dic_att := {
|
||||
'RAY_DOU_NUM': RAY_DOU_NUM,
|
||||
'ADDR_UG_LITERA_1': constants.ADDR_UG_LITERA_1,
|
||||
'ADDR_UG_LITERA_2': constants.ADDR_UG_LITERA_2,
|
||||
'ADDR_UG_LITERA_3': constants.ADDR_UG_LITERA_3,
|
||||
'ATT_UM_3': 0x00,
|
||||
'ATT_UM_3': def_att,
|
||||
'BASE_EMS_G': constants.BASE_ADDR_EMS_G
|
||||
}
|
||||
|
||||
@@ -622,7 +617,6 @@ func _handle_ug_set_state(RAY_DOU_NUM: int) -> void:
|
||||
elif self_name == '1н' or self_name == '2н' or self_name == '3н' or self_name == '4н':
|
||||
dic_att['ATT_UM_1'] = constants.ATT_UM_2
|
||||
dic_att['ATT_UM_2'] = constants.ATT_UM_3
|
||||
|
||||
flag_write_isa = on_ug_setting(unit_prd, dic_att, cmd_array)
|
||||
count_packets_power = 0
|
||||
|
||||
@@ -736,7 +730,7 @@ func on_stop_control() -> void:
|
||||
flag_no_trust_yau07 = true
|
||||
elif state == STATE_MACHINE.CHEK_KASSETA_Y5:
|
||||
flag_only_fs = true
|
||||
state = STATE_MACHINE.FS_TURN_OFF
|
||||
state = STATE_MACHINE.IN_EMS_STOP
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -879,6 +873,7 @@ func on_line_changed_yau07(_status: Object)->void:
|
||||
flag_control_is_over = false
|
||||
flag_no_trust_yau07 = false
|
||||
flag_only_fs = false
|
||||
restore_default_states()
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -899,7 +894,7 @@ func _process_dkm_status(status: PackedByteArray) -> void:
|
||||
if not unit_prd.isa_ports.has(addr) or not (unit_prd.cmd_state == unit_prd.CmdState.DONE):
|
||||
return
|
||||
|
||||
if not unit_prd.isa_ports[addr] & 0x07 == 6:
|
||||
if not unit_prd.isa_ports[addr] & 0x07 == 6:
|
||||
return
|
||||
|
||||
# Обработка битов ДКМ в зависимости от текущей литеры
|
||||
|
||||
Reference in New Issue
Block a user