嵌入式技术论坛
直播中

向日葵的花季

8年用户 1237经验值
擅长:电源/新能源
私信 关注
[问答]

如何去处理Freemodbus多个丛机因寄存器地址差异较大的情况呢

各位大佬好,在使用Freemodbus组件是遇到问题,求助。。。
我485总线上挂了2个丛机,一个为电机驱动器,一个编码器。但是由于两个丛机的保持寄存器地址差异很大,导致出现问题。
下面是电机驱动器的保持寄存器的地址表

下面是编码器的保持寄存器的地址表

由于Freemodbus组件中主机采用二维数组对所有从机节点数据进行存储:
USHORT   usMRegHoldBuf[MB_MASTER_TOTAL_SLAVE_NUM][M_REG_HOLDING_NREGS];
这样的话这个二维数组就很大,导致RAM溢出,编译不过。
请问大佬们有什么好的办法处理吗?

回帖(4)

王尚岱

2022-5-7 11:43:44
1
举报

向日葵的花季

2022-5-7 11:43:58
感谢,大佬。
举报

laisvl

2022-5-7 11:44:07
modbus从机数量2个,电机寄存器地址从0x2000到0x2004共5个地址,编码器寄存器地址从从0x0000到0x0004共5个地址,这样定义数组2,共10个数值,RAM存不下吗?
举报

向日葵的花季

2022-5-7 11:44:14
不是的,组件中是采用二维数组存储所有的丛机数据的usMRegHoldBufMB_MASTER_TOTAL_SLAVE_NUM;
这样的话,定义的数组就是usMRegHoldBuf[2]][8196]这样的。
举报

更多回帖

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