diff --git a/PLC/Simulations/STATION_EPC/OIP/SATION_EPC.tscn b/PLC/Simulations/STATION_EPC/OIP/SATION_EPC.tscn
index b9d4d00..b065e68 100644
--- a/PLC/Simulations/STATION_EPC/OIP/SATION_EPC.tscn
+++ b/PLC/Simulations/STATION_EPC/OIP/SATION_EPC.tscn
@@ -1,6 +1,6 @@
-[gd_scene load_steps=15 format=3 uid="uid://bcby8jt3gsud8"]
+[gd_scene load_steps=15 format=3 uid="uid://cprxsbwebcd5v"]
-[ext_resource type="Script" uid="uid://dsxxycqvgg68a" path="res://station_epc.gd" id="1_qc5a3"]
+[ext_resource type="Script" uid="uid://b28c5btqltji5" 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"]
@@ -16,8 +16,6 @@ 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
@@ -27,8 +25,6 @@ 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
@@ -49,15 +45,13 @@ 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)
+local_floor_plane = Plane(0, 1, 0, -1.691588)
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)
@@ -67,9 +61,7 @@ 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")]
@@ -77,17 +69,13 @@ 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
+transform = Transform3D(3.03596, -0.0024184675, 0, 0.0540532, 0.135836, 0, 0, 0, 3.036441, -4.5, 0.0338165, -0.637099)
_data = SubResource("Resource_spet4")
"Light 1" = SubResource("Resource_kdh4b")
enable_comms = true
@@ -102,9 +90,7 @@ 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")]
@@ -112,17 +98,13 @@ transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -4.5,
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
+transform = Transform3D(3.03596, -0.0024184675, 0, 0.0540532, 0.135836, 0, 0, 0, 3.036441, -4.5, 0.0338165, -2.5929)
_data = SubResource("Resource_bghi8")
"Light 1" = SubResource("Resource_3ipjn")
enable_comms = true
@@ -134,13 +116,10 @@ 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"
+pushbutton_tag_name = "MCM.STS.System_started"
+lamp_tag_name = "MCM.STS.System_started"
[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)
@@ -148,9 +127,7 @@ 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")]
@@ -159,7 +136,5 @@ 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"
+pushbutton_tag_name = "SIO.STS.Communication_Faulted"
+lamp_tag_name = "SIO.STS.Communication_Faulted"
diff --git a/PLC/Simulations/STATION_EPC/PLC/AOIs/AOI_FLIP_FLOP_AOI.L5X b/PLC/Simulations/STATION_EPC/PLC/AOIs/AOI_FLIP_FLOP_AOI.L5X
new file mode 100644
index 0000000..e88dbe6
--- /dev/null
+++ b/PLC/Simulations/STATION_EPC/PLC/AOIs/AOI_FLIP_FLOP_AOI.L5X
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PLC/Simulations/STATION_EPC/PLC/AOIs/AOI_IO_BLOCK_AOI.L5X b/PLC/Simulations/STATION_EPC/PLC/AOIs/AOI_IO_BLOCK_AOI.L5X
new file mode 100644
index 0000000..67b606d
--- /dev/null
+++ b/PLC/Simulations/STATION_EPC/PLC/AOIs/AOI_IO_BLOCK_AOI.L5X
@@ -0,0 +1,355 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ — Lost Communication”, places it in MCM.CMD.Log, and increments MCM.CMD.Log_Quantity.
+If that exact line later appears in MCM.STS.Acknowledge_Log, IOBlock latches Acknowledge and clears the entry to keep the log concise.
+The command MCM.STS.Unacknowledge_All_Logs resets the latch so the next fault generates a fresh message.
+
+Command bits
+The routine receives Communication_Fault from its own interface monitor.
+The routine receives Parent.STS.Communication_Faulted from the immediate upstream device.
+The routine receives MCM.STS.Unacknowledge_All_Logs to clear the acknowledge latch.
+
+Status bits
+The routine sets Communication_Faulted when either the local or parent link is down.
+The routine sets CTRL.STS.Communication_Faulted with the same value.
+
+HMI bits
+The HMI displays HMI.STATE as 0 while links are healthy and 1 while any link is lost.
+The HMI raises HMI.Alarm.Communication_Faulted only while Communication_Faulted is true and Parent.STS.Communication_Faulted is false.
+
+Alarm bits
+The system raises HMI.Alarm.Communication_Faulted whenever IOBlock itself loses communication and the parent link is still online.
+]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PLC/Simulations/STATION_EPC/PLC/AOIs/AOI_MCM_AOI.L5X b/PLC/Simulations/STATION_EPC/PLC/AOIs/AOI_MCM_AOI.L5X
new file mode 100644
index 0000000..2056384
--- /dev/null
+++ b/PLC/Simulations/STATION_EPC/PLC/AOIs/AOI_MCM_AOI.L5X
@@ -0,0 +1,1187 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ — ” ) and pushes it into the MCM control log. The log word CTRL.CMD.Log carries the message, while CTRL.CMD.Log_Quantity increments the running count. The MCM mirrors both values to CTRL.STS.Log and CTRL.STS.Log_Quantity so the operator panel can display them.
+At the same time, the MCM keeps an internal Acknowledge latch: each AOI pulses Un-acknowledge so that any new or persisting fault keeps resurfacing until the operator cycles through and acknowledges it. This ensures that fresh problems never scroll off the list unnoticed.
+
+The module asserts System_Started whenever a start command is present and all interlocks—Stop command, every E-Stop, and the fire relay—are healthy; both coils drop the instant any interlock fails.
+
+Indicator lamps behave as follows:
+• Motor_Fault_Reset_PB_LT_O flashes while CTRL.CMD.VFD_Faulted is active and turns solid once the fault clears but Motor_Was_Faulted is still set.
+• Jam_Restart_PB_LT_O is solid during a jam fault and flashes when an encoder fault is present.
+• EStop_Actuated_LT_O flashes during a live remote E-Stop and stays solid until EStop_Was_Actuated is cleared.
+• Low_Air_Pressure_Reset_PB_LT_O flashes for a live low-air fault and remains solid while Low_Air_Pressure_Fault_Was_Present is true.
+• Power_Branch_Fault_Reset_PB_LT_O flashes during an active branch fault and remains solid while Power_Branch_Was_Faulted is set.
+
+Each push-button transmits a four-state value to the HMI: state 1 idle/dark, state 2 lit, state 3 pressed-lit, and state 4 pressed-dark.
+Start_PB_LT_O lights whenever the system is running.
+
+HMI.STATE cascade – the lower move wins:
+• System_Started true writes 9.
+• System_Started false writes 0.
+• Motor_Was_Faulted writes 1.
+• Power_Branch_Was_Faulted writes 2.
+• Low_Air_Pressure_Fault_Was_Present writes 3.
+• Encoder_Fault writes 4.
+• Jam_Fault writes 5.
+• Communication_Faulted writes 6.
+• EStop_Was_Actuated writes 7.
+• EStopped_Locally writes 8 and has the highest priority.
+
+When HMI.Setup_Motor_Speeds is asserted, the module broadcasts the configured speed set-points to every drive in the system.
+
+A housekeeping section clears the command word each scan and unlatches all momentary HMI bits, making every press a clean one-shot.
+
+Command bits
+The module receives CTRL.CMD.Log.
+The module receives CTRL.CMD.Log_Quantity.
+The module receives CTRL.CMD.Acknowledge_Log.
+The module receives CTRL.CMD.Unacknowledge_All_Logs.
+The module receives CTRL.CMD.VFD_Was_Faulted.
+The module receives CTRL.CMD.Power_Branch_Was_Faulted.
+The module receives CTRL.CMD.Low_Air_Pressure_Fault_Was_Present.
+The module receives CTRL.CMD.Encoder_Fault.
+The module receives CTRL.CMD.Jam_Fault.
+The module receives CTRL.CMD.Communication_Faulted.
+The module receives CTRL.CMD.EStop_Was_Actuated.
+The module receives CTRL.CMD.VFD_Faulted.
+The module receives CTRL.CMD.EStop_Actuated.
+The module receives CTRL.CMD.Low_Air_Pressure_Fault.
+The module receives CTRL.CMD.Power_Branch_Fault.
+
+Status bits
+The module sets CTRL.STS.Log.
+The module sets CTRL.STS.Log_Quantity.
+The module sets CTRL.STS.Acknowledge_Log.
+The module sets CTRL.STS.Unacknowledge_All_Logs.
+The module sets CTRL.STS.Communication_Faulted.
+The module sets CTRL.STS.System_Started.
+The module sets CTRL.STS.System_Start_Requested.
+The module sets CTRL.STS.Setup_Motor_Speeds.
+The module sets CTRL.STS.VFD_Fault_Reset_Requested.
+The module sets CTRL.STS.Power_Branch_Fault_Reset_Requested.
+The module sets CTRL.STS.Low_Air_Pressure_Fault_Reset_Requested.
+The module sets CTRL.STS.Jam_Reset_Requested.
+
+HMI bits
+The HMI exchanges HMI.Start_PB.
+The HMI exchanges HMI.Stop_PB.
+The HMI exchanges HMI.Setup_Motor_Speeds.
+The HMI exchanges HMI.Motor_Fault_Reset_PB.
+The HMI exchanges HMI.Power_Branch_Fault_Reset_PB.
+The HMI exchanges HMI.Low_Air_Pressure_Reset_PB.
+The HMI exchanges HMI.Jam_Restart_PB.
+The HMI displays HMI.STATE.
+The HMI displays HMI.Start_PB_STATE.
+The HMI displays HMI.Motor_Fault_Reset_PB_STATE.
+The HMI displays HMI.Power_Branch_Fault_Reset_PB_STATE.
+The HMI displays HMI.Low_Air_Pressure_Reset_PB_STATE.
+The HMI displays HMI.Jam_Restart_PB_STATE.
+The HMI displays HMI.EStop_Actuated_LT.
+The HMI displays HMI.Local_Estop_LT.
+
+Alarm bits
+The system raises HMI.Alarm.Start_PB_Pressed.
+The system raises HMI.Alarm.Stop_PB_Pressed.
+The system raises HMI.Alarm.Motor_Fault_Reset_PB_Pressed.
+The system raises HMI.Alarm.Jam_Restart_PB_Pressed.
+The system raises HMI.Alarm.Low_Air_Pressure_Reset_PB_Pressed.
+The system raises HMI.Alarm.Power_Branch_Fault_Reset_PB_Pressed.
+The system raises HMI.Alarm.UPS_Battery_Fault.
+The system raises HMI.Alarm.On_UPS_Battery.
+The system raises HMI.Alarm.UPS_Battery_Low.
+The system raises HMI.Alarm.NAT_Switch_Fault.
+The system raises HMI.Alarm.Fire_Relay_De_Energized.
+The system raises HMI.Alarm.EStopped_Locally.
+]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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
index 8ccb4ed..4b95dd9 100644
--- a/PLC/Simulations/STATION_EPC/PLC/AOIs/AOI_STATION_EPC_AOI.L5X
+++ b/PLC/Simulations/STATION_EPC/PLC/AOIs/AOI_STATION_EPC_AOI.L5X
@@ -1,9 +1,352 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -14,11 +357,14 @@
-
-
+
+
+
+
+
@@ -27,11 +373,14 @@
+
+
+
-
+
@@ -39,6 +388,9 @@
+
+
+
@@ -47,6 +399,9 @@
+
+
+
@@ -55,6 +410,9 @@
+
+
+
@@ -69,6 +427,9 @@
+
+
+
@@ -77,6 +438,9 @@
+
+
+
@@ -85,6 +449,9 @@
+
+
+
@@ -93,6 +460,9 @@
+
+
+
@@ -101,11 +471,25 @@
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
@@ -116,35 +500,30 @@
-
+
-
+
-
+
-
+
-
-
-
-
-
-
+
@@ -153,7 +532,7 @@
-
+
@@ -162,7 +541,7 @@
-
+
@@ -171,7 +550,7 @@
-
+
@@ -180,19 +559,14 @@
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
@@ -216,7 +590,7 @@
-
+
diff --git a/PLC/Simulations/STATION_EPC/PLC/AOIs/AOI_VFD_AOI.L5X b/PLC/Simulations/STATION_EPC/PLC/AOIs/AOI_VFD_AOI.L5X
new file mode 100644
index 0000000..5a7aa55
--- /dev/null
+++ b/PLC/Simulations/STATION_EPC/PLC/AOIs/AOI_VFD_AOI.L5X
@@ -0,0 +1,1468 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ VFD (PowerFlex)
+1 -> APF (ArmourFlex)]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PLC/Simulations/STATION_EPC/PLC/STATION_EPC.L5X b/PLC/Simulations/STATION_EPC/PLC/STATION_EPC.L5X
index fd542b0..6788cf7 100644
--- a/PLC/Simulations/STATION_EPC/PLC/STATION_EPC.L5X
+++ b/PLC/Simulations/STATION_EPC/PLC/STATION_EPC.L5X
@@ -1,21 +1,85 @@
-
-
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -29,55 +93,51 @@
+
+
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
-
+
-
-
-
+
+
+
+
+
+
+
+
+
+
-
+
@@ -87,21 +147,53 @@
-
+
-
+
+
+
+
+
+
+
-
+
+
+
+
+
+
-
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -122,254 +214,46 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -432,6 +316,11 @@
+
+
+
+
+
@@ -459,58 +348,28 @@
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
+
-
+
@@ -523,24 +382,16 @@ Stopped by Station Stop PushButton]]>
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
-
+
@@ -554,55 +405,27 @@ Stopped by Station Stop PushButton]]>
-
-
-
-
-
+
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
+
@@ -610,11 +433,7 @@ Stopped by Station Stop PushButton]]>
-
-
-
-
-
+
@@ -627,38 +446,59 @@ Stopped by Station Stop PushButton]]>
-
+
-
-
-
-
-
-
-
-
-
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
@@ -669,115 +509,49 @@ Stopped by Station Stop PushButton]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
-
+
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
-
+
@@ -785,30 +559,65 @@ Pressed]]>
-
+
+
+
-
+ VFD (PowerFlex)
+1 -> APF (ArmourFlex)]]>
-
+
-
+
-
-
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1192,7 +1001,915 @@ Pressed]]>
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ — ” ) and pushes it into the MCM control log. The log word CTRL.CMD.Log carries the message, while CTRL.CMD.Log_Quantity increments the running count. The MCM mirrors both values to CTRL.STS.Log and CTRL.STS.Log_Quantity so the operator panel can display them.
+At the same time, the MCM keeps an internal Acknowledge latch: each AOI pulses Un-acknowledge so that any new or persisting fault keeps resurfacing until the operator cycles through and acknowledges it. This ensures that fresh problems never scroll off the list unnoticed.
+
+The module asserts System_Started whenever a start command is present and all interlocks—Stop command, every E-Stop, and the fire relay—are healthy; both coils drop the instant any interlock fails.
+
+Indicator lamps behave as follows:
+• Motor_Fault_Reset_PB_LT_O flashes while CTRL.CMD.VFD_Faulted is active and turns solid once the fault clears but Motor_Was_Faulted is still set.
+• Jam_Restart_PB_LT_O is solid during a jam fault and flashes when an encoder fault is present.
+• EStop_Actuated_LT_O flashes during a live remote E-Stop and stays solid until EStop_Was_Actuated is cleared.
+• Low_Air_Pressure_Reset_PB_LT_O flashes for a live low-air fault and remains solid while Low_Air_Pressure_Fault_Was_Present is true.
+• Power_Branch_Fault_Reset_PB_LT_O flashes during an active branch fault and remains solid while Power_Branch_Was_Faulted is set.
+
+Each push-button transmits a four-state value to the HMI: state 1 idle/dark, state 2 lit, state 3 pressed-lit, and state 4 pressed-dark.
+Start_PB_LT_O lights whenever the system is running.
+
+HMI.STATE cascade – the lower move wins:
+• System_Started true writes 9.
+• System_Started false writes 0.
+• Motor_Was_Faulted writes 1.
+• Power_Branch_Was_Faulted writes 2.
+• Low_Air_Pressure_Fault_Was_Present writes 3.
+• Encoder_Fault writes 4.
+• Jam_Fault writes 5.
+• Communication_Faulted writes 6.
+• EStop_Was_Actuated writes 7.
+• EStopped_Locally writes 8 and has the highest priority.
+
+When HMI.Setup_Motor_Speeds is asserted, the module broadcasts the configured speed set-points to every drive in the system.
+
+A housekeeping section clears the command word each scan and unlatches all momentary HMI bits, making every press a clean one-shot.
+
+Command bits
+The module receives CTRL.CMD.Log.
+The module receives CTRL.CMD.Log_Quantity.
+The module receives CTRL.CMD.Acknowledge_Log.
+The module receives CTRL.CMD.Unacknowledge_All_Logs.
+The module receives CTRL.CMD.VFD_Was_Faulted.
+The module receives CTRL.CMD.Power_Branch_Was_Faulted.
+The module receives CTRL.CMD.Low_Air_Pressure_Fault_Was_Present.
+The module receives CTRL.CMD.Encoder_Fault.
+The module receives CTRL.CMD.Jam_Fault.
+The module receives CTRL.CMD.Communication_Faulted.
+The module receives CTRL.CMD.EStop_Was_Actuated.
+The module receives CTRL.CMD.VFD_Faulted.
+The module receives CTRL.CMD.EStop_Actuated.
+The module receives CTRL.CMD.Low_Air_Pressure_Fault.
+The module receives CTRL.CMD.Power_Branch_Fault.
+
+Status bits
+The module sets CTRL.STS.Log.
+The module sets CTRL.STS.Log_Quantity.
+The module sets CTRL.STS.Acknowledge_Log.
+The module sets CTRL.STS.Unacknowledge_All_Logs.
+The module sets CTRL.STS.Communication_Faulted.
+The module sets CTRL.STS.System_Started.
+The module sets CTRL.STS.System_Start_Requested.
+The module sets CTRL.STS.Setup_Motor_Speeds.
+The module sets CTRL.STS.VFD_Fault_Reset_Requested.
+The module sets CTRL.STS.Power_Branch_Fault_Reset_Requested.
+The module sets CTRL.STS.Low_Air_Pressure_Fault_Reset_Requested.
+The module sets CTRL.STS.Jam_Reset_Requested.
+
+HMI bits
+The HMI exchanges HMI.Start_PB.
+The HMI exchanges HMI.Stop_PB.
+The HMI exchanges HMI.Setup_Motor_Speeds.
+The HMI exchanges HMI.Motor_Fault_Reset_PB.
+The HMI exchanges HMI.Power_Branch_Fault_Reset_PB.
+The HMI exchanges HMI.Low_Air_Pressure_Reset_PB.
+The HMI exchanges HMI.Jam_Restart_PB.
+The HMI displays HMI.STATE.
+The HMI displays HMI.Start_PB_STATE.
+The HMI displays HMI.Motor_Fault_Reset_PB_STATE.
+The HMI displays HMI.Power_Branch_Fault_Reset_PB_STATE.
+The HMI displays HMI.Low_Air_Pressure_Reset_PB_STATE.
+The HMI displays HMI.Jam_Restart_PB_STATE.
+The HMI displays HMI.EStop_Actuated_LT.
+The HMI displays HMI.Local_Estop_LT.
+
+Alarm bits
+The system raises HMI.Alarm.Start_PB_Pressed.
+The system raises HMI.Alarm.Stop_PB_Pressed.
+The system raises HMI.Alarm.Motor_Fault_Reset_PB_Pressed.
+The system raises HMI.Alarm.Jam_Restart_PB_Pressed.
+The system raises HMI.Alarm.Low_Air_Pressure_Reset_PB_Pressed.
+The system raises HMI.Alarm.Power_Branch_Fault_Reset_PB_Pressed.
+The system raises HMI.Alarm.UPS_Battery_Fault.
+The system raises HMI.Alarm.On_UPS_Battery.
+The system raises HMI.Alarm.UPS_Battery_Low.
+The system raises HMI.Alarm.NAT_Switch_Fault.
+The system raises HMI.Alarm.Fire_Relay_De_Energized.
+The system raises HMI.Alarm.EStopped_Locally.
+]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1203,8 +1920,8 @@ Pressed]]>
-
-
+
+
@@ -1226,7 +1943,7 @@ Pressed]]>
-
+
@@ -1318,13 +2035,21 @@ Pressed]]>
+
+
+
+
+
+
+
+
-
+
@@ -1338,35 +2063,30 @@ Pressed]]>
-
+
-
+
-
+
-
+
-
-
-
-
-
-
+
@@ -1375,7 +2095,7 @@ Pressed]]>
-
+
@@ -1384,7 +2104,7 @@ Pressed]]>
-
+
@@ -1393,7 +2113,7 @@ Pressed]]>
-
+
@@ -1402,19 +2122,14 @@ Pressed]]>
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
@@ -1435,7 +2150,7 @@ Pressed]]>
-
@@ -1448,14 +2163,13 @@ Pressed]]>
-
-
-
+
+
-
-
+
+
-
+
@@ -1464,10 +2178,9 @@ Pressed]]>
-
+
-
+
@@ -1522,18 +2235,21 @@ NEEDS CLARIFICATION]]>
-
+
-
+
-
+
-
-
+
+
-
+
+
+
+
@@ -1541,7 +2257,10 @@ NEEDS CLARIFICATION]]>
-
+
+
+
+
@@ -1554,54 +2273,63 @@ NEEDS CLARIFICATION]]>
+
+ — Lost Communication”, places it in MCM.CMD.Log, and increments MCM.CMD.Log_Quantity.
+If that exact line later appears in MCM.STS.Acknowledge_Log, IOBlock latches Acknowledge and clears the entry to keep the log concise.
+The command MCM.STS.Unacknowledge_All_Logs resets the latch so the next fault generates a fresh message.
+
+Command bits
+The routine receives Communication_Fault from its own interface monitor.
+The routine receives Parent.STS.Communication_Faulted from the immediate upstream device.
+The routine receives MCM.STS.Unacknowledge_All_Logs to clear the acknowledge latch.
+
+Status bits
+The routine sets Communication_Faulted when either the local or parent link is down.
+The routine sets CTRL.STS.Communication_Faulted with the same value.
+
+HMI bits
+The HMI displays HMI.STATE as 0 while links are healthy and 1 while any link is lost.
+The HMI raises HMI.Alarm.Communication_Faulted only while Communication_Faulted is true and Parent.STS.Communication_Faulted is false.
+
+Alarm bits
+The system raises HMI.Alarm.Communication_Faulted whenever IOBlock itself loses communication and the parent link is still online.
+]]>
+
-
+
-
-
-
-
+
-
+
-
+
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -1617,7 +2345,7 @@ NEEDS CLARIFICATION]]>
-
+
@@ -1635,13 +2363,13 @@ NEEDS CLARIFICATION]]>
-
-
+
+
-
-
+
+
-
+
@@ -1650,20 +2378,9 @@ NEEDS CLARIFICATION]]>
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -1673,9 +2390,6 @@ NEEDS CLARIFICATION]]>
-
-
-
@@ -1684,9 +2398,6 @@ NEEDS CLARIFICATION]]>
-
-
-
@@ -1716,9 +2427,9 @@ NEEDS CLARIFICATION]]>
-
+
-
+
@@ -1727,6 +2438,14 @@ NEEDS CLARIFICATION]]>
+
+
+
+
+
+
+
+
@@ -1738,21 +2457,7 @@ NEEDS CLARIFICATION]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1760,10 +2465,7 @@ NEEDS CLARIFICATION]]>
-
-
-
-
+
@@ -1771,10 +2473,7 @@ NEEDS CLARIFICATION]]>
-
-
-
-
+
@@ -1793,21 +2492,7 @@ NEEDS CLARIFICATION]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1817,7 +2502,7 @@ NEEDS CLARIFICATION]]>
-
+
@@ -1827,9 +2512,6 @@ NEEDS CLARIFICATION]]>
-
-
-
@@ -1850,7 +2532,7 @@ NEEDS CLARIFICATION]]>
-
+
@@ -1860,9 +2542,6 @@ NEEDS CLARIFICATION]]>
-
-
-
@@ -1871,9 +2550,6 @@ NEEDS CLARIFICATION]]>
-
-
-
@@ -1883,7 +2559,7 @@ NEEDS CLARIFICATION]]>
-
+
@@ -1915,9 +2591,6 @@ NEEDS CLARIFICATION]]>
-
-
-
@@ -1926,9 +2599,6 @@ NEEDS CLARIFICATION]]>
-
-
-
@@ -1937,8 +2607,27 @@ NEEDS CLARIFICATION]]>
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1949,7 +2638,7 @@ NEEDS CLARIFICATION]]>
-
+
@@ -2045,9 +2734,6 @@ NEEDS CLARIFICATION]]>
-
-
-
@@ -2067,10 +2753,7 @@ NEEDS CLARIFICATION]]>
-
-
-
-
+
@@ -2089,21 +2772,7 @@ NEEDS CLARIFICATION]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -2172,17 +2841,6 @@ NEEDS CLARIFICATION]]>
-
-
-
-
-
-
-
-
-
-
-
@@ -2221,10 +2879,10 @@ NEEDS CLARIFICATION]]>
-
+
-
-
+
+
@@ -2238,15 +2896,15 @@ NEEDS CLARIFICATION]]>
-
+
-
+
-
+
-
+
@@ -2254,10 +2912,10 @@ NEEDS CLARIFICATION]]>
-
+
-
-
+
+
@@ -2265,10 +2923,10 @@ NEEDS CLARIFICATION]]>
-
+
-
-
+
+
@@ -2276,10 +2934,10 @@ NEEDS CLARIFICATION]]>
-
+
-
-
+
+
@@ -2287,10 +2945,37 @@ NEEDS CLARIFICATION]]>
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2299,12 +2984,12 @@ NEEDS CLARIFICATION]]>
-
+
-
+
@@ -2339,255 +3024,220 @@ NEEDS CLARIFICATION]]>
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -2596,158 +3246,188 @@ NEEDS CLARIFICATION]]>
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
+
@@ -2766,10 +3446,10 @@ NEEDS CLARIFICATION]]>
-
+
-
+
@@ -2790,73 +3470,89 @@ NEEDS CLARIFICATION]]>
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2864,66 +3560,53 @@ NEEDS CLARIFICATION]]>
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
-
+
-
+ ],0]],[[0],0,0]]]]>
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
@@ -2939,8 +3622,20 @@ NEEDS CLARIFICATION]]>
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2955,39 +3650,26 @@ NEEDS CLARIFICATION]]>
-
+ ],0]],[[0],0,0]]]]>
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -3007,8 +3689,20 @@ NEEDS CLARIFICATION]]>
+
+
+
+
+
+
+
+
+
+
+
+
@@ -3023,216 +3717,27 @@ NEEDS CLARIFICATION]]>
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
@@ -3242,21 +3747,19 @@ NEEDS CLARIFICATION]]>
-
-
-
+
+
+
-
-
-
+
+
-
@@ -3270,60 +3773,47 @@ NEEDS CLARIFICATION]]>
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -3354,8 +3844,8 @@ NEEDS CLARIFICATION]]>
-
-
+
+
@@ -3366,7 +3856,7 @@ NEEDS CLARIFICATION]]>
-
+
@@ -3407,7 +3897,7 @@ NEEDS CLARIFICATION]]>
-
+
@@ -3417,7 +3907,7 @@ NEEDS CLARIFICATION]]>
-
+
@@ -3436,12 +3926,12 @@ NEEDS CLARIFICATION]]>
-
+
-
+
diff --git a/PLC/Simulations/STATION_EPC/PLC/UDTs/STATION_EPC_DataType.L5X b/PLC/Simulations/STATION_EPC/PLC/UDTs/STATION_EPC_DataType.L5X
deleted file mode 100644
index acb2006..0000000
--- a/PLC/Simulations/STATION_EPC/PLC/UDTs/STATION_EPC_DataType.L5X
+++ /dev/null
@@ -1,122 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/PLC/Simulations/STATION_EPC/PLC/UDTs/STATION_EPC_DataTypes.L5X b/PLC/Simulations/STATION_EPC/PLC/UDTs/STATION_EPC_DataTypes.L5X
index 47a87b1..0edc155 100644
--- a/PLC/Simulations/STATION_EPC/PLC/UDTs/STATION_EPC_DataTypes.L5X
+++ b/PLC/Simulations/STATION_EPC/PLC/UDTs/STATION_EPC_DataTypes.L5X
@@ -1,7 +1,124 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -15,18 +132,23 @@
+
+
+
+
+
-
+
-
+
@@ -93,55 +215,39 @@
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
+
-
-
+
-
+
+
+
+
+
+
@@ -150,5 +256,355 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PLC/Simulations/STATION_EPC/PLC/UDTs/UDT_IO_BLOCK_DataType.L5X b/PLC/Simulations/STATION_EPC/PLC/UDTs/UDT_IO_BLOCK_DataType.L5X
new file mode 100644
index 0000000..4c3727f
--- /dev/null
+++ b/PLC/Simulations/STATION_EPC/PLC/UDTs/UDT_IO_BLOCK_DataType.L5X
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PLC/Simulations/STATION_EPC/PLC/UDTs/UDT_MCM_DataType.L5X b/PLC/Simulations/STATION_EPC/PLC/UDTs/UDT_MCM_DataType.L5X
new file mode 100644
index 0000000..4a4ad21
--- /dev/null
+++ b/PLC/Simulations/STATION_EPC/PLC/UDTs/UDT_MCM_DataType.L5X
@@ -0,0 +1,1198 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ — ” ) and pushes it into the MCM control log. The log word CTRL.CMD.Log carries the message, while CTRL.CMD.Log_Quantity increments the running count. The MCM mirrors both values to CTRL.STS.Log and CTRL.STS.Log_Quantity so the operator panel can display them.
+At the same time, the MCM keeps an internal Acknowledge latch: each AOI pulses Un-acknowledge so that any new or persisting fault keeps resurfacing until the operator cycles through and acknowledges it. This ensures that fresh problems never scroll off the list unnoticed.
+
+The module asserts System_Started whenever a start command is present and all interlocks—Stop command, every E-Stop, and the fire relay—are healthy; both coils drop the instant any interlock fails.
+
+Indicator lamps behave as follows:
+• Motor_Fault_Reset_PB_LT_O flashes while CTRL.CMD.VFD_Faulted is active and turns solid once the fault clears but Motor_Was_Faulted is still set.
+• Jam_Restart_PB_LT_O is solid during a jam fault and flashes when an encoder fault is present.
+• EStop_Actuated_LT_O flashes during a live remote E-Stop and stays solid until EStop_Was_Actuated is cleared.
+• Low_Air_Pressure_Reset_PB_LT_O flashes for a live low-air fault and remains solid while Low_Air_Pressure_Fault_Was_Present is true.
+• Power_Branch_Fault_Reset_PB_LT_O flashes during an active branch fault and remains solid while Power_Branch_Was_Faulted is set.
+
+Each push-button transmits a four-state value to the HMI: state 1 idle/dark, state 2 lit, state 3 pressed-lit, and state 4 pressed-dark.
+Start_PB_LT_O lights whenever the system is running.
+
+HMI.STATE cascade – the lower move wins:
+• System_Started true writes 9.
+• System_Started false writes 0.
+• Motor_Was_Faulted writes 1.
+• Power_Branch_Was_Faulted writes 2.
+• Low_Air_Pressure_Fault_Was_Present writes 3.
+• Encoder_Fault writes 4.
+• Jam_Fault writes 5.
+• Communication_Faulted writes 6.
+• EStop_Was_Actuated writes 7.
+• EStopped_Locally writes 8 and has the highest priority.
+
+When HMI.Setup_Motor_Speeds is asserted, the module broadcasts the configured speed set-points to every drive in the system.
+
+A housekeeping section clears the command word each scan and unlatches all momentary HMI bits, making every press a clean one-shot.
+
+Command bits
+The module receives CTRL.CMD.Log.
+The module receives CTRL.CMD.Log_Quantity.
+The module receives CTRL.CMD.Acknowledge_Log.
+The module receives CTRL.CMD.Unacknowledge_All_Logs.
+The module receives CTRL.CMD.VFD_Was_Faulted.
+The module receives CTRL.CMD.Power_Branch_Was_Faulted.
+The module receives CTRL.CMD.Low_Air_Pressure_Fault_Was_Present.
+The module receives CTRL.CMD.Encoder_Fault.
+The module receives CTRL.CMD.Jam_Fault.
+The module receives CTRL.CMD.Communication_Faulted.
+The module receives CTRL.CMD.EStop_Was_Actuated.
+The module receives CTRL.CMD.VFD_Faulted.
+The module receives CTRL.CMD.EStop_Actuated.
+The module receives CTRL.CMD.Low_Air_Pressure_Fault.
+The module receives CTRL.CMD.Power_Branch_Fault.
+
+Status bits
+The module sets CTRL.STS.Log.
+The module sets CTRL.STS.Log_Quantity.
+The module sets CTRL.STS.Acknowledge_Log.
+The module sets CTRL.STS.Unacknowledge_All_Logs.
+The module sets CTRL.STS.Communication_Faulted.
+The module sets CTRL.STS.System_Started.
+The module sets CTRL.STS.System_Start_Requested.
+The module sets CTRL.STS.Setup_Motor_Speeds.
+The module sets CTRL.STS.VFD_Fault_Reset_Requested.
+The module sets CTRL.STS.Power_Branch_Fault_Reset_Requested.
+The module sets CTRL.STS.Low_Air_Pressure_Fault_Reset_Requested.
+The module sets CTRL.STS.Jam_Reset_Requested.
+
+HMI bits
+The HMI exchanges HMI.Start_PB.
+The HMI exchanges HMI.Stop_PB.
+The HMI exchanges HMI.Setup_Motor_Speeds.
+The HMI exchanges HMI.Motor_Fault_Reset_PB.
+The HMI exchanges HMI.Power_Branch_Fault_Reset_PB.
+The HMI exchanges HMI.Low_Air_Pressure_Reset_PB.
+The HMI exchanges HMI.Jam_Restart_PB.
+The HMI displays HMI.STATE.
+The HMI displays HMI.Start_PB_STATE.
+The HMI displays HMI.Motor_Fault_Reset_PB_STATE.
+The HMI displays HMI.Power_Branch_Fault_Reset_PB_STATE.
+The HMI displays HMI.Low_Air_Pressure_Reset_PB_STATE.
+The HMI displays HMI.Jam_Restart_PB_STATE.
+The HMI displays HMI.EStop_Actuated_LT.
+The HMI displays HMI.Local_Estop_LT.
+
+Alarm bits
+The system raises HMI.Alarm.Start_PB_Pressed.
+The system raises HMI.Alarm.Stop_PB_Pressed.
+The system raises HMI.Alarm.Motor_Fault_Reset_PB_Pressed.
+The system raises HMI.Alarm.Jam_Restart_PB_Pressed.
+The system raises HMI.Alarm.Low_Air_Pressure_Reset_PB_Pressed.
+The system raises HMI.Alarm.Power_Branch_Fault_Reset_PB_Pressed.
+The system raises HMI.Alarm.UPS_Battery_Fault.
+The system raises HMI.Alarm.On_UPS_Battery.
+The system raises HMI.Alarm.UPS_Battery_Low.
+The system raises HMI.Alarm.NAT_Switch_Fault.
+The system raises HMI.Alarm.Fire_Relay_De_Energized.
+The system raises HMI.Alarm.EStopped_Locally.
+]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PLC/Simulations/STATION_EPC/PLC/UDTs/UDT_VFD_DataType.L5X b/PLC/Simulations/STATION_EPC/PLC/UDTs/UDT_VFD_DataType.L5X
new file mode 100644
index 0000000..3178b3d
--- /dev/null
+++ b/PLC/Simulations/STATION_EPC/PLC/UDTs/UDT_VFD_DataType.L5X
@@ -0,0 +1,1478 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ VFD (PowerFlex)
+1 -> APF (ArmourFlex)]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+