C# & .NET

用 C# 编程 TIA Portal, 终于简单了。

构建与 TIA Portal 交互的 C#/.NET 应用程序,而无需原生 SDK 的复杂性。T-IA Connect 提供 REST API 或具有 async/await 的现代 C# 客户端。

挑战

TIA Openness SDK 很复杂

使用原生 SDK 从 C# 使用 TIA Portal 需要大量样板代码和对西门子架构的深入了解。

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 调用 T-IA Connect API。适用于 .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# 客户端

具有完整 IntelliSense、强类型和 async/await 模式的 NuGet 包。

// 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 应用程序和 Web 服务。

完整的 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# 代码了吗?

试用 T-IA Connect API 并发现一种新的 TIA Portal 编程方式。