See, add, or customize EtherCAT node info.
The RMP motion controller provides a more streamlined and unified way to interact with the various types of EtherCAT nodes/subdevices with the RapidCode API.
From a software perspective, all RapidCode Axis and IOPoint objects behave the same regardless of manufacturer. This minimizes the amount of changes to your software application that would be required if you have to swap drive manufacturers.
🔹 What are these files?
📄 NodeInfo.xml
Contains all RSI officially supported/integrated EtherCAT nodes as of RMP version 10.5.5.
See info about Settings section (only if RSI has recommended this)
You need to use NodeInfo.xml for the <Settings> block for everything, but <StrictNodeOrder>. This block handles automatic identification of IO based on size and key strings. By default, all 1 bit sized PDO entries are assumed to be Digital Inputs or Digital Outputs. This leads some Diagnostics and Control bits being identified as IO when you don't desire it. Add <Ignore> entries remove false positive identifications. Analog values are harder to detect. In order to add them, add an appropriate <AnalogInput> or <AnalogOutput> block following examples within the file.
The Has attribute can be used to add an additional string to help identify the IO.
Example
<AnalogInput Size="16" Has="(Beckhoff - AI">.Value</AnalogInput> will search for a pdo entry with both (Beckhoff - AI and .Value in it.
📝 CustomNodeInfo.xml
Allows users to add new nodes or customize existing nodes to meet your application needs.
- EDITABLE
- Available starting RMP version 10.4.2
- Vendor entries in CustomNodeInfo.xml will fully replace Vendor entries in NodeInfo.xml
See file
Many comments where added to explain all possible entries.
<EtherCATNodeInfo>
<Vendors>
<Vendor Id="0x111713">
<VendorName>Robotic Systems Integration</VendorName>
<Product Code="0xdead" Pattern="FakePatternName">
<ProductName>Not a Real Node</ProductName>
<ShortName>RSI FakeNode</ShortName>
<ItemSubType>Drive</ItemSubType>
<IO>
<DigitalInputItems>
<DigitalInput SigBits="0x007F0000" Size="32" Home="16" PosLimit="20" NegLimit="21">Inputs.Digital inputs</DigitalInput>
</DigitalInputItems>
<DigitalOutputItems>
<DigitalOutput SigBits="0x00030000" Size="32">Outputs.Digital outputs</DigitalOutput>
</DigitalOutputItems>
<AnalogInputItems>
<AnalogInput Size="16">Inputs.AIN.VALUE</AnalogInput>
</AnalogInputItems>
<AnalogOutputItems>
<AnalogOutput Size="16">Outputs.AOUT.VALUE</AnalogOutput>
</AnalogOutputItems>
</IO>
<InitCmds>
<InitCmd Index="0x60FE" SubIndex="0x2" Transition="SO">ef cd ab 00</InitCmd>
<InitCmd Index="0x60FE" SubIndex="0x2" Transition="SO" ChangeData="78 56 34 12" ChangeTimeout="1000" ChangeTransition="PS">ef cd ab 00</InitCmd>
</InitCmds>
<PDOs>
<PDOAssignment Index="0x1B01" IsOutput="False" Include="False"/>
<PDOAssignment Index="0x1A00" IsOutput="False" Include="True" RemoveContent="0x6041 0x6042" />
<PDOAssignment Index="0x1A01" IsOutput="False" Include="True">
<AddEntry Name="Velocity actual value" Index="0x606C" SubIndex="0" BitLen="32" DataType="DINT"/>
<AddEntry Name="Digital inputs" Index="0x60FD" SubIndex="0" BitLen="32" DataType="DINT"/>
</PDOAssignment>
</PDOs>
<SafeopOpTimeout>100000</SafeopOpTimeout>
<Unsupported state="bootstrap"/>
<MailboxPollTime>50</MailboxPollTime>
<AxisCount>1</AxisCount>
<AdditionalAxes>
<Axis Index="1">
</Axis>
</AdditionalAxes>
<StatusWord>Inputs.Status word</StatusWord>
<ControlWord>Outputs.Control word</ControlWord>
<PositionActual>Inputs.Position actual value</PositionActual>
<VelocityActual>Inputs.Velocity actual value</VelocityActual>
<TorqueActual>Inputs.Torque actual value</TorqueActual>
<PositionDemand>Outputs.Position demand value</PositionDemand>
<VelocityDemand>Outputs.Velocity command value</VelocityDemand>
<TargetTorque>Outputs.Additive torque value</TargetTorque>
<SecondaryFeedback>Inputs.Position actual value 2</SecondaryFeedback>
<FollowingError>Inputs.Following error</FollowingError>
<ModeOfOperation>Cyclic Position Velocity Mode.Mode of Operation</ModeOfOperation>
</Product>
</Vendor>
</Vendors>
<Patterns>
<FakePatternName>
<InitCmds>
<InitCmd Index="0x6060" SubIndex="0x0" Transition="PS">08</InitCmd>
</InitCmds>
</FakePatternName>
</Patterns>
<Settings>
<StrictNodeOrder />
</Settings>
</EtherCATNodeInfo>
🔹 New node official support
RSI can add support for any EtherCAT device however some complex nodes may require additional time or a purchase order before they can be integrated. Simple drives with ESI files that adhere well to the DS402 standard can often be integrated easily.
If you would like RSI to integrate your node into the RMP, we will need:
- The ESI file for the node
- A link to the manufacturer's node/drive page and/or documentation
- If you have discovered the node in your EtherCAT network: