KUKA|prc can program E1 as a synchronized external-axis position, but a digital output such as $OUT[14] cannot carry a fractional speed command. For an Arduino-controlled pellet extruder, choose either a simulated E1 axis whose feedback is converted into an I/O command, or a separate extrusion-rate variable transmitted through configured fieldbus I/O. Keep the robot-motion synchronization limits of each approach explicit.
Understand What E1 Represents
E1 is a programmed external-axis position, not inherently an extrusion-speed value. In an extrusion application, a continuously increasing E1 target can represent cumulative material feed. During each robot move, the controller coordinates E1 so that it starts at its initial position and reaches its programmed target when the robot reaches the motion endpoint.
This position-based model lets the controller derive the external-axis motion needed for each segment. It is therefore different from assigning an independent instantaneous extrusion rate. Using a real configured external axis requires compatible KUKA axis hardware according to the supplied evidence; the proposed Arduino stepper does not directly satisfy that arrangement.
Select the Control Architecture
| Architecture | Command meaning | Synchronization | Key constraint |
|---|---|---|---|
| Configured physical E1 axis | External-axis target position | Handled as part of the programmed robot move | Requires the supported KUKA external-axis hardware described in the evidence |
| Simulated E1 plus background mapping | E1 remains a position trajectory; controller logic converts its feedback to an output | E1 trajectory follows the robot move, but the external stepper follows the mapped signal | WorkVisual configuration, KRL mapping, communications, and stepper response must be validated |
| Independent extrusion-rate command | Custom rate value sent through configured I/O | Not proven to be motion-synchronous by the evidence | The application must define update timing, scaling, and behavior during stops |
The simulated-axis method preserves the E1 trajectory in the generated program while avoiding a physical KUKA motor. However, reading that trajectory in sps.sub and commanding an Arduino introduces a separate control chain. Do not assume that this chain has the same endpoint synchronization as a physical external axis until measurements confirm it.
Configure E1 in KUKA|prc and WorkVisual
- In KUKA|prc, right-click the applicable motion component and enable the option that exposes external-axis values.
- Assign E1 targets as cumulative extrusion position when the slicer is intended to specify material feed per motion segment. Ensure successive values describe the required direction and amount of feed.
- In WorkVisual, add E1 as a simulated axis by selecting the corresponding simulation option.
- Deploy the configuration through the controller's approved project workflow and confirm that the controller accepts motion programs containing E1 targets.
- In the continuously executing
sps.sublogic, read the verified E1 feedback quantity and scale it into the configured output data type.
If the extruder needs a rate command, verify the correct E1 velocity system variable in the applicable KUKA System Variable documentation. The evidence offers a possible variable name but explicitly does not confirm it, so do not deploy that identifier without checking the controller documentation.
Do Not Use a Digital Output as an Analog Command
$OUT[14]=TRUE and $OUT[14]=FALSE provide discrete start/stop control. Assigning $OUT[14]=0.5 does not turn that digital channel into an analog output. A variable extrusion command requires a configured analog output or cyclic fieldbus data mapped to an appropriate KRL variable.
For fieldbus transport, configure matching data types and scaling at both ends. If the selected channel accepts only integer data, use an agreed scale factor: transmit rate × scale and reconstruct it in the microcontroller as received value ÷ scale. Select the scale from the required range, resolution, and integer capacity; do not assume an arbitrary multiplier is safe.
For analog transport, first identify whether the industrial output is 0–10 V or 4–20 mA. Neither signal should be wired directly to an Arduino analog input without a correctly designed interface. Provide voltage or current conversion, input protection, common-reference or isolation provisions, and fault-level protection. Artificially restricting a 0–10 V command to a small part of its span sacrifices resolution and does not protect the input from a full-scale fault.
Define Scaling and Stop Behavior
Document the mapping before writing controller or Arduino code. Define the E1 engineering unit, whether the transmitted value is position or speed, the command minimum and maximum, the raw I/O range, sign handling, and the extruder's response to invalid or stale data. If cumulative E1 position represents material length, the receiving controller must derive stepper motion from position changes; if E1 velocity is transmitted, the Arduino can map that command directly to step rate after applying validated limits.
Retain the existing isolated start/stop output if it serves as an enable, but define its priority over the rate command. A stopped or disabled state must not leave the extruder running because the last analog or fieldbus value remains nonzero. The evidence does not specify watchdog timing or a safe-state value, so determine both through the machine risk assessment and implemented I/O design.
Verify the Complete Signal Chain
- Run a program with known monotonic E1 targets and confirm that the simulated E1 position follows the commanded trajectory.
- Monitor the verified KRL feedback variable and the mapped raw output simultaneously. Confirm direction, scale, saturation, and behavior when E1 is stationary.
- Measure the electrical signal at the controller interface before connecting the Arduino. Confirm its type and maximum possible fault level against the interface circuit's limits.
- Connect the Arduino interface and compare the received engineering value with the controller value across the full configured range.
- Execute representative LIN and PTP segments and measure deposited material through corners, short layers, starts, stops, and program interruptions. Treat synchronization as validated only if the measured extrusion response meets the process requirement.
FAQ
Can I write $OUT[14]=0.5 to control extrusion speed?
No. $OUT[14] is a digital output and supports discrete states such as TRUE and FALSE. Use a configured analog output or fieldbus value for a variable command.
Does KUKA E1 specify extruder speed or extrusion position?
E1 specifies an external-axis target position. A slicer can use cumulative E1 position to represent material feed, while the controller coordinates that target with each robot motion.
How can an Arduino extruder follow KUKA E1 without a KUKA motor?
Configure E1 as a simulated axis in WorkVisual, expose E1 values in the KUKA|prc motion component, and map verified E1 position or velocity feedback through sps.sub to protected analog or cyclic fieldbus I/O. Validate scaling and synchronization on the complete machine.