Technologie

O projekcie systemu rejestracji zakłóceń elektrycznych, czyli klient nasz pan (część 2)

Praca dla pana była dla mnie wyzwaniem,
Praca z panem była dla mnie przyjemnością.
Projektant płytek drukowanych

W pierwszej części (tutaj) opisałem, jak Miły Starszy Pan zaproponował naszej firmie udział w pewnym projekcie. Początkowo banalnie prosty, w miarę uściślania założeń przez rozmówcę ulegał kolejnym modyfikacjom, aż na koniec stał się największym zamówieniem, jakie przyszło nam jednorazowo zrealizować. Okazało się jednak, że nie był to koniec życzeń Miłego Starszego Pana. To, czego zażądał, wymagało nie tylko modyfikacji sprzętowej i programowej, ale zmusiło nas do skonstruowania w zasadzie nowego rejestratora zakłóceń elektrycznych SZARM, opartego na innej bazie elementowej i technologii, niż dotąd produkowane przez nas rejestratory SRZ-AMP. Szybko okazało się, że z nową konstrukcją związanych jest wiele problemów, które trzeba było rozwiązywać w zasadzie „na bieżąco”, bo terminy były mocno napięte. W tej części opiszę niektóre z nich. Pozostanę przy pierwszej osobie liczby pojedynczej, choć oczywiście w projekcie uczestniczyło wiele osób zarówno z firmy TRONIA, jak i spoza niej.

I tak ja, który w SMS-ach wielkimi literami potrafię pisać tylko cyfry, zbudzony o świcie musiałem decydować, czy chcę, żeby pady były halowane  czy złocone i analizować konsekwencje faktu, że każdy if przerywa potok…

Zimą grzałem się przy lutownicy, latem mroził mnie stan firmowej kasy…

Ale po kolei…

Najtrudniejszym zadaniem było uzyskanie częstotliwości próbkowania 100 000 (sto tysięcy) próbek na sekundę (100 kS/s). Tego stanowczo zażądał Miły Starszy Pan.

Obecnie produkowane przez nas rejestratory taktują z maksymalną szybkością 3200 S/s i według niektórych użytkowników jest to aż nadto. Czasem konfigurują na 1000 S/s, żeby mieć mniejsze pliki rejestracji i żeby koncentrator mógł szybciej ściągać dane z rejestratora, zwalniając miejsce dla następnych zdarzeń.

Ktoś mógłby zapytać, jaki to problem zrobić rejestrator na 100 kS/s. Są przecież oscyloskopy, rejestrujące przebiegi z częstotliwościami gigabitowymi. Prawda, ale oscyloskopy mają za zadanie jedynie zarejestrować pewną liczbę próbek, a potem pokazują je długo na ekranie aż do następnego odświeżenia obrazu. Program rejestratora musi pobrać każdą próbkę, przetworzyć (np. wyliczyć wartość bezwzględną), porównać z dolną i górną wartością progową, zapisać w określonym miejscu w pamięci, a jednocześnie robić również wiele innych rzeczy, jak na przykład obsługiwać porty szeregowe i równoległe, odmierzać czas itp.

Przy 100 kS/s, na przetworzenie jednej próbki, złożonej np. z 8 wartości, pobranych z przetwornika A/C, jest dokładnie 10 mikrosekund. Taktowanie procesora powinno być więc odpowiednio szybkie, żeby jak najwięcej instrukcji dało się wykonać w tak krótkim czasie. Po przeglądzie dostępnych rozwiązań, wybrałem mikrokontroler typu ARM jako najbardziej perspektywiczny: jest produkowany przez wielu producentów w wielu odmianach przy tej samej strukturze wewnętrznej, co ułatwia dostosowanie programu w przypadku konieczności przejścia na inną wersję procesora. Od strony sprzętowej ułatwiłem taką wymianę, przewidując specjalną, wielowarstwową płytkę drukowaną z procesorem, łączoną z resztą modułu wielostykowym złączem. Poprawiło to również ekonomię modułu: koszt wykonania całego modułu na płytce wielowarstwowej byłby koszmarnie wysoki, w dodatku bez technicznego uzasadnienia.

Oczywiście przetwornik powinien być 8-kanałowy i wszystkie kanały musi próbkować jednocześnie, a nie jeden po drugim.

