70 lines
2.9 KiB
GDScript
70 lines
2.9 KiB
GDScript
extends Node
|
||
|
||
|
||
static func manage_fs(mode: bool, pribor: String, pribor_config: Dictionary, fs_params: Dictionary, current_fs: int, power_um: int) -> void:
|
||
# Получаем конфигурацию для текущего прибора
|
||
var config: Dictionary = pribor_config[pribor]
|
||
var angle: float = config.angle
|
||
var sectors: Array = config.sectors
|
||
|
||
# Формируем выходные данные
|
||
var interfer_name: String = 'k1' if mode else 'off'
|
||
var fs_arr: Array = []
|
||
|
||
if current_fs in fs_params:
|
||
var params = fs_params[current_fs]
|
||
fs_arr.append([
|
||
angle,
|
||
params.freq,
|
||
params.width,
|
||
sectors[current_fs - 1] if current_fs == 1 else sectors[current_fs - 5]
|
||
])
|
||
|
||
signaller.emit_signal('interfer_init', interfer_name, fs_arr, power_um)
|
||
print_debug(['interfer_init: ', interfer_name, fs_arr])
|
||
|
||
|
||
## Проверка касет П1 и ИП МА2000
|
||
static func check_block_ip(status_prd: PackedByteArray, block_config: Dictionary) -> Dictionary:
|
||
# Конфигурация проверяемых блоков
|
||
const BYTE_DRY_CONTACT: int = 27
|
||
var ug_online: bool = (status_prd[0] >> 1) & 1
|
||
for block in block_config:
|
||
var bit: int = block_config[block][0]
|
||
if ug_online:
|
||
var status = status_prd[BYTE_DRY_CONTACT] >> bit & 1
|
||
block_config[block][1] = status
|
||
|
||
return block_config
|
||
|
||
|
||
## Проверка температур УМ от УКП
|
||
static func check_temperature_um(status_prd: PackedByteArray, power_amplifier: Array) -> void:
|
||
const Constants: Dictionary = {
|
||
'CONST_MIN_TEMP': -25,
|
||
'MAXIMUM_CODE_ADC': 3796,
|
||
'MINIMUM_CODE_AD': 2660,
|
||
'TEMPERATURE_UKP_1': 47,
|
||
'TEMPERATURE_UKP_2': 79,
|
||
}
|
||
const TEMP: float = 115.0 / (Constants.MAXIMUM_CODE_ADC - Constants.MINIMUM_CODE_AD)
|
||
var ukp1_online: int = (status_prd[0] >> 2) & 1
|
||
if ukp1_online:
|
||
var tmp_1: int
|
||
var temperature_ukp_1: int
|
||
for i_temp in 6:
|
||
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].value0 = tmp_1
|
||
# Темпуратура от УМ литеры 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].value0 = tmp_1
|
||
|
||
var ukp2_online = (status_prd[0] >> 3) & 1
|
||
if ukp2_online:
|
||
for i_temp in 6:
|
||
var temperature_ukp_2: int = status_prd.decode_u16(Constants.TEMPERATURE_UKP_2 + 2 * i_temp)
|
||
var tmp_2: int = round(Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_2) * TEMP + 3)
|
||
power_amplifier[i_temp+7].value0 = tmp_2
|