Troubleshooting iFIX Text Entry with Logix STRING Tags

Mark Townsend9 min read
Allen-BradleyHMI / SCADATroubleshooting
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

You type a comment on the iFIX 2022 picture, press Enter, and the value returns to 0. Start here: separate the editable screen object from the actual write path. The box accepting keystrokes only proves that the picture object entered edit mode; it does not prove that the TX block wrote a Logix string.

The working path is iFIX picture object to TX block, through IGS, to the base Logix STRING tag in the 1756 controller. Test each boundary in that order. Adding array syntax, copying a tag to itself, or changing unrelated display scripts wastes time until that direct path works.

Start with the panel symptom

Watch the value at three points: inside the editable object before Enter, at the TX block after Enter, and at the controller tag while the write occurs. That gives you the first decision.

Symptom Likely fault boundary Next check
Characters appear while typing, then the field shows 0 The object accepts input, but the TX block is not committing a string or is reading back a non-string value Verify the TX block data type, write trigger, and IGS item target
Adding .DATA or .LEN produces “missing ref to array element” An array member is being addressed as though it were a complete scalar string Return the IGS item to the base Logix string tag
The controller string changes, but the display contains trailing characters The displayed data is not being limited by the current string length Enable Terminate String Data at LEN in the TX block configuration
A COP instruction runs, but the entry still disappears The fault remains upstream of the PLC copy, or the copy source and destination are wrong Prove the direct SCADA-to-controller write before using any copy

If the controller tag changes correctly when Enter is pressed, the communications write succeeded. Move to display readback and length handling. If it never changes, stay on the TX block and IGS configuration; PLC copy logic is not the first fix.

Decide where the comment belongs

Choose the storage layer before changing configuration. A control-room note that only operators read can remain at the SCADA layer, especially in a distributed SCADA system. That avoids consuming controller memory and separates operational notes from control logic.

Store the text in the 1756 controller when PLC logic, multiple HMI nodes, or another controller-facing client must read the same current value. The standard Logix STRING capacity in this setup is 82 characters, which matches the stated requirement.

If comments must be historical, searchable, attributable, or retained as multiple records, one current PLC string is the wrong data model. A database-backed design using the IGS ODBC path and TX tags can hold records rather than only the latest entry. That is a separate architecture decision; do not introduce it merely to repair a failed write of one 82-character value.

Take this reading: determine whether the requirement is one shared current comment or a comment history. For one current comment, continue with the base Logix string. For history, define the database record fields and retention requirements before configuring the picture.

Target the base Logix STRING through IGS

Inspect the IGS item referenced by the iFIX TX block. It should target the base string tag directly. IGS understands the Logix string structure, so the normal path does not require separate iFIX references to .LEN and .DATA.

The error “missing ref to array element” appears when the configuration reaches into the string’s data array without selecting an element or without using a data type that matches that member. That is not evidence that you need another array. It is evidence that the selected address no longer represents the complete string expected by the TX block.

  1. Open the IGS item used by the TX block.
  2. Read the configured controller address.
  3. If it ends in .DATA, .LEN, or an individual data element, replace it with the base STRING tag for this test.
  4. Read the controller tag online while issuing a write from iFIX.
  5. If the base tag changes, proceed to length and display verification. If it does not, inspect the TX block write operation next.

Do not create a separate array just to transmit a normal 82-character Logix string. A larger custom type becomes relevant only when the required text exceeds that capacity, and both IGS and iFIX must then be configured for the custom structure.

Check the TX write and Enter action

Now prove that Enter causes a write rather than only ending edit mode. The object can display typed characters locally even when its data source is numeric, read-only, incorrectly addressed, or never triggered to write.

  1. Open the picture object configuration and identify the exact TX block or data source bound to the entry field.
  2. Confirm that the bound path is the same TX block whose IGS item targets the base Logix string.
  3. Enter a short, distinctive value that fits comfortably within 82 characters.
  4. Keep the controller tag open online and press Enter once.
  5. If the controller value changes and then changes back, identify which client or PLC instruction performs the second write.
  6. If the controller value never changes, inspect the TX block for a string-compatible configuration and a write action associated with the entry event.

A displayed 0 often marks a type or binding problem: the field has completed editing and then refreshed from a source being interpreted as numeric. Read the configured object source and TX block type rather than treating 0 as text returned by the controller.

