主页 > 游戏开发  > 

NModbus连接到Modbus服务器(ModbusTCP)

NModbus连接到Modbus服务器(ModbusTCP)

 1、在项目中通过NuGet添加NModbus,在界面中添加一个Button。

using NModbus.Device; using NModbus; using System.Net.Sockets; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Diagnostics; namespace WpfAppModbus { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void btnRead_Click(object sender, RoutedEventArgs e) { // 1. 连接到 Modbus 服务器(Modbus TCP) string ipAddress = "127.0.0.1"; // 设备的 IP 地址 int port = 502; // Modbus TCP 默认端口 TcpClient client = new TcpClient(ipAddress, port); // 2. 获取 Modbus TCP 设备的协议客户端 var factory = new ModbusFactory(); IModbusMaster master = factory.CreateMaster(client); // 3. 读取从站设备的寄存器 ushort startAddress = 0; // 寄存器起始地址 ushort numRegisters = 10; // 读取 10 个寄存器 // 4.从站地址(Slave ID) byte slaveId = 2; try { // 读取保持寄存器 // ReadHoldingRegisters: 读取保持寄存器的值。参数包括从站地址(Slave ID)、起始地址和要读取的寄存器数量。 // NModbus 还支持其他 Modbus 操作,例如: // 读取输入寄存器: ReadInputRegisters // 读取线圈状态: ReadCoils // 写入单个寄存器: WriteSingleRegister // 写入多个寄存器: WriteMultipleRegisters // 写入单个线圈: WriteSingleCoil // 写入多个线圈: WriteMultipleCoils ushort[] registers = master.ReadHoldingRegisters(slaveId,startAddress, numRegisters); // 输出结果 Debug.WriteLine("读取到的寄存器值:"); foreach (var register in registers) { Debug.WriteLine(register); } } catch (Exception ex) { Debug.WriteLine($"读取错误: {ex.Message}"); } // 5. 关闭连接 client.Close(); } } }

2、使用Modscan32软件模拟一个Modbus服务器,选择文件->新建,设置Device Id、Address、Lenght,在下拉框中选择03:HOLDING REGISTER。在下方灰色框中双击要修改的数据。

download.csdn.net/download/xingchengaiwei/90341117

3、运行程序后,读取到的数据如下。

标签:

NModbus连接到Modbus服务器(ModbusTCP)由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“NModbus连接到Modbus服务器(ModbusTCP)