gpt4 book ai didi

modbus - 如何使用 Modbus ping 仪表

转载 作者:行者123 更新时间:2023-12-01 23:19:17 26 4
gpt4 key购买 nike

我正在尝试使用 Modbus 协议(protocol)对 Socomec 仪表执行 ping 操作,经过研究,我发现了 NModbus,这是一个 C# 库。我之前从未使用过库或 C#(通常是 Java),但我必须立即投入使用。

我为 C# 设置了 Visual Studio Express,并安装了 .Net。然后我将 NModbus 文件的内容复制到我的项目文件夹中,并添加了对两个主要 DLL 的引用。它不适用于 .Net 4,但我重新定位到 3.5(并删除了 Microsoft.Csharp 引用)并且似乎可以编译。

我正在使用 this sample ,下面,尝试连接到从属设备。当我运行它,并将 startAdress 变量设置为所需的变量(在溯高美索克曼文档中找到)时,我得到的只是一个空白的控制台窗口。

简而言之,我使用的方法/参数是否正确,我的设置/代码是否不正确?如何连接到此仪表?

我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
using Modbus.Data;
using Modbus.Device;
using Modbus.Utility;


namespace NModbus
{
class SerialMaster
{
static void Main(string[] args)
{
ModbusSerialAsciiMasterReadRegisters();
}

public static void ModbusSerialAsciiMasterReadRegisters()
{
using (SerialPort port = new SerialPort("COM1"))
{
// configure serial port
port.BaudRate = 9600;
port.DataBits = 8;
port.Parity = Parity.None;
port.StopBits = StopBits.One;
port.Open();

// create modbus master
IModbusSerialMaster master = ModbusSerialMaster.CreateAscii(port);

byte slaveId = 1;
ushort startAddress = 50536;
ushort numRegisters = 5;

// read five registers
ushort[] registers = master.ReadHoldingRegisters(slaveId, startAddress, numRegisters);

for (int i = 0; i < numRegisters; i++)
Console.WriteLine("Register {0}={1}", startAddress + i, registers[i]);
Console.ReadLine();
}

// output:
// Register 1=0
// Register 2=0
// Register 3=0
// Register 4=0
// Register 5=0
}
}
}

最佳答案

你为什么不使用一些 Java MODBUS library 你什么时候已经熟悉Java了?我没有使用过溯高美索克曼仪表,但一般来说,对于 MODBUS 设备,您需要知道您感兴趣的协议(protocol)和地址。然后尝试使用一些您知道运行良好的工具从设备读取标签,例如 MODPOLL .然后,当您按预期获得可用值时,您可以使用您喜欢的任何语言对轮询连接进行编程。否则,您可能会浪费大量时间想知道发生了什么。一个提示......从你的代码中我看到你正在充当 MODBUS ASCII 串行主机。尽管存在此类设备,但我使用的 RS232/RS485 设备中有 95% 是 MODBUS RTU。如果您不知道其中的区别,请阅读规范。

关于modbus - 如何使用 Modbus ping 仪表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6073007/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com