[发明专利]一种基于小堆栈芯片的modbus地址优化方法在审
申请号: | 202211717124.2 | 申请日: | 2022-12-30 |
公开(公告)号: | CN116107918A | 公开(公告)日: | 2023-05-12 |
发明(设计)人: | 高捷潮;宋晓莉;袁璐;吴少龙 | 申请(专利权)人: | 北京世纪康华电气科技有限公司;郑州佛光发电设备股份有限公司 |
主分类号: | G06F12/02 | 分类号: | G06F12/02;H04L12/40 |
代理公司: | 郑州联科专利事务所(普通合伙) 41104 | 代理人: | 刘建芳 |
地址: | 100022 北京市朝*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 堆栈 芯片 modbus 地址 优化 方法 | ||
本发明公开了一种基于小堆栈芯片的modbus地址优化方法,具体包括如下步骤:收到modbus读取命令,确定开始的地址和所读长度;遍历结构体,根据读数据地址查找所在模块参数;保存读取数据到回复帧缓存,读数据地址加一,读数据长度加一,返回上步骤,直至读取数据完毕,进入下一步;生成回复数据帧,发送回复数据帧。本发明通过由原来的几个全局数组的方法改变为按参数模块定义的多个全局数组,进一步的读预留地址空间时只能读到0,写入预留地址空间时可以写入任何数据但是不做实际物理地址的写入即节约出大约原来40%的堆栈空间,同时mosbus协议也可以正常的使用节约出的堆栈空间可以被用到逻辑代码的开发当中。
技术领域
本发明涉及技术领域,尤其涉及一种基于小堆栈芯片的modbus地址优化方法。
背景技术
目前,在当前国际环境下国外的芯片的供应问题日益严重,许多企业开始选择国产的芯片但受限于技术原因国产芯片的堆栈一般都比较小。然而柴油发电机控制器所需要的modbus地址多达3000~4000个,在小内存芯片下开发会显得捉襟见肘。在以往的mosbus地址管理上,因为多使用国外大堆栈的芯片如STM32所以一般对物理内存的定义相对简单一般都是定义几个全局数组的即可(一般输入寄存、保持寄存器、离散寄存器、线圈寄存器各一个)。但是随着国产化芯片的推动过程,由于国产芯片的堆栈一般都比较小如兆易创新的标准情况下一般只有8K。而柴油发电机控制器所需要的寄存器数量一般在3000~4000个之间,如果采用之前简单的地址定义方法则留给逻辑代码的堆栈空间则所剩无几,从而无法进行复杂的逻辑编程。因此需要一种能适用于小堆栈的芯片的物理地址定义方法,使得能满足modbus协议的同时节省出一部分堆栈空间用于逻辑代码的编程。
发明内容
本发明的目的是提供一种基于小堆栈芯片的modbus地址优化方法,能够适用于国产小堆栈芯片的的编程,在modbus协议正常使用的同时能节省出一部分堆栈空间用于逻辑编程。
本发明采用的技术方案为:
一种基于小堆栈芯片的modbus地址优化方法,modbus读数据具体包括如下步骤:
A:收到modbus读取命令,确定开始的地址和所读长度,并判断是否超出modbus地址范围,如果超出,则生成错误回复帧,进入步骤E,否则进入下一步骤;
B:遍历结构体,根据读数据地址查找所在模块参数,如果查到具体的模块,则读取预留空间数据,固定为0值后进入步骤C;反之则根据读数据地址,读取定义模块数组具体元素值后进入步骤C;
C:保存读取数据到回复帧缓存,读数据地址加一,读数据长度加一,返回步骤B,直至读取数据完毕,进入下一步;
D:生成回复数据帧,
E:发送回复数据帧。
modbus写数据的方法过程与modbus读数据的方法过程一致,具体如下:
A1:收到modbus写数据帧命令,确定开始的地址和所读长度,并判断是否超出modbus地址范围,如果超出,则生成错误回复帧,进入步骤E1,否则进入下一步骤;
B1:遍历结构体,根据写数据地址查找所在模块参数,如果查到具体的模块,则根据写数据地址,从写数据帧命令取出所写值,写定义模块数组具体元素值后进入步骤C;反之则预留空间数据,不做处理后进入步骤C1;
C1: 写数据地址加一,写数据长度加一,返回步骤B1,直至写数据完毕,进入下一步;
D1:生成写回复数据帧,
E1:发送回复数据帧。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京世纪康华电气科技有限公司;郑州佛光发电设备股份有限公司,未经北京世纪康华电气科技有限公司;郑州佛光发电设备股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211717124.2/2.html,转载请声明来源钻瓜专利网。