Files
uarep-ctl/scripts/prd.gd

169 lines
5.4 KiB
GDScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

extends Node
## Границы секторов блоков ФС по частоте в режиме РТО.
const fs_band_rto: Dictionary = {
0: [200.0, 250.0],
1: [250.0, 300.0],
2: [300.0, 350.0],
3: [350.0, 400.0],
4: [400.0, 450.0],
5: [450.0, 500.0],
6: [500.0, 550.0] }
## Границы секторов блоков ФС по частоте в режиме РЛС.
const fs_band_rls: Dictionary = {
0: [480.0, 490.0],
1: [490.0, 500.0],
2: [500.0, 510.0],
3: [510.0, 520.0],
4: [520.0, 530.0],
5: [530.0, 540.0],
6: [540.0, 550.0] }
## Границы секторов блоков ФС по пеленгу.
const fs_sectors: Dictionary = {
0: [0.0, 90.0],
3: [90.0, 180.0],
2: [180.0, 270.0],
1: [270.0, 360.0] }
const fs_freq: Dictionary = {
0: [390.0, 800.0, 200.0, 250.0, 433.0],
1: [800.0, 1065.0, 250.0, 300.0, 860.0],
2: [1065.0, 1210.0, 300.0, 350.0, 1137.0],
3: [1150.0, 1490.0, 350.0, 400.0, 1227.0],
4: [1490.0, 2000.0, 400.0, 450.0, 1575.0],
5: [2000.0, 3500.0, 450.0, 500.0, 2450.0],
6: [3500.0, 6000.0, 500.0, 550.0, 5800.0] }
const prd_names: Array = [
'уарэп-яу07-1н',
'уарэп-яу07-1в',
'уарэп-яу07-1к',
'уарэп-яу07-2н',
'уарэп-яу07-2в',
'уарэп-яу07-2к',
'уарэп-яу07-3н',
'уарэп-яу07-3в',
'уарэп-яу07-3к',
'уарэп-яу07-4н',
'уарэп-яу07-4в',
'уарэп-яу07-4к', ]
const fs_prd: Dictionary = {
0: ['уарэп-яу07-1к'],
1: ['уарэп-яу07-4к'],
2: ['уарэп-яу07-3к'],
3: ['уарэп-яу07-2к'],
4: ['уарэп-яу07-1н'],
5: ['уарэп-яу07-4н'],
6: ['уарэп-яу07-3н'],
7: ['уарэп-яу07-2н'],
8: ['уарэп-яу07-1н'],
9: ['уарэп-яу07-4н'],
10: ['уарэп-яу07-3н'],
11: ['уарэп-яу07-2н'],
12: ['уарэп-яу07-1в'],
13: ['уарэп-яу07-4в'],
14: ['уарэп-яу07-3в'],
15: ['уарэп-яу07-2в'],
16: ['уарэп-яу07-1в'],
17: ['уарэп-яу07-4в'],
18: ['уарэп-яу07-3в'],
19: ['уарэп-яу07-2в'],
20: ['уарэп-яу07-1к'],
21: ['уарэп-яу07-4к'],
22: ['уарэп-яу07-3к'],
23: ['уарэп-яу07-2к'],
24: ['уарэп-яу07-1к'],
25: ['уарэп-яу07-4к'],
26: ['уарэп-яу07-3к'],
27: ['уарэп-яу07-2к'], }
var fs_dict: Dictionary
var prd_dict: Dictionary
class Fs:
var index ## Индекс блока усилителей
var modulation: bool ## Состояние модуляции
var prd_name: String ## Ипя прибора ПРД в котором стоит модуль
signal update_modulation(index)
func _init(i, p_name):
prd_name = p_name
index = i
func set_modulation(val):
modulation = val
class PRD:
var prd_name: String ## Имя прибора
var unit_yau07 ## Юнит эмс
var fs_dic: Dictionary ## Массив блоков ФС
var yemsg_board ## Плата ЭМС-Г
func _init(u_name ,u, yems_board):
prd_name = u_name
unit_yau07 = u
yemsg_board = yems_board
func on_update_modulation(index):
yemsg_board.add_cmd(index/4, fs_dic[index].modulation)
func _ready() -> void:
for prd_name in prd_names:
var unit_key = settings.get_unit_key(prd_name)
var unit_prd = network.units[unit_key]
for yemsg_board in yemsg.ems_board.values():
if yemsg_board[1] == unit_prd:
var yemsg_b = yemsg_board[0]
var new_prd = PRD.new(prd_name, unit_prd, yemsg_b)
prd_dict[prd_name] = new_prd
for key in fs_prd.keys():
var fs = Fs.new(key, fs_prd[key][0])
fs_dict[key] = fs
if prd_dict.has(fs.prd_name):
prd_dict[fs.prd_name].fs_dic[key] = fs
fs.connect('update_modulation', prd_dict[fs.prd_name].on_update_modulation.bind(fs.index))
func get_fs_index(ecm, fs_index_arr):
var sector: int
var band: Array
var angle: float = ecm.kni + 45.0
if angle > 360.0:
angle -= 360.0
for sec in fs_sectors.values():
if float(angle) >= sec[0] and float(angle) <= sec[1]:
sector = fs_sectors.find_key(sec)
for diap in fs_freq.values():
if ecm.params.has('freq'):
if ecm.params['freq'] >= diap[0] and ecm.params['freq'] <= diap[1]:
band.append(fs_freq.find_key(diap))
for item in band:
fs_index_arr.append(item * 4 + sector)
func update_fs_state(ecms):
for fs in fs_dict.values():
fs.set_modulation(false)
for ecm in ecms.values():
var fs_ids: Array
get_fs_index(ecm, fs_ids)
for fs_index in fs_ids:
var fs = fs_dict[fs_index]
fs.set_modulation(ecm.modulation)
for prd_module in prd_dict.values():
if not prd_module.unit_yau07.online: continue
for fs in prd_module.fs_dic.values():
var dev_mode = prd_module.yemsg_board.get_dev_mode(fs.index)
var fs_state = 2
if fs.modulation:
fs_state = 3
if dev_mode != fs_state:
fs.emit_signal('update_modulation')