C# और .NET

C# में TIA पोर्टल, अंततः सरल।

C#/.NET एप्लिकेशन बनाएं जो मूल SDK की जटिलताओं के बिना TIA पोर्टल के साथ इंटरैक्ट करते हैं। T-IA Connect async/await के साथ एक REST API या आधुनिक C# क्लाइंट प्रदान करता है।

चुनौती

TIA Openness SDK जटिल है

मूल SDK के साथ C# से TIA पोर्टल का उपयोग करने के लिए बहुत सारे बॉयलरप्लेट कोड और Siemens आर्किटेक्चर के गहन ज्ञान की आवश्यकता होती है।

DLL संदर्भ

प्रत्येक TIA पोर्टल संस्करण के अपने DLL होते हैं। संदर्भों और संस्करणों का प्रबंधन करना थकाऊ है।

STA थ्रेडिंग

TIA Openness को STA थ्रेड की आवश्यकता होती है। आधुनिक async/await पैटर्न के साथ असंगत।

वर्बोज़ कोड

प्रोजेक्ट ट्री को नेविगेट करना, टाइप कास्टिंग, लेनदेन हैंडलिंग... कम मूल्य के लिए बहुत सारा कोड।

कोई NuGet नहीं

कोई आधिकारिक NuGet पैकेज नहीं। प्रत्येक विकास मशीन पर मैनुअल DLL इंस्टॉलेशन।

समाधान

दो दृष्टिकोण C#/.NET के लिए

T-IA Connect आपके C# अनुप्रयोगों में TIA पोर्टल को एकीकृत करने के दो तरीके प्रदान करता है: एक सार्वभौमिक REST API या एक मूल C# क्लाइंट।

REST API

T-IA Connect API को कॉल करने के लिए मानक HttpClient का उपयोग करें। .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

सभी विधियां अतुल्यकालिक (asynchronous) हैं। UI अनुप्रयोगों और वेब सेवाओं के लिए बिल्कुल सही।

पूर्ण IntelliSense

XML दस्तावेज़ीकरण, दृढ़ता से टाइप किए गए प्रकार, ऑटोकम्प्लीशन। विजुअल स्टूडियो में अधिकतम उत्पादकता।

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 पोर्टल को प्रोग्राम करने का एक नया तरीका खोजें।