diff --git a/PRD2B03.tmp b/PRD2B03.tmp
new file mode 100644
index 0000000..fef3e76
--- /dev/null
+++ b/PRD2B03.tmp
@@ -0,0 +1,1391 @@
+[gd_scene load_steps=77 format=3 uid="uid://cvor2jm4xk3ha"]
+
+[ext_resource type="Script" path="res://scripts/PRD.gd" id="1_v273n"]
+[ext_resource type="Texture2D" uid="uid://cdxdluvyb5uei" path="res://table/on.png" id="2_dv7xx"]
+[ext_resource type="Script" path="res://table/table.gd" id="2_vmbyo"]
+[ext_resource type="Shader" path="res://Shaders/gradient.gdshader" id="2_vn1it"]
+[ext_resource type="Material" uid="uid://s6xe8igevnv2" path="res://Shaders/shader_edu.tres" id="3_3syd3"]
+[ext_resource type="Texture2D" uid="uid://cfktmk2rowmul" path="res://table/off.png" id="3_qvuyu"]
+[ext_resource type="Shader" path="res://Shaders/ray.gdshader" id="4_uy5o2"]
+[ext_resource type="Texture2D" uid="uid://671got5vbput" path="res://pictures/бургер.png" id="5_eoogc"]
+[ext_resource type="Texture2D" uid="uid://co8dxcd8eckjs" path="res://pictures/Web.png" id="5_i3nvb"]
+[ext_resource type="Texture2D" uid="uid://didrk0pcfgirg" path="res://pictures/клад.png" id="6_bqc7t"]
+[ext_resource type="Texture2D" uid="uid://cxn1guhi7lg3i" path="res://pictures/серпимолот.png" id="7_0pknj"]
+[ext_resource type="Shader" path="res://Shaders/ray_2.gdshader" id="8_12mng"]
+[ext_resource type="Texture2D" uid="uid://ysxmr26y0i8v" path="res://pictures/серпимоло_pressed.png" id="8_iuer1"]
+[ext_resource type="Texture2D" uid="uid://ckvwvec0hop37" path="res://pictures/контролер.png" id="8_qqoau"]
+[ext_resource type="Texture2D" uid="uid://cgtg4gbqnuxrc" path="res://pictures/nine-patch-round.png" id="9_0r2qk"]
+[ext_resource type="Script" path="res://scripts/control_panel.gd" id="9_akagi"]
+[ext_resource type="Script" path="res://scripts/ems_g.gd" id="9_g1wia"]
+[ext_resource type="Shader" path="res://Shaders/load.gdshader" id="10_lf1xh"]
+[ext_resource type="Texture2D" uid="uid://t3bxox5ehcg8" path="res://pictures/контролер_pressed.png" id="10_t2sq8"]
+[ext_resource type="PackedScene" uid="uid://bdb0bhfu7366l" path="res://kasseta-fs-kd.tscn" id="10_tdh2s"]
+[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://table/элемент-в.tscn" id="11_fg7ul"]
+[ext_resource type="PackedScene" uid="uid://bn2n3lgc4ts1r" path="res://table/блок-а.tscn" id="11_k47r2"]
+[ext_resource type="Texture2D" uid="uid://dpes8l540mgrd" path="res://pictures/эмс.png" id="11_qqb3s"]
+[ext_resource type="Texture2D" uid="uid://bcq6o4fuxh88b" path="res://pictures/эмс_pressed.png" id="12_u035s"]
+[ext_resource type="Texture2D" uid="uid://b8jfjs7qh10wh" path="res://pictures/фс.png" id="13_xdqnq"]
+[ext_resource type="Texture2D" uid="uid://c8gfddmqnws7v" path="res://pictures/фс_pressed.png" id="14_0dei1"]
+[ext_resource type="Script" path="res://scripts/modul_fs.gd" id="15_b4pr1"]
+[ext_resource type="Texture2D" uid="uid://cyuv78v6vem55" path="res://pictures/сохр.png" id="15_bpwqh"]
+[ext_resource type="Shader" path="res://Shaders/loadead.gdshader" id="16_4osrw"]
+[ext_resource type="Texture2D" uid="uid://bk2cbbj31mq2x" path="res://pictures/сохр_pressed.png" id="16_55rvl"]
+[ext_resource type="Texture2D" uid="uid://c12e2lcqf6r3o" path="res://pictures/загр.png" id="17_uy706"]
+[ext_resource type="Texture2D" uid="uid://gjqcmfxb4vo4" path="res://pictures/загр_pressed.png" id="18_iu14f"]
+[ext_resource type="Shader" path="res://Shaders/ray_litera_1.gdshader" id="20_do1s5"]
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_o0too"]
+bg_color = Color(0.447059, 0.0784314, 0.192157, 1)
+border_width_bottom = 6
+border_color = Color(0.396649, 0.0647458, 0.167246, 1)
+border_blend = true
+corner_radius_top_left = 10
+corner_radius_bottom_left = 10
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_eib3t"]
+bg_color = Color(0.252841, 0.19297, 0.252851, 1)
+border_width_bottom = 6
+border_color = Color(0.228592, 0.173062, 0.22863, 1)
+border_blend = true
+corner_radius_top_left = 10
+corner_radius_bottom_left = 10
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_gooip"]
+bg_color = Color(0.143, 0.103, 0.143, 0.799)
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_148rs"]
+bg_color = Color(0.141176, 0.101961, 0.141176, 0.8)
+border_width_bottom = 4
+border_color = Color(0.223529, 0.168627, 0.223529, 1)
+border_blend = true
+corner_radius_top_left = 2
+corner_radius_top_right = 2
+corner_radius_bottom_right = 2
+corner_radius_bottom_left = 2
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ldbvf"]
+bg_color = Color(0.141176, 0.101961, 0.141176, 0.8)
+
+[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_h8aei"]
+
+[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_d322q"]
+
+[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_8j02b"]
+
+[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_ls6vm"]
+
+[sub_resource type="Theme" id="Theme_k5ur4"]
+Button/colors/font_color = Color(1, 1, 0.941176, 1)
+Button/colors/font_focus_color = Color(1, 1, 0.941176, 1)
+Button/styles/focus = null
+Button/styles/hover = SubResource("StyleBoxFlat_o0too")
+Button/styles/normal = SubResource("StyleBoxFlat_o0too")
+Button/styles/pressed = SubResource("StyleBoxFlat_eib3t")
+CheckButton/icons/checked = ExtResource("2_dv7xx")
+CheckButton/icons/unchecked = ExtResource("3_qvuyu")
+OptionButton/colors/font_color = Color(1, 1, 0.941176, 1)
+OptionButton/colors/font_focus_color = Color(1, 1, 0.941176, 1)
+OptionButton/font_sizes/font_size = 17
+OptionButton/styles/focus = SubResource("StyleBoxFlat_gooip")
+OptionButton/styles/hover = SubResource("StyleBoxFlat_148rs")
+OptionButton/styles/normal = SubResource("StyleBoxFlat_148rs")
+OptionButton/styles/pressed = SubResource("StyleBoxFlat_ldbvf")
+TabContainer/styles/panel = SubResource("StyleBoxTexture_h8aei")
+TabContainer/styles/tab_focus = SubResource("StyleBoxTexture_d322q")
+TabContainer/styles/tab_selected = SubResource("StyleBoxTexture_8j02b")
+TabContainer/styles/tabbar_background = SubResource("StyleBoxTexture_ls6vm")
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_3q35w"]
+shader = ExtResource("2_vn1it")
+shader_parameter/outerRadius = 4.0
+shader_parameter/MainAlpha = 1.0
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_4qm5k"]
+bg_color = Color(0.6, 0.501961, 0.6, 0.901961)
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_p247y"]
+bg_color = Color(0.294118, 0.231373, 0.294118, 1)
+corner_radius_top_left = 10
+corner_radius_bottom_left = 10
+
+[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_rh6pm"]
+
+[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_x11tp"]
+
+[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_mn8w2"]
+
+[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_21lc8"]
+
+[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_k08q3"]
+
+[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_dklg6"]
+
+[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_17le6"]
+
+[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_7u7p7"]
+
+[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_1as41"]
+
+[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_723du"]
+size = Vector2(1600, 1200)
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_o7txs"]
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_dgiai"]
+shader = ExtResource("4_uy5o2")
+shader_parameter/color_signal = Color(0.588235, 0.466667, 0, 1)
+shader_parameter/turn = 0.785
+shader_parameter/inner_radius = 0.32
+shader_parameter/speed = 0.0
+
+[sub_resource type="Gradient" id="Gradient_ki0n7"]
+
+[sub_resource type="GradientTexture2D" id="GradientTexture2D_0pk2o"]
+gradient = SubResource("Gradient_ki0n7")
+fill_from = Vector2(0.474359, 0.5)
+metadata/_snap_enabled = true
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_2pxu2"]
+shader = ExtResource("8_12mng")
+shader_parameter/color_signal = Color(0.588242, 0.466356, 0, 1)
+shader_parameter/turn = 0.785
+shader_parameter/inner_radius = 0.32
+shader_parameter/speed = 0.0
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_ps0lm"]
+shader = ExtResource("20_do1s5")
+shader_parameter/color_signal = Color(0.374965, 0.291384, 0.05121, 1)
+shader_parameter/turn = 0.785
+shader_parameter/inner_radius = 0.795
+shader_parameter/speed = 0.0
+
+[sub_resource type="Gradient" id="Gradient_anl0y"]
+
+[sub_resource type="GradientTexture2D" id="GradientTexture2D_766ko"]
+gradient = SubResource("Gradient_anl0y")
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_eleyh"]
+bg_color = Color(0.447059, 0.0784314, 0.192157, 1)
+corner_radius_top_left = 5
+corner_radius_top_right = 5
+corner_radius_bottom_right = 5
+corner_radius_bottom_left = 5
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_yaooi"]
+bg_color = Color(0.699728, 0.157278, 0.320529, 1)
+corner_radius_top_left = 5
+corner_radius_top_right = 5
+corner_radius_bottom_right = 5
+corner_radius_bottom_left = 5
+
+[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_tn8m6"]
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_13x31"]
+bg_color = Color(0.111197, 0.111197, 0.111197, 0.201)
+corner_radius_top_left = 15
+corner_radius_top_right = 15
+corner_radius_bottom_right = 15
+corner_radius_bottom_left = 15
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_07wue"]
+shader = ExtResource("10_lf1xh")
+shader_parameter/frequency = 5.0
+shader_parameter/amplitude = 0.1
+shader_parameter/speed = 5.0
+shader_parameter/direction = -1.0
+shader_parameter/color1 = Color(0, 0, 0, 1)
+shader_parameter/color2 = Color(0.235, 0.18, 0.235, 1)
+shader_parameter/color3 = Color(0.235, 0.18, 0.235, 0.5)
+shader_parameter/color4 = Color(0, 0, 0, 0)
+shader_parameter/opacity = 0.5
+shader_parameter/turn = 0.785
+
+[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_ooo4i"]
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_cm644"]
+shader = ExtResource("16_4osrw")
+shader_parameter/dot_scale = 0.5
+shader_parameter/ring_radius = 0.2
+shader_parameter/num_points = 8
+shader_parameter/gap_ratio = 0.102
+shader_parameter/all_dots_same_size = false
+shader_parameter/dot_color_start = Color(0.893646, 0.893797, 0.859099, 1)
+shader_parameter/dot_color_end = Color(0.888169, 0.740534, 1, 1)
+shader_parameter/enable_shadow = true
+shader_parameter/shadow_color = Color(0, 0, 0, 0.35)
+shader_parameter/shadow_offset = Vector2(0.03, 0.01)
+shader_parameter/rotation_speed = 4.995
+shader_parameter/icon_size = 0.15
+shader_parameter/enable_icon_rotation = false
+shader_parameter/reverse_icon_rotation = false
+shader_parameter/icon_rotation_speed = 1.0
+shader_parameter/show_icon = false
+
+[sub_resource type="Gradient" id="Gradient_kvhy4"]
+colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 1)
+
+[sub_resource type="GradientTexture2D" id="GradientTexture2D_2sr0p"]
+gradient = SubResource("Gradient_kvhy4")
+width = 100
+height = 150
+fill = 1
+fill_from = Vector2(0.521368, 0.512821)
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_slcfo"]
+shader = ExtResource("10_lf1xh")
+shader_parameter/frequency = 5.0
+shader_parameter/amplitude = 600.0
+shader_parameter/speed = 5.0
+shader_parameter/direction = -1.0
+shader_parameter/color1 = Color(0, 0, 0, 1)
+shader_parameter/color2 = Color(0.235, 0.18, 0.235, 1)
+shader_parameter/color3 = Color(0.235, 0.18, 0.235, 0.5)
+shader_parameter/color4 = Color(0, 0, 0, 0)
+shader_parameter/opacity = 0.218
+shader_parameter/turn = 0.785
+
+[sub_resource type="Theme" id="Theme_yblys"]
+CheckBox/font_sizes/font_size = 14
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ei3d4"]
+bg_color = Color(0.362983, 0.685867, 0.396516, 1)
+corner_radius_top_left = 5
+corner_radius_top_right = 5
+corner_radius_bottom_right = 5
+corner_radius_bottom_left = 5
+
+[node name="Node2D" type="Node2D"]
+script = ExtResource("1_v273n")
+
+[node name="Background" type="ColorRect" parent="."]
+offset_right = 3012.0
+offset_bottom = 1080.0
+theme = SubResource("Theme_k5ur4")
+color = Color(0.356863, 0.278431, 0.356863, 1)
+metadata/_edit_lock_ = true
+
+[node name="gradient" type="ColorRect" parent="Background"]
+material = SubResource("ShaderMaterial_3q35w")
+layout_mode = 0
+offset_left = -1149.0
+offset_top = -31.0
+offset_right = 3008.0
+offset_bottom = 1103.0
+metadata/_edit_lock_ = true
+
+[node name="switch_panel" type="Panel" parent="Background"]
+layout_mode = 0
+offset_left = -10.0
+offset_top = -8.0
+offset_right = 222.0
+offset_bottom = 1112.0
+theme_override_styles/panel = SubResource("StyleBoxFlat_4qm5k")
+
+[node name="select_prd" type="Button" parent="Background/switch_panel" groups=["select_grp"]]
+layout_mode = 0
+offset_left = 16.0
+offset_top = 128.0
+offset_right = 232.0
+offset_bottom = 164.0
+focus_mode = 0
+mouse_default_cursor_shape = 2
+theme_override_font_sizes/font_size = 14
+theme_override_styles/pressed = SubResource("StyleBoxFlat_p247y")
+toggle_mode = true
+button_pressed = true
+text = "ПРД"
+
+[node name="select_control" type="Button" parent="Background/switch_panel" groups=["select_grp"]]
+layout_mode = 0
+offset_left = 16.0
+offset_top = 168.0
+offset_right = 232.0
+offset_bottom = 204.0
+focus_mode = 0
+mouse_default_cursor_shape = 2
+theme_override_font_sizes/font_size = 14
+theme_override_styles/pressed = SubResource("StyleBoxFlat_p247y")
+toggle_mode = true
+text = "КОНТРОЛЬ"
+
+[node name="select_ems_g" type="Button" parent="Background/switch_panel" groups=["select_grp"]]
+layout_mode = 0
+offset_left = 16.0
+offset_top = 208.0
+offset_right = 232.0
+offset_bottom = 244.0
+focus_mode = 0
+mouse_default_cursor_shape = 2
+theme_override_font_sizes/font_size = 14
+theme_override_styles/pressed = SubResource("StyleBoxFlat_p247y")
+toggle_mode = true
+text = "ЭМС Г"
+
+[node name="select_fs" type="Button" parent="Background/switch_panel" groups=["select_grp"]]
+layout_mode = 0
+offset_left = 16.0
+offset_top = 249.0
+offset_right = 232.0
+offset_bottom = 285.0
+focus_mode = 0
+mouse_default_cursor_shape = 2
+theme_override_font_sizes/font_size = 14
+theme_override_styles/pressed = SubResource("StyleBoxFlat_p247y")
+toggle_mode = true
+text = "Модуль ФС"
+
+[node name="save_config" type="Button" parent="Background/switch_panel" groups=["select_grp"]]
+layout_mode = 0
+offset_left = 16.0
+offset_top = 840.0
+offset_right = 232.0
+offset_bottom = 876.0
+focus_mode = 0
+mouse_default_cursor_shape = 2
+theme_override_font_sizes/font_size = 14
+theme_override_styles/pressed = SubResource("StyleBoxFlat_p247y")
+text = "Сохранить"
+
+[node name="load_config" type="Button" parent="Background/switch_panel" groups=["select_grp"]]
+layout_mode = 0
+offset_left = 16.0
+offset_top = 880.0
+offset_right = 232.0
+offset_bottom = 916.0
+focus_mode = 0
+mouse_default_cursor_shape = 2
+theme_override_font_sizes/font_size = 14
+theme_override_styles/pressed = SubResource("StyleBoxFlat_p247y")
+text = "Загрузить"
+
+[node name="burgerButton" type="TextureButton" parent="Background/switch_panel"]
+self_modulate = Color(1, 1, 0.941176, 1)
+layout_mode = 0
+offset_left = 188.0
+offset_top = 28.0
+offset_right = 220.0
+offset_bottom = 60.0
+tooltip_text = "свернуть/развернуть боковую панель"
+mouse_default_cursor_shape = 2
+toggle_mode = true
+texture_normal = ExtResource("6_bqc7t")
+texture_pressed = ExtResource("5_eoogc")
+ignore_texture_size = true
+stretch_mode = 0
+metadata/_edit_lock_ = true
+
+[node name="block" type="Panel" parent="Background/switch_panel/burgerButton"]
+self_modulate = Color(1, 1, 1, 0)
+layout_mode = 0
+offset_left = -290.0
+offset_top = -12.0
+offset_right = -234.0
+offset_bottom = 44.0
+
+[node name="texture_prd" type="TextureButton" parent="Background/switch_panel" groups=["burger_gr"]]
+self_modulate = Color(1, 1, 0.941, 0.85)
+layout_mode = 0
+offset_left = -159.0
+offset_top = 122.0
+offset_right = -118.0
+offset_bottom = 162.0
+mouse_default_cursor_shape = 2
+toggle_mode = true
+button_pressed = true
+texture_normal = ExtResource("13_xdqnq")
+texture_pressed = ExtResource("14_0dei1")
+ignore_texture_size = true
+stretch_mode = 0
+
+[node name="texture_control" type="TextureButton" parent="Background/switch_panel" groups=["burger_gr"]]
+self_modulate = Color(1, 1, 0.941, 0.85)
+layout_mode = 0
+offset_left = -155.0
+offset_top = 184.0
+offset_right = -115.0
+offset_bottom = 224.0
+tooltip_text = "Старт контроля прибора"
+mouse_default_cursor_shape = 2
+toggle_mode = true
+texture_normal = ExtResource("8_qqoau")
+texture_pressed = ExtResource("10_t2sq8")
+ignore_texture_size = true
+stretch_mode = 0
+
+[node name="texture_ems_g" type="TextureButton" parent="Background/switch_panel" groups=["burger_gr"]]
+layout_mode = 0
+offset_left = -155.0
+offset_top = 240.0
+offset_right = -115.0
+offset_bottom = 280.0
+mouse_default_cursor_shape = 2
+toggle_mode = true
+texture_normal = ExtResource("11_qqb3s")
+texture_pressed = ExtResource("12_u035s")
+ignore_texture_size = true
+stretch_mode = 0
+
+[node name="texture_fs" type="TextureButton" parent="Background/switch_panel" groups=["burger_gr"]]
+self_modulate = Color(1, 1, 0.941, 0.85)
+layout_mode = 0
+offset_left = -155.0
+offset_top = 304.0
+offset_right = -115.0
+offset_bottom = 344.0
+mouse_default_cursor_shape = 2
+toggle_mode = true
+texture_normal = ExtResource("7_0pknj")
+texture_pressed = ExtResource("8_iuer1")
+ignore_texture_size = true
+stretch_mode = 0
+
+[node name="texture_save_config" type="TextureButton" parent="Background/switch_panel" groups=["burger_gr"]]
+self_modulate = Color(1, 1, 0.941, 0.85)
+layout_mode = 0
+offset_left = -155.0
+offset_top = 824.0
+offset_right = -115.0
+offset_bottom = 864.0
+tooltip_text = "Сохранить текущие настройки ЭМС-Г"
+mouse_default_cursor_shape = 2
+texture_normal = ExtResource("15_bpwqh")
+texture_pressed = ExtResource("16_55rvl")
+ignore_texture_size = true
+stretch_mode = 0
+
+[node name="texture_load_config" type="TextureButton" parent="Background/switch_panel" groups=["burger_gr"]]
+self_modulate = Color(1, 1, 0.941, 0.85)
+layout_mode = 0
+offset_left = -155.0
+offset_top = 880.0
+offset_right = -115.0
+offset_bottom = 920.0
+tooltip_text = "Загрузить настройки для ЭМС-Г"
+mouse_default_cursor_shape = 2
+texture_normal = ExtResource("17_uy706")
+texture_pressed = ExtResource("18_iu14f")
+ignore_texture_size = true
+stretch_mode = 0
+
+[node name="notice" type="GridContainer" parent="Background"]
+layout_mode = 0
+offset_left = 1098.0
+offset_top = 937.0
+offset_right = 1832.0
+offset_bottom = 1000.0
+columns = 3
+
+[node name="lbl_commit" type="Label" parent="Background/notice"]
+layout_mode = 2
+theme_override_colors/font_color = Color(1, 1, 0.941176, 1)
+
+[node name="bind_addr" type="Label" parent="Background/notice"]
+layout_mode = 2
+
+[node name="bind_port" type="Label" parent="Background/notice"]
+layout_mode = 2
+
+[node name="load_notice" type="Label" parent="Background/notice"]
+layout_mode = 2
+
+[node name="TabContainer" type="TabContainer" parent="."]
+offset_left = 216.0
+offset_top = 39.0
+offset_right = 2420.0
+offset_bottom = 936.0
+theme = SubResource("Theme_k5ur4")
+theme_override_colors/font_unselected_color = Color(0, 0, 0, 0.0392157)
+theme_override_colors/font_selected_color = Color(0, 0, 0, 0)
+theme_override_styles/tab_focus = SubResource("StyleBoxTexture_rh6pm")
+theme_override_styles/tab_disabled = SubResource("StyleBoxTexture_x11tp")
+theme_override_styles/tabbar_background = SubResource("StyleBoxTexture_mn8w2")
+theme_override_styles/panel = SubResource("StyleBoxTexture_21lc8")
+theme_override_styles/tab_selected = SubResource("StyleBoxTexture_k08q3")
+theme_override_styles/tab_hovered = SubResource("StyleBoxTexture_dklg6")
+theme_override_styles/tab_unselected = SubResource("StyleBoxTexture_17le6")
+tab_alignment = 2
+current_tab = 0
+tab_focus_mode = 0
+metadata/_edit_lock_ = true
+
+[node name="PRD" type="Panel" parent="TabContainer"]
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxTexture_7u7p7")
+metadata/_tab_index = 0
+metadata/_edit_lock_ = true
+
+[node name="body_grid" type="GridContainer" parent="TabContainer/PRD"]
+layout_mode = 0
+offset_left = 272.0
+offset_top = -20.0
+offset_right = 1680.0
+offset_bottom = 888.0
+metadata/_edit_lock_ = true
+
+[node name="litera_2_4_6" type="GridContainer" parent="TabContainer/PRD/body_grid"]
+clip_contents = true
+custom_minimum_size = Vector2(700, 300)
+layout_mode = 2
+size_flags_horizontal = 3
+columns = 5
+
+[node name="fs_control" type="GridContainer" parent="TabContainer/PRD/body_grid/litera_2_4_6"]
+custom_minimum_size = Vector2(350, 0)
+layout_mode = 2
+script = ExtResource("2_vmbyo")
+metadata/_edit_lock_ = true
+
+[node name="space" type="Panel" parent="TabContainer/PRD/body_grid/litera_2_4_6"]
+custom_minimum_size = Vector2(50, 0)
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxTexture_1as41")
+
+[node name="yau07b_control" type="GridContainer" parent="TabContainer/PRD/body_grid/litera_2_4_6"]
+layout_mode = 2
+script = ExtResource("2_vmbyo")
+metadata/_edit_lock_ = true
+
+[node name="space2" type="Panel" parent="TabContainer/PRD/body_grid/litera_2_4_6"]
+custom_minimum_size = Vector2(50, 0)
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxTexture_1as41")
+
+[node name="table_ukp_1" type="GridContainer" parent="TabContainer/PRD/body_grid/litera_2_4_6"]
+layout_mode = 2
+script = ExtResource("2_vmbyo")
+metadata/_edit_lock_ = true
+
+[node name="PSK" type="Sprite2D" parent="TabContainer/PRD/body_grid/litera_2_4_6"]
+modulate = Color(1, 1, 0.941176, 0.733333)
+material = ExtResource("3_3syd3")
+position = Vector2(1002, 20)
+scale = Vector2(0.23, 0.217)
+texture = SubResource("PlaceholderTexture2D_723du")
+offset = Vector2(800, 600)
+
+[node name="PSK grad" type="TextureRect" parent="TabContainer/PRD/body_grid/litera_2_4_6/PSK"]
+modulate = Color(1, 1, 0.941176, 0.784314)
+material = SubResource("ShaderMaterial_o7txs")
+offset_left = 554.954
+offset_top = -30.0
+offset_right = 1290.95
+offset_bottom = 1134.0
+texture = ExtResource("5_i3nvb")
+expand_mode = 1
+metadata/_edit_lock_ = true
+
+[node name="ray_1" type="Sprite2D" parent="TabContainer/PRD/body_grid/litera_2_4_6/PSK"]
+material = SubResource("ShaderMaterial_dgiai")
+position = Vector2(549.221, 543.623)
+scale = Vector2(21.8765, 21.6782)
+texture = SubResource("GradientTexture2D_0pk2o")
+metadata/_edit_lock_ = true
+
+[node name="litera_3_5_7" type="GridContainer" parent="TabContainer/PRD/body_grid"]
+custom_minimum_size = Vector2(500, 300)
+layout_mode = 2
+columns = 5
+
+[node name="fs_control" type="GridContainer" parent="TabContainer/PRD/body_grid/litera_3_5_7"]
+custom_minimum_size = Vector2(350, 0)
+layout_mode = 2
+script = ExtResource("2_vmbyo")
+metadata/_edit_lock_ = true
+
+[node name="space" type="Panel" parent="TabContainer/PRD/body_grid/litera_3_5_7"]
+custom_minimum_size = Vector2(50, 0)
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxTexture_1as41")
+
+[node name="yau07b_control" type="GridContainer" parent="TabContainer/PRD/body_grid/litera_3_5_7"]
+layout_mode = 2
+script = ExtResource("2_vmbyo")
+metadata/_edit_lock_ = true
+
+[node name="space2" type="Panel" parent="TabContainer/PRD/body_grid/litera_3_5_7"]
+custom_minimum_size = Vector2(50, 0)
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxTexture_1as41")
+
+[node name="table_ukp_2" type="GridContainer" parent="TabContainer/PRD/body_grid/litera_3_5_7"]
+layout_mode = 2
+script = ExtResource("2_vmbyo")
+metadata/_edit_lock_ = true
+
+[node name="PSK2" type="Sprite2D" parent="TabContainer/PRD/body_grid/litera_3_5_7"]
+modulate = Color(1, 1, 0.941176, 0.733333)
+material = ExtResource("3_3syd3")
+position = Vector2(1002, 14)
+scale = Vector2(0.23, 0.217)
+texture = SubResource("PlaceholderTexture2D_723du")
+offset = Vector2(800, 600)
+
+[node name="PSK grad" type="TextureRect" parent="TabContainer/PRD/body_grid/litera_3_5_7/PSK2"]
+modulate = Color(1, 1, 0.941176, 0.784314)
+show_behind_parent = true
+material = SubResource("ShaderMaterial_o7txs")
+offset_left = 554.954
+offset_top = -30.0
+offset_right = 1290.95
+offset_bottom = 1134.0
+texture = ExtResource("5_i3nvb")
+expand_mode = 1
+metadata/_edit_lock_ = true
+
+[node name="ray_2" type="Sprite2D" parent="TabContainer/PRD/body_grid/litera_3_5_7/PSK2"]
+material = SubResource("ShaderMaterial_2pxu2")
+position = Vector2(549.221, 539.353)
+scale = Vector2(21.8765, 21.6782)
+texture = SubResource("GradientTexture2D_0pk2o")
+metadata/_edit_lock_ = true
+
+[node name="litera_1" type="GridContainer" parent="TabContainer/PRD/body_grid"]
+clip_contents = true
+custom_minimum_size = Vector2(700, 300)
+layout_mode = 2
+size_flags_horizontal = 3
+columns = 5
+metadata/_edit_lock_ = true
+
+[node name="fs_control" type="GridContainer" parent="TabContainer/PRD/body_grid/litera_1"]
+custom_minimum_size = Vector2(300, 0)
+layout_mode = 2
+script = ExtResource("2_vmbyo")
+metadata/_edit_lock_ = true
+
+[node name="space" type="Panel" parent="TabContainer/PRD/body_grid/litera_1"]
+custom_minimum_size = Vector2(50, 0)
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxTexture_1as41")
+
+[node name="yau07b_control" type="GridContainer" parent="TabContainer/PRD/body_grid/litera_1"]
+layout_mode = 2
+script = ExtResource("2_vmbyo")
+metadata/_edit_lock_ = true
+
+[node name="space2" type="Panel" parent="TabContainer/PRD/body_grid/litera_1"]
+custom_minimum_size = Vector2(50, 0)
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxTexture_1as41")
+
+[node name="table_ukp_1" type="GridContainer" parent="TabContainer/PRD/body_grid/litera_1"]
+layout_mode = 2
+script = ExtResource("2_vmbyo")
+metadata/_edit_lock_ = true
+
+[node name="PSK3" type="Sprite2D" parent="TabContainer/PRD/body_grid/litera_1"]
+modulate = Color(1, 1, 0.941176, 0.733333)
+position = Vector2(1215.13, 138.125)
+scale = Vector2(0.645437, 0.590045)
+texture = ExtResource("5_i3nvb")
+metadata/_edit_lock_ = true
+
+[node name="ray_litera_1" type="Sprite2D" parent="TabContainer/PRD/body_grid/litera_1/PSK3"]
+material = SubResource("ShaderMaterial_ps0lm")
+position = Vector2(-125.87, -7.32874)
+scale = Vector2(7.7412, 7.33907)
+texture = SubResource("GradientTexture2D_766ko")
+metadata/_edit_lock_ = true
+
+[node name="select_dev" type="GridContainer" parent="TabContainer/PRD"]
+layout_mode = 2
+offset_left = 48.0
+offset_top = -16.0
+offset_right = 48.0
+offset_bottom = -16.0
+script = ExtResource("2_vmbyo")
+node_gap = Vector2(100, 50)
+
+[node name="Connect_prd" type="Button" parent="TabContainer/PRD"]
+layout_mode = 0
+offset_left = 47.0
+offset_top = 30.0
+offset_right = 248.0
+offset_bottom = 58.0
+focus_mode = 0
+mouse_default_cursor_shape = 16
+theme_override_colors/font_color = Color(1, 1, 0.941176, 1)
+theme_override_styles/hover = SubResource("StyleBoxFlat_eleyh")
+theme_override_styles/pressed = SubResource("StyleBoxFlat_yaooi")
+theme_override_styles/normal = SubResource("StyleBoxFlat_eleyh")
+text = "Подключение"
+metadata/_edit_lock_ = true
+
+[node name="ControlPanel" type="Panel" parent="TabContainer"]
+visible = false
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxTexture_tn8m6")
+script = ExtResource("9_akagi")
+metadata/_tab_index = 1
+metadata/_edit_lock_ = true
+
+[node name="lbl_control" type="Label" parent="TabContainer/ControlPanel"]
+modulate = Color(1, 0, 0, 1)
+layout_mode = 0
+offset_left = 135.0
+offset_top = -46.0
+offset_right = 755.0
+offset_bottom = -15.0
+theme_override_font_sizes/font_size = 22
+text = "Прибор не исправен"
+horizontal_alignment = 1
+vertical_alignment = 1
+metadata/_edit_lock_ = true
+
+[node name="socket_ym_lb" type="NinePatchRect" parent="TabContainer/ControlPanel"]
+layout_mode = 0
+offset_left = 47.0
+offset_top = -14.0
+offset_right = 272.0
+offset_bottom = 769.0
+texture = ExtResource("9_0r2qk")
+patch_margin_left = 16
+patch_margin_top = 16
+patch_margin_right = 16
+patch_margin_bottom = 16
+metadata/_edit_lock_ = true
+
+[node name="blok_ym_1" parent="TabContainer/ControlPanel/socket_ym_lb" instance=ExtResource("11_k47r2")]
+layout_mode = 2
+offset_left = 20.0
+offset_top = 40.0
+offset_right = 201.0
+offset_bottom = 149.0
+max_value1 = 2000.0
+value_name0 = "Т°"
+value_name1 = "Pwr"
+name_min_size0 = Vector2i(30, 0)
+fname = "УМ 1"
+
+[node name="blok_ym_2" parent="TabContainer/ControlPanel/socket_ym_lb" instance=ExtResource("11_k47r2")]
+layout_mode = 2
+offset_left = 20.0
+offset_top = 160.0
+offset_right = 201.0
+offset_bottom = 269.0
+fname = "УМ 2"
+
+[node name="blok_ym_3" parent="TabContainer/ControlPanel/socket_ym_lb" instance=ExtResource("11_k47r2")]
+layout_mode = 0
+offset_left = 20.0
+offset_top = 280.0
+offset_right = 201.0
+offset_bottom = 389.0
+fname = "УМ 3"
+
+[node name="blok_ym_4" parent="TabContainer/ControlPanel/socket_ym_lb" instance=ExtResource("11_k47r2")]
+layout_mode = 0
+offset_left = 20.0
+offset_top = 408.0
+offset_right = 201.0
+offset_bottom = 517.0
+fname = "УМ 4"
+
+[node name="blok_ym_5" parent="TabContainer/ControlPanel/socket_ym_lb" instance=ExtResource("11_k47r2")]
+layout_mode = 0
+offset_left = 20.0
+offset_top = 528.0
+offset_right = 201.0
+offset_bottom = 637.0
+fname = "УМ 5"
+
+[node name="blok_ym_6" parent="TabContainer/ControlPanel/socket_ym_lb" instance=ExtResource("11_k47r2")]
+layout_mode = 0
+offset_left = 20.0
+offset_top = 656.0
+offset_right = 201.0
+offset_bottom = 765.0
+fname = "УМ 6"
+
+[node name="blok_ym_litera_1" parent="TabContainer/ControlPanel/socket_ym_lb" instance=ExtResource("11_k47r2")]
+layout_mode = 0
+offset_left = 309.0
+offset_top = 830.0
+offset_right = 490.0
+offset_bottom = 939.0
+fname = "УМОМ"
+
+[node name="Kasseta" type="Label" parent="TabContainer/ControlPanel/socket_ym_lb"]
+self_modulate = Color(1, 1, 1, 0.62)
+layout_mode = 0
+offset_left = 7.0
+offset_top = 8.0
+offset_right = 229.0
+offset_bottom = 33.0
+text = "Младшая литера"
+horizontal_alignment = 1
+vertical_alignment = 1
+
+[node name="socket_ym_pb" type="NinePatchRect" parent="TabContainer/ControlPanel"]
+layout_mode = 0
+offset_left = 623.0
+offset_top = -14.0
+offset_right = 848.0
+offset_bottom = 769.0
+texture = ExtResource("9_0r2qk")
+patch_margin_left = 16
+patch_margin_top = 16
+patch_margin_right = 16
+patch_margin_bottom = 16
+metadata/_edit_lock_ = true
+
+[node name="blok_ym_1" parent="TabContainer/ControlPanel/socket_ym_pb" instance=ExtResource("11_k47r2")]
+layout_mode = 2
+offset_left = 20.0
+offset_top = 40.0
+offset_right = 201.0
+offset_bottom = 149.0
+fname = "УМ 1"
+
+[node name="blok_ym_2" parent="TabContainer/ControlPanel/socket_ym_pb" instance=ExtResource("11_k47r2")]
+layout_mode = 2
+offset_left = 20.0
+offset_top = 160.0
+offset_right = 201.0
+offset_bottom = 269.0
+fname = "УМ 2"
+
+[node name="blok_ym_3" parent="TabContainer/ControlPanel/socket_ym_pb" instance=ExtResource("11_k47r2")]
+layout_mode = 0
+offset_left = 20.0
+offset_top = 280.0
+offset_right = 201.0
+offset_bottom = 389.0
+fname = "УМ 3"
+
+[node name="blok_ym_4" parent="TabContainer/ControlPanel/socket_ym_pb" instance=ExtResource("11_k47r2")]
+layout_mode = 0
+offset_left = 20.0
+offset_top = 408.0
+offset_right = 201.0
+offset_bottom = 517.0
+fname = "УМ 4"
+
+[node name="blok_ym_5" parent="TabContainer/ControlPanel/socket_ym_pb" instance=ExtResource("11_k47r2")]
+layout_mode = 0
+offset_left = 20.0
+offset_top = 528.0
+offset_right = 201.0
+offset_bottom = 637.0
+fname = "УМ 5"
+
+[node name="blok_ym_6" parent="TabContainer/ControlPanel/socket_ym_pb" instance=ExtResource("11_k47r2")]
+layout_mode = 0
+offset_left = 20.0
+offset_top = 656.0
+offset_right = 201.0
+offset_bottom = 765.0
+fname = "УМ 6"
+
+[node name="Kasseta" type="Label" parent="TabContainer/ControlPanel/socket_ym_pb"]
+self_modulate = Color(1, 1, 1, 0.62)
+layout_mode = 0
+offset_left = 7.0
+offset_top = 8.0
+offset_right = 229.0
+offset_bottom = 33.0
+text = "Старшая литера"
+horizontal_alignment = 1
+vertical_alignment = 1
+
+[node name="soc_y5" type="NinePatchRect" parent="TabContainer/ControlPanel"]
+layout_mode = 0
+offset_left = 287.0
+offset_top = -14.0
+offset_right = 604.0
+offset_bottom = 176.0
+texture = ExtResource("9_0r2qk")
+patch_margin_left = 16
+patch_margin_top = 16
+patch_margin_right = 16
+patch_margin_bottom = 16
+metadata/_edit_lock_ = true
+
+[node name="IP5_25" parent="TabContainer/ControlPanel/soc_y5" instance=ExtResource("11_fg7ul")]
+offset_left = 9.0
+offset_top = 34.0
+offset_right = 59.0
+offset_bottom = 184.0
+fname = "ИП5-25"
+rname = "A24"
+
+[node name="yau_07b" parent="TabContainer/ControlPanel/soc_y5" instance=ExtResource("11_fg7ul")]
+offset_left = 59.0
+offset_top = 34.0
+offset_right = 109.0
+offset_bottom = 184.0
+fname = "ЯУ-07"
+rname = "A30"
+
+[node name="ems_g" parent="TabContainer/ControlPanel/soc_y5" instance=ExtResource("11_fg7ul")]
+offset_left = 109.0
+offset_top = 34.0
+offset_right = 159.0
+offset_bottom = 184.0
+fname = "ЭМС-Г"
+rname = "A26"
+
+[node name="ug" parent="TabContainer/ControlPanel/soc_y5" instance=ExtResource("11_fg7ul")]
+offset_left = 159.0
+offset_top = 34.0
+offset_right = 209.0
+offset_bottom = 184.0
+fname = "УГ"
+rname = "A27"
+
+[node name="ukp_2" parent="TabContainer/ControlPanel/soc_y5" instance=ExtResource("11_fg7ul")]
+offset_left = 259.0
+offset_top = 34.0
+offset_right = 309.0
+offset_bottom = 184.0
+fname = "УКП-2"
+rname = "A29"
+
+[node name="ukp_1" parent="TabContainer/ControlPanel/soc_y5" instance=ExtResource("11_fg7ul")]
+offset_left = 210.0
+offset_top = 35.0
+offset_right = 260.0
+offset_bottom = 185.0
+fname = "УКП-1"
+rname = "A28"
+
+[node name="Kasseta" type="Label" parent="TabContainer/ControlPanel/soc_y5"]
+self_modulate = Color(1, 1, 1, 0.62)
+layout_mode = 0
+offset_left = 7.0
+offset_top = 8.0
+offset_right = 309.0
+offset_bottom = 33.0
+text = "Кассета У5"
+horizontal_alignment = 1
+vertical_alignment = 1
+
+[node name="Kasseta_FS" parent="TabContainer/ControlPanel" instance=ExtResource("10_tdh2s")]
+layout_mode = 0
+offset_left = 286.0
+offset_top = 177.0
+offset_right = 604.0
+offset_bottom = 396.0
+script = null
+metadata/_edit_lock_ = true
+
+[node name="Kasseta" type="Label" parent="TabContainer/ControlPanel/Kasseta_FS"]
+self_modulate = Color(1, 1, 1, 0.62)
+layout_mode = 0
+offset_left = 7.0
+offset_top = 8.0
+offset_right = 299.0
+offset_bottom = 33.0
+text = "Кассета ФС-НД"
+horizontal_alignment = 1
+vertical_alignment = 1
+
+[node name="ref_A3" parent="TabContainer/ControlPanel/Kasseta_FS" instance=ExtResource("11_fg7ul")]
+offset_left = 109.0
+offset_top = 41.0
+offset_right = 159.0
+offset_bottom = 211.0
+self_size = Vector2i(50, 170)
+fname = "БЛОК ФС-2"
+rname = "A3"
+
+[node name="ref_A1" parent="TabContainer/ControlPanel/Kasseta_FS" instance=ExtResource("11_fg7ul")]
+offset_left = 159.0
+offset_top = 41.0
+offset_right = 209.0
+offset_bottom = 211.0
+self_size = Vector2i(50, 170)
+fname = "Модуль ФС"
+rname = "A1"
+
+[node name="ref_A2" parent="TabContainer/ControlPanel/Kasseta_FS" instance=ExtResource("11_fg7ul")]
+offset_left = 209.0
+offset_top = 41.0
+offset_right = 259.0
+offset_bottom = 211.0
+self_size = Vector2i(50, 170)
+fname = "Модуль ФС"
+rname = "A2"
+
+[node name="ref_A4" parent="TabContainer/ControlPanel/Kasseta_FS" instance=ExtResource("11_fg7ul")]
+offset_left = 259.0
+offset_top = 41.0
+offset_right = 309.0
+offset_bottom = 211.0
+self_size = Vector2i(50, 170)
+fname = "БЛОК ФС-3"
+rname = "A4"
+
+[node name="Block_FS_PRD_K" parent="TabContainer/ControlPanel/Kasseta_FS" instance=ExtResource("11_fg7ul")]
+offset_left = 12.0
+offset_top = 40.0
+offset_right = 62.0
+offset_bottom = 210.0
+self_size = Vector2i(50, 170)
+fname = "БЛОК ФС-1"
+rname = "A4"
+
+[node name="FS_PRD_K" parent="TabContainer/ControlPanel/Kasseta_FS" instance=ExtResource("11_fg7ul")]
+offset_left = 61.0
+offset_top = 41.0
+offset_right = 111.0
+offset_bottom = 211.0
+self_size = Vector2i(50, 170)
+fname = "Модуль ФС"
+rname = "A1"
+
+[node name="soc_P1" type="NinePatchRect" parent="TabContainer/ControlPanel"]
+layout_mode = 0
+offset_left = 349.0
+offset_top = 615.0
+offset_right = 537.0
+offset_bottom = 810.0
+texture = ExtResource("9_0r2qk")
+patch_margin_left = 16
+patch_margin_top = 16
+patch_margin_right = 16
+patch_margin_bottom = 16
+metadata/_edit_lock_ = true
+
+[node name="Kasseta" type="Label" parent="TabContainer/ControlPanel/soc_P1"]
+self_modulate = Color(1, 1, 1, 0.62)
+layout_mode = 0
+offset_left = 7.0
+offset_top = 3.0
+offset_right = 181.0
+offset_bottom = 28.0
+text = "Кассета П-1"
+horizontal_alignment = 1
+vertical_alignment = 1
+metadata/_edit_lock_ = true
+
+[node name="MAA_1" parent="TabContainer/ControlPanel/soc_P1" instance=ExtResource("11_fg7ul")]
+offset_left = -58.0
+offset_top = 21.0
+offset_right = -8.0
+offset_bottom = 181.0
+self_size = Vector2i(50, 160)
+fname = "МАА2000"
+rname = "А22"
+metadata/_edit_lock_ = true
+
+[node name="MAA_2" parent="TabContainer/ControlPanel/soc_P1" instance=ExtResource("11_fg7ul")]
+offset_left = 196.0
+offset_top = 21.0
+offset_right = 246.0
+offset_bottom = 181.0
+self_size = Vector2i(50, 160)
+fname = "МАА2000"
+rname = "А23"
+metadata/_edit_lock_ = true
+
+[node name="IP9_50_2" parent="TabContainer/ControlPanel/soc_P1" instance=ExtResource("11_fg7ul")]
+offset_left = 129.0
+offset_top = 29.0
+offset_right = 179.0
+offset_bottom = 187.0
+self_size = Vector2i(50, 158)
+fname = "ИП9-50"
+rname = "А19"
+metadata/_edit_lock_ = true
+
+[node name="IP9_50_1" parent="TabContainer/ControlPanel/soc_P1" instance=ExtResource("11_fg7ul")]
+offset_left = 73.0
+offset_top = 29.0
+offset_right = 123.0
+offset_bottom = 187.0
+self_size = Vector2i(50, 158)
+fname = "ИП9-50"
+rname = "А20"
+metadata/_edit_lock_ = true
+
+[node name="IP12_50" parent="TabContainer/ControlPanel/soc_P1" instance=ExtResource("11_fg7ul")]
+offset_left = 16.0
+offset_top = 29.0
+offset_right = 66.0
+offset_bottom = 186.0
+self_size = Vector2i(50, 157)
+fname = "ИП12-50"
+rname = "А21"
+metadata/_edit_lock_ = true
+
+[node name="soc_DKM" type="NinePatchRect" parent="TabContainer/ControlPanel"]
+layout_mode = 0
+offset_left = 424.0
+offset_top = 404.0
+offset_right = 604.0
+offset_bottom = 604.0
+texture = ExtResource("9_0r2qk")
+patch_margin_left = 16
+patch_margin_top = 16
+patch_margin_right = 16
+patch_margin_bottom = 16
+metadata/_edit_lock_ = true
+
+[node name="Kasseta" type="Label" parent="TabContainer/ControlPanel/soc_DKM"]
+self_modulate = Color(1, 1, 1, 0.62)
+layout_mode = 0
+offset_left = 5.0
+offset_top = 6.0
+offset_right = 174.0
+offset_bottom = 29.0
+text = "ДКМ"
+horizontal_alignment = 1
+vertical_alignment = 1
+metadata/_edit_lock_ = true
+
+[node name="DKM_3" parent="TabContainer/ControlPanel/soc_DKM" instance=ExtResource("11_fg7ul")]
+offset_left = 121.0
+offset_top = 32.0
+offset_right = 171.0
+offset_bottom = 195.0
+self_size = Vector2i(50, 163)
+fname = "ДКМ3"
+rname = " "
+metadata/_edit_lock_ = true
+
+[node name="DKM_2" parent="TabContainer/ControlPanel/soc_DKM" instance=ExtResource("11_fg7ul")]
+offset_left = 66.0
+offset_top = 32.0
+offset_right = 116.0
+offset_bottom = 195.0
+self_size = Vector2i(50, 163)
+fname = "ДКМ2"
+rname = " "
+metadata/_edit_lock_ = true
+
+[node name="DKM_1" parent="TabContainer/ControlPanel/soc_DKM" instance=ExtResource("11_fg7ul")]
+offset_left = 10.0
+offset_top = 32.0
+offset_right = 60.0
+offset_bottom = 195.0
+self_size = Vector2i(50, 163)
+fname = "ДКМ-1"
+rname = " "
+metadata/_edit_lock_ = true
+
+[node name="soc_P2" type="NinePatchRect" parent="TabContainer/ControlPanel"]
+layout_mode = 0
+offset_left = 285.0
+offset_top = 403.0
+offset_right = 413.0
+offset_bottom = 605.0
+texture = ExtResource("9_0r2qk")
+patch_margin_left = 16
+patch_margin_top = 16
+patch_margin_right = 16
+patch_margin_bottom = 16
+metadata/_edit_lock_ = true
+
+[node name="Kasseta" type="Label" parent="TabContainer/ControlPanel/soc_P2"]
+self_modulate = Color(1, 1, 1, 0.62)
+layout_mode = 0
+offset_left = 8.0
+offset_top = 8.0
+offset_right = 120.0
+offset_bottom = 33.0
+text = "Кассета П-2"
+horizontal_alignment = 1
+vertical_alignment = 1
+metadata/_edit_lock_ = true
+
+[node name="IP12_50" parent="TabContainer/ControlPanel/soc_P2" instance=ExtResource("11_fg7ul")]
+offset_left = 67.0
+offset_top = 36.0
+offset_right = 117.0
+offset_bottom = 196.0
+self_size = Vector2i(50, 160)
+fname = "ИП12-50"
+rname = "A25"
+metadata/_edit_lock_ = true
+
+[node name="IP9_50" parent="TabContainer/ControlPanel/soc_P2" instance=ExtResource("11_fg7ul")]
+offset_left = 11.0
+offset_top = 36.0
+offset_right = 61.0
+offset_bottom = 196.0
+self_size = Vector2i(50, 160)
+fname = "ИП9-50"
+rname = "A22"
+metadata/_edit_lock_ = true
+
+[node name="log_array" type="TextEdit" parent="TabContainer/ControlPanel"]
+layout_mode = 0
+offset_left = 870.0
+offset_top = -11.0
+offset_right = 1664.0
+offset_bottom = 860.0
+theme_override_colors/font_color = Color(1, 1, 0.941176, 1)
+theme_override_font_sizes/font_size = 17
+theme_override_styles/normal = SubResource("StyleBoxFlat_13x31")
+placeholder_text = "Ожидание контроля ..."
+wrap_mode = 1
+metadata/_edit_lock_ = true
+
+[node name="await" type="ColorRect" parent="TabContainer/ControlPanel/log_array"]
+material = SubResource("ShaderMaterial_07wue")
+layout_mode = 0
+offset_top = -17.0
+offset_right = 853.0
+offset_bottom = 23.0
+
+[node name="EMS_G" type="Panel" parent="TabContainer"]
+visible = false
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxTexture_ooo4i")
+script = ExtResource("9_g1wia")
+metadata/_tab_index = 2
+metadata/_edit_lock_ = true
+
+[node name="table1" type="GridContainer" parent="TabContainer/EMS_G"]
+layout_mode = 2
+offset_left = 35.0
+offset_top = 60.0
+offset_right = 35.0
+offset_bottom = 60.0
+script = ExtResource("2_vmbyo")
+
+[node name="load_boadr" type="ColorRect" parent="TabContainer/EMS_G"]
+layout_mode = 0
+offset_left = 35.0
+offset_top = 58.0
+offset_right = 1604.0
+offset_bottom = 782.0
+color = Color(0, 0, 0, 0.596078)
+metadata/_edit_lock_ = true
+
+[node name="win_load" type="TextureButton" parent="TabContainer/EMS_G/load_boadr"]
+material = SubResource("ShaderMaterial_cm644")
+layout_mode = 0
+offset_left = 730.0
+offset_top = 311.0
+offset_right = 830.0
+offset_bottom = 461.0
+texture_normal = SubResource("GradientTexture2D_2sr0p")
+
+[node name="load" type="Sprite2D" parent="TabContainer/EMS_G/load_boadr"]
+visible = false
+material = SubResource("ShaderMaterial_slcfo")
+position = Vector2(785.001, 361.5)
+scale = Vector2(24.5313, 11.2656)
+texture = SubResource("GradientTexture2D_0pk2o")
+metadata/_edit_lock_ = true
+
+[node name="Modul_fs" type="Panel" parent="TabContainer"]
+visible = false
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxTexture_ooo4i")
+script = ExtResource("15_b4pr1")
+metadata/_tab_index = 3
+metadata/_edit_lock_ = true
+
+[node name="manage_panel" type="GridContainer" parent="TabContainer/Modul_fs"]
+layout_mode = 0
+offset_left = 200.0
+offset_top = 186.0
+offset_right = 773.0
+offset_bottom = 308.0
+columns = 3
+
+[node name="con" type="Button" parent="TabContainer/Modul_fs/manage_panel"]
+layout_mode = 2
+text = " Подключение "
+
+[node name="ip_connect" type="Label" parent="TabContainer/Modul_fs/manage_panel/con"]
+layout_mode = 0
+offset_top = 32.0
+offset_right = 118.0
+offset_bottom = 55.0
+
+[node name="addres_fs" type="LineEdit" parent="TabContainer/Modul_fs/manage_panel"]
+custom_minimum_size = Vector2(150, 0)
+layout_mode = 2
+
+[node name="get_gen_status" type="Button" parent="TabContainer/Modul_fs/manage_panel"]
+layout_mode = 2
+toggle_mode = true
+text = "Переключатель генератора "
+
+[node name="status_ind" type="Label" parent="TabContainer/Modul_fs/manage_panel/get_gen_status"]
+layout_mode = 0
+offset_top = 33.0
+offset_right = 84.0
+offset_bottom = 56.0
+
+[node name="read" type="LineEdit" parent="TabContainer/Modul_fs"]
+layout_mode = 0
+offset_left = 199.0
+offset_top = 322.0
+offset_right = 954.0
+offset_bottom = 353.0
+
+[node name="fs_connect" type="Label" parent="TabContainer/Modul_fs"]
+layout_mode = 0
+offset_left = 206.0
+offset_top = 144.0
+offset_right = 377.0
+offset_bottom = 167.0
+text = "Связь с модулем ФС"
+
+[node name="temp_1" type="Label" parent="TabContainer/Modul_fs"]
+layout_mode = 0
+offset_left = 1015.0
+offset_top = 119.0
+offset_right = 1102.0
+offset_bottom = 152.0
+text = "Темп"
+
+[node name="temp_2" type="Label" parent="TabContainer/Modul_fs"]
+layout_mode = 0
+offset_left = 1016.0
+offset_top = 156.0
+offset_right = 1103.0
+offset_bottom = 189.0
+text = "Темп"
+
+[node name="temp_3" type="Label" parent="TabContainer/Modul_fs"]
+layout_mode = 0
+offset_left = 1015.0
+offset_top = 193.0
+offset_right = 1102.0
+offset_bottom = 226.0
+text = "Темп"
+
+[node name="save_other" type="CheckBox" parent="."]
+visible = false
+offset_left = 2.0
+offset_top = 799.0
+offset_right = 215.0
+offset_bottom = 827.0
+theme = SubResource("Theme_yblys")
+text = "Сохранить все настройки"
+
+[node name="load_status_yau" type="ProgressBar" parent="."]
+offset_left = 490.0
+offset_top = 19.0
+offset_right = 1560.0
+offset_bottom = 24.0
+theme_override_font_sizes/font_size = 13
+theme_override_styles/fill = SubResource("StyleBoxFlat_ei3d4")
+max_value = 32.0
+step = 1.0
+show_percentage = false
+metadata/_edit_lock_ = true
+
+[connection signal="pressed" from="Background/switch_panel/select_prd" to="." method="_on_prd_select"]
+[connection signal="pressed" from="Background/switch_panel/select_control" to="." method="_on_control_button"]
+[connection signal="pressed" from="Background/switch_panel/select_ems_g" to="." method="_on_emsg_select"]
+[connection signal="pressed" from="Background/switch_panel/select_fs" to="." method="_on_mfs_select"]
+[connection signal="pressed" from="Background/switch_panel/save_config" to="." method="_on_save_config"]
+[connection signal="pressed" from="Background/switch_panel/load_config" to="." method="_load_selected_file"]
+[connection signal="toggled" from="Background/switch_panel/burgerButton" to="." method="_on_burger_button"]
+[connection signal="pressed" from="Background/switch_panel/texture_prd" to="." method="_on_prd_select"]
+[connection signal="pressed" from="Background/switch_panel/texture_control" to="." method="_on_control_button"]
+[connection signal="pressed" from="Background/switch_panel/texture_ems_g" to="." method="_on_emsg_select"]
+[connection signal="pressed" from="Background/switch_panel/texture_fs" to="." method="_on_mfs_select"]
+[connection signal="pressed" from="Background/switch_panel/texture_save_config" to="." method="_on_save_config"]
+[connection signal="pressed" from="Background/switch_panel/texture_load_config" to="." method="_load_selected_file"]
+[connection signal="pressed" from="TabContainer/PRD/Connect_prd" to="." method="_on_connect_prd_pressed"]
+[connection signal="pressed" from="TabContainer/Modul_fs/manage_panel/con" to="TabContainer/Modul_fs" method="_on_start"]
+[connection signal="text_submitted" from="TabContainer/Modul_fs/manage_panel/addres_fs" to="TabContainer/Modul_fs" method="_on_addres_fs"]
+[connection signal="toggled" from="TabContainer/Modul_fs/manage_panel/get_gen_status" to="TabContainer/Modul_fs" method="_on_get_status"]
diff --git a/PRD_MP550.tscn b/PRD_MP550.tscn
index fef3e76..44f321a 100644
--- a/PRD_MP550.tscn
+++ b/PRD_MP550.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=77 format=3 uid="uid://cvor2jm4xk3ha"]
+[gd_scene load_steps=76 format=3 uid="uid://cvor2jm4xk3ha"]
[ext_resource type="Script" path="res://scripts/PRD.gd" id="1_v273n"]
[ext_resource type="Texture2D" uid="uid://cdxdluvyb5uei" path="res://table/on.png" id="2_dv7xx"]
@@ -133,7 +133,7 @@ size = Vector2(1600, 1200)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_dgiai"]
shader = ExtResource("4_uy5o2")
-shader_parameter/color_signal = Color(0.588235, 0.466667, 0, 1)
+shader_parameter/color_signal = Color(1, 1, 0, 1)
shader_parameter/turn = 0.785
shader_parameter/inner_radius = 0.32
shader_parameter/speed = 0.0
@@ -244,9 +244,6 @@ shader_parameter/color4 = Color(0, 0, 0, 0)
shader_parameter/opacity = 0.218
shader_parameter/turn = 0.785
-[sub_resource type="Theme" id="Theme_yblys"]
-CheckBox/font_sizes/font_size = 14
-
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ei3d4"]
bg_color = Color(0.362983, 0.685867, 0.396516, 1)
corner_radius_top_left = 5
@@ -469,9 +466,9 @@ stretch_mode = 0
[node name="notice" type="GridContainer" parent="Background"]
layout_mode = 0
-offset_left = 1098.0
+offset_left = 986.0
offset_top = 937.0
-offset_right = 1832.0
+offset_right = 1720.0
offset_bottom = 1000.0
columns = 3
@@ -711,6 +708,14 @@ theme_override_styles/normal = SubResource("StyleBoxFlat_eleyh")
text = "Подключение"
metadata/_edit_lock_ = true
+[node name="status_yau" type="Label" parent="TabContainer/PRD"]
+layout_mode = 0
+offset_left = 56.0
+offset_top = 91.0
+offset_right = 111.0
+offset_bottom = 114.0
+text = "ЯУ-07Б"
+
[node name="ControlPanel" type="Panel" parent="TabContainer"]
visible = false
layout_mode = 2
@@ -1351,15 +1356,6 @@ offset_right = 1102.0
offset_bottom = 226.0
text = "Темп"
-[node name="save_other" type="CheckBox" parent="."]
-visible = false
-offset_left = 2.0
-offset_top = 799.0
-offset_right = 215.0
-offset_bottom = 827.0
-theme = SubResource("Theme_yblys")
-text = "Сохранить все настройки"
-
[node name="load_status_yau" type="ProgressBar" parent="."]
offset_left = 490.0
offset_top = 19.0
@@ -1377,14 +1373,14 @@ metadata/_edit_lock_ = true
[connection signal="pressed" from="Background/switch_panel/select_ems_g" to="." method="_on_emsg_select"]
[connection signal="pressed" from="Background/switch_panel/select_fs" to="." method="_on_mfs_select"]
[connection signal="pressed" from="Background/switch_panel/save_config" to="." method="_on_save_config"]
-[connection signal="pressed" from="Background/switch_panel/load_config" to="." method="_load_selected_file"]
+[connection signal="pressed" from="Background/switch_panel/load_config" to="." method="_on_load_config"]
[connection signal="toggled" from="Background/switch_panel/burgerButton" to="." method="_on_burger_button"]
[connection signal="pressed" from="Background/switch_panel/texture_prd" to="." method="_on_prd_select"]
[connection signal="pressed" from="Background/switch_panel/texture_control" to="." method="_on_control_button"]
[connection signal="pressed" from="Background/switch_panel/texture_ems_g" to="." method="_on_emsg_select"]
[connection signal="pressed" from="Background/switch_panel/texture_fs" to="." method="_on_mfs_select"]
[connection signal="pressed" from="Background/switch_panel/texture_save_config" to="." method="_on_save_config"]
-[connection signal="pressed" from="Background/switch_panel/texture_load_config" to="." method="_load_selected_file"]
+[connection signal="pressed" from="Background/switch_panel/texture_load_config" to="." method="_on_load_config"]
[connection signal="pressed" from="TabContainer/PRD/Connect_prd" to="." method="_on_connect_prd_pressed"]
[connection signal="pressed" from="TabContainer/Modul_fs/manage_panel/con" to="TabContainer/Modul_fs" method="_on_start"]
[connection signal="text_submitted" from="TabContainer/Modul_fs/manage_panel/addres_fs" to="TabContainer/Modul_fs" method="_on_addres_fs"]
diff --git a/export_presets.cfg b/export_presets.cfg
index 9469392..8e8a837 100644
--- a/export_presets.cfg
+++ b/export_presets.cfg
@@ -9,7 +9,7 @@ custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
-export_path="./testPRD_2.0.exe"
+export_path="bin/testPRD.exe"
encryption_include_filters=""
encryption_exclude_filters=""
encrypt_pck=false
diff --git a/icon.svg b/icon.svg
index 3fe4f4a..99f3604 100644
--- a/icon.svg
+++ b/icon.svg
@@ -1 +1,51 @@
-
+
+
diff --git a/project.godot b/project.godot
index e0ee6cb..387d9f8 100644
--- a/project.godot
+++ b/project.godot
@@ -13,6 +13,7 @@ config_version=5
config/name="ПРД_для_МП-550"
run/main_scene="res://PRD_MP550.tscn"
config/features=PackedStringArray("4.3", "GL Compatibility")
+boot_splash/bg_color=Color(0.356863, 0.278431, 0.356863, 1)
config/icon="res://icon.svg"
[autoload]
@@ -29,9 +30,9 @@ gdscript/warnings/unused_signal=0
[display]
-window/size/viewport_width=1910
+window/size/viewport_width=1900
window/size/viewport_height=1000
-window/size/initial_position_type=0
+window/size/extend_to_title=true
[editor]
diff --git a/saves/fs_setting b/saves/fs_setting
deleted file mode 100644
index f1b6eaa..0000000
Binary files a/saves/fs_setting and /dev/null differ
diff --git a/saves/ПРД-В1 b/saves/ПРД-В1
deleted file mode 100644
index 3b13e1d..0000000
--- a/saves/ПРД-В1
+++ /dev/null
@@ -1 +0,0 @@
-{"1":{"290":1,"292":0,"296":0,"298":32768},"2":{"290":2,"292":0,"296":0,"298":32768},"3":{"290":3,"292":0,"296":0,"298":32768},"4":{"290":4,"292":0,"296":0,"298":32768},"5":{"290":5,"292":0,"296":0,"298":32768},"6":{"290":6,"292":0,"296":0,"298":32768},"7":{"290":7,"292":0,"296":0,"298":32768},"8":{"290":8,"292":0,"296":0,"298":32768},"9":{"290":9,"292":0,"296":0,"298":32768},"10":{"290":10,"292":0,"296":0,"298":32768},"11":{"290":11,"292":0,"296":0,"298":0},"12":{"290":12,"292":0,"296":0,"298":0},"13":{"290":13,"292":0,"296":0,"298":32768},"14":{"290":14,"292":0,"296":0,"298":32768},"15":{"290":15,"292":0,"296":0,"298":32768},"16":{"290":16,"292":0,"296":0,"298":32768},"47":{"290":47,"292":0,"296":0,"298":32768},"48":{"290":48,"292":2048,"296":0,"298":32768},"49":{"290":49,"292":4096,"296":0,"298":32768},"50":{"290":50,"292":0,"296":16384,"298":32768},"51":{"290":51,"292":0,"296":16384,"298":32768},"52":{"290":52,"292":0,"296":16384,"298":32768},"53":{"290":53,"292":0,"296":0,"298":32768},"54":{"290":54,"292":0,"296":0,"298":32768},"55":{"290":55,"292":0,"296":0,"298":32768},"56":{"290":56,"292":0,"296":0,"298":32768},"57":{"290":57,"292":0,"296":16384,"298":32768},"58":{"290":58,"292":0,"296":0,"298":32768},"59":{"290":59,"292":0,"296":0,"298":32768},"60":{"290":60,"292":0,"296":0,"298":32768},"61":{"290":61,"292":0,"296":0,"298":32768},"62":{"290":62,"292":0,"296":0,"298":32768}}
\ No newline at end of file
diff --git a/saves/ПРД-К1 b/saves/ПРД-К1
deleted file mode 100644
index cfdb460..0000000
--- a/saves/ПРД-К1
+++ /dev/null
@@ -1 +0,0 @@
-{"1":{"290":1,"292":0,"296":8192,"298":32768},"2":{"290":2,"292":0,"296":8192,"298":0},"3":{"290":3,"292":0,"296":8192,"298":32768},"4":{"290":4,"292":0,"296":8192,"298":32768},"5":{"290":5,"292":0,"296":8192,"298":32768},"6":{"290":6,"292":0,"296":8192,"298":32768},"7":{"290":7,"292":0,"296":8192,"298":32768},"8":{"290":8,"292":0,"296":8192,"298":32768},"9":{"290":9,"292":0,"296":8192,"298":32768},"10":{"290":10,"292":0,"296":8192,"298":32768},"11":{"290":11,"292":0,"296":8192,"298":0},"12":{"290":12,"292":0,"296":8192,"298":32768},"13":{"290":13,"292":0,"296":8192,"298":0},"14":{"290":14,"292":0,"296":8192,"298":0},"15":{"290":15,"292":0,"296":8192,"298":0},"16":{"290":16,"292":0,"296":8192,"298":32768},"47":{"290":47,"292":256,"296":0,"298":32768},"48":{"290":48,"292":8192,"296":0,"298":32768},"49":{"290":49,"292":16384,"296":0,"298":32768},"50":{"290":50,"292":0,"296":8192,"298":32768},"51":{"290":51,"292":0,"296":16384,"298":32768},"52":{"290":52,"292":0,"296":16384,"298":32768},"53":{"290":53,"292":0,"296":0,"298":32768},"54":{"290":54,"292":0,"296":0,"298":32768},"55":{"290":55,"292":0,"296":0,"298":32768},"56":{"290":56,"292":0,"296":0,"298":32768},"57":{"290":57,"292":0,"296":8192,"298":32768},"58":{"290":58,"292":0,"296":0,"298":32768},"59":{"290":59,"292":0,"296":0,"298":32768},"60":{"290":60,"292":0,"296":0,"298":32768},"61":{"290":61,"292":0,"296":0,"298":32768},"62":{"290":62,"292":0,"296":0,"298":32768}}
\ No newline at end of file
diff --git a/saves/ПРД-К2 b/saves/ПРД-К2
deleted file mode 100644
index 1392d51..0000000
--- a/saves/ПРД-К2
+++ /dev/null
@@ -1 +0,0 @@
-{"1":{"290":1,"292":2,"296":0,"298":0},"2":{"290":2,"292":2,"296":0,"298":32768},"3":{"290":3,"292":2,"296":0,"298":32768},"4":{"290":4,"292":2,"296":0,"298":32768},"5":{"290":5,"292":2,"296":0,"298":32768},"6":{"290":6,"292":2,"296":0,"298":32768},"7":{"290":7,"292":2,"296":0,"298":0},"8":{"290":8,"292":2,"296":0,"298":32768},"9":{"290":9,"292":2,"296":0,"298":32768},"10":{"290":10,"292":2,"296":0,"298":0},"11":{"290":11,"292":2,"296":0,"298":32768},"12":{"290":12,"292":2,"296":0,"298":32768},"13":{"290":13,"292":2,"296":0,"298":32768},"14":{"290":14,"292":2,"296":0,"298":32768},"15":{"290":15,"292":2,"296":0,"298":32768},"16":{"290":16,"292":2,"296":0,"298":32768},"47":{"290":47,"292":1,"296":0,"298":32768},"48":{"290":48,"292":2,"296":0,"298":32768},"49":{"290":49,"292":0,"296":0,"298":32768},"50":{"290":50,"292":0,"296":0,"298":32768},"51":{"290":51,"292":0,"296":0,"298":32768},"52":{"290":52,"292":0,"296":0,"298":32768},"53":{"290":53,"292":0,"296":0,"298":32768},"54":{"290":54,"292":0,"296":0,"298":32768},"55":{"290":55,"292":0,"296":0,"298":32768},"56":{"290":56,"292":0,"296":0,"298":32768},"57":{"290":57,"292":0,"296":0,"298":32768},"58":{"290":58,"292":0,"296":0,"298":32768},"59":{"290":59,"292":0,"296":0,"298":32768},"60":{"290":60,"292":0,"296":0,"298":32768},"61":{"290":61,"292":0,"296":0,"298":32768},"62":{"290":62,"292":0,"296":0,"298":32768}}
\ No newline at end of file
diff --git a/saves/ПРД-Н1 b/saves/ПРД-Н1
deleted file mode 100644
index 6b37857..0000000
--- a/saves/ПРД-Н1
+++ /dev/null
@@ -1 +0,0 @@
-{"1":{"290":1,"292":0,"296":0,"298":32768},"2":{"290":2,"292":0,"296":0,"298":32768},"3":{"290":3,"292":0,"296":0,"298":32768},"4":{"290":4,"292":0,"296":0,"298":32768},"5":{"290":5,"292":0,"296":0,"298":32768},"6":{"290":6,"292":0,"296":0,"298":0},"7":{"290":7,"292":0,"296":0,"298":32768},"8":{"290":8,"292":0,"296":0,"298":32768},"9":{"290":9,"292":0,"296":0,"298":0},"10":{"290":10,"292":0,"296":0,"298":32768},"11":{"290":11,"292":0,"296":0,"298":0},"12":{"290":12,"292":0,"296":0,"298":32768},"13":{"290":13,"292":0,"296":0,"298":32768},"14":{"290":14,"292":0,"296":0,"298":32768},"15":{"290":15,"292":0,"296":0,"298":32768},"16":{"290":16,"292":0,"296":0,"298":32768},"47":{"290":47,"292":0,"296":0,"298":32768},"48":{"290":48,"292":512,"296":0,"298":32768},"49":{"290":49,"292":1024,"296":0,"298":32768},"50":{"290":50,"292":0,"296":16384,"298":32768},"51":{"290":51,"292":0,"296":16384,"298":32768},"52":{"290":52,"292":0,"296":16384,"298":32768},"53":{"290":53,"292":0,"296":0,"298":32768},"54":{"290":54,"292":0,"296":0,"298":32768},"55":{"290":55,"292":0,"296":0,"298":32768},"56":{"290":56,"292":0,"296":0,"298":32768},"57":{"290":57,"292":0,"296":16384,"298":32768},"58":{"290":58,"292":0,"296":0,"298":32768},"59":{"290":59,"292":0,"296":0,"298":32768},"60":{"290":60,"292":0,"296":0,"298":32768},"61":{"290":61,"292":0,"296":0,"298":32768},"62":{"290":62,"292":0,"296":0,"298":32768}}
\ No newline at end of file
diff --git a/scripts/PRD.gd b/scripts/PRD.gd
index 1a36338..089ce35 100644
--- a/scripts/PRD.gd
+++ b/scripts/PRD.gd
@@ -33,13 +33,6 @@ func _ready() -> void:
$Background/notice/bind_addr.text = '/Базовый адресс: %s' % Constants.UNICAST_ADDRESS
$Background/notice/bind_port.text = '/Базовый порт: %s ' % Constants.UNICAST_PORT
- # Считывание аргументов с консоли (путь сохранения)
- #var args = OS.get_cmdline_user_args()
- #for i in range(args.size()):
- #if args[i] == "testsave-path" and i + 1 < args.size():
- #save_path = args[i + 1]
- #break
-
# Таблица 1 УКП-1 (Температура, Мощность)
node_select1 = $TabContainer/PRD/body_grid/litera_2_4_6/table_ukp_1
draw_tabl(node_select1, Constants.ROWS_REGS_DATA, Constants.ROWS_REGS_DATA.size())
@@ -325,6 +318,17 @@ func add_signs_scene():
node_select_yau_07b_2.get_node2(1, 4).add_item(key)
+func _on_yau_status(addr: String):
+ if addr != '':
+ $TabContainer/PRD/status_yau.modulate = Color.AQUAMARINE
+ for check in Constants.ADDRESSES:
+ if check[1] == addr:
+ $TabContainer/PRD/status_yau.text = 'ЯУ-07Б: ' + check[0]
+ else:
+ $TabContainer/PRD/status_yau.modulate = Color.CRIMSON
+ $TabContainer/PRD/status_yau.text = 'ЯУ-07Б: нет связи'
+
+
func _on_read_isa(unit_isa_ports: Dictionary) -> void:
isa_from_yau07b = unit_isa_ports
var isa_data: Dictionary = {}
@@ -382,21 +386,33 @@ func _on_read_isa(unit_isa_ports: Dictionary) -> void:
var data_dict = Constants.EMS_G_PORT_DATA_HOLDER[index][1]
if Constants.BASE_PORTS.EMS_G+8 in data_dict:
$TabContainer/PRD/body_grid/litera_3_5_7/yau07b_control.get_node2(1,1).get_child(1).button_pressed = data_dict[Constants.BASE_PORTS.EMS_G+8] >> 14
- if tmp_device_mode == Constants.META.MODUL_UM_1:
+ if tmp_device_mode == Constants.META.MODUL_UM_1: ## Синхронизация с Модуляцией УМ лиетры 1
var data_dict = Constants.EMS_G_PORT_DATA_HOLDER[index][1]
if Constants.BASE_PORTS.EMS_G+8 in data_dict:
var select = data_dict[Constants.BASE_PORTS.EMS_G+8] >> 13 if data_dict[Constants.BASE_PORTS.EMS_G+8] >> 13 < 3 else 3
$TabContainer/PRD/body_grid/litera_1/yau07b_control.get_node2(1,2).select(select)
- if tmp_device_mode == Constants.META.MODUL_UM_2:
+ if select == 1:
+ $TabContainer/PRD/body_grid/litera_1/PSK3/ray_litera_1.material.set('shader_parameter/color_signal', Color.RED)
+ else:
+ $TabContainer/PRD/body_grid/litera_1/PSK3/ray_litera_1.material.set('shader_parameter/color_signal', Color.DARK_ORANGE)
+ if tmp_device_mode == Constants.META.MODUL_UM_2: ## Синхронизация с Модуляцией УМ лиетры 2, 4, 6
var data_dict = Constants.EMS_G_PORT_DATA_HOLDER[index][1]
if Constants.BASE_PORTS.EMS_G+8 in data_dict:
var select = data_dict[Constants.BASE_PORTS.EMS_G+8] >> 13 if data_dict[Constants.BASE_PORTS.EMS_G+8] >> 13 < 3 else 3
$TabContainer/PRD/body_grid/litera_2_4_6/yau07b_control.get_node2(1,2).select(select)
- if tmp_device_mode == Constants.META.MODUL_UM_3:
+ if select == 3:
+ $TabContainer/PRD/body_grid/litera_2_4_6/PSK/ray_1.material.set('shader_parameter/color_signal', Color.RED)
+ else:
+ $TabContainer/PRD/body_grid/litera_2_4_6/PSK/ray_1.material.set('shader_parameter/color_signal', Color.DARK_ORANGE)
+ if tmp_device_mode == Constants.META.MODUL_UM_3: ## Синхронизация с Модуляцией УМ лиетры 3, 5, 7
var data_dict = Constants.EMS_G_PORT_DATA_HOLDER[index][1]
if Constants.BASE_PORTS.EMS_G+8 in data_dict:
var select = data_dict[Constants.BASE_PORTS.EMS_G+8] >> 13 if data_dict[Constants.BASE_PORTS.EMS_G+8] >> 13 < 3 else 3
$TabContainer/PRD/body_grid/litera_3_5_7/yau07b_control.get_node2(1,2).select(select)
+ if select == 3:
+ $TabContainer/PRD/body_grid/litera_3_5_7/PSK2/ray_2.material.set('shader_parameter/color_signal', Color.RED)
+ else:
+ $TabContainer/PRD/body_grid/litera_3_5_7/PSK2/ray_2.material.set('shader_parameter/color_signal', Color.DARK_ORANGE)
if tmp_device_mode == Constants.META.FGOZ_4:
var data_dict = Constants.EMS_G_PORT_DATA_HOLDER[index][1]
if Constants.BASE_PORTS.EMS_G+8 in data_dict:
@@ -489,12 +505,12 @@ func _on_data_fs_3(fs_3_data):
node_select_fs_3.set_node_text(2, 5, 'Включен')
node_select_fs_3.get_node2(2, 5).modulate = Color.AQUAMARINE
node_select_fs_3.get_node2(1, 5).get_child(1).button_pressed = true
- #$TabContainer/PRD/body_grid/litera_3_5_7/PSK2/ray_2.material.set('shader_parameter/speed', 2.5)
+ $TabContainer/PRD/body_grid/litera_1/PSK3/ray_litera_1.material.set('shader_parameter/speed', 2.5)
else:
node_select_fs_3.set_node_text(2, 5, 'Отключен')
node_select_fs_3.get_node2(2, 5).modulate = Color.CRIMSON
node_select_fs_3.get_node2(1, 5).get_child(1).button_pressed = false
- #$TabContainer/PRD/body_grid/litera_3_5_7/PSK2/ray_2.material.set('shader_parameter/speed', 0.0)
+ $TabContainer/PRD/body_grid/litera_1/PSK3/ray_litera_1.material.set('shader_parameter/speed', 0.0)
Constants.CMD.BASE_GET_CURRENT_TEMP:
if GRP == Constants.GROUP.BASE:
node_select_fs_3.set_node_text(2, 0, '%.2f' % fs_3_data.decode_float(0xC) + ' °C')
@@ -581,18 +597,12 @@ func set_frame(node: Node, val: int): node.set_frame(val)
func _on_save_config():
- var da = DirAccess.open(save_path)
- if da == null:
- return
- else:
- da.dir_exists(save_path)
- da.make_dir_recursive(save_path)
var file_dialog = FileDialog.new()
+ file_dialog.access = FileDialog.ACCESS_USERDATA
file_dialog.title = "Сохранить файл как"
file_dialog.set_size(Vector2(600, 400))
file_dialog.mode = FileDialog.FILE_MODE_SAVE_FILE
- file_dialog.current_dir = save_path
- file_dialog.set_current_file("ЭМС-Г")
+ file_dialog.current_dir = 'user://saves'
file_dialog.connect("file_selected", Callable(self, "_save_selected_file"))
add_child(file_dialog)
file_dialog.popup_centered()
@@ -608,14 +618,13 @@ func _save_selected_file(file_path: String):
for key in item[1]:
if key in need_port:
regist[key] = item[1][key]
- print(regist)
param_ems_g[item[0]] = regist
# Сохранение данных ЭМС-Г
var file = FileAccess.open(file_path, FileAccess.WRITE)
if file != null:
file.store_string(JSON.stringify(param_ems_g))
file.close()
- $Background/notice/load_notice.text = '✅ Файл %s записан успешно!' % file_path
+ $Background/notice/load_notice.text = '✅ Файл %s записан успешно!' % ProjectSettings.globalize_path(file_path)
$Background/notice/load_notice.visible = true
await get_tree().create_timer(2.0).timeout
$Background/notice/load_notice.visible = false
@@ -623,17 +632,18 @@ func _save_selected_file(file_path: String):
func _on_load_config():
var file_dialog = FileDialog.new()
+ file_dialog.access = FileDialog.ACCESS_USERDATA
file_dialog.set_title("Выберите файл")
file_dialog.set_size(Vector2(600, 400))
file_dialog.mode = FileDialog.FILE_MODE_OPEN_FILE
- file_dialog.current_dir = save_path
+
+ file_dialog.current_dir = 'user://saves'
file_dialog.connect("file_selected", Callable(self, "_load_selected_file"))
add_child(file_dialog)
file_dialog.popup_centered()
-func _load_selected_file():
- var file_path: String = 'res://saves/%s' % Constants.ADDRESSES[$TabContainer/PRD/select_dev.get_node2(1, 0).get_selected_id()][0]
+func _load_selected_file(file_path: String):
var file = FileAccess.open(file_path, FileAccess.READ)
# Проверка на открытие/чтение файла
if file == null:
@@ -652,29 +662,20 @@ func _load_selected_file():
await get_tree().create_timer(2.0).timeout
$Background/notice/load_notice.visible = false
else:
- print("Несоответствующий тип данных!")
+ print_debug("Несоответствующий тип данных!")
else:
- print("JSON Parse Error: ", json.get_error_message(), " in ", file_content, " at line ", json.get_error_line())
-
+ print_debug("JSON Parse Error: ", json.get_error_message(), " in ", file_content, " at line ", json.get_error_line())
func _on_write_ems_g(data_to_ems_g: Dictionary):
for key in data_to_ems_g.keys():
- #if int(key) < 17:
- #print('Constants.BASE_PORTS.EMS_G+2: ', data_to_ems_g[key][str(Constants.BASE_PORTS.EMS_G+0x2)])
- #print('Constants.BASE_PORTS.EMS_G+0xA: ', data_to_ems_g[key][str(Constants.BASE_PORTS.EMS_G+0xA)])
- #Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, data_to_ems_g[key][str(Constants.BASE_PORTS.EMS_G+0x2)])
- #Network.write_port_isa(Constants.BASE_PORTS.EMS_G+0xA, data_to_ems_g[key][str(Constants.BASE_PORTS.EMS_G+0xA)])
- #Network.read_port_isa([Constants.BASE_PORTS.EMS_G+0xA])
- if int(key) > 46:
- print('Constants.BASE_PORTS.EMS_G+2: ', data_to_ems_g[key][str(Constants.BASE_PORTS.EMS_G+0x2)])
- #print('Constants.BASE_PORTS.EMS_G+8', data_to_ems_g[key][str(Constants.BASE_PORTS.EMS_G+0x8)])
- print('Constants.BASE_PORTS.EMS_G+4: ', data_to_ems_g[key][str(Constants.BASE_PORTS.EMS_G+0x4)])
+ if int(key) < 17:
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, data_to_ems_g[key][str(Constants.BASE_PORTS.EMS_G+0x2)])
- #Network.write_port_isa(Constants.BASE_PORTS.EMS_G+4, data_to_ems_g[key][str(Constants.BASE_PORTS.EMS_G+0x8)])
+ Network.write_port_isa(Constants.BASE_PORTS.EMS_G+0xA, data_to_ems_g[key][str(Constants.BASE_PORTS.EMS_G+0xA)])
+ if int(key) > 46:
+ Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, data_to_ems_g[key][str(Constants.BASE_PORTS.EMS_G+0x2)])
+ Network.write_port_isa(Constants.BASE_PORTS.EMS_G+4, data_to_ems_g[key][str(Constants.BASE_PORTS.EMS_G+0x8)])
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+4, data_to_ems_g[key][str(Constants.BASE_PORTS.EMS_G+0x4)])
- #Network.read_port_isa([Constants.BASE_PORTS.EMS_G+4, Constants.BASE_PORTS.EMS_G+8])
-
func on_mode_select(intem_from_sector: int) -> void:
@@ -735,6 +736,7 @@ func _on_modul_um(item_from_ray_1: int, node: Node):
Network.write_port_isa(Constants.BASE_PORTS.EMS_G + 2, current_meta[index])
Network.write_port_isa(Constants.BASE_PORTS.EMS_G + 8, modul_um[index])
+ Network.read_port_isa([Constants.BASE_PORTS.EMS_G+8])
else:
return
@@ -1067,7 +1069,7 @@ func save_settings(to_att_change: float, mode: int):
Constants.FS_ATT[Constants.ADDRESSES[$TabContainer/PRD/select_dev.get_node2(1, 0).get_selected_id()][0]] = read_temp
else:
return
- var file = FileAccess.open("res://saves/fs_setting", FileAccess.WRITE)
+ var file = FileAccess.open("user://saves/fs_setting", FileAccess.WRITE)
if file:
file.store_var(Constants.FS_ATT)
file.close()
diff --git a/scripts/constants.gd b/scripts/constants.gd
index 2c6131e..c087218 100644
--- a/scripts/constants.gd
+++ b/scripts/constants.gd
@@ -435,7 +435,33 @@ func _ready() -> void:
func read_file():
- var file = FileAccess.open("res://saves/fs_setting", FileAccess.READ)
- if file.get_length() > 0:
- FS_ATT = file.get_var()
- file.close()
+ var file_path = "user://saves/fs_setting"
+ var dir_path = "user://saves"
+
+ # Проверяем и создаем папку, если она не существует
+ var dir = DirAccess.open(dir_path)
+ if not dir:
+ create_dir(dir_path)
+
+ var file = FileAccess.open(file_path, FileAccess.READ)
+ if file:
+ # Файл существует, читаем его содержимое
+ if file.get_length() > 0:
+ FS_ATT = file.get_var()
+ file.close()
+ else:
+ # Файл не существует, создаем его
+ create_file(file_path)
+
+
+func create_dir(dir_path: String):
+ DirAccess.make_dir_absolute(dir_path)
+
+
+func create_file(file_path: String):
+ var file = FileAccess.open(file_path, FileAccess.WRITE)
+ if file:
+ file.close()
+ print("Файл создан: ", file_path)
+ else:
+ print("Не удалось создать файл по пути:", file_path)
diff --git a/scripts/control_panel.gd b/scripts/control_panel.gd
index 12adea1..2a4d6bf 100644
--- a/scripts/control_panel.gd
+++ b/scripts/control_panel.gd
@@ -717,7 +717,7 @@ func _on_start_timer_03():
count_packet = 0
flag_start = false
flag_control_add = true
- timer_03.wait_time = 0.3
+ timer_03.wait_time = 0.4
timer_03.one_shot = true
timer_03.start()
@@ -752,7 +752,7 @@ func _on_contol_err():
logger.warning('❌❌❌')
flag_continue_control = false
_status_prd()
- timer.wait_time = 5.0
+ timer.wait_time = 15.0
timer.one_shot = true
timer.start()
diff --git a/scripts/network.gd b/scripts/network.gd
index b06211b..de1cb3b 100644
--- a/scripts/network.gd
+++ b/scripts/network.gd
@@ -7,7 +7,7 @@ var soc_unicast: Socket
var soc_brodcast: Socket
var ip_address_yau: String = Constants.ADDRESSES[0][1]
var ip_port_yau: int = Constants.ADDRESSES[0][2]
-var timeout: float = Yau07.ONLINE_TIMEOUT
+var timeout: float = 10.0
var last_update_time_yau07: float = 0.0
var last_update_time_fs: float = 0.0
var broadcast_packet: PackedByteArray
@@ -39,10 +39,10 @@ var command_stack_3: Array
var counter_fs_3: int = 0
# Яу-07б
-signal yau_status_line(_status) ## Вызывается когда меняется состояние связи с ячейкой
-signal yau_receive(_data_from_yau)
-signal yau_feedback_receive(_data_from_yau)
-signal yau_read_isa(_unit_isa_ports)
+signal yau_status_line(status, addr) ## Вызывается когда меняется состояние связи с ячейкой
+signal yau_receive(data_from_yau)
+signal yau_feedback_receive(data_from_yau)
+signal yau_read_isa(unit_isa_ports)
# ФС модуль
signal data_from_fs_1(data:PackedByteArray)
signal data_from_fs_2(data:PackedByteArray)
@@ -65,7 +65,6 @@ func poll_receive_yau07(sock: Socket) -> bool: ## Приёмник
broadcast_packet = sock.get_packet()
var addr_receive = sock.get_packet_ip()
var port_receive = sock.get_packet_port()
-
if (ip_address_yau == addr_receive) and (ip_port_yau == port_receive):
last_update_time_yau07 = 0.0
unit.parse(broadcast_packet)
@@ -73,9 +72,12 @@ func poll_receive_yau07(sock: Socket) -> bool: ## Приёмник
emit_signal('yau_receive', data_from_yau_07)
if sock == soc_unicast:
emit_signal('yau_feedback_receive', data_from_yau_07)
+ emit_signal('yau_status_line', addr_receive)
else:
if sock.get_available_packet_count():
last_update_time_yau07 = 0.0
+ else:
+ emit_signal('yau_status_line', '')
return false
@@ -124,7 +126,6 @@ func _ready() -> void:
if rc != OK:
print_debug('Ошибка: неудачная привязка адреса: ', Constants.UNICAST_ADDRESS)
- unit.connect('line_changed', Callable(self, 'on_line_changed'))
unit.connect('command_fail', Callable(self, 'on_command_fail'))
set_config()
@@ -170,7 +171,7 @@ func _process(delta: float) -> void:
match unit.process(delta):
Error.OK: soc_unicast.send_to(ip_address_yau, ip_port_yau, unit.tx_data.slice(0, unit.tx_len))
- Error.FAILED: print_debug('Ошибка отправки данных')
+ #Error.FAILED: print_debug('Ошибка отправки данных')
func state_machine_yau07():
@@ -211,9 +212,6 @@ func write_port_isa(port_isa: int, data_isa: int) -> void:
send_array.append(['wr', write_data])
-func on_line_changed(_unit) -> void:
- emit_signal('yau_status_line', unit.online)
-
## Ессли отсутствует подключение к ячейке ЯУ-07Б
func on_command_fail(_unit) -> void:
diff --git a/scripts/yau07.gd b/scripts/yau07.gd
index 7d1c660..9c6a1c0 100644
--- a/scripts/yau07.gd
+++ b/scripts/yau07.gd
@@ -241,7 +241,7 @@ class YaU07:
if not online:
online = true
emit_signal('line_changed', self)
-
+
var rx_data_len = rx_data.size()
if rx_data_len < 10:
return false
diff --git a/table/node_list.tscn b/table/node_list.tscn
index bf5ecf8..22ace8a 100644
--- a/table/node_list.tscn
+++ b/table/node_list.tscn
@@ -1,9 +1,13 @@
-[gd_scene format=3 uid="uid://mxm8nthir8h4"]
+[gd_scene load_steps=2 format=3 uid="uid://mxm8nthir8h4"]
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_i3io3"]
+bg_color = Color(0, 0, 0, 0.490196)
[node name="OptionButton" type="OptionButton"]
offset_right = 130.0
offset_bottom = 25.0
focus_mode = 0
mouse_default_cursor_shape = 2
+theme_override_styles/normal = SubResource("StyleBoxFlat_i3io3")
alignment = 1
expand_icon = true
diff --git a/testPRD_2.0.exe b/testPRD_2.0.exe
deleted file mode 100644
index 55690f8..0000000
Binary files a/testPRD_2.0.exe and /dev/null differ