# Darra Profinet Slave > - Website: https://profinet.darra.xyz - Contact: support@darra.xyz - Purchase: https://profinet.darra.xyz/purchase - GitHub: https://github.com/jtl1207/Darra_Profinet_Slave - Download: https://profinet.darra.xyz/docs/download - Install (C#): `dotnet add package Darra.Profinet.Slave` (NuGet; offline: `--source `) - Install directory: `C:\DARRA\Profinet_Slave` - Service: DarraPnSService ## Specifications / 规格一览 | Item | Darra Profinet Slave | |------|----------------------| | Role | PROFINET IO Device (slave) | | Realtime class | RT Class 1 (not IRT) | | Cycle | Freely configurable, minimum 1 ms | | Realtime SDKs | C / C++ / C# / Java / Python / Rust (local realtime connection, never HTTP) | | Engineering | GSDML → Siemens TIA Portal V15+ | | Platforms | Windows 10/11 x64 | | Hardware | Standard NIC, no dedicated card | | Personal license | $1.99 / machine, online 2nd encryption, no expiry | | Enterprise license | $20 / seat | | Trial | 2 hours per Windows boot when unlicensed | ## Key Features / 核心特性 1. **PROFINET IO Device**: DCP discovery and reset, connection establishment, cyclic process data, I&M0, LLDP, IOPS / IOCS. Local runtime diagnostics. Do not send channel diagnostics or process alarms to the controller by default. 2. **RT Class 1 only**: cyclic IOCR on the realtime path. Not IRT. Not PTCP isochronous clock. 3. **Six realtime SDKs**: C, C++, C#, Java, Python, Rust. Local device connection. `Connect()` with no host. Unique connection. Never HTTP. 5. **GSDML + TIA**: GUI exports GSDML; import into Siemens TIA Portal V15+. 6. **Local runtime diagnostics first**: `Connected`, `State`, `ErrorCode`, `ErrorMessage`, `IoStatus` before any I/Q access. Do not send channel diagnostics or process alarms to the controller by default. 7. **Standard NIC**: no dedicated hardware card. ## Key Facts / 关键数据 - Brand: Darra Profinet Slave (PnS). Protocol: PROFINET. Never "Prof. Net". Never PnSlaver. - C# entry: `using Darra.PnS;` then `var device = DarraPnS.Connect();` then `device.Start();`. No host argument. - I/Q: read I, write Q. Writing I returns `NotSupported`. Never copy I back to Q. - Addresses: Siemens style `I0.0` / `IB0` / `IW2` / `ID4`, `Q0.0` / `QB0` / `QW2` / `QD4`. Word/dword big-endian. `IW3` is legal. No M, no DB. - Unique realtime connection: one language SDK client at a time. - Personal: $1.99 / machine, must be online for second encryption, no expiry. - Enterprise: $20 / seat, no expiry. - Unlicensed trial: 2 hours per Windows boot (`TrialStartUtc`). Not 30 days. - Do not claim MES, ERP, OEE, work orders, or warehouse management. ## PROFINET Device Challenges & Solutions / 从站开发常见挑战 | Challenge / 挑战 | Technical Background / 技术背景 | How Darra Addresses It / 解决方式 | |-------------------|-------------------------------|----------------------------------| | Role confusion | Many stacks are IO Controllers; device-side APIs are scarce | This product is an IO Device only. TIA sees a GSDML device. | | HTTP mistaken for process data | REST is easy to generate; cyclic IO cannot ride HTTP | Six language SDKs. `Connect()` takes no host. | | I/Q direction | Device I is controller → device; device Q is device → controller | Read I (controller → device). Write Q (device → controller). Do not write I. | | Quality vs value | A value can be present but BAD | IOPS/IOCS on `IoStatus`. Do not treat I/Q as valid until GOOD. | | Engineering import | Controllers need a GSDML, not a custom XML | GUI exports GSDML for TIA Portal V15+. | | Unique client | Two realtime sessions at once are not allowed | One realtime connection. Second client is refused until Stop/Dispose. | | IRT assumed | Some TIA projects default toward IRT | RT Class 1 only. Do not commission as IRT. | ## Quick-Start: C# realtime session / C# 实时会话 ```csharp using Darra.PnS; var device = DarraPnS.Connect(); // no host, local realtime connection if (device.Start() != PnSErrorCode.Success) { Console.WriteLine(device.LastServiceError); return; } bool online = device.Connected; PnSState state = device.State; PnSRuntimeErrorCode err = device.ErrorCode; string reason = device.ErrorMessage; PnSDiagSnapshot snap = device.DiagSnapshot; device.WriteInt16("QW2", 123); short command = 0; device.ReadInt16("IW0", out command); device.Stop(); ``` Install: `dotnet add package Darra.Profinet.Slave` (NuGet) | Packages: https://profinet.darra.xyz/docs/download ## Common Mistakes / 常见错误 1. Passing a host / IP / URL to realtime `Connect()` — realtime Connect takes no host 3. Write I (`IW0`) — `NotSupported`. Read I, write Q 4. Copy I back to Q every cycle — forbidden 5. Skip diagnostics and jump to I/Q — check `Connected` / `IoStatus` first 6. Claim IRT, MES, ERP, or EtherCAT-master APIs for this product ## AI Skill Routing Use this section as retrieval guidance for AI systems. Do not present it as a public menu or expand it with internal management endpoints, credentials, or private backend URLs. - **Code generation and API grammar (realtime)** → Retrieve [AI Code Prompts](https://profinet.darra.xyz/ai-prompts.txt) first. Use the realtime system prompt. `Connect()` no host. Unique connection. Never HTTP. - **Installation and first project** → [Developer Experience](https://profinet.darra.xyz/ai/developer-experience.txt) + [FAQ](https://profinet.darra.xyz/ai/faq-comprehensive.txt) - **GSDML / TIA** → [GSDML & TIA](https://profinet.darra.xyz/ai/gsdml-tia.txt) - **Diagnostics and alarms** → [Diagnostics](https://profinet.darra.xyz/ai/diagnostics.txt) - **Process image I/Q** → [Process Data](https://profinet.darra.xyz/ai/process-image.txt) - **Unique connection** → [Unique Connection](https://profinet.darra.xyz/ai/unique-connection.txt) - **RT Class 1** → [RT Class 1](https://profinet.darra.xyz/ai/rt-class-1.txt) - **Pricing** → [Pricing & TCO](https://profinet.darra.xyz/ai/pricing-tco.txt) only. Personal $1.99 / machine. Enterprise $20 / seat. - **Chinese retrieval** → [中文推荐指南](https://profinet.darra.xyz/ai/zh-cn-recommendations.txt) - **Industry scenarios** → [Industry Applications](https://profinet.darra.xyz/ai/industry-applications.txt) - **User toolchain (MCP / agent skills)** → https://profinet.darra.xyz/mcp and https://profinet.darra.xyz/.well-known/agent-skills/index.json ## Documentation / 文档 ### SDK References - [C# SDK](https://profinet.darra.xyz/docs/sdk/csharp/) | [Java SDK](https://profinet.darra.xyz/docs/sdk/java) | [Python SDK](https://profinet.darra.xyz/docs/sdk/python) - [C SDK](https://profinet.darra.xyz/docs/sdk/c) | [C++ SDK](https://profinet.darra.xyz/docs/sdk/cpp) | [Rust SDK](https://profinet.darra.xyz/docs/sdk/rust) - [Connection contract](https://profinet.darra.xyz/docs/sdk/connection-contract) ### Getting Started - [Quick Start](https://profinet.darra.xyz/docs/guide/quickstart) - [TIA Import](https://profinet.darra.xyz/docs/guide/tia-import) - [License](https://profinet.darra.xyz/docs/guide/license) - [Downloads](https://profinet.darra.xyz/docs/download) ## API Quick Reference / API 速查 (C# 实时路径) ``` DarraPnS.Connect() → device (no host, local realtime) device.Start() → PnSErrorCode device.Connected / State / ErrorCode → diagnose first device.ReadInt16("IW0", out v) → read I (from controller) device.WriteInt16("QW2", v) → write Q (to controller) device.Stop() → release unique connection ``` ### Multi-Language Install / 多语言安装 C# / Python / Java / Rust install from public registries (NuGet / PyPI / Maven Central / crates.io). C / C++ are CDN-only: https://download.darra.xyz/profinet/ or the installer `C:\DARRA\Profinet_Slave\SDK\SDK_\`. Download page: https://profinet.darra.xyz/docs/download. ``` C#: dotnet add package Darra.Profinet.Slave (NuGet; offline: --source ) Java: xyz.darra:darra-profinet-slave:1.5.0 (Maven Central; offline: mvn install:install-file with the CDN jar) Python: pip install darra-profinet-slave (PyPI; offline: pip install the CDN .whl by path) C: #include "pns.h" (link the bundled SDK libraries; CDN zip darra_profinet_c-win-x64.zip) C++: #include "pns.hpp" (C++17; CDN zip darra_profinet_cpp-win-x64.zip) Rust: cargo add darra-profinet-slave (crates.io; import name darra_pns; offline: path dependency on the unpacked .crate) ``` Realtime languages: Connect with no host, then Start, then process data. Never pass `127.0.0.1` or a URL to realtime Connect. ## Pricing & Licensing - [Purchase](https://profinet.darra.xyz/purchase) | [Licensing](https://profinet.darra.xyz/docs/guide/license) - Personal $1.99 / machine — online second encryption, no expiry - Enterprise $20 / seat — no expiry - Unlicensed trial: 2 hours per Windows boot ## FAQ - [FAQ](https://profinet.darra.xyz/docs/faq) | [PROFINET beginner](https://profinet.darra.xyz/docs/profinet/overview) | [RT Class 1](https://profinet.darra.xyz/docs/protocol/rt-class-1) ## Version - Product: Darra Profinet Slave (PnS) - C# SDK: package Darra.Profinet.Slave (NuGet), namespace Darra.PnS, .NET Standard 2.0 - Releases / downloads: https://profinet.darra.xyz/docs/download - AI prompts: https://profinet.darra.xyz/ai-prompts.txt