Expand description
§trap-sim-opcua
OPC UA server simulator for the TRAP protocol simulator.
This crate provides a comprehensive OPC UA server simulation capability with:
- Server Configuration: Flexible server setup with security policies and endpoints
- Address Space Management: Hierarchical node organization with 100,000+ node support
- Node Types: Full support for Objects, Variables, Methods, and Type nodes
- Subscriptions: Data change monitoring with 10,000+ concurrent subscription support
- Historical Access: Raw and aggregated historical data with configurable retention
- High Performance: LRU caching, concurrent access, and efficient memory management
§Architecture
┌─────────────────────────────────────────────────────────┐
│ OPC UA Server │
├─────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌──────────────┐ ┌───────────────┐ │
│ │ Session │ │ Subscription │ │ History │ │
│ │ Manager │ │ Manager │ │ Store │ │
│ └─────────────┘ └──────────────┘ └───────────────┘ │
├─────────────────────────────────────────────────────────┤
│ ┌─────────────────────────────────────────────────────┐│
│ │ Address Space (Nodes) ││
│ │ ┌─────────┐ ┌──────────┐ ┌────────┐ ┌───────────┐ ││
│ │ │ Objects │ │ Variables│ │ Methods│ │ Types │ ││
│ │ └─────────┘ └──────────┘ └────────┘ └───────────┘ ││
│ └─────────────────────────────────────────────────────┘│
├─────────────────────────────────────────────────────────┤
│ ┌───────────────┐ ┌──────────────────────────────────┐│
│ │ Node Cache │ │ Variable Factory ││
│ │ (LRU) │ │ (Analog, Discrete, Batch) ││
│ └───────────────┘ └──────────────────────────────────┘│
└─────────────────────────────────────────────────────────┘§Quick Start
use mabi_opcua::{
OpcUaServerConfig, OpcUaDevice,
types::{NodeId, Variant, DataValue},
nodes::{AddressSpace, AddressSpaceConfig, VariableBuilder, NodeBuilder},
services::{SubscriptionManager, SubscriptionManagerConfig, HistoryStore, HistoryStoreConfig},
};
// Create an OPC UA device
let mut device = OpcUaDevice::new("opc-server-1", "My OPC UA Server");
// Create address space with nodes
let address_space = AddressSpace::new(AddressSpaceConfig::default());
// Add a variable node using the address space API
address_space.add_variable(
NodeId::numeric(2, 1001),
"Temperature",
"Temperature",
NodeId::numeric(0, 11), // Double data type
Variant::Double(25.0),
&NodeId::numeric(0, 85), // Objects folder
).unwrap();
// Create subscription manager for data changes
let subscriptions = SubscriptionManager::new();
// Create history store for historical access
let history = HistoryStore::new(HistoryStoreConfig::default());§Module Organization
types: Core OPC UA types (NodeId, Variant, DataValue, etc.)nodes: Node classes and address space managementservices: Session, subscription, and history servicessecurity: Security policies, certificates, encryption, and authenticationconfig: Server configurationdevice: Device trait implementationfactory: Device factory for creating OPC UA devices
Re-exports§
pub use config::OpcUaServerConfig;pub use config::SecurityPolicy;pub use config::MessageSecurityMode;pub use config::EndpointConfig;pub use config::UserTokenConfig;pub use device::OpcUaDevice;pub use error::OpcUaError;pub use error::OpcUaResult;pub use factory::OpcUaDeviceFactory;pub use factory::OpcUaDeviceBuilder;pub use server::OpcUaServer;pub use server::OpcUaServerBuilder;pub use server::ServerState;pub use server::ServerStats;pub use server::ServerEvent;pub use types::NodeId;pub use types::StatusCode;pub use types::Variant;pub use types::DataValue;pub use types::AttributeId;pub use types::AccessLevel;pub use types::DataTypeId;pub use nodes::Node;pub use nodes::NodeClass;pub use nodes::NodeBase;pub use nodes::QualifiedName;pub use nodes::LocalizedText;pub use nodes::ObjectNode;pub use nodes::VariableNode;pub use nodes::MethodNode;pub use nodes::AddressSpace;pub use nodes::AddressSpaceConfig;pub use nodes::NodeStoreStats;pub use nodes::VariableBuilder;pub use nodes::ObjectBuilder;pub use nodes::FolderBuilder;pub use nodes::BatchVariableBuilder;pub use nodes::AddToAddressSpace;pub use nodes::NodeCache;pub use nodes::NodeCacheConfig;pub use nodes::CacheStats;pub use nodes::Reference;pub use nodes::ReferenceTypeId;pub use nodes::BrowseDirection;pub use nodes::BrowseResult;pub use nodes::VariableFactory;pub use nodes::AnalogVariable;pub use nodes::DiscreteVariable;pub use nodes::BatchNodeCreator;pub use nodes::BatchConfig;pub use nodes::BatchProgress;pub use nodes::ProgressCallback;pub use nodes::VariableTemplate;pub use nodes::ObjectTemplate;pub use nodes::ValueGeneratorType;pub use nodes::NodePrefetcher;pub use nodes::PrefetchConfig;pub use nodes::PrefetchStats;pub use nodes::AsyncPrefetchWorker;pub use nodes::PrefetchingAddressSpace;pub use services::SessionManager;pub use services::SessionManagerConfig;pub use services::Session;pub use services::SessionInfo;pub use services::SubscriptionManager;pub use services::SubscriptionManagerConfig;pub use services::Subscription;pub use services::SubscriptionConfig;pub use services::MonitoredItem;pub use services::MonitoredItemConfig;pub use services::MonitoredItemNotification;pub use services::MonitoringMode;pub use services::DataChangeFilter;pub use services::DataChangeTrigger;pub use services::DeadbandType;pub use services::HistoryStore;pub use services::HistoryStoreConfig;pub use services::HistoricalDataPoint;pub use services::AggregateType;pub use security::SecurityManager;pub use security::SecurityManagerConfig;pub use security::SecurityContext;pub use security::CertificateManager;pub use security::CertificateManagerConfig;pub use security::Certificate;pub use security::CertificateStore;pub use security::CertificateValidator;pub use security::ValidationResult;pub use security::CryptoProvider;pub use security::CryptoProviderConfig;pub use security::SymmetricAlgorithm;pub use security::AsymmetricAlgorithm;pub use security::HashAlgorithm;pub use security::EncryptionResult;pub use security::DecryptionResult;pub use security::SignatureResult;pub use security::UserAuthenticator;pub use security::UserAuthConfig;pub use security::AuthenticationResult;pub use security::UserCredentials;pub use security::UserToken;pub use security::SecurityPolicyConfig;pub use security::SecurityPolicyProvider;
Modules§
- channel
- OPC UA Secure Channel Layer.
- codec
- OPC UA Binary Encoding/Decoding.
- config
- OPC UA configuration types.
- device
- OPC UA device implementation (placeholder).
- error
- OPC UA error types.
- factory
- OPC UA device factory implementation.
- nodes
- OPC UA Node system.
- security
- OPC UA Security Module.
- server
- OPC UA server implementation.
- service
- OPC UA Service Layer.
- services
- OPC UA services implementation.
- transport
- OPC UA TCP Transport Layer.
- types
- OPC UA type system.
Constants§
- MAX_
RECOMMENDED_ NODES - Maximum recommended nodes for optimal performance.
- MAX_
RECOMMENDED_ SUBSCRIPTIONS - Maximum recommended subscriptions for optimal performance.
- OPCUA_
SPEC_ VERSION - OPC UA specification version supported.
- VERSION
- Crate version.