<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RSLogix5000Content SchemaRevision="1.0" SoftwareRevision="20.05" TargetName="AMCI_NXFE2_Encoder_Follower" TargetType="AddOnInstructionDefinition" TargetRevision="2.0 " TargetLastEdited="2025-12-23T16:47:33.582Z" ContainsContext="true" Owner="root" ExportDate="Fri Jan 02 09:34:27 2026" ExportOptions="References DecoratedData Context Dependencies ForceProtectedEncoding AllProjDocTrans">
<Controller Use="Context" Name="NXFE2_EDS_AOI_sample_RSLogix_V20">
<DataTypes Use="Context">
<DataType Name="AMCI_NXFE2_Output_Data" Family="NoFamily" Class="User">
<Members>
<Member Name="Command_Word_0" DataType="INT" Dimension="0" Radix="Decimal" Hidden="false" ExternalAccess="Read/Write"/>
<Member Name="Command_Word_1" DataType="INT" Dimension="0" Radix="Decimal" Hidden="false" ExternalAccess="Read/Write"/>
<Member Name="Position_or_Distance" DataType="DINT" Dimension="0" Radix="Decimal" Hidden="false" ExternalAccess="Read/Write"/>
<Member Name="Programmed_Speed" DataType="DINT" Dimension="0" Radix="Decimal" Hidden="false" ExternalAccess="Read/Write"/>
<Member Name="Acceleration" DataType="INT" Dimension="0" Radix="Decimal" Hidden="false" ExternalAccess="Read/Write"/>
<Member Name="Deceleration" DataType="INT" Dimension="0" Radix="Decimal" Hidden="false" ExternalAccess="Read/Write"/>
<Member Name="Reserved_Word_8" DataType="INT" Dimension="0" Radix="Decimal" Hidden="false" ExternalAccess="Read/Write"/>
<Member Name="Reserved_Word_9" DataType="INT" Dimension="0" Radix="Decimal" Hidden="false" ExternalAccess="Read/Write"/>
</Members>
</DataType>
<DataType Name="AMCI_NXFE2_Input_Data" Family="NoFamily" Class="User">
<Members>
<Member Name="ZZZZZZZZZZAMCI_NXFE20" DataType="SINT" Dimension="0" Radix="Decimal" Hidden="true" ExternalAccess="Read/Write"/>
<Member Name="MovingCW" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE20" BitNumber="0" ExternalAccess="Read/Write"/>
<Member Name="MovingCCW" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE20" BitNumber="1" ExternalAccess="Read/Write"/>
<Member Name="InHoldState" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE20" BitNumber="2" ExternalAccess="Read/Write"/>
<Member Name="Stopped" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE20" BitNumber="3" ExternalAccess="Read/Write"/>
<Member Name="AtHome" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE20" BitNumber="4" ExternalAccess="Read/Write"/>
<Member Name="Accelerating" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE20" BitNumber="5" ExternalAccess="Read/Write"/>
<Member Name="Decelerating" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE20" BitNumber="6" ExternalAccess="Read/Write"/>
<Member Name="MoveComplete" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE20" BitNumber="7" ExternalAccess="Read/Write"/>
<Member Name="ZZZZZZZZZZAMCI_NXFE29" DataType="SINT" Dimension="0" Radix="Decimal" Hidden="true" ExternalAccess="Read/Write"/>
<Member Name="HomeInvalid" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE29" BitNumber="0" ExternalAccess="Read/Write"/>
<Member Name="ProfileInvalid" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE29" BitNumber="1" ExternalAccess="Read/Write"/>
<Member Name="PositionInvalid" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE29" BitNumber="2" ExternalAccess="Read/Write"/>
<Member Name="InputError" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE29" BitNumber="3" ExternalAccess="Read/Write"/>
<Member Name="CommandError" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE29" BitNumber="4" ExternalAccess="Read/Write"/>
<Member Name="ConfigurationError" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE29" BitNumber="5" ExternalAccess="Read/Write"/>
<Member Name="ModuleOK" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE29" BitNumber="6" ExternalAccess="Read/Write"/>
<Member Name="ModeFlag" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE29" BitNumber="7" ExternalAccess="Read/Write"/>
<Member Name="ZZZZZZZZZZAMCI_NXFE218" DataType="SINT" Dimension="0" Radix="Decimal" Hidden="true" ExternalAccess="Read/Write"/>
<Member Name="CaptureInputActive" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE218" BitNumber="0" ExternalAccess="Read/Write"/>
<Member Name="ExternalInputActive" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE218" BitNumber="1" ExternalAccess="Read/Write"/>
<Member Name="HomeInputActive" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE218" BitNumber="2" ExternalAccess="Read/Write"/>
<Member Name="CWLimitActive" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE218" BitNumber="3" ExternalAccess="Read/Write"/>
<Member Name="CCWLimiitActive" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE218" BitNumber="4" ExternalAccess="Read/Write"/>
<Member Name="NoFaultOutputState" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE218" BitNumber="5" ExternalAccess="Read/Write"/>
<Member Name="OnLineOutputState" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE218" BitNumber="6" ExternalAccess="Read/Write"/>
<Member Name="MoveCompleteOutputState" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE218" BitNumber="7" ExternalAccess="Read/Write"/>
<Member Name="ZZZZZZZZZZAMCI_NXFE227" DataType="SINT" Dimension="0" Radix="Decimal" Hidden="true" ExternalAccess="Read/Write"/>
<Member Name="RunningBlendMove" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE227" BitNumber="0" ExternalAccess="Read/Write"/>
<Member Name="BlendMoveACK" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE227" BitNumber="1" ExternalAccess="Read/Write"/>
<Member Name="NonZeroMinRegDistance" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE227" BitNumber="2" ExternalAccess="Read/Write"/>
<Member Name="Reserved_bit_11" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE227" BitNumber="3" ExternalAccess="Read/Write"/>
<Member Name="BckplnHomeProxBitState" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE227" BitNumber="4" ExternalAccess="Read/Write"/>
<Member Name="EncoderFollowerMode" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE227" BitNumber="5" ExternalAccess="Read/Write"/>
<Member Name="Reserved_bit_14" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE227" BitNumber="6" ExternalAccess="Read/Write"/>
<Member Name="Reserved_bit_15" DataType="BIT" Dimension="0" Radix="Decimal" Hidden="false" Target="ZZZZZZZZZZAMCI_NXFE227" BitNumber="7" ExternalAccess="Read/Write"/>
<Member Name="MotorPosition" DataType="DINT" Dimension="0" Radix="Decimal" Hidden="false" ExternalAccess="Read/Write"/>
<Member Name="EncoderPosition" DataType="DINT" Dimension="0" Radix="Decimal" Hidden="false" ExternalAccess="Read/Write"/>
<Member Name="CaptureData" DataType="DINT" Dimension="0" Radix="Decimal" Hidden="false" ExternalAccess="Read/Write"/>
<Member Name="Reserved_Word_8" DataType="INT" Dimension="0" Radix="Decimal" Hidden="false" ExternalAccess="Read/Write"/>
<Member Name="NetworkConnectivity" DataType="INT" Dimension="0" Radix="Decimal" Hidden="false" ExternalAccess="Read/Write"/>
</Members>
</DataType>
</DataTypes>
<AddOnInstructionDefinitions Use="Context">
<AddOnInstructionDefinition Use="Target" Name="AMCI_NXFE2_Encoder_Follower" Revision="2.0" Vendor="AMCI" ExecutePrescan="false" ExecutePostscan="false" ExecuteEnableInFalse="true" CreatedDate="2011-05-06T14:19:37.914Z" CreatedBy="AMCI_HQ\jsutula" EditedDate="2025-12-23T16:47:33.582Z" EditedBy="AMCI-MC\jsutula"
 SoftwareRevision="v20.05">
