FIX | 调试修改

master
yuliang 4 months ago
parent 878b085dba
commit 528dc2223d

@ -80,6 +80,12 @@ typedef enum
DAU_UPD_ERROR = 2, DAU_UPD_ERROR = 2,
} DAU_UPD_ERR_E; } DAU_UPD_ERR_E;
/* 采集标志位 */
typedef enum
{
DAU_REG_PORT_WRITE = 0, // 写端口寄存器
} DAU_REG_FLAG_E;
/* DAU 全局寄存器. */ /* DAU 全局寄存器. */
typedef struct typedef struct
{ {
@ -98,12 +104,24 @@ typedef struct
/* DAU 通道状态寄存器. */ /* DAU 通道状态寄存器. */
typedef struct typedef struct
{ {
uint16_t DMAX[4]; // 缺陷电流通道周波最大值寄存器 (Defect Max Value Register). int16_t DMAX[4]; // 缺陷电流通道周波最大值寄存器 (Defect Max Value Register).
uint16_t DAVR[4]; // 缺陷电流通道周波平均值寄存器 (Defect Average Value Register). uint16_t DAVR[4]; // 缺陷电流通道周波平均值寄存器 (Defect Average Value Register).
uint16_t FAVR[4]; // 故障电流通道周波平均值寄存器 (Fault Average Value Register). uint16_t FAVR[4]; // 故障电流通道周波平均值寄存器 (Fault Average Value Register).
uint16_t FMAX[4]; // 故障电流通道原始采样值最大值寄存器 (Fault Max Value Register). int16_t FMAX[4]; // 故障电流通道原始采样值最大值寄存器 (Fault Max Value Register).
} dau_port_state_reg_t; } dau_port_state_reg_t;
/* DAU 通道状态寄存器. */
typedef struct
{
uint16_t PDZR; // 缺陷电流通道零点原始值寄存器.
uint16_t PFZR; // 故障电流通道零点原始值寄存器.
uint16_t reserve0[10];
uint16_t PDAR; // 缺陷电流通道校准系数寄存器.
uint16_t reserve1[9];
uint16_t reserve2[10];
uint16_t PFAR; // 故障电流通道校准系数寄存器.
} dau_port_reg_t;
/* DAU 全局结构体 */ /* DAU 全局结构体 */
typedef struct typedef struct
{ {
@ -126,9 +144,11 @@ typedef struct
int16_t fault_trig[DAU_PORT_FAULT_MAX]; // 故障触发电流值 A int16_t fault_trig[DAU_PORT_FAULT_MAX]; // 故障触发电流值 A
int16_t reg_power[DAU_PORT_POWER_CNT][DAU_POWER_DATE_LEN]; // 寄存器触发工频波形采样电流值, 接地电流 0.1A, 运行电流 0.25A int16_t reg_power[DAU_PORT_POWER_CNT][DAU_POWER_DATE_LEN]; // 寄存器触发工频波形采样电流值, 接地电流 0.1A, 运行电流 0.25A
uint32_t reg_elec[DAU_PORT_POWER_CNT]; // 寄存器触发工频电流有效值 mA uint32_t reg_elec[DAU_PORT_POWER_CNT]; // 寄存器触发工频电流有效值 mA
int16_t reg_defect_max[DAU_PORT_DEFECT_MAX]; // 寄存器触发缺陷电流最大值 mA uint16_t reg_defect_max[DAU_PORT_DEFECT_MAX]; // 寄存器触发缺陷电流最大值 mA
dau_reg_global_t reg_global; // DAU 全局寄存器 dau_reg_global_t reg_global; // DAU 全局寄存器
dau_port_state_reg_t reg_port_state; // DAU 端口状态寄存器 dau_port_state_reg_t reg_port_state; // DAU 端口状态寄存器
uint8_t reg_flag; // DAU 寄存器操作标志
uint8_t reg_data; // DAU 寄存器操作参数
osThreadId_t gps_handle; // GPS 任务句柄 osThreadId_t gps_handle; // GPS 任务句柄
UART_HandleTypeDef *uart; // GPS 通讯使用的串口句柄 UART_HandleTypeDef *uart; // GPS 通讯使用的串口句柄

@ -192,13 +192,14 @@ typedef struct
uint16_t defect_threshold; uint16_t defect_threshold;
/* APN 配置. 128byte */ /* APN 配置. 128byte */
char APN[DEV_APN_LEN]; char APN[DEV_APN_LEN];
/* 保证配置区 8K 的保留位. */ /* 缺陷故障校准配置 */
uint8_t reserve[252];
uint16_t defect_base[DAU_PORT_DEFECT_MAX]; uint16_t defect_base[DAU_PORT_DEFECT_MAX];
uint16_t defect_adj[DAU_PORT_DEFECT_MAX]; uint16_t defect_adj[DAU_PORT_DEFECT_MAX];
uint16_t fault_base[DAU_PORT_FAULT_MAX]; uint16_t fault_base[DAU_PORT_FAULT_MAX];
uint16_t fault_adj[DAU_PORT_FAULT_MAX]; uint16_t fault_adj[DAU_PORT_FAULT_MAX];
uint16_t ADC_adj_point[DAU_PORT_POWER_CNT]; uint16_t ADC_adj_point[DAU_PORT_POWER_CNT];
/* 保证配置区 8K 的保留位. */
uint8_t reserve[252];
/* INIT_DONE_MAGIC. 4byte */ /* INIT_DONE_MAGIC. 4byte */
uint32_t magic_bak; uint32_t magic_bak;
} dev_config_t; } dev_config_t;

@ -539,7 +539,7 @@ static BaseType_t _cli_show(const char *string)
vty_print("BAT charge: %d\r\n", HAL_GPIO_ReadPin(BAT_CHECK_GPIO_Port, BAT_CHECK_Pin)); vty_print("BAT charge: %d\r\n", HAL_GPIO_ReadPin(BAT_CHECK_GPIO_Port, BAT_CHECK_Pin));
vty_print("Collect interval: %dmin\r\n", dev_config.collect_interval); vty_print("Collect interval: %dmin\r\n", dev_config.collect_interval);
vty_print("Power threshold: %dA\r\n", dev_config.power_threshold); vty_print("Power threshold: %dA\r\n", dev_config.power_threshold);
vty_print("Defect threshold: %dA\r\n", dev_config.defect_threshold); vty_print("Defect threshold: %dmA\r\n", dev_config.defect_threshold);
vty_print("Fault threshold: %dA\r\n", dev_config.fault_threshold); vty_print("Fault threshold: %dA\r\n", dev_config.fault_threshold);
vty_print("Keepalive: %dmin\r\n", dev_config.keepalive); vty_print("Keepalive: %dmin\r\n", dev_config.keepalive);
} }
@ -880,8 +880,8 @@ void cli_start(void const * argument)
FLASH_If_Init(); FLASH_If_Init();
/* 配置系统初始化. */ /* 配置系统初始化. */
dev_config_init(); dev_config_init();
//dev_config_flag_set(DEV_FLAG_CLI); dev_config_flag_set(DEV_FLAG_CLI);
dev_config_flag_unset(DEV_FLAG_CLI); //dev_config_flag_unset(DEV_FLAG_CLI);
dev_config_flag_unset(DEV_FLAG_ADJ); dev_config_flag_unset(DEV_FLAG_ADJ);
flash_log_init(); flash_log_init();
st_init(); st_init();
@ -894,7 +894,7 @@ void cli_start(void const * argument)
dbg_cmd_hander(DBG_CMD_ON, DBG_M_DAU); dbg_cmd_hander(DBG_CMD_ON, DBG_M_DAU);
//dbg_cmd_hander(DBG_CMD_ON, DBG_M_DAU_TXRX); //dbg_cmd_hander(DBG_CMD_ON, DBG_M_DAU_TXRX);
//dbg_cmd_hander(DBG_CMD_ON, DBG_M_GPS); //dbg_cmd_hander(DBG_CMD_ON, DBG_M_GPS);
//dbg_cmd_hander(DBG_CMD_ON, DBG_M_4G); dbg_cmd_hander(DBG_CMD_ON, DBG_M_4G);
//dbg_cmd_hander(DBG_CMD_ON, DBG_M_RS485_SEN); //dbg_cmd_hander(DBG_CMD_ON, DBG_M_RS485_SEN);
//dbg_cmd_hander(DBG_CMD_ON, DBG_M_RS485_DEBUG); //dbg_cmd_hander(DBG_CMD_ON, DBG_M_RS485_DEBUG);
} }
@ -915,7 +915,7 @@ void cli_start(void const * argument)
if (!IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_ADJ) if (!IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_ADJ)
&& !IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_FACTORY)) && !IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_FACTORY))
{ {
//wl_init(); wl_init();
} }
/* 在这个标志置位前vty_print是原地循环等待,置位后变为任务调度. */ /* 在这个标志置位前vty_print是原地循环等待,置位后变为任务调度. */

