|
|
@ -806,99 +806,12 @@ static void _debug_adj_source_set_buf(uint32_t voltage, uint32_t electricity)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 自动校准仪器电压电流设置. */
|
|
|
|
/* 自动校准仪器电压电流设置. */
|
|
|
|
static HAL_StatusTypeDef _debug_adj_source_set(uint8_t ch_bitmap, uint8_t index)
|
|
|
|
static HAL_StatusTypeDef _debug_adj_source_set()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
debug_adj_head_t *head = (debug_adj_head_t*)&debug_flash[1];
|
|
|
|
debug_adj_head_t *head = (debug_adj_head_t*)&debug_flash[1];
|
|
|
|
uint8_t ch = 0;
|
|
|
|
|
|
|
|
uint8_t turn_num = 10;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 以第一个校准通道的校准点为准. */
|
|
|
|
|
|
|
|
for(ch = 0; ch < DAU_PORT_POWER_CNT; ch++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (IS_MONITOR_BIT_SET(ch_bitmap, ch))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/* 没有通道被选择直接退出. */
|
|
|
|
|
|
|
|
if (DAU_PORT_POWER_CNT == ch)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return HAL_OK;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
turn_num = dev_config.ADC_turns[ch];
|
|
|
|
|
|
|
|
if (0 == turn_num)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
turn_num = 20;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DBG(DBG_M_RS485_SEN, "ADC_base_elec[%d][%d] = %d turn_num = %d\r\n", ch, index, dev_config.ADC_base_elec[ch][index], turn_num);
|
|
|
|
|
|
|
|
DBG(DBG_M_RS485_SEN, "ADC_base_elec[%d][%d] / turn_num = %d\r\n", ch, index, dev_config.ADC_base_elec[ch][index]/turn_num);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 填充 buf, 设置电流电压. */
|
|
|
|
|
|
|
|
_debug_adj_source_set_buf(2200000, dev_config.ADC_base_elec[ch][index] / turn_num);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 发送报文. */
|
|
|
|
|
|
|
|
DBG(DBG_M_RS485_SEN, "ADJS(%d) SEND:\r\n", head->len);
|
|
|
|
|
|
|
|
if (dbg_stat_get(DBG_M_RS485_SEN))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
buf_print(debug_flash, head->len);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
HAL_GPIO_WritePin(RS485_A_DE_GPIO_Port, RS485_A_DE_Pin, GPIO_PIN_SET);
|
|
|
|
|
|
|
|
HAL_E_RETURN(HAL_UART_Transmit(debug_adj_uart, debug_flash, head->len, 300));
|
|
|
|
|
|
|
|
HAL_GPIO_WritePin(RS485_A_DE_GPIO_Port, RS485_A_DE_Pin, GPIO_PIN_RESET);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 接收报文. */
|
|
|
|
|
|
|
|
HAL_UART_Abort(debug_adj_uart);
|
|
|
|
|
|
|
|
HAL_E_RETURN(HAL_UART_Receive(debug_adj_uart, debug_flash, 0x6, 300));
|
|
|
|
|
|
|
|
DBG(DBG_M_RS485_SEN, "ADJS(%d) RECV:\r\n", 0x6);
|
|
|
|
|
|
|
|
if (dbg_stat_get(DBG_M_RS485_SEN))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
buf_print(debug_flash, 0x6);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 判断返回值. */
|
|
|
|
|
|
|
|
if (head->cmd != 0x30)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return HAL_ERROR;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 等待电压电流稳定. */
|
|
|
|
|
|
|
|
osDelay(4000);
|
|
|
|
|
|
|
|
return HAL_OK;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static HAL_StatusTypeDef _debug_adj_source_setEx(uint8_t ch_bitmap, uint8_t index, uint16_t elec)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
debug_adj_head_t *head = (debug_adj_head_t*)&debug_flash[1];
|
|
|
|
|
|
|
|
uint8_t ch = 0;
|
|
|
|
|
|
|
|
uint8_t turn_num = 10;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 以第一个校准通道的校准点为准. */
|
|
|
|
|
|
|
|
for(ch = 0; ch < DAU_PORT_POWER_CNT; ch++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (IS_MONITOR_BIT_SET(ch_bitmap, ch))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/* 没有通道被选择直接退出. */
|
|
|
|
|
|
|
|
if (DAU_PORT_POWER_CNT == ch)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return HAL_OK;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
turn_num = dev_config.ADC_turns[ch];
|
|
|
|
|
|
|
|
if (0 == turn_num)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
turn_num = 20;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DBG(DBG_M_RS485_SEN, "ADC_base_elec[%d][%d] = %d turn_num = %d\r\n", ch, index, dev_config.ADC_base_elec[ch][index], turn_num);
|
|
|
|
|
|
|
|
DBG(DBG_M_RS485_SEN, "ADC_base_elec[%d][%d] / turn_num = %d\r\n", ch, index, dev_config.ADC_base_elec[ch][index]/turn_num);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 填充 buf, 设置电流电压. */
|
|
|
|
/* 填充 buf, 设置电流电压. */
|
|
|
|
_debug_adj_source_set_buf(2200000, elec);
|
|
|
|
_debug_adj_source_set_buf(2200000, debug_adj_power.elec * 1000);
|
|
|
|
|
|
|
|
|
|
|
|
/* 发送报文. */
|
|
|
|
/* 发送报文. */
|
|
|
|
DBG(DBG_M_RS485_SEN, "ADJS(%d) SEND:\r\n", head->len);
|
|
|
|
DBG(DBG_M_RS485_SEN, "ADJS(%d) SEND:\r\n", head->len);
|
|
|
@ -926,11 +839,10 @@ static HAL_StatusTypeDef _debug_adj_source_setEx(uint8_t ch_bitmap, uint8_t inde
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 等待电压电流稳定. */
|
|
|
|
/* 等待电压电流稳定. */
|
|
|
|
osDelay(4000);
|
|
|
|
osDelay(5000);
|
|
|
|
return HAL_OK;
|
|
|
|
return HAL_OK;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 自动校准仪器连接. */
|
|
|
|
/* 自动校准仪器连接. */
|
|
|
|
static HAL_StatusTypeDef _debug_adj_connect(void)
|
|
|
|
static HAL_StatusTypeDef _debug_adj_connect(void)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -1067,28 +979,30 @@ void _debug_adj_power_cal(void)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 根据数据查找数据落在哪个分段点上. */
|
|
|
|
/* 根据数据查找数据落在哪个分段点上. */
|
|
|
|
|
|
|
|
/* temp 是有效值 */
|
|
|
|
temp = (double)sqrt(square_sum / DAU_POWER_DATE_LEN);
|
|
|
|
temp = (double)sqrt(square_sum / DAU_POWER_DATE_LEN);
|
|
|
|
|
|
|
|
|
|
|
|
/* 计算系数. */
|
|
|
|
/* 计算系数. */
|
|
|
|
if (ch < 4)
|
|
|
|
if (ch < 4)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
dev_config.power_adj[ch] = (uint16_t)(temp * 8000 / (debug_adj_power.elec * 10));
|
|
|
|
dev_config.power_adj[ch] = (uint16_t)(temp * 8000 / (debug_adj_power.elec * debug_adj_power.turns * 10));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
dev_config.power_adj[ch] = (uint16_t)(temp * 120000 / (debug_adj_power.elec * 10));
|
|
|
|
dev_config.power_adj[ch] = (uint16_t)(temp * 120000 / (debug_adj_power.elec * debug_adj_power.turns * 10));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (ch < 4)
|
|
|
|
if (ch < 4)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
base_elec = debug_adj_power.elec * 14.14 * 2;
|
|
|
|
base_elec = debug_adj_power.elec * 14.14 * 2 * debug_adj_power.turns;
|
|
|
|
dev_config.power_adj_point[ch] = (uint16_t)((max - min) * 8000 / base_elec);
|
|
|
|
dev_config.power_adj_point[ch] = (uint16_t)((max - min) * 8000 / base_elec);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
base_elec = debug_adj_power.elec * 1.414 * 2;
|
|
|
|
base_elec = debug_adj_power.elec * 1.414 * 2 * debug_adj_power.turns;
|
|
|
|
dev_config.power_adj_point[ch] = (uint16_t)((max - min) * 12000 / base_elec);
|
|
|
|
dev_config.power_adj_point[ch] = (uint16_t)((max - min) * 12000 / base_elec);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
vty_print("\r\nch%d temp=%f elec=%d(A) power_adj=%d power_adj_point=%d\r\n", ch, temp, debug_adj_power.elec, dev_config.power_adj[ch], dev_config.power_adj_point[ch]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -1096,10 +1010,6 @@ void _debug_adj_power_cal(void)
|
|
|
|
/* 自动校准处理. */
|
|
|
|
/* 自动校准处理. */
|
|
|
|
static HAL_StatusTypeDef _debug_adj_auto(uint8_t bitmap)
|
|
|
|
static HAL_StatusTypeDef _debug_adj_auto(uint8_t bitmap)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
uint8_t i = 0;
|
|
|
|
|
|
|
|
uint8_t j = 0;
|
|
|
|
|
|
|
|
uint8_t bitmap_new = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!bitmap)
|
|
|
|
if (!bitmap)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return HAL_OK;
|
|
|
|
return HAL_OK;
|
|
|
@ -1108,157 +1018,22 @@ static HAL_StatusTypeDef _debug_adj_auto(uint8_t bitmap)
|
|
|
|
/* 设置开始操作. */
|
|
|
|
/* 设置开始操作. */
|
|
|
|
HAL_E_RETURN(_debug_adj_start());
|
|
|
|
HAL_E_RETURN(_debug_adj_start());
|
|
|
|
|
|
|
|
|
|
|
|
//for(i = 0; i < DAU_PORT_POWER_CNT; i++)
|
|
|
|
HAL_E_RETURN(_debug_adj_source_set());
|
|
|
|
for(i = 0; i < 1; i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
/* 过滤不需要的通道. */
|
|
|
|
|
|
|
|
if (!IS_MONITOR_BIT_SET(bitmap, i))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 将变比相同的通道归到同一个 bitmap 中. */
|
|
|
|
|
|
|
|
bitmap_new = 0;
|
|
|
|
|
|
|
|
for (j = i; j < DAU_PORT_POWER_CNT; j++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (!IS_MONITOR_BIT_SET(bitmap, j))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MONITOR_BITMAP_RESET(bitmap, j);
|
|
|
|
|
|
|
|
MONITOR_BITMAP_SET(bitmap_new, j);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 开始自动校准, 注意不同变比的通道不能一起校准. */
|
|
|
|
|
|
|
|
for (j = 0; j < 1; j++) // 只校准一个分段点 2024/12/11
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
HAL_E_RETURN(_debug_adj_source_set(bitmap_new, j));
|
|
|
|
|
|
|
|
osDelay(3000);
|
|
|
|
|
|
|
|
dau_adj_state = DAU_ADJ_STATE_POWER;
|
|
|
|
dau_adj_state = DAU_ADJ_STATE_POWER;
|
|
|
|
while (dau_adj_state != DAU_ADJ_STATE_NONE)
|
|
|
|
while (dau_adj_state != DAU_ADJ_STATE_NONE)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
common_watchdog_set(COM_WDG_CLI);
|
|
|
|
common_watchdog_set(COM_WDG_CLI);
|
|
|
|
osDelay(2000);
|
|
|
|
osDelay(1000);
|
|
|
|
}
|
|
|
|
|
|
|
|
DBG(DBG_M_RS485_DEBUG, "capture end...\r\n");
|
|
|
|
|
|
|
|
_debug_adj_power_cal();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 关闭校准. */
|
|
|
|
|
|
|
|
HAL_E_RETURN(_debug_adj_close());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return HAL_OK;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static HAL_StatusTypeDef _debug_adj_autoEx(uint8_t bitmap, uint16_t elec, uint8_t index)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
uint8_t i = 0;
|
|
|
|
|
|
|
|
uint8_t j = 0;
|
|
|
|
|
|
|
|
uint8_t bitmap_new = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!bitmap)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return HAL_OK;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 设置开始操作. */
|
|
|
|
|
|
|
|
HAL_E_RETURN(_debug_adj_start());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//for(i = 0; i < DAU_PORT_POWER_CNT; i++)
|
|
|
|
|
|
|
|
for(i = 0; i < 1; i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
/* 过滤不需要的通道. */
|
|
|
|
|
|
|
|
if (!IS_MONITOR_BIT_SET(bitmap, i))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 将变比相同的通道归到同一个 bitmap 中. */
|
|
|
|
|
|
|
|
bitmap_new = 0;
|
|
|
|
|
|
|
|
for (j = i; j < DAU_PORT_POWER_CNT; j++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (!IS_MONITOR_BIT_SET(bitmap, j))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MONITOR_BITMAP_RESET(bitmap, j);
|
|
|
|
|
|
|
|
MONITOR_BITMAP_SET(bitmap_new, j);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 开始自动校准, 注意不同变比的通道不能一起校准. */
|
|
|
|
|
|
|
|
//for (j = 0; j < DAU_POWER_ADJ_CNT; j++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
HAL_E_RETURN(_debug_adj_source_setEx(bitmap_new, index-1, elec));
|
|
|
|
|
|
|
|
osDelay(5000);
|
|
|
|
|
|
|
|
dau_adj_state = DAU_ADJ_STATE_POWER;
|
|
|
|
|
|
|
|
while (dau_adj_state != DAU_ADJ_STATE_NONE)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
common_watchdog_set(COM_WDG_CLI);
|
|
|
|
|
|
|
|
osDelay(2000);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
DBG(DBG_M_RS485_DEBUG, "capture end...\r\n");
|
|
|
|
DBG(DBG_M_RS485_DEBUG, "capture end...\r\n");
|
|
|
|
_debug_adj_power_cal();
|
|
|
|
_debug_adj_power_cal();
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 关闭校准. */
|
|
|
|
/* 关闭校准. */
|
|
|
|
HAL_E_RETURN(_debug_adj_close());
|
|
|
|
HAL_E_RETURN(_debug_adj_close());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return HAL_OK;
|
|
|
|
return HAL_OK;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void _debug_pkt_adj_autoEx(uint16_t elec, uint8_t index)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
proto_head_t *head = (proto_head_t*)debug_buf.buf;
|
|
|
|
|
|
|
|
debug_adj_set *data = (debug_adj_set*)(debug_buf.buf + sizeof(proto_head_t));
|
|
|
|
|
|
|
|
uint32_t *rt = (uint32_t*)(debug_buf.buf + sizeof(proto_head_t));
|
|
|
|
|
|
|
|
uint32_t *crc = NULL;
|
|
|
|
|
|
|
|
HAL_StatusTypeDef rv = HAL_ERROR;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_ADJ))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
/* 开始自动校准. */
|
|
|
|
|
|
|
|
data->ch_selecet = 1;
|
|
|
|
|
|
|
|
if (data->ch_selecet == 1)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
HAL_GPIO_WritePin(LED_RUN_GPIO_Port, LED_RUN_Pin, GPIO_PIN_SET);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
rv = _debug_adj_autoEx(data->ch_selecet, elec, index);
|
|
|
|
|
|
|
|
if (rv == HAL_OK)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
/* 完成后保存配置. */
|
|
|
|
|
|
|
|
common_sys_set(COM_SYS_SAVE_CONFIG, 0);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 电池电压自动校准. */
|
|
|
|
|
|
|
|
if (data->is_voltage_sel)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
rv = HAL_ERROR;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
*rt = rv;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 封装报文头. */
|
|
|
|
|
|
|
|
_debug_pkt_head_init(sizeof(proto_head_t) + 4, DEBUG_CT_PRV_REPLY);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 计算校验和. */
|
|
|
|
|
|
|
|
crc = (uint32_t*)(debug_buf.buf + head->len);
|
|
|
|
|
|
|
|
*crc = crc32(debug_buf.buf, head->len);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 发送报文 */
|
|
|
|
|
|
|
|
//_debug_pkt_send(head->len + 4, 20);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 实时数据获取报文处理. */
|
|
|
|
/* 实时数据获取报文处理. */
|
|
|
|
static void _debug_pkt_data_get(void)
|
|
|
|
static void _debug_pkt_data_get(void)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -1661,49 +1436,21 @@ static void _debug_pkt_history_data_get(void)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* 自动校准处理. */
|
|
|
|
/* 自动校准处理. */
|
|
|
|
static HAL_StatusTypeDef _debug_adj_manual(uint8_t bitmap, uint8_t index)
|
|
|
|
static HAL_StatusTypeDef _debug_adj_manual(uint8_t bitmap)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
uint8_t i = 0;
|
|
|
|
|
|
|
|
uint8_t j = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 参数检查. */
|
|
|
|
|
|
|
|
if (index >= DAU_POWER_ADJ_CNT)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
vty_print("@E1\r\n");
|
|
|
|
|
|
|
|
return HAL_ERROR;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!bitmap)
|
|
|
|
if (!bitmap)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return HAL_OK;
|
|
|
|
return HAL_OK;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
for(i = 0; i < DAU_PORT_POWER_CNT; i++)
|
|
|
|
dau_adj_state = DAU_ADJ_STATE_POWER;
|
|
|
|
{
|
|
|
|
while (dau_adj_state != DAU_ADJ_STATE_NONE)
|
|
|
|
/* 过滤不需要的通道. */
|
|
|
|
|
|
|
|
if (!IS_MONITOR_BIT_SET(bitmap, i))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 通道分段点不同, 不能同时校准. */
|
|
|
|
|
|
|
|
for (j = i; j < DAU_PORT_POWER_CNT; j++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (!IS_MONITOR_BIT_SET(bitmap, j))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (dev_config.ADC_base_elec[i][index] != dev_config.ADC_base_elec[j][index])
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
vty_print("@E2\r\n");
|
|
|
|
common_watchdog_set(COM_WDG_CLI);
|
|
|
|
return HAL_ERROR;
|
|
|
|
osDelay(1000);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
DBG(DBG_M_RS485_DEBUG, "capture end...\r\n");
|
|
|
|
_debug_adj_power_cal();
|
|
|
|
_debug_adj_power_cal();
|
|
|
|
|
|
|
|
|
|
|
|
return HAL_OK;
|
|
|
|
return HAL_OK;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -1711,29 +1458,25 @@ static HAL_StatusTypeDef _debug_adj_manual(uint8_t bitmap, uint8_t index)
|
|
|
|
static void _debug_pkt_adj_manual(void)
|
|
|
|
static void _debug_pkt_adj_manual(void)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
proto_head_t *head = (proto_head_t*)debug_buf.buf;
|
|
|
|
proto_head_t *head = (proto_head_t*)debug_buf.buf;
|
|
|
|
debug_adj_set *data = (debug_adj_set*)(debug_buf.buf + sizeof(proto_head_t));
|
|
|
|
dev_adj_power_t *data = (dev_adj_power_t*)(debug_buf.buf + sizeof(proto_head_t));
|
|
|
|
uint32_t *rt = (uint32_t*)(debug_buf.buf + sizeof(proto_head_t));
|
|
|
|
dev_adj_power_cfg_t *cfg = (dev_adj_power_cfg_t*)(debug_buf.buf + sizeof(proto_head_t));
|
|
|
|
uint32_t *crc = NULL;
|
|
|
|
uint32_t *crc = NULL;
|
|
|
|
HAL_StatusTypeDef rv = HAL_ERROR;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_ADJ))
|
|
|
|
/* 解析数据. */
|
|
|
|
{
|
|
|
|
memcpy(&debug_adj_power, data, sizeof(dev_adj_power_t));
|
|
|
|
/* 开始自动校准. */
|
|
|
|
|
|
|
|
rv = _debug_adj_manual(data->ch_selecet, data->manual_index);
|
|
|
|
/* 组装数据 */
|
|
|
|
if (rv == HAL_OK)
|
|
|
|
cfg->return_value = _debug_adj_manual(debug_adj_power.bitmap);
|
|
|
|
{
|
|
|
|
if (debug_adj_power.is_voltage_adj)
|
|
|
|
/* 完成后保存配置. */
|
|
|
|
|
|
|
|
common_sys_set(COM_SYS_SAVE_CONFIG, 0);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
rv = HAL_ERROR;
|
|
|
|
ADC_vbat_auto(5000);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*rt = rv;
|
|
|
|
memcpy(cfg->power_adj, dev_config.power_adj, 32);
|
|
|
|
|
|
|
|
//memcpy(cfg->power_adj_point, dev_config.power_adj_point, 32);
|
|
|
|
|
|
|
|
cfg->vin_adj = dev_config.vin_adj;
|
|
|
|
|
|
|
|
|
|
|
|
/* 封装报文头. */
|
|
|
|
/* 封装报文头. */
|
|
|
|
_debug_pkt_head_init(sizeof(proto_head_t) + 4, DEBUG_CT_PRV_REPLY);
|
|
|
|
_debug_pkt_head_init(sizeof(proto_head_t) + sizeof(dev_adj_power_cfg_t), DEBUG_CT_PRV_REPLY);
|
|
|
|
|
|
|
|
|
|
|
|
/* 计算校验和. */
|
|
|
|
/* 计算校验和. */
|
|
|
|
crc = (uint32_t*)(debug_buf.buf + head->len);
|
|
|
|
crc = (uint32_t*)(debug_buf.buf + head->len);
|
|
|
@ -1742,6 +1485,9 @@ static void _debug_pkt_adj_manual(void)
|
|
|
|
/* 发送报文 */
|
|
|
|
/* 发送报文 */
|
|
|
|
_debug_pkt_send(head->len + 4, 20);
|
|
|
|
_debug_pkt_send(head->len + 4, 20);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 保存参数. */
|
|
|
|
|
|
|
|
common_sys_set(COM_SYS_SAVE_CONFIG, 0);
|
|
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -1858,8 +1604,7 @@ void _debug_pkt_adj_auto(void)
|
|
|
|
memcpy(&debug_adj_power, data, sizeof(dev_adj_power_t));
|
|
|
|
memcpy(&debug_adj_power, data, sizeof(dev_adj_power_t));
|
|
|
|
|
|
|
|
|
|
|
|
/* 组装数据 */
|
|
|
|
/* 组装数据 */
|
|
|
|
//cfg->return_value = _debug_adj_auto(debug_adj_power.bitmap);
|
|
|
|
cfg->return_value = _debug_adj_auto(debug_adj_power.bitmap);
|
|
|
|
cfg->return_value = 0;
|
|
|
|
|
|
|
|
if (debug_adj_power.is_voltage_adj)
|
|
|
|
if (debug_adj_power.is_voltage_adj)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
ADC_vbat_auto(5000);
|
|
|
|
ADC_vbat_auto(5000);
|
|
|
@ -1883,6 +1628,23 @@ void _debug_pkt_adj_auto(void)
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void _debug_pkt_adj_auto2(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
debug_adj_power.bitmap = 1;
|
|
|
|
|
|
|
|
debug_adj_power.elec = 5;
|
|
|
|
|
|
|
|
debug_adj_power.turns = 10;
|
|
|
|
|
|
|
|
debug_adj_power.is_voltage_adj = 1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 组装数据 */
|
|
|
|
|
|
|
|
_debug_adj_auto(debug_adj_power.bitmap);
|
|
|
|
|
|
|
|
if (debug_adj_power.is_voltage_adj)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
ADC_vbat_auto(5000);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 设备状态获取报文处理. */
|
|
|
|
/* 设备状态获取报文处理. */
|
|
|
|
static void _debug_pkt_dev_state_get(void)
|
|
|
|
static void _debug_pkt_dev_state_get(void)
|
|
|
|
{
|
|
|
|
{
|
|
|
|