add read status ems g

This commit is contained in:
2024-12-18 11:09:40 +03:00
parent 82459cdac7
commit 504b8869e5
5 changed files with 76 additions and 59 deletions

File diff suppressed because one or more lines are too long

View File

@@ -1,15 +1,21 @@
extends Panel
var node_select1: Node
var shift: int = 2
var input_status: Dictionary = {}
var button_link_meta: Dictionary = {}
func _on_read_ems_g():
for i in 7:
Network.send_array.append({0x122:1+i})
Network.read_array.append(0x124)
Network.read_array.append(0x128)
for i in 16:
Network.send_array.append(['wr', {Constants.EMS_G_BASE_ADDR+2: 1+i}])
Network.send_array.append(['rd', [Constants.EMS_G_BASE_ADDR+0xA]])
for i in range(46, 62):
Network.send_array.append(['wr', {Constants.EMS_G_BASE_ADDR+2: 1+i}])
Network.send_array.append(['rd', [Constants.EMS_G_BASE_ADDR+4, Constants.EMS_G_BASE_ADDR+8]])
func _on_sync():
pass
func _ready() -> void:
node_select1 = $table1
@@ -30,7 +36,7 @@ func _ready() -> void:
draw_tabl(node_select1, EMS_G_TABLE, EMS_G_TABLE.size())
node_select1.get_node2(1, 1).text = 'x3_OUT:GND'
node_select1.get_node2(0, 2).text = 'x3_IN:GND'
node_select1.get_node2(0, 2).text = 'x3_IN :GND'
for i in Constants.INPUT_EMS_G.size():
node_select1.get_node2(0, i+shift+1).text = Constants.INPUT_EMS_G[i]
@@ -53,10 +59,10 @@ func _ready() -> void:
columns_min_size.append(80)
node_select1.set_columns_min_size(columns_min_size)
Network.connect('_yau_receive', Callable(self, '_on_data_received'))
var parrent = get_parent().get_parent()
parrent.connect('read_ems_g', Callable(self, '_on_read_ems_g'))
create_link_button(node_select1, 3, 19, 2, 18)
Network.connect('yau_receive', Callable(self, '_on_data_received'))
create_link_button(node_select1, shift+1, 16+shift+1, shift, 16+shift)
func draw_tabl(tbl, row: Array, count_row: int):
@@ -109,7 +115,7 @@ func create_link_button(node, count_rows_sart: int, count_rows_end: int, coln_st
var OUTPUT = 47
for i_colum in 16:
META_EMS_G.append([INPUT+i_row, OUTPUT+i_colum])
input_status[OUTPUT+i_colum] = 0
button_link_meta[OUTPUT+i_colum] = 0
var count_register = 0
for i_row in range(count_rows_sart, count_rows_end):
@@ -124,33 +130,33 @@ func create_link_button(node, count_rows_sart: int, count_rows_end: int, coln_st
func on_mode_link(mode, list):
## Формирование команды для выбора устройства
var meta = list.get_meta('device')
var address_port_wr = 0x122
var address_port_wr = Constants.EMS_G_BASE_ADDR+2
var ports_wr: Dictionary = {address_port_wr : meta}
Network.send_array.append(ports_wr) # Отправка команды
Network.send_array.append(['wr', ports_wr]) # Отправка команды
## Формирование команды для отправкы команды на устройство
ports_wr = {}
address_port_wr = 0x128
address_port_wr = Constants.EMS_G_BASE_ADDR+8
ports_wr[address_port_wr] = 0x0000 if mode == 0 else 0x2000 if mode == 1 else 0x4000 if mode == 2 else 0x8000
Network.send_array.append(ports_wr)
Network.send_array.append(['wr', ports_wr])
func on_btn_connect(toggled_on: bool, chk_node: Node, chk_btn: Node):
## Формирование команды для выбора устройства
var meta = chk_btn.get_meta('device')
var address_port_wr = 0x122
var address_port_wr = Constants.EMS_G_BASE_ADDR+2
var ports_wr: Dictionary = {address_port_wr : meta[1]}
Network.send_array.append(ports_wr) # Отправка команды
Network.send_array.append(['wr', ports_wr]) # Отправка команды
## Формирование команды для отправкы команды на устройство
var color_chk_btn = chk_node.get_child(0, false)
if toggled_on:
color_chk_btn.color = Color.WEB_GREEN
input_status[meta[1]] += 1 << meta[0]-1
button_link_meta[meta[1]] += 1 << meta[0]-1
else:
color_chk_btn.color = Color.BLACK
input_status[meta[1]] -= 1 << meta[0]-1
button_link_meta[meta[1]] -= 1 << meta[0]-1
ports_wr = {}
address_port_wr = 0x124
ports_wr[address_port_wr] = input_status[meta[1]]
Network.send_array.append(ports_wr)
address_port_wr = Constants.EMS_G_BASE_ADDR+4
ports_wr[address_port_wr] = button_link_meta[meta[1]]
Network.send_array.append(['wr', ports_wr])

View File

@@ -8,7 +8,7 @@ var node_select1: Node
var node_select2: Node
var flag_yau_control: bool
var CONTROL_TABLE: Array
var isa: Array = []
func _ready() -> void:
# Таблица УКП_1
@@ -49,9 +49,9 @@ func _ready() -> void:
$TabContainer/PRD/Zapret.connect('toggled', Callable(self, '_on_zapret').bind($TabContainer/PRD/Zapret))
$TabContainer/PRD/Zapret2.connect('toggled', Callable(self, '_on_zapret').bind($TabContainer/PRD/Zapret2))
Network.connect('_yau_status_line', Callable(self, '_on_yau_status'))
Network.connect('_yau_receive', Callable(self, '_on_data_received'))
Network.connect('_yau_read_isa', Callable(self, '_on_read_isa'))
Network.connect('yau_status_line', Callable(self, '_on_yau_status'))
Network.connect('yau_receive', Callable(self, '_on_data_received'))
Network.connect('yau_read_isa', Callable(self, '_on_read_isa'))
## From Network status about yau-07
@@ -70,10 +70,23 @@ func _on_yau_status(yau_status):
func _on_read_isa(unit_isa_ports):
var isa: Array = []
for i in unit_isa_ports:
isa.append('%x: %s' % [i, unit_isa_ports[i]])
$ISA.text = 'ISA: ' + str(isa)
var isa_data: Dictionary = {}
for key in unit_isa_ports.keys():
isa_data[key] = unit_isa_ports[key]
if isa_data.has(290):
var tmp = isa_data[290]
isa_data.erase(290)
var found = false
for i in range(Constants.EMS_G_PORT_DATA_HOLDER.size()):
if Constants.EMS_G_PORT_DATA_HOLDER[i][0] == tmp:
Constants.EMS_G_PORT_DATA_HOLDER[i][1] = isa_data
found = true
break
if not found:
Constants.EMS_G_PORT_DATA_HOLDER.append([tmp, isa_data])
#$ISA.text = 'ISA: ' + str(isa)
## Рисует таблицу
@@ -174,7 +187,7 @@ func _on_data_received(data_from_yau_07):
frame = Constants.Frame.VARIABLE if i == 4 else Constants.Frame.WORK
set_frame(CONTROL_FRAME[i], frame)
node_ems_g.text = Constants.EMS_G[i][j]
node_ems_g.text = Constants.EMS_G_CONTROL_PANEL[i][j]
node_ems_g.modulate = [Color.RED, Color.GREEN][j]
#set_frame(CONTROL_FRAME[i], frame)
@@ -254,5 +267,4 @@ func _on_zapret(toggled_on: bool, meta) -> void:
func _on_read_isa_pressed() -> void:
Network.read_array.append(0x122)
Network.read_array.append(0x128)
Network.send_array.append(['rd', [0x122, 0x124, 0x128]])

View File

@@ -7,6 +7,7 @@ const DEFAULT_PORT: String = '50011'
const CONST_MIN_TEMP: int = -25
const MAXIMUM_CODE_ADC: int = 3796
const MINIMUM_CODE_AD: int = 2660
const EMS_G_BASE_ADDR: int = 0x120
const TEMP: float = 115.0 / (MAXIMUM_CODE_ADC - MINIMUM_CODE_AD)
const TableNode = preload("res://table/node.tscn")
const TableList = preload("res://table/node_list.tscn")
@@ -61,7 +62,7 @@ var CONTROL_POWER_SUPPLY: Array = [
['ИП9-50 №3', 'ОШИБКА. КОНТРОЛЬ ИП9-50 №3'],
['ИП12-50 №2', 'ОШИБКА. КОНТРОЛЬ ИП12-50 №2'],
['ИП5-25', 'ОШИБКА. КОНТРОЛЬ ИП5-25']]
const EMS_G: Array = [
const EMS_G_CONTROL_PANEL: Array = [
['Нет Х3:2(СЗИ2 от УФ)', 'Есть Х3:2(СЗИ2 от УФ)'],
['Нет Х3:19(СИ2 от ФС)', 'Есть Х3:19(СИ2 от ФС)'],
['Нет Х3:11(СИ2 в УФ)', 'Есть Х3:11(СИ2 в УФ)'],
@@ -101,7 +102,7 @@ const OUT_EMS_G: Array = [
[60, '31 :47'],
[61, '32 :48'],
[62, '33 :49']]
const OUT_x128 = [
const OUT_x128: Array = [
'Р',
'К',
'0',
@@ -138,3 +139,5 @@ enum STATE {
WRITE_ISA,
DONE,
}
var EMS_G_PORT_DATA_HOLDER: Array = []

View File

@@ -10,12 +10,11 @@ var last_update_time: float = 0.0
var broadcast_packet: PackedByteArray
var state = Constants.STATE.WAIT
var send_array: Array = []
var read_array: Array = []
signal _yau_status_line(_status) ## Вызывается когда меняется состояние связи с ячейкой
signal _yau_receive(_data_from_yau) ##
signal _yau_read_isa(_unit_isa_ports)
signal yau_status_line(_status) ## Вызывается когда меняется состояние связи с ячейкой
signal yau_receive(_data_from_yau) ##
signal yau_read_isa(_unit_isa_ports)
## Класс для отправки данных в сокет
class Socket extends PacketPeerUDP:
@@ -35,7 +34,7 @@ func poll_receive(sock: Socket) -> bool: ## Приёмник
last_update_time = 0.0
unit.parse(broadcast_packet)
var data_from_yau_07 = unit.status
emit_signal('_yau_receive', data_from_yau_07)
emit_signal('yau_receive', data_from_yau_07)
else:
if sock.get_available_packet_count():
last_update_time = 0.0
@@ -73,29 +72,27 @@ func state_machine():
## Режим ожидания
if state == Constants.STATE.WAIT and fl_done:
if read_array.size():
state = Constants.STATE.READ_ISA
elif send_array.size():
state = Constants.STATE.WRITE_ISA
if send_array.size():
state = Constants.STATE.READ_ISA if send_array[0][0] == 'rd' else Constants.STATE.WRITE_ISA
## Режим чтения из ИСА
elif state == Constants.STATE.READ_ISA and fl_done:
var ports_read = read_array.pop_front()
unit.send_isa(unit.CmdCode.READ_ISA, [ports_read])
var ports_read = send_array.pop_front()
unit.send_isa(unit.CmdCode.READ_ISA, ports_read[1])
state = Constants.STATE.DONE
## Режим записи в ИСА
elif state == Constants.STATE.WRITE_ISA and fl_done:
var ports_write = send_array.pop_front()
var key = ports_write.keys()
unit.send_isa(unit.CmdCode.WRITE_ISA, [key[0], ports_write[key[0]]])
var key = ports_write[1].keys()
unit.send_isa(unit.CmdCode.WRITE_ISA, [key[0], ports_write[1][key[0]]])
state = Constants.STATE.WAIT
elif state == Constants.STATE.DONE and fl_done:
emit_signal('_yau_read_isa', unit.isa_ports)
emit_signal('yau_read_isa', unit.isa_ports)
state = Constants.STATE.WAIT
func on_line_changed(_unit) -> void:
emit_signal('_yau_status_line', unit.online)
emit_signal('yau_status_line', unit.online)
## Ессли отсутствует подключение к ячейке ЯУ-07