diff --git a/scenes/tabs-switch/tab-switch.tscn b/scenes/tabs-switch/tab-switch.tscn index 8d27a501..f8649dec 100644 --- a/scenes/tabs-switch/tab-switch.tscn +++ b/scenes/tabs-switch/tab-switch.tscn @@ -106,7 +106,6 @@ theme_override_styles/normal = SubResource("StyleBoxFlat_o1r22") text = "Внешнее управление" horizontal_alignment = 1 vertical_alignment = 1 -metadata/_edit_lock_ = true [node name="тренаж_режим" type="Button" parent="."] layout_mode = 0 @@ -125,7 +124,6 @@ theme_override_styles/normal = SubResource("StyleBoxFlat_imu1q") toggle_mode = true text = "Тренаж" script = ExtResource("9_41d34") -metadata/_edit_lock_ = true [connection signal="tab_changed" from="tab_switch" to="tab_switch" method="_on_tab_changed"] [connection signal="toggled" from="тренаж_режим" to="tab_switch" method="_on_button_trenaj_toggled"] diff --git a/scenes/контроль/блок-в.tscn b/scenes/контроль/блок-в.tscn index 91390370..06dcfa85 100644 --- a/scenes/контроль/блок-в.tscn +++ b/scenes/контроль/блок-в.tscn @@ -476,11 +476,12 @@ layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 tooltip_text = " -Текущее: 0.00 +Текущее: 56.00 Диапазон: -50.00…120.00" mouse_filter = 0 min_value = -50.0 max_value = 120.0 +value = 56.0 fill_mode = 3 nine_patch_stretch = true stretch_margin_left = 8 diff --git a/scripts/prd.gd b/scripts/prd.gd index 7eddaace..5e4f796f 100644 --- a/scripts/prd.gd +++ b/scripts/prd.gd @@ -163,10 +163,9 @@ class PRD: var set_ug_state: bool = true ## Необходимо ли записать в УГ настройки signal update_serviceability() - func _init(u_name, u_yau07, u_control: Object): + func _init(u_name, u_yau07): prd_name = u_name unit_yau07 = u_yau07 - unit_control = u_control init_ems_g() @@ -284,11 +283,12 @@ func _ready() -> void: check_dir() for prd_name in PRD_NAMES: var unit_prd = network.get_unit_instance(prd_name) - var control_pribor_prd = preload('res://scripts/pribor-prd.gd') - var unit_control = control_pribor_prd.TestPRD.new({'unit_prd': unit_prd}) - add_child(unit_control) - var new_prd = PRD.new(prd_name, unit_prd, unit_control) + var new_prd = PRD.new(prd_name, unit_prd) prd_dict[prd_name] = new_prd + var control_pribor_prd = preload('res://scripts/pribor-prd.gd') + var unit_control = control_pribor_prd.TestPRD.new({'unit_prd': unit_prd}, new_prd.cmd_array) + add_child(unit_control) + new_prd.unit_control = unit_control for key in FS_PRD.keys(): var fs = Fs.new(key, FS_PRD[key][0]) fs_dict[key] = fs diff --git a/scripts/pribor-prd.gd b/scripts/pribor-prd.gd index 5a700c8f..d5d7957e 100644 --- a/scripts/pribor-prd.gd +++ b/scripts/pribor-prd.gd @@ -241,13 +241,13 @@ class TestPRD extends Node: } var power_for_litera: Dictionary = { - 1: {RAY_m5: [560, 400, 330, 560, 400, 330], RAY_5: [560, 400, 330, 560, 400, 330,], RAY_15: [560, 400, 330, 560, 400, 330,], RAY_25: [560, 400, 330, 560, 400, 330,], RAY_35: [560, 400, 330, 560, 400, 330,], RAY_45: [560, 400, 330, 560, 400, 330,],}, - 2: {RAY_m5: [560, 400, 330, 560, 400, 330,], RAY_5: [560, 400, 330, 560, 400, 330,], RAY_15: [560, 400, 330, 560, 400, 330,], RAY_25: [560, 400, 330, 560, 400, 330,], RAY_35: [560, 400, 330, 560, 400, 330,], RAY_45: [560, 400, 330, 560, 400, 330,],}, - 3: {RAY_m5: [560, 400, 330, 560, 400, 330,], RAY_5: [560, 400, 330, 560, 400, 330,], RAY_15: [560, 400, 330, 560, 400, 330,], RAY_25: [560, 400, 330, 560, 400, 330,], RAY_35: [560, 400, 330, 560, 400, 330,], RAY_45: [560, 400, 330, 560, 400, 330,],}, - 4: {RAY_m5: [560, 400, 330, 560, 400, 330,], RAY_5: [560, 400, 330, 560, 400, 330,], RAY_15: [560, 400, 330, 560, 400, 330,], RAY_25: [560, 400, 330, 560, 400, 330,], RAY_35: [560, 400, 330, 560, 400, 330,], RAY_45: [560, 400, 330, 560, 400, 330,],}, - 5: {RAY_m5: [560, 400, 330, 560, 400, 330,], RAY_5: [560, 400, 330, 560, 400, 330,], RAY_15: [560, 400, 330, 560, 400, 330,], RAY_25: [560, 400, 330, 560, 400, 330,], RAY_35: [560, 400, 330, 560, 400, 330,], RAY_45: [560, 400, 330, 560, 400, 330,],}, - 6: {RAY_m5: [560, 400, 330, 560, 400, 330,], RAY_5: [560, 400, 330, 560, 400, 330,], RAY_15: [560, 400, 330, 560, 400, 330,], RAY_25: [560, 400, 330, 560, 400, 330,], RAY_35: [560, 400, 330, 560, 400, 330,], RAY_45: [560, 400, 330, 560, 400, 330,],}, - 7: {RAY_m5: [560, 400, 330, 560, 400, 330,], RAY_5: [560, 400, 330, 560, 400, 330,], RAY_15: [560, 400, 330, 560, 400, 330,], RAY_25: [560, 400, 330, 560, 400, 330,], RAY_35: [560, 400, 330, 560, 400, 330,], RAY_45: [560, 400, 330, 560, 400, 330,],}, + 1: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],}, + 2: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],}, + 3: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],}, + 4: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],}, + 5: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],}, + 6: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],}, + 7: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],}, } var constants: Dictionary var pribor_config: Dictionary @@ -263,7 +263,6 @@ class TestPRD extends Node: var flag_si_fs_input: bool = false var flag_si_fs_output: bool = false var unit_prd: Object - var module_prd: Object var power_amplify: Array var power_result: Dictionary #var control_label: Label @@ -274,6 +273,7 @@ class TestPRD extends Node: signal update_progress(progress_value: float) signal update_max_value_progress(max_progress_value: int) var cc: int = 0 + var cmd_array: Array var progress_value: float: set(v): @@ -285,13 +285,14 @@ class TestPRD extends Node: var ecms: Dictionary ## Словарь помеховых воздействий ## Инициализация аргуметнов - func _init(init_data: Dictionary) -> void: + func _init(init_data: Dictionary, cmd_array_from_prd: Array) -> void: unit_prd = init_data['unit_prd'] + cmd_array = cmd_array_from_prd func _ready() -> void: - initialize_connections() _determine_self_name() + initialize_connections() setup_timer() @@ -301,7 +302,7 @@ class TestPRD extends Node: ## Пакеты от ЯУ-07 func on_data_received(unit_pribor: Object) -> void: - if not is_inside_tree(): + if machine_timer.is_stopped(): return var status: PackedByteArray = unit_pribor.status @@ -369,7 +370,7 @@ class TestPRD extends Node: state = STATE_MACHINE.READ_ISA STATE_MACHINE.READ_ISA: if (unit_prd.cmd_state == unit_prd.CmdState.DONE) or (unit_prd.cmd_state == unit_prd.CmdState.FAIL): - _handle_read_isa(module_prd, unit_prd, [constants.ADDR_UG_LITERA_1, constants.ADDR_UG_LITERA_2, constants.ADDR_UG_LITERA_3]) + _handle_read_isa(unit_prd, [constants.ADDR_UG_LITERA_1, constants.ADDR_UG_LITERA_2, constants.ADDR_UG_LITERA_3], cmd_array) flag_write_isa = false state = STATE_MACHINE.UG_SET_RAY STATE_MACHINE.UG_SET_RAY: @@ -483,15 +484,12 @@ class TestPRD extends Node: elif self_name == '1н' or self_name == '2н' or self_name == '3н' or self_name == '4н': dic_att['ATT_UM_1'] = constants.ATT_UM_2 dic_att['ATT_UM_2'] = constants.ATT_UM_3 - - ##var log_text = dic_att.ATT_UM_3 if current_litera == 1 else dic_att.ATT_UM_1 if current_litera in [2, 4, 6] else dic_att.ATT_UM_2 - ## 'Выполняется настройка угла (%s) и атт (0x0%s)' % [dic_att.RAY_DOU_NUM, log_text] - flag_write_isa = on_ug_setting(module_prd, unit_prd, dic_att) + flag_write_isa = on_ug_setting(unit_prd, dic_att, cmd_array) ## Таймер отправки команды в ЭМС-Г для модуляции func _on_ems_6666_timer() -> void: - module_prd.cmd_array.append([unit_prd.CmdCode.WRITE_ISA, [constants.BASE_ADDR_EMS_G, 6666]]) + cmd_array.append([unit_prd.CmdCode.WRITE_ISA, [constants.BASE_ADDR_EMS_G, 6666]]) ## Таймер вызова машины состояний @@ -690,10 +688,10 @@ class TestPRD extends Node: ## Установка угла и аттенюации для УМ - static func on_ug_setting(prd_module: Object, prd_unit: Object, settings_ug: Dictionary) -> bool: + static func on_ug_setting(prd_unit: Object, settings_ug: Dictionary, prd_cmd_array: Array) -> bool: var result_1 = ((settings_ug.ATT_UM_1 & 0x07) << 3) | (settings_ug.RAY_DOU_NUM & 0x07) var result_2 = ((settings_ug.ATT_UM_2 & 0x07) << 3) | (settings_ug.RAY_DOU_NUM & 0x07) - prd_module.cmd_array.append([prd_unit.CmdCode.WRITE_ISA, [ settings_ug.ADDR_UG_LITERA_1, result_1, + prd_cmd_array.append([prd_unit.CmdCode.WRITE_ISA, [ settings_ug.ADDR_UG_LITERA_1, result_1, settings_ug.ADDR_UG_LITERA_2, result_2, settings_ug.ADDR_UG_LITERA_3, settings_ug.ATT_UM_3, ] @@ -701,8 +699,8 @@ class TestPRD extends Node: return true - static func _handle_read_isa(prd_module: Object, prd_unit: Object, read_isa_ports: Array) -> void: - prd_module.cmd_array.append([prd_unit.CmdCode.READ_ISA, read_isa_ports]) + static func _handle_read_isa(prd_unit: Object, read_isa_ports: Array, prd_cmd_array) -> void: + prd_cmd_array.append([prd_unit.CmdCode.READ_ISA, read_isa_ports]) ## Управаление модулем фс (включить/отключить излучение) @@ -771,14 +769,14 @@ class TestPRD extends Node: for i_temp in 6: temperature_ukp_1 = status_prd.decode_u16(Constants.TEMPERATURE_UKP_1 + 2 * i_temp) tmp_1 = round(Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_1) * TEMP + 3) - power_amplifier[i_temp].value1 = tmp_1 + #power_amplifier[i_temp].value1 = tmp_1 if tmp_1>70: all_temp_is_ok = false if power_amplifier.size() > 12: # Темпуратура от УМ литеры 1 temperature_ukp_1 = status_prd.decode_u16(Constants.TEMPERATURE_UKP_1 + 2 * 7) tmp_1 = round(Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_1) * TEMP + 3) - power_amplifier[6].value1 = tmp_1 + #power_amplifier[6].value1 = tmp_1 if tmp_1>70: all_temp_is_ok = false @@ -787,11 +785,11 @@ class TestPRD extends Node: var temperature_ukp_2: int = status_prd.decode_u16(Constants.TEMPERATURE_UKP_2 + 2 * i_temp) var tmp_2: int = round(Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_2) * TEMP + 3) if power_amplifier.size() > 12: - power_amplifier[i_temp+7].value1 = tmp_2 + #power_amplifier[i_temp+7].value1 = tmp_2 if tmp_2>70: all_temp_is_ok = false else: - power_amplifier[i_temp+6].value1 = tmp_2 + #power_amplifier[i_temp+6].value1 = tmp_2 if tmp_2>70: all_temp_is_ok = false return all_temp_is_ok diff --git a/table/table.gd b/table/table.gd index f1706f3d..0392d5a0 100644 --- a/table/table.gd +++ b/table/table.gd @@ -448,6 +448,7 @@ func remove_row(i_row: int): if nodes.has(sel_key): var selector = nodes[sel_key] + if selector == null: return var prnt = selector.get_parent() prnt.remove_child(selector) selector.queue_free() @@ -484,8 +485,11 @@ func next_index(indexes: Array) -> void: func swap_nodes(nodes_copy, node_key_format, i0, i1) -> void: var key0 = node_key_format % [i0.y, i0.x] var key1 = node_key_format % [i1.y, i1.x] - nodes_copy[key1] = nodes[key0] - nodes_copy[key1].name = key1 + if is_instance_valid(nodes[key0]): + nodes_copy[key1] = nodes[key0] + nodes_copy[key1].name = key1 + else: + print_debug("Ошибка: нод ", key0, " был освобожден") ## Переназначает ключи в соответствии с размерами таблицы.