157 lines
2.9 KiB
C
157 lines
2.9 KiB
C
|
|
#include "FreeRTOS.h"
|
|
#include "task.h"
|
|
#include "main.h"
|
|
#include "main_task.h"
|
|
#include "device_task.h"
|
|
#include "monitor_task.h"
|
|
#include "global.h"
|
|
|
|
#include "control.h"
|
|
|
|
|
|
#include "drv_relay.h"
|
|
#include "drv_fan.h"
|
|
#include "drv_power.h"
|
|
|
|
//定义输入输出接口
|
|
ExtU_control_T *u;
|
|
ExtY_control_T *y;
|
|
|
|
|
|
|
|
|
|
osThreadId_t cilTaskHandle;
|
|
const osThreadAttr_t cilTask_attributes = {
|
|
.name = "cilTask",
|
|
.priority = (osPriority_t) osPriorityNormal,
|
|
.stack_size = 128 * 4
|
|
};
|
|
|
|
osThreadId_t monitorTaskHandle;
|
|
const osThreadAttr_t monitorTask_attributes = {
|
|
.name = "monitorTask",
|
|
.priority = (osPriority_t) osPriorityNormal,
|
|
.stack_size = 1024 * 4
|
|
};
|
|
|
|
osThreadId_t deviceTaskHandle;
|
|
const osThreadAttr_t deviceTask_attributes = {
|
|
.name = "deviceTask",
|
|
.priority = (osPriority_t) osPriorityNormal,
|
|
.stack_size = 128 * 4
|
|
};
|
|
|
|
extern void StartCliTask(void * argument);
|
|
extern void StartMonitorTask(void * argument);
|
|
extern void StartDeviceTask(void * argument);
|
|
|
|
|
|
|
|
void StartDefaultTask(void * argument)
|
|
{
|
|
uint16_t tick = 0;
|
|
|
|
//task init
|
|
cilTaskHandle = osThreadNew(StartCliTask, NULL, &cilTask_attributes);
|
|
monitorTaskHandle = osThreadNew(StartMonitorTask, NULL, &monitorTask_attributes);
|
|
deviceTaskHandle = osThreadNew(StartDeviceTask, NULL, &deviceTask_attributes);
|
|
|
|
|
|
//init
|
|
control_initialize();
|
|
|
|
u = &control_U;
|
|
y = &control_Y;
|
|
|
|
|
|
u->mode = Init;
|
|
u->bat_type = 0;
|
|
u->bat_num = 6;
|
|
u->run_state = Stop;
|
|
u->cmd_current = 1;
|
|
u->bat_capacity = 10000;
|
|
|
|
for(;;)
|
|
{
|
|
osDelay(10);
|
|
|
|
//执行电压控制,电流控制工作
|
|
//接口设置
|
|
|
|
//input
|
|
// u->sens_pwr_voltage = voltage_pwr;
|
|
// u->sens_bat_voltage = voltage_bat;
|
|
// u->sens_buck_in_voltage = voltage_buck_in;
|
|
// u->sens_buck_out_voltage = voltage_buck_out;
|
|
// u->sens_bat_current = voltage_current;
|
|
// u->sens_temperature = voltage_temp;
|
|
|
|
for(int i =0;i<24;i++)
|
|
{
|
|
// u->sens_bat_sv[i] = voltage_bat_sv[i];
|
|
}
|
|
|
|
u->mode = mode; /* 工作模式 */
|
|
u->bat_type = bat_type; /* 电池类型 */
|
|
u->bat_num = bat_num; /* 电池节数 */
|
|
u->run_state = run_state; /* 运行状态 */
|
|
u->cmd_current = cmd_current; /* 充电电流 */
|
|
u->bat_capacity = bat_capacity; /* 电池容量 */
|
|
|
|
//step
|
|
control_step();
|
|
|
|
|
|
//out
|
|
if(NormalTestMode == 0)
|
|
{
|
|
// power_set(0,y->power_chr); /* 电压输出 */
|
|
//
|
|
// relay_set(0,y->relay_in); /* 输入继电器 */
|
|
// relay_set(1,y->relay_out); /* 输出继电器 */
|
|
//
|
|
// power_set(1,y->power_disc); /* 放电输出 */
|
|
// relay_set(2,y->relay_disc); /* 放电继电器 */
|
|
//
|
|
// fan_set(y->fan); /* 散热风扇 */
|
|
|
|
|
|
// /* 平衡功能 */
|
|
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|