diff --git a/PLC/AOIs/AOI_APF_AOI.L5X b/PLC/AOIs/AOI_APF_AOI.L5X index 644a3aa..f7d0029 100644 --- a/PLC/AOIs/AOI_APF_AOI.L5X +++ b/PLC/AOIs/AOI_APF_AOI.L5X @@ -1,8 +1,8 @@  - - + + - @@ -21,12 +21,19 @@ - + + - + + + + + + + @@ -85,14 +92,6 @@ - - - - - - - - @@ -167,17 +166,11 @@ - - - - - - @@ -227,20 +220,6 @@ - - - - - - - - - - - - - - @@ -250,6 +229,9 @@ + + + @@ -281,14 +263,6 @@ - - - - - - - - @@ -346,9 +320,6 @@ - - - @@ -622,7 +593,7 @@ HMI.Alarm.Maintenance_Mode is raised while Maintenance_Mode is active. - + @@ -811,7 +782,7 @@ HMI.Alarm.Maintenance_Mode is raised while Maintenance_Mode is active. - + diff --git a/PLC/Simulations/APF/OIP/APF_Simulation.tscn b/PLC/Simulations/APF/OIP/APF_Simulation.tscn index c4e4ba8..8615f6d 100644 --- a/PLC/Simulations/APF/OIP/APF_Simulation.tscn +++ b/PLC/Simulations/APF/OIP/APF_Simulation.tscn @@ -2,7 +2,7 @@ [ext_resource type="PackedScene" uid="uid://dyhvoundu2kqc" path="res://parts/Building.tscn" id="1_gqsni"] [ext_resource type="PackedScene" uid="uid://bqlkj4ar8q1ws" path="res://parts/assemblies/BeltConveyorAssembly.tscn" id="2_lfim2"] -[ext_resource type="Script" uid="uid://c3kn5pjvo10bq" path="res://apf.gd" id="3_f50vn"] +[ext_resource type="Script" uid="uid://8vi3srqsvwmt" path="res://apf.gd" id="3_f50vn"] [ext_resource type="PackedScene" uid="uid://co2mqmdwpn57w" path="res://parts/BoxSpawner.tscn" id="4_qrepp"] [ext_resource type="PackedScene" uid="uid://bl73u0rvt2orv" path="res://parts/Despawner.tscn" id="5_tcev8"] [ext_resource type="PackedScene" uid="uid://gddgyvex6gdj" path="res://parts/PushButton.tscn" id="6_e747n"] @@ -13,14 +13,12 @@ [node name="FL1038_2" parent="." instance=ExtResource("2_lfim2")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.70003, 0.000999277, -0.454722) -local_floor_plane = Plane(0, 1, 0, -2.001) -speed = 0.0 +local_floor_plane = Plane(0, 1, 0, -2.0009992) +speed = 1.3716 enable_comms = true speed_tag_name = "FL1038_2_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("FL1038_2", "box_spawner")] script = ExtResource("3_f50vn") @@ -29,7 +27,6 @@ box_spawner = NodePath("../BoxSpawner") [node name="BoxSpawner" parent="." instance=ExtResource("4_qrepp")] 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, -7.86232, 0.504191, -0.458427) -disable = true [node name="Despawner" parent="." instance=ExtResource("5_tcev8")] transform = Transform3D(2, 0, 0, 0, 1, 0, 0, 0, 2, 3.18745, 0.5, -0.3678) @@ -41,18 +38,14 @@ 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_e747n")] 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_e747n")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.0964, 0.107454, 0.443829) @@ -60,9 +53,7 @@ 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_e747n")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.75448, 0.0942386, 0.480748) @@ -71,18 +62,14 @@ 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_e747n")] 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_e747n")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.25571, 0.108833, 0.443829) @@ -90,9 +77,7 @@ 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_e747n")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.9392, -0.308646, 0.440302) @@ -101,27 +86,21 @@ 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_e747n")] 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="VFD_Fault" parent="." instance=ExtResource("6_e747n")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.3405, 0.470611, 0.483969) 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_e747n")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.44535, 0.0722519, 0.397527) @@ -129,25 +108,19 @@ 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_e747n")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.09258, 0.0938599, 0.434032) 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_e747n")] 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) @@ -216,9 +189,7 @@ 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) @@ -233,9 +204,7 @@ 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) @@ -250,9 +219,7 @@ 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) @@ -264,9 +231,7 @@ font_size = 20 transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.5194, 0.085152, 0.431983) 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) @@ -275,3 +240,10 @@ font_size = 20 [node name="Despawner2" parent="." instance=ExtResource("5_tcev8")] transform = Transform3D(2, 0, 0, 0, 1, 0, 0, 0, 2, -12.0592, 0.5, -0.368497) + +[node name="PushButton2" parent="." instance=ExtResource("6_e747n")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.4803154, 0.08222163, 0.44355246) +text = "DPM Faulted" +toggle = true +enable_comms = true +pushbutton_tag_name = "TOGGLE_DPM_FAULT_OIP" diff --git a/PLC/Simulations/APF/PLC/AOIs/AOI_APF_AOI.L5X b/PLC/Simulations/APF/PLC/AOIs/AOI_APF_AOI.L5X index bd15c60..f7d0029 100644 --- a/PLC/Simulations/APF/PLC/AOIs/AOI_APF_AOI.L5X +++ b/PLC/Simulations/APF/PLC/AOIs/AOI_APF_AOI.L5X @@ -1,13 +1,9 @@  - - + - - - - @@ -19,37 +15,35 @@ - - + + - + + - + + + + - + - - - - - - @@ -71,9 +65,6 @@ - - - @@ -87,41 +78,21 @@ - - - - - - - - - - - - - - - - - - - - @@ -135,9 +106,6 @@ - - - @@ -159,24 +127,18 @@ - - - - - - - + @@ -199,32 +161,23 @@ - - - - - - - - - - + @@ -251,14 +204,6 @@ - - - - - - - - @@ -275,20 +220,6 @@ - - - - - - - - - - - - - - @@ -312,13 +243,52 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + - + - + - - - - - - - - - - + + - - - + + + + + + + + + + + + + + + + + + + + + + + + @@ -406,6 +394,14 @@ + + + + + + + + @@ -422,93 +418,110 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + 0, and power-saving is not blocking. + +Maintenance mode – enabled by HMI.Maintenance.Maintenance_Mode. + +Separate start, stop, jog, direction, and speed buttons bypass Interlock after the same 5 s horn delay, provided that E-Stop, comms, and VFD-reset faults are clear. + +Jog – while in maintenance, the jog PB gives low-speed motion once the delay timer finishes. + +Power-saving – if the belt has run long enough to empty itself, a length-based timer expires; Power_Saving_Mode turns on and the drive stays idle until the operator issues a new start. + +Safety torque-off – loss of STO sets EStopped, mirrors it to CTRL.STS.EStopped, and records the event in the MCM. + +Drive outputs – when Run is true the AOI drops APF_O.Stop, energises APF_O.Start, and sets the forward or reverse bit from the maintenance direction flag. + +Logging – every new Disconnect, VFD trip, Comms loss, Jam, or Full condition pushes a line into MCM.CMD.Log and increments the quantity. The line is cleared automatically when MCM echoes it back through MCM.STS.Acknowledge_Log; a global un-acknowledge re-arms the entry. + +Command bits (received by the AOI) +The module receives CTRL.CMD.Log and Log_Quantity. +The module receives CTRL.CMD.Acknowledge_Log and Unacknowledge_All_Logs. +The module receives CTRL.CMD.Start and Stop_Require_Start. +The module receives CTRL.CMD.Stop_Auto_Restart. +The module receives CTRL.CMD.Speed_FPM. +The module receives CTRL.CMD.Interlock. +The module receives CTRL.CMD.Run_Up_Enabled. +The module receives CTRL.CMD.Power_Saving_Mode_ON. +The module receives CTRL.CMD.Jammed. +The module receives CTRL.CMD.Encoder_Fault. +The module receives CTRL.CMD.Full. +The module receives CTRL.CMD.VFD_Faulted and VFD_Was_Faulted. +The module receives CTRL.CMD.EStop_Was_Actuated. +The module receives CTRL.CMD.Stopped_By_Stop_PB. + +The module receives MCM.STS.System_Started and System_Start_Requested. +The module receives MCM.STS.VFD_Fault_Reset_Requested. +The module receives MCM.STS.Setup_Motor_Speeds. +The module receives MCM.STS.Unacknowledge_All_Logs. + +The module receives HMI.Maintenance.Maintenance_Mode. +The module receives HMI.Maintenance.Start_PB_Pressed. +The module receives HMI.Maintenance.Stop_PB_Pressed. +The module receives HMI.Maintenance.Jog_PB_Pressed. +The module receives HMI.Maintenance.Direction_PB_Pressed. +The module receives HMI.Maintenance.Speed_FPM. +The module receives HMI.Cycle_Time_Factor and HMI.Speed_At_30rev. + +Status bits (set by the AOI) +The module sets CTRL.STS.Log and Log_Quantity. +The module sets CTRL.STS.Acknowledge_Log and Unacknowledge_All_Logs. +The module sets CTRL.STS.MCM_Started. +The module sets CTRL.STS.Running. +The module sets CTRL.STS.Enabled. +The module sets CTRL.STS.Interlock. +The module sets CTRL.STS.In_Power_Saving_Mode. +The module sets CTRL.STS.Maintenance_Mode. +The module sets CTRL.STS.Encoder_Fault. +The module sets CTRL.STS.Jammed. +The module sets CTRL.STS.VFD_Faulted. +The module sets CTRL.STS.VFD_Fault_Reset_Required. +The module sets CTRL.STS.Communication_Faulted. +The module sets CTRL.STS.EStopped. +The module sets CTRL.STS.Current_Speed. +The module sets CTRL.STS.Requested_Speed. + +HMI bits +The HMI exchanges HMI.Maintenance.Maintenance_Mode. +The HMI exchanges HMI.Maintenance.Start_PB_Pressed. +The HMI exchanges HMI.Maintenance.Stop_PB_Pressed. +The HMI exchanges HMI.Maintenance.Jog_PB_Pressed. +The HMI exchanges HMI.Maintenance.Direction_PB_Pressed. +The HMI exchanges HMI.Maintenance.Speed_FPM. +The HMI displays HMI.STATE (values 0, 1, 2, 3, 4, 5, 6, 61, 7, 8, 9, 13, 14, 131 as defined above). +The HMI displays HMI.FPM, HMI.Amperage, HMI.Voltage, and HMI.Velocity. +The HMI displays HMI.VFD_Type, HMI.Communication_Fault_Code, HMI.VFD_Fault_Code, and HMI.Last_VFD_Fault_Code. +The HMI displays HMI.Maintenance.Buttons_State and HMI.Maintenance.Direction. + +Alarm bits +HMI.Alarm.Disconnected is raised when Disconnected is true. +HMI.Alarm.Communication_Faulted is raised when Communication_Faulted is true. +HMI.Alarm.VFD_Fault is raised when VFD_Faulted is true. +HMI.Alarm.VFD_Reset_Required is raised when VFD_Fault_Reset_Required is true while VFD_Faulted is false. +HMI.Alarm.Jammed is raised when Jammed is true. +HMI.Alarm.Full is raised when Full is true. +HMI.Alarm.Maintenance_Mode is raised while Maintenance_Mode is active. +]]> + @@ -550,47 +563,47 @@ - + - + - + - + - + - + - + - + - + @@ -620,12 +633,12 @@ - + - + @@ -665,7 +678,7 @@ - + @@ -680,7 +693,7 @@ - + @@ -769,7 +782,7 @@ - + @@ -784,10 +797,15 @@ - + + + + + + @@ -796,143 +814,143 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - + - + - + - + - + - + - + + + + + + @@ -941,9 +959,9 @@ - - - + + + diff --git a/PLC/Simulations/APF/PLC/AOIs/AOI_DPM_AOI.L5X b/PLC/Simulations/APF/PLC/AOIs/AOI_DPM_AOI.L5X index a65c458..ac1a5d6 100644 --- a/PLC/Simulations/APF/PLC/AOIs/AOI_DPM_AOI.L5X +++ b/PLC/Simulations/APF/PLC/AOIs/AOI_DPM_AOI.L5X @@ -1,10 +1,10 @@  - + - + @@ -19,9 +19,14 @@ - - + + + + + + + @@ -30,14 +35,13 @@ - + + + + + - - - - - @@ -60,29 +64,6 @@ - - - - - - - - - - - - - - - - - - - - - - - @@ -91,18 +72,7 @@ - - - - - - - - - - - @@ -131,21 +101,52 @@ - - - + + + + + + + — Lost Communication”, places it in MCM.CMD.Log, and increments MCM.CMD.Log_Quantity. +If the same line later appears in MCM.STS.Acknowledge_Log, the routine latches Acknowledge and clears the entry so the log stays current. + +The command bit MCM.STS.Unacknowledge_All_Logs resets the Acknowledge latch, guaranteeing that the next loss of communication will produce a fresh message. + +Command bits +The routine receives Communication_Fault from its own port monitor. +The routine receives EN4TR_Communication_Fault from the rack adapter. +The routine receives MCM.STS.Unacknowledge_All_Logs to clear the acknowledge latch. + +Status bits +The routine sets Communication_Faulted when either link is down. +The routine sets CTRL.STS.Communication_Faulted with the same value. + +HMI bits +The HMI displays HMI.STATE as 0 for healthy and 1 for faulted. +The HMI raises HMI.Alarm.Communication_Faulted only while Communication_Faulted is true and EN4TR_Communication_Fault is false. + +Alarm bits +The system raises HMI.Alarm.Communication_Faulted whenever the switch itself loses communication and the EN4TR adapter is still online. +]]> + - + @@ -160,7 +161,7 @@ - + @@ -170,7 +171,7 @@ - + @@ -186,8 +187,8 @@ - - + + diff --git a/PLC/Simulations/APF/PLC/AOIs/AOI_FLIP_FLOP_AOI.L5X b/PLC/Simulations/APF/PLC/AOIs/AOI_FLIP_FLOP_AOI.L5X index d3e6723..8e36d93 100644 --- a/PLC/Simulations/APF/PLC/AOIs/AOI_FLIP_FLOP_AOI.L5X +++ b/PLC/Simulations/APF/PLC/AOIs/AOI_FLIP_FLOP_AOI.L5X @@ -1,5 +1,5 @@  - + - + - + @@ -66,7 +66,7 @@ - + @@ -74,7 +74,7 @@ - + @@ -305,6 +305,104 @@ + +” ) 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. +]]> + @@ -495,7 +593,7 @@ - + diff --git a/PLC/Simulations/APF/PLC/APF.L5X b/PLC/Simulations/APF/PLC/APF.L5X index 51bc118..d32a304 100644 --- a/PLC/Simulations/APF/PLC/APF.L5X +++ b/PLC/Simulations/APF/PLC/APF.L5X @@ -1,47 +1,17 @@  - - + - + - - - - @@ -110,18 +80,44 @@ Faulted]]> + + + + + + + + @@ -131,210 +127,13 @@ Faulted]]> - + - - - - - - - - - - - - - - - + - + - - + - + + + + - + - + + + + @@ -558,12 +410,61 @@ Alarms]]> - + + + + + - @@ -2161,9 +2073,17 @@ Pressed]]> - - + + + + + + + + + + @@ -2175,17 +2095,13 @@ Pressed]]> - + + + + + - - - - - - - - @@ -2214,41 +2130,6 @@ Pressed]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2260,21 +2141,7 @@ Pressed]]> - - - - - - - - - - - - - - @@ -2318,10 +2185,6 @@ Pressed]]> - - - @@ -2329,13 +2192,51 @@ Pressed]]> + + + + + + + + + + — Lost Communication”, places it in MCM.CMD.Log, and increments MCM.CMD.Log_Quantity. +If the same line later appears in MCM.STS.Acknowledge_Log, the routine latches Acknowledge and clears the entry so the log stays current. + +The command bit MCM.STS.Unacknowledge_All_Logs resets the Acknowledge latch, guaranteeing that the next loss of communication will produce a fresh message. + +Command bits +The routine receives Communication_Fault from its own port monitor. +The routine receives EN4TR_Communication_Fault from the rack adapter. +The routine receives MCM.STS.Unacknowledge_All_Logs to clear the acknowledge latch. + +Status bits +The routine sets Communication_Faulted when either link is down. +The routine sets CTRL.STS.Communication_Faulted with the same value. + +HMI bits +The HMI displays HMI.STATE as 0 for healthy and 1 for faulted. +The HMI raises HMI.Alarm.Communication_Faulted only while Communication_Faulted is true and EN4TR_Communication_Fault is false. + +Alarm bits +The system raises HMI.Alarm.Communication_Faulted whenever the switch itself loses communication and the EN4TR adapter is still online. +]]> + - + @@ -2350,7 +2251,7 @@ Pressed]]> - + @@ -2360,7 +2261,7 @@ Pressed]]> - + @@ -2477,7 +2378,7 @@ Pressed]]> - @@ -2555,10 +2456,10 @@ Pressed]]> - + - + @@ -2566,10 +2467,10 @@ Pressed]]> - + - + @@ -2893,6 +2794,104 @@ 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. +]]> + @@ -3083,7 +3082,7 @@ Pressed]]> - + @@ -3307,26 +3306,26 @@ Pressed]]> - + ],0]],[[0],0,[0,'$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00' + ],[0,'$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00$00' + ]]]]]> + - - + + @@ -3343,7 +3342,7 @@ Pressed]]> - + @@ -3353,17 +3352,23 @@ Pressed]]> - - - + + + + - + + + + + + @@ -3378,29 +3383,28 @@ Pressed]]> - + - + - @@ -3408,17 +3412,17 @@ Pressed]]> + - + - + - @@ -3435,15 +3439,16 @@ Pressed]]> - - - + + + - + + - + @@ -3453,7 +3458,7 @@ Pressed]]> - + @@ -3464,15 +3469,23 @@ Pressed]]> + + + + + + + - - + + + - + @@ -3492,8 +3505,8 @@ Pressed]]> - - + + @@ -3505,7 +3518,7 @@ Pressed]]> - + @@ -3533,8 +3546,8 @@ Pressed]]> - @@ -3624,20 +3637,20 @@ Pressed]]> - + - + - + - + - - + + @@ -3675,10 +3688,10 @@ Pressed]]> - + - + @@ -3705,6 +3718,14 @@ Pressed]]> + + + + + + + + @@ -3747,10 +3768,10 @@ Pressed]]> - + - + @@ -3805,6 +3826,14 @@ Pressed]]> + + + + + + + + @@ -3839,7 +3868,7 @@ Pressed]]> - + @@ -3849,82 +3878,92 @@ Pressed]]> - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + @@ -3943,15 +3982,7 @@ Pressed]]> - - - - - - - - - + diff --git a/PLC/Simulations/APF/PLC/UDTs/UDT_APF_DataTypes.L5X b/PLC/Simulations/APF/PLC/UDTs/UDT_APF_DataTypes.L5X index 73f32fb..919095c 100644 --- a/PLC/Simulations/APF/PLC/UDTs/UDT_APF_DataTypes.L5X +++ b/PLC/Simulations/APF/PLC/UDTs/UDT_APF_DataTypes.L5X @@ -1,130 +1,89 @@  - + - + - - + + - + - - - + + - + - - + - - + - - - - + + - + - - - + @@ -332,7 +218,7 @@ Stopped by Station Stop PushButton]]>