@ -125,7 +125,8 @@
#define DAU_REG_ADDR_PORT_BASE 0x1000 // 通道配置寄存器基地址 #define DAU_REG_ADDR_PORT_BASE 0x1000 // 通道配置寄存器基地址
#define DAU_REG_ADDR_PORT_DEFECT_BASE 0x0 // 通道配置寄存器 - 缺陷电流通道零点原始值寄存器 #define DAU_REG_ADDR_PORT_DEFECT_BASE 0x0 // 通道配置寄存器 - 缺陷电流通道零点原始值寄存器
#define DAU_REG_ADDR_PORT_FAULT_BASE 0x1 // 通道配置寄存器 - 故障电流通道零点原始值寄存器 #define DAU_REG_ADDR_PORT_FAULT_BASE 0x1 // 通道配置寄存器 - 故障电流通道零点原始值寄存器
#define DAU_REG_ADDR_PORT_DEFECT_ADJ 0xC // 通道配置寄存器 - 缺陷电流通道校准系数 a 寄存器 #define DAU_REG_ADDR_PORT_DEFECT_ADJ 0xC // 通道配置寄存器 - 缺陷电流通道校准系数寄存器
#define DAU_REG_ADDR_PORT_FAULT_ADJ 0x22 // 通道配置寄存器 - 故障电流通道校准系数寄存器
#define DAU_ID 0x0702 // DAU 软件识别码 #define DAU_ID 0x0702 // DAU 软件识别码
@ -171,7 +172,6 @@ int8_t _dau_spi_rw;
uint16_t _dau_spi_addr; uint16_t _dau_spi_addr;
uint16_t _dau_spi_len; uint16_t _dau_spi_len;
int8_t g_is_adj_status = 0; // 1:采集 2:采集完成 int8_t g_is_adj_status = 0; // 1:采集 2:采集完成
uint8_t is_OK = FALSE;
/* Private function prototypes -----------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/
/* Internal functions --------------------------------------------------------*/ /* Internal functions --------------------------------------------------------*/
@ -283,11 +283,7 @@ int32_t _dau_reg_read_global_state(void)
int32_t rv = HAL_ERROR; int32_t rv = HAL_ERROR;
/* 读取全局寄存器 */ /* 读取全局寄存器 */
rv = _dau_reg_read(DAU_REG_ADDR_GSCR, sizeof(dau_reg_global_t)); E_RETURN(_dau_reg_read(DAU_REG_ADDR_GSCR, sizeof(dau_reg_global_t)));
if (rv != HAL_OK)
{
return rv;
}
if (p->GSCR != DAU_ID) if (p->GSCR != DAU_ID)
{ {
@ -308,13 +304,43 @@ int32_t _dau_reg_read_port_state(void)
int32_t rv = HAL_ERROR; int32_t rv = HAL_ERROR;
/* 读取全局寄存器 */ /* 读取全局寄存器 */
rv = _dau_reg_read(DAU_REG_ADDR_PMSR, sizeof(dau_port_state_reg_t)); E_RETURN(_dau_reg_read(DAU_REG_ADDR_PMSR, sizeof(dau_port_state_reg_t)));
if (rv != HAL_OK)
{ memcpy(&dau_ctrl.reg_port_state, dau_ctrl.buf_dau_rx + 2, sizeof(dau_port_state_reg_t));
return rv; return rv;
} }
memcpy(&dau_ctrl.reg_port_state, dau_ctrl.buf_dau_rx + 2, sizeof(dau_port_state_reg_t)); /* description: DAU 写端口配置寄存器报文发送
param:
return: HAL_xxx */
int32_t _dau_reg_write_port(uint32_t port)
{
uint16_t *temp = (uint16_t*)&dau_ctrl.buf_dau_tx[2];
uint16_t addr = 0;
int32_t rv = HAL_ERROR;
/* 缺陷校准系数 */
addr = (port + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_DEFECT_BASE;
//*temp = dev_config.defect_base[i];
*temp = 32927;
E_RETURN(_dau_reg_write(addr, sizeof(uint16_t)));
addr = (port + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_DEFECT_ADJ;
//*temp = dev_config.defect_adj[i];
*temp = 52428;
E_RETURN(_dau_reg_write(addr, sizeof(uint16_t)));
/* 故障校准系数 */
addr = (port + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_FAULT_BASE;
//*temp = dev_config.fault_base[i];
*temp = 34533;
E_RETURN(_dau_reg_write(addr, sizeof(uint16_t)));
addr = (port + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_FAULT_ADJ;
//*temp = dev_config.fault_adj[i];
*temp = 52428;
E_RETURN(_dau_reg_write(addr, sizeof(uint16_t)));
return rv; return rv;
} }
@ -427,6 +453,7 @@ int32_t _dau_update(void)
return: */ return: */
void _dau_utc(void) void _dau_utc(void)
{ {
static uint8_t is_start = FALSE;
uint32_t *utc = (uint32_t*)&dau_ctrl.buf_dau_tx[2]; uint32_t *utc = (uint32_t*)&dau_ctrl.buf_dau_tx[2];
uint16_t *temp = (uint16_t*)&dau_ctrl.buf_dau_tx[2]; uint16_t *temp = (uint16_t*)&dau_ctrl.buf_dau_tx[2];
@ -437,16 +464,26 @@ void _dau_utc(void)
{ {
*utc = dau_ctrl.utc; *utc = dau_ctrl.utc;
_dau_reg_write(DAU_REG_ADDR_GCUR, sizeof(uint32_t)); _dau_reg_write(DAU_REG_ADDR_GCUR, sizeof(uint32_t));
vty_print("Change\r\n"); vty_print("#D Change %d %d %d %d\r\n", dau_ctrl.reg_global.GUR, dau_ctrl.reg_global.GNR, dau_ctrl.is_utc_valid, dau_ctrl.utc);
vty_print("%d %d %d %d\r\n", dau_ctrl.reg_global.GUR, dau_ctrl.reg_global.GNR, dau_ctrl.is_utc_valid, dau_ctrl.utc); }
*temp = 0x234;
/* 开启故障定位 */
#if 0
if (dau_ctrl.is_utc_valid && FALSE == is_start)
{
vty_print("#D Start fault\r\n");
is_start = TRUE;
/* 触发阈值 */
*temp = 0x4000;
_dau_reg_write(DAU_REG_ADDR_GCFTTR, sizeof(uint16_t)); _dau_reg_write(DAU_REG_ADDR_GCFTTR, sizeof(uint16_t));
/* 开启 */
*temp = 1; *temp = 1;
_dau_reg_write(0xf, sizeof(uint16_t)); _dau_reg_write(0xf, sizeof(uint16_t));
osDelay(3000); osDelay(3000);
*temp = 0; *temp = 0;
_dau_reg_write(0xf, sizeof(uint16_t)); _dau_reg_write(0xf, sizeof(uint16_t));
} }
#endif
} }
/* description: 寄存器触发波形采集开始 /* description: 寄存器触发波形采集开始
@ -533,13 +570,10 @@ int32_t _dau_wave_col_fault(void)
for(j = 0; j < DAU_PKT_FAULT_CNT; j++) for(j = 0; j < DAU_PKT_FAULT_CNT; j++)
{ {
vty_print("%d %d\r\n", i, j);
E_RETURN(_dau_reg_read(DAU_REG_ADDR_PPWR, DAU_PKT_FAULT_BYTE_CNT)); E_RETURN(_dau_reg_read(DAU_REG_ADDR_PPWR, DAU_PKT_FAULT_BYTE_CNT));
E_RETURN(spi_flash_write(addr, &dau_ctrl.buf_dau_rx[2], DAU_PKT_FAULT_BYTE_CNT)); E_RETURN(spi_flash_write(addr, &dau_ctrl.buf_dau_rx[2], DAU_PKT_FAULT_BYTE_CNT));
addr += DAU_PKT_FAULT_BYTE_CNT; addr += DAU_PKT_FAULT_BYTE_CNT;
osDelay(200);
} }
vty_print("FA%d\r\n", i);
} }
return HAL_OK; return HAL_OK;
@ -582,20 +616,23 @@ int32_t _dau_wave_col_defect(void)
/* 比较缺陷波形是否超过阈值 */ /* 比较缺陷波形是否超过阈值 */
E_RETURN(_dau_reg_read_port_state()); E_RETURN(_dau_reg_read_port_state());
vty_print("#D defect max");
for(i = 0; i < DAU_PORT_DEFECT_CNT; i++) for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
{ {
dau_ctrl.reg_defect_max[i] = dau_ctrl.reg_port_state.DMAX[i]; dau_ctrl.reg_defect_max[i] = abs(dau_ctrl.reg_port_state.DMAX[i]);
vty_print(" %d", dau_ctrl.reg_defect_max[i]);
if (dau_ctrl.reg_port_state.DMAX[i] > dev_config.defect_threshold) if (dau_ctrl.reg_port_state.DMAX[i] > dev_config.defect_threshold)
{ {
is_exceed = TRUE; is_exceed = TRUE;
} }
} }
vty_print("\r\n");
/* 没有超过阈值并没有强制录波直接返回 */ /* 没有超过阈值并没有强制录波直接返回 */
//if (!is_exceed && !IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_WAVE_FORCE)) if (!is_exceed && !IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_WAVE_FORCE))
//{ {
// MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_DEFECT); MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_DEFECT);
// return HAL_OK; return HAL_OK;
//} }
/* 擦除 flash */ /* 擦除 flash */
addr = dau_ctrl.addr_reg; addr = dau_ctrl.addr_reg;
@ -799,7 +836,6 @@ void _dau_power_calculate(DAU_SOURCE_E source)
int16_t (*val)[DAU_POWER_DATE_LEN] = (DAU_SOURCE_FAULT == source) ? dau_ctrl.fault_power : dau_ctrl.reg_power; int16_t (*val)[DAU_POWER_DATE_LEN] = (DAU_SOURCE_FAULT == source) ? dau_ctrl.fault_power : dau_ctrl.reg_power;
uint32_t *power = (DAU_SOURCE_FAULT == source) ? dau_ctrl.fault_elec : dau_ctrl.reg_elec; uint32_t *power = (DAU_SOURCE_FAULT == source) ? dau_ctrl.fault_elec : dau_ctrl.reg_elec;
uint8_t ch = 0; uint8_t ch = 0;
uint8_t adj = 0;
uint16_t i = 0; uint16_t i = 0;
uint64_t square_sum = 0; uint64_t square_sum = 0;
int32_t mean = 0; int32_t mean = 0;
@ -839,7 +875,7 @@ void _dau_power_calculate(DAU_SOURCE_E source)
for(ch = 0; ch < DAU_PORT_GROUND_CNT; ch++) for(ch = 0; ch < DAU_PORT_GROUND_CNT; ch++)
{ {
/* 判断工频录波上传阈值 */ /* 判断工频录波上传阈值 */
if (abs_cal_u(power[ch], fd_data.elec[ch]) >= (uint32_t)dev_config.power_threshold * 1000) if (abs_cal_u(power[ch], fd_data.elec[ch]) >= (uint32_t)dev_config.power_threshold * 10)
{ {
MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_POWER); MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_POWER);
break; break;
@ -858,15 +894,16 @@ void _dau_power_calculate(DAU_SOURCE_E source)
} }
} }
/* 计算工频录波每个点的电流值 */ /* 计算工频录波每个点的电流值 */
if (DAU_SOURCE_FAULT == source if (DAU_SOURCE_FAULT == source
|| IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_POWER)) || IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_POWER))
{ {
for(ch = 0; ch < DAU_PORT_POWER_CNT - 4; ch++) for(ch = 0; ch < DAU_PORT_POWER_CNT; ch++)
{ {
for(i = 0; i < DAU_POWER_DATE_LEN; i++) for(i = 0; i < DAU_POWER_DATE_LEN; i++)
{ {
val[ch][i] = (int64_t)val[ch][i] * 1000 / dev_config.ADC_adj_point[i]; val[ch][i] = (int32_t)val[ch][i] * 500 / dev_config.ADC_adj_point[ch];
} }
} }
} }
@ -969,45 +1006,63 @@ int32_t _dau_wave_col_trigger_by_fault(void)
/* 置标志位 */ /* 置标志位 */
MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP); MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP);
is_OK = TRUE;
return HAL_OK;
#if 0 #if 1
static uint8_t temp = FALSE; uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]);
if (temp) uint8_t j = 0;
uint16_t k = 0;
addr = dau_ctrl.addr_fault;
for(i = 0; i < 1; i++)
{ {
return HAL_OK; common_watchdog_set(COM_WDG_DAU);
vty_print("FAULT %x %d\r\n", addr, i);
for(j = 0; j < DAU_PKT_FAULT_CNT; j++)
{
spi_flash_read(addr, &dau_ctrl.buf_dau_rx[2], 1024);
addr += DAU_PKT_FAULT_BYTE_CNT;
for(k = 0; k < 512;)
{
common_watchdog_set(COM_WDG_DAU);
vty_print("%04x ", buf[k++]);
if(0 == k % 32)
{
osDelay(100);
vty_print("\r\n");
} }
osDelay(30000); }
temp = TRUE; if(k % 32 != 0)
uint8_t i = 0;
uint32_t addr = 0;
int32_t rv = HAL_ERROR;
/* 没有触发直接退出 */
dau_ctrl.fault_utc = dau_ctrl.utc;
dau_ctrl.fault_ns = 123456789;
/* 擦除 flash */
addr = dau_ctrl.addr_fault;
vty_print("#D1 %x\r\n", addr);
for(i = 0; i < 2; i++)
{ {
E_RETURN(spi_flash_erase(addr, SPI_CMD_BLOCK64_ERASE)); osDelay(100);
addr += SPI_FLASH_BLOCK64_SIZE; vty_print("\r\n");
}
}
vty_print("\r\n");
} }
/* 采集波形 */
E_RETURN(_dau_wave_col_fault());
E_RETURN(_dau_wave_col_power(DAU_SOURCE_FAULT));
_dau_power_calculate(DAU_SOURCE_FAULT);
/* 置标志位 */
MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP);
return rv;
#endif #endif
#if 0
for(i = 0; i < DAU_PORT_POWER_CNT; i++)
{
common_watchdog_set(COM_WDG_DAU);
vty_print("POWER %d\r\n", i);
buf = (uint16_t*)dau_ctrl.fault_power[i];
for(j = 0; j < DAU_PKT_POWER_CNT; j++)
{
for(k = 0; k < 512;)
{
vty_print("%-04x ", buf[k++]);
if(0 == (j*512+k ) % 40)
{
osDelay(100);
vty_print("\r\n");
}
}
buf += 512;
}
vty_print("\r\n");
}
#endif
return HAL_OK;
} }
/* description: 寄存器触发波形采集 /* description: 寄存器触发波形采集
@ -1018,7 +1073,6 @@ int32_t _dau_wave_col_trigger_by_reg(void)
uint32_t tick = 0; uint32_t tick = 0;
int32_t rv = HAL_ERROR; int32_t rv = HAL_ERROR;
#if 0
/* 上次触发没有完成直接退出 */ /* 上次触发没有完成直接退出 */
if (!IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP)) if (!IS_MONITOR_BIT_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP))
{ {
@ -1032,18 +1086,79 @@ int32_t _dau_wave_col_trigger_by_reg(void)
{ {
return HAL_OK; return HAL_OK;
} }
#endif
E_RETURN(_dau_wave_col_start()); E_RETURN(_dau_wave_col_start());
E_RETURN(_dau_wave_col_defect()); E_RETURN(_dau_wave_col_defect());
//E_RETURN(_dau_wave_col_power(DAU_SOURCE_REG)); E_RETURN(_dau_wave_col_power(DAU_SOURCE_REG));
//_dau_power_calculate(DAU_SOURCE_REG); _dau_power_calculate(DAU_SOURCE_REG);
/* 置标志位, 保存数据 */ /* 置标志位, 保存数据 */
_dau_data_save(); _dau_data_save();
MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP); MONITOR_BITMAP_RESET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP);
dau_ctrl.col_time = tick; dau_ctrl.col_time = tick;
#if 0
uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]);
uint32_t addr = dau_ctrl.addr_reg;
uint8_t i = 0;
uint8_t j = 0;
uint16_t k = 0;
//for(i = 0; i < DAU_PORT_DEFECT_CNT; i++)
for(i = 0; i < 1; i++)
{
common_watchdog_set(COM_WDG_DAU);
vty_print("DEFECT %x %d\r\n", addr, i);
for(j = 0; j < DAU_PKT_DEFECT_CNT; j++)
{
spi_flash_read(addr, &dau_ctrl.buf_dau_rx[2], 1024);
addr += DAU_PKT_DEFECT_BYTE_CNT;
for(k = 0; k < 512;)
{
common_watchdog_set(COM_WDG_DAU);
vty_print("%04x ", buf[k++]);
if(0 == k % 32)
{
osDelay(100);
vty_print("\r\n");
}
}
if(k % 32 != 0)
{
osDelay(100);
vty_print("\r\n");
}
}
vty_print("\r\n");
}
#endif
#if 0
uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]);
uint8_t i = 0;
uint8_t j = 0;
uint16_t k = 0;
//for(i = 5; i < DAU_PORT_POWER_CNT; i++)
for(i = 2; i < 3; i++)
{
common_watchdog_set(COM_WDG_DAU);
vty_print("POWER %d\r\n", i);
buf = (uint16_t*)dau_ctrl.reg_power[i];
for(j = 0; j < DAU_PKT_POWER_CNT; j++)
//for(j = 0; j < 1; j++)
{
for(k = 0; k < 512;)
{
vty_print("%-04x ", buf[k++]);
if(0 == (j*512+k ) % 40)
{
osDelay(100);
vty_print("\r\n");
}
}
buf += 512;
}
vty_print("\r\n");
}
#endif
return rv; return rv;
} }
@ -1053,8 +1168,6 @@ int32_t _dau_wave_col_trigger_by_reg(void)
static void _dau_init(void) static void _dau_init(void)
{ {
char version[DEV_COMPILE_TIME_LEN] = {0}; char version[DEV_COMPILE_TIME_LEN] = {0};
uint16_t *temp = (uint16_t*)&dau_ctrl.buf_dau_tx[2];
uint16_t addr = 0;
uint8_t i = 0; uint8_t i = 0;
dau_ctrl.spi = &hspi1; dau_ctrl.spi = &hspi1;
@ -1088,10 +1201,7 @@ static void _dau_init(void)
HAL_GPIO_WritePin(DAU_RST_GPIO_Port, DAU_RST_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(DAU_RST_GPIO_Port, DAU_RST_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(POWER_DAU_GPIO_Port, POWER_DAU_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(POWER_DAU_GPIO_Port, POWER_DAU_Pin, GPIO_PIN_SET);
common_watchdog_set(COM_WDG_DAU); osDelay(3000);
osDelay(10000);
common_watchdog_set(COM_WDG_DAU);
osDelay(10000);
/* 读取 FPGA 版本信息 */ /* 读取 FPGA 版本信息 */
if (HAL_OK == _dau_reg_read_global_state()) if (HAL_OK == _dau_reg_read_global_state())
@ -1104,26 +1214,10 @@ static void _dau_init(void)
} }
} }
/* 配置校准系数 */ /* 配置校准系数, 缺陷和故障因为都是 3 路, 统一使用一个寄存器组. */
for(i = 0; i < DAU_PORT_DEFECT_MAX - 1; i++) for(i = 0; i < DAU_PORT_DEFECT_MAX - 1; i++)
{ {
addr = (i + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_DEFECT_BASE; _dau_reg_write_port(i);
//*temp = dev_config.defect_base[i];
*temp = 34249;
_dau_reg_write(addr, sizeof(uint16_t));
addr = (i + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_DEFECT_ADJ;
//*temp = dev_config.defect_adj[i];
*temp = 3276;
_dau_reg_write(addr, sizeof(uint16_t));
}
for(i = 0; i < DAU_PORT_FAULT_MAX - 1; i++)
{
addr = (i + 1) * DAU_REG_ADDR_PORT_BASE + DAU_REG_ADDR_PORT_FAULT_BASE;
//*temp = dev_config.fault_base[i];
*temp = 0x0000;
_dau_reg_write(addr, sizeof(uint16_t));
} }
} }
@ -1132,12 +1226,6 @@ static void _dau_init(void)
return: */ return: */
static void _dau_start(void *argument) static void _dau_start(void *argument)
{ {
uint16_t *buf = (uint16_t*)(&dau_ctrl.buf_dau_rx[2]);
//uint16_t *buf = NULL;
uint32_t addr = 0;
uint8_t i = 0;
uint8_t j = 0;
uint16_t k = 0;
int32_t rv = HAL_ERROR; int32_t rv = HAL_ERROR;
/* 状态初始化 */ /* 状态初始化 */
@ -1146,8 +1234,7 @@ static void _dau_start(void *argument)
for (;;) for (;;)
{ {
common_watchdog_set(COM_WDG_DAU); common_watchdog_set(COM_WDG_DAU);
dbg_cmd_hander(DBG_CMD_OFF, DBG_M_DAU_TXRX); osDelay(250);
osDelay(1250);
/* 读取全局状态寄存器 */ /* 读取全局状态寄存器 */
rv = _dau_reg_read_global_state(); rv = _dau_reg_read_global_state();
@ -1156,6 +1243,9 @@ static void _dau_start(void *argument)
continue; continue;
} }
/* utc 对时处理 */
_dau_utc();
/* 处理升级 */ /* 处理升级 */
if (dau_ctrl.update_flag) if (dau_ctrl.update_flag)
{ {
@ -1174,143 +1264,33 @@ static void _dau_start(void *argument)
flash_log_write(FLASH_LOG_TYPE_NOTIFY, "FPGA update %s!\r\n", dau_ctrl.update_rt == 1 ? "OK" : "ERROR"); flash_log_write(FLASH_LOG_TYPE_NOTIFY, "FPGA update %s!\r\n", dau_ctrl.update_rt == 1 ? "OK" : "ERROR");
} }
/* utc 对时处理 */
//_dau_utc();
/* 故障电流采集 */ /* 故障电流采集 */
//_dau_wave_col_trigger_by_fault(); //_dau_wave_col_trigger_by_fault();
/* 循环工频缺陷电流采集 */ /* 循环工频缺陷电流采集 */
_dau_wave_col_trigger_by_reg(); _dau_wave_col_trigger_by_reg();
if (1){ if (IS_MONITOR_BIT_SET(dau_ctrl.reg_flag, DAU_REG_PORT_WRITE))
#if 1
addr = dau_ctrl.addr_reg;
for(i = 0; i < 1; i++)
{
common_watchdog_set(COM_WDG_DAU);
vty_print("DEFECT %x %d\r\n", addr, i);
for(j = 0; j < DAU_PKT_DEFECT_CNT; j++)
{
spi_flash_read(addr, &dau_ctrl.buf_dau_rx[2], 1024);
addr += DAU_PKT_DEFECT_BYTE_CNT;
for(k = 0; k < 512;)
{
common_watchdog_set(COM_WDG_DAU);
vty_print("%04x ", buf[k++]);
if(0 == k % 32)
{
osDelay(100);
vty_print("\r\n");
}
}
if(k % 32 != 0)
{
osDelay(100);
vty_print("\r\n");
}
}
vty_print("\r\n");
}
#endif
#if 0
//for(i = 5; i < DAU_PORT_POWER_CNT; i++)
for(i = 1; i < 2; i++)
{
common_watchdog_set(COM_WDG_DAU);
vty_print("POWER %d\r\n", i);
buf = (uint16_t*)dau_ctrl.reg_power[i];
for(j = 0; j < DAU_PKT_POWER_CNT; j++)
//for(j = 0; j < 1; j++)
{
for(k = 0; k < 512;)
{
vty_print("%-04x ", buf[k++]);
if(0 == (j*512+k ) % 40)
{
osDelay(100);
vty_print("\r\n");
}
}
buf += 512;
}
vty_print("\r\n");
}
#endif
#if 0
addr = dau_ctrl.addr_fault;
for(i = 0; i < 1; i++)
{
common_watchdog_set(COM_WDG_DAU);
vty_print("FAULT %x %d\r\n", addr, i);
for(j = 0; j < DAU_PKT_FAULT_CNT; j++)
{
spi_flash_read(addr, &dau_ctrl.buf_dau_rx[2], 1024);
addr += DAU_PKT_FAULT_BYTE_CNT;
for(k = 0; k < 512;)
{
common_watchdog_set(COM_WDG_DAU);
vty_print("%04x ", buf[k++]);
if(0 == k % 32)
{
osDelay(100);
vty_print("\r\n");
}
}
if(k % 32 != 0)
{
osDelay(100);
vty_print("\r\n");
}
}
vty_print("\r\n");
}
#endif
#if 0
for(i = 0; i < DAU_PORT_POWER_CNT; i++)
{
common_watchdog_set(COM_WDG_DAU);
vty_print("POWER %d\r\n", i);
buf = (uint16_t*)dau_ctrl.fault_power[i];
for(j = 0; j < DAU_PKT_POWER_CNT; j++)
{
for(k = 0; k < 512;)
{
vty_print("%-04x ", buf[k++]);
if(0 == (j*512+k ) % 40)
{ {
osDelay(100); _dau_reg_write_port(dau_ctrl.reg_data);
vty_print("\r\n"); MONITOR_BITMAP_RESET(dau_ctrl.reg_flag, DAU_REG_PORT_WRITE);
} }
}
buf += 512;
}
vty_print("\r\n");
}
#endif
#if 1
dbg_cmd_hander(DBG_CMD_ON, DBG_M_DAU_TXRX);
while(1)
{
osDelay(500);
common_watchdog_set(COM_WDG_DAU);
#if 1
if (1 == _dau_spi_rw) if (1 == _dau_spi_rw)
{ {
dbg_cmd_hander(DBG_CMD_ON, DBG_M_DAU_TXRX);
_dau_spi_rw = 0; _dau_spi_rw = 0;
_dau_reg_read(_dau_spi_addr, _dau_spi_len << 1); _dau_reg_read(_dau_spi_addr, _dau_spi_len << 1);
dbg_cmd_hander(DBG_CMD_OFF, DBG_M_DAU_TXRX);
} }
else if(2 == _dau_spi_rw) else if(2 == _dau_spi_rw)
{ {
dbg_cmd_hander(DBG_CMD_ON, DBG_M_DAU_TXRX);
uint16_t *data = (uint16_t*)&dau_ctrl.buf_dau_tx[2]; uint16_t *data = (uint16_t*)&dau_ctrl.buf_dau_tx[2];
*data = _dau_spi_len; *data = _dau_spi_len;
_dau_spi_rw = 0; _dau_spi_rw = 0;
_dau_reg_write(_dau_spi_addr, 2); _dau_reg_write(_dau_spi_addr, 2);
} dbg_cmd_hander(DBG_CMD_OFF, DBG_M_DAU_TXRX);
#endif
}
#endif
} }
} }
} }

