|  |  |  | @ -814,37 +814,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]; | 
		
	
		
			
				|  |  |  |  |     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); | 
		
	
		
			
				|  |  |  |  |     _debug_adj_source_set_buf(2200000, debug_adj_power.elec * 1000); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     /* 发送报文. */ | 
		
	
		
			
				|  |  |  |  |     DBG(DBG_M_RS485_SEN, "ADJS(%d) SEND:\r\n", head->len); | 
		
	
	
		
			
				
					|  |  |  | @ -872,73 +847,10 @@ static HAL_StatusTypeDef _debug_adj_source_set(uint8_t ch_bitmap, uint8_t index) | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     /* 等待电压电流稳定. */ | 
		
	
		
			
				|  |  |  |  |     osDelay(4000); | 
		
	
		
			
				|  |  |  |  |     osDelay(5000); | 
		
	
		
			
				|  |  |  |  |     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, 设置电流电压. */ | 
		
	
		
			
				|  |  |  |  |     _debug_adj_source_set_buf(2200000, elec); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     /* 发送报文. */ | 
		
	
		
			
				|  |  |  |  |     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_connect(void) | 
		
	
		
			
				|  |  |  |  | { | 
		
	
	
		
			
				
					|  |  |  | @ -1075,28 +987,30 @@ void _debug_adj_power_cal(void) | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         /* 根据数据查找数据落在哪个分段点上. */ | 
		
	
		
			
				|  |  |  |  |         /* temp 是有效值 */ | 
		
	
		
			
				|  |  |  |  |         temp = (double)sqrt(square_sum / DAU_POWER_DATE_LEN); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         /* 计算系数. */ | 
		
	
		
			
				|  |  |  |  |         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  | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             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) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             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); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         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); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         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]); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -1104,10 +1018,6 @@ void _debug_adj_power_cal(void) | 
		
	
		
			
				|  |  |  |  | /* 自动校准处理. */ | 
		
	
		
			
				|  |  |  |  | static HAL_StatusTypeDef _debug_adj_auto(uint8_t bitmap) | 
		
	
		
			
				|  |  |  |  | { | 
		
	
		
			
				|  |  |  |  |     uint8_t i = 0; | 
		
	
		
			
				|  |  |  |  |     uint8_t j = 0; | 
		
	
		
			
				|  |  |  |  |     uint8_t bitmap_new = 0; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     if (!bitmap) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         return HAL_OK; | 
		
	
	
		
			
				
					|  |  |  | @ -1116,157 +1026,22 @@ static HAL_StatusTypeDef _debug_adj_auto(uint8_t bitmap) | 
		
	
		
			
				|  |  |  |  |     /* 设置开始操作. */ | 
		
	
		
			
				|  |  |  |  |     HAL_E_RETURN(_debug_adj_start()); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     //for(i = 0; i < DAU_PORT_POWER_CNT; i++)
 | 
		
	
		
			
				|  |  |  |  |     for(i = 0; i < 1; i++) | 
		
	
		
			
				|  |  |  |  |     HAL_E_RETURN(_debug_adj_source_set()); | 
		
	
		
			
				|  |  |  |  |     dau_adj_state = DAU_ADJ_STATE_POWER; | 
		
	
		
			
				|  |  |  |  |     while (dau_adj_state != DAU_ADJ_STATE_NONE) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         /* 过滤不需要的通道. */ | 
		
	
		
			
				|  |  |  |  |         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; | 
		
	
		
			
				|  |  |  |  |             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"); | 
		
	
		
			
				|  |  |  |  |             _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"); | 
		
	
		
			
				|  |  |  |  |             _debug_adj_power_cal(); | 
		
	
		
			
				|  |  |  |  |         }         | 
		
	
		
			
				|  |  |  |  |         common_watchdog_set(COM_WDG_CLI); | 
		
	
		
			
				|  |  |  |  |         osDelay(1000); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |     DBG(DBG_M_RS485_DEBUG, "capture end...\r\n"); | 
		
	
		
			
				|  |  |  |  |     _debug_adj_power_cal(); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     /* 关闭校准. */ | 
		
	
		
			
				|  |  |  |  |     HAL_E_RETURN(_debug_adj_close()); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     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) | 
		
	
		
			
				|  |  |  |  | { | 
		
	
	
		
			
				
					|  |  |  | @ -1683,49 +1458,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) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         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"); | 
		
	
		
			
				|  |  |  |  |                 return HAL_ERROR; | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |         }    | 
		
	
		
			
				|  |  |  |  |         common_watchdog_set(COM_WDG_CLI); | 
		
	
		
			
				|  |  |  |  |         osDelay(1000); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     DBG(DBG_M_RS485_DEBUG, "capture end...\r\n"); | 
		
	
		
			
				|  |  |  |  |     _debug_adj_power_cal(); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     return HAL_OK; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -1733,29 +1480,25 @@ static HAL_StatusTypeDef _debug_adj_manual(uint8_t bitmap, uint8_t index) | 
		
	
		
			
				|  |  |  |  | static void _debug_pkt_adj_manual(void) | 
		
	
		
			
				|  |  |  |  | { | 
		
	
		
			
				|  |  |  |  |     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)); | 
		
	
		
			
				|  |  |  |  |     dev_adj_power_t *data = (dev_adj_power_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; | 
		
	
		
			
				|  |  |  |  |     HAL_StatusTypeDef rv = HAL_ERROR; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     if (IS_MONITOR_BIT_SET(dev_config.flag, DEV_FLAG_ADJ)) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         /* 开始自动校准. */ | 
		
	
		
			
				|  |  |  |  |         rv = _debug_adj_manual(data->ch_selecet, data->manual_index); | 
		
	
		
			
				|  |  |  |  |         if (rv == HAL_OK) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             /* 完成后保存配置. */ | 
		
	
		
			
				|  |  |  |  |             common_sys_set(COM_SYS_SAVE_CONFIG, 0); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |     else | 
		
	
		
			
				|  |  |  |  |     /* 解析数据. */ | 
		
	
		
			
				|  |  |  |  |     memcpy(&debug_adj_power, data, sizeof(dev_adj_power_t)); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     /* 组装数据 */ | 
		
	
		
			
				|  |  |  |  |     cfg->return_value = _debug_adj_manual(debug_adj_power.bitmap); | 
		
	
		
			
				|  |  |  |  |     if (debug_adj_power.is_voltage_adj) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         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); | 
		
	
	
		
			
				
					|  |  |  | @ -1764,6 +1507,9 @@ static void _debug_pkt_adj_manual(void) | 
		
	
		
			
				|  |  |  |  |     /* 发送报文 */ | 
		
	
		
			
				|  |  |  |  |     _debug_pkt_send(head->len + 4, 20); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     /* 保存参数. */ | 
		
	
		
			
				|  |  |  |  |     common_sys_set(COM_SYS_SAVE_CONFIG, 0); | 
		
	
		
			
				|  |  |  |  |      | 
		
	
		
			
				|  |  |  |  |     return; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -1885,8 +1631,7 @@ void _debug_pkt_adj_auto(void) | 
		
	
		
			
				|  |  |  |  |     memcpy(&debug_adj_power, data, sizeof(dev_adj_power_t)); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     /* 组装数据 */ | 
		
	
		
			
				|  |  |  |  |     //cfg->return_value = _debug_adj_auto(debug_adj_power.bitmap);
 | 
		
	
		
			
				|  |  |  |  |     cfg->return_value = 0; | 
		
	
		
			
				|  |  |  |  |     cfg->return_value = _debug_adj_auto(debug_adj_power.bitmap); | 
		
	
		
			
				|  |  |  |  |     if (debug_adj_power.is_voltage_adj) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         ADC_vbat_auto(5000); | 
		
	
	
		
			
				
					|  |  |  | @ -1910,6 +1655,23 @@ void _debug_pkt_adj_auto(void) | 
		
	
		
			
				|  |  |  |  |     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) | 
		
	
		
			
				|  |  |  |  | { | 
		
	
	
		
			
				
					|  |  |  | 
 |