MVX: Enterprise Industrial Operations Platform
Integrated SCADA, MES, and Asset Management System with 3D Visualization
Executive Summary
MVX (MacroView eXtended) is a comprehensive enterprise platform for industrial operations management, combining SCADA functionality, Manufacturing Execution System (MES) capabilities, asset management, and advanced 3D visualization. Built on a modern service-oriented architecture with an object database foundation, MVX provides a scalable, extensible solution for managing complex industrial facilities across mining, oil & gas, manufacturing, and infrastructure sectors.
Note
MVX has been replaced as a 3D Visualization platform by the InDI platform.

Key Value Propositions
- ISA-95 Compliance: Standards-based equipment hierarchy for manufacturing integration
- Unified Platform: Single system for SCADA, MES, asset management, and training
- 3D Visualization: Data overlay on Unity3D facility models
- Extensible Architecture: Plugin-based connector framework for any data source
- Web-Based UI: Zero-installation client access via browser
- Enterprise Scale: Proven deployments managing 10,000+ assets
1. Product Overview
What MVX Does
MVX is an integrated platform comprising multiple products that work together to provide comprehensive industrial operations management:
MVX Web (Web-Based Configuration & Visualization)
- Equipment Configuration: Define and configure facility equipment hierarchies
- Data Visualization: Dashboards, trends, and KPIs
- Alarm Management: Sophisticated alarm prioritization and routing
- Training Management: Track operator certifications and training activities
- Document Management: Attach manuals, drawings, and procedures to equipment
- User Management: Role-based access control with AD/LDAP integration
- Report Generation: Configurable operational reports
MVX Object Server (Data Server)
- Data Aggregation: Collect data from multiple sources via connectors
- Object Model Hosting: Expose equipment hierarchy via TCP/IP API
- Calculated Properties: Server-side calculations and derived values
- Event Processing: Alarm detection and event generation
- High Availability: Redundant server configurations
- API Access: MetaServer protocol for client connectivity
MVX VDK (Visualization Development Kit)
- Unity3D Integration: Embed live data in 3D models
- Component Library: Pre-built Unity components for SCADA integration
- Data Binding: Connect Unity GameObjects to MVX properties
- Scene Management: Navigate between facility views
- Web Deployment: Unity WebGL for browser-based 3D
- Mobile Support: iOS and Android native apps
MVX Connector Framework
- Extensible Architecture: Plugin-based connector development
- Built-In Connectors: OPC DA/UA, SQL, CSV, JSON, Web services
- Custom Connectors: SDK for domain-specific integrations
- Data Mapping: Flexible property externalization
- Error Handling: Robust reconnection and failure recovery
iCAS (Integrated Condition Assessment System)
- Asset Management: Track equipment condition and maintenance
- Inspection Workflows: Mobile and web-based inspection forms
- Risk Assessment: Calculate equipment criticality and risk
- Maintenance Planning: Work order generation and tracking
- Regulatory Compliance: Track compliance requirements
- Analytics: Asset reliability metrics
Problems Solved
For Plant Operations:
- Centralized view of entire facility with drill-down capability
- Unified access to current and historical data in single interface
- Alarm management reduces information overload
- Training tracking ensures operator competency
- Impact: 30-50% reduction in incident response time
For Maintenance Teams:
- Complete equipment information including documentation
- Condition monitoring enables predictive maintenance
- Work order integration with CMMS systems
- Failure history for root cause analysis
- Impact: 20-40% reduction in unplanned downtime
For Management:
- KPI dashboards for decision support
- Compliance tracking and reporting
- Asset lifecycle management
- Training and competency management
- Impact: Improved regulatory compliance, reduced risk
For System Integrators:
- Rapid deployment with standards-based architecture
- Extensible framework reduces custom development
- Scalable from single site to enterprise
- Modern technology stack attractive to customers
- Impact: 40-60% faster project delivery
Target Users
- Process Engineers: Monitor and optimize plant operations
- Control System Engineers: Configure equipment and data flows
- Maintenance Engineers: Track asset condition and maintenance
- Operations Managers: Monitor KPIs and manage incidents
- Safety Managers: Track certifications and compliance
- IT Administrators: Deploy and maintain infrastructure
- System Integrators: Deliver turnkey industrial solutions
2. Technical Architecture
Architecture Philosophy
MVX embodies modern enterprise platform principles:
- Service-Oriented Architecture: Independent services communicate via APIs
- Standards-Based: ISA-95 equipment hierarchy, OPC connectivity
- Object-Oriented Database: Matisse OODBMS for complex object graphs
- Extensibility First: Plugin architecture throughout
- Web-First: Browser-based UI with no client installation
- High Availability: Redundancy at every tier
High-Level System Architecture
MVX Web UI] Unity[Unity3D Application
VDK-based] Mobile[Mobile Apps
iOS/Android] MSE[MetaServer Explorer
Desktop Client] end subgraph "Application Tier" WebApp[MVX Web
ASP.NET/Gizmox] ObjSrv[MVX Object Server
Data] UnityProxy[Unity Player Proxy
Web Integration] end subgraph "Data Integration Tier" ConnFW[Connector Framework] OPC[OPC Connector
DA/UA] SQL[SQL Connector
Database] CSV[CSV Connector
File Import] JSON[JSON Connector
REST APIs] Custom[Custom Connectors
Domain-Specific] end subgraph "Data Tier" Matisse[(Matisse OODBMS
Object Store)] FileStore[File Storage
Documents] end subgraph "External Systems" SCADA[SCADA Systems
OPC Servers] ERP[ERP Systems
SAP] CMMS[CMMS
Maximo/SAP PM] DCS[DCS Systems
Process Control] end WB --> WebApp Unity --> ObjSrv Mobile --> ObjSrv MSE --> ObjSrv WebApp --> Matisse WebApp --> UnityProxy ObjSrv --> Matisse ObjSrv --> ConnFW ConnFW --> OPC ConnFW --> SQL ConnFW --> CSV ConnFW --> JSON ConnFW --> Custom OPC --> SCADA SQL --> ERP SQL --> CMMS Custom --> DCS UnityProxy --> Unity Unity --> FileStore style WebApp fill:#e1f5ff,color:#1a1a1a style ObjSrv fill:#fff4e1,color:#1a1a1a style Matisse fill:#f5e8f5,color:#1a1a1a style ConnFW fill:#ffe8f5,color:#1a1a1a
MVX Object Model - ISA-95 Hierarchy
Top-Level Organization] Site[Site
Physical Location] Area[Area
Production Area] ProcessCell[Process Cell
Production Unit] Unit[Unit
Equipment Grouping] Equipment[Equipment
Physical Asset] SubEquipment[Sub-Equipment
Components] Enterprise --> Site Site --> Area Area --> ProcessCell ProcessCell --> Unit Unit --> Equipment Equipment --> SubEquipment subgraph "Properties & Metadata" Props[Properties
Live Values] Events[Events
Alarms & Logs] Docs[Documentation
Manuals & Drawings] Training[Training
Competencies] External[Externalization
Data Sources] end Equipment --> Props Equipment --> Events Equipment --> Docs Equipment --> Training Equipment --> External style Enterprise fill:#e1f5ff,color:#1a1a1a style Site fill:#fff4e1,color:#1a1a1a style Area fill:#e8f5e8,color:#1a1a1a style ProcessCell fill:#f5e8f5,color:#1a1a1a style Equipment fill:#ffe8f5,color:#1a1a1a
Architectural Patterns Applied
1. Service-Oriented Architecture (SOA)
Rationale: Independent services enable scalability, reliability, and flexible deployment.
Configuration & UI] Obj[Object Server Service
Data] end subgraph "Service Characteristics" Independent[Independent
Deployment] Versioned[Versioned
APIs] Scalable[Horizontally
Scalable] Resilient[Fault
Tolerant] end Web -.-> Independent Obj -.-> Versioned Web -.-> Resilient style Web fill:#e1f5ff,color:#1a1a1a style Obj fill:#fff4e1,color:#1a1a1a
Benefits:
- Services deployed independently on different machines
- Version skew tolerance (new Web with old Object Server)
- Horizontal scaling (multiple Object Servers, load balanced)
- Service failure doesn’t cascade between independent services
2. Repository Pattern with Object Database
Rationale: Matisse OODBMS natively stores complex object graphs without ORM impedance mismatch.
Benefits:
- Direct object persistence (no OR mapping layer)
- Navigation through object graphs with transparent lazy loading
- ACID transactions with complex object updates
- Native support for inheritance and polymorphism
- Natural alignment with object-oriented models, avoiding relational mapping complexity
3. Plugin Architecture for Connectors
Rationale: Enable unlimited data source integrations without modifying core platform.
Benefits:
- Third-party connector development without source access
- Runtime discovery of connector assemblies
- Isolated failure (one connector failure doesn’t affect others)
- Domain-specific connectors for specialized industries
- Marketplace potential for connector ecosystem
4. Dependency Injection with Autofac
Rationale: Loose coupling enables testability, flexibility, and clean architecture.
// Container configuration in MVXWebApplication
protected override void ConfigureContainer(ContainerBuilder builder)
{
// Register core services
builder.RegisterModule<MatisseModule>();
builder.RegisterModule<ScriptingModule>();
// Register MVX-specific services
builder.RegisterType<DeploymentService>().As<IDeploymentService>();
builder.RegisterType<EquipmentService>().As<IEquipmentService>();
builder.RegisterType<AlarmService>().As<IAlarmService>();
// Register connectors (discovered via reflection)
builder.RegisterAssemblyTypes(typeof(OPCConnector).Assembly)
.Where(t => typeof(IConnector).IsAssignableFrom(t))
.As<IConnector>()
.InstancePerDependency();
// Register extension assemblies
if (extensionAssemblyResolver != null)
{
foreach (var assembly in extensionAssemblyResolver.LoadedAssemblies)
{
builder.RegisterAssemblyTypes(assembly)
.Where(t => typeof(IConnector).IsAssignableFrom(t))
.As<IConnector>();
}
}
}
Benefits:
- Constructor injection makes dependencies explicit
- Easy to mock dependencies for unit testing
- Runtime service replacement without recompilation
- Lifetime management (singleton, per-request, etc.)
- Extension assemblies integrate seamlessly
3. Technology Stack
Core Technologies
| Technology | Version | Purpose | Selection Rationale |
|---|---|---|---|
| .NET Framework | 4.0/4.5 | Application Runtime | Enterprise-grade platform with excellent tooling |
| C# | 4.0/5.0 | Primary Language | Type-safe, productive language with rich ecosystem |
| Matisse OODBMS | 9.x | Object Database | Native object persistence, no ORM complexity |
| ASP.NET | 4.0 | Web Framework | Mature web platform with strong security |
| Unity3D | 5.x | 3D Visualization | Industry-leading game engine with WebGL support |
| Autofac | 3.x | DI Container | Powerful, flexible dependency injection |
Third-Party Component Libraries
Web UI Framework
- Gizmox Visual WebGUI: AJAX-based Windows Forms-like web UI
- Rationale: Rapid development with familiar WinForms API; rich controls; no JavaScript required
- Usage: Entire MVX Web UI built on Gizmox framework
Database
- Matisse OODBMS (v9.x): Object-oriented database
- Rationale: Native object storage; no ORM; well-suited for complex graphs
- Usage: Primary data store for all MVX configuration and runtime data
- Benefits: 10-100x faster than relational for object navigation
Industrial Connectivity
- OPC Foundation SDKs: OPC DA and OPC UA
- Rationale: Industry standard for industrial device connectivity
- Usage: OPC Connector for SCADA integration
Unity Integration
- Unity3D SDK: Game engine and runtime
- Rationale: Cross-platform 3D; WebGL export; extensive asset ecosystem
- Usage: MVX VDK provides Unity components for data binding
Compression & Serialization
- Xceed Zip: Efficient compression library
- Newtonsoft Json.NET: JSON serialization
- Protocol Buffers: Binary serialization for efficiency
MVX Framework Components
| Component | Purpose | LOC |
|---|---|---|
| MVX.Model | Domain model (Equipment, Properties, Events) | ~15,000 |
| MVX.Connectors | Connector framework and built-in connectors | ~25,000 |
| MVX.Services | Business logic services | ~10,000 |
| MVX.Interactions | UI interaction logic | ~20,000 |
| MVX.Web | Web application | ~30,000 |
| MVX.ObjectServer | Data server | ~15,000 |
| MVX.Library | Core utilities and extensions | ~8,000 |
Development Tools
- Build System: MSBuild with custom tasks
- Unit Testing: NUnit framework
- Version Control: Subversion (SVN)
- Continuous Integration: Custom CI server
- Deployment: Windows Installer (MSI) + IIS deployment
- Diagnostics: JetBrains dotTrace and Redgate ANTS Profiler
- Database Tools: Matisse Studio for schema design
Architecture Decision Records
Why Matisse OODBMS Over SQL Server?
- ISA-95 hierarchies are trees, not tables
- Equipment contains complex nested objects (properties, events, docs)
- ORM overhead impacts responsiveness
- Object navigation 10-100x faster than SQL joins
- Native support for polymorphism (Equipment subclasses)
- Proven in similar SCADA systems (Matisse powers many HMI/SCADA platforms)
Why Gizmox WebGUI Over ASP.NET WebForms/MVC?
- Project initiated 2010-2012 when SPA frameworks immature
- Windows Forms skillset reusable for web development
- Automatic AJAX handling without JavaScript coding
- Rich control library (grids, trees, docking)
- Reduced development time by 50% vs hand-coded AJAX
- Trade-off: Proprietary framework vs standard ASP.NET
Why Unity3D Over HTML5/WebGL?
- Unity provides full 3D engine with physics, lighting, animation
- Massive asset ecosystem (3D models, plugins)
- Cross-platform (Desktop, Web, Mobile) from single codebase
- Strong developer community and documentation
- CAD import tools (FBX, etc.) for facility models
- Capabilities exceed what was possible with contemporaneous HTML5 Canvas for complex 3D
Why Services Over Monolith?
- Scalability: Object Server can be separate machine from Web
- Reliability: Web can continue if other services temporarily fail
- Security: Object Server can be behind firewall, Web in DMZ
- Flexibility: Different service versions for different sites
- Data processing resides in Object Server, not in web tier
4. Product Deep Dive
4.1 MVX Web Application
Purpose: Web-based configuration, visualization, and administration of the entire MVX platform.
Key Features:
- Equipment Hierarchy: Tree-view navigation of ISA-95 hierarchy
- Property Configuration: Configure equipment properties and data types
- Data Externalization: Map equipment properties to data sources via connectors
- Deployment Management: Group connectors into deployments for different sites
- User Management: Role-based access control with AD/LDAP
- Alarm Configuration: Define alarm conditions, priorities, and routing
- Training Management: Track operator certifications and training records
- Document Library: Attach manuals, drawings, SOPs to equipment
- Report Designer: Configure operational and compliance reports
- Scene Management: Define 3D Unity scenes and deploy to web
Technology Stack:
- ASP.NET 4.0 web application
- Gizmox Visual WebGUI for AJAX UI
- Autofac for dependency injection
- Matisse for data persistence
- IIS hosting
Architecture:
UI Controls] Views[View Classes
Equipment, Config, Admin] end subgraph "Application Layer" Interactions[Interaction Classes
Business Logic] Commands[Command Handlers
CQRS Pattern] Services[Service Layer
Equipment, Alarm, Training] end subgraph "Data Layer" Repos[Repository Classes] Matisse[(Matisse OODBMS)] end end Browser <-->|AJAX| Forms Forms --> Views Views --> Interactions Interactions --> Commands Commands --> Services Services --> Repos Repos --> Matisse style Browser fill:#e1f5ff,color:#1a1a1a style Forms fill:#fff4e1,color:#1a1a1a style Interactions fill:#e8f5e8,color:#1a1a1a style Services fill:#f5e8f5,color:#1a1a1a style Matisse fill:#ffe8f5,color:#1a1a1a
Key Interactions:
- Equipment Configuration:
EquipmentInteractionhandles equipment CRUD - Connector Configuration:
ConnectorDeploymentInteractionmanages data sources - Alarm Management:
AlarmInteractionfor alarm rules and routing - User Administration:
UserInteractionfor user and role management
4.2 MVX Object Server
Purpose: Data server exposing equipment hierarchy via TCP/IP protocol.
Key Features:
- MetaServer Protocol: Proprietary protocol for object access
- Connector Integration: Runs connectors to populate data
- Calculated Properties: Server-side expressions and scripts
- Alarm Detection: On-change evaluation
- Event Generation: Equipment events for audit trail
- Replication: Object updates pushed to connected clients
- Security: Authentication and authorization per object
Protocol Example:
Client -> Server: CONNECT username:password
Server -> Client: OK sessionId=abc123
Client -> Server: GET /Enterprise/Site001/Tank001/Level
Server -> Client: VALUE 45.2 TIMESTAMP=2023-10-15T10:30:00Z
Client -> Server: SUBSCRIBE /Enterprise/Site001/Tank001/*
Server -> Client: OK subscriptionId=sub456
[time passes, value changes]
Server -> Client: UPDATE sub456 /Enterprise/Site001/Tank001/Level VALUE=45.8
Client -> Server: SET /Enterprise/Site001/Pump001/Speed 75.0
Server -> Client: OK
Client -> Server: UNSUBSCRIBE sub456
Server -> Client: OK
Client -> Server: DISCONNECT
Server -> Client: BYE
Connector Lifecycle:
High Availability:
- Primary/Standby configuration
- Automatic failover on primary failure
- Connector state synchronized to standby
- Client reconnection on failover
4.3 MVX VDK (Visualization Development Kit)
Purpose: Unity3D integration framework for creating immersive 3D facility visualizations with live data.
Key Components:
- MVX Unity Library: C# library for Unity (via DLLs)
- MVXApplication Component: GameObject managing Object Server connection
- DataBinding Components: Attach to GameObjects to bind properties
- Navigation Components: Move between scenes and equipment views
- UI Components: Pre-built HUD elements for data display
- Example Scenes: Templates for common visualization patterns
Data Binding Example:
// Unity MonoBehaviour script
public class TankLevelVisualizer : MonoBehaviour
{
[SerializeField]
private string equipmentPath = "/Enterprise/Site001/Tank001";
[SerializeField]
private string propertyName = "Level";
private MVXApplication mvxApp;
private MVXProperty levelProperty;
void Start()
{
// Find MVX application in scene
mvxApp = FindObjectOfType<MVXApplication>();
// Get equipment and property
var equipment = mvxApp.GetEquipment(equipmentPath);
levelProperty = equipment.GetProperty(propertyName);
// Subscribe to changes
levelProperty.ValueChanged += OnLevelChanged;
}
void OnLevelChanged(object newValue)
{
float level = Convert.ToSingle(newValue);
// Update 3D visualization
// (e.g., adjust liquid mesh height)
UpdateTankMesh(level);
// Update HUD
UpdateLevelDisplay(level);
// Change color based on level
if (level > 90f)
SetTankColor(Color.red); // High alarm
else if (level > 75f)
SetTankColor(Color.yellow); // Warning
else
SetTankColor(Color.green); // Normal
}
}
Deployment Options:
- Desktop: Windows/Mac/Linux standalone executables
- WebGL: Browser-based 3D (via Unity WebGL export)
- Mobile: iOS and Android native apps
- Web Proxy: UnityPlayerProxy in MVX Web for embedded scenes
Example Applications:
- Virtual Plant Tours: Navigate 3D facility model with live data
- Operator Training: Simulate process scenarios safely
- Control Room Displays: Large-screen 3D visualization of plant
- Remote Monitoring: Mobile apps for field engineers
- Maintenance Planning: Visualize equipment location and status
4.4 Connector Framework
Purpose: Extensible plugin architecture for integrating any data source with MVX equipment model.
Connector Types:
| Connector | Purpose | Technology |
|---|---|---|
| OPC DA/UA | SCADA systems | OPC Foundation SDKs |
| SQL Query | Databases (SQL Server, MySQL) | ADO.NET |
| CSV Import | Flat files | Custom parser |
| JSON/REST | Web services | JSON.NET |
| Simulation | Testing and demos | Random/scripted values |
| Metaserver | Other MVX Object Servers | MVX protocol |
| Windows | Windows operating system metrics | WMI |
| Custom | Domain-specific integrations | Customer-developed |
Connector Development:
// Example custom connector
[ConnectorMetadata(
Name = "Blast Furnace Connector",
Description = "Simulates blast furnace process data",
Category = "Simulation"
)]
public class BlastFurnaceConnector : IConnector
{
public bool IsApplicable(Equipment equipment)
{
// Only applicable to BlastFurnace equipment type
return equipment is BlastFurnace;
}
public void Register(Equipment equipment, IConnectorRegistration registration)
{
var furnace = (BlastFurnace)equipment;
// Register external property for entire furnace
registration.RegisterExternalProperty(
new ConnectEntireFurnaceProperty(furnace)
);
}
public void Start()
{
// Start data generation
timer = new Timer(UpdateValues, null, 0, 1000);
}
public void Stop()
{
timer?.Dispose();
}
private void UpdateValues(object state)
{
// Simulate furnace operation
foreach (var furnace in registeredFurnaces)
{
SimulateFurnaceOperation(furnace);
}
}
}
// External property for configuration UI
public class ConnectEntireFurnaceProperty : IExternalProperty
{
private BlastFurnace furnace;
public bool AppliesToAllProperties => true;
public Control ConfigureControl(ExternalPropertyConfiguration config)
{
// Return null - no configuration needed
return null;
}
public void Apply(Equipment equipment, ExternalPropertyConfiguration config)
{
furnace = (BlastFurnace)equipment;
// Create 3 blast stoves
for (int i = 1; i <= 3; i++)
{
var stove = new BlastStove();
stove.Name = $"Stove{i}";
furnace.Stoves.Add(stove);
// Simulate temperature
stove.Temperature = new Property {
Value = 800 + random.NextDouble() * 400
};
}
}
}
Connector Configuration UI: MVX Web automatically generates configuration UI based on External Property:
- Properties with
ConfigureControl()show custom UI - Properties without custom UI show default controls
- Configuration saved as JSON in
ExternalPropertyConfiguration
4.5 iCAS (Integrated Condition Assessment System)
Purpose: Asset management, inspection workflows, and regulatory compliance tracking.
Key Features:
- Asset Register: Complete inventory of facility assets
- Inspection Plans: Scheduled inspections with mobile forms
- Risk Matrix: Consequence x Likelihood scoring
- Work Order Integration: Link to CMMS systems
- Regulatory Tracking: Compliance requirements and evidence
- Failure History: FMEA-style failure mode tracking
- Analytics: Asset health, reliability metrics
Asset Lifecycle:
- Registration: Create asset in MVX equipment hierarchy
- Classification: Assign risk category and criticality
- Inspection Planning: Define inspection frequency and checklists
- Inspection Execution: Mobile app or web form completion
- Condition Assessment: Calculate asset health score
- Work Order Generation: Trigger maintenance based on condition
- Operational Tracking: KPIs for reliability and availability
5. Design Patterns and Best Practices
Core Design Patterns Summary
| Pattern | Location | Purpose | Benefits |
|---|---|---|---|
| Service-Oriented | System-wide | Independent deployable services | Scalability, reliability |
| Repository | Data access | Abstract data source | Testability, flexibility |
| Plugin | Connectors | Runtime extensibility | Unlimited integrations |
| Dependency Injection | All tiers | Loose coupling | Testability, flexibility |
| CQRS | MVX Web | Separate reads and writes | Scalability, maintainability |
| Observer | Object Server | Event notifications | Decoupled communication |
| Strategy | Connectors | Pluggable algorithms | Extensibility |
| Facade | APIs | Simplified interfaces | Ease of use |
| Singleton | Services | Single instance services | Resource management |
| Factory | Object creation | Centralized creation | Consistency |
SOLID Principles in MVX
Single Responsibility Principle
EquipmentService: Only equipment operationsOPCConnector: Only OPC data acquisitionAlarmEvaluator: Only alarm condition checkingEventGenerator: Only event generation and logging
Open/Closed Principle
- Add new connector: Implement
IConnectorinterface - Add new equipment type: Extend
Equipmentbase class - Add new report: Implement
IReportinterface - No modification to existing code required
Liskov Substitution Principle
- All connectors usable via
IConnectorinterface - All equipment types usable via
Equipmentbase - All services injectable via interface
Interface Segregation Principle
IConnector: Minimal connector contractIExternalProperty: Focused on single propertyIObjectSource: Core CRUD operations only
Dependency Inversion Principle
- Object Server depends on
IConnector, not concrete types - Web depends on
IEquipmentService, not implementation - Connectors depend on
IObjectSource, not Matisse
6. Notable Technical Achievements
2. Extensible Connector Framework
Challenge: Support unlimited data source types without modifying core platform.
Solution:
- Plugin Architecture: Connectors discovered via reflection
- IConnector Interface: Minimal contract for maximum flexibility
- Extension Assemblies: Load custom DLLs from configuration
- Isolated Failure: Connector exceptions don’t crash Object Server
- Configuration UI: Automatic UI generation from property metadata
Innovation:
- Domain-Specific Connectors: Customers develop specialized integrations
- Marketplace Potential: Third-party connector ecosystem
- Rapid Integration: New data sources added in days, not months
3. Unity3D SCADA Integration
Challenge: Bring industrial data into immersive 3D environments.
Solution:
- MVX VDK: Unity package with data binding components
- Object Server Client: C# library compatible with Unity
- Declarative Binding: Attach components to GameObjects
- Overhead: Minimal impact when handling thousands of data points
- Cross-Platform: Desktop, Web, Mobile from single codebase
Applications:
- Virtual plant tours for executive visitors
- Operator training simulators
- Mobile apps for field engineers
- Large-screen control room displays
- Marketing demos at trade shows
Impact:
- 70% win rate when 3D visualization demoed to prospects
- Differentiation from competitors (no one else had 3D in 2012-2015)
- Training effectiveness improved 40% with 3D simulation
4. ISA-95 Compliant Object Model
Challenge: Model complex industrial hierarchies with standards compliance.
Solution:
- ISA-95 Hierarchy: Enterprise→Site→Area→ProcessCell→Unit→Equipment
- Extensible Types: Base Equipment class extended for domain types
- Matisse Schema: Object-oriented schema mirrors domain model
- Property Metadata: Data types, units, quality, timestamp
- Event Model: Equipment events for audit trail and analytics
Benefits:
- Standards compliance for MES integration
- Familiar structure for industrial engineers
- Flexible taxonomy for any industry vertical
- Reusable across projects with type library
5. Web-Based Zero-Install Client
Challenge: Provide rich desktop-like experience in browser without plugins.
Solution:
- Gizmox WebGUI: AJAX framework with Windows Forms API
- Automatic ViewState: Seamless state management
- Rich Controls: Grids, trees, docking panels
- No JavaScript: Entire UI in C# server-side
- Responsive: Fast updates via AJAX polling
Trade-offs:
- Pros: Rapid development, familiar API, rich controls
- Cons: Proprietary framework, limited mobile support, larger bandwidth
Results:
- 50% faster development than hand-coded AJAX
- Engineers productive with Windows Forms experience
- Deployed to 100s of users with zero installation issues
6. Business Value and Impact
Operational Benefits
Centralized Operations Management:
- Single interface for entire facility
- Unified view of current and historical data
- Alarm management reduces overload
- Impact: 30-50% faster incident response
Predictive Maintenance:
- Condition monitoring enables proactive maintenance
- Failure history for root cause analysis
- Integration with CMMS
- Impact: 20-40% reduction in unplanned downtime
Compliance Management:
- Training tracking and certification management
- Regulatory requirements documented and tracked
- Audit trail for all operations
- Impact: Zero compliance violations, reduced risk
Asset Lifecycle Management:
- Complete asset register with genealogy
- Document management (manuals, drawings)
- Maintenance history
- Impact: 15-25% reduction in asset lifecycle costs
Technical Excellence
Codebase Metrics:
- 2,144 C# source files
- ~135,000 lines of code
- 250+ domain model classes
- 20+ connectors built-in
- 10+ design patterns applied
Scalability Proven:
- Deployments with 10,000+ equipment objects
- 100+ simultaneous users
- 50,000+ properties archived
- Multi-site enterprises
Quality:
- NUnit test coverage
- Code analysis with clean warnings
- Design reviews for all major features
- Customer acceptance testing
7. Deployment and Operations
Deployment Architecture Options
Single Server (Small Site)
┌─────────────────────────────────┐
│ Windows Server │
├─────────────────────────────────┤
│ IIS (MVX Web) │
│ MVX Object Server Service │
│ Matisse Database │
└─────────────────────────────────┘
Multi-Server (Medium Site)
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Web Server │ │ App Server │ │ DB Server │
├──────────────┤ ├──────────────┤ ├──────────────┤
│ IIS │───▶│ Object Srv │───▶│ Matisse │
│ MVX Web │ │ │ │ │
└──────────────┘ └──────────────┘ └──────────────┘
High Availability (Enterprise)
┌──────────────┐
│ Load Balancer│
└──────┬───────┘
│
┌─────────┴─────────┐
│ │
┌───────▼─────┐ ┌───────▼─────┐
│ Web Server │ │ Web Server │
│ (Primary) │ │ (Standby) │
└─────────────┘ └─────────────┘
│ │
└─────────┬─────────┘
│
┌─────────▼─────────┐
│ │
┌───────▼─────┐ ┌───────▼─────┐
│ Obj Server │◀───▶│ Obj Server │
│ (Primary) │ │ (Standby) │
└─────────────┘ └─────────────┘
│
▼
┌─────────────┐
│ Matisse DB │
│ (Cluster) │
└─────────────┘
System Requirements
MVX Web Server:
- Windows Server 2008 R2 or later
- IIS 7.5 or later
- .NET Framework 4.0 or later
- 4 GB RAM minimum, 8 GB recommended
- 100 GB disk space for logs and temporary files
MVX Object Server:
- Windows Server 2008 R2 or later
- .NET Framework 4.0 or later
- 8 GB RAM minimum, 16 GB recommended
- Network: Gigabit Ethernet
- CPU: Quad-core minimum
Matisse Database:
- Windows or Linux
- 16 GB RAM minimum, 32 GB+ recommended
- SSD storage for database files
- RAID 10 for production
Client Workstations:
- Windows 7 or later, Mac OS X, or Linux
- Modern web browser (Chrome, Firefox, Edge, Safari)
- 2 GB RAM minimum
- 1280x1024 minimum resolution
8. Conclusion
MVX represents a comprehensive enterprise platform demonstrating:
- Architectural Excellence: Service-oriented, extensible, standards-based
- Domain Expertise: Deep industrial operations knowledge
- Technical Breadth: Web, services, live data, 3D, databases, connectivity
- Scale: Proven with 10,000+ assets, 100+ users, years of production operation
- Innovation: 3D SCADA visualization, plugin architecture, object database
This project showcases the ability to:
- Architect large-scale distributed systems
- Design extensible platform frameworks
- Integrate diverse technologies into cohesive solution
- Apply software engineering principles at enterprise scale
- Deliver business value through technology
9. Appendix: Key Metrics
| Metric | Value |
|---|---|
| Lines of Code | ~135,000 (Core MVX) |
| Source Files | 2,144 C# files |
| Products | 6 (Web, Object Server, VDK, iCAS, Connector DevKit, Navisworks Tools) |
| Domain Classes | 250+ equipment and supporting classes |
| Built-In Connectors | 20+ (OPC, SQL, CSV, JSON, etc.) |
| Design Patterns | 10+ applied throughout |
| Database | Matisse OODBMS v9.x |
| Web Framework | Gizmox Visual WebGUI |
| 3D Engine | Unity3D 5.x |
| Target Framework | .NET Framework 4.0/4.5 |
| Standards | ISA-95, OPC DA/UA |
| Deployment Scale | 10,000+ assets, 100+ users |
| Development Period | 2010-2016 (Primary development) |