C# & .NET

TIA Portal i C#, äntligen enkelt.

Utveckla C#/.NET-applikationer som interagerar med TIA Portal utan komplikationerna från det inbyggda SDK:et. T-IA Connect erbjuder ett REST-API eller en modern C#-klient med stöd för async/await.

Utmaningen

TIA Openness SDK är komplext

Att använda TIA Portal från C# med det inbyggda SDK:et kräver mycket boilerplate-kod och djupgående kunskap om Siemens arkitektur.

DLL-referenser

Varje version av TIA Portal har sina egna DLL:er. Att hantera referenser och versioner är tidsödande.

STA Threading

TIA Openness kräver en STA-tråd. Inkompatibelt med moderna async/await-mönster.

Omständig kod

Navigering i projektträdet, typomvandlingar, transaktionshantering... Mycket kod för lite värde.

Inget NuGet

Inget officiellt NuGet-paket finns. Manuell installation av DLL:er på varje utvecklingsmaskin.

Lösningen

Två tillvägagångssätt för C#/.NET

T-IA Connect erbjuder dig två sätt att integrera TIA Portal i dina C#-applikationer: ett universellt REST-API eller en inbyggd C#-klient.

REST-API

Använd standardiserad HttpClient för att anropa T-IA Connect API. Fungerar med .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>();

Inbyggd C#-klient

NuGet-paket med fullständig IntelliSense, starkt typade klasser och async/await-mönster.

// 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})");
Fördelar

Varför T-IA Connect för C#

Inbyggd Async/Await

Alla metoder är asynkrona. Perfekt för UI-applikationer och webbtjänster.

Fullständig IntelliSense

XML-dokumentation, starkt typade klasser, autokomplettering. Maximal produktivitet i Visual Studio.

NuGet-paket

Installation med ett kommando: dotnet add package TiaConnect.Client. Automatiska uppdateringar.

Modern .NET

Kompatibel med .NET 6, 7, 8 och .NET Framework 4.7.2+. Använd de senaste C#-funktionerna.

Jämförelse av kod

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

Redo att förenkla din C#-kod?

Testa T-IA Connect API och upptäck ett nytt sätt att programmera TIA Portal.