Configuring ScreenMaker 5.11 Visibility from RAPID

Erik Lindqvist9 min read
ABBHMI ProgrammingTechnical 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

A ScreenMaker object stays visible even after RAPID changes the intended state because ScreenMaker 5.11 cannot bind its Visible property directly to a controller object. Use an ActionTrigger to listen for a RAPID variable change, update an application variable in the trigger's Change event, and bind that application variable to Visible. Set the object's default Visible value to TRUE; that initial state is required to start the binding mechanism. Keep screen navigation inside the ScreenMaker structure unless the deployment process also controls RAPID-to-screen dependencies.

Symptom and decision boundary

The number that matters is event timing: the RAPID variable must change, the ActionTrigger must observe that change, and its event must update the application variable before the object can change visibility. This is event-state propagation, not a RAPID binding directly attached to Visible.

Observed symptom Likely cause Where to check
An object remains visible after RAPID changes state Visible is bound only to an application variable, but nothing transfers the RAPID state into that variable The object's Visible binding and the ActionTrigger Change event
An object never begins responding to visibility updates The default Visible value is not TRUE, so the binding mechanism does not start as required by this implementation The object's design-time default property
An object becomes disabled correctly but does not hide Enabled accepts a controller-object binding, while Visible requires an application-variable binding Compare the two property bindings rather than treating them as equivalent
A requested screen fails only after a particular operator path is used RAPID references a screen that was renamed, removed, or not deployed The deployed ScreenMaker project, the requested screen name, and the parameters passed to UIShow
The required operator flow needs nested conditions or loops ScreenMaker 5.11 has no script or expression editor Move the decision logic into RAPID or evaluate RAB for the application

Event-driven visibility mechanism

ScreenMaker 5.11 exposes different connectivity rules for object properties. The Enabled property can bind to a controller object and therefore follow RAPID-controlled data directly. The Visible property can bind only to an application variable, which RAPID cannot control through the same direct binding path.

ActionTrigger bridges that gap. It monitors a RAPID variable and raises its Change event when the monitored value changes. The event then assigns the corresponding state to the application variable used by the object's Visible property.

RAPID variable changes
        |
        v
ActionTrigger.Change
        |
        v
Application variable
        |
        v
Object.Visible

The application variable is the ScreenMaker-side state holder. RAPID remains responsible for process and sequence decisions, while ScreenMaker translates a state transition into a presentation change. This arrangement supports conditional object visibility without adding an expression evaluator to the screen definition.

Use a RAPID value whose transitions represent deliberate interface states. A trigger detects change, so repeated writes of the same value may not create a new change event. When the interface must refresh after re-entry or deployment, verify the actual monitored value and the application variable rather than relying on an assumed event.

Binding and control boundaries

The architecture separates controller execution from the FlexPendant application. ScreenMaker applications depend on RAPID data and I/O configuration, but making RAPID navigate named ScreenMaker screens creates a reverse dependency. A renamed screen or missing ScreenMaker application can then leave valid RAPID code pointing at an unavailable user-interface resource.

Item ScreenMaker 5.11 boundary Engineering decision
Enabled Can bind to a controller object Use direct binding when RAPID only needs to permit or block interaction
Visible Can bind to an application variable, not directly to the controller object Use ActionTrigger as the transfer mechanism
Default visibility Must be TRUE to start the stated binding mechanism Set and verify the design-time default before testing RAPID changes
Conditional expressions No script or expression editor in this version Calculate the display state in RAPID; use RAB when the interface itself requires more complex behavior
Screen selection from RAPID Creates a runtime dependency on deployed screen names Control naming and deployment as one project if using UIShow
Operator prompts UIMsgBox is limited to its standard button types Use ScreenMaker for richer presentation, while retaining supported RAPID UI instructions where appropriate
Authorization Requested actions remain subject to UAS considerations Define and test the required grants; a custom screen is not an authorization bypass

A project with 40 screens demonstrates why this boundary matters. If RAPID contains references to all 40 names, changing one screen name can create a dormant failure that appears only when the operator eventually reaches that branch. Compilation of RAPID alone cannot validate whether every referenced ScreenMaker screen is present in the deployed application.

ActionTrigger configuration procedure

  1. Define the operator decision in RAPID. Reduce the result to a controller variable that represents the display state needed by ScreenMaker. Keep multi-branch process logic in RAPID instead of trying to reproduce IF or WHILE behavior in a ScreenMaker version without an expression editor.

  2. Create or select the ScreenMaker application variable that will drive the target object's Visible property. Use a state type compatible with the property's true-or-false behavior.

  3. Select the target object and set its default Visible value to TRUE. Perform this before relying on the binding because the initial true value is a requirement for starting the mechanism described for this version.

  4. Bind the object's Visible property to the application variable. Confirm that the binding points to the application variable, not directly to the RAPID controller object.

  5. Add an ActionTrigger component and configure it to listen to the selected RAPID variable. The monitored variable must change when the operator's earlier selection or RAPID sequence changes the required display state.

  6. In the trigger's Change event, assign the RAPID-derived state to the application variable. If the types or meanings differ, make the conversion explicit in the available event action instead of relying on an implicit interpretation.

  7. Deploy the ScreenMaker application together with the matching RAPID program and I/O configuration. Treat them as one release set even when the dependency currently runs mainly from ScreenMaker toward controller data.

  8. Exercise both state transitions while RAPID runs. Verify visible-to-hidden and hidden-to-visible behavior, then repeat the test after reopening the application or restarting the relevant runtime environment.