Miły Starszy Pan wyjaśnił, że wartość sygnału, choć istotna, nie jest dla niego aż tak ważna, jak jego pochodna. I tu pojawił się kolejny problem. Próbkowanie przebiegu 50 Hz z częstotliwością 100kS/s daje w przypadku przetwornika o niskiej rozdzielczości (10 – 12 bitów) płaską pochodną: większość próbek się powtarza i tylko jedna na kilka-kilkanaście różni się o jeden bit. Dopiero przy rozdzielczości rzędu 16 bitów i wyższej można mówić o sensownej pochodnej. To narzuciło kolejny warunek na przetwornik A/C.

Żebym nie cieszył się za szybko, Miły Starszy Pan nadmienił, że sygnał ma dość dużą dynamikę: mierzony prąd zwykle mieści się w zakresie znamionowym, ale najbardziej interesujące są stany zwarciowe lub zbliżone do zwarciowych, co przekłada się na prąd np. 10 – 15 razy większy od znamionowego. Miałem więc sprzeczność: przy tak dużym zakresie pomiaru prądu, na zakres znamionowy przypada niewiele bitów, a zatem nawet przy rozdzielczości 16-bitowej pochodna może być słabo reprezentowana. Rozdzielczość pomiaru pochodnej może być nieprzyzwoicie mała.

Po paru nieprzespanych nocach stwierdziłem, że mogę przecież mierzyć prąd dwoma wejściami, przy czym jedno (o wzmocnieniu 1) będzie mierzyło sygnał w całym zakresie, pokazując jego dynamikę i pochodną w stanie zwarciowym, a drugie (powiedzmy o wzmocnieniu 5)  pokaże go dokładnie w zakresie znamionowym.

Rozwiązanie było tym łatwiejsze, że wcześniej już znalazłem układ scalony, który działa jak filtr ósmego rzędu, przy czym wzmocnienie i częstotliwość odcięcia można mu ustawiać przy użyciu sygnałów cyfrowych. Żeby nie było za łatwo, poziomy napięć sygnałów są +5V i -5V. O ile z pierwszym nie ma problemów, to przełączanie do -5V nie jest już trywialne. Można to zrobić tranzystorami, ale wydało mi się to mało estetycznym rozwiązaniem. Po kilku podejściach do tematu postanowiłem zastosować transoptory. Wyszło zgodnie z zasadą: jedna funkcja – jeden element.

Przy tak dużych częstotliwościach próbkowania, cały tor pomiarowy musi być dostosowany do przepuszczania sygnałów o częstotliwości sięgającej przynajmniej połowy częstotliwości próbkowania. W tym przypadku 50 kHz powinno przechodzić swobodnie przez wejścia analogowe, filtry, aż do przetwornika.

Od razu odpadły przekładniki transformatorowe, które zniekształcają sygnał od ok. 10 kHz, choć niektórzy uważają, że lepiej ich nie używać powyżej 5 kHz.

Cewki Rogowskiego, mierzące pochodną sygnału, wymagają skomplikowanego algorytmu do odtworzenia wartości sygnału i procesor nie zdążyłby w ciągu 10 mikrosekund z robotą.

Czujniki Halla  z definicji mają dużą bezwładność i rozstrajają się z upływem czasu.

W końcu sięgnąłem do podstaw i zdecydowałem się na… rezystor, z pomijalną indukcyjnością i pojemnością. Niewrażliwy na zmiany częstotliwości sygnału, nie przesuwa fazy, a w dodatku nie zajmuje dużo miejsca. Poza tym przenosi równie dobrze sygnały przemienne jak i stałe. Z wyliczeń wyszło, że przy prądzie znamionowym 1A optymalną wartością rezystancji będzie 10 mΩ, z czym wiąże się moc 10 mW. Nie powinna go specjalnie rozgrzewać. Żeby uzyskać odpowiednią dynamikę, wybrałem element o mocy 5 watów. Oczywiście po nim postawiłem separator, zasilany izolowaną przetwornicą, żeby odseparować źródło sygnału od rejestratora, ale to są sprawy oczywiste…

Mniej oczywiste okazało się odpowiednie dołączenie rezystora do układu pomiarowego. Ponieważ okazało się, że optymalną wartością rezystora jest 10 mΩ, lutowanie nie wchodziło w grę. Po dłuższym szukaniu różnych rozwiązań, postanowiłem użyć złącz zaciskowych typu cage clamp ze zwartymi wejściami i wyprowadzeniami do druku. Rezystor zacisnąłem w górnych wejściach dwóch złącz, do dolnych wejść doprowadziłem kable, a do płytki drukowanej przekazałem potencjały z obu złącz, czyli z obu końców rezystora. W efekcie cały tor prądowy od listwy sygnałowej do rezystora został wykonany połączeniami zaciskowymi.

