Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Modbus RTU时的响应代码指示_C#_Serial Communication_Modbus - Fatal编程技术网

C# 使用Modbus RTU时的响应代码指示

C# 使用Modbus RTU时的响应代码指示,c#,serial-communication,modbus,C#,Serial Communication,Modbus,我使用Modbus RTU协议读取数据。我的从机Id=1,Modbus地址=40023。我正在配置起始地址=22我的Modbus地址正确吗? 如果我正在配置以下详细信息: 从机Id=1波特率=19200停止位=2数据位=8奇偶校验= 无起始地址=22 我正在用以下代码读取数据 var master = ModbusSerialMaster.CreateRtu(port); ushort[] registers = master.ReadHoldingRegisters(slaveId, star

我使用Modbus RTU协议读取数据。我的从机Id=1,Modbus地址=40023。我正在配置起始地址=22我的Modbus地址正确吗?

如果我正在配置以下详细信息:

从机Id=1波特率=19200停止位=2数据位=8奇偶校验= 无起始地址=22

我正在用以下代码读取数据

var master = ModbusSerialMaster.CreateRtu(port);
ushort[] registers = master.ReadHoldingRegisters(slaveId, startAddress, 1);  //2 is number of points
通过这些详细信息,我在控制台中得到了以下响应: INFO Modbus.IO.Modbus串行传输-TX:1,3,2,0,0,184,68

在上面的回答中,我只知道其中一些数字表示什么,比如第一位数字1表示从机Id,3表示功能代码,22表示起始地址,2表示点数

谁能给我解释一下剩下的代码吗?它们表明了什么


谢谢

起始地址用两个字节(0,22)编码。寄存器的数量也用两个字节(0,2)编码。(37,207)是所有Modbus RTU帧中所需的CRC。

我认为您的控制台文本是一个请求包

其含义如下图所示


我配置的起始地址正确吗?如何获取/读取值?我们是否向持有登记员提出了正确的读取值请求?请求是正确的。你能发布从机的响应吗?以下是响应:1 3 0 22 0 1 101 206。请注意我现在通过的计数是1你确定这是你从奴隶那里得到的吗?这看起来像是一个请求,您将寄存器的数量更改为1,并且CRC按预期更改。是的,当从属Id=1,起始地址=22,点的数量=1时&我已将所有三个参数传递给此函数:ReadHoldingRegisters()&我得到以下响应:1 3 0 22 0 1 101 206这是正确的响应吗?因为根据我参考的文档,如果响应中的函数代码相同,那么响应是正确的。这是我在控制台中的响应:1,3,2,0,0,184,68。此响应中的数据是什么?部分数据包描述值01从地址0x01(1)03功能代码0x03(3)-读取保持寄存器02字节计数0x02(2)00 00寄存器值0x0000(0)B8 44 CRC 0xB844(47172)您可以自己使用在线工具进行同样的操作