From e20de705c879014468bd6c320b1cbff17387dd4c Mon Sep 17 00:00:00 2001 From: Maxim Date: Sat, 16 Aug 2025 11:31:26 +0300 Subject: [PATCH 1/9] =?UTF-8?q?=D1=80=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-prd-k/pribor-prd-k.gd | 4 +- scenes/pribor-prd-n/pribor-prd-n.gd | 4 +- scenes/pribor-prd-v/pribor-prd-v.gd | 4 +- scripts/pribor-prd.gd | 120 +++++++++++++++------------- 4 files changed, 69 insertions(+), 63 deletions(-) diff --git a/scenes/pribor-prd-k/pribor-prd-k.gd b/scenes/pribor-prd-k/pribor-prd-k.gd index 0130302b..50585f9d 100644 --- a/scenes/pribor-prd-k/pribor-prd-k.gd +++ b/scenes/pribor-prd-k/pribor-prd-k.gd @@ -65,7 +65,7 @@ var block_kasseta_y5_prd_config_k: = { 'ukp2': false, } # Основные переменные -var current_fs: int = 1 +var start_litera: int = 1 var ug_work_1: int = 0 var ug_work_2: int = 0 var ug_work_3: int = 0 @@ -119,7 +119,7 @@ func initialize_connections() -> void: 'block_fs_prd_config': block_fs_prd_config_k, 'block_kasseta_y5_prd_config': block_kasseta_y5_prd_config_k, 'control_results': control_results_k, - 'current_fs': current_fs, + 'current_litera': start_litera, } control_prd_k = test.TestPRD.new(init_data) add_child(control_prd_k) diff --git a/scenes/pribor-prd-n/pribor-prd-n.gd b/scenes/pribor-prd-n/pribor-prd-n.gd index 9e9ceb80..603619b9 100644 --- a/scenes/pribor-prd-n/pribor-prd-n.gd +++ b/scenes/pribor-prd-n/pribor-prd-n.gd @@ -59,7 +59,7 @@ var block_kasseta_y5_prd_config_n: = { } # Основные переменные -var current_fs: int = 2 +var start_litera: int = 2 var ug_work_1: int = 0 var ug_work_2: int = 0 # Флаги и таймеры @@ -113,7 +113,7 @@ func initialize_connections() -> void: 'block_fs_prd_config': block_fs_prd_config_n, 'block_kasseta_y5_prd_config': block_kasseta_y5_prd_config_n, 'control_results': control_results_n, - 'current_fs': current_fs, + 'current_litera': start_litera, } control_prd_n = test.TestPRD.new(init_data) add_child(control_prd_n) diff --git a/scenes/pribor-prd-v/pribor-prd-v.gd b/scenes/pribor-prd-v/pribor-prd-v.gd index e8d3619b..a5a5737a 100644 --- a/scenes/pribor-prd-v/pribor-prd-v.gd +++ b/scenes/pribor-prd-v/pribor-prd-v.gd @@ -58,7 +58,7 @@ var block_kasseta_y5_prd_config_v: = { } # Основные переменные -var current_fs: int = 4 +var start_litera: int = 4 var ug_work_1: int = 0 var ug_work_2: int = 0 # Флаги и таймеры @@ -111,7 +111,7 @@ func initialize_connections() -> void: 'block_fs_prd_config': block_fs_prd_config_v, 'block_kasseta_y5_prd_config': block_kasseta_y5_prd_config_v, 'control_results': control_results_v, - 'current_fs': current_fs, + 'current_litera': start_litera, } control_prd_v = test.TestPRD.new(init_data) add_child(control_prd_v) diff --git a/scripts/pribor-prd.gd b/scripts/pribor-prd.gd index 0cd595ce..c30320bd 100644 --- a/scripts/pribor-prd.gd +++ b/scripts/pribor-prd.gd @@ -62,7 +62,7 @@ class TestPRD extends Node: var control_results: Dictionary var self_name: String var state: int = STATE_MASHINE.INIT - var current_fs: int + var current_litera: int var flag_timer_started: bool = false var unit_prd: Object var module_prd: Object @@ -87,7 +87,7 @@ class TestPRD extends Node: block_fs_config = init_data['block_fs_prd_config'] block_kasseta_y5_config = init_data['block_kasseta_y5_prd_config'] control_results = init_data['control_results'] - current_fs = init_data['current_fs'] + current_litera = init_data['current_litera'] func _ready() -> void: @@ -109,17 +109,17 @@ class TestPRD extends Node: block_ip_config = check_block_ip(status, block_ip_config) check_temperature_um(status, power_amplify) _process_dkm_status(status) - if current_fs != 0: - var tek_litera: Dictionary = power_result[current_fs] + if current_litera != 0: + var tek_litera: Dictionary = power_result[current_litera] var interes = _get_ray_key(state) if interes != '': - tek_litera[_get_ray_key(state)] = power_um_ukp(status, current_fs, tek_litera[_get_ray_key(state)]) - power_result[current_fs] = tek_litera + tek_litera[_get_ray_key(state)] = power_um_ukp(status, current_litera, tek_litera[_get_ray_key(state)]) + power_result[current_litera] = tek_litera ## Пакеты от MP550Service func on_fs_update_state(packet_type_7: Dictionary, fs_mapping: Dictionary) -> void: - var fs_key: String = FS_KEYS.get(current_fs, '') + var fs_key: String = FS_KEYS.get(current_litera, '') if fs_key.is_empty(): return @@ -156,7 +156,7 @@ class TestPRD extends Node: state = STATE_MASHINE.UG_SET_RAY STATE_MASHINE.UG_SET_RAY: var addr: int = constants.ADDR_UG_LITERA_1 - if current_fs == 3 or current_fs == 5 or current_fs == 7: + if current_litera == 3 or current_litera == 5 or current_litera == 7: addr = constants.ADDR_UG_LITERA_2 if unit_prd.isa_ports.has(addr) and (unit_prd.cmd_state == unit_prd.CmdState.DONE): control_timer.stop() @@ -171,8 +171,8 @@ class TestPRD extends Node: elif unit_prd.isa_ports[addr] & 0x07 == 4: state = STATE_MASHINE.UG_SET_RAY_5 elif unit_prd.isa_ports[addr] & 0x07 == 5: - if not current_fs == 1: - control_results = check_dou_result(control_results, power_result, self_name, current_fs, constants) + if not current_litera == 1: + control_results = check_dou_result(control_results, power_result, self_name, current_litera, constants) state = STATE_MASHINE.IN_EMS_STOP elif unit_prd.isa_ports[addr] & 0x07 == 6: state = STATE_MASHINE.UG_SET_RAY_0 @@ -206,8 +206,8 @@ class TestPRD extends Node: func _handle_init_state() -> void: - control_label.text = 'Выполняется инициализация ФС-%s' % current_fs - if current_fs in [1, 2, 3, 4, 5, 6, 7]: + control_label.text = 'Выполняется инициализация ФС-%s' % current_litera + if current_litera in [1, 2, 3, 4, 5, 6, 7]: state = STATE_MASHINE.FS_TURN_ON #state = STATE_MASHINE.STOP_CONTROL else: @@ -217,23 +217,23 @@ class TestPRD extends Node: func _handle_fs_turn_on_state() -> void: - control_label.text = 'Выполняется включение ФС-%s' % current_fs - manage_fs(true, self_name, pribor_config, fs_parameters, current_fs, constants.POWER_UM) + control_label.text = 'Выполняется включение ФС-%s' % current_litera + manage_fs(true, self_name, pribor_config, fs_parameters, current_litera, constants.POWER_UM) control_timer.wait_time = constants.TIMER_DELAY control_timer.start() func _handle_fs_work_state() -> void: - control_label.text = 'Выполняется проверка ФС-%s' % current_fs + control_label.text = 'Выполняется проверка ФС-%s' % current_litera if not module_prd.unit_yau07.online: return - if (current_fs == 2 and block_fs_config.fs_2) or \ - (current_fs == 3 and block_fs_config.fs_3) or \ - (current_fs == 4 and block_fs_config.fs_4) or \ - (current_fs == 5 and block_fs_config.fs_5) or \ - (current_fs == 6 and block_fs_config.fs_6) or \ - (current_fs == 7 and block_fs_config.fs_7) or \ - (current_fs == 1 and block_fs_config.fs_1): + if (current_litera == 2 and block_fs_config.fs_2) or \ + (current_litera == 3 and block_fs_config.fs_3) or \ + (current_litera == 4 and block_fs_config.fs_4) or \ + (current_litera == 5 and block_fs_config.fs_5) or \ + (current_litera == 6 and block_fs_config.fs_6) or \ + (current_litera == 7 and block_fs_config.fs_7) or \ + (current_litera == 1 and block_fs_config.fs_1): state = STATE_MASHINE.CHEK_KASSETA_Y5 @@ -271,27 +271,27 @@ class TestPRD extends Node: func _handle_fs_turn_off_state() -> void: - control_label.text = 'Выполняется отключение ФС-%s' % current_fs - manage_fs(false, self_name, pribor_config, fs_parameters, current_fs, constants.POWER_UM) + control_label.text = 'Выполняется отключение ФС-%s' % current_litera + manage_fs(false, self_name, pribor_config, fs_parameters, current_litera, constants.POWER_UM) state = STATE_MASHINE.STOP_CONTROL func _handle_stop_control_state() -> void: - control_label.text = 'Выполняется завершение проверки ФС-%s' % current_fs + control_label.text = 'Выполняется завершение проверки ФС-%s' % current_litera flag_timer_started = false _advance_to_next_fs() state = STATE_MASHINE.INIT func _advance_to_next_fs() -> void: - match current_fs: - 1: current_fs = 6 - 2: current_fs = 3 - 3: current_fs = 0 - 4: current_fs = 5 - 5: current_fs = 0 - 6: current_fs = 7 - 7: current_fs = 0 + match current_litera: + 1: current_litera = 6 + 2: current_litera = 3 + 3: current_litera = 0 + 4: current_litera = 5 + 5: current_litera = 0 + 6: current_litera = 7 + 7: current_litera = 0 ###################################### @@ -323,23 +323,23 @@ class TestPRD extends Node: func _process_dkm_status(status: PackedByteArray) -> void: if not block_fs_config.has(_get_current_fs_key()): return - var dkm_bit = _get_dkm_bit_for_current_fs() + var dkm_bit = _get_dkm_bit_for_current_fs(current_litera, constants) block_dkm_config = check_dkm(status, dkm_bit, block_dkm_config) func _get_current_fs_key() -> String: - return FS_KEYS.get(current_fs, '') + return FS_KEYS.get(current_litera, '') - func _get_dkm_bit_for_current_fs() -> int: - match current_fs: - 1: return constants.DKM_BIT_1 - 2: return constants.DKM_BIT_2 - 3: return constants.DKM_BIT_3 - 4: return constants.DKM_BIT_4 - 5: return constants.DKM_BIT_5 - 6: return constants.DKM_BIT_6 - 7: return constants.DKM_BIT_7 + static func _get_dkm_bit_for_current_fs(litera: int, constants_dic: Dictionary) -> int: + match litera: + 1: return constants_dic.DKM_BIT_1 + 2: return constants_dic.DKM_BIT_2 + 3: return constants_dic.DKM_BIT_3 + 4: return constants_dic.DKM_BIT_4 + 5: return constants_dic.DKM_BIT_5 + 6: return constants_dic.DKM_BIT_6 + 7: return constants_dic.DKM_BIT_7 _: return -1 @@ -398,7 +398,7 @@ class TestPRD extends Node: ## Управаление модулем фс (включить/отключить излучение) - static func manage_fs(mode: bool, pribor: String, p_conf: Dictionary, fs_params: Dictionary, cur_fs: int, power_um: int) -> void: + static func manage_fs(mode: bool, pribor: String, p_conf: Dictionary, fs_params: Dictionary, litera: int, power_um: int) -> void: # Получаем конфигурацию для текущего прибора var config: Dictionary = p_conf[pribor] var angle: float = config.angle @@ -408,13 +408,13 @@ class TestPRD extends Node: var interfer_name: String = 'k1' if mode else 'off' var fs_arr: Array = [] - if cur_fs in fs_params: - var params = fs_params[cur_fs] + if litera in fs_params: + var params = fs_params[litera] fs_arr.append([ angle, params.freq, params.width, - sectors[cur_fs - 1] if cur_fs == 1 else sectors[cur_fs - 5] if cur_fs > 5 else sectors[cur_fs - 4] if cur_fs > 3 else sectors[cur_fs - 2] + sectors[litera - 1] if litera == 1 else sectors[litera - 5] if litera > 5 else sectors[litera - 4] if litera > 3 else sectors[litera - 2] ]) signaller.emit_signal('interfer_init', interfer_name, fs_arr, power_um) @@ -548,14 +548,14 @@ class TestPRD extends Node: ## - static func power_um_ukp(status: PackedByteArray, crnt_fs: int, pwr_result: Array) -> Array: + static func power_um_ukp(status: PackedByteArray, litera: int, pwr_result: Array) -> Array: const Constants: Dictionary = {'POWER_UKP_1' : 31, 'POWER_UKP_2': 63} var power_values: Array = [] var base_offset = 0 var iteration: int = 6 var ug_valid: bool = (status[0] >> 2) & 1 - match crnt_fs: + match litera: 1: # Обработка для current_fs = 1 (одно значение) var value = status.decode_u16(Constants.POWER_UKP_1 + 2 * 7) @@ -621,15 +621,15 @@ class TestPRD extends Node: return max_power_values.duplicate() - static func check_dou_result(control_dic: Dictionary, power_dic: Dictionary, pribor: String, cur_prd: int, cnst: Dictionary) -> Dictionary: + static func check_dou_result(control_dic: Dictionary, power_dic: Dictionary, pribor: String, litera: int, cnst: Dictionary) -> Dictionary: var all_dou_ok = true - var dou: String = 'dou_2' if cur_prd == 2 else 'dou_3' + var dou: String = 'dou_2' if litera == 2 else 'dou_3' if pribor == '1к' or pribor == '2к' or pribor == '3к' or pribor == '4к': - dou = 'dou_6' if cur_prd == 6 else 'dou_7' + dou = 'dou_6' if litera == 6 else 'dou_7' elif pribor == '1в' or pribor == '2в' or pribor == '3в' or pribor == '4в': - dou = 'dou_4' if cur_prd == 5 else 'dou_5' + dou = 'dou_4' if litera == 5 else 'dou_5' - var ray_dic: Dictionary = power_dic[cur_prd] + var ray_dic: Dictionary = power_dic[litera] if ray_dic[RAY_m5].size() == 0 or \ ray_dic[RAY_5 ].size() == 0 or \ ray_dic[RAY_15].size() == 0 or \ @@ -642,10 +642,16 @@ class TestPRD extends Node: for i_pow_arr in ray_dic.values(): for i_pow in i_pow_arr.size(): if i_pow_arr[i_pow] < cnst.POWER_THRESHOLD: - print_debug('dou_%s: false' % cur_prd) + print_debug('dou_%s: false' % litera) all_dou_ok = false - print([cur_prd, ray_dic]) + print([litera, ray_dic]) control_dic[dou] = all_dou_ok return control_dic + + + static func get_minimum_pow(pow_dic: Dictionary, cur_litera: int)-> Dictionary: + var minimum_value_dic: Dictionary + + return minimum_value_dic From a2c7f5185fb36b050beba962feaebd4ba061be9e Mon Sep 17 00:00:00 2001 From: Maxim Date: Mon, 25 Aug 2025 11:52:28 +0300 Subject: [PATCH 2/9] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=BC=D0=BE=D1=89=D0=BD=D0=BE=D1=81=D1=82=D0=B8?= =?UTF-8?q?=20=D0=BE=D1=82=20=D1=83=D0=BC=20=D0=B8=20=D0=B7=D0=B0=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81=D1=86=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-prd-k/pribor-prd-k.gd | 35 +++++-- scenes/pribor-prd-k/pribor-prd-k.tscn | 23 ++++- scenes/pribor-prd-n/pribor-prd-n.gd | 27 +++++- scenes/pribor-prd-n/pribor-prd-n.tscn | 112 ++++++++++------------ scenes/pribor-prd-v/pribor-prd-v.gd | 25 ++++- scenes/pribor-prd-v/pribor-prd-v.tscn | 114 ++++++++++------------ scenes/контроль/блок-в.tscn | 19 ++-- scripts/pribor-prd.gd | 132 ++++++++++++++++++-------- 8 files changed, 282 insertions(+), 205 deletions(-) diff --git a/scenes/pribor-prd-k/pribor-prd-k.gd b/scenes/pribor-prd-k/pribor-prd-k.gd index 4fc4616c..de584de5 100644 --- a/scenes/pribor-prd-k/pribor-prd-k.gd +++ b/scenes/pribor-prd-k/pribor-prd-k.gd @@ -13,7 +13,7 @@ const constants_k: Dictionary = { 'ADDR_UG_LITERA_3': 0x10A, 'TEMP_THRESHOLD': 40, 'POWER_THRESHOLD': 40, - 'TIMER_DELAY': 5.0, + 'TIMER_DELAY': 0.50, 'RAY_DOU_NUM': 0x3, 'ATT_UM_1': 0x0, 'ATT_UM_6': 0x7, @@ -97,11 +97,6 @@ func _ready() -> void: func on_state_mashine() -> void: control_prd_k.state_control_machine() - $um1535_A10.value0 = [10, 20, 30, 40, 50, 60] - $um1535_A11.value0 = [60, 50, 40, 30, 20, 10] - $um1535_A12.set_value0_by_index(5, 100) - $um1535_A13.set_value0_by_index(2, 0) - $um1535_A13.value1 = -20 func initialize_connections() -> void: @@ -174,7 +169,25 @@ func on_mode_changed(in_tree: bool) -> void: mashine_timer.start() -func on_control_result(result_dic: Dictionary) -> void: +func power_fill(pow_dic: Dictionary) -> void: + var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier') + for i_powapm in power_amplifier: + var powamp_meta: String = i_powapm.get_meta('um') + var status = STATE_VAL.GOOD if pow_dic else STATE_VAL.NONE + if pow_dic: + if not pow_dic.has(powamp_meta): + break + if pow_dic[powamp_meta].size() < 6: + status = STATE_VAL.ERROR + else: + i_powapm.value0 = pow_dic[powamp_meta] + for i_p in pow_dic[powamp_meta]: + if i_p < constants_k.POWER_THRESHOLD: + status = STATE_VAL.ERROR + i_powapm.state = status + + +func on_control_result(result_dic: Dictionary, power_dic: Dictionary) -> void: mashine_timer.stop() block_kasseta_y5_prd_config_k = control_prd_k.block_kasseta_y5_config var nodes_y5: Array = get_tree().get_nodes_in_group('y-5') @@ -183,7 +196,7 @@ func on_control_result(result_dic: Dictionary) -> void: if block_kasseta_y5_prd_config_k.has(meta_y5): if block_kasseta_y5_prd_config_k['yau07'] == false: node_y5.state = STATE_VAL.ERROR if meta_y5 == 'yau07' else STATE_VAL.NONE - return + break node_y5.state = STATE_VAL.GOOD if block_kasseta_y5_prd_config_k[meta_y5] else STATE_VAL.ERROR block_ip_config_k = control_prd_k.block_ip_config @@ -212,6 +225,8 @@ func on_control_result(result_dic: Dictionary) -> void: $kasseta_fs_kd/ref_A7.state = STATE_VAL.GOOD if dkm.dkm_7 else STATE_VAL.ERROR $dou7_A8.state = STATE_VAL.GOOD if result_dic.dou_7 else STATE_VAL.ERROR + power_fill(power_dic) + var result = true for device in result_dic.values(): if not device: @@ -220,7 +235,7 @@ func on_control_result(result_dic: Dictionary) -> void: var name_prd = control_prd_k.self_name if result: $control_result.text = 'Прибор ПРД-%s исправен' % name_prd - $control_result.add_theme_color_override('font_color', Color.AQUAMARINE) + $control_result.add_theme_color_override('font_color', Color.GREEN) else: $control_result.text = 'Прибор ПРД-%s неисправен' % name_prd - $control_result.add_theme_color_override('font_color', Color.CRIMSON) + $control_result.add_theme_color_override('font_color', Color.RED) diff --git a/scenes/pribor-prd-k/pribor-prd-k.tscn b/scenes/pribor-prd-k/pribor-prd-k.tscn index a3601a78..6c859216 100644 --- a/scenes/pribor-prd-k/pribor-prd-k.tscn +++ b/scenes/pribor-prd-k/pribor-prd-k.tscn @@ -1,11 +1,10 @@ -[gd_scene load_steps=16 format=3 uid="uid://m5s87q7m66lj"] +[gd_scene load_steps=15 format=3 uid="uid://m5s87q7m66lj"] [ext_resource type="PackedScene" uid="uid://d3iqb5e4g81m5" path="res://scenes/контроль/элемент-г.tscn" id="1_8dmgr"] [ext_resource type="Script" uid="uid://cwvikiygf8b1m" path="res://scenes/pribor-prd-k/pribor-prd-k.gd" id="1_tpdyp"] [ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="2_14h25"] [ext_resource type="PackedScene" uid="uid://cm5jd4gjrrpba" path="res://scenes/контроль/кассета-у-5-к.tscn" id="2_tb85r"] [ext_resource type="PackedScene" uid="uid://bcyxqni7gxvtq" path="res://scenes/контроль/блок-в.tscn" id="5_c7lv8"] -[ext_resource type="PackedScene" uid="uid://bkxblfoj7ejv0" path="res://scenes/контроль/блок-а.tscn" id="6_fmhtx"] [ext_resource type="PackedScene" uid="uid://bmagw8nd0ulhj" path="res://scenes/pribor-prd-k/kasseta-fs-kd.tscn" id="7_ia27q"] [ext_resource type="Script" uid="uid://crpedygm3gohi" path="res://scenes/контроль/кассета.gd" id="7_xpa2n"] [ext_resource type="PackedScene" uid="uid://dq31j24gv5vi4" path="res://scenes/контроль/кассета-п-2.tscn" id="8_6fdp7"] @@ -120,10 +119,12 @@ offset_left = 485.0 offset_top = 242.0 offset_right = 652.0 offset_bottom = 337.0 +value0 = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0] fname = "УМ1535Б" rname = "A10" value0_info = "Мощность, Вт" value1_info = "Температура,°C" +metadata/um = "um_1" [node name="um1535_A11" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")] layout_mode = 0 @@ -135,6 +136,7 @@ fname = "УМ1535Б" rname = "A11" value0_info = "Мощность, Вт" value1_info = "Температура,°C" +metadata/um = "um_2" [node name="um1535_A12" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")] layout_mode = 0 @@ -146,6 +148,7 @@ fname = "УМ1535Б" rname = "A12" value0_info = "Мощность, Вт" value1_info = "Температура,°C" +metadata/um = "um_3" [node name="um1535_A13" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")] layout_mode = 0 @@ -157,6 +160,7 @@ fname = "УМ1535Б" rname = "A13" value0_info = "Мощность, Вт" value1_info = "Температура,°C" +metadata/um = "um_4" [node name="um1535_A14" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")] layout_mode = 0 @@ -168,6 +172,7 @@ fname = "УМ1535Б" rname = "A14" value0_info = "Мощность, Вт" value1_info = "Температура,°C" +metadata/um = "um_5" [node name="um1535_A15" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")] layout_mode = 0 @@ -179,17 +184,19 @@ fname = "УМ1535Б" rname = "A15" value0_info = "Мощность, Вт" value1_info = "Температура,°C" +metadata/um = "um_6" -[node name="utm80_A9" parent="." groups=["power_amplifier"] instance=ExtResource("6_fmhtx")] +[node name="utm80_A9" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")] layout_mode = 0 offset_left = 485.0 offset_top = 812.0 offset_right = 652.0 offset_bottom = 907.0 -value_name0 = "°C" -value_name1 = "P, %" fname = "УТМ80" rname = "A9" +value0_info = "Мощность, Вт" +value1_info = "Температура,°C" +metadata/um = "um_7" [node name="rm1620m_A16" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")] layout_mode = 0 @@ -201,6 +208,7 @@ fname = "РМ16-20М" rname = "A16" value0_info = "Мощность, Вт" value1_info = "Температура,°C" +metadata/um = "um_8" [node name="rm1620m_A17" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")] layout_mode = 0 @@ -212,6 +220,7 @@ fname = "РМ16-20М" rname = "A17" value0_info = "Мощность, Вт" value1_info = "Температура,°C" +metadata/um = "um_9" [node name="rm1620m_A18" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")] layout_mode = 0 @@ -223,6 +232,7 @@ fname = "РМ16-20М" rname = "A18" value0_info = "Мощность, Вт" value1_info = "Температура,°C" +metadata/um = "um_10" [node name="rm1620m_A19" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")] layout_mode = 0 @@ -234,6 +244,7 @@ fname = "РМ16-20М" rname = "A19" value0_info = "Мощность, Вт" value1_info = "Температура,°C" +metadata/um = "um_11" [node name="rm1620m_A20" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")] layout_mode = 0 @@ -245,6 +256,7 @@ fname = "РМ16-20М" rname = "A20" value0_info = "Мощность, Вт" value1_info = "Температура,°C" +metadata/um = "um_12" [node name="rm1620m_A21" parent="." groups=["power_amplifier"] instance=ExtResource("5_c7lv8")] layout_mode = 0 @@ -256,6 +268,7 @@ fname = "РМ16-20М" rname = "A21" value0_info = "Мощность, Вт" value1_info = "Температура,°C" +metadata/um = "um_13" [node name="kasseta_fs_kd" parent="." instance=ExtResource("7_ia27q")] layout_mode = 0 diff --git a/scenes/pribor-prd-n/pribor-prd-n.gd b/scenes/pribor-prd-n/pribor-prd-n.gd index 603619b9..e6fe22f8 100644 --- a/scenes/pribor-prd-n/pribor-prd-n.gd +++ b/scenes/pribor-prd-n/pribor-prd-n.gd @@ -12,7 +12,7 @@ const constants_n = { 'ADDR_UG_LITERA_3': 0x10A, 'TEMP_THRESHOLD': 70, 'POWER_THRESHOLD': 40, - 'TIMER_DELAY': 5.0, + 'TIMER_DELAY': 0.10, 'RAY_DOU_NUM': 0x3, 'ATT_UM_2': 0x7, 'ATT_UM_3': 0x7, @@ -163,7 +163,22 @@ func on_mode_changed(in_tree: bool) -> void: mashine_timer.start() -func on_control_result(result_dic: Dictionary) -> void: +func power_fill(pow_dic: Dictionary) -> void: + 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[powamp_meta].size() < 6: + status = STATE_VAL.ERROR + else: + i_powapm.value0 = pow_dic[powamp_meta] + for i_p in pow_dic[powamp_meta]: + if i_p < constants_n.POWER_THRESHOLD: + status = STATE_VAL.ERROR + i_powapm.state = status + + +func on_control_result(result_dic: Dictionary, power_dic: Dictionary) -> void: mashine_timer.stop() block_kasseta_y5_prd_config_n = control_prd_n.block_kasseta_y5_config var nodes_y5: Array = get_tree().get_nodes_in_group('y-5') @@ -172,7 +187,7 @@ func on_control_result(result_dic: Dictionary) -> void: if block_kasseta_y5_prd_config_n.has(meta_y5): if block_kasseta_y5_prd_config_n['yau07'] == false: node_y5.state = STATE_VAL.ERROR if meta_y5 == 'yau07' else STATE_VAL.NONE - return + break node_y5.state = STATE_VAL.GOOD if block_kasseta_y5_prd_config_n[meta_y5] else STATE_VAL.ERROR block_ip_config_n = control_prd_n.block_ip_config @@ -199,6 +214,8 @@ func on_control_result(result_dic: Dictionary) -> void: $kasseta_FS_ND/ref_A3.state = STATE_VAL.GOOD if dkm.dkm_3 else STATE_VAL.ERROR $dou3_A6.state = STATE_VAL.GOOD if result_dic.dou_3 else STATE_VAL.ERROR + power_fill(power_dic) + var result = true for device in result_dic.values(): if not device: @@ -207,7 +224,7 @@ func on_control_result(result_dic: Dictionary) -> void: var name_prd = control_prd_n.self_name if result: $control_result.text = 'Прибор ПРД-%s исправен' % name_prd - $control_result.add_theme_color_override('font_color', Color.AQUAMARINE) + $control_result.add_theme_color_override('font_color', Color.GREEN) else: $control_result.text = 'Прибор ПРД-%s неисправен' % name_prd - $control_result.add_theme_color_override('font_color', Color.CRIMSON) + $control_result.add_theme_color_override('font_color', Color.RED) diff --git a/scenes/pribor-prd-n/pribor-prd-n.tscn b/scenes/pribor-prd-n/pribor-prd-n.tscn index 151bb06b..ae171850 100644 --- a/scenes/pribor-prd-n/pribor-prd-n.tscn +++ b/scenes/pribor-prd-n/pribor-prd-n.tscn @@ -5,8 +5,8 @@ [ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="3_meukj"] [ext_resource type="PackedScene" uid="uid://bk1655p4e8y4u" path="res://scenes/контроль/кассета-у-5-нв.tscn" id="4_xkifg"] [ext_resource type="Script" uid="uid://crpedygm3gohi" path="res://scenes/контроль/кассета.gd" id="6_b5wvk"] +[ext_resource type="PackedScene" uid="uid://bcyxqni7gxvtq" path="res://scenes/контроль/блок-в.tscn" id="7_bnnv3"] [ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/элемент-в.tscn" id="7_eoqf2"] -[ext_resource type="PackedScene" uid="uid://bkxblfoj7ejv0" path="res://scenes/контроль/блок-а.tscn" id="8_sia5h"] [ext_resource type="Texture2D" uid="uid://belwchvdktrw0" path="res://data/эмс-бланк.png" id="9_k1x0o"] [ext_resource type="Texture2D" uid="uid://bwddxs24es81u" path="res://data/эмс-бланк-пост.png" id="10_7dcjd"] [ext_resource type="Texture2D" uid="uid://pfoscstbm025" path="res://data/эмс-бланк-перем.png" id="11_ius1v"] @@ -223,161 +223,149 @@ text = "Кассета П-1" horizontal_alignment = 1 vertical_alignment = 1 -[node name="um1535_A7" parent="." groups=["power_amplifier"] instance=ExtResource("8_sia5h")] +[node name="um1535_A7" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")] layout_mode = 0 offset_left = 485.0 offset_top = 242.0 offset_right = 652.0 offset_bottom = 337.0 -value_name0 = "°C" -value_name1 = "P, %" -name_min_size0 = Vector2i(35, 20) -name_min_size1 = Vector2i(35, 20) -fname = "УМ1535А" +fname = "УМ1535Б" rname = "A7" +value0_info = "Мощность, Вт" +value1_info = "Температура,°C" +metadata/um = "um_1" -[node name="um1535_A8" parent="." groups=["power_amplifier"] instance=ExtResource("8_sia5h")] +[node name="um1535_A8" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")] layout_mode = 0 offset_left = 485.0 offset_top = 337.0 offset_right = 652.0 offset_bottom = 432.0 -value_name0 = "°C" -value_name1 = "P, %" -name_min_size0 = Vector2i(35, 20) -name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A8" +value0_info = "Мощность, Вт" +value1_info = "Температура,°C" +metadata/um = "um_2" -[node name="um1535_A9" parent="." groups=["power_amplifier"] instance=ExtResource("8_sia5h")] +[node name="um1535_A9" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")] layout_mode = 0 offset_left = 485.0 offset_top = 432.0 offset_right = 652.0 offset_bottom = 527.0 -value_name0 = "°C" -value_name1 = "P, %" -name_min_size0 = Vector2i(35, 20) -name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A9" +value0_info = "Мощность, Вт" +value1_info = "Температура,°C" +metadata/um = "um_3" -[node name="um1535_A10" parent="." groups=["power_amplifier"] instance=ExtResource("8_sia5h")] +[node name="um1535_A10" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")] layout_mode = 0 offset_left = 485.0 offset_top = 527.0 offset_right = 652.0 offset_bottom = 622.0 -value_name0 = "°C" -value_name1 = "P, %" -name_min_size0 = Vector2i(35, 20) -name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A10" +value0_info = "Мощность, Вт" +value1_info = "Температура,°C" +metadata/um = "um_4" -[node name="um1535_A11" parent="." groups=["power_amplifier"] instance=ExtResource("8_sia5h")] +[node name="um1535_A11" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")] layout_mode = 0 offset_left = 485.0 offset_top = 622.0 offset_right = 652.0 offset_bottom = 717.0 -value_name0 = "°C" -value_name1 = "P, %" -name_min_size0 = Vector2i(35, 20) -name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A11" +value0_info = "Мощность, Вт" +value1_info = "Температура,°C" +metadata/um = "um_5" -[node name="um1535_A12" parent="." groups=["power_amplifier"] instance=ExtResource("8_sia5h")] +[node name="um1535_A12" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")] layout_mode = 0 offset_left = 485.0 offset_top = 717.0 offset_right = 652.0 offset_bottom = 812.0 -value_name0 = "°C" -value_name1 = "P, %" -name_min_size0 = Vector2i(35, 20) -name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A12" +value0_info = "Мощность, Вт" +value1_info = "Температура,°C" +metadata/um = "um_6" -[node name="um1535_A13" parent="." groups=["power_amplifier"] instance=ExtResource("8_sia5h")] +[node name="um1535_A13" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")] layout_mode = 0 offset_left = 8.0 offset_top = 242.0 offset_right = 175.0 offset_bottom = 337.0 -value_name0 = "°C" -value_name1 = "P, %" -name_min_size0 = Vector2i(35, 20) -name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A13" +value0_info = "Мощность, Вт" +value1_info = "Температура,°C" +metadata/um = "um_7" -[node name="um1535_A14" parent="." groups=["power_amplifier"] instance=ExtResource("8_sia5h")] +[node name="um1535_A14" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")] layout_mode = 0 offset_left = 8.0 offset_top = 337.0 offset_right = 175.0 offset_bottom = 432.0 -value_name0 = "°C" -value_name1 = "P, %" -name_min_size0 = Vector2i(35, 20) -name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A14" +value0_info = "Мощность, Вт" +value1_info = "Температура,°C" +metadata/um = "um_8" -[node name="um1535_A15" parent="." groups=["power_amplifier"] instance=ExtResource("8_sia5h")] +[node name="um1535_A15" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")] layout_mode = 0 offset_left = 8.0 offset_top = 432.0 offset_right = 175.0 offset_bottom = 527.0 -value_name0 = "°C" -value_name1 = "P, %" -name_min_size0 = Vector2i(35, 20) -name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A15" +value0_info = "Мощность, Вт" +value1_info = "Температура,°C" +metadata/um = "um_9" -[node name="um1535_A16" parent="." groups=["power_amplifier"] instance=ExtResource("8_sia5h")] +[node name="um1535_A16" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")] layout_mode = 0 offset_left = 8.0 offset_top = 527.0 offset_right = 175.0 offset_bottom = 622.0 -value_name0 = "°C" -value_name1 = "P, %" -name_min_size0 = Vector2i(35, 20) -name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A16" +value0_info = "Мощность, Вт" +value1_info = "Температура,°C" +metadata/um = "um_10" -[node name="um1535_A17" parent="." groups=["power_amplifier"] instance=ExtResource("8_sia5h")] +[node name="um1535_A17" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")] layout_mode = 0 offset_left = 8.0 offset_top = 622.0 offset_right = 175.0 offset_bottom = 717.0 -value_name0 = "°C" -value_name1 = "P, %" -name_min_size0 = Vector2i(35, 20) -name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A17" +value0_info = "Мощность, Вт" +value1_info = "Температура,°C" +metadata/um = "um_11" -[node name="um1535_A18" parent="." groups=["power_amplifier"] instance=ExtResource("8_sia5h")] +[node name="um1535_A18" parent="." groups=["power_amplifier"] instance=ExtResource("7_bnnv3")] layout_mode = 0 offset_left = 8.0 offset_top = 717.0 offset_right = 175.0 offset_bottom = 812.0 -value_name0 = "°C" -value_name1 = "P, %" -name_min_size0 = Vector2i(35, 20) -name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A18" +value0_info = "Мощность, Вт" +value1_info = "Температура,°C" +metadata/um = "um_12" [node name="Monitoring_panel" type="Panel" parent="."] visible = false diff --git a/scenes/pribor-prd-v/pribor-prd-v.gd b/scenes/pribor-prd-v/pribor-prd-v.gd index a5a5737a..6307f897 100644 --- a/scenes/pribor-prd-v/pribor-prd-v.gd +++ b/scenes/pribor-prd-v/pribor-prd-v.gd @@ -161,7 +161,22 @@ func on_mode_changed(in_tree: bool) -> void: mashine_timer.start() -func on_control_result(result_dic: Dictionary) -> void: +func power_fill(pow_dic: Dictionary) -> void: + 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[powamp_meta].size() < 6: + status = STATE_VAL.ERROR + else: + i_powapm.value0 = pow_dic[powamp_meta] + for i_p in pow_dic[powamp_meta]: + if i_p < constants_v.POWER_THRESHOLD: + status = STATE_VAL.ERROR + i_powapm.state = status + + +func on_control_result(result_dic: Dictionary, power_dic: Dictionary) -> void: mashine_timer.stop() block_kasseta_y5_prd_config_v = control_prd_v.block_kasseta_y5_config var nodes_y5: Array = get_tree().get_nodes_in_group('y-5') @@ -170,7 +185,7 @@ func on_control_result(result_dic: Dictionary) -> void: if block_kasseta_y5_prd_config_v.has(meta_y5): if block_kasseta_y5_prd_config_v['yau07'] == false: node_y5.state = STATE_VAL.ERROR if meta_y5 == 'yau07' else STATE_VAL.NONE - return + break node_y5.state = STATE_VAL.GOOD if block_kasseta_y5_prd_config_v[meta_y5] else STATE_VAL.ERROR block_ip_config_v = control_prd_v.block_ip_config @@ -197,6 +212,8 @@ func on_control_result(result_dic: Dictionary) -> void: $kasseta_FS_VD/ref_A6.state = STATE_VAL.GOOD if dkm.dkm_5 else STATE_VAL.ERROR $dou5_A6.state = STATE_VAL.GOOD if result_dic.dou_5 else STATE_VAL.ERROR + power_fill(power_dic) + var result = true for device in result_dic.values(): if not device: @@ -205,7 +222,7 @@ func on_control_result(result_dic: Dictionary) -> void: var name_prd = control_prd_v.self_name if result: $control_result.text = 'Прибор ПРД-%s исправен' % name_prd - $control_result.add_theme_color_override('font_color', Color.AQUAMARINE) + $control_result.add_theme_color_override('font_color', Color.GREEN) else: $control_result.text = 'Прибор ПРД-%s неисправен' % name_prd - $control_result.add_theme_color_override('font_color', Color.CRIMSON) + $control_result.add_theme_color_override('font_color', Color.RED) diff --git a/scenes/pribor-prd-v/pribor-prd-v.tscn b/scenes/pribor-prd-v/pribor-prd-v.tscn index 38702ac3..4f502206 100644 --- a/scenes/pribor-prd-v/pribor-prd-v.tscn +++ b/scenes/pribor-prd-v/pribor-prd-v.tscn @@ -7,7 +7,7 @@ [ext_resource type="PackedScene" uid="uid://cd5sue1e8iyrv" path="res://scenes/pribor-prd-n/kasseta-fs-nd.tscn" id="5_nhd2k"] [ext_resource type="Script" uid="uid://crpedygm3gohi" path="res://scenes/контроль/кассета.gd" id="6_os4mt"] [ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/элемент-в.tscn" id="7_38u2b"] -[ext_resource type="PackedScene" uid="uid://bkxblfoj7ejv0" path="res://scenes/контроль/блок-а.tscn" id="7_e22c6"] +[ext_resource type="PackedScene" uid="uid://bcyxqni7gxvtq" path="res://scenes/контроль/блок-в.tscn" id="8_4e87c"] [ext_resource type="Texture2D" uid="uid://belwchvdktrw0" path="res://data/эмс-бланк.png" id="10_4e87c"] [ext_resource type="Texture2D" uid="uid://bwddxs24es81u" path="res://data/эмс-бланк-пост.png" id="11_g8fvp"] [ext_resource type="Texture2D" uid="uid://pfoscstbm025" path="res://data/эмс-бланк-перем.png" id="12_gsby4"] @@ -172,163 +172,149 @@ text = "Кассета П-1В" horizontal_alignment = 1 vertical_alignment = 1 -[node name="um1535_A7" parent="." groups=["power_amplifier"] instance=ExtResource("7_e22c6")] +[node name="um1535_A7" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")] layout_mode = 0 offset_left = 485.0 offset_top = 242.0 offset_right = 652.0 offset_bottom = 337.0 -step0 = 1.0 -step1 = 1.0 -value_name0 = "°C" -value_name1 = "P, %" -name_min_size0 = Vector2i(35, 20) -name_min_size1 = Vector2i(35, 20) -fname = "УМ1535А" +fname = "УМ1535Б" rname = "A7" +value0_info = "Мощность, Вт" +value1_info = "Температура,°C" +metadata/um = "um_1" -[node name="um1535_A8" parent="." groups=["power_amplifier"] instance=ExtResource("7_e22c6")] +[node name="um1535_A8" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")] layout_mode = 0 offset_left = 485.0 offset_top = 337.0 offset_right = 652.0 offset_bottom = 432.0 -value_name0 = "°C" -value_name1 = "P, %" -name_min_size0 = Vector2i(35, 20) -name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A8" +value0_info = "Мощность, Вт" +value1_info = "Температура,°C" +metadata/um = "um_2" -[node name="um1535_A9" parent="." groups=["power_amplifier"] instance=ExtResource("7_e22c6")] +[node name="um1535_A9" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")] layout_mode = 0 offset_left = 485.0 offset_top = 432.0 offset_right = 652.0 offset_bottom = 527.0 -value_name0 = "°C" -value_name1 = "P, %" -name_min_size0 = Vector2i(35, 20) -name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A9" +value0_info = "Мощность, Вт" +value1_info = "Температура,°C" +metadata/um = "um_3" -[node name="um1535_A10" parent="." groups=["power_amplifier"] instance=ExtResource("7_e22c6")] +[node name="um1535_A10" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")] layout_mode = 0 offset_left = 485.0 offset_top = 527.0 offset_right = 652.0 offset_bottom = 622.0 -value_name0 = "°C" -value_name1 = "P, %" -name_min_size0 = Vector2i(35, 20) -name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A10" +value0_info = "Мощность, Вт" +value1_info = "Температура,°C" +metadata/um = "um_4" -[node name="um1535_A11" parent="." groups=["power_amplifier"] instance=ExtResource("7_e22c6")] +[node name="um1535_A11" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")] layout_mode = 0 offset_left = 485.0 offset_top = 622.0 offset_right = 652.0 offset_bottom = 717.0 -value_name0 = "°C" -value_name1 = "P, %" -name_min_size0 = Vector2i(35, 20) -name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A11" +value0_info = "Мощность, Вт" +value1_info = "Температура,°C" +metadata/um = "um_5" -[node name="um1535_A12" parent="." groups=["power_amplifier"] instance=ExtResource("7_e22c6")] +[node name="um1535_A12" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")] layout_mode = 0 offset_left = 485.0 offset_top = 717.0 offset_right = 652.0 offset_bottom = 812.0 -value_name0 = "°C" -value_name1 = "P, %" -name_min_size0 = Vector2i(35, 20) -name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A12" +value0_info = "Мощность, Вт" +value1_info = "Температура,°C" +metadata/um = "um_6" -[node name="um1535_A13" parent="." groups=["power_amplifier"] instance=ExtResource("7_e22c6")] +[node name="um1535_A13" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")] layout_mode = 0 offset_left = 8.0 offset_top = 242.0 offset_right = 175.0 offset_bottom = 337.0 -value_name0 = "°C" -value_name1 = "P, %" -name_min_size0 = Vector2i(35, 20) -name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A13" +value0_info = "Мощность, Вт" +value1_info = "Температура,°C" +metadata/um = "um_7" -[node name="um1535_A14" parent="." groups=["power_amplifier"] instance=ExtResource("7_e22c6")] +[node name="um1535_A14" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")] layout_mode = 0 offset_left = 8.0 offset_top = 337.0 offset_right = 175.0 offset_bottom = 432.0 -value_name0 = "°C" -value_name1 = "P, %" -name_min_size0 = Vector2i(35, 20) -name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A14" +value0_info = "Мощность, Вт" +value1_info = "Температура,°C" +metadata/um = "um_8" -[node name="um1535_A15" parent="." groups=["power_amplifier"] instance=ExtResource("7_e22c6")] +[node name="um1535_A15" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")] layout_mode = 0 offset_left = 8.0 offset_top = 432.0 offset_right = 175.0 offset_bottom = 527.0 -value_name0 = "°C" -value_name1 = "P, %" -name_min_size0 = Vector2i(35, 20) -name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A15" +value0_info = "Мощность, Вт" +value1_info = "Температура,°C" +metadata/um = "um_9" -[node name="um1535_A16" parent="." groups=["power_amplifier"] instance=ExtResource("7_e22c6")] +[node name="um1535_A16" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")] layout_mode = 0 offset_left = 8.0 offset_top = 527.0 offset_right = 175.0 offset_bottom = 622.0 -value_name0 = "°C" -value_name1 = "P, %" -name_min_size0 = Vector2i(35, 20) -name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A16" +value0_info = "Мощность, Вт" +value1_info = "Температура,°C" +metadata/um = "um_10" -[node name="um1535_A17" parent="." groups=["power_amplifier"] instance=ExtResource("7_e22c6")] +[node name="um1535_A17" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")] layout_mode = 0 offset_left = 8.0 offset_top = 622.0 offset_right = 175.0 offset_bottom = 717.0 -value_name0 = "°C" -value_name1 = "P, %" -name_min_size0 = Vector2i(35, 20) -name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A17" +value0_info = "Мощность, Вт" +value1_info = "Температура,°C" +metadata/um = "um_11" -[node name="um1535_A18" parent="." groups=["power_amplifier"] instance=ExtResource("7_e22c6")] +[node name="um1535_A18" parent="." groups=["power_amplifier"] instance=ExtResource("8_4e87c")] layout_mode = 0 offset_left = 8.0 offset_top = 717.0 offset_right = 175.0 offset_bottom = 812.0 -value_name0 = "°C" -value_name1 = "P, %" -name_min_size0 = Vector2i(35, 20) -name_min_size1 = Vector2i(35, 20) fname = "УМ1535А" rname = "A18" +value0_info = "Мощность, Вт" +value1_info = "Температура,°C" +metadata/um = "um_12" [node name="Monitoring_panel" type="Panel" parent="."] visible = false diff --git a/scenes/контроль/блок-в.tscn b/scenes/контроль/блок-в.tscn index 4426c9c0..b8e9a74d 100644 --- a/scenes/контроль/блок-в.tscn +++ b/scenes/контроль/блок-в.tscn @@ -175,7 +175,6 @@ func _enter_tree_defered(): var items: Array = get_level_nodes() var count: int = min(items.size(), value0.size()) for i in count: - items[i].value = value0[i] items[i].min_value = min_value0 items[i].max_value = max_value0 items[i].step = step0 @@ -349,10 +348,9 @@ layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 tooltip_text = " -Текущее: 20.00 +Текущее: 0.00 Диапазон: 0.00…100.00" mouse_filter = 0 -value = 20.0 fill_mode = 3 nine_patch_stretch = true stretch_margin_left = 8 @@ -369,10 +367,9 @@ layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 tooltip_text = " -Текущее: 30.00 +Текущее: 0.00 Диапазон: 0.00…100.00" mouse_filter = 0 -value = 30.0 fill_mode = 3 nine_patch_stretch = true stretch_margin_left = 8 @@ -389,10 +386,9 @@ layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 tooltip_text = " -Текущее: 40.00 +Текущее: 0.00 Диапазон: 0.00…100.00" mouse_filter = 0 -value = 40.0 fill_mode = 3 nine_patch_stretch = true stretch_margin_left = 8 @@ -409,10 +405,9 @@ layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 tooltip_text = " -Текущее: 50.00 +Текущее: 0.00 Диапазон: 0.00…100.00" mouse_filter = 0 -value = 50.0 fill_mode = 3 nine_patch_stretch = true stretch_margin_left = 8 @@ -429,10 +424,9 @@ layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 tooltip_text = " -Текущее: 60.00 +Текущее: 0.00 Диапазон: 0.00…100.00" mouse_filter = 0 -value = 60.0 fill_mode = 3 nine_patch_stretch = true stretch_margin_left = 8 @@ -449,10 +443,9 @@ layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 tooltip_text = " -Текущее: 70.00 +Текущее: 0.00 Диапазон: 0.00…100.00" mouse_filter = 0 -value = 70.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 c30320bd..91480df7 100644 --- a/scripts/pribor-prd.gd +++ b/scripts/pribor-prd.gd @@ -70,7 +70,7 @@ class TestPRD extends Node: var control_label: Label var control_timer: Timer = Timer.new() var ems_6666_timer: Timer = Timer.new() - signal control_is_over(control_results) + signal control_is_over(control_results, power_result) ## Инициализация аргуметнов @@ -107,7 +107,7 @@ class TestPRD extends Node: var status: PackedByteArray = unit_pribor.status block_kasseta_y5_config = check_block_kasseta_y5(status, block_kasseta_y5_config) block_ip_config = check_block_ip(status, block_ip_config) - check_temperature_um(status, power_amplify) + #check_temperature_um(status, power_amplify) _process_dkm_status(status) if current_litera != 0: var tek_litera: Dictionary = power_result[current_litera] @@ -208,11 +208,13 @@ class TestPRD extends Node: func _handle_init_state() -> void: control_label.text = 'Выполняется инициализация ФС-%s' % current_litera if current_litera in [1, 2, 3, 4, 5, 6, 7]: - state = STATE_MASHINE.FS_TURN_ON - #state = STATE_MASHINE.STOP_CONTROL + #state = STATE_MASHINE.FS_TURN_ON + state = STATE_MASHINE.STOP_CONTROL else: control_results = on_control_result(block_ip_config, block_dkm_config, block_fs_config, control_results) - emit_signal('control_is_over', control_results) + var send_power_pack = prep_power(power_result, self_name) + + emit_signal('control_is_over', control_results, send_power_pack) state = STATE_MASHINE.AWAIT @@ -443,39 +445,39 @@ class TestPRD extends Node: ## Проверка температур УМ от УКП - static func check_temperature_um(status_prd: PackedByteArray, power_amplifier: Array) -> void: - const Constants: Dictionary = { - 'CONST_MIN_TEMP': -25, - 'MAXIMUM_CODE_ADC': 3796, - 'MINIMUM_CODE_AD': 2660, - 'TEMPERATURE_UKP_1': 47, - 'TEMPERATURE_UKP_2': 79, - } - const TEMP: float = 115.0 / (Constants.MAXIMUM_CODE_ADC - Constants.MINIMUM_CODE_AD) - var ukp1_online: int = (status_prd[0] >> 2) & 1 - var ukp2_online = (status_prd[0] >> 3) & 1 - - if ukp1_online: - var tmp_1: int - var temperature_ukp_1: int - for i_temp in 6: - temperature_ukp_1 = status_prd.decode_u16(Constants.TEMPERATURE_UKP_1 + 2 * i_temp) - tmp_1 = round(Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_1) * TEMP + 3) - power_amplifier[i_temp].value0 = tmp_1 - - if power_amplifier.size() > 12: # Темпуратура от УМ литеры 1 - temperature_ukp_1 = status_prd.decode_u16(Constants.TEMPERATURE_UKP_1 + 2 * 7) - tmp_1 = round(Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_1) * TEMP + 3) - power_amplifier[6].value0 = tmp_1 - - if ukp2_online: - for i_temp in 6: - var temperature_ukp_2: int = status_prd.decode_u16(Constants.TEMPERATURE_UKP_2 + 2 * i_temp) - var tmp_2: int = round(Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_2) * TEMP + 3) - if power_amplifier.size() > 12: - power_amplifier[i_temp+7].value0 = tmp_2 - else: - power_amplifier[i_temp+6].value0 = tmp_2 + #static func check_temperature_um(status_prd: PackedByteArray, power_amplifier: Array) -> void: + #const Constants: Dictionary = { + #'CONST_MIN_TEMP': -25, + #'MAXIMUM_CODE_ADC': 3796, + #'MINIMUM_CODE_AD': 2660, + #'TEMPERATURE_UKP_1': 47, + #'TEMPERATURE_UKP_2': 79, + #} + #const TEMP: float = 115.0 / (Constants.MAXIMUM_CODE_ADC - Constants.MINIMUM_CODE_AD) + #var ukp1_online: int = (status_prd[0] >> 2) & 1 + #var ukp2_online = (status_prd[0] >> 3) & 1 +# + #if ukp1_online: + #var tmp_1: int + #var temperature_ukp_1: int + #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 +# + #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 +# + #if ukp2_online: + #for i_temp in 6: + #var temperature_ukp_2: int = status_prd.decode_u16(Constants.TEMPERATURE_UKP_2 + 2 * i_temp) + #var tmp_2: int = round(Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_2) * TEMP + 3) + #if power_amplifier.size() > 12: + #power_amplifier[i_temp+7].value1 = tmp_2 + #else: + #power_amplifier[i_temp+6].value1 = tmp_2 ## Проверка ДКМ @@ -645,13 +647,59 @@ class TestPRD extends Node: print_debug('dou_%s: false' % litera) all_dou_ok = false - print([litera, ray_dic]) control_dic[dou] = all_dou_ok return control_dic - static func get_minimum_pow(pow_dic: Dictionary, cur_litera: int)-> Dictionary: - var minimum_value_dic: Dictionary + static func prep_power(power_dic: Dictionary, prd_name: String)-> Dictionary: + const RAY_KEYS := ["RAY_m5", "RAY_5", "RAY_15", "RAY_25", "RAY_35", "RAY_45"] + var prep_pow_dic: Dictionary = {} - return minimum_value_dic + var arr_litera: Array[int] + match prd_name: + '1н', '2н', '3н', '4н': + arr_litera = [2, 3] + '1в', '2в', '3в', '4в': + arr_litera = [4, 5] + '1к', '2к', '3к', '4к': + arr_litera = [6, 7, 1] + + if not arr_litera: + print_debug('Ошибка в prd_name') + return prep_pow_dic + + var um_names: Array[Array] = [] + if arr_litera.size() != 3: + um_names = [ + ['um_1', 'um_2', 'um_3', 'um_4', 'um_5', 'um_6'], + ['um_7', 'um_8', 'um_9', 'um_10', 'um_11', 'um_12'] + ] + else: + um_names = [ + ['um_1', 'um_2', 'um_3', 'um_4', 'um_5', 'um_6'], + ['um_8', 'um_9', 'um_10', 'um_11', 'um_12', 'um_13'], + ['um_7'] # Особый случай для третьего элемента + ] + + for litera_index in arr_litera.size(): + var litera: int = arr_litera[litera_index] + var litera_data: Dictionary = power_dic.get(litera, {}) + var um_data: Array[Array] = [[], [], [], [], [], []] + + for i in range(RAY_KEYS.size()): + var ray_key: String = RAY_KEYS[i] + var ray_array: Array = litera_data.get(ray_key, []) + + if ray_array.size() == 1: + var single_value = ray_array[0] + for j in range(6): + um_data[j].append(single_value) + else: + for j in range(6): + um_data[j].append(ray_array[j] if j < ray_array.size() else 0) + + var current_um_names: Array = um_names[litera_index] + for um_index in range(current_um_names.size()): + prep_pow_dic[current_um_names[um_index]] = um_data[um_index] + return prep_pow_dic From 955baba574e4852363c920e369e7d19c4a8fd9c7 Mon Sep 17 00:00:00 2001 From: Maxim Date: Mon, 25 Aug 2025 14:41:54 +0300 Subject: [PATCH 3/9] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B2=D1=8B=D1=85=D0=BE=D0=B4=D0=B0=20=D0=B8?= =?UTF-8?q?=D0=B7=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-prd-k/pribor-prd-k.gd | 56 +++++----- scenes/pribor-prd-k/pribor-prd-k.tscn | 153 ++------------------------ scenes/pribor-prd-n/pribor-prd-n.gd | 47 ++++---- scenes/pribor-prd-n/pribor-prd-n.tscn | 100 +---------------- scenes/pribor-prd-v/pribor-prd-v.gd | 45 ++++---- scenes/pribor-prd-v/pribor-prd-v.tscn | 100 +---------------- scripts/pribor-prd.gd | 76 +++++-------- 7 files changed, 107 insertions(+), 470 deletions(-) diff --git a/scenes/pribor-prd-k/pribor-prd-k.gd b/scenes/pribor-prd-k/pribor-prd-k.gd index de584de5..9d7fbf5a 100644 --- a/scenes/pribor-prd-k/pribor-prd-k.gd +++ b/scenes/pribor-prd-k/pribor-prd-k.gd @@ -13,7 +13,7 @@ const constants_k: Dictionary = { 'ADDR_UG_LITERA_3': 0x10A, 'TEMP_THRESHOLD': 40, 'POWER_THRESHOLD': 40, - 'TIMER_DELAY': 0.50, + 'TIMER_DELAY': 5.0, 'RAY_DOU_NUM': 0x3, 'ATT_UM_1': 0x0, 'ATT_UM_6': 0x7, @@ -45,18 +45,6 @@ var block_ip_config_k := { 'ip12_50_2': [6, false], 'ip5_25': [7, false], } -# Проверка ДКМ -var block_dkm_config_k: = { - 'dkm_1': false, - 'dkm_6': false, - 'dkm_7': false, -} -# Проверка ФС -var block_fs_prd_config_k: = { - 'fs_1': false, - 'fs_6': false, - 'fs_7': false, -} var block_kasseta_y5_prd_config_k: = { 'yau07': false, 'ems': false, @@ -75,11 +63,15 @@ var unit_prd_k: Object # Результаты контроля var control_results_k: Dictionary = { 'block_ip': false, # Проверка касет П1 и ИП МА2000 - 'temperature': true, # Проверка температур УМ - 'dkm': false, + 'temperature': true, + 'dkm_1': false, + 'dkm_6': false, + 'dkm_7': false, 'dou_6': false, - 'dou_7': false, # Мощность от УКП - 'fs': false, + 'dou_7': false, + 'fs_1': false, + 'fs_6': false, + 'fs_7': false, } var test = preload('res://scripts/pribor-prd.gd') @@ -115,8 +107,6 @@ func initialize_connections() -> void: 'prd_config': PRIBOR_CONFIG, 'fs_params': FS_PARAMS, 'block_ip_prd_config': block_ip_config_k, - 'block_dkm_prd_config': block_dkm_config_k, - 'block_fs_prd_config': block_fs_prd_config_k, 'block_kasseta_y5_prd_config': block_kasseta_y5_prd_config_k, 'control_results': control_results_k, 'current_litera': start_litera, @@ -147,6 +137,10 @@ func _enter_tree() -> void: $control_result.text = 'Выполняется ...' $control_result.add_theme_color_override('font_color', Color.ALICE_BLUE) signaller.connect('режим_работа', Callable(self, 'on_mode_changed').bind(false)) + signaller.connect('режим_журнал', Callable(self, 'on_mode_changed').bind(false)) + signaller.connect('режим_эмс', Callable(self, 'on_mode_changed').bind(false)) + signaller.connect('режим_настройки', Callable(self, 'on_mode_changed').bind(false)) + signaller.connect('режим_контроль', Callable(self, 'on_mode_changed').bind(true)) func _exit_tree() -> void: @@ -166,10 +160,14 @@ func on_mode_changed(in_tree: bool) -> void: prd_k_module.cmd_array.append([unit_prd_k.CmdCode.WRITE_ISA, [constants_k.ADDR_UG_LITERA_1, ug_work_1, constants_k.ADDR_UG_LITERA_2, ug_work_2, constants_k.ADDR_UG_LITERA_3, ug_work_3]]) signaller.emit_signal('interfer_off_all') else: + set_default_state() + control_prd_k.state = control_prd_k.STATE_MASHINE.INIT mashine_timer.start() func power_fill(pow_dic: Dictionary) -> void: + if not control_prd_k.block_kasseta_y5_config.yau07 or not control_prd_k.block_kasseta_y5_config.ukp1 or not control_prd_k.block_kasseta_y5_config.ukp2: + return var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier') for i_powapm in power_amplifier: var powamp_meta: String = i_powapm.get_meta('um') @@ -206,23 +204,21 @@ func on_control_result(result_dic: Dictionary, power_dic: Dictionary) -> void: if block_ip_config_k.has(meta_ip) and block_kasseta_y5_prd_config_k.ug: power_supply.state = STATE_VAL.GOOD if block_ip_config_k[meta_ip][1] else STATE_VAL.ERROR - var fs_results: Dictionary = control_prd_k.block_fs_config var fs_nodes: Array = get_tree().get_nodes_in_group('fs_group') for f in fs_nodes: var fs_meta: String = f.get_meta('fs') - if fs_results.has(fs_meta): - var new_state = fs_results[fs_meta] + if result_dic.has(fs_meta): + var new_state = result_dic[fs_meta] f.state = new_state - fs_results[fs_meta] = new_state + result_dic[fs_meta] = new_state - var dkm: Dictionary = control_prd_k.block_dkm_config - if fs_results.fs_1: - $kasseta_fs_kd/ref_A2.state = STATE_VAL.GOOD if dkm.dkm_1 else STATE_VAL.ERROR - if fs_results.fs_6: - $kasseta_fs_kd/ref_A4.state = STATE_VAL.GOOD if dkm.dkm_6 else STATE_VAL.ERROR + if result_dic.fs_1: + $kasseta_fs_kd/ref_A2.state = STATE_VAL.GOOD if result_dic.dkm_1 else STATE_VAL.ERROR + if result_dic.fs_6: + $kasseta_fs_kd/ref_A4.state = STATE_VAL.GOOD if result_dic.dkm_6 else STATE_VAL.ERROR $dou6_A7.state = STATE_VAL.GOOD if result_dic.dou_6 else STATE_VAL.ERROR - if fs_results.fs_7: - $kasseta_fs_kd/ref_A7.state = STATE_VAL.GOOD if dkm.dkm_7 else STATE_VAL.ERROR + if result_dic.fs_7: + $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 power_fill(power_dic) diff --git a/scenes/pribor-prd-k/pribor-prd-k.tscn b/scenes/pribor-prd-k/pribor-prd-k.tscn index 6c859216..b7def9a6 100644 --- a/scenes/pribor-prd-k/pribor-prd-k.tscn +++ b/scenes/pribor-prd-k/pribor-prd-k.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=15 format=3 uid="uid://m5s87q7m66lj"] +[gd_scene load_steps=10 format=3 uid="uid://m5s87q7m66lj"] [ext_resource type="PackedScene" uid="uid://d3iqb5e4g81m5" path="res://scenes/контроль/элемент-г.tscn" id="1_8dmgr"] [ext_resource type="Script" uid="uid://cwvikiygf8b1m" path="res://scenes/pribor-prd-k/pribor-prd-k.gd" id="1_tpdyp"] @@ -9,31 +9,6 @@ [ext_resource type="Script" uid="uid://crpedygm3gohi" path="res://scenes/контроль/кассета.gd" id="7_xpa2n"] [ext_resource type="PackedScene" uid="uid://dq31j24gv5vi4" path="res://scenes/контроль/кассета-п-2.tscn" id="8_6fdp7"] [ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/элемент-в.tscn" id="8_la5yt"] -[ext_resource type="Texture2D" uid="uid://belwchvdktrw0" path="res://data/эмс-бланк.png" id="11_c7lv8"] -[ext_resource type="Texture2D" uid="uid://bwddxs24es81u" path="res://data/эмс-бланк-пост.png" id="12_wd1vi"] -[ext_resource type="Texture2D" uid="uid://pfoscstbm025" path="res://data/эмс-бланк-перем.png" id="13_bjebg"] - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_kc77u"] - -[sub_resource type="SpriteFrames" id="SpriteFrames_di0aa"] -animations = [{ -"frames": [{ -"duration": 1.0, -"texture": ExtResource("11_c7lv8") -}, { -"duration": 1.0, -"texture": ExtResource("12_wd1vi") -}, { -"duration": 1.0, -"texture": ExtResource("13_bjebg") -}, { -"duration": 1.0, -"texture": null -}], -"loop": true, -"name": &"default", -"speed": 5.0 -}] [node name="pribor_prd_k" type="Control"] layout_mode = 3 @@ -204,7 +179,7 @@ offset_left = 8.0 offset_top = 242.0 offset_right = 175.0 offset_bottom = 337.0 -fname = "РМ16-20М" +fname = "УМ1535Б" rname = "A16" value0_info = "Мощность, Вт" value1_info = "Температура,°C" @@ -216,7 +191,7 @@ offset_left = 8.0 offset_top = 337.0 offset_right = 173.0 offset_bottom = 432.0 -fname = "РМ16-20М" +fname = "УМ1535Б" rname = "A17" value0_info = "Мощность, Вт" value1_info = "Температура,°C" @@ -228,7 +203,7 @@ offset_left = 8.0 offset_top = 432.0 offset_right = 175.0 offset_bottom = 527.0 -fname = "РМ16-20М" +fname = "УМ1535Б" rname = "A18" value0_info = "Мощность, Вт" value1_info = "Температура,°C" @@ -240,7 +215,7 @@ offset_left = 8.0 offset_top = 527.0 offset_right = 175.0 offset_bottom = 622.0 -fname = "РМ16-20М" +fname = "УМ1535Б" rname = "A19" value0_info = "Мощность, Вт" value1_info = "Температура,°C" @@ -252,7 +227,7 @@ offset_left = 8.0 offset_top = 622.0 offset_right = 175.0 offset_bottom = 717.0 -fname = "РМ16-20М" +fname = "УМ1535Б" rname = "A20" value0_info = "Мощность, Вт" value1_info = "Температура,°C" @@ -264,7 +239,7 @@ offset_left = 8.0 offset_top = 717.0 offset_right = 175.0 offset_bottom = 812.0 -fname = "РМ16-20М" +fname = "УМ1535Б" rname = "A21" value0_info = "Мощность, Вт" value1_info = "Температура,°C" @@ -349,117 +324,3 @@ theme_override_font_sizes/font_size = 28 text = "Прибор ПРД- неисправен" horizontal_alignment = 1 metadata/_edit_lock_ = true - -[node name="Monitoring_panel" type="Panel" parent="."] -visible = false -layout_mode = 0 -offset_left = 496.0 -offset_top = 8.0 -offset_right = 496.0 -offset_bottom = 8.0 -theme_override_styles/panel = SubResource("StyleBoxTexture_kc77u") - -[node name="in_fs_1" type="AnimatedSprite2D" parent="Monitoring_panel"] -position = Vector2(206, 577) -scale = Vector2(1.2, 1.2) -sprite_frames = SubResource("SpriteFrames_di0aa") - -[node name="in_fs_1" type="Label" parent="Monitoring_panel/in_fs_1"] -offset_left = -15.1667 -offset_top = 14.0 -offset_right = 14.8333 -offset_bottom = 33.0 -theme_override_colors/font_color = Color(0.890196, 0.486275, 0.196078, 1) -theme_override_font_sizes/font_size = 10 -text = "In FS 1" -horizontal_alignment = 1 -metadata/_edit_use_anchors_ = true - -[node name="in_fs_2" type="AnimatedSprite2D" parent="Monitoring_panel"] -position = Vector2(319, 577) -scale = Vector2(1.2, 1.2) -sprite_frames = SubResource("SpriteFrames_di0aa") - -[node name="in_fs_3" type="Label" parent="Monitoring_panel/in_fs_2"] -offset_left = -15.1667 -offset_top = 14.0 -offset_right = 14.8333 -offset_bottom = 33.0 -theme_override_colors/font_color = Color(0.890196, 0.486275, 0.196078, 1) -theme_override_font_sizes/font_size = 10 -text = "In FS 3" -horizontal_alignment = 1 - -[node name="out_ems_1" type="AnimatedSprite2D" parent="Monitoring_panel"] -position = Vector2(206, 465) -scale = Vector2(1.2, 1.2) -sprite_frames = SubResource("SpriteFrames_di0aa") - -[node name="Out_ems_1" type="Label" parent="Monitoring_panel/out_ems_1"] -anchors_preset = -1 -anchor_left = 0.0185185 -anchor_right = 0.0185185 -anchor_bottom = 0.555556 -offset_left = -18.5 -offset_top = 14.0 -offset_right = 17.5 -offset_bottom = 33.0 -theme_override_colors/font_color = Color(0.890196, 0.486275, 0.196078, 1) -theme_override_font_sizes/font_size = 10 -text = "Out -ems 1" -horizontal_alignment = 1 -metadata/_edit_use_anchors_ = true - -[node name="out_ems_2" type="AnimatedSprite2D" parent="Monitoring_panel"] -position = Vector2(319, 465) -scale = Vector2(1.2, 1.2) -sprite_frames = SubResource("SpriteFrames_di0aa") - -[node name="Out_ems_1" type="Label" parent="Monitoring_panel/out_ems_2"] -offset_left = -15.1667 -offset_top = 14.0 -offset_right = 14.8333 -offset_bottom = 33.0 -theme_override_colors/font_color = Color(0.890196, 0.486275, 0.196078, 1) -theme_override_font_sizes/font_size = 10 -text = "Out -ems 2" -horizontal_alignment = 1 - -[node name="in_fs_3" type="AnimatedSprite2D" parent="Monitoring_panel"] -position = Vector2(264, 577) -scale = Vector2(1.2, 1.2) -sprite_frames = SubResource("SpriteFrames_di0aa") - -[node name="in_fs_2" type="Label" parent="Monitoring_panel/in_fs_3"] -offset_left = -15.1667 -offset_top = 14.0 -offset_right = 14.8333 -offset_bottom = 33.0 -theme_override_colors/font_color = Color(0.890196, 0.486275, 0.196078, 1) -theme_override_font_sizes/font_size = 10 -text = "In FS 2" -horizontal_alignment = 1 -metadata/_edit_use_anchors_ = true - -[node name="out_ems_3" type="AnimatedSprite2D" parent="Monitoring_panel"] -position = Vector2(264, 465) -scale = Vector2(1.2, 1.2) -sprite_frames = SubResource("SpriteFrames_di0aa") - -[node name="Out_ems_1" type="Label" parent="Monitoring_panel/out_ems_3"] -anchors_preset = -1 -anchor_left = 0.0185185 -anchor_right = 0.0185185 -anchor_bottom = 0.555556 -offset_left = -18.5 -offset_top = 14.0 -offset_right = 17.5 -offset_bottom = 33.0 -theme_override_colors/font_color = Color(0.890196, 0.486275, 0.196078, 1) -theme_override_font_sizes/font_size = 10 -text = "Out -ems 3" -horizontal_alignment = 1 -metadata/_edit_use_anchors_ = true diff --git a/scenes/pribor-prd-n/pribor-prd-n.gd b/scenes/pribor-prd-n/pribor-prd-n.gd index e6fe22f8..b0449b88 100644 --- a/scenes/pribor-prd-n/pribor-prd-n.gd +++ b/scenes/pribor-prd-n/pribor-prd-n.gd @@ -12,7 +12,7 @@ const constants_n = { 'ADDR_UG_LITERA_3': 0x10A, 'TEMP_THRESHOLD': 70, 'POWER_THRESHOLD': 40, - 'TIMER_DELAY': 0.10, + 'TIMER_DELAY': 5.0, 'RAY_DOU_NUM': 0x3, 'ATT_UM_2': 0x7, 'ATT_UM_3': 0x7, @@ -39,17 +39,6 @@ var block_ip_config_n:= { 'ip12_50_1': [4, false], 'ip5_25': [7, false], } -# Проверка ДКМ -var block_dkm_config_n: = { - 'dkm_2': false, - 'dkm_3': false, -} -# Проверка ФС -var block_fs_prd_config_n: = { - 'fs_2': false, - 'fs_3': false, -} - var block_kasseta_y5_prd_config_n: = { 'yau07': false, 'ems': false, @@ -71,10 +60,12 @@ var control_prd_n: Object var control_results_n: Dictionary = { 'block_ip': false, # Проверка касет П1 и ИП МА2000 'temperature': true, # Проверка температур УМ - 'dkm': false, + 'dkm_2': false, + 'dkm_3': false, 'dou_2': false, 'dou_3': false, - 'fs': false, + 'fs_2': false, + 'fs_3': false, } var test = preload('res://scripts/pribor-prd.gd') @@ -109,8 +100,6 @@ func initialize_connections() -> void: 'prd_config': PRIBOR_CONFIG_N, 'fs_params': FS_PARAMS_N, 'block_ip_prd_config': block_ip_config_n, - 'block_dkm_prd_config': block_dkm_config_n, - 'block_fs_prd_config': block_fs_prd_config_n, 'block_kasseta_y5_prd_config': block_kasseta_y5_prd_config_n, 'control_results': control_results_n, 'current_litera': start_litera, @@ -141,6 +130,10 @@ func _enter_tree() -> void: $control_result.text = 'Выполняется ...' $control_result.add_theme_color_override('font_color', Color.ALICE_BLUE) signaller.connect('режим_работа', Callable(self, 'on_mode_changed').bind(false)) + signaller.connect('режим_журнал', Callable(self, 'on_mode_changed').bind(false)) + signaller.connect('режим_эмс', Callable(self, 'on_mode_changed').bind(false)) + signaller.connect('режим_настройки', Callable(self, 'on_mode_changed').bind(false)) + signaller.connect('режим_контроль', Callable(self, 'on_mode_changed').bind(true)) func _exit_tree() -> void: @@ -160,14 +153,18 @@ func on_mode_changed(in_tree: bool) -> void: signaller.emit_signal('interfer_off_all') prd_n_module.cmd_array.append([unit_prd_n.CmdCode.WRITE_ISA, [constants_n.ADDR_UG_LITERA_1, ug_work_1, constants_n.ADDR_UG_LITERA_2, ug_work_2]]) else: + set_default_state() + control_prd_n.state = control_prd_n.STATE_MASHINE.INIT mashine_timer.start() func power_fill(pow_dic: Dictionary) -> void: + if not control_prd_n.block_kasseta_y5_config.yau07 or not control_prd_n.block_kasseta_y5_config.ukp1 or not control_prd_n.block_kasseta_y5_config.ukp2: + return var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier') for i_powapm in power_amplifier: var powamp_meta: String = i_powapm.get_meta('um') - var status = STATE_VAL.GOOD + var status = STATE_VAL.GOOD if pow_dic else STATE_VAL.NONE if pow_dic[powamp_meta].size() < 6: status = STATE_VAL.ERROR else: @@ -197,21 +194,19 @@ func on_control_result(result_dic: Dictionary, power_dic: Dictionary) -> void: if block_ip_config_n.has(meta_ip) and block_kasseta_y5_prd_config_n.ug: power_supply.state = STATE_VAL.GOOD if block_ip_config_n[meta_ip][1] else STATE_VAL.ERROR - var fs_results: Dictionary = control_prd_n.block_fs_config var fs_nodes: Array = get_tree().get_nodes_in_group('fs_group') for f in fs_nodes: var fs_meta: String = f.get_meta('fs') - if fs_results.has(fs_meta): - var new_state = fs_results[fs_meta] + if result_dic.has(fs_meta): + var new_state = result_dic[fs_meta] f.state = new_state - fs_results[fs_meta] = new_state + result_dic[fs_meta] = new_state - var dkm: Dictionary = control_prd_n.block_dkm_config - if fs_results.fs_2: - $kasseta_FS_ND/ref_A4.state = STATE_VAL.GOOD if dkm.dkm_2 else STATE_VAL.ERROR + if result_dic.fs_2: + $kasseta_FS_ND/ref_A4.state = STATE_VAL.GOOD if result_dic.dkm_2 else STATE_VAL.ERROR $dou2_A5.state = STATE_VAL.GOOD if result_dic.dou_2 else STATE_VAL.ERROR - if fs_results.fs_3: - $kasseta_FS_ND/ref_A3.state = STATE_VAL.GOOD if dkm.dkm_3 else STATE_VAL.ERROR + if result_dic.fs_3: + $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 power_fill(power_dic) diff --git a/scenes/pribor-prd-n/pribor-prd-n.tscn b/scenes/pribor-prd-n/pribor-prd-n.tscn index ae171850..0b67fd40 100644 --- a/scenes/pribor-prd-n/pribor-prd-n.tscn +++ b/scenes/pribor-prd-n/pribor-prd-n.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=13 format=3 uid="uid://dnuexoef2nnv5"] +[gd_scene load_steps=8 format=3 uid="uid://dnuexoef2nnv5"] [ext_resource type="Script" uid="uid://cto2r4ipew65m" path="res://scenes/pribor-prd-n/pribor-prd-n.gd" id="1_bnnv3"] [ext_resource type="PackedScene" uid="uid://d3iqb5e4g81m5" path="res://scenes/контроль/элемент-г.tscn" id="2_is25t"] @@ -7,31 +7,6 @@ [ext_resource type="Script" uid="uid://crpedygm3gohi" path="res://scenes/контроль/кассета.gd" id="6_b5wvk"] [ext_resource type="PackedScene" uid="uid://bcyxqni7gxvtq" path="res://scenes/контроль/блок-в.tscn" id="7_bnnv3"] [ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/элемент-в.tscn" id="7_eoqf2"] -[ext_resource type="Texture2D" uid="uid://belwchvdktrw0" path="res://data/эмс-бланк.png" id="9_k1x0o"] -[ext_resource type="Texture2D" uid="uid://bwddxs24es81u" path="res://data/эмс-бланк-пост.png" id="10_7dcjd"] -[ext_resource type="Texture2D" uid="uid://pfoscstbm025" path="res://data/эмс-бланк-перем.png" id="11_ius1v"] - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_bnnv3"] - -[sub_resource type="SpriteFrames" id="SpriteFrames_xkifg"] -animations = [{ -"frames": [{ -"duration": 1.0, -"texture": ExtResource("9_k1x0o") -}, { -"duration": 1.0, -"texture": ExtResource("10_7dcjd") -}, { -"duration": 1.0, -"texture": ExtResource("11_ius1v") -}, { -"duration": 1.0, -"texture": null -}], -"loop": true, -"name": &"default", -"speed": 5.0 -}] [node name="pribor_prd_n" type="Control"] layout_mode = 3 @@ -367,79 +342,6 @@ value0_info = "Мощность, Вт" value1_info = "Температура,°C" metadata/um = "um_12" -[node name="Monitoring_panel" type="Panel" parent="."] -visible = false -layout_mode = 0 -theme_override_styles/panel = SubResource("StyleBoxTexture_bnnv3") - -[node name="in_fs_1" type="AnimatedSprite2D" parent="Monitoring_panel"] -position = Vector2(454, 577) -scale = Vector2(1.2, 1.2) -sprite_frames = SubResource("SpriteFrames_xkifg") - -[node name="in_fs_1" type="Label" parent="Monitoring_panel/in_fs_1"] -offset_left = -15.1667 -offset_top = 14.0 -offset_right = 14.8333 -offset_bottom = 33.0 -theme_override_colors/font_color = Color(0.890196, 0.486275, 0.196078, 1) -theme_override_font_sizes/font_size = 10 -text = "In FS 1" -horizontal_alignment = 1 -metadata/_edit_use_anchors_ = true - -[node name="in_fs_2" type="AnimatedSprite2D" parent="Monitoring_panel"] -position = Vector2(207, 577) -scale = Vector2(1.2, 1.2) -sprite_frames = SubResource("SpriteFrames_xkifg") - -[node name="in_fs_2" type="Label" parent="Monitoring_panel/in_fs_2"] -offset_left = -15.1667 -offset_top = 14.0 -offset_right = 14.8333 -offset_bottom = 33.0 -theme_override_colors/font_color = Color(0.890196, 0.486275, 0.196078, 1) -theme_override_font_sizes/font_size = 10 -text = "In FS 2" -horizontal_alignment = 1 - -[node name="out_ems_1" type="AnimatedSprite2D" parent="Monitoring_panel"] -position = Vector2(454, 465) -scale = Vector2(1.2, 1.2) -sprite_frames = SubResource("SpriteFrames_xkifg") - -[node name="Out_ems_1" type="Label" parent="Monitoring_panel/out_ems_1"] -anchors_preset = -1 -anchor_left = 0.0185185 -anchor_right = 0.0185185 -anchor_bottom = 0.555556 -offset_left = -18.5 -offset_top = 14.0 -offset_right = 17.5 -offset_bottom = 33.0 -theme_override_colors/font_color = Color(0.890196, 0.486275, 0.196078, 1) -theme_override_font_sizes/font_size = 10 -text = "Out -ems 1" -horizontal_alignment = 1 -metadata/_edit_use_anchors_ = true - -[node name="out_ems_2" type="AnimatedSprite2D" parent="Monitoring_panel"] -position = Vector2(207, 465) -scale = Vector2(1.2, 1.2) -sprite_frames = SubResource("SpriteFrames_xkifg") - -[node name="Out_ems_1" type="Label" parent="Monitoring_panel/out_ems_2"] -offset_left = -15.1667 -offset_top = 14.0 -offset_right = 14.8333 -offset_bottom = 33.0 -theme_override_colors/font_color = Color(0.890196, 0.486275, 0.196078, 1) -theme_override_font_sizes/font_size = 10 -text = "Out -ems 2" -horizontal_alignment = 1 - [node name="control_result" type="Label" parent="."] layout_mode = 0 offset_left = 9.0 diff --git a/scenes/pribor-prd-v/pribor-prd-v.gd b/scenes/pribor-prd-v/pribor-prd-v.gd index 6307f897..15df6004 100644 --- a/scenes/pribor-prd-v/pribor-prd-v.gd +++ b/scenes/pribor-prd-v/pribor-prd-v.gd @@ -39,16 +39,6 @@ var block_ip_config_v := { 'ip12_50_1': [4, false], 'ip5_25': [7, false], } -# Проверка ДКМ -var block_dkm_config_v: = { - 'dkm_4': false, - 'dkm_5': false, -} -# Проверка ФС -var block_fs_prd_config_v: = { - 'fs_4': false, - 'fs_5': false, -} var block_kasseta_y5_prd_config_v: = { 'yau07': false, 'ems': false, @@ -70,10 +60,12 @@ var control_prd_v: Object var control_results_v: Dictionary = { 'block_ip': false, # Проверка касет П1 и ИП МА2000 'temperature': true, # Проверка температур УМ - 'dkm': false, + 'dkm_4': false, + 'dkm_5': false, 'dou_4': false, 'dou_5': false, - 'fs': false, + 'fs_4': false, + 'fs_5': false, } var test = preload('res://scripts/pribor-prd.gd') @@ -107,8 +99,6 @@ func initialize_connections() -> void: 'prd_config': PRIBOR_CONFIG_V, 'fs_params': FS_PARAMS_V, 'block_ip_prd_config': block_ip_config_v, - 'block_dkm_prd_config': block_dkm_config_v, - 'block_fs_prd_config': block_fs_prd_config_v, 'block_kasseta_y5_prd_config': block_kasseta_y5_prd_config_v, 'control_results': control_results_v, 'current_litera': start_litera, @@ -139,6 +129,11 @@ func _enter_tree() -> void: $control_result.text = 'Выполняется ...' $control_result.add_theme_color_override('font_color', Color.ALICE_BLUE) signaller.connect('режим_работа', Callable(self, 'on_mode_changed').bind(false)) + signaller.connect('режим_журнал', Callable(self, 'on_mode_changed').bind(false)) + signaller.connect('режим_эмс', Callable(self, 'on_mode_changed').bind(false)) + signaller.connect('режим_настройки', Callable(self, 'on_mode_changed').bind(false)) + signaller.connect('режим_контроль', Callable(self, 'on_mode_changed').bind(true)) + func _exit_tree() -> void: @@ -158,14 +153,18 @@ func on_mode_changed(in_tree: bool) -> void: prd_v_module.cmd_array.append([unit_prd_v.CmdCode.WRITE_ISA, [constants_v.ADDR_UG_LITERA_1, ug_work_1, constants_v.ADDR_UG_LITERA_2, ug_work_2]]) signaller.emit_signal('interfer_off_all') else: + set_default_state() + control_prd_v.state = control_prd_v.STATE_MASHINE.INIT mashine_timer.start() func power_fill(pow_dic: Dictionary) -> void: + if not control_prd_v.block_kasseta_y5_config.yau07 or not control_prd_v.block_kasseta_y5_config.ukp1 or not control_prd_v.block_kasseta_y5_config.ukp2: + return var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier') for i_powapm in power_amplifier: var powamp_meta: String = i_powapm.get_meta('um') - var status = STATE_VAL.GOOD + var status = STATE_VAL.GOOD if pow_dic else STATE_VAL.NONE if pow_dic[powamp_meta].size() < 6: status = STATE_VAL.ERROR else: @@ -195,21 +194,19 @@ func on_control_result(result_dic: Dictionary, power_dic: Dictionary) -> void: if block_ip_config_v.has(meta_ip) and block_kasseta_y5_prd_config_v.ug: power_supply.state = STATE_VAL.GOOD if block_ip_config_v[meta_ip][1] else STATE_VAL.ERROR - var fs_results: Dictionary = control_prd_v.block_fs_config - var dkm: Dictionary = control_prd_v.block_dkm_config var fs_nodes: Array = get_tree().get_nodes_in_group('fs_group') for f in fs_nodes: var fs_meta: String = f.get_meta('fs') - if fs_results.has(fs_meta): - var new_state = fs_results[fs_meta] + if result_dic.has(fs_meta): + var new_state = result_dic[fs_meta] f.state = new_state - fs_results[fs_meta] = new_state + result_dic[fs_meta] = new_state - if fs_results.fs_4: - $kasseta_FS_VD/ref_A2.state = STATE_VAL.GOOD if dkm.dkm_4 else STATE_VAL.ERROR + if result_dic.fs_4: + $kasseta_FS_VD/ref_A2.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 - if fs_results.fs_5: - $kasseta_FS_VD/ref_A6.state = STATE_VAL.GOOD if dkm.dkm_5 else STATE_VAL.ERROR + if result_dic.fs_5: + $kasseta_FS_VD/ref_A6.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 power_fill(power_dic) diff --git a/scenes/pribor-prd-v/pribor-prd-v.tscn b/scenes/pribor-prd-v/pribor-prd-v.tscn index 4f502206..6a8ac267 100644 --- a/scenes/pribor-prd-v/pribor-prd-v.tscn +++ b/scenes/pribor-prd-v/pribor-prd-v.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=14 format=3 uid="uid://cvskpe1ti3p45"] +[gd_scene load_steps=9 format=3 uid="uid://cvskpe1ti3p45"] [ext_resource type="Script" uid="uid://cvuosuvjaci1h" path="res://scenes/pribor-prd-v/pribor-prd-v.gd" id="1_c20s6"] [ext_resource type="PackedScene" uid="uid://d3iqb5e4g81m5" path="res://scenes/контроль/элемент-г.tscn" id="2_xpo4b"] @@ -8,31 +8,6 @@ [ext_resource type="Script" uid="uid://crpedygm3gohi" path="res://scenes/контроль/кассета.gd" id="6_os4mt"] [ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/элемент-в.tscn" id="7_38u2b"] [ext_resource type="PackedScene" uid="uid://bcyxqni7gxvtq" path="res://scenes/контроль/блок-в.tscn" id="8_4e87c"] -[ext_resource type="Texture2D" uid="uid://belwchvdktrw0" path="res://data/эмс-бланк.png" id="10_4e87c"] -[ext_resource type="Texture2D" uid="uid://bwddxs24es81u" path="res://data/эмс-бланк-пост.png" id="11_g8fvp"] -[ext_resource type="Texture2D" uid="uid://pfoscstbm025" path="res://data/эмс-бланк-перем.png" id="12_gsby4"] - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_vxfkm"] - -[sub_resource type="SpriteFrames" id="SpriteFrames_s5gcy"] -animations = [{ -"frames": [{ -"duration": 1.0, -"texture": ExtResource("10_4e87c") -}, { -"duration": 1.0, -"texture": ExtResource("11_g8fvp") -}, { -"duration": 1.0, -"texture": ExtResource("12_gsby4") -}, { -"duration": 1.0, -"texture": null -}], -"loop": true, -"name": &"default", -"speed": 5.0 -}] [node name="pribor_prd_v" type="Control"] layout_mode = 3 @@ -316,79 +291,6 @@ value0_info = "Мощность, Вт" value1_info = "Температура,°C" metadata/um = "um_12" -[node name="Monitoring_panel" type="Panel" parent="."] -visible = false -layout_mode = 0 -theme_override_styles/panel = SubResource("StyleBoxTexture_vxfkm") - -[node name="in_fs_1" type="AnimatedSprite2D" parent="Monitoring_panel"] -position = Vector2(454, 577) -scale = Vector2(1.2, 1.2) -sprite_frames = SubResource("SpriteFrames_s5gcy") - -[node name="in_fs_1" type="Label" parent="Monitoring_panel/in_fs_1"] -offset_left = -15.1667 -offset_top = 14.0 -offset_right = 14.8333 -offset_bottom = 33.0 -theme_override_colors/font_color = Color(0.890196, 0.486275, 0.196078, 1) -theme_override_font_sizes/font_size = 10 -text = "In FS 1" -horizontal_alignment = 1 -metadata/_edit_use_anchors_ = true - -[node name="in_fs_2" type="AnimatedSprite2D" parent="Monitoring_panel"] -position = Vector2(207, 577) -scale = Vector2(1.2, 1.2) -sprite_frames = SubResource("SpriteFrames_s5gcy") - -[node name="in_fs_2" type="Label" parent="Monitoring_panel/in_fs_2"] -offset_left = -15.1667 -offset_top = 14.0 -offset_right = 14.8333 -offset_bottom = 33.0 -theme_override_colors/font_color = Color(0.890196, 0.486275, 0.196078, 1) -theme_override_font_sizes/font_size = 10 -text = "In FS 2" -horizontal_alignment = 1 - -[node name="out_ems_1" type="AnimatedSprite2D" parent="Monitoring_panel"] -position = Vector2(454, 465) -scale = Vector2(1.2, 1.2) -sprite_frames = SubResource("SpriteFrames_s5gcy") - -[node name="Out_ems_1" type="Label" parent="Monitoring_panel/out_ems_1"] -anchors_preset = -1 -anchor_left = 0.0185185 -anchor_right = 0.0185185 -anchor_bottom = 0.555556 -offset_left = -18.5 -offset_top = 14.0 -offset_right = 17.5 -offset_bottom = 33.0 -theme_override_colors/font_color = Color(0.890196, 0.486275, 0.196078, 1) -theme_override_font_sizes/font_size = 10 -text = "Out -ems 1" -horizontal_alignment = 1 -metadata/_edit_use_anchors_ = true - -[node name="out_ems_2" type="AnimatedSprite2D" parent="Monitoring_panel"] -position = Vector2(207, 465) -scale = Vector2(1.2, 1.2) -sprite_frames = SubResource("SpriteFrames_s5gcy") - -[node name="Out_ems_1" type="Label" parent="Monitoring_panel/out_ems_2"] -offset_left = -15.1667 -offset_top = 14.0 -offset_right = 14.8333 -offset_bottom = 33.0 -theme_override_colors/font_color = Color(0.890196, 0.486275, 0.196078, 1) -theme_override_font_sizes/font_size = 10 -text = "Out -ems 2" -horizontal_alignment = 1 - [node name="control_result" type="Label" parent="."] layout_mode = 0 offset_left = 9.0 diff --git a/scripts/pribor-prd.gd b/scripts/pribor-prd.gd index 91480df7..1ef7526c 100644 --- a/scripts/pribor-prd.gd +++ b/scripts/pribor-prd.gd @@ -56,8 +56,6 @@ class TestPRD extends Node: var pribor_config: Dictionary var fs_parameters: Dictionary var block_ip_config: Dictionary - var block_dkm_config: Dictionary - var block_fs_config: Dictionary var block_kasseta_y5_config: Dictionary var control_results: Dictionary var self_name: String @@ -83,8 +81,6 @@ class TestPRD extends Node: pribor_config = init_data['prd_config'] fs_parameters = init_data['fs_params'] block_ip_config = init_data['block_ip_prd_config'] - block_dkm_config = init_data['block_dkm_prd_config'] - block_fs_config = init_data['block_fs_prd_config'] block_kasseta_y5_config = init_data['block_kasseta_y5_prd_config'] control_results = init_data['control_results'] current_litera = init_data['current_litera'] @@ -125,7 +121,7 @@ class TestPRD extends Node: var fs_result := {fs_key: STATE_VAL.NONE} fs_result = on_fs_state(packet_type_7, fs_mapping, fs_result) - block_fs_config[fs_key] = fs_result[fs_key] + control_results[fs_key] = fs_result[fs_key] ## @@ -208,10 +204,10 @@ class TestPRD extends Node: func _handle_init_state() -> void: control_label.text = 'Выполняется инициализация ФС-%s' % current_litera if current_litera in [1, 2, 3, 4, 5, 6, 7]: - #state = STATE_MASHINE.FS_TURN_ON - state = STATE_MASHINE.STOP_CONTROL + state = STATE_MASHINE.FS_TURN_ON + #state = STATE_MASHINE.STOP_CONTROL else: - control_results = on_control_result(block_ip_config, block_dkm_config, block_fs_config, control_results) + control_results = on_control_result(block_ip_config, control_results) var send_power_pack = prep_power(power_result, self_name) emit_signal('control_is_over', control_results, send_power_pack) @@ -229,13 +225,13 @@ class TestPRD extends Node: control_label.text = 'Выполняется проверка ФС-%s' % current_litera if not module_prd.unit_yau07.online: return - if (current_litera == 2 and block_fs_config.fs_2) or \ - (current_litera == 3 and block_fs_config.fs_3) or \ - (current_litera == 4 and block_fs_config.fs_4) or \ - (current_litera == 5 and block_fs_config.fs_5) or \ - (current_litera == 6 and block_fs_config.fs_6) or \ - (current_litera == 7 and block_fs_config.fs_7) or \ - (current_litera == 1 and block_fs_config.fs_1): + if (current_litera == 2 and control_results.fs_2) or \ + (current_litera == 3 and control_results.fs_3) or \ + (current_litera == 4 and control_results.fs_4) or \ + (current_litera == 5 and control_results.fs_5) or \ + (current_litera == 6 and control_results.fs_6) or \ + (current_litera == 7 and control_results.fs_7) or \ + (current_litera == 1 and control_results.fs_1): state = STATE_MASHINE.CHEK_KASSETA_Y5 @@ -323,10 +319,23 @@ class TestPRD extends Node: func _process_dkm_status(status: PackedByteArray) -> void: - if not block_fs_config.has(_get_current_fs_key()): + if not control_results.has(_get_current_fs_key()): return var dkm_bit = _get_dkm_bit_for_current_fs(current_litera, constants) - block_dkm_config = check_dkm(status, dkm_bit, block_dkm_config) + if dkm_bit == 0: + control_results['dkm_1'] = check_dkm(status, dkm_bit) + elif dkm_bit == 1: + control_results['dkm_2'] = check_dkm(status, dkm_bit) + elif dkm_bit == 2: + control_results['dkm_3'] = check_dkm(status, dkm_bit) + elif dkm_bit == 3: + control_results['dkm_4'] = check_dkm(status, dkm_bit) + elif dkm_bit == 4: + control_results['dkm_5'] = check_dkm(status, dkm_bit) + elif dkm_bit == 5: + control_results['dkm_6'] = check_dkm(status, dkm_bit) + elif dkm_bit == 6: + control_results['dkm_7'] = check_dkm(status, dkm_bit) func _get_current_fs_key() -> String: @@ -360,25 +369,14 @@ class TestPRD extends Node: state = STATE_MASHINE.FS_TURN_OFF - static func on_control_result(ip_config: Dictionary, dkm_config: Dictionary, fs_config: Dictionary, ctrl_results: Dictionary) -> Dictionary: + static func on_control_result(ip_config: Dictionary, ctrl_results: Dictionary) -> Dictionary: var all_blocks_ip_ok = true - var all_blocks_dkm_ok = true - var all_blocks_fs_ok = true for block in ip_config: if not ip_config[block][1]: all_blocks_ip_ok = false ctrl_results['block_ip'] = all_blocks_ip_ok - for block in dkm_config: - if not dkm_config[block]: - all_blocks_dkm_ok = false - ctrl_results['dkm'] = all_blocks_dkm_ok - - for block in fs_config: - if not fs_config[block]: - all_blocks_fs_ok = false - ctrl_results['fs'] = all_blocks_fs_ok return ctrl_results @@ -481,24 +479,10 @@ class TestPRD extends Node: ## Проверка ДКМ - static func check_dkm(status_prd: PackedByteArray, bit_dkm: int, dkm_result: Dictionary) -> Dictionary: + static func check_dkm(status_prd: PackedByteArray, bit_dkm: int) -> bool: var dkm: int = 28 - var status_dkm = status_prd[dkm] >> bit_dkm & 1 - if bit_dkm == 0: - dkm_result['dkm_1'] = status_dkm - elif bit_dkm == 1: - dkm_result['dkm_2'] = status_dkm - elif bit_dkm == 2: - dkm_result['dkm_3'] = status_dkm - elif bit_dkm == 3: - dkm_result['dkm_4'] = status_dkm - elif bit_dkm == 4: - dkm_result['dkm_5'] = status_dkm - elif bit_dkm == 5: - dkm_result['dkm_6'] = status_dkm - elif bit_dkm == 6: - dkm_result['dkm_7'] = status_dkm - return dkm_result + var status_dkm: bool = status_prd[dkm] >> bit_dkm & 1 + return status_dkm ## From a1bf7d1081faed70b26ffc5617c3dc9e2d8963d7 Mon Sep 17 00:00:00 2001 From: Maxim Date: Mon, 25 Aug 2025 15:10:52 +0300 Subject: [PATCH 4/9] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA?= =?UTF-8?q?=D0=B8=20=D1=82=D0=B5=D0=BC=D0=BF=D0=B5=D1=80=D0=B0=D1=82=D1=83?= =?UTF-8?q?=D1=80=D1=8B=20=D0=BE=D1=82=20=D1=8F=D1=83-07=D0=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-prd-k/pribor-prd-k.gd | 6 +-- scenes/pribor-prd-n/pribor-prd-n.gd | 4 +- scenes/pribor-prd-v/pribor-prd-v.gd | 4 +- scripts/pribor-prd.gd | 71 ++++++++++++++--------------- 4 files changed, 42 insertions(+), 43 deletions(-) diff --git a/scenes/pribor-prd-k/pribor-prd-k.gd b/scenes/pribor-prd-k/pribor-prd-k.gd index 9d7fbf5a..a4752119 100644 --- a/scenes/pribor-prd-k/pribor-prd-k.gd +++ b/scenes/pribor-prd-k/pribor-prd-k.gd @@ -60,6 +60,7 @@ 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 @@ -74,8 +75,7 @@ var control_results_k: Dictionary = { 'fs_7': false, } -var test = preload('res://scripts/pribor-prd.gd') -var control_prd_k: Object +var test_control_k = preload('res://scripts/pribor-prd.gd') func _ready() -> void: @@ -111,7 +111,7 @@ func initialize_connections() -> void: 'control_results': control_results_k, 'current_litera': start_litera, } - control_prd_k = test.TestPRD.new(init_data) + control_prd_k = test_control_k.TestPRD.new(init_data) add_child(control_prd_k) control_prd_k.connect('control_is_over', Callable(self, 'on_control_result')) diff --git a/scenes/pribor-prd-n/pribor-prd-n.gd b/scenes/pribor-prd-n/pribor-prd-n.gd index b0449b88..7148e3c1 100644 --- a/scenes/pribor-prd-n/pribor-prd-n.gd +++ b/scenes/pribor-prd-n/pribor-prd-n.gd @@ -67,7 +67,7 @@ var control_results_n: Dictionary = { 'fs_2': false, 'fs_3': false, } -var test = preload('res://scripts/pribor-prd.gd') +var test_control_n = preload('res://scripts/pribor-prd.gd') ################################ @@ -104,7 +104,7 @@ func initialize_connections() -> void: 'control_results': control_results_n, 'current_litera': start_litera, } - control_prd_n = test.TestPRD.new(init_data) + control_prd_n = test_control_n.TestPRD.new(init_data) add_child(control_prd_n) control_prd_n.connect('control_is_over', Callable(self, 'on_control_result')) diff --git a/scenes/pribor-prd-v/pribor-prd-v.gd b/scenes/pribor-prd-v/pribor-prd-v.gd index 15df6004..d5a123f3 100644 --- a/scenes/pribor-prd-v/pribor-prd-v.gd +++ b/scenes/pribor-prd-v/pribor-prd-v.gd @@ -67,7 +67,7 @@ var control_results_v: Dictionary = { 'fs_4': false, 'fs_5': false, } -var test = preload('res://scripts/pribor-prd.gd') +var test_control_v = preload('res://scripts/pribor-prd.gd') func on_state_mashine() -> void: @@ -103,7 +103,7 @@ func initialize_connections() -> void: 'control_results': control_results_v, 'current_litera': start_litera, } - control_prd_v = test.TestPRD.new(init_data) + control_prd_v = test_control_v.TestPRD.new(init_data) add_child(control_prd_v) control_prd_v.connect('control_is_over', Callable(self, 'on_control_result')) diff --git a/scripts/pribor-prd.gd b/scripts/pribor-prd.gd index 1ef7526c..4c165f11 100644 --- a/scripts/pribor-prd.gd +++ b/scripts/pribor-prd.gd @@ -5,7 +5,6 @@ class TestPRD extends Node: const RAY_25:= 'RAY_25' const RAY_35:= 'RAY_35' const RAY_45:= 'RAY_45' - enum STATE_VAL { NONE = 0, GOOD = 1, ERROR = 2 } enum STATE_MASHINE { INIT, FS_TURN_ON, @@ -103,7 +102,7 @@ class TestPRD extends Node: var status: PackedByteArray = unit_pribor.status block_kasseta_y5_config = check_block_kasseta_y5(status, block_kasseta_y5_config) block_ip_config = check_block_ip(status, block_ip_config) - #check_temperature_um(status, power_amplify) + check_temperature_um(status, power_amplify) _process_dkm_status(status) if current_litera != 0: var tek_litera: Dictionary = power_result[current_litera] @@ -119,7 +118,7 @@ class TestPRD extends Node: if fs_key.is_empty(): return - var fs_result := {fs_key: STATE_VAL.NONE} + var fs_result := {fs_key: 0} fs_result = on_fs_state(packet_type_7, fs_mapping, fs_result) control_results[fs_key] = fs_result[fs_key] @@ -443,39 +442,39 @@ class TestPRD extends Node: ## Проверка температур УМ от УКП - #static func check_temperature_um(status_prd: PackedByteArray, power_amplifier: Array) -> void: - #const Constants: Dictionary = { - #'CONST_MIN_TEMP': -25, - #'MAXIMUM_CODE_ADC': 3796, - #'MINIMUM_CODE_AD': 2660, - #'TEMPERATURE_UKP_1': 47, - #'TEMPERATURE_UKP_2': 79, - #} - #const TEMP: float = 115.0 / (Constants.MAXIMUM_CODE_ADC - Constants.MINIMUM_CODE_AD) - #var ukp1_online: int = (status_prd[0] >> 2) & 1 - #var ukp2_online = (status_prd[0] >> 3) & 1 -# - #if ukp1_online: - #var tmp_1: int - #var temperature_ukp_1: int - #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 -# - #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 -# - #if ukp2_online: - #for i_temp in 6: - #var temperature_ukp_2: int = status_prd.decode_u16(Constants.TEMPERATURE_UKP_2 + 2 * i_temp) - #var tmp_2: int = round(Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_2) * TEMP + 3) - #if power_amplifier.size() > 12: - #power_amplifier[i_temp+7].value1 = tmp_2 - #else: - #power_amplifier[i_temp+6].value1 = tmp_2 + static func check_temperature_um(status_prd: PackedByteArray, power_amplifier: Array) -> void: + const Constants: Dictionary = { + 'CONST_MIN_TEMP': -25, + 'MAXIMUM_CODE_ADC': 3796, + 'MINIMUM_CODE_AD': 2660, + 'TEMPERATURE_UKP_1': 47, + 'TEMPERATURE_UKP_2': 79, + } + const TEMP: float = 115.0 / (Constants.MAXIMUM_CODE_ADC - Constants.MINIMUM_CODE_AD) + var ukp1_online: int = (status_prd[0] >> 2) & 1 + var ukp2_online = (status_prd[0] >> 3) & 1 + + if ukp1_online: + var tmp_1: int + var temperature_ukp_1: int + 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 + + 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 + + if ukp2_online: + for i_temp in 6: + var temperature_ukp_2: int = status_prd.decode_u16(Constants.TEMPERATURE_UKP_2 + 2 * i_temp) + var tmp_2: int = round(Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_2) * TEMP + 3) + if power_amplifier.size() > 12: + power_amplifier[i_temp+7].value1 = tmp_2 + else: + power_amplifier[i_temp+6].value1 = tmp_2 ## Проверка ДКМ From 9cc9b834d8fae808da8b49dd848c0c68adf92cef Mon Sep 17 00:00:00 2001 From: Maxim Date: Tue, 26 Aug 2025 09:39:15 +0300 Subject: [PATCH 5/9] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=20=D1=86=D0=B2=D0=B5=D1=82=D0=B0=20=D1=80=D0=B5=D0=B7?= =?UTF-8?q?=D1=83=D0=BB=D1=8C=D1=82=D0=B0=D1=82=D0=B0=20=D0=BA=D0=BE=D0=BD?= =?UTF-8?q?=D1=82=D1=80=D0=BE=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-prd-k/pribor-prd-k.gd | 4 ++-- scenes/pribor-prd-k/pribor-prd-k.tscn | 15 +++++++++++++-- scenes/pribor-prd-n/pribor-prd-n.gd | 4 ++-- scenes/pribor-prd-n/pribor-prd-n.tscn | 14 ++++++++++++-- scenes/pribor-prd-v/pribor-prd-v.gd | 4 ++-- scenes/pribor-prd-v/pribor-prd-v.tscn | 14 ++++++++++++-- scenes/контроль/блок-в.tscn | 14 ++++++++++++-- scripts/pribor-prd.gd | 1 - 8 files changed, 55 insertions(+), 15 deletions(-) diff --git a/scenes/pribor-prd-k/pribor-prd-k.gd b/scenes/pribor-prd-k/pribor-prd-k.gd index a4752119..97c387c3 100644 --- a/scenes/pribor-prd-k/pribor-prd-k.gd +++ b/scenes/pribor-prd-k/pribor-prd-k.gd @@ -166,8 +166,8 @@ func on_mode_changed(in_tree: bool) -> void: func power_fill(pow_dic: Dictionary) -> void: - if not control_prd_k.block_kasseta_y5_config.yau07 or not control_prd_k.block_kasseta_y5_config.ukp1 or not control_prd_k.block_kasseta_y5_config.ukp2: - return + #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') diff --git a/scenes/pribor-prd-k/pribor-prd-k.tscn b/scenes/pribor-prd-k/pribor-prd-k.tscn index b7def9a6..7d4bf599 100644 --- a/scenes/pribor-prd-k/pribor-prd-k.tscn +++ b/scenes/pribor-prd-k/pribor-prd-k.tscn @@ -94,6 +94,7 @@ offset_left = 485.0 offset_top = 242.0 offset_right = 652.0 offset_bottom = 337.0 +animation_duration = null value0 = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0] fname = "УМ1535Б" rname = "A10" @@ -107,6 +108,7 @@ offset_left = 485.0 offset_top = 337.0 offset_right = 652.0 offset_bottom = 432.0 +animation_duration = null fname = "УМ1535Б" rname = "A11" value0_info = "Мощность, Вт" @@ -119,6 +121,7 @@ offset_left = 485.0 offset_top = 432.0 offset_right = 652.0 offset_bottom = 527.0 +animation_duration = null fname = "УМ1535Б" rname = "A12" value0_info = "Мощность, Вт" @@ -131,6 +134,7 @@ offset_left = 485.0 offset_top = 527.0 offset_right = 652.0 offset_bottom = 622.0 +animation_duration = null fname = "УМ1535Б" rname = "A13" value0_info = "Мощность, Вт" @@ -143,6 +147,7 @@ offset_left = 485.0 offset_top = 622.0 offset_right = 652.0 offset_bottom = 717.0 +animation_duration = null fname = "УМ1535Б" rname = "A14" value0_info = "Мощность, Вт" @@ -155,6 +160,7 @@ offset_left = 485.0 offset_top = 717.0 offset_right = 652.0 offset_bottom = 812.0 +animation_duration = null fname = "УМ1535Б" rname = "A15" value0_info = "Мощность, Вт" @@ -167,6 +173,7 @@ offset_left = 485.0 offset_top = 812.0 offset_right = 652.0 offset_bottom = 907.0 +animation_duration = null fname = "УТМ80" rname = "A9" value0_info = "Мощность, Вт" @@ -179,6 +186,7 @@ offset_left = 8.0 offset_top = 242.0 offset_right = 175.0 offset_bottom = 337.0 +animation_duration = null fname = "УМ1535Б" rname = "A16" value0_info = "Мощность, Вт" @@ -191,6 +199,7 @@ offset_left = 8.0 offset_top = 337.0 offset_right = 173.0 offset_bottom = 432.0 +animation_duration = null fname = "УМ1535Б" rname = "A17" value0_info = "Мощность, Вт" @@ -203,6 +212,7 @@ offset_left = 8.0 offset_top = 432.0 offset_right = 175.0 offset_bottom = 527.0 +animation_duration = null fname = "УМ1535Б" rname = "A18" value0_info = "Мощность, Вт" @@ -215,6 +225,7 @@ offset_left = 8.0 offset_top = 527.0 offset_right = 175.0 offset_bottom = 622.0 +animation_duration = null fname = "УМ1535Б" rname = "A19" value0_info = "Мощность, Вт" @@ -227,6 +238,7 @@ offset_left = 8.0 offset_top = 622.0 offset_right = 175.0 offset_bottom = 717.0 +animation_duration = null fname = "УМ1535Б" rname = "A20" value0_info = "Мощность, Вт" @@ -239,6 +251,7 @@ offset_left = 8.0 offset_top = 717.0 offset_right = 175.0 offset_bottom = 812.0 +animation_duration = null fname = "УМ1535Б" rname = "A21" value0_info = "Мощность, Вт" @@ -319,8 +332,6 @@ offset_left = 9.0 offset_top = 960.0 offset_right = 649.0 offset_bottom = 1003.0 -theme_override_colors/font_color = Color(0.862745, 0.0784314, 0.235294, 1) -theme_override_font_sizes/font_size = 28 text = "Прибор ПРД- неисправен" horizontal_alignment = 1 metadata/_edit_lock_ = true diff --git a/scenes/pribor-prd-n/pribor-prd-n.gd b/scenes/pribor-prd-n/pribor-prd-n.gd index 7148e3c1..3d314efe 100644 --- a/scenes/pribor-prd-n/pribor-prd-n.gd +++ b/scenes/pribor-prd-n/pribor-prd-n.gd @@ -159,8 +159,8 @@ func on_mode_changed(in_tree: bool) -> void: func power_fill(pow_dic: Dictionary) -> void: - if not control_prd_n.block_kasseta_y5_config.yau07 or not control_prd_n.block_kasseta_y5_config.ukp1 or not control_prd_n.block_kasseta_y5_config.ukp2: - return + #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') diff --git a/scenes/pribor-prd-n/pribor-prd-n.tscn b/scenes/pribor-prd-n/pribor-prd-n.tscn index 0b67fd40..9d14845f 100644 --- a/scenes/pribor-prd-n/pribor-prd-n.tscn +++ b/scenes/pribor-prd-n/pribor-prd-n.tscn @@ -204,6 +204,7 @@ offset_left = 485.0 offset_top = 242.0 offset_right = 652.0 offset_bottom = 337.0 +animation_duration = null fname = "УМ1535Б" rname = "A7" value0_info = "Мощность, Вт" @@ -216,6 +217,7 @@ offset_left = 485.0 offset_top = 337.0 offset_right = 652.0 offset_bottom = 432.0 +animation_duration = null fname = "УМ1535А" rname = "A8" value0_info = "Мощность, Вт" @@ -228,6 +230,7 @@ offset_left = 485.0 offset_top = 432.0 offset_right = 652.0 offset_bottom = 527.0 +animation_duration = null fname = "УМ1535А" rname = "A9" value0_info = "Мощность, Вт" @@ -240,6 +243,7 @@ offset_left = 485.0 offset_top = 527.0 offset_right = 652.0 offset_bottom = 622.0 +animation_duration = null fname = "УМ1535А" rname = "A10" value0_info = "Мощность, Вт" @@ -252,6 +256,7 @@ offset_left = 485.0 offset_top = 622.0 offset_right = 652.0 offset_bottom = 717.0 +animation_duration = null fname = "УМ1535А" rname = "A11" value0_info = "Мощность, Вт" @@ -264,6 +269,7 @@ offset_left = 485.0 offset_top = 717.0 offset_right = 652.0 offset_bottom = 812.0 +animation_duration = null fname = "УМ1535А" rname = "A12" value0_info = "Мощность, Вт" @@ -276,6 +282,7 @@ offset_left = 8.0 offset_top = 242.0 offset_right = 175.0 offset_bottom = 337.0 +animation_duration = null fname = "УМ1535А" rname = "A13" value0_info = "Мощность, Вт" @@ -288,6 +295,7 @@ offset_left = 8.0 offset_top = 337.0 offset_right = 175.0 offset_bottom = 432.0 +animation_duration = null fname = "УМ1535А" rname = "A14" value0_info = "Мощность, Вт" @@ -300,6 +308,7 @@ offset_left = 8.0 offset_top = 432.0 offset_right = 175.0 offset_bottom = 527.0 +animation_duration = null fname = "УМ1535А" rname = "A15" value0_info = "Мощность, Вт" @@ -312,6 +321,7 @@ offset_left = 8.0 offset_top = 527.0 offset_right = 175.0 offset_bottom = 622.0 +animation_duration = null fname = "УМ1535А" rname = "A16" value0_info = "Мощность, Вт" @@ -324,6 +334,7 @@ offset_left = 8.0 offset_top = 622.0 offset_right = 175.0 offset_bottom = 717.0 +animation_duration = null fname = "УМ1535А" rname = "A17" value0_info = "Мощность, Вт" @@ -336,6 +347,7 @@ offset_left = 8.0 offset_top = 717.0 offset_right = 175.0 offset_bottom = 812.0 +animation_duration = null fname = "УМ1535А" rname = "A18" value0_info = "Мощность, Вт" @@ -348,7 +360,5 @@ offset_left = 9.0 offset_top = 960.0 offset_right = 649.0 offset_bottom = 1003.0 -theme_override_colors/font_color = Color(0.862745, 0.0784314, 0.235294, 1) -theme_override_font_sizes/font_size = 28 horizontal_alignment = 1 metadata/_edit_lock_ = true diff --git a/scenes/pribor-prd-v/pribor-prd-v.gd b/scenes/pribor-prd-v/pribor-prd-v.gd index d5a123f3..2afcc85c 100644 --- a/scenes/pribor-prd-v/pribor-prd-v.gd +++ b/scenes/pribor-prd-v/pribor-prd-v.gd @@ -159,8 +159,8 @@ func on_mode_changed(in_tree: bool) -> void: func power_fill(pow_dic: Dictionary) -> void: - if not control_prd_v.block_kasseta_y5_config.yau07 or not control_prd_v.block_kasseta_y5_config.ukp1 or not control_prd_v.block_kasseta_y5_config.ukp2: - return + #if not control_prd_v.block_kasseta_y5_config.yau07 or not control_prd_v.block_kasseta_y5_config.ukp1 or not control_prd_v.block_kasseta_y5_config.ukp2: + #return var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier') for i_powapm in power_amplifier: var powamp_meta: String = i_powapm.get_meta('um') diff --git a/scenes/pribor-prd-v/pribor-prd-v.tscn b/scenes/pribor-prd-v/pribor-prd-v.tscn index 6a8ac267..98c49b08 100644 --- a/scenes/pribor-prd-v/pribor-prd-v.tscn +++ b/scenes/pribor-prd-v/pribor-prd-v.tscn @@ -153,6 +153,7 @@ offset_left = 485.0 offset_top = 242.0 offset_right = 652.0 offset_bottom = 337.0 +animation_duration = null fname = "УМ1535Б" rname = "A7" value0_info = "Мощность, Вт" @@ -165,6 +166,7 @@ offset_left = 485.0 offset_top = 337.0 offset_right = 652.0 offset_bottom = 432.0 +animation_duration = null fname = "УМ1535А" rname = "A8" value0_info = "Мощность, Вт" @@ -177,6 +179,7 @@ offset_left = 485.0 offset_top = 432.0 offset_right = 652.0 offset_bottom = 527.0 +animation_duration = null fname = "УМ1535А" rname = "A9" value0_info = "Мощность, Вт" @@ -189,6 +192,7 @@ offset_left = 485.0 offset_top = 527.0 offset_right = 652.0 offset_bottom = 622.0 +animation_duration = null fname = "УМ1535А" rname = "A10" value0_info = "Мощность, Вт" @@ -201,6 +205,7 @@ offset_left = 485.0 offset_top = 622.0 offset_right = 652.0 offset_bottom = 717.0 +animation_duration = null fname = "УМ1535А" rname = "A11" value0_info = "Мощность, Вт" @@ -213,6 +218,7 @@ offset_left = 485.0 offset_top = 717.0 offset_right = 652.0 offset_bottom = 812.0 +animation_duration = null fname = "УМ1535А" rname = "A12" value0_info = "Мощность, Вт" @@ -225,6 +231,7 @@ offset_left = 8.0 offset_top = 242.0 offset_right = 175.0 offset_bottom = 337.0 +animation_duration = null fname = "УМ1535А" rname = "A13" value0_info = "Мощность, Вт" @@ -237,6 +244,7 @@ offset_left = 8.0 offset_top = 337.0 offset_right = 175.0 offset_bottom = 432.0 +animation_duration = null fname = "УМ1535А" rname = "A14" value0_info = "Мощность, Вт" @@ -249,6 +257,7 @@ offset_left = 8.0 offset_top = 432.0 offset_right = 175.0 offset_bottom = 527.0 +animation_duration = null fname = "УМ1535А" rname = "A15" value0_info = "Мощность, Вт" @@ -261,6 +270,7 @@ offset_left = 8.0 offset_top = 527.0 offset_right = 175.0 offset_bottom = 622.0 +animation_duration = null fname = "УМ1535А" rname = "A16" value0_info = "Мощность, Вт" @@ -273,6 +283,7 @@ offset_left = 8.0 offset_top = 622.0 offset_right = 175.0 offset_bottom = 717.0 +animation_duration = null fname = "УМ1535А" rname = "A17" value0_info = "Мощность, Вт" @@ -285,6 +296,7 @@ offset_left = 8.0 offset_top = 717.0 offset_right = 175.0 offset_bottom = 812.0 +animation_duration = null fname = "УМ1535А" rname = "A18" value0_info = "Мощность, Вт" @@ -297,7 +309,5 @@ offset_left = 9.0 offset_top = 960.0 offset_right = 649.0 offset_bottom = 1003.0 -theme_override_colors/font_color = Color(0.862745, 0.0784314, 0.235294, 1) -theme_override_font_sizes/font_size = 28 horizontal_alignment = 1 metadata/_edit_lock_ = true diff --git a/scenes/контроль/блок-в.tscn b/scenes/контроль/блок-в.tscn index b8e9a74d..cb83b953 100644 --- a/scenes/контроль/блок-в.tscn +++ b/scenes/контроль/блок-в.tscn @@ -14,7 +14,7 @@ script/source = "@tool class_name blok_v extends PanelContainer @export var textures: Array - +@export var animation_duration: float = 1.5 signal pressed(control: PanelContainer) @@ -25,7 +25,8 @@ signal pressed(control: PanelContainer) var items: Array = get_level_nodes() var count: int = min(items.size(), v.size()) for i in count: - items[i].value = v[i] + set_value0_animated(items[i], v[i]) + #items[i].value = v[i] ## Значение уровня @@ -220,6 +221,14 @@ func get_name_nodes() -> Array: $margin/vbox/grid2/lbl4, $margin/vbox/grid2/lbl5, $margin/vbox/grid2/lbl6 ] + + +func set_value0_animated(target_node, target_value: float) -> void: + var tween = create_tween() + tween.set_ease(Tween.EASE_OUT) + tween.set_trans(Tween.TRANS_QUINT) + + tween.tween_property(target_node, \"value\", target_value, animation_duration) " [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_rceim"] @@ -264,6 +273,7 @@ offset_bottom = 88.0 theme_override_styles/panel = SubResource("StyleBoxEmpty_3nd2u") script = SubResource("GDScript_oj3k3") textures = [ExtResource("1_n1aqt"), ExtResource("2_rim3u"), ExtResource("3_3w8fg")] +animation_duration = null value0 = [20.0, 30.0, 40.0, 50.0, 60.0, 70.0] value1 = 56.0 min_value1 = -50.0 diff --git a/scripts/pribor-prd.gd b/scripts/pribor-prd.gd index 4c165f11..167323bf 100644 --- a/scripts/pribor-prd.gd +++ b/scripts/pribor-prd.gd @@ -208,7 +208,6 @@ class TestPRD extends Node: 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) state = STATE_MASHINE.AWAIT From cd23da9a2d7f50ac1b01b72610830eaf06a51725 Mon Sep 17 00:00:00 2001 From: Maxim Date: Mon, 1 Sep 2025 13:21:33 +0300 Subject: [PATCH 6/9] =?UTF-8?q?=D1=80=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=20=D0=BC=D0=B0=D1=88=D0=B8=D0=BD=D1=8B=20=D1=81=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D0=BE=D1=8F=D0=BD=D0=B8=D0=B9=20=D0=BA=D0=BE=D0=BD?= =?UTF-8?q?=D1=82=D1=80=D0=BE=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-prd-k/pribor-prd-k.gd | 25 +++++++++----- scenes/pribor-prd-k/pribor-prd-k.tscn | 13 -------- scenes/pribor-prd-n/pribor-prd-n.gd | 17 ++++++---- scenes/pribor-prd-n/pribor-prd-n.tscn | 16 ++------- scenes/pribor-prd-v/pribor-prd-v.gd | 26 ++++++++------- scenes/pribor-prd-v/pribor-prd-v.tscn | 12 ------- scenes/контроль/блок-в.tscn | 4 +-- scripts/prd.gd | 47 ++++++++++++++------------- scripts/pribor-prd.gd | 31 +++++++++++------- 9 files changed, 89 insertions(+), 102 deletions(-) diff --git a/scenes/pribor-prd-k/pribor-prd-k.gd b/scenes/pribor-prd-k/pribor-prd-k.gd index 97c387c3..18a4a231 100644 --- a/scenes/pribor-prd-k/pribor-prd-k.gd +++ b/scenes/pribor-prd-k/pribor-prd-k.gd @@ -13,12 +13,13 @@ const constants_k: Dictionary = { 'ADDR_UG_LITERA_3': 0x10A, 'TEMP_THRESHOLD': 40, 'POWER_THRESHOLD': 40, - 'TIMER_DELAY': 5.0, 'RAY_DOU_NUM': 0x3, 'ATT_UM_1': 0x0, 'ATT_UM_6': 0x7, 'ATT_UM_7': 0x7, - 'POWER_UM': 75, + 'POWER_UM': 85, + 'TIMER_DELAY': 5.0, + 'STATE_MASHINE_TIMER': 0.3, } # Конфигурация параметров для каждого прибора const PRIBOR_CONFIG := { @@ -70,9 +71,9 @@ var control_results_k: Dictionary = { 'dkm_7': false, 'dou_6': false, 'dou_7': false, - 'fs_1': false, - 'fs_6': false, - 'fs_7': false, + 'fs_1': 2, + 'fs_6': 2, + 'fs_7': 2, } var test_control_k = preload('res://scripts/pribor-prd.gd') @@ -119,7 +120,7 @@ func initialize_connections() -> void: func setup_timer() -> void: add_child(mashine_timer) mashine_timer.connect('timeout', Callable(self, 'on_state_mashine')) - mashine_timer.wait_time = 0.5 + mashine_timer.wait_time = constants_k.STATE_MASHINE_TIMER mashine_timer.start() @@ -212,14 +213,20 @@ func on_control_result(result_dic: Dictionary, power_dic: Dictionary) -> void: f.state = new_state result_dic[fs_meta] = new_state - if result_dic.fs_1: + if result_dic.fs_1 == 1: $kasseta_fs_kd/ref_A2.state = STATE_VAL.GOOD if result_dic.dkm_1 else STATE_VAL.ERROR - if result_dic.fs_6: + else: + result_dic.fs_1 = false + if result_dic.fs_6 == 1: $kasseta_fs_kd/ref_A4.state = STATE_VAL.GOOD if result_dic.dkm_6 else STATE_VAL.ERROR $dou6_A7.state = STATE_VAL.GOOD if result_dic.dou_6 else STATE_VAL.ERROR - if result_dic.fs_7: + else: + result_dic.fs_6 = false + if result_dic.fs_7 == 1: $kasseta_fs_kd/ref_A7.state = STATE_VAL.GOOD if result_dic.dkm_7 else STATE_VAL.ERROR $dou7_A8.state = STATE_VAL.GOOD if result_dic.dou_7 else STATE_VAL.ERROR + else: + result_dic.fs_7 = false power_fill(power_dic) diff --git a/scenes/pribor-prd-k/pribor-prd-k.tscn b/scenes/pribor-prd-k/pribor-prd-k.tscn index 7d4bf599..b56036d2 100644 --- a/scenes/pribor-prd-k/pribor-prd-k.tscn +++ b/scenes/pribor-prd-k/pribor-prd-k.tscn @@ -94,7 +94,6 @@ offset_left = 485.0 offset_top = 242.0 offset_right = 652.0 offset_bottom = 337.0 -animation_duration = null value0 = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0] fname = "УМ1535Б" rname = "A10" @@ -108,7 +107,6 @@ offset_left = 485.0 offset_top = 337.0 offset_right = 652.0 offset_bottom = 432.0 -animation_duration = null fname = "УМ1535Б" rname = "A11" value0_info = "Мощность, Вт" @@ -121,7 +119,6 @@ offset_left = 485.0 offset_top = 432.0 offset_right = 652.0 offset_bottom = 527.0 -animation_duration = null fname = "УМ1535Б" rname = "A12" value0_info = "Мощность, Вт" @@ -134,7 +131,6 @@ offset_left = 485.0 offset_top = 527.0 offset_right = 652.0 offset_bottom = 622.0 -animation_duration = null fname = "УМ1535Б" rname = "A13" value0_info = "Мощность, Вт" @@ -147,7 +143,6 @@ offset_left = 485.0 offset_top = 622.0 offset_right = 652.0 offset_bottom = 717.0 -animation_duration = null fname = "УМ1535Б" rname = "A14" value0_info = "Мощность, Вт" @@ -160,7 +155,6 @@ offset_left = 485.0 offset_top = 717.0 offset_right = 652.0 offset_bottom = 812.0 -animation_duration = null fname = "УМ1535Б" rname = "A15" value0_info = "Мощность, Вт" @@ -173,7 +167,6 @@ offset_left = 485.0 offset_top = 812.0 offset_right = 652.0 offset_bottom = 907.0 -animation_duration = null fname = "УТМ80" rname = "A9" value0_info = "Мощность, Вт" @@ -186,7 +179,6 @@ offset_left = 8.0 offset_top = 242.0 offset_right = 175.0 offset_bottom = 337.0 -animation_duration = null fname = "УМ1535Б" rname = "A16" value0_info = "Мощность, Вт" @@ -199,7 +191,6 @@ offset_left = 8.0 offset_top = 337.0 offset_right = 173.0 offset_bottom = 432.0 -animation_duration = null fname = "УМ1535Б" rname = "A17" value0_info = "Мощность, Вт" @@ -212,7 +203,6 @@ offset_left = 8.0 offset_top = 432.0 offset_right = 175.0 offset_bottom = 527.0 -animation_duration = null fname = "УМ1535Б" rname = "A18" value0_info = "Мощность, Вт" @@ -225,7 +215,6 @@ offset_left = 8.0 offset_top = 527.0 offset_right = 175.0 offset_bottom = 622.0 -animation_duration = null fname = "УМ1535Б" rname = "A19" value0_info = "Мощность, Вт" @@ -238,7 +227,6 @@ offset_left = 8.0 offset_top = 622.0 offset_right = 175.0 offset_bottom = 717.0 -animation_duration = null fname = "УМ1535Б" rname = "A20" value0_info = "Мощность, Вт" @@ -251,7 +239,6 @@ offset_left = 8.0 offset_top = 717.0 offset_right = 175.0 offset_bottom = 812.0 -animation_duration = null fname = "УМ1535Б" rname = "A21" value0_info = "Мощность, Вт" diff --git a/scenes/pribor-prd-n/pribor-prd-n.gd b/scenes/pribor-prd-n/pribor-prd-n.gd index 3d314efe..6e177be2 100644 --- a/scenes/pribor-prd-n/pribor-prd-n.gd +++ b/scenes/pribor-prd-n/pribor-prd-n.gd @@ -12,11 +12,12 @@ const constants_n = { 'ADDR_UG_LITERA_3': 0x10A, 'TEMP_THRESHOLD': 70, 'POWER_THRESHOLD': 40, - 'TIMER_DELAY': 5.0, 'RAY_DOU_NUM': 0x3, 'ATT_UM_2': 0x7, 'ATT_UM_3': 0x7, 'POWER_UM': 70, + 'TIMER_DELAY': 5.0, + 'STATE_MASHINE_TIMER': 0.3, } # Конфигурация параметров для каждого прибора const PRIBOR_CONFIG_N := { @@ -64,8 +65,8 @@ var control_results_n: Dictionary = { 'dkm_3': false, 'dou_2': false, 'dou_3': false, - 'fs_2': false, - 'fs_3': false, + 'fs_2': 2, + 'fs_3': 2, } var test_control_n = preload('res://scripts/pribor-prd.gd') @@ -112,7 +113,7 @@ func initialize_connections() -> void: func setup_timer() -> void: add_child(mashine_timer) mashine_timer.connect('timeout', Callable(self, 'on_state_mashine')) - mashine_timer.wait_time = 0.5 + mashine_timer.wait_time = constants_n.STATE_MASHINE_TIMER mashine_timer.start() @@ -202,12 +203,16 @@ func on_control_result(result_dic: Dictionary, power_dic: Dictionary) -> void: f.state = new_state result_dic[fs_meta] = new_state - if result_dic.fs_2: + if result_dic.fs_2 == 1: $kasseta_FS_ND/ref_A4.state = STATE_VAL.GOOD if result_dic.dkm_2 else STATE_VAL.ERROR $dou2_A5.state = STATE_VAL.GOOD if result_dic.dou_2 else STATE_VAL.ERROR - if result_dic.fs_3: + else: + result_dic.fs_2 = false + if result_dic.fs_3 == 1: $kasseta_FS_ND/ref_A3.state = STATE_VAL.GOOD if result_dic.dkm_3 else STATE_VAL.ERROR $dou3_A6.state = STATE_VAL.GOOD if result_dic.dou_3 else STATE_VAL.ERROR + else: + result_dic.fs_3 = false power_fill(power_dic) diff --git a/scenes/pribor-prd-n/pribor-prd-n.tscn b/scenes/pribor-prd-n/pribor-prd-n.tscn index 9d14845f..a52ce38d 100644 --- a/scenes/pribor-prd-n/pribor-prd-n.tscn +++ b/scenes/pribor-prd-n/pribor-prd-n.tscn @@ -117,7 +117,7 @@ offset_left = 55.0 offset_top = 32.0 offset_right = 105.0 offset_bottom = 182.0 -fname = "Блок ФС-2" +fname = "Блок ФС-3" rname = "A3" [node name="ref_A1" parent="kasseta_FS_ND" groups=["default_reset", "fs_group"] instance=ExtResource("7_eoqf2")] @@ -143,7 +143,7 @@ offset_left = 205.0 offset_top = 32.0 offset_right = 255.0 offset_bottom = 182.0 -fname = "Блок ФС-3" +fname = "Блок ФС-2" rname = "A4" [node name="kasseta_P_1" type="NinePatchRect" parent="."] @@ -204,7 +204,6 @@ offset_left = 485.0 offset_top = 242.0 offset_right = 652.0 offset_bottom = 337.0 -animation_duration = null fname = "УМ1535Б" rname = "A7" value0_info = "Мощность, Вт" @@ -217,7 +216,6 @@ offset_left = 485.0 offset_top = 337.0 offset_right = 652.0 offset_bottom = 432.0 -animation_duration = null fname = "УМ1535А" rname = "A8" value0_info = "Мощность, Вт" @@ -230,7 +228,6 @@ offset_left = 485.0 offset_top = 432.0 offset_right = 652.0 offset_bottom = 527.0 -animation_duration = null fname = "УМ1535А" rname = "A9" value0_info = "Мощность, Вт" @@ -243,7 +240,6 @@ offset_left = 485.0 offset_top = 527.0 offset_right = 652.0 offset_bottom = 622.0 -animation_duration = null fname = "УМ1535А" rname = "A10" value0_info = "Мощность, Вт" @@ -256,7 +252,6 @@ offset_left = 485.0 offset_top = 622.0 offset_right = 652.0 offset_bottom = 717.0 -animation_duration = null fname = "УМ1535А" rname = "A11" value0_info = "Мощность, Вт" @@ -269,7 +264,6 @@ offset_left = 485.0 offset_top = 717.0 offset_right = 652.0 offset_bottom = 812.0 -animation_duration = null fname = "УМ1535А" rname = "A12" value0_info = "Мощность, Вт" @@ -282,7 +276,6 @@ offset_left = 8.0 offset_top = 242.0 offset_right = 175.0 offset_bottom = 337.0 -animation_duration = null fname = "УМ1535А" rname = "A13" value0_info = "Мощность, Вт" @@ -295,7 +288,6 @@ offset_left = 8.0 offset_top = 337.0 offset_right = 175.0 offset_bottom = 432.0 -animation_duration = null fname = "УМ1535А" rname = "A14" value0_info = "Мощность, Вт" @@ -308,7 +300,6 @@ offset_left = 8.0 offset_top = 432.0 offset_right = 175.0 offset_bottom = 527.0 -animation_duration = null fname = "УМ1535А" rname = "A15" value0_info = "Мощность, Вт" @@ -321,7 +312,6 @@ offset_left = 8.0 offset_top = 527.0 offset_right = 175.0 offset_bottom = 622.0 -animation_duration = null fname = "УМ1535А" rname = "A16" value0_info = "Мощность, Вт" @@ -334,7 +324,6 @@ offset_left = 8.0 offset_top = 622.0 offset_right = 175.0 offset_bottom = 717.0 -animation_duration = null fname = "УМ1535А" rname = "A17" value0_info = "Мощность, Вт" @@ -347,7 +336,6 @@ offset_left = 8.0 offset_top = 717.0 offset_right = 175.0 offset_bottom = 812.0 -animation_duration = null fname = "УМ1535А" rname = "A18" value0_info = "Мощность, Вт" diff --git a/scenes/pribor-prd-v/pribor-prd-v.gd b/scenes/pribor-prd-v/pribor-prd-v.gd index 2afcc85c..b71176ee 100644 --- a/scenes/pribor-prd-v/pribor-prd-v.gd +++ b/scenes/pribor-prd-v/pribor-prd-v.gd @@ -12,11 +12,12 @@ const constants_v = { 'ADDR_UG_LITERA_3': 0x10A, 'TEMP_THRESHOLD': 70, 'POWER_THRESHOLD': 40, - 'TIMER_DELAY': 5.0, 'RAY_DOU_NUM': 0x3, 'ATT_UM_4': 0x7, 'ATT_UM_5': 0x7, 'POWER_UM': 70, + 'TIMER_DELAY': 5.0, + 'STATE_MASHINE_TIMER': 0.3, } # Конфигурация параметров для каждого прибора const PRIBOR_CONFIG_V := { @@ -27,7 +28,7 @@ const PRIBOR_CONFIG_V := { } # Конфигурация частот и ширин для каждого ФС const FS_PARAMS_V := { - 4: {'freq': 1227.0, 'width': 110.0}, + 4: {'freq': 1227.0, 'width': 100.0}, 5: {'freq': 1575.0, 'width': 110.0}, } enum STATE_VAL { NONE = 0, GOOD = 1, ERROR = 2 } @@ -64,8 +65,8 @@ var control_results_v: Dictionary = { 'dkm_5': false, 'dou_4': false, 'dou_5': false, - 'fs_4': false, - 'fs_5': false, + 'fs_4': 2, + 'fs_5': 2, } var test_control_v = preload('res://scripts/pribor-prd.gd') @@ -111,7 +112,7 @@ func initialize_connections() -> void: func setup_timer() -> void: add_child(mashine_timer) mashine_timer.connect('timeout', Callable(self, 'on_state_mashine')) - mashine_timer.wait_time = 0.5 + mashine_timer.wait_time = constants_v.STATE_MASHINE_TIMER mashine_timer.start() @@ -202,13 +203,16 @@ func on_control_result(result_dic: Dictionary, power_dic: Dictionary) -> void: f.state = new_state result_dic[fs_meta] = new_state - if result_dic.fs_4: - $kasseta_FS_VD/ref_A2.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 - if result_dic.fs_5: - $kasseta_FS_VD/ref_A6.state = STATE_VAL.GOOD if result_dic.dkm_5 else STATE_VAL.ERROR + if result_dic.fs_5 == 1: + $kasseta_FS_VD/ref_A2.state = STATE_VAL.GOOD if result_dic.dkm_5 else STATE_VAL.ERROR $dou5_A6.state = STATE_VAL.GOOD if result_dic.dou_5 else STATE_VAL.ERROR - + else: + result_dic.fs_5 = false + if result_dic.fs_4 == 1: + $kasseta_FS_VD/ref_A6.state = STATE_VAL.GOOD if result_dic.dkm_4 else STATE_VAL.ERROR + $dou4_A5.state = STATE_VAL.GOOD if result_dic.dou_4 else STATE_VAL.ERROR + else: + result_dic.fs_4 = false power_fill(power_dic) var result = true diff --git a/scenes/pribor-prd-v/pribor-prd-v.tscn b/scenes/pribor-prd-v/pribor-prd-v.tscn index 98c49b08..bf501cbd 100644 --- a/scenes/pribor-prd-v/pribor-prd-v.tscn +++ b/scenes/pribor-prd-v/pribor-prd-v.tscn @@ -153,7 +153,6 @@ offset_left = 485.0 offset_top = 242.0 offset_right = 652.0 offset_bottom = 337.0 -animation_duration = null fname = "УМ1535Б" rname = "A7" value0_info = "Мощность, Вт" @@ -166,7 +165,6 @@ offset_left = 485.0 offset_top = 337.0 offset_right = 652.0 offset_bottom = 432.0 -animation_duration = null fname = "УМ1535А" rname = "A8" value0_info = "Мощность, Вт" @@ -179,7 +177,6 @@ offset_left = 485.0 offset_top = 432.0 offset_right = 652.0 offset_bottom = 527.0 -animation_duration = null fname = "УМ1535А" rname = "A9" value0_info = "Мощность, Вт" @@ -192,7 +189,6 @@ offset_left = 485.0 offset_top = 527.0 offset_right = 652.0 offset_bottom = 622.0 -animation_duration = null fname = "УМ1535А" rname = "A10" value0_info = "Мощность, Вт" @@ -205,7 +201,6 @@ offset_left = 485.0 offset_top = 622.0 offset_right = 652.0 offset_bottom = 717.0 -animation_duration = null fname = "УМ1535А" rname = "A11" value0_info = "Мощность, Вт" @@ -218,7 +213,6 @@ offset_left = 485.0 offset_top = 717.0 offset_right = 652.0 offset_bottom = 812.0 -animation_duration = null fname = "УМ1535А" rname = "A12" value0_info = "Мощность, Вт" @@ -231,7 +225,6 @@ offset_left = 8.0 offset_top = 242.0 offset_right = 175.0 offset_bottom = 337.0 -animation_duration = null fname = "УМ1535А" rname = "A13" value0_info = "Мощность, Вт" @@ -244,7 +237,6 @@ offset_left = 8.0 offset_top = 337.0 offset_right = 175.0 offset_bottom = 432.0 -animation_duration = null fname = "УМ1535А" rname = "A14" value0_info = "Мощность, Вт" @@ -257,7 +249,6 @@ offset_left = 8.0 offset_top = 432.0 offset_right = 175.0 offset_bottom = 527.0 -animation_duration = null fname = "УМ1535А" rname = "A15" value0_info = "Мощность, Вт" @@ -270,7 +261,6 @@ offset_left = 8.0 offset_top = 527.0 offset_right = 175.0 offset_bottom = 622.0 -animation_duration = null fname = "УМ1535А" rname = "A16" value0_info = "Мощность, Вт" @@ -283,7 +273,6 @@ offset_left = 8.0 offset_top = 622.0 offset_right = 175.0 offset_bottom = 717.0 -animation_duration = null fname = "УМ1535А" rname = "A17" value0_info = "Мощность, Вт" @@ -296,7 +285,6 @@ offset_left = 8.0 offset_top = 717.0 offset_right = 175.0 offset_bottom = 812.0 -animation_duration = null fname = "УМ1535А" rname = "A18" value0_info = "Мощность, Вт" diff --git a/scenes/контроль/блок-в.tscn b/scenes/контроль/блок-в.tscn index cb83b953..281f95c5 100644 --- a/scenes/контроль/блок-в.tscn +++ b/scenes/контроль/блок-в.tscn @@ -26,7 +26,6 @@ signal pressed(control: PanelContainer) var count: int = min(items.size(), v.size()) for i in count: set_value0_animated(items[i], v[i]) - #items[i].value = v[i] ## Значение уровня @@ -177,7 +176,7 @@ func _enter_tree_defered(): var count: int = min(items.size(), value0.size()) for i in count: items[i].min_value = min_value0 - items[i].max_value = max_value0 + items[i].max_value = 1400 # max_value0: TODO для отладки items[i].step = step0 items = get_name_nodes() set_group_param(items, 'text', value_name0) @@ -273,7 +272,6 @@ offset_bottom = 88.0 theme_override_styles/panel = SubResource("StyleBoxEmpty_3nd2u") script = SubResource("GDScript_oj3k3") textures = [ExtResource("1_n1aqt"), ExtResource("2_rim3u"), ExtResource("3_3w8fg")] -animation_duration = null value0 = [20.0, 30.0, 40.0, 50.0, 60.0, 70.0] value1 = 56.0 min_value1 = -50.0 diff --git a/scripts/prd.gd b/scripts/prd.gd index 036b5021..8a64354b 100644 --- a/scripts/prd.gd +++ b/scripts/prd.gd @@ -343,29 +343,32 @@ func check_dir(): ## Производит приём состояния модулей ФС. func on_data_capsrpb_received(unit0: capsrpb.CapsRpb): if not unit0.json_dic.has('ts'): return - if unit0.json_dic['ts'] != 7: return - if not unit0.json_dic.has('msfs'): return + if not unit0.json_dic['ts'] == 7 and not unit0.json_dic['ts'] == 5: return + if unit0.json_dic.has('msvk'): + for nfs in fs_caps_id: + fs_dict[fs_caps_id[nfs]].msvk = unit0.json_dic['msvk'] if unit0.json_dic['msvk'].size()>0 else [] - var msfs = unit0.json_dic['msfs'] - for fs in msfs: - if fs is Dictionary: - if not fs.has('nmfs'): - return - var nmfs = int(fs['nmfs']) - if not fs_caps_id.has(nmfs): - continue - var ii = fs_caps_id[nmfs] - if not fs_dict.has(ii): - continue - var fs_module = fs_dict[ii] - if fs.has('isg'): - fs_module.isg = int(fs['isg']) - if fs.has('pow'): - fs_module.pow_caps_rx = int(fs['pow']) - if fs.has('freq'): - fs_module.freq_caps_rx = int(fs['freq']) - if fs.has('width'): - fs_module.width_caps_rx = int(fs['width']) + if unit0.json_dic.has('msfs'): + var msfs = unit0.json_dic['msfs'] + for fs in msfs: + if fs is Dictionary: + if not fs.has('nmfs'): + return + var nmfs = int(fs['nmfs']) + if not fs_caps_id.has(nmfs): + continue + var ii = fs_caps_id[nmfs] + if not fs_dict.has(ii): + continue + var fs_module = fs_dict[ii] + if fs.has('isg'): + fs_module.isg = int(fs['isg']) + if fs.has('pow'): + fs_module.pow_caps_rx = int(fs['pow']) + if fs.has('freq'): + fs_module.freq_caps_rx = int(fs['freq']) + if fs.has('width'): + fs_module.width_caps_rx = int(fs['width']) signaller.emit_signal('fs_update_state', fs_dict) diff --git a/scripts/pribor-prd.gd b/scripts/pribor-prd.gd index 167323bf..405b020a 100644 --- a/scripts/pribor-prd.gd +++ b/scripts/pribor-prd.gd @@ -68,7 +68,8 @@ class TestPRD extends Node: var control_timer: Timer = Timer.new() var ems_6666_timer: Timer = Timer.new() signal control_is_over(control_results, power_result) - + var flag_fs_turn_on: bool = false + var flag_fs_turn_off: bool = false ## Инициализация аргуметнов func _init(init_data: Dictionary) -> void: @@ -118,9 +119,15 @@ class TestPRD extends Node: if fs_key.is_empty(): return - var fs_result := {fs_key: 0} + var fs_result := {fs_key: 0, 'fs_modulation': 'none'} fs_result = on_fs_state(packet_type_7, fs_mapping, fs_result) control_results[fs_key] = fs_result[fs_key] + if fs_result.fs_modulation and not flag_fs_turn_on: + print_debug('Помеха "Включено"') + flag_fs_turn_on = true + if not fs_result.fs_modulation and not flag_fs_turn_off: + print('Помеха "Откючено"') + flag_fs_turn_off = true ## @@ -132,7 +139,7 @@ class TestPRD extends Node: _handle_fs_turn_on_state() state = STATE_MASHINE.FS_WORK STATE_MASHINE.FS_WORK: - if not flag_timer_started: + if flag_fs_turn_on: _handle_fs_work_state() STATE_MASHINE.CHEK_KASSETA_Y5: if block_kasseta_y5_config['yau07']: @@ -146,7 +153,7 @@ class TestPRD extends Node: #ems_6666_timer.start() #state = STATE_MASHINE.READ_ISA STATE_MASHINE.READ_ISA: - if (unit_prd.cmd_state == unit_prd.CmdState.DONE) or (unit_prd.cmd_state == unit_prd.CmdState.FALSE): + if (unit_prd.cmd_state == unit_prd.CmdState.DONE) or (unit_prd.cmd_state == unit_prd.CmdState.FAIL): _handle_read_isa(module_prd, unit_prd, [constants.ADDR_UG_LITERA_1, constants.ADDR_UG_LITERA_2, constants.ADDR_UG_LITERA_3]) state = STATE_MASHINE.UG_SET_RAY STATE_MASHINE.UG_SET_RAY: @@ -196,6 +203,7 @@ class TestPRD extends Node: state = STATE_MASHINE.FS_TURN_OFF STATE_MASHINE.FS_TURN_OFF: _handle_fs_turn_off_state() + state = STATE_MASHINE.STOP_CONTROL STATE_MASHINE.STOP_CONTROL: _handle_stop_control_state() @@ -203,8 +211,8 @@ class TestPRD extends Node: func _handle_init_state() -> void: control_label.text = 'Выполняется инициализация ФС-%s' % current_litera if current_litera in [1, 2, 3, 4, 5, 6, 7]: - state = STATE_MASHINE.FS_TURN_ON - #state = STATE_MASHINE.STOP_CONTROL + if flag_fs_turn_off: + state = STATE_MASHINE.FS_TURN_ON else: control_results = on_control_result(block_ip_config, control_results) var send_power_pack = prep_power(power_result, self_name) @@ -221,8 +229,6 @@ class TestPRD extends Node: func _handle_fs_work_state() -> void: control_label.text = 'Выполняется проверка ФС-%s' % current_litera - if not module_prd.unit_yau07.online: - return if (current_litera == 2 and control_results.fs_2) or \ (current_litera == 3 and control_results.fs_3) or \ (current_litera == 4 and control_results.fs_4) or \ @@ -268,8 +274,8 @@ class TestPRD extends Node: func _handle_fs_turn_off_state() -> void: control_label.text = 'Выполняется отключение ФС-%s' % current_litera + flag_fs_turn_off = false manage_fs(false, self_name, pribor_config, fs_parameters, current_litera, constants.POWER_UM) - state = STATE_MASHINE.STOP_CONTROL func _handle_stop_control_state() -> void: @@ -364,6 +370,7 @@ class TestPRD extends Node: func on_stop_control() -> void: + _handle_fs_turn_off_state() state = STATE_MASHINE.FS_TURN_OFF @@ -374,7 +381,6 @@ class TestPRD extends Node: if not ip_config[block][1]: all_blocks_ip_ok = false ctrl_results['block_ip'] = all_blocks_ip_ok - return ctrl_results @@ -522,6 +528,7 @@ class TestPRD extends Node: var rule: Dictionary = FS_RULES[rule_key] if _should_apply_rule(fs_num, rule, updated_results): updated_results[rule.key] = fs_data.isg + updated_results['fs_modulation'] = fs_data.msvk.size() > 0 break return updated_results @@ -611,7 +618,7 @@ class TestPRD extends Node: if pribor == '1к' or pribor == '2к' or pribor == '3к' or pribor == '4к': dou = 'dou_6' if litera == 6 else 'dou_7' elif pribor == '1в' or pribor == '2в' or pribor == '3в' or pribor == '4в': - dou = 'dou_4' if litera == 5 else 'dou_5' + dou = 'dou_4' if litera == 4 else 'dou_5' var ray_dic: Dictionary = power_dic[litera] if ray_dic[RAY_m5].size() == 0 or \ @@ -626,7 +633,7 @@ class TestPRD extends Node: for i_pow_arr in ray_dic.values(): for i_pow in i_pow_arr.size(): if i_pow_arr[i_pow] < cnst.POWER_THRESHOLD: - print_debug('dou_%s: false' % litera) + #print_debug('dou_%s: false' % litera) all_dou_ok = false control_dic[dou] = all_dou_ok From 5dd4a684ce49fc002f90db7323e05a410cad0d74 Mon Sep 17 00:00:00 2001 From: Maxim Date: Mon, 1 Sep 2025 13:22:05 +0300 Subject: [PATCH 7/9] =?UTF-8?q?=D1=81=D0=BF=D1=8225=20=D0=BA=D0=BE=D0=BD?= =?UTF-8?q?=D1=82=D1=80=D0=BE=D0=BB=D1=8C=D0=BD=D0=B0=D1=8F=20=D1=81=D1=83?= =?UTF-8?q?=D0=BC=D0=BC=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/spt25.gd | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/scripts/spt25.gd b/scripts/spt25.gd index 965445b3..b00b420b 100644 --- a/scripts/spt25.gd +++ b/scripts/spt25.gd @@ -13,6 +13,32 @@ class SPT25 extends unit.Unit: func _to_string() -> String: return String('СПТ-25 %s %s' % [self.name, ['отключен', 'на связи'][int(online)]]) + ##Вычисление контрольной суммы + func sciCalcFCS(src: PackedByteArray) -> int: + var P_DIV = 0 + var ln = src[0] + var FCS = ~((src[2]<<8) + src[1]) + for i in range(3, ln): + var C = src[i] + for j in 8: + if C & 1: + if FCS & 1: + FCS = ((FCS >> 1) | 0x8000)^P_DIV + else: + FCS = ((FCS >> 1) | 0x8000) + else: + if FCS & 1: + FCS = (FCS >> 1) ^ P_DIV + else: + FCS = FCS >> 1 + C >>= 1 + for j in 16: + if FCS & 1: + FCS = (FCS >> 1) ^ P_DIV + else: + FCS = FCS >> 1 + return ~FCS + func _init(nm) -> void: self.name = nm tx_data.resize(8) From b5f5496d555be3e48020ef58e59c64c693de1221 Mon Sep 17 00:00:00 2001 From: Maxim Date: Mon, 1 Sep 2025 15:20:00 +0300 Subject: [PATCH 8/9] =?UTF-8?q?=D0=9E=D1=82=D0=BB=D0=B0=D0=B4=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=B2=20=D0=9A=D0=AD=D0=9D=2011=20=D0=BA=D0=BE=D0=BD=D1=82?= =?UTF-8?q?=D1=80=D0=BE=D0=BB=D1=8F=20=D0=BF=D1=80=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-prd-v/pribor-prd-v.gd | 2 +- scenes/контроль/блок-в.tscn | 20 +++++++---- scenes/контроль/контроль.tscn | 21 ++++++++++-- scripts/prd.gd | 51 ++++++++++++++--------------- scripts/pribor-prd.gd | 35 +++++++++++++------- 5 files changed, 83 insertions(+), 46 deletions(-) diff --git a/scenes/pribor-prd-v/pribor-prd-v.gd b/scenes/pribor-prd-v/pribor-prd-v.gd index b71176ee..ff1e90f9 100644 --- a/scenes/pribor-prd-v/pribor-prd-v.gd +++ b/scenes/pribor-prd-v/pribor-prd-v.gd @@ -15,7 +15,7 @@ const constants_v = { 'RAY_DOU_NUM': 0x3, 'ATT_UM_4': 0x7, 'ATT_UM_5': 0x7, - 'POWER_UM': 70, + 'POWER_UM': 75, 'TIMER_DELAY': 5.0, 'STATE_MASHINE_TIMER': 0.3, } diff --git a/scenes/контроль/блок-в.tscn b/scenes/контроль/блок-в.tscn index 281f95c5..12673c7b 100644 --- a/scenes/контроль/блок-в.tscn +++ b/scenes/контроль/блок-в.tscn @@ -35,6 +35,8 @@ signal pressed(control: PanelContainer) if not is_inside_tree(): return $margin/vbox/grid1/level7.value = v + $margin/vbox/grid1/level7.tint_progress = Color.RED if v > 70 else Color.WHITE + @export var min_value0: float: @@ -357,8 +359,9 @@ size_flags_horizontal = 3 size_flags_vertical = 3 tooltip_text = " Текущее: 0.00 -Диапазон: 0.00…100.00" +Диапазон: 0.00…1400.00" mouse_filter = 0 +max_value = 1400.0 fill_mode = 3 nine_patch_stretch = true stretch_margin_left = 8 @@ -376,8 +379,9 @@ size_flags_horizontal = 3 size_flags_vertical = 3 tooltip_text = " Текущее: 0.00 -Диапазон: 0.00…100.00" +Диапазон: 0.00…1400.00" mouse_filter = 0 +max_value = 1400.0 fill_mode = 3 nine_patch_stretch = true stretch_margin_left = 8 @@ -395,8 +399,9 @@ size_flags_horizontal = 3 size_flags_vertical = 3 tooltip_text = " Текущее: 0.00 -Диапазон: 0.00…100.00" +Диапазон: 0.00…1400.00" mouse_filter = 0 +max_value = 1400.0 fill_mode = 3 nine_patch_stretch = true stretch_margin_left = 8 @@ -414,8 +419,9 @@ size_flags_horizontal = 3 size_flags_vertical = 3 tooltip_text = " Текущее: 0.00 -Диапазон: 0.00…100.00" +Диапазон: 0.00…1400.00" mouse_filter = 0 +max_value = 1400.0 fill_mode = 3 nine_patch_stretch = true stretch_margin_left = 8 @@ -433,8 +439,9 @@ size_flags_horizontal = 3 size_flags_vertical = 3 tooltip_text = " Текущее: 0.00 -Диапазон: 0.00…100.00" +Диапазон: 0.00…1400.00" mouse_filter = 0 +max_value = 1400.0 fill_mode = 3 nine_patch_stretch = true stretch_margin_left = 8 @@ -452,8 +459,9 @@ size_flags_horizontal = 3 size_flags_vertical = 3 tooltip_text = " Текущее: 0.00 -Диапазон: 0.00…100.00" +Диапазон: 0.00…1400.00" mouse_filter = 0 +max_value = 1400.0 fill_mode = 3 nine_patch_stretch = true stretch_margin_left = 8 diff --git a/scenes/контроль/контроль.tscn b/scenes/контроль/контроль.tscn index 8c151127..461f07c1 100644 --- a/scenes/контроль/контроль.tscn +++ b/scenes/контроль/контроль.tscn @@ -111,6 +111,7 @@ metadata/unit_name = ["уарэп-эмс"] metadata/online_proc = "on_line_changed" [node name="label" type="Label" parent="pribor_uf"] +self_modulate = Color(0, 0, 0, 0) layout_mode = 0 offset_left = 15.0 offset_top = -34.0 @@ -177,6 +178,7 @@ patch_margin_right = 16 patch_margin_bottom = 16 [node name="label" type="Label" parent="pribor_rtr"] +self_modulate = Color(0, 0, 0, 0) layout_mode = 0 offset_left = 12.0 offset_top = -54.0 @@ -230,6 +232,7 @@ patch_margin_right = 16 patch_margin_bottom = 16 [node name="label" type="Label" parent="pribor_afsp_1"] +self_modulate = Color(0, 0, 0, 0) layout_mode = 0 offset_left = 165.0 offset_top = -245.0 @@ -244,7 +247,7 @@ vertical_alignment = 1 modulate = Color(0.498039, 0.498039, 0.498039, 1) light_mask = 3 position = Vector2(415, -40) -scale = Vector2(3.0, 3.0) +scale = Vector2(3, 3) sprite_frames = SubResource("SpriteFrames_foasq") frame_progress = 0.72355 script = ExtResource("11_u7tym") @@ -285,6 +288,7 @@ patch_margin_right = 16 patch_margin_bottom = 16 [node name="label" type="Label" parent="pribor_afsp_2"] +self_modulate = Color(0, 0, 0, 0) layout_mode = 0 offset_left = 200.0 offset_top = -240.0 @@ -299,7 +303,7 @@ vertical_alignment = 1 modulate = Color(0.498039, 0.498039, 0.498039, 1) light_mask = 3 position = Vector2(425, -40) -scale = Vector2(3.0, 3.0) +scale = Vector2(3, 3) sprite_frames = SubResource("SpriteFrames_foasq") frame_progress = 0.72355 script = ExtResource("11_u7tym") @@ -323,6 +327,7 @@ metadata/unit_name = ["уарэп-щ3", "уарэп-спт25-1", "уарэп-с metadata/online_proc = "online_change_arr" [node name="label" type="Label" parent="pribor_uyep"] +self_modulate = Color(0, 0, 0, 0) layout_mode = 0 offset_left = 26.8566 offset_top = -38.3276 @@ -376,6 +381,7 @@ metadata/unit_name = ["уарэп-яу07-2в"] metadata/online_proc = "on_line_changed" [node name="label" type="Label" parent="pribor_prd_v_2"] +self_modulate = Color(0, 0, 0, 0) layout_mode = 0 offset_left = 14.0 offset_top = -38.0 @@ -429,6 +435,7 @@ metadata/unit_name = ["уарэп-яу07-2н"] metadata/online_proc = "on_line_changed" [node name="label" type="Label" parent="pribor_prd_n_2"] +self_modulate = Color(0, 0, 0, 0) layout_mode = 0 offset_left = 15.0 offset_top = -38.0 @@ -484,6 +491,7 @@ metadata/unit_name = ["уарэп-яу07-2к"] metadata/online_proc = "on_line_changed" [node name="label" type="Label" parent="pribor_prd_k_2"] +self_modulate = Color(0, 0, 0, 0) layout_mode = 0 offset_left = 17.0 offset_top = -38.0 @@ -537,6 +545,7 @@ metadata/unit_name = ["уарэп-яу07-3в"] metadata/online_proc = "on_line_changed" [node name="label" type="Label" parent="pribor_prd_v_3"] +self_modulate = Color(0, 0, 0, 0) layout_mode = 0 offset_left = 9.0 offset_top = -38.0 @@ -590,6 +599,7 @@ metadata/unit_name = ["уарэп-яу07-3н"] metadata/online_proc = "on_line_changed" [node name="label" type="Label" parent="pribor_prd_n_3"] +self_modulate = Color(0, 0, 0, 0) layout_mode = 0 offset_left = 8.0 offset_top = -38.0 @@ -643,6 +653,7 @@ metadata/unit_name = ["уарэп-яу07-3к"] metadata/online_proc = "on_line_changed" [node name="label" type="Label" parent="pribor_prd_k_3"] +self_modulate = Color(0, 0, 0, 0) layout_mode = 0 offset_left = 9.0 offset_top = -38.0 @@ -696,6 +707,7 @@ metadata/unit_name = ["уарэп-яу07-1в"] metadata/online_proc = "on_line_changed" [node name="label" type="Label" parent="pribor_prd_v_1"] +self_modulate = Color(0, 0, 0, 0) layout_mode = 0 offset_left = 8.0 offset_top = -38.0 @@ -749,6 +761,7 @@ metadata/online_proc = "on_line_changed" metadata/unit_name = ["уарэп-яу07-1н"] [node name="label" type="Label" parent="pribor_prd_n_1"] +self_modulate = Color(0, 0, 0, 0) layout_mode = 0 offset_left = 8.0 offset_top = -38.0 @@ -802,6 +815,7 @@ metadata/unit_name = ["уарэп-яу07-1к"] metadata/online_proc = "on_line_changed" [node name="label" type="Label" parent="pribor_prd_k_1"] +self_modulate = Color(0, 0, 0, 0) layout_mode = 0 offset_left = 9.0 offset_top = -38.0 @@ -854,6 +868,7 @@ metadata/unit_name = ["уарэп-яу07-4в"] metadata/online_proc = "on_line_changed" [node name="label" type="Label" parent="pribor_prd_v_4"] +self_modulate = Color(0, 0, 0, 0) layout_mode = 0 offset_left = 17.0 offset_top = -38.0 @@ -906,6 +921,7 @@ metadata/unit_name = ["уарэп-яу07-4н"] metadata/online_proc = "on_line_changed" [node name="label" type="Label" parent="pribor_prd_n_4"] +self_modulate = Color(0, 0, 0, 0) layout_mode = 0 offset_left = 14.0 offset_top = -38.0 @@ -958,6 +974,7 @@ metadata/unit_name = ["уарэп-яу07-4к"] metadata/online_proc = "on_line_changed" [node name="label" type="Label" parent="pribor_prd_k_4"] +self_modulate = Color(0, 0, 0, 0) layout_mode = 0 offset_left = 17.0 offset_top = -38.0 diff --git a/scripts/prd.gd b/scripts/prd.gd index 45ff4ba4..7a8766f6 100644 --- a/scripts/prd.gd +++ b/scripts/prd.gd @@ -118,6 +118,7 @@ class Fs: var pow_caps_rx: float = 0.0 ## Мощность излучения принятая от КАПС РПБ var freq_caps_rx: float = 0.0 ## Частота принятая от КАПС РПБ var width_caps_rx: float = 0.0 ## Ширина полосы принятая от КАПС РПБ + var msvk: Array signal update_modulation(index) @@ -352,33 +353,31 @@ func check_dir(): ## Производит приём состояния модулей ФС. func on_data_capsrpb_received(unit0: capsrpb.CapsRpb): - if not unit0.json_dic.has('ts'): return - if not unit0.json_dic['ts'] == 7 and not unit0.json_dic['ts'] == 5: return - if unit0.json_dic.has('msvk'): - for nfs in fs_caps_id: - fs_dict[fs_caps_id[nfs]].msvk = unit0.json_dic['msvk'] if unit0.json_dic['msvk'].size()>0 else [] + if not unit0.json_dic.has('ts'): return + if not unit0.json_dic['ts'] == 7: return + if not unit0.json_dic.has('msfs'): return + + var msfs = unit0.json_dic['msfs'] + for fs in msfs: + if fs is Dictionary: + if not fs.has('nmfs'): + return + var nmfs = int(fs['nmfs']) + if not fs_caps_id.has(nmfs): + continue + var ii = fs_caps_id[nmfs] + if not fs_dict.has(ii): + continue + var fs_module = fs_dict[ii] + if fs.has('isg'): + fs_module.isg = int(fs['isg']) + if fs.has('pow'): + fs_module.pow_caps_rx = int(fs['pow']) + if fs.has('freq'): + fs_module.freq_caps_rx = int(fs['freq']) + if fs.has('width'): + fs_module.width_caps_rx = int(fs['width']) - if unit0.json_dic.has('msfs'): - var msfs = unit0.json_dic['msfs'] - for fs in msfs: - if fs is Dictionary: - if not fs.has('nmfs'): - return - var nmfs = int(fs['nmfs']) - if not fs_caps_id.has(nmfs): - continue - var ii = fs_caps_id[nmfs] - if not fs_dict.has(ii): - continue - var fs_module = fs_dict[ii] - if fs.has('isg'): - fs_module.isg = int(fs['isg']) - if fs.has('pow'): - fs_module.pow_caps_rx = int(fs['pow']) - if fs.has('freq'): - fs_module.freq_caps_rx = int(fs['freq']) - if fs.has('width'): - fs_module.width_caps_rx = int(fs['width']) signaller.emit_signal('fs_update_state', fs_dict) diff --git a/scripts/pribor-prd.gd b/scripts/pribor-prd.gd index 405b020a..af34306f 100644 --- a/scripts/pribor-prd.gd +++ b/scripts/pribor-prd.gd @@ -103,7 +103,7 @@ class TestPRD extends Node: var status: PackedByteArray = unit_pribor.status block_kasseta_y5_config = check_block_kasseta_y5(status, block_kasseta_y5_config) block_ip_config = check_block_ip(status, block_ip_config) - check_temperature_um(status, power_amplify) + control_results.temperature = check_temperature_um(status, power_amplify) _process_dkm_status(status) if current_litera != 0: var tek_litera: Dictionary = power_result[current_litera] @@ -119,15 +119,9 @@ class TestPRD extends Node: if fs_key.is_empty(): return - var fs_result := {fs_key: 0, 'fs_modulation': 'none'} + var fs_result := {fs_key: 0} fs_result = on_fs_state(packet_type_7, fs_mapping, fs_result) control_results[fs_key] = fs_result[fs_key] - if fs_result.fs_modulation and not flag_fs_turn_on: - print_debug('Помеха "Включено"') - flag_fs_turn_on = true - if not fs_result.fs_modulation and not flag_fs_turn_off: - print('Помеха "Откючено"') - flag_fs_turn_off = true ## @@ -301,9 +295,20 @@ class TestPRD extends Node: _determine_self_name() var fs_mapping = _create_fs_mapping(self_name) signaller.conn(signaller.fs_update_state, Callable(self, 'on_fs_update_state').bind(fs_mapping)) + var unit_caps = network.get_unit_instance('уарэп-капсрпб') + unit_caps.connect('data_received', Callable(self, 'on_interfer_status')) unit_prd.connect('data_received', Callable(self, 'on_data_received')) + func on_interfer_status(packet_status: Object) -> void: + if packet_status.json_dic.msvk.size() > 0 and not flag_fs_turn_on: + flag_fs_turn_on = true + print_debug('Излучение') + elif packet_status.json_dic.msvk.size() == 0 and not flag_fs_turn_off: + flag_fs_turn_off = true + print_debug('Все тихо') + + func _determine_self_name() -> void: var current_unit = unit_prd.name var parts = current_unit.split('-') @@ -447,7 +452,7 @@ class TestPRD extends Node: ## Проверка температур УМ от УКП - static func check_temperature_um(status_prd: PackedByteArray, power_amplifier: Array) -> void: + static func check_temperature_um(status_prd: PackedByteArray, power_amplifier: Array) -> bool: const Constants: Dictionary = { 'CONST_MIN_TEMP': -25, 'MAXIMUM_CODE_ADC': 3796, @@ -458,6 +463,7 @@ class TestPRD extends Node: const TEMP: float = 115.0 / (Constants.MAXIMUM_CODE_ADC - Constants.MINIMUM_CODE_AD) var ukp1_online: int = (status_prd[0] >> 2) & 1 var ukp2_online = (status_prd[0] >> 3) & 1 + var all_temp_is_ok: bool = true if ukp1_online: var tmp_1: int @@ -466,11 +472,15 @@ class TestPRD extends Node: 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 + 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 + if tmp_1>70: + all_temp_is_ok = false if ukp2_online: for i_temp in 6: @@ -478,9 +488,13 @@ class TestPRD extends Node: 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 + if tmp_2>70: + all_temp_is_ok = false else: power_amplifier[i_temp+6].value1 = tmp_2 - + if tmp_2>70: + all_temp_is_ok = false + return all_temp_is_ok ## Проверка ДКМ static func check_dkm(status_prd: PackedByteArray, bit_dkm: int) -> bool: @@ -528,7 +542,6 @@ class TestPRD extends Node: var rule: Dictionary = FS_RULES[rule_key] if _should_apply_rule(fs_num, rule, updated_results): updated_results[rule.key] = fs_data.isg - updated_results['fs_modulation'] = fs_data.msvk.size() > 0 break return updated_results From b444bb4d5e36f2fa3dc0ff140d123a435171a407 Mon Sep 17 00:00:00 2001 From: Maxim Date: Mon, 1 Sep 2025 19:37:45 +0300 Subject: [PATCH 9/9] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20interfer=5Fresized=20=D0=B8=20=D0=BE=D1=82=D0=BF?= =?UTF-8?q?=D1=80=D0=B0=D0=B2=D0=BA=D0=B0=20=D0=BF=D0=BE=20=D1=82=D0=B0?= =?UTF-8?q?=D0=B9=D0=BC=D0=B5=D1=80=D1=83=20=D0=BC=D0=B0=D0=B3=D0=B8=D1=87?= =?UTF-8?q?=D0=B5=D1=81=D0=BA=D0=BE=D0=B5=20=D1=87=D0=B8=D1=81=D0=BB=D0=BE?= =?UTF-8?q?=20=D0=B2=20=D0=BF=D0=BE=D1=80=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/frame-ecm-list/scroll-ecm-list.gd | 3 +++ scripts/interfer.gd | 6 +++--- scripts/prd.gd | 1 + scripts/pribor-prd.gd | 22 ++++++++-------------- 4 files changed, 15 insertions(+), 17 deletions(-) diff --git a/scenes/frame-ecm-list/scroll-ecm-list.gd b/scenes/frame-ecm-list/scroll-ecm-list.gd index e4374173..7acaa671 100644 --- a/scenes/frame-ecm-list/scroll-ecm-list.gd +++ b/scenes/frame-ecm-list/scroll-ecm-list.gd @@ -121,6 +121,7 @@ func on_interfer_new(ecm, table_index): func on_interfer_off(ecm, ecms, thrs, table_index): + var sz = ecms.size() $table.remove_row(table_index[ecm.ispp]) rehash(table_index) ecms.erase(ecm.ispp) @@ -132,6 +133,8 @@ func on_interfer_off(ecm, ecms, thrs, table_index): $table.get_selected_rows(sel_rows) if not len(sel_rows): signaller.emit_signal('interfer_selected', null) + if sz != ecms.size(): + interfer.call_deferred('emit_signal', 'interfer_resized', ecms) ## Перестраивает индекс таблицы. Вызывать при удалении строки diff --git a/scripts/interfer.gd b/scripts/interfer.gd index f3c38ef9..c1ca8c52 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -206,7 +206,6 @@ func on_data_capsrpb_received(unit0: capsrpb.CapsRpb, ecms: Dictionary) -> void: if not unit0.json_dic.has('msvk'): return if not (unit0.json_dic['msvk'] is Array): return var msvk = unit0.json_dic['msvk'] - var sz: = ecms.size() for dic_msvk in msvk: if not (dic_msvk is Dictionary): continue if dic_msvk.has('ispp'): @@ -220,8 +219,6 @@ func on_data_capsrpb_received(unit0: capsrpb.CapsRpb, ecms: Dictionary) -> void: ecm.set_from_dic(dic_msvk) ecm.krp = INTERFER_OFF send_ecm(ecm, unit0) - if sz != ecms.size(): - call_deferred('emit_signal', 'interfer_resized', ecms) ## Вызыватся, когда пользователь выбрал помеху и выбраны цели. @@ -282,6 +279,7 @@ func on_interfer_rcv(interfer_params: Array, unit0, ecms) -> void: func interfer_create(u, interfer_name, ecms, param, kni, id, dict, source_interfer, power) -> void: + var sz = ecms.size() var ispp: int = 0 if interfer_name == 'k1': param['dur'] = 1.0 # Необходимо добавить параметры управления @@ -326,6 +324,8 @@ func interfer_create(u, interfer_name, ecms, param, kni, id, dict, source_interf thrs.erase(ispp) ecm.tick_tx = Time.get_ticks_msec() send_ecm(ecm, u) + if sz != ecms.size(): + call_deferred('emit_signal', 'interfer_resized', ecms) func send_ecm(ecm, unit0) -> void: diff --git a/scripts/prd.gd b/scripts/prd.gd index 7a8766f6..ebc97a37 100644 --- a/scripts/prd.gd +++ b/scripts/prd.gd @@ -330,6 +330,7 @@ func update_fs_state(ecms): for prd_module in prd_dict.values(): ## Отправка команды на исполнение в ПРД if prd_module.state != PrdState.WORK: continue if not prd_module.unit_yau07.online: continue + prd_module.cmd_array.append([prd_module.unit_yau07.CmdCode.WRITE_ISA, [prd_module.yemsg_board.base_addr_isa, 6666]]) var um_data_array: Array = [] for fs in prd_module.fs_dic.values(): if not prd_module.ug_online: continue diff --git a/scripts/pribor-prd.gd b/scripts/pribor-prd.gd index af34306f..57b145c3 100644 --- a/scripts/pribor-prd.gd +++ b/scripts/pribor-prd.gd @@ -68,8 +68,9 @@ class TestPRD extends Node: var control_timer: Timer = Timer.new() var ems_6666_timer: Timer = Timer.new() signal control_is_over(control_results, power_result) - var flag_fs_turn_on: bool = false - var flag_fs_turn_off: bool = false + + + var ecms: Dictionary ## Словарь помеховых воздействий ## Инициализация аргуметнов func _init(init_data: Dictionary) -> void: @@ -133,7 +134,7 @@ class TestPRD extends Node: _handle_fs_turn_on_state() state = STATE_MASHINE.FS_WORK STATE_MASHINE.FS_WORK: - if flag_fs_turn_on: + if ecms.size(): _handle_fs_work_state() STATE_MASHINE.CHEK_KASSETA_Y5: if block_kasseta_y5_config['yau07']: @@ -205,7 +206,7 @@ class TestPRD extends Node: func _handle_init_state() -> void: control_label.text = 'Выполняется инициализация ФС-%s' % current_litera if current_litera in [1, 2, 3, 4, 5, 6, 7]: - if flag_fs_turn_off: + if not ecms.size(): state = STATE_MASHINE.FS_TURN_ON else: control_results = on_control_result(block_ip_config, control_results) @@ -268,7 +269,6 @@ class TestPRD extends Node: func _handle_fs_turn_off_state() -> void: control_label.text = 'Выполняется отключение ФС-%s' % current_litera - flag_fs_turn_off = false manage_fs(false, self_name, pribor_config, fs_parameters, current_litera, constants.POWER_UM) @@ -295,18 +295,12 @@ class TestPRD extends Node: _determine_self_name() var fs_mapping = _create_fs_mapping(self_name) signaller.conn(signaller.fs_update_state, Callable(self, 'on_fs_update_state').bind(fs_mapping)) - var unit_caps = network.get_unit_instance('уарэп-капсрпб') - unit_caps.connect('data_received', Callable(self, 'on_interfer_status')) + interfer.connect('interfer_resized', Callable(self, 'on_interfer_resized')) unit_prd.connect('data_received', Callable(self, 'on_data_received')) - func on_interfer_status(packet_status: Object) -> void: - if packet_status.json_dic.msvk.size() > 0 and not flag_fs_turn_on: - flag_fs_turn_on = true - print_debug('Излучение') - elif packet_status.json_dic.msvk.size() == 0 and not flag_fs_turn_off: - flag_fs_turn_off = true - print_debug('Все тихо') + func on_interfer_resized(ecms_dic: Dictionary) -> void: + ecms = ecms_dic func _determine_self_name() -> void: