Virtual Px Issues with Alarm Console in Niagara
This article addresses compatibility issues when using virtual Px pages from JACE controllers in a Niagara Supervisor, particularly with alarm console components.
Understanding Virtual Px
Virtual Px pages are graphics that reference the station's points rather than hardcoded paths. They're designed to be reusable across multiple instances of similar equipment.
Virtual Px Concept
The Multi-Site Problem
Architecture
When virtual Px pages are brought from JACEs to a Supervisor via station copying or navigation, certain components may not function correctly.
Affected Components
Alarm Console
The alarm console widget relies on:
- Alarm service references
- User permissions context
- Station-specific alarm classes
When moved to Supervisor: References may break because alarm service paths differ between JACE and Supervisor.
Other Affected Components
- History trend charts (history references)
- Schedule widgets (scheduler service paths)
- User management displays (auth service)
- Device status components (driver-specific)
Root Causes
1. Hardcoded Service Paths
Some components reference services with absolute paths:
station:|slot:/Services/AlarmService ← JACE path
station:|slot:/Drivers/NiagaraNetwork/Site1/Services/AlarmService ← Supervisor path
2. Missing Services on Supervisor
JACEs have local services (alarm, history) that may not exist at the same path on Supervisor.
3. Permission Context Changes
JACE may run in different security context than Supervisor graphics.
Solutions
Solution 1: Use Server-Specific Graphics
Create separate graphics for Supervisor vs JACE viewing:
JACE Version:
- References local alarm service
- Optimized for JACE context
Supervisor Version:
- References proxied alarm service
- Uses Supervisor-compatible paths
Solution 2: Virtual Service Bindings
Instead of hardcoding alarm service path:
Bad: station:|slot:/Services/AlarmService
Good: $(station)/Services/AlarmService
Or use relativized ORDs:
slot:../../../Services/AlarmService
Solution 3: Alarm Console Configuration
For alarm console widgets specifically:
- Check Alarm Service binding - Ensure it uses relative or virtual path
- Configure Alarm Class Filter - May need adjustment for Supervisor context
- Set appropriate time range - Supervisor may have different history depth
Solution 4: Network Alarm Aggregation
On Supervisor, use network alarm console that aggregates from multiple stations:
- Add Network Alarm Console widget
- Configure to pull from NiagaraNetwork driver
- Filter by station/device as needed
Step-by-Step Fix
For Existing Virtual Px Pages
- Open page in Px Editor on Supervisor
- Select alarm console widget
- Check Alarm Service property:
- If absolute path → change to relative
- If missing → rebind to Supervisor alarm service
- Test navigation from different entry points
- Verify alarms display correctly
For New Implementations
- Use relative bindings from the start
- Test on both JACE and Supervisor during development
- Document which graphics are station-specific vs portable
- Consider network-level alarm views for Supervisor
Prevention Best Practices
When Creating Virtual Px Pages
| Do | Don't |
|---|
| Use relative ORDs | Hardcode absolute paths |
| Test on target platform | Assume JACE = Supervisor |
| Document service dependencies | Leave bindings unconfigured |
| Use virtual path variables | Reference specific device names |
Multi-Contractor Environments
- Establish graphics standards before development
- Define service path conventions across contractors
- Require testing on Supervisor before deployment
- Create graphics templates for common components
Troubleshooting
Alarm Console Shows "No Alarms" (but alarms exist)
- Check alarm service binding path
- Verify user has permission to view alarms
- Check alarm class filter settings
- Verify time range includes recent alarms
Alarm Console Shows Error
- Open browser developer tools
- Look for 404 errors (path not found)
- Check Workbench fault viewer for binding errors
- Verify service exists at expected path
Alarms Work on JACE, Not Supervisor
- Confirm graphics are accessing correct station
- Check if alarm service is proxied to Supervisor
- Verify network routing is correct
- Test with network alarm console instead