From 295f81f694526f88000bac73d5cf4cefa85e73b2 Mon Sep 17 00:00:00 2001 From: Maxim Date: Fri, 15 Aug 2025 14:13:36 +0300 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=BD=D1=8F=D1=82=D0=B8=D0=B5=20=D0=BC?= =?UTF-8?q?=D0=BE=D1=89=D0=BD=D0=BE=D1=81=D1=82=D0=B8=20=D1=81=D0=BE=20?= =?UTF-8?q?=D0=B2=D1=81=D0=B5=D1=85=20=D0=BB=D1=83=D1=87=D0=B5=D0=B9=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D1=80=D0=B8=D0=B1=D0=BE=D1=80=D0=B5=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B4-=D0=BD?= 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-n/pribor-prd-n.gd | 2 +- scenes/pribor-prd-v/pribor-prd-v.gd | 24 ++++--- scripts/pribor-prd.gd | 103 ++++++++++++++++++---------- 4 files changed, 99 insertions(+), 55 deletions(-) diff --git a/scenes/pribor-prd-k/pribor-prd-k.gd b/scenes/pribor-prd-k/pribor-prd-k.gd index 0e6a5b69..8051033d 100644 --- a/scenes/pribor-prd-k/pribor-prd-k.gd +++ b/scenes/pribor-prd-k/pribor-prd-k.gd @@ -77,6 +77,7 @@ var control_results_k: Dictionary = { 'block_ip': false, # Проверка касет П1 и ИП МА2000 'temperature': true, # Проверка температур УМ 'dkm': false, + 'dou': false, 'power_um': false, # Мощность от УКП 'fs': false, } @@ -114,18 +115,28 @@ func on_state_mashine() -> 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] + f.state = new_state + fs_results[fs_meta] = new_state + var dkm: Dictionary = control_prd_k.block_dkm_config - var fs: Dictionary = control_prd_k.block_fs_config - if control_prd_k.current_fs == 1 and fs.fs_1: + if control_prd_k.current_fs == 1 and fs_results.fs_1: $kasseta_fs_kd/ref_A2.state = STATE_VAL.GOOD if dkm.dkm_1 else STATE_VAL.ERROR - elif control_prd_k.current_fs == 6 and fs.fs_6: + elif control_prd_k.current_fs == 6 and fs_results.fs_6: $kasseta_fs_kd/ref_A4.state = STATE_VAL.GOOD if dkm.dkm_6 else STATE_VAL.ERROR - elif control_prd_k.current_fs == 7 and fs.fs_7: + elif control_prd_k.current_fs == 7 and fs_results.fs_7: $kasseta_fs_kd/ref_A7.state = STATE_VAL.GOOD if dkm.dkm_7 else STATE_VAL.ERROR - if not control_prd_k.power_result['ray_25_1'] or not control_prd_k.power_result['ray_25_6'] or not control_prd_k.power_result['ray_25_7']: + #if not control_prd_k.power_result['ray_25_1'] or not control_prd_k.power_result['ray_25_6'] or not control_prd_k.power_result['ray_25_7']: + #return + if 1 == 1: return - + var node_arr_power: Array = get_tree().get_nodes_in_group('power_amplifier') for i_pow in node_arr_power.size(): if i_pow < 1: @@ -146,11 +157,9 @@ func initialize_connections() -> void: unit_prd_k.connect('line_changed', Callable(self, 'on_line_changed')) var power_amplifiers: Array = get_tree().get_nodes_in_group('power_amplifier') - var fs_nodes: Array = get_tree().get_nodes_in_group('fs_group') var init_data: Dictionary = { 'control_label': $control_result, 'power_amplifiers': power_amplifiers, - 'fs_nodes': fs_nodes, 'unit_prd': unit_prd_k, 'module_prd' : prd_k_module, 'constants': constants_k, diff --git a/scenes/pribor-prd-n/pribor-prd-n.gd b/scenes/pribor-prd-n/pribor-prd-n.gd index 74c5283e..13813b23 100644 --- a/scenes/pribor-prd-n/pribor-prd-n.gd +++ b/scenes/pribor-prd-n/pribor-prd-n.gd @@ -72,6 +72,7 @@ var control_results_n: Dictionary = { 'block_ip': false, # Проверка касет П1 и ИП МА2000 'temperature': true, # Проверка температур УМ 'dkm': false, + 'dou': false, 'power_um': false, # Мощность от УКП 'fs': false, } @@ -147,7 +148,6 @@ func initialize_connections() -> void: var init_data: Dictionary = { 'control_label': $control_result, 'power_amplifiers': power_amplifiers, - #'fs_nodes': fs_nodes, 'unit_prd': unit_prd_n, 'module_prd' : prd_n_module, 'constants': constants_n, diff --git a/scenes/pribor-prd-v/pribor-prd-v.gd b/scenes/pribor-prd-v/pribor-prd-v.gd index 0e7a8d64..101b6828 100644 --- a/scenes/pribor-prd-v/pribor-prd-v.gd +++ b/scenes/pribor-prd-v/pribor-prd-v.gd @@ -71,6 +71,7 @@ var control_results_v: Dictionary = { 'block_ip': false, # Проверка касет П1 и ИП МА2000 'temperature': true, # Проверка температур УМ 'dkm': false, + 'dou': false, 'power_um': false, # Мощность от УКП 'fs': false, } @@ -97,17 +98,26 @@ func on_state_mashine() -> 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 - control_results_v = control_prd_v.control_results + var fs_results: Dictionary = control_prd_v.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] + f.state = new_state + fs_results[fs_meta] = new_state + var dkm: Dictionary = control_prd_v.block_dkm_config - var fs: Dictionary = control_prd_v.block_fs_config - if control_prd_v.current_fs == 4 and fs.fs_4: + if control_prd_v.current_fs == 4 and fs_results.fs_4: $kasseta_FS_VD/ref_A2.state = STATE_VAL.GOOD if dkm.dkm_4 else STATE_VAL.ERROR - elif control_prd_v.current_fs == 5 and fs.fs_5: + elif control_prd_v.current_fs == 5 and fs_results.fs_5: $kasseta_FS_VD/ref_A6.state = STATE_VAL.GOOD if dkm.dkm_5 else STATE_VAL.ERROR - if not control_prd_v.power_result['ray_25_4'] or not control_prd_v.power_result['ray_25_5']: + #if not control_prd_v.power_result['ray_25_4'] or not control_prd_v.power_result['ray_25_5']: + #return + if 1 == 1: return - + var node_arr_power: Array = get_tree().get_nodes_in_group('power_amplifier') for i_pow in node_arr_power.size(): if i_pow < 6: @@ -134,11 +144,9 @@ func initialize_connections() -> void: unit_prd_v.connect('line_changed', Callable(self, 'on_line_changed')) var power_amplifiers: Array = get_tree().get_nodes_in_group('power_amplifier') - var fs_nodes: Array = get_tree().get_nodes_in_group('fs_group') var init_data: Dictionary = { 'control_label': $control_result, 'power_amplifiers': power_amplifiers, - 'fs_nodes': fs_nodes, 'unit_prd': unit_prd_v, 'module_prd' : prd_v_module, 'constants': constants_v, diff --git a/scripts/pribor-prd.gd b/scripts/pribor-prd.gd index b2b6d400..26c1b9ca 100644 --- a/scripts/pribor-prd.gd +++ b/scripts/pribor-prd.gd @@ -20,7 +20,8 @@ class TestPRD extends Node: UG_SET_RAY_3, UG_SET_RAY_4, UG_SET_RAY_5, - UM_RUN, + IN_EMS_RUN, + IN_EMS_STOP, FS_TURN_OFF, STOP_CONTROL, AWAIT @@ -69,6 +70,7 @@ class TestPRD extends Node: var power_amplify: Array var control_label: Label var control_timer: Timer = Timer.new() + var ems_6666_timer: Timer = Timer.new() ## Инициализация аргуметнов @@ -110,9 +112,7 @@ class TestPRD extends Node: if current_fs != 0: var tek_litera: Dictionary = power_result[current_fs] var interes = _get_ray_key(state) - print('interes: ', interes) if interes != '': - var arr_pow = tek_litera[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 @@ -146,9 +146,14 @@ class TestPRD extends Node: print_debug('Яу-07Б: нет связи ', block_kasseta_y5_config) STATE_MASHINE.WRITE_ISA: _handle_ug_set_state(0x6) + state = STATE_MASHINE.READ_ISA + #STATE_MASHINE.IN_EMS_RUN: + #ems_6666_timer.start() + #state = STATE_MASHINE.READ_ISA STATE_MASHINE.READ_ISA: - _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 + if (unit_prd.cmd_state == unit_prd.CmdState.DONE) or (unit_prd.cmd_state == unit_prd.CmdState.FALSE): + _handle_read_isa(module_prd, unit_prd, [constants.ADDR_UG_LITERA_1, constants.ADDR_UG_LITERA_2, constants.ADDR_UG_LITERA_3]) + state = STATE_MASHINE.UG_SET_RAY STATE_MASHINE.UG_SET_RAY: var addr: int = constants.ADDR_UG_LITERA_1 if current_fs == 3 or current_fs == 5 or current_fs == 7: @@ -166,24 +171,32 @@ 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: - state = STATE_MASHINE.FS_TURN_OFF + state = STATE_MASHINE.IN_EMS_STOP elif unit_prd.isa_ports[addr] & 0x07 == 6: state = STATE_MASHINE.UG_SET_RAY_0 STATE_MASHINE.UG_SET_RAY_0: _handle_ug_set_state(0x0) + await get_tree().create_timer(1.0).timeout + state = STATE_MASHINE.READ_ISA STATE_MASHINE.UG_SET_RAY_1: _handle_ug_set_state(0x1) + state = STATE_MASHINE.READ_ISA STATE_MASHINE.UG_SET_RAY_2: _handle_ug_set_state(0x2) + state = STATE_MASHINE.READ_ISA STATE_MASHINE.UG_SET_RAY_3: _handle_ug_set_state(0x3) + state = STATE_MASHINE.READ_ISA STATE_MASHINE.UG_SET_RAY_4: _handle_ug_set_state(0x4) + state = STATE_MASHINE.READ_ISA STATE_MASHINE.UG_SET_RAY_5: _handle_ug_set_state(0x5) - STATE_MASHINE.UM_RUN: - flag_timer_started = _handle_um_run_state() + state = STATE_MASHINE.READ_ISA + STATE_MASHINE.IN_EMS_STOP: + ems_6666_timer.stop() + state = STATE_MASHINE.FS_TURN_OFF STATE_MASHINE.FS_TURN_OFF: _handle_fs_turn_off_state() STATE_MASHINE.STOP_CONTROL: @@ -194,10 +207,11 @@ class TestPRD extends Node: control_label.text = 'Выполняется инициализация ФС-%s' % current_fs if current_fs in [1, 2, 3, 4, 5, 6, 7]: state = STATE_MASHINE.FS_TURN_ON + #state = STATE_MASHINE.STOP_CONTROL 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, block_dkm_config, block_fs_config, control_results, power_result, self_name, constants) state = STATE_MASHINE.AWAIT - print_debug(power_result) + #print_debug(power_result) func _handle_fs_turn_on_state() -> void: @@ -228,6 +242,7 @@ class TestPRD extends Node: 'ADDR_UG_LITERA_2': constants.ADDR_UG_LITERA_2, 'ADDR_UG_LITERA_3': constants.ADDR_UG_LITERA_3, 'ATT_UM_3': 0x00, + 'BASE_EMS_G': constants.BASE_ADDR_EMS_G } if self_name == '1к' or self_name == '2к' or self_name == '3к' or self_name == '4к': dic_att['ATT_UM_1'] = constants.ATT_UM_6 @@ -246,14 +261,11 @@ class TestPRD extends Node: dic_att.ATT_UM_3, ] on_ug_setting(module_prd, unit_prd, dic_att) - state = STATE_MASHINE.UM_RUN - func _handle_um_run_state() -> bool: - control_label.text = 'Выполняется настройка ЭМС' + func _on_ems_6666_timer() -> void: + print_debug('Write 6666') module_prd.cmd_array.append([unit_prd.CmdCode.WRITE_ISA, [constants.BASE_ADDR_EMS_G, 6666]]) - state = STATE_MASHINE.READ_ISA - return true func _handle_fs_turn_off_state() -> void: @@ -264,7 +276,6 @@ class TestPRD extends Node: func _handle_stop_control_state() -> void: control_label.text = 'Выполняется завершение проверки ФС-%s' % current_fs - control_results = power_um_control_result(control_results, constants, power_result) flag_timer_started = false _advance_to_next_fs() state = STATE_MASHINE.INIT @@ -299,8 +310,12 @@ class TestPRD extends Node: add_child(control_timer) control_timer.timeout.connect(on_stop_control) control_timer.one_shot = true - control_timer.wait_time = 10.0 + control_timer.wait_time = 15.0 control_timer.start() + + add_child(ems_6666_timer) + ems_6666_timer.timeout.connect(_on_ems_6666_timer) + ems_6666_timer.wait_time = 1.5 func _process_dkm_status(status: PackedByteArray) -> void: @@ -353,10 +368,11 @@ 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, dkm_config: Dictionary, fs_config: Dictionary, ctrl_results: Dictionary, power_config: Dictionary, pribor: String, cnstnt: Dictionary) -> Dictionary: var all_blocks_ip_ok = true var all_blocks_dkm_ok = true var all_blocks_fs_ok = true + var all_dou_ok = true for block in ip_config: if not ip_config[block][1]: @@ -372,7 +388,31 @@ class TestPRD extends Node: if not fs_config[block]: all_blocks_fs_ok = false ctrl_results['fs'] = all_blocks_fs_ok - + + var arr_liters = [2, 3] + if pribor == '1к' or pribor == '2к' or pribor == '3к' or pribor == '4к': + arr_liters = [1, 6, 7] + elif pribor == '1в' or pribor == '2в' or pribor == '3в' or pribor == '4в': + arr_liters = [4, 5] + + for i_liter in arr_liters: + var amp_array = power_config[i_liter] + if amp_array[RAY_m5].size() == 0 or \ + amp_array[RAY_5].size() == 0 or \ + amp_array[RAY_15].size() == 0 or \ + amp_array[RAY_25].size() == 0 or \ + amp_array[RAY_35].size() == 0 or \ + amp_array[RAY_45].size() == 0: + all_dou_ok = false + + for i_powers in amp_array.values(): + for k_pow in i_powers.size(): + if i_powers[k_pow] < cnstnt.POWER_THRESHOLD: + print_debug(i_powers[k_pow]) + all_dou_ok = false + + print([i_liter, amp_array]) + ctrl_results['dou'] = all_dou_ok return ctrl_results @@ -381,31 +421,18 @@ class TestPRD extends Node: var result_1 = ((settings_ug.ATT_UM_1 & 0x07) << 3) | (settings_ug.RAY_DOU_NUM & 0x07) var result_2 = ((settings_ug.ATT_UM_2 & 0x07) << 3) | (settings_ug.RAY_DOU_NUM & 0x07) - prd_module.cmd_array.append([prd_unit.CmdCode.WRITE_ISA, [settings_ug.ADDR_UG_LITERA_1, result_1, - settings_ug.ADDR_UG_LITERA_2, result_2, - settings_ug.ADDR_UG_LITERA_3, settings_ug.ATT_UM_3]]) + prd_module.cmd_array.append([prd_unit.CmdCode.WRITE_ISA, [ settings_ug.BASE_EMS_G, 6666, + settings_ug.ADDR_UG_LITERA_1, result_1, + settings_ug.ADDR_UG_LITERA_2, result_2, + settings_ug.ADDR_UG_LITERA_3, settings_ug.ATT_UM_3, + ] + ]) static func _handle_read_isa(prd_module: Object, prd_unit: Object, read_isa_ports: Array) -> void: prd_module.cmd_array.append([prd_unit.CmdCode.READ_ISA, read_isa_ports]) - static func power_um_control_result(ctrl_results: Dictionary, constan: Dictionary, pwr_result: Dictionary) -> Dictionary: - ctrl_results['power_um'] = true - - for amp_array in pwr_result.values(): - if amp_array.size() == 0: - ctrl_results['power_um'] = false - return ctrl_results - - #for amp_array in pwr_result.values(): - #for value in amp_array: - #if value < constan.TEMP_THRESHOLD: - #ctrl_results['power_um'] = false - #break - return ctrl_results - - ## Управаление модулем фс (включить/отключить излучение) static func manage_fs(mode: bool, pribor: String, p_conf: Dictionary, fs_params: Dictionary, cur_fs: int, power_um: int) -> void: # Получаем конфигурацию для текущего прибора