S7PlcRx 1.3.3
dotnet add package S7PlcRx --version 1.3.3
NuGet\Install-Package S7PlcRx -Version 1.3.3
<PackageReference Include="S7PlcRx" Version="1.3.3" />
paket add S7PlcRx --version 1.3.3
#r "nuget: S7PlcRx, 1.3.3"
// Install S7PlcRx as a Cake Addin #addin nuget:?package=S7PlcRx&version=1.3.3 // Install S7PlcRx as a Cake Tool #tool nuget:?package=S7PlcRx&version=1.3.3
<p align="left"> <a href="https://github.com/ChrisPulman/S7PlcRx"> <img alt="S7PlcRx" src="./Images/S7PlcRx.png" width="200"/> </a> </p>
S7PlcRx
响应式 S7 PLC 通信库
简介
S7PlcRx 是一个库,它提供了一个简单的接口来与西门子 S7 PLC 进行通信。
特性
- 读写 PLC
- 通过响应式订阅从 PLC 读取
入门指南
安装
S7PlcRx 可在 NuGet 上获得。
在 Siemens PLC 程序中,您需要在 PLC 设置中启用 PUT/GET 通信。您还需要将您想要访问的任何 DB 设置为非优化。
包管理器
Install-Package S7PlcRx
.NET CLI
dotnet add package S7PlcRx
用法
设置标签并观察 PLC 中的值
using S7PlcRx;
var plc = new RxS7(S7PlcRx.Enums.CpuType.S71500, "PLC_IP_ADDRESS", 0, 5);
// Add Tag without Polling
plc.AddUpdateTagItem<double>("Tag0", "DB500.DBD0").SetTagPollIng(false);
// Add Tag with Polling
plc.AddUpdateTagItem<double>("Tag1", "DB500.DBD8");
plc.IsConnected
.Where(x => x)
.Take(1)
.Subscribe(async _ =>
{
Console.WriteLine("Connected");
// Read Tag Value manually
var tag0 = await plc.Value<double>("Tag0");
});
// Subscribe to Tag Values
plc.Observe<double>("Tag0").Subscribe(x => Console.WriteLine($"Tag0: {x}"));
plc.Observe<double>("Tag1").Subscribe(x => Console.WriteLine($"Tag1: {x}"));
// Start Polling on previously disabled Tag
plc?.GetTag("Tag0")?.SetTagPollIng(true);
您还可以使用 S7xxxx
静态类来设置 PLC。例如,使用 S7PlcRx.S71500.Create(......
设置 S7-1500 PLC。
不带泛型类型的添加标签
plc.AddUpdateTagItem(typeof(double), "Tag0", "DB500.DBD0");
带链式选项的添加标签
plc.AddUpdateTagItem<double>("Tag0", "DB500.DBD0").SetTagPollIng(false)
.AddUpdateTagItem(typeof(double), "Tag1", "DB500.DBD8");
删除标签
plc.RemoveTagItem("Tag0");
设置轮询
添加标签时默认启用轮询。您可以在任何时候禁用或启用标签的轮询。
// Create a new Tag and with no Polling
plc.AddUpdateTagItem<double>("Tag0", "DB500.DBD0").SetTagPollIng(false);
// Set Polling on Tag
plc?.GetTag("Tag0")?.SetTagPollIng(true);
// Stop Polling on Tag
plc?.GetTag("Tag0")?.SetTagPollIng(false);
写入 PLC
plc.Value<double>("Tag0", 1.0);
读取 PLC CPU 信息
// Get CPU Info from PLC Async
var cpuInfo = await plc.CpuInfo();
// Get CPU Info from PLC Reactive
plc.GetCpuInfo().Subscribe(info =>
{
});
此函数返回一个包含以下值的 CpuInfo
字符串数组:AS 名称、模块名称、版权信息、序列号、模块类型名称、订单代码、版本。
使用看门狗
看门狗是一个功能,它每隔设定的时间将一个值写入PLC的一个特定地址。这可以用来保持PLC的活动状态,防止其进入停止模式。
PLC的功能由用户来实施。
推荐使用看门狗的方法是使用一个定时器来递减PLC中的值。如果值达到0,则可以停止PLC。看门狗会始终将一个值写回PLC来重置定时器并恢复正常操作。
var plc = new RxS7(S7PlcRx.Enums.CpuType.S71500, "PLC_IP_ADDRESS", 0, watchDogAddress, 5, watchDogValueToWrite, watchDogInterval);
看门狗默认是禁用的。要启用看门狗,设置 watchDogAddress
,它必须是一个DBW类型的地址。《code>watchDogInterval 是每次写入之间的时间(秒),watchDogValueToWrite
是写入PLC的值。
支持的数据类型
- 布尔型 - DB?.DBX?.?
- 字节型 - DB?.DBB?
- 字节型数组 - DB?.DBB? 创建数组标签时设置长度为字节数 - 例子:AddUpdateTagItem<byte[]>(PlcData, "DB100.DBB0", 64) - 创建一个包含64字节的标签
- 整型 - DB?.DBW?
- 整型数组 - DB?.DBW?
- 无符号整型 - DB?.DBW?
- 无符号整型数组 - DB?.DBW?
- 双整型 - DB?.DBD?
- 双整型数组 - DB?.DBD?
- 无符号双整型 - DB?.DBD?
- 无符号双整型数组 - DB?.DBD?
- 实型 - DB?.DBD?
- 实型数组 - DB?.DBD?
- 长实型 - DB?.DBD?
- 长实型数组 - DB?.DBD?
- 字符串 - TODO - 暂时使用字节数组
- 字型 - DB?.DBW?
- 字型数组 - DB?.DBW?
- 双字型 - DB?.DBD?
- 双字型数组 - DB?.DBD?
将来将添加更多类型。
支持的PLC
- Logo-0BA8
- S7-200
- S7-300
- S7-400
- S7-1200
- S7-1500
产品 | 版本 兼容和附加计算的目标框架版本。 |
---|---|
.NET | net5.0 已计算。 net5.0-windows 已计算。 net6.0 兼容。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 兼容。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 兼容。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。 |
.NET Core | netcoreapp2.0 已计算。 netcoreapp2.1 已计算。 netcoreapp2.2 已计算。 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。 |
.NET Standard | netstandard2.0 兼容。 netstandard2.1 已计算。 |
.NET 框架 | net461 已计算。 net462 已计算。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。 |
MonoAndroid | monoandroid 已计算。 |
MonoMac | monomac 已计算。 |
MonoTouch | monotouch 已计算。 |
Tizen | tizen40 已计算。 tizen60 已计算。 |
Xamarin.iOS | xamarinios 已计算。 |
Xamarin.Mac | xamarinmac 已计算。 |
Xamarin.TVOS | xamarintvos 已计算。 |
Xamarin.WatchOS | xamarinwatchos 已计算。 |
-
.NETStandard 2.0
- System.Reactive (>= 6.0.0)
-
net6.0
- System.Reactive (>= 6.0.0)
-
net7.0
- System.Reactive (>= 6.0.0)
-
net8.0
- System.Reactive (>= 6.0.0)
NuGet 包 (1)
显示依赖 S7PlcRx 的前 1 个 NuGet 包
包 | 下载 |
---|---|
MQTTnet.Rx.S7Plc
MQTTnet 协议的响应式扩展 |
GitHub 仓库
此包未在任何流行的 GitHub 仓库中使用。
版本 | 下载 | 最后更新 |
---|---|---|
1.3.3 | 251 | 2/29/2024 |
1.3.2 | 128 | 1/18/2024 |
1.3.1 | 84 | 1/18/2024 |
1.3.0 | 102 | 1/16/2024 |
1.2.5 | 191 | 12/19/2023 |
1.2.4 | 186 | 10/30/2023 |
1.2.3 | 120 | 10/20/2023 |
1.2.2 | 100 | 10/19/2023 |
1.2.1 | 259 | 8/22/2023 |
1.2.0 | 106 | 8/21/2023 |
1.1.4 | 203 | 8/3/2023 |
1.1.3 | 137 | 8/2/2023 |
1.1.2 | 129 | 8/2/2023 |
1.1.1 | 177 | 7/27/2023 |
1.1.0 | 128 | 7/27/2023 |
1.0.3 | 200 | 5/19/2023 |
1.0.2 | 1,205 | 7/26/2022 |
1.0.1 | 366 | 7/25/2022 |
与 Net 6 / 7 / 8 和 netstandard2.0 的兼容性