Доработка. Добавлен модуль работы с ЭМС-Г. При выходе на связь загружает настройки в ячейки ЭМС-Г.
This commit is contained in:
@@ -38,6 +38,7 @@ config/unit_rr_left_bort="http://127.0.0.1:8080/reports/left_SelfTestReport.json
|
||||
config/unit_rr_right_bort="http://127.0.0.1:8080/reports/right_SelfTestReport.json"
|
||||
config/unit_rr_request_period=5.0
|
||||
config/kems_files_path="user://kems/"
|
||||
config/emsg_files_path="user://emsg/"
|
||||
|
||||
[autoload]
|
||||
|
||||
@@ -55,6 +56,7 @@ threats="*res://scripts/threats.gd"
|
||||
yemsdevs="*res://scripts/yems-devs.gd"
|
||||
yemsboards="*res://scripts/yems-boards.gd"
|
||||
yemsconsts="*res://scripts/yems-consts.gd"
|
||||
yemsg="*res://scripts/yems-g.gd"
|
||||
interfer="*res://scripts/interfer.gd"
|
||||
hotkeys="*res://scripts/hotkeys.gd"
|
||||
mercator="*res://scripts/mercator.gd"
|
||||
|
||||
@@ -26,7 +26,7 @@ func on_btn_cancel_pressed(btn, nodes):
|
||||
signaller.emit_signal('interfer_off_all')
|
||||
await get_tree().create_timer(0.1).timeout
|
||||
btn.pressed = false
|
||||
nodes.any(func(btn): btn.pressed = false)
|
||||
nodes.any(func(btn_node): btn_node.pressed = false)
|
||||
|
||||
|
||||
func on_btn_pressed(btn_this, btn_others):
|
||||
|
||||
@@ -175,7 +175,7 @@ func map_threat_to_bip(th: threats.Threat, bip: Control):
|
||||
var sector_width = 50.0
|
||||
for key in fs_freq:
|
||||
var freq_range = fs_freq[key]
|
||||
var num_values = (freq_range[1]- freq_range[0]) / sector_width
|
||||
var _num_values = (freq_range[1]- freq_range[0]) / sector_width
|
||||
if freq_range[0] <= freq and freq <= freq_range[1]:
|
||||
sector_key = key
|
||||
break
|
||||
@@ -502,6 +502,7 @@ func set_btns_disabled(value: bool, btn):
|
||||
else:
|
||||
btn.set_disabled(value)
|
||||
|
||||
|
||||
func on_fs_update_color(ecms):
|
||||
fs_active.clear()
|
||||
for ecm in ecms.values():
|
||||
|
||||
@@ -133,7 +133,7 @@ func on_btn_flash_write(btn):
|
||||
func init_tbl_files():
|
||||
check_dir()
|
||||
$scrl_files/tbl_files.set_header([TableHeader, TableHeader, TableHeader])
|
||||
$scrl_files/tbl_files.set_header_text(['Имя файла', 'Дата изменения', 'Размер'])
|
||||
$scrl_files/tbl_files.set_header_text(['Имя файла', 'Размер', 'Дата изменения'])
|
||||
$scrl_files/tbl_files.set_columns_min_size([200, 120, 70])
|
||||
tools.fill_files_table($scrl_files/tbl_files, yemsconsts.files_folder, FILES_ROWS_TYPES)
|
||||
$scrl_files/tbl_files.set_columns_alignments(yemsconsts.FILES_ROWS_ALIGNMENT)
|
||||
|
||||
@@ -5,22 +5,22 @@ class_name rep_settings extends Node
|
||||
|
||||
@export var UnitProfiles: = { \
|
||||
# Название | Протокол | Адрес | Порт | Широковещательное | Привязывать к адресу | Комментарий
|
||||
'уарэп-яу07-частный': ['yau07rx', '10.1.1.2', [50002], false, true, 'IP-адрес на котором принимают частные сообщения от ЯУ-07'],
|
||||
'уарэп-яу07-частный': ['yau07rx', '10.1.1.5', [50005], false, true, 'IP-адрес на котором принимают частные сообщения от ЯУ-07'],
|
||||
'уарэп-яу07-общий': ['yau07rx', '*', [50000], true, true, 'IP-адрес на котором принимают широковещательные сообщения от ЯУ-07'],
|
||||
'уарэп-капсрпб': ['json-capsrpb', '127.0.0.1', [42023, 42022], false, true, 'IP-адрес на котором принимают сообщения от КАПС РПБ'],
|
||||
'уарэп-эмс': ['yau07tx', '10.1.1.52', [50052], false, false, 'IP-адрес ЯУ-07 прибора УФ'],
|
||||
'уарэп-яу07-2в': ['yau07tx', '10.1.1.34', [50034], false, false, 'IP-адрес ЯУ-07 прибора ПРД-В'],
|
||||
'уарэп-яу07-2н': ['yau07tx', '10.1.1.33', [50033], false, false, 'IP-адрес ЯУ-07 прибора ПРД-Н'],
|
||||
'уарэп-яу07-2к': ['yau07tx', '10.1.1.35', [50035], false, false, 'IP-адрес ЯУ-07 прибора ПРД-К'],
|
||||
'уарэп-яу07-4в': ['yau07tx', '10.1.1.66', [50066], false, false, 'IP-адрес ЯУ-07 прибора ПРД-В'],
|
||||
'уарэп-яу07-4н': ['yau07tx', '10.1.1.65', [50065], false, false, 'IP-адрес ЯУ-07 прибора ПРД-Н'],
|
||||
'уарэп-яу07-4к': ['yau07tx', '10.1.1.67', [50067], false, false, 'IP-адрес ЯУ-07 прибора ПРД-К'],
|
||||
'уарэп-яу07-1в': ['yau07tx', '10.1.1.18', [50018], false, false, 'IP-адрес ЯУ-07 прибора ПРД-В'],
|
||||
'уарэп-яу07-1н': ['yau07tx', '10.1.1.17', [50017], false, false, 'IP-адрес ЯУ-07 прибора ПРД-Н'],
|
||||
'уарэп-яу07-1к': ['yau07tx', '10.1.1.19', [50019], false, false, 'IP-адрес ЯУ-07 прибора ПРД-К'],
|
||||
'уарэп-яу07-3в': ['yau07tx', '10.1.1.50', [50050], false, false, 'IP-адрес ЯУ-07 прибора ПРД-В'],
|
||||
'уарэп-яу07-3н': ['yau07tx', '10.1.1.49', [50049], false, false, 'IP-адрес ЯУ-07 прибора ПРД-Н'],
|
||||
'уарэп-яу07-3к': ['yau07tx', '10.1.1.51', [50051], false, false, 'IP-адрес ЯУ-07 прибора ПРД-Н'],
|
||||
'уарэп-яу07-2в': ['yau07tx', '10.1.1.22', [50022], false, false, 'IP-адрес ЯУ-07 прибора ПРД-В'],
|
||||
'уарэп-яу07-2н': ['yau07tx', '10.1.1.21', [50021], false, false, 'IP-адрес ЯУ-07 прибора ПРД-Н'],
|
||||
'уарэп-яу07-2к': ['yau07tx', '10.1.1.23', [50023], false, false, 'IP-адрес ЯУ-07 прибора ПРД-К'],
|
||||
'уарэп-яу07-4в': ['yau07tx', '10.1.1.42', [50042], false, false, 'IP-адрес ЯУ-07 прибора ПРД-В'],
|
||||
'уарэп-яу07-4н': ['yau07tx', '10.1.1.41', [50041], false, false, 'IP-адрес ЯУ-07 прибора ПРД-Н'],
|
||||
'уарэп-яу07-4к': ['yau07tx', '10.1.1.43', [50043], false, false, 'IP-адрес ЯУ-07 прибора ПРД-К'],
|
||||
'уарэп-яу07-1в': ['yau07tx', '10.1.1.12', [50012], false, false, 'IP-адрес ЯУ-07 прибора ПРД-В'],
|
||||
'уарэп-яу07-1н': ['yau07tx', '10.1.1.11', [50011], false, false, 'IP-адрес ЯУ-07 прибора ПРД-Н'],
|
||||
'уарэп-яу07-1к': ['yau07tx', '10.1.1.13', [50013], false, false, 'IP-адрес ЯУ-07 прибора ПРД-К'],
|
||||
'уарэп-яу07-3в': ['yau07tx', '10.1.1.32', [50032], false, false, 'IP-адрес ЯУ-07 прибора ПРД-В'],
|
||||
'уарэп-яу07-3н': ['yau07tx', '10.1.1.31', [50031], false, false, 'IP-адрес ЯУ-07 прибора ПРД-Н'],
|
||||
'уарэп-яу07-3к': ['yau07tx', '10.1.1.33', [50033], false, false, 'IP-адрес ЯУ-07 прибора ПРД-Н'],
|
||||
|
||||
# Название: [ Протокол, Адрес, Порт получения, Комментарий ]
|
||||
'уарэп-5п28': [ '5p28', '127.0.0.1', [50000], 'IP-адрес комплекса 5П-28'],
|
||||
|
||||
@@ -24,6 +24,7 @@ class YaU07 extends unit.Unit:
|
||||
WRITE_FLASH_MP550 = 55, ## Код команды "записать данные из FLASH в КЭМС" ячейки ЯУ-07
|
||||
WRITE_BLOCK = 60, ## Код команды "записать блок данных ISA" внешней шины ячейки ЯУ-07
|
||||
READ_BLOCK = 61, ## Код команды "читать блок данных ISA" внешней шины ячейки ЯУ-07
|
||||
LOAD_EMG_DONE = 70, ## Код команды "читать блок данных ISA" внешней шины ячейки ЯУ-07
|
||||
}
|
||||
|
||||
var cmd_num_rx: = 0 ## Номер команды принятый
|
||||
@@ -171,6 +172,22 @@ class YaU07 extends unit.Unit:
|
||||
cmd_state = CmdState.SEND
|
||||
cmd_code_tx = cmd_code
|
||||
return true
|
||||
|
||||
func send_other(cmd_code: int):
|
||||
if (cmd_state == CmdState.WAIT) \
|
||||
or (cmd_state == CmdState.SEND) \
|
||||
or (cmd_state == CmdState.UNCK):
|
||||
return false
|
||||
if not (cmd_code == CmdCode.LOAD_EMG_DONE):
|
||||
return false
|
||||
cmd_num_tx = (cmd_num_rx + 1) % 0xffff
|
||||
tx_data.encode_u16(0, cmd_retry)
|
||||
tx_data.encode_u16(2, cmd_num_tx)
|
||||
tx_data.encode_u8(6, cmd_code)
|
||||
tx_len = 7
|
||||
cmd_state = CmdState.SEND
|
||||
cmd_code_tx = cmd_code
|
||||
|
||||
## Возвращает код команды ЯУ-07.
|
||||
## rx_data - Принятые данные.
|
||||
## Возвращает - Код команды не найден, 0...255 - код команды.
|
||||
|
||||
@@ -2,7 +2,7 @@ class_name yems_boards extends Node
|
||||
|
||||
class EmsBoard:
|
||||
enum {WAIT, WR_DEV_NUM_W, WRITE, WR_DEV_NUM_R, READ, READ_FLASH, WRITE_FLASH,
|
||||
WRITE_FLASH_BEGIN, LOAD_KEMS, WRITE_FLASH_END} ## Состояния платы
|
||||
WRITE_FLASH_BEGIN, LOAD_KEMS, WRITE_FLASH_END, LOAD_FAIL} ## Состояния платы
|
||||
|
||||
var id_board: int ## id платы
|
||||
var in_devs: Dictionary ## Словарь с входными устройствами.
|
||||
@@ -25,9 +25,11 @@ class EmsBoard:
|
||||
var need_flash_rd: bool = false ## Флаг, что надо прочитать флеш
|
||||
var need_flash_wr: bool = false ## Флаг, что надо записать данные в флеш
|
||||
var need_write: bool = false ## Флаг, что надо записать данные в ячейку ЭМС
|
||||
var ems_g_fn: String = '' ## Имя файла настроек ЭМС-Г
|
||||
|
||||
signal upd_delay_offset(board, cur_dev) ## Согнал о обновлении данных задержек
|
||||
signal upd_delay_offset(board, cur_dev) ## Сигнал о обновлении данных задержек
|
||||
signal upd_o_state(board, cur_dev) ## Сигнал о обновлении данных режима выходов
|
||||
signal load_done(board) ## Сигнал о окончании загрузки данных в ячейку
|
||||
|
||||
func _init(id, base_addr, in_table, out_table, u):
|
||||
id_board = id
|
||||
@@ -41,11 +43,19 @@ class EmsBoard:
|
||||
|
||||
## Устанавливает состояние входов и выходов платы
|
||||
func set_status(status):
|
||||
var offset = yemsconsts.STATUS_OFFSET[id_board]
|
||||
var bit_online = 0 + id_board
|
||||
var bit_load = 3 + id_board
|
||||
online = (status[0] >> bit_online) & 1
|
||||
ems_load = (status[0] >> bit_load) & 1
|
||||
var offset = 0
|
||||
if id_board < 3:
|
||||
offset = yemsconsts.STATUS_OFFSET[id_board]
|
||||
var bit_online = 0 + id_board
|
||||
var bit_load = 3 + id_board
|
||||
online = (status[0] >> bit_online) & 1
|
||||
ems_load = (status[0] >> bit_load) & 1
|
||||
else:
|
||||
online = status[0] & 1
|
||||
var bit_load = 4
|
||||
ems_load = (status[0] >> bit_load) & 1
|
||||
if not online:
|
||||
need_write = true
|
||||
var in_blank = int(status[1 + offset] | (status[2 + offset] << 8) | (status[3 + offset] << 16) | \
|
||||
(status[4 + offset] << 24) | (status[5 + offset] << 32))
|
||||
var in_imp = int(status[7 + offset] | (status[8 + offset] << 8) | (status[9 + offset] << 16) | \
|
||||
@@ -271,3 +281,6 @@ class EmsBoard:
|
||||
else: continue
|
||||
if ports.has('%d'%(base_addr_isa + 10)):
|
||||
cur_dev.ports_data[base_addr_isa + 10] = int(ports['%d'%(base_addr_isa + 10)])
|
||||
|
||||
func set_load_done():
|
||||
unit_ems.send_other(unit_ems.CmdCode.LOAD_EMG_DONE)
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
class_name yerms_consts extends Node
|
||||
|
||||
var files_folder = ProjectSettings.get_setting('application/config/kems_files_path', 'user://kems/') # Папка с файлами вариантами настроек ЭМС
|
||||
var emsg_files_folder = ProjectSettings.get_setting('application/config/emsg_files_path', 'user://emsg/') # Папка с файлами вариантами настроек ЭМС
|
||||
|
||||
var FILES_ROWS_ALIGNMENT = [ HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER ]
|
||||
var FILES_COLUMN_WIDTHS = [ 90, 150, 150 ]
|
||||
|
||||
const NUM_INPUT = 38 ## Количество входных устройств
|
||||
const NUM_OUTPUT = 38 ## Количество выходных устройств
|
||||
const NUM_INPUT_G = 16 ## Количество входных устройств для ЭМС-Г
|
||||
const NUM_OUTPUT_G = 16 ## Количество выходных устройств для ЭМС-Г
|
||||
const NUM_BYTE_FROM_FLASH = 760 ## Количество байт для запись в flash
|
||||
const STATUS_OFFSET = { ## Смещение статуса, ключ id платы
|
||||
0: 0,
|
||||
@@ -32,6 +35,22 @@ const FILES_NAME = ['Вариант 1',
|
||||
'Вариант 5',
|
||||
]
|
||||
|
||||
## Первый элемент - имя юнита, второй - имя файла настроек
|
||||
const EMS_G_BOARDS = [
|
||||
['уарэп-яу07-2в','ЭМС-Г-В2'],
|
||||
['уарэп-яу07-2н','ЭМС-Г-Н2'],
|
||||
['уарэп-яу07-2к','ЭМС-Г-К2'],
|
||||
['уарэп-яу07-4в','ЭМС-Г-В4'],
|
||||
['уарэп-яу07-4н','ЭМС-Г-Н4'],
|
||||
['уарэп-яу07-4к','ЭМС-Г-К4'],
|
||||
['уарэп-яу07-1в','ЭМС-Г-В1'],
|
||||
['уарэп-яу07-1н','ЭМС-Г-Н1'],
|
||||
['уарэп-яу07-1к','ЭМС-Г-К1'],
|
||||
['уарэп-яу07-3в','ЭМС-Г-В3'],
|
||||
['уарэп-яу07-3н','ЭМС-Г-Н3'],
|
||||
['уарэп-яу07-3к','ЭМС-Г-К4'],]
|
||||
|
||||
|
||||
## Таблица с данными для входов, первое значение - индекс устройства в ячейке КЭМС.
|
||||
const INPUT_KEMS = [
|
||||
[1 ,['УИЗП №1', 'Х7', '0.00', '0.00']],
|
||||
|
||||
Reference in New Issue
Block a user