shuichan_old/V1.5/STM32F103_App1/HardWare/FEED_SCALE/feed_scale.h

60 lines
1.8 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef __FEED_SCALE_H
#define __FEED_SCALE_H
#include "main.h"
#include <stdint.h>
/* 单次投喂量有效范围: 0 ~ 500.0 KG, 内部以 0.1 KG 为单位保存 */
#define FEED_SCALE_ONCEWT_MIN 1 /* 0.1 KG */
#define FEED_SCALE_ONCEWT_MAX 5000 /* 500.0 KG */
#define FEED_SCALE_WEIGHT_MAX 5000 /* 500.0 KG */
/* 磅秤接入控制:由 main.h 的 PRODUCT_WITH_FEED_SCALE 决定,此处做反向映射。
* 1=不接磅秤(基础四路继电器产品)feeding 指令直接控制继电器 1
* 0=接入磅秤(智能水产投料机产品),使用称重定量自动投喂逻辑 */
#define FEED_SCALE_DISABLED (!PRODUCT_WITH_FEED_SCALE)
/* 投喂状态 */
typedef enum {
FEED_IDLE = 0, /* 空闲 */
FEED_RUNNING, /* 投喂中: 继电器吸合正在读485 */
FEED_DONE, /* 投喂完成 */
FEED_ERROR /* 异常结束(485失联/重量反而增加等) */
} FeedScaleState;
/* 喂料秤模块 API */
void feedScaleInit(void);
void feedScaleProcess(void);
/* 触发/停止投喂 */
void feedScaleStart(uint16_t once_wt_100g);
void feedScaleStop(void);
/* 设置/获取单次投喂量(0.1KG 单位),设置后持久化到 EEPROM */
void feedScaleSetOnceWeight(uint16_t once_wt_100g);
uint16_t feedScaleGetOnceWeight(void);
/* 设置秤去皮重量(0.1KG 单位),并持久化到 EEPROM */
void feedScaleSetZero(uint16_t zero_100g);
/* 获取当前/最近一次解析出的重量(0.1KG 单位) */
uint16_t feedScaleGetWeight(void);
/* 获取最近一次 485 原始毛重未去皮0.1KG 单位) */
uint16_t feedScaleGetRawWeight(void);
/* 获取当前去皮重量(0.1KG 单位) */
uint16_t feedScaleGetZero(void);
/* 获取投喂状态 */
FeedScaleState feedScaleGetState(void);
/* 获取已减少重量(0.1KG 单位),投喂结束后有效 */
uint16_t feedScaleGetReduced(void);
/* 485 轮询间隔: 空闲 30s, 投喂中 1s */
#define FEED_SCALE_QUERY_IDLE_MS 30000u
#define FEED_SCALE_QUERY_RUN_MS 1000u
#endif /* __FEED_SCALE_H */