philipp2604.S7UaLib.Infrastructure 4.0.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package philipp2604.S7UaLib.Infrastructure --version 4.0.0
                    
NuGet\Install-Package philipp2604.S7UaLib.Infrastructure -Version 4.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="philipp2604.S7UaLib.Infrastructure" Version="4.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="philipp2604.S7UaLib.Infrastructure" Version="4.0.0" />
                    
Directory.Packages.props
<PackageReference Include="philipp2604.S7UaLib.Infrastructure" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add philipp2604.S7UaLib.Infrastructure --version 4.0.0
                    
#r "nuget: philipp2604.S7UaLib.Infrastructure, 4.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package philipp2604.S7UaLib.Infrastructure@4.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=philipp2604.S7UaLib.Infrastructure&version=4.0.0
                    
Install as a Cake Addin
#tool nuget:?package=philipp2604.S7UaLib.Infrastructure&version=4.0.0
                    
Install as a Cake Tool

S7UaLib.Infrastructure ⚙️

The internal engine room for the S7UaLib ecosystem. This library provides the concrete implementations for the abstractions defined in S7UaLib.Core. It brings the data models and contracts to life with a robust OPC UA client, a rich set of data type converters, an in-memory data store, and serialization logic.

This package contains the "how" – the logic for connecting, browsing, reading, writing, and converting data. It is a required dependency for the high-level S7UaLib package and is not intended for direct use by end-users.

.NET 8 (LTS) Build & Test .NET 9 (Latest) Build & Test Language NuGet Version License GitHub issues

✨ Key Features

  • 🔌 Robust OPC UA Client (S7UaClient): The heart of the library, providing a concrete implementation for all communication with the PLC. It manages sessions, handles automatic reconnection, and exposes low-level methods for browsing, reading, writing, and creating subscriptions.
  • 🔄 Comprehensive S7 Data Type Conversion: A rich collection of type converters that seamlessly handle complex S7-specific formats.
    • BCD-based types like DATE_AND_TIME and legacy S5TIME.
    • Modern nanosecond-precision types like DTL and LTIME.
    • Specialized types like COUNTER (BCD) and DATE.
    • Meta-converters for handling ARRAYs of complex types.
  • 💾 Efficient In-Memory Data Store (S7DataStore): A thread-safe, in-memory cache for holding the entire discovered PLC structure. It enables fast, path-based variable lookups and uses immutable data patterns for updating variable state.
  • 📄 Advanced JSON Serialization (S7StructureSerializer): A purpose-built System.Text.Json configuration for saving and loading the complete, discovered PLC structure. It correctly handles the polymorphic nature of the data models (IS7Variable, IS7StructureElement, etc.).

🚀 Getting Started

Installation

This package is a dependency for other S7UaLib libraries and will typically be installed automatically. However, you can install it manually using the .NET CLI:

dotnet add package philipp2604.S7UaLib.Infrastructure

🎯 What This Library Is (and Isn't)

  • ✔️ IT IS: The concrete implementation layer. It contains the working code that communicates with the PLC and manages data.
  • ❌ IT IS NOT: The public-facing API. Its components are complex and require careful coordination. For a simple, unified interface, you should use the main S7UaLib package, which orchestrates these components for you.

🤝 Contributing

Contributions are welcome! Please refer to the main S7UaLib repository for guidelines on reporting issues or submitting pull requests.

⚖️ License

This project is licensed under the GNU General Public License v2.0 (GPL-2.0).

This is a direct consequence of the dependency on the official OPCFoundation.NetStandard.Opc.Ua packages, which are licensed under GPL 2.0. Any project using S7UaLib.Infrastructure must therefore also comply with the terms of the GPL 2.0 license, which generally means that if you distribute your application, you must also make the source code available.

Please review the license terms carefully before integrating this library into your project.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on philipp2604.S7UaLib.Infrastructure:

Package Downloads
philipp2604.S7UaLib

A modern, high-level .NET library designed to simplify communication with Siemens S7 PLCs via their integrated OPC UA servers.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
5.1.2 113 7/31/2025
5.0.0 94 7/29/2025
4.3.0 415 7/21/2025
4.2.0 142 7/17/2025
4.1.0 147 7/16/2025
4.0.0 148 7/16/2025
3.0.0 155 7/14/2025