снятие мощности со всех лучей на приборе прд-н
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user