DX100 Indirect Addressing: EXPANDED Enables Arrays

Mark Townsend6 min read
Other ManufacturerRoboticsTechnical Reference
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

DX100 indirect or array register addressing becomes available when the controller language level is set to EXPANDED. Start at MAIN MENU - SETUP - TEACHING CONDITIONS; after changing the level, you may also need DATA - RESET INSTRUCTION. The math-command detail editor should then expose brackets for an indexed operand. Build the position-component assignment through that editor because the example PR[4,3]=R[R[5]] describes the required behavior but does not establish the DX100 instruction syntax.

Read the panel symptom first

Start here. Open the detail editor for the math instruction that will perform the assignment. The visible operand choices tell you whether you have a language-level problem or an expression problem.

Panel symptom Most likely cause or next check
No bracket option appears in math-command detail edit The language level is not EXPANDED, or the instruction editor has not been reset after the change.
Brackets appear, but the editor rejects the operand The selected command, target component, or index operand is incompatible with that field. Rebuild the operation one operand at a time.
The command runs but reads the wrong register The pointer register contains the wrong index, changed before evaluation, or was populated incorrectly from the group input.
The indirect value is correct but the position does not change The source lookup works; the remaining fault is the position-component assignment, data type, or target selection.
A direct register reference works, but an indirect reference does not Focus on the index expression and language configuration. That is not a position-data fault.

Do not start by rewriting the position data or replacing the source register. If the editor does not offer brackets, changing runtime values cannot fix the missing language feature.

Separate the pointer from the payload

An indirect reference performs two reads. The controller first reads a pointer value, then uses that value as the number of the register containing the payload.

  • Pointer: R[5] in the supplied example.
  • Pointer value: 7 when R5 = 7.
  • Resolved source: R[7].
  • Destination intent: component 3, described as Z, of position register 4.

Keep those stages separate during commissioning. A displayed value of 7 in the pointer proves only that the first read succeeded. It does not prove that the indexed source is legal, that the intended source register was selected, or that the position component accepted the result.

A group input adds another conversion boundary. The input pattern represents a numerical selector, while the array operation needs an acceptable index operand. If the detail editor accepts the group input directly in the index field, use it there. If it rejects that operand type, copy the numerical selection into a register first, then use that register as the pointer. The editor is the authority on operand compatibility.

Enable the indexed instruction set

  1. Place the robot and process in a condition where editing and a controlled test cannot initiate unintended motion.
  2. Record the current teaching-condition settings and preserve the affected job before changing the language configuration.
  3. Open MAIN MENU - SETUP - TEACHING CONDITIONS.
  4. Change the language level to EXPANDED.
  5. Return to the math command and open its detail editor. Look for the bracket choices used for array or indirect addressing.
  6. If the brackets remain unavailable, perform DATA - RESET INSTRUCTION when the controller requires it, then reopen the instruction editor.

Treat the language change and RESET INSTRUCTION as separate actions. Review the controller prompt before accepting the reset and follow the plant backup procedure. The reset is relevant when the editor has not exposed the expanded instruction choices; it is not a cure for a bad index value.

Build the assignment in detail edit

Use the DX100 command editor to construct the operation. Do not type the FANUC-shaped expression PR[4,3]=R[R[5]] and expect cross-platform syntax compatibility.

  1. Create or select the math command that writes a numerical value to the required position-data component.
  2. Open detail edit and select the destination position item.
  3. Select its required component. The requested example identifies component 3 as Z; confirm the component indication shown by the DX100 editor before executing the job.
  4. Select an array or indirect register operand for the source.
  5. Assign the pointer register as the index expression. For the example data flow, the pointer contains 7, so the resolved payload must come from register 7.
  6. Accept the instruction and inspect the rendered command. If the editor cannot combine the indexed source with a component destination, split the work: resolve the indirect value into an intermediate numerical register, then use a second math command to write that value to the position component.

The two-command method is also the better diagnostic form. It exposes the resolved payload independently of the position write. Once both stages operate correctly, retain the split form for clarity or combine them only if the editor supports the complete expression.

Verify each data path

  1. Choose a valid source register and record its value.
  2. Set the pointer register to that source-register number. In the supplied case, set the pointer value to 7.
  3. Record every component of the destination position before the test.
  4. Execute only the indirect-read stage, or single-step the complete assignment under controlled conditions.
  5. Confirm that the resolved numerical value equals the current content of register 7.
  6. Confirm that only the selected destination component changed and that its new value equals the resolved source.
  7. Change the pointer to a second valid register containing a distinguishable value and repeat the test. This proves that selection is indirect rather than accidentally fixed to register 7.
  8. If a group input supplies the selector, test each permitted input pattern and verify the numerical pointer before allowing the position write.

Use deliberately different source values so a stale or fixed reference is obvious. Do not prove this logic by commanding production motion first. Verify the data transformation, review the resulting position, and only then test motion under the applicable controlled-motion procedure.

Avoid the recurring dead ends

  • Editing values before enabling EXPANDED: no register value can make absent bracket controls appear.
  • Copying syntax from another robot family: preserve the data-flow concept, but construct the command from the DX100 editor choices.
  • Testing pointer and position write together: a failed final value leaves two unresolved stages. Test the indirect read first.
  • Leaving the index uncontrolled: validate the selector before dereferencing it. A group-input pattern can select an unintended register when wiring, bit order, or upstream logic differs from the intended numerical value.
  • Using identical test values: equal values in several registers can hide a fixed reference or stale pointer.
  • Confusing a valid lookup with a valid position: writing the expected number does not establish that the resulting position is safe or usable. Review the edited position before motion.
  • Repeating RESET INSTRUCTION after brackets appear: once array choices are visible, move to operand and data-path checks. Further resets waste time.

FAQ

Can I address a DX100 register indirectly?

Yes. Set the language level to EXPANDED, then use the brackets made available in the math-command detail editor for array or indirect addressing.

Can I use a group input to choose the source register?

Use the group-input value as the selector only if the detail editor accepts that operand type. If it does not, transfer the numerical selection to a register and use that register as the index.

Does EXPANDED mode make FANUC register syntax valid on DX100?

No. PR[4,3]=R[R[5]] documents the intended lookup and assignment, but you must build the DX100 command from its detail editor and confirm the rendered instruction.

When should I stop troubleshooting and contact official support?

Stop when brackets remain absent after selecting EXPANDED and applying the requested DATA - RESET INSTRUCTION, or when the editor cannot accept the required position-component and indirect-register operands. Escalate through the controller manufacturer's official support channel with the language setting, displayed instruction, editor screens, pointer value, and the exact stage that fails.

Back to blog