Merge remote-tracking branch 'sasha/master-prd'
This commit is contained in:
@@ -121,6 +121,7 @@ func on_interfer_new(ecm, table_index):
|
||||
|
||||
|
||||
func on_interfer_off(ecm, ecms, thrs, table_index):
|
||||
var sz = ecms.size()
|
||||
$table.remove_row(table_index[ecm.ispp])
|
||||
rehash(table_index)
|
||||
ecms.erase(ecm.ispp)
|
||||
@@ -132,6 +133,8 @@ func on_interfer_off(ecm, ecms, thrs, table_index):
|
||||
$table.get_selected_rows(sel_rows)
|
||||
if not len(sel_rows):
|
||||
signaller.emit_signal('interfer_selected', null)
|
||||
if sz != ecms.size():
|
||||
interfer.call_deferred('emit_signal', 'interfer_resized', ecms)
|
||||
|
||||
|
||||
## Перестраивает индекс таблицы. Вызывать при удалении строки
|
||||
|
||||
@@ -13,12 +13,13 @@ const constants_k: Dictionary = {
|
||||
'ADDR_UG_LITERA_3': 0x10A,
|
||||
'TEMP_THRESHOLD': 40,
|
||||
'POWER_THRESHOLD': 40,
|
||||
'TIMER_DELAY': 5.0,
|
||||
'RAY_DOU_NUM': 0x3,
|
||||
'ATT_UM_1': 0x0,
|
||||
'ATT_UM_6': 0x7,
|
||||
'ATT_UM_7': 0x7,
|
||||
'POWER_UM': 75,
|
||||
'POWER_UM': 85,
|
||||
'TIMER_DELAY': 5.0,
|
||||
'STATE_MASHINE_TIMER': 0.3,
|
||||
}
|
||||
# Конфигурация параметров для каждого прибора
|
||||
const PRIBOR_CONFIG := {
|
||||
@@ -45,18 +46,6 @@ var block_ip_config_k := {
|
||||
'ip12_50_2': [6, false],
|
||||
'ip5_25': [7, false],
|
||||
}
|
||||
# Проверка ДКМ
|
||||
var block_dkm_config_k: = {
|
||||
'dkm_1': false,
|
||||
'dkm_6': false,
|
||||
'dkm_7': false,
|
||||
}
|
||||
# Проверка ФС
|
||||
var block_fs_prd_config_k: = {
|
||||
'fs_1': false,
|
||||
'fs_6': false,
|
||||
'fs_7': false,
|
||||
}
|
||||
var block_kasseta_y5_prd_config_k: = {
|
||||
'yau07': false,
|
||||
'ems': false,
|
||||
@@ -65,25 +54,29 @@ var block_kasseta_y5_prd_config_k: = {
|
||||
'ukp2': false,
|
||||
}
|
||||
# Основные переменные
|
||||
var current_fs: int = 1
|
||||
var start_litera: int = 1
|
||||
var ug_work_1: int = 0
|
||||
var ug_work_2: int = 0
|
||||
var ug_work_3: int = 0
|
||||
var mashine_timer: Timer = Timer.new()
|
||||
var prd_k_module: Object
|
||||
var unit_prd_k: Object
|
||||
var control_prd_k: Object
|
||||
# Результаты контроля
|
||||
var control_results_k: Dictionary = {
|
||||
'block_ip': false, # Проверка касет П1 и ИП МА2000
|
||||
'temperature': true, # Проверка температур УМ
|
||||
'dkm': false,
|
||||
'temperature': true,
|
||||
'dkm_1': false,
|
||||
'dkm_6': false,
|
||||
'dkm_7': false,
|
||||
'dou_6': false,
|
||||
'dou_7': false, # Мощность от УКП
|
||||
'fs': false,
|
||||
'dou_7': false,
|
||||
'fs_1': 2,
|
||||
'fs_6': 2,
|
||||
'fs_7': 2,
|
||||
}
|
||||
|
||||
var test = preload('res://scripts/pribor-prd.gd')
|
||||
var control_prd_k: Object
|
||||
var test_control_k = preload('res://scripts/pribor-prd.gd')
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
@@ -97,11 +90,6 @@ func _ready() -> void:
|
||||
|
||||
func on_state_mashine() -> void:
|
||||
control_prd_k.state_control_machine()
|
||||
$um1535_A10.value0 = [10, 20, 30, 40, 50, 60]
|
||||
$um1535_A11.value0 = [60, 50, 40, 30, 20, 10]
|
||||
$um1535_A12.set_value0_by_index(5, 100)
|
||||
$um1535_A13.set_value0_by_index(2, 0)
|
||||
$um1535_A13.value1 = -20
|
||||
|
||||
|
||||
func initialize_connections() -> void:
|
||||
@@ -120,13 +108,11 @@ func initialize_connections() -> void:
|
||||
'prd_config': PRIBOR_CONFIG,
|
||||
'fs_params': FS_PARAMS,
|
||||
'block_ip_prd_config': block_ip_config_k,
|
||||
'block_dkm_prd_config': block_dkm_config_k,
|
||||
'block_fs_prd_config': block_fs_prd_config_k,
|
||||
'block_kasseta_y5_prd_config': block_kasseta_y5_prd_config_k,
|
||||
'control_results': control_results_k,
|
||||
'current_fs': current_fs,
|
||||
'current_litera': start_litera,
|
||||
}
|
||||
control_prd_k = test.TestPRD.new(init_data)
|
||||
control_prd_k = test_control_k.TestPRD.new(init_data)
|
||||
add_child(control_prd_k)
|
||||
control_prd_k.connect('control_is_over', Callable(self, 'on_control_result'))
|
||||
|
||||
@@ -134,7 +120,7 @@ func initialize_connections() -> void:
|
||||
func setup_timer() -> void:
|
||||
add_child(mashine_timer)
|
||||
mashine_timer.connect('timeout', Callable(self, 'on_state_mashine'))
|
||||
mashine_timer.wait_time = 0.5
|
||||
mashine_timer.wait_time = constants_k.STATE_MASHINE_TIMER
|
||||
mashine_timer.start()
|
||||
|
||||
|
||||
@@ -152,6 +138,10 @@ func _enter_tree() -> void:
|
||||
$control_result.text = 'Выполняется ...'
|
||||
$control_result.add_theme_color_override('font_color', Color.ALICE_BLUE)
|
||||
signaller.connect('режим_работа', Callable(self, 'on_mode_changed').bind(false))
|
||||
signaller.connect('режим_журнал', Callable(self, 'on_mode_changed').bind(false))
|
||||
signaller.connect('режим_эмс', Callable(self, 'on_mode_changed').bind(false))
|
||||
signaller.connect('режим_настройки', Callable(self, 'on_mode_changed').bind(false))
|
||||
signaller.connect('режим_контроль', Callable(self, 'on_mode_changed').bind(true))
|
||||
|
||||
|
||||
func _exit_tree() -> void:
|
||||
@@ -171,10 +161,32 @@ func on_mode_changed(in_tree: bool) -> void:
|
||||
prd_k_module.cmd_array.append([unit_prd_k.CmdCode.WRITE_ISA, [constants_k.ADDR_UG_LITERA_1, ug_work_1, constants_k.ADDR_UG_LITERA_2, ug_work_2, constants_k.ADDR_UG_LITERA_3, ug_work_3]])
|
||||
signaller.emit_signal('interfer_off_all')
|
||||
else:
|
||||
set_default_state()
|
||||
control_prd_k.state = control_prd_k.STATE_MASHINE.INIT
|
||||
mashine_timer.start()
|
||||
|
||||
|
||||
func on_control_result(result_dic: Dictionary) -> void:
|
||||
func power_fill(pow_dic: Dictionary) -> void:
|
||||
#if not control_prd_k.block_kasseta_y5_config.yau07 or not control_prd_k.block_kasseta_y5_config.ukp1 or not control_prd_k.block_kasseta_y5_config.ukp2:
|
||||
#return
|
||||
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
for i_powapm in power_amplifier:
|
||||
var powamp_meta: String = i_powapm.get_meta('um')
|
||||
var status = STATE_VAL.GOOD if pow_dic else STATE_VAL.NONE
|
||||
if pow_dic:
|
||||
if not pow_dic.has(powamp_meta):
|
||||
break
|
||||
if pow_dic[powamp_meta].size() < 6:
|
||||
status = STATE_VAL.ERROR
|
||||
else:
|
||||
i_powapm.value0 = pow_dic[powamp_meta]
|
||||
for i_p in pow_dic[powamp_meta]:
|
||||
if i_p < constants_k.POWER_THRESHOLD:
|
||||
status = STATE_VAL.ERROR
|
||||
i_powapm.state = status
|
||||
|
||||
|
||||
func on_control_result(result_dic: Dictionary, power_dic: Dictionary) -> void:
|
||||
mashine_timer.stop()
|
||||
block_kasseta_y5_prd_config_k = control_prd_k.block_kasseta_y5_config
|
||||
var nodes_y5: Array = get_tree().get_nodes_in_group('y-5')
|
||||
@@ -183,7 +195,7 @@ func on_control_result(result_dic: Dictionary) -> void:
|
||||
if block_kasseta_y5_prd_config_k.has(meta_y5):
|
||||
if block_kasseta_y5_prd_config_k['yau07'] == false:
|
||||
node_y5.state = STATE_VAL.ERROR if meta_y5 == 'yau07' else STATE_VAL.NONE
|
||||
return
|
||||
break
|
||||
node_y5.state = STATE_VAL.GOOD if block_kasseta_y5_prd_config_k[meta_y5] else STATE_VAL.ERROR
|
||||
|
||||
block_ip_config_k = control_prd_k.block_ip_config
|
||||
@@ -193,24 +205,30 @@ func on_control_result(result_dic: Dictionary) -> void:
|
||||
if block_ip_config_k.has(meta_ip) and block_kasseta_y5_prd_config_k.ug:
|
||||
power_supply.state = STATE_VAL.GOOD if block_ip_config_k[meta_ip][1] else STATE_VAL.ERROR
|
||||
|
||||
var fs_results: Dictionary = control_prd_k.block_fs_config
|
||||
var fs_nodes: Array = get_tree().get_nodes_in_group('fs_group')
|
||||
for f in fs_nodes:
|
||||
var fs_meta: String = f.get_meta('fs')
|
||||
if fs_results.has(fs_meta):
|
||||
var new_state = fs_results[fs_meta]
|
||||
if result_dic.has(fs_meta):
|
||||
var new_state = result_dic[fs_meta]
|
||||
f.state = new_state
|
||||
fs_results[fs_meta] = new_state
|
||||
result_dic[fs_meta] = new_state
|
||||
|
||||
var dkm: Dictionary = control_prd_k.block_dkm_config
|
||||
if fs_results.fs_1:
|
||||
$kasseta_fs_kd/ref_A2.state = STATE_VAL.GOOD if dkm.dkm_1 else STATE_VAL.ERROR
|
||||
if fs_results.fs_6:
|
||||
$kasseta_fs_kd/ref_A4.state = STATE_VAL.GOOD if dkm.dkm_6 else STATE_VAL.ERROR
|
||||
if result_dic.fs_1 == 1:
|
||||
$kasseta_fs_kd/ref_A2.state = STATE_VAL.GOOD if result_dic.dkm_1 else STATE_VAL.ERROR
|
||||
else:
|
||||
result_dic.fs_1 = false
|
||||
if result_dic.fs_6 == 1:
|
||||
$kasseta_fs_kd/ref_A4.state = STATE_VAL.GOOD if result_dic.dkm_6 else STATE_VAL.ERROR
|
||||
$dou6_A7.state = STATE_VAL.GOOD if result_dic.dou_6 else STATE_VAL.ERROR
|
||||
if fs_results.fs_7:
|
||||
$kasseta_fs_kd/ref_A7.state = STATE_VAL.GOOD if dkm.dkm_7 else STATE_VAL.ERROR
|
||||
else:
|
||||
result_dic.fs_6 = false
|
||||
if result_dic.fs_7 == 1:
|
||||
$kasseta_fs_kd/ref_A7.state = STATE_VAL.GOOD if result_dic.dkm_7 else STATE_VAL.ERROR
|
||||
$dou7_A8.state = STATE_VAL.GOOD if result_dic.dou_7 else STATE_VAL.ERROR
|
||||
else:
|
||||
result_dic.fs_7 = false
|
||||
|
||||
power_fill(power_dic)
|
||||
|
||||
var result = true
|
||||
for device in result_dic.values():
|
||||
@@ -220,7 +238,7 @@ func on_control_result(result_dic: Dictionary) -> void:
|
||||
var name_prd = control_prd_k.self_name
|
||||
if result:
|
||||
$control_result.text = 'Прибор ПРД-%s исправен' % name_prd
|
||||
$control_result.add_theme_color_override('font_color', Color.AQUAMARINE)
|
||||
$control_result.add_theme_color_override('font_color', Color.GREEN)
|
||||
else:
|
||||
$control_result.text = 'Прибор ПРД-%s неисправен' % name_prd
|
||||
$control_result.add_theme_color_override('font_color', Color.CRIMSON)
|
||||
$control_result.add_theme_color_override('font_color', Color.RED)
|
||||
|
||||
@@ -1,40 +1,14 @@
|
||||
[gd_scene load_steps=16 format=3 uid="uid://m5s87q7m66lj"]
|
||||
[gd_scene load_steps=10 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"]
|
||||
[ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="2_14h25"]
|
||||
[ext_resource type="PackedScene" uid="uid://cm5jd4gjrrpba" path="res://scenes/контроль/кассета-у-5-к.tscn" id="2_tb85r"]
|
||||
[ext_resource type="PackedScene" uid="uid://bcyxqni7gxvtq" path="res://scenes/контроль/блок-в.tscn" id="5_c7lv8"]
|
||||
[ext_resource type="PackedScene" uid="uid://bkxblfoj7ejv0" path="res://scenes/контроль/блок-а.tscn" id="6_fmhtx"]
|
||||
[ext_resource type="PackedScene" uid="uid://bmagw8nd0ulhj" path="res://scenes/pribor-prd-k/kasseta-fs-kd.tscn" id="7_ia27q"]
|
||||
[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
|
||||
@@ -120,10 +94,12 @@ offset_left = 485.0
|
||||
offset_top = 242.0
|
||||
offset_right = 652.0
|
||||
offset_bottom = 337.0
|
||||
value0 = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
|
||||
fname = "УМ1535Б"
|
||||
rname = "A10"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_1"
|
||||
|
||||
[node name="um1535_A11" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")]
|
||||
layout_mode = 0
|
||||
@@ -135,6 +111,7 @@ fname = "УМ1535Б"
|
||||
rname = "A11"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_2"
|
||||
|
||||
[node name="um1535_A12" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")]
|
||||
layout_mode = 0
|
||||
@@ -146,6 +123,7 @@ fname = "УМ1535Б"
|
||||
rname = "A12"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_3"
|
||||
|
||||
[node name="um1535_A13" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")]
|
||||
layout_mode = 0
|
||||
@@ -157,6 +135,7 @@ fname = "УМ1535Б"
|
||||
rname = "A13"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_4"
|
||||
|
||||
[node name="um1535_A14" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")]
|
||||
layout_mode = 0
|
||||
@@ -168,6 +147,7 @@ fname = "УМ1535Б"
|
||||
rname = "A14"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_5"
|
||||
|
||||
[node name="um1535_A15" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")]
|
||||
layout_mode = 0
|
||||
@@ -179,17 +159,19 @@ fname = "УМ1535Б"
|
||||
rname = "A15"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_6"
|
||||
|
||||
[node name="utm80_A9" parent="." groups=["power_amplifier"] instance=ExtResource("6_fmhtx")]
|
||||
[node name="utm80_A9" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")]
|
||||
layout_mode = 0
|
||||
offset_left = 485.0
|
||||
offset_top = 812.0
|
||||
offset_right = 652.0
|
||||
offset_bottom = 907.0
|
||||
value_name0 = "°C"
|
||||
value_name1 = "P, %"
|
||||
fname = "УТМ80"
|
||||
rname = "A9"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_7"
|
||||
|
||||
[node name="rm1620m_A16" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")]
|
||||
layout_mode = 0
|
||||
@@ -197,10 +179,11 @@ offset_left = 8.0
|
||||
offset_top = 242.0
|
||||
offset_right = 175.0
|
||||
offset_bottom = 337.0
|
||||
fname = "РМ16-20М"
|
||||
fname = "УМ1535Б"
|
||||
rname = "A16"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_8"
|
||||
|
||||
[node name="rm1620m_A17" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")]
|
||||
layout_mode = 0
|
||||
@@ -208,10 +191,11 @@ offset_left = 8.0
|
||||
offset_top = 337.0
|
||||
offset_right = 173.0
|
||||
offset_bottom = 432.0
|
||||
fname = "РМ16-20М"
|
||||
fname = "УМ1535Б"
|
||||
rname = "A17"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_9"
|
||||
|
||||
[node name="rm1620m_A18" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")]
|
||||
layout_mode = 0
|
||||
@@ -219,10 +203,11 @@ offset_left = 8.0
|
||||
offset_top = 432.0
|
||||
offset_right = 175.0
|
||||
offset_bottom = 527.0
|
||||
fname = "РМ16-20М"
|
||||
fname = "УМ1535Б"
|
||||
rname = "A18"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_10"
|
||||
|
||||
[node name="rm1620m_A19" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")]
|
||||
layout_mode = 0
|
||||
@@ -230,10 +215,11 @@ offset_left = 8.0
|
||||
offset_top = 527.0
|
||||
offset_right = 175.0
|
||||
offset_bottom = 622.0
|
||||
fname = "РМ16-20М"
|
||||
fname = "УМ1535Б"
|
||||
rname = "A19"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_11"
|
||||
|
||||
[node name="rm1620m_A20" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")]
|
||||
layout_mode = 0
|
||||
@@ -241,10 +227,11 @@ offset_left = 8.0
|
||||
offset_top = 622.0
|
||||
offset_right = 175.0
|
||||
offset_bottom = 717.0
|
||||
fname = "РМ16-20М"
|
||||
fname = "УМ1535Б"
|
||||
rname = "A20"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_12"
|
||||
|
||||
[node name="rm1620m_A21" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")]
|
||||
layout_mode = 0
|
||||
@@ -252,10 +239,11 @@ offset_left = 8.0
|
||||
offset_top = 717.0
|
||||
offset_right = 175.0
|
||||
offset_bottom = 812.0
|
||||
fname = "РМ16-20М"
|
||||
fname = "УМ1535Б"
|
||||
rname = "A21"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_13"
|
||||
|
||||
[node name="kasseta_fs_kd" parent="." instance=ExtResource("7_ia27q")]
|
||||
layout_mode = 0
|
||||
@@ -331,122 +319,6 @@ 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
|
||||
text = "Прибор ПРД- неисправен"
|
||||
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
|
||||
|
||||
@@ -12,11 +12,12 @@ const constants_n = {
|
||||
'ADDR_UG_LITERA_3': 0x10A,
|
||||
'TEMP_THRESHOLD': 70,
|
||||
'POWER_THRESHOLD': 40,
|
||||
'TIMER_DELAY': 5.0,
|
||||
'RAY_DOU_NUM': 0x3,
|
||||
'ATT_UM_2': 0x7,
|
||||
'ATT_UM_3': 0x7,
|
||||
'POWER_UM': 70,
|
||||
'TIMER_DELAY': 5.0,
|
||||
'STATE_MASHINE_TIMER': 0.3,
|
||||
}
|
||||
# Конфигурация параметров для каждого прибора
|
||||
const PRIBOR_CONFIG_N := {
|
||||
@@ -39,17 +40,6 @@ var block_ip_config_n:= {
|
||||
'ip12_50_1': [4, false],
|
||||
'ip5_25': [7, false],
|
||||
}
|
||||
# Проверка ДКМ
|
||||
var block_dkm_config_n: = {
|
||||
'dkm_2': false,
|
||||
'dkm_3': false,
|
||||
}
|
||||
# Проверка ФС
|
||||
var block_fs_prd_config_n: = {
|
||||
'fs_2': false,
|
||||
'fs_3': false,
|
||||
}
|
||||
|
||||
var block_kasseta_y5_prd_config_n: = {
|
||||
'yau07': false,
|
||||
'ems': false,
|
||||
@@ -59,7 +49,7 @@ var block_kasseta_y5_prd_config_n: = {
|
||||
}
|
||||
|
||||
# Основные переменные
|
||||
var current_fs: int = 2
|
||||
var start_litera: int = 2
|
||||
var ug_work_1: int = 0
|
||||
var ug_work_2: int = 0
|
||||
# Флаги и таймеры
|
||||
@@ -71,12 +61,14 @@ var control_prd_n: Object
|
||||
var control_results_n: Dictionary = {
|
||||
'block_ip': false, # Проверка касет П1 и ИП МА2000
|
||||
'temperature': true, # Проверка температур УМ
|
||||
'dkm': false,
|
||||
'dkm_2': false,
|
||||
'dkm_3': false,
|
||||
'dou_2': false,
|
||||
'dou_3': false,
|
||||
'fs': false,
|
||||
'fs_2': 2,
|
||||
'fs_3': 2,
|
||||
}
|
||||
var test = preload('res://scripts/pribor-prd.gd')
|
||||
var test_control_n = preload('res://scripts/pribor-prd.gd')
|
||||
|
||||
|
||||
################################
|
||||
@@ -109,13 +101,11 @@ func initialize_connections() -> void:
|
||||
'prd_config': PRIBOR_CONFIG_N,
|
||||
'fs_params': FS_PARAMS_N,
|
||||
'block_ip_prd_config': block_ip_config_n,
|
||||
'block_dkm_prd_config': block_dkm_config_n,
|
||||
'block_fs_prd_config': block_fs_prd_config_n,
|
||||
'block_kasseta_y5_prd_config': block_kasseta_y5_prd_config_n,
|
||||
'control_results': control_results_n,
|
||||
'current_fs': current_fs,
|
||||
'current_litera': start_litera,
|
||||
}
|
||||
control_prd_n = test.TestPRD.new(init_data)
|
||||
control_prd_n = test_control_n.TestPRD.new(init_data)
|
||||
add_child(control_prd_n)
|
||||
control_prd_n.connect('control_is_over', Callable(self, 'on_control_result'))
|
||||
|
||||
@@ -123,7 +113,7 @@ func initialize_connections() -> void:
|
||||
func setup_timer() -> void:
|
||||
add_child(mashine_timer)
|
||||
mashine_timer.connect('timeout', Callable(self, 'on_state_mashine'))
|
||||
mashine_timer.wait_time = 0.5
|
||||
mashine_timer.wait_time = constants_n.STATE_MASHINE_TIMER
|
||||
mashine_timer.start()
|
||||
|
||||
|
||||
@@ -141,6 +131,10 @@ func _enter_tree() -> void:
|
||||
$control_result.text = 'Выполняется ...'
|
||||
$control_result.add_theme_color_override('font_color', Color.ALICE_BLUE)
|
||||
signaller.connect('режим_работа', Callable(self, 'on_mode_changed').bind(false))
|
||||
signaller.connect('режим_журнал', Callable(self, 'on_mode_changed').bind(false))
|
||||
signaller.connect('режим_эмс', Callable(self, 'on_mode_changed').bind(false))
|
||||
signaller.connect('режим_настройки', Callable(self, 'on_mode_changed').bind(false))
|
||||
signaller.connect('режим_контроль', Callable(self, 'on_mode_changed').bind(true))
|
||||
|
||||
|
||||
func _exit_tree() -> void:
|
||||
@@ -160,10 +154,29 @@ func on_mode_changed(in_tree: bool) -> void:
|
||||
signaller.emit_signal('interfer_off_all')
|
||||
prd_n_module.cmd_array.append([unit_prd_n.CmdCode.WRITE_ISA, [constants_n.ADDR_UG_LITERA_1, ug_work_1, constants_n.ADDR_UG_LITERA_2, ug_work_2]])
|
||||
else:
|
||||
set_default_state()
|
||||
control_prd_n.state = control_prd_n.STATE_MASHINE.INIT
|
||||
mashine_timer.start()
|
||||
|
||||
|
||||
func on_control_result(result_dic: Dictionary) -> void:
|
||||
func power_fill(pow_dic: Dictionary) -> void:
|
||||
#if not control_prd_n.block_kasseta_y5_config.yau07 or not control_prd_n.block_kasseta_y5_config.ukp1 or not control_prd_n.block_kasseta_y5_config.ukp2:
|
||||
#return
|
||||
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
for i_powapm in power_amplifier:
|
||||
var powamp_meta: String = i_powapm.get_meta('um')
|
||||
var status = STATE_VAL.GOOD if pow_dic else STATE_VAL.NONE
|
||||
if pow_dic[powamp_meta].size() < 6:
|
||||
status = STATE_VAL.ERROR
|
||||
else:
|
||||
i_powapm.value0 = pow_dic[powamp_meta]
|
||||
for i_p in pow_dic[powamp_meta]:
|
||||
if i_p < constants_n.POWER_THRESHOLD:
|
||||
status = STATE_VAL.ERROR
|
||||
i_powapm.state = status
|
||||
|
||||
|
||||
func on_control_result(result_dic: Dictionary, power_dic: Dictionary) -> void:
|
||||
mashine_timer.stop()
|
||||
block_kasseta_y5_prd_config_n = control_prd_n.block_kasseta_y5_config
|
||||
var nodes_y5: Array = get_tree().get_nodes_in_group('y-5')
|
||||
@@ -172,7 +185,7 @@ func on_control_result(result_dic: Dictionary) -> void:
|
||||
if block_kasseta_y5_prd_config_n.has(meta_y5):
|
||||
if block_kasseta_y5_prd_config_n['yau07'] == false:
|
||||
node_y5.state = STATE_VAL.ERROR if meta_y5 == 'yau07' else STATE_VAL.NONE
|
||||
return
|
||||
break
|
||||
node_y5.state = STATE_VAL.GOOD if block_kasseta_y5_prd_config_n[meta_y5] else STATE_VAL.ERROR
|
||||
|
||||
block_ip_config_n = control_prd_n.block_ip_config
|
||||
@@ -182,22 +195,26 @@ func on_control_result(result_dic: Dictionary) -> void:
|
||||
if block_ip_config_n.has(meta_ip) and block_kasseta_y5_prd_config_n.ug:
|
||||
power_supply.state = STATE_VAL.GOOD if block_ip_config_n[meta_ip][1] else STATE_VAL.ERROR
|
||||
|
||||
var fs_results: Dictionary = control_prd_n.block_fs_config
|
||||
var fs_nodes: Array = get_tree().get_nodes_in_group('fs_group')
|
||||
for f in fs_nodes:
|
||||
var fs_meta: String = f.get_meta('fs')
|
||||
if fs_results.has(fs_meta):
|
||||
var new_state = fs_results[fs_meta]
|
||||
if result_dic.has(fs_meta):
|
||||
var new_state = result_dic[fs_meta]
|
||||
f.state = new_state
|
||||
fs_results[fs_meta] = new_state
|
||||
result_dic[fs_meta] = new_state
|
||||
|
||||
var dkm: Dictionary = control_prd_n.block_dkm_config
|
||||
if fs_results.fs_2:
|
||||
$kasseta_FS_ND/ref_A4.state = STATE_VAL.GOOD if dkm.dkm_2 else STATE_VAL.ERROR
|
||||
if result_dic.fs_2 == 1:
|
||||
$kasseta_FS_ND/ref_A4.state = STATE_VAL.GOOD if result_dic.dkm_2 else STATE_VAL.ERROR
|
||||
$dou2_A5.state = STATE_VAL.GOOD if result_dic.dou_2 else STATE_VAL.ERROR
|
||||
if fs_results.fs_3:
|
||||
$kasseta_FS_ND/ref_A3.state = STATE_VAL.GOOD if dkm.dkm_3 else STATE_VAL.ERROR
|
||||
else:
|
||||
result_dic.fs_2 = false
|
||||
if result_dic.fs_3 == 1:
|
||||
$kasseta_FS_ND/ref_A3.state = STATE_VAL.GOOD if result_dic.dkm_3 else STATE_VAL.ERROR
|
||||
$dou3_A6.state = STATE_VAL.GOOD if result_dic.dou_3 else STATE_VAL.ERROR
|
||||
else:
|
||||
result_dic.fs_3 = false
|
||||
|
||||
power_fill(power_dic)
|
||||
|
||||
var result = true
|
||||
for device in result_dic.values():
|
||||
@@ -207,7 +224,7 @@ func on_control_result(result_dic: Dictionary) -> void:
|
||||
var name_prd = control_prd_n.self_name
|
||||
if result:
|
||||
$control_result.text = 'Прибор ПРД-%s исправен' % name_prd
|
||||
$control_result.add_theme_color_override('font_color', Color.AQUAMARINE)
|
||||
$control_result.add_theme_color_override('font_color', Color.GREEN)
|
||||
else:
|
||||
$control_result.text = 'Прибор ПРД-%s неисправен' % name_prd
|
||||
$control_result.add_theme_color_override('font_color', Color.CRIMSON)
|
||||
$control_result.add_theme_color_override('font_color', Color.RED)
|
||||
|
||||
@@ -1,37 +1,12 @@
|
||||
[gd_scene load_steps=13 format=3 uid="uid://dnuexoef2nnv5"]
|
||||
[gd_scene load_steps=8 format=3 uid="uid://dnuexoef2nnv5"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cto2r4ipew65m" path="res://scenes/pribor-prd-n/pribor-prd-n.gd" id="1_bnnv3"]
|
||||
[ext_resource type="PackedScene" uid="uid://d3iqb5e4g81m5" path="res://scenes/контроль/элемент-г.tscn" id="2_is25t"]
|
||||
[ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="3_meukj"]
|
||||
[ext_resource type="PackedScene" uid="uid://bk1655p4e8y4u" path="res://scenes/контроль/кассета-у-5-нв.tscn" id="4_xkifg"]
|
||||
[ext_resource type="Script" uid="uid://crpedygm3gohi" path="res://scenes/контроль/кассета.gd" id="6_b5wvk"]
|
||||
[ext_resource type="PackedScene" uid="uid://bcyxqni7gxvtq" path="res://scenes/контроль/блок-в.tscn" id="7_bnnv3"]
|
||||
[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/элемент-в.tscn" id="7_eoqf2"]
|
||||
[ext_resource type="PackedScene" uid="uid://bkxblfoj7ejv0" path="res://scenes/контроль/блок-а.tscn" id="8_sia5h"]
|
||||
[ext_resource type="Texture2D" uid="uid://belwchvdktrw0" path="res://data/эмс-бланк.png" id="9_k1x0o"]
|
||||
[ext_resource type="Texture2D" uid="uid://bwddxs24es81u" path="res://data/эмс-бланк-пост.png" id="10_7dcjd"]
|
||||
[ext_resource type="Texture2D" uid="uid://pfoscstbm025" path="res://data/эмс-бланк-перем.png" id="11_ius1v"]
|
||||
|
||||
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_bnnv3"]
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_xkifg"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("9_k1x0o")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("10_7dcjd")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("11_ius1v")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": null
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
"speed": 5.0
|
||||
}]
|
||||
|
||||
[node name="pribor_prd_n" type="Control"]
|
||||
layout_mode = 3
|
||||
@@ -142,7 +117,7 @@ offset_left = 55.0
|
||||
offset_top = 32.0
|
||||
offset_right = 105.0
|
||||
offset_bottom = 182.0
|
||||
fname = "Блок ФС-2"
|
||||
fname = "Блок ФС-3"
|
||||
rname = "A3"
|
||||
|
||||
[node name="ref_A1" parent="kasseta_FS_ND" groups=["default_reset", "fs_group"] instance=ExtResource("7_eoqf2")]
|
||||
@@ -168,7 +143,7 @@ offset_left = 205.0
|
||||
offset_top = 32.0
|
||||
offset_right = 255.0
|
||||
offset_bottom = 182.0
|
||||
fname = "Блок ФС-3"
|
||||
fname = "Блок ФС-2"
|
||||
rname = "A4"
|
||||
|
||||
[node name="kasseta_P_1" type="NinePatchRect" parent="."]
|
||||
@@ -223,234 +198,149 @@ text = "Кассета П-1"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="um1535_A7" parent="." groups=["power_amplifier"] instance=ExtResource("8_sia5h")]
|
||||
[node name="um1535_A7" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
|
||||
layout_mode = 0
|
||||
offset_left = 485.0
|
||||
offset_top = 242.0
|
||||
offset_right = 652.0
|
||||
offset_bottom = 337.0
|
||||
value_name0 = "°C"
|
||||
value_name1 = "P, %"
|
||||
name_min_size0 = Vector2i(35, 20)
|
||||
name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535А"
|
||||
fname = "УМ1535Б"
|
||||
rname = "A7"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_1"
|
||||
|
||||
[node name="um1535_A8" parent="." groups=["power_amplifier"] instance=ExtResource("8_sia5h")]
|
||||
[node name="um1535_A8" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
|
||||
layout_mode = 0
|
||||
offset_left = 485.0
|
||||
offset_top = 337.0
|
||||
offset_right = 652.0
|
||||
offset_bottom = 432.0
|
||||
value_name0 = "°C"
|
||||
value_name1 = "P, %"
|
||||
name_min_size0 = Vector2i(35, 20)
|
||||
name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535А"
|
||||
rname = "A8"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_2"
|
||||
|
||||
[node name="um1535_A9" parent="." groups=["power_amplifier"] instance=ExtResource("8_sia5h")]
|
||||
[node name="um1535_A9" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
|
||||
layout_mode = 0
|
||||
offset_left = 485.0
|
||||
offset_top = 432.0
|
||||
offset_right = 652.0
|
||||
offset_bottom = 527.0
|
||||
value_name0 = "°C"
|
||||
value_name1 = "P, %"
|
||||
name_min_size0 = Vector2i(35, 20)
|
||||
name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535А"
|
||||
rname = "A9"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_3"
|
||||
|
||||
[node name="um1535_A10" parent="." groups=["power_amplifier"] instance=ExtResource("8_sia5h")]
|
||||
[node name="um1535_A10" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
|
||||
layout_mode = 0
|
||||
offset_left = 485.0
|
||||
offset_top = 527.0
|
||||
offset_right = 652.0
|
||||
offset_bottom = 622.0
|
||||
value_name0 = "°C"
|
||||
value_name1 = "P, %"
|
||||
name_min_size0 = Vector2i(35, 20)
|
||||
name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535А"
|
||||
rname = "A10"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_4"
|
||||
|
||||
[node name="um1535_A11" parent="." groups=["power_amplifier"] instance=ExtResource("8_sia5h")]
|
||||
[node name="um1535_A11" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
|
||||
layout_mode = 0
|
||||
offset_left = 485.0
|
||||
offset_top = 622.0
|
||||
offset_right = 652.0
|
||||
offset_bottom = 717.0
|
||||
value_name0 = "°C"
|
||||
value_name1 = "P, %"
|
||||
name_min_size0 = Vector2i(35, 20)
|
||||
name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535А"
|
||||
rname = "A11"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_5"
|
||||
|
||||
[node name="um1535_A12" parent="." groups=["power_amplifier"] instance=ExtResource("8_sia5h")]
|
||||
[node name="um1535_A12" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
|
||||
layout_mode = 0
|
||||
offset_left = 485.0
|
||||
offset_top = 717.0
|
||||
offset_right = 652.0
|
||||
offset_bottom = 812.0
|
||||
value_name0 = "°C"
|
||||
value_name1 = "P, %"
|
||||
name_min_size0 = Vector2i(35, 20)
|
||||
name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535А"
|
||||
rname = "A12"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_6"
|
||||
|
||||
[node name="um1535_A13" parent="." groups=["power_amplifier"] instance=ExtResource("8_sia5h")]
|
||||
[node name="um1535_A13" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
|
||||
layout_mode = 0
|
||||
offset_left = 8.0
|
||||
offset_top = 242.0
|
||||
offset_right = 175.0
|
||||
offset_bottom = 337.0
|
||||
value_name0 = "°C"
|
||||
value_name1 = "P, %"
|
||||
name_min_size0 = Vector2i(35, 20)
|
||||
name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535А"
|
||||
rname = "A13"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_7"
|
||||
|
||||
[node name="um1535_A14" parent="." groups=["power_amplifier"] instance=ExtResource("8_sia5h")]
|
||||
[node name="um1535_A14" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
|
||||
layout_mode = 0
|
||||
offset_left = 8.0
|
||||
offset_top = 337.0
|
||||
offset_right = 175.0
|
||||
offset_bottom = 432.0
|
||||
value_name0 = "°C"
|
||||
value_name1 = "P, %"
|
||||
name_min_size0 = Vector2i(35, 20)
|
||||
name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535А"
|
||||
rname = "A14"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_8"
|
||||
|
||||
[node name="um1535_A15" parent="." groups=["power_amplifier"] instance=ExtResource("8_sia5h")]
|
||||
[node name="um1535_A15" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
|
||||
layout_mode = 0
|
||||
offset_left = 8.0
|
||||
offset_top = 432.0
|
||||
offset_right = 175.0
|
||||
offset_bottom = 527.0
|
||||
value_name0 = "°C"
|
||||
value_name1 = "P, %"
|
||||
name_min_size0 = Vector2i(35, 20)
|
||||
name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535А"
|
||||
rname = "A15"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_9"
|
||||
|
||||
[node name="um1535_A16" parent="." groups=["power_amplifier"] instance=ExtResource("8_sia5h")]
|
||||
[node name="um1535_A16" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
|
||||
layout_mode = 0
|
||||
offset_left = 8.0
|
||||
offset_top = 527.0
|
||||
offset_right = 175.0
|
||||
offset_bottom = 622.0
|
||||
value_name0 = "°C"
|
||||
value_name1 = "P, %"
|
||||
name_min_size0 = Vector2i(35, 20)
|
||||
name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535А"
|
||||
rname = "A16"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_10"
|
||||
|
||||
[node name="um1535_A17" parent="." groups=["power_amplifier"] instance=ExtResource("8_sia5h")]
|
||||
[node name="um1535_A17" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
|
||||
layout_mode = 0
|
||||
offset_left = 8.0
|
||||
offset_top = 622.0
|
||||
offset_right = 175.0
|
||||
offset_bottom = 717.0
|
||||
value_name0 = "°C"
|
||||
value_name1 = "P, %"
|
||||
name_min_size0 = Vector2i(35, 20)
|
||||
name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535А"
|
||||
rname = "A17"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_11"
|
||||
|
||||
[node name="um1535_A18" parent="." groups=["power_amplifier"] instance=ExtResource("8_sia5h")]
|
||||
[node name="um1535_A18" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")]
|
||||
layout_mode = 0
|
||||
offset_left = 8.0
|
||||
offset_top = 717.0
|
||||
offset_right = 175.0
|
||||
offset_bottom = 812.0
|
||||
value_name0 = "°C"
|
||||
value_name1 = "P, %"
|
||||
name_min_size0 = Vector2i(35, 20)
|
||||
name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535А"
|
||||
rname = "A18"
|
||||
|
||||
[node name="Monitoring_panel" type="Panel" parent="."]
|
||||
visible = false
|
||||
layout_mode = 0
|
||||
theme_override_styles/panel = SubResource("StyleBoxTexture_bnnv3")
|
||||
|
||||
[node name="in_fs_1" type="AnimatedSprite2D" parent="Monitoring_panel"]
|
||||
position = Vector2(454, 577)
|
||||
scale = Vector2(1.2, 1.2)
|
||||
sprite_frames = SubResource("SpriteFrames_xkifg")
|
||||
|
||||
[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(207, 577)
|
||||
scale = Vector2(1.2, 1.2)
|
||||
sprite_frames = SubResource("SpriteFrames_xkifg")
|
||||
|
||||
[node name="in_fs_2" 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 2"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="out_ems_1" type="AnimatedSprite2D" parent="Monitoring_panel"]
|
||||
position = Vector2(454, 465)
|
||||
scale = Vector2(1.2, 1.2)
|
||||
sprite_frames = SubResource("SpriteFrames_xkifg")
|
||||
|
||||
[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(207, 465)
|
||||
scale = Vector2(1.2, 1.2)
|
||||
sprite_frames = SubResource("SpriteFrames_xkifg")
|
||||
|
||||
[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
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_12"
|
||||
|
||||
[node name="control_result" type="Label" parent="."]
|
||||
layout_mode = 0
|
||||
@@ -458,7 +348,5 @@ 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
|
||||
|
||||
@@ -12,11 +12,12 @@ const constants_v = {
|
||||
'ADDR_UG_LITERA_3': 0x10A,
|
||||
'TEMP_THRESHOLD': 70,
|
||||
'POWER_THRESHOLD': 40,
|
||||
'TIMER_DELAY': 5.0,
|
||||
'RAY_DOU_NUM': 0x3,
|
||||
'ATT_UM_4': 0x7,
|
||||
'ATT_UM_5': 0x7,
|
||||
'POWER_UM': 70,
|
||||
'POWER_UM': 75,
|
||||
'TIMER_DELAY': 5.0,
|
||||
'STATE_MASHINE_TIMER': 0.3,
|
||||
}
|
||||
# Конфигурация параметров для каждого прибора
|
||||
const PRIBOR_CONFIG_V := {
|
||||
@@ -27,7 +28,7 @@ const PRIBOR_CONFIG_V := {
|
||||
}
|
||||
# Конфигурация частот и ширин для каждого ФС
|
||||
const FS_PARAMS_V := {
|
||||
4: {'freq': 1227.0, 'width': 110.0},
|
||||
4: {'freq': 1227.0, 'width': 100.0},
|
||||
5: {'freq': 1575.0, 'width': 110.0},
|
||||
}
|
||||
enum STATE_VAL { NONE = 0, GOOD = 1, ERROR = 2 }
|
||||
@@ -39,16 +40,6 @@ var block_ip_config_v := {
|
||||
'ip12_50_1': [4, false],
|
||||
'ip5_25': [7, false],
|
||||
}
|
||||
# Проверка ДКМ
|
||||
var block_dkm_config_v: = {
|
||||
'dkm_4': false,
|
||||
'dkm_5': false,
|
||||
}
|
||||
# Проверка ФС
|
||||
var block_fs_prd_config_v: = {
|
||||
'fs_4': false,
|
||||
'fs_5': false,
|
||||
}
|
||||
var block_kasseta_y5_prd_config_v: = {
|
||||
'yau07': false,
|
||||
'ems': false,
|
||||
@@ -58,7 +49,7 @@ var block_kasseta_y5_prd_config_v: = {
|
||||
}
|
||||
|
||||
# Основные переменные
|
||||
var current_fs: int = 4
|
||||
var start_litera: int = 4
|
||||
var ug_work_1: int = 0
|
||||
var ug_work_2: int = 0
|
||||
# Флаги и таймеры
|
||||
@@ -70,12 +61,14 @@ var control_prd_v: Object
|
||||
var control_results_v: Dictionary = {
|
||||
'block_ip': false, # Проверка касет П1 и ИП МА2000
|
||||
'temperature': true, # Проверка температур УМ
|
||||
'dkm': false,
|
||||
'dkm_4': false,
|
||||
'dkm_5': false,
|
||||
'dou_4': false,
|
||||
'dou_5': false,
|
||||
'fs': false,
|
||||
'fs_4': 2,
|
||||
'fs_5': 2,
|
||||
}
|
||||
var test = preload('res://scripts/pribor-prd.gd')
|
||||
var test_control_v = preload('res://scripts/pribor-prd.gd')
|
||||
|
||||
|
||||
func on_state_mashine() -> void:
|
||||
@@ -107,13 +100,11 @@ func initialize_connections() -> void:
|
||||
'prd_config': PRIBOR_CONFIG_V,
|
||||
'fs_params': FS_PARAMS_V,
|
||||
'block_ip_prd_config': block_ip_config_v,
|
||||
'block_dkm_prd_config': block_dkm_config_v,
|
||||
'block_fs_prd_config': block_fs_prd_config_v,
|
||||
'block_kasseta_y5_prd_config': block_kasseta_y5_prd_config_v,
|
||||
'control_results': control_results_v,
|
||||
'current_fs': current_fs,
|
||||
'current_litera': start_litera,
|
||||
}
|
||||
control_prd_v = test.TestPRD.new(init_data)
|
||||
control_prd_v = test_control_v.TestPRD.new(init_data)
|
||||
add_child(control_prd_v)
|
||||
control_prd_v.connect('control_is_over', Callable(self, 'on_control_result'))
|
||||
|
||||
@@ -121,7 +112,7 @@ func initialize_connections() -> void:
|
||||
func setup_timer() -> void:
|
||||
add_child(mashine_timer)
|
||||
mashine_timer.connect('timeout', Callable(self, 'on_state_mashine'))
|
||||
mashine_timer.wait_time = 0.5
|
||||
mashine_timer.wait_time = constants_v.STATE_MASHINE_TIMER
|
||||
mashine_timer.start()
|
||||
|
||||
|
||||
@@ -139,6 +130,11 @@ func _enter_tree() -> void:
|
||||
$control_result.text = 'Выполняется ...'
|
||||
$control_result.add_theme_color_override('font_color', Color.ALICE_BLUE)
|
||||
signaller.connect('режим_работа', Callable(self, 'on_mode_changed').bind(false))
|
||||
signaller.connect('режим_журнал', Callable(self, 'on_mode_changed').bind(false))
|
||||
signaller.connect('режим_эмс', Callable(self, 'on_mode_changed').bind(false))
|
||||
signaller.connect('режим_настройки', Callable(self, 'on_mode_changed').bind(false))
|
||||
signaller.connect('режим_контроль', Callable(self, 'on_mode_changed').bind(true))
|
||||
|
||||
|
||||
|
||||
func _exit_tree() -> void:
|
||||
@@ -158,10 +154,29 @@ func on_mode_changed(in_tree: bool) -> void:
|
||||
prd_v_module.cmd_array.append([unit_prd_v.CmdCode.WRITE_ISA, [constants_v.ADDR_UG_LITERA_1, ug_work_1, constants_v.ADDR_UG_LITERA_2, ug_work_2]])
|
||||
signaller.emit_signal('interfer_off_all')
|
||||
else:
|
||||
set_default_state()
|
||||
control_prd_v.state = control_prd_v.STATE_MASHINE.INIT
|
||||
mashine_timer.start()
|
||||
|
||||
|
||||
func on_control_result(result_dic: Dictionary) -> void:
|
||||
func power_fill(pow_dic: Dictionary) -> void:
|
||||
#if not control_prd_v.block_kasseta_y5_config.yau07 or not control_prd_v.block_kasseta_y5_config.ukp1 or not control_prd_v.block_kasseta_y5_config.ukp2:
|
||||
#return
|
||||
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
for i_powapm in power_amplifier:
|
||||
var powamp_meta: String = i_powapm.get_meta('um')
|
||||
var status = STATE_VAL.GOOD if pow_dic else STATE_VAL.NONE
|
||||
if pow_dic[powamp_meta].size() < 6:
|
||||
status = STATE_VAL.ERROR
|
||||
else:
|
||||
i_powapm.value0 = pow_dic[powamp_meta]
|
||||
for i_p in pow_dic[powamp_meta]:
|
||||
if i_p < constants_v.POWER_THRESHOLD:
|
||||
status = STATE_VAL.ERROR
|
||||
i_powapm.state = status
|
||||
|
||||
|
||||
func on_control_result(result_dic: Dictionary, power_dic: Dictionary) -> void:
|
||||
mashine_timer.stop()
|
||||
block_kasseta_y5_prd_config_v = control_prd_v.block_kasseta_y5_config
|
||||
var nodes_y5: Array = get_tree().get_nodes_in_group('y-5')
|
||||
@@ -170,7 +185,7 @@ func on_control_result(result_dic: Dictionary) -> void:
|
||||
if block_kasseta_y5_prd_config_v.has(meta_y5):
|
||||
if block_kasseta_y5_prd_config_v['yau07'] == false:
|
||||
node_y5.state = STATE_VAL.ERROR if meta_y5 == 'yau07' else STATE_VAL.NONE
|
||||
return
|
||||
break
|
||||
node_y5.state = STATE_VAL.GOOD if block_kasseta_y5_prd_config_v[meta_y5] else STATE_VAL.ERROR
|
||||
|
||||
block_ip_config_v = control_prd_v.block_ip_config
|
||||
@@ -180,22 +195,25 @@ func on_control_result(result_dic: Dictionary) -> void:
|
||||
if block_ip_config_v.has(meta_ip) and block_kasseta_y5_prd_config_v.ug:
|
||||
power_supply.state = STATE_VAL.GOOD if block_ip_config_v[meta_ip][1] else STATE_VAL.ERROR
|
||||
|
||||
var fs_results: Dictionary = control_prd_v.block_fs_config
|
||||
var dkm: Dictionary = control_prd_v.block_dkm_config
|
||||
var fs_nodes: Array = get_tree().get_nodes_in_group('fs_group')
|
||||
for f in fs_nodes:
|
||||
var fs_meta: String = f.get_meta('fs')
|
||||
if fs_results.has(fs_meta):
|
||||
var new_state = fs_results[fs_meta]
|
||||
if result_dic.has(fs_meta):
|
||||
var new_state = result_dic[fs_meta]
|
||||
f.state = new_state
|
||||
fs_results[fs_meta] = new_state
|
||||
result_dic[fs_meta] = new_state
|
||||
|
||||
if fs_results.fs_4:
|
||||
$kasseta_FS_VD/ref_A2.state = STATE_VAL.GOOD if dkm.dkm_4 else STATE_VAL.ERROR
|
||||
$dou4_A5.state = STATE_VAL.GOOD if result_dic.dou_4 else STATE_VAL.ERROR
|
||||
if fs_results.fs_5:
|
||||
$kasseta_FS_VD/ref_A6.state = STATE_VAL.GOOD if dkm.dkm_5 else STATE_VAL.ERROR
|
||||
if result_dic.fs_5 == 1:
|
||||
$kasseta_FS_VD/ref_A2.state = STATE_VAL.GOOD if result_dic.dkm_5 else STATE_VAL.ERROR
|
||||
$dou5_A6.state = STATE_VAL.GOOD if result_dic.dou_5 else STATE_VAL.ERROR
|
||||
else:
|
||||
result_dic.fs_5 = false
|
||||
if result_dic.fs_4 == 1:
|
||||
$kasseta_FS_VD/ref_A6.state = STATE_VAL.GOOD if result_dic.dkm_4 else STATE_VAL.ERROR
|
||||
$dou4_A5.state = STATE_VAL.GOOD if result_dic.dou_4 else STATE_VAL.ERROR
|
||||
else:
|
||||
result_dic.fs_4 = false
|
||||
power_fill(power_dic)
|
||||
|
||||
var result = true
|
||||
for device in result_dic.values():
|
||||
@@ -205,7 +223,7 @@ func on_control_result(result_dic: Dictionary) -> void:
|
||||
var name_prd = control_prd_v.self_name
|
||||
if result:
|
||||
$control_result.text = 'Прибор ПРД-%s исправен' % name_prd
|
||||
$control_result.add_theme_color_override('font_color', Color.AQUAMARINE)
|
||||
$control_result.add_theme_color_override('font_color', Color.GREEN)
|
||||
else:
|
||||
$control_result.text = 'Прибор ПРД-%s неисправен' % name_prd
|
||||
$control_result.add_theme_color_override('font_color', Color.CRIMSON)
|
||||
$control_result.add_theme_color_override('font_color', Color.RED)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=14 format=3 uid="uid://cvskpe1ti3p45"]
|
||||
[gd_scene load_steps=9 format=3 uid="uid://cvskpe1ti3p45"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cvuosuvjaci1h" path="res://scenes/pribor-prd-v/pribor-prd-v.gd" id="1_c20s6"]
|
||||
[ext_resource type="PackedScene" uid="uid://d3iqb5e4g81m5" path="res://scenes/контроль/элемент-г.tscn" id="2_xpo4b"]
|
||||
@@ -7,32 +7,7 @@
|
||||
[ext_resource type="PackedScene" uid="uid://cd5sue1e8iyrv" path="res://scenes/pribor-prd-n/kasseta-fs-nd.tscn" id="5_nhd2k"]
|
||||
[ext_resource type="Script" uid="uid://crpedygm3gohi" path="res://scenes/контроль/кассета.gd" id="6_os4mt"]
|
||||
[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/элемент-в.tscn" id="7_38u2b"]
|
||||
[ext_resource type="PackedScene" uid="uid://bkxblfoj7ejv0" path="res://scenes/контроль/блок-а.tscn" id="7_e22c6"]
|
||||
[ext_resource type="Texture2D" uid="uid://belwchvdktrw0" path="res://data/эмс-бланк.png" id="10_4e87c"]
|
||||
[ext_resource type="Texture2D" uid="uid://bwddxs24es81u" path="res://data/эмс-бланк-пост.png" id="11_g8fvp"]
|
||||
[ext_resource type="Texture2D" uid="uid://pfoscstbm025" path="res://data/эмс-бланк-перем.png" id="12_gsby4"]
|
||||
|
||||
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_vxfkm"]
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_s5gcy"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("10_4e87c")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("11_g8fvp")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("12_gsby4")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": null
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
"speed": 5.0
|
||||
}]
|
||||
[ext_resource type="PackedScene" uid="uid://bcyxqni7gxvtq" path="res://scenes/контроль/блок-в.tscn" id="8_4e87c"]
|
||||
|
||||
[node name="pribor_prd_v" type="Control"]
|
||||
layout_mode = 3
|
||||
@@ -172,236 +147,149 @@ text = "Кассета П-1В"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="um1535_A7" parent="." groups=["power_amplifier"] instance=ExtResource("7_e22c6")]
|
||||
[node name="um1535_A7" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")]
|
||||
layout_mode = 0
|
||||
offset_left = 485.0
|
||||
offset_top = 242.0
|
||||
offset_right = 652.0
|
||||
offset_bottom = 337.0
|
||||
step0 = 1.0
|
||||
step1 = 1.0
|
||||
value_name0 = "°C"
|
||||
value_name1 = "P, %"
|
||||
name_min_size0 = Vector2i(35, 20)
|
||||
name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535А"
|
||||
fname = "УМ1535Б"
|
||||
rname = "A7"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_1"
|
||||
|
||||
[node name="um1535_A8" parent="." groups=["power_amplifier"] instance=ExtResource("7_e22c6")]
|
||||
[node name="um1535_A8" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")]
|
||||
layout_mode = 0
|
||||
offset_left = 485.0
|
||||
offset_top = 337.0
|
||||
offset_right = 652.0
|
||||
offset_bottom = 432.0
|
||||
value_name0 = "°C"
|
||||
value_name1 = "P, %"
|
||||
name_min_size0 = Vector2i(35, 20)
|
||||
name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535А"
|
||||
rname = "A8"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_2"
|
||||
|
||||
[node name="um1535_A9" parent="." groups=["power_amplifier"] instance=ExtResource("7_e22c6")]
|
||||
[node name="um1535_A9" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")]
|
||||
layout_mode = 0
|
||||
offset_left = 485.0
|
||||
offset_top = 432.0
|
||||
offset_right = 652.0
|
||||
offset_bottom = 527.0
|
||||
value_name0 = "°C"
|
||||
value_name1 = "P, %"
|
||||
name_min_size0 = Vector2i(35, 20)
|
||||
name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535А"
|
||||
rname = "A9"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_3"
|
||||
|
||||
[node name="um1535_A10" parent="." groups=["power_amplifier"] instance=ExtResource("7_e22c6")]
|
||||
[node name="um1535_A10" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")]
|
||||
layout_mode = 0
|
||||
offset_left = 485.0
|
||||
offset_top = 527.0
|
||||
offset_right = 652.0
|
||||
offset_bottom = 622.0
|
||||
value_name0 = "°C"
|
||||
value_name1 = "P, %"
|
||||
name_min_size0 = Vector2i(35, 20)
|
||||
name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535А"
|
||||
rname = "A10"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_4"
|
||||
|
||||
[node name="um1535_A11" parent="." groups=["power_amplifier"] instance=ExtResource("7_e22c6")]
|
||||
[node name="um1535_A11" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")]
|
||||
layout_mode = 0
|
||||
offset_left = 485.0
|
||||
offset_top = 622.0
|
||||
offset_right = 652.0
|
||||
offset_bottom = 717.0
|
||||
value_name0 = "°C"
|
||||
value_name1 = "P, %"
|
||||
name_min_size0 = Vector2i(35, 20)
|
||||
name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535А"
|
||||
rname = "A11"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_5"
|
||||
|
||||
[node name="um1535_A12" parent="." groups=["power_amplifier"] instance=ExtResource("7_e22c6")]
|
||||
[node name="um1535_A12" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")]
|
||||
layout_mode = 0
|
||||
offset_left = 485.0
|
||||
offset_top = 717.0
|
||||
offset_right = 652.0
|
||||
offset_bottom = 812.0
|
||||
value_name0 = "°C"
|
||||
value_name1 = "P, %"
|
||||
name_min_size0 = Vector2i(35, 20)
|
||||
name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535А"
|
||||
rname = "A12"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_6"
|
||||
|
||||
[node name="um1535_A13" parent="." groups=["power_amplifier"] instance=ExtResource("7_e22c6")]
|
||||
[node name="um1535_A13" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")]
|
||||
layout_mode = 0
|
||||
offset_left = 8.0
|
||||
offset_top = 242.0
|
||||
offset_right = 175.0
|
||||
offset_bottom = 337.0
|
||||
value_name0 = "°C"
|
||||
value_name1 = "P, %"
|
||||
name_min_size0 = Vector2i(35, 20)
|
||||
name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535А"
|
||||
rname = "A13"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_7"
|
||||
|
||||
[node name="um1535_A14" parent="." groups=["power_amplifier"] instance=ExtResource("7_e22c6")]
|
||||
[node name="um1535_A14" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")]
|
||||
layout_mode = 0
|
||||
offset_left = 8.0
|
||||
offset_top = 337.0
|
||||
offset_right = 175.0
|
||||
offset_bottom = 432.0
|
||||
value_name0 = "°C"
|
||||
value_name1 = "P, %"
|
||||
name_min_size0 = Vector2i(35, 20)
|
||||
name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535А"
|
||||
rname = "A14"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_8"
|
||||
|
||||
[node name="um1535_A15" parent="." groups=["power_amplifier"] instance=ExtResource("7_e22c6")]
|
||||
[node name="um1535_A15" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")]
|
||||
layout_mode = 0
|
||||
offset_left = 8.0
|
||||
offset_top = 432.0
|
||||
offset_right = 175.0
|
||||
offset_bottom = 527.0
|
||||
value_name0 = "°C"
|
||||
value_name1 = "P, %"
|
||||
name_min_size0 = Vector2i(35, 20)
|
||||
name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535А"
|
||||
rname = "A15"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_9"
|
||||
|
||||
[node name="um1535_A16" parent="." groups=["power_amplifier"] instance=ExtResource("7_e22c6")]
|
||||
[node name="um1535_A16" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")]
|
||||
layout_mode = 0
|
||||
offset_left = 8.0
|
||||
offset_top = 527.0
|
||||
offset_right = 175.0
|
||||
offset_bottom = 622.0
|
||||
value_name0 = "°C"
|
||||
value_name1 = "P, %"
|
||||
name_min_size0 = Vector2i(35, 20)
|
||||
name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535А"
|
||||
rname = "A16"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_10"
|
||||
|
||||
[node name="um1535_A17" parent="." groups=["power_amplifier"] instance=ExtResource("7_e22c6")]
|
||||
[node name="um1535_A17" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")]
|
||||
layout_mode = 0
|
||||
offset_left = 8.0
|
||||
offset_top = 622.0
|
||||
offset_right = 175.0
|
||||
offset_bottom = 717.0
|
||||
value_name0 = "°C"
|
||||
value_name1 = "P, %"
|
||||
name_min_size0 = Vector2i(35, 20)
|
||||
name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535А"
|
||||
rname = "A17"
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_11"
|
||||
|
||||
[node name="um1535_A18" parent="." groups=["power_amplifier"] instance=ExtResource("7_e22c6")]
|
||||
[node name="um1535_A18" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")]
|
||||
layout_mode = 0
|
||||
offset_left = 8.0
|
||||
offset_top = 717.0
|
||||
offset_right = 175.0
|
||||
offset_bottom = 812.0
|
||||
value_name0 = "°C"
|
||||
value_name1 = "P, %"
|
||||
name_min_size0 = Vector2i(35, 20)
|
||||
name_min_size1 = Vector2i(35, 20)
|
||||
fname = "УМ1535А"
|
||||
rname = "A18"
|
||||
|
||||
[node name="Monitoring_panel" type="Panel" parent="."]
|
||||
visible = false
|
||||
layout_mode = 0
|
||||
theme_override_styles/panel = SubResource("StyleBoxTexture_vxfkm")
|
||||
|
||||
[node name="in_fs_1" type="AnimatedSprite2D" parent="Monitoring_panel"]
|
||||
position = Vector2(454, 577)
|
||||
scale = Vector2(1.2, 1.2)
|
||||
sprite_frames = SubResource("SpriteFrames_s5gcy")
|
||||
|
||||
[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(207, 577)
|
||||
scale = Vector2(1.2, 1.2)
|
||||
sprite_frames = SubResource("SpriteFrames_s5gcy")
|
||||
|
||||
[node name="in_fs_2" 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 2"
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="out_ems_1" type="AnimatedSprite2D" parent="Monitoring_panel"]
|
||||
position = Vector2(454, 465)
|
||||
scale = Vector2(1.2, 1.2)
|
||||
sprite_frames = SubResource("SpriteFrames_s5gcy")
|
||||
|
||||
[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(207, 465)
|
||||
scale = Vector2(1.2, 1.2)
|
||||
sprite_frames = SubResource("SpriteFrames_s5gcy")
|
||||
|
||||
[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
|
||||
value0_info = "Мощность, Вт"
|
||||
value1_info = "Температура,°C"
|
||||
metadata/um = "um_12"
|
||||
|
||||
[node name="control_result" type="Label" parent="."]
|
||||
layout_mode = 0
|
||||
@@ -409,7 +297,5 @@ 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
|
||||
|
||||
@@ -14,7 +14,7 @@ script/source = "@tool
|
||||
class_name blok_v extends PanelContainer
|
||||
|
||||
@export var textures: Array
|
||||
|
||||
@export var animation_duration: float = 1.5
|
||||
signal pressed(control: PanelContainer)
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ signal pressed(control: PanelContainer)
|
||||
var items: Array = get_level_nodes()
|
||||
var count: int = min(items.size(), v.size())
|
||||
for i in count:
|
||||
items[i].value = v[i]
|
||||
set_value0_animated(items[i], v[i])
|
||||
|
||||
|
||||
## Значение уровня
|
||||
@@ -35,6 +35,8 @@ signal pressed(control: PanelContainer)
|
||||
if not is_inside_tree():
|
||||
return
|
||||
$margin/vbox/grid1/level7.value = v
|
||||
$margin/vbox/grid1/level7.tint_progress = Color.RED if v > 70 else Color.WHITE
|
||||
|
||||
|
||||
|
||||
@export var min_value0: float:
|
||||
@@ -175,9 +177,8 @@ func _enter_tree_defered():
|
||||
var items: Array = get_level_nodes()
|
||||
var count: int = min(items.size(), value0.size())
|
||||
for i in count:
|
||||
items[i].value = value0[i]
|
||||
items[i].min_value = min_value0
|
||||
items[i].max_value = max_value0
|
||||
items[i].max_value = 1400 # max_value0: TODO для отладки
|
||||
items[i].step = step0
|
||||
items = get_name_nodes()
|
||||
set_group_param(items, 'text', value_name0)
|
||||
@@ -221,6 +222,14 @@ func get_name_nodes() -> Array:
|
||||
$margin/vbox/grid2/lbl4,
|
||||
$margin/vbox/grid2/lbl5,
|
||||
$margin/vbox/grid2/lbl6 ]
|
||||
|
||||
|
||||
func set_value0_animated(target_node, target_value: float) -> void:
|
||||
var tween = create_tween()
|
||||
tween.set_ease(Tween.EASE_OUT)
|
||||
tween.set_trans(Tween.TRANS_QUINT)
|
||||
|
||||
tween.tween_property(target_node, \"value\", target_value, animation_duration)
|
||||
"
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_rceim"]
|
||||
@@ -349,10 +358,10 @@ layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
tooltip_text = "
|
||||
Текущее: 20.00
|
||||
Диапазон: 0.00…100.00"
|
||||
Текущее: 0.00
|
||||
Диапазон: 0.00…1400.00"
|
||||
mouse_filter = 0
|
||||
value = 20.0
|
||||
max_value = 1400.0
|
||||
fill_mode = 3
|
||||
nine_patch_stretch = true
|
||||
stretch_margin_left = 8
|
||||
@@ -369,10 +378,10 @@ layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
tooltip_text = "
|
||||
Текущее: 30.00
|
||||
Диапазон: 0.00…100.00"
|
||||
Текущее: 0.00
|
||||
Диапазон: 0.00…1400.00"
|
||||
mouse_filter = 0
|
||||
value = 30.0
|
||||
max_value = 1400.0
|
||||
fill_mode = 3
|
||||
nine_patch_stretch = true
|
||||
stretch_margin_left = 8
|
||||
@@ -389,10 +398,10 @@ layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
tooltip_text = "
|
||||
Текущее: 40.00
|
||||
Диапазон: 0.00…100.00"
|
||||
Текущее: 0.00
|
||||
Диапазон: 0.00…1400.00"
|
||||
mouse_filter = 0
|
||||
value = 40.0
|
||||
max_value = 1400.0
|
||||
fill_mode = 3
|
||||
nine_patch_stretch = true
|
||||
stretch_margin_left = 8
|
||||
@@ -409,10 +418,10 @@ layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
tooltip_text = "
|
||||
Текущее: 50.00
|
||||
Диапазон: 0.00…100.00"
|
||||
Текущее: 0.00
|
||||
Диапазон: 0.00…1400.00"
|
||||
mouse_filter = 0
|
||||
value = 50.0
|
||||
max_value = 1400.0
|
||||
fill_mode = 3
|
||||
nine_patch_stretch = true
|
||||
stretch_margin_left = 8
|
||||
@@ -429,10 +438,10 @@ layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
tooltip_text = "
|
||||
Текущее: 60.00
|
||||
Диапазон: 0.00…100.00"
|
||||
Текущее: 0.00
|
||||
Диапазон: 0.00…1400.00"
|
||||
mouse_filter = 0
|
||||
value = 60.0
|
||||
max_value = 1400.0
|
||||
fill_mode = 3
|
||||
nine_patch_stretch = true
|
||||
stretch_margin_left = 8
|
||||
@@ -449,10 +458,10 @@ layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
tooltip_text = "
|
||||
Текущее: 70.00
|
||||
Диапазон: 0.00…100.00"
|
||||
Текущее: 0.00
|
||||
Диапазон: 0.00…1400.00"
|
||||
mouse_filter = 0
|
||||
value = 70.0
|
||||
max_value = 1400.0
|
||||
fill_mode = 3
|
||||
nine_patch_stretch = true
|
||||
stretch_margin_left = 8
|
||||
|
||||
@@ -227,7 +227,6 @@ func on_data_capsrpb_received(unit0: capsrpb.CapsRpb, ecms: Dictionary) -> void:
|
||||
if not unit0.json_dic.has('msvk'): return
|
||||
if not (unit0.json_dic['msvk'] is Array): return
|
||||
var msvk = unit0.json_dic['msvk']
|
||||
var sz: = ecms.size()
|
||||
for dic_msvk in msvk:
|
||||
if not (dic_msvk is Dictionary): continue
|
||||
if dic_msvk.has('ispp'):
|
||||
@@ -241,8 +240,6 @@ func on_data_capsrpb_received(unit0: capsrpb.CapsRpb, ecms: Dictionary) -> void:
|
||||
ecm.set_from_dic(dic_msvk)
|
||||
ecm.krp = INTERFER_OFF
|
||||
send_ecm(ecm, unit0)
|
||||
if sz != ecms.size():
|
||||
call_deferred('emit_signal', 'interfer_resized', ecms)
|
||||
|
||||
|
||||
## Вызыватся, когда пользователь выбрал помеху и выбраны цели.
|
||||
@@ -303,6 +300,7 @@ func on_interfer_rcv(interfer_params: Array, unit0, ecms) -> void:
|
||||
|
||||
|
||||
func interfer_create(u, interfer_name, ecms, param, kni, id, dict, source_interfer, power) -> void:
|
||||
var sz = ecms.size()
|
||||
var ispp: int = 0
|
||||
if interfer_name == 'k1':
|
||||
param['dur'] = 1.0 # Необходимо добавить параметры управления
|
||||
@@ -347,6 +345,8 @@ func interfer_create(u, interfer_name, ecms, param, kni, id, dict, source_interf
|
||||
thrs.erase(ispp)
|
||||
ecm.tick_tx = Time.get_ticks_msec()
|
||||
send_ecm(ecm, u)
|
||||
if sz != ecms.size():
|
||||
call_deferred('emit_signal', 'interfer_resized', ecms)
|
||||
|
||||
|
||||
func send_ecm(ecm, unit0) -> void:
|
||||
|
||||
@@ -118,6 +118,7 @@ class Fs:
|
||||
var pow_caps_rx: float = 0.0 ## Мощность излучения принятая от КАПС РПБ
|
||||
var freq_caps_rx: float = 0.0 ## Частота принятая от КАПС РПБ
|
||||
var width_caps_rx: float = 0.0 ## Ширина полосы принятая от КАПС РПБ
|
||||
var msvk: Array
|
||||
|
||||
signal update_modulation(index)
|
||||
|
||||
@@ -329,6 +330,7 @@ func update_fs_state(ecms):
|
||||
for prd_module in prd_dict.values(): ## Отправка команды на исполнение в ПРД
|
||||
if prd_module.state != PrdState.WORK: continue
|
||||
if not prd_module.unit_yau07.online: continue
|
||||
prd_module.cmd_array.append([prd_module.unit_yau07.CmdCode.WRITE_ISA, [prd_module.yemsg_board.base_addr_isa, 6666]])
|
||||
var um_data_array: Array = []
|
||||
for fs in prd_module.fs_dic.values():
|
||||
if not prd_module.ug_online: continue
|
||||
@@ -352,9 +354,9 @@ func check_dir():
|
||||
|
||||
## Производит приём состояния модулей ФС.
|
||||
func on_data_capsrpb_received(unit0: capsrpb.CapsRpb):
|
||||
if not unit0.json_dic.has('ts'): return
|
||||
if unit0.json_dic['ts'] != 7: return
|
||||
if not unit0.json_dic.has('msfs'): return
|
||||
if not unit0.json_dic.has('ts'): return
|
||||
if not unit0.json_dic['ts'] == 7: return
|
||||
if not unit0.json_dic.has('msfs'): return
|
||||
|
||||
var msfs = unit0.json_dic['msfs']
|
||||
for fs in msfs:
|
||||
@@ -376,6 +378,7 @@ func on_data_capsrpb_received(unit0: capsrpb.CapsRpb):
|
||||
fs_module.freq_caps_rx = int(fs['freq'])
|
||||
if fs.has('width'):
|
||||
fs_module.width_caps_rx = int(fs['width'])
|
||||
|
||||
signaller.emit_signal('fs_update_state', fs_dict)
|
||||
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@ class TestPRD extends Node:
|
||||
const RAY_25:= 'RAY_25'
|
||||
const RAY_35:= 'RAY_35'
|
||||
const RAY_45:= 'RAY_45'
|
||||
enum STATE_VAL { NONE = 0, GOOD = 1, ERROR = 2 }
|
||||
enum STATE_MASHINE {
|
||||
INIT,
|
||||
FS_TURN_ON,
|
||||
@@ -56,13 +55,11 @@ class TestPRD extends Node:
|
||||
var pribor_config: Dictionary
|
||||
var fs_parameters: Dictionary
|
||||
var block_ip_config: Dictionary
|
||||
var block_dkm_config: Dictionary
|
||||
var block_fs_config: Dictionary
|
||||
var block_kasseta_y5_config: Dictionary
|
||||
var control_results: Dictionary
|
||||
var self_name: String
|
||||
var state: int = STATE_MASHINE.INIT
|
||||
var current_fs: int
|
||||
var current_litera: int
|
||||
var flag_timer_started: bool = false
|
||||
var unit_prd: Object
|
||||
var module_prd: Object
|
||||
@@ -70,8 +67,10 @@ class TestPRD extends Node:
|
||||
var control_label: Label
|
||||
var control_timer: Timer = Timer.new()
|
||||
var ems_6666_timer: Timer = Timer.new()
|
||||
signal control_is_over(control_results)
|
||||
signal control_is_over(control_results, power_result)
|
||||
|
||||
|
||||
var ecms: Dictionary ## Словарь помеховых воздействий
|
||||
|
||||
## Инициализация аргуметнов
|
||||
func _init(init_data: Dictionary) -> void:
|
||||
@@ -83,11 +82,9 @@ class TestPRD extends Node:
|
||||
pribor_config = init_data['prd_config']
|
||||
fs_parameters = init_data['fs_params']
|
||||
block_ip_config = init_data['block_ip_prd_config']
|
||||
block_dkm_config = init_data['block_dkm_prd_config']
|
||||
block_fs_config = init_data['block_fs_prd_config']
|
||||
block_kasseta_y5_config = init_data['block_kasseta_y5_prd_config']
|
||||
control_results = init_data['control_results']
|
||||
current_fs = init_data['current_fs']
|
||||
current_litera = init_data['current_litera']
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
@@ -107,25 +104,25 @@ class TestPRD extends Node:
|
||||
var status: PackedByteArray = unit_pribor.status
|
||||
block_kasseta_y5_config = check_block_kasseta_y5(status, block_kasseta_y5_config)
|
||||
block_ip_config = check_block_ip(status, block_ip_config)
|
||||
check_temperature_um(status, power_amplify)
|
||||
control_results.temperature = check_temperature_um(status, power_amplify)
|
||||
_process_dkm_status(status)
|
||||
if current_fs != 0:
|
||||
var tek_litera: Dictionary = power_result[current_fs]
|
||||
if current_litera != 0:
|
||||
var tek_litera: Dictionary = power_result[current_litera]
|
||||
var interes = _get_ray_key(state)
|
||||
if interes != '':
|
||||
tek_litera[_get_ray_key(state)] = power_um_ukp(status, current_fs, tek_litera[_get_ray_key(state)])
|
||||
power_result[current_fs] = tek_litera
|
||||
tek_litera[_get_ray_key(state)] = power_um_ukp(status, current_litera, tek_litera[_get_ray_key(state)])
|
||||
power_result[current_litera] = tek_litera
|
||||
|
||||
|
||||
## Пакеты от MP550Service
|
||||
func on_fs_update_state(packet_type_7: Dictionary, fs_mapping: Dictionary) -> void:
|
||||
var fs_key: String = FS_KEYS.get(current_fs, '')
|
||||
var fs_key: String = FS_KEYS.get(current_litera, '')
|
||||
if fs_key.is_empty():
|
||||
return
|
||||
|
||||
var fs_result := {fs_key: STATE_VAL.NONE}
|
||||
var fs_result := {fs_key: 0}
|
||||
fs_result = on_fs_state(packet_type_7, fs_mapping, fs_result)
|
||||
block_fs_config[fs_key] = fs_result[fs_key]
|
||||
control_results[fs_key] = fs_result[fs_key]
|
||||
|
||||
|
||||
##
|
||||
@@ -137,7 +134,7 @@ class TestPRD extends Node:
|
||||
_handle_fs_turn_on_state()
|
||||
state = STATE_MASHINE.FS_WORK
|
||||
STATE_MASHINE.FS_WORK:
|
||||
if not flag_timer_started:
|
||||
if ecms.size():
|
||||
_handle_fs_work_state()
|
||||
STATE_MASHINE.CHEK_KASSETA_Y5:
|
||||
if block_kasseta_y5_config['yau07']:
|
||||
@@ -151,12 +148,12 @@ class TestPRD extends Node:
|
||||
#ems_6666_timer.start()
|
||||
#state = STATE_MASHINE.READ_ISA
|
||||
STATE_MASHINE.READ_ISA:
|
||||
if (unit_prd.cmd_state == unit_prd.CmdState.DONE) or (unit_prd.cmd_state == unit_prd.CmdState.FALSE):
|
||||
if (unit_prd.cmd_state == unit_prd.CmdState.DONE) or (unit_prd.cmd_state == unit_prd.CmdState.FAIL):
|
||||
_handle_read_isa(module_prd, unit_prd, [constants.ADDR_UG_LITERA_1, constants.ADDR_UG_LITERA_2, constants.ADDR_UG_LITERA_3])
|
||||
state = STATE_MASHINE.UG_SET_RAY
|
||||
STATE_MASHINE.UG_SET_RAY:
|
||||
var addr: int = constants.ADDR_UG_LITERA_1
|
||||
if current_fs == 3 or current_fs == 5 or current_fs == 7:
|
||||
if current_litera == 3 or current_litera == 5 or current_litera == 7:
|
||||
addr = constants.ADDR_UG_LITERA_2
|
||||
if unit_prd.isa_ports.has(addr) and (unit_prd.cmd_state == unit_prd.CmdState.DONE):
|
||||
control_timer.stop()
|
||||
@@ -171,8 +168,8 @@ class TestPRD extends Node:
|
||||
elif unit_prd.isa_ports[addr] & 0x07 == 4:
|
||||
state = STATE_MASHINE.UG_SET_RAY_5
|
||||
elif unit_prd.isa_ports[addr] & 0x07 == 5:
|
||||
if not current_fs == 1:
|
||||
control_results = check_dou_result(control_results, power_result, self_name, current_fs, constants)
|
||||
if not current_litera == 1:
|
||||
control_results = check_dou_result(control_results, power_result, self_name, current_litera, constants)
|
||||
state = STATE_MASHINE.IN_EMS_STOP
|
||||
elif unit_prd.isa_ports[addr] & 0x07 == 6:
|
||||
state = STATE_MASHINE.UG_SET_RAY_0
|
||||
@@ -201,39 +198,39 @@ class TestPRD extends Node:
|
||||
state = STATE_MASHINE.FS_TURN_OFF
|
||||
STATE_MASHINE.FS_TURN_OFF:
|
||||
_handle_fs_turn_off_state()
|
||||
state = STATE_MASHINE.STOP_CONTROL
|
||||
STATE_MASHINE.STOP_CONTROL:
|
||||
_handle_stop_control_state()
|
||||
|
||||
|
||||
func _handle_init_state() -> void:
|
||||
control_label.text = 'Выполняется инициализация ФС-%s' % current_fs
|
||||
if current_fs in [1, 2, 3, 4, 5, 6, 7]:
|
||||
state = STATE_MASHINE.FS_TURN_ON
|
||||
#state = STATE_MASHINE.STOP_CONTROL
|
||||
control_label.text = 'Выполняется инициализация ФС-%s' % current_litera
|
||||
if current_litera in [1, 2, 3, 4, 5, 6, 7]:
|
||||
if not ecms.size():
|
||||
state = STATE_MASHINE.FS_TURN_ON
|
||||
else:
|
||||
control_results = on_control_result(block_ip_config, block_dkm_config, block_fs_config, control_results)
|
||||
emit_signal('control_is_over', control_results)
|
||||
control_results = on_control_result(block_ip_config, control_results)
|
||||
var send_power_pack = prep_power(power_result, self_name)
|
||||
emit_signal('control_is_over', control_results, send_power_pack)
|
||||
state = STATE_MASHINE.AWAIT
|
||||
|
||||
|
||||
func _handle_fs_turn_on_state() -> void:
|
||||
control_label.text = 'Выполняется включение ФС-%s' % current_fs
|
||||
manage_fs(true, self_name, pribor_config, fs_parameters, current_fs, constants.POWER_UM)
|
||||
control_label.text = 'Выполняется включение ФС-%s' % current_litera
|
||||
manage_fs(true, self_name, pribor_config, fs_parameters, current_litera, constants.POWER_UM)
|
||||
control_timer.wait_time = constants.TIMER_DELAY
|
||||
control_timer.start()
|
||||
|
||||
|
||||
func _handle_fs_work_state() -> void:
|
||||
control_label.text = 'Выполняется проверка ФС-%s' % current_fs
|
||||
if not module_prd.unit_yau07.online:
|
||||
return
|
||||
if (current_fs == 2 and block_fs_config.fs_2) or \
|
||||
(current_fs == 3 and block_fs_config.fs_3) or \
|
||||
(current_fs == 4 and block_fs_config.fs_4) or \
|
||||
(current_fs == 5 and block_fs_config.fs_5) or \
|
||||
(current_fs == 6 and block_fs_config.fs_6) or \
|
||||
(current_fs == 7 and block_fs_config.fs_7) or \
|
||||
(current_fs == 1 and block_fs_config.fs_1):
|
||||
control_label.text = 'Выполняется проверка ФС-%s' % current_litera
|
||||
if (current_litera == 2 and control_results.fs_2) or \
|
||||
(current_litera == 3 and control_results.fs_3) or \
|
||||
(current_litera == 4 and control_results.fs_4) or \
|
||||
(current_litera == 5 and control_results.fs_5) or \
|
||||
(current_litera == 6 and control_results.fs_6) or \
|
||||
(current_litera == 7 and control_results.fs_7) or \
|
||||
(current_litera == 1 and control_results.fs_1):
|
||||
state = STATE_MASHINE.CHEK_KASSETA_Y5
|
||||
|
||||
|
||||
@@ -271,27 +268,26 @@ class TestPRD extends Node:
|
||||
|
||||
|
||||
func _handle_fs_turn_off_state() -> void:
|
||||
control_label.text = 'Выполняется отключение ФС-%s' % current_fs
|
||||
manage_fs(false, self_name, pribor_config, fs_parameters, current_fs, constants.POWER_UM)
|
||||
state = STATE_MASHINE.STOP_CONTROL
|
||||
control_label.text = 'Выполняется отключение ФС-%s' % current_litera
|
||||
manage_fs(false, self_name, pribor_config, fs_parameters, current_litera, constants.POWER_UM)
|
||||
|
||||
|
||||
func _handle_stop_control_state() -> void:
|
||||
control_label.text = 'Выполняется завершение проверки ФС-%s' % current_fs
|
||||
control_label.text = 'Выполняется завершение проверки ФС-%s' % current_litera
|
||||
flag_timer_started = false
|
||||
_advance_to_next_fs()
|
||||
state = STATE_MASHINE.INIT
|
||||
|
||||
|
||||
func _advance_to_next_fs() -> void:
|
||||
match current_fs:
|
||||
1: current_fs = 6
|
||||
2: current_fs = 3
|
||||
3: current_fs = 0
|
||||
4: current_fs = 5
|
||||
5: current_fs = 0
|
||||
6: current_fs = 7
|
||||
7: current_fs = 0
|
||||
match current_litera:
|
||||
1: current_litera = 6
|
||||
2: current_litera = 3
|
||||
3: current_litera = 0
|
||||
4: current_litera = 5
|
||||
5: current_litera = 0
|
||||
6: current_litera = 7
|
||||
7: current_litera = 0
|
||||
|
||||
|
||||
######################################
|
||||
@@ -299,9 +295,14 @@ class TestPRD extends Node:
|
||||
_determine_self_name()
|
||||
var fs_mapping = _create_fs_mapping(self_name)
|
||||
signaller.conn(signaller.fs_update_state, Callable(self, 'on_fs_update_state').bind(fs_mapping))
|
||||
interfer.connect('interfer_resized', Callable(self, 'on_interfer_resized'))
|
||||
unit_prd.connect('data_received', Callable(self, 'on_data_received'))
|
||||
|
||||
|
||||
func on_interfer_resized(ecms_dic: Dictionary) -> void:
|
||||
ecms = ecms_dic
|
||||
|
||||
|
||||
func _determine_self_name() -> void:
|
||||
var current_unit = unit_prd.name
|
||||
var parts = current_unit.split('-')
|
||||
@@ -321,25 +322,38 @@ class TestPRD extends Node:
|
||||
|
||||
|
||||
func _process_dkm_status(status: PackedByteArray) -> void:
|
||||
if not block_fs_config.has(_get_current_fs_key()):
|
||||
if not control_results.has(_get_current_fs_key()):
|
||||
return
|
||||
var dkm_bit = _get_dkm_bit_for_current_fs()
|
||||
block_dkm_config = check_dkm(status, dkm_bit, block_dkm_config)
|
||||
var dkm_bit = _get_dkm_bit_for_current_fs(current_litera, constants)
|
||||
if dkm_bit == 0:
|
||||
control_results['dkm_1'] = check_dkm(status, dkm_bit)
|
||||
elif dkm_bit == 1:
|
||||
control_results['dkm_2'] = check_dkm(status, dkm_bit)
|
||||
elif dkm_bit == 2:
|
||||
control_results['dkm_3'] = check_dkm(status, dkm_bit)
|
||||
elif dkm_bit == 3:
|
||||
control_results['dkm_4'] = check_dkm(status, dkm_bit)
|
||||
elif dkm_bit == 4:
|
||||
control_results['dkm_5'] = check_dkm(status, dkm_bit)
|
||||
elif dkm_bit == 5:
|
||||
control_results['dkm_6'] = check_dkm(status, dkm_bit)
|
||||
elif dkm_bit == 6:
|
||||
control_results['dkm_7'] = check_dkm(status, dkm_bit)
|
||||
|
||||
|
||||
func _get_current_fs_key() -> String:
|
||||
return FS_KEYS.get(current_fs, '')
|
||||
return FS_KEYS.get(current_litera, '')
|
||||
|
||||
|
||||
func _get_dkm_bit_for_current_fs() -> int:
|
||||
match current_fs:
|
||||
1: return constants.DKM_BIT_1
|
||||
2: return constants.DKM_BIT_2
|
||||
3: return constants.DKM_BIT_3
|
||||
4: return constants.DKM_BIT_4
|
||||
5: return constants.DKM_BIT_5
|
||||
6: return constants.DKM_BIT_6
|
||||
7: return constants.DKM_BIT_7
|
||||
static func _get_dkm_bit_for_current_fs(litera: int, constants_dic: Dictionary) -> int:
|
||||
match litera:
|
||||
1: return constants_dic.DKM_BIT_1
|
||||
2: return constants_dic.DKM_BIT_2
|
||||
3: return constants_dic.DKM_BIT_3
|
||||
4: return constants_dic.DKM_BIT_4
|
||||
5: return constants_dic.DKM_BIT_5
|
||||
6: return constants_dic.DKM_BIT_6
|
||||
7: return constants_dic.DKM_BIT_7
|
||||
_: return -1
|
||||
|
||||
|
||||
@@ -355,28 +369,17 @@ class TestPRD extends Node:
|
||||
|
||||
|
||||
func on_stop_control() -> void:
|
||||
_handle_fs_turn_off_state()
|
||||
state = STATE_MASHINE.FS_TURN_OFF
|
||||
|
||||
|
||||
static func on_control_result(ip_config: Dictionary, dkm_config: Dictionary, fs_config: Dictionary, ctrl_results: Dictionary) -> Dictionary:
|
||||
static func on_control_result(ip_config: Dictionary, ctrl_results: Dictionary) -> Dictionary:
|
||||
var all_blocks_ip_ok = true
|
||||
var all_blocks_dkm_ok = true
|
||||
var all_blocks_fs_ok = true
|
||||
|
||||
for block in ip_config:
|
||||
if not ip_config[block][1]:
|
||||
all_blocks_ip_ok = false
|
||||
ctrl_results['block_ip'] = all_blocks_ip_ok
|
||||
|
||||
for block in dkm_config:
|
||||
if not dkm_config[block]:
|
||||
all_blocks_dkm_ok = false
|
||||
ctrl_results['dkm'] = all_blocks_dkm_ok
|
||||
|
||||
for block in fs_config:
|
||||
if not fs_config[block]:
|
||||
all_blocks_fs_ok = false
|
||||
ctrl_results['fs'] = all_blocks_fs_ok
|
||||
return ctrl_results
|
||||
|
||||
|
||||
@@ -398,7 +401,7 @@ class TestPRD extends Node:
|
||||
|
||||
|
||||
## Управаление модулем фс (включить/отключить излучение)
|
||||
static func manage_fs(mode: bool, pribor: String, p_conf: Dictionary, fs_params: Dictionary, cur_fs: int, power_um: int) -> void:
|
||||
static func manage_fs(mode: bool, pribor: String, p_conf: Dictionary, fs_params: Dictionary, litera: int, power_um: int) -> void:
|
||||
# Получаем конфигурацию для текущего прибора
|
||||
var config: Dictionary = p_conf[pribor]
|
||||
var angle: float = config.angle
|
||||
@@ -408,13 +411,13 @@ class TestPRD extends Node:
|
||||
var interfer_name: String = 'k1' if mode else 'off'
|
||||
var fs_arr: Array = []
|
||||
|
||||
if cur_fs in fs_params:
|
||||
var params = fs_params[cur_fs]
|
||||
if litera in fs_params:
|
||||
var params = fs_params[litera]
|
||||
fs_arr.append([
|
||||
angle,
|
||||
params.freq,
|
||||
params.width,
|
||||
sectors[cur_fs - 1] if cur_fs == 1 else sectors[cur_fs - 5] if cur_fs > 5 else sectors[cur_fs - 4] if cur_fs > 3 else sectors[cur_fs - 2]
|
||||
sectors[litera - 1] if litera == 1 else sectors[litera - 5] if litera > 5 else sectors[litera - 4] if litera > 3 else sectors[litera - 2]
|
||||
])
|
||||
signaller.emit_signal('interfer_init', interfer_name, fs_arr, power_um)
|
||||
|
||||
@@ -443,7 +446,7 @@ class TestPRD extends Node:
|
||||
|
||||
|
||||
## Проверка температур УМ от УКП
|
||||
static func check_temperature_um(status_prd: PackedByteArray, power_amplifier: Array) -> void:
|
||||
static func check_temperature_um(status_prd: PackedByteArray, power_amplifier: Array) -> bool:
|
||||
const Constants: Dictionary = {
|
||||
'CONST_MIN_TEMP': -25,
|
||||
'MAXIMUM_CODE_ADC': 3796,
|
||||
@@ -454,6 +457,7 @@ class TestPRD extends Node:
|
||||
const TEMP: float = 115.0 / (Constants.MAXIMUM_CODE_ADC - Constants.MINIMUM_CODE_AD)
|
||||
var ukp1_online: int = (status_prd[0] >> 2) & 1
|
||||
var ukp2_online = (status_prd[0] >> 3) & 1
|
||||
var all_temp_is_ok: bool = true
|
||||
|
||||
if ukp1_online:
|
||||
var tmp_1: int
|
||||
@@ -461,42 +465,36 @@ class TestPRD extends Node:
|
||||
for i_temp in 6:
|
||||
temperature_ukp_1 = status_prd.decode_u16(Constants.TEMPERATURE_UKP_1 + 2 * i_temp)
|
||||
tmp_1 = round(Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_1) * TEMP + 3)
|
||||
power_amplifier[i_temp].value0 = tmp_1
|
||||
power_amplifier[i_temp].value1 = tmp_1
|
||||
if tmp_1>70:
|
||||
all_temp_is_ok = false
|
||||
|
||||
if power_amplifier.size() > 12: # Темпуратура от УМ литеры 1
|
||||
temperature_ukp_1 = status_prd.decode_u16(Constants.TEMPERATURE_UKP_1 + 2 * 7)
|
||||
tmp_1 = round(Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_1) * TEMP + 3)
|
||||
power_amplifier[6].value0 = tmp_1
|
||||
power_amplifier[6].value1 = tmp_1
|
||||
if tmp_1>70:
|
||||
all_temp_is_ok = false
|
||||
|
||||
if ukp2_online:
|
||||
for i_temp in 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)
|
||||
if power_amplifier.size() > 12:
|
||||
power_amplifier[i_temp+7].value0 = tmp_2
|
||||
power_amplifier[i_temp+7].value1 = tmp_2
|
||||
if tmp_2>70:
|
||||
all_temp_is_ok = false
|
||||
else:
|
||||
power_amplifier[i_temp+6].value0 = tmp_2
|
||||
|
||||
power_amplifier[i_temp+6].value1 = tmp_2
|
||||
if tmp_2>70:
|
||||
all_temp_is_ok = false
|
||||
return all_temp_is_ok
|
||||
|
||||
## Проверка ДКМ
|
||||
static func check_dkm(status_prd: PackedByteArray, bit_dkm: int, dkm_result: Dictionary) -> Dictionary:
|
||||
static func check_dkm(status_prd: PackedByteArray, bit_dkm: int) -> bool:
|
||||
var dkm: int = 28
|
||||
var status_dkm = status_prd[dkm] >> bit_dkm & 1
|
||||
if bit_dkm == 0:
|
||||
dkm_result['dkm_1'] = status_dkm
|
||||
elif bit_dkm == 1:
|
||||
dkm_result['dkm_2'] = status_dkm
|
||||
elif bit_dkm == 2:
|
||||
dkm_result['dkm_3'] = status_dkm
|
||||
elif bit_dkm == 3:
|
||||
dkm_result['dkm_4'] = status_dkm
|
||||
elif bit_dkm == 4:
|
||||
dkm_result['dkm_5'] = status_dkm
|
||||
elif bit_dkm == 5:
|
||||
dkm_result['dkm_6'] = status_dkm
|
||||
elif bit_dkm == 6:
|
||||
dkm_result['dkm_7'] = status_dkm
|
||||
return dkm_result
|
||||
var status_dkm: bool = status_prd[dkm] >> bit_dkm & 1
|
||||
return status_dkm
|
||||
|
||||
|
||||
##
|
||||
@@ -548,14 +546,14 @@ class TestPRD extends Node:
|
||||
|
||||
|
||||
##
|
||||
static func power_um_ukp(status: PackedByteArray, crnt_fs: int, pwr_result: Array) -> Array:
|
||||
static func power_um_ukp(status: PackedByteArray, litera: int, pwr_result: Array) -> Array:
|
||||
const Constants: Dictionary = {'POWER_UKP_1' : 31, 'POWER_UKP_2': 63}
|
||||
var power_values: Array = []
|
||||
var base_offset = 0
|
||||
var iteration: int = 6
|
||||
var ug_valid: bool = (status[0] >> 2) & 1
|
||||
|
||||
match crnt_fs:
|
||||
match litera:
|
||||
1:
|
||||
# Обработка для current_fs = 1 (одно значение)
|
||||
var value = status.decode_u16(Constants.POWER_UKP_1 + 2 * 7)
|
||||
@@ -621,15 +619,15 @@ class TestPRD extends Node:
|
||||
return max_power_values.duplicate()
|
||||
|
||||
|
||||
static func check_dou_result(control_dic: Dictionary, power_dic: Dictionary, pribor: String, cur_prd: int, cnst: Dictionary) -> Dictionary:
|
||||
static func check_dou_result(control_dic: Dictionary, power_dic: Dictionary, pribor: String, litera: int, cnst: Dictionary) -> Dictionary:
|
||||
var all_dou_ok = true
|
||||
var dou: String = 'dou_2' if cur_prd == 2 else 'dou_3'
|
||||
var dou: String = 'dou_2' if litera == 2 else 'dou_3'
|
||||
if pribor == '1к' or pribor == '2к' or pribor == '3к' or pribor == '4к':
|
||||
dou = 'dou_6' if cur_prd == 6 else 'dou_7'
|
||||
dou = 'dou_6' if litera == 6 else 'dou_7'
|
||||
elif pribor == '1в' or pribor == '2в' or pribor == '3в' or pribor == '4в':
|
||||
dou = 'dou_4' if cur_prd == 5 else 'dou_5'
|
||||
dou = 'dou_4' if litera == 4 else 'dou_5'
|
||||
|
||||
var ray_dic: Dictionary = power_dic[cur_prd]
|
||||
var ray_dic: Dictionary = power_dic[litera]
|
||||
if ray_dic[RAY_m5].size() == 0 or \
|
||||
ray_dic[RAY_5 ].size() == 0 or \
|
||||
ray_dic[RAY_15].size() == 0 or \
|
||||
@@ -642,10 +640,62 @@ class TestPRD extends Node:
|
||||
for i_pow_arr in ray_dic.values():
|
||||
for i_pow in i_pow_arr.size():
|
||||
if i_pow_arr[i_pow] < cnst.POWER_THRESHOLD:
|
||||
print_debug('dou_%s: false' % cur_prd)
|
||||
#print_debug('dou_%s: false' % litera)
|
||||
all_dou_ok = false
|
||||
|
||||
print([cur_prd, ray_dic])
|
||||
control_dic[dou] = all_dou_ok
|
||||
|
||||
return control_dic
|
||||
|
||||
|
||||
static func prep_power(power_dic: Dictionary, prd_name: String)-> Dictionary:
|
||||
const RAY_KEYS := ["RAY_m5", "RAY_5", "RAY_15", "RAY_25", "RAY_35", "RAY_45"]
|
||||
var prep_pow_dic: Dictionary = {}
|
||||
|
||||
var arr_litera: Array[int]
|
||||
match prd_name:
|
||||
'1н', '2н', '3н', '4н':
|
||||
arr_litera = [2, 3]
|
||||
'1в', '2в', '3в', '4в':
|
||||
arr_litera = [4, 5]
|
||||
'1к', '2к', '3к', '4к':
|
||||
arr_litera = [6, 7, 1]
|
||||
|
||||
if not arr_litera:
|
||||
print_debug('Ошибка в prd_name')
|
||||
return prep_pow_dic
|
||||
|
||||
var um_names: Array[Array] = []
|
||||
if arr_litera.size() != 3:
|
||||
um_names = [
|
||||
['um_1', 'um_2', 'um_3', 'um_4', 'um_5', 'um_6'],
|
||||
['um_7', 'um_8', 'um_9', 'um_10', 'um_11', 'um_12']
|
||||
]
|
||||
else:
|
||||
um_names = [
|
||||
['um_1', 'um_2', 'um_3', 'um_4', 'um_5', 'um_6'],
|
||||
['um_8', 'um_9', 'um_10', 'um_11', 'um_12', 'um_13'],
|
||||
['um_7'] # Особый случай для третьего элемента
|
||||
]
|
||||
|
||||
for litera_index in arr_litera.size():
|
||||
var litera: int = arr_litera[litera_index]
|
||||
var litera_data: Dictionary = power_dic.get(litera, {})
|
||||
var um_data: Array[Array] = [[], [], [], [], [], []]
|
||||
|
||||
for i in range(RAY_KEYS.size()):
|
||||
var ray_key: String = RAY_KEYS[i]
|
||||
var ray_array: Array = litera_data.get(ray_key, [])
|
||||
|
||||
if ray_array.size() == 1:
|
||||
var single_value = ray_array[0]
|
||||
for j in range(6):
|
||||
um_data[j].append(single_value)
|
||||
else:
|
||||
for j in range(6):
|
||||
um_data[j].append(ray_array[j] if j < ray_array.size() else 0)
|
||||
|
||||
var current_um_names: Array = um_names[litera_index]
|
||||
for um_index in range(current_um_names.size()):
|
||||
prep_pow_dic[current_um_names[um_index]] = um_data[um_index]
|
||||
return prep_pow_dic
|
||||
|
||||
@@ -13,6 +13,32 @@ class SPT25 extends unit.Unit:
|
||||
|
||||
func _to_string() -> String: return String('СПТ-25 %s %s' % [self.name, ['отключен', 'на связи'][int(online)]])
|
||||
|
||||
##Вычисление контрольной суммы
|
||||
func sciCalcFCS(src: PackedByteArray) -> int:
|
||||
var P_DIV = 0
|
||||
var ln = src[0]
|
||||
var FCS = ~((src[2]<<8) + src[1])
|
||||
for i in range(3, ln):
|
||||
var C = src[i]
|
||||
for j in 8:
|
||||
if C & 1:
|
||||
if FCS & 1:
|
||||
FCS = ((FCS >> 1) | 0x8000)^P_DIV
|
||||
else:
|
||||
FCS = ((FCS >> 1) | 0x8000)
|
||||
else:
|
||||
if FCS & 1:
|
||||
FCS = (FCS >> 1) ^ P_DIV
|
||||
else:
|
||||
FCS = FCS >> 1
|
||||
C >>= 1
|
||||
for j in 16:
|
||||
if FCS & 1:
|
||||
FCS = (FCS >> 1) ^ P_DIV
|
||||
else:
|
||||
FCS = FCS >> 1
|
||||
return ~FCS
|
||||
|
||||
func _init(nm) -> void:
|
||||
self.name = nm
|
||||
tx_data.resize(8)
|
||||
|
||||
Reference in New Issue
Block a user