philipp2604.S7UaLib.Core 4.3.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package philipp2604.S7UaLib.Core --version 4.3.0
                    
NuGet\Install-Package philipp2604.S7UaLib.Core -Version 4.3.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.Core" Version="4.3.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="philipp2604.S7UaLib.Core" Version="4.3.0" />
                    
Directory.Packages.props
<PackageReference Include="philipp2604.S7UaLib.Core" />
                    
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.Core --version 4.3.0
                    
#r "nuget: philipp2604.S7UaLib.Core, 4.3.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.Core@4.3.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.Core&version=4.3.0
                    
Install as a Cake Addin
#tool nuget:?package=philipp2604.S7UaLib.Core&version=4.3.0
                    
Install as a Cake Tool

S7UaLib.Core 🧱

The foundational library for the S7UaLib ecosystem. This package provides the core data models, interfaces, and enumerations used for representing a Siemens S7 PLC's structure via OPC UA. It is the shared kernel that enables all other S7UaLib packages to work together seamlessly.

This library defines what a variable, a data block, or a PLC memory area is, using modern, immutable C# records and interfaces. It is a required dependency for other S7UaLib packages and is typically not used directly by end-users.

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

✨ Key Features

  • 🏗️ Immutable Data Models: All PLC structural elements (S7Variable, S7DataBlockGlobal, etc.) are implemented as C# record types, ensuring thread safety and predictable behavior.
  • 🏛️ Comprehensive PLC Structure Contracts: Defines a rich set of interfaces (IS7Variable, IS7DataBlockInstance, IS7StructureElement) that accurately model the entire S7 OPC UA server layout, including:
    • Global Data Blocks (DB) and Instance Data Blocks (iDB)
    • Inputs (I), Outputs (Q), Memory (M), Timers (T), and Counters (C)
    • Nested structures and complex types (UDTs)
  • 📋 Rich S7 Data Type Enumeration: Provides the S7DataType enum, which covers a wide range of Siemens-specific types, from BOOL and INT to DTL and S5TIME.
  • 🔔 Core Event Definitions: Includes the essential VariableValueChangedEventArgs class, providing a standardized way to communicate data changes throughout the ecosystem.
  • 🔄 Type Converter Abstraction: Defines the IS7TypeConverter interface, establishing a contract for converting between raw OPC UA values and user-friendly .NET types.
  • ⚙️ Simplified OPC UA Configuration Models: Contains user-friendly classes like ApplicationConfiguration to abstract away some of the complexities of OPC UA setup.

🚀 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.Core

🎯 What This Library Is (and Isn't)

  • ✔️ IT IS: A library of contracts and data models. It defines the "shared language" for the S7UaLib ecosystem.
  • ❌ IT IS NOT: An active client. This library does not contain logic to connect to a PLC, browse the server, read/write values, or manage subscriptions. For that functionality, you need a full implementation package like S7UaLib.

🤝 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.Core 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.
  • net8.0

    • No dependencies.
  • net9.0

    • No dependencies.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on philipp2604.S7UaLib.Core:

Package Downloads
philipp2604.S7UaLib

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

philipp2604.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.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
5.1.2 124 7/31/2025
5.0.0 93 7/29/2025
4.3.0 426 7/21/2025
4.2.0 152 7/17/2025
4.1.0 148 7/16/2025
4.0.0 152 7/16/2025
3.0.0 162 7/14/2025