Контроль ячеек ЯУ-07Б, УГ, УКП, ЭМС-Г

This commit is contained in:
2024-11-13 15:43:24 +03:00
parent af3aad619a
commit 6648a8ba89
3 changed files with 124 additions and 20 deletions

67
PRD.gd
View File

@@ -8,10 +8,9 @@ var ports_wr: Dictionary # Словарь с портами для з
var port: int
var broadcast_packet: PackedByteArray
var node_select1: Node
const CONST_MIN_TEMP: int = -25
const MAXIMUM_CODE_ADC: int = 3796
const MINIMUM_CODE_AD: int = 2660
const TEMP: float = 115.0 / (MAXIMUM_CODE_ADC - MINIMUM_CODE_AD)
var timeout: float = Yau07.ONLINE_TIMEOUT
var last_update_time: float = 0.0
var flag_yau_control: bool
## Класс для отправки данных в сокет
class Socket extends PacketPeerUDP:
@@ -21,13 +20,27 @@ class Socket extends PacketPeerUDP:
func poll_receive(sock: Socket) -> bool: ## Приёмник
while sock.get_available_packet_count() > 0:
broadcast_packet = sock.get_packet()
var addr_receive = sock.get_packet_ip()
var port_receive = sock.get_packet_port()
if (address == addr_receive) and (port == port_receive): # Если есть коннект с ЯУ-07Б
var data = unit.parse(broadcast_packet)
print('DATA: ', data)
if timeout - last_update_time > 0:
while sock.get_available_packet_count() > 0:
broadcast_packet = sock.get_packet()
var addr_receive = sock.get_packet_ip()
var port_receive = sock.get_packet_port()
if broadcast_packet:
$Controlpanel/yau07.text = 'ЯУ-07Б НА СВЯЗИ'
$Controlpanel/yau07.modulate = Constants.GREEN
flag_yau_control = true
last_update_time = 0.0
if (address == addr_receive) and (port == port_receive):
unit.parse(broadcast_packet)
else:
if sock.get_available_packet_count():
last_update_time = 0.0
else:
$Controlpanel/yau07.text = 'НЕТ СВЯЗИ С ЯУ-07Б'
$Controlpanel/yau07.modulate = Constants.RED
flag_yau_control = false
return false
@@ -59,6 +72,7 @@ func draw_tabl(tbl, row: Array, count_row: int):
func _process(delta: float) -> void:
last_update_time += delta
poll_receive(soc_brodcast)
if broadcast_packet:
parse_broadcast(broadcast_packet)
@@ -73,8 +87,18 @@ func parse_broadcast(packet):
var temperature: int # Температура с широковещания
var dry_contact: int # Контроль сухих контактов
var DKM: int
var EMS_G: int
var EMS_G: int
var status_board = packet.decode_u8(8)
for i in 4:
if i == 0:
$Controlpanel/EMS_G.modulate = Constants.GREEN if status_board & (1 << i) and flag_yau_control else Constants.RED
elif i == 1:
$Controlpanel/UG.modulate = Constants.GREEN if status_board & (1 << i) and flag_yau_control else Constants.RED
elif i == 2:
$Controlpanel/UKP1.modulate = Constants.GREEN if status_board & (1 << i) and flag_yau_control else Constants.RED
elif i == 3:
$Controlpanel/UKP2.modulate = Constants.GREEN if status_board & (1 << i) and flag_yau_control else Constants.RED
$Packet.text = 'broadcast: ' + str(packet)
dry_contact = packet.decode_u16(35)
node_select1.set_node_text(2, 0, '%d' % dry_contact)
@@ -88,7 +112,7 @@ func parse_broadcast(packet):
for i in range(8):
var TMP = packet.decode_u16(55 + 2 * i)
temperature = CONST_MIN_TEMP + (MAXIMUM_CODE_ADC - TMP) * TEMP
temperature = Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - TMP) * Constants.TEMP
node_select1.set_node_text(1, i, '%d' % temperature)
for i in range(8):
@@ -96,9 +120,10 @@ func parse_broadcast(packet):
node_select1.set_node_text(0, i+8, '%d' % power)
for i in range(8):
var TMP = packet.decode_u16(87 + 2 * i)
temperature = CONST_MIN_TEMP + (MAXIMUM_CODE_ADC - TMP) * TEMP
node_select1.set_node_text(1, i+8, '%d' % temperature)
if len(packet) > 87 + 2 * i:
var TMP = packet.decode_u16(87 + 2 * i)
temperature = Constants.CONST_MIN_TEMP + (Constants.MAXIMUM_CODE_ADC - TMP) * Constants.TEMP
node_select1.set_node_text(1, i+8, '%d' % temperature)
for i in range(15):
EMS_G = packet.decode_u16(9 + 2 * i)
@@ -107,9 +132,9 @@ func parse_broadcast(packet):
func on_line_changed(_unit) -> void:
if unit.online:
print_debug('Online')
print('Off line')
else:
print_debug('Offline')
print('On line')
## Ессли отсутствует подключение к ячейке ЯУ-07
@@ -120,3 +145,7 @@ func on_command_fail(_unit) -> void:
## Индикация чтения портов
func on_command_done(_unit) -> void:
pass
func _on_control_button(toggled_on: bool) -> void:
pass # Replace with function body.

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=6 format=3 uid="uid://cvor2jm4xk3ha"]
[gd_scene load_steps=7 format=3 uid="uid://cvor2jm4xk3ha"]
[ext_resource type="Script" path="res://PRD.gd" id="1_v273n"]
[ext_resource type="Script" path="res://table/table.gd" id="2_vmbyo"]
@@ -9,6 +9,9 @@
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_hdj8q"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ovl8a"]
bg_color = Color(0.0426611, 0.0872922, 0.0207804, 1)
[node name="Node2D" type="Node2D"]
script = ExtResource("1_v273n")
@@ -53,3 +56,69 @@ theme_override_styles/read_only = SubResource("StyleBoxTexture_hdj8q")
text = "broadcast"
editable = false
wrap_mode = 1
[node name="Button" type="Button" parent="."]
offset_left = 22.0
offset_top = 22.0
offset_right = 148.0
offset_bottom = 54.0
theme_override_styles/pressed = SubResource("StyleBoxFlat_ovl8a")
text = "КОНТРОЛЬ"
[node name="Controlpanel" type="ColorRect" parent="."]
offset_left = 23.0
offset_top = 66.0
offset_right = 356.0
offset_bottom = 416.0
color = Color(0.390334, 0.227948, 0.288326, 1)
metadata/_edit_lock_ = true
[node name="yau07" type="Label" parent="Controlpanel"]
offset_left = 8.0
offset_top = 12.0
offset_right = 250.0
offset_bottom = 35.0
text = "ЯУ-07Б НА СВЯЗИ"
metadata/_edit_lock_ = true
[node name="FS" type="Label" parent="Controlpanel"]
offset_left = 8.0
offset_top = 35.0
offset_right = 250.0
offset_bottom = 58.0
text = "ФС НА СВЯЗИ"
metadata/_edit_lock_ = true
[node name="EMS_G" type="Label" parent="Controlpanel"]
offset_left = 8.0
offset_top = 58.0
offset_right = 250.0
offset_bottom = 81.0
text = "НАЛИЧИЕ ЯЧЕЙКИ ЭМС Г"
metadata/_edit_lock_ = true
[node name="UG" type="Label" parent="Controlpanel"]
offset_left = 8.0
offset_top = 81.0
offset_right = 250.0
offset_bottom = 104.0
text = "НАЛИЧИЕ ЯЧЕЙКИ УГ"
metadata/_edit_lock_ = true
[node name="UKP1" type="Label" parent="Controlpanel"]
offset_left = 8.0
offset_top = 104.0
offset_right = 250.0
offset_bottom = 127.0
text = "НАЛИЧИЕ ЯЧЕЙКИ УКП 1"
metadata/_edit_lock_ = true
[node name="UKP2" type="Label" parent="Controlpanel"]
offset_left = 8.0
offset_top = 127.0
offset_right = 250.0
offset_bottom = 150.0
text = "НАЛИЧИЕ ЯЧЕЙКИ УКП 2"
metadata/_edit_lock_ = true
[connection signal="toggled" from="Button" to="." method="_on_control_button"]

View File

@@ -5,6 +5,12 @@ const BROADCAST_PORT: int = 50000
const DEFAULT_ADDRESS: String = '10.1.1.52'
const DEFAULT_PORT: String = '50052'
const BASE_ADDR: int = 0x100
const RED = Color(1, 0, 0, 1)
const GREEN = Color(0, 1, 0, 1)
const CONST_MIN_TEMP: int = -25
const MAXIMUM_CODE_ADC: int = 3796
const MINIMUM_CODE_AD: int = 2660
const TEMP: float = 115.0 / (MAXIMUM_CODE_ADC - MINIMUM_CODE_AD)
const TableNode = preload("res://table/node.tscn")
const ROWS_REGS_DATA: Array = [
[TableNode, TableNode, TableNode, TableNode],