Доработка выхода из контроля

This commit is contained in:
Maxim
2025-08-25 14:41:54 +03:00
parent a32e09e73b
commit 955baba574
7 changed files with 107 additions and 470 deletions

View File

@@ -56,8 +56,6 @@ class TestPRD extends Node:
var pribor_config: Dictionary
var fs_parameters: Dictionary
var block_ip_config: Dictionary
var block_dkm_config: Dictionary
var block_fs_config: Dictionary
var block_kasseta_y5_config: Dictionary
var control_results: Dictionary
var self_name: String
@@ -83,8 +81,6 @@ class TestPRD extends Node:
pribor_config = init_data['prd_config']
fs_parameters = init_data['fs_params']
block_ip_config = init_data['block_ip_prd_config']
block_dkm_config = init_data['block_dkm_prd_config']
block_fs_config = init_data['block_fs_prd_config']
block_kasseta_y5_config = init_data['block_kasseta_y5_prd_config']
control_results = init_data['control_results']
current_litera = init_data['current_litera']
@@ -125,7 +121,7 @@ class TestPRD extends Node:
var fs_result := {fs_key: STATE_VAL.NONE}
fs_result = on_fs_state(packet_type_7, fs_mapping, fs_result)
block_fs_config[fs_key] = fs_result[fs_key]
control_results[fs_key] = fs_result[fs_key]
##
@@ -208,10 +204,10 @@ class TestPRD extends Node:
func _handle_init_state() -> void:
control_label.text = 'Выполняется инициализация ФС-%s' % current_litera
if current_litera in [1, 2, 3, 4, 5, 6, 7]:
#state = STATE_MASHINE.FS_TURN_ON
state = STATE_MASHINE.STOP_CONTROL
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, control_results)
var send_power_pack = prep_power(power_result, self_name)
emit_signal('control_is_over', control_results, send_power_pack)
@@ -229,13 +225,13 @@ class TestPRD extends Node:
control_label.text = 'Выполняется проверка ФС-%s' % current_litera
if not module_prd.unit_yau07.online:
return
if (current_litera == 2 and block_fs_config.fs_2) or \
(current_litera == 3 and block_fs_config.fs_3) or \
(current_litera == 4 and block_fs_config.fs_4) or \
(current_litera == 5 and block_fs_config.fs_5) or \
(current_litera == 6 and block_fs_config.fs_6) or \
(current_litera == 7 and block_fs_config.fs_7) or \
(current_litera == 1 and block_fs_config.fs_1):
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):
state = STATE_MASHINE.CHEK_KASSETA_Y5
@@ -323,10 +319,23 @@ class TestPRD extends Node:
func _process_dkm_status(status: PackedByteArray) -> void:
if not block_fs_config.has(_get_current_fs_key()):
if not control_results.has(_get_current_fs_key()):
return
var dkm_bit = _get_dkm_bit_for_current_fs(current_litera, constants)
block_dkm_config = check_dkm(status, dkm_bit, block_dkm_config)
if dkm_bit == 0:
control_results['dkm_1'] = check_dkm(status, dkm_bit)
elif dkm_bit == 1:
control_results['dkm_2'] = check_dkm(status, dkm_bit)
elif dkm_bit == 2:
control_results['dkm_3'] = check_dkm(status, dkm_bit)
elif dkm_bit == 3:
control_results['dkm_4'] = check_dkm(status, dkm_bit)
elif dkm_bit == 4:
control_results['dkm_5'] = check_dkm(status, dkm_bit)
elif dkm_bit == 5:
control_results['dkm_6'] = check_dkm(status, dkm_bit)
elif dkm_bit == 6:
control_results['dkm_7'] = check_dkm(status, dkm_bit)
func _get_current_fs_key() -> String:
@@ -360,25 +369,14 @@ 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, ctrl_results: Dictionary) -> Dictionary:
var all_blocks_ip_ok = true
var all_blocks_dkm_ok = true
var all_blocks_fs_ok = true
for block in ip_config:
if not ip_config[block][1]:
all_blocks_ip_ok = false
ctrl_results['block_ip'] = all_blocks_ip_ok
for block in dkm_config:
if not dkm_config[block]:
all_blocks_dkm_ok = false
ctrl_results['dkm'] = all_blocks_dkm_ok
for block in fs_config:
if not fs_config[block]:
all_blocks_fs_ok = false
ctrl_results['fs'] = all_blocks_fs_ok
return ctrl_results
@@ -481,24 +479,10 @@ class TestPRD extends Node:
## Проверка ДКМ
static func check_dkm(status_prd: PackedByteArray, bit_dkm: int, dkm_result: Dictionary) -> Dictionary:
static func check_dkm(status_prd: PackedByteArray, bit_dkm: int) -> bool:
var dkm: int = 28
var status_dkm = status_prd[dkm] >> bit_dkm & 1
if bit_dkm == 0:
dkm_result['dkm_1'] = status_dkm
elif bit_dkm == 1:
dkm_result['dkm_2'] = status_dkm
elif bit_dkm == 2:
dkm_result['dkm_3'] = status_dkm
elif bit_dkm == 3:
dkm_result['dkm_4'] = status_dkm
elif bit_dkm == 4:
dkm_result['dkm_5'] = status_dkm
elif bit_dkm == 5:
dkm_result['dkm_6'] = status_dkm
elif bit_dkm == 6:
dkm_result['dkm_7'] = status_dkm
return dkm_result
var status_dkm: bool = status_prd[dkm] >> bit_dkm & 1
return status_dkm
##