[RMP 10.5.5]
EL5101 Setup for Full Encoder Resolution
I’m trying to configure things for a Beckhoff EL5101 encoder card and get 32-bit position data from it. (It has two modes: “compact” and an unnamed, non-compact one.)
When I try to switch which PDO collections come in, RMP no longer provides the current position as if the node were an axis.
Here’s the default config in NodeInfo.xml.
<Product Code="0x13ed3052">
<ProductName>EL5101 1Ch. Encoder 5V</ProductName>
<ShortName>Beckhoff - EL5101</ShortName>
<ItemSubType>Term</ItemSubType>
</Product>
Here’s what I’m using. (0x1a04 in the input PDO I want)
<Product Code="0x13ed3052">
<ProductName>EL5101 1Ch. Encoder 5V</ProductName>
<ShortName>Beckhoff - EL5101</ShortName>
<ItemSubType>Box</ItemSubType>
<AxisCount>1</AxisCount>
<PositionActual Size="32">ENC Status.Counter value</PositionActual>
<PDOs>
<PDOAssignment Index="0x1a00" IsOutput="False" Include="False"/>
<PDOAssignment Index="0x1a01" IsOutput="False" Include="False"/>
<PDOAssignment Index="0x1a02" IsOutput="False" Include="False"/>
<PDOAssignment Index="0x1a03" IsOutput="False" Include="False"/>
<PDOAssignment Index="0x1a04" IsOutput="False" Include="True"/>
<PDOAssignment Index="0x1a05" IsOutput="False" Include="False"/>
<PDOAssignment Index="0x1600" IsOutput="True" Include="True"/>
<PDOAssignment Index="0x1601" IsOutput="True" Include="False"/>
</PDOs>
</Product>
When I use this, I see a number of network data inputs. Here are the ones for this device.
Inputs
Idx Size/Off Type Value F/W Addr Input Name
...
# 68 1/ 1672 BOOL 0 (0x3142288) Box 13 (Beckhoff - EL5101).ENC Status.Status__Latch C valid
# 69 1/ 1673 BOOL 0 (0x31424a0) Box 13 (Beckhoff - EL5101).ENC Status.Status__Latch extern valid
# 70 1/ 1674 BOOL 0 (0x31426b8) Box 13 (Beckhoff - EL5101).ENC Status.Status__Set counter done
# 71 1/ 1675 BOOL 0 (0x31428d0) Box 13 (Beckhoff - EL5101).ENC Status.Status__Counter underflow
# 72 1/ 1676 BOOL 1 (0x3142ae8) Box 13 (Beckhoff - EL5101).ENC Status.Status__Counter overflow
# 73 1/ 1677 BOOL 1 (0x3142d00) Box 13 (Beckhoff - EL5101).ENC Status.Status__Status of input status
# 74 1/ 1678 BOOL 0 (0x3142f18) Box 13 (Beckhoff - EL5101).ENC Status.Status__Open circuit
# 75 1/ 1679 BOOL 0 (0x3143130) Box 13 (Beckhoff - EL5101).ENC Status.Status__Extrapolation stall
# 76 1/ 1680 BOOL 0 (0x3143348) Box 13 (Beckhoff - EL5101).ENC Status.Status__Status of input A
# 77 1/ 1681 BOOL 1 (0x3143560) Box 13 (Beckhoff - EL5101).ENC Status.Status__Status of input B
# 78 1/ 1682 BOOL 0 (0x3143778) Box 13 (Beckhoff - EL5101).ENC Status.Status__Status of input C
# 79 1/ 1683 BOOL 0 (0x3143990) Box 13 (Beckhoff - EL5101).ENC Status.Status__Status of input gate
# 80 1/ 1684 BOOL 0 (0x3143ba8) Box 13 (Beckhoff - EL5101).ENC Status.Status__Status of extern latch
# 81 1/ 1685 BOOL 0 (0x3143dc0) Box 13 (Beckhoff - EL5101).ENC Status.Status__Sync error
# 82 1/ 1686 BOOL 0 (0x3143fd8) Box 13 (Beckhoff - EL5101).ENC Status.Status__TxPDO State
# 83 1/ 1687 BOOL 1 (0x31441f0) Box 13 (Beckhoff - EL5101).ENC Status.Status__TxPDO Toggle
# 84 32/ 1688 UDINT 7 (0x3144408) Box 13 (Beckhoff - EL5101).ENC Status.Counter value
# 85 32/ 1720 UDINT 4137 (0x3144620) Box 13 (Beckhoff - EL5101).ENC Status.Latch value
...
The name for #84 looks like what I have for PositionActual
: ENC Status.Counter value
However, if I try to resolve the axis features for this node/axis, RMP doesn’t have anything for it.
Node #13
Name : Beckhoff - EL5101
Vendor ID : 0x2
Vendor Name : Beckhoff Automation GmbH
Product Name : EL5101 1Ch. Encoder 5V
Product Code : 0x13ed3052
Revision : 0x4000000
Station Alias : 0
Serial Number : 0
Axis Count : 1
Axis #0 : #6 (global)
STATUS_WORD_INDEX ( 0): INPUT #65535 "<NO_NAME>"
POSITION_ACTUAL_INDEX ( 1): INPUT #65535 "<NO_NAME>"
VELOCITY_ACTUAL_INDEX ( 2): INPUT #65535 "<NO_NAME>"
TORQUE_ACTUAL_INDEX ( 3): INPUT #65535 "<NO_NAME>"
DIGITAL_INPUT_INDEX ( 4): INPUT #65535 "<NO_NAME>"
ANALOG_INPUT_INDEX ( 5): INPUT #65535 "<NO_NAME>"
PDO_POSITION_ERROR_INDEX ( 6): INPUT #65535 "<NO_NAME>"
AUX_POSITION_FEEDBACK_INDEX ( 7): INPUT #65535 "<NO_NAME>"
CONTROL_WORD_INDEX ( 8): OUTPUT#65535 "<NO_NAME>"
POSITION_DEMAND_INDEX ( 9): OUTPUT#65535 "<NO_NAME>"
VELOCITY_DEMAND_INDEX ( 10): OUTPUT#65535 "<NO_NAME>"
TARGET_TORQUE_INDEX ( 11): OUTPUT#65535 "<NO_NAME>"
MODE_OF_OPERATION_INDEX ( 12): INPUT #65535 "<NO_NAME>"
DIGITAL_OUTPUT_INDEX ( 13): OUTPUT#65535 "<NO_NAME>"
ANALOG_OUTPUT_INDEX ( 14): OUTPUT#65535 "<NO_NAME>"
Of these, I would only expect POSITION_ACTUAL_INDEX to resolve to something besides -1.
Naturally, RapidSetup behaves accordingly, showing me nothing for the axis’s current position.
If I look at the PDO value for #84 (Box 13 (Beckhoff - EL5101).ENC Status.Counter value), it changes when I rotate the encoder.
What am I doing wrong? Why is RMP confused about PositionActual
?