From caf406d14626dcb8590986b4a4c71021009fbda1 Mon Sep 17 00:00:00 2001 From: helei Date: Sat, 22 Aug 2026 11:41:14 +0800 Subject: [PATCH] =?UTF-8?q?V1.5:=20485=E6=9F=A5=E8=AF=A21=E7=A7=92?= =?UTF-8?q?=E6=97=A0=E5=BA=94=E7=AD=94=E6=89=93WARN=E6=97=A5=E5=BF=97(?= =?UTF-8?q?=E6=AF=8F=E6=AC=A1=E6=9F=A5=E8=AF=A2=E6=9C=89=E6=97=A0=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E9=83=BD=E6=9C=89=E6=97=A5=E5=BF=97)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../STM32F103_App1/HardWare/FEED_SCALE/feed_scale.c | 13 +++++++++++++ V1.5/版本说明.md | 1 + 2 files changed, 14 insertions(+) diff --git a/V1.5/STM32F103_App1/HardWare/FEED_SCALE/feed_scale.c b/V1.5/STM32F103_App1/HardWare/FEED_SCALE/feed_scale.c index cfb32dc..419dec6 100644 --- a/V1.5/STM32F103_App1/HardWare/FEED_SCALE/feed_scale.c +++ b/V1.5/STM32F103_App1/HardWare/FEED_SCALE/feed_scale.c @@ -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=޵ȴеIJѯ */ 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)))); diff --git a/V1.5/版本说明.md b/V1.5/版本说明.md index 05dae2e..f13ecf5 100644 --- a/V1.5/版本说明.md +++ b/V1.5/版本说明.md @@ -187,3 +187,4 @@ - 修正 485 修复方案:去掉 TX 后清缓冲(会吃掉快速回复的前几个字节), 改为回声帧按内容识别静默丢弃(与查询命令完全一致的帧),合并帧靠 01 03 04 帧头搜索解析 - 485 首次查询延迟 3s(避开上电窗口,防止首个应答被开机繁忙期撞坏) +- 485 查询日志增强:查询发出 1s 无任何应答帧打 WARN(无应答),有应答则原有 hex/解析日志覆盖