存档:

配置参数保存&复位bug修复,问题点:本地操作与modbus指令冲突
This commit is contained in:
吴俊潮 2025-07-24 16:45:45 +08:00
parent 6512de6b98
commit 87978c8da2
6 changed files with 21041 additions and 17379 deletions

View File

@ -123,6 +123,12 @@ void eeprom_item_data_init(void)
tabdata.item1_page0_color_output = COLOR_BLUE; //输出曲线颜色 tabdata.item1_page0_color_output = COLOR_BLUE; //输出曲线颜色
tabdata.item3_page0_language = MENU_SIMPLYFY_CHINESE; //语言选择 tabdata.item3_page0_language = MENU_SIMPLYFY_CHINESE; //语言选择
HoldReg[HOLD_ADDR_SAMPLE_INTERVAL] = tabdata.item1_page0_sample_interval;
HoldReg[HOLD_ADDR_PLOT_COUNTS] = 0x00FF & tabdata.item1_page0_plot_num;
HoldReg[HOLD_ADDR_INPUT_COLOR] = 0x00FF & (uint8_t)tabdata.item1_page0_color_input;
HoldReg[HOLD_ADDR_OUTPUT_COLOR] = 0x00FF & (uint8_t)tabdata.item1_page0_color_output;
HoldReg[HOLD_ADDR_LANGUAGE] = 0x00FF & (uint8_t)tabdata.item3_page0_language;
//针对复位的情况追加进行保存 //针对复位的情况追加进行保存
if(tabdata.item3_page0_resetflag == 1) if(tabdata.item3_page0_resetflag == 1)
{ {

View File

@ -215,7 +215,7 @@ uint8_t new_device = 0;
void eeprom_datasave_changed(void) void eeprom_datasave_changed(void)
{ {
TABVIEW_DATA tab_temp; TABVIEW_DATA tab_temp;
memcpy(&tab_temp, &tabdata, sizeof(TABVIEW_DATA)); memcpy(&tab_temp, &tabdata, sizeof(tab_temp));
eeprom_dataread(); eeprom_dataread();
@ -1177,13 +1177,19 @@ uint8_t eeprom_device_check(void)
tabdata.item0_page1_TClow[7] = TC[7].low; //TCT下限 tabdata.item0_page1_TClow[7] = TC[7].low; //TCT下限
tabdata.item0_page2_RTDup = RTD.up; //RTD上限 tabdata.item0_page2_RTDup = RTD.up; //RTD上限
tabdata.item0_page2_RTDlow = RTD.low; //RTD下限 tabdata.item0_page2_RTDlow = RTD.low; //RTD下限
tabdata.item1_page0_sample_interval = 1500; tabdata.item1_page0_sample_interval = 1500;
tabdata.item1_page0_plot_num = 5; tabdata.item1_page0_plot_num = 5;
tabdata.item1_page0_color_input = COLOR_YELLOW; tabdata.item1_page0_color_input = COLOR_YELLOW;
tabdata.item1_page0_color_output = COLOR_BLUE; tabdata.item1_page0_color_output = COLOR_BLUE;
tabdata.item3_page0_language = MENU_SIMPLYFY_CHINESE; tabdata.item3_page0_language = MENU_SIMPLYFY_CHINESE;
HoldReg[HOLD_ADDR_SAMPLE_INTERVAL] = tabdata.item1_page0_sample_interval;
HoldReg[HOLD_ADDR_PLOT_COUNTS] = 0x00FF & tabdata.item1_page0_plot_num;
HoldReg[HOLD_ADDR_INPUT_COLOR] = 0x00FF & (uint8_t)tabdata.item1_page0_color_input;
HoldReg[HOLD_ADDR_OUTPUT_COLOR] = 0x00FF & (uint8_t)tabdata.item1_page0_color_output;
HoldReg[HOLD_ADDR_LANGUAGE] = 0x00FF & (uint8_t)tabdata.item3_page0_language;
//eeprom_datasave();
eeprom_datasave_changed(); eeprom_datasave_changed();
eeprom_writedata(DEVICE_CHECK, 0xAA); eeprom_writedata(DEVICE_CHECK, 0xAA);

View File

@ -510,7 +510,7 @@ void hold_deal_range_max(void)
//数据类型不同电流mA(0-25)和频率KHz(0-100)的数据类型时uint8其他都是int16 //数据类型不同电流mA(0-25)和频率KHz(0-100)的数据类型时uint8其他都是int16
//*p8指向了需要修改的uint8*p16指向了需要修改的int16 //*p8指向了需要修改的uint8*p16指向了需要修改的int16
if( (HoldReg[HOLD_ADDR_PHY_UNIT] == 1)|(HoldReg[HOLD_ADDR_PHY_UNIT] == 5) ) if( (HoldReg[HOLD_ADDR_PHY_UNIT] == 1)||(HoldReg[HOLD_ADDR_PHY_UNIT] == 5) )
{ {
if( (!p8up)|(!p8low) ) return; if( (!p8up)|(!p8low) ) return;
@ -592,7 +592,7 @@ void hold_deal_range_min(void)
} }
range_min_prv = HoldReg[HOLD_ADDR_PHY_LOW]; range_min_prv = HoldReg[HOLD_ADDR_PHY_LOW];
if( (HoldReg[HOLD_ADDR_PHY_UNIT] == 1)|(HoldReg[HOLD_ADDR_PHY_UNIT] == 5) ) if( (HoldReg[HOLD_ADDR_PHY_UNIT] == 1)||(HoldReg[HOLD_ADDR_PHY_UNIT] == 5) )
{ {
if( (!p8up)|(!p8low) ) return; if( (!p8up)|(!p8low) ) return;
@ -654,6 +654,8 @@ void hold_deal_range_min(void)
//保持寄存器,处理采样间隔修改事件 //保持寄存器,处理采样间隔修改事件
void hold_deal_sample_interval(void) void hold_deal_sample_interval(void)
{ {
if( (tabdata.item3_page0_saveflag == 1 )||(tabdata.item3_page0_resetflag == 1) ) return;
if( HoldReg[HOLD_ADDR_SAMPLE_INTERVAL] != tabdata.item1_page0_sample_interval ) if( HoldReg[HOLD_ADDR_SAMPLE_INTERVAL] != tabdata.item1_page0_sample_interval )
{ {
if( (MENU_TASK_PERIOD <= HoldReg[HOLD_ADDR_SAMPLE_INTERVAL])&&(HoldReg[HOLD_ADDR_SAMPLE_INTERVAL] <= SAMPLE_INTERVAL_MAX) ) if( (MENU_TASK_PERIOD <= HoldReg[HOLD_ADDR_SAMPLE_INTERVAL])&&(HoldReg[HOLD_ADDR_SAMPLE_INTERVAL] <= SAMPLE_INTERVAL_MAX) )
@ -673,6 +675,8 @@ void hold_deal_sample_interval(void)
//保持寄存器,处理描点数量修改事件 //保持寄存器,处理描点数量修改事件
void hold_deal_plot_counts(void) void hold_deal_plot_counts(void)
{ {
if( (tabdata.item3_page0_saveflag == 1 )||(tabdata.item3_page0_resetflag == 1) ) return;
if( HoldReg[HOLD_ADDR_PLOT_COUNTS] != (0x00FF & tabdata.item1_page0_plot_num) ) if( HoldReg[HOLD_ADDR_PLOT_COUNTS] != (0x00FF & tabdata.item1_page0_plot_num) )
{ {
if( (PLOT_NUM_MIN <= HoldReg[HOLD_ADDR_PLOT_COUNTS])&&(HoldReg[HOLD_ADDR_PLOT_COUNTS] <= PLOT_NUM_MAX) ) if( (PLOT_NUM_MIN <= HoldReg[HOLD_ADDR_PLOT_COUNTS])&&(HoldReg[HOLD_ADDR_PLOT_COUNTS] <= PLOT_NUM_MAX) )
@ -702,6 +706,8 @@ void hold_deal_plot_counts(void)
//保持寄存器,处理输入曲线&图例颜色修改事件 //保持寄存器,处理输入曲线&图例颜色修改事件
void hold_deal_color_input(void) void hold_deal_color_input(void)
{ {
if( (tabdata.item3_page0_saveflag == 1 )||(tabdata.item3_page0_resetflag == 1) ) return;
if( HoldReg[HOLD_ADDR_INPUT_COLOR] != (0x00FF & (uint8_t)tabdata.item1_page0_color_input) ) if( HoldReg[HOLD_ADDR_INPUT_COLOR] != (0x00FF & (uint8_t)tabdata.item1_page0_color_input) )
{ {
if( HoldReg[HOLD_ADDR_INPUT_COLOR] <= 5 ) if( HoldReg[HOLD_ADDR_INPUT_COLOR] <= 5 )
@ -728,6 +734,8 @@ void hold_deal_color_input(void)
//保持寄存器,处理输出曲线&图例颜色修改事件 //保持寄存器,处理输出曲线&图例颜色修改事件
void hold_deal_color_output(void) void hold_deal_color_output(void)
{ {
if( (tabdata.item3_page0_saveflag == 1 )||(tabdata.item3_page0_resetflag == 1) ) return;
if( HoldReg[HOLD_ADDR_OUTPUT_COLOR] != (0x00FF & (uint8_t)tabdata.item1_page0_color_output) ) if( HoldReg[HOLD_ADDR_OUTPUT_COLOR] != (0x00FF & (uint8_t)tabdata.item1_page0_color_output) )
{ {
if( HoldReg[HOLD_ADDR_OUTPUT_COLOR] <= 5 ) if( HoldReg[HOLD_ADDR_OUTPUT_COLOR] <= 5 )
@ -754,6 +762,8 @@ void hold_deal_color_output(void)
//保持寄存器,处理语言选择事件 //保持寄存器,处理语言选择事件
void hold_deal_language_select(void) void hold_deal_language_select(void)
{ {
if( (tabdata.item3_page0_saveflag == 1 )||(tabdata.item3_page0_resetflag == 1) ) return;
if( HoldReg[HOLD_ADDR_LANGUAGE] != (0x00FF & (uint8_t)tabdata.item3_page0_language) ) if( HoldReg[HOLD_ADDR_LANGUAGE] != (0x00FF & (uint8_t)tabdata.item3_page0_language) )
{ {
if( HoldReg[HOLD_ADDR_LANGUAGE] <= 1 ) if( HoldReg[HOLD_ADDR_LANGUAGE] <= 1 )

View File

@ -307,7 +307,11 @@ void start_rs485(void const * argument)
} }
//更新modbus的寄存器值 //更新modbus的寄存器值
modbus_registers_update(); //开机动画结束后再执行
if(menu_data.scr_init_flag == 1)
{
modbus_registers_update();
}
system_sts.rs485_stack_consume = RS485_STACK_SIZE_WORD - uxTaskGetStackHighWaterMark(NULL); system_sts.rs485_stack_consume = RS485_STACK_SIZE_WORD - uxTaskGetStackHighWaterMark(NULL);
osDelay(RS485_TASK_PERIOD); osDelay(RS485_TASK_PERIOD);

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff