Update MCM

This commit is contained in:
b.makharadze 2025-07-30 18:20:33 +04:00
parent dfeaf00eb5
commit 4a4d638e5a
5 changed files with 525 additions and 377 deletions

View File

@ -1,177 +0,0 @@
[gd_scene load_steps=9 format=4 uid="uid://7ipehu333jij"]
[ext_resource type="PackedScene" uid="uid://dyhvoundu2kqc" path="res://parts/Building.tscn" id="1_2vilj"]
[ext_resource type="PackedScene" uid="uid://dvjrx5crpqs5f" path="res://parts/SideGuard.tscn" id="3_3lj72"]
[ext_resource type="Shader" uid="uid://wtu5yyfpdcgl" path="res://assets/3DModels/Shaders/MetalShaderSideGuard.tres" id="4_02owk"]
[ext_resource type="PackedScene" uid="uid://gddgyvex6gdj" path="res://parts/PushButton.tscn" id="5_02owk"]
[ext_resource type="Script" uid="uid://bympdptikwp6f" path="res://MCM.gd" id="5_2u643"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_02owk"]
render_priority = 0
shader = ExtResource("4_02owk")
shader_parameter/Scale = 1.9343237
shader_parameter/Metallic = 0.94
shader_parameter/Roughness = 0.5
shader_parameter/Specular = 0.5
[sub_resource type="ArrayMesh" id="ArrayMesh_gn6s2"]
_surfaces = [{
"aabb": AABB(-0.5, -0.00427932, -1.12983, 1, 0.604281, 0.169856),
"format": 34896613377,
"index_count": 204,
"index_data": PackedByteArray("AAACAAEAAAADAAIADQACAAwADQABAAIAAwAJAAoAAwAAAAkACAAKAAkACAALAAoACAAHAAsACAAGAAcADgAMAA8ADgANAAwABAAPAAUABAAOAA8ABAARABAABAAFABEAEgAUABUAEgATABQAHwAUABMAHwAeABQAFQAbABIAFQAcABsAGgAcAB0AGgAbABwAGgAZABgAGgAdABkAIAAeAB8AIAAhAB4AFgAhACAAFgAXACEAFgAjABcAFgAiACMAAQASAAAAAQATABIAAwAUAAIAAwAVABQAAgAeAAwAAgAUAB4ACgAVAAMACgAcABUAAAAbAAkAAAASABsACQAaAAgACQAbABoACwAcAAoACwAdABwABwAdAAsABwAZAB0ACAAYAAYACAAaABgADAAhAA8ADAAeACEADQATAAEADQAfABMADgAfAA0ADgAgAB8ADwAXAAUADwAhABcAEAAWAAQAEAAiABYABAAgAA4ABAAWACAABQAjABEABQAXACMABgAZAAcABgAYABkAEQAiABAAEQAjACIA"),
"name": "BeltTopDown",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 36,
"vertex_data": PackedByteArray("AADMEI2IAAAAAPkeREsAAP//+R5ESwAA///MEI2IAAAAAIX3ukoAAP//hfe6SgAAAAASAEDhAAD//xIAQOEAAAAAKxC/4QAAAADNEIvfAAD//80Qi98AAP//KxC/4QAA//+KVhxLAAAAAIpWHEsAAAAAHfTESgAA//8d9MRKAAAAAIX3AAAAAP//hfcAAAAAAABFGVuTAAAAAPoiZmkAAP//+iJmaQAA//9FGVuTAAAAAP//yGgAAP///v/IaAAAAAAAAGX/AAD//wAAZf8AAAAAlhP+/wAAAABGGT7sAAD//0YZPuwAAP//lhP//wAA//+MVkFpAAAAAIxWQWkAAAAAIfToaAAA//8g9OhoAAAAAP//AAAAAP///v8AAAAA")
}]
blend_shape_mode = 0
[sub_resource type="ArrayMesh" id="ArrayMesh_2u643"]
resource_name = "RCSideGuard_RCSideGuard"
_surfaces = [{
"aabb": AABB(-0.5, -0.00427932, -1.12983, 1, 0.604281, 0.169856),
"attribute_data": PackedByteArray("lm///5Zv//+Wb///lm///110//8AABfVAAAX1V10//8AAHopXXRhVAAAeilddGFUlm9hVJZvYVSWb2FUiFkX1YhZF9WIWRfViFl6KYhZeimIWXopiFl6KV10//9ddP//XXT//110YVRddGFUXXRhVEx8//9MfP//d2X//5t+//93Zf//m37//3dlYVSafmFUd2VhVJp+YVRMfGFUTHxhVOQUeinkFHop5BR6KeQUF9XkFBfV5BQX1bpUF9W6VBfVulQX1bpUeim6VHopulR6KXdlF9V3ZRfVd2UX1Xdleil3ZXopd2V6KZZv//+Wb///lm///5Zv//9ddP//AAAX1QAAF9VddP//XXRhVAAAeikAAHopXXRhVJZvYVSWb2FUlm9hVJZvYVSIWRfViFkX1YhZF9WIWRfViFl6KYhZeimIWXopiFl6KV10//9ddP//XXT//110YVRddGFUXXRhVEx8//9MfP//THz//0x8//93Zf//m37//3dl//+bfv//mn5hVHdlYVSafmFUd2VhVEx8YVRMfGFUTHxhVEx8YVTkFHop5BR6KeQUeinkFBfV5BQX1eQUF9W6VBfVulQX1bpUF9W6VBfVulR6KbpUeim6VHopulR6KXdlF9V3ZRfVd2UX1Xdleil3ZXopd2V6KQ=="),
"format": 34896613399,
"index_count": 204,
"index_data": PackedByteArray("AgAJAAcAAgAMAAkALAAIACgALAAGAAgADAAgACIADAADACAAHQAjACEAHQAmACMAHQAaACYAHQAYABoALwApADEALwAtACkAEQAyABMAEQAwADIAEAA3ADUAEAASADcAPQBCAEYAPQBBAEIAbQBDAEAAbQBpAEMARwBeADwARwBhAF4AWgBgAGUAWgBfAGAAWwBWAFQAWwBkAFYAcQBoAGwAcQByAGgATABzAHAATABPAHMATQB6AE4ATQB4AHoABAA7AAAABAA+ADsADgBFAAsADgBIAEUACgBqACoACgBEAGoAJABJAA0AJABjAEkAAQBcAB4AAQA6AFwAHwBYABwAHwBdAFgAJwBiACUAJwBnAGIAGwBmACcAGwBXAGYAHABSABYAHABZAFIAKgB0ADMAKgBqAHQAKwA/AAUAKwBrAD8ALgBrACsALgBuAGsAMwBQABQAMwB1AFAANABKAA8ANAB2AEoADwBvAC4ADwBLAG8AFQB7ADkAFQBRAHsAFwBVABkAFwBTAFUAOAB3ADYAOAB5AHcA"),
"material": SubResource("ShaderMaterial_02owk"),
"name": "BeltTopDown",
"primitive": 3,
"uv_scale": Vector4(0, 0, 0, 0),
"vertex_count": 124,
"vertex_data": PackedByteArray("AADMEI2IH88AAMwQjYgdwwAAzBCNiNjdAADMEI2I1t0AAPkeREu11gAA+R5ES+jfAAD5HkRLVPMAAPkeREtU8///+R5ES1Tz///5HkRLVPP///keREvo3///+R5ES7XW///MEI2I1t3//8wQjYgdw///zBCNiCHPAACF97pKqaUAAIX3ukqf6QAAhfe6SqDp//+F97pKn+n//4X3ukqg6f//hfe6Sqml//+F97pKqaUAABIAQOH/vwAAEgBA4VjAAAASAEDhv////xIAQOFYwP//EgBA4b////8SAEDh/78AACsQv+GqowAAKxC/4QP1AADNEIvf4rQAAM0Qi9/itAAAzRCL30DfAADNEIvfQN///80Qi99A3///zRCL30Df///NEIvf4rT//80Qi9/itP//KxC/4QP1//8rEL/hqqP//4pWHEv5////ilYcS/v///+KVhxL/78AAIpWHEv/vwAAilYcS/n/AACKVhxL+/8AAB30xEqiqgAAHfTESvH/AAAd9MRK8v///x30xErx////HfTESvL///8d9MRKoqoAAIX3AAD/vwAAhfcAAFTVAACF9wAA/////4X3AABU1f//hfcAAP////+F9wAA/78AAEUZW5Pk3AAARRlbk8ulAABFGVuT2d0AAEUZW5PBzQAA+iJmaZXQAAD6ImZpfrcAAPoiZmnzwQAA+iJmacPP///6ImZp88H///oiZmnwwf//+iJmaX63///6ImZpldD//0UZW5Pgwv//RRlbk8HN//9FGVuTzaX//0UZW5Pk3AAA///IaJ/pAAD//8ho5L8AAP//yGjrxQAA///IaALG///+/8hon+n///7/yGgBxv///v/IaOS////+/8hon+kAAAAAZf//vwAAAABl/1jAAAAAAGX//7///wAAZf9YwP//AABl//+///8AAGX//78AAJYT/v+B1AAAlhP+/z3AAACWE/7/d8EAAJYT/v+awQAARhk+7EHfAABGGT7sX6sAAEYZPuyqzAAARhk+7GjB//9GGT7sqcz//0YZPuxD3///Rhk+7F6r//9GGT7sQd///5YT//93wf//lhP//4LM//+WE///PcD//5YT//+B1P//jFZBaf+///+MVkFp/7///4xWQWn/vwAAjFZBaf+/AACMVkFp/78AAIxWQWn/vwAAIfToaP+/AAAh9Oho/78AACH06Gj/vwAAIfToaP+///8g9Oho/7///yD06Gj/v///IPToaP+///8g9Oho/78AAP//AAD/vwAA//8AAP//AAD//wAAVNX///7/AAD//////v8AAFTV///+/wAA/79YOle6EjUStalQqVCoUKhQMD4wvuBn4Od0RnRGdEZ0RnRGdEZ0RnRG4GceGDA+zkGoUKhQEjXsSlo6pEWx0Eyv/0r/Sv9K/0r/Sv9K/0r/SrHQslCx0LJQ/3///wAA/3/cv9y/AAD/f9y/3L//fwAAzq0v0qVFpUVoypa1aMqWtfNP80/yT/JP80/zT/JP8k9oymhKaMpoSqVFpUXOrc8tAkACQAFAAUD/fwAA/3///wJAAkABQAFA/3///wdAB0AGQAZAB0AHQAZABkD/fwAA/3///1RVVFX///9/VFVUVf///3//fwAAPZ/B4JROk86t3lcvKO3NKKHIXLcCMwGzO+wp7IDwdyuHz0YR1hPEEwIz/UyhyKJIltOAFNPKayWJTnUxPZ89H/9///+MJYulEx3eHA+6CB3+6f80JuPw4owlc1r/fwAA/3///wAA/3+LAHP/AAD/f4sAc///fwAAIcLdvVMzUrNQ03APwBGKEvJ/8v+XPZa9AMmBJPnSJw8o8h4pGOANMJg9Z0LyfwwAb+057t7x4ChTM6xMIcIhQvX/CQDx/w0A/38AAP9////1/wkA8f8NAPU/9L8JwPS/uP8bAB8ACwDz/9//4/9GAPU/CkAJwApA/3///////39U1aoq////f1TVqir/fwAA")
}]
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_gn6s2")
[node name="Simulation" type="Node3D"]
[node name="Building" parent="." instance=ExtResource("1_2vilj")]
metadata/edit_lock = true
metadata/edit_group = true
[node name="SideGuard" parent="." instance=ExtResource("3_3lj72")]
transform = Transform3D(1.9343237, 0, 0, 0, 5.1363015, 0, 0, 0, 15.127822, -2.098621, -3.0168223, 22.859678)
mesh = SubResource("ArrayMesh_2u643")
length = 1.9343237
[node name="POWER_ON" parent="." instance=ExtResource("5_02owk")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.9744997, -0.38508332, 6.6063375)
text = "POWER ON"
toggle = true
pressed = true
lamp = true
button_color = Color(1, 1, 1, 1)
enable_comms = true
pushbutton_tag_name = "POWER_ON_PB"
lamp_tag_name = "POWER_ON_PB_LT"
[node name="MOTOR_FAULT" parent="." instance=ExtResource("5_02owk")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.3379102, -0.38508332, 6.6063375)
text = "MOTOR FAULT"
button_color = Color(0.9666667, 1, 0, 1)
enable_comms = true
pushbutton_tag_name = "MOTOR_FAULT_RESET_PB"
lamp_tag_name = "MOTOR_FAULT_RESET_PB_LT"
[node name="POWER_BRANCH_FAULT_RESET" parent="." instance=ExtResource("5_02owk")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.7244716, -0.38508332, 6.6063375)
text = "POWER BRANCH FAULT RESET"
button_color = Color(0.96862745, 1, 0, 1)
enable_comms = true
pushbutton_tag_name = "POWER_BRANCH_FAULT_RESET_PB"
lamp_tag_name = "POWER_BRANCH_FAULT_RESET_PB_LT"
[node name="LOW_AIR_PRESSURE" parent="." instance=ExtResource("5_02owk")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.1599557, -0.38508332, 6.6063375)
text = "LOW AIR PRESSURE"
button_color = Color(0, 0.049999706, 1, 1)
enable_comms = true
pushbutton_tag_name = "LOW_AIR_PRESSURE_RESET_PB"
lamp_tag_name = "LOW_AIR_PRESSURE_RESET_PB_LT"
[node name="E-STOP_ACTUATED" parent="." instance=ExtResource("5_02owk")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.9744997, -0.9958613, 6.6063375)
text = "E-STOP ACTUATED"
enable_comms = true
pushbutton_tag_name = "E_STOP_ACTUATED_PB"
lamp_tag_name = "E_STOP_ACTUATED_PB_LT"
[node name="START" parent="." instance=ExtResource("5_02owk")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.3379102, -0.9958613, 6.6063375)
text = "START"
button_color = Color(5.7997554e-06, 0.68136346, 0.058624905, 1)
enable_comms = true
pushbutton_tag_name = "START_PB"
lamp_tag_name = "START_PB_LT"
[node name="JAM_RESTART" parent="." instance=ExtResource("5_02owk")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.1599557, -0.9958613, 6.6063375)
text = "JAM RESTART"
button_color = Color(1, 1, 1, 1)
enable_comms = true
pushbutton_tag_name = "JAM_RESTART_PB"
lamp_tag_name = "JAM_RESTART_PB_LT"
[node name="EMERGENCY_STOP" parent="." instance=ExtResource("5_02owk")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.9744997, -1.6067358, 6.6063375)
text = "EMERGENCY STOP"
toggle = true
normally_closed = true
enable_comms = true
pushbutton_tag_name = "EMERGENCY_STOP_PB"
lamp_tag_name = "EMERGENCY_STOP_PB_LT"
[node name="STOP" parent="." instance=ExtResource("5_02owk")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.3379102, -1.6067358, 6.6063375)
normally_closed = true
enable_comms = true
pushbutton_tag_name = "STOP_PB"
lamp_tag_name = "STOP_PB_LT"
[node name="BATTERY_FAULT" parent="." instance=ExtResource("5_02owk")]
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -1.6423613, -0.67535853, 6.487621)
text = "BATTERY FAULT"
toggle = true
enable_comms = true
pushbutton_tag_name = "UPS_BATTERY_FAULT_PB"
lamp_tag_name = "UPS_BATTERY_FAULT_PB_LT"
[node name="ON_BATTERY" parent="." instance=ExtResource("5_02owk")]
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -2.1884327, -1.5352063, 6.487621)
text = "ON BATTERY"
toggle = true
enable_comms = true
pushbutton_tag_name = "ON_BATTERY_PB"
lamp_tag_name = "ON_BATTERY_PB_LT"
[node name="UPS_BATTARY_LOW" parent="." instance=ExtResource("5_02owk")]
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -2.4660864, -0.5395664, 6.487621)
text = "UPS BATTERY LOW"
toggle = true
enable_comms = true
pushbutton_tag_name = "UPS_BATTERY_LOW_PB"
lamp_tag_name = "UPS_BATTERY_LOW_PB_LT"
[node name="NAT_SWITCH" parent="." instance=ExtResource("5_02owk")]
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -3.0257194, -1.6492424, 6.487621)
text = "NAT SWITCH"
toggle = true
enable_comms = true
pushbutton_tag_name = "NAT_SWITCH_PB"
lamp_tag_name = "NAT_SWITCH_PB_LT"
[node name="FIRE_INTERFACE" parent="." instance=ExtResource("5_02owk")]
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -1.2769504, -1.3426788, 6.487621)
text = "FIRE INTERFACE"
toggle = true
normally_closed = true
lamp = true
enable_comms = true
pushbutton_tag_name = "FIRE_INTERFACE_PB"
lamp_tag_name = "FIRE_INTERFACE_PB_LT"
[node name="Node" type="Node" parent="."]
script = ExtResource("5_2u643")

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RSLogix5000Content SchemaRevision="1.0" SoftwareRevision="36.00" TargetName="AOI_FLIP_FLOP" TargetType="AddOnInstructionDefinition" TargetRevision="1.0 " TargetLastEdited="2025-05-21T10:05:03.350Z" ContainsContext="true" ExportDate="Wed Jun 25 19:04:27 2025" ExportOptions="References NoRawData L5KData DecoratedData Context Dependencies ForceProtectedEncoding AllProjDocTrans">
<RSLogix5000Content SchemaRevision="1.0" SoftwareRevision="36.00" TargetName="AOI_FLIP_FLOP" TargetType="AddOnInstructionDefinition" TargetRevision="1.0 " TargetLastEdited="2025-05-21T10:05:03.350Z" ContainsContext="true" ExportDate="Tue Jul 29 14:54:00 2025" ExportOptions="References NoRawData L5KData DecoratedData Context Dependencies ForceProtectedEncoding AllProjDocTrans">
<Controller Use="Context" Name="MCM">
<DataTypes Use="Context">
</DataTypes>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--MAIN CONTROL MODULE-->
<RSLogix5000Content SchemaRevision="1.0" SoftwareRevision="36.00" TargetName="AOI_MCM" TargetType="AddOnInstructionDefinition" TargetRevision="1.0 " TargetLastEdited="2025-06-25T14:19:05.313Z" ContainsContext="true" ExportDate="Wed Jun 25 19:04:54 2025" ExportOptions="References NoRawData L5KData DecoratedData Context Dependencies ForceProtectedEncoding AllProjDocTrans">
<RSLogix5000Content SchemaRevision="1.0" SoftwareRevision="36.00" TargetName="AOI_MCM" TargetType="AddOnInstructionDefinition" TargetRevision="1.0 " TargetLastEdited="2025-07-11T10:00:19.267Z" ContainsContext="true" ExportDate="Tue Jul 29 14:53:55 2025" ExportOptions="References NoRawData L5KData DecoratedData Context Dependencies ForceProtectedEncoding AllProjDocTrans">
<Controller Use="Context" Name="MCM">
<DataTypes Use="Context">
<DataType Name="UDT_ALARMS_MCM" Family="NoFamily" Class="User">
@ -122,6 +122,11 @@ Faulted]]>
<Member Name="Communication_Faulted" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZUDT_CTRL_M3" BitNumber="7" ExternalAccess="Read/Write"/>
<Member Name="ZZZZZZZZZZUDT_CTRL_M12" DataType="SINT" Dimension="0" Radix="Decimal" Hidden="true" ExternalAccess="Read/Write"/>
<Member Name="Setup_Motor_Speeds" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZUDT_CTRL_M12" BitNumber="0" ExternalAccess="Read/Write"/>
<Member Name="System_Start_Requested" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZUDT_CTRL_M12" BitNumber="1" ExternalAccess="Read/Write">
<Description>
<![CDATA[System Start Requested]]>
</Description>
</Member>
</Members>
</DataType>
<DataType Name="UDT_HMI_MCM" Family="NoFamily" Class="User">
@ -264,7 +269,7 @@ Faulted]]>
</Routine>
</Routines>
</AddOnInstructionDefinition>
<AddOnInstructionDefinition Use="Target" Name="AOI_MCM" Revision="1.0" Vendor="Automation Standard" ExecutePrescan="true" ExecutePostscan="false" ExecuteEnableInFalse="false" CreatedDate="2018-11-09T20:08:51.991Z" CreatedBy="Rob-PC\Rob" EditedDate="2025-06-25T14:19:05.313Z" EditedBy="LCIBATUMI\beka.makharadze"
<AddOnInstructionDefinition Use="Target" Name="AOI_MCM" Revision="1.0" Vendor="Automation Standard" ExecutePrescan="true" ExecutePostscan="false" ExecuteEnableInFalse="false" CreatedDate="2018-11-09T20:08:51.991Z" CreatedBy="Rob-PC\Rob" EditedDate="2025-07-11T10:00:19.267Z" EditedBy="LCIBATUMI\ilia.gurielidze"
SoftwareRevision="v36.00">
<Description>
<![CDATA[MAIN CONTROL MODULE]]>
@ -342,10 +347,10 @@ Faulted]]>
<![CDATA[Emergency Stop PushButton Input 1]]>
</Description>
<DefaultData Format="L5K">
<![CDATA[1]]>
<![CDATA[0]]>
</DefaultData>
<DefaultData Format="Decorated">
<DataValue DataType="BOOL" Radix="Decimal" Value="1"/>
<DataValue DataType="BOOL" Radix="Decimal" Value="0"/>
</DefaultData>
</Parameter>
<Parameter Name="EStop_PB_I_CH2" TagType="Base" DataType="BOOL" Usage="Input" Radix="Decimal" Required="true" Visible="true" ExternalAccess="Read/Write">
@ -353,10 +358,10 @@ Faulted]]>
<![CDATA[Emergency Stop PushButton Input 2]]>
</Description>
<DefaultData Format="L5K">
<![CDATA[1]]>
<![CDATA[0]]>
</DefaultData>
<DefaultData Format="Decorated">
<DataValue DataType="BOOL" Radix="Decimal" Value="1"/>
<DataValue DataType="BOOL" Radix="Decimal" Value="0"/>
</DefaultData>
</Parameter>
<Parameter Name="Stop_PB_I" TagType="Base" DataType="BOOL" Usage="Input" Radix="Decimal" Required="true" Visible="true" ExternalAccess="Read/Write">
@ -680,6 +685,104 @@ Faulted]]>
<Routine Name="Logic" Type="RLL">
<RLLContent>
<Rung Number="0" Type="N">
<Comment>
<![CDATA[MCM Main Control Module
This module acts as the central logbook and primary interfac for the subsystem.
Every AOI that detects a fault concatenates an explanatory string ( “<Device> — <Fault Text>” ) 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.
]]>
</Comment>
<Text>
<![CDATA[[COP(CTRL.CMD.Log,CTRL.STS.Log,1) MOVE(CTRL.CMD.Log_Quantity,CTRL.STS.Log_Quantity) ,XIC(CTRL.CMD.Acknowledge_Log) COP(CTRL.CMD.Log,CTRL.STS.Acknowledge_Log,1) ,XIC(CTRL.CMD.Unacknowledge_All_Logs) OTE(CTRL.STS.Unacknowledge_All_Logs) ];]]>
</Text>
@ -756,60 +859,65 @@ Faulted]]>
</Rung>
<Rung Number="15" Type="N">
<Text>
<![CDATA[XIC(HMI.Setup_Motor_Speeds)OTE(CTRL.STS.Setup_Motor_Speeds);]]>
<![CDATA[XIC(Start_PB_I)OTE(CTRL.STS.System_Start_Requested);]]>
</Text>
</Rung>
<Rung Number="16" Type="N">
<Text>
<![CDATA[[XIC(Motor_Fault_Reset_PB_I) ,XIC(HMI.Motor_Fault_Reset_PB) ]OTE(CTRL.STS.VFD_Fault_Reset_Requested);]]>
<![CDATA[XIC(HMI.Setup_Motor_Speeds)OTE(CTRL.STS.Setup_Motor_Speeds);]]>
</Text>
</Rung>
<Rung Number="17" Type="N">
<Text>
<![CDATA[[XIC(Power_Branch_Fault_Reset_PB_I) ,XIC(HMI.Power_Branch_Fault_Reset_PB) ]OTE(CTRL.STS.Power_Branch_Fault_Reset_Requested);]]>
<![CDATA[[XIC(Motor_Fault_Reset_PB_I) ,XIC(HMI.Motor_Fault_Reset_PB) ]OTE(CTRL.STS.VFD_Fault_Reset_Requested);]]>
</Text>
</Rung>
<Rung Number="18" Type="N">
<Text>
<![CDATA[[XIC(Low_Air_Pressure_Reset_PB_I) ,XIC(HMI.Low_Air_Pressure_Reset_PB) ]OTE(CTRL.STS.Low_Air_Pressure_Fault_Reset_Requested);]]>
<![CDATA[[XIC(Power_Branch_Fault_Reset_PB_I) ,XIC(HMI.Power_Branch_Fault_Reset_PB) ]OTE(CTRL.STS.Power_Branch_Fault_Reset_Requested);]]>
</Text>
</Rung>
<Rung Number="19" Type="N">
<Text>
<![CDATA[[XIC(Jam_Restart_PB_I) ,XIC(HMI.Jam_Restart_PB) ]OTE(CTRL.STS.Jam_Reset_Requested);]]>
<![CDATA[[XIC(Low_Air_Pressure_Reset_PB_I) ,XIC(HMI.Low_Air_Pressure_Reset_PB) ]OTE(CTRL.STS.Low_Air_Pressure_Fault_Reset_Requested);]]>
</Text>
</Rung>
<Rung Number="20" Type="N">
<Text>
<![CDATA[[XIO(CTRL.CMD.VFD_Faulted) XIC(Motor_Was_Faulted) ,XIC(CTRL.CMD.VFD_Faulted) AOI_FLIP_FLOP(Motor_Fault_Flip_Flop,500,500) ]OTE(Motor_Fault_Reset_PB_LT_O);]]>
<![CDATA[[XIC(Jam_Restart_PB_I) ,XIC(HMI.Jam_Restart_PB) ]OTE(CTRL.STS.Jam_Reset_Requested);]]>
</Text>
</Rung>
<Rung Number="21" Type="N">
<Text>
<![CDATA[[XIC(Jam_Fault) ,XIC(Encoder_Fault) AOI_FLIP_FLOP(Encoder_Fault_FlipFlop,500,500) ]OTE(Jam_Restart_PB_LT_O);]]>
<![CDATA[[XIO(CTRL.CMD.VFD_Faulted) XIC(Motor_Was_Faulted) ,XIC(CTRL.CMD.VFD_Faulted) AOI_FLIP_FLOP(Motor_Fault_Flip_Flop,500,500) ]OTE(Motor_Fault_Reset_PB_LT_O);]]>
</Text>
</Rung>
<Rung Number="22" Type="N">
<Text>
<![CDATA[[XIC(CTRL.CMD.EStop_Actuated) AOI_FLIP_FLOP(EStopped_FlipFlop,500,500) ,XIO(CTRL.CMD.EStop_Actuated) XIC(EStop_Was_Actuated) ]OTE(EStop_Actuated_LT_O);]]>
<![CDATA[[XIC(Jam_Fault) ,XIC(Encoder_Fault) AOI_FLIP_FLOP(Encoder_Fault_FlipFlop,500,500) ]OTE(Jam_Restart_PB_LT_O);]]>
</Text>
</Rung>
<Rung Number="23" Type="N">
<Text>
<![CDATA[[XIC(CTRL.CMD.Low_Air_Pressure_Fault) AOI_FLIP_FLOP(Low_Air_Pressure_FlipFlop,500,500) ,XIO(CTRL.CMD.Low_Air_Pressure_Fault) XIC(Low_Air_Pressure_Fault_Was_Present) ]OTE(Low_Air_Pressure_Reset_PB_LT_O);]]>
<![CDATA[[XIC(CTRL.CMD.EStop_Actuated) AOI_FLIP_FLOP(EStopped_FlipFlop,500,500) ,XIO(CTRL.CMD.EStop_Actuated) XIC(EStop_Was_Actuated) ]OTE(EStop_Actuated_LT_O);]]>
</Text>
</Rung>
<Rung Number="24" Type="N">
<Text>
<![CDATA[[XIC(CTRL.CMD.Power_Branch_Fault) AOI_FLIP_FLOP(Power_Branch_Fault_FlipFlop,500,500) ,XIO(CTRL.CMD.Power_Branch_Fault) XIC(Power_Branch_Was_Faulted) ]OTE(Power_Branch_Fault_Reset_PB_LT_O);]]>
<![CDATA[[XIC(CTRL.CMD.Low_Air_Pressure_Fault) AOI_FLIP_FLOP(Low_Air_Pressure_FlipFlop,500,500) ,XIO(CTRL.CMD.Low_Air_Pressure_Fault) XIC(Low_Air_Pressure_Fault_Was_Present) ]OTE(Low_Air_Pressure_Reset_PB_LT_O);]]>
</Text>
</Rung>
<Rung Number="25" Type="N">
<Text>
<![CDATA[XIC(System_Started)OTE(Start_PB_LT_O);]]>
<![CDATA[[XIC(CTRL.CMD.Power_Branch_Fault) AOI_FLIP_FLOP(Power_Branch_Fault_FlipFlop,500,500) ,XIO(CTRL.CMD.Power_Branch_Fault) XIC(Power_Branch_Was_Faulted) ]OTE(Power_Branch_Fault_Reset_PB_LT_O);]]>
</Text>
</Rung>
<Rung Number="26" Type="N">
<Text>
<![CDATA[XIC(System_Started)OTE(Start_PB_LT_O);]]>
</Text>
</Rung>
<Rung Number="27" Type="N">
<Comment>
<![CDATA[ALARMS
]]>
@ -818,172 +926,172 @@ Faulted]]>
<![CDATA[XIC(Start_PB_I)OTE(HMI.Alarm.Start_PB_Pressed);]]>
</Text>
</Rung>
<Rung Number="27" Type="N">
<Rung Number="28" Type="N">
<Text>
<![CDATA[XIO(Stop_PB_I)OTE(HMI.Alarm.Stop_PB_Pressed);]]>
</Text>
</Rung>
<Rung Number="28" Type="N">
<Rung Number="29" Type="N">
<Text>
<![CDATA[XIC(Motor_Fault_Reset_PB_I)OTE(HMI.Alarm.Motor_Fault_Reset_PB_Pressed);]]>
</Text>
</Rung>
<Rung Number="29" Type="N">
<Rung Number="30" Type="N">
<Text>
<![CDATA[XIC(Jam_Restart_PB_I)OTE(HMI.Alarm.Jam_Restart_PB_Pressed);]]>
</Text>
</Rung>
<Rung Number="30" Type="N">
<Rung Number="31" Type="N">
<Text>
<![CDATA[XIC(Low_Air_Pressure_Reset_PB_I)OTE(HMI.Alarm.Low_Air_Pressure_Reset_PB_Pressed);]]>
</Text>
</Rung>
<Rung Number="31" Type="N">
<Rung Number="32" Type="N">
<Text>
<![CDATA[XIC(Power_Branch_Fault_Reset_PB_I)OTE(HMI.Alarm.Power_Branch_Fault_Reset_PB_Pressed);]]>
</Text>
</Rung>
<Rung Number="32" Type="N">
<Rung Number="33" Type="N">
<Text>
<![CDATA[XIC(UPS_Battery_Fault)OTE(HMI.Alarm.UPS_Battery_Fault);]]>
</Text>
</Rung>
<Rung Number="33" Type="N">
<Rung Number="34" Type="N">
<Text>
<![CDATA[XIC(On_UPS_Battery)OTE(HMI.Alarm.On_UPS_Battery);]]>
</Text>
</Rung>
<Rung Number="34" Type="N">
<Rung Number="35" Type="N">
<Text>
<![CDATA[XIC(UPS_Battery_Low)OTE(HMI.Alarm.UPS_Battery_Low);]]>
</Text>
</Rung>
<Rung Number="35" Type="N">
<Rung Number="36" Type="N">
<Text>
<![CDATA[XIC(NAT_Switch_Fault)OTE(HMI.Alarm.NAT_Switch_Fault);]]>
</Text>
</Rung>
<Rung Number="36" Type="N">
<Text>
<![CDATA[XIO(Fire_Relay_De_Energized)OTE(HMI.Alarm.Fire_Relay_De_Energized);]]>
</Text>
</Rung>
<Rung Number="37" Type="N">
<Text>
<![CDATA[XIC(EStopped_Locally)OTE(HMI.Alarm.EStopped_Locally);]]>
<![CDATA[XIC(Fire_Relay_De_Energized)OTE(HMI.Alarm.Fire_Relay_De_Energized);]]>
</Text>
</Rung>
<Rung Number="38" Type="N">
<Text>
<![CDATA[XIC(EStop_Actuated_LT_O)OTE(HMI.EStop_Actuated_LT);]]>
<![CDATA[XIC(EStopped_Locally)OTE(HMI.Alarm.EStopped_Locally);]]>
</Text>
</Rung>
<Rung Number="39" Type="N">
<Text>
<![CDATA[XIC(EStopped_Locally)OTE(HMI.Local_Estop_LT);]]>
<![CDATA[XIC(EStop_Actuated_LT_O)OTE(HMI.EStop_Actuated_LT);]]>
</Text>
</Rung>
<Rung Number="40" Type="N">
<Text>
<![CDATA[XIO(Start_PB_LT_O)MOVE(1,HMI.Start_PB_STATE);]]>
<![CDATA[XIC(EStopped_Locally)OTE(HMI.Local_Estop_LT);]]>
</Text>
</Rung>
<Rung Number="41" Type="N">
<Text>
<![CDATA[XIC(Start_PB_LT_O)MOVE(2,HMI.Start_PB_STATE);]]>
<![CDATA[XIO(Start_PB_LT_O)MOVE(1,HMI.Start_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="42" Type="N">
<Text>
<![CDATA[[XIC(Start_PB_I) ,XIC(HMI.Start_PB) ]XIC(Start_PB_LT_O)MOVE(3,HMI.Start_PB_STATE);]]>
<![CDATA[XIC(Start_PB_LT_O)MOVE(2,HMI.Start_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="43" Type="N">
<Text>
<![CDATA[[XIC(Start_PB_I) ,XIC(HMI.Start_PB) ]XIO(Start_PB_LT_O)MOVE(4,HMI.Start_PB_STATE);]]>
<![CDATA[[XIC(Start_PB_I) ,XIC(HMI.Start_PB) ]XIC(Start_PB_LT_O)MOVE(3,HMI.Start_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="44" Type="N">
<Text>
<![CDATA[XIO(Motor_Fault_Reset_PB_LT_O)MOVE(1,HMI.Motor_Fault_Reset_PB_STATE);]]>
<![CDATA[[XIC(Start_PB_I) ,XIC(HMI.Start_PB) ]XIO(Start_PB_LT_O)MOVE(4,HMI.Start_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="45" Type="N">
<Text>
<![CDATA[XIC(Motor_Fault_Reset_PB_LT_O)MOVE(2,HMI.Motor_Fault_Reset_PB_STATE);]]>
<![CDATA[XIO(Motor_Fault_Reset_PB_LT_O)MOVE(1,HMI.Motor_Fault_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="46" Type="N">
<Text>
<![CDATA[[XIC(Motor_Fault_Reset_PB_I) ,XIC(HMI.Motor_Fault_Reset_PB) ]XIC(Motor_Fault_Reset_PB_LT_O)MOVE(3,HMI.Motor_Fault_Reset_PB_STATE);]]>
<![CDATA[XIC(Motor_Fault_Reset_PB_LT_O)MOVE(2,HMI.Motor_Fault_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="47" Type="N">
<Text>
<![CDATA[[XIC(Motor_Fault_Reset_PB_I) ,XIC(HMI.Motor_Fault_Reset_PB) ]XIO(Motor_Fault_Reset_PB_LT_O)MOVE(4,HMI.Motor_Fault_Reset_PB_STATE);]]>
<![CDATA[[XIC(Motor_Fault_Reset_PB_I) ,XIC(HMI.Motor_Fault_Reset_PB) ]XIC(Motor_Fault_Reset_PB_LT_O)MOVE(3,HMI.Motor_Fault_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="48" Type="N">
<Text>
<![CDATA[XIO(Power_Branch_Fault_Reset_PB_LT_O)MOVE(1,HMI.Power_Branch_Fault_Reset_PB_STATE);]]>
<![CDATA[[XIC(Motor_Fault_Reset_PB_I) ,XIC(HMI.Motor_Fault_Reset_PB) ]XIO(Motor_Fault_Reset_PB_LT_O)MOVE(4,HMI.Motor_Fault_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="49" Type="N">
<Text>
<![CDATA[XIC(Power_Branch_Fault_Reset_PB_LT_O)MOVE(2,HMI.Power_Branch_Fault_Reset_PB_STATE);]]>
<![CDATA[XIO(Power_Branch_Fault_Reset_PB_LT_O)MOVE(1,HMI.Power_Branch_Fault_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="50" Type="N">
<Text>
<![CDATA[[XIC(Power_Branch_Fault_Reset_PB_I) ,XIC(HMI.Power_Branch_Fault_Reset_PB) ]XIC(Power_Branch_Fault_Reset_PB_LT_O)MOVE(3,HMI.Power_Branch_Fault_Reset_PB_STATE);]]>
<![CDATA[XIC(Power_Branch_Fault_Reset_PB_LT_O)MOVE(2,HMI.Power_Branch_Fault_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="51" Type="N">
<Text>
<![CDATA[[XIC(Power_Branch_Fault_Reset_PB_I) ,XIC(HMI.Power_Branch_Fault_Reset_PB) ]XIO(Power_Branch_Fault_Reset_PB_LT_O)MOVE(4,HMI.Power_Branch_Fault_Reset_PB_STATE);]]>
<![CDATA[[XIC(Power_Branch_Fault_Reset_PB_I) ,XIC(HMI.Power_Branch_Fault_Reset_PB) ]XIC(Power_Branch_Fault_Reset_PB_LT_O)MOVE(3,HMI.Power_Branch_Fault_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="52" Type="N">
<Text>
<![CDATA[XIO(Low_Air_Pressure_Reset_PB_LT_O)MOVE(1,HMI.Low_Air_Pressure_Reset_PB_STATE);]]>
<![CDATA[[XIC(Power_Branch_Fault_Reset_PB_I) ,XIC(HMI.Power_Branch_Fault_Reset_PB) ]XIO(Power_Branch_Fault_Reset_PB_LT_O)MOVE(4,HMI.Power_Branch_Fault_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="53" Type="N">
<Text>
<![CDATA[XIC(Low_Air_Pressure_Reset_PB_LT_O)MOVE(2,HMI.Low_Air_Pressure_Reset_PB_STATE);]]>
<![CDATA[XIO(Low_Air_Pressure_Reset_PB_LT_O)MOVE(1,HMI.Low_Air_Pressure_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="54" Type="N">
<Text>
<![CDATA[[XIC(Low_Air_Pressure_Reset_PB_I) ,XIC(HMI.Low_Air_Pressure_Reset_PB) ]XIC(Low_Air_Pressure_Reset_PB_LT_O)MOVE(3,HMI.Low_Air_Pressure_Reset_PB_STATE);]]>
<![CDATA[XIC(Low_Air_Pressure_Reset_PB_LT_O)MOVE(2,HMI.Low_Air_Pressure_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="55" Type="N">
<Text>
<![CDATA[[XIC(Low_Air_Pressure_Reset_PB_I) ,XIC(HMI.Low_Air_Pressure_Reset_PB) ]XIO(Low_Air_Pressure_Reset_PB_LT_O)MOVE(4,HMI.Low_Air_Pressure_Reset_PB_STATE);]]>
<![CDATA[[XIC(Low_Air_Pressure_Reset_PB_I) ,XIC(HMI.Low_Air_Pressure_Reset_PB) ]XIC(Low_Air_Pressure_Reset_PB_LT_O)MOVE(3,HMI.Low_Air_Pressure_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="56" Type="N">
<Text>
<![CDATA[XIO(Jam_Restart_PB_LT_O)MOVE(1,HMI.Jam_Restart_PB_STATE);]]>
<![CDATA[[XIC(Low_Air_Pressure_Reset_PB_I) ,XIC(HMI.Low_Air_Pressure_Reset_PB) ]XIO(Low_Air_Pressure_Reset_PB_LT_O)MOVE(4,HMI.Low_Air_Pressure_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="57" Type="N">
<Text>
<![CDATA[XIC(Jam_Restart_PB_LT_O)MOVE(2,HMI.Jam_Restart_PB_STATE);]]>
<![CDATA[XIO(Jam_Restart_PB_LT_O)MOVE(1,HMI.Jam_Restart_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="58" Type="N">
<Text>
<![CDATA[[XIC(Jam_Restart_PB_I) ,XIC(HMI.Jam_Restart_PB) ]XIC(Jam_Restart_PB_LT_O)MOVE(3,HMI.Jam_Restart_PB_STATE);]]>
<![CDATA[XIC(Jam_Restart_PB_LT_O)MOVE(2,HMI.Jam_Restart_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="59" Type="N">
<Text>
<![CDATA[[XIC(Jam_Restart_PB_I) ,XIC(HMI.Jam_Restart_PB) ]XIO(Jam_Restart_PB_LT_O)MOVE(4,HMI.Jam_Restart_PB_STATE);]]>
<![CDATA[[XIC(Jam_Restart_PB_I) ,XIC(HMI.Jam_Restart_PB) ]XIC(Jam_Restart_PB_LT_O)MOVE(3,HMI.Jam_Restart_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="60" Type="N">
<Text>
<![CDATA[[XIC(Jam_Restart_PB_I) ,XIC(HMI.Jam_Restart_PB) ]XIO(Jam_Restart_PB_LT_O)MOVE(4,HMI.Jam_Restart_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="61" Type="N">
<Comment>
<![CDATA[STATES
@ -993,57 +1101,57 @@ Faulted]]>
<![CDATA[XIC(System_Started)MOVE(9,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="61" Type="N">
<Rung Number="62" Type="N">
<Text>
<![CDATA[XIO(System_Started)MOVE(0,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="62" Type="N">
<Rung Number="63" Type="N">
<Text>
<![CDATA[XIC(Motor_Was_Faulted)MOVE(1,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="63" Type="N">
<Rung Number="64" Type="N">
<Text>
<![CDATA[XIC(Power_Branch_Was_Faulted)MOVE(2,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="64" Type="N">
<Rung Number="65" Type="N">
<Text>
<![CDATA[XIC(Low_Air_Pressure_Fault_Was_Present)MOVE(3,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="65" Type="N">
<Rung Number="66" Type="N">
<Text>
<![CDATA[XIC(Encoder_Fault)MOVE(4,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="66" Type="N">
<Rung Number="67" Type="N">
<Text>
<![CDATA[XIC(Jam_Fault)MOVE(5,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="67" Type="N">
<Rung Number="68" Type="N">
<Text>
<![CDATA[XIC(Communication_Faulted)MOVE(6,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="68" Type="N">
<Rung Number="69" Type="N">
<Text>
<![CDATA[XIC(EStop_Was_Actuated)MOVE(7,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="69" Type="N">
<Rung Number="70" Type="N">
<Text>
<![CDATA[XIC(EStopped_Locally)MOVE(8,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="70" Type="N">
<Rung Number="71" Type="N">
<Text>
<![CDATA[FLL(0,CTRL.CMD,1);]]>
</Text>
</Rung>
<Rung Number="71" Type="N">
<Rung Number="72" Type="N">
<Text>
<![CDATA[OTU(HMI.Setup_Motor_Speeds)OTU(HMI.Motor_Fault_Reset_PB)OTU(HMI.Power_Branch_Fault_Reset_PB)OTU(HMI.Low_Air_Pressure_Reset_PB)OTU(HMI.Start_PB)OTU(HMI.Jam_Restart_PB)OTU(HMI.Stop_PB);]]>
</Text>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RSLogix5000Content SchemaRevision="1.0" SoftwareRevision="36.00" TargetName="MCM" TargetType="Controller" ContainsContext="false" ExportDate="Wed Jun 25 19:04:04 2025" ExportOptions="NoRawData L5KData DecoratedData ForceProtectedEncoding AllProjDocTrans">
<Controller Use="Target" Name="MCM" ProcessorType="Emulate 5570" MajorRev="36" MinorRev="11" TimeSlice="20" ShareUnusedTimeSlice="1" ProjectCreationDate="Wed Jun 25 15:55:50 2025" LastModifiedDate="Wed Jun 25 19:00:31 2025" SFCExecutionControl="CurrentActive" SFCRestartPosition="MostRecent"
<RSLogix5000Content SchemaRevision="1.0" SoftwareRevision="36.00" TargetName="MCM" TargetType="Controller" ContainsContext="false" ExportDate="Tue Jul 29 14:54:18 2025" ExportOptions="NoRawData L5KData DecoratedData ForceProtectedEncoding AllProjDocTrans">
<Controller Use="Target" Name="MCM" ProcessorType="Emulate 5570" MajorRev="36" MinorRev="11" TimeSlice="20" ShareUnusedTimeSlice="1" ProjectCreationDate="Tue Jul 29 14:42:23 2025" LastModifiedDate="Tue Jul 29 14:42:23 2025" SFCExecutionControl="CurrentActive" SFCRestartPosition="MostRecent"
SFCLastScan="DontScan" CommPath="Backplane\2" ProjectSN="16#7024_3ff1" MatchProjectToController="false" CanUseRPIFromProducer="false" InhibitAutomaticFirmwareUpdate="0" PassThroughConfiguration="EnabledWithAppend" DownloadProjectDocumentationAndExtendedProperties="true" DownloadProjectCustomProperties="true" ReportMinorOverflow="false">
<RedundancyInfo Enabled="false" KeepTestEditsOnSwitchOver="false" IOMemoryPadPercentage="90" DataTablePadPercentage="50"/>
<Security Code="0" ChangesToDetect="16#ffff_ffff_ffff_ffff"/>
@ -128,6 +128,11 @@ Faulted]]>
<Member Name="Communication_Faulted" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZUDT_CTRL_M3" BitNumber="7" ExternalAccess="Read/Write"/>
<Member Name="ZZZZZZZZZZUDT_CTRL_M12" DataType="SINT" Dimension="0" Radix="Decimal" Hidden="true" ExternalAccess="Read/Write"/>
<Member Name="Setup_Motor_Speeds" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZUDT_CTRL_M12" BitNumber="0" ExternalAccess="Read/Write"/>
<Member Name="System_Start_Requested" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZUDT_CTRL_M12" BitNumber="1" ExternalAccess="Read/Write">
<Description>
<![CDATA[System Start Requested]]>
</Description>
</Member>
</Members>
</DataType>
<DataType Name="UDT_HMI_MCM" Family="NoFamily" Class="User">
@ -278,7 +283,7 @@ Faulted]]>
</Routine>
</Routines>
</AddOnInstructionDefinition>
<AddOnInstructionDefinition Name="AOI_MCM" Revision="1.0" Vendor="Automation Standard" ExecutePrescan="true" ExecutePostscan="false" ExecuteEnableInFalse="false" CreatedDate="2018-11-09T20:08:51.991Z" CreatedBy="Rob-PC\Rob" EditedDate="2025-06-25T14:19:05.313Z" EditedBy="LCIBATUMI\beka.makharadze" SoftwareRevision="v36.00"
<AddOnInstructionDefinition Name="AOI_MCM" Revision="1.0" Vendor="Automation Standard" ExecutePrescan="true" ExecutePostscan="false" ExecuteEnableInFalse="false" CreatedDate="2018-11-09T20:08:51.991Z" CreatedBy="Rob-PC\Rob" EditedDate="2025-07-11T10:00:19.267Z" EditedBy="LCIBATUMI\ilia.gurielidze" SoftwareRevision="v36.00"
>
<Description>
<![CDATA[MAIN CONTROL MODULE]]>
@ -356,10 +361,10 @@ Faulted]]>
<![CDATA[Emergency Stop PushButton Input 1]]>
</Description>
<DefaultData Format="L5K">
<![CDATA[1]]>
<![CDATA[0]]>
</DefaultData>
<DefaultData Format="Decorated">
<DataValue DataType="BOOL" Radix="Decimal" Value="1"/>
<DataValue DataType="BOOL" Radix="Decimal" Value="0"/>
</DefaultData>
</Parameter>
<Parameter Name="EStop_PB_I_CH2" TagType="Base" DataType="BOOL" Usage="Input" Radix="Decimal" Required="true" Visible="true" ExternalAccess="Read/Write">
@ -367,10 +372,10 @@ Faulted]]>
<![CDATA[Emergency Stop PushButton Input 2]]>
</Description>
<DefaultData Format="L5K">
<![CDATA[1]]>
<![CDATA[0]]>
</DefaultData>
<DefaultData Format="Decorated">
<DataValue DataType="BOOL" Radix="Decimal" Value="1"/>
<DataValue DataType="BOOL" Radix="Decimal" Value="0"/>
</DefaultData>
</Parameter>
<Parameter Name="Stop_PB_I" TagType="Base" DataType="BOOL" Usage="Input" Radix="Decimal" Required="true" Visible="true" ExternalAccess="Read/Write">
@ -694,6 +699,104 @@ Faulted]]>
<Routine Name="Logic" Type="RLL">
<RLLContent>
<Rung Number="0" Type="N">
<Comment>
<![CDATA[MCM Main Control Module
This module acts as the central logbook and primary interfac for the subsystem.
Every AOI that detects a fault concatenates an explanatory string ( “<Device> — <Fault Text>” ) 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.
]]>
</Comment>
<Text>
<![CDATA[[COP(CTRL.CMD.Log,CTRL.STS.Log,1) MOVE(CTRL.CMD.Log_Quantity,CTRL.STS.Log_Quantity) ,XIC(CTRL.CMD.Acknowledge_Log) COP(CTRL.CMD.Log,CTRL.STS.Acknowledge_Log,1) ,XIC(CTRL.CMD.Unacknowledge_All_Logs) OTE(CTRL.STS.Unacknowledge_All_Logs) ];]]>
</Text>
@ -770,60 +873,65 @@ Faulted]]>
</Rung>
<Rung Number="15" Type="N">
<Text>
<![CDATA[XIC(HMI.Setup_Motor_Speeds)OTE(CTRL.STS.Setup_Motor_Speeds);]]>
<![CDATA[XIC(Start_PB_I)OTE(CTRL.STS.System_Start_Requested);]]>
</Text>
</Rung>
<Rung Number="16" Type="N">
<Text>
<![CDATA[[XIC(Motor_Fault_Reset_PB_I) ,XIC(HMI.Motor_Fault_Reset_PB) ]OTE(CTRL.STS.VFD_Fault_Reset_Requested);]]>
<![CDATA[XIC(HMI.Setup_Motor_Speeds)OTE(CTRL.STS.Setup_Motor_Speeds);]]>
</Text>
</Rung>
<Rung Number="17" Type="N">
<Text>
<![CDATA[[XIC(Power_Branch_Fault_Reset_PB_I) ,XIC(HMI.Power_Branch_Fault_Reset_PB) ]OTE(CTRL.STS.Power_Branch_Fault_Reset_Requested);]]>
<![CDATA[[XIC(Motor_Fault_Reset_PB_I) ,XIC(HMI.Motor_Fault_Reset_PB) ]OTE(CTRL.STS.VFD_Fault_Reset_Requested);]]>
</Text>
</Rung>
<Rung Number="18" Type="N">
<Text>
<![CDATA[[XIC(Low_Air_Pressure_Reset_PB_I) ,XIC(HMI.Low_Air_Pressure_Reset_PB) ]OTE(CTRL.STS.Low_Air_Pressure_Fault_Reset_Requested);]]>
<![CDATA[[XIC(Power_Branch_Fault_Reset_PB_I) ,XIC(HMI.Power_Branch_Fault_Reset_PB) ]OTE(CTRL.STS.Power_Branch_Fault_Reset_Requested);]]>
</Text>
</Rung>
<Rung Number="19" Type="N">
<Text>
<![CDATA[[XIC(Jam_Restart_PB_I) ,XIC(HMI.Jam_Restart_PB) ]OTE(CTRL.STS.Jam_Reset_Requested);]]>
<![CDATA[[XIC(Low_Air_Pressure_Reset_PB_I) ,XIC(HMI.Low_Air_Pressure_Reset_PB) ]OTE(CTRL.STS.Low_Air_Pressure_Fault_Reset_Requested);]]>
</Text>
</Rung>
<Rung Number="20" Type="N">
<Text>
<![CDATA[[XIO(CTRL.CMD.VFD_Faulted) XIC(Motor_Was_Faulted) ,XIC(CTRL.CMD.VFD_Faulted) AOI_FLIP_FLOP(Motor_Fault_Flip_Flop,500,500) ]OTE(Motor_Fault_Reset_PB_LT_O);]]>
<![CDATA[[XIC(Jam_Restart_PB_I) ,XIC(HMI.Jam_Restart_PB) ]OTE(CTRL.STS.Jam_Reset_Requested);]]>
</Text>
</Rung>
<Rung Number="21" Type="N">
<Text>
<![CDATA[[XIC(Jam_Fault) ,XIC(Encoder_Fault) AOI_FLIP_FLOP(Encoder_Fault_FlipFlop,500,500) ]OTE(Jam_Restart_PB_LT_O);]]>
<![CDATA[[XIO(CTRL.CMD.VFD_Faulted) XIC(Motor_Was_Faulted) ,XIC(CTRL.CMD.VFD_Faulted) AOI_FLIP_FLOP(Motor_Fault_Flip_Flop,500,500) ]OTE(Motor_Fault_Reset_PB_LT_O);]]>
</Text>
</Rung>
<Rung Number="22" Type="N">
<Text>
<![CDATA[[XIC(CTRL.CMD.EStop_Actuated) AOI_FLIP_FLOP(EStopped_FlipFlop,500,500) ,XIO(CTRL.CMD.EStop_Actuated) XIC(EStop_Was_Actuated) ]OTE(EStop_Actuated_LT_O);]]>
<![CDATA[[XIC(Jam_Fault) ,XIC(Encoder_Fault) AOI_FLIP_FLOP(Encoder_Fault_FlipFlop,500,500) ]OTE(Jam_Restart_PB_LT_O);]]>
</Text>
</Rung>
<Rung Number="23" Type="N">
<Text>
<![CDATA[[XIC(CTRL.CMD.Low_Air_Pressure_Fault) AOI_FLIP_FLOP(Low_Air_Pressure_FlipFlop,500,500) ,XIO(CTRL.CMD.Low_Air_Pressure_Fault) XIC(Low_Air_Pressure_Fault_Was_Present) ]OTE(Low_Air_Pressure_Reset_PB_LT_O);]]>
<![CDATA[[XIC(CTRL.CMD.EStop_Actuated) AOI_FLIP_FLOP(EStopped_FlipFlop,500,500) ,XIO(CTRL.CMD.EStop_Actuated) XIC(EStop_Was_Actuated) ]OTE(EStop_Actuated_LT_O);]]>
</Text>
</Rung>
<Rung Number="24" Type="N">
<Text>
<![CDATA[[XIC(CTRL.CMD.Power_Branch_Fault) AOI_FLIP_FLOP(Power_Branch_Fault_FlipFlop,500,500) ,XIO(CTRL.CMD.Power_Branch_Fault) XIC(Power_Branch_Was_Faulted) ]OTE(Power_Branch_Fault_Reset_PB_LT_O);]]>
<![CDATA[[XIC(CTRL.CMD.Low_Air_Pressure_Fault) AOI_FLIP_FLOP(Low_Air_Pressure_FlipFlop,500,500) ,XIO(CTRL.CMD.Low_Air_Pressure_Fault) XIC(Low_Air_Pressure_Fault_Was_Present) ]OTE(Low_Air_Pressure_Reset_PB_LT_O);]]>
</Text>
</Rung>
<Rung Number="25" Type="N">
<Text>
<![CDATA[XIC(System_Started)OTE(Start_PB_LT_O);]]>
<![CDATA[[XIC(CTRL.CMD.Power_Branch_Fault) AOI_FLIP_FLOP(Power_Branch_Fault_FlipFlop,500,500) ,XIO(CTRL.CMD.Power_Branch_Fault) XIC(Power_Branch_Was_Faulted) ]OTE(Power_Branch_Fault_Reset_PB_LT_O);]]>
</Text>
</Rung>
<Rung Number="26" Type="N">
<Text>
<![CDATA[XIC(System_Started)OTE(Start_PB_LT_O);]]>
</Text>
</Rung>
<Rung Number="27" Type="N">
<Comment>
<![CDATA[ALARMS
]]>
@ -832,172 +940,172 @@ Faulted]]>
<![CDATA[XIC(Start_PB_I)OTE(HMI.Alarm.Start_PB_Pressed);]]>
</Text>
</Rung>
<Rung Number="27" Type="N">
<Rung Number="28" Type="N">
<Text>
<![CDATA[XIO(Stop_PB_I)OTE(HMI.Alarm.Stop_PB_Pressed);]]>
</Text>
</Rung>
<Rung Number="28" Type="N">
<Rung Number="29" Type="N">
<Text>
<![CDATA[XIC(Motor_Fault_Reset_PB_I)OTE(HMI.Alarm.Motor_Fault_Reset_PB_Pressed);]]>
</Text>
</Rung>
<Rung Number="29" Type="N">
<Rung Number="30" Type="N">
<Text>
<![CDATA[XIC(Jam_Restart_PB_I)OTE(HMI.Alarm.Jam_Restart_PB_Pressed);]]>
</Text>
</Rung>
<Rung Number="30" Type="N">
<Rung Number="31" Type="N">
<Text>
<![CDATA[XIC(Low_Air_Pressure_Reset_PB_I)OTE(HMI.Alarm.Low_Air_Pressure_Reset_PB_Pressed);]]>
</Text>
</Rung>
<Rung Number="31" Type="N">
<Rung Number="32" Type="N">
<Text>
<![CDATA[XIC(Power_Branch_Fault_Reset_PB_I)OTE(HMI.Alarm.Power_Branch_Fault_Reset_PB_Pressed);]]>
</Text>
</Rung>
<Rung Number="32" Type="N">
<Rung Number="33" Type="N">
<Text>
<![CDATA[XIC(UPS_Battery_Fault)OTE(HMI.Alarm.UPS_Battery_Fault);]]>
</Text>
</Rung>
<Rung Number="33" Type="N">
<Rung Number="34" Type="N">
<Text>
<![CDATA[XIC(On_UPS_Battery)OTE(HMI.Alarm.On_UPS_Battery);]]>
</Text>
</Rung>
<Rung Number="34" Type="N">
<Rung Number="35" Type="N">
<Text>
<![CDATA[XIC(UPS_Battery_Low)OTE(HMI.Alarm.UPS_Battery_Low);]]>
</Text>
</Rung>
<Rung Number="35" Type="N">
<Rung Number="36" Type="N">
<Text>
<![CDATA[XIC(NAT_Switch_Fault)OTE(HMI.Alarm.NAT_Switch_Fault);]]>
</Text>
</Rung>
<Rung Number="36" Type="N">
<Text>
<![CDATA[XIO(Fire_Relay_De_Energized)OTE(HMI.Alarm.Fire_Relay_De_Energized);]]>
</Text>
</Rung>
<Rung Number="37" Type="N">
<Text>
<![CDATA[XIC(EStopped_Locally)OTE(HMI.Alarm.EStopped_Locally);]]>
<![CDATA[XIC(Fire_Relay_De_Energized)OTE(HMI.Alarm.Fire_Relay_De_Energized);]]>
</Text>
</Rung>
<Rung Number="38" Type="N">
<Text>
<![CDATA[XIC(EStop_Actuated_LT_O)OTE(HMI.EStop_Actuated_LT);]]>
<![CDATA[XIC(EStopped_Locally)OTE(HMI.Alarm.EStopped_Locally);]]>
</Text>
</Rung>
<Rung Number="39" Type="N">
<Text>
<![CDATA[XIC(EStopped_Locally)OTE(HMI.Local_Estop_LT);]]>
<![CDATA[XIC(EStop_Actuated_LT_O)OTE(HMI.EStop_Actuated_LT);]]>
</Text>
</Rung>
<Rung Number="40" Type="N">
<Text>
<![CDATA[XIO(Start_PB_LT_O)MOVE(1,HMI.Start_PB_STATE);]]>
<![CDATA[XIC(EStopped_Locally)OTE(HMI.Local_Estop_LT);]]>
</Text>
</Rung>
<Rung Number="41" Type="N">
<Text>
<![CDATA[XIC(Start_PB_LT_O)MOVE(2,HMI.Start_PB_STATE);]]>
<![CDATA[XIO(Start_PB_LT_O)MOVE(1,HMI.Start_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="42" Type="N">
<Text>
<![CDATA[[XIC(Start_PB_I) ,XIC(HMI.Start_PB) ]XIC(Start_PB_LT_O)MOVE(3,HMI.Start_PB_STATE);]]>
<![CDATA[XIC(Start_PB_LT_O)MOVE(2,HMI.Start_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="43" Type="N">
<Text>
<![CDATA[[XIC(Start_PB_I) ,XIC(HMI.Start_PB) ]XIO(Start_PB_LT_O)MOVE(4,HMI.Start_PB_STATE);]]>
<![CDATA[[XIC(Start_PB_I) ,XIC(HMI.Start_PB) ]XIC(Start_PB_LT_O)MOVE(3,HMI.Start_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="44" Type="N">
<Text>
<![CDATA[XIO(Motor_Fault_Reset_PB_LT_O)MOVE(1,HMI.Motor_Fault_Reset_PB_STATE);]]>
<![CDATA[[XIC(Start_PB_I) ,XIC(HMI.Start_PB) ]XIO(Start_PB_LT_O)MOVE(4,HMI.Start_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="45" Type="N">
<Text>
<![CDATA[XIC(Motor_Fault_Reset_PB_LT_O)MOVE(2,HMI.Motor_Fault_Reset_PB_STATE);]]>
<![CDATA[XIO(Motor_Fault_Reset_PB_LT_O)MOVE(1,HMI.Motor_Fault_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="46" Type="N">
<Text>
<![CDATA[[XIC(Motor_Fault_Reset_PB_I) ,XIC(HMI.Motor_Fault_Reset_PB) ]XIC(Motor_Fault_Reset_PB_LT_O)MOVE(3,HMI.Motor_Fault_Reset_PB_STATE);]]>
<![CDATA[XIC(Motor_Fault_Reset_PB_LT_O)MOVE(2,HMI.Motor_Fault_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="47" Type="N">
<Text>
<![CDATA[[XIC(Motor_Fault_Reset_PB_I) ,XIC(HMI.Motor_Fault_Reset_PB) ]XIO(Motor_Fault_Reset_PB_LT_O)MOVE(4,HMI.Motor_Fault_Reset_PB_STATE);]]>
<![CDATA[[XIC(Motor_Fault_Reset_PB_I) ,XIC(HMI.Motor_Fault_Reset_PB) ]XIC(Motor_Fault_Reset_PB_LT_O)MOVE(3,HMI.Motor_Fault_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="48" Type="N">
<Text>
<![CDATA[XIO(Power_Branch_Fault_Reset_PB_LT_O)MOVE(1,HMI.Power_Branch_Fault_Reset_PB_STATE);]]>
<![CDATA[[XIC(Motor_Fault_Reset_PB_I) ,XIC(HMI.Motor_Fault_Reset_PB) ]XIO(Motor_Fault_Reset_PB_LT_O)MOVE(4,HMI.Motor_Fault_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="49" Type="N">
<Text>
<![CDATA[XIC(Power_Branch_Fault_Reset_PB_LT_O)MOVE(2,HMI.Power_Branch_Fault_Reset_PB_STATE);]]>
<![CDATA[XIO(Power_Branch_Fault_Reset_PB_LT_O)MOVE(1,HMI.Power_Branch_Fault_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="50" Type="N">
<Text>
<![CDATA[[XIC(Power_Branch_Fault_Reset_PB_I) ,XIC(HMI.Power_Branch_Fault_Reset_PB) ]XIC(Power_Branch_Fault_Reset_PB_LT_O)MOVE(3,HMI.Power_Branch_Fault_Reset_PB_STATE);]]>
<![CDATA[XIC(Power_Branch_Fault_Reset_PB_LT_O)MOVE(2,HMI.Power_Branch_Fault_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="51" Type="N">
<Text>
<![CDATA[[XIC(Power_Branch_Fault_Reset_PB_I) ,XIC(HMI.Power_Branch_Fault_Reset_PB) ]XIO(Power_Branch_Fault_Reset_PB_LT_O)MOVE(4,HMI.Power_Branch_Fault_Reset_PB_STATE);]]>
<![CDATA[[XIC(Power_Branch_Fault_Reset_PB_I) ,XIC(HMI.Power_Branch_Fault_Reset_PB) ]XIC(Power_Branch_Fault_Reset_PB_LT_O)MOVE(3,HMI.Power_Branch_Fault_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="52" Type="N">
<Text>
<![CDATA[XIO(Low_Air_Pressure_Reset_PB_LT_O)MOVE(1,HMI.Low_Air_Pressure_Reset_PB_STATE);]]>
<![CDATA[[XIC(Power_Branch_Fault_Reset_PB_I) ,XIC(HMI.Power_Branch_Fault_Reset_PB) ]XIO(Power_Branch_Fault_Reset_PB_LT_O)MOVE(4,HMI.Power_Branch_Fault_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="53" Type="N">
<Text>
<![CDATA[XIC(Low_Air_Pressure_Reset_PB_LT_O)MOVE(2,HMI.Low_Air_Pressure_Reset_PB_STATE);]]>
<![CDATA[XIO(Low_Air_Pressure_Reset_PB_LT_O)MOVE(1,HMI.Low_Air_Pressure_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="54" Type="N">
<Text>
<![CDATA[[XIC(Low_Air_Pressure_Reset_PB_I) ,XIC(HMI.Low_Air_Pressure_Reset_PB) ]XIC(Low_Air_Pressure_Reset_PB_LT_O)MOVE(3,HMI.Low_Air_Pressure_Reset_PB_STATE);]]>
<![CDATA[XIC(Low_Air_Pressure_Reset_PB_LT_O)MOVE(2,HMI.Low_Air_Pressure_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="55" Type="N">
<Text>
<![CDATA[[XIC(Low_Air_Pressure_Reset_PB_I) ,XIC(HMI.Low_Air_Pressure_Reset_PB) ]XIO(Low_Air_Pressure_Reset_PB_LT_O)MOVE(4,HMI.Low_Air_Pressure_Reset_PB_STATE);]]>
<![CDATA[[XIC(Low_Air_Pressure_Reset_PB_I) ,XIC(HMI.Low_Air_Pressure_Reset_PB) ]XIC(Low_Air_Pressure_Reset_PB_LT_O)MOVE(3,HMI.Low_Air_Pressure_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="56" Type="N">
<Text>
<![CDATA[XIO(Jam_Restart_PB_LT_O)MOVE(1,HMI.Jam_Restart_PB_STATE);]]>
<![CDATA[[XIC(Low_Air_Pressure_Reset_PB_I) ,XIC(HMI.Low_Air_Pressure_Reset_PB) ]XIO(Low_Air_Pressure_Reset_PB_LT_O)MOVE(4,HMI.Low_Air_Pressure_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="57" Type="N">
<Text>
<![CDATA[XIC(Jam_Restart_PB_LT_O)MOVE(2,HMI.Jam_Restart_PB_STATE);]]>
<![CDATA[XIO(Jam_Restart_PB_LT_O)MOVE(1,HMI.Jam_Restart_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="58" Type="N">
<Text>
<![CDATA[[XIC(Jam_Restart_PB_I) ,XIC(HMI.Jam_Restart_PB) ]XIC(Jam_Restart_PB_LT_O)MOVE(3,HMI.Jam_Restart_PB_STATE);]]>
<![CDATA[XIC(Jam_Restart_PB_LT_O)MOVE(2,HMI.Jam_Restart_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="59" Type="N">
<Text>
<![CDATA[[XIC(Jam_Restart_PB_I) ,XIC(HMI.Jam_Restart_PB) ]XIO(Jam_Restart_PB_LT_O)MOVE(4,HMI.Jam_Restart_PB_STATE);]]>
<![CDATA[[XIC(Jam_Restart_PB_I) ,XIC(HMI.Jam_Restart_PB) ]XIC(Jam_Restart_PB_LT_O)MOVE(3,HMI.Jam_Restart_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="60" Type="N">
<Text>
<![CDATA[[XIC(Jam_Restart_PB_I) ,XIC(HMI.Jam_Restart_PB) ]XIO(Jam_Restart_PB_LT_O)MOVE(4,HMI.Jam_Restart_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="61" Type="N">
<Comment>
<![CDATA[STATES
@ -1007,57 +1115,57 @@ Faulted]]>
<![CDATA[XIC(System_Started)MOVE(9,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="61" Type="N">
<Rung Number="62" Type="N">
<Text>
<![CDATA[XIO(System_Started)MOVE(0,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="62" Type="N">
<Rung Number="63" Type="N">
<Text>
<![CDATA[XIC(Motor_Was_Faulted)MOVE(1,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="63" Type="N">
<Rung Number="64" Type="N">
<Text>
<![CDATA[XIC(Power_Branch_Was_Faulted)MOVE(2,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="64" Type="N">
<Rung Number="65" Type="N">
<Text>
<![CDATA[XIC(Low_Air_Pressure_Fault_Was_Present)MOVE(3,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="65" Type="N">
<Rung Number="66" Type="N">
<Text>
<![CDATA[XIC(Encoder_Fault)MOVE(4,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="66" Type="N">
<Rung Number="67" Type="N">
<Text>
<![CDATA[XIC(Jam_Fault)MOVE(5,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="67" Type="N">
<Rung Number="68" Type="N">
<Text>
<![CDATA[XIC(Communication_Faulted)MOVE(6,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="68" Type="N">
<Rung Number="69" Type="N">
<Text>
<![CDATA[XIC(EStop_Was_Actuated)MOVE(7,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="69" Type="N">
<Rung Number="70" Type="N">
<Text>
<![CDATA[XIC(EStopped_Locally)MOVE(8,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="70" Type="N">
<Rung Number="71" Type="N">
<Text>
<![CDATA[FLL(0,CTRL.CMD,1);]]>
</Text>
</Rung>
<Rung Number="71" Type="N">
<Rung Number="72" Type="N">
<Text>
<![CDATA[OTU(HMI.Setup_Motor_Speeds)OTU(HMI.Motor_Fault_Reset_PB)OTU(HMI.Power_Branch_Fault_Reset_PB)OTU(HMI.Low_Air_Pressure_Reset_PB)OTU(HMI.Start_PB)OTU(HMI.Jam_Restart_PB)OTU(HMI.Stop_PB);]]>
</Text>
@ -1183,8 +1291,8 @@ Faulted]]>
</Tag>
<Tag Name="MCM" TagType="Base" DataType="UDT_AOI_MCM" Constant="false" ExternalAccess="Read/Write">
<Data Format="L5K">
<![CDATA[[[1923,0,[4,500,500,[-1608521064,500,500],[-1071649974,500,178]],[0,500,500,[0,0,0],[0,0,0]],[0,500,500,[0,0,0],[0,0,0]],[0,500,500,[0,0
,0],[0,0,0]],[0,500,500,[0,0,0],[0,0,0]]],[[16,0,0],0,0,0,1,1,1,1,1],[[[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'
<![CDATA[[[1923,0,[0,500,500,[-1071415782,500,116],[0,500,0]],[0,500,500,[0,0,0],[0,0,0]],[0,500,500,[0,0,0],[0,0,0]],[0,500,500,[-1071410005,500
,249],[0,500,0]],[4,500,500,[-1608282886,500,500],[-1071411653,500,321]]],[[0,0,0],0,0,0,1,1,1,1,1],[[[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,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,[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,0]]]]]>
@ -1234,7 +1342,7 @@ Faulted]]>
<DataValueMember Name="UPS_Fault" DataType="BOOL" Value="0"/>
<DataValueMember Name="UPS_Battery_On" DataType="BOOL" Value="0"/>
<DataValueMember Name="UPS_Battery_Low" DataType="BOOL" Value="0"/>
<DataValueMember Name="Fire_Relay_De_Energized" DataType="BOOL" Value="1"/>
<DataValueMember Name="Fire_Relay_De_Energized" DataType="BOOL" Value="0"/>
<DataValueMember Name="Jam_Fault" DataType="BOOL" Value="0"/>
<DataValueMember Name="Encoder_Fault" DataType="BOOL" Value="0"/>
<DataValueMember Name="Motor_Fault" DataType="BOOL" Value="0"/>
@ -1318,6 +1426,7 @@ Faulted]]>
<DataValueMember Name="Jam_Reset_Requested" DataType="BOOL" Value="0"/>
<DataValueMember Name="Communication_Faulted" DataType="BOOL" Value="0"/>
<DataValueMember Name="Setup_Motor_Speeds" DataType="BOOL" Value="0"/>
<DataValueMember Name="System_Start_Requested" DataType="BOOL" Value="0"/>
</StructureMember>
</StructureMember>
</Structure>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RSLogix5000Content SchemaRevision="1.0" SoftwareRevision="36.00" TargetName="UDT_ALARMS_MCM" TargetType="DataType" ContainsContext="true" ExportDate="Wed Jun 25 19:04:43 2025" ExportOptions="References NoRawData L5KData DecoratedData Context Dependencies ForceProtectedEncoding AllProjDocTrans">
<RSLogix5000Content SchemaRevision="1.0" SoftwareRevision="36.00" TargetName="UDT_ALARMS_MCM" TargetType="DataType" ContainsContext="true" ExportDate="Tue Jul 29 14:53:33 2025" ExportOptions="References NoRawData L5KData DecoratedData Context Dependencies ForceProtectedEncoding AllProjDocTrans">
<Controller Use="Context" Name="MCM">
<DataTypes Use="Context">
<DataType Use="Target" Name="UDT_ALARMS_MCM" Family="NoFamily" Class="User">
@ -133,6 +133,11 @@ Faulted]]>
<Member Name="Communication_Faulted" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZUDT_CTRL_M3" BitNumber="7" ExternalAccess="Read/Write"/>
<Member Name="ZZZZZZZZZZUDT_CTRL_M12" DataType="SINT" Dimension="0" Radix="Decimal" Hidden="true" ExternalAccess="Read/Write"/>
<Member Name="Setup_Motor_Speeds" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZUDT_CTRL_M12" BitNumber="0" ExternalAccess="Read/Write"/>
<Member Name="System_Start_Requested" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZUDT_CTRL_M12" BitNumber="1" ExternalAccess="Read/Write">
<Description>
<![CDATA[System Start Requested]]>
</Description>
</Member>
</Members>
</DataType>
<DataType Use="Target" Name="UDT_HMI_MCM" Family="NoFamily" Class="User">
@ -275,7 +280,7 @@ Faulted]]>
</Routine>
</Routines>
</AddOnInstructionDefinition>
<AddOnInstructionDefinition Name="AOI_MCM" Revision="1.0" Vendor="Automation Standard" ExecutePrescan="true" ExecutePostscan="false" ExecuteEnableInFalse="false" CreatedDate="2018-11-09T20:08:51.991Z" CreatedBy="Rob-PC\Rob" EditedDate="2025-06-25T14:19:05.313Z" EditedBy="LCIBATUMI\beka.makharadze" SoftwareRevision="v36.00"
<AddOnInstructionDefinition Name="AOI_MCM" Revision="1.0" Vendor="Automation Standard" ExecutePrescan="true" ExecutePostscan="false" ExecuteEnableInFalse="false" CreatedDate="2018-11-09T20:08:51.991Z" CreatedBy="Rob-PC\Rob" EditedDate="2025-07-11T10:00:19.267Z" EditedBy="LCIBATUMI\ilia.gurielidze" SoftwareRevision="v36.00"
>
<Description>
<![CDATA[MAIN CONTROL MODULE]]>
@ -353,10 +358,10 @@ Faulted]]>
<![CDATA[Emergency Stop PushButton Input 1]]>
</Description>
<DefaultData Format="L5K">
<![CDATA[1]]>
<![CDATA[0]]>
</DefaultData>
<DefaultData Format="Decorated">
<DataValue DataType="BOOL" Radix="Decimal" Value="1"/>
<DataValue DataType="BOOL" Radix="Decimal" Value="0"/>
</DefaultData>
</Parameter>
<Parameter Name="EStop_PB_I_CH2" TagType="Base" DataType="BOOL" Usage="Input" Radix="Decimal" Required="true" Visible="true" ExternalAccess="Read/Write">
@ -364,10 +369,10 @@ Faulted]]>
<![CDATA[Emergency Stop PushButton Input 2]]>
</Description>
<DefaultData Format="L5K">
<![CDATA[1]]>
<![CDATA[0]]>
</DefaultData>
<DefaultData Format="Decorated">
<DataValue DataType="BOOL" Radix="Decimal" Value="1"/>
<DataValue DataType="BOOL" Radix="Decimal" Value="0"/>
</DefaultData>
</Parameter>
<Parameter Name="Stop_PB_I" TagType="Base" DataType="BOOL" Usage="Input" Radix="Decimal" Required="true" Visible="true" ExternalAccess="Read/Write">
@ -691,6 +696,104 @@ Faulted]]>
<Routine Name="Logic" Type="RLL">
<RLLContent>
<Rung Number="0" Type="N">
<Comment>
<![CDATA[MCM Main Control Module
This module acts as the central logbook and primary interfac for the subsystem.
Every AOI that detects a fault concatenates an explanatory string ( “<Device> — <Fault Text>” ) 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.
]]>
</Comment>
<Text>
<![CDATA[[COP(CTRL.CMD.Log,CTRL.STS.Log,1) MOVE(CTRL.CMD.Log_Quantity,CTRL.STS.Log_Quantity) ,XIC(CTRL.CMD.Acknowledge_Log) COP(CTRL.CMD.Log,CTRL.STS.Acknowledge_Log,1) ,XIC(CTRL.CMD.Unacknowledge_All_Logs) OTE(CTRL.STS.Unacknowledge_All_Logs) ];]]>
</Text>
@ -767,60 +870,65 @@ Faulted]]>
</Rung>
<Rung Number="15" Type="N">
<Text>
<![CDATA[XIC(HMI.Setup_Motor_Speeds)OTE(CTRL.STS.Setup_Motor_Speeds);]]>
<![CDATA[XIC(Start_PB_I)OTE(CTRL.STS.System_Start_Requested);]]>
</Text>
</Rung>
<Rung Number="16" Type="N">
<Text>
<![CDATA[[XIC(Motor_Fault_Reset_PB_I) ,XIC(HMI.Motor_Fault_Reset_PB) ]OTE(CTRL.STS.VFD_Fault_Reset_Requested);]]>
<![CDATA[XIC(HMI.Setup_Motor_Speeds)OTE(CTRL.STS.Setup_Motor_Speeds);]]>
</Text>
</Rung>
<Rung Number="17" Type="N">
<Text>
<![CDATA[[XIC(Power_Branch_Fault_Reset_PB_I) ,XIC(HMI.Power_Branch_Fault_Reset_PB) ]OTE(CTRL.STS.Power_Branch_Fault_Reset_Requested);]]>
<![CDATA[[XIC(Motor_Fault_Reset_PB_I) ,XIC(HMI.Motor_Fault_Reset_PB) ]OTE(CTRL.STS.VFD_Fault_Reset_Requested);]]>
</Text>
</Rung>
<Rung Number="18" Type="N">
<Text>
<![CDATA[[XIC(Low_Air_Pressure_Reset_PB_I) ,XIC(HMI.Low_Air_Pressure_Reset_PB) ]OTE(CTRL.STS.Low_Air_Pressure_Fault_Reset_Requested);]]>
<![CDATA[[XIC(Power_Branch_Fault_Reset_PB_I) ,XIC(HMI.Power_Branch_Fault_Reset_PB) ]OTE(CTRL.STS.Power_Branch_Fault_Reset_Requested);]]>
</Text>
</Rung>
<Rung Number="19" Type="N">
<Text>
<![CDATA[[XIC(Jam_Restart_PB_I) ,XIC(HMI.Jam_Restart_PB) ]OTE(CTRL.STS.Jam_Reset_Requested);]]>
<![CDATA[[XIC(Low_Air_Pressure_Reset_PB_I) ,XIC(HMI.Low_Air_Pressure_Reset_PB) ]OTE(CTRL.STS.Low_Air_Pressure_Fault_Reset_Requested);]]>
</Text>
</Rung>
<Rung Number="20" Type="N">
<Text>
<![CDATA[[XIO(CTRL.CMD.VFD_Faulted) XIC(Motor_Was_Faulted) ,XIC(CTRL.CMD.VFD_Faulted) AOI_FLIP_FLOP(Motor_Fault_Flip_Flop,500,500) ]OTE(Motor_Fault_Reset_PB_LT_O);]]>
<![CDATA[[XIC(Jam_Restart_PB_I) ,XIC(HMI.Jam_Restart_PB) ]OTE(CTRL.STS.Jam_Reset_Requested);]]>
</Text>
</Rung>
<Rung Number="21" Type="N">
<Text>
<![CDATA[[XIC(Jam_Fault) ,XIC(Encoder_Fault) AOI_FLIP_FLOP(Encoder_Fault_FlipFlop,500,500) ]OTE(Jam_Restart_PB_LT_O);]]>
<![CDATA[[XIO(CTRL.CMD.VFD_Faulted) XIC(Motor_Was_Faulted) ,XIC(CTRL.CMD.VFD_Faulted) AOI_FLIP_FLOP(Motor_Fault_Flip_Flop,500,500) ]OTE(Motor_Fault_Reset_PB_LT_O);]]>
</Text>
</Rung>
<Rung Number="22" Type="N">
<Text>
<![CDATA[[XIC(CTRL.CMD.EStop_Actuated) AOI_FLIP_FLOP(EStopped_FlipFlop,500,500) ,XIO(CTRL.CMD.EStop_Actuated) XIC(EStop_Was_Actuated) ]OTE(EStop_Actuated_LT_O);]]>
<![CDATA[[XIC(Jam_Fault) ,XIC(Encoder_Fault) AOI_FLIP_FLOP(Encoder_Fault_FlipFlop,500,500) ]OTE(Jam_Restart_PB_LT_O);]]>
</Text>
</Rung>
<Rung Number="23" Type="N">
<Text>
<![CDATA[[XIC(CTRL.CMD.Low_Air_Pressure_Fault) AOI_FLIP_FLOP(Low_Air_Pressure_FlipFlop,500,500) ,XIO(CTRL.CMD.Low_Air_Pressure_Fault) XIC(Low_Air_Pressure_Fault_Was_Present) ]OTE(Low_Air_Pressure_Reset_PB_LT_O);]]>
<![CDATA[[XIC(CTRL.CMD.EStop_Actuated) AOI_FLIP_FLOP(EStopped_FlipFlop,500,500) ,XIO(CTRL.CMD.EStop_Actuated) XIC(EStop_Was_Actuated) ]OTE(EStop_Actuated_LT_O);]]>
</Text>
</Rung>
<Rung Number="24" Type="N">
<Text>
<![CDATA[[XIC(CTRL.CMD.Power_Branch_Fault) AOI_FLIP_FLOP(Power_Branch_Fault_FlipFlop,500,500) ,XIO(CTRL.CMD.Power_Branch_Fault) XIC(Power_Branch_Was_Faulted) ]OTE(Power_Branch_Fault_Reset_PB_LT_O);]]>
<![CDATA[[XIC(CTRL.CMD.Low_Air_Pressure_Fault) AOI_FLIP_FLOP(Low_Air_Pressure_FlipFlop,500,500) ,XIO(CTRL.CMD.Low_Air_Pressure_Fault) XIC(Low_Air_Pressure_Fault_Was_Present) ]OTE(Low_Air_Pressure_Reset_PB_LT_O);]]>
</Text>
</Rung>
<Rung Number="25" Type="N">
<Text>
<![CDATA[XIC(System_Started)OTE(Start_PB_LT_O);]]>
<![CDATA[[XIC(CTRL.CMD.Power_Branch_Fault) AOI_FLIP_FLOP(Power_Branch_Fault_FlipFlop,500,500) ,XIO(CTRL.CMD.Power_Branch_Fault) XIC(Power_Branch_Was_Faulted) ]OTE(Power_Branch_Fault_Reset_PB_LT_O);]]>
</Text>
</Rung>
<Rung Number="26" Type="N">
<Text>
<![CDATA[XIC(System_Started)OTE(Start_PB_LT_O);]]>
</Text>
</Rung>
<Rung Number="27" Type="N">
<Comment>
<![CDATA[ALARMS
]]>
@ -829,172 +937,172 @@ Faulted]]>
<![CDATA[XIC(Start_PB_I)OTE(HMI.Alarm.Start_PB_Pressed);]]>
</Text>
</Rung>
<Rung Number="27" Type="N">
<Rung Number="28" Type="N">
<Text>
<![CDATA[XIO(Stop_PB_I)OTE(HMI.Alarm.Stop_PB_Pressed);]]>
</Text>
</Rung>
<Rung Number="28" Type="N">
<Rung Number="29" Type="N">
<Text>
<![CDATA[XIC(Motor_Fault_Reset_PB_I)OTE(HMI.Alarm.Motor_Fault_Reset_PB_Pressed);]]>
</Text>
</Rung>
<Rung Number="29" Type="N">
<Rung Number="30" Type="N">
<Text>
<![CDATA[XIC(Jam_Restart_PB_I)OTE(HMI.Alarm.Jam_Restart_PB_Pressed);]]>
</Text>
</Rung>
<Rung Number="30" Type="N">
<Rung Number="31" Type="N">
<Text>
<![CDATA[XIC(Low_Air_Pressure_Reset_PB_I)OTE(HMI.Alarm.Low_Air_Pressure_Reset_PB_Pressed);]]>
</Text>
</Rung>
<Rung Number="31" Type="N">
<Rung Number="32" Type="N">
<Text>
<![CDATA[XIC(Power_Branch_Fault_Reset_PB_I)OTE(HMI.Alarm.Power_Branch_Fault_Reset_PB_Pressed);]]>
</Text>
</Rung>
<Rung Number="32" Type="N">
<Rung Number="33" Type="N">
<Text>
<![CDATA[XIC(UPS_Battery_Fault)OTE(HMI.Alarm.UPS_Battery_Fault);]]>
</Text>
</Rung>
<Rung Number="33" Type="N">
<Rung Number="34" Type="N">
<Text>
<![CDATA[XIC(On_UPS_Battery)OTE(HMI.Alarm.On_UPS_Battery);]]>
</Text>
</Rung>
<Rung Number="34" Type="N">
<Rung Number="35" Type="N">
<Text>
<![CDATA[XIC(UPS_Battery_Low)OTE(HMI.Alarm.UPS_Battery_Low);]]>
</Text>
</Rung>
<Rung Number="35" Type="N">
<Rung Number="36" Type="N">
<Text>
<![CDATA[XIC(NAT_Switch_Fault)OTE(HMI.Alarm.NAT_Switch_Fault);]]>
</Text>
</Rung>
<Rung Number="36" Type="N">
<Text>
<![CDATA[XIO(Fire_Relay_De_Energized)OTE(HMI.Alarm.Fire_Relay_De_Energized);]]>
</Text>
</Rung>
<Rung Number="37" Type="N">
<Text>
<![CDATA[XIC(EStopped_Locally)OTE(HMI.Alarm.EStopped_Locally);]]>
<![CDATA[XIC(Fire_Relay_De_Energized)OTE(HMI.Alarm.Fire_Relay_De_Energized);]]>
</Text>
</Rung>
<Rung Number="38" Type="N">
<Text>
<![CDATA[XIC(EStop_Actuated_LT_O)OTE(HMI.EStop_Actuated_LT);]]>
<![CDATA[XIC(EStopped_Locally)OTE(HMI.Alarm.EStopped_Locally);]]>
</Text>
</Rung>
<Rung Number="39" Type="N">
<Text>
<![CDATA[XIC(EStopped_Locally)OTE(HMI.Local_Estop_LT);]]>
<![CDATA[XIC(EStop_Actuated_LT_O)OTE(HMI.EStop_Actuated_LT);]]>
</Text>
</Rung>
<Rung Number="40" Type="N">
<Text>
<![CDATA[XIO(Start_PB_LT_O)MOVE(1,HMI.Start_PB_STATE);]]>
<![CDATA[XIC(EStopped_Locally)OTE(HMI.Local_Estop_LT);]]>
</Text>
</Rung>
<Rung Number="41" Type="N">
<Text>
<![CDATA[XIC(Start_PB_LT_O)MOVE(2,HMI.Start_PB_STATE);]]>
<![CDATA[XIO(Start_PB_LT_O)MOVE(1,HMI.Start_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="42" Type="N">
<Text>
<![CDATA[[XIC(Start_PB_I) ,XIC(HMI.Start_PB) ]XIC(Start_PB_LT_O)MOVE(3,HMI.Start_PB_STATE);]]>
<![CDATA[XIC(Start_PB_LT_O)MOVE(2,HMI.Start_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="43" Type="N">
<Text>
<![CDATA[[XIC(Start_PB_I) ,XIC(HMI.Start_PB) ]XIO(Start_PB_LT_O)MOVE(4,HMI.Start_PB_STATE);]]>
<![CDATA[[XIC(Start_PB_I) ,XIC(HMI.Start_PB) ]XIC(Start_PB_LT_O)MOVE(3,HMI.Start_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="44" Type="N">
<Text>
<![CDATA[XIO(Motor_Fault_Reset_PB_LT_O)MOVE(1,HMI.Motor_Fault_Reset_PB_STATE);]]>
<![CDATA[[XIC(Start_PB_I) ,XIC(HMI.Start_PB) ]XIO(Start_PB_LT_O)MOVE(4,HMI.Start_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="45" Type="N">
<Text>
<![CDATA[XIC(Motor_Fault_Reset_PB_LT_O)MOVE(2,HMI.Motor_Fault_Reset_PB_STATE);]]>
<![CDATA[XIO(Motor_Fault_Reset_PB_LT_O)MOVE(1,HMI.Motor_Fault_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="46" Type="N">
<Text>
<![CDATA[[XIC(Motor_Fault_Reset_PB_I) ,XIC(HMI.Motor_Fault_Reset_PB) ]XIC(Motor_Fault_Reset_PB_LT_O)MOVE(3,HMI.Motor_Fault_Reset_PB_STATE);]]>
<![CDATA[XIC(Motor_Fault_Reset_PB_LT_O)MOVE(2,HMI.Motor_Fault_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="47" Type="N">
<Text>
<![CDATA[[XIC(Motor_Fault_Reset_PB_I) ,XIC(HMI.Motor_Fault_Reset_PB) ]XIO(Motor_Fault_Reset_PB_LT_O)MOVE(4,HMI.Motor_Fault_Reset_PB_STATE);]]>
<![CDATA[[XIC(Motor_Fault_Reset_PB_I) ,XIC(HMI.Motor_Fault_Reset_PB) ]XIC(Motor_Fault_Reset_PB_LT_O)MOVE(3,HMI.Motor_Fault_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="48" Type="N">
<Text>
<![CDATA[XIO(Power_Branch_Fault_Reset_PB_LT_O)MOVE(1,HMI.Power_Branch_Fault_Reset_PB_STATE);]]>
<![CDATA[[XIC(Motor_Fault_Reset_PB_I) ,XIC(HMI.Motor_Fault_Reset_PB) ]XIO(Motor_Fault_Reset_PB_LT_O)MOVE(4,HMI.Motor_Fault_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="49" Type="N">
<Text>
<![CDATA[XIC(Power_Branch_Fault_Reset_PB_LT_O)MOVE(2,HMI.Power_Branch_Fault_Reset_PB_STATE);]]>
<![CDATA[XIO(Power_Branch_Fault_Reset_PB_LT_O)MOVE(1,HMI.Power_Branch_Fault_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="50" Type="N">
<Text>
<![CDATA[[XIC(Power_Branch_Fault_Reset_PB_I) ,XIC(HMI.Power_Branch_Fault_Reset_PB) ]XIC(Power_Branch_Fault_Reset_PB_LT_O)MOVE(3,HMI.Power_Branch_Fault_Reset_PB_STATE);]]>
<![CDATA[XIC(Power_Branch_Fault_Reset_PB_LT_O)MOVE(2,HMI.Power_Branch_Fault_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="51" Type="N">
<Text>
<![CDATA[[XIC(Power_Branch_Fault_Reset_PB_I) ,XIC(HMI.Power_Branch_Fault_Reset_PB) ]XIO(Power_Branch_Fault_Reset_PB_LT_O)MOVE(4,HMI.Power_Branch_Fault_Reset_PB_STATE);]]>
<![CDATA[[XIC(Power_Branch_Fault_Reset_PB_I) ,XIC(HMI.Power_Branch_Fault_Reset_PB) ]XIC(Power_Branch_Fault_Reset_PB_LT_O)MOVE(3,HMI.Power_Branch_Fault_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="52" Type="N">
<Text>
<![CDATA[XIO(Low_Air_Pressure_Reset_PB_LT_O)MOVE(1,HMI.Low_Air_Pressure_Reset_PB_STATE);]]>
<![CDATA[[XIC(Power_Branch_Fault_Reset_PB_I) ,XIC(HMI.Power_Branch_Fault_Reset_PB) ]XIO(Power_Branch_Fault_Reset_PB_LT_O)MOVE(4,HMI.Power_Branch_Fault_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="53" Type="N">
<Text>
<![CDATA[XIC(Low_Air_Pressure_Reset_PB_LT_O)MOVE(2,HMI.Low_Air_Pressure_Reset_PB_STATE);]]>
<![CDATA[XIO(Low_Air_Pressure_Reset_PB_LT_O)MOVE(1,HMI.Low_Air_Pressure_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="54" Type="N">
<Text>
<![CDATA[[XIC(Low_Air_Pressure_Reset_PB_I) ,XIC(HMI.Low_Air_Pressure_Reset_PB) ]XIC(Low_Air_Pressure_Reset_PB_LT_O)MOVE(3,HMI.Low_Air_Pressure_Reset_PB_STATE);]]>
<![CDATA[XIC(Low_Air_Pressure_Reset_PB_LT_O)MOVE(2,HMI.Low_Air_Pressure_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="55" Type="N">
<Text>
<![CDATA[[XIC(Low_Air_Pressure_Reset_PB_I) ,XIC(HMI.Low_Air_Pressure_Reset_PB) ]XIO(Low_Air_Pressure_Reset_PB_LT_O)MOVE(4,HMI.Low_Air_Pressure_Reset_PB_STATE);]]>
<![CDATA[[XIC(Low_Air_Pressure_Reset_PB_I) ,XIC(HMI.Low_Air_Pressure_Reset_PB) ]XIC(Low_Air_Pressure_Reset_PB_LT_O)MOVE(3,HMI.Low_Air_Pressure_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="56" Type="N">
<Text>
<![CDATA[XIO(Jam_Restart_PB_LT_O)MOVE(1,HMI.Jam_Restart_PB_STATE);]]>
<![CDATA[[XIC(Low_Air_Pressure_Reset_PB_I) ,XIC(HMI.Low_Air_Pressure_Reset_PB) ]XIO(Low_Air_Pressure_Reset_PB_LT_O)MOVE(4,HMI.Low_Air_Pressure_Reset_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="57" Type="N">
<Text>
<![CDATA[XIC(Jam_Restart_PB_LT_O)MOVE(2,HMI.Jam_Restart_PB_STATE);]]>
<![CDATA[XIO(Jam_Restart_PB_LT_O)MOVE(1,HMI.Jam_Restart_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="58" Type="N">
<Text>
<![CDATA[[XIC(Jam_Restart_PB_I) ,XIC(HMI.Jam_Restart_PB) ]XIC(Jam_Restart_PB_LT_O)MOVE(3,HMI.Jam_Restart_PB_STATE);]]>
<![CDATA[XIC(Jam_Restart_PB_LT_O)MOVE(2,HMI.Jam_Restart_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="59" Type="N">
<Text>
<![CDATA[[XIC(Jam_Restart_PB_I) ,XIC(HMI.Jam_Restart_PB) ]XIO(Jam_Restart_PB_LT_O)MOVE(4,HMI.Jam_Restart_PB_STATE);]]>
<![CDATA[[XIC(Jam_Restart_PB_I) ,XIC(HMI.Jam_Restart_PB) ]XIC(Jam_Restart_PB_LT_O)MOVE(3,HMI.Jam_Restart_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="60" Type="N">
<Text>
<![CDATA[[XIC(Jam_Restart_PB_I) ,XIC(HMI.Jam_Restart_PB) ]XIO(Jam_Restart_PB_LT_O)MOVE(4,HMI.Jam_Restart_PB_STATE);]]>
</Text>
</Rung>
<Rung Number="61" Type="N">
<Comment>
<![CDATA[STATES
@ -1004,57 +1112,57 @@ Faulted]]>
<![CDATA[XIC(System_Started)MOVE(9,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="61" Type="N">
<Rung Number="62" Type="N">
<Text>
<![CDATA[XIO(System_Started)MOVE(0,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="62" Type="N">
<Rung Number="63" Type="N">
<Text>
<![CDATA[XIC(Motor_Was_Faulted)MOVE(1,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="63" Type="N">
<Rung Number="64" Type="N">
<Text>
<![CDATA[XIC(Power_Branch_Was_Faulted)MOVE(2,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="64" Type="N">
<Rung Number="65" Type="N">
<Text>
<![CDATA[XIC(Low_Air_Pressure_Fault_Was_Present)MOVE(3,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="65" Type="N">
<Rung Number="66" Type="N">
<Text>
<![CDATA[XIC(Encoder_Fault)MOVE(4,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="66" Type="N">
<Rung Number="67" Type="N">
<Text>
<![CDATA[XIC(Jam_Fault)MOVE(5,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="67" Type="N">
<Rung Number="68" Type="N">
<Text>
<![CDATA[XIC(Communication_Faulted)MOVE(6,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="68" Type="N">
<Rung Number="69" Type="N">
<Text>
<![CDATA[XIC(EStop_Was_Actuated)MOVE(7,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="69" Type="N">
<Rung Number="70" Type="N">
<Text>
<![CDATA[XIC(EStopped_Locally)MOVE(8,HMI.STATE);]]>
</Text>
</Rung>
<Rung Number="70" Type="N">
<Rung Number="71" Type="N">
<Text>
<![CDATA[FLL(0,CTRL.CMD,1);]]>
</Text>
</Rung>
<Rung Number="71" Type="N">
<Rung Number="72" Type="N">
<Text>
<![CDATA[OTU(HMI.Setup_Motor_Speeds)OTU(HMI.Motor_Fault_Reset_PB)OTU(HMI.Power_Branch_Fault_Reset_PB)OTU(HMI.Low_Air_Pressure_Reset_PB)OTU(HMI.Start_PB)OTU(HMI.Jam_Restart_PB)OTU(HMI.Stop_PB);]]>
</Text>