O ile z wejściami dwustanowymi nie było problemów – wystarczyło popracować nad drukiem, żeby z modułu o wspólnym minusie zrobić moduł z rozdzielonymi minusami – to na chwilę zatrzymałem się na wyjściach dwustanowych, których zażyczył sobie Miły Starszy Pan w celu uruchamiania róznych sygnalizatorów. Przekaźniki pobierają w stanie aktywnym kilkanaście, a często nawet kilkadziesiąt mA. Jeśli z warunków roboczych rejestratora wyniknie, że trzeba włączyć wszystkie przekaźniki, zasilacze mogą okazać się za słabe. Problem rozwiązał się sam, kiedy zauważyłem reklamę przekaźników dwustabilnych. Taki przekaźnik nie pobiera prądu ani w jednym stanie ani w drugim, a w chwili przełączania tylko kilka mA.

Czasem problemy rozwiązują się same i to w sposób najmniej spodziewany. Szukałem odpowiednich przetwornic, żeby ograniczyć grzanie i zwiększyć sprawność energetyczną, ale wszystko było albo duże albo drogie, albo i takie i takie. Pewnego dnia ktoś zadzwonił z pytaniem, czy nie potrzebuję przetwornic. Okazało się, że jego są i małe i w dodatku dość tanie, więc po sprawdzeniu próbek zamówiłem resztę.

W ten sposób rozwiązałem większość problemów sprzętowych, wynikających z uwag Miłego Starszego Pana.

Potem to już rutyna.

Prototypy na „pająka”, pomiary, projekty druku, zamówienie wykonania 1-2 płytek, zakup elementów, montaż powierzchniowy lub przewlekany, poprawki w druku po sprawdzeniu prototypów, ponowne zamówienie wykonania poprawionych płytek, montaż całej serii, równolegle opracowanie i wykonanie testerów, a na koniec testy funkcjonalne. W międzyczasie trzeba było zaprojektować kilka detali mechanicznych i kabelków.

Kiedy już byłem gotowy ze sprzętem, Miły Starszy Pan postanowił ponownie uściślić temat.

– To prawda, że interesuje mnie wartość prądu, a zwłaszcza jego pochodna, ale w rzeczywistości chodzi o sumę prądów, przy czym o ile kilka prądów składowych jest dostępnych w pobliżu rejestratora, to pozostałe są od niego oddalone. Nawet o kilkaset metrów.

Zaniemówiłem. Przez kilka tygodni łamałem sobie głowę, jak uporać się z tą kolejną już kłodą, rzucaną mi pod nogi, kiedy wydawało się, że już wychodzę na prostą.

Wymyśliłem kilka koncepcji.

  1. Sprowadzić oddalone prądy do rejestratora tak, żeby monitorował wszystkie jednocześnie. Oczywiście chodziło mi o wtórne prądy z przekładników prądowych. Na ciągnięcie kiloamperów nikt by się nie zgodził. Po analizie okazało się, że musiałbym użyć kilkadziesiąt przewodów o przekroju 10 mm2 i naraziłbym sygnały na zakłócenia (po drodze mijałyby zakładową linię kolejową…).
  2. Zamieniać prądy na postać cyfrową, przesyłać paczkami np. co 1ms i w danym rejestratorze łączyć z rejestrowanymi lokalnie. Ładnie i nowocześnie. Przy uważniejszym przyjrzeniu się tematowi okazało się, że szybkość transmisji musiałaby być przynajmniej rzędu 1GB/s, co już stanowiło problem, ale przede wszystkim nikt mi nie gwarantował, że w ciągu 1ms uda się przygotować w jednym rejestratorze odpowiednią paczkę danych, przesłać (załóżmy że obeszło by się bez wzmacniaków) do drugiego rejestratora, odebrać w nim i przetworzyć wraz z innymi próbkami. O skomplikowaniu programu rejestratora nie mówię, bo samo rzuca się do oczu…
  3. Wprowadzić instytucję Komputera Centralnego, do którego wszystkie rejestratory będą przesyłały swoje rejestracje. Każdy rejestrator monitoruje najbliższe sygnały, a dopiero Komputer Centralny wylicza odpowiednie sumy i pochodne.

Ostatnia koncepcja wydała mi się najbardziej perspektywiczna, o czym powiadomiłem Miłego Starszego Pana. Po przemyśleniu tematu, zadał jedno z tych powalających na ziemię, choć tak niewinnie wyglądających pytań:

– To znaczy, że kiedy zostanie pobudzony jeden rejestrator, musi pobudzić wszystkie pozostałe, żeby Komputer Centralny zawsze otrzymywał komplet rejestracji. Czy Komputer Centralny będzie umiał automatycznie zsynchronizować wszystkie rejestracje, likwidując wszelkie różnice czasowe między nimi?

