Compare commits
17 Commits
3ac243f420
...
5a7c719c56
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5a7c719c56 | ||
|
|
8754dcc7f0 | ||
|
|
6fce003c59 | ||
|
|
2980aa9f15 | ||
|
|
5b5b5d31c6 | ||
|
|
1785d23e43 | ||
|
|
85c02f3f6c | ||
|
|
3f469935bc | ||
|
|
15be378743 | ||
|
|
6ea649cf31 | ||
|
|
78b6f5a14e | ||
|
|
1e500dec2c | ||
|
|
6a5eae450c | ||
|
|
f6ee2d95a4 | ||
|
|
94f0eccaa1 | ||
|
|
2d4fd57789 | ||
|
|
cebf645e4d |
@@ -28,7 +28,7 @@ interfer/center_offset=Vector2(200, 225)
|
||||
interfer/default_color0=Color(0.38, 0.47, 0.51, 1)
|
||||
interfer/default_color1=Color(0.39, 0.44, 0.5, 1)
|
||||
interfer/select_color=Color(1, 1, 1, 1)
|
||||
interfer/interfer_color=Color(0.58, 0.47, 0.51, 1)
|
||||
interfer/interfer_color=Color(0.92379, 0.0965192, 0.249261, 1)
|
||||
interfer/resend_timeout=1000.0
|
||||
config/external_cu=false
|
||||
config/unit_rr_request_period=20.0
|
||||
@@ -36,7 +36,7 @@ config/kems_files_path="user://kems/"
|
||||
config/emsg_files_path="user://emsg/"
|
||||
config/settings_path="user://settings.json"
|
||||
config/unit_bpo_request_period=20.0
|
||||
interfer/emit_color=Color(0.58, 0.471, 0.51, 0.2)
|
||||
interfer/emit_color=Color(0.92549, 0.0980392, 0.25098, 0.509804)
|
||||
interfer/closed_sectors=Color(0, 0, 0, 1)
|
||||
|
||||
[autoload]
|
||||
|
||||
@@ -7,8 +7,8 @@ const TableHeader = preload('res://table/header.tscn') ## Ячейка за
|
||||
|
||||
const TABLE_HEADER = [ TableHeader, TableHeader, TableHeader , TableHeader ] ## Описание ряда заголовка.
|
||||
const TABLE_ROW = [ CellLineEdit, CellLineEdit, CellLineEdit , CellLineEdit ] ## Описание ряда.
|
||||
const TABLE_HEADERS_TEXT = ['Номер', 'Название', 'Пеленг', 'Состояние' ] ## Заголовки таблицы.
|
||||
const TABLE_COLUMN_SIZE = [ 75, 100, 90, 170 ] ## Ширины колонок.
|
||||
const TABLE_HEADERS_TEXT = ['№', 'Название', 'Пеленг', 'Состояние' ] ## Заголовки таблицы.
|
||||
const TABLE_COLUMN_SIZE = [ 65, 100, 90, 195 ] ## Ширины колонок.
|
||||
|
||||
## Состояние выполнения сеанса помехи
|
||||
const INTERFER_STATE = {
|
||||
|
||||
23
scenes/frame-threats/emit-led.tscn
Normal file
23
scenes/frame-threats/emit-led.tscn
Normal file
@@ -0,0 +1,23 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://d012h4hxf2anf"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://b3woliae871je" path="res://data/отметка-неопред.png" id="1_0a4l0"]
|
||||
|
||||
[node name="emit-led" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 0
|
||||
offset_right = 40.0
|
||||
offset_bottom = 40.0
|
||||
|
||||
[node name="texture-led" type="TextureButton" parent="."]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_left = 26.0
|
||||
offset_top = 11.0
|
||||
offset_right = 3.0
|
||||
offset_bottom = -12.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
texture_normal = ExtResource("1_0a4l0")
|
||||
@@ -35,5 +35,5 @@ script = ExtResource("2_empn3")
|
||||
|
||||
[node name="table" type="GridContainer" parent="scroll"]
|
||||
layout_mode = 2
|
||||
columns = 4
|
||||
columns = 5
|
||||
script = ExtResource("3_4bupu")
|
||||
|
||||
@@ -5,14 +5,16 @@ class_name scroll_threats extends ScrollContainer
|
||||
|
||||
const CellLineEdit = preload('res://table/ячейка-2.tscn') ## Ячейка таблицы.
|
||||
const TableHeader = preload('res://table/header.tscn') ## Ячейка заголовок таблицы.
|
||||
const EmitLed = preload('res://scenes/frame-threats/emit-led.tscn') ## Ячейка заголовок таблицы.
|
||||
|
||||
const TABLE_HEADER = [ TableHeader, TableHeader, TableHeader, TableHeader , TableHeader ] ## Описание ряда заголовка.
|
||||
const TABLE_ROW = [ CellLineEdit, CellLineEdit, CellLineEdit, CellLineEdit, EmitLed ] ## Описание ряда.
|
||||
const TABLE_COLUMN_PARAM = ['id', 'aoa', 'freq', 'proto', 'emit' ] ## Параметры цели отображаемые в таблице.
|
||||
const TABLE_HEADERS_TEXT = ['№', 'Пеленг', 'Частота, МГц', 'Протокол', 'Помеха' ] ## Заголовки таблицы.
|
||||
const TABLE_COLUMN_SIZE = [ 65, 70, 110, 140, 65] ## Ширины колонок.
|
||||
|
||||
const TABLE_HEADER = [ TableHeader, TableHeader, TableHeader, TableHeader ] ## Описание ряда заголовка.
|
||||
const TABLE_ROW = [ CellLineEdit, CellLineEdit, CellLineEdit, CellLineEdit ] ## Описание ряда.
|
||||
const TABLE_COLUMN_PARAM = ['id', 'aoa', 'freq', 'proto' ] ## Параметры цели отображаемые в таблице.
|
||||
const TABLE_HEADERS_TEXT = ['Номер', 'Пеленг', 'Частота, МГц', 'Протокол' ] ## Заголовки таблицы.
|
||||
const TABLE_COLUMN_SIZE = [ 65, 145, 145, 90 ] ## Ширины колонок.
|
||||
|
||||
const TABLE_TEXT_ROWS = 4
|
||||
const EMIT_STATE_COL = 4
|
||||
|
||||
## Снимает выделение цели.
|
||||
func on_rto_threat_unsel(_th_id): $table.clear_rows_selected()
|
||||
@@ -63,6 +65,17 @@ func on_threat_update(th, table_index: Dictionary):
|
||||
var row = map_th_to_row(th)
|
||||
var i_row = table_index[th.id]
|
||||
$table.set_row_text(i_row, row)
|
||||
var emit_node = $table.get_node2(EMIT_STATE_COL, i_row)
|
||||
var emit_txr = emit_node.get_node('texture-led')
|
||||
if th.emit_state == 0:
|
||||
emit_txr.visible = false
|
||||
elif th.emit_state == 1:
|
||||
emit_txr.visible = true
|
||||
emit_txr.self_modulate = Color.ORANGE
|
||||
elif th.emit_state == 2:
|
||||
emit_txr.visible = true
|
||||
emit_txr.self_modulate = Color.RED
|
||||
|
||||
|
||||
|
||||
## Обрабатывает сигнал [b]threat_lost[/b].
|
||||
@@ -78,7 +91,7 @@ func on_threat_new(th, table_index):
|
||||
$table.add_row(TABLE_ROW)
|
||||
var row = map_th_to_row(th)
|
||||
$table.set_row_text(i_row, row)
|
||||
$table.set_row_editable(i_row, false)
|
||||
disable_edit($table, TABLE_TEXT_ROWS, i_row)
|
||||
$table.set_node_user_data(0, i_row, th)
|
||||
table_index[th.id] = i_row
|
||||
|
||||
@@ -86,10 +99,11 @@ func on_threat_new(th, table_index):
|
||||
## Преобразует цель в строку таблицы.
|
||||
func map_th_to_row(th) -> Array:
|
||||
var row: = Array()
|
||||
row.resize(TABLE_COLUMN_PARAM.size())
|
||||
row.resize(TABLE_TEXT_ROWS)
|
||||
var i_col: int = 0
|
||||
for param_name in TABLE_COLUMN_PARAM:
|
||||
var val = th.get(param_name)
|
||||
if val == null: continue
|
||||
row[i_col] = '%0.1f' % val if val is float else '%s' % val
|
||||
if not th.fflags[param_name]:
|
||||
row[i_col] = ''
|
||||
@@ -104,3 +118,13 @@ func on_rto_threat_sel(th_id, tbl):
|
||||
if node.text.to_int() == th_id:
|
||||
row_pressed(i)
|
||||
break
|
||||
|
||||
|
||||
## Отключает возможность редактирования LineEdit в таблице.[br]
|
||||
## [param tbl] - таблица,[br]
|
||||
## [param num_col] - номер колонки,[br]
|
||||
## [param i_row] - номер столбца.[br]
|
||||
func disable_edit(tbl, num_col: int, i_row: int):
|
||||
for col in num_col:
|
||||
var node: LineEdit = tbl.get_node2(col, i_row)
|
||||
node.editable = false
|
||||
|
||||
@@ -1,81 +1,10 @@
|
||||
@tool
|
||||
extends 'res://scenes/контроль/прибор.gd'
|
||||
|
||||
const constants_k: Dictionary = {
|
||||
'POWER_UKP_1': 31,
|
||||
'POWER_UKP_2': 63,
|
||||
'DKM_BIT_1': 0,
|
||||
'DKM_BIT_6': 5,
|
||||
'DKM_BIT_7': 6,
|
||||
'BASE_ADDR_EMS_G': 0x120,
|
||||
'ADDR_UG_LITERA_1': 0x106,
|
||||
'ADDR_UG_LITERA_2': 0x108,
|
||||
'ADDR_UG_LITERA_3': 0x10A,
|
||||
'TEMP_THRESHOLD': 40,
|
||||
'POWER_THRESHOLD': 40,
|
||||
'RAY_DOU_NUM': 0x3,
|
||||
'ATT_UM_1': 0x0,
|
||||
'ATT_UM_6': 0x3,
|
||||
'ATT_UM_7': 0x2,
|
||||
'POWER_UM': 100,
|
||||
'TIMER_DELAY': 10.0,
|
||||
'STATE_MASHINE_TIMER': 0.3,
|
||||
}
|
||||
# Конфигурация параметров для каждого прибора
|
||||
const PRIBOR_CONFIG := {
|
||||
'1к': {'angle': 0.0, 'sectors': [0, 20, 24]},
|
||||
'2к': {'angle': 90.0, 'sectors': [3, 23, 27]},
|
||||
'3к': {'angle': 180.0, 'sectors': [2, 22, 26]},
|
||||
'4к': {'angle': 270.0, 'sectors': [1, 21, 25]},
|
||||
}
|
||||
# Конфигурация частот и ширин для каждого ФС
|
||||
const FS_PARAMS := {
|
||||
1: {'freq': 450.0, 'width': 80.0},
|
||||
6: {'freq': 2450.0, 'width': 110.0},
|
||||
7: {'freq': 4750.0, 'width': 110.0}
|
||||
}
|
||||
enum STATE_VAL { NONE = 0, GOOD = 1, ERROR = 2 }
|
||||
|
||||
var block_ip_config_k := {
|
||||
'maa2000_1': [0, false],
|
||||
'maa2000_2': [1, false],
|
||||
'ip9_50_1': [2, false],
|
||||
'ip9_50_2': [3, false],
|
||||
'ip12_50_1': [4, false],
|
||||
'ip9_50_3': [5, false],
|
||||
'ip12_50_2': [6, false],
|
||||
'ip5_25': [7, false],
|
||||
}
|
||||
var block_kasseta_y5_prd_config_k: = {
|
||||
'yau07': false,
|
||||
'ems': false,
|
||||
'ug': false,
|
||||
'ukp1': false,
|
||||
'ukp2': false,
|
||||
}
|
||||
# Основные переменные
|
||||
var start_litera: int = 1
|
||||
var ug_work_1: int = 3 ## Аттенюация усилителей мощности
|
||||
var ug_work_2: int = 2 ## Аттенюация усилителей мощности
|
||||
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_1': false,
|
||||
#'dkm_6': false,
|
||||
#'dkm_7': false,
|
||||
#'dou_6': false,
|
||||
#'dou_7': false,
|
||||
#'fs_1': 2,
|
||||
#'fs_6': 2,
|
||||
#'fs_7': 2,
|
||||
#}
|
||||
|
||||
var ctrl_pos = 30
|
||||
|
||||
|
||||
@@ -85,53 +14,18 @@ func _ready() -> void:
|
||||
var unit_name = get_meta('unit_name')[0]
|
||||
var prd_k_module = prd.prd_dict[unit_name]
|
||||
unit_prd_k = prd_k_module.unit_control
|
||||
|
||||
unit_prd_k.connect('control_is_over', Callable(self, 'on_control_result'))
|
||||
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
for temp in power_amplifier:
|
||||
temp.value1 = -70
|
||||
unit_prd_k.connect('control_is_over', Callable(self, 'on_press_device'))
|
||||
on_press_device()
|
||||
|
||||
|
||||
func start_control() -> void:
|
||||
#initialize_connections()
|
||||
setup_timer()
|
||||
set_default_state()
|
||||
find_labels(self)
|
||||
|
||||
|
||||
#func on_state_mashine() -> void:
|
||||
#control_prd_k.state_control_machine()
|
||||
|
||||
|
||||
#func initialize_connections() -> void:
|
||||
#var unit_name = get_meta('unit_name')[0]
|
||||
#prd_k_module = prd.prd_dict[unit_name]
|
||||
#unit_prd_k = prd_k_module.unit_yau07
|
||||
#
|
||||
#unit_prd_k.connect('line_changed', Callable(self, 'on_line_changed'))
|
||||
#var power_amplifiers: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
#var init_data: Dictionary = {
|
||||
#'control_label': $control_result,
|
||||
#'power_amplifiers': power_amplifiers,
|
||||
#'unit_prd': unit_prd_k,
|
||||
#'module_prd' : prd_k_module,
|
||||
#'constants': constants_k,
|
||||
#'prd_config': PRIBOR_CONFIG,
|
||||
#'fs_params': FS_PARAMS,
|
||||
#'block_ip_prd_config': block_ip_config_k,
|
||||
#'block_kasseta_y5_prd_config': block_kasseta_y5_prd_config_k,
|
||||
#'control_results': control_results_k,
|
||||
#'current_litera': start_litera,
|
||||
#}
|
||||
#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'))
|
||||
|
||||
|
||||
func setup_timer() -> void:
|
||||
add_child(mashine_timer)
|
||||
mashine_timer.connect('timeout', Callable(self, 'on_state_mashine'))
|
||||
mashine_timer.wait_time = constants_k.STATE_MASHINE_TIMER
|
||||
mashine_timer.start()
|
||||
|
||||
|
||||
func set_default_state() -> void:
|
||||
for group in get_tree().get_nodes_in_group('default_reset'):
|
||||
group.state = STATE_VAL.NONE
|
||||
@@ -143,13 +37,8 @@ func set_default_state() -> void:
|
||||
func _enter_tree() -> void:
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
$control_result.text = 'Выполняется ...'
|
||||
$control_result.text = 'Ожидается запуск контроля ...' # TODO: Необходимо сделать пулл сообщений
|
||||
$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,31 +47,11 @@ func _exit_tree() -> 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]])
|
||||
|
||||
|
||||
func on_line_changed(unit_pribor: Object) -> void:
|
||||
if not unit_pribor.online:
|
||||
set_default_state()
|
||||
|
||||
|
||||
func on_mode_changed(in_tree: bool) -> void:
|
||||
if not in_tree:
|
||||
print_debug('Выход из сцены')
|
||||
#mashine_timer.stop()
|
||||
#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:
|
||||
print_debug('Вход в сцену')
|
||||
#set_default_state()
|
||||
#control_prd_k.state = control_prd_k.STATE_MASHINE.INIT
|
||||
#mashine_timer.start()
|
||||
|
||||
|
||||
func power_fill(pow_dic: Dictionary, fs_result: 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')
|
||||
static func power_fill(pow_dic: Dictionary, fs_result: Dictionary, power_amplifier: Array, POWER_THRESHOLD: int) -> void:
|
||||
for i_powapm in power_amplifier:
|
||||
var powamp_meta: String = i_powapm.get_meta('um')
|
||||
var status = STATE_VAL.GOOD if pow_dic else STATE_VAL.NONE
|
||||
if not pow_dic.has(powamp_meta): return
|
||||
if pow_dic:
|
||||
if not pow_dic.has(powamp_meta):
|
||||
break
|
||||
@@ -194,15 +63,45 @@ func power_fill(pow_dic: Dictionary, fs_result: Dictionary) -> void:
|
||||
if powamp_meta in ['um_8', 'um_9', 'um_10', 'um_11', 'um_12', 'um_13'] and not fs_result.fs_7: return
|
||||
i_powapm.value0 = pow_dic[powamp_meta]
|
||||
for i_p in pow_dic[powamp_meta]:
|
||||
if i_p < constants_k.POWER_THRESHOLD:
|
||||
if i_p < 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 = unit_prd_k.block_kasseta_y5_config
|
||||
func on_press_device() -> void:
|
||||
var nodes_y5: Array = get_tree().get_nodes_in_group('y-5')
|
||||
var node_ip_power_arr: Array = get_tree().get_nodes_in_group('power_supply')
|
||||
var fs_nodes: Array = get_tree().get_nodes_in_group('fs_group')
|
||||
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
var module_fs_1: Node = $kasseta_fs_kd/ref_A2
|
||||
var module_fs_6: Node = $kasseta_fs_kd/ref_A4
|
||||
var dou_6: Node = $dou6_A7
|
||||
var module_fs_7: Node = $kasseta_fs_kd/ref_A7
|
||||
var dou_7: Node = $dou7_A8
|
||||
var for_control_result: Dictionary = {
|
||||
'result_dic': unit_prd_k.control_results,
|
||||
'power_dic': unit_prd_k.power_result,
|
||||
'block_kasseta_y5_config': unit_prd_k.block_kasseta_y5_config,
|
||||
'block_ip_config': unit_prd_k.block_ip_config,
|
||||
'nodes_y5': nodes_y5,
|
||||
'node_ip_power_arr': node_ip_power_arr,
|
||||
'fs_nodes': fs_nodes,
|
||||
'power_amplifier': power_amplifier,
|
||||
'POWER_THRESHOLD': unit_prd_k.constants.POWER_THRESHOLD,
|
||||
'name_prd': unit_prd_k.self_name,
|
||||
'module_fs_1': module_fs_1,
|
||||
'module_fs_6': module_fs_6,
|
||||
'dou_6': dou_6,
|
||||
'module_fs_7': module_fs_7,
|
||||
'dou_7': dou_7,
|
||||
}
|
||||
on_control_result(for_control_result)
|
||||
|
||||
|
||||
func on_control_result(for_result_dic: Dictionary) -> void:
|
||||
## If control is end
|
||||
var block_kasseta_y5_prd_config_k: Dictionary = for_result_dic.block_kasseta_y5_config
|
||||
var nodes_y5: Array = for_result_dic.nodes_y5
|
||||
for node_y5 in nodes_y5:
|
||||
var meta_y5 = node_y5.get_meta('y5')
|
||||
if block_kasseta_y5_prd_config_k.has(meta_y5):
|
||||
@@ -211,15 +110,15 @@ func on_control_result(result_dic: Dictionary, power_dic: Dictionary) -> void:
|
||||
break
|
||||
node_y5.state = STATE_VAL.GOOD if block_kasseta_y5_prd_config_k[meta_y5] else STATE_VAL.ERROR
|
||||
|
||||
block_ip_config_k = unit_prd_k.block_ip_config
|
||||
var block_ip_config_k: Dictionary = unit_prd_k.block_ip_config
|
||||
var node_ip_power_arr: Array = get_tree().get_nodes_in_group('power_supply')
|
||||
for power_supply in node_ip_power_arr:
|
||||
var meta_ip = power_supply.get_meta('ip')
|
||||
if block_ip_config_k.has(meta_ip) and block_kasseta_y5_prd_config_k.ug:
|
||||
power_supply.state = STATE_VAL.GOOD if block_ip_config_k[meta_ip][1] else STATE_VAL.ERROR
|
||||
|
||||
var fs_nodes: Array = get_tree().get_nodes_in_group('fs_group')
|
||||
for f in fs_nodes:
|
||||
var result_dic: Dictionary = for_result_dic.result_dic
|
||||
for f in for_result_dic.fs_nodes:
|
||||
var fs_meta: String = f.get_meta('fs')
|
||||
if result_dic.has(fs_meta):
|
||||
var new_state = result_dic[fs_meta]
|
||||
@@ -227,29 +126,27 @@ func on_control_result(result_dic: Dictionary, power_dic: Dictionary) -> void:
|
||||
result_dic[fs_meta] = new_state
|
||||
|
||||
if result_dic.fs_1 == 1:
|
||||
$kasseta_fs_kd/ref_A2.state = STATE_VAL.GOOD if result_dic.dkm_1 else STATE_VAL.ERROR
|
||||
for_result_dic.module_fs_1.state = STATE_VAL.GOOD if result_dic.dkm_1 else STATE_VAL.ERROR
|
||||
else:
|
||||
result_dic.fs_1 = false
|
||||
result_dic.fs_1 = 0
|
||||
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
|
||||
for_result_dic.module_fs_6.state = STATE_VAL.GOOD if result_dic.dkm_6 else STATE_VAL.ERROR
|
||||
for_result_dic.dou_6.state = STATE_VAL.GOOD if result_dic.dou_6 else STATE_VAL.ERROR
|
||||
else:
|
||||
result_dic.fs_6 = false
|
||||
result_dic.fs_6 = 0
|
||||
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
|
||||
for_result_dic.module_fs_7.state = STATE_VAL.GOOD if result_dic.dkm_7 else STATE_VAL.ERROR
|
||||
for_result_dic.dou_7.state = STATE_VAL.GOOD if result_dic.dou_7 else STATE_VAL.ERROR
|
||||
else:
|
||||
result_dic.fs_7 = false
|
||||
result_dic.fs_7 = 0
|
||||
|
||||
power_fill(for_result_dic.power_dic, for_result_dic.result_dic, for_result_dic.power_amplifier, for_result_dic.POWER_THRESHOLD)
|
||||
|
||||
power_fill(power_dic, result_dic)
|
||||
|
||||
var result = true
|
||||
var result: bool = true
|
||||
for device in result_dic.values():
|
||||
if not device:
|
||||
result = false
|
||||
|
||||
var name_prd = unit_prd_k.self_name
|
||||
log.message(Logger.INFO, 'Прибор ПРД-%s %s' % [name_prd, ['неисправен', 'исправен'][int(result)]])
|
||||
log.message(Logger.INFO, 'Прибор ПРД-%s %s' % [for_result_dic.name_prd, ['неисправен', 'исправен'][int(result)]])
|
||||
|
||||
|
||||
func find_labels(node1: Node):
|
||||
|
||||
@@ -1,126 +1,31 @@
|
||||
@tool
|
||||
extends 'res://scenes/контроль/прибор.gd'
|
||||
|
||||
const constants_n = {
|
||||
'POWER_UKP_1': 31,
|
||||
'POWER_UKP_2': 63,
|
||||
'DKM_BIT_2': 1,
|
||||
'DKM_BIT_3': 2,
|
||||
'BASE_ADDR_EMS_G': 0x120,
|
||||
'ADDR_UG_LITERA_1': 0x106,
|
||||
'ADDR_UG_LITERA_2': 0x108,
|
||||
'ADDR_UG_LITERA_3': 0x10A,
|
||||
'TEMP_THRESHOLD': 70,
|
||||
'POWER_THRESHOLD': 40,
|
||||
'RAY_DOU_NUM': 0x3,
|
||||
'ATT_UM_2': 0x2,
|
||||
'ATT_UM_3': 0x3,
|
||||
'POWER_UM': 100,
|
||||
'TIMER_DELAY': 10.0,
|
||||
'STATE_MASHINE_TIMER': 0.3,
|
||||
}
|
||||
# Конфигурация параметров для каждого прибора
|
||||
const PRIBOR_CONFIG_N := {
|
||||
'1н': {'angle': 0.0, 'sectors': [4, 8]},
|
||||
'2н': {'angle': 90.0, 'sectors': [7, 11]},
|
||||
'3н': {'angle': 180.0, 'sectors': [6, 10]},
|
||||
'4н': {'angle': 270.0, 'sectors': [5, 9]},
|
||||
}
|
||||
# Конфигурация частот и ширин для каждого ФС
|
||||
const FS_PARAMS_N := {
|
||||
2: {'freq': 932.0, 'width': 100.0},
|
||||
3: {'freq': 1157.0, 'width': 100.0}
|
||||
}
|
||||
enum STATE_VAL { NONE = 0, GOOD = 1, ERROR = 2 }
|
||||
var block_ip_config_n:= {
|
||||
'maa2000_1': [0, false],
|
||||
'maa2000_2': [1, false],
|
||||
'ip9_50_1': [2, false],
|
||||
'ip9_50_2': [3, false],
|
||||
'ip12_50_1': [4, false],
|
||||
'ip5_25': [7, false],
|
||||
}
|
||||
var block_kasseta_y5_prd_config_n: = {
|
||||
'yau07': false,
|
||||
'ems': false,
|
||||
'ug': false,
|
||||
'ukp1': false,
|
||||
'ukp2': false,
|
||||
}
|
||||
|
||||
# Основные переменные
|
||||
var start_litera: int = 2
|
||||
var ug_work_1: int = 2 ## Аттенюация усилителей мощности
|
||||
var ug_work_2: int = 3 ## Аттенюация усилителей мощности
|
||||
# Флаги и таймеры
|
||||
var mashine_timer: Timer = Timer.new()
|
||||
var prd_n_module: Object
|
||||
var unit_prd_n: Object
|
||||
var control_prd_n: Object
|
||||
# Результаты контроля
|
||||
var control_results_n: Dictionary = {
|
||||
'block_ip': false, # Проверка касет П1 и ИП МА2000
|
||||
'temperature': true, # Проверка температур УМ
|
||||
'dkm_2': false,
|
||||
'dkm_3': false,
|
||||
'dou_2': false,
|
||||
'dou_3': false,
|
||||
'fs_2': 2,
|
||||
'fs_3': 2,
|
||||
}
|
||||
var test_control_n = preload('res://scripts/pribor-prd.gd')
|
||||
var ctrl_pos = 0
|
||||
################################
|
||||
func on_state_mashine() -> void:
|
||||
control_prd_n.state_control_machine()
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
print_debug('В сцене ПРД-Н!')
|
||||
var unit_name = get_meta('unit_name')[0]
|
||||
var prd_n_module = prd.prd_dict[unit_name]
|
||||
unit_prd_n = prd_n_module.unit_control
|
||||
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
for temp in power_amplifier:
|
||||
temp.value1 = -70
|
||||
unit_prd_n.connect('control_is_over', Callable(self, 'on_press_device'))
|
||||
on_press_device()
|
||||
|
||||
|
||||
func start_control() -> void:
|
||||
initialize_connections()
|
||||
setup_timer()
|
||||
set_default_state()
|
||||
find_labels(self)
|
||||
|
||||
|
||||
func initialize_connections() -> void:
|
||||
var unit_name = get_meta('unit_name')[0]
|
||||
prd_n_module = prd.prd_dict[unit_name]
|
||||
unit_prd_n = prd_n_module.unit_yau07
|
||||
|
||||
unit_prd_n.connect('line_changed', Callable(self, 'on_line_changed'))
|
||||
var power_amplifiers: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
var init_data: Dictionary = {
|
||||
'control_label': $control_result,
|
||||
'power_amplifiers': power_amplifiers,
|
||||
'unit_prd': unit_prd_n,
|
||||
'module_prd' : prd_n_module,
|
||||
'constants': constants_n,
|
||||
'prd_config': PRIBOR_CONFIG_N,
|
||||
'fs_params': FS_PARAMS_N,
|
||||
'block_ip_prd_config': block_ip_config_n,
|
||||
'block_kasseta_y5_prd_config': block_kasseta_y5_prd_config_n,
|
||||
'control_results': control_results_n,
|
||||
'current_litera': start_litera,
|
||||
}
|
||||
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'))
|
||||
|
||||
|
||||
func setup_timer() -> void:
|
||||
pass
|
||||
#add_child(mashine_timer)
|
||||
#mashine_timer.connect('timeout', Callable(self, 'on_state_mashine'))
|
||||
#mashine_timer.wait_time = constants_n.STATE_MASHINE_TIMER
|
||||
#mashine_timer.start()
|
||||
|
||||
|
||||
func set_default_state() -> void:
|
||||
for group in get_tree().get_nodes_in_group('default_reset'):
|
||||
group.state = STATE_VAL.NONE
|
||||
@@ -132,13 +37,8 @@ func set_default_state() -> void:
|
||||
func _enter_tree() -> void:
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
$control_result.text = 'Выполняется ...'
|
||||
$control_result.text = 'Ожидается запуск контроля ...' # TODO: Необходимо сделать пулл сообщений
|
||||
$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:
|
||||
@@ -147,30 +47,11 @@ func _exit_tree() -> void:
|
||||
#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]])
|
||||
|
||||
|
||||
func on_line_changed(unit_pribor: Object) -> void:
|
||||
if not unit_pribor.online:
|
||||
set_default_state()
|
||||
|
||||
|
||||
func on_mode_changed(in_tree: bool) -> void:
|
||||
print_debug('Выход из сцены')
|
||||
#if not in_tree:
|
||||
#mashine_timer.stop()
|
||||
#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 power_fill(pow_dic: Dictionary, fs_result: 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')
|
||||
static func power_fill(pow_dic: Dictionary, fs_result: Dictionary, power_amplifier: Array, POWER_THRESHOLD: int) -> void:
|
||||
for i_powapm in power_amplifier:
|
||||
var powamp_meta: String = i_powapm.get_meta('um')
|
||||
var status = STATE_VAL.GOOD if pow_dic else STATE_VAL.NONE
|
||||
if not pow_dic.has(powamp_meta): return
|
||||
if pow_dic[powamp_meta].size() < 6:
|
||||
status = STATE_VAL.ERROR
|
||||
else:
|
||||
@@ -178,15 +59,43 @@ func power_fill(pow_dic: Dictionary, fs_result: Dictionary) -> void:
|
||||
if powamp_meta in ['um_7', 'um_8', 'um_9', 'um_10', 'um_11', 'um_12'] and not fs_result.fs_3: return
|
||||
i_powapm.value0 = pow_dic[powamp_meta]
|
||||
for i_p in pow_dic[powamp_meta]:
|
||||
if i_p < constants_n.POWER_THRESHOLD:
|
||||
if i_p < 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
|
||||
func on_press_device() -> void:
|
||||
var nodes_y5: Array = get_tree().get_nodes_in_group('y-5')
|
||||
var node_ip_power_arr: Array = get_tree().get_nodes_in_group('power_supply')
|
||||
var fs_nodes: Array = get_tree().get_nodes_in_group('fs_group')
|
||||
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
var module_fs_2: Node = $kasseta_FS_ND/ref_A4
|
||||
var dou_2: Node = $dou2_A5
|
||||
var module_fs_3: Node = $kasseta_FS_ND/ref_A3
|
||||
var dou_3: Node = $dou3_A6
|
||||
var for_control_result: Dictionary = {
|
||||
'result_dic': unit_prd_n.control_results,
|
||||
'power_dic': unit_prd_n.power_result,
|
||||
'block_kasseta_y5_config': unit_prd_n.block_kasseta_y5_config,
|
||||
'block_ip_config': unit_prd_n.block_ip_config,
|
||||
'nodes_y5': nodes_y5,
|
||||
'node_ip_power_arr': node_ip_power_arr,
|
||||
'fs_nodes': fs_nodes,
|
||||
'power_amplifier': power_amplifier,
|
||||
'POWER_THRESHOLD': unit_prd_n.constants.POWER_THRESHOLD,
|
||||
'name_prd': unit_prd_n.self_name,
|
||||
'module_fs_2': module_fs_2,
|
||||
'dou_2': dou_2,
|
||||
'module_fs_3': module_fs_3,
|
||||
'dou_3': dou_3,
|
||||
}
|
||||
on_control_result(for_control_result)
|
||||
|
||||
|
||||
func on_control_result(for_result_dic: Dictionary) -> void:
|
||||
## If control is end
|
||||
var block_kasseta_y5_prd_config_n: Dictionary = for_result_dic.block_kasseta_y5_config
|
||||
var nodes_y5: Array = for_result_dic.nodes_y5
|
||||
for node_y5 in nodes_y5:
|
||||
var meta_y5 = node_y5.get_meta('y5')
|
||||
if block_kasseta_y5_prd_config_n.has(meta_y5):
|
||||
@@ -195,15 +104,15 @@ func on_control_result(result_dic: Dictionary, power_dic: Dictionary) -> void:
|
||||
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
|
||||
var block_ip_config_n: Dictionary = unit_prd_n.block_ip_config
|
||||
var node_ip_power_arr: Array = get_tree().get_nodes_in_group('power_supply')
|
||||
for power_supply in node_ip_power_arr:
|
||||
var meta_ip = power_supply.get_meta('ip')
|
||||
if block_ip_config_n.has(meta_ip) and block_kasseta_y5_prd_config_n.ug:
|
||||
power_supply.state = STATE_VAL.GOOD if block_ip_config_n[meta_ip][1] else STATE_VAL.ERROR
|
||||
|
||||
var fs_nodes: Array = get_tree().get_nodes_in_group('fs_group')
|
||||
for f in fs_nodes:
|
||||
var result_dic: Dictionary = for_result_dic.result_dic
|
||||
for f in for_result_dic.fs_nodes:
|
||||
var fs_meta: String = f.get_meta('fs')
|
||||
if result_dic.has(fs_meta):
|
||||
var new_state = result_dic[fs_meta]
|
||||
@@ -211,30 +120,24 @@ func on_control_result(result_dic: Dictionary, power_dic: Dictionary) -> void:
|
||||
result_dic[fs_meta] = new_state
|
||||
|
||||
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
|
||||
for_result_dic.module_fs_2.state = STATE_VAL.GOOD if result_dic.dkm_2 else STATE_VAL.ERROR
|
||||
for_result_dic.dou_2.state = STATE_VAL.GOOD if result_dic.dou_2 else STATE_VAL.ERROR
|
||||
else:
|
||||
result_dic.fs_2 = 0
|
||||
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
|
||||
for_result_dic.module_fs_3.state = STATE_VAL.GOOD if result_dic.dkm_3 else STATE_VAL.ERROR
|
||||
for_result_dic.dou_3.state = STATE_VAL.GOOD if result_dic.dou_3 else STATE_VAL.ERROR
|
||||
else:
|
||||
result_dic.fs_3 = 0
|
||||
|
||||
power_fill(for_result_dic.power_dic, for_result_dic.result_dic, for_result_dic.power_amplifier, for_result_dic.POWER_THRESHOLD)
|
||||
|
||||
power_fill(power_dic, result_dic)
|
||||
|
||||
var result = true
|
||||
var result: bool = true
|
||||
for device in result_dic.values():
|
||||
if not device:
|
||||
result = false
|
||||
|
||||
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.GREEN)
|
||||
else:
|
||||
$control_result.text = 'Прибор ПРД-%s неисправен' % name_prd
|
||||
$control_result.add_theme_color_override('font_color', Color.RED)
|
||||
log.message(Logger.INFO, 'Прибор ПРД-%s %s' % [for_result_dic.name_prd, ['неисправен', 'исправен'][int(result)]])
|
||||
|
||||
|
||||
func find_labels(node1: Node):
|
||||
|
||||
@@ -1,126 +1,31 @@
|
||||
@tool
|
||||
extends 'res://scenes/контроль/прибор.gd'
|
||||
|
||||
const constants_v = {
|
||||
'POWER_UKP_1': 31,
|
||||
'POWER_UKP_2': 63,
|
||||
'DKM_BIT_4': 3,
|
||||
'DKM_BIT_5': 4,
|
||||
'BASE_ADDR_EMS_G': 0x120,
|
||||
'ADDR_UG_LITERA_1': 0x106,
|
||||
'ADDR_UG_LITERA_2': 0x108,
|
||||
'ADDR_UG_LITERA_3': 0x10A,
|
||||
'TEMP_THRESHOLD': 70,
|
||||
'POWER_THRESHOLD': 40,
|
||||
'RAY_DOU_NUM': 0x3,
|
||||
'ATT_UM_4': 0x2,
|
||||
'ATT_UM_5': 0x3,
|
||||
'POWER_UM': 100,
|
||||
'TIMER_DELAY': 10.0,
|
||||
'STATE_MASHINE_TIMER': 0.3,
|
||||
}
|
||||
# Конфигурация параметров для каждого прибора
|
||||
const PRIBOR_CONFIG_V := {
|
||||
'1в': {'angle': 0.0, 'sectors': [12, 16]},
|
||||
'2в': {'angle': 90.0, 'sectors': [15, 19]},
|
||||
'3в': {'angle': 180.0, 'sectors': [14, 18]},
|
||||
'4в': {'angle': 270.0, 'sectors': [13, 17]},
|
||||
}
|
||||
# Конфигурация частот и ширин для каждого ФС
|
||||
const FS_PARAMS_V := {
|
||||
4: {'freq': 1227.0, 'width': 100.0},
|
||||
5: {'freq': 1575.0, 'width': 110.0},
|
||||
}
|
||||
enum STATE_VAL { NONE = 0, GOOD = 1, ERROR = 2 }
|
||||
var block_ip_config_v := {
|
||||
'maa2000_1': [0, false],
|
||||
'maa2000_2': [1, false],
|
||||
'ip9_50_1': [2, false],
|
||||
'ip9_50_2': [3, false],
|
||||
'ip12_50_1': [4, false],
|
||||
'ip5_25': [7, false],
|
||||
}
|
||||
var block_kasseta_y5_prd_config_v: = {
|
||||
'yau07': false,
|
||||
'ems': false,
|
||||
'ug': false,
|
||||
'ukp1': false,
|
||||
'ukp2': false,
|
||||
}
|
||||
|
||||
# Основные переменные
|
||||
var start_litera: int = 4
|
||||
var ug_work_1: int = 2 ## Аттенюация усилителей мощности
|
||||
var ug_work_2: int = 3 ## Аттенюация усилителей мощности
|
||||
# Флаги и таймеры
|
||||
var mashine_timer: Timer = Timer.new()
|
||||
var prd_v_module: Object
|
||||
var unit_prd_v: Object
|
||||
var control_prd_v: Object
|
||||
# Результаты контроля
|
||||
var control_results_v: Dictionary = {
|
||||
'block_ip': false, # Проверка касет П1 и ИП МА2000
|
||||
'temperature': true, # Проверка температур УМ
|
||||
'dkm_4': false,
|
||||
'dkm_5': false,
|
||||
'dou_4': false,
|
||||
'dou_5': false,
|
||||
'fs_4': 2,
|
||||
'fs_5': 2,
|
||||
}
|
||||
var test_control_v = preload('res://scripts/pribor-prd.gd')
|
||||
var ctrl_pos = 70
|
||||
|
||||
|
||||
func on_state_mashine() -> void:
|
||||
control_prd_v.state_control_machine()
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
print_debug('В сцене ПРД-В!')
|
||||
var unit_name = get_meta('unit_name')[0]
|
||||
var prd_v_module = prd.prd_dict[unit_name]
|
||||
unit_prd_v = prd_v_module.unit_control
|
||||
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
for temp in power_amplifier:
|
||||
temp.value1 = -70
|
||||
unit_prd_v.connect('control_is_over', Callable(self, 'on_press_device'))
|
||||
on_press_device()
|
||||
|
||||
|
||||
func start_control() -> void:
|
||||
initialize_connections()
|
||||
setup_timer()
|
||||
set_default_state()
|
||||
find_labels(self)
|
||||
|
||||
|
||||
func initialize_connections() -> void:
|
||||
var unit_name = get_meta('unit_name')[0]
|
||||
prd_v_module = prd.prd_dict[unit_name]
|
||||
unit_prd_v = prd_v_module.unit_yau07
|
||||
|
||||
unit_prd_v.connect('line_changed', Callable(self, 'on_line_changed'))
|
||||
var power_amplifiers: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
var init_data: Dictionary = {
|
||||
'control_label': $control_result,
|
||||
'power_amplifiers': power_amplifiers,
|
||||
'unit_prd': unit_prd_v,
|
||||
'module_prd' : prd_v_module,
|
||||
'constants': constants_v,
|
||||
'prd_config': PRIBOR_CONFIG_V,
|
||||
'fs_params': FS_PARAMS_V,
|
||||
'block_ip_prd_config': block_ip_config_v,
|
||||
'block_kasseta_y5_prd_config': block_kasseta_y5_prd_config_v,
|
||||
'control_results': control_results_v,
|
||||
'current_litera': start_litera,
|
||||
}
|
||||
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'))
|
||||
|
||||
|
||||
func setup_timer() -> void:
|
||||
add_child(mashine_timer)
|
||||
mashine_timer.connect('timeout', Callable(self, 'on_state_mashine'))
|
||||
mashine_timer.wait_time = constants_v.STATE_MASHINE_TIMER
|
||||
mashine_timer.start()
|
||||
|
||||
|
||||
func set_default_state() -> void:
|
||||
for group in get_tree().get_nodes_in_group('default_reset'):
|
||||
group.state = STATE_VAL.NONE
|
||||
@@ -132,14 +37,8 @@ func set_default_state() -> void:
|
||||
func _enter_tree() -> void:
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
$control_result.text = 'Выполняется ...'
|
||||
$control_result.text = 'Ожидается запуск контроля ...' # TODO: Необходимо сделать пулл сообщений
|
||||
$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:
|
||||
@@ -148,28 +47,11 @@ func _exit_tree() -> 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]])
|
||||
|
||||
|
||||
func on_line_changed(unit_pribor: Object) -> void:
|
||||
if not unit_pribor.online:
|
||||
set_default_state()
|
||||
|
||||
|
||||
func on_mode_changed(in_tree: bool) -> void:
|
||||
print_debug('Выход из сцены')
|
||||
#if not in_tree:
|
||||
#mashine_timer.stop()
|
||||
#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 power_fill(pow_dic: Dictionary, fs_result: Dictionary) -> void:
|
||||
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
static func power_fill(pow_dic: Dictionary, fs_result: Dictionary, power_amplifier: Array, POWER_THRESHOLD: int) -> void:
|
||||
for i_powapm in power_amplifier:
|
||||
var powamp_meta: String = i_powapm.get_meta('um')
|
||||
var status = STATE_VAL.GOOD if pow_dic else STATE_VAL.NONE
|
||||
if not pow_dic.has(powamp_meta): return
|
||||
if pow_dic[powamp_meta].size() < 6:
|
||||
status = STATE_VAL.ERROR
|
||||
else:
|
||||
@@ -177,15 +59,43 @@ func power_fill(pow_dic: Dictionary, fs_result: Dictionary) -> void:
|
||||
if powamp_meta in ['um_7', 'um_8', 'um_9', 'um_10', 'um_11', 'um_12'] and not fs_result.fs_5: return
|
||||
i_powapm.value0 = pow_dic[powamp_meta]
|
||||
for i_p in pow_dic[powamp_meta]:
|
||||
if i_p < constants_v.POWER_THRESHOLD:
|
||||
if i_p < 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
|
||||
func on_press_device() -> void:
|
||||
var nodes_y5: Array = get_tree().get_nodes_in_group('y-5')
|
||||
var node_ip_power_arr: Array = get_tree().get_nodes_in_group('power_supply')
|
||||
var fs_nodes: Array = get_tree().get_nodes_in_group('fs_group')
|
||||
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
var module_fs_4: Node = $kasseta_FS_VD/ref_A6
|
||||
var dou_4: Node = $dou4_A5
|
||||
var module_fs_5: Node = $kasseta_FS_VD/ref_A2
|
||||
var dou_5: Node = $dou5_A6
|
||||
var for_control_result: Dictionary = {
|
||||
'result_dic': unit_prd_v.control_results,
|
||||
'power_dic': unit_prd_v.power_result,
|
||||
'block_kasseta_y5_config': unit_prd_v.block_kasseta_y5_config,
|
||||
'block_ip_config': unit_prd_v.block_ip_config,
|
||||
'nodes_y5': nodes_y5,
|
||||
'node_ip_power_arr': node_ip_power_arr,
|
||||
'fs_nodes': fs_nodes,
|
||||
'power_amplifier': power_amplifier,
|
||||
'POWER_THRESHOLD': unit_prd_v.constants.POWER_THRESHOLD,
|
||||
'name_prd': unit_prd_v.self_name,
|
||||
'module_fs_4': module_fs_4,
|
||||
'dou_4': dou_4,
|
||||
'module_fs_5': module_fs_5,
|
||||
'dou_5': dou_5,
|
||||
}
|
||||
on_control_result(for_control_result)
|
||||
|
||||
|
||||
static func on_control_result(for_result_dic: Dictionary) -> void:
|
||||
## If control is end
|
||||
var block_kasseta_y5_prd_config_v: Dictionary = for_result_dic.block_kasseta_y5_config
|
||||
var nodes_y5: Array = for_result_dic.nodes_y5
|
||||
for node_y5 in nodes_y5:
|
||||
var meta_y5 = node_y5.get_meta('y5')
|
||||
if block_kasseta_y5_prd_config_v.has(meta_y5):
|
||||
@@ -194,15 +104,14 @@ func on_control_result(result_dic: Dictionary, power_dic: Dictionary) -> void:
|
||||
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
|
||||
var node_ip_power_arr: Array = get_tree().get_nodes_in_group('power_supply')
|
||||
for power_supply in node_ip_power_arr:
|
||||
var block_ip_config_v: Dictionary = for_result_dic.block_ip_config
|
||||
for power_supply in for_result_dic.node_ip_power_arr:
|
||||
var meta_ip = power_supply.get_meta('ip')
|
||||
if block_ip_config_v.has(meta_ip) and block_kasseta_y5_prd_config_v.ug:
|
||||
power_supply.state = STATE_VAL.GOOD if block_ip_config_v[meta_ip][1] else STATE_VAL.ERROR
|
||||
|
||||
var fs_nodes: Array = get_tree().get_nodes_in_group('fs_group')
|
||||
for f in fs_nodes:
|
||||
var result_dic: Dictionary = for_result_dic.result_dic
|
||||
for f in for_result_dic.fs_nodes:
|
||||
var fs_meta: String = f.get_meta('fs')
|
||||
if result_dic.has(fs_meta):
|
||||
var new_state = result_dic[fs_meta]
|
||||
@@ -210,29 +119,24 @@ func on_control_result(result_dic: Dictionary, power_dic: Dictionary) -> void:
|
||||
result_dic[fs_meta] = new_state
|
||||
|
||||
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
|
||||
for_result_dic.module_fs_5.state = STATE_VAL.GOOD if result_dic.dkm_5 else STATE_VAL.ERROR
|
||||
for_result_dic.dou_5.state = STATE_VAL.GOOD if result_dic.dou_5 else STATE_VAL.ERROR
|
||||
else:
|
||||
result_dic.fs_5 = 0
|
||||
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
|
||||
for_result_dic.module_fs_4.state = STATE_VAL.GOOD if result_dic.dkm_4 else STATE_VAL.ERROR
|
||||
for_result_dic.dou_4.state = STATE_VAL.GOOD if result_dic.dou_4 else STATE_VAL.ERROR
|
||||
else:
|
||||
result_dic.fs_4 = 0
|
||||
power_fill(power_dic, result_dic)
|
||||
|
||||
power_fill(for_result_dic.power_dic, for_result_dic.result_dic, for_result_dic.power_amplifier, for_result_dic.POWER_THRESHOLD)
|
||||
|
||||
var result = true
|
||||
var result: bool = true
|
||||
for device in result_dic.values():
|
||||
if not device:
|
||||
result = false
|
||||
|
||||
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.GREEN)
|
||||
else:
|
||||
$control_result.text = 'Прибор ПРД-%s неисправен' % name_prd
|
||||
$control_result.add_theme_color_override('font_color', Color.RED)
|
||||
log.message(Logger.INFO, 'Прибор ПРД-%s %s' % [for_result_dic.name_prd, ['неисправен', 'исправен'][int(result)]])
|
||||
|
||||
|
||||
func find_labels(node1: Node):
|
||||
|
||||
@@ -106,7 +106,6 @@ theme_override_styles/normal = SubResource("StyleBoxFlat_o1r22")
|
||||
text = "Внешнее управление"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
metadata/_edit_lock_ = true
|
||||
|
||||
[node name="тренаж_режим" type="Button" parent="."]
|
||||
layout_mode = 0
|
||||
@@ -125,7 +124,6 @@ theme_override_styles/normal = SubResource("StyleBoxFlat_imu1q")
|
||||
toggle_mode = true
|
||||
text = "Тренаж"
|
||||
script = ExtResource("9_41d34")
|
||||
metadata/_edit_lock_ = true
|
||||
|
||||
[node name="buttontest" type="Button" parent="."]
|
||||
visible = false
|
||||
|
||||
65
scenes/контроль/control_prd.gd
Normal file
65
scenes/контроль/control_prd.gd
Normal file
@@ -0,0 +1,65 @@
|
||||
extends Button
|
||||
|
||||
var base_style: StyleBoxFlat
|
||||
var tween
|
||||
var pulsing: bool = false
|
||||
@onready var progress_bars := get_tree().get_nodes_in_group("control_progress")
|
||||
|
||||
|
||||
func _ready():
|
||||
if get("theme_override_styles/disabled") == null:
|
||||
base_style = StyleBoxFlat.new()
|
||||
base_style.border_color = Color(1.0, 0.5, 0.0)
|
||||
base_style.border_width_top = 4
|
||||
base_style.border_width_bottom = 4
|
||||
base_style.border_width_left = 4
|
||||
base_style.border_width_right = 4
|
||||
set("theme_override_styles/disabled", base_style)
|
||||
else:
|
||||
base_style = get("theme_override_styles/disabled")
|
||||
connect("pressed", Callable(self, "_on_pressed"))
|
||||
|
||||
|
||||
func _on_pressed():
|
||||
disabled = true
|
||||
_start_pulse()
|
||||
var callback = Callable(self, "_check_progress_end")
|
||||
for pb in progress_bars:
|
||||
if not pb.is_connected("value_changed", callback):
|
||||
pb.connect("value_changed", callback)
|
||||
|
||||
|
||||
func _start_pulse():
|
||||
if pulsing:
|
||||
return
|
||||
pulsing = true
|
||||
tween = create_tween()
|
||||
tween.set_loops()
|
||||
var color1 = Color(1.0, 0.5, 0.0) # оранжевый
|
||||
var color2 = Color(0.4, 0.4, 0.4) # серый
|
||||
tween.tween_property(base_style, "border_color", color2, 0.5)\
|
||||
.set_trans(Tween.TRANS_SINE)\
|
||||
.set_ease(Tween.EASE_IN_OUT)
|
||||
tween.tween_property(base_style, "border_color", color1, 0.5)\
|
||||
.set_trans(Tween.TRANS_SINE)\
|
||||
.set_ease(Tween.EASE_IN_OUT)
|
||||
|
||||
|
||||
func _stop_pulse():
|
||||
if tween:
|
||||
tween.kill()
|
||||
tween = null
|
||||
base_style.border_color = Color(1.0, 0.5, 0.0)
|
||||
pulsing = false
|
||||
disabled = false
|
||||
var callback = Callable(self, "_check_progress_end")
|
||||
for pb in progress_bars:
|
||||
if pb.is_connected("value_changed", callback):
|
||||
pb.disconnect("value_changed", callback)
|
||||
|
||||
|
||||
func _check_progress_end(value):
|
||||
for pb in progress_bars:
|
||||
if pb.value < pb.max_value:
|
||||
return
|
||||
_stop_pulse()
|
||||
1
scenes/контроль/control_prd.gd.uid
Normal file
1
scenes/контроль/control_prd.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://cjj7pbbhk8q7c
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=20 format=3 uid="uid://lwmw4egynmd1"]
|
||||
[gd_scene load_steps=22 format=3 uid="uid://lwmw4egynmd1"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://bar8k5qef7kch" path="res://data/УФ.png" id="2_0nvm1"]
|
||||
[ext_resource type="Script" uid="uid://q3gmpsqspjfp" path="res://scenes/контроль/внешний.gd" id="2_8r80x"]
|
||||
@@ -17,6 +17,7 @@
|
||||
[ext_resource type="Texture2D" uid="uid://00871pb6moln" path="res://data/прогресс-фон-1.png" id="9_w6m6a"]
|
||||
[ext_resource type="Texture2D" uid="uid://c1k856fxhrjnh" path="res://data/прогресс-заполнение-1.png" id="10_lbx5w"]
|
||||
[ext_resource type="Script" uid="uid://bncy1x53jp73d" path="res://scenes/контроль/connect_pribor.gd" id="11_u7tym"]
|
||||
[ext_resource type="Script" uid="uid://cjj7pbbhk8q7c" path="res://scenes/контроль/control_prd.gd" id="18_lbx5w"]
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_iqgf5"]
|
||||
script/source = "extends Panel
|
||||
@@ -177,6 +178,15 @@ animations = [{
|
||||
"speed": 5.0
|
||||
}]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_lbx5w"]
|
||||
bg_color = Color(0.6, 0.6, 0.6, 0)
|
||||
border_width_left = 10
|
||||
border_width_top = 10
|
||||
border_width_right = 10
|
||||
border_width_bottom = 10
|
||||
border_color = Color(0.833286, 0.436556, 0.229611, 1)
|
||||
border_blend = true
|
||||
|
||||
[node name="Контроль" type="Panel"]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@@ -412,7 +422,7 @@ sprite_frames = SubResource("SpriteFrames_foasq")
|
||||
frame_progress = 0.72355
|
||||
script = ExtResource("11_u7tym")
|
||||
|
||||
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_n_1"]
|
||||
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_n_1" groups=["control_progress"]]
|
||||
visible = false
|
||||
layout_mode = 0
|
||||
offset_left = -4.0
|
||||
@@ -455,7 +465,6 @@ metadata/unit_name = ["уарэп-эмс"]
|
||||
metadata/online_proc = "on_line_changed"
|
||||
|
||||
[node name="label" type="Label" parent="pribor_uf"]
|
||||
self_modulate = Color(0, 1, 0, 1)
|
||||
layout_mode = 0
|
||||
offset_left = 15.0
|
||||
offset_top = -44.0
|
||||
@@ -754,7 +763,7 @@ sprite_frames = SubResource("SpriteFrames_foasq")
|
||||
frame_progress = 0.72355
|
||||
script = ExtResource("11_u7tym")
|
||||
|
||||
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_v_2"]
|
||||
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_v_2" groups=["control_progress"]]
|
||||
visible = false
|
||||
layout_mode = 0
|
||||
offset_left = -4.0
|
||||
@@ -831,7 +840,7 @@ sprite_frames = SubResource("SpriteFrames_foasq")
|
||||
frame_progress = 0.72355
|
||||
script = ExtResource("11_u7tym")
|
||||
|
||||
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_n_2"]
|
||||
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_n_2" groups=["control_progress"]]
|
||||
visible = false
|
||||
layout_mode = 0
|
||||
offset_left = -4.0
|
||||
@@ -906,7 +915,7 @@ sprite_frames = SubResource("SpriteFrames_foasq")
|
||||
frame_progress = 0.72355
|
||||
script = ExtResource("11_u7tym")
|
||||
|
||||
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_k_2"]
|
||||
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_k_2" groups=["control_progress"]]
|
||||
visible = false
|
||||
layout_mode = 0
|
||||
offset_left = -4.0
|
||||
@@ -981,7 +990,7 @@ sprite_frames = SubResource("SpriteFrames_foasq")
|
||||
frame_progress = 0.72355
|
||||
script = ExtResource("11_u7tym")
|
||||
|
||||
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_v_3"]
|
||||
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_v_3" groups=["control_progress"]]
|
||||
visible = false
|
||||
layout_mode = 0
|
||||
offset_left = -8.0
|
||||
@@ -1056,7 +1065,7 @@ sprite_frames = SubResource("SpriteFrames_foasq")
|
||||
frame_progress = 0.72355
|
||||
script = ExtResource("11_u7tym")
|
||||
|
||||
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_n_3"]
|
||||
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_n_3" groups=["control_progress"]]
|
||||
visible = false
|
||||
layout_mode = 0
|
||||
offset_left = -7.0
|
||||
@@ -1131,7 +1140,7 @@ sprite_frames = SubResource("SpriteFrames_foasq")
|
||||
frame_progress = 0.72355
|
||||
script = ExtResource("11_u7tym")
|
||||
|
||||
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_k_3"]
|
||||
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_k_3" groups=["control_progress"]]
|
||||
visible = false
|
||||
layout_mode = 0
|
||||
offset_left = -8.0
|
||||
@@ -1206,7 +1215,7 @@ sprite_frames = SubResource("SpriteFrames_foasq")
|
||||
frame_progress = 0.72355
|
||||
script = ExtResource("11_u7tym")
|
||||
|
||||
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_v_1"]
|
||||
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_v_1" groups=["control_progress"]]
|
||||
visible = false
|
||||
layout_mode = 0
|
||||
offset_left = -4.0
|
||||
@@ -1281,7 +1290,7 @@ sprite_frames = SubResource("SpriteFrames_foasq")
|
||||
frame_progress = 0.72355
|
||||
script = ExtResource("11_u7tym")
|
||||
|
||||
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_k_1"]
|
||||
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_k_1" groups=["control_progress"]]
|
||||
visible = false
|
||||
layout_mode = 0
|
||||
offset_left = -4.0
|
||||
@@ -1355,7 +1364,7 @@ sprite_frames = SubResource("SpriteFrames_foasq")
|
||||
frame_progress = 0.72355
|
||||
script = ExtResource("11_u7tym")
|
||||
|
||||
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_v_4"]
|
||||
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_v_4" groups=["control_progress"]]
|
||||
visible = false
|
||||
layout_mode = 0
|
||||
offset_left = -6.0
|
||||
@@ -1429,7 +1438,7 @@ sprite_frames = SubResource("SpriteFrames_foasq")
|
||||
frame_progress = 0.72355
|
||||
script = ExtResource("11_u7tym")
|
||||
|
||||
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_n_4"]
|
||||
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_n_4" groups=["control_progress"]]
|
||||
visible = false
|
||||
layout_mode = 0
|
||||
offset_left = -8.0
|
||||
@@ -1503,7 +1512,7 @@ sprite_frames = SubResource("SpriteFrames_foasq")
|
||||
frame_progress = 0.72355
|
||||
script = ExtResource("11_u7tym")
|
||||
|
||||
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_k_4"]
|
||||
[node name="control_progress" type="TextureProgressBar" parent="pribor_prd_k_4" groups=["control_progress"]]
|
||||
visible = false
|
||||
layout_mode = 0
|
||||
offset_left = -8.0
|
||||
@@ -1647,14 +1656,16 @@ points = PackedVector2Array(-8, 0, 608, 0)
|
||||
width = 2.0
|
||||
default_color = Color(1, 1, 1, 0.352941)
|
||||
|
||||
[node name="control_prd" type="Button" parent="."]
|
||||
[node name="control_prd" type="Button" parent="." groups=["control_progress"]]
|
||||
layout_mode = 0
|
||||
offset_left = 1101.0
|
||||
offset_left = 1106.0
|
||||
offset_top = 64.0
|
||||
offset_right = 1326.0
|
||||
offset_right = 1331.0
|
||||
offset_bottom = 104.0
|
||||
focus_mode = 0
|
||||
theme_override_styles/disabled = SubResource("StyleBoxFlat_lbx5w")
|
||||
text = "Запуск контроля"
|
||||
script = ExtResource("18_lbx5w")
|
||||
|
||||
[connection signal="toggled" from="pribor_prd_n_1" to="pribor_prd_n_1" method="_on_toggled"]
|
||||
[connection signal="toggled" from="pribor_uf" to="pribor_uf" method="_on_toggled"]
|
||||
|
||||
@@ -98,7 +98,7 @@ func on_settings_changed():
|
||||
color_closed = ProjectSettings.get_setting('application/interfer/closed_sectors', Color(0.0, 0.0, 0.0, 1.0))
|
||||
color_emit_sel = color_select
|
||||
color_closed_emit = color_closed
|
||||
|
||||
|
||||
color_select *= Color(1.0, 1.0, 1.0, 0.0)
|
||||
color_ecm *= Color(1.0, 1.0, 1.0, 0.0)
|
||||
color_emit_sel *= Color(1.0, 1.0, 1.0, 0.2)
|
||||
@@ -167,6 +167,7 @@ func _ready():
|
||||
signaller.connect('threat_selected', Callable(self, 'on_threat_selected').bind(nodes))
|
||||
signaller.connect('interfer_selected', Callable(self, 'on_interfer_selected').bind(nodes))
|
||||
signaller.connect('interfer_new', Callable(self, 'on_interfer_new'))
|
||||
signaller.connect('on_prog_ecm_off', Callable(self, 'on_interfer_new'))
|
||||
signaller.connect('interfer_off_all', Callable(self, 'on_interfer_off_all'))
|
||||
signaller.connect('interfer_prinuditelno', Callable(self, 'on_interfer_prinuditelno').bind(nodes))
|
||||
signaller.connect('fs_selected', Callable(self, 'on_fs_selected'))
|
||||
@@ -521,6 +522,14 @@ func update_fs_colors():
|
||||
else:
|
||||
fs_colors[key] = color_select
|
||||
$canvas.set_band_colors(fs_colors)
|
||||
if fs_emit.size():
|
||||
if $btn_activate.pressed:
|
||||
$btn_activate.self_modulate = Color.RED
|
||||
else:
|
||||
$btn_activate.self_modulate = Color.WHITE
|
||||
else:
|
||||
$btn_activate.self_modulate = Color.WHITE
|
||||
|
||||
|
||||
|
||||
func unsel_fs_all(need_btns_off: bool):
|
||||
@@ -581,6 +590,8 @@ func on_btn_center_toggled(toggled_on: bool) -> void:
|
||||
func on_btn_activate_toggled(toggled_on: bool) -> void:
|
||||
$btn_activate.tooltip_text = 'Включает подавление (%s)' % ('включено' if toggled_on else 'отключено')
|
||||
signaller.emit_signal('emit_changed', toggled_on)
|
||||
if not toggled_on:
|
||||
$btn_activate.self_modulate = Color.WHITE
|
||||
|
||||
|
||||
func on_update_coordinates_label(coordinates_label) -> void:
|
||||
|
||||
@@ -379,12 +379,12 @@ texture_normal = ExtResource("14_ggrwd")
|
||||
[connection signal="drag_continue" from="." to="." method="_on_drag_continue"]
|
||||
[connection signal="toggled" from="btn_view" to="." method="on_button_view_toggled"]
|
||||
[connection signal="toggled" from="chk_auto" to="." method="on_value_changed"]
|
||||
[connection signal="toggled" from="btn_activate" to="." method="on_btn_activate"]
|
||||
[connection signal="toggled" from="btn_activate" to="." method="on_btn_activate_toggled"]
|
||||
[connection signal="toggled" from="btn_activate" to="." method="on_btn_activate"]
|
||||
[connection signal="toggled" from="btn_center" to="." method="on_btn_center_toggled"]
|
||||
[connection signal="button_down" from="zoom_plus" to="tilemap" method="_on_zoom_plus_button_down"]
|
||||
[connection signal="button_up" from="zoom_plus" to="tilemap" method="_on_zoom_button_up"]
|
||||
[connection signal="button_up" from="zoom_plus" to="tilemap" method="_on_zoom_plus_button_up"]
|
||||
[connection signal="button_up" from="zoom_plus" to="tilemap" method="_on_zoom_button_up"]
|
||||
[connection signal="button_down" from="zoom_minus" to="tilemap" method="_on_zoom_minus_button_down"]
|
||||
[connection signal="button_up" from="zoom_minus" to="tilemap" method="_on_zoom_button_up"]
|
||||
[connection signal="pressed" from="btn_all_work" to="." method="_on_btn_all_work_pressed"]
|
||||
|
||||
1
scripts/.gd.uid
Normal file
1
scripts/.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://durllxmhtejp1
|
||||
@@ -257,22 +257,34 @@ func on_timer_check_state(unit_instance, ecms, resend_timeout) -> void:
|
||||
func on_th_aoa_update(threats: Dictionary, ecms: Dictionary, unit_instance) -> void:
|
||||
gos_nmfs.clear()
|
||||
for thr in threats.values():
|
||||
if not gos_flag: # Составляется список запретных секторов работы
|
||||
if (thr.proto in gos_protocols) and thr.fflags.proto:
|
||||
var fs_arr: Array = []
|
||||
prd.find_fs_index(thr.aoa, thr.freq, fs_arr)
|
||||
if fs_arr.size():
|
||||
for item in fs_arr:
|
||||
var nmfs = prd.FS_PRD[item][1]
|
||||
gos_nmfs.append(nmfs)
|
||||
var fs_arr: Array = []
|
||||
var th_aoa = fposmod(thr.aoa - course, 360)
|
||||
prd.find_fs_index(th_aoa, thr.freq, fs_arr)
|
||||
if fs_arr.size():
|
||||
for item in fs_arr:
|
||||
var nmfs = prd.FS_PRD[item][1]
|
||||
thr.nmfs = nmfs
|
||||
if (thr.proto in gos_protocols) and thr.fflags.proto and (not gos_flag):
|
||||
gos_nmfs.append(nmfs)
|
||||
|
||||
thr.emit_state = 0
|
||||
for ecm in ecms.values():
|
||||
if thr.nmfs == ecm.nmfs:
|
||||
set_th_emit(thr, ecm)
|
||||
var ecm_active = true
|
||||
if not gos_flag:
|
||||
if ecm.nmfs in gos_nmfs:
|
||||
interfer_off(ecm, unit_instance)
|
||||
ecm_active = false
|
||||
if ecm_active and (prd.fs_caps_id[ecm.nmfs] in fs_closed):
|
||||
interfer_off(ecm, unit_instance)
|
||||
|
||||
var th_id = thr.id
|
||||
for ecm_i in thrs.keys():
|
||||
if thrs[ecm_i] == th_id:
|
||||
var ecm = ecms[ecm_i]
|
||||
ecm.params['freq'] = thr.freq
|
||||
ecm.kni = thr.aoa - course
|
||||
if ecm.kni < 0:
|
||||
ecm.kni += 360
|
||||
ecm.kni = fposmod(thr.aoa - course, 360)
|
||||
call_ecm_proc(ecm)
|
||||
if ecm.nmfs in gos_nmfs:
|
||||
interfer_off(ecm, unit_instance)
|
||||
@@ -283,23 +295,11 @@ func on_th_aoa_update(threats: Dictionary, ecms: Dictionary, unit_instance) -> v
|
||||
signaller.emit_signal('fs_update_color', ecms)
|
||||
prd.update_fs_state(ecms, trenazh_mode)
|
||||
|
||||
|
||||
for ecm in ecms.values():
|
||||
var ecm_active = true
|
||||
if not gos_flag:
|
||||
if ecm.nmfs in gos_nmfs:
|
||||
interfer_off(ecm, unit_instance)
|
||||
ecm_active = false
|
||||
if ecm_active and (prd.fs_caps_id[ecm.nmfs] in fs_closed):
|
||||
interfer_off(ecm, unit_instance)
|
||||
|
||||
if not auto_enabled:
|
||||
return
|
||||
|
||||
if auto_enabled:
|
||||
for thr in threats.values():
|
||||
var fs_arr: Array = []
|
||||
prd.find_fs_index(thr.aoa, thr.freq, fs_arr)
|
||||
var th_aoa = fposmod(thr.aoa - course, 360)
|
||||
prd.find_fs_index(th_aoa, thr.freq, fs_arr)
|
||||
if fs_arr.size():
|
||||
var need_continue = false
|
||||
for item in fs_arr:
|
||||
@@ -576,58 +576,8 @@ func on_threats_update(threat, ecms, unit_caps):
|
||||
if ecm.kni < 0:
|
||||
ecm.kni += 360
|
||||
set_nmfs(ecm)
|
||||
if threat.tmod != 'fm':
|
||||
if ecm != null:
|
||||
send_ecm(ecm, unit_caps)
|
||||
return
|
||||
var th_fm_dict: Dictionary
|
||||
var fs_index_arr: Array
|
||||
prd.find_fs_index(threat.aoa, threat.freq, fs_index_arr)
|
||||
if fs_index_arr.size() == 0:
|
||||
if ecm != null:
|
||||
send_ecm(ecm, unit_caps)
|
||||
return
|
||||
var fs_index = fs_index_arr[0]
|
||||
var nmfs = prd.FS_PRD[fs_index][1]
|
||||
if ecm == null:
|
||||
for ecm_i in ecms.values():
|
||||
if nmfs != ecm_i.nmfs: continue
|
||||
if ecm_i.svk != 1: continue
|
||||
ecm = ecm_i
|
||||
if ecm == null: return
|
||||
|
||||
for th_index in thrs_dict:
|
||||
if thrs_dict[th_index].tmod != 'fm': continue
|
||||
fs_index_arr = []
|
||||
prd.find_fs_index(thrs_dict[th_index].aoa, thrs_dict[th_index].freq, fs_index_arr)
|
||||
if fs_index_arr.size() == 0: continue
|
||||
if fs_index_arr[0] != fs_index: continue
|
||||
th_fm_dict[th_index] = thrs_dict[th_index]
|
||||
if len(th_fm_dict) > 1:
|
||||
pass
|
||||
send_ecm(ecm, unit_caps)
|
||||
|
||||
|
||||
func get_freq_range(freq_range_dict: Dictionary, th_dict: Dictionary):
|
||||
for key_i in th_dict:
|
||||
var min_range: int = 6000
|
||||
var key_min = null
|
||||
for key_j in th_dict:
|
||||
if key_i == key_j: continue
|
||||
var width = (th_dict[key_i].width / 2) + (th_dict[key_j].width / 2)
|
||||
var freq_range = abs(th_dict[key_i].freq - th_dict[key_j].freq) + width
|
||||
if freq_range < min_range:
|
||||
key_min = key_j
|
||||
min_range = freq_range
|
||||
var max_width = 0
|
||||
for key in PDCHM_PARAMS['files'].keys():
|
||||
if max_width < key: max_width = key
|
||||
if min_range > max_width:
|
||||
th_dict.erase(key_i)
|
||||
continue
|
||||
else:
|
||||
if key_min == null: continue
|
||||
freq_range_dict[key_i] = [th_dict[key_i], th_dict[key_min], min_range]
|
||||
if ecm != null:
|
||||
send_ecm(ecm, unit_caps)
|
||||
|
||||
|
||||
func find_threat(freq: int, aoa: float):
|
||||
@@ -677,6 +627,7 @@ func get_krp(threat: threats.Threat):
|
||||
|
||||
func on_interfer_off(ecm: Interfer, ecms):
|
||||
var sz = ecms.size()
|
||||
signaller.emit_signal('on_prog_ecm_off', ecm)
|
||||
ecms.erase(ecm.ispp)
|
||||
thrs.erase(ecm.ispp)
|
||||
interfer.cu.erase(ecm.ispp)
|
||||
@@ -712,3 +663,16 @@ func call_ecm_proc(ecm):
|
||||
|
||||
func on_update_fs_closed(fs_dict):
|
||||
fs_closed = fs_dict
|
||||
|
||||
|
||||
func set_th_emit(th: threats.Threat, ecm: Interfer):
|
||||
var freq_min = ecm.params['freq'] - ecm.params.get('width', settings.WIDTH_MAX)/2
|
||||
var freq_max = ecm.params['freq'] + ecm.params.get('width', settings.WIDTH_MAX)/2
|
||||
if (th.freq >= freq_min) and (th.freq <= freq_max):
|
||||
if ecm.svk == 1:
|
||||
th.emit_state = 2
|
||||
elif th.emit_state == 2:
|
||||
return
|
||||
else:
|
||||
th.emit_state = 1
|
||||
|
||||
|
||||
@@ -163,10 +163,9 @@ class PRD:
|
||||
var set_ug_state: bool = true ## Необходимо ли записать в УГ настройки
|
||||
signal update_serviceability()
|
||||
|
||||
func _init(u_name, u_yau07, u_control: Object):
|
||||
func _init(u_name, u_yau07):
|
||||
prd_name = u_name
|
||||
unit_yau07 = u_yau07
|
||||
unit_control = u_control
|
||||
init_ems_g()
|
||||
|
||||
|
||||
@@ -284,11 +283,12 @@ func _ready() -> void:
|
||||
check_dir()
|
||||
for prd_name in PRD_NAMES:
|
||||
var unit_prd = network.get_unit_instance(prd_name)
|
||||
var control_pribor_prd = preload('res://scripts/pribor-prd.gd')
|
||||
var unit_control = control_pribor_prd.TestPRD.new({'unit_prd': unit_prd})
|
||||
add_child(unit_control)
|
||||
var new_prd = PRD.new(prd_name, unit_prd, unit_control)
|
||||
var new_prd = PRD.new(prd_name, unit_prd)
|
||||
prd_dict[prd_name] = new_prd
|
||||
var control_pribor_prd = preload('res://scripts/pribor-prd.gd')
|
||||
var unit_control = control_pribor_prd.TestPRD.new({'unit_prd': unit_prd}, new_prd.cmd_array)
|
||||
add_child(unit_control)
|
||||
new_prd.unit_control = unit_control
|
||||
for key in FS_PRD.keys():
|
||||
var fs = Fs.new(key, FS_PRD[key][0])
|
||||
fs_dict[key] = fs
|
||||
|
||||
@@ -125,7 +125,7 @@ class TestPRD extends Node:
|
||||
'fs_2': 2,
|
||||
'fs_3': 2,
|
||||
}
|
||||
####
|
||||
####
|
||||
var block_ip_config_v := {
|
||||
'maa2000_1': [0, false],
|
||||
'maa2000_2': [1, false],
|
||||
@@ -141,7 +141,46 @@ class TestPRD extends Node:
|
||||
'ukp1': false,
|
||||
'ukp2': false,
|
||||
}
|
||||
|
||||
var control_results_v: Dictionary = {
|
||||
'block_ip': false, # Проверка касет П1 и ИП МА2000
|
||||
'temperature': true, # Проверка температур УМ
|
||||
'dkm_4': false,
|
||||
'dkm_5': false,
|
||||
'dou_4': false,
|
||||
'dou_5': false,
|
||||
'fs_4': 2,
|
||||
'fs_5': 2,
|
||||
}
|
||||
####
|
||||
var block_kasseta_y5_prd_config_k: = {
|
||||
'yau07': false,
|
||||
'ems': false,
|
||||
'ug': false,
|
||||
'ukp1': false,
|
||||
'ukp2': false,
|
||||
}
|
||||
var control_results_k: Dictionary = {
|
||||
'block_ip': false, # Проверка касет П1 и ИП МА2000
|
||||
'temperature': true,
|
||||
'dkm_1': false,
|
||||
'dkm_6': false,
|
||||
'dkm_7': false,
|
||||
'dou_6': false,
|
||||
'dou_7': false,
|
||||
'fs_1': 2,
|
||||
'fs_6': 2,
|
||||
'fs_7': 2,
|
||||
}
|
||||
var block_ip_config_k := {
|
||||
'maa2000_1': [0, false],
|
||||
'maa2000_2': [1, false],
|
||||
'ip9_50_1': [2, false],
|
||||
'ip9_50_2': [3, false],
|
||||
'ip12_50_1': [4, false],
|
||||
'ip9_50_3': [5, false],
|
||||
'ip12_50_2': [6, false],
|
||||
'ip5_25': [7, false],
|
||||
}
|
||||
####
|
||||
|
||||
const RAY_m5:= 'RAY_m5'
|
||||
@@ -201,7 +240,7 @@ class TestPRD extends Node:
|
||||
'TEMPERATURE_UKP_2': 79,
|
||||
}
|
||||
|
||||
var power_result: Dictionary = {
|
||||
var power_for_litera: Dictionary = {
|
||||
1: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],},
|
||||
2: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],},
|
||||
3: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],},
|
||||
@@ -224,16 +263,17 @@ class TestPRD extends Node:
|
||||
var flag_si_fs_input: bool = false
|
||||
var flag_si_fs_output: bool = false
|
||||
var unit_prd: Object
|
||||
var module_prd: Object
|
||||
var power_amplify: Array
|
||||
var power_result: Dictionary
|
||||
#var control_label: Label
|
||||
var control_timer: Timer = Timer.new()
|
||||
var ems_6666_timer: Timer = Timer.new()
|
||||
var machine_timer: Timer = Timer.new()
|
||||
signal control_is_over(control_results: Dictionary, power_result: Dictionary)
|
||||
signal control_is_over()
|
||||
signal update_progress(progress_value: float)
|
||||
signal update_max_value_progress(max_progress_value: int)
|
||||
var cc: int = 0
|
||||
var cmd_array: Array
|
||||
|
||||
var progress_value: float:
|
||||
set(v):
|
||||
@@ -245,13 +285,14 @@ class TestPRD extends Node:
|
||||
var ecms: Dictionary ## Словарь помеховых воздействий
|
||||
|
||||
## Инициализация аргуметнов
|
||||
func _init(init_data: Dictionary) -> void:
|
||||
func _init(init_data: Dictionary, cmd_array_from_prd: Array) -> void:
|
||||
unit_prd = init_data['unit_prd']
|
||||
cmd_array = cmd_array_from_prd
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
initialize_connections()
|
||||
_determine_self_name()
|
||||
initialize_connections()
|
||||
setup_timer()
|
||||
|
||||
|
||||
@@ -261,7 +302,7 @@ class TestPRD extends Node:
|
||||
|
||||
## Пакеты от ЯУ-07
|
||||
func on_data_received(unit_pribor: Object) -> void:
|
||||
if not is_inside_tree():
|
||||
if machine_timer.is_stopped():
|
||||
return
|
||||
|
||||
var status: PackedByteArray = unit_pribor.status
|
||||
@@ -271,11 +312,11 @@ class TestPRD extends Node:
|
||||
socket_status_ems_g(status)
|
||||
_process_dkm_status(status)
|
||||
if current_litera != 0:
|
||||
var tek_litera: Dictionary = power_result[current_litera]
|
||||
var tek_litera: Dictionary = power_for_litera[current_litera]
|
||||
var interes = _get_ray_key(state)
|
||||
if interes != '':
|
||||
tek_litera[_get_ray_key(state)] = power_um_ukp(status, current_litera, tek_litera[_get_ray_key(state)])
|
||||
power_result[current_litera] = tek_litera
|
||||
power_for_litera[current_litera] = tek_litera
|
||||
|
||||
|
||||
func socket_status_ems_g(packet_form_yau_07: PackedByteArray) -> void:
|
||||
@@ -329,7 +370,7 @@ class TestPRD extends Node:
|
||||
state = STATE_MACHINE.READ_ISA
|
||||
STATE_MACHINE.READ_ISA:
|
||||
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])
|
||||
_handle_read_isa(unit_prd, [constants.ADDR_UG_LITERA_1, constants.ADDR_UG_LITERA_2, constants.ADDR_UG_LITERA_3], cmd_array)
|
||||
flag_write_isa = false
|
||||
state = STATE_MACHINE.UG_SET_RAY
|
||||
STATE_MACHINE.UG_SET_RAY:
|
||||
@@ -349,7 +390,7 @@ class TestPRD extends Node:
|
||||
state = STATE_MACHINE.UG_SET_RAY_5
|
||||
elif unit_prd.isa_ports[addr] & 0x07 == 5:
|
||||
if not current_litera == 1:
|
||||
control_results = check_dou_result(control_results, power_result, self_name, current_litera, constants)
|
||||
control_results = check_dou_result(control_results, power_for_litera, self_name, current_litera, constants)
|
||||
state = STATE_MACHINE.IN_EMS_STOP
|
||||
elif unit_prd.isa_ports[addr] & 0x07 == 6:
|
||||
state = STATE_MACHINE.UG_SET_RAY_0
|
||||
@@ -400,8 +441,8 @@ class TestPRD extends Node:
|
||||
state = STATE_MACHINE.FS_TURN_ON
|
||||
else:
|
||||
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)
|
||||
power_result = prep_power(power_for_litera, self_name)
|
||||
emit_signal('control_is_over')
|
||||
machine_timer.stop()
|
||||
|
||||
|
||||
@@ -443,15 +484,12 @@ class TestPRD extends Node:
|
||||
elif self_name == '1н' or self_name == '2н' or self_name == '3н' or self_name == '4н':
|
||||
dic_att['ATT_UM_1'] = constants.ATT_UM_2
|
||||
dic_att['ATT_UM_2'] = constants.ATT_UM_3
|
||||
|
||||
##var log_text = dic_att.ATT_UM_3 if current_litera == 1 else dic_att.ATT_UM_1 if current_litera in [2, 4, 6] else dic_att.ATT_UM_2
|
||||
## 'Выполняется настройка угла (%s) и атт (0x0%s)' % [dic_att.RAY_DOU_NUM, log_text]
|
||||
flag_write_isa = on_ug_setting(module_prd, unit_prd, dic_att)
|
||||
flag_write_isa = on_ug_setting(unit_prd, dic_att, cmd_array)
|
||||
|
||||
|
||||
## Таймер отправки команды в ЭМС-Г для модуляции
|
||||
func _on_ems_6666_timer() -> void:
|
||||
module_prd.cmd_array.append([unit_prd.CmdCode.WRITE_ISA, [constants.BASE_ADDR_EMS_G, 6666]])
|
||||
cmd_array.append([unit_prd.CmdCode.WRITE_ISA, [constants.BASE_ADDR_EMS_G, 6666]])
|
||||
|
||||
|
||||
## Таймер вызова машины состояний
|
||||
@@ -499,6 +537,11 @@ class TestPRD extends Node:
|
||||
signaller.conn(signaller.start_contol_device, Callable(self, '_on_start_contol_device'))
|
||||
interfer.connect('interfer_resized', Callable(self, 'on_interfer_resized'))
|
||||
unit_prd.connect('data_received', Callable(self, 'on_data_received'))
|
||||
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 on_interfer_resized(ecms_dic: Dictionary) -> void:
|
||||
@@ -533,9 +576,9 @@ class TestPRD extends Node:
|
||||
constants = DEVICE_CONSTANT.PRD_V.CONSTANTS
|
||||
pribor_config = DEVICE_CONSTANT.PRD_V.PRIBOR_CONFIG
|
||||
fs_parameters = DEVICE_CONSTANT.PRD_V.FS_PARAMS
|
||||
block_ip_config = block_ip_config_n
|
||||
block_ip_config = block_ip_config_v
|
||||
block_kasseta_y5_config = block_kasseta_y5_prd_config_v
|
||||
control_results = control_results_n
|
||||
control_results = control_results_v
|
||||
current_litera = DEVICE_CONSTANT.PRD_V.START_LITERA
|
||||
if self_name == '1к' or self_name == '2к' or self_name == '3к' or self_name == '4к':
|
||||
progress_value = 0
|
||||
@@ -543,9 +586,9 @@ class TestPRD extends Node:
|
||||
constants = DEVICE_CONSTANT.PRD_K.CONSTANTS
|
||||
pribor_config = DEVICE_CONSTANT.PRD_K.PRIBOR_CONFIG
|
||||
fs_parameters = DEVICE_CONSTANT.PRD_K.FS_PARAMS
|
||||
block_ip_config = block_ip_config_n
|
||||
block_ip_config = block_ip_config_k
|
||||
block_kasseta_y5_config = block_kasseta_y5_prd_config_n
|
||||
control_results = control_results_n
|
||||
control_results = control_results_k
|
||||
current_litera = DEVICE_CONSTANT.PRD_K.START_LITERA
|
||||
|
||||
|
||||
@@ -562,7 +605,17 @@ class TestPRD extends Node:
|
||||
add_child(machine_timer)
|
||||
machine_timer.connect('timeout', Callable(self, 'on_state_mashine'))
|
||||
|
||||
|
||||
|
||||
func on_mode_changed(in_tree: bool) -> void:
|
||||
if not in_tree:
|
||||
progress_value = 0
|
||||
machine_timer.stop()
|
||||
state = STATE_MACHINE.INIT
|
||||
_handle_fs_turn_off_state()
|
||||
#prd_v_module.cmd_array.append([unit_prd_v.CmdCode.WRITE_ISA, [constants_v.ADDR_UG_LITERA_1, ug_work_1, constants_v.ADDR_UG_LITERA_2, ug_work_2]])
|
||||
else:
|
||||
pass
|
||||
|
||||
|
||||
func _process_dkm_status(status: PackedByteArray) -> void:
|
||||
if not control_results.has(_get_current_fs_key()):
|
||||
@@ -635,10 +688,10 @@ class TestPRD extends Node:
|
||||
|
||||
|
||||
## Установка угла и аттенюации для УМ
|
||||
static func on_ug_setting(prd_module: Object, prd_unit: Object, settings_ug: Dictionary) -> bool:
|
||||
static func on_ug_setting(prd_unit: Object, settings_ug: Dictionary, prd_cmd_array: Array) -> bool:
|
||||
var result_1 = ((settings_ug.ATT_UM_1 & 0x07) << 3) | (settings_ug.RAY_DOU_NUM & 0x07)
|
||||
var result_2 = ((settings_ug.ATT_UM_2 & 0x07) << 3) | (settings_ug.RAY_DOU_NUM & 0x07)
|
||||
prd_module.cmd_array.append([prd_unit.CmdCode.WRITE_ISA, [ settings_ug.ADDR_UG_LITERA_1, result_1,
|
||||
prd_cmd_array.append([prd_unit.CmdCode.WRITE_ISA, [ settings_ug.ADDR_UG_LITERA_1, result_1,
|
||||
settings_ug.ADDR_UG_LITERA_2, result_2,
|
||||
settings_ug.ADDR_UG_LITERA_3, settings_ug.ATT_UM_3,
|
||||
]
|
||||
@@ -646,8 +699,8 @@ class TestPRD extends Node:
|
||||
return true
|
||||
|
||||
|
||||
static func _handle_read_isa(prd_module: Object, prd_unit: Object, read_isa_ports: Array) -> void:
|
||||
prd_module.cmd_array.append([prd_unit.CmdCode.READ_ISA, read_isa_ports])
|
||||
static func _handle_read_isa(prd_unit: Object, read_isa_ports: Array, prd_cmd_array) -> void:
|
||||
prd_cmd_array.append([prd_unit.CmdCode.READ_ISA, read_isa_ports])
|
||||
|
||||
|
||||
## Управаление модулем фс (включить/отключить излучение)
|
||||
@@ -716,14 +769,14 @@ 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].value1 = 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].value1 = tmp_1
|
||||
#power_amplifier[6].value1 = tmp_1
|
||||
if tmp_1>70:
|
||||
all_temp_is_ok = false
|
||||
|
||||
@@ -732,11 +785,11 @@ class TestPRD extends Node:
|
||||
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].value1 = 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].value1 = tmp_2
|
||||
#power_amplifier[i_temp+6].value1 = tmp_2
|
||||
if tmp_2>70:
|
||||
all_temp_is_ok = false
|
||||
return all_temp_is_ok
|
||||
|
||||
@@ -218,3 +218,8 @@ signal clear_klaster ()
|
||||
|
||||
## Вызывается при нажатии на кнопку "Запуск контроля".[br]
|
||||
signal start_contol_device()
|
||||
|
||||
|
||||
## Вызывается при программном отключении помехи.[br]
|
||||
## [param ecm] - выключаемая помеха ([b]true[/b]
|
||||
signal on_prog_ecm_off(ecm: interfer.Interfer)
|
||||
|
||||
@@ -28,6 +28,8 @@ class Threat:
|
||||
var width: float ## Ширина занимаемого диапазона частот, МГц.
|
||||
var selected: bool ## Флаг, что цель выбрана.
|
||||
var auto_selected: bool = false ## Флаг автомата для целей
|
||||
var emit_state: int = 0 ## 0 - подавление не назначено, 1 - назначено, 2 - выполняется
|
||||
var nmfs:int ## Индекс модуля ФС, в зону действия которого попала цель
|
||||
|
||||
func _init(): clear_fflags()
|
||||
func _to_string() -> String: return 'номер: %d пеленг: %0.1f частота: %0.1f МГц' % [id, aoa, freq]
|
||||
|
||||
@@ -448,6 +448,7 @@ func remove_row(i_row: int):
|
||||
|
||||
if nodes.has(sel_key):
|
||||
var selector = nodes[sel_key]
|
||||
if selector == null: return
|
||||
var prnt = selector.get_parent()
|
||||
prnt.remove_child(selector)
|
||||
selector.queue_free()
|
||||
@@ -484,8 +485,11 @@ func next_index(indexes: Array) -> void:
|
||||
func swap_nodes(nodes_copy, node_key_format, i0, i1) -> void:
|
||||
var key0 = node_key_format % [i0.y, i0.x]
|
||||
var key1 = node_key_format % [i1.y, i1.x]
|
||||
nodes_copy[key1] = nodes[key0]
|
||||
nodes_copy[key1].name = key1
|
||||
if is_instance_valid(nodes[key0]):
|
||||
nodes_copy[key1] = nodes[key0]
|
||||
nodes_copy[key1].name = key1
|
||||
else:
|
||||
print_debug("Ошибка: нод ", key0, " был освобожден")
|
||||
|
||||
|
||||
## Переназначает ключи в соответствии с размерами таблицы.
|
||||
|
||||
Reference in New Issue
Block a user