2.9 RapidPlan Controller Profinet Interface User Guide
- 1 Overview
- 1.1 What’s new
- 2 Hardware Requirement
- 3 Profinet I/O Data Mapping
- 4 RTR controller I/O module slot assignment
- 5 Export ID’s
- 6 Getting started with Profinet communication on RapidPlan
- 7 Typical Move command timing sequence
- 8 Programming Notes
- 9 Known issues
- 10 Typical communication latencies
- 11 GSD file
Overview
As a runtime feature, Profinet is supported in RapidPlan 2.9.
What’s new
New Command Module to replace DSM I/O area.
Profinet port can be selected in Control Panel without specifying “fieldbus“ as the port name.
IsOnTarget now supports different epsilon for prismatic and revolute joints
Get project checksum is supported.
The default units are mm/degree.
Lookup table ID consistency is maintained when adding new objects to the project in RapidPlan Create.
Lookup table can be exported from RapidPlan Create.
Hardware Requirement
RTR controller V1: Intel I210 NIC or newer PCI-e add-on card is required.
RTR Runtime Controller.
Profinet I/O Data Mapping
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.
project ID: an integer generate by RapidPlan
robots: 0-15
stateful object ID: 0-31
robot preset ID: 0-255(0xFF) - may be the same under different robots
frame ID and target ID: 0-16777215(0xFFFFFF) - globally unique
object states ID: 0-255 - may be the same under different object ID
Any time a project is loaded in Control Panel, or targets are added or deleted or renamed, the user is responsible to re-download the updated ID file from Control Panel.
Up to 2 external axes are supported by the PNIO data map. There’s no specific look up value for each external axis. External axis#1 is always the axis with lower actuator index number.
An example:
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
Installation steps
install RapidPlan and RTR-Webapps megadebs and licenses.
Assign a hard-coded IP address with network mask to the interface to be used as the Profinet port. The IP address should be in the same subnet as the PLC.
Go to 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 now connected(toggle is on).
Restart appliance or reboot when any network settings change.
Go to TIA portal, add a RTR controller to HW configuration.
Connect to the PLC IO network, set IO update time 2ms(by default, or <= 50% of the PLC’s scan cycle time), with 32-64 retries.
Adjust IO data slot configuration to match the actual number of robots used in the project.
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.
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.
IP address is assigned by the PLC after Profinet device name is assigned.
Startup behaviors
As of 2.8, appliance will enter fault mode if the requested Profinet interface isn't working when appliance starts and times out in 10S. Prior to 2.8, Profinet interface is checked only once without timeout when appliance starts.
As a result, if Profinet is not working during the initial startup, appliance must be manually restarted to re-enable the Prifinet interface.
Watchdog settings
To ensure low latency of RapidPlan API commands and feedback status, the minimum number of retries in the profinet device IO settings in TIA Portal is recommended to be set to 32, while the profinet IO update time is set to 2mS by default, or <= 50% of the PLC’s scan cycle time. The minimum default watchdog time-out value is then 32*2mS = 64mS.
The number of retries and IO update time should be increased in case of frequent timeouts on slower PC’s. The IO slot configuration should match the actual number of robots used in the project.
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.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
As of 2.9, the typical latency for a profinet command to reach a RTR controller is equal or less than one Profinet clock cycle.
GSD file