C# 使用Modbus RTU协议提取寄存器

C# 使用Modbus RTU协议提取寄存器,c#,tcp,ip,modbus,C#,Tcp,Ip,Modbus,我不熟悉使用Modbus协议。我有一个媒体转换器设备(),我正在测试Modbus Poll和Modscan程序的连接,以验证我是否获得日志。我在设备上有这些设置 使用TCP协议和端口502 根据这些配置,我在Modscan中配置了以下字段 我配置设备Id=240,并选择“03.保持寄存器”读取数据,但我仍然收到以下消息“未初始化”和后来的“收到MODBUS查询的无效响应”,有人能帮我吗?有什么想法吗 同样,使用“Modbus轮询”,我得到以下消息: 我假设您有一个Modbus R

我不熟悉使用Modbus协议。我有一个媒体转换器设备(),我正在测试Modbus Poll和Modscan程序的连接,以验证我是否获得日志。我在设备上有这些设置

使用TCP协议和端口502

根据这些配置,我在Modscan中配置了以下字段

我配置设备Id=240,并选择“03.保持寄存器”读取数据,但我仍然收到以下消息“未初始化”和后来的“收到MODBUS查询的无效响应”,有人能帮我吗?有什么想法吗

同样,使用“Modbus轮询”,我得到以下消息:


我假设您有一个Modbus RTU设备通过RS232或RS485连接到USR物联网装置(您在问题中没有提到该设备)。从您的屏幕截图来看,USR-W610正在透明模式(“数据传输模式”)下运行;发件人:

在此工作模式下,W610可以在串行侧和网络侧之间进行双向连接。此连接是透明传输。来自串行设备的数据可以在网络中接收,网络数据也可以发送到串行设备

因此,在此模式下,通过网络端口发送的任何内容都将发送到串行端口,反之亦然(不做任何更改)。这意味着您需要使用而不是(两种协议不同;例如,RTU数据包包括CRC错误检查,而Modbus TCP数据包不包括),并以某种方式(可能通过)设置波特率等。这样做是可能的(通常使用,但一些实用程序支持这种模式,您可以编写自己的代码)

然而,有一个更简单的选择;如果您将模式更改为“ModbusTCPModbusRTU模式”,我相信这将解决您的问题;从手册中:

W610支持Modbus TCPModbus RTU模式(不支持Modbus ASCII)。当用户想要使用此模式时,用户只需将W610工作模式配置为Modbus TCPModbus RTU模式,并更改相关参数(端口、远程IP和一些其他参数)以更正设置


因此,在此模式下,W610充当Modbus TCP服务器。它接受命令,使用Modbus RTP将这些命令发送到设备上,然后将响应转换回Modbus TCP。

我假设您有一个Modbus RTU设备通过RS232或RS485连接到USR IOT装置(您在问题中没有提到该设备)。从您的屏幕截图来看,USR-W610正在透明模式(“数据传输模式”)下运行;发件人:

在此工作模式下,W610可以在串行侧和网络侧之间进行双向连接。此连接是透明传输。来自串行设备的数据可以在网络中接收,网络数据也可以发送到串行设备

因此,在此模式下,通过网络端口发送的任何内容都将发送到串行端口,反之亦然(不做任何更改)。这意味着您需要使用而不是(两种协议不同;例如,RTU数据包包括CRC错误检查,而Modbus TCP数据包不包括),并以某种方式(可能通过)设置波特率等。这样做是可能的(通常使用,但一些实用程序支持这种模式,您可以编写自己的代码)

然而,有一个更简单的选择;如果您将模式更改为“ModbusTCPModbusRTU模式”,我相信这将解决您的问题;从手册中:

W610支持Modbus TCPModbus RTU模式(不支持Modbus ASCII)。当用户想要使用此模式时,用户只需将W610工作模式配置为Modbus TCPModbus RTU模式,并更改相关参数(端口、远程IP和一些其他参数)以更正设置


因此,在此模式下,W610充当Modbus TCP服务器。它接受命令,使用Modbus RTP将这些命令发送到设备上,然后将响应转换回Modbus TCP。

我感到困惑。您说您正在测试是否正确发送数据。在红色字母的图片中,它表示“接收对MODBYS查询的无效响应”。因此,看起来您发送了错误的响应。如果收到查询,则无法发送。您必须响应查询。@jdweng我试图获取记录,而不是发送,现在我只想读取数据。我编辑了这个问题。我会使用像wireshark或fiddler这样的嗅探器,检查服务器是否正确发送数据。然后将结果与Wiki上的格式进行比较:。看起来您没有任何数据,所以我会更改设置“自动读取启用”。如果您每1000毫秒自动读取一次数据,并且没有传输任何数据,则会出现错误。您使用的艾条装置的型号是什么?你查过它的日志了吗?(许多Moxa装置都支持一个日志实用程序,可以显示通过它们传递的请求/响应)。@Brits我使用的Moxa版本是USR-W610。我如何访问请求/响应?当我访问IP 10.10的管理员面板时。***从浏览器中我找不到日志。我很困惑。您说您正在测试是否正确发送数据。在红色字母的图片中,它表示“接收对MODBYS查询的无效响应”。因此,看起来您发送了错误的响应。如果收到查询,则无法发送。您必须响应查询。@jdweng我试图获取记录,而不是发送,现在我只想读取数据。我编辑了这个问题。我会使用像wireshark或fiddler这样的嗅探器,检查服务器是否正确发送数据。然后将结果与Wiki上的格式进行比较:。看起来您没有任何数据,所以我会更改设置“自动读取启用”。如果您每1000毫秒自动读取一次数据,并且没有传输任何数据,则会出现错误。您使用的艾条装置的型号是什么?你查过它的日志了吗?(许多Moxa装置支持记录实用程序。)