Отладка в КЭН 11 контроля прд

This commit is contained in:
Maxim
2025-09-01 15:20:00 +03:00
parent 20a27d36f3
commit b5f5496d55
5 changed files with 83 additions and 46 deletions

View File

@@ -118,6 +118,7 @@ class Fs:
var pow_caps_rx: float = 0.0 ## Мощность излучения принятая от КАПС РПБ
var freq_caps_rx: float = 0.0 ## Частота принятая от КАПС РПБ
var width_caps_rx: float = 0.0 ## Ширина полосы принятая от КАПС РПБ
var msvk: Array
signal update_modulation(index)
@@ -352,33 +353,31 @@ func check_dir():
## Производит приём состояния модулей ФС.
func on_data_capsrpb_received(unit0: capsrpb.CapsRpb):
if not unit0.json_dic.has('ts'): return
if not unit0.json_dic['ts'] == 7 and not unit0.json_dic['ts'] == 5: return
if unit0.json_dic.has('msvk'):
for nfs in fs_caps_id:
fs_dict[fs_caps_id[nfs]].msvk = unit0.json_dic['msvk'] if unit0.json_dic['msvk'].size()>0 else []
if not unit0.json_dic.has('ts'): return
if not unit0.json_dic['ts'] == 7: return
if not unit0.json_dic.has('msfs'): return
var msfs = unit0.json_dic['msfs']
for fs in msfs:
if fs is Dictionary:
if not fs.has('nmfs'):
return
var nmfs = int(fs['nmfs'])
if not fs_caps_id.has(nmfs):
continue
var ii = fs_caps_id[nmfs]
if not fs_dict.has(ii):
continue
var fs_module = fs_dict[ii]
if fs.has('isg'):
fs_module.isg = int(fs['isg'])
if fs.has('pow'):
fs_module.pow_caps_rx = int(fs['pow'])
if fs.has('freq'):
fs_module.freq_caps_rx = int(fs['freq'])
if fs.has('width'):
fs_module.width_caps_rx = int(fs['width'])
if unit0.json_dic.has('msfs'):
var msfs = unit0.json_dic['msfs']
for fs in msfs:
if fs is Dictionary:
if not fs.has('nmfs'):
return
var nmfs = int(fs['nmfs'])
if not fs_caps_id.has(nmfs):
continue
var ii = fs_caps_id[nmfs]
if not fs_dict.has(ii):
continue
var fs_module = fs_dict[ii]
if fs.has('isg'):
fs_module.isg = int(fs['isg'])
if fs.has('pow'):
fs_module.pow_caps_rx = int(fs['pow'])
if fs.has('freq'):
fs_module.freq_caps_rx = int(fs['freq'])
if fs.has('width'):
fs_module.width_caps_rx = int(fs['width'])
signaller.emit_signal('fs_update_state', fs_dict)

View File

@@ -103,7 +103,7 @@ class TestPRD extends Node:
var status: PackedByteArray = unit_pribor.status
block_kasseta_y5_config = check_block_kasseta_y5(status, block_kasseta_y5_config)
block_ip_config = check_block_ip(status, block_ip_config)
check_temperature_um(status, power_amplify)
control_results.temperature = check_temperature_um(status, power_amplify)
_process_dkm_status(status)
if current_litera != 0:
var tek_litera: Dictionary = power_result[current_litera]
@@ -119,15 +119,9 @@ class TestPRD extends Node:
if fs_key.is_empty():
return
var fs_result := {fs_key: 0, 'fs_modulation': 'none'}
var fs_result := {fs_key: 0}
fs_result = on_fs_state(packet_type_7, fs_mapping, fs_result)
control_results[fs_key] = fs_result[fs_key]
if fs_result.fs_modulation and not flag_fs_turn_on:
print_debug('Помеха "Включено"')
flag_fs_turn_on = true
if not fs_result.fs_modulation and not flag_fs_turn_off:
print('Помеха "Откючено"')
flag_fs_turn_off = true
##
@@ -301,9 +295,20 @@ class TestPRD extends Node:
_determine_self_name()
var fs_mapping = _create_fs_mapping(self_name)
signaller.conn(signaller.fs_update_state, Callable(self, 'on_fs_update_state').bind(fs_mapping))
var unit_caps = network.get_unit_instance('уарэп-капсрпб')
unit_caps.connect('data_received', Callable(self, 'on_interfer_status'))
unit_prd.connect('data_received', Callable(self, 'on_data_received'))
func on_interfer_status(packet_status: Object) -> void:
if packet_status.json_dic.msvk.size() > 0 and not flag_fs_turn_on:
flag_fs_turn_on = true
print_debug('Излучение')
elif packet_status.json_dic.msvk.size() == 0 and not flag_fs_turn_off:
flag_fs_turn_off = true
print_debug('Все тихо')
func _determine_self_name() -> void:
var current_unit = unit_prd.name
var parts = current_unit.split('-')
@@ -447,7 +452,7 @@ class TestPRD extends Node:
## Проверка температур УМ от УКП
static func check_temperature_um(status_prd: PackedByteArray, power_amplifier: Array) -> void:
static func check_temperature_um(status_prd: PackedByteArray, power_amplifier: Array) -> bool:
const Constants: Dictionary = {
'CONST_MIN_TEMP': -25,
'MAXIMUM_CODE_ADC': 3796,
@@ -458,6 +463,7 @@ class TestPRD extends Node:
const TEMP: float = 115.0 / (Constants.MAXIMUM_CODE_ADC - Constants.MINIMUM_CODE_AD)
var ukp1_online: int = (status_prd[0] >> 2) & 1
var ukp2_online = (status_prd[0] >> 3) & 1
var all_temp_is_ok: bool = true
if ukp1_online:
var tmp_1: int
@@ -466,11 +472,15 @@ class TestPRD extends Node:
temperature_ukp_1 = status_prd.decode_u16(Constants.TEMPERATURE_UKP_1 + 2 * i_temp)
tmp_1 = round(Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_1) * TEMP + 3)
power_amplifier[i_temp].value1 = tmp_1
if tmp_1>70:
all_temp_is_ok = false
if power_amplifier.size() > 12: # Темпуратура от УМ литеры 1
temperature_ukp_1 = status_prd.decode_u16(Constants.TEMPERATURE_UKP_1 + 2 * 7)
tmp_1 = round(Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_1) * TEMP + 3)
power_amplifier[6].value1 = tmp_1
if tmp_1>70:
all_temp_is_ok = false
if ukp2_online:
for i_temp in 6:
@@ -478,9 +488,13 @@ class TestPRD extends Node:
var tmp_2: int = round(Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_2) * TEMP + 3)
if power_amplifier.size() > 12:
power_amplifier[i_temp+7].value1 = tmp_2
if tmp_2>70:
all_temp_is_ok = false
else:
power_amplifier[i_temp+6].value1 = tmp_2
if tmp_2>70:
all_temp_is_ok = false
return all_temp_is_ok
## Проверка ДКМ
static func check_dkm(status_prd: PackedByteArray, bit_dkm: int) -> bool:
@@ -528,7 +542,6 @@ class TestPRD extends Node:
var rule: Dictionary = FS_RULES[rule_key]
if _should_apply_rule(fs_num, rule, updated_results):
updated_results[rule.key] = fs_data.isg
updated_results['fs_modulation'] = fs_data.msvk.size() > 0
break
return updated_results