Acuit.Pinpoint.IO.PlcCommunication 8.0.0-preview.40

This is a prerelease version of Acuit.Pinpoint.IO.PlcCommunication.
dotnet add package Acuit.Pinpoint.IO.PlcCommunication --version 8.0.0-preview.40
                    
NuGet\Install-Package Acuit.Pinpoint.IO.PlcCommunication -Version 8.0.0-preview.40
                    
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="Acuit.Pinpoint.IO.PlcCommunication" Version="8.0.0-preview.40" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Acuit.Pinpoint.IO.PlcCommunication" Version="8.0.0-preview.40" />
                    
Directory.Packages.props
<PackageReference Include="Acuit.Pinpoint.IO.PlcCommunication" />
                    
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 Acuit.Pinpoint.IO.PlcCommunication --version 8.0.0-preview.40
                    
#r "nuget: Acuit.Pinpoint.IO.PlcCommunication, 8.0.0-preview.40"
                    
#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 Acuit.Pinpoint.IO.PlcCommunication@8.0.0-preview.40
                    
#: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=Acuit.Pinpoint.IO.PlcCommunication&version=8.0.0-preview.40&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Acuit.Pinpoint.IO.PlcCommunication&version=8.0.0-preview.40&prerelease
                    
Install as a Cake Tool

Acuit.Pinpoint.IO.PlcCommunication

This package provides types for communicating with PLCs via libplctag.

libplctag version 2.6.12 is included with this package.

Background

Sometimes multiple plug-ins at a single Acuit Pinpoint station need to communicate with PLCs, or possibly the same PLC. While plug-ins are free to use any PLC communication library, libplctag is a popular open-source library for performing PLC communication. libplctag is designed to optimize communication via a single library instance within a process, so when multiple Acuit Pinpoint Workstation plug-ins are using libplctag for PLC communication, they should preferably all be using a shared libplctag library instance. However, due to Acuit Pinpoint Workstation's plug-in architecture, each plug-in is typically loaded into its own isolated assembly load context with its own private copy of its dependencies, which would normally result in multiple instances of libplctag being loaded into the same process.

To facilitate plug-ins using a shared instance of libplctag, Acuit Pinpoint Workstation includes libplctag via this library.

Low-level libplctag API

Low-level access to libplctag via a thin .NET layer over the C API is provided via types in the Acuit.Pinpoint.IO.PlcCommunication.LibPlcTag namespace.

High-level API

This package also includes a higher-level API that abstracts libplctag tags via carefully-designed .NET types (i.e., ITag<TAttributes>), along with providing PLC-specific types that properly handle various tag data types (e.g., the types in the Acuit.Pinpoint.IO.PlcCommunication.ControlLogix namespace).

Note that this functionality is similar to that provided by the popular libplctag.NET .NET wrapper library, but with these improvements:

  • The API is cleaner and more closely aligns to the latest .NET API conventions.
  • The implementation is more efficient, with fewer allocations and better performance.
  • The design allows for easy testing, with abstractions that allow for unit testing, bypassing libplctag.

Fakes

Fake implementations are provided to facilitate unit testing or for simulating PLCs. This abstraction occurs at the low-level libplctag API wrapper layer via the FakeLibPlcTagApi class.

Usually, a tag factory like ControlLogixTagFactory should be used in your application to create tags. One of the options provided to the tag factory is a LibPlcTagApi property, which, by default, will be set to the normal libplctag API wrapper. This can instead be set to an instance of FakeLibPlcTagApi to cause the fake libplctag API to be used instead for all tags created using the factory.

Before any tags can be used, they must be initialized in the fake controller data maintained by the fake API wrapper. The FakeLibPlcTagApi class requires a FakeLibPlcTagApiOptions instance, which, among other things, has a ControllerData property that specifies a set of faked controller data. By default, this will be set to a shared default instance, but it can be changed to a unique FakeControllerData instance when multiple controllers are being emulated. Initially, each FakeControllerData will not contain any tag data, so attempting to read or write any tags will raise errors as if those tags do not exist in the PLC. To initialize the tags, use one of the SetTagValue methods or extension methods to set the tag data in the fake controller. This can be called again at any time to emulate a tag value changing in the controller.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  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 (2)

Showing the top 2 NuGet packages that depend on Acuit.Pinpoint.IO.PlcCommunication:

Package Downloads
Acuit.Pinpoint.Workstation.PlugIns

This meta package does not contain any assets itself, but it references all of the package dependencies used to develop plug-ins for Acuit Pinpoint Workstation.

Acuit.Pinpoint.IO.Workstation

Provides components related to working with external devices that are hosted within Acuit Pinpoint Workstation and that integrate with WPF.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
8.0.0-preview.40 329 11/20/2025
8.0.0-preview.39 251 11/17/2025
8.0.0-preview.38 236 11/12/2025
8.0.0-preview.37 205 11/10/2025
8.0.0-preview.36 85 11/7/2025
8.0.0-preview.35 132 11/4/2025
8.0.0-preview.34 131 11/3/2025
8.0.0-preview.33 136 11/3/2025
8.0.0-preview.32 141 10/30/2025
8.0.0-preview.31 134 10/28/2025
8.0.0-preview.30 131 10/26/2025
8.0.0-preview.29 132 10/2/2025
8.0.0-preview.28 126 10/1/2025
8.0.0-preview.27 129 9/23/2025
8.0.0-preview.26 266 9/16/2025
8.0.0-preview.25 530 7/23/2025
8.0.0-preview.24 131 7/13/2025
8.0.0-preview.23 277 6/12/2025
8.0.0-preview.22 111 6/7/2025
8.0.0-preview.21 141 5/19/2025
8.0.0-preview.20 171 5/16/2025
8.0.0-preview.19 146 3/13/2025
8.0.0-preview.18 134 3/8/2025
8.0.0-preview.17 186 3/3/2025
8.0.0-preview.16 89 1/18/2025
8.0.0-preview.15 79 1/13/2025
8.0.0-preview.14 80 1/9/2025
8.0.0-preview.13 95 12/22/2024
8.0.0-preview.12 98 12/21/2024
8.0.0-preview.11 88 12/20/2024
8.0.0-preview.10 106 12/16/2024