|
|
@@ -1,193 +1,198 @@
|
|
|
-/*********************************************************************************************************
|
|
|
-* 模块名称:ReadEeprom.c
|
|
|
-* 摘 要:ReadEeprom模块,进行独立按键初始化,以及按键扫描函数实现
|
|
|
-* 当前版本:1.0.0
|
|
|
-* 作 者:Leyutek(COPYRIGHT 2018 - 2021 Leyutek. All rights reserved.)
|
|
|
-* 完成日期:2021年07月01日
|
|
|
-* 内 容:
|
|
|
-* 注 意:
|
|
|
-**********************************************************************************************************
|
|
|
-* 取代版本:
|
|
|
-* 作 者:
|
|
|
-* 完成日期:
|
|
|
-* 修改内容:
|
|
|
-* 修改文件:
|
|
|
-*********************************************************************************************************/
|
|
|
-
|
|
|
-/*********************************************************************************************************
|
|
|
-* 包含头文件
|
|
|
-*********************************************************************************************************/
|
|
|
-#include "ReadEeprom.h"
|
|
|
-#include "Main.h"
|
|
|
-#include "gd32e230x_conf.h"
|
|
|
-#include "At24cxx.h"
|
|
|
-#include "string.h"
|
|
|
-#include "Relay.h"
|
|
|
-#include "Sn74hc573.h"
|
|
|
-/*********************************************************************************************************
|
|
|
-* 宏定义
|
|
|
-*********************************************************************************************************/
|
|
|
-
|
|
|
-/*********************************************************************************************************
|
|
|
-* 枚举结构体
|
|
|
-*********************************************************************************************************/
|
|
|
-extern DCPDU_RELAY_Para_Reg DCPDU_RL_time;
|
|
|
-/*********************************************************************************************************
|
|
|
-* 内部变量定义
|
|
|
-*********************************************************************************************************/
|
|
|
-uint8_t Eeprom_Rbuf[RELAY_para_sum]={0};
|
|
|
-
|
|
|
-extern uint8_t DCPDU_active_chn;
|
|
|
-extern uint8_t Active_state_bit;
|
|
|
-extern uint32_t DCPDU_Modbus_Reg[DCPDU_Modbus_Reg_len];
|
|
|
-/*********************************************************************************************************
|
|
|
-* 内部函数声明
|
|
|
-*********************************************************************************************************/
|
|
|
-
|
|
|
-/*********************************************************************************************************
|
|
|
-* 内部函数实现
|
|
|
-*********************************************************************************************************/
|
|
|
-/*********************************************************************************************************
|
|
|
-* 函数名称:ReadEeprom
|
|
|
-* 函数功能:读出Eeprom的数据
|
|
|
-* 输入参数:void
|
|
|
-* 输出参数:void
|
|
|
-* 返 回 值:void
|
|
|
-* 创建日期:2021年07月01日
|
|
|
-* 注 意:
|
|
|
-*********************************************************************************************************/
|
|
|
-void ReadEeprom(void)
|
|
|
-{
|
|
|
- uint8_t i = 0;
|
|
|
- uint8_t j = 0;
|
|
|
- uint32_t temp0 = 0;
|
|
|
- uint32_t temp1 = 0;
|
|
|
- uint32_t temp2 = 0;
|
|
|
- uint32_t temp3 = 0;
|
|
|
-
|
|
|
- AT24CxxRead(0, Eeprom_Rbuf, RELAY_para_sum); //从eeprom中读出通道开启延时数据
|
|
|
- if((Eeprom_Rbuf[ERom_RL_Ch_N_addr] < 1) || (Eeprom_Rbuf[ERom_RL_Ch_N_addr] > RELAY_ChN_default))
|
|
|
- {
|
|
|
- Eeprom_Rbuf[ERom_RL_Ch_N_addr] = RELAY_ChN_default;
|
|
|
- }
|
|
|
- DCPDU_active_chn = Eeprom_Rbuf[ERom_RL_Ch_N_addr];
|
|
|
- DCPDU_Modbus_Reg[DCPDU_RL_ST_Addr - DCPDU_Modbus_RegStAd] = Eeprom_Rbuf[ERom_RL_ST_Addr];
|
|
|
- DCPDU_Modbus_Reg[DCPDU_RLft_ST_Addr - DCPDU_Modbus_RegStAd] = Eeprom_Rbuf[ERom_RLft_ST_Addr];
|
|
|
- for(i = 0;i < RELAY_ChN_default;i++)
|
|
|
- {
|
|
|
- if((Eeprom_Rbuf[ERom_RL_Ton1_Addr + i] < 1) || (Eeprom_Rbuf[ERom_RL_Ton1_Addr + i] > RELAY_ontime_max))
|
|
|
- {
|
|
|
- Eeprom_Rbuf[ERom_RL_Ton1_Addr + i] = RELAY_ontime_default;
|
|
|
- }
|
|
|
- if((Eeprom_Rbuf[ERom_RL_Toff1_Addr + i] < 1) || (Eeprom_Rbuf[ERom_RL_Toff1_Addr + i] > RELAY_offtime_max))
|
|
|
- {
|
|
|
- Eeprom_Rbuf[ERom_RL_Toff1_Addr + i] = RELAY_offtime_default;
|
|
|
- }
|
|
|
- DCPDU_Modbus_Reg[DCPDU_RL_Ton1_Addr + i - DCPDU_Modbus_RegStAd] = Eeprom_Rbuf[ERom_RL_Ton1_Addr + i];
|
|
|
- DCPDU_Modbus_Reg[DCPDU_RL_Toff1_Addr + i - DCPDU_Modbus_RegStAd] = Eeprom_Rbuf[ERom_RL_Toff1_Addr + i];
|
|
|
-
|
|
|
- DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_max_Addr + i] = 0;
|
|
|
- DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_min_Addr + i] = 0;
|
|
|
-
|
|
|
- DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_max_Addr + i] = 0;
|
|
|
- DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_min_Addr + i] = 0;
|
|
|
-
|
|
|
-
|
|
|
- for(j = 0;j < 4;j++)
|
|
|
- {
|
|
|
- temp2 = 8 * j;
|
|
|
- temp2 = 24 - temp2;
|
|
|
- temp3 = 4 * i;
|
|
|
- temp3 += j;
|
|
|
-
|
|
|
- DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_max_Addr + i] += (Eeprom_Rbuf[ERom_VLit1_max_Addr + temp3] << temp2);
|
|
|
- DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_min_Addr + i] += (Eeprom_Rbuf[ERom_VLit1_min_Addr + temp3] << temp2);
|
|
|
-
|
|
|
- DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_max_Addr + i] += (Eeprom_Rbuf[ERom_ILit1_max_Addr + temp3] << temp2);
|
|
|
- DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_min_Addr + i] += (Eeprom_Rbuf[ERom_ILit1_min_Addr + temp3] << temp2);
|
|
|
- }
|
|
|
-
|
|
|
- if((DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_max_Addr + i] < Vin_LTmin_default) || (DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_max_Addr + i] > Vin_LTmax_default))
|
|
|
- {
|
|
|
- DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_max_Addr + i] = Vin_LTmax_default;
|
|
|
- }
|
|
|
- if((DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_min_Addr + i] < Vin_LTmin_default) || (DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_min_Addr + i] > Vin_LTmax_default))
|
|
|
- {
|
|
|
- DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_min_Addr + i] = Vin_LTmin_default;
|
|
|
- }
|
|
|
- if(DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_max_Addr + i] < DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_min_Addr + i])
|
|
|
- {
|
|
|
- temp3 = DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_max_Addr + i];
|
|
|
- DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_max_Addr + i] = DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_min_Addr + i];
|
|
|
- DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_min_Addr + i] = temp3;
|
|
|
- }
|
|
|
-
|
|
|
- if((DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_max_Addr + i] < Iout_LTmin_default) || (DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_max_Addr + i] > Iout_LTmax_default))
|
|
|
- {
|
|
|
- DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_max_Addr + i] = Iout_LTmax_default;
|
|
|
- }
|
|
|
- if((DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_min_Addr + i] < Iout_LTmin_default) || (DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_min_Addr + i] > Iout_LTmax_default))
|
|
|
- {
|
|
|
- DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_min_Addr + i] = Iout_LTmin_default;
|
|
|
- }
|
|
|
- if(DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_max_Addr + i] < DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_min_Addr + i])
|
|
|
- {
|
|
|
- temp3 = DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_max_Addr + i];
|
|
|
- DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_max_Addr + i] = DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_min_Addr + i];
|
|
|
- DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_min_Addr + i] = temp3;
|
|
|
- }
|
|
|
- }
|
|
|
- DCPDU_Modbus_Reg[DCPDU_RL_Allon_Addr - DCPDU_Modbus_RegStAd] = Eeprom_Rbuf[ERom_RL_Allon_Addr];
|
|
|
- DCPDU_Modbus_Reg[DCPDU_RL_Alloff_Addr - DCPDU_Modbus_RegStAd] = Eeprom_Rbuf[ERom_RL_Alloff_Addr];
|
|
|
-}
|
|
|
-
|
|
|
-/*********************************************************************************************************
|
|
|
-* API函数实现
|
|
|
-*********************************************************************************************************/
|
|
|
-void WriteEeprom(void)
|
|
|
-{
|
|
|
- uint8_t i = 0;
|
|
|
- uint8_t j = 0;
|
|
|
- uint32_t temp0 = 0;
|
|
|
- uint32_t temp1 = 0;
|
|
|
- uint32_t temp2 = 0;
|
|
|
- uint32_t temp3 = 0;
|
|
|
- uint32_t temp4 = 0;
|
|
|
- uint32_t temp5 = 0;
|
|
|
- Eeprom_Rbuf[ERom_RL_Ch_N_addr] = RELAY_ChN_default;
|
|
|
- Eeprom_Rbuf[ERom_RL_ST_Addr] = DCPDU_Modbus_Reg[DCPDU_RL_ST_Addr - DCPDU_Modbus_RegStAd] & Active_state_bit;
|
|
|
- Eeprom_Rbuf[ERom_RLft_ST_Addr] = DCPDU_Modbus_Reg[DCPDU_RLft_ST_Addr - DCPDU_Modbus_RegStAd] & Active_state_bit;
|
|
|
-
|
|
|
- for(i = 0;i <RELAY_ChN_default;i++)
|
|
|
- {
|
|
|
- Eeprom_Rbuf[ERom_RL_Ton1_Addr + i] = DCPDU_Modbus_Reg[DCPDU_RL_Ton1_Addr + i - DCPDU_Modbus_RegStAd];
|
|
|
- Eeprom_Rbuf[ERom_RL_Toff1_Addr + i] = DCPDU_Modbus_Reg[DCPDU_RL_Toff1_Addr + i - DCPDU_Modbus_RegStAd];
|
|
|
- }
|
|
|
- Eeprom_Rbuf[ERom_RL_Allon_Addr] = DCPDU_Modbus_Reg[DCPDU_RL_Allon_Addr - DCPDU_Modbus_RegStAd] & Active_state_bit;
|
|
|
- Eeprom_Rbuf[ERom_RL_Alloff_Addr] = DCPDU_Modbus_Reg[DCPDU_RL_Alloff_Addr - DCPDU_Modbus_RegStAd] & Active_state_bit;
|
|
|
-
|
|
|
- temp0 = DCPDU_VLit1_max_Addr - DCPDU_Modbus_RegStAd;
|
|
|
- temp1 = DCPDU_VLit1_min_Addr - DCPDU_Modbus_RegStAd;
|
|
|
-
|
|
|
- temp4 = DCPDU_ILit1_max_Addr - DCPDU_Modbus_RegStAd;
|
|
|
- temp5 = DCPDU_ILit1_min_Addr - DCPDU_Modbus_RegStAd;
|
|
|
-
|
|
|
- for(i = 0;i <RELAY_ChN_default;i++)
|
|
|
- {
|
|
|
-
|
|
|
- for(j = 0;j < 4;j++)
|
|
|
- {
|
|
|
- temp2 = 8 * j;
|
|
|
- temp2 = 24 - temp2;
|
|
|
- temp3 = 4 * i;
|
|
|
- temp3 += j;
|
|
|
-
|
|
|
- Eeprom_Rbuf[ERom_VLit1_max_Addr + temp3] = DCPDU_Modbus_Reg[temp0 + i] >> temp2;
|
|
|
- Eeprom_Rbuf[ERom_VLit1_min_Addr + temp3] = DCPDU_Modbus_Reg[temp1 + i] >> temp2;
|
|
|
- Eeprom_Rbuf[ERom_ILit1_max_Addr + temp3] = DCPDU_Modbus_Reg[temp4 + i] >> temp2;
|
|
|
- Eeprom_Rbuf[ERom_ILit1_min_Addr + temp3] = DCPDU_Modbus_Reg[temp5 + i] >> temp2;
|
|
|
- }
|
|
|
- }
|
|
|
- AT24CxxWrite(ERom_RL_Ch_N_addr,Eeprom_Rbuf,RELAY_para_sum);
|
|
|
-}
|
|
|
-
|
|
|
+/*********************************************************************************************************
|
|
|
+* 模块名称:ReadEeprom.c
|
|
|
+* 摘 要:ReadEeprom模块,进行独立按键初始化,以及按键扫描函数实现
|
|
|
+* 当前版本:1.0.0
|
|
|
+* 作 者:Leyutek(COPYRIGHT 2018 - 2021 Leyutek. All rights reserved.)
|
|
|
+* 完成日期:2021年07月01日
|
|
|
+* 内 容:
|
|
|
+* 注 意:
|
|
|
+**********************************************************************************************************
|
|
|
+* 取代版本:
|
|
|
+* 作 者:
|
|
|
+* 完成日期:
|
|
|
+* 修改内容:
|
|
|
+* 修改文件:
|
|
|
+*********************************************************************************************************/
|
|
|
+
|
|
|
+/*********************************************************************************************************
|
|
|
+* 包含头文件
|
|
|
+*********************************************************************************************************/
|
|
|
+#include "ReadEeprom.h"
|
|
|
+#include "Main.h"
|
|
|
+#include "gd32e230x_conf.h"
|
|
|
+#include "At24cxx.h"
|
|
|
+#include "string.h"
|
|
|
+#include "Relay.h"
|
|
|
+#include "Sn74hc573.h"
|
|
|
+/*********************************************************************************************************
|
|
|
+* 宏定义
|
|
|
+*********************************************************************************************************/
|
|
|
+
|
|
|
+/*********************************************************************************************************
|
|
|
+* 枚举结构体
|
|
|
+*********************************************************************************************************/
|
|
|
+extern DCPDU_RELAY_Para_Reg DCPDU_RL_time;
|
|
|
+/*********************************************************************************************************
|
|
|
+* 内部变量定义
|
|
|
+*********************************************************************************************************/
|
|
|
+uint8_t Eeprom_Rbuf[RELAY_para_sum]={0};
|
|
|
+
|
|
|
+extern uint8_t DCPDU_active_chn;
|
|
|
+extern uint8_t Active_state_bit;
|
|
|
+extern uint32_t DCPDU_Modbus_Reg[DCPDU_Modbus_Reg_len];
|
|
|
+/*********************************************************************************************************
|
|
|
+* 内部函数声明
|
|
|
+*********************************************************************************************************/
|
|
|
+
|
|
|
+/*********************************************************************************************************
|
|
|
+* 内部函数实现
|
|
|
+*********************************************************************************************************/
|
|
|
+/*********************************************************************************************************
|
|
|
+* 函数名称:ReadEeprom
|
|
|
+* 函数功能:读出Eeprom的数据
|
|
|
+* 输入参数:void
|
|
|
+* 输出参数:void
|
|
|
+* 返 回 值:void
|
|
|
+* 创建日期:2021年07月01日
|
|
|
+* 注 意:
|
|
|
+*********************************************************************************************************/
|
|
|
+void ReadEeprom(void)
|
|
|
+{
|
|
|
+ uint8_t i = 0;
|
|
|
+ uint8_t j = 0;
|
|
|
+ uint32_t temp0 = 0;
|
|
|
+ uint32_t temp1 = 0;
|
|
|
+ uint32_t temp2 = 0;
|
|
|
+ uint32_t temp3 = 0;
|
|
|
+
|
|
|
+ AT24CxxRead(0, Eeprom_Rbuf, RELAY_para_sum); //从eeprom中读出通道开启延时数据
|
|
|
+ if((Eeprom_Rbuf[ERom_RL_Ch_N_addr] < 1) || (Eeprom_Rbuf[ERom_RL_Ch_N_addr] > RELAY_ChN_default))
|
|
|
+ {
|
|
|
+ Eeprom_Rbuf[ERom_RL_Ch_N_addr] = RELAY_ChN_default;
|
|
|
+ }
|
|
|
+ DCPDU_active_chn = Eeprom_Rbuf[ERom_RL_Ch_N_addr];
|
|
|
+ DCPDU_Modbus_Reg[DCPDU_RL_ST_Addr - DCPDU_Modbus_RegStAd] = Eeprom_Rbuf[ERom_RL_ST_Addr];
|
|
|
+ DCPDU_Modbus_Reg[DCPDU_RLft_ST_Addr - DCPDU_Modbus_RegStAd] = Eeprom_Rbuf[ERom_RLft_ST_Addr];
|
|
|
+ for(i = 0;i < RELAY_ChN_default;i++)
|
|
|
+ {
|
|
|
+ if((Eeprom_Rbuf[ERom_RL_Ton1_Addr + i] < 1) || (Eeprom_Rbuf[ERom_RL_Ton1_Addr + i] > RELAY_ontime_max))
|
|
|
+ {
|
|
|
+ Eeprom_Rbuf[ERom_RL_Ton1_Addr + i] = RELAY_ontime_default;
|
|
|
+ }
|
|
|
+ if((Eeprom_Rbuf[ERom_RL_Toff1_Addr + i] < 1) || (Eeprom_Rbuf[ERom_RL_Toff1_Addr + i] > RELAY_offtime_max))
|
|
|
+ {
|
|
|
+ Eeprom_Rbuf[ERom_RL_Toff1_Addr + i] = RELAY_offtime_default;
|
|
|
+ }
|
|
|
+ DCPDU_Modbus_Reg[DCPDU_RL_Ton1_Addr + i - DCPDU_Modbus_RegStAd] = Eeprom_Rbuf[ERom_RL_Ton1_Addr + i];
|
|
|
+ DCPDU_Modbus_Reg[DCPDU_RL_Toff1_Addr + i - DCPDU_Modbus_RegStAd] = Eeprom_Rbuf[ERom_RL_Toff1_Addr + i];
|
|
|
+
|
|
|
+ DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_max_Addr + i] = 0;
|
|
|
+ DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_min_Addr + i] = 0;
|
|
|
+
|
|
|
+ DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_max_Addr + i] = 0;
|
|
|
+ DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_min_Addr + i] = 0;
|
|
|
+
|
|
|
+ temp0 = 4 * i;
|
|
|
+
|
|
|
+ DCPDU_Modbus_Reg[Mb_Dbuff_P1Output_Addr + temp0 + 3] = 0;
|
|
|
+
|
|
|
+ for(j = 0;j < 4;j++)
|
|
|
+ {
|
|
|
+ temp2 = 8 * j;
|
|
|
+ temp2 = 24 - temp2;
|
|
|
+ temp3 = 4 * i;
|
|
|
+ temp3 += j;
|
|
|
+
|
|
|
+ DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_max_Addr + i] += (Eeprom_Rbuf[ERom_VLit1_max_Addr + temp3] << temp2);
|
|
|
+ DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_min_Addr + i] += (Eeprom_Rbuf[ERom_VLit1_min_Addr + temp3] << temp2);
|
|
|
+
|
|
|
+ DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_max_Addr + i] += (Eeprom_Rbuf[ERom_ILit1_max_Addr + temp3] << temp2);
|
|
|
+ DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_min_Addr + i] += (Eeprom_Rbuf[ERom_ILit1_min_Addr + temp3] << temp2);
|
|
|
+
|
|
|
+ DCPDU_Modbus_Reg[Mb_Dbuff_P1Output_Addr + temp0 + 3] += (Eeprom_Rbuf[ERom_TotalWh1_Addr + temp3] << temp2);
|
|
|
+ }
|
|
|
+
|
|
|
+ if((DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_max_Addr + i] < Vin_LTmin_default) || (DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_max_Addr + i] > Vin_LTmax_default))
|
|
|
+ {
|
|
|
+ DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_max_Addr + i] = Vin_LTmax_default;
|
|
|
+ }
|
|
|
+ if((DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_min_Addr + i] < Vin_LTmin_default) || (DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_min_Addr + i] > Vin_LTmax_default))
|
|
|
+ {
|
|
|
+ DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_min_Addr + i] = Vin_LTmin_default;
|
|
|
+ }
|
|
|
+ if(DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_max_Addr + i] < DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_min_Addr + i])
|
|
|
+ {
|
|
|
+ temp3 = DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_max_Addr + i];
|
|
|
+ DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_max_Addr + i] = DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_min_Addr + i];
|
|
|
+ DCPDU_Modbus_Reg[Mb_Dbuff_VLit1_min_Addr + i] = temp3;
|
|
|
+ }
|
|
|
+
|
|
|
+ if((DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_max_Addr + i] < Iout_LTmin_default) || (DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_max_Addr + i] > Iout_LTmax_default))
|
|
|
+ {
|
|
|
+ DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_max_Addr + i] = Iout_LTmax_default;
|
|
|
+ }
|
|
|
+ if((DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_min_Addr + i] < Iout_LTmin_default) || (DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_min_Addr + i] > Iout_LTmax_default))
|
|
|
+ {
|
|
|
+ DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_min_Addr + i] = Iout_LTmin_default;
|
|
|
+ }
|
|
|
+ if(DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_max_Addr + i] < DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_min_Addr + i])
|
|
|
+ {
|
|
|
+ temp3 = DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_max_Addr + i];
|
|
|
+ DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_max_Addr + i] = DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_min_Addr + i];
|
|
|
+ DCPDU_Modbus_Reg[Mb_Dbuff_ILit1_min_Addr + i] = temp3;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ DCPDU_Modbus_Reg[DCPDU_RL_Allon_Addr - DCPDU_Modbus_RegStAd] = Eeprom_Rbuf[ERom_RL_Allon_Addr];
|
|
|
+ DCPDU_Modbus_Reg[DCPDU_RL_Alloff_Addr - DCPDU_Modbus_RegStAd] = Eeprom_Rbuf[ERom_RL_Alloff_Addr];
|
|
|
+}
|
|
|
+
|
|
|
+/*********************************************************************************************************
|
|
|
+* API函数实现
|
|
|
+*********************************************************************************************************/
|
|
|
+void WriteEeprom(void)
|
|
|
+{
|
|
|
+ uint8_t i = 0;
|
|
|
+ uint8_t j = 0;
|
|
|
+ uint32_t temp0 = 0;
|
|
|
+ uint32_t temp1 = 0;
|
|
|
+ uint32_t temp2 = 0;
|
|
|
+ uint32_t temp3 = 0;
|
|
|
+ uint32_t temp4 = 0;
|
|
|
+ uint32_t temp5 = 0;
|
|
|
+ Eeprom_Rbuf[ERom_RL_Ch_N_addr] = RELAY_ChN_default;
|
|
|
+ Eeprom_Rbuf[ERom_RL_ST_Addr] = DCPDU_Modbus_Reg[DCPDU_RL_ST_Addr - DCPDU_Modbus_RegStAd] & Active_state_bit;
|
|
|
+ Eeprom_Rbuf[ERom_RLft_ST_Addr] = DCPDU_Modbus_Reg[DCPDU_RLft_ST_Addr - DCPDU_Modbus_RegStAd] & Active_state_bit;
|
|
|
+
|
|
|
+ for(i = 0;i <RELAY_ChN_default;i++)
|
|
|
+ {
|
|
|
+ Eeprom_Rbuf[ERom_RL_Ton1_Addr + i] = DCPDU_Modbus_Reg[DCPDU_RL_Ton1_Addr + i - DCPDU_Modbus_RegStAd];
|
|
|
+ Eeprom_Rbuf[ERom_RL_Toff1_Addr + i] = DCPDU_Modbus_Reg[DCPDU_RL_Toff1_Addr + i - DCPDU_Modbus_RegStAd];
|
|
|
+ }
|
|
|
+ Eeprom_Rbuf[ERom_RL_Allon_Addr] = DCPDU_Modbus_Reg[DCPDU_RL_Allon_Addr - DCPDU_Modbus_RegStAd] & Active_state_bit;
|
|
|
+ Eeprom_Rbuf[ERom_RL_Alloff_Addr] = DCPDU_Modbus_Reg[DCPDU_RL_Alloff_Addr - DCPDU_Modbus_RegStAd] & Active_state_bit;
|
|
|
+
|
|
|
+ temp0 = DCPDU_VLit1_max_Addr - DCPDU_Modbus_RegStAd;
|
|
|
+ temp1 = DCPDU_VLit1_min_Addr - DCPDU_Modbus_RegStAd;
|
|
|
+
|
|
|
+ temp4 = DCPDU_ILit1_max_Addr - DCPDU_Modbus_RegStAd;
|
|
|
+ temp5 = DCPDU_ILit1_min_Addr - DCPDU_Modbus_RegStAd;
|
|
|
+
|
|
|
+ for(i = 0;i <RELAY_ChN_default;i++)
|
|
|
+ {
|
|
|
+
|
|
|
+ for(j = 0;j < 4;j++)
|
|
|
+ {
|
|
|
+ temp2 = 8 * j;
|
|
|
+ temp2 = 24 - temp2;
|
|
|
+ temp3 = 4 * i;
|
|
|
+ temp3 += j;
|
|
|
+
|
|
|
+ Eeprom_Rbuf[ERom_VLit1_max_Addr + temp3] = DCPDU_Modbus_Reg[temp0 + i] >> temp2;
|
|
|
+ Eeprom_Rbuf[ERom_VLit1_min_Addr + temp3] = DCPDU_Modbus_Reg[temp1 + i] >> temp2;
|
|
|
+ Eeprom_Rbuf[ERom_ILit1_max_Addr + temp3] = DCPDU_Modbus_Reg[temp4 + i] >> temp2;
|
|
|
+ Eeprom_Rbuf[ERom_ILit1_min_Addr + temp3] = DCPDU_Modbus_Reg[temp5 + i] >> temp2;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ AT24CxxWrite(ERom_RL_Ch_N_addr,Eeprom_Rbuf,RELAY_para_sum);
|
|
|
+}
|
|
|
+
|