Açık kaynak · Apache-2.0 · 0.1.0-preview.4
.NET için Modbus ve OPC UA sürücüleri
Proxus’un içindeki protokol sürücüleri, NuGet paketi olarak. .NET 10 ve Native AOT için yazıldı: reflection yok, çalışma anında kod üretimi yok, gerçek async soket G/Ç’si var; hatalar neyin, neden başarısız olduğunu ve ne denenmesi gerektiğini söyler.
- .NET 10, Native AOT
- Üçüncü taraf bağımlılığı yok
- Bağımsız yazılımlarla test edildi
Paketler
Dört paket, tek sözleşme
- Proxus.Drivers.Modbus
- TCP üzerinden Modbus master; ağ geçidi ya da sizin açtığınız seri port üzerinden RTU ve ASCII. Coil, discrete input, holding ve input register’lar, veri tipleri ve okuma planlama.
- Proxus.Drivers.OpcUa
- OPC UA Binary istemcisi: None, Basic256Sha256, Aes128_Sha256_RsaOaep ve Aes256_Sha256_RsaPss ile SecureChannel; Session, Read, Write, Browse, abonelikler, geçmiş veri, metotlar ve olaylar.
- Proxus.Drivers.Abstractions
- Protokolden bağımsız değer, kalite, zaman damgası, hata tipleri ve ortak sürücü sözleşmesi.
- Proxus.Drivers.Core
- Sürücülerin ortak kullandığı soket ve zaman aşımı altyapısı.
Protokol rehberleri
Hızlı başlangıç
Bir register ve bir düğüm okuyun
Kurulum (önizleme paketleri)
dotnet add package Proxus.Drivers.Modbus --prerelease
dotnet add package Proxus.Drivers.OpcUa --prerelease Modbus TCP: iki holding register okuma
using Proxus.Drivers.Modbus;
await using var client = new ModbusTcpClient(new ModbusTcpOptions
{
Host = "192.168.1.10",
Port = 502,
UnitId = 1,
ConnectTimeout = TimeSpan.FromSeconds(5),
RequestTimeout = TimeSpan.FromSeconds(5)
});
var connected = await client.ConnectAsync();
if (!connected.IsSuccess) { Console.Error.WriteLine(connected.Error.ToUserMessage()); return; }
var registers = new ushort[2];
var read = await client.ReadHoldingRegistersAsync(0, registers);
Console.WriteLine(read.IsSuccess ? $"hr:0 = {registers[0]}" : read.Error.ToUserMessage()); OPC UA: sunucu saatini okuma (hata kontrolü kısaltıldı)
using Proxus.Drivers;
using Proxus.Drivers.OpcUa;
await using var client = new OpcUaTcpClient(new OpcUaTcpOptions
{
EndpointUrl = new Uri("opc.tcp://192.168.1.20:4840")
});
await client.ConnectAsync();
await client.OpenAnonymousSessionAsync();
var read = await client.ReadAsync(new OpcUaNodeDescriptor(IndustrialNodeId.Numeric(0, 2258)));
Console.WriteLine($"{read.Value.Value}; quality={read.Value.Quality}"); Ne kadarı kanıtlandı
Her özellik neye karşı test edildiğini söyler
Her özelliğin bir kanıt seviyesi vardır: depodaki byte düzeyinde testlerden bağımsız yazılımlarla birlikte çalışmaya kadar. libmodbus, PyModbus, open62541, asyncua ve OPC Foundation referans sunucusu bunlardan bazılarıdır. Simülatör fiziksel cihaz değildir; rehberler bunu açıkça yazar.
- Deterministik testler: byte düzeyinde çerçeveler, yaşam döngüleri, hatalar ve soket davranışı.
- Bağımsız yazılımlar: aynı senaryolar başkalarının yazdığı protokol yazılımlarına karşı.
- Native AOT: senaryolar yalnızca test ortamında değil, yayınlanmış yerel programlarla da çalıştırılır.
Nerede çalışıyor
Üründeki sürücülerin aynısı
Açık kaynak Proxus Industrial MCP Server cihazları bu paketlerle okur; Proxus da bunları Siemens S7, EtherNet/IP, CNC ve diğer protokol sürücüleriyle birlikte kullanır.
Sık sorulanlar
.NET sürücüleri hakkında en çok sorulanlar.
- Ticari bir üründe kullanabilir miyim?
- Evet. Paketler Apache-2.0 lisansıyla açık kaynaktır; ticari kullanıma, değiştirmeye ve yeniden dağıtmaya izin verir.
- Modbus sürücüsü Modbus RTU destekliyor mu?
- Evet. Çerçeve tipini RTU ya da ASCII yapın; seri-Ethernet ağ geçidi üzerinden bağlanın ya da kendi açtığınız seri port akışını sürücüye verin. Paketlerin seri port kütüphanesine bağımlılığı yoktur.
- Hangi OPC UA güvenlik politikaları destekleniyor?
- None, Basic256Sha256, Aes128_Sha256_RsaOaep ve Aes256_Sha256_RsaPss; Sign ya da SignAndEncrypt modunda, anonim, kullanıcı adı ya da X509 kimliğiyle.
- Üretimde kullanılmaya hazır mı?
- Paketler önizleme sürümündedir (0.1.0-preview.4). Her özelliğin kanıt seviyesi protokol rehberlerinde yayınlanır; neyin neye karşı test edildiğini kullanmadan önce görebilirsiniz.