Контроль ячеек ЯУ-07Б, УГ, УКП, ЭМС-Г
This commit is contained in:
67
PRD.gd
67
PRD.gd
@@ -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.
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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],
|
||||
|
||||
Reference in New Issue
Block a user