Доработка проверки яу 07б

и корректировка температур ум в контроле
This commit is contained in:
TotMaxim
2025-11-18 19:59:45 +03:00
parent 3fb2601aca
commit a8b085a514
8 changed files with 81 additions and 37 deletions

View File

@@ -84,6 +84,8 @@ var flag_si_fs_input: bool = false
var flag_si_fs_output: bool = false
var flag_in_control: bool = false
var flag_control_is_over: bool = false
var flag_no_trust_yau07: bool = false
var flag_only_fs: bool = false
var unit_prd: Object
var control_timer: Timer = Timer.new()
var ems_6666_timer: Timer = Timer.new()
@@ -222,8 +224,9 @@ func _process(_delta: float) -> void:
func on_data_received(unit_pribor: Object) -> void:
if not flag_in_control: return
var status: PackedByteArray = unit_pribor.status
block_kasseta_y5_config = check_block_kasseta_y5(status, block_kasseta_y5_config, flag_no_trust_yau07)
if flag_no_trust_yau07: return
socket_status_ems_g(status)
block_kasseta_y5_config = check_block_kasseta_y5(status, block_kasseta_y5_config)
block_ip_config = check_block_ip(status, block_ip_config)
temperature_um = check_temperature_um(status)
if machine_timer.is_stopped():
@@ -284,6 +287,7 @@ func on_fs_update_state(packet_type_7: Dictionary, fs_mapping: Dictionary) -> vo
control_results[fs_key] = fs_result[fs_key]
flag_fs_status_ok = control_results[fs_key] == 1
##
func state_control_machine() -> void:
match state:
@@ -306,6 +310,8 @@ func state_control_machine() -> void:
STATE_MACHINE.CHEK_KASSETA_Y5:
if block_kasseta_y5_config['yau07']:
state = STATE_MACHINE.WRITE_ISA
elif flag_only_fs:
state = STATE_MACHINE.IN_EMS_STOP
STATE_MACHINE.WRITE_ISA:
if not flag_write_isa:
_handle_ug_set_state(0x6)
@@ -375,7 +381,7 @@ func state_control_machine() -> void:
STATE_MACHINE.STOP_CONTROL:
_handle_stop_control_state()
## В машине состояний вызов изменения состояния прогресс бара контроля
if block_kasseta_y5_config['yau07']:
if block_kasseta_y5_config['yau07'] or flag_no_trust_yau07:
progressbar_status()
@@ -522,6 +528,9 @@ func _handle_stop_control_state() -> void:
_advance_to_next_fs()
state = STATE_MACHINE.INIT
if current_litera == 0: return
if flag_no_trust_yau07:
state = STATE_MACHINE.STOP_CONTROL
## Переходит на следующую литеру, если 0 то считай закончил выполнения контроля
@@ -565,6 +574,8 @@ func _on_start_contol_device()-> void:
func _determine_self_name() -> void:
flag_no_trust_yau07 = false
flag_only_fs = false
cc = 0
state = STATE_MACHINE.get("INIT", 0)
var current_unit = unit_prd.name
@@ -652,6 +663,11 @@ func on_state_mashine():
## При таймауте таймера ожидания выполнения команды и перехода на следующий шаг машины состояний
func on_stop_control() -> void:
_handle_fs_turn_off_state()
if state == STATE_MACHINE.UG_SET_RAY:
flag_no_trust_yau07 = true
elif state == STATE_MACHINE.CHEK_KASSETA_Y5:
flag_only_fs = true
state = STATE_MACHINE.FS_TURN_OFF
@@ -661,6 +677,8 @@ func on_mode_changed(in_tree: bool) -> void:
if not in_tree: ## TODO: Дополнительная проверка если контроль идет, если нет, то смысла вызывать нет
_set_status("Ожидание запуска контроля")
flag_control_is_over = false
flag_no_trust_yau07 = false
flag_only_fs = false
progress_value = 0
machine_timer.stop()
state = STATE_MACHINE.INIT
@@ -778,12 +796,13 @@ static func check_block_ip(status_prd: PackedByteArray, ip_config: Dictionary) -
## Проверка кассеты у-5 (ЯУ-07Б, ЭМС-Г, УГ, УКП-1, УКП-2)
static func check_block_kasseta_y5(status_prd: PackedByteArray, y5_config: Dictionary) -> Dictionary:
y5_config.yau07 = true
y5_config.ems = (status_prd[0] & 1) and ((status_prd[0] >> 4) & 1)
y5_config.ug = (status_prd[0] >> 1) & 1
y5_config.ukp1 = (status_prd[0] >> 2) & 1
y5_config.ukp2 = (status_prd[0] >> 3) & 1
static func check_block_kasseta_y5(status_prd: PackedByteArray, y5_config: Dictionary, flag_not_trust: bool) -> Dictionary:
y5_config.yau07 = not flag_not_trust
if y5_config.yau07:
y5_config.ems = (status_prd[0] & 1) and ((status_prd[0] >> 4) & 1)
y5_config.ug = (status_prd[0] >> 1) & 1
y5_config.ukp1 = (status_prd[0] >> 2) & 1
y5_config.ukp2 = (status_prd[0] >> 3) & 1
return y5_config
@@ -860,7 +879,6 @@ static func _should_apply_rule(fs_num: int, rule: Dictionary, results: Dictionar
return bool(fs_num >= rule.min and fs_num < rule.max) and results.has(rule.key)
## Получение мощности при выполнении контроля
static func power_um_ukp(status: PackedByteArray, litera: int, pwr_result: Array) -> Array:
const Constants: Dictionary = {'POWER_UKP_1' : 31, 'POWER_UKP_2': 63}