Configuration Workflow
Typical Process
- Create DataTemplates - Define reusable structures
- Create Tags and Folders - Organize data hierarchy
- Configure TagProviders - Connect external sources
- Build Asset Tree - Model physical/logical structure
Quick Actions
Action | Icon | Method |
---|
New Folder | | Right-click or toolbar |
New Tag | | Select folder, then create |
New TagProvider | | Toolbar or File menu |
Link External Data | | Right-click folder |
Move Tags | - | Drag and drop |
Core Components
DataTemplates
Create custom data types:
- Reusable structures
- Hierarchical organization
- Property inheritance
- Consistent modeling
Tags
Real-time variables with:
- Multiple data types
- Arrays support
- Retentive options
- Security settings
Enumerations
Value-to-text mappings:
0 → "Off"
1 → "On"
2 → "Fault"
TagProviders
External connections:
- OPC UA, MQTT
- Historian systems
- Other solutions
- Dynamic discovery
Runtime Architecture
Execution Model
At startup, the UNS loads into an in-memory real-time database (TServer.exe):
- Event-driven updates
- Module data exchange
- Real-time synchronization
- Optimized performance
Data Access Methods
Direct Tag Access:
csharp
@Tag.Machine1.Temperature
@Tag.Line1/Pump1/Status
Asset() Function:
csharp
Asset("/Line1/Machine1.Temperature")
Asset(@Client.Context.AssetPath + "/Status")
Asset Tree Structure
Organization Examples
By Location:
/Plant
/Area1
/Line1
/Machine1
Temperature
Pressure
Status
By Function:
/Production
/Mixing
/Packaging
/Utilities
/Power
/Water
Integration Points
Module Access
All modules can access UNS data:
- Displays - Visualization
- Alarms - Event monitoring
- Historian - Data logging
- Scripts - Logic execution
- Reports - Data presentation
External Systems
TagProviders enable:
- Protocol integration
- Historian connections
- Database links
- API interfaces
Common Issues and Solutions
Recursive Data Model Crash
Issue: Templates containing circular references Solution: Avoid recursive structures; validate template hierarchy
Missing External Data
Issue: TagProvider data not updating Solution:
- Verify connection status
- Check external system
- Review security settings
- Monitor network connectivity
Import Inconsistencies
Issue: Data missing after import Solution:
- Validate file format
- Check column mapping
- Verify data types
- Review import logs
Performance Issues
Issue: Slow data updates Solution:
- Optimize tag count
- Review update rates
- Check network latency
- Monitor resource usage
Namespace Properties
Access runtime properties:
csharp
// Tag count
int tagCount = @Info.Model.TagCount;
// Check if tag exists
bool exists = @Info.Model.HasTag("Machine1.Temperature");
// Get tag reference
var tag = @Info.Model.GetTag("Machine1.Temperature");
Security Considerations
Tag Security
- Read/Write permissions per tag
- User group restrictions
- Visibility settings (Private/Protected/Public)
Connection Security
- TagProvider authentication
- Encrypted communications
- Certificate validation
Performance Optimization
Design Guidelines
- Limit hierarchy depth (3-5 levels)
- Group related tags
- Use templates efficiently
- Optimize polling rates
Runtime Tips
- Monitor memory usage
- Check update frequencies
- Review connection counts
- Optimize queries
Best Practices Checklist
Data Structure Organization
- Plan hierarchy - Consider relationships carefully
- Use templates - Reduce redundancy
- Clear naming - Consistent conventions
- Logical folders - Intuitive navigation
- Document structure - Maintain documentation
System Monitoring
- Add displays - Monitor performance
- Implement alarms - Critical connections
- Track status - Connection health
- Log events - Audit trail
Troubleshooting
Connection Issues
- Check network connectivity
- Verify credentials
- Review firewall settings
- Test with simple query
Data Quality
- Check Quality property (192 = good)
- Verify timestamps
- Review error messages
- Monitor communication logs
Performance
- Check CPU/memory usage
- Review tag count
- Optimize update rates
- Monitor network traffic