综合技术交流
直播中

张涛

8年用户 1407经验值
私信 关注
[问答]

InModbus2 APP支持“断点续传”吗,是如何工作的?

InModbus2 APP支持“断点续传”吗,是如何工作的

回帖(2)

于姝斐

2025-8-7 16:18:00
支持,当路由器与平台间通信中断时,会把InModbus2 APP采集到的数据保存本地,当与平台间通信恢复后,把保存的数据发送给平台,发送成功后删除本地数据。 没有扩展存储时,InModbus2 APP的日志加数据存储最大5M,日志文件大小可以通过web页面设置。
       
 超出数据采集空间后,新采集到的数据不再保存本地,本地保留时间更早的数据。 有扩展存储时,会一直往本地保存直到占满扩展存储。
                                                                                                   
举报

李梅

2025-8-13 17:48:12

InModbus2 APP 通常支持“断点续传”功能,这是其设计中的一个重要特性,旨在确保现场数据采集的完整性和可靠性,尤其在网络不稳定或采集任务被意外中断的场景下至关重要。


以下是其断点续传的工作原理详解:




  1. 基础概念:



    • 目标: 在数据传输(如下载文件或读取大量设备数据)过程中,如果连接意外断开(如网络故障、APP崩溃、设备重启等),恢复后能从中断处继续传输,而非重新开始整个任务。

    • 关键: 需要记录已传输数据的位置(断点)




  2. InModbus2 APP 中断点续传的实现机制:



    • 数据分块与标记:

      • 当APP启动一个需要读取大量寄存器/线圈值的任务(如连续读取多个设备地址的数据)时,它会将整个读取范围划分成较小的逻辑块(例如,每次读取100个寄存器)。

      • 每个块都有明确的起始地址和结束地址标识。


    • 进度记录:

      • APP会在执行过程中持续记录当前已成功读取并存储到本地数据库或文件中的最后一个数据点的地址

      • 这个记录点就是关键的“断点”。记录通常保存在设备的本地存储(如SQLite数据库或文件)中,确保即使APP退出或设备重启也能保留。


    • 中断发生:

      • 如果在读取第N块数据时发生中断(网络断开、APP被强制关闭、设备断电等),则读取任务停止。


    • 恢复过程:

      • 当条件恢复(网络重连、APP重新启动、任务被再次触发),APP会检测到之前的任务未完成。

      • 读取进度记录: APP从本地存储中读取上次记录的成功读取的最后一个数据点的地址(即断点)。

      • 定位断点: APP计算出该断点之后的下一个未读数据块的起始地址

      • 续传请求: APP向目标设备(PLC、RTU等)发送新的Modbus请求,指令是从这个计算出的起始地址开始读取剩余的数据块。

      • 更新进度: 随着新的数据块成功读取并存储,APP会不断更新本地存储中的进度记录点。

      • 任务完成: 重复上述过程,直到所有预定地址范围的数据都成功读取完毕。





  3. 关键特点与优势:



    • 避免重复劳动: 无需重新读取已成功获取的数据,大幅节省时间和通信流量,尤其对于读取大量历史数据或慢速网络至关重要。

    • 数据完整性保障: 确保最终收集到的数据是连续且完整的,不会因为中断导致中间部分数据丢失。

    • 适应恶劣环境: 特别适合工业现场可能存在的不稳定网络环境(如GPRS、LoRa等)或设备需要频繁移动、开关机的场景。

    • 自动化处理: 整个过程对用户通常是透明的,APP自动检测中断并尝试续传。

    • 本地存储依赖: 断点信息的可靠存储(在APP本地)是实现该功能的基础。




  4. 需要注意的方面:



    • 设备端变化: 如果断点续传发生之前,目标设备上的数据已经被修改或覆盖(例如PLC程序更新了某个寄存器的值),那么恢复后读取到的该地址之后的数据可能与最初启动任务时的状态不一致。断点续传保证的是任务启动时设定范围的“地址连续性”读取,并不能保证数据的“时间点一致性”。

    • APP实现差异: APP的具体实现细节(如块大小、进度记录频率和方式、恢复策略等)可能因版本或开发者设定略有不同,但核心原理一致。

    • 写操作: 断点续传通常更常用于读操作(数据采集)。对于写操作(如向PLC批量写入配置),虽然理论上也可实现,但实现更复杂(需记录哪些地址已成功写入),且需谨慎处理原子性问题(部分写入可能导致设备状态异常),在InModbus2中可能支持有限或采用不同策略(如事务性写入)。




总结:


是的,InModbus2 APP支持断点续传功能。它是通过将大的读取任务分块、在本地存储中实时记录最后一个成功读取的数据点地址(断点)来实现的。当任务因故中断后恢复时,APP会定位到这个断点,并只请求读取该断点之后尚未读取的数据块,从而避免重复读取已成功获取的数据,确保任务最终完成并保障数据的连续性,显著提升了在不可靠网络环境下数据采集的效率和可靠性。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分