C# y .NET

TIA Portal en C#, por fin sencillo.

Desarrolle aplicaciones C#/.NET que interactúen con TIA Portal sin las complicaciones del SDK nativo. T-IA Connect ofrece una API REST o un cliente C# moderno con soporte de async/await.

El desafío

El SDK de TIA Openness es complejo

Utilizar TIA Portal desde C# con el SDK nativo requiere mucho código boilerplate y un conocimiento profundo de la arquitectura de Siemens.

Referencias a DLL

Cada versión de TIA Portal tiene sus propias DLL. Gestionar las referencias y versiones es tedioso.

Threading STA

TIA Openness requiere un hilo STA. Incompatible con los patrones async/await modernos.

Código verboso

Navegación por el árbol del proyecto, casting de tipos, gestión de transacciones... Mucho código para poco valor.

Sin NuGet

No existe un paquete NuGet oficial. Instalación manual de las DLL en cada máquina de desarrollo.

La solución

Dos enfoques para C#/.NET

T-IA Connect le ofrece dos formas de integrar TIA Portal en sus aplicaciones C#: una API REST universal o un cliente C# nativo.

API REST

Utilice el HttpClient estándar para llamar a la API de T-IA Connect. Funciona 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>();

Cliente C# nativo

Paquete NuGet con IntelliSense completo, tipos fuertemente tipados y patrones 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})");
Ventajas

Por qué T-IA Connect para C#

Async/Await nativo

Todos los métodos son asíncronos. Perfecto para aplicaciones UI y servicios web.

IntelliSense completo

Documentación XML, tipos fuertemente tipados, autocompletado. Máxima productividad en Visual Studio.

Paquete NuGet

Instalación en un solo comando: dotnet add package TiaConnect.Client. Actualizaciones automáticas.

.NET moderno

Compatible con .NET 6, 7, 8 y .NET Framework 4.7.2+. Utilice las últimas funcionalidades de C#.

Comparación del código

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

¿Listo para simplificar su código C#?

Pruebe la API de T-IA Connect y descubra una nueva forma de programar TIA Portal.