Рефактор
This commit is contained in:
@@ -1,22 +1,22 @@
|
||||
extends "res://scenes/контроль/прибор.gd"
|
||||
extends 'res://scenes/контроль/прибор.gd'
|
||||
|
||||
const Constants = {
|
||||
"IN_BLANK_PRD": 1,
|
||||
"OUT_BLANK_PRD": 13,
|
||||
"CI_4_OT_FS": 11,
|
||||
"CI_5_OT_FS": 12,
|
||||
"CI_4_B_UF": 4,
|
||||
"CI_5_B_UF": 5,
|
||||
"POWER_UKP_1": 31,
|
||||
"POWER_UKP_2": 63,
|
||||
"DKM_BIT_3": 3,
|
||||
"DKM_BIT_4": 4,
|
||||
"ADDR_UG_LITERA_1": 0x106,
|
||||
"ADDR_UG_LITERA_2": 0x108,
|
||||
"TEMP_THRESHOLD": 70,
|
||||
"POWER_THRESHOLD": 40,
|
||||
"TIMER_DELAY": 1.4,
|
||||
"POWER_UM": 70,
|
||||
'IN_BLANK_PRD': 1,
|
||||
'OUT_BLANK_PRD': 13,
|
||||
'CI_4_OT_FS': 11,
|
||||
'CI_5_OT_FS': 12,
|
||||
'CI_4_B_UF': 4,
|
||||
'CI_5_B_UF': 5,
|
||||
'POWER_UKP_1': 31,
|
||||
'POWER_UKP_2': 63,
|
||||
'DKM_BIT_3': 3,
|
||||
'DKM_BIT_4': 4,
|
||||
'ADDR_UG_LITERA_1': 0x106,
|
||||
'ADDR_UG_LITERA_2': 0x108,
|
||||
'TEMP_THRESHOLD': 70,
|
||||
'POWER_THRESHOLD': 40,
|
||||
'TIMER_DELAY': 1.4,
|
||||
'POWER_UM': 70,
|
||||
}
|
||||
enum STATE_VAL { NONE = 0, GOOD = 1, ERROR = 2 }
|
||||
# Основные переменные
|
||||
@@ -32,13 +32,13 @@ var control_timer: Timer = Timer.new()
|
||||
var flag_timer_started: bool = false
|
||||
# Результаты контроля
|
||||
var _control_results: Dictionary = {
|
||||
"block_ip": false, # Проверка касет П1 и ИП МА2000
|
||||
"temperature": true, # Проверка температур УМ
|
||||
"dkm_1": false, # Проверка ДКМ
|
||||
"dkm_2": false, # Проверка ДКМ
|
||||
"power_ukp": false, # Мощность от УКП
|
||||
"fs_1": false, # Проверка ФС
|
||||
"fs_2": false,
|
||||
'block_ip': false, # Проверка касет П1 и ИП МА2000
|
||||
'temperature': true, # Проверка температур УМ
|
||||
'dkm_1': false, # Проверка ДКМ
|
||||
'dkm_2': false, # Проверка ДКМ
|
||||
'power_ukp': false, # Мощность от УКП
|
||||
'fs_1': false, # Проверка ФС
|
||||
'fs_2': false,
|
||||
}
|
||||
|
||||
|
||||
@@ -138,7 +138,7 @@ func check_block_ip(status_prd: PackedByteArray) -> void:
|
||||
$kasseta_P_1/ref_A20.state = STATE_VAL.ERROR if ip9_50_2 else STATE_VAL.GOOD
|
||||
$kasseta_P_1/ref_A21.state = STATE_VAL.ERROR if ip12_50_1 else STATE_VAL.GOOD
|
||||
|
||||
_control_results["block_ip"] = (
|
||||
_control_results['block_ip'] = (
|
||||
$maa2000_A23.state == STATE_VAL.GOOD and
|
||||
$maa2000_A22.state == STATE_VAL.GOOD and
|
||||
$kasseta_P_1/ref_A19.state == STATE_VAL.GOOD and
|
||||
@@ -150,18 +150,18 @@ func check_block_ip(status_prd: PackedByteArray) -> void:
|
||||
## Проверка температур УМ от УКП
|
||||
func check_temperature_um(status_prd: PackedByteArray) -> void:
|
||||
const TEMP_CONSTANTS = {
|
||||
"min_temp": -25,
|
||||
"max_code": 3796,
|
||||
"min_code": 2660,
|
||||
"temp_factor": 115.0 / (3796 - 2660),
|
||||
"offset": 3 # Корректировка температуры
|
||||
'min_temp': -25,
|
||||
'max_code': 3796,
|
||||
'min_code': 2660,
|
||||
'temp_factor': 115.0 / (3796 - 2660),
|
||||
'offset': 3 # Корректировка температуры
|
||||
}
|
||||
const TEMPERATURE_UKP_1: int = 47
|
||||
const TEMPERATURE_UKP_2: int = 79
|
||||
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
|
||||
# Сбрас флагов перед проверкой
|
||||
_control_results["temperature"] = true
|
||||
_control_results['temperature'] = true
|
||||
|
||||
var ukp1_online: int = (status_prd[0] >> 2) & 1
|
||||
if ukp1_online:
|
||||
@@ -170,7 +170,7 @@ func check_temperature_um(status_prd: PackedByteArray) -> void:
|
||||
var tmp_1: int = round(TEMP_CONSTANTS['min_temp'] + (TEMP_CONSTANTS['max_code'] - temperature_ukp_1) * TEMP_CONSTANTS['temp_factor'] + TEMP_CONSTANTS['offset'])
|
||||
power_amplifier[i_temp].value0 = tmp_1
|
||||
if tmp_1 > Constants.TEMP_THRESHOLD:
|
||||
_control_results["temperature"] = false
|
||||
_control_results['temperature'] = false
|
||||
|
||||
var ukp2_online = (status_prd[0] >> 3) & 1
|
||||
if ukp2_online:
|
||||
@@ -179,7 +179,7 @@ func check_temperature_um(status_prd: PackedByteArray) -> void:
|
||||
var tmp_2: int = round(TEMP_CONSTANTS['min_temp'] + (TEMP_CONSTANTS['max_code'] - temperature_ukp_2) * TEMP_CONSTANTS['temp_factor'] + TEMP_CONSTANTS['offset'])
|
||||
power_amplifier[i_temp+6].value0 = tmp_2
|
||||
if tmp_2 > Constants.TEMP_THRESHOLD:
|
||||
_control_results["temperature"] = false
|
||||
_control_results['temperature'] = false
|
||||
|
||||
|
||||
## Проверка ДКМ
|
||||
@@ -189,11 +189,11 @@ func check_dkm(status_prd: PackedByteArray, bit_dkm: int) -> void:
|
||||
if bit_dkm == Constants.DKM_BIT_3:
|
||||
$dou5_A6.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
$kasseta_FS_VD/ref_A2.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
_control_results["dkm_1"] = status_dkm
|
||||
_control_results['dkm_1'] = status_dkm
|
||||
elif bit_dkm == Constants.DKM_BIT_4:
|
||||
$dou4_A5.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
$kasseta_FS_VD/ref_A6.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
_control_results["dkm_2"] = status_dkm
|
||||
_control_results['dkm_2'] = status_dkm
|
||||
|
||||
|
||||
# Обрабатывает данные ЭМС и обновляет UI панели
|
||||
@@ -254,10 +254,10 @@ func _process_ukp_power(status: PackedByteArray) -> void:
|
||||
|
||||
count_packet_2 += 1
|
||||
|
||||
_control_results["power_ukp"] = true
|
||||
_control_results['power_ukp'] = true
|
||||
for amp in power_amplifier:
|
||||
if amp.state != STATE_VAL.GOOD:
|
||||
_control_results["power_ukp"] = false
|
||||
_control_results['power_ukp'] = false
|
||||
break
|
||||
|
||||
|
||||
@@ -302,25 +302,25 @@ func on_fs_update_state(packet_type_7: Dictionary) -> void:
|
||||
|
||||
# Словарь для маппинга: ключ - номер FS, значение - целевая нода и условие прибора
|
||||
var fs_mapping = {
|
||||
12: { "node": $kasseta_FS_VD/ref_A3, "condition": last_part == '1в' },
|
||||
13: { "node": $kasseta_FS_VD/ref_A3, "condition": last_part == '4в' },
|
||||
14: { "node": $kasseta_FS_VD/ref_A3, "condition": last_part == '3в' },
|
||||
15: { "node": $kasseta_FS_VD/ref_A3, "condition": last_part == '2в' },
|
||||
16: { "node": $kasseta_FS_VD/ref_A4, "condition": last_part == '1в' },
|
||||
17: { "node": $kasseta_FS_VD/ref_A4, "condition": last_part == '4в' },
|
||||
18: { "node": $kasseta_FS_VD/ref_A4, "condition": last_part == '3в' },
|
||||
19: { "node": $kasseta_FS_VD/ref_A4, "condition": last_part == '2в' }
|
||||
12: { 'node': $kasseta_FS_VD/ref_A3, 'condition': last_part == '1в' },
|
||||
13: { 'node': $kasseta_FS_VD/ref_A3, 'condition': last_part == '4в' },
|
||||
14: { 'node': $kasseta_FS_VD/ref_A3, 'condition': last_part == '3в' },
|
||||
15: { 'node': $kasseta_FS_VD/ref_A3, 'condition': last_part == '2в' },
|
||||
16: { 'node': $kasseta_FS_VD/ref_A4, 'condition': last_part == '1в' },
|
||||
17: { 'node': $kasseta_FS_VD/ref_A4, 'condition': last_part == '4в' },
|
||||
18: { 'node': $kasseta_FS_VD/ref_A4, 'condition': last_part == '3в' },
|
||||
19: { 'node': $kasseta_FS_VD/ref_A4, 'condition': last_part == '2в' }
|
||||
}
|
||||
for fs in packet_type_7:
|
||||
if fs in fs_mapping and fs_mapping[fs]["condition"]:
|
||||
if fs in fs_mapping and fs_mapping[fs]['condition']:
|
||||
var data = packet_type_7[fs]
|
||||
var state = STATE_VAL.GOOD if data.isg == 1 else STATE_VAL.ERROR if data.isg == 0 else STATE_VAL.NONE
|
||||
fs_mapping[fs]["node"].state = state
|
||||
fs_mapping[fs]['node'].state = state
|
||||
if fs < 16:
|
||||
_control_results["fs_1"] = (data.isg == 1)
|
||||
_control_results['fs_1'] = (data.isg == 1)
|
||||
else:
|
||||
_control_results["fs_2"] = (data.isg == 1)
|
||||
if _control_results['fs_1'] and _control_results["fs_2"] and not flag_timer_started:
|
||||
_control_results['fs_2'] = (data.isg == 1)
|
||||
if _control_results['fs_1'] and _control_results['fs_2'] and not flag_timer_started:
|
||||
on_ug_setting()
|
||||
control_timer.wait_time = Constants.TIMER_DELAY
|
||||
control_timer.start()
|
||||
@@ -365,9 +365,9 @@ func on_control_result() -> void:
|
||||
var last_part = parts[-1] # Прибор
|
||||
if result:
|
||||
$control_result.text = 'Прибор ПРД-%s исправен' % last_part
|
||||
$control_result.add_theme_color_override("font_color", Color.AQUAMARINE)
|
||||
$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)
|
||||
$control_result.add_theme_color_override('font_color', Color.CRIMSON)
|
||||
await get_tree().create_timer(Constants.TIMER_DELAY).timeout
|
||||
flag_timer_started = false
|
||||
|
||||
Reference in New Issue
Block a user