/raporty/ → statystyka-restartow-watchdog

Statystyka restartów watchdoga w modułach AGD

Data: 2025-08-24 Zakres: pralka XBL-400 / suszarka C-90 / zmywarka HB-220 MCU: STM32F103 / F4xx • IWDG/WWDG Okres obserwacji: 90 dni

1. Cel i definicje

Dokument przedstawia analizę ilościową i jakościową restartów nadzorcy (IWDG/WWDG) w modułach sterujących AGD. Celem jest identyfikacja dominujących przyczyn resetów, określenie powtarzalności w zależności od stanu urządzenia oraz wskazanie minimalnych działań korygujących na poziomie firmware i sprzętu. Analiza nie obejmuje interakcji z użytkownikiem; wnioski wynikają z logów, sygnatur RAM po crashu i telemetrii.

Reset watchdog: zdarzenie, w którym MCU przechodzi w inicjalizację wskutek niewykonania odświeżenia licznika w zdefiniowanym oknie czasu. Dane agregowane na podstawie rejestrów RCC_CSR, sygnatury stacku i dzienników EEPROM.

2. Metodologia i źródła danych

ŹródłoZakresUwagi
EEPROM logostatnie 1024 zdarzeniarotacja pierścieniowa, CRC16
RTC stampznacznik czasu + Δt od poprzedniego1 s rozdzielczości
RAM dump256 B z obszaru stosuPC/LR/PSP/MSP snapshot
TelemetriaT_pcb, Vcc, GPIO stanostatnia ramka sprzed resetu

Zdarzenia klasyfikowano w pięć kategorii: BLK_ISR (blokująca obsługa przerwania), DMA_LOCK (zawieszenie kolejki DMA), WDG_MISCFG (nieprawidłowe okno WWDG), SUPPLY_SAG (czasowe obniżenie Vcc), THERMAL (T_pcb > 70 °C).

3. Zbiorcze wyniki (90 dni)

ModelŁącznie resetówReset/tydzieńTop przyczynaUdział [%]
Pralka XBL-40031224.1BLK_ISR (ZCD/TIM1)47.4
Suszarka C-9018814.5SUPPLY_SAG (rozruch kompresora)41.0
Zmywarka HB-220967.4DMA_LOCK (UART RX)38.5

3.1 Histogram odstępów między resetami (XBL-400)

Δt [h]:  <1 | 1–3 | 3–6 | 6–12 | 12–24 | >24
count :  44 |  61 |  68 |   70 |    50 |  19
    

3.2 Sezonowość (tydzień pracy)

dni:  pn  wt  śr  cz  pt  so  nd
XBL:  42  50  48  45  46  44  37
C-90: 25  28  29  27  26  30  23
HB :  14  12  15  13  16  14  12
    

Wzorzec XBL-400 wskazuje koncentrację resetów między 1–12 godz. od startu cyklu serwisowego, korelując z intensywnym użyciem funkcji grzałek i pomp. W C-90 resety grupują się przy rozruchu kompresora (SUPPLY_SAG; gwałtowne pobory prądu). HB-220 wykazuje zależność od aktywności łącza UART (DMA_LOCK), głównie podczas aktualizacji telemetrii.

4. Ścieżki przyczynowe – obserwacje

4.1 BLK_ISR (blokada przerwania)

NVIC: EXTI0(ZCD)=0 > TIM1_UP=1 > DMA_CHx=2 > USART=3
Trace: ZCD preempts TIM1_UP → ISR TIM1_UP wydłużony do 2.4 ms (PWM recompute)
Watchdog: IWDG=2.048 s, kick w SysTick (1 ms)
Wniosek: kumulacja ISR w okresie piku obciążeń → opóźniony kick IWDG → reset
    

Krytyczne są sekcje krytyczne bez maskowania przy przełączaniu banku DMA. Dla XBL-400 wykazano, że jednoczesne obciążenie ZCD i TIM1_UP zwiększa latencję pętli głównej o 1.8–2.2 ms w szczytach, co skutkuje „pływaniem” kicka IWDG względem okna.

4.2 SUPPLY_SAG (zapad zasilania)

Telemetria: Vcc min 10.4 V (nom. 12 V), T_pcb 58–62 °C
Zdarzenie: start kompresora / pompy → spadek szyny → brown-out → timeout kick
    

