修复sw5~sw8被旧范围检查拦截(上次改错到relaySet的同名行,已还原)+ext_relay发送前清残留应答标志+故障告警变化才打印
This commit is contained in:
parent
5ee368da7c
commit
be448b07af
|
|
@ -37,9 +37,17 @@ static uint16_t ext_crc16(const uint8_t *data, uint16_t len)
|
|||
return crc;
|
||||
}
|
||||
|
||||
/* 帧事件(on_frame 置位, process 消费; 同在 app_task 单线程) */
|
||||
static uint8_t rx_echo_ok = 0;
|
||||
static uint8_t rx_state_ok = 0;
|
||||
static uint8_t rx_exc = 0;
|
||||
|
||||
/* 总线发送: 等 50ms 静默 + 清接收缓冲(防陈旧帧) + 发送 + 刷新时间戳 */
|
||||
static void ext_tx(const uint8_t *frame, uint16_t len)
|
||||
{
|
||||
rx_echo_ok = 0; /* 清上一事务残留的应答标志, 防止迟到帧被当前事务误消费 */
|
||||
rx_state_ok = 0;
|
||||
rx_exc = 0;
|
||||
uint32_t dt = HAL_GetTick() - rs485_bus_last_tick();
|
||||
if (dt < 50u) vTaskDelay(50u - dt);
|
||||
USART2_FlushRxBuf();
|
||||
|
|
@ -82,6 +90,7 @@ static uint8_t s_fb = 0; /* REG1
|
|||
static uint8_t s_fault = 0; /* REG2 故障标志 */
|
||||
static uint16_t s_ver = 0; /* REG3 从机版本 */
|
||||
static uint8_t s_miss = 0; /* 连续无应答计数 */
|
||||
static uint8_t s_fault_logged = 0; /* 已打印的故障位(变化才重打) */
|
||||
static uint32_t s_last_poll = 0;
|
||||
|
||||
/* 命令状态机 */
|
||||
|
|
@ -93,10 +102,6 @@ static uint8_t cmd_is_restore = 0;/*
|
|||
static uint32_t cmd_tick = 0;
|
||||
static char cmd_id[20] = {0};
|
||||
|
||||
/* 帧事件(on_frame 置位, process 消费; 同在 app_task 单线程) */
|
||||
static uint8_t rx_echo_ok = 0;
|
||||
static uint8_t rx_state_ok = 0;
|
||||
static uint8_t rx_exc = 0;
|
||||
|
||||
#define EXT_STATE_EEPROM_IDX 5 /* MqttInfoStr.Relay_State[5] 原保留字节: 扩展板状态位掩码 */
|
||||
|
||||
|
|
@ -290,9 +295,12 @@ void ext_relay_process(void)
|
|||
}
|
||||
} else if (cmd_is_poll) {
|
||||
cmd_is_poll = 0;
|
||||
if (s_fault != s_fault_logged) { /* 故障位变化才打印, 防止每 2s 刷屏 */
|
||||
s_fault_logged = s_fault;
|
||||
if (s_fault) {
|
||||
log_warn("> EXT: 反馈异常标志=%02X (输出=%02X 反馈=%02X)", s_fault, s_state, s_fb);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
/* 与板载继电器反馈同语义: 输出位和反馈位都要等于目标状态才算成功
|
||||
* (不等 1s 故障位, 150ms 时直接比 REG1 反馈, 漏判"吸合但负载没电") */
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ GPIO_PinState relayReadFb(uint8_t ch)
|
|||
/* 设置指定继电器开关状态: 只写 GPIO 和 Relay_State, 不碰 EEPROM/网络 */
|
||||
void relaySet(uint8_t ch, uint8_t on)
|
||||
{
|
||||
if (ch < 1 || ch > 8) return;
|
||||
if (ch < 1 || ch > 4) return;
|
||||
MqttInfoStr.Relay_State[ch] = on ? 1 : 0;
|
||||
switch (ch) {
|
||||
case 1: if (on) Relay1_ON; else Relay1_OFF; break;
|
||||
|
|
@ -191,7 +191,7 @@ void relayAction(uint8_t *data)
|
|||
p = strstr((char *)data, "\"sw");
|
||||
ch = p[3] - '0';
|
||||
/* sw1 与 feeding 指令等效, 均控制继电器 1 */
|
||||
if (ch < 1 || ch > 4) { log_warn("> 继电器: sw 编号无效,仅支持 sw1~sw4"); return; }
|
||||
if (ch < 1 || ch > 8) { log_warn("> 继电器: sw 编号无效,仅支持 sw1~sw8"); return; }
|
||||
|
||||
swkey[0] = 's'; swkey[1] = 'w'; swkey[2] = (char)('0' + ch); swkey[3] = '\0';
|
||||
if (!proto_get_bool((char *)data, swkey, &on)) {
|
||||
|
|
|
|||
|
|
@ -750,6 +750,19 @@
|
|||
<Focus>0</Focus>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\HardWare\RELAY\ext_relay.c</PathWithFileName>
|
||||
<FilenameWithoutPath>ext_relay.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>37</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<Focus>0</Focus>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\HardWare\LOG\log.c</PathWithFileName>
|
||||
<FilenameWithoutPath>log.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
|
|
@ -757,7 +770,7 @@
|
|||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>37</FileNumber>
|
||||
<FileNumber>38</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<Focus>0</Focus>
|
||||
|
|
@ -770,7 +783,7 @@
|
|||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>38</FileNumber>
|
||||
<FileNumber>39</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<Focus>0</Focus>
|
||||
|
|
@ -783,7 +796,7 @@
|
|||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>39</FileNumber>
|
||||
<FileNumber>40</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<Focus>0</Focus>
|
||||
|
|
@ -796,7 +809,7 @@
|
|||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>40</FileNumber>
|
||||
<FileNumber>41</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<Focus>0</Focus>
|
||||
|
|
@ -809,7 +822,7 @@
|
|||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>41</FileNumber>
|
||||
<FileNumber>42</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<Focus>0</Focus>
|
||||
|
|
@ -822,7 +835,7 @@
|
|||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>42</FileNumber>
|
||||
<FileNumber>43</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<Focus>0</Focus>
|
||||
|
|
@ -835,7 +848,7 @@
|
|||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>43</FileNumber>
|
||||
<FileNumber>44</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<Focus>0</Focus>
|
||||
|
|
@ -848,7 +861,7 @@
|
|||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>44</FileNumber>
|
||||
<FileNumber>45</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<Focus>0</Focus>
|
||||
|
|
@ -861,7 +874,7 @@
|
|||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>45</FileNumber>
|
||||
<FileNumber>46</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<Focus>0</Focus>
|
||||
|
|
@ -874,7 +887,7 @@
|
|||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>46</FileNumber>
|
||||
<FileNumber>47</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<Focus>0</Focus>
|
||||
|
|
@ -887,7 +900,7 @@
|
|||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>47</FileNumber>
|
||||
<FileNumber>48</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<Focus>0</Focus>
|
||||
|
|
@ -900,7 +913,7 @@
|
|||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>48</FileNumber>
|
||||
<FileNumber>49</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<Focus>0</Focus>
|
||||
|
|
@ -913,7 +926,7 @@
|
|||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>49</FileNumber>
|
||||
<FileNumber>50</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<Focus>0</Focus>
|
||||
|
|
@ -926,7 +939,7 @@
|
|||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>50</FileNumber>
|
||||
<FileNumber>51</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<Focus>0</Focus>
|
||||
|
|
@ -939,7 +952,7 @@
|
|||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>51</FileNumber>
|
||||
<FileNumber>52</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<Focus>0</Focus>
|
||||
|
|
@ -960,7 +973,7 @@
|
|||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>52</FileNumber>
|
||||
<FileNumber>53</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<Focus>0</Focus>
|
||||
|
|
|
|||
Loading…
Reference in New Issue