For several conditionally displayed objects, one application variable may drive objects that must always change together. Use separate variables where objects have independent states. This keeps the mapping observable and prevents one trigger action from unintentionally changing unrelated parts of the screen.

Runtime verification

Verify each link separately. First watch the RAPID variable and confirm that the operator action changes it. Next observe whether the ActionTrigger Change event runs and updates the application variable. Finally confirm that the object follows the application variable through its Visible binding.

  1. Start from the default condition and record the RAPID variable, application variable, and visible state.

  2. Make the operator selection that changes the RAPID decision. Confirm an actual value transition rather than only execution of the assignment.

  3. Check that the application variable receives the new state through ActionTrigger.Change.

  4. Confirm that the object changes visibility without leaving the ScreenMaker application.

  5. Reverse the selection and verify the complete return path.

  6. Repeat every screen-navigation branch that can reach the object. A successful main path does not test dormant screen-name references.

  7. Run a deployment-negative test in a controlled engineering environment: identify how the system reports a missing project or incorrect UIShow parameters, and preserve that diagnostic information for commissioning.

If Enabled changes while Visible does not, RAPID communication is probably intact; inspect the application-variable transfer and the default visibility setting. If neither property changes, start at the controller-object connection and the deployed RAPID data definition.

Screen navigation and deployment coupling

Using ScreenMaker as a richer replacement for TPErase, TPReadFK, TPReadNum, TPShow, and TPWrite changes more than appearance. Those RAPID instructions keep the interaction under controller-program control. A ScreenMaker application introduces separately defined screens, objects, bindings, deployment content, and authorization behavior.

Calls such as UIShow require correct parameters and the associated ScreenMaker project to be deployed. The key risk is not immediate syntax failure; it is a valid RAPID program retaining a reference to a screen that has since been renamed or removed. The fault remains hidden until the exact event and button sequence requests that screen.

Control the dependency with a release checklist. Freeze screen identifiers used by RAPID, search RAPID for each identifier before renaming a screen, deploy the RAPID and ScreenMaker revisions together, and test every reachable navigation branch. Maintain one mapping of RAPID request states to ScreenMaker screen names so a review can detect missing or duplicate destinations.

Closing the Main screen or presenting arbitrary screens from RAPID cannot be treated as a general, unrestricted ScreenMaker 5.11 interface. Design the normal flow around the supported ScreenMaker tree and use RAPID-driven screen requests only where the tested action and deployment arrangement provide the required behavior.

Recurring implementation pitfalls

The first recurring error is treating Visible like Enabled. Their binding capabilities differ, so copying the controller-object binding pattern leaves visibility without a valid RAPID-to-application transfer.

The second is starting the object hidden. For this workaround, default Visible must be TRUE to initiate the binding mechanism. Apply the desired hidden state only after the binding and trigger path are active.

The third is placing interface branching in a tool without script or expression support. Calculate compound conditions in RAPID and expose a clean state for the trigger. If the application needs loops, dynamic discovery, or extensive interface-side logic, RAB is the appropriate design path to evaluate.

The fourth is assuming a deployed RAPID program proves the ScreenMaker package is complete. Screen-name dependencies can fail at runtime after a rename or omitted deployment. Test rarely used combinations, not only the first screen and the common production route.

The fifth is treating presentation as permission. UAS remains part of the action path, and interface design does not replace authorization configuration. Test each protected action with the user roles that will operate and maintain the cell.

Frequently asked questions

How do I control a ScreenMaker 5.11 object's visibility from RAPID?

Bind Visible to a ScreenMaker application variable, then use an ActionTrigger to monitor a RAPID variable and update the application variable in its Change event. Set the default Visible value to TRUE before testing.

How do I diagnose a ScreenMaker object that stays visible?

Confirm that the RAPID value actually changes, the ActionTrigger.Change event updates the application variable, and the object's Visible property is bound to that variable. If Enabled responds but Visible does not, focus on the trigger, application variable, and default TRUE setting.

How do I know when to stop troubleshooting and contact ABB?

Stop when the matching ScreenMaker project is deployed, screen names and UIShow parameters are verified, the RAPID variable changes, and the ActionTrigger path still fails or produces a repeatable runtime error. Record the exact error text, deployment contents, failing operator sequence, and relevant project files. Escalate that package through ABB official support so the ScreenMaker, FlexPendant, RAPID, UAS, and controller configuration can be reviewed together.

Back to blog