diff --git a/scenes/pribor-prd-k/pribor-prd-k.gd b/scenes/pribor-prd-k/pribor-prd-k.gd index 8051033d..0130302b 100644 --- a/scenes/pribor-prd-k/pribor-prd-k.gd +++ b/scenes/pribor-prd-k/pribor-prd-k.gd @@ -77,8 +77,8 @@ var control_results_k: Dictionary = { 'block_ip': false, # Проверка касет П1 и ИП МА2000 'temperature': true, # Проверка температур УМ 'dkm': false, - 'dou': false, - 'power_um': false, # Мощность от УКП + 'dou_6': false, + 'dou_7': false, # Мощность от УКП 'fs': false, } @@ -98,57 +98,6 @@ func _ready() -> void: func on_state_mashine() -> void: control_prd_k.state_control_machine() - 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') - for node_y5 in nodes_y5: - var meta_y5 = node_y5.get_meta('y5') - 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 - 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 - var node_ip_power_arr: Array = get_tree().get_nodes_in_group('power_supply') - for power_supply in node_ip_power_arr: - var meta_ip = power_supply.get_meta('ip') - if block_ip_config_k.has(meta_ip) and block_kasseta_y5_prd_config_k.ug: - power_supply.state = STATE_VAL.GOOD if block_ip_config_k[meta_ip][1] else STATE_VAL.ERROR - - var fs_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 - 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_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_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']: - #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: - var pw = node_arr_power[i_pow] - pw.value1 = str(control_prd_k.power_result['ray_25_1'][i_pow]) - elif i_pow < 7: - var pw = node_arr_power[i_pow] - pw.value1 = str(control_prd_k.power_result['ray_25_6'][i_pow-1]) - elif i_pow < 13: - var pw = node_arr_power[i_pow] - pw.value1 = str(control_prd_k.power_result['ray_25_7'][i_pow-7]) - func initialize_connections() -> void: var unit_name = get_meta('unit_name')[0] @@ -174,6 +123,7 @@ func initialize_connections() -> void: } control_prd_k = test.TestPRD.new(init_data) add_child(control_prd_k) + control_prd_k.connect('control_is_over', Callable(self, 'on_control_result')) func setup_timer() -> void: @@ -212,38 +162,60 @@ func on_line_changed(unit_pribor: Object) -> void: func on_mode_changed(in_tree: bool) -> void: if not in_tree: - queue_free() + mashine_timer.stop() + prd_k_module.cmd_array.append([unit_prd_k.CmdCode.WRITE_ISA, [constants_k.ADDR_UG_LITERA_1, ug_work_1, constants_k.ADDR_UG_LITERA_2, ug_work_2, constants_k.ADDR_UG_LITERA_3, ug_work_3]]) + signaller.emit_signal('interfer_off_all') + else: + mashine_timer.start() -# -#func on_control_result() -> void: - #var pribor = 'her' - #var all_blocks_ok = true - #for block in block_ip_config_k: - #if not block_ip_config_k[block][1]: - #all_blocks_ok = false - #break - #control_results_k['block_ip'] = all_blocks_ok - ## Словарь соответствия ключей ошибок и нод - #var error_nodes := { - #'fs_1': $kasseta_fs_kd/ref_A3, - #'fs_6': $kasseta_fs_kd/ref_A6, - #'fs_7': $kasseta_fs_kd/ref_A5 - #} - ## Проверка результатов и установка состояний - #var result: bool = true - #for key in control_results_k: - #if not control_results_k[key]: - #result = false - #if error_nodes.has(key): - #error_nodes[key].state = STATE_VAL.ERROR -# - ## Установка текста и цвета результата - #var status_text := 'неисправен' - #var status_color := Color.RED - #if result: - #status_text = 'исправен' - #status_color = Color.GREEN -# - #$control_result.text = 'Прибор ПРД-%s %s' % [pribor, status_text] - #$control_result.add_theme_color_override('font_color', status_color) +func on_control_result(result_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') + for node_y5 in nodes_y5: + var meta_y5 = node_y5.get_meta('y5') + 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 + 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 + var node_ip_power_arr: Array = get_tree().get_nodes_in_group('power_supply') + for power_supply in node_ip_power_arr: + var meta_ip = power_supply.get_meta('ip') + if block_ip_config_k.has(meta_ip) and block_kasseta_y5_prd_config_k.ug: + power_supply.state = STATE_VAL.GOOD if block_ip_config_k[meta_ip][1] else STATE_VAL.ERROR + + var fs_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 + 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 + $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 + $dou7_A8.state = STATE_VAL.GOOD if result_dic.dou_7 else STATE_VAL.ERROR + + var result = true + for device in result_dic.values(): + if not device: + result = false + + 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) + else: + $control_result.text = 'Прибор ПРД-%s неисправен' % name_prd + $control_result.add_theme_color_override('font_color', Color.CRIMSON) diff --git a/scenes/pribor-prd-n/pribor-prd-n.gd b/scenes/pribor-prd-n/pribor-prd-n.gd index 13813b23..9e9ceb80 100644 --- a/scenes/pribor-prd-n/pribor-prd-n.gd +++ b/scenes/pribor-prd-n/pribor-prd-n.gd @@ -72,8 +72,8 @@ var control_results_n: Dictionary = { 'block_ip': false, # Проверка касет П1 и ИП МА2000 'temperature': true, # Проверка температур УМ 'dkm': false, - 'dou': false, - 'power_um': false, # Мощность от УКП + 'dou_2': false, + 'dou_3': false, 'fs': false, } var test = preload('res://scripts/pribor-prd.gd') @@ -83,51 +83,6 @@ var test = preload('res://scripts/pribor-prd.gd') func on_state_mashine() -> void: control_prd_n.state_control_machine() - 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') - for node_y5 in nodes_y5: - var meta_y5 = node_y5.get_meta('y5') - 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 - node_y5.state = STATE_VAL.GOOD if block_kasseta_y5_prd_config_n[meta_y5] else STATE_VAL.ERROR - - block_ip_config_n = control_prd_n.block_ip_config - var node_ip_power_arr: Array = get_tree().get_nodes_in_group('power_supply') - for power_supply in node_ip_power_arr: - var meta_ip = power_supply.get_meta('ip') - if block_ip_config_n.has(meta_ip) and block_kasseta_y5_prd_config_n.ug: - power_supply.state = STATE_VAL.GOOD if block_ip_config_n[meta_ip][1] else STATE_VAL.ERROR - - var fs_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] - f.state = new_state - fs_results[fs_meta] = new_state - - var dkm: Dictionary = control_prd_n.block_dkm_config - if control_prd_n.current_fs == 2 and fs_results.fs_2: - $kasseta_FS_ND/ref_A4.state = STATE_VAL.GOOD if dkm.dkm_2 else STATE_VAL.ERROR - elif control_prd_n.current_fs == 3 and fs_results.fs_3: - $kasseta_FS_ND/ref_A3.state = STATE_VAL.GOOD if dkm.dkm_3 else STATE_VAL.ERROR - - #if not control_prd_n.power_result['ray_25_2'] or not control_prd_n.power_result['ray_25_3']: - 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: - var pw = node_arr_power[i_pow] - pw.value1 = str(control_prd_n.power_result['ray_25_2'][i_pow]) - elif i_pow < 12: - var pw = node_arr_power[i_pow] - pw.value1 = str(control_prd_n.power_result['ray_25_3'][i_pow-6]) - func _ready() -> void: if Engine.is_editor_hint(): @@ -162,6 +117,7 @@ func initialize_connections() -> void: } control_prd_n = test.TestPRD.new(init_data) add_child(control_prd_n) + control_prd_n.connect('control_is_over', Callable(self, 'on_control_result')) func setup_timer() -> void: @@ -200,28 +156,58 @@ func on_line_changed(unit_pribor: Object) -> void: func on_mode_changed(in_tree: bool) -> void: if not in_tree: - queue_free() + mashine_timer.stop() + signaller.emit_signal('interfer_off_all') + prd_n_module.cmd_array.append([unit_prd_n.CmdCode.WRITE_ISA, [constants_n.ADDR_UG_LITERA_1, ug_work_1, constants_n.ADDR_UG_LITERA_2, ug_work_2]]) + else: + mashine_timer.start() -# -#func on_control_result() -> void: - #var result: bool = true -# - #for key in _control_results: - #if not _control_results[key]: - #if key == 'fs_1': - #$kasseta_FS_VD/ref_A3.state = STATE_VAL.ERROR - #if key == 'fs_2': - #$kasseta_FS_VD/ref_A4.state = STATE_VAL.ERROR - #result = false - #print_debug('%s false' % key) -# - #var parts = currecnt_unit.split('-') - #var last_part = parts[-1] # Прибор - #if result: - #$control_result.text = 'Прибор ПРД-%s исправен' % last_part - #$control_result.add_theme_color_override('font_color', Color.AQUAMARINE) - #else: - #$control_result.text = 'Прибор ПРД-%s неисправен' % last_part - #$control_result.add_theme_color_override('font_color', Color.CRIMSON) - #await get_tree().create_timer(Constants.TIMER_DELAY).timeout - #flag_timer_started = false + +func on_control_result(result_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') + for node_y5 in nodes_y5: + var meta_y5 = node_y5.get_meta('y5') + 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 + node_y5.state = STATE_VAL.GOOD if block_kasseta_y5_prd_config_n[meta_y5] else STATE_VAL.ERROR + + block_ip_config_n = control_prd_n.block_ip_config + var node_ip_power_arr: Array = get_tree().get_nodes_in_group('power_supply') + for power_supply in node_ip_power_arr: + var meta_ip = power_supply.get_meta('ip') + if block_ip_config_n.has(meta_ip) and block_kasseta_y5_prd_config_n.ug: + power_supply.state = STATE_VAL.GOOD if block_ip_config_n[meta_ip][1] else STATE_VAL.ERROR + + var fs_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] + f.state = new_state + fs_results[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 + $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 + $dou3_A6.state = STATE_VAL.GOOD if result_dic.dou_3 else STATE_VAL.ERROR + + var result = true + for device in result_dic.values(): + if not device: + result = false + + var name_prd = control_prd_n.self_name + if result: + $control_result.text = 'Прибор ПРД-%s исправен' % name_prd + $control_result.add_theme_color_override('font_color', Color.AQUAMARINE) + else: + $control_result.text = 'Прибор ПРД-%s неисправен' % name_prd + $control_result.add_theme_color_override('font_color', Color.CRIMSON) diff --git a/scenes/pribor-prd-n/pribor-prd-n.tscn b/scenes/pribor-prd-n/pribor-prd-n.tscn index 8905fe66..151bb06b 100644 --- a/scenes/pribor-prd-n/pribor-prd-n.tscn +++ b/scenes/pribor-prd-n/pribor-prd-n.tscn @@ -62,7 +62,7 @@ fname = "MAA2000" rname = "A22" metadata/ip = "maa2000_1" -[node name="dou3_A5" parent="." groups=["default_reset"] instance=ExtResource("2_is25t")] +[node name="dou2_A5" parent="." groups=["default_reset"] instance=ExtResource("2_is25t")] layout_mode = 2 offset_left = 485.0 offset_top = 812.0 @@ -71,7 +71,7 @@ offset_bottom = 877.0 fname = "ДОУ-2" rname = "A5" -[node name="dou2_A6" parent="." groups=["default_reset"] instance=ExtResource("2_is25t")] +[node name="dou3_A6" parent="." groups=["default_reset"] instance=ExtResource("2_is25t")] layout_mode = 2 offset_left = 8.0 offset_top = 812.0 diff --git a/scenes/pribor-prd-v/pribor-prd-v.gd b/scenes/pribor-prd-v/pribor-prd-v.gd index 101b6828..e8d3619b 100644 --- a/scenes/pribor-prd-v/pribor-prd-v.gd +++ b/scenes/pribor-prd-v/pribor-prd-v.gd @@ -71,8 +71,8 @@ var control_results_v: Dictionary = { 'block_ip': false, # Проверка касет П1 и ИП МА2000 'temperature': true, # Проверка температур УМ 'dkm': false, - 'dou': false, - 'power_um': false, # Мощность от УКП + 'dou_4': false, + 'dou_5': false, 'fs': false, } var test = preload('res://scripts/pribor-prd.gd') @@ -81,52 +81,6 @@ var test = preload('res://scripts/pribor-prd.gd') func on_state_mashine() -> void: control_prd_v.state_control_machine() - 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') - for node_y5 in nodes_y5: - var meta_y5 = node_y5.get_meta('y5') - 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 - node_y5.state = STATE_VAL.GOOD if block_kasseta_y5_prd_config_v[meta_y5] else STATE_VAL.ERROR - - block_ip_config_v = control_prd_v.block_ip_config - var node_ip_power_arr: Array = get_tree().get_nodes_in_group('power_supply') - for power_supply in node_ip_power_arr: - var meta_ip = power_supply.get_meta('ip') - if block_ip_config_v.has(meta_ip) and block_kasseta_y5_prd_config_v.ug: - power_supply.state = STATE_VAL.GOOD if block_ip_config_v[meta_ip][1] else STATE_VAL.ERROR - - var fs_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 - 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_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']: - #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: - var pw = node_arr_power[i_pow] - pw.value1 = str(control_prd_v.power_result['ray_25_4'][i_pow]) - elif i_pow < 12: - var pw = node_arr_power[i_pow] - pw.value1 = str(control_prd_v.power_result['ray_25_5'][i_pow-6]) - func _ready() -> void: if Engine.is_editor_hint(): @@ -161,6 +115,7 @@ func initialize_connections() -> void: } control_prd_v = test.TestPRD.new(init_data) add_child(control_prd_v) + control_prd_v.connect('control_is_over', Callable(self, 'on_control_result')) func setup_timer() -> void: @@ -199,28 +154,58 @@ func on_line_changed(unit_pribor: Object) -> void: func on_mode_changed(in_tree: bool) -> void: if not in_tree: - queue_free() + mashine_timer.stop() + prd_v_module.cmd_array.append([unit_prd_v.CmdCode.WRITE_ISA, [constants_v.ADDR_UG_LITERA_1, ug_work_1, constants_v.ADDR_UG_LITERA_2, ug_work_2]]) + signaller.emit_signal('interfer_off_all') + else: + mashine_timer.start() -# -#func on_control_result() -> void: - #var result: bool = true -# - #for key in _control_results: - #if not _control_results[key]: - #if key == 'fs_1': - #$kasseta_FS_VD/ref_A3.state = STATE_VAL.ERROR - #if key == 'fs_2': - #$kasseta_FS_VD/ref_A4.state = STATE_VAL.ERROR - #result = false - #print_debug('%s false' % key) -# - #var parts = currecnt_unit.split('-') - #var last_part = parts[-1] # Прибор - #if result: - #$control_result.text = 'Прибор ПРД-%s исправен' % last_part - #$control_result.add_theme_color_override('font_color', Color.AQUAMARINE) - #else: - #$control_result.text = 'Прибор ПРД-%s неисправен' % last_part - #$control_result.add_theme_color_override('font_color', Color.CRIMSON) - #await get_tree().create_timer(Constants.TIMER_DELAY).timeout - #flag_timer_started = false + +func on_control_result(result_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') + for node_y5 in nodes_y5: + var meta_y5 = node_y5.get_meta('y5') + 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 + node_y5.state = STATE_VAL.GOOD if block_kasseta_y5_prd_config_v[meta_y5] else STATE_VAL.ERROR + + block_ip_config_v = control_prd_v.block_ip_config + var node_ip_power_arr: Array = get_tree().get_nodes_in_group('power_supply') + for power_supply in node_ip_power_arr: + var meta_ip = power_supply.get_meta('ip') + if block_ip_config_v.has(meta_ip) and block_kasseta_y5_prd_config_v.ug: + power_supply.state = STATE_VAL.GOOD if block_ip_config_v[meta_ip][1] else STATE_VAL.ERROR + + var fs_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] + f.state = new_state + fs_results[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 + $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 + $dou5_A6.state = STATE_VAL.GOOD if result_dic.dou_5 else STATE_VAL.ERROR + + var result = true + for device in result_dic.values(): + if not device: + result = false + + var name_prd = control_prd_v.self_name + if result: + $control_result.text = 'Прибор ПРД-%s исправен' % name_prd + $control_result.add_theme_color_override('font_color', Color.AQUAMARINE) + else: + $control_result.text = 'Прибор ПРД-%s неисправен' % name_prd + $control_result.add_theme_color_override('font_color', Color.CRIMSON) diff --git a/scripts/pribor-prd.gd b/scripts/pribor-prd.gd index 26c1b9ca..0cd595ce 100644 --- a/scripts/pribor-prd.gd +++ b/scripts/pribor-prd.gd @@ -64,13 +64,13 @@ class TestPRD extends Node: var state: int = STATE_MASHINE.INIT var current_fs: int var flag_timer_started: bool = false - #var ug_online: bool var unit_prd: Object var module_prd: Object var power_amplify: Array var control_label: Label var control_timer: Timer = Timer.new() var ems_6666_timer: Timer = Timer.new() + signal control_is_over(control_results) ## Инициализация аргуметнов @@ -85,9 +85,9 @@ class TestPRD extends Node: 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_fs = init_data['current_fs'] - block_kasseta_y5_config = init_data['block_kasseta_y5_prd_config'] func _ready() -> void: @@ -171,6 +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) state = STATE_MASHINE.IN_EMS_STOP elif unit_prd.isa_ports[addr] & 0x07 == 6: state = STATE_MASHINE.UG_SET_RAY_0 @@ -209,9 +211,9 @@ class TestPRD extends Node: 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, power_result, self_name, constants) + control_results = on_control_result(block_ip_config, block_dkm_config, block_fs_config, control_results) + emit_signal('control_is_over', control_results) state = STATE_MASHINE.AWAIT - #print_debug(power_result) func _handle_fs_turn_on_state() -> void: @@ -312,7 +314,7 @@ class TestPRD extends Node: control_timer.one_shot = true 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 @@ -341,18 +343,6 @@ class TestPRD extends Node: _: return -1 - func _get_dkm_key_for_current_fs() -> String: - match current_fs: - 1: return 'dkm_1' - 2: return 'dkm_2' - 3: return 'dkm_3' - 4: return 'dkm_4' - 5: return 'dkm_5' - 6: return 'dkm_6' - 7: return 'dkm_7' - _: return '' - - static func _get_ray_key(machine_state: int) -> String: match machine_state: STATE_MASHINE.UG_SET_RAY_0: return RAY_m5 @@ -368,11 +358,10 @@ 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, power_config: Dictionary, pribor: String, cnstnt: Dictionary) -> Dictionary: + static func on_control_result(ip_config: Dictionary, dkm_config: Dictionary, fs_config: Dictionary, ctrl_results: 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]: @@ -388,31 +377,6 @@ 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 @@ -655,3 +619,33 @@ class TestPRD extends Node: max_power_values[i] = power_data[i] return max_power_values.duplicate() + + + static func check_dou_result(control_dic: Dictionary, power_dic: Dictionary, pribor: String, cur_prd: int, cnst: Dictionary) -> Dictionary: + var all_dou_ok = true + var dou: String = 'dou_2' if cur_prd == 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' + elif pribor == '1в' or pribor == '2в' or pribor == '3в' or pribor == '4в': + dou = 'dou_4' if cur_prd == 5 else 'dou_5' + + var ray_dic: Dictionary = power_dic[cur_prd] + if ray_dic[RAY_m5].size() == 0 or \ + ray_dic[RAY_5 ].size() == 0 or \ + ray_dic[RAY_15].size() == 0 or \ + ray_dic[RAY_25].size() == 0 or \ + ray_dic[RAY_35].size() == 0 or \ + ray_dic[RAY_45].size() == 0: + control_dic[dou] = false + return control_dic + + 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) + all_dou_ok = false + + print([cur_prd, ray_dic]) + control_dic[dou] = all_dou_ok + + return control_dic