diff --git a/PLC/Simulations/STATION_EPC/OIP/SATION_EPC.tscn b/PLC/Simulations/STATION_EPC/OIP/SATION_EPC.tscn
new file mode 100644
index 0000000..b9d4d00
--- /dev/null
+++ b/PLC/Simulations/STATION_EPC/OIP/SATION_EPC.tscn
@@ -0,0 +1,165 @@
+[gd_scene load_steps=15 format=3 uid="uid://bcby8jt3gsud8"]
+
+[ext_resource type="Script" uid="uid://dsxxycqvgg68a" path="res://station_epc.gd" id="1_qc5a3"]
+[ext_resource type="PackedScene" uid="uid://dyhvoundu2kqc" path="res://parts/Building.tscn" id="1_v76qd"]
+[ext_resource type="PackedScene" uid="uid://bqlkj4ar8q1ws" path="res://parts/assemblies/BeltConveyorAssembly.tscn" id="3_u7586"]
+[ext_resource type="PackedScene" uid="uid://gddgyvex6gdj" path="res://parts/PushButton.tscn" id="4_ahe6k"]
+[ext_resource type="PackedScene" uid="uid://co2mqmdwpn57w" path="res://parts/BoxSpawner.tscn" id="5_u7586"]
+[ext_resource type="PackedScene" uid="uid://drle8i15nwr68" path="res://parts/StackLight.tscn" id="6_qc5a3"]
+[ext_resource type="Script" uid="uid://bl7o7avq4pi78" path="res://src/StackLight/stack_light_data.gd" id="7_kdh4b"]
+[ext_resource type="Script" uid="uid://buet0tp11gjdl" path="res://src/StackLight/stack_segment_data.gd" id="8_spet4"]
+[ext_resource type="PackedScene" uid="uid://bl73u0rvt2orv" path="res://parts/Despawner.tscn" id="9_kdh4b"]
+
+[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_6pmrs"]
+friction = 0.5
+
+[sub_resource type="Resource" id="Resource_kdh4b"]
+resource_local_to_scene = true
+script = ExtResource("8_spet4")
+active = true
+segment_color = Color(0, 1, 0, 0.5)
+
+[sub_resource type="Resource" id="Resource_spet4"]
+resource_local_to_scene = true
+script = ExtResource("7_kdh4b")
+segment_datas = [SubResource("Resource_kdh4b")]
+
+[sub_resource type="Resource" id="Resource_3ipjn"]
+resource_local_to_scene = true
+script = ExtResource("8_spet4")
+active = true
+segment_color = Color(0, 1, 0, 0.5)
+
+[sub_resource type="Resource" id="Resource_bghi8"]
+resource_local_to_scene = true
+script = ExtResource("7_kdh4b")
+segment_datas = [SubResource("Resource_3ipjn")]
+
+[node name="Simulation" type="Node3D"]
+script = ExtResource("1_qc5a3")
+
+[node name="Building" parent="." instance=ExtResource("1_v76qd")]
+
+[node name="BoxSpawner" parent="." instance=ExtResource("5_u7586")]
+transform = Transform3D(1, 2.30012e-09, -9.31322e-10, -2.30012e-09, 1, 8.84756e-09, 9.31322e-10, -8.84756e-09, 1, -4.09642, 0.192588, -1.6166)
+disable = true
+
+[node name="Despawner" parent="." instance=ExtResource("9_kdh4b")]
+transform = Transform3D(2, 0, 0, 0, 1, 0, 0, 0, 2, 4.05126, -1.42588, -1.63314)
+
+[node name="UL1_3" parent="." instance=ExtResource("3_u7586")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.819656, -0.308412, -1.61317)
+local_floor_plane = Plane(0, 1, 0, -1.69159)
+speed = 0.0
+belt_physics_material = SubResource("PhysicsMaterial_6pmrs")
+enable_comms = true
+speed_tag_name = "UL1_3_OIP"
+running_tag_name = ""
+metadata/hijack_scale = true
+size = Vector3(8, 0.5, 1.524)
+metadata/hijack_scale = true
+
+[node name="UL1_3_EPC1" parent="." instance=ExtResource("4_ahe6k")]
+transform = Transform3D(1, 0, 0, 0, 0.999853, 0.0171208, 0, -0.0171208, 0.999853, -4.5, -0.18, -0.75)
+text = "UL1_3_EPC1"
+toggle = true
+pressed = true
+lamp = true
+button_color = Color(0.886275, 0.537255, 0, 1)
+enable_comms = true
+pushbutton_tag_group_name = "TagGroup0"
+pushbutton_tag_name = "Estop_OIP"
+lamp_tag_group_name = "TagGroup0"
+lamp_tag_name = "Estop_OIP"
+
+[node name="UL1_3_EPC1_STATION" parent="." instance=ExtResource("4_ahe6k")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, -0.7, -0.75)
+text = "STATION EPC1"
+toggle = true
+pressed = true
+lamp = true
+button_color = Color(0.886275, 0.533333, 0, 1)
+enable_comms = true
+pushbutton_tag_group_name = "TagGroup0"
+pushbutton_tag_name = "UL1_3_EPC1.CTRL.STS.EStop_Was_Actuated"
+lamp_tag_group_name = "TagGroup0"
+lamp_tag_name = "UL1_3_EPC1.CTRL.STS.EStop_Was_Actuated"
+
+[node name="UL1_3_EPC1_BEACON" parent="." instance=ExtResource("6_qc5a3")]
+transform = Transform3D(3.03596, -0.00241847, 0, 0.0540532, 0.135836, 0, 0, 0, 3.03644, -4.5, 0.0338165, -0.637099)
+light_value = 1
+_data = SubResource("Resource_spet4")
+"Light 1" = SubResource("Resource_kdh4b")
+enable_comms = true
+tag_groups = null
+tag_name = "Beacon_OIP.0"
+
+[node name="UL1_3_EPC2" parent="." instance=ExtResource("4_ahe6k")]
+transform = Transform3D(-1, 1.49675e-09, -8.74099e-08, 0, 0.999853, 0.0171208, 8.74228e-08, 0.0171208, -0.999853, -4.5, -0.18, -2.46)
+text = "UL1_3_EPC2"
+toggle = true
+pressed = true
+lamp = true
+button_color = Color(0.886275, 0.537255, 0, 1)
+enable_comms = true
+pushbutton_tag_group_name = "TagGroup0"
+pushbutton_tag_name = "Estop_OIP2"
+lamp_tag_group_name = "TagGroup0"
+lamp_tag_name = "Estop_OIP2"
+
+[node name="UL1_3_EPC2_STATION" parent="." instance=ExtResource("4_ahe6k")]
+transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -4.5, -0.7, -2.46)
+text = "STATION EPC2"
+toggle = true
+pressed = true
+lamp = true
+button_color = Color(0.886275, 0.533333, 0, 1)
+enable_comms = true
+pushbutton_tag_group_name = "TagGroup0"
+pushbutton_tag_name = "UL1_3_EPC2.CTRL.STS.EStop_Was_Actuated"
+lamp_tag_group_name = "TagGroup0"
+lamp_tag_name = "UL1_3_EPC2.CTRL.STS.EStop_Was_Actuated"
+
+[node name="UL1_3_EPC2_BEACON" parent="." instance=ExtResource("6_qc5a3")]
+transform = Transform3D(3.03596, -0.00241847, 0, 0.0540532, 0.135836, 0, 0, 0, 3.03644, -4.5, 0.0338165, -2.5929)
+light_value = 1
+_data = SubResource("Resource_bghi8")
+"Light 1" = SubResource("Resource_3ipjn")
+enable_comms = true
+tag_groups = null
+tag_name = "Beacon_OIP2.0"
+
+[node name="MCM_START" parent="." instance=ExtResource("4_ahe6k")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, -0.18, -0.75)
+text = "MCM START"
+toggle = true
+pressed = true
+lamp = true
+button_color = Color(0.359592, 0.479432, 1, 1)
+enable_comms = true
+pushbutton_tag_group_name = "TagGroup0"
+pushbutton_tag_name = "MCM.STS.Start_PB"
+lamp_tag_group_name = "TagGroup0"
+lamp_tag_name = "MCM.STS.Start_PB"
+
+[node name="START_CONVEYOR" parent="." instance=ExtResource("4_ahe6k")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.5, -0.18, -0.75)
+text = "START CONVEYOR"
+toggle = true
+button_color = Color(0.407843, 1, 0.164706, 1)
+enable_comms = true
+pushbutton_tag_group_name = "TagGroup0"
+pushbutton_tag_name = "Start_Conveyor_OIP"
+lamp_tag_group_name = "TagGroup0"
+lamp_tag_name = "Start_Conveyor_OIP"
+
+[node name="COMMUNIACTION" parent="." instance=ExtResource("4_ahe6k")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, -0.18, -0.75)
+text = "COMMUNIACTION OFF"
+toggle = true
+button_color = Color(0.886275, 0.533333, 0, 1)
+enable_comms = true
+pushbutton_tag_group_name = "TagGroup0"
+pushbutton_tag_name = "UL1_3_SIO1.CTRL.STS.Communication_Fault"
+lamp_tag_group_name = "TagGroup0"
+lamp_tag_name = "UL1_3_SIO1.CTRL.STS.Communication_Fault"
diff --git a/PLC/Simulations/STATION_EPC/OIP/station_epc.gd b/PLC/Simulations/STATION_EPC/OIP/station_epc.gd
new file mode 100644
index 0000000..680a975
--- /dev/null
+++ b/PLC/Simulations/STATION_EPC/OIP/station_epc.gd
@@ -0,0 +1,45 @@
+@tool
+extends Node
+@onready var box_spawner: BoxSpawner = $BoxSpawner
+@onready var ul1_3: BeltConveyorAssembly = $UL1_3
+
+var tag_group = "TagGroup0"
+
+func _ready() -> void:
+ SimulationEvents.simulation_started.connect(_on_simulation_started)
+
+func _on_simulation_started() -> void:
+ # Register tags for EPC1
+ OIPComms.register_tag(tag_group, "UL1_3_EPC1.CTRL.STS.Log.LEN", 1)
+ OIPComms.register_tag(tag_group, "UL1_3_EPC1.HMI.STATE", 1)
+
+ # Register tags for EPC2
+ OIPComms.register_tag(tag_group, "UL1_3_EPC2.CTRL.STS.Log.LEN", 1)
+ OIPComms.register_tag(tag_group, "UL1_3_EPC2.HMI.STATE", 1)
+
+ # Register all 82 DATA tags for both EPCs
+ for i in range(82):
+ # EPC1 data tags
+ var data_tag_epc1 = "UL1_3_EPC1.CTRL.STS.Log.DATA[" + str(i) + "]"
+ OIPComms.register_tag(tag_group, data_tag_epc1, 1)
+
+ # EPC2 data tags
+ var data_tag_epc2 = "UL1_3_EPC2.CTRL.STS.Log.DATA[" + str(i) + "]"
+ OIPComms.register_tag(tag_group, data_tag_epc2, 1)
+
+func _physics_process(delta: float) -> void:
+ if ul1_3.speed == 0:
+ box_spawner.disable = true
+ else:
+ box_spawner.disable = false
+
+ # Monitor both EPCs
+ var epc1_state = OIPComms.read_int32(tag_group, "UL1_3_EPC1.HMI.STATE")
+ var epc2_state = OIPComms.read_int32(tag_group, "UL1_3_EPC2.HMI.STATE")
+
+ # Monitor both EPCs - UNCOMMENT TO SEE
+ #print("EPC1 State: ", epc1_state)
+ #print("EPC1 Log String: ", Utils.read_string(tag_group, "UL1_3_EPC1.CTRL.STS.Log"))
+ #
+ #print("EPC2 State: ", epc2_state)
+ #print("EPC2 Log String: ", Utils.read_string(tag_group, "UL1_3_EPC2.CTRL.STS.Log"))
diff --git a/PLC/Simulations/STATION_EPC/PLC/AOIs/AOI_STATION_EPC_AOI.L5X b/PLC/Simulations/STATION_EPC/PLC/AOIs/AOI_STATION_EPC_AOI.L5X
new file mode 100644
index 0000000..8ccb4ed
--- /dev/null
+++ b/PLC/Simulations/STATION_EPC/PLC/AOIs/AOI_STATION_EPC_AOI.L5X
@@ -0,0 +1,225 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PLC/Simulations/STATION_EPC/PLC/STATION_EPC.L5X b/PLC/Simulations/STATION_EPC/PLC/STATION_EPC.L5X
new file mode 100644
index 0000000..d0a3904
--- /dev/null
+++ b/PLC/Simulations/STATION_EPC/PLC/STATION_EPC.L5X
@@ -0,0 +1,3542 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+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/PLC/Simulations/STATION_EPC/PLC/UDTs/STATION_EPC_DataTypes.L5X b/PLC/Simulations/STATION_EPC/PLC/UDTs/STATION_EPC_DataTypes.L5X
new file mode 100644
index 0000000..47a87b1
--- /dev/null
+++ b/PLC/Simulations/STATION_EPC/PLC/UDTs/STATION_EPC_DataTypes.L5X
@@ -0,0 +1,154 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+