Table of Contents |
---|
Overview
As a preliminary runtime feature, Profinet is supported in RapidPlan 2.5. Please contact Realtime Robotics for technical support.6.
Hardware Requirement
PROFINET driver requires to disable Auto-negotiation, Auto-MDI/MDI-X and to set speed & duplex rate statically.
Profinet port name should be “fieldbus“.
RTR controller V1: Intel I210 NIC or newer PCI-e add-on card is required.
RTR Runtime Controller.
Profinet I/O Data Mapping
Excel | ||
---|---|---|
|
To download an offline copy of the I/O data mapping, click the icon below and save:
...
General rules of I/O mapping
Input: from RTR controller to PLC.
Output: from PLC to RTR controller.
all byte and bit offsets are 0-based.
if not defined on bit level, bytes are unsigned integers(0-255).
integers and DINT's are signed and Cyclic values unless specified otherwise.
all bit level requests are edge triggered unless specified as cyclic.
default values should always be 0 unless specified otherwise.
if there's a command conflict due to shared data fields between 2 commands, e.g., SetAlternateLocation with specified config, and a move to pose/config, both commands will be rejected and a command error code will be given.
max. # of presets per robot: 255;
max. # of object states: 255;
max. # of stateful objects: 32
max. # of targets per project: 16777215 (0xFFFFFF);max # of move segments per Combined Move: 10
Time-based trigger functionality from the Move command is excluded from the I/O map because the PLC can track the Move status and create its own time-based triggers.
RTR controller I/O module slot assignment
...
Input: from RTR controller to PLC.
Output: from PLC to RTR controller.
slot 1 is always reserved for 16 byte RTR controller input
slot 2 is always reserved for 16 byte RTR controller output
slot 3 is always reserved for 32 byte object states input
slot 4 is always reserved for 32 byte object states output
slot 5 is always reserved for 48 byte DSM input
slot 6 is always reserved for 48 byte DSM output
slot 7 is always reserved for 64 byte robot 1 input
slot 8 is always reserved for 64 byte robot 1 output
and so on for robot 2, to robot 16, for the slots thereafter. For each robot, it always starts with 64 bytes of input and then 64 bytes of output.
slot 1 to slot 6 are always fixed(not editable) and required.
from slot 7 and beyond, there can be no gaps. For example, a user can't have robot 1, and robot 5 for a 2-robot cell. It must be robot 1 and robot 2. The robot ID numbers are generated by appliance as part of the export lookup table and the same rule is followed.
Export ID’s
In order to address RapidPlan objects efficiently in a Profinet interface, symbolic names must be replaced by numerical values. Therefore, a lookup table is generated by Appliance and can be download from the Control Panel. Anytime a RapidPlan project is changed during runtime, or targets are updated/added/removed, the lookup table must be re-exported and PLC programs must be updated accordingly.
...
Code Block |
---|
project: 1 robots: Robot1: 0 Robot2: 1 Robot3: 2 Robot4: 3 Robot5: 4 presets: Robot1: default: 0 Robot2: Preset1_no_eoat: 0 Preset2_torch: 1 Preset3_weld: 2 Robot3: Preset1: 0 Robot4: Preset1: 0 Robot5: Preset1: 0 Preset10: 1 Preset11: 2 Preset12: 3 Preset13: 4 Preset14: 5 Preset15: 6 Preset16: 7 Preset17: 8 Preset2: 9 Preset3: 10 Preset4: 11 Preset5: 12 Preset6: 13 Preset7: 14 Preset8: 15 Preset9: 16 targets: Robot1: default: r1a1: 0 r1a2: 1 r1a3: 2 r1a45: 3 r1alt: 4 r1home: 5 r1t1: 6 r1t2: 7 r1t3: 8 r1t4: 9 r1t5: 10 r1t6: 11 r1up: 12 Robot2: Preset3_weld: r2a1: 13 r2a2: 14 r2a3: 15 r2a4: 16 r2alt: 17 r2home: 18 r2t1: 19 r2t2: 20 r2t3: 21 r2t4: 22 r2up: 23 Robot3: Preset1: r3t1: 24 r3t10: 25 r3t100: 26 r3t11: 27 r3t12: 28 r3t13: 29 r3t14: 30 r3t15: 31 r3t16: 32 r3t17: 33 r3t18: 34 r3t19: 35 r3t2: 36 r3t20: 37 r3t21: 38 r3t22: 39 r3t23: 40 r3t24: 41 r3t25: 42 r3t26: 43 r3t27: 44 r3t28: 45 r3t29: 46 r3t3: 47 r3t30: 48 r3t31: 49 r3t32: 50 r3t33: 51 r3t34: 52 r3t35: 53 r3t36: 54 r3t37: 55 r3t38: 56 r3t39: 57 r3t4: 58 r3t40: 59 r3t41: 60 r3t42: 61 r3t43: 62 r3t44: 63 r3t45: 64 r3t46: 65 r3t47: 66 r3t48: 67 r3t49: 68 r3t5: 69 r3t50: 70 r3t51: 71 r3t52: 72 r3t53: 73 r3t54: 74 r3t55: 75 r3t56: 76 r3t57: 77 r3t58: 78 r3t59: 79 r3t6: 80 r3t60: 81 r3t61: 82 r3t62: 83 r3t63: 84 r3t64: 85 r3t65: 86 r3t66: 87 r3t67: 88 r3t68: 89 r3t69: 90 r3t7: 91 r3t70: 92 r3t71: 93 r3t72: 94 r3t73: 95 r3t74: 96 r3t75: 97 r3t76: 98 r3t77: 99 r3t78: 100 r3t79: 101 r3t8: 102 r3t80: 103 r3t81: 104 r3t82: 105 r3t83: 106 r3t84: 107 r3t85: 108 r3t86: 109 r3t87: 110 r3t88: 111 r3t89: 112 r3t9: 113 r3t90: 114 r3t91: 115 r3t92: 116 r3t93: 117 r3t94: 118 r3t95: 119 r3t96: 120 r3t97: 121 r3t98: 122 r3t99: 123 r3up: 124 Robot4: Preset1: r4home: 125 r4t1: 126 r4t10: 127 r4t11: 128 r4t12: 129 r4t13: 130 r4t14: 131 r4t15: 132 r4t16: 133 r4t17: 134 r4t18: 135 r4t19: 136 r4t2: 137 r4t20: 138 r4t21: 139 r4t22: 140 r4t23: 141 r4t24: 142 r4t25: 143 r4t26: 144 r4t27: 145 r4t28: 146 r4t29: 147 r4t3: 148 r4t30: 149 r4t31: 150 r4t32: 151 r4t33: 152 r4t34: 153 r4t35: 154 r4t36: 155 r4t37: 156 r4t38: 157 r4t39: 158 r4t4: 159 r4t40: 160 r4t41: 161 r4t42: 162 r4t43: 163 r4t44: 164 r4t45: 165 r4t46: 166 r4t47: 167 r4t48: 168 r4t49: 169 r4t5: 170 r4t50: 171 r4t6: 172 r4t7: 173 r4t8: 174 r4t9: 175 r4up: 176 frames: Robot1: r1_default_tcp: 3 r1_tcp: 4 Robot2: r2_default_tcp: 5 r2_no_eoat_tcp: 6 r2_torch_tcp: 7 r2_weld_tcp: 8 World: Origin: 0 Robot3TCP: 1 origin_frame: 2 r4tcp: 9 objects: torch_latch: 0 vertical_beam: 1 weld_gun_latch: 2 Box1: 3 Box2: 4 Box3: 5 Box4: 6 Cylinder1: 7 gun_moving: 8 gun_static: 9 jig: 10 rail_with_shims: 11 sliding_platform: 12 tool_changer_base: 13 torch_robot: 14 weld_gun_robot: 15 workcell_empty: 16 states: torch_latch: Suppressed: 0 present: 1 vertical_beam: Suppressed: 0 present: 1 weld_gun_latch: Suppressed: 0 present: 1 dsm: static_frames: Origin: 0 Robot3TCP: 1 origin_frame: 2 r4tcp: 9 |
Getting started with Profinet communication on RapidPlan
Ethernet interface used by Profinet must be named
fieldbus
.
To rename an ethernet interface(e.g., enp2s0
) in Ubuntu:
sudo ip link set enp2s0 down
sudo ip link set enp2s0 name fieldbus
sudo ip link set fieldbus up
2. Environment variable must be set - this should be done automatically when a megadeb is installed.
If not done automatically:
sudo systemctl set-environment RAPIDPLAN_PROFINET_ENABLE=true
3. Profinet must be enabled from Control Panel - Settings - Network.
If the Profinet Enabled toggle is turned on, appliance must be restarted for the function to start working.
...
Installation steps
install RapidPlan and RTR-Webapps megadebs and licenses.
create a new UDEV rule under /etc/udev/rules.d/, file name is
70-persistent-net.rules
. Add the command line below to the file, replace ff:ff:ff:ff:ff:ff:ff with the actual mac address of the interface of the IPC.SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="ff:ff:ff:ff:ff:ff", NAME="fieldbus"
Goto RP Control Panel and turn on profinet under settings. Upload a RP project and install it. Profinet can be enabled without a loaded project. However, in order to export ID lookup table, a project must be loaded.
...
reboot.
After reboot, go to network settings of Ubuntu.
The interface should be already renamed to
fieldbus
, but not connected(toggle is off).Assign a hard-coded IP address with network mask to the interface. The IP address should be in the same subnet as the PLC.
The interface should be now connected(toggle is on).
Restart appliance
Go to TIA portal, add a RTR controller to HW configuration. connect to the PLC IO network, set IO update time 2ms, with 64 retries for RP2.6 and older, 32 retries for RP2.7.
Download PLC project with the new hardware configuration.
In the device view of TIA Portal, select the RTR controller and start profinet device name assignment process.
Profinet can be enabled without a loaded project. However, in order to export ID lookup table, a project must be loaded.
...
4. If Profinet is enabled for the first time, a Profinet device name must be assigned using TIA Portal. Once assigned, the device name is persistent.5. IP address is assigned by the PLC after Profinet device name is assignedassigned using TIA Portal. Once assigned, the device name is persistent.
IP address is assigned by the PLC after Profinet device name is assigned.
Watchdog settings
To ensure low latency of RapidPlan API commands and feedback status, the number of retries in the profinet device IO settings in TIA Portal is recommended to be set to 64, while the profinet IO update time is set to 2mS. The watchdog time-out value is then 32*2mS = 128mS.
The recommended watchdog settings are based on a RTR runtime controller. The number of retries should be increased in case of frequent timeouts on slower PC’s.
Typical Move command timing sequence
Move
...
Combined Move with Smoothing enabled
...
Combined Move with HoldMove
...
Programming Notes
A Siemens PLC library and an application example is available upon request.
To reset fault mode, the OperationMode output needs to be manually reset, before the reset output is set.
Some API commands only work in Config mode, while others only work in Operation mode. Mode interlock logic is recommended.
The transition of InMotion status may not be available for certain moves or move segments, under the following conditions:
InMotion bit may not be available for queued moves due to smoothing.
InMotion bit may not be available for move segments if smoothing is enabled.
The transition of InPosition status may not be available for certain moves, under the following conditions:
InPosition bit may not be available for queued moves due to smoothing.
InPosition bit may be delayed when HoldMove or AlternateLocation is set.
Known issues
Triggers are not supported as part of a move command.
When appliance restarts, the Ubuntu OS routing table is added with a duplicate default gateway pointing to the IP address assigned by the PLC. This is causing loss of internet access until the duplicate default gateway in the Ubuntu routing table is manually cleared. This is related to Ubuntu OS. Workaround: after Profinet is running, issue
sudo ip route del default
to restore internet access from the RTR controller.Occasionally the PLC triggers a Profinet watchdog error. This is due to the Ubuntu Desktop OS is not optimized for real-time communication. OS thread priority should be fine tuned. Workaround: increase the number of retries in the Profinet device IO settings in TIA Portal, while keeping the same 2mS update timeafter Profinet is running, issuesudo ip route del default
to restore internet access from the RTR controller.The Profinet driver is tested on RTR controllers(V1 and runtime) only.
DSM boxes, objects, and frames are tracked in the Profinet look up ID table. When items are created or removed, their Profinet IO mappings are handled as such, the handler retrieves the new id of the entity, and publishes it with Profinet. However, this does not cover cases where an external command source elicits a change in the DSM that’s unknown to a PLC.
Typical communication latencies
...
The charts below measure the time delay between a move command sent by a PLC and the ACK signal received by a PLC, with PNIO update time = 2mS. As shown below, the typical latency for a profinet command to reach a RTR controller is about 9mS most of the time.
...
GSD file
View file | ||
---|---|---|
|
...