From 800549c6fc85d1a88986158d3f1d577b8f360cf1 Mon Sep 17 00:00:00 2001 From: Maxim Name Date: Fri, 27 Jun 2025 03:58:37 +0300 Subject: [PATCH 1/6] =?UTF-8?q?=D0=9E=D1=82=D0=BB=D0=B0=D0=B4=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=BF=D0=B0=D0=BA=D0=B5=D1=82=D0=B0=20=D1=82=D0=B8=D0=BF-7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-prd-n/pribor-prd-n.tscn | 1 - scenes/pribor-prd-v/pribor_prd_v.gd | 59 +++++++++++++++++++++++++++ scenes/pribor-uyep/sch3.tscn | 11 ----- scripts/prd.gd | 2 +- 4 files changed, 60 insertions(+), 13 deletions(-) diff --git a/scenes/pribor-prd-n/pribor-prd-n.tscn b/scenes/pribor-prd-n/pribor-prd-n.tscn index f97936e4..1e23a7ec 100644 --- a/scenes/pribor-prd-n/pribor-prd-n.tscn +++ b/scenes/pribor-prd-n/pribor-prd-n.tscn @@ -376,7 +376,6 @@ fname = "УМ1535А" rname = "A18" [node name="Monitoring_panel" type="Panel" parent="."] -visible = false layout_mode = 0 theme_override_styles/panel = SubResource("StyleBoxTexture_bnnv3") diff --git a/scenes/pribor-prd-v/pribor_prd_v.gd b/scenes/pribor-prd-v/pribor_prd_v.gd index 7a947355..22753d57 100644 --- a/scenes/pribor-prd-v/pribor_prd_v.gd +++ b/scenes/pribor-prd-v/pribor_prd_v.gd @@ -29,6 +29,7 @@ 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() + _on_control_fs(true) func set_default_state() -> void: @@ -62,10 +63,55 @@ func on_data_received(unit_prd: Object) -> void: 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) + ## Проверка касет П1 и ИП МА2000 func check_block_ip(status_prd: PackedByteArray) -> void : @@ -132,3 +178,16 @@ func check_dkm(status_prd: PackedByteArray, bit_dkm: int) -> void: elif bit_dkm == bit_dkm_4: $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 + + +func _on_control_fs(mode: bool): + var interfer_name: String + var fs_arr: Array + if mode: + interfer_name = 'srnm2' + fs_arr = [[90.0, 2450.0, 1500.0, 23]] + else: + interfer_name = 'off' + 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) diff --git a/scenes/pribor-uyep/sch3.tscn b/scenes/pribor-uyep/sch3.tscn index a175a03f..2905b587 100644 --- a/scenes/pribor-uyep/sch3.tscn +++ b/scenes/pribor-uyep/sch3.tscn @@ -136,17 +136,6 @@ theme_override_font_sizes/font_size = 17 text = "УФ" vertical_alignment = 1 -[node name="switch0" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch", "c111"]] -editor_description = "Питание УФ" -material = SubResource("ShaderMaterial_c1mqk") -layout_mode = 2 -size_flags_horizontal = 2 -tooltip_text = "Выключатель питания УФ" -button_pressed = true -action_mode = 0 -script = ExtResource("7_l6esm") -metadata/bits = [0, 0, 2, 0] - [node name="state1" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]] custom_minimum_size = Vector2(24, 24) layout_mode = 2 diff --git a/scripts/prd.gd b/scripts/prd.gd index 733fee09..8d4e3261 100644 --- a/scripts/prd.gd +++ b/scripts/prd.gd @@ -348,7 +348,7 @@ func on_data_capsrpb_received(unit0: capsrpb.CapsRpb): if unit0.json_dic['ts'] != 7: return if not unit0.json_dic.has('msfs'): return - var msfs = unit.json_dic['msfs'] + var msfs = unit0.json_dic['msfs'] for fs in msfs: if fs is Dictionary: if not fs.has('nmfs'): From 36a502c0fd48044347d16626acb0db9a71d90d07 Mon Sep 17 00:00:00 2001 From: Maxim Date: Thu, 3 Jul 2025 11:04:40 +0300 Subject: [PATCH 2/6] =?UTF-8?q?=D0=9E=D1=82=D0=BB=D0=B0=D0=B4=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB=D1=8F=20=D0=9F?= =?UTF-8?q?=D0=A0=D0=94.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=BE=20=D1=83=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=D0=BC=20=D0=B3=D0=B5=D0=BD=D0=B5=D1=80=D0=B0=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=BE=D0=BC=20=D1=84=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-prd-v/pribor_prd_v.gd | 169 ++++++++++++++++------------ 1 file changed, 100 insertions(+), 69 deletions(-) diff --git a/scenes/pribor-prd-v/pribor_prd_v.gd b/scenes/pribor-prd-v/pribor_prd_v.gd index 22753d57..5a87062e 100644 --- a/scenes/pribor-prd-v/pribor_prd_v.gd +++ b/scenes/pribor-prd-v/pribor_prd_v.gd @@ -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 From 06458c3da8a04592212b916c04970ee58d85edf5 Mon Sep 17 00:00:00 2001 From: Maxim Name Date: Fri, 27 Jun 2025 07:49:04 +0300 Subject: [PATCH 3/6] =?UTF-8?q?=D0=A0=D0=B0=D1=81=D0=BF=D0=B0=D0=BA=D0=BE?= =?UTF-8?q?=D0=B2=D0=BA=D0=B0=20=D0=BF=D0=B0=D0=BA=D0=B5=D1=82=D0=B0=20?= =?UTF-8?q?=D1=82=D0=B8=D0=BF-7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-prd-v/pribor_prd_v.gd | 10 ++++++++-- scripts/prd.gd | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/scenes/pribor-prd-v/pribor_prd_v.gd b/scenes/pribor-prd-v/pribor_prd_v.gd index 5a87062e..e179b5f9 100644 --- a/scenes/pribor-prd-v/pribor_prd_v.gd +++ b/scenes/pribor-prd-v/pribor_prd_v.gd @@ -26,6 +26,7 @@ var timer_03: Timer = Timer.new() func _ready() -> void: + signaller.conn(signaller.fs_update_state, Callable(self, 'on_fs_update_state')) var unit_key = settings.get_unit_key(get_meta('unit_name')[0]) var unit_prd = network.units[unit_key] unit_prd.connect('data_received', Callable(self, 'on_data_received')) @@ -34,7 +35,7 @@ func _ready() -> void: 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 + timer_03.wait_time = 5.0 _on_control_fs(true) timer_03.start() @@ -221,4 +222,9 @@ func _on_control_fs(mode: bool) -> void: func on_timer_03() -> void: _on_control_fs(false) print('stop timer') - pass + + +func on_fs_update_state(packet_type_7: Dictionary): + for fs in packet_type_7: + if packet_type_7[fs].isg == 1: + print([packet_type_7[fs].index, packet_type_7[fs].isg]) diff --git a/scripts/prd.gd b/scripts/prd.gd index 8d4e3261..2141471c 100644 --- a/scripts/prd.gd +++ b/scripts/prd.gd @@ -347,7 +347,7 @@ func on_data_capsrpb_received(unit0: capsrpb.CapsRpb): if not unit0.json_dic.has('ts'): return if unit0.json_dic['ts'] != 7: return if not unit0.json_dic.has('msfs'): return - + var msfs = unit0.json_dic['msfs'] for fs in msfs: if fs is Dictionary: From 2ade939e88237ef1e17c34b380b7753bd4e7cb70 Mon Sep 17 00:00:00 2001 From: Maxim Name Date: Thu, 3 Jul 2025 18:48:20 +0300 Subject: [PATCH 4/6] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=20=D0=BC?= =?UTF-8?q?=D0=B5=D1=80=D0=B4=D0=B6=D0=B5=D0=BC=20=D1=81=20=D0=9F=D0=B0?= =?UTF-8?q?=D1=88=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-prd-v/pribor_prd_v.gd | 50 +++++++++++++++++++++++------ 1 file changed, 41 insertions(+), 9 deletions(-) diff --git a/scenes/pribor-prd-v/pribor_prd_v.gd b/scenes/pribor-prd-v/pribor_prd_v.gd index e179b5f9..36ea912e 100644 --- a/scenes/pribor-prd-v/pribor_prd_v.gd +++ b/scenes/pribor-prd-v/pribor_prd_v.gd @@ -16,6 +16,7 @@ var count_packet_1:int = 0 var power_array_1: Array = [] var count_packet_2:int = 0 var power_array_2: Array = [] +var currecnt_unit: String enum STATE_VAL { NONE = 0, @@ -23,21 +24,20 @@ enum STATE_VAL { ERROR = 2 } var timer_03: Timer = Timer.new() +var fl_fs_1: bool = false +var fl_fs_2: bool = false func _ready() -> void: signaller.conn(signaller.fs_update_state, Callable(self, 'on_fs_update_state')) var unit_key = settings.get_unit_key(get_meta('unit_name')[0]) var unit_prd = network.units[unit_key] + currecnt_unit = unit_prd.name 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 = 5.0 - _on_control_fs(true) - timer_03.start() func set_default_state() -> void: @@ -50,6 +50,7 @@ func on_line_changed(unit_prd: Object) -> void: set_default_state() +# Основной процесс по принятию и обработки пакетов func on_data_received(unit_prd: Object) -> void: if not is_inside_tree(): return @@ -150,9 +151,9 @@ func _process_ems_data(status: PackedByteArray) -> void: func _process_ukp_power(status: PackedByteArray) -> void: - var in_blank: int = status.decode_u16(IN_BLANK_PRD) + #var in_blank: int = status.decode_u16(IN_BLANK_PRD) ## Мощность УМ от УКП 1 - if (in_blank >> CI_4_OT_FS) & 1: + if fl_fs_1: check_dkm(status, bit_dkm_3) ## Мощность УМ от УКП 1 @@ -177,7 +178,7 @@ func _process_ukp_power(status: PackedByteArray) -> void: count_packet_1 += 1 ## Мощность УМ от УКП 2 - if (in_blank >> CI_5_OT_FS) & 1: + if fl_fs_2: check_dkm(status, bit_dkm_4) ## Мощность УМ от УКП 2 @@ -221,10 +222,41 @@ func _on_control_fs(mode: bool) -> void: func on_timer_03() -> void: _on_control_fs(false) + fl_fs_1 = false + fl_fs_2 = false print('stop timer') func on_fs_update_state(packet_type_7: Dictionary): + var parts = currecnt_unit.split('-') + var last_part = parts[-1] # Прибор for fs in packet_type_7: - if packet_type_7[fs].isg == 1: - print([packet_type_7[fs].index, packet_type_7[fs].isg]) + if fs == 12 and last_part == '1в': + $kasseta_FS_VD/ref_A3.state = STATE_VAL.GOOD if packet_type_7[fs].isg == 1 else STATE_VAL.ERROR if packet_type_7[fs].isg == 0 else STATE_VAL.NONE + if packet_type_7[fs].isg == 1: + if not fl_fs_1: + timer_03.one_shot = true + timer_03.wait_time = 0.5 + _on_control_fs(true) + timer_03.start() + fl_fs_1 = true + if fs == 13 and last_part == '4в': + $kasseta_FS_VD/ref_A3.state = STATE_VAL.GOOD if packet_type_7[fs].isg == 1 else STATE_VAL.ERROR if packet_type_7[fs].isg == 0 else STATE_VAL.NONE + if packet_type_7[fs].isg == 1: + fl_fs_1 = true + if fs == 14 and last_part == '3в': + $kasseta_FS_VD/ref_A3.state = STATE_VAL.GOOD if packet_type_7[fs].isg == 1 else STATE_VAL.ERROR if packet_type_7[fs].isg == 0 else STATE_VAL.NONE + if fs == 15 and last_part == '2в': + $kasseta_FS_VD/ref_A3.state = STATE_VAL.GOOD if packet_type_7[fs].isg == 1 else STATE_VAL.ERROR if packet_type_7[fs].isg == 0 else STATE_VAL.NONE + + if fs == 16 and last_part == '1в': + $kasseta_FS_VD/ref_A4.state = STATE_VAL.GOOD if packet_type_7[fs].isg == 1 else STATE_VAL.ERROR if packet_type_7[fs].isg == 0 else STATE_VAL.NONE + if packet_type_7[fs].isg == 1: + fl_fs_2 = true + if fs == 17 and last_part == '4в': + $kasseta_FS_VD/ref_A4.state = STATE_VAL.GOOD if packet_type_7[fs].isg == 1 else STATE_VAL.ERROR if packet_type_7[fs].isg == 0 else STATE_VAL.NONE + if fs == 18 and last_part == '3в': + $kasseta_FS_VD/ref_A4.state = STATE_VAL.GOOD if packet_type_7[fs].isg == 1 else STATE_VAL.ERROR if packet_type_7[fs].isg == 0 else STATE_VAL.NONE + if fs == 19 and last_part == '2в': + $kasseta_FS_VD/ref_A4.state = STATE_VAL.GOOD if packet_type_7[fs].isg == 1 else STATE_VAL.ERROR if packet_type_7[fs].isg == 0 else STATE_VAL.NONE + From 6a26e2561998124fc4b29ef27ac16aa610d0af24 Mon Sep 17 00:00:00 2001 From: Maxim Name Date: Thu, 3 Jul 2025 19:35:09 +0300 Subject: [PATCH 5/6] =?UTF-8?q?=D0=BE=D1=82=D0=BB=D0=B0=D0=B6=D0=B5=D0=BD?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB=D1=8C=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B4-=D0=B2=20=D1=81=20=D0=B2=D0=BA=D0=BB=D1=8E=D1=87?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC/=D0=BE=D1=82=D0=BA=D0=BB=D1=8E?= =?UTF-8?q?=D1=87=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC=20=D1=84=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-prd-v/pribor_prd_v.gd | 36 +++++++++++------------------ scripts/interfer.gd | 4 +--- 2 files changed, 14 insertions(+), 26 deletions(-) diff --git a/scenes/pribor-prd-v/pribor_prd_v.gd b/scenes/pribor-prd-v/pribor_prd_v.gd index 36ea912e..51fd9514 100644 --- a/scenes/pribor-prd-v/pribor_prd_v.gd +++ b/scenes/pribor-prd-v/pribor_prd_v.gd @@ -23,9 +23,8 @@ enum STATE_VAL { GOOD = 1, ERROR = 2 } -var timer_03: Timer = Timer.new() -var fl_fs_1: bool = false -var fl_fs_2: bool = false +var control_timer: Timer = Timer.new() +var flag_control: bool = false func _ready() -> void: @@ -36,8 +35,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')) + self.add_child(control_timer) + control_timer.connect('timeout', Callable(self, 'on_stop_control')) + _on_control_fs(true) + control_timer.one_shot = true + control_timer.wait_time = 2.0 + control_timer.start() func set_default_state() -> void: @@ -153,7 +156,7 @@ func _process_ems_data(status: PackedByteArray) -> void: func _process_ukp_power(status: PackedByteArray) -> void: #var in_blank: int = status.decode_u16(IN_BLANK_PRD) ## Мощность УМ от УКП 1 - if fl_fs_1: + if flag_control: check_dkm(status, bit_dkm_3) ## Мощность УМ от УКП 1 @@ -177,8 +180,7 @@ func _process_ukp_power(status: PackedByteArray) -> void: power_amplifier[i].state = STATE_VAL.GOOD if power_array_1[i] > 40 else STATE_VAL.ERROR count_packet_1 += 1 - ## Мощность УМ от УКП 2 - if fl_fs_2: + ## Мощность УМ от УКП 2 check_dkm(status, bit_dkm_4) ## Мощность УМ от УКП 2 @@ -199,7 +201,6 @@ func _process_ukp_power(status: PackedByteArray) -> void: 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 @@ -211,19 +212,19 @@ func _on_control_fs(mode: bool) -> void: var interfer_name: String var fs_arr: Array if mode: + flag_control = true interfer_name = 'srnm2' fs_arr = [[90.0, 2450.0, 1500.0, 23]] else: + flag_control = false interfer_name = 'off' 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: +func on_stop_control() -> void: _on_control_fs(false) - fl_fs_1 = false - fl_fs_2 = false print('stop timer') @@ -233,17 +234,8 @@ func on_fs_update_state(packet_type_7: Dictionary): for fs in packet_type_7: if fs == 12 and last_part == '1в': $kasseta_FS_VD/ref_A3.state = STATE_VAL.GOOD if packet_type_7[fs].isg == 1 else STATE_VAL.ERROR if packet_type_7[fs].isg == 0 else STATE_VAL.NONE - if packet_type_7[fs].isg == 1: - if not fl_fs_1: - timer_03.one_shot = true - timer_03.wait_time = 0.5 - _on_control_fs(true) - timer_03.start() - fl_fs_1 = true if fs == 13 and last_part == '4в': $kasseta_FS_VD/ref_A3.state = STATE_VAL.GOOD if packet_type_7[fs].isg == 1 else STATE_VAL.ERROR if packet_type_7[fs].isg == 0 else STATE_VAL.NONE - if packet_type_7[fs].isg == 1: - fl_fs_1 = true if fs == 14 and last_part == '3в': $kasseta_FS_VD/ref_A3.state = STATE_VAL.GOOD if packet_type_7[fs].isg == 1 else STATE_VAL.ERROR if packet_type_7[fs].isg == 0 else STATE_VAL.NONE if fs == 15 and last_part == '2в': @@ -251,8 +243,6 @@ func on_fs_update_state(packet_type_7: Dictionary): if fs == 16 and last_part == '1в': $kasseta_FS_VD/ref_A4.state = STATE_VAL.GOOD if packet_type_7[fs].isg == 1 else STATE_VAL.ERROR if packet_type_7[fs].isg == 0 else STATE_VAL.NONE - if packet_type_7[fs].isg == 1: - fl_fs_2 = true if fs == 17 and last_part == '4в': $kasseta_FS_VD/ref_A4.state = STATE_VAL.GOOD if packet_type_7[fs].isg == 1 else STATE_VAL.ERROR if packet_type_7[fs].isg == 0 else STATE_VAL.NONE if fs == 18 and last_part == '3в': diff --git a/scripts/interfer.gd b/scripts/interfer.gd index 5366e905..f69836d3 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -56,13 +56,11 @@ class Interfer: data_to_json['ss'] = msg_num data_to_json['ispp'] = ispp data_to_json['krp'] = krp - if get_params.size() < 1: - get_params.append('soc_temp') - data_to_json['get'] = get_params if krp != INTERFER_OFF: data_to_json['kni'] = kni data_to_json['powp'] = powp # TODO: Необходимо добавить управление мощностью data_to_json['params'] = params + data_to_json['get'] = get_params var pac = JSON.stringify(data_to_json).to_utf8_buffer() return pac From 5eb0b338d5b76f5f16d1dc81e2f534336145b52d Mon Sep 17 00:00:00 2001 From: Maxim Name Date: Thu, 3 Jul 2025 22:26:17 +0300 Subject: [PATCH 6/6] =?UTF-8?q?=D0=B4=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D1=81=D0=BE=D1=81=D1=82=D0=BE=D1=8F=D0=BD=D0=B8?= =?UTF-8?q?=D0=B9=20=D0=98=D0=9F=20=D0=BF=D1=80=D0=B8=20=D0=BE=D1=82=D1=81?= =?UTF-8?q?=D1=83=D1=82=D1=81=D1=82=D0=B2=D0=B8=D0=B8=20=D1=8F=D1=83-07?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-prd-v/pribor_prd_v.gd | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/scenes/pribor-prd-v/pribor_prd_v.gd b/scenes/pribor-prd-v/pribor_prd_v.gd index 51fd9514..01f9134a 100644 --- a/scenes/pribor-prd-v/pribor_prd_v.gd +++ b/scenes/pribor-prd-v/pribor_prd_v.gd @@ -44,6 +44,12 @@ func _ready() -> void: func set_default_state() -> void: + $kasseta_P_1/ref_A19.state = STATE_VAL.NONE + $kasseta_P_1/ref_A20.state = STATE_VAL.NONE + $kasseta_P_1/ref_A21.state = STATE_VAL.NONE + $maa2000_A23.state = STATE_VAL.NONE + $maa2000_A22.state = STATE_VAL.NONE + for group in get_tree().get_nodes_in_group('power_amplifier'): group.state = STATE_VAL.NONE @@ -213,7 +219,7 @@ func _on_control_fs(mode: bool) -> void: var fs_arr: Array if mode: flag_control = true - interfer_name = 'srnm2' + interfer_name = 'k1' fs_arr = [[90.0, 2450.0, 1500.0, 23]] else: flag_control = false