<RevisionNote>
<![CDATA[Version 2.0 was released on 12/23/2025.  The AOI was modified to use the Input and Output user defined data type.   ]]>
</RevisionNote>
<AdditionalHelpText>
<![CDATA[Performs Positive CW or Negative CCW Encoder Follower

AXIS INPUT DATA:  Input data from the NXFE2.   Uses the AMCI_NXFE2_Input_Data User Defined Data Type.  

AXIS OUTPUT DATA; Output data from the AOI to the AMCI NXFE2.    Uses the AMCI_NXFE2_Output_Data User Defined Data Type.  

DIRECTION: 0 for Positive CW or 1 for Negative CCW Encoder Follower.   When Negative, motion will be in the direction opposite to the incoming encoder pulses.   
MULTIPLIER: Factor by which the incoming encoder pulses are multiplied.   
DIVISOR: Factor by which the incoming encoder pulses are divided.   
ACCELERATION: Acceleration Rate in units of steps / sec / ms
DECELERATION:  Deceleration Rate in units of steps / sec / ms

EN (Enable) Set when rung is true, Reset when rung is false
DN (Done) Set when command is sent to the NXFE2.  Reset when the rung is false.   
ER (Error) Set when there is a command, input, or a configuration  error.  Reset when the rung is false.  
IP (In Process) Set when motion is occurring.   Reset when motion stops or the rung goes false.   
  ]]>
