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#.
Сравнение Кода
// 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 - 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.