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.
106 lines
2.7 KiB
106 lines
2.7 KiB
1 year ago
|
////////////////////////////////////////////////////////////////////////////
|
||
|
///@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();
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|