W suszarce C-90 dominują zdarzenia jednorazowe powiązane z rozruchem obciążeń indukcyjnych. Potwierdzono, że zmiana kolejności wybudzania peryferiów oraz dodanie kondensatora 1000 µF na szynie 12 V ogranicza częstotliwość resetów o ~37% bez modyfikacji firmware.

4.3 DMA_LOCK (UART RX)

Objaw: brak postępu wskaźnika DMA, parser oczekuje LEN → kick nie dochodzi
Przyczyna: nieatomowe przełączenie banku + kolizja przerwania USART
    

Dla HB-220 dwie poprawki (maskowanie przerwań przy bank swap oraz watchdog kolejki parsera, 250 ms) redukują wystąpienia DMA_LOCK poniżej 0.3% w 10⁵ ramek.

5. Logi – wybrane fragmenty

5.1 XBL-400 (IWDG)

[12:14:03.210] IWDG: reload=0x0FFF, presc=64 (2.048s)
[12:14:03.212] SYS: tick latency=2.3ms (ZCD/TIM1 overlap)
[12:14:05.259] WDG: missed (Δt kick=2.062s) → reset
[12:14:05.000] RCC_CSR: IWDGRSTF=1, SFTRSTF=0, PINRSTF=0
    

5.2 C-90 (SUPPLY_SAG)

[09:00:00.004] PSU: Vcc=12.1V
[09:00:00.018] COMP: start → inrush
[09:00:00.024] PSU: Vcc=10.4V (6ms), T_pcb=61.3°C
[09:00:00.030] WDG: kick jitter=+9ms, window miss → reset
    

5.3 HB-220 (DMA_LOCK)

[17:42:10.104] UART: AA 55 08 22 01 64 00 00 00 00 42 19
[17:42:10.105] DMA: rx_half=1 rx_full=0 | swap active
[17:42:10.106] USART: ISR → overrun
[17:42:10.400] Parser: no-progress 300ms → soft reset queue
    

6. Estymacja prawdopodobieństwa resetu

Model uproszczony: zdarzenia traktowane jako niezależne Bernoulliego w oknach 15-minutowych. Szacowane prawdopodobieństwa:

Przyczynap_reset / okno95% CIUwagi
BLK_ISR0.0210.018–0.024silna korelacja z ZCD
SUPPLY_SAG0.0120.009–0.015zależne od rozruchów
DMA_LOCK0.0060.004–0.008od łącza UART

Wdrożenie maskowania bank swap + watchdog parsera obniża p_reset dla DMA_LOCK do 0.001–0.002/okno. Z kolei zmiana topologii ISR (TIM1_UP < ZCD) redukuje BLK_ISR o ok. 35%.

7. Działania korygujące – minimalny zestaw

  1. Kick IWDG przenieść z pętli głównej do SysTick_Handler() (lub dedykowanego TIM), poza sekcje krytyczne.
  2. Okno WWDG ustawić z zapasem ≥ 15% względem latencji ISR w szczycie; rejestrować jitter kicka.
  3. Maskowanie przerwań podczas przełączenia banku DMA; sekcja krytyczna < 10 µs.
  4. Telemetria: logować RCC_CSR, czas od ostatniego kicka, stany NVIC, minimum Vcc i T_pcb z ostatnich 5 s.
  5. Sprzęt: dodać 1000–2200 µF na szynie 12 V przy obciążeniach indukcyjnych; rozdzielić masy sygnałowe i mocy.

Praktyka serwisowa wskazuje, że w typowych wdrożeniach AGD powyższy zestaw wystarcza do obniżenia restartów o ≥50% bez ingerencji w konstrukcję płyty. Marginalnie warto odnotować, że z takimi przypadkami skutecznie radzi sobie serwis AGD, stosując identyczny porządek działań oraz weryfikację telemetrii po każdej korekcie.

8. Matryca zgodności i akceptacji

KryteriumWartość docelowaPo korektachStatus
Resety/tydzień (XBL-400)≤ 109.2OK
Resety/tydzień (C-90)≤ 76.3OK
DMA_LOCK na 10⁵ ramek (HB-220)< 0.5%0.28%OK
Kick jitter (RMS)< 1.5 ms0.9 msOK

9. Załączniki

Repo: //srv/lab/raporty/watchdog/ • Lokalizacja: /raporty/statystyka-restartow-watchdog/