From f39212232ae1c2eb50ce0c00a0bbfcd4f2226de4 Mon Sep 17 00:00:00 2001
From: TotMaxim
Date: Mon, 17 Nov 2025 21:16:48 +0300
Subject: [PATCH 1/4] =?UTF-8?q?=D0=9C=D0=BE=D0=B4=D0=B8=D1=84=D0=B8=D0=BA?=
=?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D0=BA?=
=?UTF-8?q?=D1=80=D0=B8=20=D0=B8=20=D1=80=D0=B5=D0=B7=D1=83=D0=BB=D1=8C?=
=?UTF-8?q?=D1=82=D0=B0=D1=82=D0=B0=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE?=
=?UTF-8?q?=D0=BB=D1=8F=20=D1=83=D0=BC,=20=D0=B5=D1=81=D0=BB=D0=B8=203=20?=
=?UTF-8?q?=D0=BB=D1=83=D1=87=D0=B0=20=D0=BF=D1=80=D0=BE=D1=85=D0=BE=D0=B4?=
=?UTF-8?q?=D1=8F=D1=82=20=D0=BF=D0=BE=20=D0=BC=D0=BE=D1=89=D0=BD=D0=BE?=
=?UTF-8?q?=D1=81=D1=82=D0=B8,=20=D1=82=D0=BE=20=D1=83=D0=BC=20=D1=81?=
=?UTF-8?q?=D1=87=D0=B8=D1=82=D0=B0=D0=B5=D1=82=D1=81=D1=8F=20=D0=B8=D1=81?=
=?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BD=D1=8B=D0=BC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
scenes/pribor-prd-k/pribor-prd-k.gd | 43 ++++++++++++++---------------
scenes/pribor-prd-n/pribor-prd-n.gd | 7 +++--
scenes/pribor-prd-v/pribor-prd-v.gd | 26 ++++++++---------
3 files changed, 38 insertions(+), 38 deletions(-)
diff --git a/scenes/pribor-prd-k/pribor-prd-k.gd b/scenes/pribor-prd-k/pribor-prd-k.gd
index e56f21b..e9942ed 100644
--- a/scenes/pribor-prd-k/pribor-prd-k.gd
+++ b/scenes/pribor-prd-k/pribor-prd-k.gd
@@ -69,31 +69,28 @@ static func temperature_fill(temperature_arr_node: Array, temperature_dic: Dicti
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')
+static func power_fill(pow_dic: Dictionary, fs_result: Dictionary, power_amplifier_arr_node: Array, POWER_THRESHOLD: int) -> void:
+ for i_node_temperature in power_amplifier_arr_node:
+ var powamp_meta: String = i_node_temperature.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:
- if not pow_dic.has(powamp_meta):
- break
- if pow_dic[powamp_meta].size() < 6:
- status = STATE_VAL.ERROR
- else:
- if powamp_meta == 'um_8' and not fs_result.fs_1: return
- if powamp_meta in ['um_1', 'um_2', 'um_3', 'um_4', 'um_5', 'um_6'] and not fs_result.fs_6: return
- if powamp_meta in ['um_9', 'um_10', 'um_11', 'um_12', 'um_13', 'um_14'] and not fs_result.fs_7: return
-
- if powamp_meta == 'um_8':
- i_powapm.value0 = [pow_dic[powamp_meta][5]]
- if pow_dic[powamp_meta][5] < POWER_THRESHOLD:
- status = STATE_VAL.ERROR
- else:
- 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
+ # Проверки fs_result
+ if powamp_meta == 'um_8' and not fs_result.fs_1: return
+ if powamp_meta in ['um_1', 'um_2', 'um_3', 'um_4', 'um_5', 'um_6'] and not fs_result.fs_6: return
+ if powamp_meta in ['um_9', 'um_10', 'um_11', 'um_12', 'um_13', 'um_14'] and not fs_result.fs_7: return
+
+ if powamp_meta == 'um_8':
+ i_node_temperature.value0 = [pow_dic[powamp_meta][5]]
+ status = STATE_VAL.ERROR if pow_dic[powamp_meta][5] < POWER_THRESHOLD else STATE_VAL.GOOD
+ else:
+ i_node_temperature.value0 = pow_dic[powamp_meta]
+ # Проверки 3 значения = исправен
+ var count_above_threshold = 0
+ for i_p in pow_dic[powamp_meta]:
+ if i_p >= POWER_THRESHOLD:
+ count_above_threshold += 1
+ status = STATE_VAL.GOOD if count_above_threshold >= 3 else STATE_VAL.ERROR
+ i_node_temperature.state = status
func on_press_device() -> void:
diff --git a/scenes/pribor-prd-n/pribor-prd-n.gd b/scenes/pribor-prd-n/pribor-prd-n.gd
index 7562d1e..826ac6f 100644
--- a/scenes/pribor-prd-n/pribor-prd-n.gd
+++ b/scenes/pribor-prd-n/pribor-prd-n.gd
@@ -75,9 +75,12 @@ static func power_fill(pow_dic: Dictionary, fs_result: Dictionary, power_amplifi
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_9', 'um_10', 'um_11', 'um_12', 'um_13', 'um_14'] and not fs_result.fs_3: return
i_node_powapm.value0 = pow_dic[powamp_meta]
+ var count_above_threshold = 0
for i_p in pow_dic[powamp_meta]:
- if i_p < POWER_THRESHOLD:
- status = STATE_VAL.ERROR
+ if i_p >= POWER_THRESHOLD:
+ count_above_threshold += 1
+
+ status = STATE_VAL.GOOD if count_above_threshold >= 3 else STATE_VAL.ERROR
i_node_powapm.state = status
diff --git a/scenes/pribor-prd-v/pribor-prd-v.gd b/scenes/pribor-prd-v/pribor-prd-v.gd
index 7ad3b6d..9bae5d6 100644
--- a/scenes/pribor-prd-v/pribor-prd-v.gd
+++ b/scenes/pribor-prd-v/pribor-prd-v.gd
@@ -66,21 +66,21 @@ static func temperature_fill(temperature_arr_node: Array, temperature_dic: Dicti
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')
+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_4: return
- if powamp_meta in ['um_9', 'um_10', 'um_11', 'um_12', 'um_13', 'um_14'] and not fs_result.fs_5: 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_4: return
+ if powamp_meta in ['um_9', 'um_10', 'um_11', 'um_12', 'um_13', 'um_14'] and not fs_result.fs_5: return
+ i_node_powapm.value0 = pow_dic[powamp_meta]
+ var count_above_threshold = 0
+ for i_p in pow_dic[powamp_meta]:
+ if i_p >= POWER_THRESHOLD:
+ count_above_threshold += 1
+
+ status = STATE_VAL.GOOD if count_above_threshold >= 3 else STATE_VAL.ERROR
+ i_node_powapm.state = status
func on_press_device() -> void:
From 38c2aa9f8056dacba36e5cc1371ab98b0bfdb820 Mon Sep 17 00:00:00 2001
From: TotMaxim
Date: Mon, 17 Nov 2025 23:35:43 +0300
Subject: [PATCH 2/4] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?=
=?UTF-8?q?=D1=80.=20pribor-prd.gd=20=D0=B8=20=D0=BF=D0=BE=D0=B7=D0=B8?=
=?UTF-8?q?=D1=86=D0=B8=D0=B8=20=D1=81=D1=86=D0=B5=D0=BD=D1=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
scenes/pribor-afsp/pribor-afsp-1.tscn | 2 +
scenes/pribor-afsp/pribor-afsp-2.tscn | 8 +-
scenes/pribor-afsp/pribor-bpo.tscn | 60 +++----
scenes/pribor-prd-k/pribor-prd-k.gd | 12 +-
scenes/pribor-prd-k/pribor-prd-k.tscn | 216 +++++++++++++-------------
scenes/pribor-prd-n/pribor-prd-n.gd | 8 +-
scenes/pribor-prd-n/pribor-prd-n.tscn | 185 +++++++++++-----------
scenes/pribor-prd-v/pribor-prd-v.gd | 8 +-
scenes/pribor-prd-v/pribor-prd-v.tscn | 195 ++++++++++++-----------
scenes/pribor-uf/pribor-uf.gd | 2 +-
scenes/pribor-uf/pribor-uf.tscn | 30 ++--
scenes/pribor-uyep/pribor-uyep.tscn | 32 ++--
scenes/контроль/контроль.tscn | 57 +++----
scripts/pribor-prd.gd | 180 ++++++++++-----------
14 files changed, 518 insertions(+), 477 deletions(-)
diff --git a/scenes/pribor-afsp/pribor-afsp-1.tscn b/scenes/pribor-afsp/pribor-afsp-1.tscn
index 867517f..1e3e72c 100644
--- a/scenes/pribor-afsp/pribor-afsp-1.tscn
+++ b/scenes/pribor-afsp/pribor-afsp-1.tscn
@@ -30,7 +30,9 @@ autostart = true
[node name="bort" parent="." instance=ExtResource("3_d7iti")]
layout_mode = 0
+offset_left = 24.0
offset_top = 27.7778
+offset_right = 604.0
offset_bottom = 1216.78
metadata/DeviceName = &"Устройство РР левого борта"
diff --git a/scenes/pribor-afsp/pribor-afsp-2.tscn b/scenes/pribor-afsp/pribor-afsp-2.tscn
index 51ff32d..687a573 100644
--- a/scenes/pribor-afsp/pribor-afsp-2.tscn
+++ b/scenes/pribor-afsp/pribor-afsp-2.tscn
@@ -7,9 +7,9 @@
[node name="pribor_afsp" type="Control"]
layout_mode = 3
anchors_preset = 0
-offset_left = 81.0
+offset_left = 82.0
offset_top = 108.0
-offset_right = 81.0
+offset_right = 82.0
offset_bottom = 108.0
scale = Vector2(1, 0.9)
script = ExtResource("1_tfses")
@@ -30,9 +30,9 @@ autostart = true
[node name="bort" parent="." instance=ExtResource("3_xpxb5")]
layout_mode = 0
-offset_left = -11.0
+offset_left = 12.0
offset_top = -59.0
-offset_right = 569.0
+offset_right = 592.0
offset_bottom = 1130.0
metadata/DeviceName = &"Устройство РР правого борта"
diff --git a/scenes/pribor-afsp/pribor-bpo.tscn b/scenes/pribor-afsp/pribor-bpo.tscn
index 36d5db0..06d13c7 100644
--- a/scenes/pribor-afsp/pribor-bpo.tscn
+++ b/scenes/pribor-afsp/pribor-bpo.tscn
@@ -9,9 +9,9 @@
layout_mode = 3
anchors_preset = 0
offset_left = 115.0
-offset_top = 150.0
+offset_top = 148.0
offset_right = 115.0
-offset_bottom = 150.0
+offset_bottom = 148.0
script = ExtResource("1_bhc4e")
prefix_path = "DeviceDescription[DeviceName]"
this_bpo1_name = "Устройство БПО левого борта"
@@ -24,10 +24,10 @@ settings_path_to_wait_time = "Период опроса состояния БП
[node name="mod_pit_g1" parent="." instance=ExtResource("2_jp6m0")]
layout_mode = 2
-offset_left = 40.0
-offset_top = 535.0
-offset_right = 560.0
-offset_bottom = 605.0
+offset_left = 9.0
+offset_top = 377.0
+offset_right = 529.0
+offset_bottom = 447.0
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Модуль электропитания"
@@ -35,20 +35,20 @@ rname = "G1"
[node name="blok_bpo_a1" parent="." instance=ExtResource("2_jp6m0")]
layout_mode = 0
-offset_left = 40.0
-offset_top = 135.0
-offset_right = 560.0
-offset_bottom = 330.0
+offset_left = 9.0
+offset_top = -23.0
+offset_right = 529.0
+offset_bottom = 172.0
show_state = false
fname = "Блок БПО левого борта"
rname = "А1"
[node name="grid_bpo_a1" type="GridContainer" parent="."]
layout_mode = 0
-offset_left = 50.0
-offset_top = 175.0
-offset_right = 498.0
-offset_bottom = 320.0
+offset_left = 19.0
+offset_top = 17.0
+offset_right = 467.0
+offset_bottom = 162.0
columns = 4
[node name="kanal1" parent="grid_bpo_a1" groups=["потребитель-питания"] instance=ExtResource("2_jp6m0")]
@@ -108,30 +108,30 @@ fname = "Канал 8"
metadata/state = "SelfTest[0].SystemList[0].DevList[7]['TestPassed']"
[node name="yas_bpo_a1" parent="." groups=["потребитель-питания"] instance=ExtResource("3_jcpjs")]
-offset_left = 500.0
-offset_top = 175.0
-offset_right = 550.0
-offset_bottom = 320.0
+offset_left = 469.0
+offset_top = 17.0
+offset_right = 519.0
+offset_bottom = 162.0
show_rname = false
self_size = Vector2i(50, 145)
fname = "Яч. связи"
[node name="blok_bpo_a2" parent="." instance=ExtResource("2_jp6m0")]
layout_mode = 0
-offset_left = 40.0
-offset_top = 335.0
-offset_right = 560.0
-offset_bottom = 530.0
+offset_left = 9.0
+offset_top = 177.0
+offset_right = 529.0
+offset_bottom = 372.0
show_state = false
fname = "Блок БПО правого борта"
rname = "А2"
[node name="grid_bpo_a2" type="GridContainer" parent="."]
layout_mode = 0
-offset_left = 50.0
-offset_top = 375.0
-offset_right = 498.0
-offset_bottom = 520.0
+offset_left = 19.0
+offset_top = 217.0
+offset_right = 467.0
+offset_bottom = 362.0
columns = 4
[node name="kanal1" parent="grid_bpo_a2" groups=["потребитель-питания", "управляется-по-шине-2"] instance=ExtResource("2_jp6m0")]
@@ -191,10 +191,10 @@ fname = "Канал 8"
metadata/state = "SelfTest[0].SystemList[0].DevList[7]['TestPassed']"
[node name="yas_bpo_a2" parent="." groups=["потребитель-питания"] instance=ExtResource("3_jcpjs")]
-offset_left = 500.0
-offset_top = 375.0
-offset_right = 550.0
-offset_bottom = 520.0
+offset_left = 469.0
+offset_top = 217.0
+offset_right = 519.0
+offset_bottom = 362.0
show_rname = false
self_size = Vector2i(50, 145)
fname = "Яч. связи"
diff --git a/scenes/pribor-prd-k/pribor-prd-k.gd b/scenes/pribor-prd-k/pribor-prd-k.gd
index e9942ed..735f362 100644
--- a/scenes/pribor-prd-k/pribor-prd-k.gd
+++ b/scenes/pribor-prd-k/pribor-prd-k.gd
@@ -25,12 +25,12 @@ func _ready() -> void:
func _process(_delta: float) -> void:
if Engine.is_editor_hint():
return
- set_frame($input_0, unit_prd_k.ems_input_1)
- set_frame($input_1, unit_prd_k.ems_input_2)
- set_frame($input_2, unit_prd_k.ems_input_lit_1)
- set_frame($output_0, unit_prd_k.ems_output_1)
- set_frame($output_1, unit_prd_k.ems_output_2)
- set_frame($output_2, unit_prd_k.ems_output_lit_1)
+ set_frame($input_0, unit_prd_k.ems_g_sock_dic.ems_input_1)
+ set_frame($input_1, unit_prd_k.ems_g_sock_dic.ems_input_2)
+ set_frame($input_2, unit_prd_k.ems_g_sock_dic.ems_input_lit_1)
+ set_frame($output_0, unit_prd_k.ems_g_sock_dic.ems_output_1)
+ set_frame($output_1, unit_prd_k.ems_g_sock_dic.ems_output_2)
+ set_frame($output_2, unit_prd_k.ems_g_sock_dic.ems_output_lit_1)
func set_frame(node_frame: Node, val: int): node_frame.set_frame(val)
diff --git a/scenes/pribor-prd-k/pribor-prd-k.tscn b/scenes/pribor-prd-k/pribor-prd-k.tscn
index 2a448dd..5067097 100644
--- a/scenes/pribor-prd-k/pribor-prd-k.tscn
+++ b/scenes/pribor-prd-k/pribor-prd-k.tscn
@@ -46,55 +46,55 @@ script = ExtResource("1_tpdyp")
[node name="kasseta_u5" parent="." instance=ExtResource("2_tb85r")]
layout_mode = 0
-offset_left = 175.0
-offset_top = 242.0
-offset_right = 485.0
-offset_bottom = 432.0
+offset_left = 214.0
+offset_top = 96.0
+offset_right = 524.0
+offset_bottom = 286.0
[node name="maa2000_A22" parent="." groups=["power_supply"] instance=ExtResource("1_8dmgr")]
layout_mode = 0
-offset_left = 485.0
-offset_top = 907.0
-offset_right = 652.0
-offset_bottom = 949.0
+offset_left = 524.0
+offset_top = 761.0
+offset_right = 691.0
+offset_bottom = 803.0
fname = "MAA2000"
rname = "A28"
metadata/ip = "maa2000_1"
[node name="dou6_A7" parent="." groups=["default_reset"] instance=ExtResource("1_8dmgr")]
layout_mode = 0
-offset_left = 8.0
-offset_top = 862.0
-offset_right = 175.0
-offset_bottom = 907.0
+offset_left = 47.0
+offset_top = 716.0
+offset_right = 214.0
+offset_bottom = 761.0
fname = "ДОУ-6"
rname = "A7"
[node name="maa2000_A23" parent="." groups=["power_supply"] instance=ExtResource("1_8dmgr")]
layout_mode = 0
-offset_left = 8.0
-offset_top = 907.0
-offset_right = 175.0
-offset_bottom = 949.0
+offset_left = 47.0
+offset_top = 761.0
+offset_right = 214.0
+offset_bottom = 803.0
fname = "MAA2000"
rname = "A27"
metadata/ip = "maa2000_2"
[node name="dou7_A8" parent="." groups=["default_reset"] instance=ExtResource("1_8dmgr")]
layout_mode = 0
-offset_left = 8.0
-offset_top = 812.0
-offset_right = 175.0
-offset_bottom = 860.0
+offset_left = 47.0
+offset_top = 666.0
+offset_right = 214.0
+offset_bottom = 714.0
fname = "ДОУ-7"
rname = "A8"
[node name="ref_ZZ3" type="NinePatchRect" parent="."]
layout_mode = 0
-offset_left = 175.0
-offset_top = 812.0
-offset_right = 485.0
-offset_bottom = 949.0
+offset_left = 214.0
+offset_top = 666.0
+offset_right = 524.0
+offset_bottom = 803.0
texture = ExtResource("2_14h25")
patch_margin_left = 16
patch_margin_top = 16
@@ -115,10 +115,10 @@ vertical_alignment = 1
[node name="um1535_A10" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")]
layout_mode = 0
-offset_left = 485.0
-offset_top = 242.0
-offset_right = 652.0
-offset_bottom = 337.0
+offset_left = 524.0
+offset_top = 96.0
+offset_right = 691.0
+offset_bottom = 191.0
value0 = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
fname = "УМ1535Б"
rname = "A10"
@@ -128,10 +128,10 @@ metadata/um = "um_1"
[node name="um1535_A11" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")]
layout_mode = 0
-offset_left = 485.0
-offset_top = 337.0
-offset_right = 652.0
-offset_bottom = 432.0
+offset_left = 524.0
+offset_top = 191.0
+offset_right = 691.0
+offset_bottom = 286.0
fname = "УМ1535Б"
rname = "A11"
value0_info = "Мощность"
@@ -140,10 +140,10 @@ metadata/um = "um_2"
[node name="um1535_A12" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")]
layout_mode = 0
-offset_left = 485.0
-offset_top = 432.0
-offset_right = 652.0
-offset_bottom = 527.0
+offset_left = 524.0
+offset_top = 286.0
+offset_right = 691.0
+offset_bottom = 381.0
fname = "УМ1535Б"
rname = "A12"
value0_info = "Мощность"
@@ -152,10 +152,10 @@ metadata/um = "um_3"
[node name="um1535_A13" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")]
layout_mode = 0
-offset_left = 485.0
-offset_top = 527.0
-offset_right = 652.0
-offset_bottom = 622.0
+offset_left = 524.0
+offset_top = 381.0
+offset_right = 691.0
+offset_bottom = 476.0
fname = "УМ1535Б"
rname = "A13"
value0_info = "Мощность"
@@ -164,10 +164,10 @@ metadata/um = "um_4"
[node name="um1535_A14" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")]
layout_mode = 0
-offset_left = 485.0
-offset_top = 622.0
-offset_right = 652.0
-offset_bottom = 717.0
+offset_left = 524.0
+offset_top = 476.0
+offset_right = 691.0
+offset_bottom = 571.0
fname = "УМ1535Б"
rname = "A14"
value0_info = "Мощность"
@@ -176,10 +176,10 @@ metadata/um = "um_5"
[node name="um1535_A15" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")]
layout_mode = 0
-offset_left = 485.0
-offset_top = 717.0
-offset_right = 652.0
-offset_bottom = 812.0
+offset_left = 524.0
+offset_top = 571.0
+offset_right = 691.0
+offset_bottom = 666.0
fname = "УМ1535Б"
rname = "A15"
value0_info = "Мощность"
@@ -188,10 +188,10 @@ metadata/um = "um_6"
[node name="блок-к" parent="." groups=["power_amplifier"] instance=ExtResource("6_wd1vi")]
layout_mode = 0
-offset_left = 485.0
-offset_top = 812.0
-offset_right = 652.0
-offset_bottom = 907.0
+offset_left = 524.0
+offset_top = 666.0
+offset_right = 691.0
+offset_bottom = 761.0
fname = "УТМ80"
rname = "A9"
value0_info = "Мощность"
@@ -200,10 +200,10 @@ metadata/um = "um_8"
[node name="rm1620m_A16" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")]
layout_mode = 0
-offset_left = 8.0
-offset_top = 242.0
-offset_right = 175.0
-offset_bottom = 337.0
+offset_left = 47.0
+offset_top = 96.0
+offset_right = 214.0
+offset_bottom = 191.0
fname = "РМ16-20М"
rname = "A16"
value0_info = "Мощность"
@@ -212,10 +212,10 @@ metadata/um = "um_9"
[node name="rm1620m_A17" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")]
layout_mode = 0
-offset_left = 8.0
-offset_top = 337.0
-offset_right = 173.0
-offset_bottom = 432.0
+offset_left = 47.0
+offset_top = 191.0
+offset_right = 212.0
+offset_bottom = 286.0
fname = "РМ16-20М"
rname = "A17"
value0_info = "Мощность"
@@ -224,10 +224,10 @@ metadata/um = "um_10"
[node name="rm1620m_A18" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")]
layout_mode = 0
-offset_left = 8.0
-offset_top = 432.0
-offset_right = 175.0
-offset_bottom = 527.0
+offset_left = 47.0
+offset_top = 286.0
+offset_right = 214.0
+offset_bottom = 381.0
fname = "РМ16-20М"
rname = "A18"
value0_info = "Мощность"
@@ -236,10 +236,10 @@ metadata/um = "um_11"
[node name="rm1620m_A19" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")]
layout_mode = 0
-offset_left = 8.0
-offset_top = 527.0
-offset_right = 175.0
-offset_bottom = 622.0
+offset_left = 47.0
+offset_top = 381.0
+offset_right = 214.0
+offset_bottom = 476.0
fname = "РМ16-20М"
rname = "A19"
value0_info = "Мощность"
@@ -248,10 +248,10 @@ metadata/um = "um_12"
[node name="rm1620m_A20" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")]
layout_mode = 0
-offset_left = 8.0
-offset_top = 622.0
-offset_right = 175.0
-offset_bottom = 717.0
+offset_left = 47.0
+offset_top = 476.0
+offset_right = 214.0
+offset_bottom = 571.0
fname = "РМ16-20М"
rname = "A20"
value0_info = "Мощность"
@@ -260,10 +260,10 @@ metadata/um = "um_13"
[node name="rm1620m_A21" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")]
layout_mode = 0
-offset_left = 8.0
-offset_top = 717.0
-offset_right = 175.0
-offset_bottom = 812.0
+offset_left = 47.0
+offset_top = 571.0
+offset_right = 214.0
+offset_bottom = 666.0
fname = "РМ16-20М"
rname = "A21"
value0_info = "Мощность"
@@ -272,18 +272,18 @@ metadata/um = "um_14"
[node name="kasseta_fs_kd" parent="." instance=ExtResource("7_ia27q")]
layout_mode = 0
-offset_left = 175.0
-offset_top = 432.0
-offset_right = 485.0
-offset_bottom = 622.0
+offset_left = 214.0
+offset_top = 286.0
+offset_right = 524.0
+offset_bottom = 476.0
fname = "Кассета ФС-КД"
[node name="kasseta_p_1" type="NinePatchRect" parent="."]
layout_mode = 0
-offset_left = 175.0
-offset_top = 622.0
-offset_right = 340.0
-offset_bottom = 812.0
+offset_left = 214.0
+offset_top = 476.0
+offset_right = 379.0
+offset_bottom = 666.0
texture = ExtResource("2_14h25")
patch_margin_left = 16
patch_margin_top = 16
@@ -332,42 +332,50 @@ vertical_alignment = 1
[node name="kasseta_p_2" parent="." instance=ExtResource("8_6fdp7")]
layout_mode = 0
-offset_left = 365.0
-offset_top = 622.0
-offset_right = 485.0
-offset_bottom = 812.0
+offset_left = 404.0
+offset_top = 476.0
+offset_right = 524.0
+offset_bottom = 666.0
fname = "Кассета П-2"
-[node name="control_result" type="Label" parent="."]
-layout_mode = 0
-offset_left = 9.0
-offset_top = 960.0
-offset_right = 649.0
-offset_bottom = 1003.0
-text = "Прибор ПРД- неисправен"
-horizontal_alignment = 1
-metadata/_edit_lock_ = true
-
[node name="input_0" type="AnimatedSprite2D" parent="."]
-position = Vector2(353, 618)
+position = Vector2(392, 472)
sprite_frames = SubResource("SpriteFrames_di0aa")
[node name="input_1" type="AnimatedSprite2D" parent="."]
-position = Vector2(405, 618)
+position = Vector2(444, 472)
sprite_frames = SubResource("SpriteFrames_di0aa")
[node name="input_2" type="AnimatedSprite2D" parent="."]
-position = Vector2(255, 619)
+position = Vector2(294, 473)
sprite_frames = SubResource("SpriteFrames_di0aa")
[node name="output_0" type="AnimatedSprite2D" parent="."]
-position = Vector2(355, 464)
+position = Vector2(394, 318)
sprite_frames = SubResource("SpriteFrames_di0aa")
[node name="output_1" type="AnimatedSprite2D" parent="."]
-position = Vector2(405, 464)
+position = Vector2(444, 318)
sprite_frames = SubResource("SpriteFrames_di0aa")
[node name="output_2" type="AnimatedSprite2D" parent="."]
-position = Vector2(255, 464)
+position = Vector2(294, 318)
sprite_frames = SubResource("SpriteFrames_di0aa")
+
+[node name="control_result" type="Label" parent="."]
+layout_mode = 0
+offset_left = 49.0
+offset_top = 993.0
+offset_right = 689.0
+offset_bottom = 1036.0
+theme_override_font_sizes/font_size = 22
+horizontal_alignment = 1
+metadata/_edit_lock_ = true
+
+[node name="line" type="Line2D" parent="."]
+position = Vector2(59, 920)
+scale = Vector2(1.03548, 1)
+points = PackedVector2Array(-8, 0, 61.8069, 0, 608, 0)
+width = 2.0
+default_color = Color(1, 1, 1, 0.352941)
+metadata/_edit_lock_ = true
diff --git a/scenes/pribor-prd-n/pribor-prd-n.gd b/scenes/pribor-prd-n/pribor-prd-n.gd
index 826ac6f..f220e97 100644
--- a/scenes/pribor-prd-n/pribor-prd-n.gd
+++ b/scenes/pribor-prd-n/pribor-prd-n.gd
@@ -25,10 +25,10 @@ func _ready() -> void:
func _process(_delta: float) -> void:
if Engine.is_editor_hint():
return
- set_frame($input_0, unit_prd_n.ems_input_1)
- set_frame($input_1, unit_prd_n.ems_input_2)
- set_frame($output_0, unit_prd_n.ems_output_1)
- set_frame($output_1, unit_prd_n.ems_output_2)
+ set_frame($input_0, unit_prd_n.ems_g_sock_dic.ems_input_1)
+ set_frame($input_1, unit_prd_n.ems_g_sock_dic.ems_input_2)
+ set_frame($output_0, unit_prd_n.ems_g_sock_dic.ems_output_1)
+ set_frame($output_1, unit_prd_n.ems_g_sock_dic.ems_output_2)
func set_frame(node_frame: Node, val: int): node_frame.set_frame(val)
diff --git a/scenes/pribor-prd-n/pribor-prd-n.tscn b/scenes/pribor-prd-n/pribor-prd-n.tscn
index acb800a..3e041eb 100644
--- a/scenes/pribor-prd-n/pribor-prd-n.tscn
+++ b/scenes/pribor-prd-n/pribor-prd-n.tscn
@@ -42,48 +42,48 @@ script = ExtResource("1_bnnv3")
[node name="maa2000_A23" parent="." groups=["power_supply"] instance=ExtResource("2_is25t")]
layout_mode = 2
-offset_left = 8.0
-offset_top = 877.0
-offset_right = 175.0
-offset_bottom = 949.0
+offset_left = 47.0
+offset_top = 731.0
+offset_right = 214.0
+offset_bottom = 803.0
fname = "MAA2000"
rname = "A23"
metadata/ip = "maa2000_2"
[node name="maa2000_A22" parent="." groups=["power_supply"] instance=ExtResource("2_is25t")]
layout_mode = 2
-offset_left = 485.0
-offset_top = 877.0
-offset_right = 652.0
-offset_bottom = 949.0
+offset_left = 524.0
+offset_top = 731.0
+offset_right = 691.0
+offset_bottom = 803.0
fname = "MAA2000"
rname = "A22"
metadata/ip = "maa2000_1"
[node name="dou2_A5" parent="." groups=["default_reset"] instance=ExtResource("2_is25t")]
layout_mode = 2
-offset_left = 485.0
-offset_top = 812.0
-offset_right = 652.0
-offset_bottom = 877.0
+offset_left = 524.0
+offset_top = 666.0
+offset_right = 691.0
+offset_bottom = 731.0
fname = "ДОУ-2"
rname = "A5"
[node name="dou3_A6" parent="." groups=["default_reset"] instance=ExtResource("2_is25t")]
layout_mode = 2
-offset_left = 8.0
-offset_top = 812.0
-offset_right = 175.0
-offset_bottom = 877.0
+offset_left = 47.0
+offset_top = 666.0
+offset_right = 214.0
+offset_bottom = 731.0
fname = "ДОУ-3"
rname = "A6"
[node name="ref_ZZ3" type="NinePatchRect" parent="."]
layout_mode = 0
-offset_left = 175.0
-offset_top = 812.0
-offset_right = 485.0
-offset_bottom = 949.0
+offset_left = 214.0
+offset_top = 666.0
+offset_right = 524.0
+offset_bottom = 803.0
texture = ExtResource("3_meukj")
patch_margin_left = 16
patch_margin_top = 16
@@ -104,10 +104,10 @@ vertical_alignment = 1
[node name="kasseta_U5" type="NinePatchRect" parent="."]
layout_mode = 0
-offset_left = 175.0
-offset_top = 242.0
-offset_right = 485.0
-offset_bottom = 432.0
+offset_left = 214.0
+offset_top = 96.0
+offset_right = 524.0
+offset_bottom = 286.0
texture = ExtResource("3_meukj")
patch_margin_left = 16
patch_margin_top = 16
@@ -182,10 +182,10 @@ metadata/y5 = "ukp2"
[node name="kasseta_FS_ND" type="NinePatchRect" parent="."]
layout_mode = 0
-offset_left = 175.0
-offset_top = 432.0
-offset_right = 485.0
-offset_bottom = 622.0
+offset_left = 214.0
+offset_top = 286.0
+offset_right = 524.0
+offset_bottom = 476.0
texture = ExtResource("3_meukj")
patch_margin_left = 16
patch_margin_top = 16
@@ -242,10 +242,10 @@ rname = "A3"
[node name="kasseta_P_1" type="NinePatchRect" parent="."]
layout_mode = 0
-offset_left = 175.0
-offset_top = 622.0
-offset_right = 485.0
-offset_bottom = 812.0
+offset_left = 214.0
+offset_top = 476.0
+offset_right = 524.0
+offset_bottom = 666.0
texture = ExtResource("3_meukj")
patch_margin_left = 16
patch_margin_top = 16
@@ -294,10 +294,10 @@ vertical_alignment = 1
[node name="um1535_A7" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
layout_mode = 0
-offset_left = 485.0
-offset_top = 242.0
-offset_right = 652.0
-offset_bottom = 337.0
+offset_left = 524.0
+offset_top = 96.0
+offset_right = 691.0
+offset_bottom = 191.0
fname = "УМ1535А"
rname = "A7"
value0_info = "Мощность"
@@ -306,10 +306,10 @@ metadata/um = "um_1"
[node name="um1535_A8" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
layout_mode = 0
-offset_left = 485.0
-offset_top = 337.0
-offset_right = 652.0
-offset_bottom = 432.0
+offset_left = 524.0
+offset_top = 191.0
+offset_right = 691.0
+offset_bottom = 286.0
fname = "УМ1535А"
rname = "A8"
value0_info = "Мощность"
@@ -318,10 +318,10 @@ metadata/um = "um_2"
[node name="um1535_A9" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
layout_mode = 0
-offset_left = 485.0
-offset_top = 432.0
-offset_right = 652.0
-offset_bottom = 527.0
+offset_left = 524.0
+offset_top = 286.0
+offset_right = 691.0
+offset_bottom = 381.0
fname = "УМ1535А"
rname = "A9"
value0_info = "Мощность"
@@ -330,10 +330,10 @@ metadata/um = "um_3"
[node name="um1535_A10" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
layout_mode = 0
-offset_left = 485.0
-offset_top = 527.0
-offset_right = 652.0
-offset_bottom = 622.0
+offset_left = 524.0
+offset_top = 381.0
+offset_right = 691.0
+offset_bottom = 476.0
fname = "УМ1535А"
rname = "A10"
value0_info = "Мощность"
@@ -342,10 +342,10 @@ metadata/um = "um_4"
[node name="um1535_A11" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
layout_mode = 0
-offset_left = 485.0
-offset_top = 622.0
-offset_right = 652.0
-offset_bottom = 717.0
+offset_left = 524.0
+offset_top = 476.0
+offset_right = 691.0
+offset_bottom = 571.0
fname = "УМ1535А"
rname = "A11"
value0_info = "Мощность"
@@ -354,10 +354,10 @@ metadata/um = "um_5"
[node name="um1535_A12" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
layout_mode = 0
-offset_left = 485.0
-offset_top = 717.0
-offset_right = 652.0
-offset_bottom = 812.0
+offset_left = 524.0
+offset_top = 571.0
+offset_right = 691.0
+offset_bottom = 666.0
fname = "УМ1535А"
rname = "A12"
value0_info = "Мощность"
@@ -366,10 +366,10 @@ metadata/um = "um_6"
[node name="um1535_A13" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
layout_mode = 0
-offset_left = 8.0
-offset_top = 242.0
-offset_right = 175.0
-offset_bottom = 337.0
+offset_left = 47.0
+offset_top = 96.0
+offset_right = 214.0
+offset_bottom = 191.0
fname = "УМ1535А"
rname = "A13"
value0_info = "Мощность"
@@ -378,10 +378,10 @@ metadata/um = "um_9"
[node name="um1535_A14" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
layout_mode = 0
-offset_left = 8.0
-offset_top = 337.0
-offset_right = 175.0
-offset_bottom = 432.0
+offset_left = 47.0
+offset_top = 191.0
+offset_right = 214.0
+offset_bottom = 286.0
fname = "УМ1535А"
rname = "A14"
value0_info = "Мощность"
@@ -390,10 +390,10 @@ metadata/um = "um_10"
[node name="um1535_A15" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
layout_mode = 0
-offset_left = 8.0
-offset_top = 432.0
-offset_right = 175.0
-offset_bottom = 527.0
+offset_left = 47.0
+offset_top = 286.0
+offset_right = 214.0
+offset_bottom = 381.0
fname = "УМ1535А"
rname = "A15"
value0_info = "Мощность"
@@ -402,10 +402,10 @@ metadata/um = "um_11"
[node name="um1535_A16" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
layout_mode = 0
-offset_left = 8.0
-offset_top = 527.0
-offset_right = 175.0
-offset_bottom = 622.0
+offset_left = 47.0
+offset_top = 381.0
+offset_right = 214.0
+offset_bottom = 476.0
fname = "УМ1535А"
rname = "A16"
value0_info = "Мощность"
@@ -414,10 +414,10 @@ metadata/um = "um_12"
[node name="um1535_A17" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
layout_mode = 0
-offset_left = 8.0
-offset_top = 622.0
-offset_right = 175.0
-offset_bottom = 717.0
+offset_left = 47.0
+offset_top = 476.0
+offset_right = 214.0
+offset_bottom = 571.0
fname = "УМ1535А"
rname = "A17"
value0_info = "Мощность"
@@ -426,10 +426,10 @@ metadata/um = "um_13"
[node name="um1535_A18" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
layout_mode = 0
-offset_left = 8.0
-offset_top = 717.0
-offset_right = 175.0
-offset_bottom = 812.0
+offset_left = 47.0
+offset_top = 571.0
+offset_right = 214.0
+offset_bottom = 666.0
fname = "УМ1535А"
rname = "A18"
value0_info = "Мощность"
@@ -438,25 +438,34 @@ metadata/um = "um_14"
[node name="control_result" type="Label" parent="."]
layout_mode = 0
-offset_left = 9.0
-offset_top = 960.0
-offset_right = 649.0
-offset_bottom = 1003.0
+offset_left = 49.0
+offset_top = 993.0
+offset_right = 689.0
+offset_bottom = 1036.0
+theme_override_font_sizes/font_size = 22
horizontal_alignment = 1
metadata/_edit_lock_ = true
[node name="input_0" type="AnimatedSprite2D" parent="."]
-position = Vector2(456, 589)
+position = Vector2(495, 443)
sprite_frames = SubResource("SpriteFrames_1wf07")
[node name="input_1" type="AnimatedSprite2D" parent="."]
-position = Vector2(207, 586)
+position = Vector2(246, 440)
sprite_frames = SubResource("SpriteFrames_1wf07")
[node name="output_0" type="AnimatedSprite2D" parent="."]
-position = Vector2(458, 476)
+position = Vector2(497, 330)
sprite_frames = SubResource("SpriteFrames_1wf07")
[node name="output_1" type="AnimatedSprite2D" parent="."]
-position = Vector2(210, 477)
+position = Vector2(249, 331)
sprite_frames = SubResource("SpriteFrames_1wf07")
+
+[node name="line" type="Line2D" parent="."]
+position = Vector2(59, 920)
+scale = Vector2(1.03548, 1)
+points = PackedVector2Array(-8, 0, 61.8069, 0, 608, 0)
+width = 2.0
+default_color = Color(1, 1, 1, 0.352941)
+metadata/_edit_lock_ = true
diff --git a/scenes/pribor-prd-v/pribor-prd-v.gd b/scenes/pribor-prd-v/pribor-prd-v.gd
index 9bae5d6..a206b65 100644
--- a/scenes/pribor-prd-v/pribor-prd-v.gd
+++ b/scenes/pribor-prd-v/pribor-prd-v.gd
@@ -24,10 +24,10 @@ func _ready() -> void:
func _process(_delta: float) -> void:
if Engine.is_editor_hint():
return
- set_frame($input_0, unit_prd_v.ems_input_1)
- set_frame($input_1, unit_prd_v.ems_input_2)
- set_frame($output_0, unit_prd_v.ems_output_1)
- set_frame($output_1, unit_prd_v.ems_output_2)
+ set_frame($input_0, unit_prd_v.ems_g_sock_dic.ems_input_1)
+ set_frame($input_1, unit_prd_v.ems_g_sock_dic.ems_input_2)
+ set_frame($output_0, unit_prd_v.ems_g_sock_dic.ems_output_1)
+ set_frame($output_1, unit_prd_v.ems_g_sock_dic.ems_output_2)
func set_frame(node_frame: Node, val: int): node_frame.set_frame(val)
diff --git a/scenes/pribor-prd-v/pribor-prd-v.tscn b/scenes/pribor-prd-v/pribor-prd-v.tscn
index d2b7ead..8144c9c 100644
--- a/scenes/pribor-prd-v/pribor-prd-v.tscn
+++ b/scenes/pribor-prd-v/pribor-prd-v.tscn
@@ -43,48 +43,48 @@ script = ExtResource("1_c20s6")
[node name="maa2000_A22" parent="." groups=["power_supply"] instance=ExtResource("2_xpo4b")]
layout_mode = 2
-offset_left = 485.0
-offset_top = 877.0
-offset_right = 652.0
-offset_bottom = 949.0
+offset_left = 524.0
+offset_top = 731.0
+offset_right = 691.0
+offset_bottom = 803.0
fname = "MAA2000"
rname = "A22"
metadata/ip = "maa2000_1"
[node name="dou4_A5" parent="." groups=["default_reset"] instance=ExtResource("2_xpo4b")]
layout_mode = 2
-offset_left = 485.0
-offset_top = 812.0
-offset_right = 652.0
-offset_bottom = 877.0
+offset_left = 524.0
+offset_top = 666.0
+offset_right = 691.0
+offset_bottom = 731.0
fname = "ДОУ-4"
rname = "A5"
[node name="maa2000_A23" parent="." groups=["power_supply"] instance=ExtResource("2_xpo4b")]
layout_mode = 2
-offset_left = 8.0
-offset_top = 877.0
-offset_right = 175.0
-offset_bottom = 949.0
+offset_left = 47.0
+offset_top = 731.0
+offset_right = 214.0
+offset_bottom = 803.0
fname = "MAA2000"
rname = "A23"
metadata/ip = "maa2000_2"
[node name="dou5_A6" parent="." groups=["default_reset"] instance=ExtResource("2_xpo4b")]
layout_mode = 2
-offset_left = 8.0
-offset_top = 812.0
-offset_right = 175.0
-offset_bottom = 877.0
+offset_left = 47.0
+offset_top = 666.0
+offset_right = 214.0
+offset_bottom = 731.0
fname = "ДОУ-5"
rname = "A6"
[node name="ref_ZZ3" type="NinePatchRect" parent="."]
layout_mode = 0
-offset_left = 175.0
-offset_top = 812.0
-offset_right = 485.0
-offset_bottom = 949.0
+offset_left = 214.0
+offset_top = 666.0
+offset_right = 524.0
+offset_bottom = 803.0
texture = ExtResource("3_wyy1b")
patch_margin_left = 16
patch_margin_top = 16
@@ -105,10 +105,10 @@ vertical_alignment = 1
[node name="kasseta_U5" type="NinePatchRect" parent="."]
layout_mode = 0
-offset_left = 175.0
-offset_top = 242.0
-offset_right = 485.0
-offset_bottom = 432.0
+offset_left = 214.0
+offset_top = 96.0
+offset_right = 524.0
+offset_bottom = 286.0
texture = ExtResource("3_wyy1b")
patch_margin_left = 16
patch_margin_top = 16
@@ -183,18 +183,18 @@ metadata/y5 = "ukp2"
[node name="kasseta_FS_VD" parent="." instance=ExtResource("5_nhd2k")]
layout_mode = 0
-offset_left = 175.0
-offset_top = 432.0
-offset_right = 485.0
-offset_bottom = 622.0
+offset_left = 214.0
+offset_top = 286.0
+offset_right = 524.0
+offset_bottom = 476.0
fname = "Кассета ФС-ВД"
[node name="kasseta_P_1" type="NinePatchRect" parent="."]
layout_mode = 0
-offset_left = 175.0
-offset_top = 622.0
-offset_right = 485.0
-offset_bottom = 812.0
+offset_left = 214.0
+offset_top = 476.0
+offset_right = 524.0
+offset_bottom = 666.0
texture = ExtResource("3_wyy1b")
patch_margin_left = 16
patch_margin_top = 16
@@ -243,10 +243,10 @@ vertical_alignment = 1
[node name="um1535_A7" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")]
layout_mode = 0
-offset_left = 485.0
-offset_top = 242.0
-offset_right = 652.0
-offset_bottom = 337.0
+offset_left = 524.0
+offset_top = 96.0
+offset_right = 691.0
+offset_bottom = 191.0
fname = "УМ1535А"
rname = "A7"
value0_info = "Мощность"
@@ -255,10 +255,10 @@ metadata/um = "um_1"
[node name="um1535_A8" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")]
layout_mode = 0
-offset_left = 485.0
-offset_top = 337.0
-offset_right = 652.0
-offset_bottom = 432.0
+offset_left = 524.0
+offset_top = 191.0
+offset_right = 691.0
+offset_bottom = 286.0
fname = "УМ1535А"
rname = "A8"
value0_info = "Мощность"
@@ -267,10 +267,10 @@ metadata/um = "um_2"
[node name="um1535_A9" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")]
layout_mode = 0
-offset_left = 485.0
-offset_top = 432.0
-offset_right = 652.0
-offset_bottom = 527.0
+offset_left = 524.0
+offset_top = 286.0
+offset_right = 691.0
+offset_bottom = 381.0
fname = "УМ1535А"
rname = "A9"
value0_info = "Мощность"
@@ -279,10 +279,10 @@ metadata/um = "um_3"
[node name="um1535_A10" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")]
layout_mode = 0
-offset_left = 485.0
-offset_top = 527.0
-offset_right = 652.0
-offset_bottom = 622.0
+offset_left = 524.0
+offset_top = 381.0
+offset_right = 691.0
+offset_bottom = 476.0
fname = "УМ1535А"
rname = "A10"
value0_info = "Мощность"
@@ -291,10 +291,10 @@ metadata/um = "um_4"
[node name="um1535_A11" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")]
layout_mode = 0
-offset_left = 485.0
-offset_top = 622.0
-offset_right = 652.0
-offset_bottom = 717.0
+offset_left = 524.0
+offset_top = 476.0
+offset_right = 691.0
+offset_bottom = 571.0
fname = "УМ1535А"
rname = "A11"
value0_info = "Мощность"
@@ -303,10 +303,10 @@ metadata/um = "um_5"
[node name="um1535_A12" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")]
layout_mode = 0
-offset_left = 485.0
-offset_top = 717.0
-offset_right = 652.0
-offset_bottom = 812.0
+offset_left = 524.0
+offset_top = 571.0
+offset_right = 691.0
+offset_bottom = 666.0
fname = "УМ1535А"
rname = "A12"
value0_info = "Мощность"
@@ -315,10 +315,10 @@ metadata/um = "um_6"
[node name="um1535_A13" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")]
layout_mode = 0
-offset_left = 8.0
-offset_top = 242.0
-offset_right = 175.0
-offset_bottom = 337.0
+offset_left = 47.0
+offset_top = 96.0
+offset_right = 214.0
+offset_bottom = 191.0
fname = "УМ1535А"
rname = "A13"
value0_info = "Мощность"
@@ -327,10 +327,10 @@ metadata/um = "um_9"
[node name="um1535_A14" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")]
layout_mode = 0
-offset_left = 8.0
-offset_top = 337.0
-offset_right = 175.0
-offset_bottom = 432.0
+offset_left = 47.0
+offset_top = 191.0
+offset_right = 214.0
+offset_bottom = 286.0
fname = "УМ1535А"
rname = "A14"
value0_info = "Мощность"
@@ -339,10 +339,10 @@ metadata/um = "um_10"
[node name="um1535_A15" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")]
layout_mode = 0
-offset_left = 8.0
-offset_top = 432.0
-offset_right = 175.0
-offset_bottom = 527.0
+offset_left = 47.0
+offset_top = 286.0
+offset_right = 214.0
+offset_bottom = 381.0
fname = "УМ1535А"
rname = "A15"
value0_info = "Мощность"
@@ -351,10 +351,10 @@ metadata/um = "um_11"
[node name="um1535_A16" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")]
layout_mode = 0
-offset_left = 8.0
-offset_top = 527.0
-offset_right = 175.0
-offset_bottom = 622.0
+offset_left = 47.0
+offset_top = 381.0
+offset_right = 214.0
+offset_bottom = 476.0
fname = "УМ1535А"
rname = "A16"
value0_info = "Мощность"
@@ -363,10 +363,10 @@ metadata/um = "um_12"
[node name="um1535_A17" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")]
layout_mode = 0
-offset_left = 8.0
-offset_top = 622.0
-offset_right = 175.0
-offset_bottom = 717.0
+offset_left = 47.0
+offset_top = 476.0
+offset_right = 214.0
+offset_bottom = 571.0
fname = "УМ1535А"
rname = "A17"
value0_info = "Мощность"
@@ -375,37 +375,46 @@ metadata/um = "um_13"
[node name="um1535_A18" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")]
layout_mode = 0
-offset_left = 8.0
-offset_top = 717.0
-offset_right = 175.0
-offset_bottom = 812.0
+offset_left = 47.0
+offset_top = 571.0
+offset_right = 214.0
+offset_bottom = 666.0
fname = "УМ1535А"
rname = "A18"
value0_info = "Мощность"
value1_info = "Температура,°C"
metadata/um = "um_14"
-[node name="control_result" type="Label" parent="."]
-layout_mode = 0
-offset_left = 9.0
-offset_top = 960.0
-offset_right = 649.0
-offset_bottom = 1003.0
-horizontal_alignment = 1
-metadata/_edit_lock_ = true
-
[node name="input_0" type="AnimatedSprite2D" parent="."]
-position = Vector2(457, 586)
+position = Vector2(496, 440)
sprite_frames = SubResource("SpriteFrames_s5gcy")
[node name="input_1" type="AnimatedSprite2D" parent="."]
-position = Vector2(209, 586)
+position = Vector2(248, 440)
sprite_frames = SubResource("SpriteFrames_s5gcy")
[node name="output_0" type="AnimatedSprite2D" parent="."]
-position = Vector2(457, 482)
+position = Vector2(496, 336)
sprite_frames = SubResource("SpriteFrames_s5gcy")
[node name="output_1" type="AnimatedSprite2D" parent="."]
-position = Vector2(209, 482)
+position = Vector2(248, 336)
sprite_frames = SubResource("SpriteFrames_s5gcy")
+
+[node name="line" type="Line2D" parent="."]
+position = Vector2(59, 920)
+scale = Vector2(1.03548, 1)
+points = PackedVector2Array(-8, 0, 61.8069, 0, 608, 0)
+width = 2.0
+default_color = Color(1, 1, 1, 0.352941)
+metadata/_edit_lock_ = true
+
+[node name="control_result" type="Label" parent="."]
+layout_mode = 0
+offset_left = 49.0
+offset_top = 993.0
+offset_right = 689.0
+offset_bottom = 1036.0
+theme_override_font_sizes/font_size = 22
+horizontal_alignment = 1
+metadata/_edit_lock_ = true
diff --git a/scenes/pribor-uf/pribor-uf.gd b/scenes/pribor-uf/pribor-uf.gd
index 5f6b038..0e45033 100644
--- a/scenes/pribor-uf/pribor-uf.gd
+++ b/scenes/pribor-uf/pribor-uf.gd
@@ -100,7 +100,7 @@ func status_uf() -> void:
$lbl_header2.text = 'Прибор исправен'
$lbl_header2.modulate = Color.GREEN
else:
- $lbl_header2.text = 'Прибор не исправен'
+ $lbl_header2.text = 'Прибор неисправен'
$lbl_header2.modulate = Color.RED
$lbl_header2.visible = true
diff --git a/scenes/pribor-uf/pribor-uf.tscn b/scenes/pribor-uf/pribor-uf.tscn
index 998ace6..82ceaaf 100644
--- a/scenes/pribor-uf/pribor-uf.tscn
+++ b/scenes/pribor-uf/pribor-uf.tscn
@@ -7,14 +7,16 @@
[node name="pribor_uf" type="Control"]
layout_mode = 3
anchors_preset = 0
+offset_left = -121.0
+offset_right = -121.0
script = ExtResource("1_7gtpa")
[node name="ref_uf" type="NinePatchRect" parent="."]
layout_mode = 0
-offset_left = 187.0
-offset_top = 247.0
-offset_right = 708.0
-offset_bottom = 955.0
+offset_left = 244.0
+offset_top = 128.0
+offset_right = 765.0
+offset_bottom = 836.0
texture = ExtResource("2_ho0da")
patch_margin_left = 16
patch_margin_top = 16
@@ -142,19 +144,25 @@ offset_bottom = 35.0
text = "Кассета В-13"
[node name="lbl_header2" type="Label" parent="."]
-visible = false
layout_mode = 0
-offset_left = 199.0
-offset_top = 974.0
-offset_right = 704.0
-offset_bottom = 1000.0
+offset_left = 252.0
+offset_top = 1009.0
+offset_right = 757.0
+offset_bottom = 1064.0
theme_override_font_sizes/font_size = 22
-text = "Прибор не исправен
-"
+text = "Состояние неизвестно..."
horizontal_alignment = 1
vertical_alignment = 1
[node name="timer" type="Timer" parent="."]
autostart = true
+[node name="line" type="Line2D" parent="."]
+position = Vector2(195, 950)
+scale = Vector2(1.03548, 1)
+points = PackedVector2Array(-8, 0, 61.8069, 0, 608, 0)
+width = 2.0
+default_color = Color(1, 1, 1, 0.352941)
+metadata/_edit_lock_ = true
+
[connection signal="timeout" from="timer" to="." method="on_timer" binds= [&"уарэп-эмс"]]
diff --git a/scenes/pribor-uyep/pribor-uyep.tscn b/scenes/pribor-uyep/pribor-uyep.tscn
index e78e782..f5a9c52 100644
--- a/scenes/pribor-uyep/pribor-uyep.tscn
+++ b/scenes/pribor-uyep/pribor-uyep.tscn
@@ -17,10 +17,10 @@ script = ExtResource("1_46rp6")
[node name="ref_G1" type="NinePatchRect" parent="."]
layout_mode = 0
-offset_left = 70.0
-offset_top = 303.0
-offset_right = 660.0
-offset_bottom = 1085.0
+offset_left = 88.0
+offset_top = 128.0
+offset_right = 678.0
+offset_bottom = 910.0
texture = ExtResource("1_6olof")
patch_margin_left = 16
patch_margin_top = 16
@@ -29,10 +29,10 @@ patch_margin_bottom = 16
[node name="spt25_A1" parent="." instance=ExtResource("6_60xs3")]
layout_mode = 0
-offset_left = 88.0
-offset_top = 319.0
-offset_right = 343.0
-offset_bottom = 749.0
+offset_left = 106.0
+offset_top = 144.0
+offset_right = 361.0
+offset_bottom = 574.0
tooltip_text = "Ящик - 11, Позиция - 3"
script = ExtResource("4_v0lil")
unit_name = "уарэп-спт25-1"
@@ -64,10 +64,10 @@ offset_bottom = 417.0
[node name="spt25_A2" parent="." instance=ExtResource("6_60xs3")]
layout_mode = 0
-offset_left = 392.0
-offset_top = 320.0
-offset_right = 642.0
-offset_bottom = 750.0
+offset_left = 410.0
+offset_top = 145.0
+offset_right = 660.0
+offset_bottom = 575.0
tooltip_text = "Ящик - 11, Позиция - 2"
script = ExtResource("4_v0lil")
unit_name = "уарэп-спт25-2"
@@ -98,10 +98,10 @@ offset_right = 235.0
offset_bottom = 417.0
[node name="sch3" parent="." instance=ExtResource("7_qu7ja")]
-offset_left = 88.0
-offset_top = 774.0
-offset_right = 643.0
-offset_bottom = 1059.0
+offset_left = 106.0
+offset_top = 599.0
+offset_right = 661.0
+offset_bottom = 884.0
unit_name = "уарэп-щ3"
fname = "Щ3 (контроль и управление питанием)"
rname = "A1"
diff --git a/scenes/контроль/контроль.tscn b/scenes/контроль/контроль.tscn
index 0b8d870..14e10a0 100644
--- a/scenes/контроль/контроль.tscn
+++ b/scenes/контроль/контроль.tscn
@@ -191,9 +191,9 @@ metadata/_edit_lock_ = true
editor_description = "Кнопка для отображения внешних соединений."
self_modulate = Color(0.788235, 0.788235, 0.788235, 1)
layout_mode = 0
-offset_left = 959.0
+offset_left = 945.0
offset_top = 1021.0
-offset_right = 1215.0
+offset_right = 1201.0
offset_bottom = 1277.0
scale = Vector2(0.25, 0.25)
size_flags_horizontal = 15
@@ -225,9 +225,9 @@ script = ExtResource("11_u7tym")
editor_description = "Кнопка для отображения внешних соединений."
self_modulate = Color(0.788235, 0.788235, 0.788235, 1)
layout_mode = 0
-offset_left = 1088.0
+offset_left = 1074.0
offset_top = 1021.0
-offset_right = 1344.0
+offset_right = 1330.0
offset_bottom = 1277.0
scale = Vector2(0.25, 0.25)
size_flags_horizontal = 15
@@ -260,9 +260,9 @@ script = ExtResource("11_u7tym")
editor_description = "Кнопка для отображения внешних соединений."
self_modulate = Color(0.788235, 0.788235, 0.788235, 1)
layout_mode = 0
-offset_left = 1216.0
+offset_left = 1202.0
offset_top = 1021.0
-offset_right = 1472.0
+offset_right = 1458.0
offset_bottom = 1277.0
scale = Vector2(0.25, 0.25)
size_flags_horizontal = 15
@@ -295,9 +295,9 @@ script = ExtResource("11_u7tym")
editor_description = "Кнопка для отображения внешних соединений."
self_modulate = Color(0.788235, 0.788235, 0.788235, 1)
layout_mode = 0
-offset_left = 1344.0
+offset_left = 1330.0
offset_top = 1021.0
-offset_right = 1600.0
+offset_right = 1586.0
offset_bottom = 1277.0
scale = Vector2(0.25, 0.25)
size_flags_horizontal = 15
@@ -330,9 +330,9 @@ script = ExtResource("11_u7tym")
editor_description = "Кнопка для отображения внешних соединений."
self_modulate = Color(0.788235, 0.788235, 0.788235, 1)
layout_mode = 0
-offset_left = 1472.0
+offset_left = 1458.0
offset_top = 1021.0
-offset_right = 1728.0
+offset_right = 1714.0
offset_bottom = 1277.0
scale = Vector2(0.25, 0.25)
size_flags_horizontal = 15
@@ -1561,9 +1561,9 @@ tint_progress = Color(0.890196, 0.486275, 0.196078, 1)
[node name="txr_legend0" type="TextureRect" parent="."]
layout_mode = 0
-offset_left = 219.0
+offset_left = 316.0
offset_top = 1141.0
-offset_right = 443.0
+offset_right = 540.0
offset_bottom = 1365.0
scale = Vector2(0.1, 0.1)
texture = ExtResource("7_6j01w")
@@ -1571,9 +1571,9 @@ texture = ExtResource("7_6j01w")
[node name="lbl_legend0" type="Label" parent="."]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 0
-offset_left = 247.0
+offset_left = 344.0
offset_top = 1142.0
-offset_right = 403.0
+offset_right = 500.0
offset_bottom = 1162.0
theme_override_font_sizes/font_size = 17
text = "Ожидание результата"
@@ -1581,27 +1581,27 @@ text = "Ожидание результата"
[node name="lbl_legend1" type="Label" parent="."]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 0
-offset_left = 52.0
+offset_left = 149.0
offset_top = 1142.0
-offset_right = 125.0
+offset_right = 222.0
offset_bottom = 1162.0
theme_override_font_sizes/font_size = 17
text = "Исправно"
[node name="txr_legend1" type="TextureRect" parent="."]
layout_mode = 0
-offset_left = 26.0001
+offset_left = 123.0
offset_top = 1141.0
-offset_right = 250.0
+offset_right = 347.0
offset_bottom = 1365.0
scale = Vector2(0.1, 0.1)
texture = ExtResource("8_isjua")
[node name="txr_legend2" type="TextureRect" parent="."]
layout_mode = 0
-offset_left = 476.0
+offset_left = 573.0
offset_top = 1141.0
-offset_right = 700.0
+offset_right = 797.0
offset_bottom = 1365.0
scale = Vector2(0.1, 0.1)
texture = ExtResource("9_ll0vs")
@@ -1609,18 +1609,18 @@ texture = ExtResource("9_ll0vs")
[node name="lbl_legend2" type="Label" parent="."]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 0
-offset_left = 504.0
+offset_left = 601.0
offset_top = 1142.0
-offset_right = 548.0
+offset_right = 645.0
offset_bottom = 1162.0
theme_override_font_sizes/font_size = 17
text = "Сбой"
[node name="lbl_header" type="Label" parent="."]
layout_mode = 0
-offset_left = 78.0
+offset_left = 88.0
offset_top = 27.0
-offset_right = 656.0
+offset_right = 666.0
offset_bottom = 58.0
theme_override_font_sizes/font_size = 22
text = "Контроль исправности прибора"
@@ -1663,19 +1663,20 @@ text = "На связи"
metadata/_edit_use_anchors_ = true
[node name="line0" type="Line2D" parent="."]
-position = Vector2(936, 950)
-points = PackedVector2Array(-8, 0, 608, 0)
+position = Vector2(929, 950)
+points = PackedVector2Array(-8, 0, 582.16, 0, 608, 0)
width = 2.0
default_color = Color(1, 1, 1, 0.352941)
[node name="line1" type="Line2D" parent="."]
-position = Vector2(936, 1128)
+position = Vector2(929, 1128)
points = PackedVector2Array(-8, 0, 608, 0)
width = 2.0
default_color = Color(1, 1, 1, 0.352941)
[node name="line2" type="Line2D" parent="."]
-position = Vector2(32, 1128)
+position = Vector2(73.3548, 1127)
+scale = Vector2(1.03548, 1)
points = PackedVector2Array(-8, 0, 608, 0)
width = 2.0
default_color = Color(1, 1, 1, 0.352941)
diff --git a/scripts/pribor-prd.gd b/scripts/pribor-prd.gd
index acaa7fb..9a9d376 100644
--- a/scripts/pribor-prd.gd
+++ b/scripts/pribor-prd.gd
@@ -32,6 +32,14 @@ enum STATE_MACHINE {
STOP_CONTROL,
AWAIT
}
+var ems_g_sock_dic: Dictionary = {
+ 'ems_input_1': 0,
+ 'ems_input_2': 0,
+ 'ems_input_lit_1': 0,
+ 'ems_output_1': 0,
+ 'ems_output_2': 0,
+ 'ems_output_lit_1': 0,
+}
# Загруженные конфигурации
var config_data: Dictionary
@@ -54,6 +62,8 @@ var block_kasseta_y5_config: Dictionary
var temperature_um: Dictionary
var control_results: Dictionary
var power_result: Dictionary
+var ecms: Dictionary
+var power_for_litera: Dictionary
var self_name: String
var state: int = STATE_MACHINE.INIT
var current_litera: int
@@ -80,9 +90,6 @@ var progress_value: float:
progress_value = v
call_deferred('emit_signal', 'update_progress', v)
-var ecms: Dictionary
-var power_for_litera: Dictionary
-
## Инициализация аргуметнов
func _init(init_data: Dictionary, cmd_array_from_prd: Array) -> void:
@@ -140,9 +147,9 @@ func _load_configuration() -> void:
config_data = json.data
_parse_config_data()
else:
- push_error("Failed to parse JSON config: " + json.get_error_message())
+ push_error("Ошибка разбора JSON конфигурации: " + json.get_error_message())
else:
- push_error("Failed to load config file: " + CONFIG_PATH)
+ push_error("Ошибка to load config file: " + CONFIG_PATH)
func _parse_config_data() -> void:
@@ -211,33 +218,26 @@ func on_data_received(unit_pribor: Object) -> void:
power_for_litera[current_litera] = tek_litera
-var ems_input_1: int
-var ems_input_2: int
-var ems_input_lit_1: int
-var ems_output_1: int
-var ems_output_2: int
-var ems_output_lit_1: int
-
-# Методы для работы с DataIndices из JSON
+# Методы для работы с JSON
func _get_data_index(key: String) -> int:
return data_indices.get(key, -1)
func socket_status_ems_g(packet_form_yau_07: PackedByteArray) -> void:
if self_name in ['1н', '2н', '3н', '4н']:
- ems_input_1 = (packet_form_yau_07.decode_u16(_get_data_index('IN_BLANK_PRD')) & (1 << 9)) != 0
- ems_input_2 = (packet_form_yau_07.decode_u16(_get_data_index('IN_BLANK_PRD')) & (1 << 10)) != 0
+ ems_g_sock_dic.ems_input_1 = (packet_form_yau_07.decode_u16(_get_data_index('IN_BLANK_PRD')) & (1 << 9)) != 0
+ ems_g_sock_dic.ems_input_2 = (packet_form_yau_07.decode_u16(_get_data_index('IN_BLANK_PRD')) & (1 << 10)) != 0
if self_name in ['1в', '2в', '3в', '4в']:
- ems_input_1 = (packet_form_yau_07.decode_u16(_get_data_index('IN_BLANK_PRD')) & (1 << 11)) != 0
- ems_input_2 = (packet_form_yau_07.decode_u16(_get_data_index('IN_BLANK_PRD')) & (1 << 12)) != 0
+ ems_g_sock_dic.ems_input_1 = (packet_form_yau_07.decode_u16(_get_data_index('IN_BLANK_PRD')) & (1 << 11)) != 0
+ ems_g_sock_dic.ems_input_2 = (packet_form_yau_07.decode_u16(_get_data_index('IN_BLANK_PRD')) & (1 << 12)) != 0
if self_name in ['1к', '2к', '3к', '4к']:
- ems_input_lit_1 = (packet_form_yau_07.decode_u16(_get_data_index('IN_BLANK_PRD')) & (1 << 8)) != 0
- ems_input_1 = (packet_form_yau_07.decode_u16(_get_data_index('IN_BLANK_PRD')) & (1 << 13)) != 0
- ems_input_2 = (packet_form_yau_07.decode_u16(_get_data_index('IN_BLANK_PRD')) & (1 << 14)) != 0
+ ems_g_sock_dic.ems_input_lit_1 = (packet_form_yau_07.decode_u16(_get_data_index('IN_BLANK_PRD')) & (1 << 8)) != 0
+ ems_g_sock_dic.ems_input_1 = (packet_form_yau_07.decode_u16(_get_data_index('IN_BLANK_PRD')) & (1 << 13)) != 0
+ ems_g_sock_dic.ems_input_2 = (packet_form_yau_07.decode_u16(_get_data_index('IN_BLANK_PRD')) & (1 << 14)) != 0
- ems_output_1 = (packet_form_yau_07.decode_u16(_get_data_index('OUT_BLANK_PRD')) & (1 << 4)) != 0
- ems_output_2 = (packet_form_yau_07.decode_u16(_get_data_index('OUT_BLANK_PRD')) & (1 << 5)) != 0
- ems_output_lit_1 = (packet_form_yau_07.decode_u16(_get_data_index('OUT_BLANK_PRD')) & (1 << 3)) != 0
+ ems_g_sock_dic.ems_output_1 = (packet_form_yau_07.decode_u16(_get_data_index('OUT_BLANK_PRD')) & (1 << 4)) != 0
+ ems_g_sock_dic.ems_output_2 = (packet_form_yau_07.decode_u16(_get_data_index('OUT_BLANK_PRD')) & (1 << 5)) != 0
+ ems_g_sock_dic.ems_output_lit_1 = (packet_form_yau_07.decode_u16(_get_data_index('OUT_BLANK_PRD')) & (1 << 3)) != 0
var number_socket_input: int
if current_litera >= 1 and current_litera <= 7:
@@ -389,15 +389,16 @@ func _handle_fs_turn_on_state() -> void:
##'Выполняется проверка ФС-%s' % current_litera
func _handle_fs_work_state() -> void:
if (current_litera == 2 and control_results.fs_2) or \
- (current_litera == 3 and control_results.fs_3) or \
- (current_litera == 4 and control_results.fs_4) or \
- (current_litera == 5 and control_results.fs_5) or \
- (current_litera == 6 and control_results.fs_6) or \
- (current_litera == 7 and control_results.fs_7) or \
- (current_litera == 1 and control_results.fs_1):
+ (current_litera == 3 and control_results.fs_3) or \
+ (current_litera == 4 and control_results.fs_4) or \
+ (current_litera == 5 and control_results.fs_5) or \
+ (current_litera == 6 and control_results.fs_6) or \
+ (current_litera == 7 and control_results.fs_7) or \
+ (current_litera == 1 and control_results.fs_1):
state = STATE_MACHINE.CHEK_KASSETA_Y5
+## Подготовка к настройки и записи в УГ
func _handle_ug_set_state(RAY_DOU_NUM: int) -> void:
var dic_att := {
'RAY_DOU_NUM': RAY_DOU_NUM,
@@ -420,16 +421,7 @@ func _handle_ug_set_state(RAY_DOU_NUM: int) -> void:
flag_write_isa = on_ug_setting(unit_prd, dic_att, cmd_array)
-## Таймер отправки команды в ЭМС-Г для модуляции
-func _on_ems_6666_timer() -> void:
- cmd_array.append([unit_prd.CmdCode.WRITE_ISA, [constants.BASE_ADDR_EMS_G, 6666]])
-
-
-## Таймер вызова машины состояний
-func on_state_mashine():
- state_control_machine()
-
-
+## Функция для продвижения статуса прогресс бара
func progressbar_status() -> void:
match state:
STATE_MACHINE.INIT:
@@ -452,6 +444,7 @@ func _handle_stop_control_state() -> void:
state = STATE_MACHINE.INIT
+## Переходит на следующую литеру, если 0 то считай закончил выполнения контроля
func _advance_to_next_fs() -> void:
match current_litera:
1: current_litera = 6
@@ -536,6 +529,7 @@ func _get_device_type() -> String:
return ''
+## Настройка таймеров
func setup_timer() -> void:
add_child(control_timer)
control_timer.timeout.connect(on_stop_control)
@@ -550,6 +544,23 @@ func setup_timer() -> void:
machine_timer.connect('timeout', Callable(self, 'on_state_mashine'))
+## Таймер отправки команды в ЭМС-Г для модуляции
+func _on_ems_6666_timer() -> void:
+ cmd_array.append([unit_prd.CmdCode.WRITE_ISA, [constants.BASE_ADDR_EMS_G, 6666]])
+
+
+## Таймер вызова машины состояний
+func on_state_mashine():
+ state_control_machine()
+
+
+## При таймауте таймера ожидания выполнения команды и перехода на следующий шаг машины состояний
+func on_stop_control() -> void:
+ _handle_fs_turn_off_state()
+ state = STATE_MACHINE.FS_TURN_OFF
+
+
+## Срабатывает при выходе или входе в режим контроль
func on_mode_changed(in_tree: bool) -> void:
flag_in_control = in_tree
if not in_tree: ## TODO: Дополнительная проверка если контроль идет, если нет, то смысла вызывать нет
@@ -562,7 +573,7 @@ func on_mode_changed(in_tree: bool) -> void:
func _process_dkm_status(status: PackedByteArray) -> void:
- if not control_results.has(_get_current_fs_key()):
+ if not control_results.has(_get_current_fs_key(current_litera, fs_keys)):
return
var dkm_bit = _get_dkm_bit_for_current_fs(current_litera, constants)
if dkm_bit == 0:
@@ -589,10 +600,11 @@ func _process_dkm_status(status: PackedByteArray) -> void:
control_results['dkm_7'] = check_dkm(status, dkm_bit)
-func _get_current_fs_key() -> String:
- return fs_keys.get(str(current_litera), '')
+static func _get_current_fs_key(litera: int, fs_keys_dic: Dictionary) -> String:
+ return fs_keys_dic.get(str(litera), '')
+## Возвращает бит ДКМ для проверки текущей литеры
static func _get_dkm_bit_for_current_fs(litera: int, constants_dic: Dictionary) -> int:
match litera:
1: return constants_dic.DKM_BIT_1
@@ -605,14 +617,9 @@ static func _get_dkm_bit_for_current_fs(litera: int, constants_dic: Dictionary)
_: return -1
-func on_stop_control() -> void:
- _handle_fs_turn_off_state()
- state = STATE_MACHINE.FS_TURN_OFF
-
-
+## Итоговое заключение по результам контроля всех ИП
static func on_control_result(ip_config: Dictionary, ctrl_results: Dictionary) -> Dictionary:
var all_blocks_ip_ok = true
-
for block in ip_config:
if not ip_config[block][1]:
all_blocks_ip_ok = false
@@ -624,10 +631,10 @@ static func on_control_result(ip_config: Dictionary, ctrl_results: Dictionary) -
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_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,
- ]
+ 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,
+ ]
])
return true
@@ -655,7 +662,7 @@ static func manage_fs(mode: bool, pribor: String, p_conf: Dictionary, fs_params:
params.width,
sectors[litera - 1] if litera == 1 else sectors[litera - 5] if litera > 5 else sectors[litera - 4] if litera > 3 else sectors[litera - 2]
])
- #signaller.emit_signal('emit_changed', mode)
+ #signaller.emit_signal('emit_changed', mode) TODO: не отключаю подавление (даже если при входе в контроль он был отключен)
signaller.emit_signal('interfer_init', interfer_name, fs_arr, power_um)
@@ -696,7 +703,6 @@ static func check_temperature_um(status_prd: PackedByteArray) -> Dictionary:
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
@@ -704,14 +710,11 @@ static func check_temperature_um(status_prd: PackedByteArray) -> Dictionary:
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
@@ -722,7 +725,7 @@ static func check_dkm(status_prd: PackedByteArray, bit_dkm: int) -> bool:
return status_dkm
-##
+## Распределения номеров ФС по пирборам
static func _create_fs_mapping(s_name: String) -> Dictionary:
var suffixes: Dictionary = {
0: '1к', 1: '4к', 2: '3к', 3: '2к',
@@ -740,7 +743,7 @@ static func _create_fs_mapping(s_name: String) -> Dictionary:
return mapping
-##
+## Получения статуса ФС
static func on_fs_state(packet_type_7: Dictionary, fs_mapping: Dictionary, fs_results: Dictionary, fs_rules_config: Array) -> Dictionary:
var updated_results := fs_results.duplicate()
for fs_num in packet_type_7:
@@ -759,7 +762,8 @@ static func _should_apply_rule(fs_num: int, rule: Dictionary, results: Dictionar
return bool(fs_num >= rule.min and fs_num < rule.max) and results.has(rule.key)
-##
+
+## Получение мощности при выполнении контроля
static func power_um_ukp(status: PackedByteArray, litera: int, pwr_result: Array) -> Array:
const Constants: Dictionary = {'POWER_UKP_1' : 31, 'POWER_UKP_2': 63}
var power_values: Array = []
@@ -833,34 +837,7 @@ static func update_max_power_values(power_data: Array, max_power_values: Array)
return max_power_values.duplicate()
-static func check_dou_result(control_dic: Dictionary, power_dic: Dictionary, pribor: String, litera: int, cnst: Dictionary) -> Dictionary:
- var all_dou_ok = true
- var dou: String = 'dou_2' if litera == 2 else 'dou_3'
- if pribor == '1к' or pribor == '2к' or pribor == '3к' or pribor == '4к':
- dou = 'dou_6' if litera == 6 else 'dou_7'
- elif pribor == '1в' or pribor == '2в' or pribor == '3в' or pribor == '4в':
- dou = 'dou_4' if litera == 4 else 'dou_5'
-
- var ray_dic: Dictionary = power_dic[litera]
- if ray_dic[RAY_m5].size() == 0 or \
- ray_dic[RAY_5 ].size() == 0 or \
- ray_dic[RAY_15].size() == 0 or \
- ray_dic[RAY_25].size() == 0 or \
- ray_dic[RAY_35].size() == 0 or \
- ray_dic[RAY_45].size() == 0:
- control_dic[dou] = false
- return control_dic
-
- for i_pow_arr in ray_dic.values():
- for i_pow in i_pow_arr.size():
- if i_pow_arr[i_pow] < cnst.POWER_THRESHOLD:
- all_dou_ok = false
-
- control_dic[dou] = all_dou_ok
-
- return control_dic
-
-
+## Подготовка принятых данных по контролю для передачи в сцену
static func prep_power(power_dic: Dictionary, prd_name: String)-> Dictionary:
const RAY_KEYS := ["RAY_m5", "RAY_5", "RAY_15", "RAY_25", "RAY_35", "RAY_45"]
var prep_pow_dic: Dictionary = {}
@@ -912,3 +889,30 @@ static func prep_power(power_dic: Dictionary, prd_name: String)-> Dictionary:
for um_index in range(current_um_names.size()):
prep_pow_dic[current_um_names[um_index]] = um_data[um_index]
return prep_pow_dic
+
+
+static func check_dou_result(control_dic: Dictionary, power_dic: Dictionary, pribor: String, litera: int, cnst: Dictionary) -> Dictionary:
+ var all_dou_ok = true
+ var dou: String = 'dou_2' if litera == 2 else 'dou_3'
+ if pribor == '1к' or pribor == '2к' or pribor == '3к' or pribor == '4к':
+ dou = 'dou_6' if litera == 6 else 'dou_7'
+ elif pribor == '1в' or pribor == '2в' or pribor == '3в' or pribor == '4в':
+ dou = 'dou_4' if litera == 4 else 'dou_5'
+
+ var ray_dic: Dictionary = power_dic[litera]
+ if ray_dic[RAY_m5].size() == 0 or \
+ ray_dic[RAY_5 ].size() == 0 or \
+ ray_dic[RAY_15].size() == 0 or \
+ ray_dic[RAY_25].size() == 0 or \
+ ray_dic[RAY_35].size() == 0 or \
+ ray_dic[RAY_45].size() == 0:
+ control_dic[dou] = false
+ return control_dic
+
+ for i_pow_arr in ray_dic.values():
+ for i_pow in i_pow_arr.size():
+ if i_pow_arr[i_pow] < cnst.POWER_THRESHOLD:
+ all_dou_ok = false
+
+ control_dic[dou] = all_dou_ok
+ return control_dic
From 3fb2601aca8923d56c1f5d3041e53cf0698cdc16 Mon Sep 17 00:00:00 2001
From: TotMaxim
Date: Tue, 18 Nov 2025 16:12:39 +0300
Subject: [PATCH 3/4] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?=
=?UTF-8?q?=D0=BA=D0=B0=20=D0=BC=D0=B8=D0=BD=D0=B8=20=D0=B1=D0=B0=D1=80?=
=?UTF-8?q?=D0=BE=D0=B2=20+=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD?=
=?UTF-8?q?=D0=B8=D1=8F=20=D0=BE=D0=BF=D0=B5=D1=80=D0=B0=D1=82=D0=BE=D1=80?=
=?UTF-8?q?=D1=83?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
scenes/pribor-prd-k/pribor-prd-k.gd | 40 +++++---
scenes/pribor-prd-n/pribor-prd-n.gd | 39 ++++---
scenes/pribor-prd-v/pribor-prd-v.gd | 42 +++++---
scripts/pribor-prd.gd | 154 ++++++++++++++++++++++++++--
4 files changed, 220 insertions(+), 55 deletions(-)
diff --git a/scenes/pribor-prd-k/pribor-prd-k.gd b/scenes/pribor-prd-k/pribor-prd-k.gd
index 735f362..4990050 100644
--- a/scenes/pribor-prd-k/pribor-prd-k.gd
+++ b/scenes/pribor-prd-k/pribor-prd-k.gd
@@ -17,8 +17,11 @@ func _ready() -> void:
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
for temp in power_amplifier:
temp.value1 = -70
+ # Подписываемся на сигналы
unit_prd_k.connect('control_is_over', Callable(self, 'on_press_device'))
- #unit_prd_k.power_amplify = power_amplifier
+ unit_prd_k.connect('status_updated', Callable(self, '_on_status_updated'))
+ # Устанавливаем начальный статус
+ _update_status_text(unit_prd_k.get_current_status())
on_press_device()
@@ -52,8 +55,8 @@ static func set_default_state(default_reset_array_node: Array, power_amplifier_a
func _enter_tree() -> void:
if Engine.is_editor_hint():
return
- $control_result.text = 'Ожидается запуск контроля ...' # TODO: Необходимо сделать пулл сообщений
- $control_result.add_theme_color_override('font_color', Color.ALICE_BLUE)
+ if unit_prd_k:
+ _update_status_text(unit_prd_k.get_current_status())
func _exit_tree() -> void:
@@ -104,13 +107,8 @@ func on_press_device() -> void:
var dou_6: Node = $dou6_A7
var module_fs_7: Node = $kasseta_fs_kd/ref_A7
var dou_7: Node = $dou7_A8
+ var control_data: Dictionary = unit_prd_k.get_control_results()
var for_control_result: Dictionary = {
- 'control_is_over': unit_prd_k.flag_control_is_over,
- 'result_dic': unit_prd_k.control_results,
- '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,
@@ -124,6 +122,7 @@ func on_press_device() -> void:
'module_fs_7': module_fs_7,
'dou_7': dou_7,
}
+ for_control_result.merge(control_data, true)
on_control_result(for_control_result)
@@ -169,12 +168,6 @@ static func on_control_result(for_result_dic: Dictionary) -> void:
if block_kasseta_y5_prd_config_k['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:
- result = false
- log.message(Logger.INFO, 'Прибор ПРД-%s %s' % [for_result_dic.name_prd, ['неисправен', 'исправен'][int(result)]])
-
func find_labels(node1: Node):
if node1 is Label:
@@ -190,3 +183,20 @@ func find_labels(node1: Node):
node1.set_meta("tooltip_set", true)
for child in node1.get_children():
find_labels(child)
+
+
+func _on_status_updated(status_text: String) -> void:
+ _update_status_text(status_text)
+
+
+func _update_status_text(text: String) -> void:
+ $control_result.text = text
+ # Можно добавить смену цвета в зависимости от статуса
+ if "Ошибка" in text or "неисправен" in text:
+ $control_result.add_theme_color_override('font_color', Color.RED)
+ log.message(Logger.INFO, 'Прибор ПРД-%s неисправен' % [unit_prd_k.self_name])
+ elif "Ограничена" in text or "Предупреждение" in text:
+ $control_result.add_theme_color_override('font_color', Color.YELLOW)
+ elif "исправен" in text or "завершён" in text:
+ $control_result.add_theme_color_override('font_color', Color.GREEN)
+ log.message(Logger.INFO, 'Прибор ПРД-%s исправен' % [unit_prd_k.self_name])
diff --git a/scenes/pribor-prd-n/pribor-prd-n.gd b/scenes/pribor-prd-n/pribor-prd-n.gd
index f220e97..efefe61 100644
--- a/scenes/pribor-prd-n/pribor-prd-n.gd
+++ b/scenes/pribor-prd-n/pribor-prd-n.gd
@@ -17,7 +17,11 @@ func _ready() -> void:
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
for temp in power_amplifier:
temp.value1 = -70
+ # Подписываемся на сигналы
unit_prd_n.connect('control_is_over', Callable(self, 'on_press_device'))
+ unit_prd_n.connect('status_updated', Callable(self, '_on_status_updated'))
+ # Устанавливаем начальный статус
+ _update_status_text(unit_prd_n.get_current_status())
start_control()
on_press_device()
@@ -50,8 +54,8 @@ static func set_default_state(default_reset_array_node: Array, power_amplifier_a
func _enter_tree() -> void:
if Engine.is_editor_hint():
return
- $control_result.text = 'Ожидается запуск контроля ...' # TODO: Необходимо сделать пулл сообщений
- $control_result.add_theme_color_override('font_color', Color.ALICE_BLUE)
+ if unit_prd_n:
+ _update_status_text(unit_prd_n.get_current_status())
func _exit_tree() -> void:
@@ -94,13 +98,8 @@ func on_press_device() -> void:
var dou_2: Node = $dou2_A5
var module_fs_3: Node = $kasseta_FS_ND/ref_A3
var dou_3: Node = $dou3_A6
+ var control_data: Dictionary = unit_prd_n.get_control_results()
var for_control_result: Dictionary = {
- 'control_is_over': unit_prd_n.flag_control_is_over,
- 'result_dic': unit_prd_n.control_results,
- '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,
@@ -113,6 +112,7 @@ func on_press_device() -> void:
'module_fs_3': module_fs_3,
'dou_3': dou_3,
}
+ for_control_result.merge(control_data, true)
on_control_result(for_control_result)
@@ -154,12 +154,6 @@ static 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:
- result = false
-
- log.message(Logger.INFO, 'Прибор ПРД-%s %s' % [for_result_dic.name_prd, ['неисправен', 'исправен'][int(result)]])
func find_labels(node1: Node):
@@ -176,3 +170,20 @@ func find_labels(node1: Node):
node1.set_meta("tooltip_set", true)
for child in node1.get_children():
find_labels(child)
+
+
+func _on_status_updated(status_text: String) -> void:
+ _update_status_text(status_text)
+
+
+func _update_status_text(text: String) -> void:
+ $control_result.text = text
+ # Можно добавить смену цвета в зависимости от статуса
+ if "Ошибка" in text or "неисправен" in text:
+ $control_result.add_theme_color_override('font_color', Color.RED)
+ log.message(Logger.INFO, 'Прибор ПРД-%s неисправен' % [unit_prd_n.self_name])
+ elif "Ограничена" in text or "Предупреждение" in text:
+ $control_result.add_theme_color_override('font_color', Color.YELLOW)
+ elif "исправен" in text or "завершён" in text:
+ $control_result.add_theme_color_override('font_color', Color.GREEN)
+ log.message(Logger.INFO, 'Прибор ПРД-%s исправен' % [unit_prd_n.self_name])
diff --git a/scenes/pribor-prd-v/pribor-prd-v.gd b/scenes/pribor-prd-v/pribor-prd-v.gd
index a206b65..432ad64 100644
--- a/scenes/pribor-prd-v/pribor-prd-v.gd
+++ b/scenes/pribor-prd-v/pribor-prd-v.gd
@@ -17,7 +17,11 @@ func _ready() -> void:
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
for temp in power_amplifier:
temp.value1 = -70
+ # Подписываемся на сигналы
unit_prd_v.connect('control_is_over', Callable(self, 'on_press_device'))
+ unit_prd_v.connect('status_updated', Callable(self, '_on_status_updated'))
+ # Устанавливаем начальный статус
+ _update_status_text(unit_prd_v.get_current_status())
on_press_device()
@@ -49,8 +53,8 @@ static func set_default_state(default_reset_array_node: Array, power_amplifier_a
func _enter_tree() -> void:
if Engine.is_editor_hint():
return
- $control_result.text = 'Ожидается запуск контроля ...' # TODO: Необходимо сделать пулл сообщений
- $control_result.add_theme_color_override('font_color', Color.ALICE_BLUE)
+ if unit_prd_v:
+ _update_status_text(unit_prd_v.get_current_status())
func _exit_tree() -> void:
@@ -93,25 +97,19 @@ func on_press_device() -> void:
var dou_4: Node = $dou4_A5
var module_fs_5: Node = $kasseta_FS_VD/ref_A2
var dou_5: Node = $dou5_A6
+ var control_data = unit_prd_v.get_control_results()
var for_control_result: Dictionary = {
- 'control_is_over': unit_prd_v.flag_control_is_over,
- 'result_dic': unit_prd_v.control_results,
- '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,
'power_amplifier': power_amplifier,
'default_reset_array_node': default_reset_array_node,
- 'POWER_THRESHOLD': unit_prd_v.constants.POWER_THRESHOLD,
- 'name_prd': unit_prd_v.self_name,
'module_fs_4': module_fs_4,
'dou_4': dou_4,
'module_fs_5': module_fs_5,
'dou_5': dou_5,
}
+ for_control_result.merge(control_data, true)
on_control_result(for_control_result)
@@ -154,13 +152,6 @@ static func on_control_result(for_result_dic: Dictionary) -> void:
if block_kasseta_y5_prd_config_v['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:
- result = false
-
- log.message(Logger.INFO, 'Прибор ПРД-%s %s' % [for_result_dic.name_prd, ['неисправен', 'исправен'][int(result)]])
-
func find_labels(node1: Node):
if node1 is Label:
@@ -176,3 +167,20 @@ func find_labels(node1: Node):
node1.set_meta("tooltip_set", true)
for child in node1.get_children():
find_labels(child)
+
+
+func _on_status_updated(status_text: String) -> void:
+ _update_status_text(status_text)
+
+
+func _update_status_text(text: String) -> void:
+ $control_result.text = text
+ # Можно добавить смену цвета в зависимости от статуса
+ if "Ошибка" in text or "неисправен" in text:
+ $control_result.add_theme_color_override('font_color', Color.RED)
+ log.message(Logger.INFO, 'Прибор ПРД-%s неисправен' % [unit_prd_v.self_name])
+ elif "Ограничена" in text or "Предупреждение" in text:
+ $control_result.add_theme_color_override('font_color', Color.YELLOW)
+ elif "исправен" in text or "завершён" in text:
+ $control_result.add_theme_color_override('font_color', Color.GREEN)
+ log.message(Logger.INFO, 'Прибор ПРД-%s исправен' % [unit_prd_v.self_name])
diff --git a/scripts/pribor-prd.gd b/scripts/pribor-prd.gd
index 9a9d376..f82e7d9 100644
--- a/scripts/pribor-prd.gd
+++ b/scripts/pribor-prd.gd
@@ -3,7 +3,18 @@ extends Node
# Константы
const CONFIG_PATH = "user://config/setting_prd_control.json"
const DEFAULT_CONFIG_PATH = "res://config/setting_prd_control.json"
+# Добавляем константы для прогресса
+const PROGRESS_INIT: float = 5.0
+const PROGRESS_FS_TURN_ON: float = 10.0
+const PROGRESS_FS_WORK: float = 20.0
+const PROGRESS_CHECK_KASSETA: float = 25.0
+const PROGRESS_WRITE_ISA: float = 30.0
+const PROGRESS_READ_ISA: float = 35.0
+const PROGRESS_UG_SET_RAY: float = 40.0
+const PROGRESS_RAY_STATES: float = 50.0
+const PROGRESS_COMPLETE: float = 100.0
+# Для маппинга (Возможно уберу в будущем, но это не точно)
const RAY_m5: String = "RAY_m5"
const RAY_5: String = "RAY_5"
const RAY_15: String = "RAY_15"
@@ -80,8 +91,17 @@ var machine_timer: Timer = Timer.new()
var cc: int = 0
var cmd_array: Array
-signal control_is_over()
-signal update_progress(progress_value: float)
+# Добавляем переменные для отслеживания прогресса
+var total_fs_to_check: int = 0
+var completed_fs_count: int = 0
+var current_fs_progress: float = 0.0
+# Переменная для текущего статуса
+var current_status: String = "Ожидание запуска контроля"
+
+# Сигналы Класса
+signal control_is_over() # Когда контроль все!
+signal status_updated(status_text: String) # Сигнал для обновления статуса
+signal update_progress(progress_value: float)
signal update_max_value_progress(max_progress_value: int)
var progress_value: float:
@@ -362,6 +382,7 @@ func state_control_machine() -> void:
## 'Выполняется инициализация ФС-%s' % current_litera
func _handle_init_state() -> void:
if current_litera in [1, 2, 3, 4, 5, 6, 7]:
+ _set_status("Инициализация ФС-%s" % current_litera)
var flag_ecm: bool = false
for key in ecms:
var params = ecms[key].params.freq
@@ -375,12 +396,18 @@ func _handle_init_state() -> void:
flag_control_is_over = true
control_results = on_control_result(block_ip_config, control_results)
power_result = prep_power(power_for_litera, self_name)
- emit_signal('control_is_over')
machine_timer.stop()
+ var result: bool = true
+ for device in control_results.values():
+ if not device:
+ result = false
+ _set_status("Прибор ПРД-%s: %s" % [self_name, ['неисправен', 'исправен'][int(result)]])
+ emit_signal('control_is_over')
##'Выполняется включение ФС-%s' % current_litera
func _handle_fs_turn_on_state() -> void:
+ _set_status("Включение ФС-%s" % current_litera)
manage_fs(true, self_name, pribor_config, fs_parameters, current_litera, constants.POWER_UM)
control_timer.wait_time = constants.TIMER_DELAY
control_timer.start()
@@ -388,6 +415,7 @@ func _handle_fs_turn_on_state() -> void:
##'Выполняется проверка ФС-%s' % current_litera
func _handle_fs_work_state() -> void:
+ _set_status("Проверка ФС-%s" % current_litera)
if (current_litera == 2 and control_results.fs_2) or \
(current_litera == 3 and control_results.fs_3) or \
(current_litera == 4 and control_results.fs_4) or \
@@ -400,6 +428,7 @@ func _handle_fs_work_state() -> void:
## Подготовка к настройки и записи в УГ
func _handle_ug_set_state(RAY_DOU_NUM: int) -> void:
+ _set_status("Настройка угла %s" % _get_ray_name(RAY_DOU_NUM))
var dic_att := {
'RAY_DOU_NUM': RAY_DOU_NUM,
'ADDR_UG_LITERA_1': constants.ADDR_UG_LITERA_1,
@@ -421,25 +450,76 @@ func _handle_ug_set_state(RAY_DOU_NUM: int) -> void:
flag_write_isa = on_ug_setting(unit_prd, dic_att, cmd_array)
+
+
## Функция для продвижения статуса прогресс бара
func progressbar_status() -> void:
+ if current_litera == 0:
+ progress_value = PROGRESS_COMPLETE
+ await get_tree().create_timer(0.5).timeout
+ progress_value = 0
+ return
+
+ # Базовый прогресс в зависимости от состояния
+ var base_progress: float = 0.0
+
match state:
STATE_MACHINE.INIT:
- cc += 10 if current_litera in [3, 5, 6, 7] else 0
- if control_timer.get_time_left() > 0:
- progress_value = cc + control_timer.get_wait_time() - control_timer.get_time_left()
- if current_litera == 0:
- progress_value = 0
+ base_progress = PROGRESS_INIT
+ STATE_MACHINE.FS_TURN_ON:
+ base_progress = PROGRESS_FS_TURN_ON
+ STATE_MACHINE.FS_WORK:
+ base_progress = PROGRESS_FS_WORK
+ STATE_MACHINE.CHEK_KASSETA_Y5:
+ base_progress = PROGRESS_CHECK_KASSETA
+ STATE_MACHINE.WRITE_ISA:
+ base_progress = PROGRESS_WRITE_ISA
+ STATE_MACHINE.READ_ISA:
+ base_progress = PROGRESS_READ_ISA
+ STATE_MACHINE.UG_SET_RAY:
+ base_progress = PROGRESS_UG_SET_RAY
+ STATE_MACHINE.UG_SET_RAY_0, STATE_MACHINE.UG_SET_RAY_1:
+ base_progress = PROGRESS_RAY_STATES
+ STATE_MACHINE.UG_SET_RAY_2:
+ base_progress = PROGRESS_RAY_STATES + 10.0
+ STATE_MACHINE.UG_SET_RAY_3:
+ base_progress = PROGRESS_RAY_STATES + 20.0
+ STATE_MACHINE.UG_SET_RAY_4:
+ base_progress = PROGRESS_RAY_STATES + 30.0
+ STATE_MACHINE.UG_SET_RAY_5:
+ base_progress = PROGRESS_RAY_STATES + 40.0
+ STATE_MACHINE.IN_EMS_STOP, STATE_MACHINE.FS_TURN_OFF, STATE_MACHINE.STOP_CONTROL:
+ base_progress = PROGRESS_COMPLETE
+
+ # Плавное заполнение во время ожидания таймера
+ if control_timer.time_left > 0 and state != STATE_MACHINE.STOP_CONTROL:
+ var timer_progress = (control_timer.wait_time - control_timer.time_left) / control_timer.wait_time
+ base_progress = lerp(base_progress - 5.0, base_progress, timer_progress)
+
+ # Распределяем прогресс по ФС
+ if total_fs_to_check > 0:
+ var progress_per_fs = PROGRESS_COMPLETE / total_fs_to_check
+ current_fs_progress = base_progress
+ progress_value = (completed_fs_count * progress_per_fs) + (current_fs_progress * progress_per_fs / PROGRESS_COMPLETE)
+ else:
+ progress_value = base_progress
+
+ progress_value = clamp(progress_value, 0.0, PROGRESS_COMPLETE)
##'Выполняется отключение ФС-%s' % current_litera
func _handle_fs_turn_off_state() -> void:
+ _set_status("Отключение ФС-%s" % current_litera)
flag_fs_status_ok = false
manage_fs(false, self_name, pribor_config, fs_parameters, current_litera, constants.POWER_UM)
##'Выполняется завершение проверки ФС-%s' % current_litera
func _handle_stop_control_state() -> void:
+ _set_status("Завершение контроля ФС-%s" % current_litera)
+ # Увеличиваем счетчик завершенных ФС
+ completed_fs_count += 1
+
_advance_to_next_fs()
state = STATE_MACHINE.INIT
@@ -454,6 +534,9 @@ func _advance_to_next_fs() -> void:
5: current_litera = 0
6: current_litera = 7
7: current_litera = 0
+ # Сбрасываем прогресс текущей ФС при переходе к следующей
+ if current_litera != 0:
+ current_fs_progress = 0.0
######################################
@@ -475,6 +558,7 @@ func on_interfer_resized(ecms_dic: Dictionary) -> void:
func _on_start_contol_device()-> void:
+ _set_status("Подготовка к контролю")
_determine_self_name()
machine_timer.wait_time = constants.STATE_MASHINE_TIMER
machine_timer.start()
@@ -510,8 +594,19 @@ func _determine_self_name() -> void:
control_results = device_data_config.get("control_results", {})
current_litera = device_config.get("start_litera", 0)
+ # Определяем общее количество ФС для контроля
+ match self_name:
+ '1к', '2к', '3к', '4к':
+ total_fs_to_check = 3 # Литеры 1, 6, 7
+ '1н', '2н', '3н', '4н':
+ total_fs_to_check = 2 # Литеры 2, 3
+ '1в', '2в', '3в', '4в':
+ total_fs_to_check = 2 # Литеры 4, 5
+
progress_value = 0
- call_deferred('emit_signal', 'update_max_value_progress', device_config.get("progress_max", 20))
+ completed_fs_count = 0
+ current_fs_progress = 0.0
+ call_deferred('emit_signal', 'update_max_value_progress', 100)
func _load_block_config(config, config_type: String) -> Dictionary:
@@ -564,12 +659,15 @@ func on_stop_control() -> void:
func on_mode_changed(in_tree: bool) -> void:
flag_in_control = in_tree
if not in_tree: ## TODO: Дополнительная проверка если контроль идет, если нет, то смысла вызывать нет
+ _set_status("Ожидание запуска контроля")
flag_control_is_over = false
progress_value = 0
machine_timer.stop()
state = STATE_MACHINE.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:
+ _set_status("Ожидание запуска контроля")
func _process_dkm_status(status: PackedByteArray) -> void:
@@ -916,3 +1014,41 @@ static func check_dou_result(control_dic: Dictionary, power_dic: Dictionary, pri
control_dic[dou] = all_dou_ok
return control_dic
+
+
+# Сеттер для статуса
+func _set_status(new_status: String) -> void:
+ if current_status != new_status:
+ current_status = new_status
+ call_deferred('emit_signal', 'status_updated', new_status)
+
+
+# Геттер для текущего статуса (чтобы можно было забрать в любой момент)
+func get_current_status() -> String:
+ return current_status
+
+
+func _get_ray_name(ray_num: int) -> String:
+ match ray_num:
+ 0: return "-5°"
+ 1: return "5°"
+ 2: return "15°"
+ 3: return "25°"
+ 4: return "35°"
+ 5: return "45°"
+ 6: return "ДКМ"
+ _: return "неизвестный угол"
+
+
+# Геттер для результатов контроля
+func get_control_results() -> Dictionary:
+ return {
+ 'control_is_over': flag_control_is_over,
+ 'result_dic': control_results,
+ 'power_dic': power_result,
+ 'block_kasseta_y5_config': block_kasseta_y5_config,
+ 'block_ip_config': block_ip_config,
+ 'temperature_um': temperature_um,
+ 'POWER_THRESHOLD': constants.POWER_THRESHOLD,
+ 'name_prd': self_name
+ }
From a8b085a514d89da060b68120f4b7214f73293521 Mon Sep 17 00:00:00 2001
From: TotMaxim
Date: Tue, 18 Nov 2025 19:59:45 +0300
Subject: [PATCH 4/4] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?=
=?UTF-8?q?=D0=BA=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8?=
=?UTF-8?q?=20=D1=8F=D1=83=2007=D0=B1=20=D0=B8=20=D0=BA=D0=BE=D1=80=D1=80?=
=?UTF-8?q?=D0=B5=D0=BA=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=B0=20=D1=82?=
=?UTF-8?q?=D0=B5=D0=BC=D0=BF=D0=B5=D1=80=D0=B0=D1=82=D1=83=D1=80=20=D1=83?=
=?UTF-8?q?=D0=BC=20=D0=B2=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB?=
=?UTF-8?q?=D0=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
scenes/pribor-prd-k/pribor-prd-k.gd | 14 ++++++-----
scenes/pribor-prd-n/pribor-prd-n.gd | 16 +++++++------
scenes/pribor-prd-v/pribor-prd-v.gd | 16 ++++++++-----
scenes/контроль/control_prd.gd | 1 +
scenes/контроль/блок-в.tscn | 6 ++---
scenes/контроль/блок-к.tscn | 8 +++----
scenes/контроль/контроль.tscn | 21 +++++++++++++++--
scripts/pribor-prd.gd | 36 +++++++++++++++++++++--------
8 files changed, 81 insertions(+), 37 deletions(-)
diff --git a/scenes/pribor-prd-k/pribor-prd-k.gd b/scenes/pribor-prd-k/pribor-prd-k.gd
index 4990050..6cc1096 100644
--- a/scenes/pribor-prd-k/pribor-prd-k.gd
+++ b/scenes/pribor-prd-k/pribor-prd-k.gd
@@ -69,7 +69,7 @@ static func temperature_fill(temperature_arr_node: Array, temperature_dic: Dicti
for i_node_temperature in temperature_arr_node:
var temperature_meta: String = i_node_temperature.get_meta('um')
if not temperature_dic.has(temperature_meta): return
- i_node_temperature.value1 = temperature_dic[temperature_meta]
+ i_node_temperature.value1 = temperature_dic[temperature_meta] if temperature_dic[temperature_meta] < 361 else -40
static func power_fill(pow_dic: Dictionary, fs_result: Dictionary, power_amplifier_arr_node: Array, POWER_THRESHOLD: int) -> void:
@@ -114,8 +114,6 @@ func on_press_device() -> void:
'fs_nodes': fs_nodes,
'power_amplifier': power_amplifier,
'default_reset_array_node': default_reset_array_node,
- 'POWER_THRESHOLD': unit_prd_k.constants.POWER_THRESHOLD,
- 'name_prd': unit_prd_k.self_name,
'module_fs_1': module_fs_1,
'module_fs_6': module_fs_6,
'dou_6': dou_6,
@@ -136,14 +134,16 @@ static func on_control_result(for_result_dic: Dictionary) -> void:
if block_kasseta_y5_prd_config_k.has(meta_y5):
if not block_kasseta_y5_prd_config_k['yau07']:
node_y5.state = STATE_VAL.ERROR if meta_y5 == 'yau07' else STATE_VAL.NONE
- break
- node_y5.state = STATE_VAL.GOOD if block_kasseta_y5_prd_config_k[meta_y5] else STATE_VAL.ERROR
+ else:
+ node_y5.state = STATE_VAL.GOOD if block_kasseta_y5_prd_config_k[meta_y5] else STATE_VAL.ERROR
var block_ip_config_k: Dictionary = for_result_dic.block_ip_config
for power_supply in for_result_dic.node_ip_power_arr:
var meta_ip = power_supply.get_meta('ip')
- if block_ip_config_k.has(meta_ip) and block_kasseta_y5_prd_config_k.ug:
+ if block_ip_config_k.has(meta_ip) and block_kasseta_y5_prd_config_k.ug and block_kasseta_y5_prd_config_k.yau07:
power_supply.state = STATE_VAL.GOOD if block_ip_config_k[meta_ip][1] else STATE_VAL.ERROR
+ else:
+ power_supply.state = STATE_VAL.NONE
if not for_result_dic.control_is_over:
set_default_state(for_result_dic.default_reset_array_node, for_result_dic.power_amplifier)
@@ -200,3 +200,5 @@ func _update_status_text(text: String) -> void:
elif "исправен" in text or "завершён" in text:
$control_result.add_theme_color_override('font_color', Color.GREEN)
log.message(Logger.INFO, 'Прибор ПРД-%s исправен' % [unit_prd_k.self_name])
+ else:
+ $control_result.add_theme_color_override('font_color', Color.WHITE)
diff --git a/scenes/pribor-prd-n/pribor-prd-n.gd b/scenes/pribor-prd-n/pribor-prd-n.gd
index efefe61..1f546d4 100644
--- a/scenes/pribor-prd-n/pribor-prd-n.gd
+++ b/scenes/pribor-prd-n/pribor-prd-n.gd
@@ -68,7 +68,7 @@ static func temperature_fill(temperature_arr_node: Array, temperature_dic: Dicti
for i_node_temperature in temperature_arr_node:
var temperature_meta: String = i_node_temperature.get_meta('um')
if not temperature_dic.has(temperature_meta): return
- i_node_temperature.value1 = temperature_dic[temperature_meta]
+ i_node_temperature.value1 = temperature_dic[temperature_meta] if temperature_dic[temperature_meta] < 361 else -40
static func power_fill(pow_dic: Dictionary, fs_result: Dictionary, power_amplifier_arr_node: Array, POWER_THRESHOLD: int) -> void:
@@ -105,8 +105,6 @@ func on_press_device() -> void:
'fs_nodes': fs_nodes,
'power_amplifier': power_amplifier_arr_node,
'default_reset_array_node': default_reset_array_node,
- 'POWER_THRESHOLD': unit_prd_n.constants.POWER_THRESHOLD,
- 'name_prd': unit_prd_n.self_name,
'module_fs_2': module_fs_2,
'dou_2': dou_2,
'module_fs_3': module_fs_3,
@@ -124,16 +122,18 @@ static func on_control_result(for_result_dic: Dictionary) -> void:
for node_y5 in nodes_y5:
var meta_y5 = node_y5.get_meta('y5')
if block_kasseta_y5_prd_config_n.has(meta_y5):
- if not block_kasseta_y5_prd_config_n['yau07']:
+ if not block_kasseta_y5_prd_config_n.yau07:
node_y5.state = STATE_VAL.ERROR if meta_y5 == 'yau07' else STATE_VAL.NONE
- break
- node_y5.state = STATE_VAL.GOOD if block_kasseta_y5_prd_config_n[meta_y5] else STATE_VAL.ERROR
+ else:
+ node_y5.state = STATE_VAL.GOOD if block_kasseta_y5_prd_config_n[meta_y5] else STATE_VAL.ERROR
var block_ip_config_n: Dictionary = for_result_dic.block_ip_config
for power_supply in for_result_dic.node_ip_power_arr:
var meta_ip = power_supply.get_meta('ip')
- if block_ip_config_n.has(meta_ip) and block_kasseta_y5_prd_config_n.ug:
+ if block_ip_config_n.has(meta_ip) and block_kasseta_y5_prd_config_n.ug and block_kasseta_y5_prd_config_n.yau07:
power_supply.state = STATE_VAL.GOOD if block_ip_config_n[meta_ip][1] else STATE_VAL.ERROR
+ else:
+ power_supply.state = STATE_VAL.NONE
if not for_result_dic.control_is_over:
set_default_state(for_result_dic.default_reset_array_node, for_result_dic.power_amplifier)
@@ -187,3 +187,5 @@ func _update_status_text(text: String) -> void:
elif "исправен" in text or "завершён" in text:
$control_result.add_theme_color_override('font_color', Color.GREEN)
log.message(Logger.INFO, 'Прибор ПРД-%s исправен' % [unit_prd_n.self_name])
+ else:
+ $control_result.add_theme_color_override('font_color', Color.WHITE)
diff --git a/scenes/pribor-prd-v/pribor-prd-v.gd b/scenes/pribor-prd-v/pribor-prd-v.gd
index 432ad64..7e965f0 100644
--- a/scenes/pribor-prd-v/pribor-prd-v.gd
+++ b/scenes/pribor-prd-v/pribor-prd-v.gd
@@ -67,7 +67,7 @@ static func temperature_fill(temperature_arr_node: Array, temperature_dic: Dicti
for i_node_temperature in temperature_arr_node:
var temperature_meta: String = i_node_temperature.get_meta('um')
if not temperature_dic.has(temperature_meta): return
- i_node_temperature.value1 = temperature_dic[temperature_meta]
+ i_node_temperature.value1 = temperature_dic[temperature_meta] if temperature_dic[temperature_meta] < 361 else -40
static func power_fill(pow_dic: Dictionary, fs_result: Dictionary, power_amplifier_arr_node: Array, POWER_THRESHOLD: int) -> void:
@@ -121,16 +121,18 @@ static func on_control_result(for_result_dic: Dictionary) -> void:
for node_y5 in nodes_y5:
var meta_y5 = node_y5.get_meta('y5')
if block_kasseta_y5_prd_config_v.has(meta_y5):
- if block_kasseta_y5_prd_config_v['yau07'] == false:
+ if not block_kasseta_y5_prd_config_v.yau07:
node_y5.state = STATE_VAL.ERROR if meta_y5 == 'yau07' else STATE_VAL.NONE
- break
- node_y5.state = STATE_VAL.GOOD if block_kasseta_y5_prd_config_v[meta_y5] else STATE_VAL.ERROR
-
+ else:
+ node_y5.state = STATE_VAL.GOOD if block_kasseta_y5_prd_config_v[meta_y5] else STATE_VAL.ERROR
+
var block_ip_config_v: Dictionary = for_result_dic.block_ip_config
for power_supply in for_result_dic.node_ip_power_arr:
var meta_ip = power_supply.get_meta('ip')
- if block_ip_config_v.has(meta_ip) and block_kasseta_y5_prd_config_v.ug:
+ if block_ip_config_v.has(meta_ip) and block_kasseta_y5_prd_config_v.ug and block_kasseta_y5_prd_config_v.yau07:
power_supply.state = STATE_VAL.GOOD if block_ip_config_v[meta_ip][1] else STATE_VAL.ERROR
+ else:
+ power_supply.state = STATE_VAL.NONE
if not for_result_dic.control_is_over:
set_default_state(for_result_dic.default_reset_array_node, for_result_dic.power_amplifier)
@@ -184,3 +186,5 @@ func _update_status_text(text: String) -> void:
elif "исправен" in text or "завершён" in text:
$control_result.add_theme_color_override('font_color', Color.GREEN)
log.message(Logger.INFO, 'Прибор ПРД-%s исправен' % [unit_prd_v.self_name])
+ else:
+ $control_result.add_theme_color_override('font_color', Color.WHITE)
diff --git a/scenes/контроль/control_prd.gd b/scenes/контроль/control_prd.gd
index 1d1baaf..0830601 100644
--- a/scenes/контроль/control_prd.gd
+++ b/scenes/контроль/control_prd.gd
@@ -68,6 +68,7 @@ func _stop_pulse():
pulsing = false
disabled = false
text = original_text
+ tooltip_text = ''
func _on_status_change():
diff --git a/scenes/контроль/блок-в.tscn b/scenes/контроль/блок-в.tscn
index 1b9b7f1..69bb8d2 100644
--- a/scenes/контроль/блок-в.tscn
+++ b/scenes/контроль/блок-в.tscn
@@ -275,7 +275,7 @@ textures = [ExtResource("1_n1aqt"), ExtResource("2_rim3u"), ExtResource("3_3w8fg
value0 = [20.0, 30.0, 40.0, 50.0, 60.0, 70.0]
min_value1 = -40.0
max_value0 = 1400.0
-max_value1 = 60.0
+max_value1 = 55.0
step0 = 1.0
step1 = 1.0
value_name0 = "P,%"
@@ -476,10 +476,10 @@ size_flags_horizontal = 3
size_flags_vertical = 3
tooltip_text = "
Текущее: 0.00
-Диапазон: -40.00…70.00"
+Диапазон: -40.00…60.00"
mouse_filter = 0
min_value = -40.0
-max_value = 60.0
+max_value = 55.0
fill_mode = 3
nine_patch_stretch = true
stretch_margin_left = 8
diff --git a/scenes/контроль/блок-к.tscn b/scenes/контроль/блок-к.tscn
index be62235..3ab9579 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.GOLD if v >= 60 else Color.WHITE
+ $margin/vbox/grid1/level7.tint_progress = Color.RED if v >= 50 else Color.GOLD if v >= 40 else Color.WHITE
@export var min_value0: float:
@@ -262,7 +262,7 @@ value0 = [20.0, 30.0, 40.0, 50.0, 60.0, 70.0]
value1 = -40.0
min_value1 = -40.0
max_value0 = 1400.0
-max_value1 = 60.0
+max_value1 = 55.0
step0 = 1.0
step1 = 1.0
value_name0 = "P,%"
@@ -366,10 +366,10 @@ size_flags_horizontal = 3
size_flags_vertical = 3
tooltip_text = "
Текущее: -40.00
-Диапазон: -40.00…70.00"
+Диапазон: -40.00…60.00"
mouse_filter = 0
min_value = -40.0
-max_value = 60.0
+max_value = 55.0
value = -40.0
fill_mode = 3
nine_patch_stretch = true
diff --git a/scenes/контроль/контроль.tscn b/scenes/контроль/контроль.tscn
index 14e10a0..a2512eb 100644
--- a/scenes/контроль/контроль.tscn
+++ b/scenes/контроль/контроль.tscn
@@ -50,6 +50,7 @@ const PRIBORS_RES = \\
func on_line_changed(u, conn_node, _pribor_meta): conn_node.set_val(u.online)
func on_serv_changed(u, pribor_node, _pribor_meta): pribor_node.state = int(u.serviceability)
+var count_device_control_is_ready: int = 0
func on_mode_changed():
@@ -89,6 +90,7 @@ func _ready():
prd_module.connect('update_serviceability', Callable(self, 'on_serviceability_changed').bind(prd_module, pribor_node))
prd_module.unit_control.connect('update_progress', Callable(self, 'on_update_progress').bind(pribor_node))
prd_module.unit_control.connect('update_max_value_progress', Callable(self, 'on_update_max_value_progress').bind(pribor_node))
+ prd_module.unit_control.connect('control_is_over', Callable(self, 'on_control_is_over').bind(prd_module.unit_control))
if item == 'уарэп-эмс':
signaller.connect('update_uf_serviceability', Callable(self, 'on_update_uf_serviceability').bind(pribor_node))
# Пиктограммы приборов, которые отображают состояние подключения только
@@ -152,6 +154,7 @@ func on_update_uf_serviceability(uf_serviceaability: bool, uf_pribor: Node)-> vo
func _on_control_prd_pressed() -> void:
+ count_device_control_is_ready = 0
signaller.emit_signal('start_contol_device')
@@ -162,6 +165,20 @@ func on_update_progress(value_progress: float, pribor_node: Node) -> void:
func on_update_max_value_progress(max_value_progress: int, pribor_node: Node) -> void:
pribor_node.progress_max_value = max_value_progress
+
+
+func on_control_is_over(pribor_node: Node) -> void:
+ if pribor_node.self_name in ['1н', '2н', '3н', '4н', '1в', '2в', '3в', '4в', '1к', '2к', '3к', '4к',]:
+ count_device_control_is_ready += 1
+ if count_device_control_is_ready == 12:
+ var time_dict = Time.get_datetime_dict_from_system()
+ $control_prd.text = 'Контроль выполнен %02d:%02d/%02d.%02d' % [
+ time_dict.hour,
+ time_dict.minute,
+ time_dict.day,
+ time_dict.month]
+ $control_prd.disabled = false
+ $control_prd.tooltip_text = 'Нажать для повторного контроля '
"
[sub_resource type="SpriteFrames" id="SpriteFrames_foasq"]
@@ -1683,9 +1700,9 @@ default_color = Color(1, 1, 1, 0.352941)
[node name="control_prd" type="Button" parent="."]
layout_mode = 0
-offset_left = 1101.0
+offset_left = 1043.0
offset_top = 64.0
-offset_right = 1326.0
+offset_right = 1390.0
offset_bottom = 104.0
focus_mode = 0
text = "Запуск контроля"
diff --git a/scripts/pribor-prd.gd b/scripts/pribor-prd.gd
index f82e7d9..5349de5 100644
--- a/scripts/pribor-prd.gd
+++ b/scripts/pribor-prd.gd
@@ -84,6 +84,8 @@ var flag_si_fs_input: bool = false
var flag_si_fs_output: bool = false
var flag_in_control: bool = false
var flag_control_is_over: bool = false
+var flag_no_trust_yau07: bool = false
+var flag_only_fs: bool = false
var unit_prd: Object
var control_timer: Timer = Timer.new()
var ems_6666_timer: Timer = Timer.new()
@@ -222,8 +224,9 @@ func _process(_delta: float) -> void:
func on_data_received(unit_pribor: Object) -> void:
if not flag_in_control: return
var status: PackedByteArray = unit_pribor.status
+ block_kasseta_y5_config = check_block_kasseta_y5(status, block_kasseta_y5_config, flag_no_trust_yau07)
+ if flag_no_trust_yau07: return
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():
@@ -284,6 +287,7 @@ func on_fs_update_state(packet_type_7: Dictionary, fs_mapping: Dictionary) -> vo
control_results[fs_key] = fs_result[fs_key]
flag_fs_status_ok = control_results[fs_key] == 1
+
##
func state_control_machine() -> void:
match state:
@@ -306,6 +310,8 @@ func state_control_machine() -> void:
STATE_MACHINE.CHEK_KASSETA_Y5:
if block_kasseta_y5_config['yau07']:
state = STATE_MACHINE.WRITE_ISA
+ elif flag_only_fs:
+ state = STATE_MACHINE.IN_EMS_STOP
STATE_MACHINE.WRITE_ISA:
if not flag_write_isa:
_handle_ug_set_state(0x6)
@@ -375,7 +381,7 @@ func state_control_machine() -> void:
STATE_MACHINE.STOP_CONTROL:
_handle_stop_control_state()
## В машине состояний вызов изменения состояния прогресс бара контроля
- if block_kasseta_y5_config['yau07']:
+ if block_kasseta_y5_config['yau07'] or flag_no_trust_yau07:
progressbar_status()
@@ -522,6 +528,9 @@ func _handle_stop_control_state() -> void:
_advance_to_next_fs()
state = STATE_MACHINE.INIT
+ if current_litera == 0: return
+ if flag_no_trust_yau07:
+ state = STATE_MACHINE.STOP_CONTROL
## Переходит на следующую литеру, если 0 то считай закончил выполнения контроля
@@ -565,6 +574,8 @@ func _on_start_contol_device()-> void:
func _determine_self_name() -> void:
+ flag_no_trust_yau07 = false
+ flag_only_fs = false
cc = 0
state = STATE_MACHINE.get("INIT", 0)
var current_unit = unit_prd.name
@@ -652,6 +663,11 @@ func on_state_mashine():
## При таймауте таймера ожидания выполнения команды и перехода на следующий шаг машины состояний
func on_stop_control() -> void:
_handle_fs_turn_off_state()
+
+ if state == STATE_MACHINE.UG_SET_RAY:
+ flag_no_trust_yau07 = true
+ elif state == STATE_MACHINE.CHEK_KASSETA_Y5:
+ flag_only_fs = true
state = STATE_MACHINE.FS_TURN_OFF
@@ -661,6 +677,8 @@ func on_mode_changed(in_tree: bool) -> void:
if not in_tree: ## TODO: Дополнительная проверка если контроль идет, если нет, то смысла вызывать нет
_set_status("Ожидание запуска контроля")
flag_control_is_over = false
+ flag_no_trust_yau07 = false
+ flag_only_fs = false
progress_value = 0
machine_timer.stop()
state = STATE_MACHINE.INIT
@@ -778,12 +796,13 @@ static func check_block_ip(status_prd: PackedByteArray, ip_config: Dictionary) -
## Проверка кассеты у-5 (ЯУ-07Б, ЭМС-Г, УГ, УКП-1, УКП-2)
-static func check_block_kasseta_y5(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
+static func check_block_kasseta_y5(status_prd: PackedByteArray, y5_config: Dictionary, flag_not_trust: bool) -> Dictionary:
+ y5_config.yau07 = not flag_not_trust
+ if y5_config.yau07:
+ 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
@@ -860,7 +879,6 @@ static func _should_apply_rule(fs_num: int, rule: Dictionary, results: Dictionar
return bool(fs_num >= rule.min and fs_num < rule.max) and results.has(rule.key)
-
## Получение мощности при выполнении контроля
static func power_um_ukp(status: PackedByteArray, litera: int, pwr_result: Array) -> Array:
const Constants: Dictionary = {'POWER_UKP_1' : 31, 'POWER_UKP_2': 63}