From 15be3787434202af6d748505ba7c80e3bdc02f06 Mon Sep 17 00:00:00 2001 From: TotMaxim Date: Mon, 10 Nov 2025 13:33:03 +0300 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=BE=D1=81=D1=82=D0=BE=D1=8F=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5,=20=D0=B3=D0=B4=D0=B5=20=D0=BD=D1=83=D0=B6=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BE=D1=82=D0=BB=D0=B0=D0=B4=D0=BA=D0=B0=20=D1=82?= =?UTF-8?q?=D0=B5=D0=BC=D0=B5=D0=BF=D0=B5=D1=80=D0=B0=D1=82=D1=83=D1=80?= =?UTF-8?q?=D1=8B,=20=D0=BC=D0=BE=D1=89=D0=BD=D0=BE=D1=81=D1=82=D0=B8,=20?= =?UTF-8?q?=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D0=B5=D0=B9=20=D0=A4=D0=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-prd-k/pribor-prd-k.gd | 127 ++--------------- scenes/pribor-prd-n/pribor-prd-n.gd | 143 +++----------------- scenes/pribor-prd-v/pribor-prd-v.gd | 202 ++++++++-------------------- scenes/контроль/блок-в.tscn | 3 +- scripts/pribor-prd.gd | 80 ++++++++--- 5 files changed, 143 insertions(+), 412 deletions(-) diff --git a/scenes/pribor-prd-k/pribor-prd-k.gd b/scenes/pribor-prd-k/pribor-prd-k.gd index 1a3a975..e316232 100644 --- a/scenes/pribor-prd-k/pribor-prd-k.gd +++ b/scenes/pribor-prd-k/pribor-prd-k.gd @@ -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 @@ -90,48 +19,10 @@ func _ready() -> void: 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,7 +34,7 @@ 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)) @@ -176,10 +67,10 @@ func on_mode_changed(in_tree: bool) -> void: #mashine_timer.start() -func power_fill(pow_dic: Dictionary, fs_result: Dictionary) -> void: +static func power_fill(pow_dic: Dictionary, fs_result: Dictionary, power_amplifier: Array, unit_prd: Object) -> 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 @@ -194,14 +85,13 @@ 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 < unit_prd.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 = unit_prd_k.block_kasseta_y5_config + var block_kasseta_y5_prd_config_k: Dictionary = unit_prd_k.block_kasseta_y5_config var nodes_y5: Array = get_tree().get_nodes_in_group('y-5') for node_y5 in nodes_y5: var meta_y5 = node_y5.get_meta('y5') @@ -211,7 +101,7 @@ 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') @@ -240,8 +130,9 @@ func on_control_result(result_dic: Dictionary, power_dic: Dictionary) -> void: $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, result_dic) + + var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier') + power_fill(power_dic, result_dic, power_amplifier, unit_prd_k) var result = true for device in result_dic.values(): diff --git a/scenes/pribor-prd-n/pribor-prd-n.gd b/scenes/pribor-prd-n/pribor-prd-n.gd index c6e07ce..351ec2e 100644 --- a/scenes/pribor-prd-n/pribor-prd-n.gd +++ b/scenes/pribor-prd-n/pribor-prd-n.gd @@ -1,126 +1,28 @@ @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 + + unit_prd_n.connect('control_is_over', Callable(self, 'on_control_result')) 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,7 +34,7 @@ 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)) @@ -152,22 +54,22 @@ func on_line_changed(unit_pribor: Object) -> void: set_default_state() -func on_mode_changed(_in_tree: bool) -> void: - print_debug('Выход из сцены') - #if not in_tree: +func on_mode_changed(in_tree: bool) -> void: + if not in_tree: + print_debug('Выход из сцены') #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: + else: + print_debug('Вход в сцену') #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: +static func power_fill(pow_dic: Dictionary, fs_result: Dictionary, power_amplifier: Array, unit_prd: Object) -> 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 @@ -178,14 +80,13 @@ 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 < unit_prd.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 block_kasseta_y5_prd_config_n: Dictionary = unit_prd_n.block_kasseta_y5_config var nodes_y5: Array = get_tree().get_nodes_in_group('y-5') for node_y5 in nodes_y5: var meta_y5 = node_y5.get_meta('y5') @@ -195,7 +96,7 @@ 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') @@ -220,21 +121,17 @@ func on_control_result(result_dic: Dictionary, power_dic: Dictionary) -> void: $dou3_A6.state = STATE_VAL.GOOD if result_dic.dou_3 else STATE_VAL.ERROR else: result_dic.fs_3 = 0 - - power_fill(power_dic, result_dic) + + var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier') + power_fill(power_dic, result_dic, power_amplifier, unit_prd_n) var result = 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) + var name_prd = unit_prd_n.self_name + log.message(Logger.INFO, 'Прибор ПРД-%s %s' % [name_prd, ['неисправен', 'исправен'][int(result)]]) func find_labels(node1: Node): diff --git a/scenes/pribor-prd-v/pribor-prd-v.gd b/scenes/pribor-prd-v/pribor-prd-v.gd index 3f7d40c..6548dab 100644 --- a/scenes/pribor-prd-v/pribor-prd-v.gd +++ b/scenes/pribor-prd-v/pribor-prd-v.gd @@ -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,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)) @@ -148,28 +48,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 +60,42 @@ 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: + 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 = 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 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): diff --git a/scenes/контроль/блок-в.tscn b/scenes/контроль/блок-в.tscn index 06dcfa8..9139037 100644 --- a/scenes/контроль/блок-в.tscn +++ b/scenes/контроль/блок-в.tscn @@ -476,12 +476,11 @@ layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 tooltip_text = " -Текущее: 56.00 +Текущее: 0.00 Диапазон: -50.00…120.00" mouse_filter = 0 min_value = -50.0 max_value = 120.0 -value = 56.0 fill_mode = 3 nine_patch_stretch = true stretch_margin_left = 8 diff --git a/scripts/pribor-prd.gd b/scripts/pribor-prd.gd index ec2753a..5a700c8 100644 --- a/scripts/pribor-prd.gd +++ b/scripts/pribor-prd.gd @@ -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,14 +240,14 @@ class TestPRD extends Node: 'TEMPERATURE_UKP_2': 79, } - var power_result: 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: [],}, - 4: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],}, - 5: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],}, - 6: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],}, - 7: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],}, + var power_for_litera: Dictionary = { + 1: {RAY_m5: [560, 400, 330, 560, 400, 330], RAY_5: [560, 400, 330, 560, 400, 330,], RAY_15: [560, 400, 330, 560, 400, 330,], RAY_25: [560, 400, 330, 560, 400, 330,], RAY_35: [560, 400, 330, 560, 400, 330,], RAY_45: [560, 400, 330, 560, 400, 330,],}, + 2: {RAY_m5: [560, 400, 330, 560, 400, 330,], RAY_5: [560, 400, 330, 560, 400, 330,], RAY_15: [560, 400, 330, 560, 400, 330,], RAY_25: [560, 400, 330, 560, 400, 330,], RAY_35: [560, 400, 330, 560, 400, 330,], RAY_45: [560, 400, 330, 560, 400, 330,],}, + 3: {RAY_m5: [560, 400, 330, 560, 400, 330,], RAY_5: [560, 400, 330, 560, 400, 330,], RAY_15: [560, 400, 330, 560, 400, 330,], RAY_25: [560, 400, 330, 560, 400, 330,], RAY_35: [560, 400, 330, 560, 400, 330,], RAY_45: [560, 400, 330, 560, 400, 330,],}, + 4: {RAY_m5: [560, 400, 330, 560, 400, 330,], RAY_5: [560, 400, 330, 560, 400, 330,], RAY_15: [560, 400, 330, 560, 400, 330,], RAY_25: [560, 400, 330, 560, 400, 330,], RAY_35: [560, 400, 330, 560, 400, 330,], RAY_45: [560, 400, 330, 560, 400, 330,],}, + 5: {RAY_m5: [560, 400, 330, 560, 400, 330,], RAY_5: [560, 400, 330, 560, 400, 330,], RAY_15: [560, 400, 330, 560, 400, 330,], RAY_25: [560, 400, 330, 560, 400, 330,], RAY_35: [560, 400, 330, 560, 400, 330,], RAY_45: [560, 400, 330, 560, 400, 330,],}, + 6: {RAY_m5: [560, 400, 330, 560, 400, 330,], RAY_5: [560, 400, 330, 560, 400, 330,], RAY_15: [560, 400, 330, 560, 400, 330,], RAY_25: [560, 400, 330, 560, 400, 330,], RAY_35: [560, 400, 330, 560, 400, 330,], RAY_45: [560, 400, 330, 560, 400, 330,],}, + 7: {RAY_m5: [560, 400, 330, 560, 400, 330,], RAY_5: [560, 400, 330, 560, 400, 330,], RAY_15: [560, 400, 330, 560, 400, 330,], RAY_25: [560, 400, 330, 560, 400, 330,], RAY_35: [560, 400, 330, 560, 400, 330,], RAY_45: [560, 400, 330, 560, 400, 330,],}, } var constants: Dictionary var pribor_config: Dictionary @@ -226,11 +265,12 @@ class TestPRD extends Node: 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 @@ -271,11 +311,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: @@ -349,7 +389,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 +440,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() @@ -538,9 +578,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 @@ -548,9 +588,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