面向Modbus从机寄存器可写范围的自适应测试方法及系统与流程
本技术涉及通信测试,尤其是涉及一种面向modbus从机寄存器可写范围的自适应测试方法及系统。
背景技术:
1、modbus协议作为一种广泛应用于工业自动化领域的串行通信协议,其从机设备中的保持寄存器可写范围直接关系到设备参数配置、运行定值修改等核心功能。在设备出厂检测、现场调试及协议一致性认证等场景中,准确识别寄存器的可写数值区间具有重要的工程意义。
2、目前,针对modbus从机寄存器可写范围的测试方法主要分为以下两类:一种是基于规约配置与报文解析的定点测试方案,该类方案的核心思路是依据设备规约文件或产品规格书中已标注的寄存器信息,由测试人员预先配置测试用例,通过报文解析和数值比对来完成测试;另一种是工控领域通用的全域遍历或单段连续探测方案,该类方案不依赖规约配置文件,而是通过对寄存器值域进行系统性写入测试来发现可写范围。
3、上述现有技术方案存在以下缺陷:
4、前一种方案完全依赖人工编写的规约配置文件,仅能验证文档中已标注的寄存器地址与数值,导致设备制造商未文档化的隐藏可写区间被系统性遗漏,协议一致性测试覆盖率严重缺失;同时,该方案在批量写入测试前未设计寄存器原始值备份与自动回滚机制,测试过程中写入的校验值会永久篡改设备运行定值,可能引发继电保护误动、逆变器参数漂移等严重安全风险,加之其报文缓存队列仅用于业务报文分类存储,与寄存器值域探测逻辑完全割裂,对已确认的只读死区无任何记忆与过滤能力,导致总线通信冗余度极高、测试效率低下。
5、后一种方案中的全遍历方案需对寄存器完整值域逐一发送写指令并回读验证,16位寄存器即需数万条报文、耗时数十分钟,32位寄存器需数亿条报文,更是不具备工程可行性,完全无法适配工业批量产线检测场景。而工业界广泛采用的单段连续探测方案则存在根深蒂固的技术偏见,默认寄存器可写区间为单一连续段,这一假设源于早期简单plc设备的特征,但现代电力保护装置、智能逆变器等设备出于安全冗余设计,普遍将可写区间人为分段隔离,单段二分方案仅能识别其中一个连续段,其余隔离区间、窄区间乃至孤立可写点被完全丢失,测试结果严重失真,无法通过设备一致性认证。
6、此外,上述方案均无全局死区间缓存记忆机制,对已确认的只读区域在分治拆分过程中反复下发无效写指令,持续占用rs485总线资源,且各测试环节相互独立、未形成探测、拆分、过滤、校验以及回滚的闭环自适应测试体系,智能化与精细化测试能力严重不足,难以满足工业现场对全覆盖、高效率、高安全性的综合测试需求。
技术实现思路
1、本技术的其中一个目的在于提供一种能够解决上述背景技术中至少一个缺陷的面向modbus从机寄存器可写范围的自适应测试方法。
2、本技术的另一个目的在于提供一种用于实施上述面向modbus从机寄存器可写范围的自适应测试方法的系统。
3、为达到上述的至少一个目的,本技术的一个方面提供了一种面向modbus从机寄存器可写范围的自适应测试方法,包括如下步骤:将待测寄存器的理论值域作为首个探测区间存入探测队列,并备份其当前读取值;从探测队列中选取未被全局死区间集合标记的探测区间,并在当前探测区间内执行多种探测策略以寻找可写数值作为锚点;若寻找到锚点,在当前探测区间内以锚点为中心进行拓展搜索,定位包含该锚点的可写值域段并存入有效区间列表,同时将当前探测区间的剩余区间段存入探测队列;若未寻找到锚点,根据当前探测区间的宽度将其并入全局死区间集合或存入探测队列;循环执行探测区间的选取和可写值域段的搜索过程,直至满足循环终止条件时退出循环,并将有效区间列表中记录的所有可写值域段进行合并,输出测试结果完成测试;将完成测试的寄存器恢复至备份的当前读取值。
4、优选的,在当前探测区间内寻找锚点时,按顺序执行包括第一阶探测、第二阶探测、第三阶探测和第四阶探测的多种探测策略,且在任意阶探测成功后终止后续探测;其中,第一阶探测被配置为:写入待测试寄存器理论值域的端点值或预设的通用特征值;第二阶探测被配置为:读取待测试寄存器的原始备份值,并立即将其写入该寄存器;第三阶探测被配置为:计算并写入当前探测区间的中点值;第四阶探测被配置为:在当前探测区间内生成并写入至少一个随机数值。
5、优选的,在当前探测区间内以锚点为中心向当前探测区间的左右两侧进行拓展搜索,以定位可写值域段的具体过程为:从锚点开始向当前探测区间的左右两侧方向按预设步长逐次写入试探值,直至写入失败;于当前探测区间的右侧,在最后一次写入成功的试探值与首次写入失败的试探值之间进行二分查找,以定位最大可写值作为可写值域段的右边界值;于当前探测区间的左侧,在最后一次写入成功的试探值与首次写入失败的试探值之间进行二分查找,以定位最小可写值作为可写值域段的左边界值;其中,预设步长为可变步长,采用线性变化方式、指数变化方式、自适应变化方式以及分段变化方式中的一种。
6、优选的,在定位到可写值域段[a,b]后,当前探测区间[l,r]基于预设的安全间隔的剩余区间段分别为[l,a-]和[b+,r];将剩余区间段存入探测队列的具体过程为:若l≤a-,将剩余区间段[l,a-]存入探测队伍的尾部;若b+≤r,将剩余区间段[b+,r]存入探测队伍的尾部。
7、优选的,在未寻找到锚点时,将当前探测区间的宽度与预设的区间宽度阈值进行对比;若当前探测区间的宽度小于等于预设的区间宽度阈值,将其标记为死区间并入全局死区间集合,否则将当前探测区间对半拆分并存入探测队列。
8、优选的,循环终止条件包括探测队列为空、循环次数达到预设的最大循环次数以及当前待测寄存器的理论值域已被全局死区间集合完全覆盖;在满足任一终止条件时,退出循环。
9、优选的,对测试结果进行输出的具体过程为:将有效区间列表中记录的所有可写值域段按照其左边界值进行升序排列;若相邻两个可写值域段的间隔小于等于预设的安全间隔,将二者进行合并;对合并后的每个可写值域段,选取其左端点、中点和右端点分别执行写入-回读验证;对验证成功的可写值域段予以确认并纳入最终输出;对验证失败的可写值域段,仍保留其信息但标记为疑似区间,待人工复核后决定保留或剔除。
10、优选的,对完成测试的寄存器进行恢复的具体过程为:对完成测试的寄存器,通过modbus协议的写功能码将原始备份值进行写回恢复;对写回操作进行回读验证,确定恢复值与原始备份值是否一致;若恢复值与原始备份值一致,判定回读验证成功,寄存器恢复完成;若恢复值与原始备份值不一致,判定回读验证失败,重复执行写回和回读验证操作,直至回读验证成功或达到预设的重复次数上限。
11、优选的,在每次根据下发的写入指令执行完写入操作后,连续执行两次寄存器回读操作,仅当两次回读值与写入值均一致时,判定该次写入操作有效。
12、本技术的另一个方面提供了一种用于实施上述面向modbus从机寄存器可写范围的自适应测试方法的系统,包括modbus通信模块、双重读写验证模块、队列与死区间缓存模块、锚点探测模块、边界检索模块、寄存器状态备份与恢复模块以及自动测试联动模块;所述modbus通信模块位于系统底层,封装modbus rtu协议栈,用于和外部被测试的寄存器建立通信连接,并执行寄存器回读操作和写入操作;所述双重读写验证模块用于在每次写入指令下发后连续执行两次寄存器回读操作,仅当两次回读值与写入值均一致时,判定该次写入操作有效;所述队列与死区间缓存模块用于维护探测队列以及全局死区间集合,所述探测队列用于存储待探测的寄存器值域区间,所述全局死区间集合用于存储已确认完全不可写的值域段;所述锚点探测模块用于从所述探测队列中取出当前探测区间,在当前所述探测区间内按照预设优先级执行多种探测策略以寻找可写数值作为锚点,并在全部探测策略失败时生成无可写点信号;所述边界检索模块用于在成功发现锚点时,搜索可写值域段并存入有效区间列表;以及用于在接收无可写点信号时,将当前所述探测区间并入所述全局死区集合或存入所述探测队列;所述寄存器状态备份与恢复模块用于在测试开始时存储待测寄存器的当前值作为原始备份值,以及在测试完成后将所述原始备份值写回对应寄存器;所述自动测试联动模块用于控制所述锚点探测模块、所述边界检索模块以及所述寄存器备份与恢复模块的启动与停止,并在测试结束后对所述有效区间列表中的所有连续的所述可写值域段进行合并处理,输出标准化测试结果。
13、与现有技术相比,本技术的有益效果在于:
14、(1)本技术通过全局死区间集合的动态累积与过滤机制,对已确认无可写点的值域段进行永久性缓存,后续被该集合覆盖的探测区间均被自动跳过、不再下发写指令,从根本上解决了现有方案对只读死区反复探测导致的rs485总线通信冗余问题,有效节约总线带宽资源。
15、(2)本技术通过分治迭代队列机制,在发现可写段后自动将其左右剩余区间分别入队继续探测,并在无可写点时将区间拆分或标记后继续处理,确保完整值域被逐段细分、无遗漏遍历,从而支持多段离散可写区间的独立识别,解决了传统单段二分方案因错误假设单一连续段而丢失其余隔离区间所导致的测试结果严重失真问题,测试结果真实反映设备实际寄存器权限分布。
16、(3)本技术通过锚点自动发现与拓展搜索机制,无需人工预设任何测试数值或地址,即可在完整理论值域内自主定位可写数值点并向外扩展至整个连续可写段,自动捕获规约文件中未标注的隐藏可写区间,有效解决现有方案测试覆盖率严重缺失的问题。同时,通过锚点发现与边界搜索的两段式策略,避免了对可写段内部每一个数值的逐一遍历,大幅减少通信报文数量,有效适配产线批量自动化检测场景。
17、(4)本技术通过测试前备份与测试后恢复的闭环安全机制,确保全部寄存器在测试完成后完整恢复至测试前状态,实现被测设备运行参数零篡改,杜绝了因测试写入导致的继电保护误动、逆变器参数漂移等工业现场严重安全风险。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com