TIA Portal بلغة C#، بسيطة أخيراً.
قم بتطوير تطبيقات C#/.NET التي تتفاعل مع TIA Portal دون تعقيدات الـ SDK الأصلي. يوفر T-IA Connect واجهة برمجة تطبيقات REST أو عميلاً حديثاً لـ 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 عالمية أو عميل C# أصلي.
واجهة برمجة تطبيقات REST
استخدم 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
جميع الطرق غير متزامنة. مثالية لتطبيقات واجهة المستخدم وخدمات الويب.
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}");