Overview
Yaskawa Motoman DX-100 and DX-200 controllers can be ordered with an integrated PROFINET slave option that exposes a fixed cyclic I/O image to the cell PLC. The DX-200 firmware publishes a status byte called Control group running in that image, where bit 0 reflects R1, bit 1 reflects R2, bit 2 reflects R3, and so on. The DX-100 firmware does not pre-populate that byte, which means a cell that was originally integrated against a DX-200 and is later migrated to a DX-100 loses the per-task motion-status bit the PLC was reading. This article documents the field-proven workaround: use the DX-100 Concurrent I/O subsystem together with a GRP block and a system job to republish the R1 group-running bit into a free PROFINET output bit, with no PLC program change required.
The technique is fully software-defined, survives power cycles, and is self-healing if an operator edits the PROFINET mapping from the pendant. It is intended for status signaling only and must not be used for any safety-relevant interlock.
Background: DX-100 vs DX-200 PROFINET Image
Both controllers map a fixed set of bytes to the PROFINET cyclic data. The slot layout is defined by the Yaskawa PROFINET GSD file. On the DX-200 the GSD publishes a slot that contains the Control group running byte populated by the firmware. On the DX-100 the equivalent slot is reserved but left to the integrator; the firmware writes the per-group running bits to an internal system status word, but it does not copy them into the PROFINET image automatically.
The reserved byte is reachable through the controller's I/O monitor and can be written to from a user program. That single fact is what makes the workaround possible: the integrator is expected to populate the reserved area through Concurrent I/O and a binding construct (the GRP block).
Architecture of the Workaround
The end-to-end data flow is:
- The DX-100 firmware maintains a system status word that already carries the per-group running information. In the reference implementation this is read from system address
#50440. -
Concurrent I/O copies that system status into an internal memory location (
#76670) on every controller scan. - A GRP block (PROFINET group binding) attaches that internal location to a free PROFINET output bit in the reserved area, identified by PROFINET group parameter
#30730. Because the group is byte-wide by default, the integrator must ungroup the byte to expose individual bits. - A system job executes the GRP instruction in a continuous loop so the binding survives job changes, pendant edits, and power cycles.
The result is a single PROFINET output bit that mirrors the DX-100 R1 running status, byte-and-bit-compatible with the DX-200 cell the PLC was originally written for.
Prerequisites and System Variable Reference
- Yaskawa Motoman DX-100 controller with the PROFINET slave option installed and commissioned. Confirm the controller part number on the nameplate.
- The Yaskawa PROFINET GSD loaded into the PLC engineering tool and a cyclic PROFINET connection established end-to-end.
- Programming pendant access at Maintenance or higher security level.
- Familiarity with the DX-100 Concurrent I/O and system job features. Refer to the official Yaskawa Motoman DX-100 Operator's Manual and the DX-100 PROFINET Option Manual for the firmware revision installed on the controller.
- A PROFINET analyzer (TIA Portal trace, Wireshark with PROFINET dissector, or commercial PROFINET diagnostic) for verification.
| Variable | Type | Direction | Meaning |
|---|---|---|---|
#50440 |
System status word (B) | Read-only | Per-group running status. Bit n = group Rn+1. |
#76670 |
Internal byte (B) | Read/Write | Free byte in the Concurrent I/O scratch area. Used as the staging location for the group-running bit. |
#30730 |
PROFINET group parameter | Configure | Reserved system area in the PROFINET image. Bound to an internal address by the GRP instruction. |
Concurrent I/O Allocation Procedure
Concurrent I/O on the DX-100 runs in parallel with the main job with a typical update period in the single-digit millisecond range. It is the only path on the DX-100 that lets a system status word reach a PROFINET slot without writing job code. The allocation window is opened from the programming pendant under In/Out > Concurrent I/O.
- Navigate to In/Out > Concurrent I/O > Allocate.
- Add a new entry with the following parameters:
-
Source:
#50440(group running status word) -
Destination:
#76670(internal memory area) - Width: 1 byte (B)
- Direction: System → Internal
-
Source:
- Enable the allocation and save the configuration to flash.
After this step, on every scan the bit pattern of #50440 is copied verbatim to #76670. Bit 0 of #76670 now mirrors the R1 running state. Bits 1 to 7 mirror R2 through R8 (and S1 through B1 if those groups are configured on the controller).
GRP Block Configuration
Yaskawa's PROFINET reserved area is exposed as 8-bit groups. Each GRP block binds one internal byte to one PROFINET slot. To expose a single bit you must first ungroup (split) the byte so the controller treats it as eight individual bit-level signals instead of one byte-level signal.
- Open In/Out > PROFINET > GRP Block (the path varies by firmware; in older revisions look under System > I/O > PROFINET Mapping).
- Select the reserved output byte identified by parameter
#30730. - Set the GRP block source address to
#76670. - Choose Ungroup to expose the eight individual bits rather than the byte as a single PROFINET word.
- Bind bit 0 of
#76670to the first free PROFINET output bit in the cell's reserved area. This is the bit the PLC will read as the R1 running status. - Save the configuration and cycle PROFINET communication from the pendant (In/Out > PROFINET > Restart) so the new binding is published.
After this step, the PROFINET image contains the R1 running bit at the same offset the PLC was previously reading from the DX-200. The PLC application does not need to know that the bit is now synthesized by Concurrent I/O rather than published by the firmware.
System Job Implementation
The GRP binding is volatile: it is re-applied only when the controller boots or when the system job runs. Implement a small system job that executes the GRP setup unconditionally and then loops forever. A minimal job body, adaptable to the controller's exact job syntax, is shown below.
// Job: PROFINET_GROUP_RUNNING_SETUP
// Purpose: bind #76670 to PROFINET output group #30730
// and re-establish binding on every controller scan.
DO
GRP #30730, #76670
// Optional: monitor the binding status and raise an alarm
// if the PROFINET link is down.
LOOP
Notes on the body:
- The
GRPinstruction writes the same binding that the pendant's GRP block UI writes. Running it from a system job is functionally equivalent to clicking Apply in the UI on every scan. - The
DO/LOOPpair makes the binding self-healing: if an operator edits the PROFINET mapping from the pendant, the next scan of the system job restores the application binding. - If you prefer a one-shot behavior (set once at boot, never re-applied), replace
DO/LOOPwith a flat sequence. The trade-off is that any manual change to the PROFINET mapping will persist until the next power cycle.
Loop Semantics: One-Shot vs Continuous
Two valid execution models exist for the system job. Choose based on the operator workflow on the cell.
| Model | Code shape | Behavior | Use when |
|---|---|---|---|
| One-shot | Flat sequence, no loop | Binds once when the job is loaded, then idles | Binding must not be changed by pendant edits |
| Continuous (recommended) |
DO ... LOOP infinite |
Re-binds every scan; resilient to operator changes | Cell is shared with operators who occasionally edit I/O |
PLC-Side PROFINET Integration
On the PLC side (Siemens S7-1500/S7-1200, Allen-Bradley CompactLogix/ControlLogix with a PROFINET scanner or EtherNet/IP-to-PROFINET gateway, Beckhoff CX, etc.) the integration is identical to the DX-200 cell:
- Load the Yaskawa PROFINET GSD into the PLC engineering tool.
- Map the slot that contains the reserved output byte to a tag or DB. In TIA Portal this is a Word or Byte tag inside the I/O data of the Yaskawa device; in Studio 5000 it is a tag inside the input assembly of the PROFINET device.
- Alias the R1 running bit to the application tag. For Siemens this is typically
"Yaskawa_Inputs".R1_Running : BOOLwith an AT view on byte 0 bit 0; for Allen-Bradley it is a BOOL member of the input tag with the bit number set in the tag properties. - Use the tag in the same way the original DX-200 cell used it. No PLC program change is required.
For cross-vendor PROFINET conformance, refer to the PROFINET installation guidance from PROFIBUS & PROFINET International (PI). The binding is plain PROFINET and does not require any vendor-specific function block on the PLC side.
Verification and Commissioning
- From the pendant, navigate to In/Out > Concurrent I/O > Monitor and confirm that
#76670tracks#50440bit-for-bit. Force a group start from the pendant and watch the bits toggle. - Open In/Out > PROFINET > Status and verify that the reserved byte at
#30730shows the running pattern. - On the PLC side, place a watch on the R1 running tag and jog the robot. The bit must assert on the rising edge of motion and clear on the falling edge, with a latency in the single-digit millisecond range.
- Capture a PROFINET frame trace and confirm that the bit toggles in the cyclic image. Verify the slot direction in your GSD before relying on the trace — the bit is an input from robot to PLC in the standard DX-200 layout.
- Power-cycle the DX-100 and confirm that the binding is re-established automatically by the system job, without operator intervention.
- Edit the PROFINET mapping manually from the pendant and confirm that the continuous-loop system job restores the application binding within one scan.
Troubleshooting Matrix
| Symptom | Likely cause | Action |
|---|---|---|
| Bit never asserts in PLC | Concurrent I/O entry disabled | Pendant: In/Out > Concurrent I/O > Allocate; verify #50440 → #76670 is enabled and saved to flash. |
| Bit asserts but stays latched | System job not running, or GRP block written to wrong parameter | Pendant: Job > Select; verify the system job is selected and the controller is in AUTO or PLAY mode. Verify GRP target is #30730. |
| Bit toggles in pendant monitor but not in PLC | PROFINET GSD slot or offset mismatch | Compare the PROFINET I/O map printed by the controller with the slot list in the PLC engineering tool. Recompile the PLC hardware configuration if the slot order changed. |
| Binding lost after operator edits I/O | One-shot system job variant | Convert the job to a DO/LOOP continuous body. |
| Bit asserts with 200–400 ms latency | Concurrent I/O scan time is too slow for the application | Move the status read into a high-speed task, or publish the status as a fast digital output directly from the job if sub-10 ms response is required. |
| Multiple groups, only R1 exposed | GRP block still grouped at byte level | Re-open the GRP block and choose Ungroup. Map additional bits (#76670.1, #76670.2, ...) into the same reserved area. |
| Bit works in T1 but not in AUTO/RUN | System job priority not set | Pendant: System > Job Priority; raise the system job to the lowest priority above motion so it runs in all modes. |
| Bit stuck after firmware upgrade | PROFINET reserved area address changed | Re-print the I/O map from the controller, confirm #30730 is still valid, and re-enter the GRP block. |
Limitations and Field-Proven Caveats
- This workaround is firmware-version sensitive. Yaskawa has changed the PROFINET reserved area address between major DX-100 firmware revisions. Always confirm
#30730against the I/O map printed by the controller for the firmware you have installed. - The Concurrent I/O update period is not deterministic in the strict sense. For safety-rated signals (e.g., safe motion stopped) use the DX-100 safety PROFINET module or hardwired safety circuits — never the Concurrent I/O group running bit.
- Do not use the R1 running bit as the only criterion for safety interlocking. The bit reflects command state, not actual mechanical state. For safety, read the encoder-based position or use the controller's safety outputs.
- If the cell uses more than one group (R1, R2, S1, B1, etc.), the same technique can be repeated for the other bits in
#76670by ungrouping the byte and binding each bit to a separate PROFINET output. - The
DO/LOOPsystem job survives manual pendant edits only if the system job priority is set correctly. Refer to the DX-100 Operator's Manual section on system job priority for the correct value on your firmware. - Concurrent I/O is consumed at boot time and is not affected by mode changes. It is, however, cleared by a controller cold start, so the system job must run early in the boot sequence — typically it is selected as the default job.
Does the Yaskawa DX-100 PROFINET interface expose a Control group running byte by default?
No. The DX-100 reserved PROFINET area is not pre-populated with the group running byte that the DX-200 publishes. The standard field workaround is to bind the system status word (#50440) to the reserved PROFINET area (#30730) using Concurrent I/O (#76670) and a GRP block driven by a system job.
What is the GRP block in the Yaskawa DX-100 PROFINET configuration?
GRP (group) is a Yaskawa PROFINET construct that binds an internal byte address to a PROFINET slot. Each GRP block groups 8 outputs or 8 inputs; to expose a single bit you must ungroup the byte and bind the individual bit to the desired PROFINET output.
Should the system job that runs the GRP block be one-shot or infinite loop?
Both work. A DO/LOOP infinite body is the recommended pattern because it self-heals if an operator edits the PROFINET mapping from the pendant. A flat one-shot body is acceptable if you want to lock the binding against manual edits.
Can the same technique expose R2, R3, or S1 running on the same DX-100?
Yes. #50440 carries the running bits for all logical groups. After ungrouping #76670, bind bit 1, bit 2, etc. to additional reserved PROFINET output bits in the same #30730 block. The PLC then sees R1, R2, R3, and S1 running exactly as it would on a DX-200.
Is the Concurrent I/O group running bit fast enough for safety interlocks?
No. The Concurrent I/O scan period is in the single-digit millisecond range and is not safety-rated. Use the DX-100 safety PROFINET module or hardwired safety circuits for any safety-relevant signal, and treat the group running bit as a status indicator only.
What happens to the binding after a DX-100 firmware upgrade?
Yaskawa has changed the PROFINET reserved area address between major firmware revisions. After an upgrade, re-print the I/O map from the controller, confirm #30730 is still valid, and re-enter the GRP block. The Concurrent I/O entry is preserved across upgrades in most revisions but should be verified.