In the described Omron NX project, PLC execution was not the main bottleneck: EtherCAT mapping, online edits, library updates, and NA5 HMI constraints drove the integration effort. Use the checks below to separate a screen or compile symptom from a tag binding, project synchronization, or device process-data issue before choosing an architecture.
How can you tell whether online monitoring matches the controller program?
Start with the controller’s synchronization state, not the color of an online rung. The described project showed green and yellow online lines even when the displayed program had not been uploaded. Those colors alone therefore did not prove that the editor view matched the code executing in the controller.
| Reading on screen | What it tells you | Next check |
|---|---|---|
| Green or yellow logic lines | Online monitoring is showing a state, but the colors alone do not establish that the displayed source is the controller-resident program. | Check transfer and synchronization status for the project and controller. Confirm the changed logic is present in the running project before diagnosing its behavior. |
A variable displays as undefined in a function |
The online function view may not expose that variable’s current value. Do not treat the display as a zero or as proof the function did not execute. | Inspect the value in the watch table where available, then verify the function’s call path and the controller’s actual state. |
| Function-block output appears blank in Ladder, but a watch table shows it | The Ladder view may not render the value, including for an array output. | Use the watch table for the value check and separately confirm the block call is executing. |
When the editor and controller disagree, first establish which project is online and whether synchronization completed. Only then follow the variable from the rung or HMI binding to its global declaration and, for mapped I/O, to the controller’s process-data assignment. This prevents a misleading editor display from being mistaken for a bad tag or field device.
What does a Ladder call error reveal about a function-block interface?
A PLC library can compile on its own and still fail when a function block is used from Ladder. In the described project, the call context required Boolean input and output pins, and EN and ENO were reserved names. A library-only build did not catch the incompatibility that appeared when the block was placed in a Ladder program.
- Inspect the block’s declared input and output types. Add Boolean pins where the Ladder call requires them, even if the block’s internal logic does not otherwise use those signals.
- Check every formal parameter for reserved names such as
ENandENO; rename application-specific pins rather than using reserved identifiers. - Compile a small Ladder consumer that calls the block. Treat that call-site build, not only the library build, as the interface test.
If the call compiles after the interface changes, proceed to test the block in its real calling context. If it still fails, inspect the call-site pin assignment and declared types before changing the block’s internal logic. The key diagnostic distinction is between a library that is syntactically valid and an interface that the target program can actually consume.
Which global-variable layout matches the EtherCAT process-data rows?
Read the device’s I/O mapping before designing the application data structure. Sysmac Studio presents the process data exposed by the device and its ESI description; it does not necessarily let the project bind those rows directly to one convenient application structure. In the described Fanuc robot mapping, 512 input bits and 512 output bits appeared as eight rows: four read rows and four write rows, each represented as an array of UINT[0..7]. The project required eight matching global variables.
| Device mapping shown | Binding implication | Application-layer action |
|---|---|---|
Fanuc robot: four rows in each direction, each UINT[0..7]
|
Use eight global variables matching the exposed row shapes; a single differently based array or custom structure was not selectable in this mapping. | Translate the raw words into named application fields in a separate conversion layer. |
| SMC FDL unit: 64 bytes | The described mapping required one global variable for each byte. | Keep the raw-byte binding explicit, then convert it to a human-readable representation in program logic. |
| EtherNet/IP smart camera or reader | The described project found this path more accommodating for linking a custom structure. | Verify the device’s actual connection data shape and binding options before reusing that approach elsewhere. |
For each EtherCAT device, take these readings in order: the number and direction of the mapped rows, the data type and array bounds shown for each row, and the application fields that consume the data. If the exposed shape matches the intended global variables, map it and test the direction of data flow. If it does not, keep the device-level globals aligned with the exposed rows and add a conversion layer to a structure that the application can use. Do not try to solve an inconvenient mapping by silently changing array bounds or field order; verify the device description and the actual process-data layout first.
This creates extra declarations, but it separates a constrained fieldbus binding from readable program logic. Give each raw variable a distinct device-and-direction name, and avoid relying on browsing nested members of a global data type inside a function block: that member-level view was unavailable in the described workflow. Test the conversion with known input and output patterns before using the structure for machine decisions.
What should you verify before relying on non-Omron EtherCAT features?
Check device configuration and safety communication as separate compatibility questions. The described integration could not use EoE (Ethernet over EtherCAT) to configure devices such as IO-Link masters and some drives. It also found FSoE operation with Omron devices but not with the non-Omron devices in use. Those are project constraints to test against the exact device combination, not a reason to assume all EtherCAT devices behave alike.
- For every device that needs Ethernet-based configuration, confirm whether its required setup path depends on EoE and test that path in the intended Sysmac Studio/controller configuration.
- For a safety device, verify the complete FSoE endpoints and configuration path before selecting EtherCAT as the production network.
- If a device supports another fieldbus, test its commissioning, process-data mapping, and runtime behavior on that alternative. The described project found Profinet configuration more polished for devices offering both choices.
When ordinary device I/O is the issue, return to the row-by-row mapping check. When configuration traffic or safety communication is the issue, a correctly mapped process-data tag will not fix it: validate the device’s separate configuration or safety path. EtherNet/IP was easier to use for smart cameras and readers in the described project because a custom structure could be linked to a device, but verify that behavior with each connection rather than extrapolating it to every device.
Can the separate SL-* safety controller meet the logic requirement?
Identify which controller executes the safety logic. In the described NX arrangement, the SL-* safety controller was a separate device on the NX bus; the standard PLC was not itself the safety logic controller. The SL-* workflow used block programming rather than the Ladder or structured-text workflow expected by the engineer, and the available logic in that project was limited to simple gates and timers.
Read the required safety functions and compare them with the exact safety controller’s supported blocks and programming method. If the requirement fits the available gate-and-timer logic, build and validate the safety program on that separate controller. If the design depends on more complex logic or a particular programming workflow, confirm that capability before committing to the architecture. The described experience compared its safety functionality to a configurable safety relay; treat that as a reason to test the required functions, not as a substitute for checking the controller’s specifications.
Then verify the network and safety device combination independently. A successful standard EtherCAT exchange does not prove that FSoE works with the selected safety devices. Confirm the safety controller’s own status and device communication after configuration, and validate the safety functions using the project’s approved commissioning process.
Which edits fit the current online-edit window?
Read the edit type before stopping the controller. The described online-edit workflow had narrow limits: it allowed adding local variables, but not removing variables, changing data types, or adding and removing global variables through the usual rung-oriented workflow. A separate route was reported for adding a global variable while online: open the Global Variables page and initiate the edit from a menu there. That route was add-only, not permission to make arbitrary project changes online.
| Requested change | Decision | Check before proceeding |
|---|---|---|
| Add a local variable | May fit the described online-edit limits. | Confirm the variable belongs to the intended program or block and verify the online edit completes. |
| Add a global variable | Try the Global Variables page and its menu-based online-edit route. | Confirm the project accepts the addition and that the controller and HMI see the same declaration. |
| Remove a variable, change a data type, or alter an existing global interface | Plan a project synchronization outside the limited online-edit path. | Identify affected programs, blocks, and HMI bindings before scheduling the change. |
NA5 screens in the described project could link only to global variables. Therefore, adding a value to an HMI screen starts with the screen’s required global tag: check whether it exists, add it through the Global Variables page if the online route is available, and then verify the HMI binding. If the requested change needs a structural edit, plan for the controller stop and synchronization required by that workflow instead of trying to disguise it as a local online edit.
Also distinguish a binding problem from a naming collision. A block input/output named Setting conflicted with use of a Setting namespace in the described project, reflecting a flat internal name space. Use unique interface names and compile the actual consuming program. For example, in the reported IAG case, changing the second input name from Setting to SettingRobot allowed syntax help to show the intended my_robot_setting_udt members rather than the other IAG’s my_device_setting_udt members.
How should PLC and HMI library changes be propagated?
First identify the library type. Sysmac Studio used separate PLC-code and HMI libraries in the described workflow, and a library edit required a second Sysmac Studio instance. Do not assume that updating one library type updates every PLC, HMI, or reusable object.
| Change | Propagation behavior described | Required check |
|---|---|---|
| PLC library update in a multi-PLC project | Update the library in each PLC manually. After that update, functions, function blocks, and user-defined types update automatically. | Visit each PLC and verify the library version and compiled dependent code. |
| HMI library update | The updated library applies to all HMIs, but each IAG must be replaced manually. | Check every screen using an IAG and confirm the replacement instance and bindings. |
| IAG using PLC structures or enums | The described IAG library could not link to the normal PLC library’s data types; structures had to be recreated manually, and enums did not work in IAGs in that workflow. | Keep duplicated type definitions aligned and test enum-like values; the project used USINT values instead of enums. |
For a PLC library edit, the described sequence was: make the change in the library instance, compile the library, disconnect from the PLC if connected, update the library, and synchronize the PLC. The synchronization required STOP even for a small change in that workflow. One Boolean change took about five minutes on the reported machine; use that only as a planning observation for that setup, not as a product-wide timing guarantee.
Before release, compile both the updated library and each project that consumes it. For a multi-PLC project, repeat the manual update per PLC. For an HMI library change, replace every IAG instance and check its member bindings. Build both IAGs when two objects use similarly named inputs: the syntax-help issue described above could show members from the wrong type until the input name was unique. Avoid nesting IAGs; the described implementation did not allow an IAG to contain another IAG.
Will an NA5 screen support the required IAG behavior?
Check screen composition, binding, text, and animation requirements before building reusable NA5 views. In the described system, a TabPage could not contain an IAG, an IAG could not contain another IAG, and dynamic text in an IAG did not work for displaying different text for each numeric value. The HMI could link only global variables. These limits can force a flatter screen design and explicit global tags.
| Screen requirement | Constraint to test | Design decision |
|---|---|---|
| Nested reusable panels | IAG nesting and placing an IAG in a TabPage were unavailable in the described workflow. | Prototype the screen hierarchy early; do not base the design on nested IAGs. |
| Text changes by numeric value | Dynamic text in an IAG did not work in the described project. | Test the exact display behavior before authoring all states; select another tested screen pattern if required. |
| Multilingual labels and buttons | Each language entry required text, font size, and weight. | Review all three properties for every translated control, not just the translated string. |
| Resize or animate geometry | Changing an IAG’s width and height was not true scaling and could break animation; animation of lines or polygons from point arrays was unavailable. | Fix dimensions early and prototype the exact animation before copying it across screens. |
| Web content or custom behavior | The described NA5 lacked a web view; Visual Basic behavior was poorly documented in that workflow. | Qualify required scripting against the installed editor and target before making it a core design dependency. |
If an operator reports that an object shifted or animation broke after resizing, inspect the IAG’s width and height and its animation dependencies; do not expect scaling to preserve geometry. If a value displays but its label does not change, inspect the IAG’s dynamic-text requirement rather than the PLC tag first. Then follow the tag binding to the global variable and verify the controller value independently.
How should you release a changed NX project?
Use the smallest change path that matches the requested edit, but verify every layer affected by that path. The described platform was considered suitable for simple machines and servo control, while mapping and library overhead made larger projects or frequent online changes costly in engineering time. Make that decision from the actual number of devices, data rows, reusable objects, and expected changes—not from PLC scan speed alone.
- Classify the symptom. Record what the operator sees, the exact HMI object, tag name, and current displayed value. Decide whether the issue is a missing/stale screen value, a Ladder call/build error, a mapped I/O value, configuration traffic, or safety communication.
- Trace the binding. For an HMI value, follow the global variable binding. For an I/O value, follow the global variable to its EtherCAT row or EtherNet/IP connection data. Check direction, type, and array bounds against the mapping actually shown.
- Select the edit path. Use a limited online edit only for a supported addition. For library, data-type, or structural changes, plan the required disconnect, synchronization, and STOP condition described for that workflow.
- Build consumers. Compile the library, the Ladder call sites, each affected PLC, and the HMI project. Update each PLC library manually and replace each affected HMI IAG instance.
-
Synchronize and verify live behavior. Confirm the controller contains the intended program, inspect values through a reliable online view such as the watch table when function monitoring shows
undefined, and check that each HMI object displays the controller value expected from its tag.
For a mapping correction, finish by exercising a known input and output through the raw process-data globals and conversion layer, then confirm the application structure and operator screen show the same state. For any release, the final verification is a live check that the controller-resident program, mapped value, and displayed HMI value agree.
What do engineers ask about Omron NX changes?
What happens if Sysmac Studio shows green or yellow lines online?
Do not use rung color alone as proof that the controller runs the displayed source. Check transfer or synchronization status and verify the value in a suitable online view before changing logic.
What happens if an EtherCAT device exposes arrays instead of a structure?
Match the mapped global variables to the device’s shown rows and array bounds, then convert those raw values into an application structure. The described Fanuc mapping used eight globals, each corresponding to a UINT[0..7] row.
What happens if I need to add an HMI variable during online operation?
Try the menu-based online-edit route from the Global Variables page; the described route allowed additions, not general variable removal or data-type changes. Verify the global tag, controller value, and NA5 binding after the edit.
What should I verify after updating an HMI library?
Check every HMI and manually replace each affected IAG, then validate its bindings and displayed value. After syncing, read the added or updated global variable online and confirm the NA5 object displays that live value; this is the final verification step.