nanoFramework.Iot.Device.Modbus 1.0.261
保留前缀
dotnet add package nanoFramework.Iot.Device.Modbus --version 1.0.261
NuGet\Install-Package nanoFramework.Iot.Device.Modbus -Version 1.0.261
此命令旨在在Visual Studio的包管理器控制台中使用,因为它使用了NuGet模块的Install-Package版本。
<PackageReference Include="nanoFramework.Iot.Device.Modbus" Version="1.0.261" />
对于支持包引用的项目,请将此XML节点复制到项目文件以引用包。
paket add nanoFramework.Iot.Device.Modbus --version 1.0.261
NuGet团队不提供对此客户端的支持。请联系其维护者以获得支持。
#r "nuget: nanoFramework.Iot.Device.Modbus, 1.0.261"
#r指令可用于F# Interactive和Polyglot Notebooks。请将此复制到互动工具或脚本源码中以引用包。
// Install nanoFramework.Iot.Device.Modbus as a Cake Addin #addin nuget:?package=nanoFramework.Iot.Device.Modbus&version=1.0.261 // Install nanoFramework.Iot.Device.Modbus as a Cake Tool #tool nuget:?package=nanoFramework.Iot.Device.Modbus&version=1.0.261
NuGet团队不提供对此客户端的支持。请联系其维护者以获得支持。
Modbus - 机器到机器通信协议
Modbus通信协议为分布式自动化系统中的多个市场细分地址架构。它可以是串行端口基于或基于网络的。本实现是序列端口基于,但可以轻松调整以支持网络。
文档
Modbus规范可在Modbus组织网站找到。
用法
如果您正在使用ESP32,必须初始化引脚以使用串行端口,如下所示
// SerialPort COM2
Configuration.SetPinFunction(16, DeviceFunction.COM2_RX);
Configuration.SetPinFunction(17, DeviceFunction.COM2_TX);
Configuration.SetPinFunction(18, DeviceFunction.COM2_RTS);
使用ESP32,您几乎可以使用任何引脚执行任何功能。当使用STM32或其他MCU时,引脚通常是固定的。请参考您的MCU文档以了解使用哪个引脚。
Modbus客户端
要初始化和使用Modbus客户端,您可以执行以下操作
// Modbus Client
var client = new ModbusClient("COM3");
client.ReadTimeout = client.WriteTimeout = 2000;
client.WriteMultipleRegisters(2, 0x5, new ushort[] { 3, 5, 2, 3 });
client.Raw(2, FunctionCode.Diagnostics, new byte[] { 0x01, 0x01, 0x01, 0x01 });
var data1 = client.ReadHoldingRegisters(2, 0x7, 4);
var data2 = client.ReadCoils(2, 0x23, 2);
如示例所示,您有多种可能性,可以写入多个寄存器,使用原始功能,也可以读取多个寄存器。
Modbus服务器
也可以找到服务器实现
// Modbus Server
var server = new ModbusServer(new Device(1), "COM2");
server.ReadTimeout = server.WriteTimeout = 2000;
server.StartListening();
本服务端实现将使您能够作为服务器进行操作。它可以进行扩展。
硬件实现
当使用 RS485 时的 Modbus,例如您可以使用 MAX485 来作为传统串行端口和 RS485 之间的接口
RS232 支持
如果您使用 RS232 上的 Modbus,您可以修改构造函数中的 mode
参数为 0 (SerialMode.Normal)
// Modbus Client
var client = new ModbusClient("COM3",SerialMode.Normal);
// Modbus Server
var server = new ModbusServer(new Device(1), "COM2",mode:SerialMode.Normal);
限制
注意: nanoFramework 只(目前)支持 "Modbus-RTU" 协议。
产品 | 版本 兼容的和额外的计算目标框架版本。 |
---|---|
.NET 框架 | net 是兼容的。 |
-
- nanoFramework.CoreLibrary (>= 1.15.5)
- nanoFramework.System.Collections (>= 1.5.31)
- nanoFramework.System.IO.Ports (>= 1.1.86)
- nanoFramework.System.Math (>= 1.5.43)
NuGet 包
此包不用于任何 NuGet 包。
GitHub 仓库
此包不用于任何流行的 GitHub 仓库。