Отладка контроля ПРД. Добалено управлением генератором фс
This commit is contained in:
@@ -22,6 +22,8 @@ enum STATE_VAL {
|
||||
GOOD = 1,
|
||||
ERROR = 2 }
|
||||
|
||||
var timer_03: Timer = Timer.new()
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
var unit_key = settings.get_unit_key(get_meta('unit_name')[0])
|
||||
@@ -29,7 +31,12 @@ func _ready() -> void:
|
||||
unit_prd.connect('data_received', Callable(self, 'on_data_received'))
|
||||
unit_prd.connect('line_changed', Callable(self, 'on_line_changed'))
|
||||
set_default_state()
|
||||
self.add_child(timer_03)
|
||||
timer_03.connect('timeout', Callable(self, 'on_timer_03'))
|
||||
timer_03.one_shot = true
|
||||
timer_03.wait_time = 4.0
|
||||
_on_control_fs(true)
|
||||
timer_03.start()
|
||||
|
||||
|
||||
func set_default_state() -> void:
|
||||
@@ -49,72 +56,15 @@ func on_data_received(unit_prd: Object) -> void:
|
||||
check_block_ip(unit_prd.status)
|
||||
check_temperature_um(unit_prd.status)
|
||||
|
||||
## Контроль ЭМС
|
||||
var in_blank: int = unit_prd.status.decode_u16(IN_BLANK_PRD)
|
||||
var out_blank: int = unit_prd.status.decode_u16(OUT_BLANK_PRD)
|
||||
# Обработка данных ЭМС
|
||||
_process_ems_data(unit_prd.status)
|
||||
|
||||
$Monitoring_panel/in_fs_1.frame = (in_blank >> CI_4_OT_FS) & 1
|
||||
$Monitoring_panel/in_fs_2.frame = (in_blank >> CI_5_OT_FS) & 1
|
||||
|
||||
$Monitoring_panel/out_ems_1.frame = (out_blank >> CI_4_B_UF) & 1
|
||||
$Monitoring_panel/out_ems_2.frame = (out_blank >> CI_5_B_UF) & 1
|
||||
|
||||
## Мощность УМ от УКП 1
|
||||
if (in_blank >> CI_4_OT_FS) & 1:
|
||||
check_dkm(unit_prd.status, bit_dkm_3)
|
||||
|
||||
## Мощность УМ от УКП 1
|
||||
var arr_power_ukp_1: Array = []
|
||||
|
||||
if (unit_prd.status[0] >> 2) & 1:
|
||||
for i_power in range(6):
|
||||
var power_ukp_1 = unit_prd.status.decode_u16(POWER_UKP_1 + 2 * i_power)
|
||||
arr_power_ukp_1.append(power_ukp_1)
|
||||
|
||||
if count_packet_1 == 0:
|
||||
power_array_1 = arr_power_ukp_1
|
||||
else:
|
||||
for i in arr_power_ukp_1.size():
|
||||
if arr_power_ukp_1[i] > power_array_1[i]:
|
||||
power_array_1[i] = arr_power_ukp_1[i]
|
||||
|
||||
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
for i in 6:
|
||||
power_amplifier[i].value1 = '%d' % power_array_1[i]
|
||||
count_packet_1 += 1
|
||||
|
||||
## Мощность УМ от УКП 2
|
||||
if (in_blank >> CI_5_OT_FS) & 1:
|
||||
check_dkm(unit_prd.status, bit_dkm_4)
|
||||
|
||||
## Мощность УМ от УКП 2
|
||||
const bit_dkm_2: int = 2
|
||||
check_dkm(unit_prd.status, bit_dkm_2)
|
||||
|
||||
var arr_power_ukp_2: Array = []
|
||||
|
||||
if (unit_prd.status[0] >> 2) & 1:
|
||||
for i_power in range(6):
|
||||
var power_ukp_2 = unit_prd.status.decode_u16(POWER_UKP_2 + 2 * i_power)
|
||||
arr_power_ukp_2.append(power_ukp_2)
|
||||
|
||||
if count_packet_2 == 0:
|
||||
power_array_2 = arr_power_ukp_2
|
||||
else:
|
||||
for i in arr_power_ukp_2.size():
|
||||
if arr_power_ukp_2[i] > power_array_2[i]:
|
||||
power_array_2[i] = arr_power_ukp_2[i]
|
||||
|
||||
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
for i in 6:
|
||||
power_amplifier[i+6].value1 = '%d' % power_array_2[i]
|
||||
|
||||
count_packet_2 += 1
|
||||
#_on_control_fs(false)
|
||||
# Обработка мощности от УКП
|
||||
_process_ukp_power(unit_prd.status)
|
||||
|
||||
|
||||
## Проверка касет П1 и ИП МА2000
|
||||
func check_block_ip(status_prd: PackedByteArray) -> void :
|
||||
func check_block_ip(status_prd: PackedByteArray) -> void:
|
||||
var ug_online: bool = (status_prd[0] >> 1) & 1
|
||||
if ug_online:
|
||||
const BYTE_DRY_CONTACT: int = 27
|
||||
@@ -145,10 +95,13 @@ func check_block_ip(status_prd: PackedByteArray) -> void :
|
||||
|
||||
## Проверка температур УМ от УКП
|
||||
func check_temperature_um(status_prd: PackedByteArray) -> void:
|
||||
const CONST_MIN_TEMP: int = -25
|
||||
const MAXIMUM_CODE_ADC: int = 3796
|
||||
const MINIMUM_CODE_AD: int = 2660
|
||||
const TEMP: float = 115.0 / (MAXIMUM_CODE_ADC - MINIMUM_CODE_AD)
|
||||
const TEMP_CONSTANTS = {
|
||||
"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')
|
||||
@@ -157,14 +110,14 @@ func check_temperature_um(status_prd: PackedByteArray) -> void:
|
||||
if ukp1_online:
|
||||
for i_temp in range(6):
|
||||
var temperature_ukp_1: int = status_prd.decode_u16(TEMPERATURE_UKP_1 + 2 * i_temp)
|
||||
var tmp_1: int = round(CONST_MIN_TEMP + (MAXIMUM_CODE_ADC - temperature_ukp_1) * TEMP + 3)
|
||||
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
|
||||
|
||||
var ukp2_online = (status_prd[0] >> 3) & 1
|
||||
if ukp2_online:
|
||||
for i_temp in range(6):
|
||||
var temperature_ukp_2: int = status_prd.decode_u16(TEMPERATURE_UKP_2 + 2 * i_temp)
|
||||
var tmp_2: int = round(CONST_MIN_TEMP + (MAXIMUM_CODE_ADC - temperature_ukp_2) * TEMP + 3)
|
||||
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
|
||||
|
||||
|
||||
@@ -180,7 +133,79 @@ func check_dkm(status_prd: PackedByteArray, bit_dkm: int) -> void:
|
||||
$kasseta_FS_VD/ref_A2.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
|
||||
|
||||
func _on_control_fs(mode: bool):
|
||||
# Обрабатывает данные ЭМС и обновляет UI панели
|
||||
func _process_ems_data(status: PackedByteArray) -> void:
|
||||
## Контроль ЭМС
|
||||
var in_blank: int = status.decode_u16(IN_BLANK_PRD)
|
||||
var out_blank: int = status.decode_u16(OUT_BLANK_PRD)
|
||||
|
||||
# Обновление фреймов для входных сигналов
|
||||
$Monitoring_panel/in_fs_1.frame = (in_blank >> CI_4_OT_FS) & 1
|
||||
$Monitoring_panel/in_fs_2.frame = (in_blank >> CI_5_OT_FS) & 1
|
||||
|
||||
# Обновление фреймов для выходных сигналов ЭМС
|
||||
$Monitoring_panel/out_ems_1.frame = (out_blank >> CI_4_B_UF) & 1
|
||||
$Monitoring_panel/out_ems_2.frame = (out_blank >> CI_5_B_UF) & 1
|
||||
|
||||
|
||||
func _process_ukp_power(status: PackedByteArray) -> void:
|
||||
var in_blank: int = status.decode_u16(IN_BLANK_PRD)
|
||||
## Мощность УМ от УКП 1
|
||||
if (in_blank >> CI_4_OT_FS) & 1:
|
||||
check_dkm(status, bit_dkm_3)
|
||||
|
||||
## Мощность УМ от УКП 1
|
||||
var arr_power_ukp_1: Array = []
|
||||
|
||||
if (status[0] >> 2) & 1:
|
||||
for i_power in range(6):
|
||||
var power_ukp_1 = status.decode_u16(POWER_UKP_1 + 2 * i_power)
|
||||
arr_power_ukp_1.append(power_ukp_1)
|
||||
|
||||
if count_packet_1 == 0:
|
||||
power_array_1 = arr_power_ukp_1
|
||||
else:
|
||||
for i in arr_power_ukp_1.size():
|
||||
if arr_power_ukp_1[i] > power_array_1[i]:
|
||||
power_array_1[i] = arr_power_ukp_1[i]
|
||||
|
||||
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
for i in 6:
|
||||
power_amplifier[i].value1 = '%d' % power_array_1[i]
|
||||
power_amplifier[i].state = STATE_VAL.GOOD if power_array_1[i] > 40 else STATE_VAL.ERROR
|
||||
count_packet_1 += 1
|
||||
|
||||
## Мощность УМ от УКП 2
|
||||
if (in_blank >> CI_5_OT_FS) & 1:
|
||||
check_dkm(status, bit_dkm_4)
|
||||
|
||||
## Мощность УМ от УКП 2
|
||||
const bit_dkm_2: int = 2
|
||||
check_dkm(status, bit_dkm_2)
|
||||
|
||||
var arr_power_ukp_2: Array = []
|
||||
|
||||
if (status[0] >> 2) & 1:
|
||||
for i_power in range(6):
|
||||
var power_ukp_2 = status.decode_u16(POWER_UKP_2 + 2 * i_power)
|
||||
arr_power_ukp_2.append(power_ukp_2)
|
||||
|
||||
if count_packet_2 == 0:
|
||||
power_array_2 = arr_power_ukp_2
|
||||
else:
|
||||
for i in arr_power_ukp_2.size():
|
||||
if arr_power_ukp_2[i] > power_array_2[i]:
|
||||
power_array_2[i] = arr_power_ukp_2[i]
|
||||
|
||||
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
for i in 6:
|
||||
power_amplifier[i+6].value1 = '%d' % power_array_2[i]
|
||||
power_amplifier[i+6].state = STATE_VAL.GOOD if power_array_2[i] > 40 else STATE_VAL.ERROR
|
||||
|
||||
count_packet_2 += 1
|
||||
|
||||
|
||||
func _on_control_fs(mode: bool) -> void:
|
||||
var interfer_name: String
|
||||
var fs_arr: Array
|
||||
if mode:
|
||||
@@ -191,3 +216,9 @@ func _on_control_fs(mode: bool):
|
||||
fs_arr = [[90.0, 2450.0, 1500.0, 23]]
|
||||
print('interfer_init: ', interfer_name, fs_arr)
|
||||
signaller.emit_signal('interfer_init', interfer_name, fs_arr)
|
||||
|
||||
|
||||
func on_timer_03() -> void:
|
||||
_on_control_fs(false)
|
||||
print('stop timer')
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user