Рефактор
This commit is contained in:
@@ -1,36 +1,36 @@
|
||||
extends "res://scenes/контроль/прибор.gd"
|
||||
extends 'res://scenes/контроль/прибор.gd'
|
||||
|
||||
const Constants: Dictionary = {
|
||||
"IN_BLANK_PRD": 1,
|
||||
"OUT_BLANK_PRD": 13,
|
||||
"CI_1_OT_FS": 8,
|
||||
"CI_6_OT_FS": 13,
|
||||
"CI_7_OT_FS": 14,
|
||||
"CI_1_B_UF": 3,
|
||||
"CI_6_B_UF": 4,
|
||||
"CI_7_B_UF": 5,
|
||||
"CONST_MIN_TEMP": -25,
|
||||
"MAXIMUM_CODE_ADC": 3796,
|
||||
"MINIMUM_CODE_AD": 2660,
|
||||
"TEMPERATURE_UKP_1": 47,
|
||||
"TEMPERATURE_UKP_2": 79,
|
||||
"POWER_UKP_1": 31,
|
||||
"POWER_UKP_2": 63,
|
||||
"DKM_BIT_1": 0,
|
||||
"DKM_BIT_6": 5,
|
||||
"DKM_BIT_7": 6,
|
||||
"BASE_ADDR_EMS_G": 0x120,
|
||||
"ADDR_UG_LITERA_1": 0x106,
|
||||
"ADDR_UG_LITERA_2": 0x108,
|
||||
"ADDR_UG_LITERA_3": 0x10A,
|
||||
"TEMP_THRESHOLD": 40,
|
||||
"POWER_THRESHOLD": 40,
|
||||
"TIMER_DELAY": 5.0,
|
||||
"dou_ray_nuber": 0x6,
|
||||
"attenutor_um_1": 0x7,
|
||||
"attenutor_um_2": 0x7,
|
||||
"attenutor_um_3": 0x0,
|
||||
"POWER_UM": 75,
|
||||
'IN_BLANK_PRD': 1,
|
||||
'OUT_BLANK_PRD': 13,
|
||||
'CI_1_OT_FS': 8,
|
||||
'CI_6_OT_FS': 13,
|
||||
'CI_7_OT_FS': 14,
|
||||
'CI_1_B_UF': 3,
|
||||
'CI_6_B_UF': 4,
|
||||
'CI_7_B_UF': 5,
|
||||
'CONST_MIN_TEMP': -25,
|
||||
'MAXIMUM_CODE_ADC': 3796,
|
||||
'MINIMUM_CODE_AD': 2660,
|
||||
'TEMPERATURE_UKP_1': 47,
|
||||
'TEMPERATURE_UKP_2': 79,
|
||||
'POWER_UKP_1': 31,
|
||||
'POWER_UKP_2': 63,
|
||||
'DKM_BIT_1': 0,
|
||||
'DKM_BIT_6': 5,
|
||||
'DKM_BIT_7': 6,
|
||||
'BASE_ADDR_EMS_G': 0x120,
|
||||
'ADDR_UG_LITERA_1': 0x106,
|
||||
'ADDR_UG_LITERA_2': 0x108,
|
||||
'ADDR_UG_LITERA_3': 0x10A,
|
||||
'TEMP_THRESHOLD': 40,
|
||||
'POWER_THRESHOLD': 40,
|
||||
'TIMER_DELAY': 5.0,
|
||||
'dou_ray_nuber': 0x6,
|
||||
'attenutor_um_1': 0x7,
|
||||
'attenutor_um_2': 0x7,
|
||||
'attenutor_um_3': 0x0,
|
||||
'POWER_UM': 75,
|
||||
}
|
||||
enum STATE_VAL { NONE = 0, GOOD = 1, ERROR = 2 }
|
||||
enum STATE_MASHINE {
|
||||
@@ -43,6 +43,30 @@ enum STATE_MASHINE {
|
||||
STOP_CONTROL,
|
||||
AWAIT
|
||||
}
|
||||
var block_config_k := {
|
||||
# Ключ: [бит, нода, имя для _control_results (опционально)]
|
||||
'maa2000_1': [0, 'maa2000_A23'],
|
||||
'maa2000_2': [1, 'maa2000_A22'],
|
||||
'ip9_50_1': [2, 'kasseta_p_1/ref_A26'],
|
||||
'ip9_50_2': [3, 'kasseta_p_1/ref_A23'],
|
||||
'ip12_50_1': [4, 'kasseta_p_1/ref_A24'],
|
||||
'ip9_50_3': [5, 'kasseta_p_2/ref_A26'],
|
||||
'ip12_50_2': [6, 'kasseta_p_2/ref_A23']
|
||||
}
|
||||
var fs_mapping_k = {
|
||||
0: { 'node': 'kasseta_fs_kd/ref_A3', 'condition': pribor == '1к' },
|
||||
1: { 'node': 'kasseta_fs_kd/ref_A3', 'condition': pribor == '4к' },
|
||||
2: { 'node': 'kasseta_fs_kd/ref_A3', 'condition': pribor == '3к' },
|
||||
3: { 'node': 'kasseta_fs_kd/ref_A3', 'condition': pribor == '2к' },
|
||||
20: { 'node': 'kasseta_fs_kd/ref_A6', 'condition': pribor == '1к' },
|
||||
21: { 'node': 'kasseta_fs_kd/ref_A6', 'condition': pribor == '4к' },
|
||||
22: { 'node': 'kasseta_fs_kd/ref_A6', 'condition': pribor == '3к' },
|
||||
23: { 'node': 'kasseta_fs_kd/ref_A6', 'condition': pribor == '2к' },
|
||||
24: { 'node': 'kasseta_fs_kd/ref_A5', 'condition': pribor == '1к' },
|
||||
25: { 'node': 'kasseta_fs_kd/ref_A5', 'condition': pribor == '4к' },
|
||||
26: { 'node': 'kasseta_fs_kd/ref_A5', 'condition': pribor == '3к' },
|
||||
27: { 'node': 'kasseta_fs_kd/ref_A5', 'condition': pribor == '2к' },
|
||||
}
|
||||
# Основные переменные
|
||||
var current_fs: int = 1
|
||||
var state: int = STATE_MASHINE.INIT
|
||||
@@ -63,15 +87,15 @@ var mashine_timer: Timer = Timer.new()
|
||||
var pribor: String
|
||||
# Результаты контроля
|
||||
var _control_results: Dictionary = {
|
||||
"block_ip": false, # Проверка касет П1 и ИП МА2000
|
||||
"temperature": true, # Проверка температур УМ
|
||||
"dkm_1": false, # Проверка ДКМ 1
|
||||
"dkm_6": false, # Проверка ДКМ 6
|
||||
"dkm_7": false, # Проверка ДКМ 7
|
||||
"power_ukp": false, # Мощность от УКП
|
||||
"fs_1": false, # Проверка ФС 1
|
||||
"fs_6": false, # Проверка ФС 6
|
||||
"fs_7": false, # Проверка ФС 7
|
||||
'block_ip': false, # Проверка касет П1 и ИП МА2000
|
||||
'temperature': true, # Проверка температур УМ
|
||||
'dkm_1': false, # Проверка ДКМ 1
|
||||
'dkm_6': false, # Проверка ДКМ 6
|
||||
'dkm_7': false, # Проверка ДКМ 7
|
||||
'power_ukp': false, # Мощность от УКП
|
||||
'fs_1': false, # Проверка ФС 1
|
||||
'fs_6': false, # Проверка ФС 6
|
||||
'fs_7': false, # Проверка ФС 7
|
||||
}
|
||||
|
||||
|
||||
@@ -109,7 +133,7 @@ func on_state_mashine() -> void:
|
||||
prd_module.cmd_array.append([unit_prd.CmdCode.WRITE_ISA, [Constants.BASE_ADDR_EMS_G, 6666]])
|
||||
flag_timer_started = true
|
||||
state = STATE_MASHINE.UG_SET
|
||||
|
||||
|
||||
STATE_MASHINE.UG_SET:
|
||||
on_ug_setting()
|
||||
state = STATE_MASHINE.FS_WORK
|
||||
@@ -130,7 +154,7 @@ func on_state_mashine() -> void:
|
||||
|
||||
|
||||
func initialize_connections() -> void:
|
||||
signaller.conn(signaller.fs_update_state, Callable(self, 'on_fs_update_state'))
|
||||
signaller.conn(signaller.fs_update_state, Callable(self, 'on_fs_update_state').bind(fs_mapping_k))
|
||||
var unit_key = settings.get_unit_key(get_meta('unit_name')[0])
|
||||
var unit_prd = network.units[unit_key]
|
||||
var currecnt_unit = unit_prd.name
|
||||
@@ -184,30 +208,24 @@ func on_data_received(unit_prd: Object) -> void:
|
||||
return
|
||||
|
||||
var status = unit_prd.status
|
||||
check_block_ip(status)
|
||||
check_block_ip(status, block_config_k)
|
||||
check_temperature_um(status)
|
||||
# Обработка данных ЭМС
|
||||
_process_ems_data(status)
|
||||
|
||||
|
||||
if current_fs == 1 and _control_results.fs_1:
|
||||
flag_check_dkm = check_dkm(status, Constants.DKM_BIT_1)
|
||||
elif current_fs == 6 and _control_results.fs_6:
|
||||
flag_check_dkm = check_dkm(status, Constants.DKM_BIT_6)
|
||||
elif current_fs == 7 and _control_results.fs_7:
|
||||
flag_check_dkm = check_dkm(status, Constants.DKM_BIT_7)
|
||||
|
||||
|
||||
flag_check_dkm = check_dkm(status, Constants.DKM_BIT_7)
|
||||
flag_check_dkm = check_dkm(status, Constants.DKM_BIT_6)
|
||||
flag_check_dkm = check_dkm(status, Constants.DKM_BIT_1)
|
||||
|
||||
|
||||
if flag_check_dkm:
|
||||
_process_ukp_power(status)
|
||||
|
||||
var unit_key = settings.get_unit_key(get_meta('unit_name')[0])
|
||||
var unit_prdic = network.units[unit_key]
|
||||
#if unit_prdic.isa_ports.has(Constants.ADDR_UG_LITERA_1):
|
||||
#print(unit_prdic.isa_ports[Constants.ADDR_UG_LITERA_1])
|
||||
#print(unit_prdic.isa_ports[Constants.ADDR_UG_LITERA_2])
|
||||
|
||||
|
||||
# Обрабатывает данные ЭМС и обновляет UI панели
|
||||
@@ -228,26 +246,19 @@ func _process_ems_data(status: PackedByteArray) -> void:
|
||||
|
||||
|
||||
## Проверка касет П1 и ИП МА2000
|
||||
func check_block_ip(status_prd: PackedByteArray) -> void :
|
||||
func check_block_ip(status_prd: PackedByteArray, block_config: Dictionary) -> void :
|
||||
# Конфигурация проверяемых блоков
|
||||
const BYTE_DRY_CONTACT: int = 27
|
||||
var block_config := {
|
||||
# Ключ: [бит, нода, имя для _control_results (опционально)]
|
||||
"maa2000_1": [0, $maa2000_A23],
|
||||
"maa2000_2": [1, $maa2000_A22],
|
||||
"ip9_50_1": [2, $kasseta_p_1/ref_A26],
|
||||
"ip9_50_2": [3, $kasseta_p_1/ref_A23],
|
||||
"ip12_50_1": [4, $kasseta_p_1/ref_A24],
|
||||
"ip9_50_3": [5, $kasseta_p_2/ref_A26],
|
||||
"ip12_50_2": [6, $kasseta_p_2/ref_A23]
|
||||
}
|
||||
|
||||
|
||||
var ug_online: bool = (status_prd[0] >> 1) & 1
|
||||
var all_good := true
|
||||
|
||||
|
||||
for block in block_config:
|
||||
var bit: int = block_config[block][0]
|
||||
var node: Control = block_config[block][1]
|
||||
var node_name = block_config[block][1]
|
||||
var node: Control = get_node(node_name)
|
||||
|
||||
if ug_online:
|
||||
var status = status_prd[BYTE_DRY_CONTACT] >> bit & 1
|
||||
@@ -256,7 +267,7 @@ func check_block_ip(status_prd: PackedByteArray) -> void :
|
||||
else:
|
||||
node.state = STATE_VAL.NONE
|
||||
|
||||
_control_results["block_ip"] = all_good
|
||||
_control_results['block_ip'] = all_good
|
||||
|
||||
|
||||
## Проверка температур УМ от УКП
|
||||
@@ -267,7 +278,7 @@ func check_temperature_um(status_prd: PackedByteArray) -> void:
|
||||
if ukp1_online:
|
||||
var tmp_1: int
|
||||
var temperature_ukp_1: int
|
||||
for i_temp in range(6):
|
||||
for i_temp in 6:
|
||||
temperature_ukp_1 = status_prd.decode_u16(Constants.TEMPERATURE_UKP_1 + 2 * i_temp)
|
||||
tmp_1 = round(Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_1) * TEMP + 3)
|
||||
power_amplifier[i_temp].value0 = tmp_1
|
||||
@@ -278,7 +289,7 @@ func check_temperature_um(status_prd: PackedByteArray) -> void:
|
||||
|
||||
var ukp2_online = (status_prd[0] >> 3) & 1
|
||||
if ukp2_online:
|
||||
for i_temp in range(6):
|
||||
for i_temp in 6:
|
||||
var temperature_ukp_2: int = status_prd.decode_u16(Constants.TEMPERATURE_UKP_2 + 2 * i_temp)
|
||||
var tmp_2: int = round(Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_2) * TEMP + 3)
|
||||
power_amplifier[i_temp+7].value0 = tmp_2
|
||||
@@ -293,14 +304,14 @@ func check_dkm(status_prd: PackedByteArray, bit_dkm: int) -> bool:
|
||||
if bit_dkm == 5:
|
||||
$dou6_A7.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
$kasseta_fs_kd/ref_A4.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
_control_results["dkm_6"] = status_dkm
|
||||
_control_results['dkm_6'] = status_dkm
|
||||
elif bit_dkm == 6:
|
||||
$dou7_A8.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
$kasseta_fs_kd/ref_A7.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
_control_results["dkm_7"] = status_dkm
|
||||
_control_results['dkm_7'] = status_dkm
|
||||
elif bit_dkm == 0:
|
||||
$kasseta_fs_kd/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
|
||||
return status_dkm
|
||||
|
||||
|
||||
@@ -370,10 +381,10 @@ func _process_ukp_power(status: PackedByteArray) -> void:
|
||||
|
||||
func power_control_result() -> void:
|
||||
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
_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
|
||||
|
||||
|
||||
@@ -417,37 +428,30 @@ func on_stop_control() -> void:
|
||||
state = STATE_MASHINE.FS_TURN_OFF
|
||||
|
||||
|
||||
func on_fs_update_state(packet_type_7: Dictionary) -> void:
|
||||
func on_fs_update_state(packet_type_7: Dictionary, fs_mapping: Dictionary) -> void:
|
||||
# Словарь для маппинга: ключ - номер FS, значение - целевая нода и условие прибора
|
||||
var fs_mapping = {
|
||||
0: { "node": $kasseta_fs_kd/ref_A3, "condition": pribor == '1к' },
|
||||
1: { "node": $kasseta_fs_kd/ref_A3, "condition": pribor == '4к' },
|
||||
2: { "node": $kasseta_fs_kd/ref_A3, "condition": pribor == '3к' },
|
||||
3: { "node": $kasseta_fs_kd/ref_A3, "condition": pribor == '2к' },
|
||||
20: { "node": $kasseta_fs_kd/ref_A6, "condition": pribor == '1к' },
|
||||
21: { "node": $kasseta_fs_kd/ref_A6, "condition": pribor == '4к' },
|
||||
22: { "node": $kasseta_fs_kd/ref_A6, "condition": pribor == '3к' },
|
||||
23: { "node": $kasseta_fs_kd/ref_A6, "condition": pribor == '2к' },
|
||||
24: { "node": $kasseta_fs_kd/ref_A5, "condition": pribor == '1к' },
|
||||
25: { "node": $kasseta_fs_kd/ref_A5, "condition": pribor == '4к' },
|
||||
26: { "node": $kasseta_fs_kd/ref_A5, "condition": pribor == '3к' },
|
||||
27: { "node": $kasseta_fs_kd/ref_A5, "condition": pribor == '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]
|
||||
if fs < 4 and current_fs == 1:
|
||||
_control_results["fs_1"] = (data.isg == 1)
|
||||
_control_results['fs_1'] = (data.isg == 1)
|
||||
var state_fs = 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
|
||||
var node_name = fs_mapping[fs]['node']
|
||||
var node = get_node(node_name)
|
||||
node.state = state_fs
|
||||
elif fs < 24 and current_fs == 6:
|
||||
_control_results["fs_6"] = (data.isg == 1)
|
||||
_control_results['fs_6'] = (data.isg == 1)
|
||||
var state_fs = 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
|
||||
var node_name = fs_mapping[fs]['node']
|
||||
var node = get_node(node_name)
|
||||
node.state = state_fs
|
||||
elif fs > 23 and current_fs == 7:
|
||||
_control_results["fs_7"] = (data.isg == 1)
|
||||
_control_results['fs_7'] = (data.isg == 1)
|
||||
var state_fs = 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
|
||||
var node_name = fs_mapping[fs]['node']
|
||||
var node = get_node(node_name)
|
||||
node.state = state_fs
|
||||
|
||||
|
||||
func on_ug_setting() -> void:
|
||||
@@ -499,4 +503,4 @@ func on_control_result() -> void:
|
||||
status_color = Color.AQUAMARINE
|
||||
|
||||
$control_result.text = 'Прибор ПРД-%s %s' % [pribor, status_text]
|
||||
$control_result.add_theme_color_override("font_color", status_color)
|
||||
$control_result.add_theme_color_override('font_color', status_color)
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
extends "res://scenes/контроль/прибор.gd"
|
||||
extends 'res://scenes/контроль/прибор.gd'
|
||||
|
||||
const Constants = {
|
||||
"IN_BLANK_PRD": 1,
|
||||
"OUT_BLANK_PRD": 13,
|
||||
"CI_2_OT_FS": 9,
|
||||
"CI_3_OT_FS": 10,
|
||||
"CI_2_B_UF": 4,
|
||||
"CI_3_B_UF": 5,
|
||||
"POWER_UKP_1": 31,
|
||||
"POWER_UKP_2": 63,
|
||||
"DKM_BIT_2": 1,
|
||||
"DKM_BIT_3": 2,
|
||||
"BASE_ADDR_EMS_G": 0x120,
|
||||
"ADDR_UG_LITERA_1": 0x106,
|
||||
"ADDR_UG_LITERA_2": 0x108,
|
||||
"TEMP_THRESHOLD": 70,
|
||||
"POWER_THRESHOLD": 40,
|
||||
"RAY_DOU": 3,
|
||||
"ATT_UM_2": 0x7,
|
||||
"ATT_UM_3": 0x7,
|
||||
"TIMER_DELAY": 5.0,
|
||||
"POWER_UM": 70,
|
||||
'IN_BLANK_PRD': 1,
|
||||
'OUT_BLANK_PRD': 13,
|
||||
'CI_2_OT_FS': 9,
|
||||
'CI_3_OT_FS': 10,
|
||||
'CI_2_B_UF': 4,
|
||||
'CI_3_B_UF': 5,
|
||||
'POWER_UKP_1': 31,
|
||||
'POWER_UKP_2': 63,
|
||||
'DKM_BIT_2': 1,
|
||||
'DKM_BIT_3': 2,
|
||||
'BASE_ADDR_EMS_G': 0x120,
|
||||
'ADDR_UG_LITERA_1': 0x106,
|
||||
'ADDR_UG_LITERA_2': 0x108,
|
||||
'TEMP_THRESHOLD': 70,
|
||||
'POWER_THRESHOLD': 40,
|
||||
'RAY_DOU': 3,
|
||||
'ATT_UM_2': 0x7,
|
||||
'ATT_UM_3': 0x7,
|
||||
'TIMER_DELAY': 5.0,
|
||||
'POWER_UM': 70,
|
||||
}
|
||||
enum STATE_VAL { NONE = 0, GOOD = 1, ERROR = 2 }
|
||||
enum STATE_MASHINE {
|
||||
@@ -52,13 +52,13 @@ var mashine_timer: Timer = Timer.new()
|
||||
|
||||
# Результаты контроля
|
||||
var _control_results: Dictionary = {
|
||||
"block_ip": false, # Проверка касет П1 и ИП МА2000
|
||||
"temperature": true, # Проверка температур УМ
|
||||
"dkm_2": false, # Проверка ДКМ
|
||||
"dkm_3": false, # Проверка ДКМ
|
||||
"power_ukp": false, # Мощность от УКП
|
||||
"fs_2": false, # Проверка ФС
|
||||
"fs_3": false,
|
||||
'block_ip': false, # Проверка касет П1 и ИП МА2000
|
||||
'temperature': true, # Проверка температур УМ
|
||||
'dkm_2': false, # Проверка ДКМ
|
||||
'dkm_3': false, # Проверка ДКМ
|
||||
'power_ukp': false, # Мощность от УКП
|
||||
'fs_2': false, # Проверка ФС
|
||||
'fs_3': false,
|
||||
}
|
||||
|
||||
|
||||
@@ -99,7 +99,7 @@ func on_state_mashine() -> void:
|
||||
prd_module.cmd_array.append([unit_prd.CmdCode.WRITE_ISA, [Constants.BASE_ADDR_EMS_G, 6666]])
|
||||
flag_timer_started = true
|
||||
state = STATE_MASHINE.UG_SET
|
||||
|
||||
|
||||
STATE_MASHINE.UG_SET:
|
||||
print('UG_SET')
|
||||
on_ug_setting()
|
||||
@@ -137,7 +137,7 @@ func setup_timer() -> void:
|
||||
mashine_timer.connect('timeout', Callable(self, 'on_state_mashine'))
|
||||
mashine_timer.wait_time = 0.5
|
||||
mashine_timer.start()
|
||||
|
||||
|
||||
add_child(control_timer)
|
||||
control_timer.connect('timeout', Callable(self, 'on_stop_control'))
|
||||
control_timer.one_shot = true
|
||||
@@ -162,7 +162,7 @@ func _exit_tree() -> void:
|
||||
var unit_name = get_meta('unit_name')[0]
|
||||
var unit_prd = network.get_unit_instance(unit_name)
|
||||
var prd_module = prd.prd_dict[unit_prd.name]
|
||||
|
||||
|
||||
prd_module.cmd_array.append([unit_prd.CmdCode.WRITE_ISA, [Constants.ADDR_UG_LITERA_1, ug_work_2, Constants.ADDR_UG_LITERA_2, ug_work_3]])
|
||||
|
||||
|
||||
@@ -185,7 +185,7 @@ func on_data_received(unit_prd: Object) -> void:
|
||||
flag_check_dkm = check_dkm(status, Constants.DKM_BIT_2)
|
||||
elif current_fs == 3 and _control_results.fs_3:
|
||||
flag_check_dkm = check_dkm(status, Constants.DKM_BIT_3)
|
||||
|
||||
|
||||
if _control_results.fs_2 or _control_results.fs_3:
|
||||
# Обработка мощности от УКП
|
||||
_process_ukp_power(status)
|
||||
@@ -235,7 +235,7 @@ func check_block_ip(status_prd: PackedByteArray) -> void :
|
||||
$kasseta_P_1/ref_A20.state = STATE_VAL.NONE
|
||||
$kasseta_P_1/ref_A21.state = STATE_VAL.NONE
|
||||
|
||||
_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
|
||||
@@ -261,7 +261,7 @@ func check_temperature_um(status_prd: PackedByteArray) -> void:
|
||||
var tmp_1: int = round(CONST_MIN_TEMP + (MAXIMUM_CODE_ADC - temperature_ukp_1) * TEMP + 3)
|
||||
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:
|
||||
for i_temp in range(6):
|
||||
@@ -269,7 +269,7 @@ func check_temperature_um(status_prd: PackedByteArray) -> void:
|
||||
var tmp_2: int = round(CONST_MIN_TEMP + (MAXIMUM_CODE_ADC - temperature_ukp_2) * TEMP + 3)
|
||||
power_amplifier[i_temp+6].value0 = tmp_2
|
||||
if tmp_2 > Constants.TEMP_THRESHOLD:
|
||||
_control_results["temperature"] = false
|
||||
_control_results['temperature'] = false
|
||||
|
||||
|
||||
|
||||
@@ -282,11 +282,11 @@ func check_dkm(status_prd: PackedByteArray, bit_dkm: int) -> bool:
|
||||
if bit_dkm == 1:
|
||||
$dou3_A5.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
$kasseta_FS_ND/ref_A3.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
_control_results["dkm_2"] = status_dkm
|
||||
_control_results['dkm_2'] = status_dkm
|
||||
elif bit_dkm == 2:
|
||||
$dou2_A6.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
$kasseta_FS_ND/ref_A4.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
_control_results["dkm_3"] = status_dkm
|
||||
_control_results['dkm_3'] = status_dkm
|
||||
return status_dkm
|
||||
|
||||
|
||||
@@ -372,10 +372,10 @@ func _on_control_fs(mode: bool) -> void:
|
||||
|
||||
func power_control_result() -> void:
|
||||
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
_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
|
||||
|
||||
|
||||
@@ -386,26 +386,26 @@ func on_stop_control() -> void:
|
||||
func on_fs_update_state(packet_type_7: Dictionary) -> void:
|
||||
# Словарь для маппинга: ключ - номер FS, значение - целевая нода и условие прибора
|
||||
var fs_mapping = {
|
||||
4: { "node": $kasseta_FS_ND/ref_A1, "condition": pribor == '1н' },
|
||||
5: { "node": $kasseta_FS_ND/ref_A1, "condition": pribor == '4н' },
|
||||
6: { "node": $kasseta_FS_ND/ref_A1, "condition": pribor == '3н' },
|
||||
7: { "node": $kasseta_FS_ND/ref_A1, "condition": pribor == '2н' },
|
||||
8: { "node": $kasseta_FS_ND/ref_A2, "condition": pribor == '1н' },
|
||||
9: { "node": $kasseta_FS_ND/ref_A2, "condition": pribor == '4н' },
|
||||
10: { "node": $kasseta_FS_ND/ref_A2, "condition": pribor == '3н' },
|
||||
11: { "node": $kasseta_FS_ND/ref_A2, "condition": pribor == '2н' }
|
||||
4: { 'node': $kasseta_FS_ND/ref_A1, 'condition': pribor == '1н' },
|
||||
5: { 'node': $kasseta_FS_ND/ref_A1, 'condition': pribor == '4н' },
|
||||
6: { 'node': $kasseta_FS_ND/ref_A1, 'condition': pribor == '3н' },
|
||||
7: { 'node': $kasseta_FS_ND/ref_A1, 'condition': pribor == '2н' },
|
||||
8: { 'node': $kasseta_FS_ND/ref_A2, 'condition': pribor == '1н' },
|
||||
9: { 'node': $kasseta_FS_ND/ref_A2, 'condition': pribor == '4н' },
|
||||
10: { 'node': $kasseta_FS_ND/ref_A2, 'condition': pribor == '3н' },
|
||||
11: { 'node': $kasseta_FS_ND/ref_A2, 'condition': pribor == '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]
|
||||
if fs < 8 and current_fs == 2:
|
||||
_control_results["fs_2"] = (data.isg == 1)
|
||||
_control_results['fs_2'] = (data.isg == 1)
|
||||
var state_fs = 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
|
||||
fs_mapping[fs]['node'].state = state_fs
|
||||
elif fs > 7 and current_fs == 3:
|
||||
_control_results["fs_3"] = (data.isg == 1)
|
||||
_control_results['fs_3'] = (data.isg == 1)
|
||||
var state_fs = 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
|
||||
fs_mapping[fs]['node'].state = state_fs
|
||||
|
||||
|
||||
func on_ug_setting() -> void:
|
||||
@@ -453,4 +453,4 @@ func on_control_result() -> void:
|
||||
status_color = Color.AQUAMARINE
|
||||
|
||||
$control_result.text = 'Прибор ПРД-%s %s' % [pribor, status_text]
|
||||
$control_result.add_theme_color_override("font_color", status_color)
|
||||
$control_result.add_theme_color_override('font_color', status_color)
|
||||
|
||||
Reference in New Issue
Block a user