</AdditionalHelpText>
<Parameters>
<Parameter Name="EnableIn" TagType="Base" DataType="BOOL" Usage="Input" Radix="Decimal" Required="false" Visible="false" ExternalAccess="Read Only">
<Description>
<![CDATA[Enable Input - System Defined Parameter]]>
</Description>
</Parameter>
<Parameter Name="EnableOut" TagType="Base" DataType="BOOL" Usage="Output" Radix="Decimal" Required="false" Visible="false" ExternalAccess="Read Only">
<Description>
<![CDATA[Enable Output - System Defined Parameter]]>
</Description>
</Parameter>
<Parameter Name="NXFE2_Input_Data" TagType="Base" DataType="AMCI_NXFE2_Input_Data" Usage="InOut" Required="true" Visible="true" Constant="false"/>
<Parameter Name="NXFE2_Output_Data" TagType="Base" DataType="AMCI_NXFE2_Output_Data" Usage="InOut" Required="true" Visible="true" Constant="false"/>
<Parameter Name="Direction_0_PositiveCW_1_NegativeCCW" TagType="Base" DataType="BOOL" Usage="Input" Radix="Decimal" Required="true" Visible="true" ExternalAccess="Read/Write">
<Description>
<![CDATA[0=Encoder Follower CW
1=Encoder Follower CCW]]>
</Description>
<DefaultData>00</DefaultData>
<DefaultData Format="Decorated">
<DataValue DataType="BOOL" Radix="Decimal" Value="0"/>
</DefaultData>
</Parameter>
<Parameter Name="_0_normal_1_S_curve_acceleration" TagType="Base" DataType="BOOL" Usage="Input" Radix="Decimal" Required="false" Visible="false" ExternalAccess="Read/Write">
<DefaultData>00</DefaultData>
<DefaultData Format="Decorated">
<DataValue DataType="BOOL" Radix="Decimal" Value="0"/>
</DefaultData>
</Parameter>
<Parameter Name="_0_Triangular_1_Trapezoidal_S_Curve" TagType="Base" DataType="BOOL" Usage="Input" Radix="Decimal" Required="false" Visible="false" ExternalAccess="Read/Write">
<DefaultData>00</DefaultData>
<DefaultData Format="Decorated">
<DataValue DataType="BOOL" Radix="Decimal" Value="0"/>
</DefaultData>
</Parameter>
<Parameter Name="Encoder_Count_Multiplier" TagType="Base" DataType="INT" Usage="Input" Radix="Decimal" Required="true" Visible="true" ExternalAccess="Read/Write">
<DefaultData>00 00</DefaultData>
<DefaultData Format="Decorated">
<DataValue DataType="INT" Radix="Decimal" Value="0"/>
</DefaultData>
</Parameter>
<Parameter Name="Encoder_count_Divisor" TagType="Base" DataType="INT" Usage="Input" Radix="Decimal" Required="true" Visible="true" ExternalAccess="Read/Write">
<DefaultData>00 00</DefaultData>
<DefaultData Format="Decorated">
<DataValue DataType="INT" Radix="Decimal" Value="0"/>
</DefaultData>
</Parameter>
<Parameter Name="Acceleration" TagType="Base" DataType="INT" Usage="Input" Radix="Decimal" Required="true" Visible="true" ExternalAccess="Read/Write">
<DefaultData>00 00</DefaultData>
<DefaultData Format="Decorated">
<DataValue DataType="INT" Radix="Decimal" Value="0"/>
</DefaultData>
</Parameter>
<Parameter Name="Deceleration" TagType="Base" DataType="INT" Usage="Input" Radix="Decimal" Required="true" Visible="true" ExternalAccess="Read/Write">
<DefaultData>00 00</DefaultData>
<DefaultData Format="Decorated">
<DataValue DataType="INT" Radix="Decimal" Value="0"/>
</DefaultData>
</Parameter>
<Parameter Name="EN" TagType="Base" DataType="BOOL" Usage="Output" Radix="Decimal" Required="false" Visible="true" ExternalAccess="Read Only">
<DefaultData>00</DefaultData>
<DefaultData Format="Decorated">
<DataValue DataType="BOOL" Radix="Decimal" Value="0"/>
</DefaultData>
</Parameter>
<Parameter Name="IP" TagType="Base" DataType="BOOL" Usage="Output" Radix="Decimal" Required="false" Visible="true" ExternalAccess="Read Only">
<DefaultData>00</DefaultData>
<DefaultData Format="Decorated">
<DataValue DataType="BOOL" Radix="Decimal" Value="0"/>
</DefaultData>
</Parameter>
<Parameter Name="ER" TagType="Base" DataType="BOOL" Usage="Output" Radix="Decimal" Required="false" Visible="true" ExternalAccess="Read Only">
<DefaultData>00</DefaultData>
<DefaultData Format="Decorated">
<DataValue DataType="BOOL" Radix="Decimal" Value="0"/>
</DefaultData>
</Parameter>
</Parameters>
<LocalTags>
<LocalTag Name="command_data_block" DataType="INT" Dimensions="10" Radix="Decimal" ExternalAccess="Read/Write">
<DefaultData>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00</DefaultData>
<Comments>
<Comment Operand="[0]">
<![CDATA[Command Bits MSW]]>
</Comment>
<Comment Operand="[1]">
<![CDATA[Command Bits LSW]]>
</Comment>
<Comment Operand="[4]">
<![CDATA[Upper Programmed Speed]]>
</Comment>
<Comment Operand="[5]">
<![CDATA[Lower Programmed Speed]]>
</Comment>
</Comments>
<DefaultData Format="Decorated">
<Array DataType="INT" Dimensions="10" Radix="Decimal">
<Element Index="[0]" Value="0"/>
<Element Index="[1]" Value="0"/>
<Element Index="[2]" Value="0"/>
<Element Index="[3]" Value="0"/>
<Element Index="[4]" Value="0"/>
<Element Index="[5]" Value="0"/>
<Element Index="[6]" Value="0"/>
<Element Index="[7]" Value="0"/>
<Element Index="[8]" Value="0"/>
<Element Index="[9]" Value="0"/>
</Array>
</DefaultData>
</LocalTag>
</LocalTags>
<Routines>
<Routine Name="EnableInFalse" Type="RLL">
<RLLContent>
<Rung Number="0" Type="N">
<Text>
<![CDATA[OTU(ER)OTU(EN);]]>
</Text>
</Rung>
</RLLContent>
</Routine>
<Routine Name="Logic" Type="RLL">
<RLLContent>
<Rung Number="0" Type="N">
<Comment>
<![CDATA[The following rung moves a decimal value of "128" (bit 7 set) to the MSW command word.  With this command, motion will be in the same direction as the incomming encoder counts.        ]]>
</Comment>
<Text>
<![CDATA[XIO(Direction_0_PositiveCW_1_NegativeCCW)MOV(128,command_data_block[0]);]]>
</Text>
</Rung>
<Rung Number="1" Type="N">
<Comment>
<![CDATA[The following rung moves a decimal value of "256" (bit  set) to the MSW command word.  With this command, motion will be in the oposite direction from the incomming encoder counts.        ]]>
</Comment>
<Text>
<![CDATA[XIC(Direction_0_PositiveCW_1_NegativeCCW)MOV(256,command_data_block[0]);]]>
</Text>
</Rung>
<Rung Number="2" Type="N">
<Comment>
<![CDATA[The following rung moves a value of 256 into the Command LSW word.  This commands the unit for encoder follower with linear acceleration.    ]]>
</Comment>
<Text>
<![CDATA[XIO(_0_normal_1_S_curve_acceleration)MOV(256,command_data_block[1]);]]>
</Text>
</Rung>
<Rung Number="3" Type="N">
<Comment>
<![CDATA[The following rung moves a value of 257 into the Command LSW word.  This defines the move as encoder follower and the acceleration type as triangular S curve. ]]>
</Comment>
<Text>
<![CDATA[XIC(_0_normal_1_S_curve_acceleration)XIO(_0_Triangular_1_Trapezoidal_S_Curve)MOV(257,command_data_block[1]);]]>
</Text>
</Rung>
<Rung Number="4" Type="N">
<Comment>
<![CDATA[The following rung moves a value of 259 into the Command LSW.  This defines the move type as encoder follower and the acceleration type as trapezoidal s curve.    ]]>
</Comment>
<Text>
<![CDATA[XIC(_0_normal_1_S_curve_acceleration)XIC(_0_Triangular_1_Trapezoidal_S_Curve)MOV(259,command_data_block[1]);]]>
</Text>
</Rung>
<Rung Number="5" Type="N">
<Comment>
<![CDATA[Move the Electronic Gearing Numerator value from outside the AOI instruction to word two of the ten word command block.  ]]>
</Comment>
<Text>
<![CDATA[MOV(Encoder_Count_Multiplier,command_data_block[2]);]]>
</Text>
</Rung>
<Rung Number="6" Type="N">
<Comment>
<![CDATA[Move the Electronic Gearing Denominator value from outside the AOI instruction to word three of the ten word command block. ]]>
</Comment>
<Text>
<![CDATA[MOV(Encoder_count_Divisor,command_data_block[3]);]]>
</Text>
</Rung>
<Rung Number="7" Type="N">
<Text>
<![CDATA[FLL(0,command_data_block[4],2);]]>
</Text>
</Rung>
<Rung Number="8" Type="N">
<Comment>
<![CDATA[Move the acceleration value from outside the AOI instruction to word six of the ten word command block.  ]]>
</Comment>
<Text>
<![CDATA[MOV(Acceleration,command_data_block[6]);]]>
</Text>
</Rung>
<Rung Number="9" Type="N">
<Comment>
<![CDATA[Move the deceleration value from outside the AOI instruction to word seven of the ten word command block.  ]]>
</Comment>
<Text>
<![CDATA[MOV(Deceleration,command_data_block[7]);]]>
</Text>
</Rung>
<Rung Number="10" Type="N">
<Comment>
<![CDATA[Words 8 and 9 of the 10 word command block are not used by this Add On Instruction.]]>
</Comment>
<Text>
<![CDATA[FLL(0,command_data_block[8],2);]]>
</Text>
</Rung>
<Rung Number="11" Type="N">
<Text>
<![CDATA[[XIC(NXFE2_Input_Data.InputError) ,XIC(NXFE2_Input_Data.CommandError) ,XIC(NXFE2_Input_Data.ConfigurationError) ]OTE(ER)MOV(0,command_data_block[0]);]]>
</Text>
</Rung>
<Rung Number="12" Type="N">
<Text>
<![CDATA[[XIC(NXFE2_Input_Data.MovingCW) ,XIC(NXFE2_Input_Data.MovingCW) ]OTE(IP);]]>
</Text>
</Rung>
<Rung Number="13" Type="N">
<Comment>
<![CDATA[Move the command block data internal to the Add on Instruction to the output registers assigned to the NXFE2.  ]]>
</Comment>
<Text>
<![CDATA[CPS(command_data_block[0],NXFE2_Output_Data,10);]]>
</Text>
</Rung>
<Rung Number="14" Type="N">
<Text>
<![CDATA[OTL(EN);]]>
</Text>
</Rung>
</RLLContent>
</Routine>
</Routines>
<Dependencies>
<Dependency Type="DataType" Name="AMCI_NXFE2_Input_Data"/>
<Dependency Type="DataType" Name="AMCI_NXFE2_Output_Data"/>
</Dependencies>
</AddOnInstructionDefinition>
</AddOnInstructionDefinitions>
</Controller>
</RSLogix5000Content>
