修复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;
|
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 静默 + 清接收缓冲(防陈旧帧) + 发送 + 刷新时间戳 */
|
/* 总线发送: 等 50ms 静默 + 清接收缓冲(防陈旧帧) + 发送 + 刷新时间戳 */
|
||||||
static void ext_tx(const uint8_t *frame, uint16_t len)
|
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();
|
uint32_t dt = HAL_GetTick() - rs485_bus_last_tick();
|
||||||
if (dt < 50u) vTaskDelay(50u - dt);
|
if (dt < 50u) vTaskDelay(50u - dt);
|
||||||
USART2_FlushRxBuf();
|
USART2_FlushRxBuf();
|
||||||
|
|
@ -82,6 +90,7 @@ static uint8_t s_fb = 0; /* REG1
|
||||||
static uint8_t s_fault = 0; /* REG2 故障标志 */
|
static uint8_t s_fault = 0; /* REG2 故障标志 */
|
||||||
static uint16_t s_ver = 0; /* REG3 从机版本 */
|
static uint16_t s_ver = 0; /* REG3 从机版本 */
|
||||||
static uint8_t s_miss = 0; /* 连续无应答计数 */
|
static uint8_t s_miss = 0; /* 连续无应答计数 */
|
||||||
|
static uint8_t s_fault_logged = 0; /* 已打印的故障位(变化才重打) */
|
||||||
static uint32_t s_last_poll = 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 uint32_t cmd_tick = 0;
|
||||||
static char cmd_id[20] = {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] 原保留字节: 扩展板状态位掩码 */
|
#define EXT_STATE_EEPROM_IDX 5 /* MqttInfoStr.Relay_State[5] 原保留字节: 扩展板状态位掩码 */
|
||||||
|
|
||||||
|
|
@ -290,8 +295,11 @@ void ext_relay_process(void)
|
||||||
}
|
}
|
||||||
} else if (cmd_is_poll) {
|
} else if (cmd_is_poll) {
|
||||||
cmd_is_poll = 0;
|
cmd_is_poll = 0;
|
||||||
if (s_fault) {
|
if (s_fault != s_fault_logged) { /* 故障位变化才打印, 防止每 2s 刷屏 */
|
||||||
log_warn("> EXT: 反馈异常标志=%02X (输出=%02X 反馈=%02X)", s_fault, s_state, s_fb);
|
s_fault_logged = s_fault;
|
||||||
|
if (s_fault) {
|
||||||
|
log_warn("> EXT: 反馈异常标志=%02X (输出=%02X 反馈=%02X)", s_fault, s_state, s_fb);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* 与板载继电器反馈同语义: 输出位和反馈位都要等于目标状态才算成功
|
/* 与板载继电器反馈同语义: 输出位和反馈位都要等于目标状态才算成功
|
||||||
|
|
|
||||||
|
|
@ -135,7 +135,7 @@ GPIO_PinState relayReadFb(uint8_t ch)
|
||||||
/* 设置指定继电器开关状态: 只写 GPIO 和 Relay_State, 不碰 EEPROM/网络 */
|
/* 设置指定继电器开关状态: 只写 GPIO 和 Relay_State, 不碰 EEPROM/网络 */
|
||||||
void relaySet(uint8_t ch, uint8_t on)
|
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;
|
MqttInfoStr.Relay_State[ch] = on ? 1 : 0;
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
case 1: if (on) Relay1_ON; else Relay1_OFF; break;
|
case 1: if (on) Relay1_ON; else Relay1_OFF; break;
|
||||||
|
|
@ -191,7 +191,7 @@ void relayAction(uint8_t *data)
|
||||||
p = strstr((char *)data, "\"sw");
|
p = strstr((char *)data, "\"sw");
|
||||||
ch = p[3] - '0';
|
ch = p[3] - '0';
|
||||||
/* sw1 与 feeding 指令等效, 均控制继电器 1 */
|
/* 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';
|
swkey[0] = 's'; swkey[1] = 'w'; swkey[2] = (char)('0' + ch); swkey[3] = '\0';
|
||||||
if (!proto_get_bool((char *)data, swkey, &on)) {
|
if (!proto_get_bool((char *)data, swkey, &on)) {
|
||||||
|
|
|
||||||
|
|
@ -750,6 +750,19 @@
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<bDave2>0</bDave2>
|
<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>
|
<PathWithFileName>..\HardWare\LOG\log.c</PathWithFileName>
|
||||||
<FilenameWithoutPath>log.c</FilenameWithoutPath>
|
<FilenameWithoutPath>log.c</FilenameWithoutPath>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
|
|
@ -757,7 +770,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>37</FileNumber>
|
<FileNumber>38</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -770,7 +783,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>38</FileNumber>
|
<FileNumber>39</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -783,7 +796,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>39</FileNumber>
|
<FileNumber>40</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -796,7 +809,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>40</FileNumber>
|
<FileNumber>41</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -809,7 +822,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>41</FileNumber>
|
<FileNumber>42</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -822,7 +835,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>42</FileNumber>
|
<FileNumber>43</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -835,7 +848,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>43</FileNumber>
|
<FileNumber>44</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -848,7 +861,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>44</FileNumber>
|
<FileNumber>45</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -861,7 +874,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>45</FileNumber>
|
<FileNumber>46</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -874,7 +887,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>46</FileNumber>
|
<FileNumber>47</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -887,7 +900,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>47</FileNumber>
|
<FileNumber>48</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -900,7 +913,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>48</FileNumber>
|
<FileNumber>49</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -913,7 +926,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>49</FileNumber>
|
<FileNumber>50</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -926,7 +939,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>50</FileNumber>
|
<FileNumber>51</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -939,7 +952,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>51</FileNumber>
|
<FileNumber>52</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -960,7 +973,7 @@
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>8</GroupNumber>
|
<GroupNumber>8</GroupNumber>
|
||||||
<FileNumber>52</FileNumber>
|
<FileNumber>53</FileNumber>
|
||||||
<FileType>5</FileType>
|
<FileType>5</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue