Modbus-ASCII数据帧

简介: Modbus-ASCII数据帧

Modbus-ASCIl传输模式中,每个字节均以ASCI编码,实际报文中1个字节会以两ASCIl字符发送,因此这种模式比Modbus-RTU模式效率要低。

例如报文数据 @x5B ="5"+"B"= X35 + X42 .

数据帧格式如下:


从ASCI报文帧可以看出,ASCI模式增加了起始(“:"和结束标志(回车&换行),由于报文数据每字节在ASCI模式下需要2字符进行编码,为了保证ASCI模式和RTU模式在应用级兼容,ASCI模式数据块最大长度为252x2,所以可以计算出报文帧最大长度为1+2+2+2x252+2+2=513字符,报文顿内的字符间隔时间可以达1秒钟。Modbus-ASCI模式校验方法采用的是纵向几余校验 (LRC - Longitudinal Redundancy Cheking) 算法,校验内容不包括顺起始和结束字符。


计算方法也比较简单,对校验内容进行累加和计算,忽略进位,并转换为二进制补码:


例如Modbus-ASCIl模式,主机发送请求,向地址为1的从设备的0x405地址,写入数值0x1234,报文如下:

:010604051234AA<CRX<LF>

即:

: 01 06 04 05 12 34 AA <CR><LF>


可以看到01表示设备地址,06表示写单个保持寄存器。地址为0x0405,数据为0x1234,LRC校验值为0XAA。实际进行校验的数据不包含头和帧尾。

0xAA = LRC(01,06, 04,05,12,34)。


4308b8e045cec788023856b40a2be609_1ae0070aff6ebc89a23c1ea2076971a8.png

手动LRC计算方法


把原始数据两个字符组成一个字节,并进行二进制加法计算:01+06+04+05+12+34=0x56,计算二进制补码:

0x56 = 0101 0110取反: 1010 1001加1:  1016 101 = 0xAA或者: 0x100-0x56 = 0xAA
目录
相关文章
|
Web App开发 关系型数据库 RDS
电源缓启动(软起动)原理
该文讨论了电源的缓启动(软起动)技术,主要是为了解决热插拔过程中可能产生的电源振荡和大电流冲击问题。缓启动通过防抖动延时和控制电流上升斜率来避免系统受影响或设备受损。文章提到了两种类型的缓启动电路:电压斜率型和电流斜率型,并详细解释了电压型缓启动电路的工作原理,包括各个元件的作用和电路的缓启动阶段。
466 12
|
Web App开发 关系型数据库 RDS
电源缓启动(软起动)原理分享
该文讨论了电源的缓启动(软起动)技术,主要是为了解决热插拔时的电源振荡和冲击电流问题。缓启动电路有两个主要功能:防抖动延时上电和控制输入电流上升斜率。文章提到了电压斜率型缓启动电路,通过MOS管和相关电阻、电容元件实现延迟和电流控制。电路设计中,MOS管的栅极电压和漏源电流的变化决定了电流上升斜率,从而限制热插拔时的冲击。
563 0
|
前端开发 JavaScript 数据可视化
Vue项目打包完后如何自动上传至服务器
Vue项目打包完后如何自动上传至服务器
1400 0
Vue项目打包完后如何自动上传至服务器
Need to install docker-compose(1.18.0+) by yourself first and run this script again.
Need to install docker-compose(1.18.0+) by yourself first and run this script again.
481 0
|
监控 测试技术
【问题实战】Jmeter中jtl格式转换图片后如何分开展示各个性能指标?
在使用JMeter进行性能测试时,若希望将不同性能指标(如CPU、DiskIO、Mem)分别显示在不同图片中,需在测试计划中为每个指标添加独立的`jp@gc - PerfMon Metrics Collector`监控器,并设置各自的数据保存路径。通过命令行模式执行压测并使用`JMeterPluginsCMD`工具针对每个生成的`.jtl`文件转换为单独的图片,从而实现分指标展示的效果。这解决了默认情况下所有监控指标显示在同一张图片上的问题。
250 0
【问题实战】Jmeter中jtl格式转换图片后如何分开展示各个性能指标?
|
11月前
|
安全 Java
线程安全的艺术:确保并发程序的正确性
在多线程环境中,确保线程安全是编程中的一个核心挑战。线程安全问题可能导致数据不一致、程序崩溃甚至安全漏洞。本文将分享如何确保线程安全,探讨不同的技术策略和最佳实践。
167 6
|
存储 编译器 程序员
C语言数据类型详解
C语言数据类型详解
|
SQL 关系型数据库 MySQL
MySQL事务原理分析(ACID特性、隔离级别、锁、MVCC、并发读异常、并发死锁以及如何避免死锁)
MySQL事务原理分析(ACID特性、隔离级别、锁、MVCC、并发读异常、并发死锁以及如何避免死锁)
332 1
|
移动开发 前端开发 JavaScript
解决浏览器兼容性问题的方法
解决浏览器兼容性问题的方法
|
数据采集 数据安全/隐私保护 Python
Python 快速合并PDF表格转换输出CSV文件
Python 快速合并PDF表格转换输出CSV文件
264 0
Python 快速合并PDF表格转换输出CSV文件