myfocus-2048857 发表于 2017-2-10 16:01:58

Modbus 丛机地址修改的问题 ?

参见示例代码:
Modbus 丛机地址可以通过上位机 修改为 需要的值(例如,修改为3)。可是,每次复位后,又变回原来的值(1)了。
MCU为STM32F030,开发环境为:uVision V5。

请教:
这个问题 该如何解决 ?

谢谢!

---------------------------------------------------------------------------
示例代码:
......
unsigned char ModbusAddress ;
......

void modbus_init(void)
{      
    ModbusAddress = 1;
}

int main(void)//master
{      
      ......
      modbus_init();
      ......
      
      while(1)
      {
                ......      
                ModbusAddress = 3 ;
                ......
      }
}

zoomdy 发表于 2017-2-10 18:18:01

你没有把地址存储在非易失存储啊,存储在RAM中复位后就丢了,你要把地址存储在flash或eeprom中,初始化的时候去读回来。

harvardx 发表于 2017-2-12 15:49:54

自己安排一个存储到非易失性媒介的 函数

myfocus-2048857 发表于 2017-2-13 14:45:11

谢谢二位,学习了

lchyx 发表于 2018-5-4 17:27:40

请问楼主你是这么修改的,我现在也遇到这个问题

Angel_YY 发表于 2018-5-17 11:09:35

通过IIC或者SPI接口外接EEPROM进行参数保存,启动的时候读取参数。或者把参数保存在MCU内部的Flash中也可以,总之不能只是保存在RAM中,RAM是掉电丢失数据的。其实最常见的方法是通过设置拨码开关实现地址的定义,MCU通过检测拨码开关的状态就知道自己的地址了。每一个设备上用一个四位的拨码开关可以设置16个地址,基本够用了。

chenjunl 发表于 2019-4-16 15:30:55

将数据存在FLASH里面就行了
页: [1]
查看完整版本: Modbus 丛机地址修改的问题 ?