Добавление pribor-prd-k.gd

This commit is contained in:
Maxim
2025-08-11 14:51:49 +03:00
parent d8394c2897
commit b7468549cf
7 changed files with 155 additions and 138 deletions

69
scripts/pribor-prd.gd Normal file
View File

@@ -0,0 +1,69 @@
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