01 37 37 1D 31 31 31 1D 30 1D 31 03 32 35 30 34 39 04
01 37 37 1D 31 31 31 1D 30 1D 32 03 32 35 30 34 33 04
01 37 37 1D 31 31 31 1D 30 1D 33 03 35 37 38 31 34 04
01 37 37 1D 31 31 31 1D 30 1D 34 03 32 35 30 33 31 04
01 37 37 1D 31 31 31 1D 30 1D 35 03 35 37 37 39 34 04
对于上面的modbus轮询查询,我没有得到哪个是crc值,以及使用了什么类型的crc。它是怎么来的,77是设备的id。请指引我。
我从轮询设备得到以下响应
01 37 37 02 33 1D 30 39 33 31 39 30 39 34 38 32 30 30 37 31 31 42 20 30 30 30
30 30 30 30 38 34 30 30 30 30 30 30 30 30 30 30 30 30 30 30 37 38 30 30 30 30
30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 33 35 31 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30 30 30 30 30 03 34 37 33 38 35 04
首先:
Modbus over Serial Line
标准可在此处获得。这完全指定了到Modbus的低级接口。Modbus应用程序协议规范
在这里提供。此处指定了更高级别的MODBUS命令。您的数据似乎不符合这些标准,这使得很难回答您的问题!
由于您的数据似乎不遵循RTU通信方法,可能它使用ASCII通信方法,从串行线标准第16页开始描述。ASCII通信方法始终以ASCII:
字符开始,该字符以十六进制表示为3A
。ASCII通信方法始终以ASCII cr和lf字符结尾,它们是0d
和0a
(十六进制)。这些字符之间的所有其他字符必须是0-9或A-F字符,它们是30
到39
和41
到46
(十六进制)。您的消息不符合任何这些要求--它不以3a
开头,不以0d
0a
结尾,并且它包含的其他字符不是30
到39
或41
到46
。
如果我们忽略这一点,并假设您的数据遵循ASCII通信方法,那么:
0d
0a
之前的最后两个字节。The LRC is calculated by adding together successive 8–bit bytes of
the message, discarding any carries, and then two’s complementing the
result. It is performed on the bytes of the message, before the
encoding of each byte in the two ASCII characters corresponding to the
hexadecimal representation of each nibble. The computation does not include
the 'colon' character that begins the message, and does not include the CRLF
pair at the end of the message. The resulting LRC is ASCII encoded into two
bytes and placed at the end of the ASCII mode frame before the CRLF.
您的数据不遵循这两种通信方法中的任何一种。我们需要更多地了解您的数据来自哪里,以找出哪里出了问题。也许数据被多个设备损坏了,或者测量数据的传感器有不正确的定时或电压或其他原因,导致它错误地理解发送的值。可能存在某种奇偶校验不匹配,导致某些字节被丢弃。但如果没有更多的信息我们就无法判断。
我正试图从一个旧的串行设备反向工程通信协议。我已经搞清楚了大部分,但仍然停留在使用的CRC算法上。我有一个主机软件,我可以生成请求消息,所以我已经包括了一个由主机软件发送的相对较短的消息转储。 下面还有一些我还没有完全解码的数据字符串,前3个字符是从属地址(类似于modbus设备地址方案),接下来的2个字符是函数代码。“10”是一个数据缓冲区请求,我还没有解码。有趣的是,在这个特定的请求中有非数字
我已在centos 7上更新了我的应用程序服务器。使用PHP7.3实现x。当我运行控制台命令时,会出现如下错误 下面是堆栈日志。 我不明白该往哪里看,可能是什么问题。请引导任何人。
http://www.lammertbies.nl/comm/info/crc-calculation.html http://www.codeproject.com/articles/19059/c-ccitt-crc-algorithm 在上面与字节数组{0xee,0x01,0x13,0x00,0x06,0x1c,0x00,0x20,0x1d,0x00,0x00}的链接中,它使用CRC8(po
我需要帮助试图验证CRC-16值(也需要帮助与CRC-32值)。我试图坐下来了解CRC是如何工作的,但我一片空白。 更多信息如下: --编辑-- 我已经包括了更多的信息。我引用的文档是TIA-102.BAAA-A(来自TIA标准)。以下是文档陈述的内容(试图尽可能避免侵犯版权): FM(x)的系数被放置在CRC字段中,其中CRC的第0个八位元组的MSB对应于x^31,而CRC的第3个八位元组的LS
问题内容: 这是我第一次尝试从jQuery调用ASP.NET页面方法。我在responseText消息中收到状态500错误,找不到该Web方法。这是我的jQuery $ .ajax调用: 这是我尝试调用的页面方法: 我通过使用带和不带parens’()’修饰Web方法来尝试这种方法。有人有主意吗? 问题答案: 您的网络方法必须是公开的和静态的。
我有两个来源来计算看似相同的crc值。我不明白为什么'boost/crc.hpp'实现与'linux/lib/crc-ccitt.c'实现不同。 CRC-CCITT.C boost 这里有一个例子说明了这个问题。因为我的电脑上没有Linux内核源码,所以这是一个很长的时间。如果将boost链接到它,它就会编译。 null 我的机器上的输出是: