C# & .NET

TIA Portal v C#, končno enostavno.

Razvijajte C#/.NET aplikacije, ki komunicirajo s TIA Portalom brez zapletov native SDK-ja. T-IA Connect nudi REST API ali sodoben C# odjemalec s podporo za async/await.

Izziv

TIA Openness SDK je kompleksen

Uporaba TIA Portala iz C# z native SDK-jem zahteva veliko odvečne kode in poglobljeno znanje Siemensove arhitekture.

DLL reference

Vsaka različica TIA Portala ima svoje DLL-je. Upravljanje referenc in različic je naporno.

STA nitje

TIA Openness zahteva STA nit (Single Thread Apartment). Nezdružljivo s sodobnimi async/await vzorci.

Obsežna koda

Navigacija po drevesu projekta, pretvarjanje tipov, upravljanje transakcij... Veliko kode za malo dodane vrednosti.

Brez NuGet paketa

Ni uradnega NuGet paketa. Ročna namestitev DLL-jev na vsak razvojni računalnik.

Rešitev

Dva pristopa za C#/.NET

T-IA Connect vam nudi dva načina za integracijo TIA Portala v vaše C# aplikacije: univerzalni REST API ali native C# odjemalec.

REST API

Uporabite standardni HttpClient za klicanje T-IA Connect API-ja. Deluje z .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# odjemalec

NuGet paket s popolnim IntelliSensom, močno tipiziranimi razredi in async/await vzorci.

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

Zakaj T-IA Connect za C#

Native Async/Await

Vse metode so asinkrone. Popolno za UI aplikacije in spletne storitve.

Popoln IntelliSense

XML dokumentacija, močno tipizirani razredi, samodejno dopolnjevanje. Maksimalna produktivnost v Visual Studiu.

NuGet paket

Namestitev z enim ukazom: dotnet add package TiaConnect.Client. Samodejne posodobitve.

Sodoben .NET

Združljivo z .NET 6, 7, 8 in .NET Framework 4.7.2+. Uporabljajte najnovejše C# funkcije.

Primerjava kode

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

Ste pripravljeni poenostaviti svojo C# kodo?

Preizkusite T-IA Connect API in odkrijte nov način programiranja TIA Portala.