Доработка. Обобщенный признак исправности. Добавление таймера для записи в базовый адрес ячейки ЭМС-Г в контроле прд. Наблюдение сигнал излучения от модуля ФС

Доработка. [PATCH] отладка контроля, изменение индикации режима Тренаж
This commit is contained in:
2025-10-15 14:06:16 +03:00
committed by sasha80
parent 2a97865a6d
commit 25d39cb560
11 changed files with 174 additions and 91 deletions

View File

@@ -18,7 +18,7 @@ const constants_k: Dictionary = {
'ATT_UM_6': 0x3,
'ATT_UM_7': 0x2,
'POWER_UM': 100,
'TIMER_DELAY': 5.0,
'TIMER_DELAY': 10.0,
'STATE_MASHINE_TIMER': 0.3,
}
# Конфигурация параметров для каждого прибора

View File

@@ -16,7 +16,7 @@ const constants_n = {
'ATT_UM_2': 0x2,
'ATT_UM_3': 0x3,
'POWER_UM': 100,
'TIMER_DELAY': 5.0,
'TIMER_DELAY': 10.0,
'STATE_MASHINE_TIMER': 0.3,
}
# Конфигурация параметров для каждого прибора
@@ -83,7 +83,7 @@ func _ready() -> void:
setup_timer()
set_default_state()
find_labels(self)
func initialize_connections() -> void:
var unit_name = get_meta('unit_name')[0]

View File

@@ -16,7 +16,7 @@ const constants_v = {
'ATT_UM_4': 0x2,
'ATT_UM_5': 0x3,
'POWER_UM': 100,
'TIMER_DELAY': 5.0,
'TIMER_DELAY': 10.0,
'STATE_MASHINE_TIMER': 0.3,
}
# Конфигурация параметров для каждого прибора

View File

@@ -1,8 +1,48 @@
extends Label
# Используем более понятные имена переменных
const STATUS_GOOD := {"text": "Исправно", "color": Color.GREEN, "font_color": Color.BLACK}
const STATUS_BAD := {"text": "Отказ", "color": Color.RED, "font_color": Color.WHITE}
var _is_uf_status_initialized: bool = false
var is_prd_operational: bool = true
var is_uf_operational: bool = false
func _ready() -> void:
var prd_dict = prd.prd_dict
tooltip_text = 'Нет связи с приборами комплекса'
for prd_module in prd.prd_dict.values():
prd_module.connect('update_serviceability', Callable(self, 'on_serviceability_changed').bind(prd_module))
var unit_uf: = network.get_unit_instance('уарэп-эмс')
unit_uf.connect('data_received', Callable(self, 'on_uf_status_receive'))
add_theme_color_override("font_color", Color.BLACK)
for prd_module in prd_dict.values(): ## Отправка команды на исполнение в ПРД
pass
pass
func on_serviceability_changed(unit_prd_module: Object) -> void:
var check_service: bool = true
for prd_module in prd.prd_dict.values():
if prd_module.unit_yau07.online:
if not unit_prd_module.serviceability:
check_service = false
if check_service != is_prd_operational:
is_prd_operational = check_service
_update_serviceability_display()
func _update_serviceability_display() -> void:
var status := STATUS_GOOD if (is_uf_operational and is_prd_operational) else STATUS_BAD
text = status.text
modulate = status.color
tooltip_text = 'Результаты обобщенного признака работоспособности изделия'
add_theme_color_override("font_color", status.font_color)
func on_uf_status_receive(unit_uf: Object) -> void:
var KEMS_B = ((unit_uf.status[0] >> 0) & 1) and ((unit_uf.status[0] >> 3) & 1)
var EMS_B_1 = ((unit_uf.status[0] >> 1) & 1) and ((unit_uf.status[0] >> 4) & 1)
var EMS_B_2 = ((unit_uf.status[0] >> 2) & 1) and ((unit_uf.status[0] >> 5) & 1)
var IP27B = ((unit_uf.status[2] >> 6) & 1)
var check_service: bool = KEMS_B and EMS_B_1 and EMS_B_2 and IP27B
if not _is_uf_status_initialized or check_service != is_uf_operational:
is_uf_operational = check_service
_update_serviceability_display()
signaller.emit_signal('update_uf_serviceability', check_service)
_is_uf_status_initialized = true

View File

