diff --git a/PLC/Simulations/PMM/PLC/AOI/AOI_PMM.L5X b/PLC/Simulations/PMM/PLC/AOI/AOI_PMM.L5X
deleted file mode 100644
index 97abed1..0000000
--- a/PLC/Simulations/PMM/PLC/AOI/AOI_PMM.L5X
+++ /dev/null
@@ -1,1259 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- — ” ) 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/PMM/PLC/AOI/AOI_PMM_AOI.L5X b/PLC/Simulations/PMM/PLC/AOI/AOI_PMM_AOI.L5X
new file mode 100644
index 0000000..76578b2
--- /dev/null
+++ b/PLC/Simulations/PMM/PLC/AOI/AOI_PMM_AOI.L5X
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PLC/Simulations/PMM/PLC/PMM.L5X b/PLC/Simulations/PMM/PLC/PMM.L5X
index 0d0189e..1fb9678 100644
--- a/PLC/Simulations/PMM/PLC/PMM.L5X
+++ b/PLC/Simulations/PMM/PLC/PMM.L5X
@@ -1,183 +1,30 @@
-
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -193,6 +40,7 @@ Faulted]]>
+
@@ -224,7 +72,7 @@ Faulted]]>
-
+
@@ -591,1015 +439,7 @@ Faulted]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- — ” ) 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.
-]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -1615,20 +455,70 @@ The system raises HMI.Alarm.EStopped_Locally.
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1661,156 +551,10 @@ The system raises HMI.Alarm.EStopped_Locally.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -1818,6 +562,15 @@ The system raises HMI.Alarm.EStopped_Locally.
+
+
+
+
+
+
+
+
+
@@ -1838,11 +591,16 @@ The system raises HMI.Alarm.EStopped_Locally.
-
+
+
+
+
+
+
@@ -1852,7 +610,7 @@ The system raises HMI.Alarm.EStopped_Locally.
-
+
diff --git a/PLC/Simulations/PMM/PLC/UDT/UDT_AOI_PMM.L5X b/PLC/Simulations/PMM/PLC/UDT/UDT_AOI_PMM.L5X
deleted file mode 100644
index 1c4b3fc..0000000
--- a/PLC/Simulations/PMM/PLC/UDT/UDT_AOI_PMM.L5X
+++ /dev/null
@@ -1,1265 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- — ” ) 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/PMM/PLC/UDT/UDT_PMM_DataType.L5X b/PLC/Simulations/PMM/PLC/UDT/UDT_PMM_DataType.L5X
new file mode 100644
index 0000000..9d55002
--- /dev/null
+++ b/PLC/Simulations/PMM/PLC/UDT/UDT_PMM_DataType.L5X
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+