1. Dlaczego wybraliśmy Eclypse Z7
- Jako jedyna z listy ma złącza Zmod / SYZYGY Standard (2 porty po 28 linii I/O). Red Pitaya ma zwykłe złącza szpilkowe E1/E2, bez SYZYGY.
- 2 × 28 linii pokrywa potrzeby bez żadnego multipleksowania: 28 bramek (Zmod A) + czujniki (Zmod B) + sygnały operatorskie (Pmod A) + nastawa prądu (Pmod B). Każdy sygnał to jeden nazwany drut — projekt trywialny do niezależnej weryfikacji.
- Konsekwencja standardu SYZYGY: każdy pod musi mieć EEPROM z rekordem DNA. Mikrokontroler płyty (PMCU) czyta rekord po I²C i dopiero na jego podstawie ustawia oraz załącza napięcie VIO portu (SmartVIO). Bez poprawnego DNA port zostaje niezasilony. Dlatego nasze pody mają pamięć, mimo że funkcjonalnie to bufory/transoptory.
2. Co daje (i czego nie daje) Red Pitaya
Złącza E1/E2 to zwykłe goldpiny: I/O na stałe 3,3 V, zasilanie zawsze obecne, zero negocjacji — nie ma PMCU, SmartVIO ani DNA. Pamięć EEPROM i cała warstwa identyfikacji znika. To jedyny realny zysk.
Bufory i transoptory na podach nie istnieją z powodu SYZYGY — pełnią funkcje, które nie znikają wraz ze złączem:
- ochrona pinów FPGA (bufor jest tanim „bezpiecznikiem" toru),
- izolacja galwaniczna pola czujników 24 V od logiki,
- sprzętowo bezpieczny stan „wszystko wyłączone" (Hi-Z + pull-downy), zanim firmware przejmie kontrolę.
Budżet linii — twardy problem
| Zasób Red Pitaya 125-14 | Ilość | Zapotrzebowanie systemu |
|---|---|---|
| GPIO cyfrowe (E1) | 16 | 28 bramek + 4 operatorskie + 1 nastawa prądu |
| Wolne wejścia analogowe (E2, XADC, 0–3,5 V) | 4 | 16 czujników |
| Wyjścia RF 50 Ω (SMA, DAC ±1 V) | 2 | — |
49 sygnałów vs 16 GPIO — bez multipleksowania się nie da, a klasyczne multipleksowanie (rejestry przesuwne, dekodery) to układy scalone.
Wariant „prawie pasywny" (gdyby kiedyś był potrzebny)
Da się zejść do elementów dyskretnych:
- Bramki: matryca 4×7 w numeracji serpentynowej — 11 GPIO; każde wejście drivera dostaje dwa szeregowe tranzystory (wiersz AND kolumna). Działa logicznie, bo sekwencje zapalają jednocześnie co najwyżej parę sąsiednich cewek (wynika z tabel czasowych w firmware), a przy serpentynie sąsiednie cewki zawsze dzielą wiersz albo kolumnę — matryca nie generuje „duchów".
- Czujniki: kodowanie rezystorowe na 4 wejściach analogowych — każdy czujnik wpina inny rezystor w dzielnik; pierścień mija czujniki pojedynczo (rozstaw 240 mm vs pierścień 48 mm), więc poziom napięcia wskazuje aktywny czujnik.
- Operator: 4 pozostałe GPIO (dzielniki 24→3 V + pojedynczy MOSFET).
- Nastawa prądu: wyjście RF DAC 50 Ω jako analogowa nastawa regulatorów histerezowych (ładniejsze niż 1-bitowy wybór 10/40 A).
Bilans: 11 + 4 + 1 = dokładnie 16 GPIO. Arytmetycznie się domyka.
3. Analiza awarii — dlaczego ten wariant odrzucono
Poniżej porównanie skutków typowych usterek. „1:1" = Eclypse z podami (każdy sygnał osobnym drutem); „matryca" = Red Pitaya w wariancie pasywnym.
3.1 Zwarcia i utknięcia linii bramek
| Usterka | Architektura 1:1 (Eclypse) | Matryca 4×7 (Red Pitaya pasywna) |
|---|---|---|
| Linia utknięta w „1" (zwarcie do 3,3 V, przebity bufor/tranzystor) | Jedna cewka stale zasilana. Regulator histerezowy ogranicza prąd do nastawy; przy nastawie trzymania cewka grzeje ~200 W — dopuszczalne ciągle. Usterka lokalna, jednoznaczna, łatwa do wskazania | Utknięty wiersz: każda aktywacja dowolnej kolumny zapala dodatkową cewkę z tego wiersza — podczas wyrzutu kolumny przełączają się szybko, więc przypadkowe cewki wzdłuż całej rury strzelają w trakcie lotu pierścienia (hamowanie wsteczne, szarpnięcia — realne zagrożenie mechaniczne). Utknięta kolumna: analogicznie 4 cewki |
| Linia utknięta w „0" / przerwa | Jedna cewka martwa. Sekwencja 2: ubytek ciągu wykrywany kontrolą czujnika górnego (pierścień nie dojdzie / dojdzie za wolno → STOP AWARYJNY). Sekwencja 1: para trzymająca ma chwilowo jedną cewkę — pozycje sąsiednie nadal trzymają | Przerwa wiersza/kolumny wyłącza 7 albo 4 cewki naraz — w sekwencji 1 pierścień może zostać upuszczony z wysokości kilkudziesięciu cm (uderzenie ~39 kg w dolną zatyczkę), w sekwencji 2 duża „dziura" w ciągu |
| Zwarcie między sąsiednimi żyłami wiązki | Dwie konkretne cewki sprzężone (zapalają się razem) — efekt stały, powtarzalny, natychmiast widoczny w trybie DIAG | Zwarcie wiersz–kolumna lub wiersz–wiersz: efekt zależny od aktualnej kombinacji sterowania — usterka objawia się losowo, tylko przy niektórych krokach sekwencji; diagnostyka bardzo trudna |
| Skutek dla audytu | Analiza pojedynczej usterki (SFA) mieści się w jednej tabeli: 1 linia → 1 cewka | Każdą usterkę trzeba analizować względem wszystkich 28 kombinacji; tryb DIAG przestaje być reprezentatywny (inne kombinacje niż w locie) |
3.2 Awarie po stronie czujników
| Usterka | Transoptory (pod B) | Kodowanie rezystorowe (RP pasywna) |
|---|---|---|
| Zwarcie 24 V do linii sygnałowej | Ginie transoptor (~3 zł), logika nietknięta — izolacja 5 kV robi swoje | 24 V ląduje na pinie XADC/GPIO → uszkodzenie banku I/O, wymiana całego modułu RP, przestój atrakcji |
| Dryf rezystancji (korozja złącza, temperatura, starzenie) | Bez znaczenia — sygnał binarny z dużym marginesem | Poziom analogowy pełza; przy 16 poziomach na 3,5 V krok to ~220 mV — dryf rzędu ±100 mV daje błędną identyfikację czujnika (aliasing) |
| Dwa czujniki aktywne jednocześnie (stan przejściowy na krawędziach, odbicie światła) | Po prostu dwa bity — firmware widzi oba | Suma prądów daje poziom innego, trzeciego czujnika — fałszywa pozycja pierścienia |
| Przerwa przewodu czujnika | Bit stale nieaktywny — wykrywalne (czujnik „nigdy nie widzi") | Nieodróżnialne od „brak pierścienia" na całej grupie kanałów tego dzielnika |
3.3 Awarie sterownika i stany nieustalone
| Scenariusz | Eclypse + pody | RP pasywna |
|---|---|---|
| FPGA nieskonfigurowane (boot, wgrywanie, reset) | Bufory poda A w Hi-Z (pull-up na /OE), wyjścia ściągnięte pull-downami — bramki twardo w 0 niezależnie od stanu pinów FPGA | Tylko zewnętrzne pull-downy na liniach matrycy; piny FPGA w nieznanym stanie przejściowym sterują matrycą bezpośrednio |
| Zawieszenie procesora | Watchdog w PL gasi bramki; dodatkowo firmware może zablokować bufory (linia ENABLE) — dwie niezależne warstwy w torze sygnałowym | Watchdog w PL — jedna warstwa; brak odpowiednika blokady buforów |
| Awaria zasilania interfejsu | Port bez VIO = bufory bez zasilania = wyjścia bierne, pull-downy trzymają 0 | Brak osobnego zasilania interfejsu — nie dotyczy, ale też nic nie odcina |
3.4 Co pozostaje wspólne (i nienaruszalne)
Niezależnie od platformy: E-STOP jest sprzętowy — grzybek → przekaźnik bezpieczeństwa (PL d) → stycznik K1 po stronie AC. Żadna z powyższych usterek interfejsu nie unieważnia tej drogi. Ale E-STOP to ostatnia linia: architektura sterowania ma nie doprowadzać do sytuacji, w których trzeba go użyć.
4. Werdykt
| Kryterium | Eclypse Z7 + pody | Red Pitaya pasywna |
|---|---|---|
| Wymóg klienta (SYZYGY/Zmod) | spełniony | niespełniony |
| Liczba linii | 1:1, bez multipleksowania | matryca + kodowanie analogowe |
| Analiza pojedynczej usterki | 1 linia → 1 cewka | 1 linia → 4–7 cewek, efekty kombinacyjne |
| Izolacja pola 24 V | galwaniczna (5 kV) | brak (dzielniki) |
| Stan bezpieczny przy starcie | podwójny (Hi-Z + pull-down) | tylko pull-downy |
| Koszt „aktywności", którą eliminujemy | ~15 układów po 2–3 zł | — |
Wariant pasywny na Red Pitaya jest technicznie wykonalny (bilans linii domyka się co do sztuki), ale optymalizuje złą zmienną: oszczędza kilkadziesiąt złotych w częściach, a płaci pogorszeniem dokładnie tych własności, które nadzór techniczny ogląda najuważniej — jednoznaczności skutków pojedynczej usterki, izolacji i prostoty audytu. Do tego łamie wymóg SYZYGY.
Rekomendacja: Digilent Eclypse Z7 + dwa pody. Wariant Red Pitaya trzymać w zanadrzu wyłącznie na wypadek, gdyby klient zdjął wymóg Zmod i podniósł priorytet minimalizacji liczby części — wtedy ten dokument jest punktem startu (matryca serpentynowa, wartości rezystorów kodujących i firmware pod skanowanie do rozpisania).