C# & .NET

TIA Portal en C#, enfin simple.

Développez des applications C#/.NET qui interagissent avec TIA Portal sans les complications du SDK natif. T-IA Connect offre une API REST ou un client C# moderne avec async/await.

Le défi

Le SDK TIA Openness est complexe

Utiliser TIA Portal depuis C# avec le SDK natif demande beaucoup de code boilerplate et une connaissance approfondie de l'architecture Siemens.

Références DLL

Chaque version de TIA Portal a ses propres DLL. Gérer les références et versions est fastidieux.

Threading STA

TIA Openness requiert un thread STA. Incompatible avec les patterns async/await modernes.

Code verbeux

Navigation dans l'arborescence projet, casting de types, gestion des transactions... Beaucoup de code pour peu de valeur.

Pas de NuGet

Pas de package NuGet officiel. Installation manuelle des DLL sur chaque machine de développement.

La solution

Deux approches pour C#/.NET

T-IA Connect vous offre deux façons d'intégrer TIA Portal dans vos applications C# : une API REST universelle ou un client C# natif.

API REST

Utilisez HttpClient standard pour appeler l'API T-IA Connect. Fonctionne avec .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>();

Client C# natif

Package NuGet avec IntelliSense complet, types fortement typés et patterns async/await.

// 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})");
Avantages

Pourquoi T-IA Connect pour C#

Async/Await natif

Toutes les méthodes sont asynchrones. Parfait pour les applications UI et les services web.

IntelliSense complet

Documentation XML, types fortement typés, autocomplétion. Productivité maximale dans Visual Studio.

NuGet package

Installation en une commande : dotnet add package TiaConnect.Client. Mises à jour automatiques.

.NET moderne

Compatible .NET 6, 7, 8 et .NET Framework 4.7.2+. Utilisez les dernières fonctionnalités C#.

Comparaison du code

TIA Openness natif
// 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}");

Prêt à simplifier votre code C# ?

Testez l'API T-IA Connect et découvrez une nouvelle façon de programmer TIA Portal.