diff --git a/AOIs/AOI_DJ_PE_AOI.L5X b/PLC/AOIs/AOI_DJ_PE_AOI.L5X
similarity index 100%
rename from AOIs/AOI_DJ_PE_AOI.L5X
rename to PLC/AOIs/AOI_DJ_PE_AOI.L5X
diff --git a/AOIs/AOI_DPM_AOI.L5X b/PLC/AOIs/AOI_DPM_AOI.L5X
similarity index 100%
rename from AOIs/AOI_DPM_AOI.L5X
rename to PLC/AOIs/AOI_DPM_AOI.L5X
diff --git a/AOIs/AOI_ENCODER_AOI.L5X b/PLC/AOIs/AOI_ENCODER_AOI.L5X
similarity index 100%
rename from AOIs/AOI_ENCODER_AOI.L5X
rename to PLC/AOIs/AOI_ENCODER_AOI.L5X
diff --git a/AOIs/AOI_FLIP_FLOP_AOI.L5X b/PLC/AOIs/AOI_FLIP_FLOP_AOI.L5X
similarity index 100%
rename from AOIs/AOI_FLIP_FLOP_AOI.L5X
rename to PLC/AOIs/AOI_FLIP_FLOP_AOI.L5X
diff --git a/AOIs/AOI_FPE_AOI.L5X b/PLC/AOIs/AOI_FPE_AOI.L5X
similarity index 100%
rename from AOIs/AOI_FPE_AOI.L5X
rename to PLC/AOIs/AOI_FPE_AOI.L5X
diff --git a/AOIs/AOI_JPE_AOI.L5X b/PLC/AOIs/AOI_JPE_AOI.L5X
similarity index 100%
rename from AOIs/AOI_JPE_AOI.L5X
rename to PLC/AOIs/AOI_JPE_AOI.L5X
diff --git a/AOIs/AOI_LPE_AOI.L5X b/PLC/AOIs/AOI_LPE_AOI.L5X
similarity index 100%
rename from AOIs/AOI_LPE_AOI.L5X
rename to PLC/AOIs/AOI_LPE_AOI.L5X
diff --git a/AOIs/AOI_MCM_AOI.L5X b/PLC/AOIs/AOI_MCM_AOI.L5X
similarity index 100%
rename from AOIs/AOI_MCM_AOI.L5X
rename to PLC/AOIs/AOI_MCM_AOI.L5X
diff --git a/AOIs/AOI_SIO_FIO_AOI.L5X b/PLC/AOIs/AOI_SIO_FIO_AOI.L5X
similarity index 100%
rename from AOIs/AOI_SIO_FIO_AOI.L5X
rename to PLC/AOIs/AOI_SIO_FIO_AOI.L5X
diff --git a/AOIs/AOI_STATION_EPC_AOI.L5X b/PLC/AOIs/AOI_STATION_EPC_AOI.L5X
similarity index 100%
rename from AOIs/AOI_STATION_EPC_AOI.L5X
rename to PLC/AOIs/AOI_STATION_EPC_AOI.L5X
diff --git a/AOIs/AOI_STATION_JR_PB_AOI.L5X b/PLC/AOIs/AOI_STATION_JR_PB_AOI.L5X
similarity index 100%
rename from AOIs/AOI_STATION_JR_PB_AOI.L5X
rename to PLC/AOIs/AOI_STATION_JR_PB_AOI.L5X
diff --git a/AOIs/AOI_STATION_SS_PB_AOI.L5X b/PLC/AOIs/AOI_STATION_SS_PB_AOI.L5X
similarity index 100%
rename from AOIs/AOI_STATION_SS_PB_AOI.L5X
rename to PLC/AOIs/AOI_STATION_SS_PB_AOI.L5X
diff --git a/AOIs/AOI_TIPPER_AOI.L5X b/PLC/AOIs/AOI_TIPPER_AOI.L5X
similarity index 100%
rename from AOIs/AOI_TIPPER_AOI.L5X
rename to PLC/AOIs/AOI_TIPPER_AOI.L5X
diff --git a/AOIs/AOI_VFD_AOI.L5X b/PLC/AOIs/AOI_VFD_AOI.L5X
similarity index 100%
rename from AOIs/AOI_VFD_AOI.L5X
rename to PLC/AOIs/AOI_VFD_AOI.L5X
diff --git a/BaseProgram.L5X b/PLC/BaseProgram.L5X
similarity index 100%
rename from BaseProgram.L5X
rename to PLC/BaseProgram.L5X
diff --git a/MCMs/MTN6_MCM01.L5X b/PLC/MCMs/MTN6_MCM01.L5X
similarity index 100%
rename from MCMs/MTN6_MCM01.L5X
rename to PLC/MCMs/MTN6_MCM01.L5X
diff --git a/Simulations/JPE/MainProgram_Program.L5X b/PLC/Simulations/JPE/MainProgram_Program.L5X
similarity index 100%
rename from Simulations/JPE/MainProgram_Program.L5X
rename to PLC/Simulations/JPE/MainProgram_Program.L5X
diff --git a/Simulations/STATION_JR_PB/OIP/STATION_JR_PB.tscn b/PLC/Simulations/STATION_JR_PB/OIP/STATION_JR_PB.tscn
similarity index 80%
rename from Simulations/STATION_JR_PB/OIP/STATION_JR_PB.tscn
rename to PLC/Simulations/STATION_JR_PB/OIP/STATION_JR_PB.tscn
index 63a5c01..bc1256f 100644
--- a/Simulations/STATION_JR_PB/OIP/STATION_JR_PB.tscn
+++ b/PLC/Simulations/STATION_JR_PB/OIP/STATION_JR_PB.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=9 format=3 uid="uid://bbt38yd6yc0sc"]
+[gd_scene load_steps=9 format=3 uid="uid://bl8mqsc3hnaqk"]
[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"]
@@ -7,7 +7,7 @@
[ext_resource type="PackedScene" uid="uid://bl73u0rvt2orv" path="res://parts/Despawner.tscn" id="5_rcr4s"]
[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://station_jr_pb.gd" id="10_ow4ia"]
+[ext_resource type="Script" uid="uid://bdxuo6jshga88" path="res://station_jr_pb.gd" id="10_ow4ia"]
[node name="Simulation" type="Node3D"]
@@ -18,7 +18,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0166965, -0.308412, -1.613
local_floor_plane = Plane(0, 1, 0, -1.69159)
speed = 0.0
enable_comms = true
-speed_tag_name = "[PLC]UL1_3_OIP"
+speed_tag_name = "UL1_3_OIP"
running_tag_name = ""
metadata/hijack_scale = true
size = Vector3(14.7823, 0.5, 1.524)
@@ -32,45 +32,41 @@ transform = Transform3D(1, 2.30012e-09, -9.31322e-10, -2.30012e-09, 1, 8.84756e-
disable = true
[node name="Despawner" parent="." instance=ExtResource("5_rcr4s")]
-transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.60256, 0.176073, 0.00769222)
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.60256, 0.420592, -1.45862)
[node name="UL1_3_JR_PB1" parent="." instance=ExtResource("8_kfv3x")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.73416, -0.180284, -0.714896)
text = "JR_PB1"
-lamp = true
enable_comms = true
pushbutton_tag_group_name = "TagGroup0"
-pushbutton_tag_name = "[PLC]UL1_3_JR_PB1_OIP"
+pushbutton_tag_name = "UL1_3_JR_PB1_OIP"
lamp_tag_group_name = "TagGroup0"
-lamp_tag_name = "[PLC]UL1_3_JR_PB1_LT_OIP"
+lamp_tag_name = "UL1_3_JR_PB1_LT_OIP"
[node name="UL1_3_JR_PB2" parent="." instance=ExtResource("8_kfv3x")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.908714, -0.198275, -0.741422)
text = "JR_PB2"
-lamp = true
enable_comms = true
pushbutton_tag_group_name = "TagGroup0"
-pushbutton_tag_name = "[PLC]UL1_3_JR_PB2_OIP"
+pushbutton_tag_name = "UL1_3_JR_PB2_OIP"
lamp_tag_group_name = "TagGroup0"
-lamp_tag_name = "[PLC]UL1_3_JR_PB2_LT_OIP"
+lamp_tag_name = "UL1_3_JR_PB2_LT_OIP"
[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"
-pushbutton_tag_name = "[PLC]UL1_3_VFD1.CTRL.STS.MCM_Started"
+pushbutton_tag_name = "UL1_3_VFD1.CTRL.STS.MCM_Started"
lamp_tag_group_name = "TagGroup0"
-lamp_tag_name = "[PLC]UL1_3_VFD1.CTRL.STS.MCM_Started"
+lamp_tag_name = "UL1_3_VFD1.CTRL.STS.MCM_Started"
[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 = "[PLC]UL1_3_JPE1_OIP"
+tag_name = "UL1_3_JPE1_OIP"
[node name="station_jr_pb" type="Node" parent="."]
script = ExtResource("10_ow4ia")
diff --git a/PLC/Simulations/STATION_JR_PB/OIP/station_jr_pb.gd b/PLC/Simulations/STATION_JR_PB/OIP/station_jr_pb.gd
new file mode 100644
index 0000000..924d4c6
--- /dev/null
+++ b/PLC/Simulations/STATION_JR_PB/OIP/station_jr_pb.gd
@@ -0,0 +1,36 @@
+@tool
+extends Node
+@onready var box_spawner: BoxSpawner = $"../BoxSpawner"
+@onready var ul_1_3: BeltConveyorAssembly = $"../UL1_3"
+
+var color_1
+var color_2
+var tag_group = "TagGroup0"
+var display_color_1
+var display_color_2
+
+func _on_simulation_started() -> void:
+
+ OIPComms.register_tag(tag_group, "UL1_3_JR_PB1.CTRL.STS.Log.LEN", 1)
+ OIPComms.register_tag(tag_group, "UL1_3_JR_PB1.HMI.STATE", 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)
+ pass
+func _ready() -> void:
+
+ SimulationEvents.simulation_started.connect(_on_simulation_started)
+
+
+
+func _physics_process(delta: float) -> void:
+
+ box_spawner.disable = ul_1_3.speed == 0
+ #print(OIPComms.read_int32(tag_group,"[PLC]UL1_3_JR_PB1.HMI.STATE"))
+
+
+ #print("Log String: ", Utils.read_string(tag_group, "UL1_3_JR_PB1.CTRL.STS.Log"))
+
+
diff --git a/PLC/Simulations/STATION_JR_PB/OIP/utils.gd b/PLC/Simulations/STATION_JR_PB/OIP/utils.gd
new file mode 100644
index 0000000..411dc10
--- /dev/null
+++ b/PLC/Simulations/STATION_JR_PB/OIP/utils.gd
@@ -0,0 +1,89 @@
+@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
+
diff --git a/Simulations/STATION_JR_PB/PLC/AOIs/AOI_STATION_JR_PB_AOI.L5X b/PLC/Simulations/STATION_JR_PB/PLC/AOIs/AOI_STATION_JR_PB_AOI.L5X
similarity index 100%
rename from Simulations/STATION_JR_PB/PLC/AOIs/AOI_STATION_JR_PB_AOI.L5X
rename to PLC/Simulations/STATION_JR_PB/PLC/AOIs/AOI_STATION_JR_PB_AOI.L5X
diff --git a/Simulations/STATION_JR_PB/PLC/AOIs/AOI_VFD_AOI.L5X b/PLC/Simulations/STATION_JR_PB/PLC/AOIs/AOI_VFD_AOI.L5X
similarity index 100%
rename from Simulations/STATION_JR_PB/PLC/AOIs/AOI_VFD_AOI.L5X
rename to PLC/Simulations/STATION_JR_PB/PLC/AOIs/AOI_VFD_AOI.L5X
diff --git a/Simulations/STATION_JR_PB/PLC/STATION_JR_PB.L5X b/PLC/Simulations/STATION_JR_PB/PLC/STATION_JR_PB.L5X
similarity index 100%
rename from Simulations/STATION_JR_PB/PLC/STATION_JR_PB.L5X
rename to PLC/Simulations/STATION_JR_PB/PLC/STATION_JR_PB.L5X
diff --git a/Simulations/STATION_JR_PB/PLC/UDTs/STATION_JR_PB_DataTypes.L5X b/PLC/Simulations/STATION_JR_PB/PLC/UDTs/STATION_JR_PB_DataTypes.L5X
similarity index 100%
rename from Simulations/STATION_JR_PB/PLC/UDTs/STATION_JR_PB_DataTypes.L5X
rename to PLC/Simulations/STATION_JR_PB/PLC/UDTs/STATION_JR_PB_DataTypes.L5X
diff --git a/Simulations/STATION_JR_PB/PLC/UDTs/VFD_DataTypes.L5X b/PLC/Simulations/STATION_JR_PB/PLC/UDTs/VFD_DataTypes.L5X
similarity index 100%
rename from Simulations/STATION_JR_PB/PLC/UDTs/VFD_DataTypes.L5X
rename to PLC/Simulations/STATION_JR_PB/PLC/UDTs/VFD_DataTypes.L5X
diff --git a/PLC/Simulations/VFD/OIP/VFD_Simulation.tscn b/PLC/Simulations/VFD/OIP/VFD_Simulation.tscn
new file mode 100644
index 0000000..0005b70
--- /dev/null
+++ b/PLC/Simulations/VFD/OIP/VFD_Simulation.tscn
@@ -0,0 +1,289 @@
+[gd_scene load_steps=7 format=3 uid="uid://drxrdn6lwbjih"]
+
+[ext_resource type="PackedScene" uid="uid://dyhvoundu2kqc" path="res://parts/Building.tscn" id="1_adq3x"]
+[ext_resource type="PackedScene" uid="uid://bqlkj4ar8q1ws" path="res://parts/assemblies/BeltConveyorAssembly.tscn" id="3_pvrhq"]
+[ext_resource type="PackedScene" uid="uid://co2mqmdwpn57w" path="res://parts/BoxSpawner.tscn" id="4_pvrhq"]
+[ext_resource type="Script" uid="uid://dnosavfgou75i" path="res://vfd.gd" id="4_urew4"]
+[ext_resource type="PackedScene" uid="uid://bl73u0rvt2orv" path="res://parts/Despawner.tscn" id="5_77ico"]
+[ext_resource type="PackedScene" uid="uid://gddgyvex6gdj" path="res://parts/PushButton.tscn" id="6_77ico"]
+
+[node name="Simulation" type="Node3D"]
+
+[node name="Building" parent="." instance=ExtResource("1_adq3x")]
+
+[node name="UL1_3" parent="." instance=ExtResource("3_pvrhq")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.70007, -0.00844234, -0.454586)
+local_floor_plane = Plane(0, 1, 0, -1.99156)
+speed = 1.3716
+enable_comms = true
+speed_tag_name = "UL1_3_OIP"
+running_tag_name = ""
+metadata/hijack_scale = true
+size = Vector3(14.8874, 0.5, 1.524)
+metadata/hijack_scale = true
+
+[node name="Node" type="Node" parent="." node_paths=PackedStringArray("UL1_3", "box_spawner")]
+script = ExtResource("4_urew4")
+UL1_3 = NodePath("../UL1_3")
+box_spawner = NodePath("../BoxSpawner")
+
+[node name="BoxSpawner" parent="." instance=ExtResource("4_pvrhq")]
+transform = Transform3D(0.908734, 2.0902e-09, -8.46324e-10, -2.0902e-09, 0.908734, 8.04008e-09, 8.46324e-10, -8.04008e-09, 0.908734, -10.3942, 0.504191, -0.458427)
+
+[node name="Despawner" parent="." instance=ExtResource("5_77ico")]
+transform = Transform3D(2, 0, 0, 0, 1, 0, 0, 0, 2, 3.18492, 0.5, -0.368497)
+
+[node name="Disconected" parent="." instance=ExtResource("6_77ico")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.35205, 0.0894268, 0.468417)
+text = "Disconected"
+toggle = true
+pressed = true
+button_color = Color(0.260259, 0.3398, 0.386631, 1)
+enable_comms = true
+pushbutton_tag_group_name = "TagGroup0"
+pushbutton_tag_name = "Disconnected_OIP"
+lamp_tag_group_name = "TagGroup0"
+
+[node name="MCM_Start_Button" parent="." instance=ExtResource("6_77ico")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.9369, 0.0855748, 0.444525)
+text = "MCM Start"
+button_color = Color(0.0352941, 1, 0, 1)
+enable_comms = true
+pushbutton_tag_group_name = "TagGroup0"
+pushbutton_tag_name = "MCM_Start_PushButton_OIP"
+lamp_tag_group_name = "TagGroup0"
+
+[node name="Jammed" parent="." instance=ExtResource("6_77ico")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.0964, 0.107454, 0.443829)
+text = "Jammed"
+toggle = true
+button_color = Color(0.989998, 0.947781, 0.949246, 1)
+enable_comms = true
+pushbutton_tag_group_name = "TagGroup0"
+pushbutton_tag_name = "TOGGLE_JAMMED_OIP"
+lamp_tag_group_name = "TagGroup0"
+
+[node name="Estop" parent="." instance=ExtResource("6_77ico")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.75448, 0.0942386, 0.480748)
+text = "Estop"
+toggle = true
+pressed = true
+button_color = Color(0.972549, 0, 0, 1)
+enable_comms = true
+pushbutton_tag_group_name = "TagGroup0"
+pushbutton_tag_name = "EStopped_OIP"
+lamp_tag_group_name = "TagGroup0"
+
+[node name="Encoder_Fault" parent="." instance=ExtResource("6_77ico")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.67273, 0.108256, 0.443829)
+text = "Encoder_Fault"
+toggle = true
+enable_comms = true
+pushbutton_tag_group_name = "TagGroup0"
+pushbutton_tag_name = "TOGGLE_ENCODER_FAULT_OIP"
+lamp_tag_group_name = "TagGroup0"
+
+[node name="Full" parent="." instance=ExtResource("6_77ico")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.25571, 0.108833, 0.443829)
+text = "FULL"
+toggle = true
+button_color = Color(0, 0, 1, 1)
+enable_comms = true
+pushbutton_tag_group_name = "TagGroup0"
+pushbutton_tag_name = "TOGGLE_FULL_OIP"
+lamp_tag_group_name = "TagGroup0"
+
+[node name="Interlock" parent="." instance=ExtResource("6_77ico")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.9392, -0.308646, 0.440302)
+text = "Interlock"
+toggle = true
+pressed = true
+button_color = Color(0, 1, 0.25098, 1)
+enable_comms = true
+pushbutton_tag_group_name = "TagGroup0"
+pushbutton_tag_name = "TOGGLE_INTERLOCK_OIP"
+lamp_tag_group_name = "TagGroup0"
+
+[node name="VFD_Fault_Reset" parent="." instance=ExtResource("6_77ico")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.34432, -0.305163, 0.469469)
+text = "VFD_Fault_Reset"
+button_color = Color(0, 0.988235, 0, 1)
+enable_comms = true
+pushbutton_tag_group_name = "TagGroup0"
+pushbutton_tag_name = "VFD_Fault_Reset_Button_OIP"
+lamp_tag_group_name = "TagGroup0"
+
+[node name="Safety_Torque" parent="." instance=ExtResource("6_77ico")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.93611, 0.104388, 0.406756)
+text = "Safety_Torque_Off"
+toggle = true
+enable_comms = true
+pushbutton_tag_group_name = "TagGroup0"
+pushbutton_tag_name = "TOGGLE_SAFETY_TORQUE_OFF_OIP"
+lamp_tag_group_name = "TagGroup0"
+
+[node name="VFD_Fault" parent="." instance=ExtResource("6_77ico")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.3405, 0.470611, 0.378262)
+text = "VFD Fault"
+toggle = true
+enable_comms = true
+pushbutton_tag_group_name = "TagGroup0"
+pushbutton_tag_name = "TOGGLE_VFD_FAULT_OIP"
+lamp_tag_group_name = "TagGroup0"
+
+[node name="Power_Saving" parent="." instance=ExtResource("6_77ico")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.44535, 0.0722519, 0.397527)
+text = "Power_Saving"
+toggle = true
+button_color = Color(0.87658, 0.000391592, 0.828084, 1)
+enable_comms = true
+pushbutton_tag_group_name = "TagGroup0"
+pushbutton_tag_name = "TOGGLE_POWER_SAVING_MODE_OIP"
+lamp_tag_group_name = "TagGroup0"
+
+[node name="StopButton" parent="." instance=ExtResource("6_77ico")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.09258, 0.0938599, 0.440219)
+enable_comms = true
+pushbutton_tag_group_name = "TagGroup0"
+pushbutton_tag_name = "Station_Stop_PB_OIP"
+lamp_tag_group_name = "TagGroup0"
+
+[node name="StartButton" parent="." instance=ExtResource("6_77ico")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.42198, 0.09431, 0.44369)
+text = "START"
+button_color = Color(0, 1, 0, 1)
+enable_comms = true
+pushbutton_tag_group_name = "TagGroup0"
+pushbutton_tag_name = "Station_Start_PB_OIP"
+lamp_tag_group_name = "TagGroup0"
+
+[node name="Start_Stop_Button" type="Label3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.2373, 0.44058, 0.716726)
+text = "Start/Stop
+"
+font_size = 20
+
+[node name="VFD_Fault_Button" type="Label3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.32918, 0.758028, 0.627988)
+text = "VFD Fualt
+"
+font_size = 20
+
+[node name="Power_Saving_Button" type="Label3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.42426, 0.430885, 0.499979)
+text = "Power
+Saving
+"
+font_size = 20
+
+[node name="Estop_Button" type="Label3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.77729, 0.422073, 0.521624)
+text = "Estop"
+font_size = 20
+
+[node name="Disconect_Button" type="Label3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.3465, 0.266181, 0.766382)
+text = "Disconected"
+font_size = 20
+
+[node name="Safety_Torqe_Button" type="Label3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.90272, 0.480397, 0.60688)
+text = "Safety
+Torque
+"
+font_size = 20
+
+[node name="VFD_Fault_Reset_Button" type="Label3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.34581, -0.59562, 0.751668)
+text = "VFD Fault
+ Reset
+"
+font_size = 20
+
+[node name="Jammed_Button" type="Label3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.13238, 0.456212, 0.829814)
+text = "Jammed"
+font_size = 20
+
+[node name="Encoder_Fault_Button" type="Label3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.6845, 0.461905, 0.744063)
+text = "Encoder
+ Fault"
+font_size = 20
+
+[node name="Full_Button" type="Label3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.25618, 0.411116, 0.655028)
+text = "Full"
+font_size = 20
+
+[node name="MCM_Start_Button_Label" type="Label3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.631, 0.111411, 0.64058)
+text = "MCM Start Button"
+font_size = 20
+
+[node name="Interlock_Button" type="Label3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.3954, -0.266106, 0.682187)
+text = "Interlock"
+font_size = 20
+
+[node name="Stop_Auto_Restart" parent="." instance=ExtResource("6_77ico")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.37441, 0.083721, 0.44369)
+text = "STOP Auto Restart"
+toggle = true
+enable_comms = true
+pushbutton_tag_group_name = "TagGroup0"
+pushbutton_tag_name = "TOGGLE_STOP_AUTO_RESTART_OIP"
+lamp_tag_group_name = "TagGroup0"
+
+[node name="Stop_Auto_Restart_Button" type="Label3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.40115, 0.57851, 0.656321)
+text = "Stop
+Auto
+Restart"
+font_size = 20
+
+[node name="PushButton" parent="." instance=ExtResource("6_77ico")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.90528, 0.0809799, 0.44369)
+text = "Zero_Speed"
+toggle = true
+button_color = Color(0, 1, 0.815686, 1)
+enable_comms = true
+pushbutton_tag_group_name = "TagGroup0"
+pushbutton_tag_name = "TOGGLE_ZERO_SPEED"
+lamp_tag_group_name = "TagGroup0"
+
+[node name="Zero_Speed_Button" type="Label3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.9252, 0.477404, 0.548596)
+text = "Zero
+Speed"
+font_size = 20
+
+[node name="Run_UP_Enabled" parent="." instance=ExtResource("6_77ico")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.9379, -0.724683, 0.441637)
+text = "Run Up Enabled"
+toggle = true
+pressed = true
+button_color = Color(0, 1, 0, 1)
+enable_comms = true
+pushbutton_tag_group_name = "TagGroup0"
+pushbutton_tag_name = "TOGGLE_RUN_UP_ENABLED"
+lamp_tag_group_name = "TagGroup0"
+
+[node name="Run_UP_Enabled_Button" type="Label3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.4135, -0.641298, 0.63195)
+text = "Run Up
+Enabled"
+font_size = 20
+
+[node name="MCM_Stop_Button" parent="." instance=ExtResource("6_77ico")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.5194, 0.085152, 0.439353)
+text = "MCM_Stop_Button"
+enable_comms = true
+pushbutton_tag_group_name = "TagGroup0"
+pushbutton_tag_name = "MCM_Stop_PushButton_OIP"
+lamp_tag_group_name = "TagGroup0"
+
+[node name="MCM_Stop_Button_Label" type="Label3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.4351, 0.426929, 0.651285)
+text = "MCM Stop Button"
+font_size = 20
diff --git a/PLC/Simulations/VFD/OIP/vfd.gd b/PLC/Simulations/VFD/OIP/vfd.gd
new file mode 100644
index 0000000..91c6532
--- /dev/null
+++ b/PLC/Simulations/VFD/OIP/vfd.gd
@@ -0,0 +1,29 @@
+@tool
+extends Node
+
+var simulation_started
+@export var UL1_3 : Node
+@export var box_spawner: Node
+
+
+func _enter_tree() -> void:
+ SimulationEvents.simulation_started.connect(_simulation_started)
+ SimulationEvents.simulation_ended.connect(_simulation_ended)
+
+
+func _simulation_started():
+ simulation_started = true
+ print("Started !")
+
+
+
+func _simulation_ended():
+ simulation_started = false
+ print("Stopped !")
+
+
+func _physics_process(delta: float) -> void:
+ if(!simulation_started):
+ return
+
+ box_spawner.disable = UL1_3.speed == 0
diff --git a/PLC/Simulations/VFD/PLC/AOIs/AOI_FLIP_FLOP_AOI.L5X b/PLC/Simulations/VFD/PLC/AOIs/AOI_FLIP_FLOP_AOI.L5X
new file mode 100644
index 0000000..ab8402b
--- /dev/null
+++ b/PLC/Simulations/VFD/PLC/AOIs/AOI_FLIP_FLOP_AOI.L5X
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PLC/Simulations/VFD/PLC/AOIs/AOI_MCM_AOI.L5X b/PLC/Simulations/VFD/PLC/AOIs/AOI_MCM_AOI.L5X
new file mode 100644
index 0000000..a8f0ad8
--- /dev/null
+++ b/PLC/Simulations/VFD/PLC/AOIs/AOI_MCM_AOI.L5X
@@ -0,0 +1,523 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PLC/Simulations/VFD/PLC/AOIs/AOI_SIO_FIO_AOI.L5X b/PLC/Simulations/VFD/PLC/AOIs/AOI_SIO_FIO_AOI.L5X
new file mode 100644
index 0000000..af942d5
--- /dev/null
+++ b/PLC/Simulations/VFD/PLC/AOIs/AOI_SIO_FIO_AOI.L5X
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PLC/Simulations/VFD/PLC/AOIs/AOI_VFD_AOI.L5X b/PLC/Simulations/VFD/PLC/AOIs/AOI_VFD_AOI.L5X
new file mode 100644
index 0000000..39193fa
--- /dev/null
+++ b/PLC/Simulations/VFD/PLC/AOIs/AOI_VFD_AOI.L5X
@@ -0,0 +1,961 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PLC/Simulations/VFD/PLC/UDTs/UDT_DPM_DataType.L5X b/PLC/Simulations/VFD/PLC/UDTs/UDT_DPM_DataType.L5X
new file mode 100644
index 0000000..e7285b2
--- /dev/null
+++ b/PLC/Simulations/VFD/PLC/UDTs/UDT_DPM_DataType.L5X
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PLC/Simulations/VFD/PLC/UDTs/UDT_MCM_DataType.L5X b/PLC/Simulations/VFD/PLC/UDTs/UDT_MCM_DataType.L5X
new file mode 100644
index 0000000..b010d45
--- /dev/null
+++ b/PLC/Simulations/VFD/PLC/UDTs/UDT_MCM_DataType.L5X
@@ -0,0 +1,383 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PLC/Simulations/VFD/PLC/UDTs/UDT_SIO_FIO_DataType.L5X b/PLC/Simulations/VFD/PLC/UDTs/UDT_SIO_FIO_DataType.L5X
new file mode 100644
index 0000000..be98a21
--- /dev/null
+++ b/PLC/Simulations/VFD/PLC/UDTs/UDT_SIO_FIO_DataType.L5X
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PLC/Simulations/VFD/PLC/UDTs/UDT_VFD_DataType.L5X b/PLC/Simulations/VFD/PLC/UDTs/UDT_VFD_DataType.L5X
new file mode 100644
index 0000000..21d3e59
--- /dev/null
+++ b/PLC/Simulations/VFD/PLC/UDTs/UDT_VFD_DataType.L5X
@@ -0,0 +1,396 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PLC/Simulations/VFD/PLC/VFD.L5X b/PLC/Simulations/VFD/PLC/VFD.L5X
new file mode 100644
index 0000000..130441e
--- /dev/null
+++ b/PLC/Simulations/VFD/PLC/VFD.L5X
@@ -0,0 +1,3895 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rockwell Automation/Allen-Bradley1756-EN2T4325481
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rockwell Automation/Allen-BradleyPowerFlex 525-EENET3615.1.1.458200PF525_A115201<DataTypes><DataType Name="AB:PowerFlex525V_E_142E84CE:I:0" Class="IO"><Members><Member Name="pad" DataType="DINT" Hidden="1" /><Member Name="DriveStatus" DataType="INT" Radix="Binary" /><Member Name="Ready" DataType="BIT" BitNumber="0" Target="DriveStatus"></Member><Member Name="Active" DataType="BIT" BitNumber="1" Target="DriveStatus"></Member><Member Name="CommandDir" DataType="BIT" BitNumber="2" Target="DriveStatus"></Member><Member Name="ActualDir" DataType="BIT" BitNumber="3" Target="DriveStatus"></Member><Member Name="Accelerating" DataType="BIT" BitNumber="4" Target="DriveStatus"></Member><Member Name="Decelerating" DataType="BIT" BitNumber="5" Target="DriveStatus"></Member><Member Name="Faulted" DataType="BIT" BitNumber="7" Target="DriveStatus"></Member><Member Name="AtReference" DataType="BIT" BitNumber="8" Target="DriveStatus"></Member><Member Name="CommFreqCnt" DataType="BIT" BitNumber="9" Target="DriveStatus"></Member><Member Name="CommLogicCnt" DataType="BIT" BitNumber="10" Target="DriveStatus"></Member><Member Name="ParmsLocked" DataType="BIT" BitNumber="11" Target="DriveStatus"></Member><Member Name="DigIn1Active" DataType="BIT" BitNumber="12" Target="DriveStatus"></Member><Member Name="DigIn2Active" DataType="BIT" BitNumber="13" Target="DriveStatus"></Member><Member Name="DigIn3Active" DataType="BIT" BitNumber="14" Target="DriveStatus"></Member><Member Name="DigIn4Active" DataType="BIT" BitNumber="15" Target="DriveStatus"></Member><Member Name="OutputFreq" DataType="INT" Radix="Decimal" /><Member Name="Fault1Code" DataType="INT" Radix="Decimal" /><Member Name="DriveStatus_param" DataType="INT" Radix="Binary" /><Member Name="DriveStatus_param_Running" DataType="BIT" BitNumber="0" Target="DriveStatus_param"></Member><Member Name="DriveStatus_param_Forward" DataType="BIT" BitNumber="1" Target="DriveStatus_param"></Member><Member Name="DriveStatus_param_Accelerating" DataType="BIT" BitNumber="2" Target="DriveStatus_param"></Member><Member Name="DriveStatus_param_Decelerating" DataType="BIT" BitNumber="3" Target="DriveStatus_param"></Member><Member Name="DriveStatus_param_SafetyActive" DataType="BIT" BitNumber="4" Target="DriveStatus_param"></Member><Member Name="OutputCurrent" DataType="INT" Radix="Decimal" /><Member Name="OutputVoltage" DataType="INT" Radix="Decimal" /></Members></DataType></DataTypes>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/UDTs/DJ_PE_DataTypes.L5X b/PLC/UDTs/DJ_PE_DataTypes.L5X
similarity index 100%
rename from UDTs/DJ_PE_DataTypes.L5X
rename to PLC/UDTs/DJ_PE_DataTypes.L5X
diff --git a/UDTs/DPM_DataTypes.L5X b/PLC/UDTs/DPM_DataTypes.L5X
similarity index 100%
rename from UDTs/DPM_DataTypes.L5X
rename to PLC/UDTs/DPM_DataTypes.L5X
diff --git a/UDTs/ENCODER_DataTypes.L5X b/PLC/UDTs/ENCODER_DataTypes.L5X
similarity index 100%
rename from UDTs/ENCODER_DataTypes.L5X
rename to PLC/UDTs/ENCODER_DataTypes.L5X
diff --git a/UDTs/FPE_DataTypes.L5X b/PLC/UDTs/FPE_DataTypes.L5X
similarity index 100%
rename from UDTs/FPE_DataTypes.L5X
rename to PLC/UDTs/FPE_DataTypes.L5X
diff --git a/UDTs/JPE_DataTypes.L5X b/PLC/UDTs/JPE_DataTypes.L5X
similarity index 100%
rename from UDTs/JPE_DataTypes.L5X
rename to PLC/UDTs/JPE_DataTypes.L5X
diff --git a/UDTs/MCM_DataTypes.L5X b/PLC/UDTs/MCM_DataTypes.L5X
similarity index 100%
rename from UDTs/MCM_DataTypes.L5X
rename to PLC/UDTs/MCM_DataTypes.L5X
diff --git a/UDTs/SIO_FIO_DataTypes.L5X b/PLC/UDTs/SIO_FIO_DataTypes.L5X
similarity index 100%
rename from UDTs/SIO_FIO_DataTypes.L5X
rename to PLC/UDTs/SIO_FIO_DataTypes.L5X
diff --git a/UDTs/STATION_EPC_DataTypes.L5X b/PLC/UDTs/STATION_EPC_DataTypes.L5X
similarity index 100%
rename from UDTs/STATION_EPC_DataTypes.L5X
rename to PLC/UDTs/STATION_EPC_DataTypes.L5X
diff --git a/UDTs/STATION_JR_PB_DataTypes.L5X b/PLC/UDTs/STATION_JR_PB_DataTypes.L5X
similarity index 100%
rename from UDTs/STATION_JR_PB_DataTypes.L5X
rename to PLC/UDTs/STATION_JR_PB_DataTypes.L5X
diff --git a/UDTs/STATION_SS_DataTypes.L5X b/PLC/UDTs/STATION_SS_DataTypes.L5X
similarity index 100%
rename from UDTs/STATION_SS_DataTypes.L5X
rename to PLC/UDTs/STATION_SS_DataTypes.L5X
diff --git a/UDTs/VFD_DataTypes.L5X b/PLC/UDTs/VFD_DataTypes.L5X
similarity index 100%
rename from UDTs/VFD_DataTypes.L5X
rename to PLC/UDTs/VFD_DataTypes.L5X
diff --git a/Simulations/STATION_JR_PB/Ignition/PLC_SIMULATIONS_2025-05-26_1536.zip b/Simulations/STATION_JR_PB/Ignition/PLC_SIMULATIONS_2025-05-26_1536.zip
deleted file mode 100644
index 36c2ab6..0000000
Binary files a/Simulations/STATION_JR_PB/Ignition/PLC_SIMULATIONS_2025-05-26_1536.zip and /dev/null differ
diff --git a/Simulations/STATION_JR_PB/Ignition/Station_JR_PB.svg b/Simulations/STATION_JR_PB/Ignition/Station_JR_PB.svg
deleted file mode 100644
index a1ceddf..0000000
--- a/Simulations/STATION_JR_PB/Ignition/Station_JR_PB.svg
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
diff --git a/Simulations/STATION_JR_PB/Ignition/tags.json b/Simulations/STATION_JR_PB/Ignition/tags.json
deleted file mode 100644
index 2b9f2d8..0000000
--- a/Simulations/STATION_JR_PB/Ignition/tags.json
+++ /dev/null
@@ -1,85 +0,0 @@
-{
- "tags": [
- {
- "name": "UL1_3_JR_PB1",
- "typeId": "JR_PB",
- "tagType": "UdtInstance",
- "tags": [
- {
- "name": "HMI",
- "tagType": "Folder",
- "tags": [
- {
- "name": "STATE",
- "tagType": "AtomicTag"
- },
- {
- "name": "ALARMST",
- "tagType": "AtomicTag"
- },
- {
- "name": "DISC",
- "tagType": "AtomicTag"
- }
- ]
- }
- ]
- },
- {
- "name": "UL1_3_JR_PB2",
- "typeId": "JR_PB",
- "tagType": "UdtInstance",
- "tags": [
- {
- "name": "HMI",
- "tagType": "Folder",
- "tags": [
- {
- "name": "STATE",
- "tagType": "AtomicTag"
- },
- {
- "name": "DISC",
- "tagType": "AtomicTag"
- },
- {
- "name": "ALARMST",
- "tagType": "AtomicTag"
- }
- ]
- }
- ]
- },
- {
- "name": "UL1_3_VFD1",
- "typeId": "Conveyor",
- "tagType": "UdtInstance",
- "tags": [
- {
- "name": "HMI",
- "tagType": "Folder",
- "tags": [
- {
- "opcItemPath": {
- "bindType": "parameter",
- "binding": "ns\u003d1;s\u003d[PLC]UL1_3_VFD1.HMI.{TagName}"
- },
- "name": "STATE",
- "tagType": "AtomicTag"
- },
- {
- "valueSource": "memory",
- "value": 0,
- "name": "ALARMST",
- "tagType": "AtomicTag"
- },
- {
- "name": "DISC",
- "tagType": "AtomicTag"
- }
- ]
- }
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/Simulations/STATION_JR_PB/Ignition/udts.json b/Simulations/STATION_JR_PB/Ignition/udts.json
deleted file mode 100644
index b7b1fd0..0000000
--- a/Simulations/STATION_JR_PB/Ignition/udts.json
+++ /dev/null
@@ -1,88 +0,0 @@
-{
- "tags": [
- {
- "name": "Conveyor",
- "tagType": "UdtType",
- "tags": [
- {
- "name": "HMI",
- "tagType": "Folder",
- "tags": [
- {
- "opcItemPath": {
- "bindType": "parameter",
- "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.{TagName}"
- },
- "valueSource": "opc",
- "name": "STATE",
- "tagType": "AtomicTag",
- "opcServer": "PLC"
- },
- {
- "opcItemPath": {
- "bindType": "parameter",
- "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.{TagName}"
- },
- "valueSource": "opc",
- "name": "ALARMST",
- "tagType": "AtomicTag",
- "opcServer": "PLC"
- },
- {
- "opcItemPath": {
- "bindType": "parameter",
- "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.{TagName}"
- },
- "valueSource": "opc",
- "name": "DISC",
- "tagType": "AtomicTag",
- "opcServer": "PLC"
- }
- ]
- }
- ]
- },
- {
- "name": "JR_PB",
- "tagType": "UdtType",
- "tags": [
- {
- "name": "HMI",
- "tagType": "Folder",
- "tags": [
- {
- "opcItemPath": {
- "bindType": "parameter",
- "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.{TagName}"
- },
- "valueSource": "opc",
- "name": "DISC",
- "tagType": "AtomicTag",
- "opcServer": "PLC"
- },
- {
- "opcItemPath": {
- "bindType": "parameter",
- "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.{TagName}"
- },
- "valueSource": "opc",
- "name": "ALARMST",
- "tagType": "AtomicTag",
- "opcServer": "PLC"
- },
- {
- "opcItemPath": {
- "bindType": "parameter",
- "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.{TagName}"
- },
- "valueSource": "opc",
- "name": "STATE",
- "tagType": "AtomicTag",
- "opcServer": "PLC"
- }
- ]
- }
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/Simulations/STATION_JR_PB/OIP/station_jr_pb.gd b/Simulations/STATION_JR_PB/OIP/station_jr_pb.gd
deleted file mode 100644
index a4c4552..0000000
--- a/Simulations/STATION_JR_PB/OIP/station_jr_pb.gd
+++ /dev/null
@@ -1,36 +0,0 @@
-@tool
-extends Node
-@onready var box_spawner: BoxSpawner = $"../BoxSpawner"
-@onready var ul_1_3: BeltConveyorAssembly = $"../UL1_3"
-
-var color_1
-var color_2
-var tag_group = "TagGroup0"
-var display_color_1
-var display_color_2
-
-#func _on_simulation_started() -> void:
-#
- ##OIPComms.register_tag(tag_group, "[PLC]UL1_3_JR_PB1.CTRL.STS.Log.LEN", 1)
- ##OIPComms.register_tag(tag_group, "[PLC]UL1_3_JR_PB1.HMI.STATE", 1)
- ##
- ### Register all 82 DATA tags
- ##for i in range(82):
- ##var data_tag = "[PLC]UL1_3_JR_PB1.CTRL.STS.Log.DATA[" + str(i) + "]"
- ##OIPComms.register_tag(tag_group, data_tag, 1)
- #pass
-#func _ready() -> void:
- #
- #SimulationEvents.simulation_started.connect(_on_simulation_started)
-#
-#
-#
-#func _physics_process(delta: float) -> void:
- #
- #box_spawner.disable = ul_1_3.speed == 0
- ##print(OIPComms.read_int32(tag_group,"[PLC]UL1_3_JR_PB1.HMI.STATE"))
-#
-#
- ##print("Log String: ", Utils.read_string(tag_group, "UL1_3_JR_PB1.CTRL.STS.Log"))
-
-
diff --git a/Simulations/STATION_JR_PB/OIP/utils.gd b/Simulations/STATION_JR_PB/OIP/utils.gd
deleted file mode 100644
index 5d6e894..0000000
--- a/Simulations/STATION_JR_PB/OIP/utils.gd
+++ /dev/null
@@ -1,31 +0,0 @@
-class_name Utils
-extends Node
-
-static 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