CP.TwinCATRx 1.5.0

dotnet add package CP.TwinCATRx --version 1.5.0                
NuGet\Install-Package CP.TwinCATRx -Version 1.5.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="CP.TwinCATRx" Version="1.5.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add CP.TwinCATRx --version 1.5.0                
#r "nuget: CP.TwinCATRx, 1.5.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.
// Install CP.TwinCATRx as a Cake Addin
#addin nuget:?package=CP.TwinCATRx&version=1.5.0

// Install CP.TwinCATRx as a Cake Tool
#tool nuget:?package=CP.TwinCATRx&version=1.5.0                

TwinCATRx

License Build Nuget NuGet

A Reactive implementation of TwinCAT ADS

This is a reactive implementation of TwinCAT ADS. It is based on the TwinCAT ADS library from Beckhoff. It is a wrapper around the TwinCAT ADS library that allows you to use the TwinCAT ADS library in a reactive way. It is based on the Reactive Extensions (Rx) library.

Currently it does not support the following features:

  • Arrays of string
  • Arrays of string in structures
    // Create Client
    var client = new RxTcAdsClient();
    var settings = new Settings { AdsAddress = "5.35.59.10.1.1", Port = 801, SettingsId = "Default" };

    // Add notification variables
    // Structures
    settings.AddNotification(".Tag1");
    settings.AddNotification(".Tag2");
    settings.AddNotification(".Tag3");
    settings.AddNotification(".AString", arraySize: 80);
    settings.AddNotification(".ABool");
    settings.AddNotification(".AByte");
    settings.AddNotification(".AInt");
    settings.AddNotification(".ADInt");
    settings.AddNotification(".AReal");
    settings.AddNotification(".ALReal");

    // Add Write variables, these can be read too using client.Read("TagName")
    // NOT SUPPORTED: arrays of string
    ////settings.AddWriteVariable(".ArrString", 11));
    settings.AddWriteVariable(".ArrBool", 11);
    settings.AddWriteVariable(".ArrByte", 11);
    settings.AddWriteVariable(".ArrInt", 11);
    settings.AddWriteVariable(".ArrDInt", 11);
    settings.AddWriteVariable(".ArrReal", 11);
    settings.AddWriteVariable(".ArrLReal", 11);
    client.Connect(settings);

    // Observe notification tags simple types
    client.Observe<string>(".AString").Subscribe(data => Console.WriteLine(data));
    client.Observe<bool>(".ABool").Subscribe(data => Console.WriteLine(data));
    client.Observe<byte>(".AByte").Subscribe(data => Console.WriteLine(data));
    client.Observe<short>(".AInt").Subscribe(data => Console.WriteLine(data));
    client.Observe<int>(".ADInt").Subscribe(data => Console.WriteLine(data));
    client.Observe<float>(".AReal").Subscribe(data => Console.WriteLine(data));
    client.Observe<double>(".ALReal").Subscribe(data => Console.WriteLine(data));

    // Observe Write variables these will execute when tag is read.
    client.Observe<bool[]>(".ArrBool").Subscribe(data => Console.WriteLine(data));
    client.Observe<byte[]>(".ArrByte").Subscribe(data => Console.WriteLine(data));
    client.Observe<short[]>(".ArrInt").Subscribe(data => Console.WriteLine(data));
    client.Observe<int[]>(".ArrDInt").Subscribe(data => Console.WriteLine(data));
    client.Observe<float[]>(".ArrReal").Subscribe(data => Console.WriteLine(data));
    client.Observe<double[]>(".ArrLReal").Subscribe(data => Console.WriteLine(data));

    // Ensure the client is initialized before reading or writing
    client.InitializeComplete().Subscribe(() =>
    {
        // Read tags of a simple type
        client.Read(".AString");
        client.Read(".ABool");
        client.Read(".AByte");
        client.Read(".AInt");
        client.Read(".ADInt");
        client.Read(".AReal");
        client.Read(".ALReal");

        // Write a value
        client.Write(".ABool", true);
    });

    // Create structure to store data
    var tag1 = client.CreateStruct(".Tag1", true);
    tag1.StructureReady().Subscribe(data =>
    {
        // read from structure as stream
        data.Observe<bool>("ABool").Subscribe(value => Console.WriteLine(value));
        data.Observe<short>("AInt").Subscribe(value => Console.WriteLine(value));
        data.Observe<string>("AString").Subscribe(value => Console.WriteLine(value));

        // read from structure as one time read from the first level.
        var tag = data.Value<short>("AInt");

        data.WriteValues(ht =>
        {
            // write values to structure
            ht.Value("AInt", (short)(tag + 10));
            ht.Value("AString", $"Int Value {tag + 10}");
            
            // Values are written from the structure to the PLC upon return.
        });
    });
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net6.0-windows10.0.17763 is compatible.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  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.  net8.0-windows10.0.17763 is compatible.  net9.0-windows10.0.17763 is compatible. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos 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 CP.TwinCATRx:

Package Downloads
MQTTnet.Rx.TwinCAT

Reactive extensions for MQTTnet Broker

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.5.0 76 12/20/2024
1.4.3 127 11/4/2024
1.4.2 89 10/28/2024
1.4.1 288 9/9/2024
1.4.0 264 8/20/2024
1.3.1 170 8/6/2024
1.3.0 141 6/5/2024
1.2.1 143 3/22/2024
1.2.0 258 12/27/2023
1.1.0 548 7/7/2023
1.0.1 236 4/15/2023
1.0.0 503 2/14/2023
0.9.0 305 2/2/2023
0.8.1 301 2/2/2023
0.8.0 273 2/1/2023
0.7.0 445 1/27/2023
0.6.0 449 1/24/2023
0.5.0 293 1/24/2023
0.4.0 476 1/22/2023
0.3.0 321 1/5/2023
0.2.0 325 1/4/2023

Compatability with Net 6, Net 7 and netstandard2.0