diff --git a/scripts/control_panel.gd b/scripts/control_panel.gd index 6ee3243..c98a736 100644 --- a/scripts/control_panel.gd +++ b/scripts/control_panel.gd @@ -6,7 +6,7 @@ signal signal_on_modul_um() var timer: Timer = Timer.new() var timer_03: Timer = Timer.new() var node_cell_ind: Array -var um_cell_ind: Array +var um_cell_ind: Array var count_cell: int var past_pribor: int var logger: Node @@ -31,7 +31,7 @@ var prep_set_ug: int = 0 class Logger extends Node: var log_level: String = "INFO" var log_array: Node - + func _init(log_node: RichTextLabel = null): log_array = log_node log_array.text = "" @@ -39,7 +39,7 @@ class Logger extends Node: func get_current_datetime_string() -> String: var time = Time.get_datetime_dict_from_system() return ' [%02d-%02d-%04d %02d:%02d] ' % [time['day'], time['month'], time['year'], time['hour'], time['minute']] - + func _add_message(level: String, message: String) -> void: if (level == "INFO" and log_level in ["INFO", "DEBUG"]) or \ (level == "WARNING" and log_level in ["WARNING", "INFO", "DEBUG"]) or \ @@ -61,7 +61,7 @@ func _ready() -> void: Network.connect('data_from_fs_1', _on_data_fs.bind('ФС-1')) Network.connect('data_from_fs_2', _on_data_fs.bind('ФС-2')) Network.connect('data_from_fs_3', _on_data_fs.bind('ФС-3')) - + self.add_child(timer) self.add_child(timer_03) timer.connect('timeout', Callable(self, '_on_timer')) @@ -71,7 +71,7 @@ func _ready() -> void: Network.connect('yau_receive', Callable(self, '_on_yau_received')) Network.connect('yau_feedback_receive', Callable(self, '_on_yau_feedback_receive')) self.connect('signal_on_modul_um', Callable(self, '_on_modul_um')) - + node_cell_ind = [ $soc_y5/yau_07b, $soc_y5/ems_g, @@ -96,7 +96,7 @@ func _ready() -> void: $Kasseta_FS/ref_A4, $Kasseta_FS/Block_FS_PRD_K, $Kasseta_FS/FS_PRD_K, - + $soc_DKM/DKM_1, $soc_DKM/DKM_2, $soc_DKM/DKM_3, @@ -109,14 +109,14 @@ func _ready() -> void: $socket_ym_lb/blok_ym_4, $socket_ym_lb/blok_ym_5, $socket_ym_lb/blok_ym_6, - + $socket_ym_pb/blok_ym_1, $socket_ym_pb/blok_ym_2, $socket_ym_pb/blok_ym_3, $socket_ym_pb/blok_ym_4, $socket_ym_pb/blok_ym_5, $socket_ym_pb/blok_ym_6, - + $socket_ym_lb/blok_ym_litera_1, ] _draw_control_panel_prd(Constants.CURRENT_MODE) @@ -166,21 +166,21 @@ func _draw_control_panel_prd(pribor): $soc_DKM/DKM_3.fname = 'ДКМ-3' # УМ УМ $socket_ym_lb/blok_ym_litera_1.visible = false - - $socket_ym_lb/blok_ym_1.rname = 'A7' - $socket_ym_lb/blok_ym_2.rname = 'A8' - $socket_ym_lb/blok_ym_3.rname = 'A9' + + $socket_ym_lb/blok_ym_1.rname = 'A7' + $socket_ym_lb/blok_ym_2.rname = 'A8' + $socket_ym_lb/blok_ym_3.rname = 'A9' $socket_ym_lb/blok_ym_4.rname = 'A10' $socket_ym_lb/blok_ym_5.rname = 'A11' $socket_ym_lb/blok_ym_6.rname = 'A12' - + $socket_ym_pb/blok_ym_1.rname = 'A13' $socket_ym_pb/blok_ym_2.rname = 'A14' $socket_ym_pb/blok_ym_3.rname = 'A15' $socket_ym_pb/blok_ym_4.rname = 'A16' $socket_ym_pb/blok_ym_5.rname = 'A17' $socket_ym_pb/blok_ym_6.rname = 'A18' - + elif pribor == Constants.MODE.PRD_B: # Кассета У5 $soc_y5/IP5_25.rname = 'А24' @@ -215,14 +215,14 @@ func _draw_control_panel_prd(pribor): $soc_DKM/DKM_3.fname = 'ДКМ-5' # УМ УМ $socket_ym_lb/blok_ym_litera_1.visible = false - - $socket_ym_lb/blok_ym_1.rname = 'A7' - $socket_ym_lb/blok_ym_2.rname = 'A8' - $socket_ym_lb/blok_ym_3.rname = 'A9' + + $socket_ym_lb/blok_ym_1.rname = 'A7' + $socket_ym_lb/blok_ym_2.rname = 'A8' + $socket_ym_lb/blok_ym_3.rname = 'A9' $socket_ym_lb/blok_ym_4.rname = 'A10' $socket_ym_lb/blok_ym_5.rname = 'A11' $socket_ym_lb/blok_ym_6.rname = 'A12' - + $socket_ym_pb/blok_ym_1.rname = 'A13' $socket_ym_pb/blok_ym_2.rname = 'A14' $socket_ym_pb/blok_ym_3.rname = 'A15' @@ -266,21 +266,21 @@ func _draw_control_panel_prd(pribor): $soc_DKM/DKM_1.visible = true $soc_DKM/DKM_2.fname = 'ДКМ-6' $soc_DKM/DKM_3.fname = 'ДКМ-7' - + $socket_ym_lb/blok_ym_1.rname = 'A16' $socket_ym_lb/blok_ym_2.rname = 'A17' $socket_ym_lb/blok_ym_3.rname = 'A18' $socket_ym_lb/blok_ym_4.rname = 'A19' $socket_ym_lb/blok_ym_5.rname = 'A20' $socket_ym_lb/blok_ym_6.rname = 'A21' - + $socket_ym_pb/blok_ym_1.rname = 'A10' $socket_ym_pb/blok_ym_2.rname = 'A11' $socket_ym_pb/blok_ym_3.rname = 'A12' $socket_ym_pb/blok_ym_4.rname = 'A13' $socket_ym_pb/blok_ym_5.rname = 'A14' $socket_ym_pb/blok_ym_6.rname = 'A15' - + # УМ УМ $socket_ym_lb/blok_ym_litera_1.rname = 'A9' $socket_ym_lb/blok_ym_litera_1.visible = true @@ -350,7 +350,7 @@ func yau_07b_setup(angle_and_att: int): Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, Constants.META.MODUL_UM_3) Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, 0x4000) ## Отключить модуляцию (литера 3) if Constants.CURRENT_MODE == Constants.MODE.PRD_K: - Network.write_port_isa(Constants.BASE_PORTS.UG+0xA, (angle_and_att & 0x38)>>3) + Network.write_port_isa(Constants.BASE_PORTS.UG+0xA, 0) Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, Constants.META.MODUL_UM_1) Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, 0x2000) ## Включить (Контроль) модуляцию (литера 1) Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, Constants.META.MODUL_UM_28) @@ -406,7 +406,7 @@ func _on_yau_received(status_yau): i +=1 var power_ukp_1 = status_yau.decode_u16(Constants.DataIndices.POWER_UKP_1 + 2 * i) arr_power_ukp_1.append(power_ukp_1) - + if count_packet == 0: array_pow_1 = arr_power_ukp_1 else: @@ -419,7 +419,7 @@ func _on_yau_received(status_yau): for i in range(numbre_scrape): ## Мощность от УКП_2 var power_ukp_2 = status_yau.decode_u16(Constants.DataIndices.POWER_UKP_2 + 2 * i) arr_power_ukp_2.append(power_ukp_2) - + if count_packet == 0: array_pow_2 = arr_power_ukp_2 else: @@ -427,15 +427,15 @@ func _on_yau_received(status_yau): if arr_power_ukp_2[i] > array_pow_2[i]: array_pow_2[i] = arr_power_ukp_2[i] count_packet += 1 - + func _on_yau_feedback_receive(_status_yau): if logger and flag_continue_control: ## Флаг для проверки настройки угла и аттенюации на двух литерах if Network.unit.isa_ports.has(Constants.BASE_PORTS.UG+6) and Network.unit.isa_ports.has(Constants.BASE_PORTS.UG+8): if Network.unit.isa_ports[Constants.BASE_PORTS.UG+6] == prep_set_ug and Network.unit.isa_ports[Constants.BASE_PORTS.UG+8] == prep_set_ug: - if Constants.CURRENT_MODE == Constants.MODE.PRD_K: - if Network.unit.isa_ports[Constants.BASE_PORTS.UG+0xA] == (prep_set_ug & 0x38)>>3: + if Constants.CURRENT_MODE == Constants.MODE.PRD_K: + if Network.unit.isa_ports[Constants.BASE_PORTS.UG+0xA] == 0: flag_ug = true $soc_y5/ug.state = Constants.STATE_VAL.GOOD else: @@ -481,7 +481,7 @@ func _on_start_super_control(): if (past_pribor != Constants.CURRENT_MODE): past_pribor = Constants.CURRENT_MODE _draw_control_panel_prd(Constants.CURRENT_MODE) - + for i in count_cell: node_cell_ind[i].state = Constants.STATE_VAL.NONE flag_dkm = false @@ -491,7 +491,7 @@ func _on_start_super_control(): node.value0 = 0 node.value1 = 0 node.state = Constants.STATE_VAL.NONE - + ## Temperature for for i_temperature in range(6): ## Температура от УКП if len(Network.unit.status) > Constants.DataIndices.TEMPERATURE_UKP_2 + 2 * i_temperature: @@ -531,7 +531,7 @@ func _on_start_super_control(): node_cell_ind[i].state = Constants.STATE_VAL.NONE $soc_y5/yau_07b.state = Constants.STATE_VAL.ERROR logger.error("❌ ЯУ-07Б: Нет связи") - + if flag_continue_control: if Network.unit_fs.online: var fs_freq: Array @@ -562,7 +562,7 @@ func _on_start_super_control(): else: logger.info('❌ Настройка модулей ФС') _on_contol_err() - + timer.set_one_shot(true) timer.set_wait_time(10) timer.start() @@ -571,7 +571,7 @@ func _on_start_super_control(): func _status_cell(status): var status_board: int = status.decode_u8(Constants.DataIndices.STATUS_BOARD) var dry_contact: int = status.decode_u8(Constants.DataIndices.DRY_CONTACT) - + # status_board for i in range(1, 5): if ((status_board >> (i-1)) & 0x1) == 1: @@ -597,25 +597,27 @@ func _status_cell(status): else: node_cell_ind[i_node].state = Constants.STATE_VAL.ERROR logger.error("❌ %s : Нет связи" % node_cell_ind[i_node].get('fname')) - + if node_cell_ind[3].state == Constants.STATE_VAL.GOOD: var mask: int = 0x7 prep_set_ug = 0 var index_ray: int = Constants.RAY_DICT.find(' 25°') + if Constants.CURRENT_MODE == Constants.MODE.PRD_B or Constants.CURRENT_MODE == Constants.MODE.PRD_K: + index_ray = Constants.RAY_DICT.find(' 15°') var index_att: int = Constants.ATT_DICT.find(' 10.5 dB') ## Регулировка положением луча 1 prep_set_ug = set_bits(prep_set_ug, index_ray, mask) ## Регулировка положением луча 2 mask = 0x38 prep_set_ug = set_bits(prep_set_ug, index_att << 3, mask) - + logger.info('🛈 %s: Настройка угла %s' % [node_cell_ind[2].get('fname'), Constants.RAY_DICT[index_ray]]) logger.info('🛈 %s: Настройка аттенюации %s' % [node_cell_ind[2].get('fname'), Constants.ATT_DICT[index_att]]) yau_07b_setup(prep_set_ug) else: logger.error('❌ %s: Нет на связи, не буду продолжать' % node_cell_ind[2].get('fname')) _on_contol_err() - + else: for i_node_unknow in range(5, 13): node_cell_ind[i_node_unknow].state = Constants.STATE_VAL.NONE @@ -640,8 +642,8 @@ func _on_fs_status(META:int): logger.info('✅ СИ от ФС-2: Включен') elif META == Constants.META.CI_1_OT_FS: logger.info('✅ СИ от ФС-3: Включен') - - + + if flag_fs_1_ready and flag_fs_2_ready: if Constants.CURRENT_MODE == Constants.MODE.PRD_K: if not flag_fs_3_ready: @@ -649,7 +651,7 @@ func _on_fs_status(META:int): #dkm var dkm: int = Network.unit.status.decode_u8(Constants.DataIndices.DKM) - + if Constants.CURRENT_MODE == Constants.MODE.PRD_H: if (dkm >> 1) & 0x1 == 1: logger.info('✅ %s: %s' % [$Kasseta_FS/ref_A3.fname, 'Включено']) @@ -667,7 +669,7 @@ func _on_fs_status(META:int): logger.info('❌ %s: %s' % [$Kasseta_FS/ref_A4.fname, 'Нет связи']) $soc_DKM/DKM_3.state = Constants.STATE_VAL.ERROR $Kasseta_FS/ref_A4.state = $soc_DKM/DKM_3.state - + if (dkm >> 1) & 0x1 == 1 and (dkm >> 2) & 0x1 == 1: # Следующий шаг -> flag_dkm = true else: @@ -676,7 +678,7 @@ func _on_fs_status(META:int): Network.set_fs_gen_status_2(true) ## отключен = true Network.get_gen_state_2() _on_contol_err() - + elif Constants.CURRENT_MODE == Constants.MODE.PRD_B: if (dkm >> 3) & 0x1 == 1: logger.info('✅ %s: %s' % [$Kasseta_FS/ref_A3.fname, 'Включено']) @@ -694,7 +696,7 @@ func _on_fs_status(META:int): logger.info('❌ %s: %s' % [$Kasseta_FS/ref_A4.fname, 'Нет связи']) $soc_DKM/DKM_3.state = Constants.STATE_VAL.ERROR $Kasseta_FS/ref_A4.state = $soc_DKM/DKM_3.state - + if (dkm >> 3) & 0x1 == 1 and (dkm >> 4) & 0x1 == 1: # Следующий шаг -> flag_dkm = true else: @@ -703,7 +705,7 @@ func _on_fs_status(META:int): Network.set_fs_gen_status_2(true) ## отключен = true Network.get_gen_state_2() _on_contol_err() - + elif Constants.CURRENT_MODE == Constants.MODE.PRD_K: if (dkm >> 0) & 0x1 == 1: logger.info('✅ %s: %s ' % [$Kasseta_FS/Block_FS_PRD_K.fname, 'Включено']) @@ -729,7 +731,7 @@ func _on_fs_status(META:int): logger.info('❌ %s: %s' % [$Kasseta_FS/ref_A4.fname, 'Нет связи']) $soc_DKM/DKM_3.state = Constants.STATE_VAL.ERROR $Kasseta_FS/ref_A4.state = $soc_DKM/DKM_3.state - + if (dkm >> 5) & 0x1 and (dkm >> 6) & 0x1 and (dkm >> 0) & 0x1: # Следующий шаг -> flag_dkm = true timer.stop() @@ -753,12 +755,12 @@ func _on_modul_um(): Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, 0x8000) if Constants.CURRENT_MODE == Constants.MODE.PRD_K: Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, Constants.META.MODUL_UM_1) - Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, 0x2000) + Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, 0x8000) Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, Constants.META.MODUL_UM_28) Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, 0x2000) flag_dkm = false flag_start = true - + func _on_start_timer_03(): count_packet = 0 @@ -786,7 +788,7 @@ func _on_timer_03(): Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, 0x4000) Network.set_fs_gen_status_3(true) ## отключен = true Network.get_gen_state_3() - + await get_tree().create_timer(1.0).timeout logger.info('🛈 Количество принятых пакетов от ЯУ-07Б: %s пкт.' % count_packet) logger.info('🛈 Максимальные значения мощностей от УКП-1: %s ' % str(array_pow_1)) @@ -801,7 +803,7 @@ func _on_contol_err(): _status_prd() -func _on_timer(): +func _on_timer(): var control_button: Node = self.get_parent().get_parent().get_child(0).get_child(1).get_child(1) var texture_control_button: Node = self.get_parent().get_parent().get_child(0).get_child(1).get_child(8) if control_button.button_pressed or texture_control_button.button_pressed: @@ -843,13 +845,13 @@ func _status_prd(): status += 1 if (node_cell_ind[12].state == Constants.STATE_VAL.GOOD) else 0 status += 1 if (node_cell_ind[17].state == Constants.STATE_VAL.GOOD) else 0 status += 1 if (node_cell_ind[18].state == Constants.STATE_VAL.GOOD) else 0 - + var pribor_ispraven: bool = false var min_dopusk: int = 40 var status_need = count_cell-7 if Constants.CURRENT_MODE != Constants.MODE.PRD_K else count_cell+1 if (status == status_need): pribor_ispraven = true - + var count_um: int = 0 for i_pow in array_pow_1: if count_um == 6: @@ -869,7 +871,7 @@ func _status_prd(): um_cell_ind[count_um].state = Constants.STATE_VAL.GOOD count_um += 1 - + for i_pow in array_pow_2: um_cell_ind[count_um].value1 = i_pow if i_pow < min_dopusk: @@ -878,10 +880,10 @@ func _status_prd(): else: um_cell_ind[count_um].state = Constants.STATE_VAL.GOOD count_um += 1 - + array_pow_1 = [] array_pow_2 = [] - + if pribor_ispraven: $lbl_control.text = 'Прибор %s исправен' % Constants.ADDRESSES[self.get_parent().get_child(0).get_child(1).get_node2(1, 0).get_selected_id()][0] $lbl_control.modulate = Color.AQUAMARINE