Доработка. Обобщенный признак исправности. Добавление таймера для записи в базовый адрес ячейки ЭМС-Г в контроле прд. Наблюдение сигнал излучения от модуля ФС

Доработка. [PATCH] отладка контроля, изменение индикации режима Тренаж
This commit is contained in:
2025-10-15 14:06:16 +03:00
committed by sasha80
parent 2a97865a6d
commit 25d39cb560
11 changed files with 174 additions and 91 deletions

View File

@@ -158,7 +158,9 @@ class PRD:
var state = PrdState.WORK
var cmd_array: Array ## Очередь команд
var ug_online: bool = false ## Состояние ячейки УГ
var serviceability: bool = false
var set_ug_state: bool = true ## Необходимо ли записать в УГ настройки
signal update_serviceability()
func _init(u_name, u_yau07):
prd_name = u_name
@@ -197,6 +199,7 @@ class PRD:
func on_line_changed(unit_ems):
emit_signal('update_serviceability')
if not unit_ems.online:
yemsg_board.ems_load = yemsg_board.LoadState.NOT_DEFINED
yemsg_board.set_wait()
@@ -223,6 +226,14 @@ class PRD:
ug_online = (unit_yau07.status[0] >> 1) & 1
if not ug_online:
set_ug_state = true
var ukp_1_online = (unit_yau07.status[0] >> 2) & 1
var ukp_2_online = (unit_yau07.status[0] >> 3) & 1
var ems_g_online = (unit_yau07.status[0] & 1) & 1
var check_serviceability = ug_online and ukp_1_online and ukp_2_online and ems_g_online
if serviceability != check_serviceability:
serviceability = check_serviceability
emit_signal('update_serviceability')
func execute_cmd():
if not len(cmd_array): return

View File

@@ -74,7 +74,7 @@ class TestPRD extends Node:
var self_name: String
var state: int = STATE_MASHINE.INIT
var current_litera: int
var flag_timer_started: bool = false
var flag_write_isa: bool = false
var flag_fs_status_ok: bool = false
var flag_si_fs_input: bool = false
var flag_si_fs_output: bool = false
@@ -169,24 +169,25 @@ class TestPRD extends Node:
state = STATE_MASHINE.FS_WORK
STATE_MASHINE.FS_WORK:
if ecms.size() and flag_fs_status_ok:
ems_6666_timer.start()
_handle_fs_work_state()
STATE_MASHINE.CHEK_KASSETA_Y5:
if block_kasseta_y5_config['yau07']:
state = STATE_MASHINE.WRITE_ISA
STATE_MASHINE.WRITE_ISA:
_handle_ug_set_state(0x6)
await get_tree().create_timer(1.5).timeout
state = STATE_MASHINE.READ_ISA
if not flag_write_isa:
_handle_ug_set_state(0x6)
state = STATE_MASHINE.READ_ISA
STATE_MASHINE.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])
flag_write_isa = false
state = STATE_MASHINE.UG_SET_RAY
STATE_MASHINE.UG_SET_RAY:
var addr: int = constants.ADDR_UG_LITERA_1
if current_litera == 3 or current_litera == 5 or current_litera == 7:
addr = constants.ADDR_UG_LITERA_2
if unit_prd.isa_ports.has(addr) and (unit_prd.cmd_state == unit_prd.CmdState.DONE):
control_timer.stop()
if unit_prd.isa_ports[addr] & 0x07 == 0:
state = STATE_MASHINE.UG_SET_RAY_1
elif unit_prd.isa_ports[addr] & 0x07 == 1:
@@ -205,28 +206,36 @@ class TestPRD extends Node:
state = STATE_MASHINE.UG_SET_RAY_0
STATE_MASHINE.UG_SET_RAY_0:
_handle_ug_set_state(0x0)
await get_tree().create_timer(0.5).timeout
state = STATE_MASHINE.READ_ISA
if flag_si_fs_input and not flag_write_isa:
control_timer.stop()
_handle_ug_set_state(0x0)
await get_tree().create_timer(0.5).timeout
state = STATE_MASHINE.READ_ISA
STATE_MASHINE.UG_SET_RAY_1:
_handle_ug_set_state(0x1)
state = STATE_MASHINE.READ_ISA
if not flag_write_isa:
_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
if not flag_write_isa:
_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
if not flag_write_isa:
_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
if not flag_write_isa:
_handle_ug_set_state(0x4)
state = STATE_MASHINE.READ_ISA
STATE_MASHINE.UG_SET_RAY_5:
_handle_ug_set_state(0x5)
state = STATE_MASHINE.READ_ISA
if not flag_write_isa:
_handle_ug_set_state(0x5)
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:
ems_6666_timer.stop()
_handle_fs_turn_off_state()
state = STATE_MASHINE.STOP_CONTROL
STATE_MASHINE.STOP_CONTROL:
@@ -289,7 +298,7 @@ class TestPRD extends Node:
dic_att.RAY_DOU_NUM,
log_text
]
on_ug_setting(module_prd, unit_prd, dic_att)
flag_write_isa = on_ug_setting(module_prd, unit_prd, dic_att)
func _on_ems_6666_timer() -> void:
@@ -304,7 +313,6 @@ class TestPRD extends Node:
func _handle_stop_control_state() -> void:
control_label.text = 'Выполняется завершение проверки ФС-%s' % current_litera
flag_timer_started = false
_advance_to_next_fs()
state = STATE_MASHINE.INIT
@@ -348,7 +356,7 @@ class TestPRD extends Node:
add_child(ems_6666_timer)
ems_6666_timer.timeout.connect(_on_ems_6666_timer)
ems_6666_timer.wait_time = 1.5
ems_6666_timer.wait_time = 1.0
func _process_dkm_status(status: PackedByteArray) -> void:
@@ -422,16 +430,15 @@ class TestPRD extends Node:
## Установка угла и аттенюации для УМ
static func on_ug_setting(prd_module: Object, prd_unit: Object, settings_ug: Dictionary) -> void:
static func on_ug_setting(prd_module: Object, prd_unit: Object, settings_ug: Dictionary) -> 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.BASE_EMS_G, 6666,
settings_ug.ADDR_UG_LITERA_1, result_1,
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,
]
])
return true
static func _handle_read_isa(prd_module: Object, prd_unit: Object, read_isa_ports: Array) -> void:

View File

@@ -195,4 +195,9 @@ signal update_scale_map(new_scale)
signal update_coordinates_map(new_coordinates)
## Вызывается при изменении исправности прибора УФ.[br]
## [param uf_serviceaability] - обновленное значение состояния исправности ([b]true[/b]
signal update_uf_serviceability(uf_serviceaability: bool)
signal tool_tip(new_ctrl_pos)