From 217281ce5170df5328269ae6d80892ae39766183 Mon Sep 17 00:00:00 2001
From: TotMaxim
Date: Sun, 16 Nov 2025 19:30:59 +0300
Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?=
=?UTF-8?q?=D0=BA=D0=B0=20=D0=BC=D0=BE=D0=BD=D0=B8=D1=82=D0=BE=D1=80=D0=B8?=
=?UTF-8?q?=D0=BD=D0=B3=D0=B0=20=D1=82=D0=B5=D0=BC=D0=BF=D0=B5=D1=80=D0=B0?=
=?UTF-8?q?=D1=82=D1=83=D1=80=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB?=
=?UTF-8?q?=D1=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
scenes/pribor-prd-k/pribor-prd-k.gd | 13 +++++++-
scenes/pribor-prd-n/pribor-prd-n.gd | 43 ++++++++++++++----------
scenes/pribor-prd-n/pribor-prd-n.tscn | 12 +++----
scenes/pribor-prd-v/pribor-prd-v.gd | 13 +++++++-
scenes/tabs-switch/lbl_ready.gd | 2 +-
scenes/tabs-switch/tab-switch.tscn | 30 ++++++++---------
scenes/контроль/блок-в.tscn | 8 ++---
scripts/pribor-prd.gd | 48 +++++++++++++++++++++------
8 files changed, 113 insertions(+), 56 deletions(-)
diff --git a/scenes/pribor-prd-k/pribor-prd-k.gd b/scenes/pribor-prd-k/pribor-prd-k.gd
index 3cb2020..15b3f48 100644
--- a/scenes/pribor-prd-k/pribor-prd-k.gd
+++ b/scenes/pribor-prd-k/pribor-prd-k.gd
@@ -62,6 +62,14 @@ func _exit_tree() -> void:
#prd_k_module.cmd_array.append([unit_prd_k.CmdCode.WRITE_ISA, [constants_k.ADDR_UG_LITERA_1, ug_work_1, constants_k.ADDR_UG_LITERA_2, ug_work_2, constants_k.ADDR_UG_LITERA_3, ug_work_3]])
+static func temperature_fill(temperature_arr_node: Array, temperature_dic: Dictionary)->void:
+ for i_node_temperature in temperature_arr_node:
+ var temperature_meta: String = i_node_temperature.get_meta('um')
+ var status = STATE_VAL.GOOD if temperature_dic else STATE_VAL.NONE
+ if not temperature_dic.has(temperature_meta): return
+ i_node_temperature.value1 = temperature_dic[temperature_meta]
+
+
static func power_fill(pow_dic: Dictionary, fs_result: Dictionary, power_amplifier: Array, POWER_THRESHOLD: int) -> void:
for i_powapm in power_amplifier:
var powamp_meta: String = i_powapm.get_meta('um')
@@ -98,6 +106,7 @@ func on_press_device() -> void:
'power_dic': unit_prd_k.power_result,
'block_kasseta_y5_config': unit_prd_k.block_kasseta_y5_config,
'block_ip_config': unit_prd_k.block_ip_config,
+ 'temperature_um' : unit_prd_k.temperature_um,
'nodes_y5': nodes_y5,
'node_ip_power_arr': node_ip_power_arr,
'fs_nodes': fs_nodes,
@@ -114,7 +123,8 @@ func on_press_device() -> void:
func on_control_result(for_result_dic: Dictionary) -> void:
- ## If control is end
+ temperature_fill(for_result_dic.power_amplifier, for_result_dic.temperature_um)
+
var block_kasseta_y5_prd_config_k: Dictionary = for_result_dic.block_kasseta_y5_config
var nodes_y5: Array = for_result_dic.nodes_y5
for node_y5 in nodes_y5:
@@ -132,6 +142,7 @@ func on_control_result(for_result_dic: Dictionary) -> void:
if block_ip_config_k.has(meta_ip) and block_kasseta_y5_prd_config_k.ug:
power_supply.state = STATE_VAL.GOOD if block_ip_config_k[meta_ip][1] else STATE_VAL.ERROR
+ ## If control is end
var result_dic: Dictionary = for_result_dic.result_dic
for f in for_result_dic.fs_nodes:
var fs_meta: String = f.get_meta('fs')
diff --git a/scenes/pribor-prd-n/pribor-prd-n.gd b/scenes/pribor-prd-n/pribor-prd-n.gd
index fb0046c..6b58662 100644
--- a/scenes/pribor-prd-n/pribor-prd-n.gd
+++ b/scenes/pribor-prd-n/pribor-prd-n.gd
@@ -17,6 +17,8 @@ func _ready() -> void:
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
for temp in power_amplifier:
temp.value1 = -70
+ temp.max_value1 = 70
+ temp.min_value1 = -40
unit_prd_n.connect('control_is_over', Callable(self, 'on_press_device'))
#unit_prd_n.power_amplify = power_amplifier
on_press_device()
@@ -60,28 +62,33 @@ func _exit_tree() -> void:
#prd_n_module.cmd_array.append([unit_prd_n.CmdCode.WRITE_ISA, [constants_n.ADDR_UG_LITERA_1, ug_work_1, constants_n.ADDR_UG_LITERA_2, ug_work_2]])
-static func power_fill(pow_dic: Dictionary, fs_result: Dictionary, power_amplifier: Array, POWER_THRESHOLD: int) -> void:
- for i_powapm in power_amplifier:
- var powamp_meta: String = i_powapm.get_meta('um')
+static func temperature_fill(temperature_arr_node: Array, temperature_dic: Dictionary)->void:
+ for i_node_temperature in temperature_arr_node:
+ var temperature_meta: String = i_node_temperature.get_meta('um')
+ var status = STATE_VAL.GOOD if temperature_dic else STATE_VAL.NONE
+ if not temperature_dic.has(temperature_meta): return
+ i_node_temperature.value1 = temperature_dic[temperature_meta]
+
+
+static func power_fill(pow_dic: Dictionary, fs_result: Dictionary, power_amplifier_arr_node: Array, POWER_THRESHOLD: int) -> void:
+ for i_node_powapm in power_amplifier_arr_node:
+ var powamp_meta: String = i_node_powapm.get_meta('um')
var status = STATE_VAL.GOOD if pow_dic else STATE_VAL.NONE
if not pow_dic.has(powamp_meta): return
- if pow_dic[powamp_meta].size() < 6:
- status = STATE_VAL.ERROR
- else:
- if powamp_meta in ['um_1', 'um_2', 'um_3', 'um_4', 'um_5', 'um_6'] and not fs_result.fs_2: return
- if powamp_meta in ['um_7', 'um_8', 'um_9', 'um_10', 'um_11', 'um_12'] and not fs_result.fs_3: return
- i_powapm.value0 = pow_dic[powamp_meta]
- for i_p in pow_dic[powamp_meta]:
- if i_p < POWER_THRESHOLD:
- status = STATE_VAL.ERROR
- i_powapm.state = status
+ if powamp_meta in ['um_1', 'um_2', 'um_3', 'um_4', 'um_5', 'um_6'] and not fs_result.fs_2: return
+ if powamp_meta in ['um_7', 'um_8', 'um_9', 'um_10', 'um_11', 'um_12'] and not fs_result.fs_3: return
+ i_node_powapm.value0 = pow_dic[powamp_meta]
+ for i_p in pow_dic[powamp_meta]:
+ if i_p < POWER_THRESHOLD:
+ status = STATE_VAL.ERROR
+ i_node_powapm.state = status
func on_press_device() -> void:
var nodes_y5: Array = get_tree().get_nodes_in_group('y-5')
var node_ip_power_arr: Array = get_tree().get_nodes_in_group('power_supply')
var fs_nodes: Array = get_tree().get_nodes_in_group('fs_group')
- var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
+ var power_amplifier_arr_node: Array = get_tree().get_nodes_in_group('power_amplifier')
var module_fs_2: Node = $kasseta_FS_ND/ref_A4
var dou_2: Node = $dou2_A5
var module_fs_3: Node = $kasseta_FS_ND/ref_A3
@@ -91,10 +98,11 @@ func on_press_device() -> void:
'power_dic': unit_prd_n.power_result,
'block_kasseta_y5_config': unit_prd_n.block_kasseta_y5_config,
'block_ip_config': unit_prd_n.block_ip_config,
+ 'temperature_um' : unit_prd_n.temperature_um,
'nodes_y5': nodes_y5,
'node_ip_power_arr': node_ip_power_arr,
'fs_nodes': fs_nodes,
- 'power_amplifier': power_amplifier,
+ 'power_amplifier': power_amplifier_arr_node,
'POWER_THRESHOLD': unit_prd_n.constants.POWER_THRESHOLD,
'name_prd': unit_prd_n.self_name,
'module_fs_2': module_fs_2,
@@ -106,7 +114,8 @@ func on_press_device() -> void:
func on_control_result(for_result_dic: Dictionary) -> void:
- ## If control is end
+ temperature_fill(for_result_dic.power_amplifier, for_result_dic.temperature_um)
+
var block_kasseta_y5_prd_config_n: Dictionary = for_result_dic.block_kasseta_y5_config
var nodes_y5: Array = for_result_dic.nodes_y5
for node_y5 in nodes_y5:
@@ -124,6 +133,7 @@ func on_control_result(for_result_dic: Dictionary) -> void:
if block_ip_config_n.has(meta_ip) and block_kasseta_y5_prd_config_n.ug:
power_supply.state = STATE_VAL.GOOD if block_ip_config_n[meta_ip][1] else STATE_VAL.ERROR
+ ## If control is end
var result_dic: Dictionary = for_result_dic.result_dic
for f in for_result_dic.fs_nodes:
var fs_meta: String = f.get_meta('fs')
@@ -140,7 +150,6 @@ func on_control_result(for_result_dic: Dictionary) -> void:
if block_kasseta_y5_prd_config_n['yau07']:
power_fill(for_result_dic.power_dic, for_result_dic.result_dic, for_result_dic.power_amplifier, for_result_dic.POWER_THRESHOLD)
-
var result: bool = true
for device in result_dic.values():
if not device:
diff --git a/scenes/pribor-prd-n/pribor-prd-n.tscn b/scenes/pribor-prd-n/pribor-prd-n.tscn
index a12b1ab..68571ce 100644
--- a/scenes/pribor-prd-n/pribor-prd-n.tscn
+++ b/scenes/pribor-prd-n/pribor-prd-n.tscn
@@ -374,7 +374,7 @@ fname = "УМ1535А"
rname = "A13"
value0_info = "Мощность, Вт"
value1_info = "Температура,°C"
-metadata/um = "um_7"
+metadata/um = "um_9"
[node name="um1535_A14" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
layout_mode = 0
@@ -386,7 +386,7 @@ fname = "УМ1535А"
rname = "A14"
value0_info = "Мощность, Вт"
value1_info = "Температура,°C"
-metadata/um = "um_8"
+metadata/um = "um_10"
[node name="um1535_A15" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
layout_mode = 0
@@ -398,7 +398,7 @@ fname = "УМ1535А"
rname = "A15"
value0_info = "Мощность, Вт"
value1_info = "Температура,°C"
-metadata/um = "um_9"
+metadata/um = "um_11"
[node name="um1535_A16" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
layout_mode = 0
@@ -410,7 +410,7 @@ fname = "УМ1535А"
rname = "A16"
value0_info = "Мощность, Вт"
value1_info = "Температура,°C"
-metadata/um = "um_10"
+metadata/um = "um_12"
[node name="um1535_A17" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
layout_mode = 0
@@ -422,7 +422,7 @@ fname = "УМ1535А"
rname = "A17"
value0_info = "Мощность, Вт"
value1_info = "Температура,°C"
-metadata/um = "um_11"
+metadata/um = "um_13"
[node name="um1535_A18" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
layout_mode = 0
@@ -434,7 +434,7 @@ fname = "УМ1535А"
rname = "A18"
value0_info = "Мощность, Вт"
value1_info = "Температура,°C"
-metadata/um = "um_12"
+metadata/um = "um_14"
[node name="control_result" type="Label" parent="."]
layout_mode = 0
diff --git a/scenes/pribor-prd-v/pribor-prd-v.gd b/scenes/pribor-prd-v/pribor-prd-v.gd
index b01521e..1993ed1 100644
--- a/scenes/pribor-prd-v/pribor-prd-v.gd
+++ b/scenes/pribor-prd-v/pribor-prd-v.gd
@@ -59,6 +59,14 @@ func _exit_tree() -> void:
#prd_v_module.cmd_array.append([unit_prd_v.CmdCode.WRITE_ISA, [constants_v.ADDR_UG_LITERA_1, ug_work_1, constants_v.ADDR_UG_LITERA_2, ug_work_2]])
+static func temperature_fill(temperature_arr_node: Array, temperature_dic: Dictionary)->void:
+ for i_node_temperature in temperature_arr_node:
+ var temperature_meta: String = i_node_temperature.get_meta('um')
+ var status = STATE_VAL.GOOD if temperature_dic else STATE_VAL.NONE
+ if not temperature_dic.has(temperature_meta): return
+ i_node_temperature.value1 = temperature_dic[temperature_meta]
+
+
static func power_fill(pow_dic: Dictionary, fs_result: Dictionary, power_amplifier: Array, POWER_THRESHOLD: int) -> void:
for i_powapm in power_amplifier:
var powamp_meta: String = i_powapm.get_meta('um')
@@ -137,6 +145,7 @@ func on_press_device() -> void:
'power_dic': unit_prd_v.power_result,
'block_kasseta_y5_config': unit_prd_v.block_kasseta_y5_config,
'block_ip_config': unit_prd_v.block_ip_config,
+ 'temperature_um' : unit_prd_v.temperature_um,
'nodes_y5': nodes_y5,
'node_ip_power_arr': node_ip_power_arr,
'fs_nodes': fs_nodes,
@@ -152,7 +161,8 @@ func on_press_device() -> void:
static func on_control_result(for_result_dic: Dictionary) -> void:
- ## If control is end
+ temperature_fill(for_result_dic.power_amplifier, for_result_dic.temperature_um)
+
var block_kasseta_y5_prd_config_v: Dictionary = for_result_dic.block_kasseta_y5_config
var nodes_y5: Array = for_result_dic.nodes_y5
for node_y5 in nodes_y5:
@@ -169,6 +179,7 @@ static func on_control_result(for_result_dic: Dictionary) -> void:
if block_ip_config_v.has(meta_ip) and block_kasseta_y5_prd_config_v.ug:
power_supply.state = STATE_VAL.GOOD if block_ip_config_v[meta_ip][1] else STATE_VAL.ERROR
+ ## If control is end
var result_dic: Dictionary = for_result_dic.result_dic
for f in for_result_dic.fs_nodes:
var fs_meta: String = f.get_meta('fs')
diff --git a/scenes/tabs-switch/lbl_ready.gd b/scenes/tabs-switch/lbl_ready.gd
index f35d4ed..b089367 100644
--- a/scenes/tabs-switch/lbl_ready.gd
+++ b/scenes/tabs-switch/lbl_ready.gd
@@ -4,7 +4,7 @@ const STATUS_GOOD := {"text": "Исправно", "color": Color.GREEN, "font_co
const STATUS_BAD := {"text": "Отказ", "color": Color.RED, "font_color": Color.WHITE}
var _is_uf_status_initialized: bool = false
var is_prd_operational: bool = true
-var is_uf_operational: bool = false
+var is_uf_operational: bool = true
func _ready() -> void:
diff --git a/scenes/tabs-switch/tab-switch.tscn b/scenes/tabs-switch/tab-switch.tscn
index f8649de..6836d83 100644
--- a/scenes/tabs-switch/tab-switch.tscn
+++ b/scenes/tabs-switch/tab-switch.tscn
@@ -79,21 +79,6 @@ visible = false
layout_mode = 2
metadata/_tab_index = 5
-[node name="lbl_ready" type="Label" parent="."]
-layout_mode = 0
-offset_left = 1504.0
-offset_right = 1600.0
-offset_bottom = 27.0
-tooltip_text = "Готовность аппаратуры к работе"
-mouse_filter = 0
-theme_override_font_sizes/font_size = 14
-theme_override_styles/normal = SubResource("StyleBoxFlat_o1r22")
-text = "Нет связи"
-horizontal_alignment = 1
-vertical_alignment = 1
-script = ExtResource("8_tidwt")
-metadata/_edit_lock_ = true
-
[node name="remote_control" type="Label" parent="."]
layout_mode = 2
offset_left = 1242.0
@@ -125,5 +110,20 @@ toggle_mode = true
text = "Тренаж"
script = ExtResource("9_41d34")
+[node name="lbl_ready" type="Label" parent="."]
+layout_mode = 0
+offset_left = 1504.0
+offset_right = 1600.0
+offset_bottom = 27.0
+tooltip_text = "Готовность аппаратуры к работе"
+mouse_filter = 0
+theme_override_font_sizes/font_size = 14
+theme_override_styles/normal = SubResource("StyleBoxFlat_o1r22")
+text = "Нет связи"
+horizontal_alignment = 1
+vertical_alignment = 1
+script = ExtResource("8_tidwt")
+metadata/_edit_lock_ = true
+
[connection signal="tab_changed" from="tab_switch" to="tab_switch" method="_on_tab_changed"]
[connection signal="toggled" from="тренаж_режим" to="tab_switch" method="_on_button_trenaj_toggled"]
diff --git a/scenes/контроль/блок-в.tscn b/scenes/контроль/блок-в.tscn
index 578fee5..b55f585 100644
--- a/scenes/контроль/блок-в.tscn
+++ b/scenes/контроль/блок-в.tscn
@@ -35,7 +35,7 @@ signal pressed(control: PanelContainer)
if not is_inside_tree():
return
$margin/vbox/grid1/level7.value = v
- $margin/vbox/grid1/level7.tint_progress = Color.RED if v > 70 else Color.WHITE
+ $margin/vbox/grid1/level7.tint_progress = Color.RED if v >= 70 else Color.GOLD if v >= 60 else Color.WHITE
@export var min_value0: float:
@@ -191,8 +191,8 @@ func _enter_tree_defered():
$margin/vbox/grid0/rname.text = rname
$margin/vbox/grid0/fname.text = fname
$margin/vbox/grid0/state.texture = textures[state]
- else:
- push_warning('обращение к %s вне дерева' % self)
+ #else:
+ #push_warning('обращение к %s вне дерева' % self) TODO: пишеться только когда заходишь в проект а дальше не используется
func get_level_nodes() -> Array:
@@ -477,7 +477,7 @@ size_flags_horizontal = 3
size_flags_vertical = 3
tooltip_text = "
Текущее: 56.00
-Диапазон: -50.00…120.00"
+Диапазон: -40.00…70.00"
mouse_filter = 0
min_value = -50.0
max_value = 120.0
diff --git a/scripts/pribor-prd.gd b/scripts/pribor-prd.gd
index a92df2a..23865d7 100644
--- a/scripts/pribor-prd.gd
+++ b/scripts/pribor-prd.gd
@@ -31,7 +31,9 @@ var pribor_config: Dictionary
var fs_parameters: Dictionary
var block_ip_config: Dictionary
var block_kasseta_y5_config: Dictionary
+var temperature_um: Dictionary
var control_results: Dictionary
+var power_result: Dictionary
var self_name: String
var state: int = 0
var current_litera: int
@@ -39,8 +41,8 @@ var flag_write_isa: bool = false
var flag_fs_status_ok: bool = false
var flag_si_fs_input: bool = false
var flag_si_fs_output: bool = false
+var flag_in_control: bool = false
var unit_prd: Object
-var power_result: Dictionary
var control_timer: Timer = Timer.new()
var ems_6666_timer: Timer = Timer.new()
var machine_timer: Timer = Timer.new()
@@ -134,11 +136,12 @@ func _process(_delta: float) -> void:
## Пакеты от ЯУ-07
func on_data_received(unit_pribor: Object) -> void:
+ if not flag_in_control: return
var status: PackedByteArray = unit_pribor.status
socket_status_ems_g(status)
block_kasseta_y5_config = check_block_kasseta_y5(status, block_kasseta_y5_config)
block_ip_config = check_block_ip(status, block_ip_config)
-
+ temperature_um = check_temperature_um(status)
if machine_timer.is_stopped():
return
@@ -479,14 +482,14 @@ func setup_timer() -> void:
func on_mode_changed(in_tree: bool) -> void:
+ flag_in_control = in_tree
if not in_tree: ## TODO: Дополнительная проверка если контроль идет, если нет, то смысла вызывать нет
progress_value = 0
machine_timer.stop()
state = state_machine_enum.INIT
_handle_fs_turn_off_state()
#prd_v_module.cmd_array.append([unit_prd_v.CmdCode.WRITE_ISA, [constants_v.ADDR_UG_LITERA_1, ug_work_1, constants_v.ADDR_UG_LITERA_2, ug_work_2]])
- else:
- pass
+
func _process_dkm_status(status: PackedByteArray) -> void:
@@ -611,13 +614,36 @@ static func check_block_kasseta_y5(status_prd: PackedByteArray, y5_config: Dicti
## Мониторинг температуры
-static func check_temperature(status_prd: PackedByteArray, y5_config: Dictionary) -> Dictionary:
- y5_config.yau07 = true
- y5_config.ems = (status_prd[0] & 1) and ((status_prd[0] >> 4) & 1)
- y5_config.ug = (status_prd[0] >> 1) & 1
- y5_config.ukp1 = (status_prd[0] >> 2) & 1
- y5_config.ukp2 = (status_prd[0] >> 3) & 1
- return y5_config
+static func check_temperature_um(status_prd: PackedByteArray) -> Dictionary:
+ const Constants: Dictionary = {
+ 'CONST_MIN_TEMP': -25,
+ 'MAXIMUM_CODE_ADC': 3796,
+ 'MINIMUM_CODE_AD': 2660,
+ 'TEMPERATURE_UKP_1': 47,
+ 'TEMPERATURE_UKP_2': 79,
+ }
+ const arr_um: Array = ['um_1', 'um_2', 'um_3', 'um_4', 'um_5', 'um_6', 'um_7', 'um_8', 'um_9', 'um_10', 'um_11', 'um_12', 'um_13', 'um_14', 'um_15', 'um_16']
+ const TEMP: float = 115.0 / (Constants.MAXIMUM_CODE_ADC - Constants.MINIMUM_CODE_AD)
+ var return_dic_temp: Dictionary
+ var ukp1_online: int = (status_prd[0] >> 2) & 1
+ var ukp2_online = (status_prd[0] >> 3) & 1
+
+ if ukp1_online:
+ var tmp_1: int
+ var temperature_ukp_1: int
+ for i_temp in 8:
+ 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)
+ return_dic_temp[arr_um[i_temp]] = tmp_1
+
+
+ if ukp2_online:
+ for i_temp in 8:
+ 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)
+ return_dic_temp[arr_um[i_temp+8]] = tmp_2
+
+ return return_dic_temp
## Проверка ДКМ