снятие мощности со всех лучей на приборе прд-н

This commit is contained in:
Maxim
2025-08-15 09:48:50 +03:00
parent cda98ce6bd
commit d67a2a6cd7
5 changed files with 130 additions and 94 deletions

View File

@@ -96,14 +96,17 @@ func _ready() -> void:
func on_state_mashine() -> void:
control_prd_k.state_control_machine()
block_kasseta_y5_prd_config_k = control_prd_k.block_kasseta_y5_config
var nodes_y5: Array = get_tree().get_nodes_in_group('y-5')
for node_y5 in nodes_y5:
var meta_y5 = node_y5.get_meta('y5')
if block_kasseta_y5_prd_config_k.has(meta_y5):
if block_kasseta_y5_prd_config_k['yau07'] == false:
node_y5.state = STATE_VAL.ERROR if meta_y5 == 'yau07' else STATE_VAL.NONE
return
node_y5.state = STATE_VAL.GOOD if block_kasseta_y5_prd_config_k[meta_y5] else STATE_VAL.ERROR
block_ip_config_k = control_prd_k.block_ip_config
var node_ip_power_arr: Array = get_tree().get_nodes_in_group('power_supply')
for power_supply in node_ip_power_arr:

View File

@@ -81,14 +81,17 @@ var test = preload('res://scripts/pribor-prd.gd')
################################
func on_state_mashine() -> void:
control_prd_n.state_control_machine()
block_kasseta_y5_prd_config_n = control_prd_n.block_kasseta_y5_config
var nodes_y5: Array = get_tree().get_nodes_in_group('y-5')
for node_y5 in nodes_y5:
var meta_y5 = node_y5.get_meta('y5')
if block_kasseta_y5_prd_config_n.has(meta_y5):
if block_kasseta_y5_prd_config_n['yau07'] == false:
node_y5.state = STATE_VAL.ERROR if meta_y5 == 'yau07' else STATE_VAL.NONE
return
node_y5.state = STATE_VAL.GOOD if block_kasseta_y5_prd_config_n[meta_y5] else STATE_VAL.ERROR
block_ip_config_n = control_prd_n.block_ip_config
var node_ip_power_arr: Array = get_tree().get_nodes_in_group('power_supply')
for power_supply in node_ip_power_arr:
@@ -96,14 +99,23 @@ func on_state_mashine() -> void:
if block_ip_config_n.has(meta_ip) and block_kasseta_y5_prd_config_n.ug:
power_supply.state = STATE_VAL.GOOD if block_ip_config_n[meta_ip][1] else STATE_VAL.ERROR
var fs_results: Dictionary = control_prd_n.block_fs_config
var fs_nodes: Array = get_tree().get_nodes_in_group('fs_group')
for f in fs_nodes:
var fs_meta: String = f.get_meta('fs')
if fs_results.has(fs_meta):
var new_state = fs_results[fs_meta]
f.state = new_state
fs_results[fs_meta] = new_state
var dkm: Dictionary = control_prd_n.block_dkm_config
var fs: Dictionary = control_prd_n.block_fs_config
if control_prd_n.current_fs == 2 and fs.fs_2:
if control_prd_n.current_fs == 2 and fs_results.fs_2:
$kasseta_FS_ND/ref_A4.state = STATE_VAL.GOOD if dkm.dkm_2 else STATE_VAL.ERROR
elif control_prd_n.current_fs == 3 and fs.fs_3:
elif control_prd_n.current_fs == 3 and fs_results.fs_3:
$kasseta_FS_ND/ref_A3.state = STATE_VAL.GOOD if dkm.dkm_3 else STATE_VAL.ERROR
if not control_prd_n.power_result['ray_25_2'] or not control_prd_n.power_result['ray_25_3']:
#if not control_prd_n.power_result['ray_25_2'] or not control_prd_n.power_result['ray_25_3']:
if 1 == 1:
return
var node_arr_power: Array = get_tree().get_nodes_in_group('power_amplifier')
@@ -132,11 +144,10 @@ func initialize_connections() -> void:
unit_prd_n.connect('line_changed', Callable(self, 'on_line_changed'))
var power_amplifiers: Array = get_tree().get_nodes_in_group('power_amplifier')
var fs_nodes: Array = get_tree().get_nodes_in_group('fs_group')
var init_data: Dictionary = {
'control_label': $control_result,
'power_amplifiers': power_amplifiers,
'fs_nodes': fs_nodes,
#'fs_nodes': fs_nodes,
'unit_prd': unit_prd_n,
'module_prd' : prd_n_module,
'constants': constants_n,

View File

@@ -79,12 +79,15 @@ var test = preload('res://scripts/pribor-prd.gd')
func on_state_mashine() -> void:
control_prd_v.state_control_machine()
block_kasseta_y5_prd_config_v = control_prd_v.block_kasseta_y5_config
var nodes_y5: Array = get_tree().get_nodes_in_group('y-5')
for node_y5 in nodes_y5:
var meta_y5 = node_y5.get_meta('y5')
if block_kasseta_y5_prd_config_v.has(meta_y5):
if block_kasseta_y5_prd_config_v['yau07'] == false:
node_y5.state = STATE_VAL.ERROR if meta_y5 == 'yau07' else STATE_VAL.NONE
return
node_y5.state = STATE_VAL.GOOD if block_kasseta_y5_prd_config_v[meta_y5] else STATE_VAL.ERROR
block_ip_config_v = control_prd_v.block_ip_config

View File

@@ -1,10 +1,9 @@
[gd_scene load_steps=15 format=3 uid="uid://cvskpe1ti3p45"]
[gd_scene load_steps=14 format=3 uid="uid://cvskpe1ti3p45"]
[ext_resource type="Script" uid="uid://cvuosuvjaci1h" path="res://scenes/pribor-prd-v/pribor-prd-v.gd" id="1_c20s6"]
[ext_resource type="PackedScene" uid="uid://d3iqb5e4g81m5" path="res://scenes/контроль/элемент-г.tscn" id="2_xpo4b"]
[ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="3_wyy1b"]
[ext_resource type="PackedScene" uid="uid://bk1655p4e8y4u" path="res://scenes/контроль/кассета-у-5-нв.tscn" id="4_gl2bl"]
[ext_resource type="Script" uid="uid://dow4nqi6hbak8" path="res://scenes/контроль/кассета-у-5.gd" id="5_6p5qb"]
[ext_resource type="PackedScene" uid="uid://cd5sue1e8iyrv" path="res://scenes/pribor-prd-n/kasseta-fs-nd.tscn" id="5_nhd2k"]
[ext_resource type="Script" uid="uid://crpedygm3gohi" path="res://scenes/контроль/кассета.gd" id="6_os4mt"]
[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/элемент-в.tscn" id="7_38u2b"]
@@ -112,8 +111,6 @@ offset_left = 175.0
offset_top = 242.0
offset_right = 485.0
offset_bottom = 432.0
script = ExtResource("5_6p5qb")
fname = "Кассета У5"
[node name="kasseta_FS_VD" parent="." instance=ExtResource("5_nhd2k")]
layout_mode = 0

View File

@@ -1,24 +1,25 @@
class TestPRD extends Node:
const RAY_25_1:= 'ray_25_1'
const RAY_25_2:= 'ray_25_2'
const RAY_25_3:= 'ray_25_3'
const RAY_25_4:= 'ray_25_4'
const RAY_25_5:= 'ray_25_5'
const RAY_25_6:= 'ray_25_6'
const RAY_25_7:= 'ray_25_7'
const RAY_m5:= 'RAY_m5'
const RAY_5:= 'RAY_5'
const RAY_15:= 'RAY_15'
const RAY_25:= 'RAY_25'
const RAY_35:= 'RAY_35'
const RAY_45:= 'RAY_45'
enum STATE_VAL { NONE = 0, GOOD = 1, ERROR = 2 }
enum STATE_MASHINE {
INIT,
FS_TURN_ON,
FS_WORK,
WRITE_ISA,
READ_ISA,
CHEK_KASSETA_Y5,
UG_SET_RAY,
UG_SET_RAY_0,
UG_SET_RAY_1,
UG_SET_RAY_2,
UG_SET_RAY_3,
UG_SET_RAY_4,
UG_SET_RAY_5,
UG_SET_RAY_6,
UM_RUN,
FS_TURN_OFF,
STOP_CONTROL,
@@ -42,13 +43,13 @@ class TestPRD extends Node:
}
var power_result: Dictionary = {
RAY_25_1: [],
RAY_25_2: [],
RAY_25_3: [],
RAY_25_4: [],
RAY_25_5: [],
RAY_25_6: [],
RAY_25_7: [],
1: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],},
2: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],},
3: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],},
4: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],},
5: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],},
6: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],},
7: {RAY_m5: [], RAY_5: [], RAY_15: [], RAY_25: [], RAY_35: [], RAY_45: [],},
}
var constants: Dictionary
var pribor_config: Dictionary
@@ -61,13 +62,11 @@ class TestPRD extends Node:
var self_name: String
var state: int = STATE_MASHINE.INIT
var current_fs: int
var flag_check_dkm: bool
var flag_timer_started: bool
var flag_timer_started: bool = false
#var ug_online: bool
var unit_prd: Object
var module_prd: Object
var power_amplify: Array
var fs_array_node: Array
var control_label: Label
var control_timer: Timer = Timer.new()
@@ -76,7 +75,6 @@ class TestPRD extends Node:
func _init(init_data: Dictionary) -> void:
control_label = init_data['control_label']
power_amplify = init_data['power_amplifiers']
fs_array_node = init_data['fs_nodes']
unit_prd = init_data['unit_prd']
module_prd = init_data['module_prd']
constants = init_data['constants']
@@ -109,17 +107,26 @@ class TestPRD extends Node:
block_ip_config = check_block_ip(status, block_ip_config)
check_temperature_um(status, power_amplify)
_process_dkm_status(status)
if current_fs != 0:
var tek_litera: Dictionary = power_result[current_fs]
var interes = _get_ray_key(state)
print('interes: ', interes)
if interes != '':
var arr_pow = tek_litera[interes]
tek_litera[_get_ray_key(state)] = power_um_ukp(status, current_fs, tek_litera[_get_ray_key(state)])
power_result[current_fs] = tek_litera
## Пакеты от MP550Service
func on_fs_update_state(packet_type_7: Dictionary, fs_mapping: Dictionary, fs_array: Array) -> void:
func on_fs_update_state(packet_type_7: Dictionary, fs_mapping: Dictionary) -> void:
var fs_key: String = FS_KEYS.get(current_fs, '')
if fs_key.is_empty():
return
var fs_result := {fs_key: STATE_VAL.NONE}
fs_result = on_fs_state(packet_type_7, fs_mapping, fs_result)
_update_fs_states(fs_result, fs_array)
block_fs_config[fs_key] = fs_result[fs_key]
##
func state_control_machine() -> void:
@@ -128,11 +135,41 @@ class TestPRD extends Node:
_handle_init_state()
STATE_MASHINE.FS_TURN_ON:
_handle_fs_turn_on_state()
STATE_MASHINE.CHEK_KASSETA_Y5:
pass
state = STATE_MASHINE.FS_WORK
STATE_MASHINE.FS_WORK:
_handle_fs_work_state()
if not flag_timer_started:
_handle_fs_work_state()
STATE_MASHINE.CHEK_KASSETA_Y5:
if block_kasseta_y5_config['yau07']:
state = STATE_MASHINE.WRITE_ISA
else:
print_debug('Яу-07Б: нет связи ', block_kasseta_y5_config)
STATE_MASHINE.WRITE_ISA:
_handle_ug_set_state(0x6)
STATE_MASHINE.READ_ISA:
_handle_read_isa(module_prd, unit_prd, [constants.ADDR_UG_LITERA_1, constants.ADDR_UG_LITERA_2, constants.ADDR_UG_LITERA_3])
state = STATE_MASHINE.UG_SET_RAY
STATE_MASHINE.UG_SET_RAY:
var addr: int = constants.ADDR_UG_LITERA_1
if current_fs == 3 or current_fs == 5 or current_fs == 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:
state = STATE_MASHINE.UG_SET_RAY_2
elif unit_prd.isa_ports[addr] & 0x07 == 2:
state = STATE_MASHINE.UG_SET_RAY_3
elif unit_prd.isa_ports[addr] & 0x07 == 3:
state = STATE_MASHINE.UG_SET_RAY_4
elif unit_prd.isa_ports[addr] & 0x07 == 4:
state = STATE_MASHINE.UG_SET_RAY_5
elif unit_prd.isa_ports[addr] & 0x07 == 5:
state = STATE_MASHINE.FS_TURN_OFF
elif unit_prd.isa_ports[addr] & 0x07 == 6:
state = STATE_MASHINE.UG_SET_RAY_0
STATE_MASHINE.UG_SET_RAY_0:
_handle_ug_set_state(0x0)
STATE_MASHINE.UG_SET_RAY_1:
@@ -145,8 +182,6 @@ class TestPRD extends Node:
_handle_ug_set_state(0x4)
STATE_MASHINE.UG_SET_RAY_5:
_handle_ug_set_state(0x5)
STATE_MASHINE.UG_SET_RAY_6:
_handle_ug_set_state(0x6)
STATE_MASHINE.UM_RUN:
flag_timer_started = _handle_um_run_state()
STATE_MASHINE.FS_TURN_OFF:
@@ -162,28 +197,28 @@ class TestPRD extends Node:
else:
control_results = on_control_result(block_ip_config, block_dkm_config, block_fs_config, control_results)
state = STATE_MASHINE.AWAIT
print_debug(power_result)
func _handle_fs_turn_on_state() -> void:
control_label.text = 'Выполняется включение ФС-%s' % current_fs
manage_fs(true, self_name, pribor_config, fs_parameters, current_fs, constants.POWER_UM)
#control_timer.wait_time = constants.TIMER_DELAY
#control_timer.start()
state = STATE_MASHINE.FS_WORK
control_timer.wait_time = constants.TIMER_DELAY
control_timer.start()
func _handle_fs_work_state() -> void:
control_label.text = 'Выполняется проверка ФС-%s' % current_fs
if not module_prd.unit_yau07.online:
return
if (current_fs == 2 and block_fs_config.fs_2 and not flag_timer_started) or \
(current_fs == 3 and block_fs_config.fs_3 and not flag_timer_started) or \
(current_fs == 4 and block_fs_config.fs_4 and not flag_timer_started) or \
(current_fs == 5 and block_fs_config.fs_5 and not flag_timer_started) or \
(current_fs == 6 and block_fs_config.fs_6 and not flag_timer_started) or \
(current_fs == 7 and block_fs_config.fs_7 and not flag_timer_started) or \
(current_fs == 1 and block_fs_config.fs_1 and not flag_timer_started):
state = STATE_MASHINE.UG_SET_RAY_6
if (current_fs == 2 and block_fs_config.fs_2) or \
(current_fs == 3 and block_fs_config.fs_3) or \
(current_fs == 4 and block_fs_config.fs_4) or \
(current_fs == 5 and block_fs_config.fs_5) or \
(current_fs == 6 and block_fs_config.fs_6) or \
(current_fs == 7 and block_fs_config.fs_7) or \
(current_fs == 1 and block_fs_config.fs_1):
state = STATE_MASHINE.CHEK_KASSETA_Y5
func _handle_ug_set_state(RAY_DOU_NUM: int) -> void:
@@ -217,7 +252,7 @@ class TestPRD extends Node:
func _handle_um_run_state() -> bool:
control_label.text = 'Выполняется настройка ЭМС'
module_prd.cmd_array.append([unit_prd.CmdCode.WRITE_ISA, [constants.BASE_ADDR_EMS_G, 6666]])
state = STATE_MASHINE.FS_WORK
state = STATE_MASHINE.READ_ISA
return true
@@ -231,7 +266,6 @@ class TestPRD extends Node:
control_label.text = 'Выполняется завершение проверки ФС-%s' % current_fs
control_results = power_um_control_result(control_results, constants, power_result)
flag_timer_started = false
flag_check_dkm = false
_advance_to_next_fs()
state = STATE_MASHINE.INIT
@@ -251,7 +285,7 @@ class TestPRD extends Node:
func initialize_connections() -> void:
_determine_self_name()
var fs_mapping = _create_fs_mapping(self_name)
signaller.conn(signaller.fs_update_state, Callable(self, 'on_fs_update_state').bind(fs_mapping, fs_array_node))
signaller.conn(signaller.fs_update_state, Callable(self, 'on_fs_update_state').bind(fs_mapping))
unit_prd.connect('data_received', Callable(self, 'on_data_received'))
@@ -275,10 +309,6 @@ class TestPRD extends Node:
var dkm_bit = _get_dkm_bit_for_current_fs()
block_dkm_config = check_dkm(status, dkm_bit, block_dkm_config)
flag_check_dkm = block_dkm_config[_get_dkm_key_for_current_fs()]
if flag_check_dkm:
power_result[_get_ray_key_for_current_fs()] = power_um_ukp(status, current_fs, power_result[_get_ray_key_for_current_fs()])
func _get_current_fs_key() -> String:
return FS_KEYS.get(current_fs, '')
@@ -308,27 +338,17 @@ class TestPRD extends Node:
_: return ''
func _get_ray_key_for_current_fs() -> String:
match current_fs:
1: return RAY_25_1
2: return RAY_25_2
3: return RAY_25_3
4: return RAY_25_4
5: return RAY_25_5
6: return RAY_25_6
7: return RAY_25_7
static func _get_ray_key(machine_state: int) -> String:
match machine_state:
STATE_MASHINE.UG_SET_RAY_0: return RAY_m5
STATE_MASHINE.UG_SET_RAY_1: return RAY_5
STATE_MASHINE.UG_SET_RAY_2: return RAY_15
STATE_MASHINE.UG_SET_RAY_3: return RAY_25
STATE_MASHINE.UG_SET_RAY_4: return RAY_35
STATE_MASHINE.UG_SET_RAY_5: return RAY_45
_: return ''
func _update_fs_states(fs_result: Dictionary, fs_array: Array) -> void:
for fs in fs_array:
var fs_meta: String = fs.get_meta('fs')
if fs_result.has(fs_meta):
var new_state = fs_result[fs_meta]
fs.state = new_state
block_fs_config[fs_meta] = new_state
func on_stop_control() -> void:
state = STATE_MASHINE.FS_TURN_OFF
@@ -337,22 +357,22 @@ class TestPRD extends Node:
var all_blocks_ip_ok = true
var all_blocks_dkm_ok = true
var all_blocks_fs_ok = true
for block in ip_config:
if not ip_config[block][1]:
all_blocks_ip_ok = false
ctrl_results['block_ip'] = all_blocks_ip_ok
for block in dkm_config:
if not dkm_config[block]:
all_blocks_dkm_ok = false
ctrl_results['dkm'] = all_blocks_dkm_ok
for block in fs_config:
if not fs_config[block]:
all_blocks_fs_ok = false
ctrl_results['fs'] = all_blocks_fs_ok
return ctrl_results
@@ -365,22 +385,24 @@ class TestPRD extends Node:
settings_ug.ADDR_UG_LITERA_2, result_2,
settings_ug.ADDR_UG_LITERA_3, settings_ug.ATT_UM_3]])
prd_module.cmd_array.append([prd_unit.CmdCode.READ_ISA, [settings_ug.ADDR_UG_LITERA_1, settings_ug.ADDR_UG_LITERA_2, settings_ug.ADDR_UG_LITERA_3]])
static func _handle_read_isa(prd_module: Object, prd_unit: Object, read_isa_ports: Array) -> void:
prd_module.cmd_array.append([prd_unit.CmdCode.READ_ISA, read_isa_ports])
static func power_um_control_result(ctrl_results: Dictionary, constan: Dictionary, pwr_result: Dictionary) -> Dictionary:
ctrl_results['power_um'] = true
for amp_array in pwr_result.values():
if amp_array.size() == 0:
ctrl_results['power_um'] = false
return ctrl_results
for amp_array in pwr_result.values():
for value in amp_array:
if value < constan.TEMP_THRESHOLD:
ctrl_results['power_um'] = false
break
#for amp_array in pwr_result.values():
#for value in amp_array:
#if value < constan.TEMP_THRESHOLD:
#ctrl_results['power_um'] = false
#break
return ctrl_results
@@ -417,8 +439,8 @@ class TestPRD extends Node:
var status = status_prd[byte_dry] >> bit & 1
ip_config[block][1] = false if status else true
return ip_config
## Проверка кассеты у-5 (ЯУ-07Б, ЭМС-Г, УГ, УКП-1, УКП-2)
static func check_block_kasseta_y5(status_prd: PackedByteArray, y5_config: Dictionary) -> Dictionary:
y5_config.yau07 = true
@@ -441,7 +463,7 @@ class TestPRD extends Node:
const TEMP: float = 115.0 / (Constants.MAXIMUM_CODE_ADC - Constants.MINIMUM_CODE_AD)
var ukp1_online: int = (status_prd[0] >> 2) & 1
var ukp2_online = (status_prd[0] >> 3) & 1
if ukp1_online:
var tmp_1: int
var temperature_ukp_1: int
@@ -449,7 +471,7 @@ class TestPRD extends Node:
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
if power_amplifier.size() > 12: # Темпуратура от УМ литеры 1
temperature_ukp_1 = status_prd.decode_u16(Constants.TEMPERATURE_UKP_1 + 2 * 7)
tmp_1 = round(Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - temperature_ukp_1) * TEMP + 3)