@@ -86,13 +86,13 @@ offset_right = 1600.0
offset_bottom = 27.0
tooltip_text = "Готовность аппаратуры к работе"
mouse_filter = 0
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_font_sizes/font_size = 14
theme_override_styles/normal = SubResource("StyleBoxFlat_o1r22")
text = "Исправно"
text = "Нет связи"
horizontal_alignment = 1
vertical_alignment = 1
script = ExtResource("8_tidwt")
metadata/_edit_lock_ = true
[node name="remote_control" type="Label" parent="."]
visible = false

View File

@@ -6,6 +6,6 @@ func _ready():
func _on_button_toggled(mode: bool):
if mode:
tooltip_text = "Режим \"Тренаж\" задействован"
tooltip_text = "Режим \"Тренаж\" задействован\nТекущее состояние: включено"
else:
tooltip_text = "Задейстовать режим \"Тренаж\""
tooltip_text = "Задейстовать режим \"Тренаж\"\nТекущее состояние: отключено"

View File

@@ -46,6 +46,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)
func on_mode_changed():
@@ -78,6 +79,13 @@ func _ready():
for i in unit_names.size():
var unit_instance: = network.get_unit_instance(unit_names[i])
unit_instance.connect('line_changed', Callable(self, pribor_proc).bind(conn_node, unit_names))
for item in unit_names:
if prd.prd_dict.has(item):
var prd_module = prd.prd_dict[item]
prd_module.connect('update_serviceability', Callable(self, 'on_serviceability_changed').bind(prd_module, pribor_node))
if item == 'уарэп-эмс':
signaller.connect('update_uf_serviceability', Callable(self, 'on_update_uf_serviceability').bind(pribor_node))
# Пиктограммы приборов, которые отображают состояние подключения только
for pribor_node in get_tree().get_nodes_in_group('pribor_pics'):
var unit_name = pribor_node.get_meta('unit_name')
@@ -125,6 +133,18 @@ func on_pribor_press(pribor_path, header_text, pribor_node):
pribor.set_meta('unit_name', unit_name)
pribor.add_to_group('pribor_items')
add_child(pribor)
func on_serviceability_changed(prd_module: Object, prd_pribor:Node)-> void:
if not prd_module.unit_yau07.online:
prd_pribor.state = 0
return
prd_pribor.state = 1 if prd_module.serviceability else 2
func on_update_uf_serviceability(uf_serviceaability: bool, uf_pribor: Node)-> void:
uf_pribor.state = 1 if uf_serviceaability else 2
"
[sub_resource type="SpriteFrames" id="SpriteFrames_foasq"]
@@ -324,6 +344,58 @@ sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
script = ExtResource("11_u7tym")
[node name="pribor_prd_n_1" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора."
layout_mode = 0
offset_left = 1048.0
offset_top = 193.0
offset_right = 1125.0
offset_bottom = 309.0
size_flags_horizontal = 15
size_flags_vertical = 15
toggle_mode = true
action_mode = 0
texture_normal = ExtResource("6_i1yfn")
stretch_mode = 4
flip_h = true
script = ExtResource("3_4pt7j")
state_colors = [Color(1, 1, 1, 1), Color(0, 0.87, 0, 1), Color(0.65, 0.0715, 0.0715, 1)]
metadata/online_proc = "on_line_changed"
metadata/unit_name = ["уарэп-яу07-1н"]
[node name="label" type="Label" parent="pribor_prd_n_1"]
layout_mode = 0
offset_left = 8.0
offset_top = -38.0
offset_right = 60.0
offset_bottom = -19.0
text = "ПРД Н1"
horizontal_alignment = 1
vertical_alignment = 1
[node name="frame" type="NinePatchRect" parent="pribor_prd_n_1"]
visible = false
self_modulate = Color(0.890196, 0.486275, 0.196078, 1)
layout_mode = 0
offset_left = -10.0
offset_top = -24.0
offset_right = 95.0
offset_bottom = 126.0
texture = ExtResource("4_rasbe")
region_rect = Rect2(-3, -3, 89, 89)
patch_margin_left = 16
patch_margin_top = 16
patch_margin_right = 16
patch_margin_bottom = 16
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_n_1"]
light_mask = 3
position = Vector2(35, -10)
scale = Vector2(0.625, 0.625)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
script = ExtResource("11_u7tym")
[node name="pribor_uf" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора."
layout_mode = 0
@@ -987,58 +1059,6 @@ sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
script = ExtResource("11_u7tym")
[node name="pribor_prd_n_1" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора."
layout_mode = 0
offset_left = 1048.0
offset_top = 193.0
offset_right = 1125.0
offset_bottom = 309.0
size_flags_horizontal = 15
size_flags_vertical = 15
toggle_mode = true
action_mode = 0
texture_normal = ExtResource("6_i1yfn")
stretch_mode = 4
flip_h = true
script = ExtResource("3_4pt7j")
state_colors = [Color(1, 1, 1, 1), Color(0, 0.87, 0, 1), Color(0.65, 0.0715, 0.0715, 1)]
metadata/online_proc = "on_line_changed"
metadata/unit_name = ["уарэп-яу07-1н"]
[node name="label" type="Label" parent="pribor_prd_n_1"]
layout_mode = 0
offset_left = 8.0
offset_top = -38.0
offset_right = 60.0
offset_bottom = -19.0
text = "ПРД Н1"
horizontal_alignment = 1
vertical_alignment = 1
[node name="frame" type="NinePatchRect" parent="pribor_prd_n_1"]
visible = false
self_modulate = Color(0.890196, 0.486275, 0.196078, 1)
layout_mode = 0
offset_left = -10.0
offset_top = -24.0
offset_right = 95.0
offset_bottom = 126.0
texture = ExtResource("4_rasbe")
region_rect = Rect2(-3, -3, 89, 89)
patch_margin_left = 16
patch_margin_top = 16
patch_margin_right = 16
patch_margin_bottom = 16
[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_n_1"]
light_mask = 3
position = Vector2(35, -10)
scale = Vector2(0.625, 0.625)
sprite_frames = SubResource("SpriteFrames_foasq")
frame_progress = 0.72355
script = ExtResource("11_u7tym")
[node name="pribor_prd_k_1" type="TextureButton" parent="." groups=["pribor_buttons"]]
editor_description = "Кнопка для выбора прибора."
layout_mode = 0
@@ -1365,6 +1385,7 @@ points = PackedVector2Array(-8, 0, 608, 0)
width = 2.0
default_color = Color(1, 1, 1, 0.352941)
[connection signal="toggled" from="pribor_prd_n_1" to="pribor_prd_n_1" method="_on_toggled"]
[connection signal="toggled" from="pribor_uf" to="pribor_uf" method="_on_toggled"]
[connection signal="toggled" from="pribor_rtr" to="pribor_rtr" method="_on_toggled"]
[connection signal="toggled" from="pribor_afsp_1" to="pribor_afsp_1" method="_on_toggled"]
@@ -1377,7 +1398,6 @@ default_color = Color(1, 1, 1, 0.352941)
[connection signal="toggled" from="pribor_prd_n_3" to="pribor_prd_n_3" method="_on_toggled"]
[connection signal="toggled" from="pribor_prd_k_3" to="pribor_prd_k_3" method="_on_toggled"]
[connection signal="toggled" from="pribor_prd_v_1" to="pribor_prd_v_1" method="_on_toggled"]
[connection signal="toggled" from="pribor_prd_n_1" to="pribor_prd_n_1" method="_on_toggled"]
[connection signal="toggled" from="pribor_prd_k_1" to="pribor_prd_k_1" method="_on_toggled"]
[connection signal="toggled" from="pribor_prd_v_4" to="pribor_prd_v_4" method="_on_toggled"]
[connection signal="toggled" from="pribor_prd_n_4" to="pribor_prd_n_4" method="_on_toggled"]

View File

@@ -342,8 +342,8 @@ text = ""
[connection signal="drag_continue" from="." to="." method="_on_drag_continue"]
[connection signal="toggled" from="btn_view" to="." method="on_button_view_toggled"]
[connection signal="toggled" from="chk_auto" to="." method="on_value_changed"]
[connection signal="toggled" from="btn_activate" to="." method="on_btn_activate"]
[connection signal="toggled" from="btn_activate" to="." method="on_btn_activate_toggled"]
[connection signal="toggled" from="btn_activate" to="." method="on_btn_activate"]
[connection signal="toggled" from="btn_center" to="." method="on_btn_center_toggled"]
[connection signal="button_down" from="zoom_plus" to="tilemap" method="_on_zoom_plus_button_down"]
[connection signal="button_up" from="zoom_plus" to="tilemap" method="_on_zoom_plus_button_up"]