C# и .NET

TIA Portal на C#, наконец-то просто.

Создавайте приложения C#/.NET, взаимодействующие с TIA Portal, без сложностей нативного SDK. T-IA Connect предлагает REST API или современный C# клиент с async/await.

Вызов

SDK TIA Openness сложен

Использование TIA Portal из C# с нативным SDK требует много шаблонного кода и глубоких знаний архитектуры Siemens.

Ссылки на DLL

У каждой версии TIA Portal свои DLL. Управление ссылками и версиями утомительно.

Потоки STA

TIA Openness требует поток STA. Несовместимо с современными паттернами async/await.

Многословный код

Навигация по дереву проекта, приведение типов, обработка транзакций... Много кода для малого результата.

Нет NuGet

Нет официального пакета NuGet. Ручная установка DLL на каждой машине разработчика.

Решение

Два подхода для C#/.NET

T-IA Connect предлагает два способа интеграции TIA Portal в ваши приложения C#: универсальный REST API или нативный C# клиент.

REST API

Используйте стандартный HttpClient для вызова API T-IA Connect. Работает с .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>();

Нативный C# Клиент

Пакет NuGet с полным IntelliSense, строгой типизацией и паттернами 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})");
Преимущества

Почему T-IA Connect для C#

Нативный Async/Await

Все методы асинхронны. Идеально для UI-приложений и веб-сервисов.

Полный IntelliSense

XML-документация, строгая типизация, автодополнение. Максимальная продуктивность в Visual Studio.

Пакет NuGet

Установка одной командой: dotnet add package TiaConnect.Client. Автоматические обновления.

Современный .NET

Совместимо с .NET 6, 7, 8 и .NET Framework 4.7.2+. Используйте последние возможности C#.

Сравнение Кода

Нативный 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}");

Готовы упростить ваш код C#?

Попробуйте API T-IA Connect и откройте для себя новый способ программирования TIA Portal.