No cóż, problem nie jest trywialny. Jeśli mamy analizować sumę prądów rejestrowanych przez różne rejestratory, musimy zapewnić ich maksymalną synchronizację. Oparcie się na przejściach przez zero nie musi być poprawne, bo impedancje obciążeń mogą wpływać na fazy prądów i to w sposób zmienny. Dystrybucja czasu siecią Ethernet nie jest doskonała i po przejściu przez kilka switchy otrzymujemy opóźnienia liczone w milisekundach. W dodatku niemal przy każdej transmisji opóźnienie może być inne – zależnie od obciążenia łącza, wyboru trasy i paru innych czynników.

Wymyśliłem więc impuls synchronizujący. W momencie wykrycia zdarzenia, pobudzony rejestrator wysyła impuls, który trwa 2 okresy próbkowania, czyli przy 100 kS/s jest to ok. 20 us. Magistrala impulsu jest monitorowana przez wszystkie rejestratory, które natychmiast rozpoczynają rejestracje, jak tylko wykryją przednie zbocze impulsu. Ponadto, impulsy są rejestrowane przez wszystkie rejestratory jako sygnały dwustanowe. Zatem impulsy są we wszystkich rejestracjach i można względem nich synchronizować wszystkie zapisy.

Pozostało wymyślić sposób przesłania impulsu synchronizującego między rejestratorami oddalonymi jeden od drugiego o kilkaset metrów lub kilka kilometrów. Oczywiście światłowody i media-konwertery same garną się pod ołówek. Kiedy jednak zacząłem szukać konkretnego typu, okazało się, że na rynku jest mnóstwo urządzeń tanich, ale skomplikowanych, które odbierają dane, analizują je, ewentualnie poprawiają i dopiero po pewnym czasie wysyłają dalej. Negocjowanie lub wykrywanie prędkości transmisji, generowanie i sprawdzanie sum kontrolnych i wiele innych operacji okazało się w tym przypadku zawadą, a nie pomocą.

Chciałem wysyłać prosty impuls, a nie pakiet danych z preambułą i rodowodami nadawcy i odbiorcy.

Wiele czasu minęło, zanim znalazłem firmę, która zgodziła się skonstruować dla mnie urządzenie, które zamieniałoby sygnał TTL na światło, a z drugiej strony włókna wykonywałoby operację przeciwną. Przy czym urządzenie musi być dostosowane do konkretnego włókna: jednomodowego, 9/125 µm. Firma postawiła dwa warunki: cenę i minimalną wielkość zamówienia. Jak to często bywa, minimalne nie znaczy małe, ale na tym ta gra polega…

Składowa przeciwna_RGB

Tym razem nie czekałem na Starszego Miłego Pana z nadzieją, że nic więcej już nie wymyśli. Po tylu zawodach nauczyłem się, że raczej czeka mnie nowa porcja uściśleń, które otworzą przede mną nowe obszary eksploracji. W ten sposób przecież musiałem zmierzyć się z procesorami ARM, montażem powierzchniowym mikroskopijnych komponentów, techniką światłowodową, Ethernetem, przetwornicami i izolatorami sygnałów, drukami wielowarstwowymi itp..

Kiedy więc zadzwonił, spokojnie wziąłem ołówek do ręki i przysunąłem sobie plik czystych kartek.

– Oczywiście pracuje pan równolegle nad oprogramowaniem rejestratora? Czy chciałby pan porozmawiać na ten temat?

Ołówek wypadł mi z dłoni z cichym klapnięciem.

Tak, tego aspektu jeszcze nie poruszaliśmy w naszych rozmowach…

Oprogramowanie rejestratora ma kilka poziomów: swój program realizuje procesor rejestratora, inny program jest w koncentratorze systemu, a całością będzie zarządzał program Komputera Centralnego.  Oczywiście, w miarę kompletowania sprzętu powstawało oprogramowanie dla niego. Wciąż jednak pozostawało tu wiele tematów do omówienia i zrobienia.

Programowanie, to ocean możliwości. Pełen szans i pięknych widoków, ale również raf, sztormów, podwodnych prądów i długich godzin wpatrywania się w błękitny ekran. Za rok napiszę, czy udało mi się dopłynąć do zaplanowanego portu, czy utonąłem po drodze (w tym drugim przypadku trzeciej części nie będzie…).

Janusz Proniewicz
3 sierpnia 2016 r.

www.tronia.pl

Click to comment

Leave a Reply

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

To Top