C# & .NET

TIA Portal em C#, finalmente simples.

Construa aplicações C#/.NET que interagem com o TIA Portal sem as complicações do SDK nativo. O T-IA Connect oferece uma API REST ou cliente C# moderno com async/await.

O Desafio

O SDK TIA Openness é complexo

Usar o TIA Portal com C# através do SDK nativo requer muito código boilerplate e conhecimento profundo da arquitetura Siemens.

Referências DLL

Cada versão do TIA Portal tem suas próprias DLLs. Gerenciar referências e versões é tedioso.

Threads STA

O TIA Openness requer thread STA. Incompatível com padrões modernos async/await.

Código Verboso

Navegar na árvore do projeto, conversão de tipos, tratamento de transações... Muito código para pouco valor.

Sem NuGet

Nenhum pacote NuGet oficial. Instalação manual de DLLs em cada máquina de desenvolvimento.

A Solução

Duas abordagens para C#/.NET

O T-IA Connect oferece duas maneiras de integrar o TIA Portal às suas aplicações C#: uma API REST universal ou um cliente C# nativo.

API REST

Use o HttpClient padrão para chamar a API do T-IA Connect. Funciona com .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>();

Cliente C# Nativo

Pacote NuGet com IntelliSense completo, tipos fortemente tipados e padrões 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})");
Benefícios

Por que T-IA Connect para C#

Async/Await Nativo

Todos os métodos são assíncronos. Perfeito para aplicações UI e serviços web.

IntelliSense Completo

Documentação XML, tipos fortemente tipados, autocompletar. Produtividade máxima no Visual Studio.

Pacote NuGet

Instalação em um comando: dotnet add package TiaConnect.Client. Atualizações automáticas.

Moderno .NET

Compatível com .NET 6, 7, 8 e .NET Framework 4.7.2+. Use os recursos mais recentes do C#.

Comparação de Código

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

Pronto para simplificar seu código C#?

Experimente a API T-IA Connect e descubra uma nova maneira de programar o TIA Portal.