快速开始
5 步跑通 Darra PnSlave(PROFINET IO Device):装驱动 → 启服务 → GUI 导出 GSDML → TIA 导入 → 写 I / 读 Q。
实时主路径是 SDK Connect()(无参)→ Start() 映射过程映像。没有用户周期;周期帧由驱动按 RT Class 1 收发。
环境
| 项 | 要求 |
|---|---|
| 系统 | Windows 10/11 x64,管理员权限 |
| 运行时 | .NET 8 |
| 网卡 | 标准以太网卡(不要用 VMnet / TAP 当从站口) |
| 工程软件 | 西门子 TIA Portal V15.1 及以上 |
第 1 步:安装
以管理员运行安装包:
安装包/安装包.exe
装完后目录默认是 C:\DARRA\Profinet_Slave(磁盘路径尚未改名,产品名是 Darra PnSlave)。
| 装了什么 | 现网名字 |
|---|---|
| NDIS 协议驱动 | DarraRT_Pnet.sys(绑卡协议名 DarraRT_Pnet) |
| Windows 服务 | DarraPnetService |
| GUI / 6 语言 SDK / 文档 | 安装目录 |
安装包会自己走 netcfg 绑协议。不要手拷 .sys,也不要反复开关网卡。
第 2 步:启动服务
sc.exe start DarraPnetService
服务管站名 / 网卡 / GSD 对应的运行配置。SDK 不下发配置。
备用控制面(GUI / 诊断,不是实时 IO):
Invoke-RestMethod http://127.0.0.1:18840/api/status
端口 18840 固定。主站已在连时 不要 POST /api/stop,会拆数据面。
第 3 步:GUI 导出 GSDML
打开 GUI,配完设备 / 槽位 / 过程数据 / 报警后点「导出」:
| 文件 | 给谁 |
|---|---|
device.gsdml | TIA Portal 导入 |
device.xml | 服务加载 |
站名必须和后面 TIA 里分配的设备名一致(规则见 TIA 导入)。
第 4 步:TIA 导入
- TIA →「选项」→「管理 GSD 文件」→ 添加
device.gsdml - 硬件目录找到 Darra PnSlave,拖进网络
- 分配设备名、IP、IO 控制器
- 编译并下载到 PLC
细节见 TIA 导入指南。
第 5 步:写 I / 读 Q
主路径:Connect() 无参 → Start() 映射 GlobalIO → 写 I / 读 Q → Stop() 只卸映射。不传 host,不走 HTTP。
using DarraPnet.Pnet;
var pnet = DarraPnet.Connect(); // 实时实例,无参
pnet.Start(); // 映射过程映像,不 POST /api/start
// I 只写:从站输出,设备 → 控制器
pnet.Write(new byte[] { 0x11, 0x22, 0x33, 0x44 });
pnet.WriteBool("I0.0", true);
pnet.WriteInt16("IW2", 0x3344);
// Q 只读:从站输入,控制器 → 设备
pnet.Read(out byte[] q);
pnet.ReadInt16("QW0", out short cmd);
pnet.ReadBool("Q0.0", out bool bit0);
pnet.Stop(); // 只卸映射;在连不 POST /api/stop
测通:改从站输出 I,在控制器(或只读 Q)上看是否跟上。循环 IO 前 4 字节由主站同步,不要把 Q 抄回 I,也不要自己开用户周期线程。
| 区 | 方向 | 用法 |
|---|---|---|
I(I0.0 / IB0 / IW2 / ID4) | 设备 → 控制器 | 只写 |
Q(Q0.0 / QB0 / QW2 / QD4) | 控制器 → 设备 | 只读;写返回 NotSupported |
其他语言同一条路径:C PnetServiceConnectRealtime、C++ PnetService::Connect()、Java / Python PnetService.connect()、Rust PnetService::connect()。入口见各语言 API 页。
WebAPI 备用:DarraPnet.Connect("127.0.0.1"),端口 18840,给 GUI / 报警 / I&M。实时 IO 不要走这条。
验证
| 项 | 判据 |
|---|---|
| 驱动 | netcfg -q DarraRT_Pnet 有输出 |
| 服务 | sc.exe query DarraPnetService 为 RUNNING |
| TIA | 硬件目录出现 Darra PnSlave,能分配站名 / IP |
| IO | 写 I → 主站过程映像变化;读 Q 能看到主站下发(前 4 字节为主站同步) |
常见问题
| 现象 | 处理 |
|---|---|
| 服务起不来 | 用 GUI 重导出 device.xml,确认服务加载的是这份 |
| TIA 找不到设备 | 见 TIA 导入 |
| 已组态但 Q 不变 | 站名 / IP 是否与 TIA 一致;写的是 I 而不是 Q |
| 写了 I,前 4 字节被改回去 | 正常:前 4 字节是主站同步,不要抄 Q 回 I |
| 周期抖 | RT Class 1 软实时,无 IRT |