@ -140,10 +140,10 @@ static HAL_StatusTypeDef _dev_config_default_set(void)
/* 默认工频校准系数 */ /* 默认工频校准系数 */
for(i = 0; i < DAU_PORT_POWER_CNT; i++) for(i = 0; i < DAU_PORT_POWER_CNT; i++)
{ {
dev_config.ADC_adj_point[i] = 6372; dev_config.ADC_adj_point[i] = 29260;
if (i < 4) if (i < 4)
{ {
dev_config.ADC_adj[i][0] = 51356; dev_config.ADC_adj[i][0] = 46928;
} }
else else
{ {
@ -156,13 +156,14 @@ static HAL_StatusTypeDef _dev_config_default_set(void)
for(i = 0; i < DAU_PORT_DEFECT_MAX; i++) for(i = 0; i < DAU_PORT_DEFECT_MAX; i++)
{ {
dev_config.defect_base[i] = 0x8000; dev_config.defect_base[i] = 0;
dev_config.defect_adj[i] = 3276; dev_config.defect_adj[i] = 3276;
} }
for(i = 0; i < DAU_PORT_FAULT_MAX; i++) for(i = 0; i < DAU_PORT_FAULT_MAX; i++)
{ {
dev_config.fault_base[i] = 0x8000; dev_config.fault_base[i] = 0;
dev_config.fault_adj[i] = 3276;
} }
dev_config.keepalive = 5; dev_config.keepalive = 5;

@ -1318,7 +1318,6 @@ static void _wl_4G_send_realdata(void)
wl_tm.tm_min = wl_time.Minutes; wl_tm.tm_min = wl_time.Minutes;
wl_tm.tm_sec = wl_time.Seconds; wl_tm.tm_sec = wl_time.Seconds;
temp = mktime(&wl_tm); temp = mktime(&wl_tm);
vty_print("tm %d\r\n", temp);
data->utc = temp; data->utc = temp;
data->run_time = HAL_GetTick() / 1000; data->run_time = HAL_GetTick() / 1000;
@ -1914,6 +1913,11 @@ static void _wl_4G_hw_restart(void)
HAL_UART_Abort(wl_ctrl.uart); HAL_UART_Abort(wl_ctrl.uart);
HAL_UART_DeInit(wl_ctrl.uart); HAL_UART_DeInit(wl_ctrl.uart);
if (wl_ctrl.err_cnt > 3)
{
osDelay(600000);
}
/* 初始化软硬件 */ /* 初始化软硬件 */
osDelay(10000); osDelay(10000);
wl_ctrl.state = 0; wl_ctrl.state = 0;
@ -1929,6 +1933,7 @@ static void _wl_4G_hw_restart(void)
/* 开启串口空闲中断收包 */ /* 开启串口空闲中断收包 */
HAL_UARTEx_ReceiveToIdle_DMA(wl_ctrl.uart, wl_ctrl.dma_rx_buf, WL_DMA_RX_BUF_LEN); HAL_UARTEx_ReceiveToIdle_DMA(wl_ctrl.uart, wl_ctrl.dma_rx_buf, WL_DMA_RX_BUF_LEN);
#if 0
/* 4G 掉线后不能阻止波形采集, 掉线后默认上传完成 */ /* 4G 掉线后不能阻止波形采集, 掉线后默认上传完成 */
if (!MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP)) if (!MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP))
{ {
@ -1941,7 +1946,7 @@ static void _wl_4G_hw_restart(void)
st_data.addr_reg = dau_ctrl.addr_reg; st_data.addr_reg = dau_ctrl.addr_reg;
MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP); MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_REG_CMP);
} }
#if 0
if (!MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP)) if (!MONITOR_BITMAP_SET(dau_ctrl.col_flag, DAU_COL_FLAG_FAULT_CMP))
{ {
/* 更新 flash 地址 */ /* 更新 flash 地址 */

File diff suppressed because it is too large Load Diff

@ -59,6 +59,19 @@
<ITMportsLogFile>0</ITMportsLogFile> <ITMportsLogFile>0</ITMportsLogFile>
<ITMlogFile>$PROJ_DIR$\ITM.log</ITMlogFile> <ITMlogFile>$PROJ_DIR$\ITM.log</ITMlogFile>
</SWOTraceHWSettings> </SWOTraceHWSettings>
<DriverProfiling>
<Enabled>0</Enabled>
<Mode>1</Mode>
<Graph>0</Graph>
<Symbiont>0</Symbiont>
<Exclusions />
</DriverProfiling>
<CallStackLog>
<Enabled>0</Enabled>
</CallStackLog>
<CallStackStripe>
<ShowTiming>1</ShowTiming>
</CallStackStripe>
<Trace1> <Trace1>
<Enabled>0</Enabled> <Enabled>0</Enabled>
<ShowSource>1</ShowSource> <ShowSource>1</ShowSource>
@ -117,6 +130,12 @@
<ShowTimeSum>1</ShowTimeSum> <ShowTimeSum>1</ShowTimeSum>
<SumSortOrder>0</SumSortOrder> <SumSortOrder>0</SumSortOrder>
</EventLog> </EventLog>
<DisassembleMode>
<mode>0</mode>
</DisassembleMode>
<Breakpoints2>
<Count>0</Count>
</Breakpoints2>
<TermIOLog> <TermIOLog>
<LoggingEnabled>_ 0</LoggingEnabled> <LoggingEnabled>_ 0</LoggingEnabled>
<LogFile>_ ""</LogFile> <LogFile>_ ""</LogFile>
@ -126,32 +145,13 @@
<LogFile>_ ""</LogFile> <LogFile>_ ""</LogFile>
<Category>_ 0</Category> <Category>_ 0</Category>
</LogFile> </LogFile>
<DriverProfiling> <Aliases>
<Enabled>0</Enabled> <Count>0</Count>
<Mode>1</Mode> <SuppressDialog>0</SuppressDialog>
<Graph>0</Graph> </Aliases>
<Symbiont>0</Symbiont>
<Exclusions />
</DriverProfiling>
<CallStackLog>
<Enabled>0</Enabled>
</CallStackLog>
<CallStackStripe>
<ShowTiming>1</ShowTiming>
</CallStackStripe>
<PowerProbe> <PowerProbe>
<Frequency>10000</Frequency> <Frequency>10000</Frequency>
<Probe0>I0</Probe0> <Probe0>I0</Probe0>
<ProbeSetup0>2 1 1 2 0 0</ProbeSetup0> <ProbeSetup0>2 1 1 2 0 0</ProbeSetup0>
</PowerProbe> </PowerProbe>
<DisassembleMode>
<mode>0</mode>
</DisassembleMode>
<Breakpoints2>
<Count>0</Count>
</Breakpoints2>
<Aliases>
<Count>0</Count>
<SuppressDialog>0</SuppressDialog>
</Aliases>
</settings> </settings>

@ -11,7 +11,7 @@
<ColumnWidth0>19</ColumnWidth0> <ColumnWidth0>19</ColumnWidth0>
<ColumnWidth1>1868</ColumnWidth1> <ColumnWidth1>1868</ColumnWidth1>
<FilterLevel>2</FilterLevel> <FilterLevel>2</FilterLevel>
<LiveFile /> <LiveFile></LiveFile>
<LiveLogEnabled>0</LiveLogEnabled> <LiveLogEnabled>0</LiveLogEnabled>
<LiveFilterLevel>-1</LiveFilterLevel> <LiveFilterLevel>-1</LiveFilterLevel>
</IarPane-34048> </IarPane-34048>
@ -86,7 +86,7 @@
<RecentlyUsedMenus>1</RecentlyUsedMenus> <RecentlyUsedMenus>1</RecentlyUsedMenus>
<MenuShadows>1</MenuShadows> <MenuShadows>1</MenuShadows>
<ShowAllMenusAfterDelay>1</ShowAllMenusAfterDelay> <ShowAllMenusAfterDelay>1</ShowAllMenusAfterDelay>
<CommandsUsage>B40A00000E0040E10000020000005984000002000000568400000200000010860000100000000F810000010000005F860000070000000C810000690A000055840000030000000E810000080000000B810000110000000584000003000000108400001A00000046810000010000000D81000007000000</CommandsUsage> <CommandsUsage>FE0A00000E00598400000200000040E1000002000000108600001000000056840000020000005F860000070000000F810000010000000C810000B30A000055840000030000000E810000080000000B8100001100000005840000030000004681000001000000108400001A0000000D81000007000000</CommandsUsage>
</MFCToolBarParameters> </MFCToolBarParameters>
<CommandManager> <CommandManager>
<CommandsWithoutImages>49000D8400000F84000008840000FFFFFFFF54840000328100001C810000098400007784000007840000808C000044D50000538400000088000001880000028800000388000004880000058800001C8F00001D8F00001F8F0000208F0000218F00002AE10000118F000055840000568400005984000001B0000002B0000003B0000004B0000005B0000006B0000007B0000008B0000009B000000AB000000BB000000CB000000DB000000EB0000000B000002481000040E100000C840000338400007884000011840000008200001C820000018200006786000020DE000021DE000026DE000028DE000023DE000022DE000024DE000027DE000025DE000020920000289200002992000037920000389200003492000033920000259200001E9200001D920000</CommandsWithoutImages> <CommandsWithoutImages>49000D8400000F84000008840000FFFFFFFF54840000328100001C810000098400007784000007840000808C000044D50000538400000088000001880000028800000388000004880000058800001C8F00001D8F00001F8F0000208F0000218F00002AE10000118F000055840000568400005984000001B0000002B0000003B0000004B0000005B0000006B0000007B0000008B0000009B000000AB000000BB000000CB000000DB000000EB0000000B000002481000040E100000C840000338400007884000011840000008200001C820000018200006786000020DE000021DE000026DE000028DE000023DE000022DE000024DE000027DE000025DE000020920000289200002992000037920000389200003492000033920000259200001E9200001D920000</CommandsWithoutImages>
@ -123,7 +123,7 @@
<ID>4294967295</ID> <ID>4294967295</ID>
<RectRecentFloat>00000000D002000080070000F5030000</RectRecentFloat> <RectRecentFloat>00000000D002000080070000F5030000</RectRecentFloat>
<RectRecentDocked>00000000B902000080070000DE030000</RectRecentDocked> <RectRecentDocked>00000000B902000080070000DE030000</RectRecentDocked>
<RecentFrameAlignment>4096</RecentFrameAlignment> <RecentFrameAlignment>32768</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<IsFloating>0</IsFloating> <IsFloating>0</IsFloating>
<MRUWidth>32767</MRUWidth> <MRUWidth>32767</MRUWidth>
@ -186,7 +186,7 @@
<ColumnWidth1>95</ColumnWidth1> <ColumnWidth1>95</ColumnWidth1>
<ColumnWidth2>1142</ColumnWidth2> <ColumnWidth2>1142</ColumnWidth2>
<FilterLevel>2</FilterLevel> <FilterLevel>2</FilterLevel>
<LiveFile /> <LiveFile></LiveFile>
<LiveLogEnabled>0</LiveLogEnabled> <LiveLogEnabled>0</LiveLogEnabled>
<LiveFilterLevel>-1</LiveFilterLevel> <LiveFilterLevel>-1</LiveFilterLevel>
</IarPane-34056> </IarPane-34056>
@ -208,7 +208,7 @@
<ColumnWidth1>95</ColumnWidth1> <ColumnWidth1>95</ColumnWidth1>
<ColumnWidth2>1142</ColumnWidth2> <ColumnWidth2>1142</ColumnWidth2>
<FilterLevel>2</FilterLevel> <FilterLevel>2</FilterLevel>
<LiveFile /> <LiveFile></LiveFile>
<LiveLogEnabled>0</LiveLogEnabled> <LiveLogEnabled>0</LiveLogEnabled>
<LiveFilterLevel>-1</LiveFilterLevel> <LiveFilterLevel>-1</LiveFilterLevel>
</IarPane-34057> </IarPane-34057>
@ -231,7 +231,7 @@
<ColumnWidth2>856</ColumnWidth2> <ColumnWidth2>856</ColumnWidth2>
<ColumnWidth3>380</ColumnWidth3> <ColumnWidth3>380</ColumnWidth3>
<FilterLevel>2</FilterLevel> <FilterLevel>2</FilterLevel>
<LiveFile /> <LiveFile></LiveFile>
<LiveLogEnabled>0</LiveLogEnabled> <LiveLogEnabled>0</LiveLogEnabled>
<LiveFilterLevel>-1</LiveFilterLevel> <LiveFilterLevel>-1</LiveFilterLevel>
</IarPane-34058> </IarPane-34058>
@ -253,7 +253,7 @@
<ColumnWidth1>95</ColumnWidth1> <ColumnWidth1>95</ColumnWidth1>
<ColumnWidth2>1142</ColumnWidth2> <ColumnWidth2>1142</ColumnWidth2>
<FilterLevel>2</FilterLevel> <FilterLevel>2</FilterLevel>
<LiveFile /> <LiveFile></LiveFile>
<LiveLogEnabled>0</LiveLogEnabled> <LiveLogEnabled>0</LiveLogEnabled>
<LiveFilterLevel>-1</LiveFilterLevel> <LiveFilterLevel>-1</LiveFilterLevel>
</IarPane-34059> </IarPane-34059>
@ -272,7 +272,7 @@
</BasePane-34062> </BasePane-34062>
<IarPane-34062> <IarPane-34062>
<FilterLevel>2</FilterLevel> <FilterLevel>2</FilterLevel>
<LiveFile /> <LiveFile></LiveFile>
<LiveLogEnabled>0</LiveLogEnabled> <LiveLogEnabled>0</LiveLogEnabled>
<LiveFilterLevel>-1</LiveFilterLevel> <LiveFilterLevel>-1</LiveFilterLevel>
</IarPane-34062> </IarPane-34062>
@ -381,7 +381,7 @@
</BasePane-34049> </BasePane-34049>
<MFCToolBar-34050> <MFCToolBar-34050>
<Name>Main</Name> <Name>Main</Name>
<Buttons>00200000010000002000FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000035000000FFFEFF000000000000000000000000000100000001000000018001E100000000000036000000FFFEFF000000000000000000000000000100000001000000018003E100000000000038000000FFFEFF0000000000000000000000000001000000010000000180008100000000000019000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E10000000000003B000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E10000000004003D000000FFFEFF000000000000000000000000000100000001000000018022E10000000004003C000000FFFEFF000000000000000000000000000100000001000000018025E10000000000003F000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE100000000040042000000FFFEFF00000000000000000000000000010000000100000001802CE100000000040043000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000000FFFFFFFFFFFEFF0001000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF0096000000000000000000018021810000000004002C000000FFFEFF000000000000000000000000000100000001000000018024E10000000000003E000000FFFEFF000000000000000000000000000100000001000000018028E100000000040040000000FFFEFF000000000000000000000000000100000001000000018029E100000000000041000000FFFEFF000000000000000000000000000100000001000000018002810000000000001B000000FFFEFF0000000000000000000000000001000000010000000180298100000000000030000000FFFEFF000000000000000000000000000100000001000000018027810000000000002E000000FFFEFF000000000000000000000000000100000001000000018028810000000000002F000000FFFEFF00000000000000000000000000010000000100000001801D8100000000040028000000FFFEFF00000000000000000000000000010000000100000001801E8100000000040029000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B810000000000001F000000FFFEFF00000000000000000000000000010000000100000001800D8100000000020021000000FFFEFF00000000000000000000000000010000000100000001805F8600000000000034000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800E8100000000000022000000FFFEFF00000000000000000000000000010000000100000001800F8100000000000023000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00E8020000</Buttons> <Buttons>00200000010000002000FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000031000000FFFEFF000000000000000000000000000100000001000000018001E100000000000032000000FFFEFF000000000000000000000000000100000001000000018003E100000000000034000000FFFEFF0000000000000000000000000001000000010000000180008100000000000015000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E100000000000037000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E100000000040039000000FFFEFF000000000000000000000000000100000001000000018022E100000000040038000000FFFEFF000000000000000000000000000100000001000000018025E10000000000003B000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE10000000004003E000000FFFEFF00000000000000000000000000010000000100000001802CE10000000004003F000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000000FFFFFFFFFFFEFF0001000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF00960000000000000000000180218100000000040028000000FFFEFF000000000000000000000000000100000001000000018024E10000000000003A000000FFFEFF000000000000000000000000000100000001000000018028E10000000004003C000000FFFEFF000000000000000000000000000100000001000000018029E10000000000003D000000FFFEFF0000000000000000000000000001000000010000000180028100000000000017000000FFFEFF000000000000000000000000000100000001000000018029810000000000002C000000FFFEFF000000000000000000000000000100000001000000018027810000000000002A000000FFFEFF000000000000000000000000000100000001000000018028810000000000002B000000FFFEFF00000000000000000000000000010000000100000001801D8100000000040024000000FFFEFF00000000000000000000000000010000000100000001801E8100000000040025000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B810000000000001B000000FFFEFF00000000000000000000000000010000000100000001800D810000000002001D000000FFFEFF00000000000000000000000000010000000100000001805F8600000000000030000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800E810000000000001E000000FFFEFF00000000000000000000000000010000000100000001800F810000000000001F000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00E8020000</Buttons>
</MFCToolBar-34050> </MFCToolBar-34050>
<Pane-34050> <Pane-34050>
<ID>34050</ID> <ID>34050</ID>
@ -419,7 +419,7 @@
</ChildIdMap> </ChildIdMap>
<MDIWindows> <MDIWindows>
<MDIClientArea-0> <MDIClientArea-0>
<MDITabsState>010000000300000001000000000000000000000001000000010000000200000000000000010000000100000000000000280000002800000001000000010000000000000001000000FFFEFF1A2400570053005F0044004900520024005C002E002E005C0043006F00720065005C005300720063005C0063006C0069002E00630001000000FFFF010014004966436F6E74656E7453746F72616765496D706CFFFEFF00FFFEFFFF22013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E003900340036003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E0030003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E0030003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF0563006C0069002E00630000000000FFFFFFFFFFFFFFFF0000000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000100000002000000AC0100004900000080070000CC020000</MDITabsState> <MDITabsState>010000000300000001000000000000000000000001000000010000000200000000000000010000000100000000000000280000002800000001000000010000000000000001000000FFFEFF1A2400570053005F0044004900520024005C002E002E005C0043006F00720065005C005300720063005C0063006C0069002E00630001000000FFFF010014004966436F6E74656E7453746F72616765496D706CFFFEFF00FFFEFFFF22013C003F0078006D006C002000760065007200730069006F006E003D00220031002E0030002200200065006E0063006F00640069006E0067003D0022005500540046002D00380022003F003E000A003C0052006F006F0074003E000A0020002000200020003C004E0075006D0052006F00770073003E0031003C002F004E0075006D0052006F00770073003E000A0020002000200020003C004E0075006D0043006F006C0073003E0031003C002F004E0075006D0043006F006C0073003E000A0020002000200020003C00580050006F0073003E0030003C002F00580050006F0073003E000A0020002000200020003C00590050006F0073003E0030003C002F00590050006F0073003E000A0020002000200020003C00530065006C00530074006100720074003E0030003C002F00530065006C00530074006100720074003E000A0020002000200020003C00530065006C0045006E0064003E0030003C002F00530065006C0045006E0064003E000A0020002000200020003C00580050006F00730032003E0030003C002F00580050006F00730032003E000A0020002000200020003C00590050006F00730032003E003900350035003C002F00590050006F00730032003E000A0020002000200020003C00530065006C005300740061007200740032003E0030003C002F00530065006C005300740061007200740032003E000A0020002000200020003C00530065006C0045006E00640032003E0030003C002F00530065006C0045006E00640032003E000A003C002F0052006F006F0074003E000A00FFFEFF0563006C0069002E00630000000000FFFFFFFFFFFFFFFF0000000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000100000002000000AC0100004900000080070000CC020000</MDITabsState>
</MDIClientArea-0> </MDIClientArea-0>
</MDIWindows> </MDIWindows>
</WindowStorage> </WindowStorage>

Loading…
Cancel
Save