Доработка управленим аттенюаторами у углами доу в контроле

This commit is contained in:
Maxim
2025-07-07 16:29:18 +03:00
parent 5bb1e24c7a
commit 916b82f693
3 changed files with 47 additions and 6 deletions

View File

@@ -11,12 +11,16 @@ const POWER_UKP_1: int = 31
const POWER_UKP_2: int = 63
const bit_dkm_3: int = 3
const bit_dkm_4: int = 4
const ADDR_UG_LITERA_1: int = 0x106
const ADDR_UG_LITERA_2: int = 0x108
var count_packet_1:int = 0
var power_array_1: Array = []
var count_packet_2:int = 0
var power_array_2: Array = []
var currecnt_unit: String
var ug_work_1: int
var ug_work_2: int
enum STATE_VAL {
NONE = 0,
@@ -43,6 +47,18 @@ func _ready() -> void:
control_timer.start()
func _enter_tree() -> void:
signaller.connect('режим_работа', Callable(self, 'on_mode_changed').bind(false))
on_ug_setting()
func _exit_tree() -> void:
var unit_key = settings.get_unit_key(get_meta('unit_name')[0])
var unit_prd = network.units[unit_key]
var prd_module = prd.prd_dict[unit_prd.name]
prd_module.cmd_array.append([unit_prd.CmdCode.WRITE_ISA, [ADDR_UG_LITERA_1, ug_work_1, ADDR_UG_LITERA_2, ug_work_2]])
func set_default_state() -> void:
$kasseta_P_1/ref_A19.state = STATE_VAL.NONE
$kasseta_P_1/ref_A20.state = STATE_VAL.NONE
@@ -231,10 +247,9 @@ func _on_control_fs(mode: bool) -> void:
func on_stop_control() -> void:
_on_control_fs(false)
print('stop timer')
func on_fs_update_state(packet_type_7: Dictionary):
func on_fs_update_state(packet_type_7: Dictionary) -> void:
var parts = currecnt_unit.split('-')
var last_part = parts[-1] # Прибор
for fs in packet_type_7:
@@ -255,3 +270,25 @@ func on_fs_update_state(packet_type_7: Dictionary):
$kasseta_FS_VD/ref_A4.state = STATE_VAL.GOOD if packet_type_7[fs].isg == 1 else STATE_VAL.ERROR if packet_type_7[fs].isg == 0 else STATE_VAL.NONE
if fs == 19 and last_part == '':
$kasseta_FS_VD/ref_A4.state = STATE_VAL.GOOD if packet_type_7[fs].isg == 1 else STATE_VAL.ERROR if packet_type_7[fs].isg == 0 else STATE_VAL.NONE
func on_ug_setting() -> void:
var unit_key = settings.get_unit_key(get_meta('unit_name')[0])
var unit_prd = network.units[unit_key]
if unit_prd.isa_ports.has(ADDR_UG_LITERA_1):
ug_work_1 = unit_prd.isa_ports[ADDR_UG_LITERA_1]
if unit_prd.isa_ports.has(ADDR_UG_LITERA_2):
ug_work_2 = unit_prd.isa_ports[ADDR_UG_LITERA_2]
const dou = 0x3
const att = 0x7
var result = ((att & 0x07) << 3) | (dou & 0x07)
var prd_module = prd.prd_dict[unit_prd.name]
prd_module.cmd_array.append([unit_prd.CmdCode.WRITE_ISA, [ADDR_UG_LITERA_1, result, ADDR_UG_LITERA_2, result]])
func on_mode_changed(in_tree: bool) -> void:
if not in_tree:
queue_free()

View File

@@ -84,7 +84,6 @@ func _enter_tree() -> void:
func _ready() -> void:
var unit_key = settings.get_unit_key(unit_name)
var a = network.units
var unit_sch3 = network.units[unit_key]
var items = get_tree().get_nodes_in_group('bits_items_switch')
for item in items:

View File

@@ -194,7 +194,6 @@ class PRD:
fs.um_code_rx = u.isa_ports[port] & 0x7
func on_line_changed(unit_ems):
if not unit_ems.online:
yemsg_board.ems_load = yemsg_board.LoadState.NOT_DEFINED
@@ -203,8 +202,6 @@ class PRD:
func on_data_received(_u):
set_prd_status()
if state != PrdState.WORK:
return
if yemsg_board.state_board != yemsg_board.WAIT or yemsg_board.state_cmd != yemsg_board.WAIT:
return
if yemsg_board.online:
@@ -280,6 +277,8 @@ func _ready() -> void:
var unit_caps_key = settings.get_unit_key('уарэп-капсрпб')
var unit_caps = network.units[unit_caps_key]
unit_caps.connect('data_received', Callable(self, 'on_data_capsrpb_received'))
signaller.connect('режим_контроль', Callable(self, 'on_mode_changed').bind(PrdState.CONTROL))
signaller.connect('режим_работа', Callable(self, 'on_mode_changed').bind(PrdState.WORK))
func get_fs_param(index: int) -> Array:
@@ -369,3 +368,9 @@ func on_data_capsrpb_received(unit0: capsrpb.CapsRpb):
if fs.has('width'):
fs_module.width_caps_rx = int(fs['width'])
signaller.emit_signal('fs_update_state', fs_dict)
## Вызывается при переходе в режим работа/контроль
func on_mode_changed(changed_mode: int) -> void:
for pdr in prd.prd_dict.values():
pdr.state = changed_mode