You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

105 lines
2.7 KiB

////////////////////////////////////////////////////////////////////////////
///@copyright Copyright (c) 2018, 传控科技 All rights reserved.
///-------------------------------------------------------------------------
/// @file bsp_drv.c
/// @brief bsp @ driver config
///-------------------------------------------------------------------------
/// @version 1.0
/// @author CC
/// @date 20180331
/// @note cc_AS_stc02
//////////////////////////////////////////////////////////////////////////////
/*******************
1.重量计算--上电清零后的曲线
2.重量校准--使用标准重量更新预设AD值
3.清零--两组曲线
(1)出厂曲线--预设AD值构成的曲线
(2)上电清零后的曲线--根据当前曲线与预设的曲线的差值去调整预设曲线后得到的曲线
*******************/
#include "app_weight.h"
#include "app_config.h"
#include "app_weightzero.h"
////#include "common.h"
TS_TASK_weight_zero tst_weight_zero;
void L3_task_weight_zero_init(void)
{
//显示任务初始化
L1_task_init(&tst_weight_zero.task);
L3_task_s_go(tst_weight_zero,D_task_init);
}
#define D_task_weight_zero 16
#define D_task_WEIGHT_ZERO 15
#define D_task_WEIGHT_CAL 10
#define D_task_WEIGHT_get 2
void L3_task_weight_zero_handler(TS_TASK_weight_zero *s)
{
TTSS_Task_init():
printf("\r\n weight_zero\r\n");
L2_task_go_Tdelay(D_task_WEIGHT_get,300);//延时等待重量稳定
TTSS_Task_step(D_task_WEIGHT_get):
s->zero_weight = D_get_weight(); //获取当前重量
/// R.total_zweight = s->zero_weight - tst_weight.ws[0].kg; //当前差值 = 当前重量 - 预设0点重量
L2_task_go(D_task_weight_zero);
TTSS_Task_step(D_task_weight_zero):
///if(R.total_zweight <= R.p.zero_weight) //当前差值在规定范围之内
if(0)
{
L2_task_go(D_task_WEIGHT_CAL);
}
else
{
L2_task_go(D_task_WEIGHT_ZERO);
}
TTSS_Task_step(D_task_WEIGHT_CAL)://计算差值更新曲线
printf("\r\n weight_zero\r\n");
/// s->weight_dval = tst_weight.adc32 - tst_weight.ws[0].adc; //AD差值
tst_weight.ws[0].kg = 0;
tst_weight.ws[0].adc = tst_weight.adc32; //0点AD值=当前AD值
if(s->weight_dval >= 0) //曲线上移
{
tst_weight.ws[1].adc += s->weight_dval; //20KG
tst_weight.ws[2].adc += s->weight_dval; //72KG
}
else //曲线下移
{
tst_weight.ws[1].adc -= s->weight_dval;
tst_weight.ws[2].adc -= s->weight_dval;
}
L2_task_go(D_task_WEIGHT_ZERO);
TTSS_Task_step(D_task_WEIGHT_ZERO): //手动清零
/// if(R.zero != 0) //外部消息
{
// R.zero = 0;
// st_weight.ws[0].kg = s->zero_weight; //预设重量 = 当前重量
}
L2_task_go(D_task_WEIGHT_ZERO);
TTSS_Task_end();
}