Добавление pribor-prd-k.gd
This commit is contained in:
@@ -147,6 +147,7 @@ external_cu=false
|
||||
[global_group]
|
||||
|
||||
default_reset=""
|
||||
power_supply="Ноды источников питания прибора"
|
||||
|
||||
[gui]
|
||||
|
||||
|
||||
@@ -33,6 +33,20 @@ const Constants: Dictionary = {
|
||||
'attenutor_um_3': 0x0,
|
||||
'POWER_UM': 75,
|
||||
}
|
||||
# Конфигурация параметров для каждого прибора
|
||||
const PRIBOR_CONFIG := {
|
||||
'1к': {'angle': 0.0, 'sectors': [0, 20, 24]},
|
||||
'2к': {'angle': 90.0, 'sectors': [3, 23, 27]},
|
||||
'3к': {'angle': 180.0, 'sectors': [2, 22, 26]},
|
||||
'4к': {'angle': 270.0, 'sectors': [1, 21, 25]},
|
||||
}
|
||||
# Конфигурация частот и ширин для каждого ФС
|
||||
const FS_PARAMS := {
|
||||
1: {'freq': 450.0, 'width': 80.0},
|
||||
6: {'freq': 2450.0, 'width': 110.0},
|
||||
7: {'freq': 4750.0, 'width': 110.0}
|
||||
}
|
||||
|
||||
enum STATE_VAL { NONE = 0, GOOD = 1, ERROR = 2 }
|
||||
enum STATE_MASHINE {
|
||||
INIT,
|
||||
@@ -45,14 +59,13 @@ enum STATE_MASHINE {
|
||||
AWAIT
|
||||
}
|
||||
var block_config_k := {
|
||||
# Ключ: [бит, нода, имя для _control_results (опционально)]
|
||||
'maa2000_1': [0, 'maa2000_A23'],
|
||||
'maa2000_2': [1, 'maa2000_A22'],
|
||||
'ip9_50_1': [2, 'kasseta_p_1/ref_A26'],
|
||||
'ip9_50_2': [3, 'kasseta_p_1/ref_A23'],
|
||||
'ip12_50_1': [4, 'kasseta_p_1/ref_A24'],
|
||||
'ip9_50_3': [5, 'kasseta_p_2/ref_A26'],
|
||||
'ip12_50_2': [6, 'kasseta_p_2/ref_A23']
|
||||
'maa2000_1': [0, false],
|
||||
'maa2000_2': [1, false],
|
||||
'ip9_50_1': [2, false],
|
||||
'ip9_50_2': [3, false],
|
||||
'ip12_50_1': [4, false],
|
||||
'ip9_50_3': [5, false],
|
||||
'ip12_50_2': [6, false],
|
||||
}
|
||||
var fs_mapping_k = {
|
||||
0: { 'node': 'kasseta_fs_kd/ref_A3', 'condition': pribor == '1к' },
|
||||
@@ -79,9 +92,9 @@ var count_packet_6:int = 0
|
||||
var count_packet_7:int = 0
|
||||
var power_array_1: Array = []
|
||||
var power_array_2: Array = []
|
||||
var ug_work_1: int
|
||||
var ug_work_2: int
|
||||
var ug_work_3: int
|
||||
var ug_work_1: int = 0
|
||||
var ug_work_2: int = 0
|
||||
var ug_work_3: int = 0
|
||||
# Флаги и таймеры
|
||||
var control_timer: Timer = Timer.new()
|
||||
var mashine_timer: Timer = Timer.new()
|
||||
@@ -93,14 +106,18 @@ var _control_results: Dictionary = {
|
||||
'dkm_1': false, # Проверка ДКМ 1
|
||||
'dkm_6': false, # Проверка ДКМ 6
|
||||
'dkm_7': false, # Проверка ДКМ 7
|
||||
'power_ukp': false, # Мощность от УКП
|
||||
'power_ip': false, # Мощность от УКП
|
||||
'fs_1': false, # Проверка ФС 1
|
||||
'fs_6': false, # Проверка ФС 6
|
||||
'fs_7': false, # Проверка ФС 7
|
||||
}
|
||||
|
||||
static var node_common_func = load('res://scripts/pribor-prd.gd')
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
initialize_connections()
|
||||
setup_timer()
|
||||
set_default_state()
|
||||
@@ -116,7 +133,7 @@ func on_state_mashine() -> void:
|
||||
state = STATE_MASHINE.AWAIT
|
||||
|
||||
STATE_MASHINE.FS_TURN_ON:
|
||||
_on_control_fs(true)
|
||||
node_common_func.manage_fs(true, pribor, PRIBOR_CONFIG, FS_PARAMS, current_fs, Constants.POWER_UM)
|
||||
control_timer.wait_time = Constants.TIMER_DELAY
|
||||
control_timer.start()
|
||||
state = STATE_MASHINE.FS_WORK
|
||||
@@ -140,7 +157,7 @@ func on_state_mashine() -> void:
|
||||
state = STATE_MASHINE.FS_WORK
|
||||
|
||||
STATE_MASHINE.FS_TURN_OFF:
|
||||
_on_control_fs(false)
|
||||
node_common_func.manage_fs(false, pribor, PRIBOR_CONFIG, FS_PARAMS, current_fs, Constants.POWER_UM)
|
||||
power_control_result()
|
||||
state = STATE_MASHINE.STOP_CONTROL
|
||||
|
||||
@@ -187,6 +204,8 @@ func set_default_state() -> void:
|
||||
|
||||
|
||||
func _enter_tree() -> void:
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
$control_result.text = ''
|
||||
signaller.connect('режим_работа', Callable(self, 'on_mode_changed').bind(false))
|
||||
|
||||
@@ -195,7 +214,7 @@ func _exit_tree() -> void:
|
||||
var unit_name = get_meta('unit_name')[0]
|
||||
var unit_prd = network.get_unit_instance(unit_name)
|
||||
var prd_module = prd.prd_dict[unit_prd.name]
|
||||
prd_module.cmd_array.append([unit_prd.CmdCode.WRITE_ISA, [Constants.ADDR_UG_LITERA_1, ug_work_1, Constants.ADDR_UG_LITERA_2, ug_work_2]])
|
||||
prd_module.cmd_array.append([unit_prd.CmdCode.WRITE_ISA, [Constants.ADDR_UG_LITERA_1, ug_work_1, Constants.ADDR_UG_LITERA_2, ug_work_2, Constants.ADDR_UG_LITERA_3, ug_work_3]])
|
||||
|
||||
|
||||
func on_line_changed(unit_prd: Object) -> void:
|
||||
@@ -207,11 +226,18 @@ func on_data_received(unit_prd: Object) -> void:
|
||||
if not is_inside_tree():
|
||||
return
|
||||
|
||||
var status = unit_prd.status
|
||||
check_block_ip(status, block_config_k)
|
||||
check_temperature_um(status)
|
||||
var status: PackedByteArray = unit_prd.status
|
||||
# 1. Обновляем статусы блоков
|
||||
block_config_k = node_common_func.check_block_ip(status, block_config_k)
|
||||
# 2. Обновляем ноды power_supply
|
||||
for power_supply in get_tree().get_nodes_in_group('power_supply'):
|
||||
var meta_ip = power_supply.get_meta('ip')
|
||||
if block_config_k.has(meta_ip):
|
||||
power_supply.status = block_config_k[meta_ip][1]
|
||||
|
||||
node_common_func.check_temperature_um(status, get_tree().get_nodes_in_group('power_amplifier'))
|
||||
# Обработка данных ЭМС
|
||||
_process_ems_data(status)
|
||||
#_process_ems_data(status)
|
||||
|
||||
if current_fs == 1 and _control_results.fs_1:
|
||||
flag_check_dkm = check_dkm(status, Constants.DKM_BIT_1)
|
||||
@@ -220,79 +246,25 @@ func on_data_received(unit_prd: Object) -> void:
|
||||
elif current_fs == 7 and _control_results.fs_7:
|
||||
flag_check_dkm = check_dkm(status, Constants.DKM_BIT_7)
|
||||
|
||||
flag_check_dkm = check_dkm(status, Constants.DKM_BIT_7)
|
||||
flag_check_dkm = check_dkm(status, Constants.DKM_BIT_6)
|
||||
flag_check_dkm = check_dkm(status, Constants.DKM_BIT_1)
|
||||
|
||||
if flag_check_dkm:
|
||||
_process_ukp_power(status)
|
||||
|
||||
|
||||
# Обрабатывает данные ЭМС и обновляет UI панели
|
||||
func _process_ems_data(status: PackedByteArray) -> void:
|
||||
## Контроль ЭМС
|
||||
var in_blank: int = status.decode_u16(Constants.IN_BLANK_PRD)
|
||||
var out_blank: int = status.decode_u16(Constants.OUT_BLANK_PRD)
|
||||
|
||||
# Обновление фреймов для входных сигналов
|
||||
$Monitoring_panel/in_fs_1.frame = (in_blank >> Constants.CI_6_OT_FS) & 1
|
||||
$Monitoring_panel/in_fs_2.frame = (in_blank >> Constants.CI_7_OT_FS) & 1
|
||||
$Monitoring_panel/in_fs_3.frame = (in_blank >> Constants.CI_1_OT_FS) & 1
|
||||
|
||||
# Обновление фреймов для выходных сигналов ЭМС
|
||||
$Monitoring_panel/out_ems_1.frame = (out_blank >> Constants.CI_6_B_UF) & 1
|
||||
$Monitoring_panel/out_ems_2.frame = (out_blank >> Constants.CI_7_B_UF) & 1
|
||||
$Monitoring_panel/out_ems_3.frame = (out_blank >> Constants.CI_1_B_UF) & 1
|
||||
|
||||
|
||||
## Проверка касет П1 и ИП МА2000
|
||||
func check_block_ip(status_prd: PackedByteArray, block_config: Dictionary) -> void :
|
||||
# Конфигурация проверяемых блоков
|
||||
const BYTE_DRY_CONTACT: int = 27
|
||||
|
||||
|
||||
var ug_online: bool = (status_prd[0] >> 1) & 1
|
||||
var all_good := true
|
||||
|
||||
|
||||
for block in block_config:
|
||||
var bit: int = block_config[block][0]
|
||||
var node_name = block_config[block][1]
|
||||
var node: Control = get_node(node_name)
|
||||
|
||||
if ug_online:
|
||||
var status = status_prd[BYTE_DRY_CONTACT] >> bit & 1
|
||||
node.state = STATE_VAL.ERROR if status else STATE_VAL.GOOD
|
||||
all_good = all_good and (node.state == STATE_VAL.GOOD)
|
||||
else:
|
||||
node.state = STATE_VAL.NONE
|
||||
|
||||
_control_results['block_ip'] = all_good
|
||||
|
||||
|
||||
## Проверка температур УМ от УКП
|
||||
func check_temperature_um(status_prd: PackedByteArray) -> void:
|
||||
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
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
|
||||
## Обрабатывает данные ЭМС и обновляет UI панели
|
||||
#func _process_ems_data(status: PackedByteArray) -> void:
|
||||
### Контроль ЭМС
|
||||
#var in_blank: int = status.decode_u16(Constants.IN_BLANK_PRD)
|
||||
#var out_blank: int = status.decode_u16(Constants.OUT_BLANK_PRD)
|
||||
#
|
||||
## Обновление фреймов для входных сигналов
|
||||
#$Monitoring_panel/in_fs_1.frame = (in_blank >> Constants.CI_6_OT_FS) & 1
|
||||
#$Monitoring_panel/in_fs_2.frame = (in_blank >> Constants.CI_7_OT_FS) & 1
|
||||
#$Monitoring_panel/in_fs_3.frame = (in_blank >> Constants.CI_1_OT_FS) & 1
|
||||
#
|
||||
## Обновление фреймов для выходных сигналов ЭМС
|
||||
#$Monitoring_panel/out_ems_1.frame = (out_blank >> Constants.CI_6_B_UF) & 1
|
||||
#$Monitoring_panel/out_ems_2.frame = (out_blank >> Constants.CI_7_B_UF) & 1
|
||||
#$Monitoring_panel/out_ems_3.frame = (out_blank >> Constants.CI_1_B_UF) & 1
|
||||
|
||||
|
||||
## Проверка ДКМ
|
||||
@@ -388,42 +360,6 @@ func power_control_result() -> void:
|
||||
break
|
||||
|
||||
|
||||
func _on_control_fs(mode: bool) -> void:
|
||||
# Конфигурация параметров для каждого прибора
|
||||
var pribor_config := {
|
||||
'1к': {'angle': 0.0, 'sectors': [0, 20, 24]},
|
||||
'2к': {'angle': 90.0, 'sectors': [3, 23, 27]},
|
||||
'3к': {'angle': 180.0, 'sectors': [2, 22, 26]},
|
||||
'4к': {'angle': 270.0, 'sectors': [1, 21, 25]},
|
||||
}
|
||||
# Получаем конфигурацию для текущего прибора
|
||||
var config: Dictionary = pribor_config.get(pribor)
|
||||
var angle: float = config.angle
|
||||
var sectors: Array = config.sectors
|
||||
|
||||
# Конфигурация частот и ширин для каждого ФС
|
||||
var fs_params := {
|
||||
1: {'freq': 450.0, 'width': 80.0},
|
||||
6: {'freq': 2450.0, 'width': 110.0},
|
||||
7: {'freq': 4750.0, 'width': 110.0}
|
||||
}
|
||||
|
||||
# Формируем выходные данные
|
||||
var interfer_name: String = 'k1' if mode else 'off'
|
||||
var fs_arr: Array = []
|
||||
|
||||
if (state == STATE_MASHINE.FS_TURN_ON or state == STATE_MASHINE.FS_TURN_OFF):
|
||||
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, Constants.POWER_UM)
|
||||
|
||||
|
||||
func on_stop_control() -> void:
|
||||
state = STATE_MASHINE.FS_TURN_OFF
|
||||
|
||||
@@ -458,13 +394,6 @@ func on_ug_setting() -> void:
|
||||
var unit_name = get_meta('unit_name')[0]
|
||||
var unit_prd = network.units[unit_name]
|
||||
|
||||
if unit_prd.isa_ports.has(Constants.ADDR_UG_LITERA_1):
|
||||
ug_work_1 = unit_prd.isa_ports[Constants.ADDR_UG_LITERA_1]
|
||||
if unit_prd.isa_ports.has(Constants.ADDR_UG_LITERA_2):
|
||||
ug_work_2 = unit_prd.isa_ports[Constants.ADDR_UG_LITERA_2]
|
||||
if unit_prd.isa_ports.has(Constants.ADDR_UG_LITERA_3):
|
||||
ug_work_3 = unit_prd.isa_ports[Constants.ADDR_UG_LITERA_3]
|
||||
|
||||
var result_1 = ((Constants.attenutor_um_1 & 0x07) << 3) | (Constants.dou_ray_nuber & 0x07)
|
||||
var result_2 = ((Constants.attenutor_um_2 & 0x07) << 3) | (Constants.dou_ray_nuber & 0x07)
|
||||
var prd_module = prd.prd_dict[unit_prd.name]
|
||||
@@ -481,6 +410,14 @@ func on_mode_changed(in_tree: bool) -> void:
|
||||
|
||||
|
||||
func on_control_result() -> void:
|
||||
#Обновляем _control_results['block_ip'] на основе block_config_k
|
||||
var all_blocks_ok = true
|
||||
for block in block_config_k:
|
||||
if not block_config_k[block][1]: # Если хоть один блок false
|
||||
all_blocks_ok = false
|
||||
break
|
||||
_control_results['block_ip'] = all_blocks_ok
|
||||
|
||||
# Словарь соответствия ключей ошибок и нод
|
||||
var error_nodes := {
|
||||
'fs_1': $kasseta_fs_kd/ref_A3,
|
||||
|
||||
@@ -54,7 +54,7 @@ offset_bottom = 432.0
|
||||
script = ExtResource("3_wip3a")
|
||||
fname = "Кассета У5"
|
||||
|
||||
[node name="maa2000_A22" parent="." groups=["default_reset"] instance=ExtResource("1_8dmgr")]
|
||||
[node name="maa2000_A22" parent="." groups=["default_reset", "power_supply"] instance=ExtResource("1_8dmgr")]
|
||||
layout_mode = 0
|
||||
offset_left = 485.0
|
||||
offset_top = 907.0
|
||||
@@ -62,6 +62,7 @@ offset_right = 652.0
|
||||
offset_bottom = 949.0
|
||||
fname = "MAA2000"
|
||||
rname = "A28"
|
||||
metadata/ip = "maa2000_1"
|
||||
|
||||
[node name="dou6_A7" parent="." groups=["default_reset"] instance=ExtResource("1_8dmgr")]
|
||||
layout_mode = 0
|
||||
@@ -72,7 +73,7 @@ offset_bottom = 907.0
|
||||
fname = "ДОУ-6"
|
||||
rname = "A7"
|
||||
|
||||
[node name="maa2000_A23" parent="." groups=["default_reset"] instance=ExtResource("1_8dmgr")]
|
||||
[node name="maa2000_A23" parent="." groups=["default_reset", "power_supply"] instance=ExtResource("1_8dmgr")]
|
||||
layout_mode = 0
|
||||
offset_left = 8.0
|
||||
offset_top = 907.0
|
||||
@@ -80,6 +81,7 @@ offset_right = 175.0
|
||||
offset_bottom = 949.0
|
||||
fname = "MAA2000"
|
||||
rname = "A27"
|
||||
metadata/ip = "maa2000_2"
|
||||
|
||||
[node name="dou7_A8" parent="." groups=["default_reset"] instance=ExtResource("1_8dmgr")]
|
||||
layout_mode = 0
|
||||
@@ -305,29 +307,32 @@ patch_margin_bottom = 16
|
||||
script = ExtResource("7_xpa2n")
|
||||
fname = "Кассета П-1"
|
||||
|
||||
[node name="ref_A26" parent="kasseta_p_1" groups=["default_reset"] instance=ExtResource("8_la5yt")]
|
||||
[node name="ref_A26" parent="kasseta_p_1" groups=["default_reset", "power_supply"] instance=ExtResource("8_la5yt")]
|
||||
offset_left = 9.0
|
||||
offset_top = 33.0
|
||||
offset_right = 59.0
|
||||
offset_bottom = 183.0
|
||||
fname = "ИП9-50"
|
||||
rname = "A23"
|
||||
metadata/ip = "ip9_50_1"
|
||||
|
||||
[node name="ref_A23" parent="kasseta_p_1" groups=["default_reset"] instance=ExtResource("8_la5yt")]
|
||||
[node name="ref_A23" parent="kasseta_p_1" groups=["default_reset", "power_supply"] instance=ExtResource("8_la5yt")]
|
||||
offset_left = 59.0
|
||||
offset_top = 33.0
|
||||
offset_right = 109.0
|
||||
offset_bottom = 183.0
|
||||
fname = "ИП9-50"
|
||||
rname = "A24"
|
||||
metadata/ip = "ip9_50_2"
|
||||
|
||||
[node name="ref_A24" parent="kasseta_p_1" groups=["default_reset"] instance=ExtResource("8_la5yt")]
|
||||
[node name="ref_A24" parent="kasseta_p_1" groups=["default_reset", "power_supply"] instance=ExtResource("8_la5yt")]
|
||||
offset_left = 109.0
|
||||
offset_top = 33.0
|
||||
offset_right = 159.0
|
||||
offset_bottom = 183.0
|
||||
fname = "ИП12-50"
|
||||
rname = "A26"
|
||||
metadata/ip = "ip12_50_1"
|
||||
|
||||
[node name="lbl_fname" type="Label" parent="kasseta_p_1"]
|
||||
self_modulate = Color(1, 1, 1, 0.62)
|
||||
@@ -356,6 +361,7 @@ offset_right = 649.0
|
||||
offset_bottom = 1003.0
|
||||
theme_override_colors/font_color = Color(0.862745, 0.0784314, 0.235294, 1)
|
||||
theme_override_font_sizes/font_size = 28
|
||||
text = "Прибор ПРД- неисправен"
|
||||
horizontal_alignment = 1
|
||||
metadata/_edit_lock_ = true
|
||||
|
||||
|
||||
@@ -14,21 +14,23 @@ patch_margin_right = 16
|
||||
patch_margin_bottom = 16
|
||||
script = ExtResource("2_mdnod")
|
||||
|
||||
[node name="ref_A26" parent="." groups=["default_reset"] instance=ExtResource("3_4a27g")]
|
||||
[node name="ref_A26" parent="." groups=["default_reset", "power_supply"] instance=ExtResource("3_4a27g")]
|
||||
offset_left = 10.0
|
||||
offset_top = 30.0
|
||||
offset_right = 60.0
|
||||
offset_bottom = 180.0
|
||||
fname = "ИП9-50"
|
||||
rname = "A22"
|
||||
metadata/ip = "ip9_50_3"
|
||||
|
||||
[node name="ref_A23" parent="." groups=["default_reset"] instance=ExtResource("3_4a27g")]
|
||||
[node name="ref_A23" parent="." groups=["default_reset", "power_supply"] instance=ExtResource("3_4a27g")]
|
||||
offset_left = 60.0
|
||||
offset_top = 30.0
|
||||
offset_right = 110.0
|
||||
offset_bottom = 180.0
|
||||
fname = "ИП12-50"
|
||||
rname = "A25"
|
||||
metadata/ip = "ip12_50_2"
|
||||
|
||||
[node name="lbl_fname" type="Label" parent="."]
|
||||
self_modulate = Color(1, 1, 1, 0.62)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
@tool
|
||||
extends Control
|
||||
|
||||
"""
|
||||
|
||||
69
scripts/pribor-prd.gd
Normal file
69
scripts/pribor-prd.gd
Normal 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
|
||||
1
scripts/pribor-prd.gd.uid
Normal file
1
scripts/pribor-prd.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://bhorwnn8gprn
|
||||
Reference in New Issue
Block a user