снятие мощности со всех лучей на приборе прд-н

This commit is contained in:
Maxim
2025-08-15 14:13:36 +03:00
parent d67a2a6cd7
commit 295f81f694
4 changed files with 99 additions and 55 deletions

View File

@@ -20,7 +20,8 @@ class TestPRD extends Node:
UG_SET_RAY_3,
UG_SET_RAY_4,
UG_SET_RAY_5,
UM_RUN,
IN_EMS_RUN,
IN_EMS_STOP,
FS_TURN_OFF,
STOP_CONTROL,
AWAIT
@@ -69,6 +70,7 @@ class TestPRD extends Node:
var power_amplify: Array
var control_label: Label
var control_timer: Timer = Timer.new()
var ems_6666_timer: Timer = Timer.new()
## Инициализация аргуметнов
@@ -110,9 +112,7 @@ class TestPRD extends Node:
if current_fs != 0:
var tek_litera: Dictionary = power_result[current_fs]
var interes = _get_ray_key(state)
print('interes: ', interes)
if interes != '':
var arr_pow = tek_litera[interes]
tek_litera[_get_ray_key(state)] = power_um_ukp(status, current_fs, tek_litera[_get_ray_key(state)])
power_result[current_fs] = tek_litera
@@ -146,9 +146,14 @@ class TestPRD extends Node:
print_debug('Яу-07Б: нет связи ', block_kasseta_y5_config)
STATE_MASHINE.WRITE_ISA:
_handle_ug_set_state(0x6)
state = STATE_MASHINE.READ_ISA
#STATE_MASHINE.IN_EMS_RUN:
#ems_6666_timer.start()
#state = STATE_MASHINE.READ_ISA
STATE_MASHINE.READ_ISA:
_handle_read_isa(module_prd, unit_prd, [constants.ADDR_UG_LITERA_1, constants.ADDR_UG_LITERA_2, constants.ADDR_UG_LITERA_3])
state = STATE_MASHINE.UG_SET_RAY
if (unit_prd.cmd_state == unit_prd.CmdState.DONE) or (unit_prd.cmd_state == unit_prd.CmdState.FALSE):
_handle_read_isa(module_prd, unit_prd, [constants.ADDR_UG_LITERA_1, constants.ADDR_UG_LITERA_2, constants.ADDR_UG_LITERA_3])
state = STATE_MASHINE.UG_SET_RAY
STATE_MASHINE.UG_SET_RAY:
var addr: int = constants.ADDR_UG_LITERA_1
if current_fs == 3 or current_fs == 5 or current_fs == 7:
@@ -166,24 +171,32 @@ class TestPRD extends Node:
elif unit_prd.isa_ports[addr] & 0x07 == 4:
state = STATE_MASHINE.UG_SET_RAY_5
elif unit_prd.isa_ports[addr] & 0x07 == 5:
state = STATE_MASHINE.FS_TURN_OFF
state = STATE_MASHINE.IN_EMS_STOP
elif unit_prd.isa_ports[addr] & 0x07 == 6:
state = STATE_MASHINE.UG_SET_RAY_0
STATE_MASHINE.UG_SET_RAY_0:
_handle_ug_set_state(0x0)
await get_tree().create_timer(1.0).timeout
state = STATE_MASHINE.READ_ISA
STATE_MASHINE.UG_SET_RAY_1:
_handle_ug_set_state(0x1)
state = STATE_MASHINE.READ_ISA
STATE_MASHINE.UG_SET_RAY_2:
_handle_ug_set_state(0x2)
state = STATE_MASHINE.READ_ISA
STATE_MASHINE.UG_SET_RAY_3:
_handle_ug_set_state(0x3)
state = STATE_MASHINE.READ_ISA
STATE_MASHINE.UG_SET_RAY_4:
_handle_ug_set_state(0x4)
state = STATE_MASHINE.READ_ISA
STATE_MASHINE.UG_SET_RAY_5:
_handle_ug_set_state(0x5)
STATE_MASHINE.UM_RUN:
flag_timer_started = _handle_um_run_state()
state = STATE_MASHINE.READ_ISA
STATE_MASHINE.IN_EMS_STOP:
ems_6666_timer.stop()
state = STATE_MASHINE.FS_TURN_OFF
STATE_MASHINE.FS_TURN_OFF:
_handle_fs_turn_off_state()
STATE_MASHINE.STOP_CONTROL:
@@ -194,10 +207,11 @@ class TestPRD extends Node:
control_label.text = 'Выполняется инициализация ФС-%s' % current_fs
if current_fs in [1, 2, 3, 4, 5, 6, 7]:
state = STATE_MASHINE.FS_TURN_ON
#state = STATE_MASHINE.STOP_CONTROL
else:
control_results = on_control_result(block_ip_config, block_dkm_config, block_fs_config, control_results)
control_results = on_control_result(block_ip_config, block_dkm_config, block_fs_config, control_results, power_result, self_name, constants)
state = STATE_MASHINE.AWAIT
print_debug(power_result)
#print_debug(power_result)
func _handle_fs_turn_on_state() -> void:
@@ -228,6 +242,7 @@ class TestPRD extends Node:
'ADDR_UG_LITERA_2': constants.ADDR_UG_LITERA_2,
'ADDR_UG_LITERA_3': constants.ADDR_UG_LITERA_3,
'ATT_UM_3': 0x00,
'BASE_EMS_G': constants.BASE_ADDR_EMS_G
}
if self_name == '' or self_name == '' or self_name == '' or self_name == '':
dic_att['ATT_UM_1'] = constants.ATT_UM_6
@@ -246,14 +261,11 @@ class TestPRD extends Node:
dic_att.ATT_UM_3,
]
on_ug_setting(module_prd, unit_prd, dic_att)
state = STATE_MASHINE.UM_RUN
func _handle_um_run_state() -> bool:
control_label.text = 'Выполняется настройка ЭМС'
func _on_ems_6666_timer() -> void:
print_debug('Write 6666')
module_prd.cmd_array.append([unit_prd.CmdCode.WRITE_ISA, [constants.BASE_ADDR_EMS_G, 6666]])
state = STATE_MASHINE.READ_ISA
return true
func _handle_fs_turn_off_state() -> void:
@@ -264,7 +276,6 @@ class TestPRD extends Node:
func _handle_stop_control_state() -> void:
control_label.text = 'Выполняется завершение проверки ФС-%s' % current_fs
control_results = power_um_control_result(control_results, constants, power_result)
flag_timer_started = false
_advance_to_next_fs()
state = STATE_MASHINE.INIT
@@ -299,8 +310,12 @@ class TestPRD extends Node:
add_child(control_timer)
control_timer.timeout.connect(on_stop_control)
control_timer.one_shot = true
control_timer.wait_time = 10.0
control_timer.wait_time = 15.0
control_timer.start()
add_child(ems_6666_timer)
ems_6666_timer.timeout.connect(_on_ems_6666_timer)
ems_6666_timer.wait_time = 1.5
func _process_dkm_status(status: PackedByteArray) -> void:
@@ -353,10 +368,11 @@ class TestPRD extends Node:
state = STATE_MASHINE.FS_TURN_OFF
static func on_control_result(ip_config: Dictionary, dkm_config: Dictionary, fs_config: Dictionary, ctrl_results: Dictionary) -> Dictionary:
static func on_control_result(ip_config: Dictionary, dkm_config: Dictionary, fs_config: Dictionary, ctrl_results: Dictionary, power_config: Dictionary, pribor: String, cnstnt: Dictionary) -> Dictionary:
var all_blocks_ip_ok = true
var all_blocks_dkm_ok = true
var all_blocks_fs_ok = true
var all_dou_ok = true
for block in ip_config:
if not ip_config[block][1]:
@@ -372,7 +388,31 @@ class TestPRD extends Node:
if not fs_config[block]:
all_blocks_fs_ok = false
ctrl_results['fs'] = all_blocks_fs_ok
var arr_liters = [2, 3]
if pribor == '' or pribor == '' or pribor == '' or pribor == '':
arr_liters = [1, 6, 7]
elif pribor == '' or pribor == '' or pribor == '' or pribor == '':
arr_liters = [4, 5]
for i_liter in arr_liters:
var amp_array = power_config[i_liter]
if amp_array[RAY_m5].size() == 0 or \
amp_array[RAY_5].size() == 0 or \
amp_array[RAY_15].size() == 0 or \
amp_array[RAY_25].size() == 0 or \
amp_array[RAY_35].size() == 0 or \
amp_array[RAY_45].size() == 0:
all_dou_ok = false
for i_powers in amp_array.values():
for k_pow in i_powers.size():
if i_powers[k_pow] < cnstnt.POWER_THRESHOLD:
print_debug(i_powers[k_pow])
all_dou_ok = false
print([i_liter, amp_array])
ctrl_results['dou'] = all_dou_ok
return ctrl_results
@@ -381,31 +421,18 @@ class TestPRD extends Node:
var result_1 = ((settings_ug.ATT_UM_1 & 0x07) << 3) | (settings_ug.RAY_DOU_NUM & 0x07)
var result_2 = ((settings_ug.ATT_UM_2 & 0x07) << 3) | (settings_ug.RAY_DOU_NUM & 0x07)
prd_module.cmd_array.append([prd_unit.CmdCode.WRITE_ISA, [settings_ug.ADDR_UG_LITERA_1, result_1,
settings_ug.ADDR_UG_LITERA_2, result_2,
settings_ug.ADDR_UG_LITERA_3, settings_ug.ATT_UM_3]])
prd_module.cmd_array.append([prd_unit.CmdCode.WRITE_ISA, [ settings_ug.BASE_EMS_G, 6666,
settings_ug.ADDR_UG_LITERA_1, result_1,
settings_ug.ADDR_UG_LITERA_2, result_2,
settings_ug.ADDR_UG_LITERA_3, settings_ug.ATT_UM_3,
]
])
static func _handle_read_isa(prd_module: Object, prd_unit: Object, read_isa_ports: Array) -> void:
prd_module.cmd_array.append([prd_unit.CmdCode.READ_ISA, read_isa_ports])
static func power_um_control_result(ctrl_results: Dictionary, constan: Dictionary, pwr_result: Dictionary) -> Dictionary:
ctrl_results['power_um'] = true
for amp_array in pwr_result.values():
if amp_array.size() == 0:
ctrl_results['power_um'] = false
return ctrl_results
#for amp_array in pwr_result.values():
#for value in amp_array:
#if value < constan.TEMP_THRESHOLD:
#ctrl_results['power_um'] = false
#break
return ctrl_results
## Управаление модулем фс (включить/отключить излучение)
static func manage_fs(mode: bool, pribor: String, p_conf: Dictionary, fs_params: Dictionary, cur_fs: int, power_um: int) -> void:
# Получаем конфигурацию для текущего прибора