отладка отказоустойчивости контроля

This commit is contained in:
2025-03-27 03:18:00 +03:00
parent 9a8dc1c8dc
commit a513f71925
4 changed files with 104 additions and 28 deletions

View File

@@ -19,6 +19,7 @@ var flag_fs_2_ready: bool = false
var flag_fs_3_ready: bool = false
var flag_dkm: bool = false
var flag_ug: bool = false
var flag_yau: bool = false
var flag_modul_on_1: bool = false
var flag_modul_on_2: bool = false
var flag_modul_litera_1: bool = false
@@ -167,7 +168,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_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'
@@ -202,6 +217,20 @@ 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_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_K:
# Кассета У5
@@ -239,7 +268,23 @@ 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
@@ -330,10 +375,16 @@ func _on_data_fs(fs_data:PackedByteArray, fs_name: String):
if fs_data.decode_u32(0xC) == 0:
if fs_name == 'ФС-1':
$Kasseta_FS/ref_A1.state = Constants.STATE_VAL.GOOD
flag_fs_1_ready = true
logger.info('✅ Состояние генератора ФС-1: Включен')
elif fs_name == 'ФС-2':
$Kasseta_FS/ref_A2.state = Constants.STATE_VAL.GOOD
logger.info('✅ Состояние генератора ФС-1: Включен')
flag_fs_2_ready = true
elif fs_name == 'ФС-3':
$Kasseta_FS/FS_PRD_K.state = Constants.STATE_VAL.GOOD
logger.info('✅ Состояние генератора ФС-1: Включен')
flag_fs_3_ready = true
else:
if fs_name == 'ФС-1':
flag_fs_1_ready = false
@@ -388,10 +439,13 @@ func _on_yau_feedback_receive(_status_yau):
if Constants.CURRENT_MODE == Constants.MODE.PRD_K:
if Network.unit.isa_ports[Constants.BASE_PORTS.UG+0xA] == (prep_set_ug & 0x38)>>3:
flag_ug = true
$soc_y5/ug.state = Constants.STATE_VAL.GOOD
else:
flag_ug = true
$soc_y5/ug.state = Constants.STATE_VAL.GOOD
else:
flag_ug = false
$soc_y5/ug.state = Constants.STATE_VAL.ERROR
## Флаг для проверки модуяции на высоком
if Network.unit.isa_ports.has(Constants.BASE_PORTS.EMS_G+8) and Network.unit.isa_ports.has(Constants.BASE_PORTS.EMS_G+2):
if Network.unit.isa_ports[Constants.BASE_PORTS.EMS_G+2] == Constants.META.MODUL_UM_2:
@@ -434,6 +488,7 @@ func _on_start_super_control():
node_cell_ind[i].state = Constants.STATE_VAL.NONE
flag_dkm = false
flag_ug = false
flag_yau = false
for node in um_cell_ind:
node.value0 = 0
node.value1 = 0
@@ -471,16 +526,13 @@ func _on_start_super_control():
if (Network.unit.online):
$soc_y5/yau_07b.state = Constants.STATE_VAL.GOOD
logger.info("✅ ЯУ-07Б: Есть связь")
flag_yau = true
_status_cell(Network.unit.status)
else:
for i in range(1, count_cell):
node_cell_ind[i].state = Constants.STATE_VAL.NONE
$soc_y5/yau_07b.state = Constants.STATE_VAL.ERROR
logger.error("❌ ЯУ-07Б: Нет связи")
_on_contol_err()
return
if flag_continue_control:
if Network.unit_fs.online:
@@ -509,10 +561,13 @@ func _on_start_super_control():
logger.info('🛈 Настройка модулей ФС %s Гц, [%s / %s / %s] АТТ' % [str(fs_freq), str(fs_att_1), str(fs_att_2), str(fs_att_3)])
fs_1_setup(fs_freq[0], fs_att_1) # Гц
fs_2_setup(fs_freq[1], fs_att_2) # Гц
else:
logger.info('❌ Настройка модулей ФС')
_on_contol_err()
timer.set_one_shot(true)
timer.set_wait_time(10)
timer.start()
func _status_cell(status):
@@ -544,7 +599,6 @@ 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'))
_on_contol_err()
if node_cell_ind[3].state == Constants.STATE_VAL.GOOD:
var mask: int = 0x7
@@ -577,27 +631,17 @@ func set_bits(v, a, m):
return (~m) & v | a & m
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:
_on_start_super_control()
func _on_fs_status(META:int):
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:
if logger and flag_continue_control:
if META == Constants.META.CI_2_OT_FS or META == Constants.META.CI_4_OT_FS or META == Constants.META.CI_6_OT_FS:
flag_fs_1_ready = true
logger.info('✅ Состояние генератора ФС-1: Включен')
logger.info('✅ СИ от ФС-1: Включен')
elif META == Constants.META.CI_3_OT_FS or META == Constants.META.CI_5_OT_FS or META == Constants.META.CI_7_OT_FS:
flag_fs_2_ready = true
logger.info('✅ Состояние генератора ФС-2: Включен')
logger.info('✅ СИ от ФС-2: Включен')
elif META == Constants.META.CI_1_OT_FS:
flag_fs_3_ready = true
logger.info('✅ Состояние генератора ФС-3: Включен')
logger.info('✅ СИ от ФС-3: Включен')
if flag_fs_1_ready and flag_fs_2_ready:
@@ -690,6 +734,7 @@ func _on_fs_status(META:int):
if (dkm >> 5) & 0x1 and (dkm >> 6) & 0x1 and (dkm >> 0) & 0x1: # Следующий шаг ->
flag_dkm = true
timer.stop()
else:
Network.set_fs_gen_status(true) ## отключен = true
Network.get_gen_state_1()
@@ -713,7 +758,6 @@ func _on_modul_um():
Network.write_port_isa(Constants.BASE_PORTS.EMS_G+8, 0x2000)
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_ug = false
flag_dkm = false
flag_start = true
@@ -757,9 +801,35 @@ func _on_contol_err():
logger.warning('❌❌❌')
flag_continue_control = false
_status_prd()
timer.wait_time = 15.0
timer.one_shot = true
timer.start()
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:
if not flag_fs_1_ready:
$Kasseta_FS/ref_A1.state = Constants.STATE_VAL.ERROR
logger.warning('❌ Модуль ФС-1: нет связи')
if not flag_fs_2_ready:
$Kasseta_FS/ref_A2.state = Constants.STATE_VAL.ERROR
logger.warning('❌ Модуль ФС-2: нет связи')
if not flag_fs_3_ready:
$Kasseta_FS/FS_PRD_K.state = Constants.STATE_VAL.ERROR
logger.warning('❌ Модуль ФС-3: нет связи')
if not flag_fs_1_ready or not flag_fs_2_ready:
_on_contol_err()
elif (Constants.CURRENT_MODE == Constants.MODE.PRD_K):
if not flag_fs_3_ready:
_on_contol_err()
else:
if flag_yau:
$soc_y5/ems_g.state = Constants.STATE_VAL.ERROR
logger.warning('❌ Разьем ЭМС-Г: нет связи')
if not flag_ug:
$soc_y5/ug.state = Constants.STATE_VAL.ERROR
logger.warning('❌ Разьем УГ: нет связи')
_on_contol_err()
_on_timer_03()
func _status_prd():
@@ -821,3 +891,4 @@ func _status_prd():
$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.CRIMSON
$log_array/await.visible = false
timer.stop()