C语言中的Modbus ASCII LRC生成

Posted

技术标签:

【中文标题】C语言中的Modbus ASCII LRC生成【英文标题】:Modbus ASCII LRC Generation in C 【发布时间】:2021-12-16 11:11:18 【问题描述】:

我正在尝试通过串行端口实现 Modbus Ascii 从站,但无法理解 LRC 计算。 我将master发送的数据存储在uint_8数组中,不明白下一部分,从master发送的ascii字符是否需要在计算之前转换为它们的十六进制值? 如果使用十六进制字符进行计算,从 ascii char 转换为 hex 版本是什么样子的?

【问题讨论】:

欢迎来到 ***!请拨打tour 并阅读“How to Ask”以了解本网站的运作方式。 - 您不需要将 ASCII 转换为十六进制,这只是对相同二进制值的解释。例如,ASCII 字符 'A' 具有二进制值 1000001 或十六进制 0x41。您可以简单地将 ASCII 值用作整数。 【参考方案1】:

关于 LRC 计算,请转到本文档的附录 B

https://modbus.org/docs/Modbus_over_serial_line_V1_01.pdf

Modbus ASCII 发送十六进制值的 ASCII 字符,LRC 字节作为两个 ASCII 字符发送也是如此。

【讨论】:

以上是关于C语言中的Modbus ASCII LRC生成的主要内容,如果未能解决你的问题,请参考以下文章

C语言实训,生成不重复的验证码

ASCII字符画转ASCII码——C语言输出使用

C语言编程取字符ASCII码的表示方法

用c语言编写modbus程序

C语言如何编写modbus RTU协议?

工控常用LRC XOR累加和CRC校验工具校验码自动生成软件多计算方式