From d583c544fb739146ddd4b4213a9bdc483f9896f2 Mon Sep 17 00:00:00 2001 From: Maxim Date: Wed, 12 Feb 2025 09:19:28 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BE=D1=82=D0=BB=D0=B0=D0=B4=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=BC=D0=BE=D1=89=D0=BD=D0=BE=D1=81=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PRD_MP550.tscn | 63 ++++++++--------------------- Shaders/ray.gdshader | 6 +-- Shaders/ray_2.gdshader | 6 +-- scripts/PRD.gd | 30 +++++++------- scripts/control_panel.gd | 18 +++++++++ signals/FS_7.pcm | Bin 0 -> 477120 bytes signals/puls_1kHz.py | 84 +++++++++++++++++++++++++++++++++++++++ signals/pulse.pcm | Bin 0 -> 528000 bytes 8 files changed, 140 insertions(+), 67 deletions(-) create mode 100644 signals/FS_7.pcm create mode 100644 signals/puls_1kHz.py create mode 100644 signals/pulse.pcm diff --git a/PRD_MP550.tscn b/PRD_MP550.tscn index 8b80fd4..9556fa2 100644 --- a/PRD_MP550.tscn +++ b/PRD_MP550.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=57 format=3 uid="uid://cvor2jm4xk3ha"] +[gd_scene load_steps=53 format=3 uid="uid://cvor2jm4xk3ha"] [ext_resource type="Script" path="res://scripts/PRD.gd" id="1_v273n"] [ext_resource type="Texture2D" uid="uid://cdxdluvyb5uei" path="res://table/on.png" id="2_dv7xx"] @@ -19,23 +19,24 @@ [ext_resource type="Shader" path="res://Shaders/loadead.gdshader" id="16_4osrw"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_o0too"] -bg_color = Color(0.223529, 0.168627, 0.223529, 1) +bg_color = Color(0.447059, 0.0784314, 0.192157, 1) border_width_bottom = 6 -border_color = Color(0.339047, 0.26316, 0.339004, 1) +border_color = Color(0.396649, 0.0647458, 0.167246, 1) border_blend = true +corner_radius_top_left = 10 +corner_radius_bottom_left = 10 [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_eib3t"] -bg_color = Color(0.223529, 0.168627, 0.223529, 1) +bg_color = Color(0.252841, 0.19297, 0.252851, 1) border_width_bottom = 6 border_color = Color(0.228592, 0.173062, 0.22863, 1) border_blend = true +corner_radius_top_left = 10 +corner_radius_bottom_left = 10 [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_gooip"] bg_color = Color(0.143, 0.103, 0.143, 0.799) -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_lqhgx"] -bg_color = Color(0, 0, 0, 0.490196) - [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_148rs"] bg_color = Color(0.141176, 0.101961, 0.141176, 0.8) border_width_bottom = 4 @@ -58,13 +59,15 @@ bg_color = Color(0.141176, 0.101961, 0.141176, 0.8) [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_ls6vm"] [sub_resource type="Theme" id="Theme_k5ur4"] +Button/styles/focus = null +Button/styles/hover = SubResource("StyleBoxFlat_o0too") Button/styles/normal = SubResource("StyleBoxFlat_o0too") Button/styles/pressed = SubResource("StyleBoxFlat_eib3t") CheckButton/icons/checked = ExtResource("2_dv7xx") CheckButton/icons/unchecked = ExtResource("3_qvuyu") OptionButton/font_sizes/font_size = 17 OptionButton/styles/focus = SubResource("StyleBoxFlat_gooip") -OptionButton/styles/hover = SubResource("StyleBoxFlat_lqhgx") +OptionButton/styles/hover = SubResource("StyleBoxFlat_148rs") OptionButton/styles/normal = SubResource("StyleBoxFlat_148rs") OptionButton/styles/pressed = SubResource("StyleBoxFlat_ldbvf") TabContainer/styles/panel = SubResource("StyleBoxTexture_h8aei") @@ -77,11 +80,10 @@ shader = ExtResource("2_vn1it") shader_parameter/outerRadius = 4.0 shader_parameter/MainAlpha = 1.0 -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_pxarn"] -bg_color = Color(0.356863, 0.278431, 0.356863, 1) - [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_p247y"] -bg_color = Color(0.356863, 0.278431, 0.356863, 1) +bg_color = Color(0.294118, 0.231373, 0.294118, 1) +corner_radius_top_left = 10 +corner_radius_bottom_left = 10 [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_rh6pm"] @@ -116,6 +118,7 @@ shader = ExtResource("4_uy5o2") shader_parameter/color_signal = Color(0.588235, 0.466667, 0, 1) shader_parameter/turn = 0.785 shader_parameter/inner_radius = 0.32 +shader_parameter/speed = 0.0 [sub_resource type="Gradient" id="Gradient_ki0n7"] @@ -129,11 +132,7 @@ shader = ExtResource("8_12mng") shader_parameter/color_signal = Color(0.588242, 0.466356, 0, 1) shader_parameter/turn = 0.785 shader_parameter/inner_radius = 0.32 - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_45v75"] -bg_color = Color(0.6, 0.858824, 0.6, 1) - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_6s7bq"] +shader_parameter/speed = 0.0 [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_tn8m6"] @@ -218,7 +217,7 @@ offset_bottom = 156.0 focus_mode = 0 mouse_default_cursor_shape = 2 theme_override_font_sizes/font_size = 14 -theme_override_styles/pressed = SubResource("StyleBoxFlat_pxarn") +theme_override_styles/pressed = SubResource("StyleBoxFlat_p247y") toggle_mode = true button_pressed = true text = "ПРД" @@ -460,25 +459,6 @@ offset_bottom = 11.0 script = ExtResource("2_vmbyo") node_gap = Vector2(100, 50) -[node name="FS_mod" type="Button" parent="TabContainer/PRD"] -layout_mode = 2 -offset_left = 233.0 -offset_top = 240.0 -offset_right = 334.0 -offset_bottom = 273.0 -theme_override_styles/pressed = SubResource("StyleBoxFlat_45v75") -theme_override_styles/normal = SubResource("StyleBoxFlat_6s7bq") -text = "MSK" - -[node name="FS_mod_const" type="Button" parent="TabContainer/PRD"] -offset_left = 120.0 -offset_top = 241.0 -offset_right = 221.0 -offset_bottom = 274.0 -theme_override_styles/pressed = SubResource("StyleBoxFlat_45v75") -theme_override_styles/normal = SubResource("StyleBoxFlat_6s7bq") -text = "Const" - [node name="ControlPanel" type="Panel" parent="TabContainer"] visible = false layout_mode = 2 @@ -825,13 +805,6 @@ self_size = Vector2i(50, 174) fname = "ИП9-50" rname = "A22" -[node name="device" type="Label" parent="TabContainer/ControlPanel"] -layout_mode = 0 -offset_left = 1451.0 -offset_top = 792.0 -offset_right = 1616.0 -offset_bottom = 847.0 - [node name="DKM" type="Label" parent="TabContainer/ControlPanel"] layout_mode = 0 offset_left = 589.0 @@ -1052,8 +1025,6 @@ text = "Сохранить все настройки" [connection signal="pressed" from="Background/side_panel/save_config" to="." method="_on_save_config"] [connection signal="pressed" from="Background/side_panel/load_config" to="." method="_on_load_config"] [connection signal="pressed" from="read_isa" to="." method="_on_read_isa_pressed"] -[connection signal="pressed" from="TabContainer/PRD/FS_mod" to="." method="_on_fs_mod_pressed"] -[connection signal="pressed" from="TabContainer/PRD/FS_mod_const" to="." method="_on_fs_mod_const"] [connection signal="pressed" from="TabContainer/Modul_fs/set_space/set_ferq" to="TabContainer/Modul_fs" method="_on_set_ferq"] [connection signal="pressed" from="TabContainer/Modul_fs/set_space/set_att2" to="TabContainer/Modul_fs" method="_on_set_att"] [connection signal="pressed" from="TabContainer/Modul_fs/manage_panel/con" to="TabContainer/Modul_fs" method="_on_start"] diff --git a/Shaders/ray.gdshader b/Shaders/ray.gdshader index 57ce05e..037b71c 100644 --- a/Shaders/ray.gdshader +++ b/Shaders/ray.gdshader @@ -3,11 +3,11 @@ shader_type canvas_item; uniform vec4 color_signal: source_color; uniform float turn = 0.785; uniform float inner_radius = 0.32; +uniform float speed = 0.0; const float outer_radius = 0.109; -const float zoom = 100.0; -const float speed = 2.1; -const float size = 9.0; +const float zoom = 50.0; +const float size = 5.0; const float blur = 0.000001; const float fill_ratio = 0.03; diff --git a/Shaders/ray_2.gdshader b/Shaders/ray_2.gdshader index 57ce05e..037b71c 100644 --- a/Shaders/ray_2.gdshader +++ b/Shaders/ray_2.gdshader @@ -3,11 +3,11 @@ shader_type canvas_item; uniform vec4 color_signal: source_color; uniform float turn = 0.785; uniform float inner_radius = 0.32; +uniform float speed = 0.0; const float outer_radius = 0.109; -const float zoom = 100.0; -const float speed = 2.1; -const float size = 9.0; +const float zoom = 50.0; +const float size = 5.0; const float blur = 0.000001; const float fill_ratio = 0.03; diff --git a/scripts/PRD.gd b/scripts/PRD.gd index 0caa62e..f993f4d 100644 --- a/scripts/PRD.gd +++ b/scripts/PRD.gd @@ -229,7 +229,7 @@ func _on_read_isa(unit_isa_ports: Dictionary) -> void: $TabContainer/PRD/body_grid/litera_3_5_7/yau07b_control.get_node2(1, 4).select((isa_data[Constants.BASE_PORTS.UG+8] & 0x38)>>3) $TabContainer/PRD/body_grid/litera_3_5_7/PSK2/ray_2.material.set('shader_parameter/turn', 0.735 + 0.025 * (isa_data[Constants.BASE_PORTS.UG+8] & 0x7)) $TabContainer/PRD/body_grid/litera_3_5_7/PSK2/ray_2.material.set('shader_parameter/inner_radius', 0.8 - 0.01 * (isa_data[Constants.BASE_PORTS.UG+8] & 0x38)) - + for index in Constants.EMS_G_PORT_DATA_HOLDER.size(): var tmp_device_mode = Constants.EMS_G_PORT_DATA_HOLDER[index][0] if tmp_device_mode == 48: @@ -266,15 +266,19 @@ func _on_data_fs_1(fs_1_data): node_select_fs_1.set_node_text(2, 2, str(fs_1_data.decode_u64(0xC) / 1_000_000) + ' МГц') Constants.CMD.READ_ATT: if GRP == Constants.GROUP.RF: - node_select_fs_1.set_node_text(2, 3, '-' + str(fs_1_data.decode_float(0x18)) + ' dB') + node_select_fs_1.set_node_text(2, 3, str(fs_1_data.decode_float(0x18)) + ' dB') Constants.CMD.READ_GEN_STATUS: if GRP == Constants.GROUP.GENERATOR: if fs_1_data.decode_u32(0xC) == 0: node_select_fs_1.set_node_text(2, 5, 'Включен') node_select_fs_1.get_node2(2, 5).modulate = Color.AQUAMARINE + $TabContainer/PRD/body_grid/litera_2_4_6/PSK/ray_1.material.set('shader_parameter/speed', 2.5) + $TabContainer/PRD/body_grid/litera_2_4_6/fs_control.get_node2(1, 5).get_child(1).button_pressed = true else: node_select_fs_1.set_node_text(2, 5, 'Отключен') node_select_fs_1.get_node2(2, 5).modulate = Color.CRIMSON + $TabContainer/PRD/body_grid/litera_2_4_6/PSK/ray_1.material.set('shader_parameter/speed', 0.0) + $TabContainer/PRD/body_grid/litera_2_4_6/fs_control.get_node2(1, 5).get_child(1).button_pressed = false Constants.CMD.BASE_GET_CURRENT_TEMP: if GRP == Constants.GROUP.BASE: node_select_fs_1.set_node_text(2, 0, '%.2f' % fs_1_data.decode_float(0xC) + ' °C') @@ -293,15 +297,19 @@ func _on_data_fs_2(fs_2_data): node_select_fs_2.set_node_text(2, 2, str(fs_2_data.decode_u64(0xC) / 1_000_000) + ' МГц') Constants.CMD.READ_ATT: if GRP == Constants.GROUP.RF: - node_select_fs_2.set_node_text(2, 3, '-' + str(fs_2_data.decode_float(0x18)) + ' dB') + node_select_fs_2.set_node_text(2, 3, str(fs_2_data.decode_float(0x18)) + ' dB') Constants.CMD.READ_GEN_STATUS: if GRP == Constants.GROUP.GENERATOR: if fs_2_data.decode_u32(0xC) == 0: - node_select_fs_2.set_node_text(2, 4, 'Включен') - node_select_fs_2.get_node2(2, 4).modulate = Color.AQUAMARINE + node_select_fs_2.set_node_text(2, 5, 'Включен') + node_select_fs_2.get_node2(2, 5).modulate = Color.AQUAMARINE + $TabContainer/PRD/body_grid/litera_3_5_7/PSK2/ray_2.material.set('shader_parameter/speed', 2.5) + $TabContainer/PRD/body_grid/litera_3_5_7/fs_control.get_node2(1, 5).get_child(1).button_pressed = true else: - node_select_fs_2.set_node_text(2, 4, 'Отключен') - node_select_fs_2.get_node2(2, 4).modulate = Color.CRIMSON + node_select_fs_2.set_node_text(2, 5, 'Отключен') + node_select_fs_2.get_node2(2, 5).modulate = Color.CRIMSON + $TabContainer/PRD/body_grid/litera_3_5_7/PSK2/ray_2.material.set('shader_parameter/speed', 0.0) + $TabContainer/PRD/body_grid/litera_3_5_7/fs_control.get_node2(1, 5).get_child(1).button_pressed = false Constants.CMD.BASE_GET_CURRENT_TEMP: if GRP == Constants.GROUP.BASE: node_select_fs_2.set_node_text(2, 0, '%.2f' % fs_2_data.decode_float(0xC) + ' °C') @@ -649,11 +657,3 @@ func _on_modul_fs_2(modulation_select_2) -> void: Network.set_configure_gen_const_2() elif modulation_select_2 == 1: Network.set_configure_gen_msk_2() - - -func _on_fs_mod_pressed() -> void: - Network.set_configure_gen_msk() - - -func _on_fs_mod_const() -> void: - Network.set_configure_gen_const() diff --git a/scripts/control_panel.gd b/scripts/control_panel.gd index 3e2bf96..235e340 100644 --- a/scripts/control_panel.gd +++ b/scripts/control_panel.gd @@ -5,7 +5,15 @@ var node_cell_ind: Array var count_cell: int var past_pribor: int + func _ready() -> void: + + Network.connect('port_fs_opened_1', _on_fs_status_1.bind(Constants.STATE_VAL.GOOD)) + Network.connect('port_fs_closed_1', _on_fs_status_1.bind(Constants.STATE_VAL.ERROR)) + + Network.connect('port_fs_opened_2', _on_fs_status_2.bind(Constants.STATE_VAL.GOOD)) + Network.connect('port_fs_closed_2', _on_fs_status_2.bind(Constants.STATE_VAL.ERROR)) + self.add_child(timer) timer.connect('timeout', Callable(self, '_on_timer').bind(Network.unit)) timer.start(1) @@ -79,6 +87,7 @@ func _status_cell(status): for i in range(5, count_cell): node_cell_ind[i].state = Constants.STATE_VAL.NONE + func _status_prd(): var status: int = 0 for i in range(count_cell-3): @@ -199,3 +208,12 @@ func _draw_control_panel_prd(pribor): $soc_P1/MAA_2.rname = 'А28' # Кассета П-2 $soc_P2.visible = true + + +func _on_fs_status_1(_name_port, status_fs_1): + $Kasseta_FS/ref_A1.state = status_fs_1 + + +func _on_fs_status_2(_name_port, status_fs_2): + $Kasseta_FS/ref_A2.state = status_fs_2 + diff --git a/signals/FS_7.pcm b/signals/FS_7.pcm new file mode 100644 index 0000000000000000000000000000000000000000..2e3afd74b799e5f2d47f35fb018d50c2bf84d965 GIT binary patch literal 477120 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 literal 0 HcmV?d00001 diff --git a/signals/puls_1kHz.py b/signals/puls_1kHz.py new file mode 100644 index 0000000..54f445d --- /dev/null +++ b/signals/puls_1kHz.py @@ -0,0 +1,84 @@ +import numpy as np +from matplotlib import pyplot as plt +from scipy.io import wavfile + +Fs = 120e6 # Частота дискретизации +A0 = 65535 # Амплитуда сигнала +tp = 100e-6 # Длина импульса +Tp = 1000e-6 + tp # Длина между импульсами +Np = 1 # Количество импульсов + +Tr = Np*Tp + +N_fft = 2**22 +N=int(Tr*Fs) +nT=np.arange(N)/Fs + +def signal(t): + s = np.zeros_like(t) + mask = (0 <= t) & (t <= tp) + s[mask] = A0 + + return s + +def signal_pulse(t): + s = np.zeros_like(t) + for i in range(Np): + s += signal(t-i*Tp) + + return s + + +def spectr(s, Fs, N_fft): + S = np.fft.fft(s, n=N_fft) + S_fft = S/Fs + S_Power = S**2/(N*Fs) + + S_fft = np.abs(S_fft) + S_Power = np.abs(S_Power) + f_fft = np.fft.fftfreq(N_fft, d=1/Fs) + S_fft = np.fft.fftshift(S_fft) + S_Power = np.fft.fftshift(S_Power) + f_fft = np.fft.fftshift(f_fft) + return (S_fft, S_Power, f_fft) + + +S_sum = signal_pulse(nT) +S, Power, f = spectr(S_sum, Fs, N_fft) + +S = 20*np.log(S) +Power = 10*np.log(Power) + +S_sum_real = S_sum.real +S_sum_imag = S_sum.imag + +S_complex = np.zeros(int(len(S_sum)*2)) +S_complex [::2] = S_sum_real +S_complex [1::2] = S_sum_imag +S_complex = S_complex.astype('int16') + +with open ('pulse.pcm', 'wb') as File: + File.write(S_complex) + +plt.figure(1,figsize=(12, 8)) +plt.subplot(3,1,1) +plt.plot(nT,S_sum) +plt.xlabel('nT, с') +plt.ylabel('S, В') +plt.grid() + +plt.subplot(3,1,2) +plt.plot(f,S) +plt.xlabel('f, Гц') +plt.ylabel('$S_{dB}$, дБ') +plt.grid() + +plt.subplot(3,1,3) +plt.plot(f,Power) +plt.xlabel('f, Гц') +plt.ylabel('$S_{dB}^{2}$, дБ') +plt.grid() +plt.tight_layout() + +plt.show() + diff --git a/signals/pulse.pcm b/signals/pulse.pcm new file mode 100644 index 0000000000000000000000000000000000000000..f5dad73ec8ca44764dfe477b1a13f9092169c492 GIT binary patch literal 528000 zcmeIwK@9)^3<5Fyn`U1e>{Aj9G}k6|1{%