Доработка, отлажен ПРД-К контроль
This commit is contained in:
@@ -144,6 +144,10 @@ map_server_addr=false
|
||||
center_offset=Vector2(0, 0)
|
||||
external_cu=false
|
||||
|
||||
[global_group]
|
||||
|
||||
default_reset=""
|
||||
|
||||
[gui]
|
||||
|
||||
theme/custom_font="res://data/secondary-font.tres"
|
||||
|
||||
@@ -26,7 +26,7 @@ text = "Кассета ФС-КД"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="ref_A2" parent="." instance=ExtResource("3_kqnvt")]
|
||||
[node name="ref_A2" parent="." groups=["default_reset"] instance=ExtResource("3_kqnvt")]
|
||||
offset_left = 5.0
|
||||
offset_top = 33.0
|
||||
offset_right = 55.0
|
||||
@@ -42,7 +42,7 @@ offset_bottom = 183.0
|
||||
fname = "Модуль ФС"
|
||||
rname = "A1"
|
||||
|
||||
[node name="ref_A4" parent="." instance=ExtResource("3_kqnvt")]
|
||||
[node name="ref_A4" parent="." groups=["default_reset"] instance=ExtResource("3_kqnvt")]
|
||||
offset_left = 105.0
|
||||
offset_top = 33.0
|
||||
offset_right = 155.0
|
||||
@@ -66,7 +66,7 @@ offset_bottom = 183.0
|
||||
fname = "Модуль ФС"
|
||||
rname = "A3"
|
||||
|
||||
[node name="ref_A7" parent="." instance=ExtResource("3_kqnvt")]
|
||||
[node name="ref_A7" parent="." groups=["default_reset"] instance=ExtResource("3_kqnvt")]
|
||||
offset_left = 255.0
|
||||
offset_top = 33.0
|
||||
offset_right = 305.0
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=11 format=3 uid="uid://m5s87q7m66lj"]
|
||||
[gd_scene load_steps=16 format=3 uid="uid://m5s87q7m66lj"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://d3iqb5e4g81m5" path="res://scenes/контроль/элемент-г.tscn" id="1_8dmgr"]
|
||||
[ext_resource type="Script" uid="uid://cwvikiygf8b1m" path="res://scenes/pribor-prd-k/pribor_prd_k.gd" id="1_tpdyp"]
|
||||
@@ -10,6 +10,31 @@
|
||||
[ext_resource type="Script" uid="uid://crpedygm3gohi" path="res://scenes/контроль/кассета.gd" id="7_xpa2n"]
|
||||
[ext_resource type="PackedScene" uid="uid://dq31j24gv5vi4" path="res://scenes/контроль/кассета-п-2.tscn" id="8_6fdp7"]
|
||||
[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/элемент-в.tscn" id="8_la5yt"]
|
||||
[ext_resource type="Texture2D" uid="uid://belwchvdktrw0" path="res://data/эмс-бланк.png" id="11_c7lv8"]
|
||||
[ext_resource type="Texture2D" uid="uid://bwddxs24es81u" path="res://data/эмс-бланк-пост.png" id="12_wd1vi"]
|
||||
[ext_resource type="Texture2D" uid="uid://pfoscstbm025" path="res://data/эмс-бланк-перем.png" id="13_bjebg"]
|
||||
|
||||
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_kc77u"]
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_di0aa"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("11_c7lv8")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("12_wd1vi")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("13_bjebg")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": null
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
"speed": 5.0
|
||||
}]
|
||||
|
||||
[node name="pribor_prd_k" type="Control"]
|
||||
layout_mode = 3
|
||||
@@ -29,7 +54,7 @@ offset_bottom = 432.0
|
||||
script = ExtResource("3_wip3a")
|
||||
fname = "Кассета У5"
|
||||
|
||||
[node name="maa2000_A22" parent="." instance=ExtResource("1_8dmgr")]
|
||||
[node name="maa2000_A22" parent="." groups=["default_reset"] instance=ExtResource("1_8dmgr")]
|
||||
layout_mode = 0
|
||||
offset_left = 485.0
|
||||
offset_top = 907.0
|
||||
@@ -38,7 +63,7 @@ offset_bottom = 949.0
|
||||
fname = "MAA2000"
|
||||
rname = "A28"
|
||||
|
||||
[node name="dou2_A7" parent="." instance=ExtResource("1_8dmgr")]
|
||||
[node name="dou6_A7" parent="." groups=["default_reset"] instance=ExtResource("1_8dmgr")]
|
||||
layout_mode = 0
|
||||
offset_left = 8.0
|
||||
offset_top = 862.0
|
||||
@@ -47,7 +72,7 @@ offset_bottom = 907.0
|
||||
fname = "ДОУ-6"
|
||||
rname = "A7"
|
||||
|
||||
[node name="maa2000_A23" parent="." instance=ExtResource("1_8dmgr")]
|
||||
[node name="maa2000_A23" parent="." groups=["default_reset"] instance=ExtResource("1_8dmgr")]
|
||||
layout_mode = 0
|
||||
offset_left = 8.0
|
||||
offset_top = 907.0
|
||||
@@ -56,7 +81,7 @@ offset_bottom = 949.0
|
||||
fname = "MAA2000"
|
||||
rname = "A27"
|
||||
|
||||
[node name="dou2_A8" parent="." instance=ExtResource("1_8dmgr")]
|
||||
[node name="dou7_A8" parent="." groups=["default_reset"] instance=ExtResource("1_8dmgr")]
|
||||
layout_mode = 0
|
||||
offset_left = 8.0
|
||||
offset_top = 812.0
|
||||
@@ -89,7 +114,7 @@ text = "Панель
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="um1535_A10" parent="." instance=ExtResource("6_fmhtx")]
|
||||
[node name="um1535_A10" parent="." groups=["power_amplifier"] instance=ExtResource("6_fmhtx")]
|
||||
layout_mode = 0
|
||||
offset_left = 485.0
|
||||
offset_top = 242.0
|
||||
@@ -102,7 +127,7 @@ name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535Б"
|
||||
rname = "A10"
|
||||
|
||||
[node name="um1535_A11" parent="." instance=ExtResource("6_fmhtx")]
|
||||
[node name="um1535_A11" parent="." groups=["power_amplifier"] instance=ExtResource("6_fmhtx")]
|
||||
layout_mode = 0
|
||||
offset_left = 485.0
|
||||
offset_top = 337.0
|
||||
@@ -115,7 +140,7 @@ name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535Б"
|
||||
rname = "A11"
|
||||
|
||||
[node name="um1535_A12" parent="." instance=ExtResource("6_fmhtx")]
|
||||
[node name="um1535_A12" parent="." groups=["power_amplifier"] instance=ExtResource("6_fmhtx")]
|
||||
layout_mode = 0
|
||||
offset_left = 485.0
|
||||
offset_top = 432.0
|
||||
@@ -128,7 +153,7 @@ name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535Б"
|
||||
rname = "A12"
|
||||
|
||||
[node name="um1535_A13" parent="." instance=ExtResource("6_fmhtx")]
|
||||
[node name="um1535_A13" parent="." groups=["power_amplifier"] instance=ExtResource("6_fmhtx")]
|
||||
layout_mode = 0
|
||||
offset_left = 485.0
|
||||
offset_top = 527.0
|
||||
@@ -141,7 +166,7 @@ name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535Б"
|
||||
rname = "A13"
|
||||
|
||||
[node name="um1535_A14" parent="." instance=ExtResource("6_fmhtx")]
|
||||
[node name="um1535_A14" parent="." groups=["power_amplifier"] instance=ExtResource("6_fmhtx")]
|
||||
layout_mode = 0
|
||||
offset_left = 485.0
|
||||
offset_top = 622.0
|
||||
@@ -154,7 +179,7 @@ name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535Б"
|
||||
rname = "A14"
|
||||
|
||||
[node name="um1535_A15" parent="." instance=ExtResource("6_fmhtx")]
|
||||
[node name="um1535_A15" parent="." groups=["power_amplifier"] instance=ExtResource("6_fmhtx")]
|
||||
layout_mode = 0
|
||||
offset_left = 485.0
|
||||
offset_top = 717.0
|
||||
@@ -167,7 +192,7 @@ name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535Б"
|
||||
rname = "A15"
|
||||
|
||||
[node name="utm80_A9" parent="." instance=ExtResource("6_fmhtx")]
|
||||
[node name="utm80_A9" parent="." groups=["power_amplifier"] instance=ExtResource("6_fmhtx")]
|
||||
layout_mode = 0
|
||||
offset_left = 485.0
|
||||
offset_top = 812.0
|
||||
@@ -180,7 +205,7 @@ name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УТМ80"
|
||||
rname = "A9"
|
||||
|
||||
[node name="um1535_A16" parent="." instance=ExtResource("6_fmhtx")]
|
||||
[node name="um1535_A16" parent="." groups=["power_amplifier"] instance=ExtResource("6_fmhtx")]
|
||||
layout_mode = 0
|
||||
offset_left = 8.0
|
||||
offset_top = 242.0
|
||||
@@ -193,7 +218,7 @@ name_min_size1 = Vector2i(35, 20)
|
||||
fname = "РМ16-20М"
|
||||
rname = "A16"
|
||||
|
||||
[node name="um1535_A17" parent="." instance=ExtResource("6_fmhtx")]
|
||||
[node name="um1535_A17" parent="." groups=["power_amplifier"] instance=ExtResource("6_fmhtx")]
|
||||
layout_mode = 0
|
||||
offset_left = 8.0
|
||||
offset_top = 337.0
|
||||
@@ -206,7 +231,7 @@ name_min_size1 = Vector2i(35, 20)
|
||||
fname = "РМ16-20М"
|
||||
rname = "A17"
|
||||
|
||||
[node name="um1535_A18" parent="." instance=ExtResource("6_fmhtx")]
|
||||
[node name="um1535_A18" parent="." groups=["power_amplifier"] instance=ExtResource("6_fmhtx")]
|
||||
layout_mode = 0
|
||||
offset_left = 8.0
|
||||
offset_top = 432.0
|
||||
@@ -219,7 +244,7 @@ name_min_size1 = Vector2i(35, 20)
|
||||
fname = "РМ16-20М"
|
||||
rname = "A18"
|
||||
|
||||
[node name="um1535_A19" parent="." instance=ExtResource("6_fmhtx")]
|
||||
[node name="um1535_A19" parent="." groups=["power_amplifier"] instance=ExtResource("6_fmhtx")]
|
||||
layout_mode = 0
|
||||
offset_left = 8.0
|
||||
offset_top = 527.0
|
||||
@@ -232,7 +257,7 @@ name_min_size1 = Vector2i(35, 20)
|
||||
fname = "РМ16-20М"
|
||||
rname = "A19"
|
||||
|
||||
[node name="um1535_A20" parent="." instance=ExtResource("6_fmhtx")]
|
||||
[node name="um1535_A20" parent="." groups=["power_amplifier"] instance=ExtResource("6_fmhtx")]
|
||||
layout_mode = 0
|
||||
offset_left = 8.0
|
||||
offset_top = 622.0
|
||||
@@ -245,7 +270,7 @@ name_min_size1 = Vector2i(35, 20)
|
||||
fname = "РМ16-20М"
|
||||
rname = "A20"
|
||||
|
||||
[node name="um1535_A21" parent="." instance=ExtResource("6_fmhtx")]
|
||||
[node name="um1535_A21" parent="." groups=["power_amplifier"] instance=ExtResource("6_fmhtx")]
|
||||
layout_mode = 0
|
||||
offset_left = 8.0
|
||||
offset_top = 717.0
|
||||
@@ -280,7 +305,7 @@ patch_margin_bottom = 16
|
||||
script = ExtResource("7_xpa2n")
|
||||
fname = "Кассета П-1"
|
||||
|
||||
[node name="ref_A26" parent="kasseta_p_1" instance=ExtResource("8_la5yt")]
|
||||
[node name="ref_A26" parent="kasseta_p_1" groups=["default_reset"] instance=ExtResource("8_la5yt")]
|
||||
offset_left = 9.0
|
||||
offset_top = 33.0
|
||||
offset_right = 59.0
|
||||
@@ -288,7 +313,7 @@ offset_bottom = 183.0
|
||||
fname = "ИП9-50"
|
||||
rname = "A23"
|
||||
|
||||
[node name="ref_A23" parent="kasseta_p_1" instance=ExtResource("8_la5yt")]
|
||||
[node name="ref_A23" parent="kasseta_p_1" groups=["default_reset"] instance=ExtResource("8_la5yt")]
|
||||
offset_left = 59.0
|
||||
offset_top = 33.0
|
||||
offset_right = 109.0
|
||||
@@ -296,7 +321,7 @@ offset_bottom = 183.0
|
||||
fname = "ИП9-50"
|
||||
rname = "A24"
|
||||
|
||||
[node name="ref_A24" parent="kasseta_p_1" instance=ExtResource("8_la5yt")]
|
||||
[node name="ref_A24" parent="kasseta_p_1" groups=["default_reset"] instance=ExtResource("8_la5yt")]
|
||||
offset_left = 109.0
|
||||
offset_top = 33.0
|
||||
offset_right = 159.0
|
||||
@@ -322,3 +347,128 @@ offset_top = 622.0
|
||||
offset_right = 485.0
|
||||
offset_bottom = 812.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
|
||||
theme_override_colors/font_color = Color(0.862745, 0.0784314, 0.235294, 1)
|
||||
theme_override_font_sizes/font_size = 28
|
||||
horizontal_alignment = 1
|
||||
metadata/_edit_lock_ = true
|
||||
|
||||
[node name="Monitoring_panel" type="Panel" parent="."]
|
||||
visible = false
|
||||
layout_mode = 0
|
||||
offset_left = 496.0
|
||||
offset_top = 8.0
|
||||
offset_right = 496.0
|
||||
offset_bottom = 8.0
|
||||
theme_override_styles/panel = SubResource("StyleBoxTexture_kc77u")
|
||||
|
||||
[node name="in_fs_1" type="AnimatedSprite2D" parent="Monitoring_panel"]
|
||||
position = Vector2(206, 577)
|
||||
scale = Vector2(1.2, 1.2)
|
||||
sprite_frames = SubResource("SpriteFrames_di0aa")
|
||||
|
||||
[node name="in_fs_1" type="Label" parent="Monitoring_panel/in_fs_1"]
|
||||
offset_left = -15.1667
|
||||
offset_top = 14.0
|
||||
offset_right = 14.8333
|
||||
offset_bottom = 33.0
|
||||
theme_override_colors/font_color = Color(0.890196, 0.486275, 0.196078, 1)
|
||||
theme_override_font_sizes/font_size = 10
|
||||
text = "In FS 1"
|
||||
horizontal_alignment = 1
|
||||
metadata/_edit_use_anchors_ = true
|
||||
|
||||
[node name="in_fs_2" type="AnimatedSprite2D" parent="Monitoring_panel"]
|
||||
position = Vector2(319, 577)
|
||||
scale = Vector2(1.2, 1.2)
|
||||
sprite_frames = SubResource("SpriteFrames_di0aa")
|
||||
|
||||
[node name="in_fs_3" type="Label" parent="Monitoring_panel/in_fs_2"]
|
||||
offset_left = -15.1667
|
||||
offset_top = 14.0
|
||||
offset_right = 14.8333
|
||||
offset_bottom = 33.0
|
||||
theme_override_colors/font_color = Color(0.890196, 0.486275, 0.196078, 1)
|
||||
theme_override_font_sizes/font_size = 10
|
||||
text = "In FS 3"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="out_ems_1" type="AnimatedSprite2D" parent="Monitoring_panel"]
|
||||
position = Vector2(206, 465)
|
||||
scale = Vector2(1.2, 1.2)
|
||||
sprite_frames = SubResource("SpriteFrames_di0aa")
|
||||
|
||||
[node name="Out_ems_1" type="Label" parent="Monitoring_panel/out_ems_1"]
|
||||
anchors_preset = -1
|
||||
anchor_left = 0.0185185
|
||||
anchor_right = 0.0185185
|
||||
anchor_bottom = 0.555556
|
||||
offset_left = -18.5
|
||||
offset_top = 14.0
|
||||
offset_right = 17.5
|
||||
offset_bottom = 33.0
|
||||
theme_override_colors/font_color = Color(0.890196, 0.486275, 0.196078, 1)
|
||||
theme_override_font_sizes/font_size = 10
|
||||
text = "Out
|
||||
ems 1"
|
||||
horizontal_alignment = 1
|
||||
metadata/_edit_use_anchors_ = true
|
||||
|
||||
[node name="out_ems_2" type="AnimatedSprite2D" parent="Monitoring_panel"]
|
||||
position = Vector2(319, 465)
|
||||
scale = Vector2(1.2, 1.2)
|
||||
sprite_frames = SubResource("SpriteFrames_di0aa")
|
||||
|
||||
[node name="Out_ems_1" type="Label" parent="Monitoring_panel/out_ems_2"]
|
||||
offset_left = -15.1667
|
||||
offset_top = 14.0
|
||||
offset_right = 14.8333
|
||||
offset_bottom = 33.0
|
||||
theme_override_colors/font_color = Color(0.890196, 0.486275, 0.196078, 1)
|
||||
theme_override_font_sizes/font_size = 10
|
||||
text = "Out
|
||||
ems 2"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="in_fs_3" type="AnimatedSprite2D" parent="Monitoring_panel"]
|
||||
position = Vector2(264, 577)
|
||||
scale = Vector2(1.2, 1.2)
|
||||
sprite_frames = SubResource("SpriteFrames_di0aa")
|
||||
|
||||
[node name="in_fs_2" type="Label" parent="Monitoring_panel/in_fs_3"]
|
||||
offset_left = -15.1667
|
||||
offset_top = 14.0
|
||||
offset_right = 14.8333
|
||||
offset_bottom = 33.0
|
||||
theme_override_colors/font_color = Color(0.890196, 0.486275, 0.196078, 1)
|
||||
theme_override_font_sizes/font_size = 10
|
||||
text = "In FS 2"
|
||||
horizontal_alignment = 1
|
||||
metadata/_edit_use_anchors_ = true
|
||||
|
||||
[node name="out_ems_3" type="AnimatedSprite2D" parent="Monitoring_panel"]
|
||||
position = Vector2(264, 465)
|
||||
scale = Vector2(1.2, 1.2)
|
||||
sprite_frames = SubResource("SpriteFrames_di0aa")
|
||||
|
||||
[node name="Out_ems_1" type="Label" parent="Monitoring_panel/out_ems_3"]
|
||||
anchors_preset = -1
|
||||
anchor_left = 0.0185185
|
||||
anchor_right = 0.0185185
|
||||
anchor_bottom = 0.555556
|
||||
offset_left = -18.5
|
||||
offset_top = 14.0
|
||||
offset_right = 17.5
|
||||
offset_bottom = 33.0
|
||||
theme_override_colors/font_color = Color(0.890196, 0.486275, 0.196078, 1)
|
||||
theme_override_font_sizes/font_size = 10
|
||||
text = "Out
|
||||
ems 3"
|
||||
horizontal_alignment = 1
|
||||
metadata/_edit_use_anchors_ = true
|
||||
|
||||
@@ -1,32 +1,394 @@
|
||||
@tool
|
||||
extends "res://scenes/контроль/прибор.gd"
|
||||
|
||||
enum STATE_VAL {
|
||||
NONE = 0,
|
||||
GOOD = 1,
|
||||
ERROR = 2 }
|
||||
const Constants = {
|
||||
"IN_BLANK_PRD": 1,
|
||||
"OUT_BLANK_PRD": 13,
|
||||
"CI_1_OT_FS": 8,
|
||||
"CI_6_OT_FS": 13,
|
||||
"CI_7_OT_FS": 14,
|
||||
"CI_1_B_UF": 3,
|
||||
"CI_6_B_UF": 4,
|
||||
"CI_7_B_UF": 5,
|
||||
"CONST_MIN_TEMP": -25,
|
||||
"MAXIMUM_CODE_ADC": 3796,
|
||||
"MINIMUM_CODE_AD": 2660,
|
||||
"TEMPERATURE_UKP_1": 47,
|
||||
"TEMPERATURE_UKP_2": 79,
|
||||
"POWER_UKP_1": 31,
|
||||
"POWER_UKP_2": 63,
|
||||
"DKM_BIT_1": 0,
|
||||
"DKM_BIT_6": 5,
|
||||
"DKM_BIT_7": 6,
|
||||
"BASE_ADDR_EMS_G": 0x120,
|
||||
"ADDR_UG_LITERA_1": 0x106,
|
||||
"ADDR_UG_LITERA_2": 0x108,
|
||||
"ADDR_UG_LITERA_3": 0x10A,
|
||||
"TEMP_THRESHOLD": 70,
|
||||
"POWER_THRESHOLD": 40,
|
||||
"TIMER_DELAY": 1.5,
|
||||
"dou_ray_nuber": 0x3,
|
||||
"attenutor_um_1": 0x7,
|
||||
"attenutor_um_2": 0x7,
|
||||
"attenutor_um_3": 0x7,
|
||||
}
|
||||
enum STATE_VAL { NONE = 0, GOOD = 1, ERROR = 2 }
|
||||
# Основные переменные
|
||||
var count_packet_1:int = 0
|
||||
var count_packet_2:int = 0
|
||||
var power_array_1: Array = []
|
||||
var power_array_2: Array = []
|
||||
var currecnt_unit: String
|
||||
var ug_work_1: int
|
||||
var ug_work_2: int
|
||||
var ug_work_3: int
|
||||
# Флаги и таймеры
|
||||
var control_timer: Timer = Timer.new()
|
||||
var flag_timer_started: bool = false
|
||||
# Результаты контроля
|
||||
var _control_results: Dictionary = {
|
||||
"block_ip": false, # Проверка касет П1 и ИП МА2000
|
||||
"temperature": true, # Проверка температур УМ
|
||||
"dkm_1": false, # Проверка ДКМ
|
||||
"dkm_2": false, # Проверка ДКМ
|
||||
"power_ukp": false, # Мощность от УКП
|
||||
"fs_1": false, # Проверка ФС
|
||||
"fs_2": false,
|
||||
"fs_3": false,
|
||||
}
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
pass
|
||||
#var unit_key = settings.get_unit_key(get_meta('unit_name')[0])
|
||||
#var unit_prd = network.units[unit_key]
|
||||
#unit_prd.connect('data_received', Callable(self, 'on_data_received'))
|
||||
#unit_prd.connect('line_changed', Callable(self, 'on_line_changed'))
|
||||
#set_default_state()
|
||||
initialize_connections()
|
||||
setup_timer()
|
||||
set_default_state()
|
||||
|
||||
|
||||
func set_default_state():
|
||||
$utm80_A9.state = STATE_VAL.NONE
|
||||
$um1535_A10.state = STATE_VAL.NONE
|
||||
$um1535_A11.state = STATE_VAL.NONE
|
||||
$um1535_A12.state = STATE_VAL.NONE
|
||||
$um1535_A13.state = STATE_VAL.NONE
|
||||
$um1535_A14.state = STATE_VAL.NONE
|
||||
$um1535_A15.state = STATE_VAL.NONE
|
||||
$um1535_A16.state = STATE_VAL.NONE
|
||||
$um1535_A17.state = STATE_VAL.NONE
|
||||
$um1535_A18.state = STATE_VAL.NONE
|
||||
$um1535_A19.state = STATE_VAL.NONE
|
||||
$um1535_A20.state = STATE_VAL.NONE
|
||||
$um1535_A21.state = STATE_VAL.NONE
|
||||
func initialize_connections() -> void:
|
||||
signaller.conn(signaller.fs_update_state, Callable(self, 'on_fs_update_state'))
|
||||
var unit_key = settings.get_unit_key(get_meta('unit_name')[0])
|
||||
var unit_prd = network.units[unit_key]
|
||||
currecnt_unit = unit_prd.name
|
||||
unit_prd.connect('data_received', Callable(self, 'on_data_received'))
|
||||
unit_prd.connect('line_changed', Callable(self, 'on_line_changed'))
|
||||
|
||||
|
||||
func setup_timer() -> void:
|
||||
add_child(control_timer)
|
||||
control_timer.connect('timeout', Callable(self, 'on_stop_control'))
|
||||
control_timer.one_shot = true
|
||||
control_timer.wait_time = 10.0
|
||||
control_timer.start()
|
||||
|
||||
|
||||
func set_default_state() -> void:
|
||||
for group in get_tree().get_nodes_in_group('default_reset'):
|
||||
group.state = STATE_VAL.NONE
|
||||
|
||||
for group in get_tree().get_nodes_in_group('power_amplifier'):
|
||||
group.state = STATE_VAL.NONE
|
||||
|
||||
|
||||
func _enter_tree() -> void:
|
||||
$control_result.text = ''
|
||||
signaller.connect('режим_работа', Callable(self, 'on_mode_changed').bind(false))
|
||||
_on_control_fs(true)
|
||||
|
||||
|
||||
func _exit_tree() -> void:
|
||||
var unit_key = settings.get_unit_key(get_meta('unit_name')[0])
|
||||
var unit_prd = network.units[unit_key]
|
||||
var prd_module = prd.prd_dict[unit_prd.name]
|
||||
|
||||
prd_module.cmd_array.append([unit_prd.CmdCode.WRITE_ISA, [Constants.ADDR_UG_LITERA_1, ug_work_1, Constants.ADDR_UG_LITERA_2, ug_work_2]])
|
||||
|
||||
|
||||
func on_line_changed(unit_prd: Object) -> void:
|
||||
if not unit_prd.online:
|
||||
set_default_state()
|
||||
|
||||
|
||||
func on_data_received(unit_prd: Object) -> void:
|
||||
if not is_inside_tree():
|
||||
return
|
||||
|
||||
var status = unit_prd.status
|
||||
check_block_ip(status)
|
||||
check_temperature_um(status)
|
||||
# Обработка данных ЭМС
|
||||
_process_ems_data(status)
|
||||
|
||||
if flag_timer_started:
|
||||
check_dkm(status, Constants.DKM_BIT_1)
|
||||
check_dkm(status, Constants.DKM_BIT_6)
|
||||
check_dkm(status, Constants.DKM_BIT_7)
|
||||
# Обработка мощности от УКП
|
||||
_process_ukp_power(status)
|
||||
|
||||
|
||||
# Обрабатывает данные ЭМС и обновляет UI панели
|
||||
func _process_ems_data(status: PackedByteArray) -> void:
|
||||
## Контроль ЭМС
|
||||
var in_blank: int = status.decode_u16(Constants.IN_BLANK_PRD)
|
||||
var out_blank: int = status.decode_u16(Constants.OUT_BLANK_PRD)
|
||||
|
||||
# Обновление фреймов для входных сигналов
|
||||
$Monitoring_panel/in_fs_1.frame = (in_blank >> Constants.CI_6_OT_FS) & 1
|
||||
$Monitoring_panel/in_fs_2.frame = (in_blank >> Constants.CI_7_OT_FS) & 1
|
||||
$Monitoring_panel/in_fs_3.frame = (in_blank >> Constants.CI_1_OT_FS) & 1
|
||||
|
||||
# Обновление фреймов для выходных сигналов ЭМС
|
||||
$Monitoring_panel/out_ems_1.frame = (out_blank >> Constants.CI_6_B_UF) & 1
|
||||
$Monitoring_panel/out_ems_2.frame = (out_blank >> Constants.CI_7_B_UF) & 1
|
||||
$Monitoring_panel/out_ems_3.frame = (out_blank >> Constants.CI_1_B_UF) & 1
|
||||
|
||||
|
||||
## Проверка касет П1 и ИП МА2000
|
||||
func check_block_ip(status_prd: PackedByteArray) -> void :
|
||||
var ug_online: bool = (status_prd[0] >> 1) & 1
|
||||
if ug_online:
|
||||
const BYTE_DRY_CONTACT: int = 27
|
||||
const BIT_MAA2000_1: int = 0
|
||||
const BIT_MAA2000_2: int = 1
|
||||
const BIT_IP9_50_1: int = 2
|
||||
const BIT_IP9_50_2: int = 3
|
||||
const BIT_IP12_50_1: int = 4
|
||||
const BIT_IP9_50_3: int = 5
|
||||
const BIT_IP12_50_2: int = 6
|
||||
|
||||
var maa2000_1 = status_prd[BYTE_DRY_CONTACT] >> BIT_MAA2000_1 & 1
|
||||
var maa2000_2 = status_prd[BYTE_DRY_CONTACT] >> BIT_MAA2000_2 & 1
|
||||
var ip9_50_1 = status_prd[BYTE_DRY_CONTACT] >> BIT_IP9_50_1 & 1
|
||||
var ip9_50_2 = status_prd[BYTE_DRY_CONTACT] >> BIT_IP9_50_2 & 1
|
||||
var ip12_50_1 = status_prd[BYTE_DRY_CONTACT] >> BIT_IP12_50_1 & 1
|
||||
var ip9_50_3 = status_prd[BYTE_DRY_CONTACT] >> BIT_IP9_50_3 & 1
|
||||
var ip12_50_2 = status_prd[BYTE_DRY_CONTACT] >> BIT_IP12_50_2 & 1
|
||||
|
||||
$maa2000_A23.state = STATE_VAL.ERROR if maa2000_1 else STATE_VAL.GOOD
|
||||
$maa2000_A22.state = STATE_VAL.ERROR if maa2000_2 else STATE_VAL.GOOD
|
||||
$kasseta_p_1/ref_A26.state = STATE_VAL.ERROR if ip9_50_1 else STATE_VAL.GOOD
|
||||
$kasseta_p_1/ref_A23.state = STATE_VAL.ERROR if ip9_50_2 else STATE_VAL.GOOD
|
||||
$kasseta_p_1/ref_A24.state = STATE_VAL.ERROR if ip12_50_1 else STATE_VAL.GOOD
|
||||
$kasseta_p_2/ref_A26.state = STATE_VAL.ERROR if ip9_50_3 else STATE_VAL.GOOD
|
||||
$kasseta_p_2/ref_A23.state = STATE_VAL.ERROR if ip12_50_2 else STATE_VAL.GOOD
|
||||
else:
|
||||
$maa2000_A23.state = STATE_VAL.NONE
|
||||
$maa2000_A22.state = STATE_VAL.NONE
|
||||
$kasseta_p_1/ref_A26.state = STATE_VAL.NONE
|
||||
$kasseta_p_1/ref_A23.state = STATE_VAL.NONE
|
||||
$kasseta_p_1/ref_A24.state = STATE_VAL.NONE
|
||||
$kasseta_p_2/ref_A26.state = STATE_VAL.NONE
|
||||
$kasseta_p_2/ref_A23.state = STATE_VAL.NONE
|
||||
|
||||
_control_results["block_ip"] = (
|
||||
$maa2000_A23.state == STATE_VAL.GOOD and
|
||||
$maa2000_A22.state == STATE_VAL.GOOD and
|
||||
$kasseta_p_1/ref_A26.state == STATE_VAL.GOOD and
|
||||
$kasseta_p_1/ref_A23.state == STATE_VAL.GOOD and
|
||||
$kasseta_p_1/ref_A24.state == STATE_VAL.GOOD and
|
||||
$kasseta_p_2/ref_A26.state == STATE_VAL.GOOD and
|
||||
$kasseta_p_2/ref_A23.state == STATE_VAL.GOOD
|
||||
)
|
||||
|
||||
|
||||
## Проверка температур УМ от УКП
|
||||
func check_temperature_um(status_prd: PackedByteArray) -> void:
|
||||
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
const TEMP: float = 115.0 / (Constants.MAXIMUM_CODE_ADC - Constants.MINIMUM_CODE_AD)
|
||||
var ukp1_online: int = (status_prd[0] >> 2) & 1
|
||||
if ukp1_online:
|
||||
var tmp_1: int
|
||||
var temperature_ukp_1: int
|
||||
for i_temp in range(6):
|
||||
temperature_ukp_1 = status_prd.decode_u16(Constants.TEMPERATURE_UKP_1 + 2 * i_temp)
|
||||
tmp_1 = round(Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_1) * TEMP + 3)
|
||||
power_amplifier[i_temp].value0 = tmp_1
|
||||
# Темпуратура от УМ литеры 1
|
||||
temperature_ukp_1 = status_prd.decode_u16(Constants.TEMPERATURE_UKP_1 + 2 * 7)
|
||||
tmp_1 = round(Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_1) * TEMP + 3)
|
||||
power_amplifier[6].value0 = tmp_1
|
||||
|
||||
var ukp2_online = (status_prd[0] >> 3) & 1
|
||||
if ukp2_online:
|
||||
for i_temp in range(6):
|
||||
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)
|
||||
power_amplifier[i_temp+7].value0 = tmp_2
|
||||
|
||||
|
||||
## Проверка ДКМ
|
||||
func check_dkm(status_prd: PackedByteArray, bit_dkm: int) -> void:
|
||||
const DKM: int = 28
|
||||
|
||||
var status_dkm = status_prd[DKM] >> bit_dkm & 1
|
||||
if bit_dkm == 5:
|
||||
$dou6_A7.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
$kasseta_fs_kd/ref_A2.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
_control_results["dkm_1"] = status_dkm
|
||||
elif bit_dkm == 6:
|
||||
$dou7_A8.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
$kasseta_fs_kd/ref_A4.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
_control_results["dkm_2"] = status_dkm
|
||||
elif bit_dkm == 0:
|
||||
$kasseta_fs_kd/ref_A7.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
_control_results["dkm_3"] = status_dkm
|
||||
|
||||
|
||||
func _process_ukp_power(status: PackedByteArray) -> void:
|
||||
## Мощность УМ от УКП 1
|
||||
var arr_power_ukp_1: Array = []
|
||||
|
||||
if (status[0] >> 2) & 1:
|
||||
var power_ukp_1: int
|
||||
for i_power in range(6):
|
||||
power_ukp_1 = status.decode_u16(Constants.POWER_UKP_1 + 2 * i_power)
|
||||
arr_power_ukp_1.append(power_ukp_1)
|
||||
# Мощность от УМ (УКП) литеры 3
|
||||
power_ukp_1 = status.decode_u16(Constants.POWER_UKP_1 + 2 * 7)
|
||||
arr_power_ukp_1.append(power_ukp_1)
|
||||
|
||||
if count_packet_1 == 0:
|
||||
power_array_1 = arr_power_ukp_1
|
||||
else:
|
||||
for i in arr_power_ukp_1.size():
|
||||
if arr_power_ukp_1[i] > power_array_1[i]:
|
||||
power_array_1[i] = arr_power_ukp_1[i]
|
||||
|
||||
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
for i in 7:
|
||||
power_amplifier[i].value1 = '%d' % power_array_1[i]
|
||||
power_amplifier[i].state = STATE_VAL.GOOD if power_array_1[i] > 40 else STATE_VAL.ERROR
|
||||
count_packet_1 += 1
|
||||
|
||||
## Мощность УМ от УКП 2
|
||||
var arr_power_ukp_2: Array = []
|
||||
if (status[0] >> 2) & 1:
|
||||
for i_power in range(6):
|
||||
var power_ukp_2 = status.decode_u16(Constants.POWER_UKP_2 + 2 * i_power)
|
||||
arr_power_ukp_2.append(power_ukp_2)
|
||||
|
||||
if count_packet_2 == 0:
|
||||
power_array_2 = arr_power_ukp_2
|
||||
else:
|
||||
for i in arr_power_ukp_2.size():
|
||||
if arr_power_ukp_2[i] > power_array_2[i]:
|
||||
power_array_2[i] = arr_power_ukp_2[i]
|
||||
|
||||
for i in 6:
|
||||
power_amplifier[i+7].value1 = '%d' % power_array_2[i]
|
||||
power_amplifier[i+7].state = STATE_VAL.GOOD if power_array_2[i] > 40 else STATE_VAL.ERROR
|
||||
|
||||
count_packet_2 += 1
|
||||
|
||||
_control_results["power_ukp"] = true
|
||||
for amp in power_amplifier:
|
||||
if amp.state != STATE_VAL.GOOD:
|
||||
_control_results["power_ukp"] = false
|
||||
break
|
||||
|
||||
|
||||
func _on_control_fs(mode: bool) -> void:
|
||||
var interfer_name: String
|
||||
var fs_arr: Array
|
||||
if mode:
|
||||
interfer_name = 'k1'
|
||||
fs_arr = [[90.0, 2450.0, 1500.0, 23]]
|
||||
else:
|
||||
interfer_name = 'off'
|
||||
fs_arr = [[90.0, 2450.0, 1500.0, 23]]
|
||||
signaller.emit_signal('interfer_init', interfer_name, fs_arr)
|
||||
|
||||
|
||||
func on_stop_control() -> void:
|
||||
print_debug('Отсановка контроля ПРД')
|
||||
_on_control_fs(false)
|
||||
on_control_result()
|
||||
|
||||
|
||||
func on_fs_update_state(packet_type_7: Dictionary) -> void:
|
||||
var parts = currecnt_unit.split('-')
|
||||
var last_part = parts[-1] # Прибор
|
||||
|
||||
# Словарь для маппинга: ключ - номер FS, значение - целевая нода и условие прибора
|
||||
var fs_mapping = {
|
||||
0: { "node": $kasseta_fs_kd/ref_A3, "condition": last_part == '1к' },
|
||||
1: { "node": $kasseta_fs_kd/ref_A3, "condition": last_part == '4к' },
|
||||
2: { "node": $kasseta_fs_kd/ref_A3, "condition": last_part == '3к' },
|
||||
3: { "node": $kasseta_fs_kd/ref_A3, "condition": last_part == '2к' },
|
||||
20: { "node": $kasseta_fs_kd/ref_A6, "condition": last_part == '1к' },
|
||||
21: { "node": $kasseta_fs_kd/ref_A6, "condition": last_part == '4к' },
|
||||
22: { "node": $kasseta_fs_kd/ref_A6, "condition": last_part == '3к' },
|
||||
23: { "node": $kasseta_fs_kd/ref_A6, "condition": last_part == '2к' },
|
||||
24: { "node": $kasseta_fs_kd/ref_A5, "condition": last_part == '1к' },
|
||||
25: { "node": $kasseta_fs_kd/ref_A5, "condition": last_part == '4к' },
|
||||
26: { "node": $kasseta_fs_kd/ref_A5, "condition": last_part == '3к' },
|
||||
27: { "node": $kasseta_fs_kd/ref_A5, "condition": last_part == '2к' },
|
||||
}
|
||||
for fs in packet_type_7:
|
||||
if fs in fs_mapping and fs_mapping[fs]["condition"]:
|
||||
var data = packet_type_7[fs]
|
||||
var state = STATE_VAL.GOOD if data.isg == 1 else STATE_VAL.ERROR if data.isg == 0 else STATE_VAL.NONE
|
||||
fs_mapping[fs]["node"].state = state
|
||||
if fs < 4:
|
||||
_control_results["fs_1"] = (data.isg == 1)
|
||||
elif fs <24:
|
||||
_control_results["fs_2"] = (data.isg == 1)
|
||||
else:
|
||||
_control_results["fs_3"] = (data.isg == 1)
|
||||
if _control_results['fs_1'] and _control_results["fs_2"] and _control_results["fs_3"] and not flag_timer_started:
|
||||
on_ug_setting()
|
||||
control_timer.wait_time = Constants.TIMER_DELAY
|
||||
control_timer.start()
|
||||
flag_timer_started = true
|
||||
|
||||
|
||||
func on_ug_setting() -> void:
|
||||
var unit_key = settings.get_unit_key(get_meta('unit_name')[0])
|
||||
var unit_prd = network.units[unit_key]
|
||||
|
||||
if unit_prd.isa_ports.has(Constants.ADDR_UG_LITERA_1):
|
||||
ug_work_1 = unit_prd.isa_ports[Constants.ADDR_UG_LITERA_1]
|
||||
if unit_prd.isa_ports.has(Constants.ADDR_UG_LITERA_2):
|
||||
ug_work_2 = unit_prd.isa_ports[Constants.ADDR_UG_LITERA_2]
|
||||
if unit_prd.isa_ports.has(Constants.ADDR_UG_LITERA_3):
|
||||
ug_work_3 = unit_prd.isa_ports[Constants.ADDR_UG_LITERA_3]
|
||||
|
||||
var result_1 = ((Constants.attenutor_um_1 & 0x07) << 3) | (Constants.dou_ray_nuber & 0x07)
|
||||
var result_2 = ((Constants.attenutor_um_2 & 0x07) << 3) | (Constants.dou_ray_nuber & 0x07)
|
||||
var prd_module = prd.prd_dict[unit_prd.name]
|
||||
prd_module.cmd_array.append([unit_prd.CmdCode.WRITE_ISA, [Constants.ADDR_UG_LITERA_1, result_1,
|
||||
Constants.ADDR_UG_LITERA_2, result_2,
|
||||
Constants.ADDR_UG_LITERA_3, Constants.attenutor_um_3,
|
||||
Constants.BASE_ADDR_EMS_G, 6666]])
|
||||
|
||||
prd_module.cmd_array.append([unit_prd.CmdCode.READ_ISA, [Constants.ADDR_UG_LITERA_1, Constants.ADDR_UG_LITERA_2, Constants.ADDR_UG_LITERA_3]])
|
||||
|
||||
func on_mode_changed(in_tree: bool) -> void:
|
||||
if not in_tree:
|
||||
queue_free()
|
||||
|
||||
|
||||
func on_control_result() -> void:
|
||||
var result: bool = true
|
||||
|
||||
for key in _control_results:
|
||||
if not _control_results[key]:
|
||||
if key == 'fs_1':
|
||||
$kasseta_fs_kd/ref_A3.state = STATE_VAL.ERROR
|
||||
if key == 'fs_2':
|
||||
$kasseta_fs_kd/ref_A6.state = STATE_VAL.ERROR
|
||||
if key == 'fs_3':
|
||||
$kasseta_fs_kd/ref_A5.state = STATE_VAL.ERROR
|
||||
result = false
|
||||
print_debug('%s false' % key)
|
||||
|
||||
var parts = currecnt_unit.split('-')
|
||||
var last_part = parts[-1] # Прибор
|
||||
if result:
|
||||
$control_result.text = 'Прибор ПРД-%s исправен' % last_part
|
||||
$control_result.add_theme_color_override("font_color", Color.AQUAMARINE)
|
||||
else:
|
||||
$control_result.text = 'Прибор ПРД-%s неисправен' % last_part
|
||||
$control_result.add_theme_color_override("font_color", Color.CRIMSON)
|
||||
await get_tree().create_timer(Constants.TIMER_DELAY).timeout
|
||||
flag_timer_started = false
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
[ext_resource type="Script" uid="uid://crpedygm3gohi" path="res://scenes/контроль/кассета.gd" id="2_lxiqt"]
|
||||
[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/элемент-в.tscn" id="2_mkgdh"]
|
||||
|
||||
[node name="kasseta_fs_nd" type="NinePatchRect"]
|
||||
[node name="kasseta_fs_vd" type="NinePatchRect"]
|
||||
offset_right = 310.0
|
||||
offset_bottom = 190.0
|
||||
texture = ExtResource("1_wgdti")
|
||||
@@ -26,7 +26,7 @@ text = "Кассета ФС-ВД"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="ref_A2" parent="." instance=ExtResource("2_mkgdh")]
|
||||
[node name="ref_A2" parent="." groups=["default_reset"] instance=ExtResource("2_mkgdh")]
|
||||
offset_left = 55.0
|
||||
offset_top = 32.0
|
||||
offset_right = 105.0
|
||||
|
||||
@@ -43,7 +43,7 @@ offset_right = 15.0
|
||||
offset_bottom = 30.0
|
||||
script = ExtResource("1_bnnv3")
|
||||
|
||||
[node name="maa2000_A23" parent="." instance=ExtResource("2_is25t")]
|
||||
[node name="maa2000_A23" parent="." groups=["default_reset"] instance=ExtResource("2_is25t")]
|
||||
layout_mode = 2
|
||||
offset_left = 8.0
|
||||
offset_top = 877.0
|
||||
@@ -52,7 +52,7 @@ offset_bottom = 949.0
|
||||
fname = "MAA2000"
|
||||
rname = "A23"
|
||||
|
||||
[node name="maa2000_A22" parent="." instance=ExtResource("2_is25t")]
|
||||
[node name="maa2000_A22" parent="." groups=["default_reset"] instance=ExtResource("2_is25t")]
|
||||
layout_mode = 2
|
||||
offset_left = 485.0
|
||||
offset_top = 877.0
|
||||
@@ -61,7 +61,7 @@ offset_bottom = 949.0
|
||||
fname = "MAA2000"
|
||||
rname = "A22"
|
||||
|
||||
[node name="dou2_A5" parent="." instance=ExtResource("2_is25t")]
|
||||
[node name="dou2_A5" parent="." groups=["default_reset"] instance=ExtResource("2_is25t")]
|
||||
layout_mode = 2
|
||||
offset_left = 485.0
|
||||
offset_top = 812.0
|
||||
@@ -70,7 +70,7 @@ offset_bottom = 877.0
|
||||
fname = "ДОУ-2"
|
||||
rname = "A5"
|
||||
|
||||
[node name="dou2_A6" parent="." instance=ExtResource("2_is25t")]
|
||||
[node name="dou3_A6" parent="." groups=["default_reset"] instance=ExtResource("2_is25t")]
|
||||
layout_mode = 2
|
||||
offset_left = 8.0
|
||||
offset_top = 812.0
|
||||
@@ -138,7 +138,7 @@ text = "Кассета ФС-НД"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="ref_A3" parent="kasseta_FS_ND" instance=ExtResource("7_eoqf2")]
|
||||
[node name="ref_A3" parent="kasseta_FS_ND" groups=["default_reset"] instance=ExtResource("7_eoqf2")]
|
||||
offset_left = 55.0
|
||||
offset_top = 32.0
|
||||
offset_right = 105.0
|
||||
@@ -153,6 +153,7 @@ offset_right = 155.0
|
||||
offset_bottom = 182.0
|
||||
fname = "Модуль ФС"
|
||||
rname = "A1"
|
||||
state = 2
|
||||
|
||||
[node name="ref_A2" parent="kasseta_FS_ND" instance=ExtResource("7_eoqf2")]
|
||||
offset_left = 155.0
|
||||
@@ -161,8 +162,9 @@ offset_right = 205.0
|
||||
offset_bottom = 182.0
|
||||
fname = "Модуль ФС"
|
||||
rname = "A2"
|
||||
state = 2
|
||||
|
||||
[node name="ref_A4" parent="kasseta_FS_ND" instance=ExtResource("7_eoqf2")]
|
||||
[node name="ref_A4" parent="kasseta_FS_ND" groups=["default_reset"] instance=ExtResource("7_eoqf2")]
|
||||
offset_left = 205.0
|
||||
offset_top = 32.0
|
||||
offset_right = 255.0
|
||||
@@ -184,7 +186,7 @@ patch_margin_bottom = 16
|
||||
script = ExtResource("6_b5wvk")
|
||||
fname = "Кассета П-1"
|
||||
|
||||
[node name="ref_A21" parent="kasseta_P_1" instance=ExtResource("7_eoqf2")]
|
||||
[node name="ref_A21" parent="kasseta_P_1" groups=["default_reset"] instance=ExtResource("7_eoqf2")]
|
||||
offset_left = 9.0
|
||||
offset_top = 33.0
|
||||
offset_right = 59.0
|
||||
@@ -192,7 +194,7 @@ offset_bottom = 183.0
|
||||
fname = "ИП12-50"
|
||||
rname = "A21"
|
||||
|
||||
[node name="ref_A20" parent="kasseta_P_1" instance=ExtResource("7_eoqf2")]
|
||||
[node name="ref_A20" parent="kasseta_P_1" groups=["default_reset"] instance=ExtResource("7_eoqf2")]
|
||||
offset_left = 59.0
|
||||
offset_top = 33.0
|
||||
offset_right = 109.0
|
||||
@@ -200,7 +202,7 @@ offset_bottom = 183.0
|
||||
fname = "ИП9-50"
|
||||
rname = "A20"
|
||||
|
||||
[node name="ref_A19" parent="kasseta_P_1" instance=ExtResource("7_eoqf2")]
|
||||
[node name="ref_A19" parent="kasseta_P_1" groups=["default_reset"] instance=ExtResource("7_eoqf2")]
|
||||
offset_left = 109.0
|
||||
offset_top = 33.0
|
||||
offset_right = 159.0
|
||||
@@ -376,6 +378,7 @@ fname = "УМ1535А"
|
||||
rname = "A18"
|
||||
|
||||
[node name="Monitoring_panel" type="Panel" parent="."]
|
||||
visible = false
|
||||
layout_mode = 0
|
||||
theme_override_styles/panel = SubResource("StyleBoxTexture_bnnv3")
|
||||
|
||||
@@ -446,3 +449,14 @@ theme_override_font_sizes/font_size = 10
|
||||
text = "Out
|
||||
ems 2"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[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
|
||||
theme_override_colors/font_color = Color(0.862745, 0.0784314, 0.235294, 1)
|
||||
theme_override_font_sizes/font_size = 28
|
||||
horizontal_alignment = 1
|
||||
metadata/_edit_lock_ = true
|
||||
|
||||
@@ -1,43 +1,92 @@
|
||||
@tool
|
||||
extends "res://scenes/контроль/прибор.gd"
|
||||
|
||||
const IN_BLANK_PRD: int = 1
|
||||
const OUT_BLANK_PRD: int = 13
|
||||
const CI_2_OT_FS: int = 9
|
||||
const CI_3_OT_FS: int = 10
|
||||
const CI_2_B_UF: int = 1
|
||||
const CI_3_B_UF: int = 2
|
||||
const POWER_UKP_1: int = 31
|
||||
const POWER_UKP_2: int = 63
|
||||
|
||||
var timer_03: Timer = Timer.new()
|
||||
const Constants = {
|
||||
"IN_BLANK_PRD": 1,
|
||||
"OUT_BLANK_PRD": 13,
|
||||
"CI_2_OT_FS": 9,
|
||||
"CI_3_OT_FS": 10,
|
||||
"CI_2_B_UF": 4,
|
||||
"CI_3_B_UF": 5,
|
||||
"POWER_UKP_1": 31,
|
||||
"POWER_UKP_2": 63,
|
||||
"DKM_BIT_2": 1,
|
||||
"DKM_BIT_3": 2,
|
||||
"ADDR_UG_LITERA_1": 0x106,
|
||||
"ADDR_UG_LITERA_2": 0x108,
|
||||
"TEMP_THRESHOLD": 70,
|
||||
"POWER_THRESHOLD": 40,
|
||||
"TIMER_DELAY": 1.0
|
||||
}
|
||||
enum STATE_VAL { NONE = 0, GOOD = 1, ERROR = 2 }
|
||||
# Основные переменные
|
||||
var count_packet_1:int = 0
|
||||
var power_array_1: Array = []
|
||||
var count_packet_2:int = 0
|
||||
var power_array_1: Array = []
|
||||
var power_array_2: Array = []
|
||||
|
||||
enum STATE_VAL {
|
||||
NONE = 0,
|
||||
GOOD = 1,
|
||||
ERROR = 2 }
|
||||
var currecnt_unit: String
|
||||
var ug_work_1: int
|
||||
var ug_work_2: int
|
||||
# Флаги и таймеры
|
||||
var control_timer: Timer = Timer.new()
|
||||
var flag_timer_started: bool = false
|
||||
# Результаты контроля
|
||||
var _control_results: Dictionary = {
|
||||
"block_ip": false, # Проверка касет П1 и ИП МА2000
|
||||
"temperature": true, # Проверка температур УМ
|
||||
"dkm_1": false, # Проверка ДКМ
|
||||
"dkm_2": false, # Проверка ДКМ
|
||||
"power_ukp": false, # Мощность от УКП
|
||||
"fs_1": false, # Проверка ФС
|
||||
"fs_2": false,
|
||||
}
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
initialize_connections()
|
||||
setup_timer()
|
||||
set_default_state()
|
||||
|
||||
|
||||
func initialize_connections() -> void:
|
||||
signaller.conn(signaller.fs_update_state, Callable(self, 'on_fs_update_state'))
|
||||
var unit_key = settings.get_unit_key(get_meta('unit_name')[0])
|
||||
var unit_prd = network.units[unit_key]
|
||||
currecnt_unit = unit_prd.name
|
||||
unit_prd.connect('data_received', Callable(self, 'on_data_received'))
|
||||
unit_prd.connect('line_changed', Callable(self, 'on_line_changed'))
|
||||
set_default_state()
|
||||
self.add_child(timer_03)
|
||||
timer_03.connect('timeout', Callable(self, 'on_timer_03'))
|
||||
#on_timer_03(unit_key)
|
||||
|
||||
|
||||
func setup_timer() -> void:
|
||||
add_child(control_timer)
|
||||
control_timer.connect('timeout', Callable(self, 'on_stop_control'))
|
||||
control_timer.one_shot = true
|
||||
control_timer.wait_time = 10.0
|
||||
control_timer.start()
|
||||
|
||||
|
||||
func set_default_state() -> void:
|
||||
for group in get_tree().get_nodes_in_group('default_reset'):
|
||||
group.state = STATE_VAL.NONE
|
||||
|
||||
for group in get_tree().get_nodes_in_group('power_amplifier'):
|
||||
group.state = STATE_VAL.NONE
|
||||
|
||||
|
||||
func _enter_tree() -> void:
|
||||
$control_result.text = ''
|
||||
signaller.connect('режим_работа', Callable(self, 'on_mode_changed').bind(false))
|
||||
_on_control_fs(true)
|
||||
|
||||
|
||||
func _exit_tree() -> void:
|
||||
var unit_key = settings.get_unit_key(get_meta('unit_name')[0])
|
||||
var unit_prd = network.units[unit_key]
|
||||
var prd_module = prd.prd_dict[unit_prd.name]
|
||||
|
||||
prd_module.cmd_array.append([unit_prd.CmdCode.WRITE_ISA, [Constants.ADDR_UG_LITERA_1, ug_work_1, Constants.ADDR_UG_LITERA_2, ug_work_2]])
|
||||
|
||||
|
||||
func on_line_changed(unit_prd: Object) -> void:
|
||||
if not unit_prd.online:
|
||||
set_default_state()
|
||||
@@ -47,70 +96,32 @@ func on_data_received(unit_prd: Object) -> void:
|
||||
if not is_inside_tree():
|
||||
return
|
||||
|
||||
check_block_ip(unit_prd.status)
|
||||
check_temperature_um(unit_prd.status)
|
||||
var status = unit_prd.status
|
||||
check_block_ip(status)
|
||||
check_temperature_um(status)
|
||||
# Обработка данных ЭМС
|
||||
_process_ems_data(status)
|
||||
|
||||
if flag_timer_started:
|
||||
check_dkm(status, Constants.DKM_BIT_2)
|
||||
check_dkm(status, Constants.DKM_BIT_3)
|
||||
# Обработка мощности от УКП
|
||||
_process_ukp_power(status)
|
||||
|
||||
|
||||
# Обрабатывает данные ЭМС и обновляет UI панели
|
||||
func _process_ems_data(status: PackedByteArray) -> void:
|
||||
## Контроль ЭМС
|
||||
#_process_ems_data(unit_prd)
|
||||
var in_blank: int = status.decode_u16(Constants.IN_BLANK_PRD)
|
||||
var out_blank: int = status.decode_u16(Constants.OUT_BLANK_PRD)
|
||||
|
||||
var in_blank: int = unit_prd.status.decode_u16(IN_BLANK_PRD)
|
||||
var out_blank: int = unit_prd.status.decode_u16(OUT_BLANK_PRD)
|
||||
# Обновление фреймов для входных сигналов
|
||||
$Monitoring_panel/in_fs_1.frame = (in_blank >> Constants.CI_2_OT_FS) & 1
|
||||
$Monitoring_panel/in_fs_2.frame = (in_blank >> Constants.CI_3_OT_FS) & 1
|
||||
|
||||
$Monitoring_panel/in_fs_1.frame = (in_blank >> CI_2_OT_FS) & 1
|
||||
$Monitoring_panel/in_fs_2.frame = (in_blank >> CI_3_OT_FS) & 1
|
||||
|
||||
$Monitoring_panel/out_ems_1.frame = (out_blank >> CI_2_B_UF) & 1
|
||||
$Monitoring_panel/out_ems_2.frame = (out_blank >> CI_3_B_UF) & 1
|
||||
|
||||
## Мощность УМ от УКП 1
|
||||
if (in_blank >> CI_2_OT_FS) & 1:
|
||||
const bit_dkm_1: int = 1
|
||||
check_dkm(unit_prd.status, bit_dkm_1)
|
||||
|
||||
var arr_power_ukp_1: Array = []
|
||||
|
||||
if (unit_prd.status[0] >> 2) & 1:
|
||||
for i_power in range(6):
|
||||
var power_ukp_1 = unit_prd.status.decode_u16(POWER_UKP_1 + 2 * i_power)
|
||||
arr_power_ukp_1.append(power_ukp_1)
|
||||
|
||||
if count_packet_1 == 0:
|
||||
power_array_1 = arr_power_ukp_1
|
||||
else:
|
||||
for i in arr_power_ukp_1.size():
|
||||
if arr_power_ukp_1[i] > power_array_1[i]:
|
||||
power_array_1[i] = arr_power_ukp_1[i]
|
||||
|
||||
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
for i in 6:
|
||||
power_amplifier[i].value1 = '%d' % power_array_1[i]
|
||||
|
||||
count_packet_1 += 1
|
||||
|
||||
## Мощность УМ от УКП 2
|
||||
if (in_blank >> CI_3_OT_FS) & 1:
|
||||
const bit_dkm_2: int = 2
|
||||
check_dkm(unit_prd.status, bit_dkm_2)
|
||||
|
||||
var arr_power_ukp_2: Array = []
|
||||
|
||||
if (unit_prd.status[0] >> 2) & 1:
|
||||
for i_power in range(6):
|
||||
var power_ukp_2 = unit_prd.status.decode_u16(POWER_UKP_2 + 2 * i_power)
|
||||
arr_power_ukp_2.append(power_ukp_2)
|
||||
|
||||
if count_packet_2 == 0:
|
||||
power_array_2 = arr_power_ukp_2
|
||||
else:
|
||||
for i in arr_power_ukp_2.size():
|
||||
if arr_power_ukp_2[i] > power_array_2[i]:
|
||||
power_array_2[i] = arr_power_ukp_2[i]
|
||||
|
||||
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
for i in 6:
|
||||
power_amplifier[i+6].value1 = '%d' % power_array_2[i]
|
||||
|
||||
count_packet_2 += 1
|
||||
# Обновление фреймов для выходных сигналов ЭМС
|
||||
$Monitoring_panel/out_ems_1.frame = (out_blank >> Constants.CI_2_B_UF) & 1
|
||||
$Monitoring_panel/out_ems_2.frame = (out_blank >> Constants.CI_3_B_UF) & 1
|
||||
|
||||
|
||||
## Проверка касет П1 и ИП МА2000
|
||||
@@ -142,6 +153,14 @@ func check_block_ip(status_prd: PackedByteArray) -> void :
|
||||
$kasseta_P_1/ref_A20.state = STATE_VAL.NONE
|
||||
$kasseta_P_1/ref_A21.state = STATE_VAL.NONE
|
||||
|
||||
_control_results["block_ip"] = (
|
||||
$maa2000_A23.state == STATE_VAL.GOOD and
|
||||
$maa2000_A22.state == STATE_VAL.GOOD and
|
||||
$kasseta_P_1/ref_A19.state == STATE_VAL.GOOD and
|
||||
$kasseta_P_1/ref_A20.state == STATE_VAL.GOOD and
|
||||
$kasseta_P_1/ref_A21.state == STATE_VAL.GOOD
|
||||
)
|
||||
|
||||
|
||||
## Проверка температур УМ от УКП
|
||||
func check_temperature_um(status_prd: PackedByteArray) -> void:
|
||||
@@ -173,14 +192,155 @@ func check_dkm(status_prd: PackedByteArray, bit_dkm: int) -> void:
|
||||
const DKM: int = 28
|
||||
|
||||
var status_dkm = status_prd[DKM] >> bit_dkm & 1
|
||||
|
||||
if bit_dkm == 1:
|
||||
$dou2_A5.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
$kasseta_FS_ND/ref_A4.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
_control_results["dkm_1"] = status_dkm
|
||||
elif bit_dkm == 2:
|
||||
$dou2_A6.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
$dou3_A6.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
$kasseta_FS_ND/ref_A3.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
_control_results["dkm_2"] = status_dkm
|
||||
|
||||
|
||||
#func on_timer_03(unit_name):
|
||||
#print(unit_name)
|
||||
func _process_ukp_power(status: PackedByteArray) -> void:
|
||||
## Мощность УМ от УКП 1
|
||||
var arr_power_ukp_1: Array = []
|
||||
|
||||
if (status[0] >> 2) & 1:
|
||||
for i_power in range(6):
|
||||
var power_ukp_1 = status.decode_u16(Constants.POWER_UKP_1 + 2 * i_power)
|
||||
arr_power_ukp_1.append(power_ukp_1)
|
||||
|
||||
if count_packet_1 == 0:
|
||||
power_array_1 = arr_power_ukp_1
|
||||
else:
|
||||
for i in arr_power_ukp_1.size():
|
||||
if arr_power_ukp_1[i] > power_array_1[i]:
|
||||
power_array_1[i] = arr_power_ukp_1[i]
|
||||
|
||||
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
for i in 6:
|
||||
power_amplifier[i].value1 = '%d' % power_array_1[i]
|
||||
power_amplifier[i].state = STATE_VAL.GOOD if power_array_1[i] > 40 else STATE_VAL.ERROR
|
||||
count_packet_1 += 1
|
||||
|
||||
## Мощность УМ от УКП 2
|
||||
var arr_power_ukp_2: Array = []
|
||||
|
||||
if (status[0] >> 2) & 1:
|
||||
for i_power in range(6):
|
||||
var power_ukp_2 = status.decode_u16(Constants.POWER_UKP_2 + 2 * i_power)
|
||||
arr_power_ukp_2.append(power_ukp_2)
|
||||
|
||||
if count_packet_2 == 0:
|
||||
power_array_2 = arr_power_ukp_2
|
||||
else:
|
||||
for i in arr_power_ukp_2.size():
|
||||
if arr_power_ukp_2[i] > power_array_2[i]:
|
||||
power_array_2[i] = arr_power_ukp_2[i]
|
||||
|
||||
for i in 6:
|
||||
power_amplifier[i+6].value1 = '%d' % power_array_2[i]
|
||||
power_amplifier[i+6].state = STATE_VAL.GOOD if power_array_2[i] > 40 else STATE_VAL.ERROR
|
||||
|
||||
count_packet_2 += 1
|
||||
|
||||
_control_results["power_ukp"] = true
|
||||
for amp in power_amplifier:
|
||||
if amp.state != STATE_VAL.GOOD:
|
||||
_control_results["power_ukp"] = false
|
||||
break
|
||||
|
||||
|
||||
func _on_control_fs(mode: bool) -> void:
|
||||
var interfer_name: String
|
||||
var fs_arr: Array
|
||||
if mode:
|
||||
interfer_name = 'k1'
|
||||
fs_arr = [[90.0, 2450.0, 1500.0, 23]]
|
||||
else:
|
||||
interfer_name = 'off'
|
||||
fs_arr = [[90.0, 2450.0, 1500.0, 23]]
|
||||
signaller.emit_signal('interfer_init', interfer_name, fs_arr)
|
||||
|
||||
|
||||
func on_stop_control() -> void:
|
||||
print_debug('Отсановка контроля ПРД')
|
||||
_on_control_fs(false)
|
||||
on_control_result()
|
||||
|
||||
func on_fs_update_state(packet_type_7: Dictionary) -> void:
|
||||
var parts = currecnt_unit.split('-')
|
||||
var last_part = parts[-1] # Прибор
|
||||
|
||||
# Словарь для маппинга: ключ - номер FS, значение - целевая нода и условие прибора
|
||||
var fs_mapping = {
|
||||
4: { "node": $kasseta_FS_ND/ref_A1, "condition": last_part == '1н' },
|
||||
5: { "node": $kasseta_FS_ND/ref_A1, "condition": last_part == '4н' },
|
||||
6: { "node": $kasseta_FS_ND/ref_A1, "condition": last_part == '3н' },
|
||||
7: { "node": $kasseta_FS_ND/ref_A1, "condition": last_part == '2н' },
|
||||
8: { "node": $kasseta_FS_ND/ref_A2, "condition": last_part == '1н' },
|
||||
9: { "node": $kasseta_FS_ND/ref_A2, "condition": last_part == '4н' },
|
||||
10: { "node": $kasseta_FS_ND/ref_A2, "condition": last_part == '3н' },
|
||||
11: { "node": $kasseta_FS_ND/ref_A2, "condition": last_part == '2н' }
|
||||
}
|
||||
for fs in packet_type_7:
|
||||
if fs in fs_mapping and fs_mapping[fs]["condition"]:
|
||||
var data = packet_type_7[fs]
|
||||
var state = STATE_VAL.GOOD if data.isg == 1 else STATE_VAL.ERROR if data.isg == 0 else STATE_VAL.NONE
|
||||
fs_mapping[fs]["node"].state = state
|
||||
if fs < 8:
|
||||
_control_results["fs_1"] = (data.isg == 1)
|
||||
else:
|
||||
_control_results["fs_2"] = (data.isg == 1)
|
||||
if _control_results['fs_1'] and _control_results["fs_2"] and not flag_timer_started:
|
||||
on_ug_setting()
|
||||
control_timer.wait_time = Constants.TIMER_DELAY
|
||||
control_timer.start()
|
||||
flag_timer_started = true
|
||||
|
||||
|
||||
func on_ug_setting() -> void:
|
||||
var unit_key = settings.get_unit_key(get_meta('unit_name')[0])
|
||||
var unit_prd = network.units[unit_key]
|
||||
|
||||
if unit_prd.isa_ports.has(Constants.ADDR_UG_LITERA_1):
|
||||
ug_work_1 = unit_prd.isa_ports[Constants.ADDR_UG_LITERA_1]
|
||||
if unit_prd.isa_ports.has(Constants.ADDR_UG_LITERA_2):
|
||||
ug_work_2 = unit_prd.isa_ports[Constants.ADDR_UG_LITERA_2]
|
||||
|
||||
const dou = 0x3
|
||||
const att = 0x7
|
||||
var result = ((att & 0x07) << 3) | (dou & 0x07)
|
||||
|
||||
var prd_module = prd.prd_dict[unit_prd.name]
|
||||
prd_module.cmd_array.append([unit_prd.CmdCode.WRITE_ISA, [Constants.ADDR_UG_LITERA_1, result, Constants.ADDR_UG_LITERA_2, result, 0x120, 6666]])
|
||||
|
||||
|
||||
func on_mode_changed(in_tree: bool) -> void:
|
||||
if not in_tree:
|
||||
queue_free()
|
||||
|
||||
|
||||
func on_control_result() -> void:
|
||||
var result: bool = true
|
||||
|
||||
for key in _control_results:
|
||||
if not _control_results[key]:
|
||||
if key == 'fs_1':
|
||||
$kasseta_FS_ND/ref_A1.state = STATE_VAL.ERROR
|
||||
if key == 'fs_2':
|
||||
$kasseta_FS_ND/ref_A2.state = STATE_VAL.ERROR
|
||||
result = false
|
||||
print_debug('%s false' % key)
|
||||
|
||||
var parts = currecnt_unit.split('-')
|
||||
var last_part = parts[-1] # Прибор
|
||||
if result:
|
||||
$control_result.text = 'Прибор ПРД-%s исправен' % last_part
|
||||
$control_result.add_theme_color_override("font_color", Color.AQUAMARINE)
|
||||
else:
|
||||
$control_result.text = 'Прибор ПРД-%s неисправен' % last_part
|
||||
$control_result.add_theme_color_override("font_color", Color.CRIMSON)
|
||||
await get_tree().create_timer(Constants.TIMER_DELAY).timeout
|
||||
flag_timer_started = false
|
||||
|
||||
@@ -34,7 +34,7 @@ offset_bottom = 182.0
|
||||
fname = "Модуль ФС"
|
||||
rname = "A1"
|
||||
|
||||
[node name="ref_A3" parent="." instance=ExtResource("3_w4hiq")]
|
||||
[node name="ref_A3" parent="." groups=["default_reset"] instance=ExtResource("3_w4hiq")]
|
||||
offset_left = 105.0
|
||||
offset_top = 32.0
|
||||
offset_right = 155.0
|
||||
@@ -50,7 +50,7 @@ offset_bottom = 182.0
|
||||
fname = "Модуль ФС"
|
||||
rname = "A2"
|
||||
|
||||
[node name="ref_A4" parent="." instance=ExtResource("3_w4hiq")]
|
||||
[node name="ref_A4" parent="." groups=["default_reset"] instance=ExtResource("3_w4hiq")]
|
||||
offset_left = 205.0
|
||||
offset_top = 32.0
|
||||
offset_right = 255.0
|
||||
|
||||
@@ -44,7 +44,7 @@ offset_right = 15.0
|
||||
offset_bottom = 30.0
|
||||
script = ExtResource("1_c20s6")
|
||||
|
||||
[node name="maa2000_A22" parent="." instance=ExtResource("2_xpo4b")]
|
||||
[node name="maa2000_A22" parent="." groups=["default_reset"] instance=ExtResource("2_xpo4b")]
|
||||
layout_mode = 2
|
||||
offset_left = 485.0
|
||||
offset_top = 877.0
|
||||
@@ -53,7 +53,7 @@ offset_bottom = 949.0
|
||||
fname = "MAA2000"
|
||||
rname = "A22"
|
||||
|
||||
[node name="dou4_A5" parent="." instance=ExtResource("2_xpo4b")]
|
||||
[node name="dou4_A5" parent="." groups=["default_reset"] instance=ExtResource("2_xpo4b")]
|
||||
layout_mode = 2
|
||||
offset_left = 485.0
|
||||
offset_top = 812.0
|
||||
@@ -62,7 +62,7 @@ offset_bottom = 877.0
|
||||
fname = "ДОУ-4"
|
||||
rname = "A5"
|
||||
|
||||
[node name="maa2000_A23" parent="." instance=ExtResource("2_xpo4b")]
|
||||
[node name="maa2000_A23" parent="." groups=["default_reset"] instance=ExtResource("2_xpo4b")]
|
||||
layout_mode = 2
|
||||
offset_left = 8.0
|
||||
offset_top = 877.0
|
||||
@@ -71,7 +71,7 @@ offset_bottom = 949.0
|
||||
fname = "MAA2000"
|
||||
rname = "A23"
|
||||
|
||||
[node name="dou5_A6" parent="." instance=ExtResource("2_xpo4b")]
|
||||
[node name="dou5_A6" parent="." groups=["default_reset"] instance=ExtResource("2_xpo4b")]
|
||||
layout_mode = 2
|
||||
offset_left = 8.0
|
||||
offset_top = 812.0
|
||||
@@ -135,7 +135,7 @@ patch_margin_bottom = 16
|
||||
script = ExtResource("6_os4mt")
|
||||
fname = "Кассета П-1В"
|
||||
|
||||
[node name="ref_A19" parent="kasseta_P_1" instance=ExtResource("7_38u2b")]
|
||||
[node name="ref_A19" parent="kasseta_P_1" groups=["default_reset"] instance=ExtResource("7_38u2b")]
|
||||
offset_left = 9.0
|
||||
offset_top = 33.0
|
||||
offset_right = 59.0
|
||||
@@ -143,7 +143,7 @@ offset_bottom = 183.0
|
||||
fname = "ИП9-50"
|
||||
rname = "A19"
|
||||
|
||||
[node name="ref_A20" parent="kasseta_P_1" instance=ExtResource("7_38u2b")]
|
||||
[node name="ref_A20" parent="kasseta_P_1" groups=["default_reset"] instance=ExtResource("7_38u2b")]
|
||||
offset_left = 59.0
|
||||
offset_top = 33.0
|
||||
offset_right = 109.0
|
||||
@@ -151,7 +151,7 @@ offset_bottom = 183.0
|
||||
fname = "ИП9-50"
|
||||
rname = "A20"
|
||||
|
||||
[node name="ref_A21" parent="kasseta_P_1" instance=ExtResource("7_38u2b")]
|
||||
[node name="ref_A21" parent="kasseta_P_1" groups=["default_reset"] instance=ExtResource("7_38u2b")]
|
||||
offset_left = 109.0
|
||||
offset_top = 33.0
|
||||
offset_right = 159.0
|
||||
@@ -329,6 +329,7 @@ fname = "УМ1535А"
|
||||
rname = "A18"
|
||||
|
||||
[node name="Monitoring_panel" type="Panel" parent="."]
|
||||
visible = false
|
||||
layout_mode = 0
|
||||
theme_override_styles/panel = SubResource("StyleBoxTexture_vxfkm")
|
||||
|
||||
@@ -408,5 +409,6 @@ offset_right = 649.0
|
||||
offset_bottom = 1003.0
|
||||
theme_override_colors/font_color = Color(0.862745, 0.0784314, 0.235294, 1)
|
||||
theme_override_font_sizes/font_size = 28
|
||||
text = "Прибор ПРД- неисправен"
|
||||
horizontal_alignment = 1
|
||||
metadata/_edit_lock_ = true
|
||||
|
||||
@@ -6,8 +6,8 @@ const Constants = {
|
||||
"OUT_BLANK_PRD": 13,
|
||||
"CI_4_OT_FS": 11,
|
||||
"CI_5_OT_FS": 12,
|
||||
"CI_4_B_UF": 1,
|
||||
"CI_5_B_UF": 2,
|
||||
"CI_4_B_UF": 4,
|
||||
"CI_5_B_UF": 5,
|
||||
"POWER_UKP_1": 31,
|
||||
"POWER_UKP_2": 63,
|
||||
"DKM_BIT_3": 3,
|
||||
@@ -16,7 +16,7 @@ const Constants = {
|
||||
"ADDR_UG_LITERA_2": 0x108,
|
||||
"TEMP_THRESHOLD": 70,
|
||||
"POWER_THRESHOLD": 40,
|
||||
"TIMER_DELAY": 2.0
|
||||
"TIMER_DELAY": 1.0
|
||||
}
|
||||
enum STATE_VAL { NONE = 0, GOOD = 1, ERROR = 2 }
|
||||
# Основные переменные
|
||||
@@ -80,8 +80,8 @@ func _exit_tree() -> void:
|
||||
|
||||
|
||||
func set_default_state() -> void:
|
||||
for node in [$kasseta_P_1/ref_A19, $kasseta_P_1/ref_A20, $kasseta_P_1/ref_A21, $maa2000_A23, $maa2000_A22]:
|
||||
node.state = STATE_VAL.NONE
|
||||
for group in get_tree().get_nodes_in_group('default_reset'):
|
||||
group.state = STATE_VAL.NONE
|
||||
|
||||
for group in get_tree().get_nodes_in_group('power_amplifier'):
|
||||
group.state = STATE_VAL.NONE
|
||||
@@ -102,6 +102,7 @@ func on_data_received(unit_prd: Object) -> void:
|
||||
check_temperature_um(status)
|
||||
# Обработка данных ЭМС
|
||||
_process_ems_data(status)
|
||||
|
||||
if flag_timer_started:
|
||||
check_dkm(status, Constants.DKM_BIT_3)
|
||||
check_dkm(status, Constants.DKM_BIT_4)
|
||||
@@ -185,12 +186,12 @@ func check_dkm(status_prd: PackedByteArray, bit_dkm: int) -> void:
|
||||
const DKM: int = 28
|
||||
var status_dkm = status_prd[DKM] >> bit_dkm & 1
|
||||
if bit_dkm == Constants.DKM_BIT_3:
|
||||
$dou4_A5.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
$kasseta_FS_VD/ref_A6.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
_control_results["dkm_1"] = status_dkm
|
||||
elif bit_dkm == Constants.DKM_BIT_4:
|
||||
$dou5_A6.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
$kasseta_FS_VD/ref_A2.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
_control_results["dkm_1"] = status_dkm
|
||||
elif bit_dkm == Constants.DKM_BIT_4:
|
||||
$dou4_A5.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
$kasseta_FS_VD/ref_A6.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
_control_results["dkm_2"] = status_dkm
|
||||
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ patch_margin_right = 16
|
||||
patch_margin_bottom = 16
|
||||
script = ExtResource("2_mdnod")
|
||||
|
||||
[node name="ref_A26" parent="." instance=ExtResource("3_4a27g")]
|
||||
[node name="ref_A26" parent="." groups=["default_reset"] instance=ExtResource("3_4a27g")]
|
||||
offset_left = 10.0
|
||||
offset_top = 30.0
|
||||
offset_right = 60.0
|
||||
@@ -22,7 +22,7 @@ offset_bottom = 180.0
|
||||
fname = "ИП9-50"
|
||||
rname = "A22"
|
||||
|
||||
[node name="ref_A23" parent="." instance=ExtResource("3_4a27g")]
|
||||
[node name="ref_A23" parent="." groups=["default_reset"] instance=ExtResource("3_4a27g")]
|
||||
offset_left = 60.0
|
||||
offset_top = 30.0
|
||||
offset_right = 110.0
|
||||
|
||||
Reference in New Issue
Block a user