C# & .NET

TIA Portal in C#, eindelijk eenvoudig.

Ontwikkel C#/.NET-applicaties die communiceren met TIA Portal zonder de complicaties van de native SDK. T-IA Connect biedt een REST API of een moderne C# client met async/await.

De uitdaging

De TIA Openness SDK is ingewikkeld

TIA Portal gebruiken vanuit C# met de native SDK vereist veel boilerplate code en diepgaande kennis van de Siemens-architectuur.

DLL-referenties

Elke TIA Portal-versie heeft zijn eigen DLL's. Het beheren van referenties en versies is tijdrovend.

STA Threading

TIA Openness vereist een STA-thread. Incompatibel met moderne async/await patronen.

Woordrijke code

Navigatie door de projectboom, type-casting, transactiebeheer... Veel code voor weinig waarde.

Geen NuGet

Geen officieel NuGet-pakket. Handmatige installatie van DLL's op elke ontwikkelmachine.

De oplossing

Twee benaderingen voor C#/.NET

T-IA Connect biedt u twee manieren om TIA Portal in uw C#-applicaties te integreren: een universele REST API of een native C# client.

REST API

Gebruik de standaard HttpClient om de T-IA Connect API aan te roepen. Werkt met .NET Core, .NET 5+, .NET Framework.

// .NET with HttpClient
using var client = new HttpClient();
var response = await client.PostAsJsonAsync(
    "http://localhost:5000/api/blocks",
    new { name = "FC_Motor", type = "FC", language = "SCL" }
);
var block = await response.Content.ReadFromJsonAsync<Block>();

Native C# client

NuGet-pakket met volledige IntelliSense, sterk getypeerde typen en async/await patronen.

// T-IA Connect C# Client
using TiaConnect.Client;

var client = new TiaConnectClient("http://localhost:5000");

// Create a block with IntelliSense
var block = await client.Blocks.CreateAsync(new CreateBlockRequest
{
    Name = "FC_Motor",
    Type = BlockType.FC,
    Language = ProgrammingLanguage.SCL
});

Console.WriteLine($"Block created: {block.Name} (#{block.Number})");
Voordelen

Waarom T-IA Connect voor C#

Systeemeigen Async/Await

Alle methoden zijn asynchroon. Perfect voor UI-applicaties en webservices.

Volledige IntelliSense

XML-documentatie, sterk getypeerde typen, autocompletion. Maximale productiviteit in Visual Studio.

NuGet-pakket

Installatie in één commando: dotnet add package TiaConnect.Client. Automatische updates.

Modern .NET

Compatibel met .NET 6, 7, 8 en .NET Framework 4.7.2+. Gebruik de nieuwste C#-functies.

Vergelijking van de code

Systeemeigen TIA Openness
// Native TIA Openness - STA thread required
[STAThread]
static void Main()
{
    using (TiaPortal portal = new TiaPortal(TiaPortalMode.WithUserInterface))
    {
        Project project = portal.Projects.Open(new FileInfo(path));
        
        foreach (Device device in project.Devices)
        {
            DeviceItem cpu = device.DeviceItems
                .FirstOrDefault(di => di.GetService<SoftwareContainer>() != null);
            
            if (cpu != null)
            {
                var sw = cpu.GetService<SoftwareContainer>();
                var plc = sw.Software as PlcSoftware;
                var blocks = plc.BlockGroup.Blocks;
                
                // Create a block
                PlcBlock fc = blocks.CreateFC("FC_Motor");
            }
        }
    }
}
T-IA Connect C#
// T-IA Connect - Modern async
using TiaConnect.Client;

var client = new TiaConnectClient("http://localhost:5000");

// Open project
var project = await client.Projects.OpenAsync("C:/Projects/MyProject.ap18");

// Create an FC block
var block = await client.Blocks.CreateAsync(new CreateBlockRequest
{
    Name = "FC_Motor",
    Type = BlockType.FC,
    Language = ProgrammingLanguage.SCL,
    Comment = "Main motor control"
});

Console.WriteLine($"Created: {block.Name}");

Klaar om uw C#-code te vereenvoudigen?

Test de T-IA Connect API en ontdek een nieuwe manier om TIA Portal te programmeren.