ZL.IotEngine
2.2.18
See the version list below for details.
dotnet add package ZL.IotEngine --version 2.2.18
NuGet\Install-Package ZL.IotEngine -Version 2.2.18
<PackageReference Include="ZL.IotEngine" Version="2.2.18" />
<PackageVersion Include="ZL.IotEngine" Version="2.2.18" />
<PackageReference Include="ZL.IotEngine" />
paket add ZL.IotEngine --version 2.2.18
#r "nuget: ZL.IotEngine, 2.2.18"
#:package ZL.IotEngine@2.2.18
#addin nuget:?package=ZL.IotEngine&version=2.2.18
#tool nuget:?package=ZL.IotEngine&version=2.2.18
ZL.IotEngine
工业 PLC 数据采集运行时内核(.NET)。目标框架:netstandard2.0 / net48 / net8.0 / net10.0。
装什么
dotnet add package ZL.IotEngine
dotnet add package ZL.IotDriver # ← 驱动在独立包,必须一起装
🔴 只装 ZL.IotEngine 是没用的:驱动已迁出为
ZL.IotDriver,依赖方向是ZL.IotDriver → ZL.IotEngine(单向)。只引用引擎 ⇒ 注册表为空 ⇒ 创建设备报不支持的协议类型 'xxx'。可选:(空)。
它解决什么
不是"能不能连上 PLC",而是连上之后:
- 上千点位逐个读 ⇒ 请求次数爆炸 ⇒ 自动合并成块
- 一个坏点超时 ⇒ 拖垮整块 ⇒ 块级隔离 + 自动恢复
- 值没变也上报 ⇒ 淹没业务 ⇒ 死区/变化筛选
- 采集逻辑散在业务里 ⇒ 无法复用 ⇒ 可嵌入的内核
实测(仓内 docs/CORE_CAPABILITY_BRIEF.md)
| 指标 | 值 |
|---|---|
| 合并能力 | 300 点位 → 4 个块,请求数 −98.67% |
| 吞吐 | ≈670 次读/秒、≈50,277 点位/秒 |
| 稳定性 | successRate = 100%、failedReads = 0 |
最小示例
using ZL.Tag;
using ZL.IotEngine.Orchestration;
var cfg = new DeviceConfig();
cfg.SetParam("Protocol", "siemens-s7");
cfg.SetParam("Ip", "192.168.1.10");
cfg.SetParam("Port", "102");
var dev = DeviceFactory.Create(cfg); // 需要 ZL.IotDriver 已安装
dev.Tags["t1"] = new TagItem { Id = "t1", Address = "DB1.DBW0", DataTypeCode = "int16" };
await dev.ConnectServer();
await dev.StartAsync();
边界
- 本包不含任何协议实现(见
ZL.IotDriver) - 与已冻结的旧包
ZL.IotHub不可同宿主同引(同名类型 ⇒CS0433)
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 is compatible. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.8
- Microsoft.CSharp (>= 4.7.0)
- Newtonsoft.Json (>= 13.0.4)
- NLog (>= 6.0.7)
- System.Buffers (>= 4.6.1)
- System.Memory (>= 4.6.3)
- System.Threading.Channels (>= 8.0.0)
- System.Threading.Tasks.Extensions (>= 4.5.4)
- ZL.License (>= 2.2.18)
-
.NETStandard 2.0
- Microsoft.CSharp (>= 4.7.0)
- Newtonsoft.Json (>= 13.0.4)
- NLog (>= 6.0.7)
- System.Buffers (>= 4.6.1)
- System.Memory (>= 4.6.3)
- System.Text.Encoding.CodePages (>= 8.0.0)
- System.Threading.Channels (>= 8.0.0)
- System.Threading.Tasks.Extensions (>= 4.5.4)
- ZL.License (>= 2.2.18)
-
net10.0
- Newtonsoft.Json (>= 13.0.4)
- NLog (>= 6.0.7)
- OPCFoundation.NetStandard.Opc.Ua.Server (>= 1.5.378.134)
- ZL.License (>= 2.2.18)
-
net8.0
- Newtonsoft.Json (>= 13.0.4)
- NLog (>= 6.0.7)
- OPCFoundation.NetStandard.Opc.Ua.Server (>= 1.5.378.134)
- ZL.License (>= 2.2.18)
NuGet packages (5)
Showing the top 5 NuGet packages that depend on ZL.IotEngine:
| Package | Downloads |
|---|---|
|
ZL.IotHub.Bridges
Bridge adapters for ZL.IotHub local events and optional remote push integration. 示例见 https://github.com/qwdingyu/ZL.IotHubDemo 。 |
|
|
ZL.IotHub.X
ZL.IotEngine 外部后端适配包:承载 HSL(HslCommunication)等第三方通讯库的驱动适配。依赖 ZL.IotEngine;请勿与已冻结的 ZL.IotHub 同时引用(ZL.Tag 同名类型会触发 CS0433)。 示例见 https://github.com/qwdingyu/ZL.IotHubDemo 。 |
|
|
ZL.IotHub.Server
SCADA / Web API 实时通信服务端:基于 SignalR Server,对接 ZL.IotEngine + ZL.IotDriver 采集内核(事件桥接经 ZL.IotHub.Bridges)。 示例见 https://github.com/qwdingyu/ZL.IotHubDemo 。 |
|
|
ZL.IotDriver
【读法B】ZL.IotHub 自研驱动的独立程序集(58 个协议描述符)。只依赖 ZL.IotEngine 的契约面,不依赖任何编排实现。 |
|
|
ZL.IotOss
ZL.IotEngine 的开源驱动适配包:S7.Net Plus(西门子)/ NModbus 3.x(Modbus TCP/RTU/ASCII)/ LibPlcTag(AB EtherNet/IP:ControlLogix/CompactLogix/Micro800/MicroLogix/PLC-5/SLC500;Omron NJ/NX CIP/EtherNet/IP,PlcType 选择)。只依赖 ZL.IotEngine 的契约面,不依赖 ZL.IotDriver。零自研、全开源、避免收费。范围说明:不含三菱 MC(libplctag 不支持 MC 协议,经证据评审按「宁缺毋滥」排除,见 docs/573)。示例见 https://github.com/qwdingyu/ZL.IotHubDemo 。 |
GitHub repositories
This package is not used by any popular GitHub repositories.