If a direct write tool available in the configured IGS environment can write the base tag, the controller path and tag are usable. Focus on the iFIX object-to-TX binding. If the same base item cannot write outside the picture, focus on IGS item configuration, communications status, and controller access.

Treat LEN and DATA as one string

A Logix STRING is structured data: .LEN records how many characters are valid, while .DATA is the byte array that holds the characters. Both parts must describe the same value. Writing bytes without a matching length can leave the logical string empty or expose stale trailing data; writing only the length does not create character data.

That mechanism does not mean the HMI should normally write both members separately. With IGS handling the native Logix string, address the base tag and let the driver transfer the structure coherently.

Use member-level inspection only as a diagnostic:

  • If .DATA changes but .LEN stays at zero, the write path is not treating the destination as a complete string.
  • If .LEN matches the typed character count but the data bytes do not change, inspect the address and data conversion.
  • If both change correctly but iFIX shows 0, inspect the picture readback binding and its interpretation of the value.
  • If both change and later revert, look for another writer, including PLC logic or another SCADA client.

Do not calculate or force .LEN in ladder merely to compensate for an incorrectly configured HMI item. Correct the base-tag transfer first.

Remove COP from the fault path

A COP from a string tag to itself cannot repair an iFIX write. It reproduces the same data in the same location and adds no useful state change.

If PLC logic genuinely needs a second string, copy the complete source string tag to the complete destination string tag. Do not use a copy as an intermediary until the source tag demonstrably receives the submitted text. Otherwise, the copy only propagates an empty, zero-length, or stale value and hides the original boundary failure.

Disable or bypass competing test copies during diagnosis when they can overwrite the destination. Then monitor the base destination for one complete entry cycle. If it holds the value, reintroduce required logic one operation at a time and identify the instruction that changes it.

Configure termination at LEN

In the iFIX PDB configuration for the TX block, enable Terminate String Data at LEN. This makes the displayed or transferred text stop at the valid length rather than carrying unused bytes beyond it.

This setting addresses trailing garbage when .LEN is shorter than the available data capacity. It does not substitute for a successful write, correct an item aimed at the wrong member, or turn a numeric binding into a string binding. If pressing Enter still returns 0 and the controller tag never changes, go back to the TX write and IGS address checks.

After changing the setting, test three values: a short entry, a longer entry, and then a shorter entry again. The final shorter entry is the useful check because stale bytes from the previous longer value may remain in storage; the visible value must end at its current .LEN.

Apply and verify the resolving path

  1. Use one controller tag of the standard Logix STRING type when 82 characters meet the requirement.
  2. Point the IGS item at the base string tag, not separate .DATA or .LEN members.
  3. Bind the editable iFIX object to the corresponding TX block and confirm that Enter invokes its write path.
  4. Enable Terminate String Data at LEN in the PDB TX block.
  5. Remove the self-copy and temporarily isolate any logic or client that can overwrite the destination.
  6. Enter a distinctive short value and watch the base controller string, .LEN, and .DATA.
  7. Enter a longer value, followed by a shorter value, and confirm that the shorter text displays without trailing characters.
  8. Test from every SCADA node that must share the comment. Confirm which layer owns the value and which clients are allowed to write it.

Pass the test only when Enter changes the controller string, the length matches the entered character count, the picture reads back the same text, and the value remains stable after the screen refreshes. If the controller changes but the picture does not, repair readback. If the controller never changes, repair the TX-to-IGS write path.

FAQ

What happens if iFIX targets .DATA instead of the base Logix STRING?

The TX block no longer addresses the complete native string structure and may report “missing ref to array element.” Point the IGS item at the base string tag so the driver handles .LEN and .DATA together.

What happens if LEN stays at zero after characters are written?

The logical Logix string remains empty even if bytes exist in .DATA. Verify that IGS writes the base string rather than attempting a member-level transfer.

What happens if the comment exceeds 82 characters?

The standard Logix STRING used here cannot hold the full entry. Define a custom structure with the same length-and-data pattern and a larger data array, then verify that every PLC, IGS, and iFIX endpoint supports that structure.

What happens if a direct base-tag write still resets to 0?

Stop when the controller never receives the write, the communications diagnostics report a persistent failure, or a confirmed write is immediately overwritten by an unidentified client. Escalate iFIX or IGS configuration faults through their official support channel; escalate controller tag access or unexplained 1756 behavior through Rockwell Automation official support. Provide the TX configuration, IGS item address, communications diagnostics, controller tag snapshots, and the exact entry sequence.

Back to blog