V1.5: 485查询1秒无应答打WARN日志(每次查询有无结果都有日志)
This commit is contained in:
parent
69f698b701
commit
caf406d146
|
|
@ -32,6 +32,7 @@ static uint16_t zero_weight = 0; /* ȥƤ
|
|||
static uint32_t last_query_tick = 0;
|
||||
static uint32_t feed_start_tick = 0; /* 投喂开始时刻,用于超时保护 */
|
||||
static uint8_t first_query_sent = 0; /* 首次上电查询已发送 */
|
||||
static uint32_t await_reply_tick = 0; /* 查询发出时刻,0=无等待中的查询 */
|
||||
static uint8_t first_query_reported = 0; /* 首次上电有效重量已上报 */
|
||||
|
||||
/* 重量异常增加计数 */
|
||||
|
|
@ -385,15 +386,27 @@ void feedScaleProcess(void)
|
|||
if (first_query_sent == 0 || (HAL_GetTick() - last_query_tick) >= query_interval) {
|
||||
last_query_tick = HAL_GetTick();
|
||||
feed_scale_send_query();
|
||||
await_reply_tick = HAL_GetTick(); /* 标记等待应答,1s 无帧打日志 */
|
||||
if (first_query_sent == 0) {
|
||||
first_query_sent = 1;
|
||||
log_info("> FEED: 首次查询已发送");
|
||||
}
|
||||
}
|
||||
|
||||
/* 查询发出后 1s 仍无任何应答帧:打日志(有无应答一目了然) */
|
||||
if (await_reply_tick && (HAL_GetTick() - await_reply_tick) > 1000u) {
|
||||
await_reply_tick = 0;
|
||||
log_warn("> FEED: 查询无应答(秤未接/线序/波特率/站号不对)");
|
||||
s_last_err = 1;
|
||||
}
|
||||
|
||||
/* 读取 485 返回 */
|
||||
len = feed_scale_read_frame(rx_buf, sizeof(rx_buf));
|
||||
if (len > 0) {
|
||||
if (!(len == sizeof(RS485_WEIGHT_CMD) &&
|
||||
memcmp(rx_buf, RS485_WEIGHT_CMD, sizeof(RS485_WEIGHT_CMD)) == 0)) {
|
||||
await_reply_tick = 0; /* 收到非回声帧:本次查询有应答 */
|
||||
}
|
||||
int prc = feed_scale_parse_weight(rx_buf, len, &cur_weight);
|
||||
if (prc != -7) { /* -7=回声帧:不影响状态显示 */
|
||||
s_last_err = (prc == 0) ? 0 : (prc == -1 ? 2 : (prc == -2 ? 3 : (prc == -4 ? 4 : (prc == -6 ? 6 : 5))));
|
||||
|
|
|
|||
|
|
@ -187,3 +187,4 @@
|
|||
- 修正 485 修复方案:去掉 TX 后清缓冲(会吃掉快速回复的前几个字节),
|
||||
改为回声帧按内容识别静默丢弃(与查询命令完全一致的帧),合并帧靠 01 03 04 帧头搜索解析
|
||||
- 485 首次查询延迟 3s(避开上电窗口,防止首个应答被开机繁忙期撞坏)
|
||||
- 485 查询日志增强:查询发出 1s 无任何应答帧打 WARN(无应答),有应答则原有 hex/解析日志覆盖
|
||||
|
|
|
|||
Loading…
Reference in New Issue