C# & .NET

TIA Portal in C#, finalmente semplice.

Sviluppa applicazioni C#/.NET che interagiscono con TIA Portal senza le complicazioni del SDK nativo. T-IA Connect offre un'API REST o un client C# moderno con supporto async/await.

La sfida

Il SDK TIA Openness è complesso

Utilizzare TIA Portal da C# con il SDK nativo richiede molto codice boilerplate e una conoscenza approfondita dell'architettura Siemens.

Riferimenti DLL

Ogni versione di TIA Portal ha le proprie DLL. Gestire i riferimenti e le versioni è faticoso.

Threading STA

TIA Openness richiede un thread STA. Incompatibile con i moderni pattern async/await.

Codice prolisso

Navigazione nell'albero del progetto, cast di tipi, gestione transazioni... Molto codice per poco valore aggiunto.

Nessun pacchetto NuGet

Manca un pacchetto NuGet ufficiale. Installazione manuale delle DLL su ogni macchina di sviluppo.

La soluzione

Due approcci per C#/.NET

T-IA Connect ti offre due modi per integrare TIA Portal nelle tue applicazioni C#: un'API REST universale o un client C# nativo.

API REST

Usa HttpClient standard per chiamare l'API T-IA Connect. Funziona con .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# nativo

Pacchetto NuGet con IntelliSense completo, tipi fortemente tipizzati e pattern 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})");
Vantaggi

Perché T-IA Connect per C#

Async/Await nativo

Tutti i metodi sono asincroni. Perfetto per applicazioni UI e servizi web.

IntelliSense completo

Documentazione XML, tipi fortemente tipizzati, autocompletamento. Massima produttività in Visual Studio.

Pacchetto NuGet

Installazione con un comando: dotnet add package TiaConnect.Client. Aggiornamenti automatici.

.NET moderno

Compatibile con .NET 6, 7, 8 e .NET Framework 4.7.2+. Utilizza le ultime funzionalità C#.

Confronto del codice

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

Pronto a semplificare il tuo codice C# ?

Prova l'API T-IA Connect e scopri un nuovo modo di programmare TIA Portal.