Merge remote-tracking branch 'sasha/master'

This commit is contained in:
MaD_CaT
2024-11-29 11:17:42 +03:00
17 changed files with 613 additions and 348 deletions

View File

@@ -10,7 +10,6 @@ import json
import argparse
import time
from socket import *
from threading import Timer
import logger
from pymodbus.client.sync import ModbusSerialClient
@@ -25,16 +24,6 @@ EXCEPT_MSGS = {
'<unknown>': 'ошибка: получена неверная команда'}
def on_timer(*args):
sock = args[0]
json_encoder = args[1]
udp_addr = args[2]
udp_port_tx = args[3]
tx_data = json_encoder.encode({'code': 'info', 'data': 'ok'})
sock.sendto(bytes(tx_data, 'utf-8'), (udp_addr, udp_port_tx))
Timer(1, on_timer, args).start()
def main():
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('--modbus-unit', default=1, type=int, help='Номер устройства Modbus')
@@ -45,13 +34,16 @@ def main():
parser.add_argument('--udp-port-tx', default=48000, type=int, help='Порт для отправки сообщений приложению')
opts, opts_unk = parser.parse_known_args()
print_opts_error(opts_unk)
run_sync_client(opts.udp_addr, opts.udp_port_rx, opts.udp_port_tx, opts.serial_port, opts.serial_baud, opts.modbus_unit)
while True:
run_sync_client(opts.udp_addr, opts.udp_port_rx, opts.udp_port_tx, opts.serial_port, opts.serial_baud, opts.modbus_unit)
time.sleep(3)
log.warning('Переподключение к серверу')
def run_sync_client(udp_addr, udp_port_rx, udp_port_tx, serial_port, serial_baud, unit_num):
sock = socket(AF_INET, SOCK_DGRAM)
sock.bind((udp_addr, udp_port_rx))
log.info('привязан к адресу %s:%d' % (udp_addr, udp_port_rx))
log.info('Привязан к адресу %s:%d' % (udp_addr, udp_port_rx))
json_decoder = json.JSONDecoder()
json_encoder = json.JSONEncoder()
@@ -60,11 +52,14 @@ def run_sync_client(udp_addr, udp_port_rx, udp_port_tx, serial_port, serial_baud
while not client.connect(): # Ждать подключения к серверу
time.sleep(3)
log.info('подключен к серверу через \"%s\" на скорости %d бод' % (serial_port, serial_baud))
Timer(1, on_timer, [sock, json_encoder, udp_addr, udp_port_tx]).start()
log.info('Подключен к серверу через \"%s\" на скорости %d бод' % (serial_port, serial_baud))
tx_data = json_encoder.encode({'code': 'info', 'data': 'ok'})
sock.sendto(bytes(tx_data, 'utf-8'), (udp_addr, udp_port_tx))
while True:
udp_data = sock.recv(2048) # Ждать команду от приложения
try:
udp_data = sock.recv(2048) # Ждать команду от приложения
except:
return
udp_data = udp_data.decode('utf-8')
message = json_decoder.decode(udp_data) # type: dict
@@ -108,14 +103,13 @@ def run_sync_client(udp_addr, udp_port_rx, udp_port_tx, serial_port, serial_baud
rc_msg = EXCEPT_MSGS[code]
tx_data = json_encoder.encode({'code': 'exception', 'data': rc_msg, 'unit': message['unit']})
sock.sendto(bytes(tx_data, 'utf-8'), (udp_addr, udp_port_tx))
log.error(
'ошибка при выполнении команды: \"%s\". данные: \"%s\", порт: \"%s\", скорость: %s'
log.error('Команда \"%s\" не выполнена. данные: \"%s\", порт: \"%s\", скорость: %s'
% (code, data, serial_port, serial_baud))
def print_opts_error(opts: list) -> None:
for opt in opts:
log.warning('внимание: неизвестный аргумент: \"%s\"' % opt)
log.warning('Неизвестный аргумент: \"%s\"' % opt)
if __name__ == '__main__':

View File

@@ -4,6 +4,7 @@ class_name frm_ecm_list extends NinePatchRect
## Called when the node enters the scene tree for the first time.
func _ready():
$grd_forced/btn_cancel.button_connect('pressed', Callable(self, 'on_btn_cancel_pressed').bind($grd_forced/btn_cancel))
$grd_forced/btn_panika.button_connect('pressed', Callable(self, 'on_btn_panika_pressed').bind($grd_forced/btn_panika))
func on_btn_cancel_pressed(btn):

View File

@@ -57,7 +57,7 @@ size_flags_vertical = 3
tooltip_text = "Включает принудительную помеху"
strips_rotation = 15.0
text = "СРН"
metadata/rfi_name = "ozp1"
metadata/rfi_name = "srn"
[node name="btn_jtids" parent="grd_forced" groups=["группа-принудительно"] instance=ExtResource("4_7ys3c")]
editor_description = "Кнопка для принудительного включения группы секторов в режим JTIDS"
@@ -66,7 +66,7 @@ size_flags_horizontal = 3
size_flags_vertical = 3
strips_rotation = 15.0
text = "СПРС"
metadata/rfi_name = "ozp1"
metadata/rfi_name = "sprs"
[node name="btn_kupd" parent="grd_forced" groups=["группа-принудительно"] instance=ExtResource("4_7ys3c")]
layout_mode = 2
@@ -75,7 +75,7 @@ size_flags_vertical = 3
tooltip_text = "Кнопка для принудительного включения группы секторов в режим КУПД"
strips_rotation = 15.0
text = "КУПД"
metadata/rfi_name = "ozp1"
metadata/rfi_name = "kupd"
[node name="btn_panika" parent="grd_forced" groups=["группа-принудительно"] instance=ExtResource("4_7ys3c")]
layout_mode = 2
@@ -84,7 +84,7 @@ size_flags_vertical = 3
tooltip_text = "Кнопка для принудительного включения группы секторов в режим КУПД"
strips_rotation = 15.0
text = "Паника"
metadata/rfi_name = "ozp1"
metadata/rfi_name = "<off>"
[node name="btn_cancel" parent="grd_forced" groups=["прин-секторы-срн"] instance=ExtResource("4_7ys3c")]
layout_mode = 2

View File

@@ -70,10 +70,10 @@ name_min_size0 = Vector2i(35, 20)
name_min_size1 = Vector2i(35, 20)
name_min_size2 = Vector2i(35, 20)
fname = "Канал 1"
metadata/value0 = "SelfTest[1].DevList[1].DevList[0]['CurrentValue']"
metadata/value1 = "SelfTest[2].DevList[1].DevList[0]['CurrentValue']"
metadata/value2 = "SelfTest[0].DevList[1].DevList[0]['ErCode']"
metadata/state = ["SelfTest[0].DevList[1].DevList[0]['ErCode']", "SelfTest[1].DevList[1].DevList[0]['ErCode']", "SelfTest[2].DevList[1].DevList[0]['ErCode']"]
metadata/value0 = "SelfTest[1].SystemList[1].DeviceList[0]['TestPassed']"
metadata/value1 = "SelfTest[2].SystemList[1].DevList[0]['TestPassed']"
metadata/value2 = "SelfTest[0].DevList[1].DevList[0]['TestPassed']"
metadata/state = ["SelfTest[0].DevList[1].DevList[0]['ErrorText']", "SelfTest[1].DevList[1].DevList[0]['ErrorText']", "SelfTest[2].DevList[1].DevList[0]['ErrorText']"]
[node name="kanal2" parent="konverter/grid" instance=ExtResource("2_dmhrm")]
layout_mode = 2
@@ -94,10 +94,10 @@ name_min_size0 = Vector2i(35, 20)
name_min_size1 = Vector2i(35, 20)
name_min_size2 = Vector2i(35, 20)
fname = "Канал 2"
metadata/value0 = "SelfTest[1].DevList[1].DevList[1]['CurrentValue']"
metadata/value1 = "SelfTest[2].DevList[1].DevList[1]['CurrentValue']"
metadata/value2 = "SelfTest[0].DevList[1].DevList[1]['ErCode']"
metadata/state = ["SelfTest[0].DevList[1].DevList[1]['ErCode']", "SelfTest[1].DevList[1].DevList[1]['ErCode']", "SelfTest[2].DevList[1].DevList[1]['ErCode']"]
metadata/value0 = "SelfTest[1].SystemList[1].DeviceList[1]['TestPassed']"
metadata/value1 = "SelfTest[2].SystemList[1].DevList[1]['TestPassedt']"
metadata/value2 = "SelfTest[0].SystemList[1].DeviceList[1]['TestPassed']"
metadata/state = ["SelfTest[0].DevList[1].DevList[1]['ErrorText']", "SelfTest[1].DevList[1].DevList[1]['ErrorText']", "SelfTest[2].DevList[1].DevList[1]['ErrorText']"]
[node name="kanal3" parent="konverter/grid" instance=ExtResource("2_dmhrm")]
layout_mode = 2
@@ -118,10 +118,10 @@ name_min_size0 = Vector2i(35, 20)
name_min_size1 = Vector2i(35, 20)
name_min_size2 = Vector2i(35, 20)
fname = "Канал 3"
metadata/value0 = "SelfTest[1].DevList[1].DevList[2]['CurrentValue']"
metadata/value1 = "SelfTest[2].DevList[1].DevList[2]['CurrentValue']"
metadata/value2 = "SelfTest[0].DevList[1].DevList[2]['ErCode']"
metadata/state = ["SelfTest[0].DevList[1].DevList[2]['ErCode']", "SelfTest[1].DevList[1].DevList[2]['ErCode']", "SelfTest[2].DevList[1].DevList[2]['ErCode']"]
metadata/value0 = "SelfTest[1].SystemList[1].DeviceList[2]['TestPassed']"
metadata/value1 = "SelfTest[2].SystemList[1].DevList[2]['TestPassed']"
metadata/value2 = "SelfTest[0].SystemList[1].DeviceList[2]['TestPassed']"
metadata/state = ["SelfTest[0].DevList[1].DevList[2]['ErrorText']", "SelfTest[1].DevList[1].DevList[2]['ErrorText']", "SelfTest[2].DevList[1].DevList[2]['ErrorText']"]
[node name="kanal4" parent="konverter/grid" instance=ExtResource("2_dmhrm")]
layout_mode = 2
@@ -142,10 +142,10 @@ name_min_size0 = Vector2i(35, 20)
name_min_size1 = Vector2i(35, 20)
name_min_size2 = Vector2i(35, 20)
fname = "Канал 4"
metadata/value0 = "SelfTest[1].DevList[1].DevList[3]['CurrentValue']"
metadata/value1 = "SelfTest[2].DevList[1].DevList[3]['CurrentValue']"
metadata/value2 = "SelfTest[0].DevList[1].DevList[3]['ErCode']"
metadata/state = ["SelfTest[0].DevList[1].DevList[3]['ErCode']", "SelfTest[1].DevList[1].DevList[3]['ErCode']", "SelfTest[2].DevList[1].DevList[3]['ErCode']"]
metadata/value0 = "SelfTest[1].SystemList[1].DeviceList[3]['TestPassed']"
metadata/value1 = "SelfTest[2].SystemList[1].DevList[3]['TestPassed']"
metadata/value2 = "SelfTest[0].SystemList[1].DeviceList[3]['TestPassed']"
metadata/state = ["SelfTest[0].DevList[1].DevList[3]['ErrorText']", "SelfTest[1].DevList[1].DevList[3]['ErrorText']", "SelfTest[2].DevList[1].DevList[3]['ErrorText']"]
[node name="kanal5" parent="konverter/grid" instance=ExtResource("2_dmhrm")]
layout_mode = 2
@@ -166,10 +166,10 @@ name_min_size0 = Vector2i(35, 20)
name_min_size1 = Vector2i(35, 20)
name_min_size2 = Vector2i(35, 20)
fname = "Канал 5"
metadata/value0 = "SelfTest[1].DevList[1].DevList[4]['CurrentValue']"
metadata/value1 = "SelfTest[2].DevList[1].DevList[4]['CurrentValue']"
metadata/value2 = "SelfTest[0].DevList[1].DevList[4]['ErCode']"
metadata/state = ["SelfTest[0].DevList[1].DevList[4]['ErCode']", "SelfTest[1].DevList[1].DevList[4]['ErCode']", "SelfTest[2].DevList[1].DevList[4]['ErCode']"]
metadata/value0 = "SelfTest[1].SystemList[1].DeviceList[4]['TestPassed']"
metadata/value1 = "SelfTest[2].SystemList[1].DevList[4]['TestPassed']"
metadata/value2 = "SelfTest[0].SystemList[1].DeviceList[4]['TestPassed']"
metadata/state = ["SelfTest[0].DevList[1].DevList[4]['ErrorText']", "SelfTest[1].DevList[1].DevList[4]['ErrorText']", "SelfTest[2].DevList[1].DevList[4]['ErrorText']"]
[node name="kanal6" parent="konverter/grid" instance=ExtResource("2_dmhrm")]
layout_mode = 2
@@ -190,10 +190,10 @@ name_min_size0 = Vector2i(35, 20)
name_min_size1 = Vector2i(35, 20)
name_min_size2 = Vector2i(35, 20)
fname = "Канал 6"
metadata/value0 = "SelfTest[1].DevList[1].DevList[5]['CurrentValue']"
metadata/value1 = "SelfTest[2].DevList[1].DevList[5]['CurrentValue']"
metadata/value2 = "SelfTest[0].DevList[1].DevList[5]['ErCode']"
metadata/state = ["SelfTest[0].DevList[1].DevList[5]['ErCode']", "SelfTest[1].DevList[1].DevList[5]['ErCode']", "SelfTest[2].DevList[1].DevList[5]['ErCode']"]
metadata/value0 = "SelfTest[1].SystemList[1].DeviceList[5]['TestPassed']"
metadata/value1 = "SelfTest[2].SystemList[1].DevList[5]['TestPassed']"
metadata/value2 = "SelfTest[0].SystemList[1].DeviceList[5]['TestPassed']"
metadata/state = ["SelfTest[0].DevList[1].DevList[5]['ErrorText']", "SelfTest[1].DevList[1].DevList[5]['ErrorText']", "SelfTest[2].DevList[1].DevList[5]['ErrorText']"]
[node name="kanal7" parent="konverter/grid" instance=ExtResource("2_dmhrm")]
layout_mode = 2
@@ -214,10 +214,10 @@ name_min_size0 = Vector2i(35, 20)
name_min_size1 = Vector2i(35, 20)
name_min_size2 = Vector2i(35, 20)
fname = "Канал 7"
metadata/value0 = "SelfTest[1].DevList[1].DevList[6]['CurrentValue']"
metadata/value1 = "SelfTest[2].DevList[1].DevList[6]['CurrentValue']"
metadata/value2 = "SelfTest[0].DevList[1].DevList[6]['ErCode']"
metadata/state = ["SelfTest[0].DevList[1].DevList[6]['ErCode']", "SelfTest[1].DevList[1].DevList[6]['ErCode']", "SelfTest[2].DevList[1].DevList[6]['ErCode']"]
metadata/value0 = "SelfTest[1].SystemList[1].DeviceList[6]['TestPassed']"
metadata/value1 = "SelfTest[2].SystemList[1].DevList[6]['TestPassed']"
metadata/value2 = "SelfTest[0].SystemList[1].DeviceList[6]['TestPassed']"
metadata/state = ["SelfTest[0].DevList[1].DevList[6]['ErrorText']", "SelfTest[1].DevList[1].DevList[6]['ErrorText']", "SelfTest[2].DevList[1].DevList[6]['ErrorText']"]
[node name="kanal8" parent="konverter/grid" instance=ExtResource("2_dmhrm")]
layout_mode = 2
@@ -238,10 +238,10 @@ name_min_size0 = Vector2i(35, 20)
name_min_size1 = Vector2i(35, 20)
name_min_size2 = Vector2i(35, 20)
fname = "Канал 8"
metadata/value0 = "SelfTest[1].DevList[1].DevList[7]['CurrentValue']"
metadata/value1 = "SelfTest[2].DevList[1].DevList[7]['CurrentValue']"
metadata/value2 = "SelfTest[0].DevList[1].DevList[7]['ErCode']"
metadata/state = ["SelfTest[0].DevList[1].DevList[7]['ErCode']", "SelfTest[1].DevList[1].DevList[7]['ErCode']", "SelfTest[2].DevList[1].DevList[7]['ErCode']"]
metadata/value0 = "SelfTest[1].SystemList[1].DeviceList[7]['TestPassed']"
metadata/value1 = "SelfTest[2].SystemList[1].DevList[7]['TestPassed']"
metadata/value2 = "SelfTest[0].SystemList[1].DeviceList[7]['TestPassed']"
metadata/state = ["SelfTest[0].DevList[1].DevList[7]['ErrorText']", "SelfTest[1].DevList[1].DevList[7]['ErrorText']", "SelfTest[2].DevList[1].DevList[7]['ErrorText']"]
[node name="antenna1" type="NinePatchRect" parent="."]
layout_mode = 0
@@ -283,9 +283,8 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 1"
metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[0]['CurrentValue']"
metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[0]['CurrentValue']"
metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[0]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[0]['ErCode']"]
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[0]['TestPassed']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[0]['ErrorText']"]
[node name="yelement2" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -297,9 +296,8 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 2"
metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[1]['CurrentValue']"
metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[1]['CurrentValue']"
metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[1]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[1]['ErCode']"]
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[1]['TestPassed']"
metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[1]['ErrorText']"]
[node name="yelement3" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -311,8 +309,8 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 3"
metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[2]['CurrentValue']"
metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[2]['CurrentValue']"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[2]['TestPassed']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[0].DevList[2]['ErrorText']"
metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[2]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[2]['ErCode']"]
[node name="yelement4" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
@@ -325,9 +323,8 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 4"
metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[3]['CurrentValue']"
metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[3]['CurrentValue']"
metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[3]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[3]['ErCode']"]
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[3[]'TestPassed']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[3]['ErrorText']"]
[node name="yelement5" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -339,9 +336,8 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 5"
metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[4]['CurrentValue']"
metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[4]['CurrentValue']"
metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[4]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[4]['ErCode']"]
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[4]['TestPassed']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[4]['ErrorText']"]
[node name="yelement6" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -353,8 +349,8 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 6"
metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[5]['CurrentValue']"
metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[5]['CurrentValue']"
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[5]['TestPassed']"
metadata/value1 = "SelfTest[3].SystemList[0].SystemList[0].DevList[5]['ErrorText']"
metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[5]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[5]['ErCode']"]
[node name="yelement7" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
@@ -367,9 +363,8 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 7"
metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[6]['CurrentValue']"
metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[6]['CurrentValue']"
metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[6]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[6]['ErCode']"]
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[6]['TestPassed']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[6]['ErrorText']"]
[node name="yelement8" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -381,9 +376,8 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 8"
metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[7]['CurrentValue']"
metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[7]['CurrentValue']"
metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[7]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[7]['ErCode']"]
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[7]['TestPassed']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[7]['ErrorText']"]
[node name="yelement9" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -395,9 +389,8 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 9"
metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[8]['CurrentValue']"
metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[8]['CurrentValue']"
metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[8]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[8]['ErCode']"]
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[8]['TestPassed']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[8]['ErrorText']"]
[node name="yelement10" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -409,9 +402,8 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 10"
metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[9]['CurrentValue']"
metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[9]['CurrentValue']"
metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[9]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[9]['ErCode']"]
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[9]['TestPassed']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[9]['ErrorText']"]
[node name="yelement11" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -423,9 +415,8 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 11"
metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[10]['CurrentValue']"
metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[10]['CurrentValue']"
metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[10]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[10]['ErCode']"]
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[10]['TestPassed']"
metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[10]['ErCode']SelfTest[3].SystemList[0].SystemList[0].DevList[10]['ErrorText']"]
[node name="yelement12" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -437,9 +428,8 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 12"
metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[11]['CurrentValue']"
metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[11]['CurrentValue']"
metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[11]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[11]['ErCode']"]
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[11]['TestPassed']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[11]['ErrorText']"]
[node name="yelement13" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -451,9 +441,8 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 13"
metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[12]['CurrentValue']"
metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[12]['CurrentValue']"
metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[12]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[12]['ErCode']"]
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[12]['TestPassed']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[12]['ErrorText']"]
[node name="yelement14" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -465,9 +454,8 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 14"
metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[13]['CurrentValue']"
metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[13]['CurrentValue']"
metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[13]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[13]['ErCode']"]
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[13]['TestPassed']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[13]['ErrorText']"]
[node name="yelement15" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -479,9 +467,8 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 15"
metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[14]['CurrentValue']"
metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[14]['CurrentValue']"
metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[14]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[14]['ErCode']"]
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[14]['TestPassed']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[14]['ErrorText']"]
[node name="yelement16" parent="antenna1/grid" instance=ExtResource("3_5ikxk")]
layout_mode = 2
@@ -493,9 +480,8 @@ max_value1 = 10.0
value_name0 = "А"
value_name1 = "φ"
fname = "Элемент 16"
metadata/value0 = "SelfTest[3].DevList[0].DevList[0].DevList[15]['CurrentValue']"
metadata/value1 = "SelfTest[4].DevList[0].DevList[0].DevList[15]['CurrentValue']"
metadata/state = ["SelfTest[3].DevList[0].DevList[0].DevList[15]['ErCode']", "SelfTest[4].DevList[0].DevList[0].DevList[15]['ErCode']"]
metadata/value0 = "SelfTest[3].SystemList[0].SystemList[0].DevList[15]['TestPassed']"
metadata/state = ["SelfTest[3].SystemList[0].SystemList[0].DevList[15]['ErrorText']"]
[node name="antenna2" type="NinePatchRect" parent="."]
layout_mode = 0
@@ -757,7 +743,7 @@ offset_top = 114.0
offset_right = 290.0
offset_bottom = 156.0
fname = "АЦП"
metadata/state = ["SelfTest[5].DevList[0]['ErCode']"]
metadata/state = ["SelfTest[4].SystemList[0].DevList[0]['TestPassed']"]
[node name="dsp" parent="." instance=ExtResource("4_mtf2n")]
layout_mode = 0
@@ -766,7 +752,7 @@ offset_top = 114.0
offset_right = 581.0
offset_bottom = 156.0
fname = "Сигнальный процессор"
metadata/state = ["SelfTest[5].DevList[1]['ErCode']"]
metadata/state = ["SelfTest[4].SystemList[0].DevList[1]['ErrorText']"]
[node name="gen" parent="." instance=ExtResource("2_dmhrm")]
layout_mode = 2
@@ -783,9 +769,9 @@ name_min_size0 = Vector2i(35, 20)
name_min_size1 = Vector2i(35, 20)
name_min_size2 = Vector2i(35, 20)
fname = "Генератор"
metadata/value0 = "SelfTest[1].DevList[2]['CurrentValue']"
metadata/value1 = "SelfTest[2].DevList[2]['CurrentValue']"
metadata/state = ["SelfTest[0].DevList[2]['ErCode']", "SelfTest[1].DevList[2]['ErCode']", "SelfTest[2].DevList[2]['ErCode']"]
metadata/value0 = "SelfTest[1].SystemList[2].DeviceList[0]['TestPassed']"
metadata/value1 = "SelfTest[2].SystemList[2].DevList[0]['TestPassed']"
metadata/state = ["SelfTest[0].SystemList[2].DeviceList[0]['ErrorText']", "SelfTest[1].SystemList[2].DeviceList[0]['ErrorText']", "SelfTest[2].SystemList[2].DevList[0]['ErrorText']"]
[node name="rpu" parent="." instance=ExtResource("2_dmhrm")]
layout_mode = 2
@@ -803,9 +789,9 @@ name_min_size0 = Vector2i(35, 20)
name_min_size1 = Vector2i(35, 20)
name_min_size2 = Vector2i(35, 20)
fname = "Приёмник 20...1000 МГц"
metadata/value0 = "SelfTest[1].DevList[0]['CurrentValue']"
metadata/value1 = "SelfTest[2].DevList[0]['CurrentValue']"
metadata/state = ["SelfTest[0].DevList[0]['ErCode']", "SelfTest[1].DevList[0]['ErCode']", "SelfTest[2].DevList[0]['ErCode']"]
metadata/value0 = "SelfTest[1].SystemList[0].DeviceList[0]['TestPassed']"
metadata/value1 = "SelfTest[2].SystemList[0].DevList[0]['TestPassed']"
metadata/state = ["SelfTest[0].SystemList[0].DeviceList[0]['ErrorText']", "SelfTest[1].SystemList[0].DeviceList[0]['ErrorText']", "SelfTest[2].SystemList[0].DevList[0]['ErrorText']"]
[connection signal="pressed" from="konverter/grid/kanal1" to="." method="_on_item_pressed"]
[connection signal="pressed" from="konverter/grid/kanal2" to="." method="_on_item_pressed"]

View File

@@ -25,7 +25,7 @@ signal pressed(control: PanelContainer)
set(v):
state = v
if v == 0:
$margin/vbox/title/lbl_using.text = 'неизвестно'
$margin/vbox/title/lbl_using.text = '<нет данных>'
$margin/vbox/title/lbl_using.self_modulate = Color.CADET_BLUE
elif v == 1:
$margin/vbox/title/lbl_using.text = 'используется'
@@ -139,8 +139,12 @@ vertical_alignment = 1
[node name="lbl_using" type="Label" parent="margin/vbox/title"]
layout_mode = 2
size_flags_horizontal = 6
text = "неизвестно"
size_flags_horizontal = 3
size_flags_vertical = 6
tooltip_text = "Частота питающего напряжения"
mouse_filter = 0
theme_override_font_sizes/font_size = 22
text = "<нет данных>"
horizontal_alignment = 1
vertical_alignment = 1

View File

@@ -11,18 +11,16 @@
[node name="pribor_uyep" type="Control"]
layout_mode = 3
anchors_preset = 0
offset_left = 5.0
offset_top = -125.0
offset_right = 5.0
offset_bottom = -125.0
offset_top = 5.0
offset_bottom = 5.0
script = ExtResource("1_46rp6")
[node name="ref_G1" type="NinePatchRect" parent="."]
layout_mode = 0
offset_left = 150.0
offset_top = 184.0
offset_right = 750.0
offset_bottom = 955.0
offset_left = 70.0
offset_top = 303.0
offset_right = 660.0
offset_bottom = 1085.0
texture = ExtResource("1_6olof")
patch_margin_left = 16
patch_margin_top = 16
@@ -31,10 +29,10 @@ patch_margin_bottom = 16
[node name="lbl_header" type="Label" parent="."]
layout_mode = 0
offset_left = 150.0
offset_top = 156.0
offset_right = 705.0
offset_bottom = 182.0
offset_left = 75.0
offset_top = 275.0
offset_right = 655.0
offset_bottom = 301.0
theme_override_font_sizes/font_size = 22
text = "Контроль исправности прибора УЭП"
horizontal_alignment = 1
@@ -43,20 +41,20 @@ vertical_alignment = 1
[node name="Label" type="Label" parent="."]
self_modulate = Color(0.835294, 0.141176, 0.286275, 1)
layout_mode = 0
offset_left = 135.0
offset_top = 1295.0
offset_right = 665.0
offset_bottom = 1314.0
offset_left = 95.0
offset_top = 1125.0
offset_right = 625.0
offset_bottom = 1144.0
text = "** Позиционные обозначения требуют уточнения **"
horizontal_alignment = 1
vertical_alignment = 1
[node name="spt25_A1" parent="." instance=ExtResource("6_60xs3")]
layout_mode = 0
offset_left = 175.0
offset_top = 210.0
offset_right = 415.0
offset_bottom = 620.0
offset_left = 88.0
offset_top = 319.0
offset_right = 328.0
offset_bottom = 749.0
script = ExtResource("4_v0lil")
unit_name = "уарэп-спт25-1"
fname = "СПТ-25-230-400"
@@ -67,30 +65,30 @@ layout_mode = 0
offset_left = 15.0
offset_top = 35.0
offset_right = 225.0
offset_bottom = 155.0
offset_bottom = 161.0
fname = "Сеть 1"
[node name="block_input2" parent="spt25_A1" instance=ExtResource("4_mrvir")]
layout_mode = 0
offset_left = 15.0
offset_top = 155.0
offset_top = 166.0
offset_right = 225.0
offset_bottom = 275.0
offset_bottom = 292.0
fname = "Сеть 2"
[node name="block_output" parent="spt25_A1" instance=ExtResource("5_x74mk")]
layout_mode = 0
offset_left = 15.0
offset_top = 275.0
offset_top = 297.0
offset_right = 225.0
offset_bottom = 367.0
offset_bottom = 417.0
[node name="spt25_A2" parent="." instance=ExtResource("6_60xs3")]
layout_mode = 0
offset_left = 480.0
offset_top = 210.0
offset_right = 720.0
offset_bottom = 620.0
offset_left = 403.0
offset_top = 319.0
offset_right = 643.0
offset_bottom = 749.0
script = ExtResource("4_v0lil")
unit_name = "уарэп-спт25-2"
fname = "СПТ-25-230-400"
@@ -101,25 +99,29 @@ layout_mode = 0
offset_left = 15.0
offset_top = 35.0
offset_right = 225.0
offset_bottom = 155.0
offset_bottom = 161.0
fname = "Сеть 1"
[node name="block_input2" parent="spt25_A2" instance=ExtResource("4_mrvir")]
layout_mode = 0
offset_left = 15.0
offset_top = 155.0
offset_top = 166.0
offset_right = 225.0
offset_bottom = 275.0
offset_bottom = 292.0
fname = "Сеть 2"
[node name="block_output" parent="spt25_A2" instance=ExtResource("5_x74mk")]
layout_mode = 0
offset_left = 15.0
offset_top = 275.0
offset_top = 297.0
offset_right = 225.0
offset_bottom = 367.0
offset_bottom = 417.0
[node name="sch3" parent="." instance=ExtResource("7_qu7ja")]
offset_right = 720.0
offset_bottom = 925.0
fname = "Управление Щ3"
offset_left = 88.0
offset_top = 774.0
offset_right = 633.0
offset_bottom = 1059.0
unit_name = "уарэп-щ3"
fname = "Щ3 (контроль и управление питанием)"
rname = "A3"

View File

@@ -1,16 +1,19 @@
@tool
extends "res://scenes/контроль/элемент-я.gd"
class_name sch3_view
extends 'res://scenes/контроль/элемент-я.gd'
## Дополнение №1 к протоколу №120-23900-18
## информационного взаимодействия изделия 5П-28
## с аппаратурой УА-РЭП на кораблях проекта 23900
@export var base_input_address: = 0 ## Базовый адрес регистров входов
@export var base_holding_address: = 0 ## Базовый адрес регистров хранения
@export var regs_input_count: = 5 ## Количество регистров входов
@export var regs_holding_count: = 4 ## Количество регистров хранения
@export var modbus_address: = 3 ## Адрес устройства на шине Modbus
@export var base_input_address: = 0 ## Базовый адрес регистров входов
@export var base_holding_address: = 0 ## Базовый адрес регистров хранения
@export var regs_input_count: = 5 ## Количество регистров входов
@export var regs_holding_count: = 4 ## Количество регистров хранения
@export var modbus_address: = 3 ## Адрес устройства на шине Modbus
@export var request_period: = 1.0 ## Период отправки команд на шину Modbus
var regs_input: = {} ## Регистры входные
var regs_holding: = {} ## Регистры хранения
@@ -19,6 +22,7 @@ var holding_stack: = [] ## Стек команд для чтения регис
var input_stack: = [] ## Стек команд для чтения регистров входов
var read_step: = 0
var switches_sync: = false
var timer = Timer.new()
class StackItem:
@@ -31,15 +35,16 @@ class StackItem:
func on_data_received(_data: PackedByteArray): pass
## Обработчик таймера
func _on_timeout(unit_sch3) -> void:
if write_stack.size():
var ad = write_stack.pop_front()
if not unit_sch3.write(ad.addr, ad.data):
write_stack.push_back(ad)
if (read_step == 0) and (input_stack.size() == 0):
if (read_step == 0) and (input_stack.size() == 0):
var ad = StackItem.new(base_input_address, regs_input_count)
input_stack.push_back(ad)
elif read_step == 1 and (holding_stack.size() == 0):
elif (read_step == 1) and (holding_stack.size() == 0):
var ad = StackItem.new(base_holding_address, regs_holding_count)
holding_stack.push_back(ad)
if input_stack.size():
@@ -54,7 +59,10 @@ func _on_timeout(unit_sch3) -> void:
read_step %= 2
func on_toggled_switch(val: bool, unit_sch3: sch_3.Sch3, meta: Array):
## Вызывается при изменении состояния выключателя[br]
## [param val] - Состояние выключателя[br]
## [param meta] - Адреса регистров и индексы битов назначенных выключателю[br]
func on_toggled_switch(val: bool, meta: Array):
var on_addr = meta[0]
var on_bit = meta[1]
var off_addr = meta[2]
@@ -62,9 +70,14 @@ func on_toggled_switch(val: bool, unit_sch3: sch_3.Sch3, meta: Array):
if regs_holding.has(on_addr) and regs_holding.has(off_addr):
regs_holding[on_addr] = tools.set_bit(regs_holding[on_addr], on_bit, val)
regs_holding[off_addr] = tools.set_bit(regs_holding[off_addr], off_bit, not val)
push_write_holding()
## Заносит в очередь команду чтения регистров хранения
func push_write_holding():
var regs_data: = []
var keys = regs_holding.keys()
keys.sort()
keys.sort() # Ключи в словаре хранятся не упорядочено
for addr in keys:
regs_data.append(regs_holding[addr])
write_stack.push_back(StackItem.new(keys[0], regs_data))
@@ -78,17 +91,24 @@ func _ready() -> void:
var items = get_tree().get_nodes_in_group('bits_items_switch')
for item in items:
var meta = item.get_meta('bits')
item.connect('toggled', on_toggled_switch.bind(unit_sch3, meta))
item.connect('toggled', on_toggled_switch.bind(meta))
item.disabled = true
unit_sch3.connect('resp_input', on_resp_input)
unit_sch3.connect('resp_holding', on_resp_holding)
var timer = Timer.new()
unit_sch3.connect('command_fail', on_command_fail)
timer.connect('timeout', _on_timeout.bind(unit_sch3))
add_child(timer)
timer.start(1.0)
timer.start(request_period)
func on_line_changed(unit_sch3):
func on_command_fail(unit_sch3):
unit_sch3.cmd_state = unit.Unit.CmdState.DONE
timer.stop()
## Вызывается, когда состояния прибора Щ3 "на связи" изменяется[br]
## [param unit_sch3] - Экземпляр представления прибора Щ3
func on_line_changed(unit_sch3: sch_3.Sch3):
for item in get_tree().get_nodes_in_group('bits_items_good'):
item.texture = textures[STATE_VAL.NONE]
if not unit_sch3.online:
@@ -100,24 +120,38 @@ func on_line_changed(unit_sch3):
input_stack.clear()
holding_stack.clear()
switches_sync = false
$margin/vbox/grid1/lbl_freq.text = '<нет данных>'
$margin/vbox/grid1/state_freq.texture = textures[STATE_VAL.NONE]
else:
timer.start(request_period)
## Вызывается по сигналу "приняты данные чтения регистров хранения"[br]
## [param base_addr] - Начальный адрес регистров.[br]
## [param data] - Массив значений прочитанных из регистров.
func on_resp_holding(base_addr: int, data: Array):
if (base_addr != base_holding_address) or (data.size() < regs_holding_count):
return
for i in data.size():
regs_holding[base_addr + i] = data[i]
# Разрешить работу выключателей только когда прочитано их реальное состояние
if not switches_sync:
switches_sync = true
for item in get_tree().get_nodes_in_group('bits_items_switch'):
var bits = item.get_meta('bits')
var byte: int = bits[0]
var bit: int = bits[1]
item.button_pressed = regs_holding[byte] & (1 << bit) > 0
var byte0: int = bits[0] # Адрес регистра
var bit0: int = bits[1] # Индекс бита
var byte1: int = bits[2] # Адрес регистра
var bit1: int = bits[3] # Индекс бита
var val0: bool = regs_holding[byte0] & (1 << bit0) > 0
item.button_pressed = val0
item.disabled = false
switches_sync = true
$margin/vbox/grid1/lbl_freq.text = '<нет данных>'
regs_holding[byte1] = tools.set_bit(regs_holding[byte1], bit1, not val0)
push_write_holding()
## Вызывается по сигналу "приняты данные чтения регистров входов".[br]
## [param base_addr] - Начальный адрес регистров.[br]
## [param data] - Массив значений прочитанных из регистров.[br]
func on_resp_input(base_addr: int, data: Array):
if (base_addr != base_input_address) or (data.size() < regs_input_count):
return
@@ -130,6 +164,9 @@ func on_resp_input(base_addr: int, data: Array):
regs_input[base_addr + i] = data[i]
# Таблица 3.15, Регистр PowerState
$margin/vbox/grid1/lbl_freq.text = '%d' % (regs_input[4] & 0x1ff)
$margin/vbox/grid1/state_freq.texture \
= textures[STATE_VAL.GOOD] if regs_input[4] & (1 << 15) \
else textures[STATE_VAL.ERROR]
var cnt_good: int = 0
for item in items:
var bits: Array = item.get_meta('bits')

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=10 format=3 uid="uid://dlkvu6bp6w5u7"]
[gd_scene load_steps=11 format=3 uid="uid://dlkvu6bp6w5u7"]
[ext_resource type="Script" path="res://scenes/pribor-uyep/sch3-view.gd" id="1_ln7ac"]
[ext_resource type="Texture2D" uid="uid://c6nve6f8sfyj2" path="res://data/состояние-исправности-0.png" id="2_ln52a"]
@@ -6,6 +6,7 @@
[ext_resource type="Texture2D" uid="uid://c6booa8753u5t" path="res://data/состояние-исправности-2.png" id="4_nijdy"]
[ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="5_skqdl"]
[ext_resource type="Shader" path="res://shaders/color-invers.gdshader" id="6_ypnlb"]
[ext_resource type="Script" path="res://scripts/switch.gd" id="7_l6esm"]
[sub_resource type="GDScript" id="GDScript_45hqb"]
script/source = "@tool
@@ -47,11 +48,9 @@ offset_left = 175.0
offset_top = 640.0
offset_right = 730.0
offset_bottom = 935.0
tooltip_text = "Состояние и управление прибором Щ3"
script = ExtResource("1_ln7ac")
textures = [ExtResource("2_ln52a"), ExtResource("3_1yamu"), ExtResource("4_nijdy")]
unit_name = "уарэп-щ3"
fname = "Щ3"
rname = "A3"
[node name="rect" type="NinePatchRect" parent="."]
layout_mode = 2
@@ -89,24 +88,27 @@ columns = 3
[node name="state" type="TextureRect" parent="margin/vbox/grid"]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
tooltip_text = "Индикатор исправности Щ3"
texture = ExtResource("2_ln52a")
expand_mode = 1
[node name="fname" type="Label" parent="margin/vbox/grid"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 6
size_flags_horizontal = 7
size_flags_vertical = 7
theme_override_font_sizes/font_size = 17
text = "Щ3 - управление питанием "
vertical_alignment = 1
[node name="rname" type="Label" parent="margin/vbox/grid"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 6
tooltip_text = "Позиционное обозначение"
mouse_filter = 0
theme_override_font_sizes/font_size = 22
text = "A3"
horizontal_alignment = 2
vertical_alignment = 1
@@ -115,21 +117,25 @@ layout_mode = 2
size_flags_vertical = 6
columns = 9
[node name="name0" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
theme_override_font_sizes/font_size = 17
text = "УФ"
[node name="state0" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
tooltip_text = "Индикатор исполнения"
texture = ExtResource("2_ln52a")
expand_mode = 1
metadata/bits = [0, 0, 2, 0]
[node name="name0" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
theme_override_font_sizes/font_size = 17
text = "УФ"
vertical_alignment = 1
[node name="switch0" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]]
editor_description = "Питание УФ"
material = SubResource("ShaderMaterial_c1mqk")
@@ -137,23 +143,28 @@ layout_mode = 2
size_flags_horizontal = 2
tooltip_text = "Выключатель питания УФ"
action_mode = 0
script = ExtResource("7_l6esm")
metadata/bits = [0, 0, 2, 0]
[node name="name1" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
theme_override_font_sizes/font_size = 17
text = "РТР"
[node name="state1" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
tooltip_text = "Индикатор исполнения"
texture = ExtResource("2_ln52a")
expand_mode = 1
metadata/bits = [0, 1, 2, 1]
[node name="name1" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
theme_override_font_sizes/font_size = 17
text = "РТР"
vertical_alignment = 1
[node name="switch1" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]]
editor_description = "РТР"
material = SubResource("ShaderMaterial_c1mqk")
@@ -161,21 +172,27 @@ layout_mode = 2
size_flags_horizontal = 0
tooltip_text = "Выключатель питания РТР"
action_mode = 0
script = ExtResource("7_l6esm")
metadata/bits = [0, 1, 2, 1]
[node name="name2" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
theme_override_font_sizes/font_size = 17
text = "ПРД-Н.1"
[node name="state2" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 4
tooltip_text = "Индикатор исполнения"
texture = ExtResource("2_ln52a")
expand_mode = 1
metadata/bits = [0, 2, 2, 2]
[node name="name2" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
theme_override_font_sizes/font_size = 17
text = "ПРД-Н.1"
vertical_alignment = 1
[node name="switch2" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]]
editor_description = "ПРД-Н.1"
material = SubResource("ShaderMaterial_c1mqk")
@@ -183,23 +200,28 @@ layout_mode = 2
size_flags_horizontal = 2
tooltip_text = "Выключатель питания ПРД-Н.1"
action_mode = 0
script = ExtResource("7_l6esm")
metadata/bits = [0, 2, 2, 2]
[node name="name3" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
theme_override_font_sizes/font_size = 17
text = "ПРД-Н.2"
[node name="state3" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
tooltip_text = "Индикатор исполнения"
texture = ExtResource("2_ln52a")
expand_mode = 1
metadata/bits = [0, 3, 2, 3]
[node name="name3" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
theme_override_font_sizes/font_size = 17
text = "ПРД-Н.2"
vertical_alignment = 1
[node name="switch3" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]]
editor_description = "Питание ПРД-Н.2"
material = SubResource("ShaderMaterial_c1mqk")
@@ -207,23 +229,28 @@ layout_mode = 2
size_flags_horizontal = 0
tooltip_text = "Выключатель питания ПРД-Н.2"
action_mode = 0
script = ExtResource("7_l6esm")
metadata/bits = [0, 3, 2, 3]
[node name="name4" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
theme_override_font_sizes/font_size = 17
text = "ПРД-Н.3"
[node name="state4" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
tooltip_text = "Индикатор исполнения"
texture = ExtResource("2_ln52a")
expand_mode = 1
metadata/bits = [0, 4, 2, 4]
[node name="name4" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
theme_override_font_sizes/font_size = 17
text = "ПРД-Н.3"
vertical_alignment = 1
[node name="switch4" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]]
editor_description = "ПРД-Н.3"
material = SubResource("ShaderMaterial_c1mqk")
@@ -231,21 +258,28 @@ layout_mode = 2
size_flags_horizontal = 2
tooltip_text = "Выключатель питания ПРД-Н.3"
action_mode = 0
script = ExtResource("7_l6esm")
metadata/bits = [0, 4, 2, 4]
[node name="name5" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
theme_override_font_sizes/font_size = 17
text = "ПРД-Н.4"
[node name="state5" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
tooltip_text = "Индикатор исполнения"
texture = ExtResource("2_ln52a")
expand_mode = 1
metadata/bits = [0, 5, 2, 5]
[node name="name5" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
theme_override_font_sizes/font_size = 17
text = "ПРД-Н.4"
vertical_alignment = 1
[node name="switch5" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]]
editor_description = "ПРД-Н.4"
material = SubResource("ShaderMaterial_c1mqk")
@@ -253,23 +287,28 @@ layout_mode = 2
size_flags_horizontal = 0
tooltip_text = "Выключатель питания ПРД-Н.4"
action_mode = 0
script = ExtResource("7_l6esm")
metadata/bits = [0, 5, 2, 5]
[node name="name6" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
theme_override_font_sizes/font_size = 17
text = "ПРД-В.1"
[node name="state6" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
tooltip_text = "Индикатор исполнения"
texture = ExtResource("2_ln52a")
expand_mode = 1
metadata/bits = [0, 6, 2, 6]
[node name="name6" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
theme_override_font_sizes/font_size = 17
text = "ПРД-В.1"
vertical_alignment = 1
[node name="switch6" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]]
editor_description = "Питание ПРД-В.1"
material = SubResource("ShaderMaterial_vdwfd")
@@ -277,23 +316,28 @@ layout_mode = 2
size_flags_horizontal = 2
tooltip_text = "Выключатель питания ПРД-В.1"
action_mode = 0
script = ExtResource("7_l6esm")
metadata/bits = [0, 6, 2, 6]
[node name="name7" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
theme_override_font_sizes/font_size = 17
text = "ПРД-В.2"
[node name="state7" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
tooltip_text = "Индикатор исполнения"
texture = ExtResource("2_ln52a")
expand_mode = 1
metadata/bits = [0, 7, 2, 7]
[node name="name7" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
theme_override_font_sizes/font_size = 17
text = "ПРД-В.2"
vertical_alignment = 1
[node name="switch7" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]]
editor_description = "ПРД-В.2"
material = SubResource("ShaderMaterial_c1mqk")
@@ -301,21 +345,28 @@ layout_mode = 2
size_flags_horizontal = 0
tooltip_text = "Выключатель питания ПРД-В.2"
action_mode = 0
script = ExtResource("7_l6esm")
metadata/bits = [0, 7, 2, 7]
[node name="name8" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
theme_override_font_sizes/font_size = 17
text = "ПРД-В.3"
[node name="state8" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
tooltip_text = "Индикатор исполнения"
texture = ExtResource("2_ln52a")
expand_mode = 1
metadata/bits = [0, 8, 2, 8]
[node name="name8" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
theme_override_font_sizes/font_size = 17
text = "ПРД-В.3"
vertical_alignment = 1
[node name="switch8" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]]
editor_description = "ПРД-В.3"
material = SubResource("ShaderMaterial_c1mqk")
@@ -323,23 +374,28 @@ layout_mode = 2
size_flags_horizontal = 2
tooltip_text = "Выключатель питания ПРД-В.3"
action_mode = 0
script = ExtResource("7_l6esm")
metadata/bits = [0, 8, 2, 8]
[node name="name9" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
theme_override_font_sizes/font_size = 17
text = "ПРД-В.4"
[node name="state9" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
tooltip_text = "Индикатор исполнения"
texture = ExtResource("2_ln52a")
expand_mode = 1
metadata/bits = [0, 9, 2, 9]
[node name="name9" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
theme_override_font_sizes/font_size = 17
text = "ПРД-В.4"
vertical_alignment = 1
[node name="switch9" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]]
editor_description = "Питание ПРД-В.4"
material = SubResource("ShaderMaterial_c1mqk")
@@ -347,23 +403,28 @@ layout_mode = 2
size_flags_horizontal = 0
tooltip_text = "Выключатель питания ПРД-В.4"
action_mode = 0
script = ExtResource("7_l6esm")
metadata/bits = [0, 9, 2, 9]
[node name="name10" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
theme_override_font_sizes/font_size = 17
text = "ПРД-К.1"
[node name="state10" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
tooltip_text = "Индикатор исполнения"
texture = ExtResource("2_ln52a")
expand_mode = 1
metadata/bits = [0, 10, 2, 10]
[node name="name10" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
theme_override_font_sizes/font_size = 17
text = "ПРД-К.1"
vertical_alignment = 1
[node name="switch10" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]]
editor_description = "ПРД-К.1"
material = SubResource("ShaderMaterial_c1mqk")
@@ -371,21 +432,28 @@ layout_mode = 2
size_flags_horizontal = 2
tooltip_text = "Выключатель питания ПРД-К.1"
action_mode = 0
script = ExtResource("7_l6esm")
metadata/bits = [0, 10, 2, 10]
[node name="name11" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
theme_override_font_sizes/font_size = 17
text = "ПРД-К.2"
[node name="state11" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
tooltip_text = "Индикатор исполнения"
texture = ExtResource("2_ln52a")
expand_mode = 1
metadata/bits = [0, 11, 2, 11]
[node name="name11" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
theme_override_font_sizes/font_size = 17
text = "ПРД-К.2"
vertical_alignment = 1
[node name="switch11" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]]
editor_description = "ПРД-К.2"
material = SubResource("ShaderMaterial_c1mqk")
@@ -393,23 +461,28 @@ layout_mode = 2
size_flags_horizontal = 0
tooltip_text = "Выключатель питания ПРД-К.2"
action_mode = 0
script = ExtResource("7_l6esm")
metadata/bits = [0, 11, 2, 11]
[node name="name12" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
theme_override_font_sizes/font_size = 17
text = "ПРД-К.3"
[node name="state12" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
tooltip_text = "Индикатор исполнения"
texture = ExtResource("2_ln52a")
expand_mode = 1
metadata/bits = [1, 0, 3, 0]
[node name="name12" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
theme_override_font_sizes/font_size = 17
text = "ПРД-К.3"
vertical_alignment = 1
[node name="switch12" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]]
editor_description = "Питание ПРД-К.3"
material = SubResource("ShaderMaterial_c1mqk")
@@ -417,21 +490,28 @@ layout_mode = 2
size_flags_horizontal = 2
tooltip_text = "Выключатель питания ПРД-К.3"
action_mode = 0
script = ExtResource("7_l6esm")
metadata/bits = [1, 0, 3, 0]
[node name="name13" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
theme_override_font_sizes/font_size = 17
text = "ПРД-К.4"
[node name="state13" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
tooltip_text = "Индикатор исполнения"
texture = ExtResource("2_ln52a")
expand_mode = 1
metadata/bits = [1, 1, 3, 1]
[node name="name13" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
theme_override_font_sizes/font_size = 17
text = "ПРД-К.4"
vertical_alignment = 1
[node name="switch13" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]]
editor_description = "ПРД-К.4"
material = SubResource("ShaderMaterial_c1mqk")
@@ -439,23 +519,28 @@ layout_mode = 2
size_flags_horizontal = 0
tooltip_text = "Выключатель питания ПРД-К.4"
action_mode = 0
script = ExtResource("7_l6esm")
metadata/bits = [1, 1, 3, 1]
[node name="name14" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
theme_override_font_sizes/font_size = 17
text = "Бл. по вент."
[node name="state14" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
tooltip_text = "Индикатор исполнения"
texture = ExtResource("2_ln52a")
expand_mode = 1
metadata/bits = [1, 2, 3, 2]
[node name="name14" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
theme_override_font_sizes/font_size = 17
text = "Бл. по вент."
vertical_alignment = 1
[node name="switch14" type="CheckButton" parent="margin/vbox/table" groups=["bits_items_switch"]]
editor_description = "Бл. по вент."
material = SubResource("ShaderMaterial_c1mqk")
@@ -463,23 +548,28 @@ layout_mode = 2
size_flags_horizontal = 2
tooltip_text = "Выключатель блокировки по вентиляции"
action_mode = 0
script = ExtResource("7_l6esm")
metadata/bits = [1, 2, 3, 2]
[node name="name15" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
theme_override_font_sizes/font_size = 17
text = "ДУ"
[node name="state15" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
tooltip_text = "Индикатор исполнения"
texture = ExtResource("2_ln52a")
expand_mode = 1
metadata/bits = [1, 3, 3, 3]
[node name="name15" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
theme_override_font_sizes/font_size = 17
text = "ДУ"
vertical_alignment = 1
[node name="switch15" type="CheckButton" parent="margin/vbox/table"]
editor_description = "ДУ"
layout_mode = 2
@@ -488,19 +578,25 @@ disabled = true
button_pressed = true
action_mode = 0
[node name="name16" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
theme_override_font_sizes/font_size = 17
text = "Вент. РТР"
[node name="state16" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
tooltip_text = "Индикатор исполнения"
texture = ExtResource("2_ln52a")
expand_mode = 1
metadata/bits = [1, 7, 3, 7]
[node name="name16" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
theme_override_font_sizes/font_size = 17
text = "Вент. РТР"
vertical_alignment = 1
[node name="switch16" type="CheckButton" parent="margin/vbox/table"]
editor_description = "Вент. РТР"
layout_mode = 2
@@ -509,21 +605,25 @@ disabled = true
button_pressed = true
action_mode = 0
[node name="name17" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
theme_override_font_sizes/font_size = 17
text = "Вент. ПРД.1"
[node name="state17" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
tooltip_text = "Индикатор исполнения"
texture = ExtResource("2_ln52a")
expand_mode = 1
metadata/bits = [1, 8, 3, 8]
[node name="name17" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
theme_override_font_sizes/font_size = 17
text = "Вент. ПРД.1"
vertical_alignment = 1
[node name="switch17" type="CheckButton" parent="margin/vbox/table"]
editor_description = "Вент. ПРД.1"
layout_mode = 2
@@ -532,19 +632,23 @@ disabled = true
button_pressed = true
action_mode = 0
[node name="name18" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
theme_override_font_sizes/font_size = 17
text = "Вент. ПРД.2"
[node name="state18" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
tooltip_text = "Индикатор исполнения"
texture = ExtResource("2_ln52a")
expand_mode = 1
metadata/bits = [1, 9, 3, 9]
[node name="name18" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
theme_override_font_sizes/font_size = 17
text = "Вент. ПРД.2"
vertical_alignment = 1
[node name="switch18" type="CheckButton" parent="margin/vbox/table"]
editor_description = "Вент. ПРД.2"
layout_mode = 2
@@ -553,19 +657,23 @@ disabled = true
button_pressed = true
action_mode = 0
[node name="name19" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
theme_override_font_sizes/font_size = 17
text = "Вент. ПРД.3"
[node name="state19" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
tooltip_text = "Индикатор исполнения"
texture = ExtResource("2_ln52a")
expand_mode = 1
metadata/bits = [1, 10, 3, 10]
[node name="name19" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
theme_override_font_sizes/font_size = 17
text = "Вент. ПРД.3"
vertical_alignment = 1
[node name="switch19" type="CheckButton" parent="margin/vbox/table"]
editor_description = "Вент. ПРД.3"
layout_mode = 2
@@ -574,19 +682,23 @@ disabled = true
button_pressed = true
action_mode = 0
[node name="name20" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
theme_override_font_sizes/font_size = 17
text = "Вент. ПРД.4"
[node name="state20" type="TextureRect" parent="margin/vbox/table" groups=["bits_items_good"]]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
tooltip_text = "Индикатор исполнения"
texture = ExtResource("2_ln52a")
expand_mode = 1
metadata/bits = [1, 11, 3, 11]
[node name="name20" type="Label" parent="margin/vbox/table"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
theme_override_font_sizes/font_size = 17
text = "Вент. ПРД.4"
vertical_alignment = 1
[node name="switch20" type="CheckButton" parent="margin/vbox/table"]
editor_description = "Вент. ПРД.4"
layout_mode = 2
@@ -597,23 +709,37 @@ action_mode = 0
[node name="grid1" type="GridContainer" parent="margin/vbox"]
layout_mode = 2
size_flags_horizontal = 0
size_flags_vertical = 8
columns = 2
columns = 3
[node name="lbl1" type="Label" parent="margin/vbox/grid1"]
[node name="state_freq" type="TextureRect" parent="margin/vbox/grid1"]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 2
size_flags_vertical = 4
tooltip_text = "Индикатор допуска входного напряжения"
texture = ExtResource("2_ln52a")
expand_mode = 1
metadata/bits = [0, 0, 2, 0]
[node name="lbl0" type="Label" parent="margin/vbox/grid1"]
self_modulate = Color(1, 1, 1, 0.627451)
layout_mode = 2
size_flags_horizontal = 3
size_flags_horizontal = 0
theme_override_font_sizes/font_size = 17
text = "Частота, Гц:"
horizontal_alignment = 2
horizontal_alignment = 1
[node name="lbl_freq" type="Label" parent="margin/vbox/grid1"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 6
tooltip_text = "Частота питающего напряжения"
mouse_filter = 0
theme_override_font_sizes/font_size = 22
text = "<нет данных>"
horizontal_alignment = 1
vertical_alignment = 1
[connection signal="resized" from="." to="." method="_on_resized"]

View File

@@ -1,7 +1,7 @@
extends Panel
func on_line_changed(unit, addr): log.message(Logger.INFO, 'Состояние связи: %s %s' % [unit, addr])
func on_line_changed(unit, addr): log.message(Logger.INFO, 'Изменение состояния: %s %s' % [unit, addr])
func on_command_fail(unit, addr): log.message(Logger.ERROR, 'Ошибка: команда не выполнена: %s %s' % [unit, addr])
func on_threats_changed(th: Object, msg: String): log.message(Logger.INFO, '%s: %s' % [msg, th.to_string()])
func on_parse_error(unit, msg: String): log.message(Logger.ERROR, '%s: %s' % [unit.to_string(), msg])

View File

@@ -88,6 +88,8 @@ columns = 3
[node name="state" type="TextureRect" parent="margin/vbox/grid"]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
texture = ExtResource("3_dktys")
expand_mode = 1

View File

@@ -1,9 +1,18 @@
class_name setting extends Panel
var TableHeader = preload('res://table/header.tscn')
var TableLabel = preload('res://table/lable.tscn')
var TableTaggle = preload('res://table/taggle.tscn')
var TableEdit = preload('res://table/editl.tscn')
var TableEmpti = preload('res://table/empti.tscn')
## Вызывается, когда узел впервые попадает в дерево сцены.
func _ready() -> void:
$lbl_commit.text = 'Текущая версия ПО УАРЭП: \"%s\"' % commit.VCS_HEAD
setting_tab()
dop_set_tab()
set_tab()
$lbl_commit.text = ' \"%s\"' % commit.VCS_HEAD
if not OS.get_cmdline_args().has('++ограниченный'):
return
$Label2.text = 'Текущий режим доступа: ограниченный'
@@ -16,3 +25,59 @@ func _on_external_cu_btn_pressed() -> void:
ProjectSettings.set_setting('application/config/external_cu', state)
if state:
signaller.emit_signal('interfer_off_all')
func setting_tab():
var yams: Array = [ HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER ]
$table.set_header([TableHeader, TableHeader])
$table.set_header_text(['Элемент', ' Показывать '])
for i in range(15):
$table.add_row([TableLabel, TableTaggle])
$table.set_row_text(0,([' Кнопка «ПД-М']))
$table.set_row_text(1,([' Кнопка «ПД-М']))
$table.set_row_text(2,([' Кнопка «ОЗП-1» ']))
$table.set_row_text(3,([' Кнопка «МЧМ-1» ']))
$table.set_row_text(4,([' Кнопка «ОРН-И1» ']))
$table.set_row_text(5,([' Кнопка «ОРН-М']))
$table.set_row_text(6,([' Кнопка «ЛЧМ-1» ']))
$table.set_row_text(7,([' Кнопка «ПД-М4С» ']))
$table.set_row_text(8,([' Кнопка «ПД-ЧМ» ']))
$table.set_row_text(9,([' Кнопка «СВ-И1» ']))
$table.set_row_text(10,([' Кнопка «К']))
$table.set_row_text(11,([' Кнопка «СВ-М']))
$table.set_row_text(12,([' Кнопка «ОРН» ']))
$table.set_row_text(13,([' Кнопка «JTIDS» ']))
$table.set_row_text(14,([' Кнопка «КУПД» ']))
$table.set_columns_min_size([150, 100])
$table.set_columns_alignments(yams)
func dop_set_tab():
var yams: Array = [ HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER ]
$table2.add_row([TableLabel, TableEmpti])
$table2.add_row([TableLabel, TableEmpti])
$table2.add_row([TableEmpti, TableEmpti])
$table2.add_row([TableLabel, TableTaggle])
$table2.add_row([TableLabel, TableTaggle])
$table2.set_row_text(0, (['Текущая версия ПО УАРЭП:']))
$table2.set_row_text(1, (['Адрес сервера карт:']))
$table2.set_row_text(2, (['']))
$table2.set_row_text(3, (['Внешнее целеуказание.']))
$table2.set_row_text(4, (['Кнопка «Подавление».\nОтключить отображение этой кнопки,\nчто бы тип помех применялся сразу.']))
$table2.set_columns_min_size([180, 50])
$table2.set_columns_alignments(yams)
func set_tab():
$table3.add_row([TableLabel, TableEmpti])
$table3.add_row([TableLabel, TableEmpti])
$table3.set_row_text(0, ([' Текущий режим доступа: полный ']))
$table3.set_row_text(1, ([' Управление элементами в режиме с ограниченным доступом ']))
$table3.set_columns_min_size([250, 5])

View File

@@ -1,6 +1,7 @@
[gd_scene load_steps=3 format=3 uid="uid://bnptm4rlp60dq"]
[gd_scene load_steps=4 format=3 uid="uid://bnptm4rlp60dq"]
[ext_resource type="Script" path="res://scenes/настройки/настройки.gd" id="1_2l3rd"]
[ext_resource type="Script" path="res://table/table.gd" id="2_6sx73"]
[sub_resource type="GDScript" id="GDScript_anjmx"]
script/source = "extends LineEdit
@@ -17,6 +18,7 @@ func _on_text_changed(new_text: String) -> void:
script = ExtResource("1_2l3rd")
[node name="GridContainer" type="GridContainer" parent="."]
visible = false
layout_mode = 0
offset_left = 44.0
offset_top = 87.0
@@ -235,6 +237,7 @@ size_flags_vertical = 6
button_pressed = true
[node name="Label1" type="Label" parent="."]
visible = false
layout_mode = 0
offset_left = 16.0
offset_top = 60.0
@@ -243,6 +246,7 @@ offset_bottom = 82.0
text = "Управление элементами в режиме с ограниченным доступом"
[node name="Label2" type="Label" parent="."]
visible = false
layout_mode = 0
offset_left = 20.0
offset_top = 20.0
@@ -253,13 +257,15 @@ vertical_alignment = 1
[node name="edt_mapaddr" type="LineEdit" parent="."]
layout_mode = 0
offset_left = 660.0
offset_top = 80.0
offset_right = 1032.0
offset_bottom = 110.0
offset_left = 776.0
offset_top = 48.0
offset_right = 1148.0
offset_bottom = 78.0
theme_override_colors/font_color = Color(1, 0.596078, 0.4, 1)
script = SubResource("GDScript_anjmx")
[node name="Label" type="Label" parent="edt_mapaddr"]
visible = false
layout_mode = 0
offset_left = -180.0
offset_right = -20.0
@@ -268,6 +274,7 @@ text = "Адрес сервера карт:"
vertical_alignment = 1
[node name="GridContainer2" type="GridContainer" parent="."]
visible = false
layout_mode = 0
offset_left = 478.0
offset_top = 154.0
@@ -299,12 +306,36 @@ disabled = true
[node name="lbl_commit" type="Label" parent="."]
layout_mode = 0
offset_left = 500.0
offset_top = 20.0
offset_right = 1060.0
offset_bottom = 50.0
text = "Текущая версия ПО УАРЭП:"
offset_left = 776.0
offset_top = 24.0
offset_right = 1144.0
offset_bottom = 54.0
theme_override_colors/font_color = Color(1, 0.596078, 0.4, 1)
vertical_alignment = 1
[node name="table" type="GridContainer" parent="."]
layout_mode = 0
offset_left = 40.0
offset_top = 88.0
offset_right = 80.0
offset_bottom = 128.0
script = ExtResource("2_6sx73")
[node name="table2" type="GridContainer" parent="."]
layout_mode = 0
offset_left = 512.0
offset_top = 32.0
offset_right = 552.0
offset_bottom = 72.0
script = ExtResource("2_6sx73")
[node name="table3" type="GridContainer" parent="."]
layout_mode = 0
offset_left = 40.0
offset_top = 32.0
offset_right = 80.0
offset_bottom = 72.0
script = ExtResource("2_6sx73")
[connection signal="text_changed" from="edt_mapaddr" to="edt_mapaddr" method="_on_text_changed"]
[connection signal="pressed" from="GridContainer2/external_cu_btn" to="." method="_on_external_cu_btn_pressed"]

View File

@@ -9,20 +9,20 @@ var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
func _physics_process(delta):
# Add the gravity.
if not is_on_floor():
velocity.y += gravity * delta
# Add the gravity.
if not is_on_floor():
velocity.y += gravity * delta
# Handle jump.
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
velocity.y = JUMP_VELOCITY
# Handle jump.
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
velocity.y = JUMP_VELOCITY
# Get the input direction and handle the movement/deceleration.
# As good practice, you should replace UI actions with custom gameplay actions.
var direction = Input.get_axis("ui_left", "ui_right")
if direction:
velocity.x = direction * SPEED
else:
velocity.x = move_toward(velocity.x, 0, SPEED)
# Get the input direction and handle the movement/deceleration.
# As good practice, you should replace UI actions with custom gameplay actions.
var direction = Input.get_axis("ui_left", "ui_right")
if direction:
velocity.x = direction * SPEED
else:
velocity.x = move_toward(velocity.x, 0, SPEED)
move_and_slide()
move_and_slide()

View File

@@ -10,10 +10,10 @@ const BUFFER_SIZE = 2048 ## Размер приёмного буфера д
class CapsRpb extends unit.Unit:
static var json_conv: = JSON.new()
var json_dic: Dictionary ## Аппарат для разбора сообщений.
var tick: = 0 ## Тик время последнего обновления, мс.
var tx_stack: Array ## Массив пакетов для отправки.
static var json_conv: = JSON.new() ## Аппарат для разбора сообщений.
var json_dic: Dictionary
var tick: = 0 ## Тик время последнего обновления, мс.
var tx_stack: Array ## Массив пакетов для отправки.
func _to_string() -> String: return String('капсрпб: "%s" %s ' % [self.name, ['отключен', 'на связи'][int(online)]])
func _init(nm): self.name = nm
@@ -41,4 +41,4 @@ class CapsRpb extends unit.Unit:
tx_stack.remove_at(0)
return Error.OK
else:
return Error.ERR_UNAVAILABLE
return Error.ERR_BUSY

View File

@@ -33,10 +33,10 @@ class Sch3 extends unit.Unit:
if online and ((tick - rx_tick) > ONLINE_TIMEOUT):
online = false
emit_signal('line_changed', self)
if cmd_state == CmdState.WAIT:
if (tick - tx_tick) > ONLINE_TIMEOUT:
cmd_state = CmdState.FAIL
emit_signal('command_fail', self)
if cmd_state == CmdState.WAIT:
if (tick - tx_tick) > ONLINE_TIMEOUT:
cmd_state = CmdState.FAIL
emit_signal('command_fail', self)
var rc = Error.ERR_BUSY
if cmd_state == CmdState.SEND:
tx_tick = tick

17
scripts/switch.gd Normal file
View File

@@ -0,0 +1,17 @@
extends CheckButton
@export var off_tip: String = '(отключено)'
@export var on_tip: String = '(включено)'
func _ready() -> void:
if not (tooltip_text.contains(off_tip) or tooltip_text.contains(on_tip)):
tooltip_text += ' '
tooltip_text += on_tip if button_pressed else off_tip
connect('toggled', _on_toggled)
func _on_toggled(state: bool):
var s = tooltip_text
tooltip_text = s.replace(off_tip, on_tip) if state else s.replace(on_tip, off_tip)

View File

@@ -208,12 +208,12 @@ class EmsBoard:
state_cmd = WR_DEV_NUM_R
on_wr_device(cur_dev_num)
## Отправка команды чтения флеш
## Отправка команды чтения флеш
func read_flash():
unit_ems.send_flash(unit_ems.CmdCode.READ_FLASH_MP550, [], yemsconsts.NUM_BYTE_FROM_FLASH, id_board)
state_cmd = READ_FLASH
## Обработчик выполнения команды чтения флеш, заполняет прочитанными данными устройства
## Обработчик выполнения команды чтения флеш, заполняет прочитанными данными устройства
func on_read_flash():
need_flash_rd = false
var amount_dev = unit_ems.flash_len / 10
@@ -227,7 +227,7 @@ class EmsBoard:
cur_dev.ports_data[base_addr_isa + 10] = unit_ems.flash_data.decode_u16(cur_i + 8)
start_rw_kems(false)
## Команда записи в флеш текущих данных из программы
## Команда записи в флеш текущих данных из программы
func write_flash():
need_flash_wr = false
var fl_data: Array = []
@@ -242,7 +242,7 @@ class EmsBoard:
cur_dev_num = cur_dev_temp
state_cmd = WRITE_FLASH
## Заполнение данными с устройств массива для записи флеш
## Заполнение данными с устройств массива для записи флеш
func append_data_to_flash(fl_data):
fl_data.append(cur_dev_num)
if check_dev_number():
@@ -254,7 +254,7 @@ class EmsBoard:
for j in range(4):
fl_data.append(0)
## Выстевление в устройства данных прочитанных из файла
## Выстевление в устройства данных прочитанных из файла
func btn_load(json_data):
for item in json_data.keys():
var ports: Dictionary = json_data[item]