From 85c02f3f6c2648d02eb38eb3dc98642cde435b2a Mon Sep 17 00:00:00 2001
From: TotMaxim
Date: Tue, 11 Nov 2025 14:39:39 +0300
Subject: [PATCH] =?UTF-8?q?=D0=9E=D1=82=D0=BB=D0=B0=D0=B6=D0=B5=D0=BD=20?=
=?UTF-8?q?=D0=BF=D1=80=D0=B4-=D0=B2=20=D0=B3=D0=B4,=20=D0=BE=D1=81=D1=82?=
=?UTF-8?q?=D0=B0=D0=BB=D0=B0=D1=81=D1=8C=20=D0=BF=D1=80=D0=BE=D0=B1=D0=BB?=
=?UTF-8?q?=D0=B5=D0=BC=D0=B0=20"=D0=BE=D0=B1=D1=80=D0=B0=D1=89=D0=B5?=
=?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BA=20=D1=83=D0=B4=D0=B0=D0=BB=D1=91?=
=?UTF-8?q?=D0=BD=D0=BD=D0=BE=D0=BC=D1=83=20=D1=8D=D0=BB=D0=B5=D0=BC=D0=B5?=
=?UTF-8?q?=D0=BD=D1=82=D1=83",=20=D0=BC=D0=BE=D0=BD=D0=B8=D1=82=D0=BE?=
=?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3=20=D1=82=D0=B5=D0=BC=D0=BF=D0=B5=D1=80?=
=?UTF-8?q?=D0=B0=D1=82=D1=83=D1=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
scenes/tabs-switch/tab-switch.tscn | 2 --
scenes/контроль/блок-в.tscn | 3 +-
scripts/prd.gd | 12 ++++----
scripts/pribor-prd.gd | 48 ++++++++++++++----------------
table/table.gd | 8 +++--
5 files changed, 37 insertions(+), 36 deletions(-)
diff --git a/scenes/tabs-switch/tab-switch.tscn b/scenes/tabs-switch/tab-switch.tscn
index 8d27a501..f8649dec 100644
--- a/scenes/tabs-switch/tab-switch.tscn
+++ b/scenes/tabs-switch/tab-switch.tscn
@@ -106,7 +106,6 @@ theme_override_styles/normal = SubResource("StyleBoxFlat_o1r22")
text = "Внешнее управление"
horizontal_alignment = 1
vertical_alignment = 1
-metadata/_edit_lock_ = true
[node name="тренаж_режим" type="Button" parent="."]
layout_mode = 0
@@ -125,7 +124,6 @@ theme_override_styles/normal = SubResource("StyleBoxFlat_imu1q")
toggle_mode = true
text = "Тренаж"
script = ExtResource("9_41d34")
-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 91390370..06dcfa85 100644
--- a/scenes/контроль/блок-в.tscn
+++ b/scenes/контроль/блок-в.tscn
@@ -476,11 +476,12 @@ layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
tooltip_text = "
-Текущее: 0.00
+Текущее: 56.00
Диапазон: -50.00…120.00"
mouse_filter = 0
min_value = -50.0
max_value = 120.0
+value = 56.0
fill_mode = 3
nine_patch_stretch = true
stretch_margin_left = 8
diff --git a/scripts/prd.gd b/scripts/prd.gd
index 7eddaace..5e4f796f 100644
--- a/scripts/prd.gd
+++ b/scripts/prd.gd
@@ -163,10 +163,9 @@ class PRD:
var set_ug_state: bool = true ## Необходимо ли записать в УГ настройки
signal update_serviceability()
- func _init(u_name, u_yau07, u_control: Object):
+ func _init(u_name, u_yau07):
prd_name = u_name
unit_yau07 = u_yau07
- unit_control = u_control
init_ems_g()
@@ -284,11 +283,12 @@ func _ready() -> void:
check_dir()
for prd_name in PRD_NAMES:
var unit_prd = network.get_unit_instance(prd_name)
- var control_pribor_prd = preload('res://scripts/pribor-prd.gd')
- var unit_control = control_pribor_prd.TestPRD.new({'unit_prd': unit_prd})
- add_child(unit_control)
- var new_prd = PRD.new(prd_name, unit_prd, unit_control)
+ var new_prd = PRD.new(prd_name, unit_prd)
prd_dict[prd_name] = new_prd
+ var control_pribor_prd = preload('res://scripts/pribor-prd.gd')
+ var unit_control = control_pribor_prd.TestPRD.new({'unit_prd': unit_prd}, new_prd.cmd_array)
+ add_child(unit_control)
+ new_prd.unit_control = unit_control
for key in FS_PRD.keys():
var fs = Fs.new(key, FS_PRD[key][0])
fs_dict[key] = fs
diff --git a/scripts/pribor-prd.gd b/scripts/pribor-prd.gd
index 5a700c8f..d5d7957e 100644
--- a/scripts/pribor-prd.gd
+++ b/scripts/pribor-prd.gd
@@ -241,13 +241,13 @@ class TestPRD extends Node:
}
var power_for_litera: Dictionary = {
- 1: {RAY_m5: [560, 400, 330, 560, 400, 330], RAY_5: [560, 400, 330, 560, 400, 330,], RAY_15: [560, 400, 330, 560, 400, 330,], RAY_25: [560, 400, 330, 560, 400, 330,], RAY_35: [560, 400, 330, 560, 400, 330,], RAY_45: [560, 400, 330, 560, 400, 330,],},
- 2: {RAY_m5: [560, 400, 330, 560, 400, 330,], RAY_5: [560, 400, 330, 560, 400, 330,], RAY_15: [560, 400, 330, 560, 400, 330,], RAY_25: [560, 400, 330, 560, 400, 330,], RAY_35: [560, 400, 330, 560, 400, 330,], RAY_45: [560, 400, 330, 560, 400, 330,],},
- 3: {RAY_m5: [560, 400, 330, 560, 400, 330,], RAY_5: [560, 400, 330, 560, 400, 330,], RAY_15: [560, 400, 330, 560, 400, 330,], RAY_25: [560, 400, 330, 560, 400, 330,], RAY_35: [560, 400, 330, 560, 400, 330,], RAY_45: [560, 400, 330, 560, 400, 330,],},
- 4: {RAY_m5: [560, 400, 330, 560, 400, 330,], RAY_5: [560, 400, 330, 560, 400, 330,], RAY_15: [560, 400, 330, 560, 400, 330,], RAY_25: [560, 400, 330, 560, 400, 330,], RAY_35: [560, 400, 330, 560, 400, 330,], RAY_45: [560, 400, 330, 560, 400, 330,],},
- 5: {RAY_m5: [560, 400, 330, 560, 400, 330,], RAY_5: [560, 400, 330, 560, 400, 330,], RAY_15: [560, 400, 330, 560, 400, 330,], RAY_25: [560, 400, 330, 560, 400, 330,], RAY_35: [560, 400, 330, 560, 400, 330,], RAY_45: [560, 400, 330, 560, 400, 330,],},
- 6: {RAY_m5: [560, 400, 330, 560, 400, 330,], RAY_5: [560, 400, 330, 560, 400, 330,], RAY_15: [560, 400, 330, 560, 400, 330,], RAY_25: [560, 400, 330, 560, 400, 330,], RAY_35: [560, 400, 330, 560, 400, 330,], RAY_45: [560, 400, 330, 560, 400, 330,],},
- 7: {RAY_m5: [560, 400, 330, 560, 400, 330,], RAY_5: [560, 400, 330, 560, 400, 330,], RAY_15: [560, 400, 330, 560, 400, 330,], RAY_25: [560, 400, 330, 560, 400, 330,], RAY_35: [560, 400, 330, 560, 400, 330,], RAY_45: [560, 400, 330, 560, 400, 330,],},
+ 1: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],},
+ 2: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],},
+ 3: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],},
+ 4: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],},
+ 5: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],},
+ 6: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],},
+ 7: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],},
}
var constants: Dictionary
var pribor_config: Dictionary
@@ -263,7 +263,6 @@ class TestPRD extends Node:
var flag_si_fs_input: bool = false
var flag_si_fs_output: bool = false
var unit_prd: Object
- var module_prd: Object
var power_amplify: Array
var power_result: Dictionary
#var control_label: Label
@@ -274,6 +273,7 @@ class TestPRD extends Node:
signal update_progress(progress_value: float)
signal update_max_value_progress(max_progress_value: int)
var cc: int = 0
+ var cmd_array: Array
var progress_value: float:
set(v):
@@ -285,13 +285,14 @@ class TestPRD extends Node:
var ecms: Dictionary ## Словарь помеховых воздействий
## Инициализация аргуметнов
- func _init(init_data: Dictionary) -> void:
+ func _init(init_data: Dictionary, cmd_array_from_prd: Array) -> void:
unit_prd = init_data['unit_prd']
+ cmd_array = cmd_array_from_prd
func _ready() -> void:
- initialize_connections()
_determine_self_name()
+ initialize_connections()
setup_timer()
@@ -301,7 +302,7 @@ class TestPRD extends Node:
## Пакеты от ЯУ-07
func on_data_received(unit_pribor: Object) -> void:
- if not is_inside_tree():
+ if machine_timer.is_stopped():
return
var status: PackedByteArray = unit_pribor.status
@@ -369,7 +370,7 @@ class TestPRD extends Node:
state = STATE_MACHINE.READ_ISA
STATE_MACHINE.READ_ISA:
if (unit_prd.cmd_state == unit_prd.CmdState.DONE) or (unit_prd.cmd_state == unit_prd.CmdState.FAIL):
- _handle_read_isa(module_prd, unit_prd, [constants.ADDR_UG_LITERA_1, constants.ADDR_UG_LITERA_2, constants.ADDR_UG_LITERA_3])
+ _handle_read_isa(unit_prd, [constants.ADDR_UG_LITERA_1, constants.ADDR_UG_LITERA_2, constants.ADDR_UG_LITERA_3], cmd_array)
flag_write_isa = false
state = STATE_MACHINE.UG_SET_RAY
STATE_MACHINE.UG_SET_RAY:
@@ -483,15 +484,12 @@ class TestPRD extends Node:
elif self_name == '1н' or self_name == '2н' or self_name == '3н' or self_name == '4н':
dic_att['ATT_UM_1'] = constants.ATT_UM_2
dic_att['ATT_UM_2'] = constants.ATT_UM_3
-
- ##var log_text = dic_att.ATT_UM_3 if current_litera == 1 else dic_att.ATT_UM_1 if current_litera in [2, 4, 6] else dic_att.ATT_UM_2
- ## 'Выполняется настройка угла (%s) и атт (0x0%s)' % [dic_att.RAY_DOU_NUM, log_text]
- flag_write_isa = on_ug_setting(module_prd, unit_prd, dic_att)
+ flag_write_isa = on_ug_setting(unit_prd, dic_att, cmd_array)
## Таймер отправки команды в ЭМС-Г для модуляции
func _on_ems_6666_timer() -> void:
- module_prd.cmd_array.append([unit_prd.CmdCode.WRITE_ISA, [constants.BASE_ADDR_EMS_G, 6666]])
+ cmd_array.append([unit_prd.CmdCode.WRITE_ISA, [constants.BASE_ADDR_EMS_G, 6666]])
## Таймер вызова машины состояний
@@ -690,10 +688,10 @@ class TestPRD extends Node:
## Установка угла и аттенюации для УМ
- static func on_ug_setting(prd_module: Object, prd_unit: Object, settings_ug: Dictionary) -> bool:
+ static func on_ug_setting(prd_unit: Object, settings_ug: Dictionary, prd_cmd_array: Array) -> bool:
var result_1 = ((settings_ug.ATT_UM_1 & 0x07) << 3) | (settings_ug.RAY_DOU_NUM & 0x07)
var result_2 = ((settings_ug.ATT_UM_2 & 0x07) << 3) | (settings_ug.RAY_DOU_NUM & 0x07)
- prd_module.cmd_array.append([prd_unit.CmdCode.WRITE_ISA, [ settings_ug.ADDR_UG_LITERA_1, result_1,
+ prd_cmd_array.append([prd_unit.CmdCode.WRITE_ISA, [ settings_ug.ADDR_UG_LITERA_1, result_1,
settings_ug.ADDR_UG_LITERA_2, result_2,
settings_ug.ADDR_UG_LITERA_3, settings_ug.ATT_UM_3,
]
@@ -701,8 +699,8 @@ class TestPRD extends Node:
return true
- static func _handle_read_isa(prd_module: Object, prd_unit: Object, read_isa_ports: Array) -> void:
- prd_module.cmd_array.append([prd_unit.CmdCode.READ_ISA, read_isa_ports])
+ static func _handle_read_isa(prd_unit: Object, read_isa_ports: Array, prd_cmd_array) -> void:
+ prd_cmd_array.append([prd_unit.CmdCode.READ_ISA, read_isa_ports])
## Управаление модулем фс (включить/отключить излучение)
@@ -771,14 +769,14 @@ class TestPRD extends Node:
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].value1 = tmp_1
+ #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
+ #power_amplifier[6].value1 = tmp_1
if tmp_1>70:
all_temp_is_ok = false
@@ -787,11 +785,11 @@ class TestPRD extends Node:
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)
if power_amplifier.size() > 12:
- power_amplifier[i_temp+7].value1 = tmp_2
+ #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
+ #power_amplifier[i_temp+6].value1 = tmp_2
if tmp_2>70:
all_temp_is_ok = false
return all_temp_is_ok
diff --git a/table/table.gd b/table/table.gd
index f1706f3d..0392d5a0 100644
--- a/table/table.gd
+++ b/table/table.gd
@@ -448,6 +448,7 @@ func remove_row(i_row: int):
if nodes.has(sel_key):
var selector = nodes[sel_key]
+ if selector == null: return
var prnt = selector.get_parent()
prnt.remove_child(selector)
selector.queue_free()
@@ -484,8 +485,11 @@ func next_index(indexes: Array) -> void:
func swap_nodes(nodes_copy, node_key_format, i0, i1) -> void:
var key0 = node_key_format % [i0.y, i0.x]
var key1 = node_key_format % [i1.y, i1.x]
- nodes_copy[key1] = nodes[key0]
- nodes_copy[key1].name = key1
+ if is_instance_valid(nodes[key0]):
+ nodes_copy[key1] = nodes[key0]
+ nodes_copy[key1].name = key1
+ else:
+ print_debug("Ошибка: нод ", key0, " был освобожден")
## Переназначает ключи в соответствии с размерами таблицы.