From 58fe02a878cd70409397d82f6c804716a7f046a5 Mon Sep 17 00:00:00 2001 From: ilia gurielidze Date: Fri, 23 May 2025 20:39:56 +0400 Subject: [PATCH] MTN6-207 --- .../AOI_STATION_JR_PB/MTN6_Simulation.L5X | 269 +++++++++--------- Simulations/AOI_STATION_JR_PB/Simulation.tscn | 86 ++++-- Simulations/AOI_STATION_JR_PB/utils.gd | 82 ++++++ 3 files changed, 281 insertions(+), 156 deletions(-) diff --git a/Simulations/AOI_STATION_JR_PB/MTN6_Simulation.L5X b/Simulations/AOI_STATION_JR_PB/MTN6_Simulation.L5X index 447e300..9765535 100644 --- a/Simulations/AOI_STATION_JR_PB/MTN6_Simulation.L5X +++ b/Simulations/AOI_STATION_JR_PB/MTN6_Simulation.L5X @@ -1,6 +1,6 @@  - - + @@ -4957,7 +4957,7 @@ NEEDS CLARIFICATION]]> - + + + + + + + + - + @@ -5085,7 +5093,7 @@ NEEDS CLARIFICATION]]> - + @@ -6160,140 +6168,51 @@ NEEDS CLARIFICATION]]> - + - + - + - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + ],[0],0,4,0,0],[[0,[0,'UL1_3 Jammeded$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00' + ]],[0,[0,'UL1_3 Jammed$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00' + ],0]]]]]> @@ -6301,7 +6220,7 @@ NEEDS CLARIFICATION]]> - + @@ -6328,9 +6247,9 @@ NEEDS CLARIFICATION]]> - + - + @@ -6353,7 +6272,98 @@ NEEDS CLARIFICATION]]> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6362,10 +6372,10 @@ NEEDS CLARIFICATION]]> - + - + @@ -6386,10 +6396,10 @@ NEEDS CLARIFICATION]]> - + - + @@ -6556,47 +6566,52 @@ NEEDS CLARIFICATION]]> - + - + - + - + - + - + - + - + - + + + + + + @@ -6605,12 +6620,12 @@ NEEDS CLARIFICATION]]> - + - + diff --git a/Simulations/AOI_STATION_JR_PB/Simulation.tscn b/Simulations/AOI_STATION_JR_PB/Simulation.tscn index f233aab..e9336af 100644 --- a/Simulations/AOI_STATION_JR_PB/Simulation.tscn +++ b/Simulations/AOI_STATION_JR_PB/Simulation.tscn @@ -1,19 +1,19 @@ [gd_scene load_steps=14 format=4 uid="uid://bbt38yd6yc0sc"] -[ext_resource type="PackedScene" uid="uid://dyhvoundu2kqc" path="res://parts/Building.tscn" id="1_1gfko"] -[ext_resource type="PackedScene" uid="uid://bqlkj4ar8q1ws" path="res://parts/assemblies/BeltConveyorAssembly.tscn" id="3_uobxk"] -[ext_resource type="PackedScene" uid="uid://c1mup2vown0ak" path="res://parts/BladeStop.tscn" id="4_mpm82"] -[ext_resource type="PackedScene" uid="uid://bl73u0rvt2orv" path="res://parts/Despawner.tscn" id="5_uobxk"] -[ext_resource type="PackedScene" uid="uid://co2mqmdwpn57w" path="res://parts/BoxSpawner.tscn" id="5_vtp77"] -[ext_resource type="PackedScene" uid="uid://dvjrx5crpqs5f" path="res://parts/SideGuard.tscn" id="7_qdflh"] -[ext_resource type="Shader" uid="uid://wtu5yyfpdcgl" path="res://assets/3DModels/Shaders/MetalShaderSideGuard.tres" id="8_crdol"] -[ext_resource type="PackedScene" uid="uid://gddgyvex6gdj" path="res://parts/PushButton.tscn" id="9_crdol"] -[ext_resource type="PackedScene" uid="uid://kdpe7o4ec1fa" path="res://parts/DiffuseSensor.tscn" id="12_lsr5j"] -[ext_resource type="Script" uid="uid://mk68t7o3rd8u" path="res://utils.gd" id="14_wqnqx"] +[ext_resource type="PackedScene" uid="uid://dyhvoundu2kqc" path="res://parts/Building.tscn" id="1_3b5ec"] +[ext_resource type="PackedScene" uid="uid://bqlkj4ar8q1ws" path="res://parts/assemblies/BeltConveyorAssembly.tscn" id="2_rxahx"] +[ext_resource type="PackedScene" uid="uid://c1mup2vown0ak" path="res://parts/BladeStop.tscn" id="3_gvmjx"] +[ext_resource type="PackedScene" uid="uid://co2mqmdwpn57w" path="res://parts/BoxSpawner.tscn" id="4_6eg1i"] +[ext_resource type="PackedScene" uid="uid://bl73u0rvt2orv" path="res://parts/Despawner.tscn" id="5_rcr4s"] +[ext_resource type="PackedScene" uid="uid://dvjrx5crpqs5f" path="res://parts/SideGuard.tscn" id="6_a36lg"] +[ext_resource type="Shader" uid="uid://wtu5yyfpdcgl" path="res://assets/3DModels/Shaders/MetalShaderSideGuard.tres" id="7_huqq8"] +[ext_resource type="PackedScene" uid="uid://gddgyvex6gdj" path="res://parts/PushButton.tscn" id="8_kfv3x"] +[ext_resource type="PackedScene" uid="uid://kdpe7o4ec1fa" path="res://parts/DiffuseSensor.tscn" id="9_bk1n2"] +[ext_resource type="Script" uid="uid://mk68t7o3rd8u" path="res://utils.gd" id="10_ow4ia"] -[sub_resource type="ShaderMaterial" id="ShaderMaterial_wqnqx"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_3b5ec"] render_priority = 0 -shader = ExtResource("8_crdol") +shader = ExtResource("7_huqq8") shader_parameter/Scale = 3.70031 shader_parameter/Metallic = 0.94 shader_parameter/Roughness = 0.5 @@ -33,7 +33,7 @@ _surfaces = [{ }] blend_shape_mode = 0 -[sub_resource type="ArrayMesh" id="ArrayMesh_powme"] +[sub_resource type="ArrayMesh" id="ArrayMesh_rxahx"] resource_name = "RCSideGuard_RCSideGuard" _surfaces = [{ "aabb": AABB(-0.5, -0.00427932, -1.12983, 1, 0.604281, 0.169856), @@ -41,7 +41,7 @@ _surfaces = [{ "format": 34896613399, "index_count": 204, "index_data": PackedByteArray("AgAJAAcAAgAMAAkALAAIACgALAAGAAgADAAgACIADAADACAAHQAjACEAHQAmACMAHQAaACYAHQAYABoALwApADEALwAtACkAEQAyABMAEQAwADIAEAA3ADUAEAASADcAPQBCAEYAPQBBAEIAbQBDAEAAbQBpAEMARwBeADwARwBhAF4AWgBgAGUAWgBfAGAAWwBWAFQAWwBkAFYAcQBoAGwAcQByAGgATABzAHAATABPAHMATQB6AE4ATQB4AHoABAA7AAAABAA+ADsADgBFAAsADgBIAEUACgBqACoACgBEAGoAJABJAA0AJABjAEkAAQBcAB4AAQA6AFwAHwBYABwAHwBdAFgAJwBiACUAJwBnAGIAGwBmACcAGwBXAGYAHABSABYAHABZAFIAKgB0ADMAKgBqAHQAKwA/AAUAKwBrAD8ALgBrACsALgBuAGsAMwBQABQAMwB1AFAANABKAA8ANAB2AEoADwBvAC4ADwBLAG8AFQB7ADkAFQBRAHsAFwBVABkAFwBTAFUAOAB3ADYAOAB5AHcA"), -"material": SubResource("ShaderMaterial_wqnqx"), +"material": SubResource("ShaderMaterial_3b5ec"), "name": "BeltTopDown", "primitive": 3, "uv_scale": Vector4(0, 0, 0, 0), @@ -53,9 +53,9 @@ shadow_mesh = SubResource("ArrayMesh_gn6s2") [node name="Simulation" type="Node3D"] -[node name="Building" parent="." instance=ExtResource("1_1gfko")] +[node name="Building" parent="." instance=ExtResource("1_3b5ec")] -[node name="UL1_3" parent="." instance=ExtResource("3_uobxk")] +[node name="UL1_3" parent="." instance=ExtResource("2_rxahx")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00308008, -0.308412, -1.61317) local_floor_plane = Plane(0, 1, 0, -1.69159) enable_comms = true @@ -65,21 +65,22 @@ metadata/hijack_scale = true size = Vector3(14.7823, 0.5, 1.524) metadata/hijack_scale = true -[node name="BladeStop" parent="." instance=ExtResource("4_mpm82")] -transform = Transform3D(-1, -5.96046e-08, 0, 5.96046e-08, -1, 0, 0, 0, 0.448, 2.55519, 0.984438, -1.69079) +[node name="BladeStop" parent="." instance=ExtResource("3_gvmjx")] +transform = Transform3D(-1, -5.96046e-08, 0, 5.96046e-08, -1, 0, 0, 0, 0.448, 2.55519, 1.10247, -1.69079) +active = true -[node name="BoxSpawner" parent="." instance=ExtResource("5_vtp77")] +[node name="BoxSpawner" parent="." instance=ExtResource("4_6eg1i")] transform = Transform3D(1, 2.30012e-09, -9.31322e-10, -2.30012e-09, 1, 8.84756e-09, 9.31322e-10, -8.84756e-09, 1, -6.66841, 0.177073, -1.71267) -[node name="Despawner" parent="." instance=ExtResource("5_uobxk")] +[node name="Despawner" parent="." instance=ExtResource("5_rcr4s")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.60256, 0.176073, -1.63491) -[node name="SideGuard" parent="." instance=ExtResource("7_qdflh")] -transform = Transform3D(-3.26884e-07, 1, -1.98606e-08, -1.50447, -1.77722e-08, 0.913615, 3.38066, 8.87834e-08, 0.406579, -0.352454, -0.158379, 1.7058) -mesh = SubResource("ArrayMesh_powme") +[node name="SideGuard" parent="." instance=ExtResource("6_a36lg")] +transform = Transform3D(-3.26872e-07, 1, -1.98591e-08, -1.50447, -1.77722e-08, 0.913615, 3.38066, 8.87797e-08, 0.406579, -0.352454, -0.158379, 1.7058) +mesh = SubResource("ArrayMesh_rxahx") length = 3.70031 -[node name="UL1_3_JR_PB1" parent="." instance=ExtResource("9_crdol")] +[node name="UL1_3_JR_PB1" parent="." instance=ExtResource("8_kfv3x")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.734562, -0.180284, -0.714896) text = "JR_PB1" enable_comms = true @@ -88,7 +89,25 @@ pushbutton_tag_name = "UL1_3_JR_PB1_OIP" lamp_tag_group_name = "TagGroup0" lamp_tag_name = "UL1_3_JR_PB1_LT_OIP" -[node name="UL1_3_JR_PB2" parent="." instance=ExtResource("9_crdol")] +[node name="HMI_UL1_3_JR_PB1" parent="." instance=ExtResource("8_kfv3x")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.29688, -0.180284, -0.714896) +text = "HMI_JR_PB1" +button_color = Color(1, 1, 1, 1) +enable_comms = true +pushbutton_tag_group_name = "TagGroup0" +pushbutton_tag_name = "UL1_3_JR_PB1.HMI.Start_PB" +lamp_tag_group_name = "TagGroup0" + +[node name="HMI_UL1_3_JR_PB2" parent="." instance=ExtResource("8_kfv3x")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.1626, -0.180284, -0.714896) +text = "HMI_JR_PB2" +button_color = Color(1, 1, 1, 1) +enable_comms = true +pushbutton_tag_group_name = "TagGroup0" +pushbutton_tag_name = "UL1_3_JR_PB2.HMI.Start_PB" +lamp_tag_group_name = "TagGroup0" + +[node name="UL1_3_JR_PB2" parent="." instance=ExtResource("8_kfv3x")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.914809, -0.180284, -0.714896) text = "JR_PB2" enable_comms = true @@ -97,11 +116,10 @@ pushbutton_tag_name = "UL1_3_JR_PB2_OIP" lamp_tag_group_name = "TagGroup0" lamp_tag_name = "UL1_3_JR_PB2_LT_OIP" -[node name="UL1_3_JR_PB3" parent="." instance=ExtResource("9_crdol")] +[node name="MCM_Start_PB" parent="." instance=ExtResource("8_kfv3x")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.31822, -0.180284, -0.714896) text = "MCM_START" toggle = true -pressed = true lamp = true enable_comms = true pushbutton_tag_group_name = "TagGroup0" @@ -109,11 +127,21 @@ pushbutton_tag_name = "UL1_3_VFD1.CTRL.STS.MCM_Started" lamp_tag_group_name = "TagGroup0" lamp_tag_name = "UL1_3_VFD1.CTRL.STS.MCM_Started" -[node name="UL1_3_JPE1" parent="." instance=ExtResource("12_lsr5j")] +[node name="UL1_3_JPE1" parent="." instance=ExtResource("9_bk1n2")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.87801, -0.080121, -2.97105) max_range = 1.684 enable_comms = true tag_name = "UL1_3_JPE1_OIP" [node name="Utils" type="Node" parent="."] -script = ExtResource("14_wqnqx") +script = ExtResource("10_ow4ia") + +[node name="HMI_Start_PB" type="Label3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.29096, 0.183071, -0.697029) +text = "HMI +" + +[node name="HMI_Start_PB2" type="Label3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.16515, 0.183071, -0.697029) +text = "HMI +" diff --git a/Simulations/AOI_STATION_JR_PB/utils.gd b/Simulations/AOI_STATION_JR_PB/utils.gd index 3e0045b..468d51c 100644 --- a/Simulations/AOI_STATION_JR_PB/utils.gd +++ b/Simulations/AOI_STATION_JR_PB/utils.gd @@ -2,6 +2,88 @@ 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 +