ilia gurielidze b961d2055a MTN6-219
2025-05-26 15:24:47 +04:00

90 lines
2.6 KiB
GDScript

@tool
extends Node
@onready var box_spawner: BoxSpawner = $"../BoxSpawner"
@onready var ul_1_3: BeltConveyorAssembly = $"../UL1_3"
@onready var hmi_start_pb: PushButton = $"../HMI_UL1_3_JR_PB1"
@onready var hmi_ul_1_3_jr_pb_2: PushButton = $"../HMI_UL1_3_JR_PB2"
var color_1
var color_2
var tag_group = "TagGroup0"
var hmi_start_color_1 = "UL1_3_JR_PB1.HMI.Start_Color"
var hmi_start_color_2 = "UL1_3_JR_PB2.HMI.Start_Color"
var display_color_1
var display_color_2
func _ready() -> void:
SimulationEvents.simulation_started.connect(_on_simulation_started)
func _on_simulation_started() -> void:
OIPComms.register_tag(tag_group,hmi_start_color_1,1)
OIPComms.register_tag(tag_group,hmi_start_color_2,1)
OIPComms.register_tag(tag_group, "UL1_3_JR_PB1.CTRL.STS.Log.LEN", 1)
# Register all 82 DATA tags
for i in range(82):
var data_tag = "UL1_3_JR_PB1.CTRL.STS.Log.DATA[" + str(i) + "]"
OIPComms.register_tag(tag_group, data_tag, 1)
func read_string(tag_group_name: String, base_tag_name: String) -> String:
"""Reads the log string from PLC DATA array"""
var result = ""
# Construct the length and data tag names
var len_tag = base_tag_name + ".LEN"
var data_tag = base_tag_name + ".DATA"
# Read the actual string length from PLC (if available)
var string_length = OIPComms.read_int32(tag_group_name, len_tag)
# Limit to 82 max and ensure it's valid
if string_length <= 0 or string_length > 82:
string_length = 82
# Read each character
for i in range(string_length):
var data_tag_indexed = data_tag + "[" + str(i) + "]"
var char_value = OIPComms.read_int8(tag_group_name, data_tag_indexed)
# Check for null terminator or invalid ASCII
# Convert SINT to ASCII character
if char_value > 0 and char_value < 128: # Valid ASCII range
result += char(char_value)
return result
func _physics_process(delta: float) -> void:
box_spawner.disable = ul_1_3.speed == 0
color_1 = OIPComms.read_int32(tag_group,hmi_start_color_1)
color_2 = OIPComms.read_int32(tag_group,hmi_start_color_2)
#print("Log String: ", read_string(tag_group, "UL1_3_JR_PB1.CTRL.STS.Log"))
match color_1:
1:
display_color_1 = Color.CHOCOLATE
2:
display_color_1 = Color.GRAY
3:
display_color_1 = Color.GREEN
4:
display_color_1 = Color.BLACK
_:
display_color_1 = Color.WHITE
match color_2:
1:
display_color_2 = Color.CHOCOLATE
2:
display_color_2 = Color.GRAY
3:
display_color_2 = Color.GREEN
4:
display_color_2 = Color.BLACK
_:
display_color_2 = Color.WHITE
hmi_start_pb.button_color = display_color_1
hmi_ul_1_3_jr_pb_2.button_color = display_color_2